diff --git a/CHANGELOG.md b/CHANGELOG.md
index 89856c087900b607cf81daf4a435a75c8d1f58c4..dc01ef9c04151e3b57a7f5bf42281c62617cb8fc 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,16 +1,575 @@
 # Changelog
 
-All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
+All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for
+commit guidelines.
 
-## 0.0.0 (2019-06-24)
+## [2.1.0-beta1](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/compare/dlcm-2.1.0-alpha2...dlcm-2.1.0-beta1) (2022-02-16)
+
+### Features
+
+* [DLCM-1755] support OAI metadata prefixes ([4bff5ac](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/4bff5ac440bb3e9ef3f1c9741de18a9b53245b66))
+* [DLCM-1827] add more info on archives in collections detail
+  table ([378a918](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/378a918446338bb8e44cb6c80c42dd0cda664dcd))
+* [DLCM-1985] apply sub action intention ([0d91b94](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/0d91b94440a22dfc28faf69b203849a959979b26))
+* [DLCM-1999] subscription to different notifications into user
+  profile ([5a095d1](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/5a095d14c8d0ad868d95786a2939d635de6fd5a3))
+* [DLCM-2000] check compliance level button for deposit
+  menu ([1216bc3](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/1216bc34b0201b9c69f3a532b5f7d034bc836356))
+* [DLCM-2002] manage pluralization in translate ([dd9a02c](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/dd9a02ca1297c2aa33eff6fcc9c44d9686579b5b))
+* [DLCM-2007] manage cookie consent ([bb928dd](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/bb928dd2563d9fe5847ff5145f137bab74732dd1))
+* [DLCM-2011] implement elasticsearch apm ([7d2faf8](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/7d2faf8e01bd34a3b27074a8281bfac164a34d58))
+* [DLCM-2018] do not close org unit access request dialog if notification cannot be
+  created ([aaa2f78](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/aaa2f782ef7f459087cd6430da13ab27b6f2be99))
+* [DLCM-2019] add logo to license ([16168f4](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/16168f431dbdabd4f028caa98e35b713c404ee2e))
+* [DLCM-2021] clearly indicate default ACL expiration ([e77d7ef](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/e77d7efbb3fb300398fefb13a3e5b660dee572a0))
+* [DLCM-2022] display in list action for copy id and show
+  history ([4be861b](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/4be861b361905bf85bec6a10083141a83c8b1439))
+* [DLCM-2029] admin user form replace person select with searchable
+  select ([2947dae](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/2947dae90a72efbc83745369102a604e7f7a5712))
+* [DLCM-2051] allow metadata update ([77354fc](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/77354fcd09eaf3bad7c218dd3ba7521c67f56ded))
+* [DLCM-2059] Adapt preservation job for order purge
+  job ([1bb85fb](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/1bb85fb313249a896e49135f6337c5e27a7afe4a))
+* add 'Centella' theme ([b9b59cf](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/b9b59cfacfe12c27b9e753c6d491133e4fc90c2c))
+* add check compliance level preservation job ([2e63773](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/2e6377347f3e3f7f751f437bde37f5aa2499a0c9))
+* **Deposit:** add DELETING status ([59cb6d8](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/59cb6d885aaaedd65cf4f26016986fc191ec26f9))
+* **IndexFieldAlias:** [DLCM-1672] add system property ([6fc4bd1](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/6fc4bd1181c6328f55bae6e5d1bd15f593648961))
+
+### Bug Fixes
+
+* [DLCM-1971] allow to sort by publication date ([33185f6](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/33185f681375c972674225045b95f405640209c6))
+* [DLCM-2020] display org unit logo even when only my org unit is
+  toggle ([b98f98c](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/b98f98c25f1ee94fc769b4486b0c688608f2137a))
+* [DLCM-2025] redirect always when read notification info about
+  deposit ([28cc944](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/28cc94433cb3c2737ea5d3deafcf05b708635680))
+* [DLCM-2030] preson org unit role detect changes
+  problem ([895d145](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/895d145cc744d21130ccefb36c8355403c74a556))
+* [DLCM-2033] refactor deposit security layer and fix problem of
+  cache ([ab893d6](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/ab893d603b3e43fb38aeeb01ada3df9cf33998fa))
+* [DLCM-2036] do not display notification in person dialog when creating a person from
+  deposit ([0714b7b](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/0714b7b4cdefb388a1cc9998d07fe35f09b45e53))
+* [DLCM-2042] check if custom ngsw is needed ([5a9a163](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/5a9a163fad25e3232114602f91020b1850b0fed9))
+* [DLCM-2075, DLCM-2076] report validation errors in order
+  form ([33fc7db](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/33fc7dbe6ebe44512f92671ded181d58db2906c3))
+* [DLCM-2077-2081] simply css, replace flexbox with grid and fix file detail
+  page ([f8db2c0](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/f8db2c02a526e619454c353e4ec01129b66c8ced))
+* [DLCM-2087] Do not show logo when creating new orgunits, institutions and
+  licences ([55d8d11](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/55d8d11188815458f03022fdcd315de7f147b306))
+* [DLCM-2088] click ignore on disable DOI input field on
+  firefox ([923f5a5](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/923f5a5f2c9b64ea655ff7beeb9b8516b4389f86))
+* [DLCM-2092] display user avatar on create form ([45d66da](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/45d66da1cb97a153a7ba578336c58baf8eff72d0))
+* [DLCM-2095] unable to edit deposit when root and not member of org
+  unit ([c3b444f](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/c3b444fc7c9dfb814b6dc5ce067d34d42b77cf46))
+* [DLCM-2096] stop polling an order in error ([b7ad643](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/b7ad6432ac8a0a921a9b589721dc2ef704a61882))
+* add color for package status inprogress and editing
+  metadata ([52a49a4](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/52a49a498a7ac0ccbe96d8967df454ddbbf12d71))
+* **archive download:** do not display preparation package when download token is
+  disabled ([4bdcb02](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/4bdcb022e32472347d7033c6ab4fe05bb7cdca6d))
+* avoid to switch status editing metadata to in-progress when update
+  deposit ([9bc421c](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/9bc421c78a3edcab05d04a9bbec6df971d0b4603))
+* build error by removing unwanted comma ([63038ed](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/63038edeaa56af195a11053c5f23e7d9f9b1d4ff))
+* checksum not injected in english error ([75d620a](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/75d620a5f73affa36d342e191b26ccc3586c19ba))
+* **cookie consent:** [DLCM-2094] add management of download
+  token ([f1cfa24](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/f1cfa24278b65d8476f2bd9d46bd32a6e5c0aa02))
+* deposit edit mode computed to late ([42c38ea](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/42c38eaf3153503c2e7e756cb8b58c007caae5c3))
+* **deposit list:** filter status on all tab and remove fitler on other
+  tabs ([f10f739](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/f10f739ef14dcd88887efa183cf84a8783b17ec3))
+* **deposit:** avoid to submit twice when status is editing
+  metadata ([36c01ca](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/36c01ca884d506347c036b9acdda8009150675c1))
+* do not set the deposit status when do an update ([0fb9d78](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/0fb9d78e6d3068c62353605f07e7e82780ce04ec))
+* highlightjs when live edit solidify ([0431c88](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/0431c886bb4fcd22adbd985271ed17e95aa32ce6))
+* **http status:** [DLCM-2008] update enum http status
+  code ([4a0146c](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/4a0146cbd238a46304e1094374338d5ede973efa))
+* **job:** [DLCM-2060] job execution list not refreshed after job
+  started ([518f029](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/518f0294b6302d167aa85276b0ee96dc1e072cb5))
+* lint config and lint error ([3f66e65](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/3f66e658a500a573c7abf642c5ea3cb255462518))
+* lint error ([0d4b3aa](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/0d4b3aadfcf2fe0531be44ae1ec90db50a97c59f))
+* lint error ([9bc920f](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/9bc920f9e805ec21698e29f66d765fe49e2f1d3e))
+* manage error durring init application and logging ([d03fba5](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/d03fba576270e217c782e155e6dc60ce6bade2c1))
+* **oai prefix:** make description field mandatory ([6d094c3](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/6d094c31b7c31d63c319c4a0494ca4ec89266b5d))
+* **package.json:** use lowercase projects folders names in scripts (as repositories names in
+  Gitlab) ([245f8b0](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/245f8b0f5c716bd46a8e30c27c8ffd671cd4d8af))
+* **preservation job:** [DLCM-2050] unable to resume job in
+  error ([6d68d74](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/6d68d7442ea3daaf2ac80ecb6f939af7b71bba11))
+* production local script ([20cd5d6](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/20cd5d67bd48460b47062b360b05b7cd2cfea7e1))
+* regenerate package lock ([ba2325c](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/ba2325cd55547175147f9c4f57ffff25b34b17dd))
+* replace lib for extract third party licenses ([76ade0a](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/76ade0a583790932c4f1b7e2bcc72b5209ce76f2))
+* solidify live edit ([fa79937](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/fa7993746db606a285bb7ae3a0f74c8f352b1c3a))
+* solidify live reload ([02367a1](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/02367a1faee96672b9bb6664227408e1de13dc44))
+* ts config for live watch with solidify ([612b24f](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/612b24fe8f82654207d90773cee741299f84e0c7))
+
+## [2.1.0-alpha2](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/compare/dlcm-2.1.0-alpha1...dlcm-2.1.0-alpha2) (2022-01-03)
+
+### Features
+
+* [DLCM-1931] integrate oai link into footer ([0eb0940](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/0eb094004bbe3c3b449470f185f505d7339c91c0))
+* [DLCM-1945] support Solidfy index module ([ae54d2b](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/ae54d2bcf4e1ccb7cc29badc543f65b6766e31e6))
+* [DLCM-1955] allow root to remove sip dip and datafile ([a3d1a1c](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/a3d1a1c3eb9096e96acc157e05b7e4fba3aa39fd))
+* [DLCM-1956] list all orgunits of an institution ([6abbab6](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/6abbab6ca36f2d992103e74458a4b27889c5ce5a))
+* [DLCM-1957] update carousel to have demo feature ([b528ed8](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/b528ed81ef566aa608bfdb0a55ddcd28df60618b))
+* [DLCM-1959] add user full name in change log section ([8ea1e57](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/8ea1e570728cdf866b6a8597787fb70a4e7c487b))
+* [DLCM-1985] improve sequential and parallel dispatch actions to manage intention and
+  timeout ([dec9fba](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/dec9fba251743c5301be9ada486823a22e58c7bd))
+* [DLCM-1987] adapt preservation job report for
+  deposits ([c3e904e](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/c3e904e428d4389a84424b2ff124aca40403995f))
+* **admin language:** [DLCM-1975] translate list language depending of the language of the
+  app ([8467710](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/84677107f784ca022cb56a5f15906376f64a31d3))
+* **contributor:** [DLCM-1960] avoid call on contributor avatar when
+  missing... ([338ba33](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/338ba33886bc5ca65c9bef0b0ba06940d398b62f))
+* **deposit upload:** [DLCM-871] allow to upload datafile with
+  checksum ([4f2b7a5](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/4f2b7a576edf99278a875b9622cbd1f3bebd0614))
+* **list logo:** [DLCM-1946-1952] add logo in institution and org unit
+  list ([99425f6](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/99425f606452a35f330d20759c1c447005c90a5d))
+* **preview:** [DLCM-1889] manage preview for tiff file ([81d63f7](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/81d63f7a3ba238cc70e5b9101cb829397c199a42))
+* required field in red when empty ([822cbbe](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/822cbbed0e5f490a49bf4c88ac55ac09d43c34a4))
+
+### Bug Fixes
+
+* [DLCM-1633] add sort for archive list ([d8ece87](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/d8ece877416a5fbbd1ebe708735e32cd683471d6))
+* [DLCM-1918] remove routing hash strategy ([39290c0](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/39290c06103fe177f024da951e071e73fcd4fffe))
+* [DLCM-1973] close user profile dialog when validate without validation
+  error ([a535e4c](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/a535e4c58d9b4361698ee6199555f6fd3dcc2e26))
+* [DLCM-1979] create missing success and fail actions for association
+  state ([07e76de](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/07e76defce3bb56f4b2d1f0227da4a5a86d81fe1))
+* [DLCM-1988] unable to preview image in docx on
+  firefox ([aadaa93](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/aadaa93f0f0e9e86e9d18eaebbe1a5ab2a98a6cd))
+* [DLCM-1991] custom metadata fie upload fail ([06a8730](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/06a87305412948a8000da5948d3cbddfb712bf64))
+* [DLCM-1997] detect changes after checksum computed ([aab56ca](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/aab56ca3abbdc5395c496729208389f9c0e5c3bb))
+* 1990 allow delete deposit data file from file detail page and add confirmation on
+  list ([d6c581d](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/d6c581d0c41885e634dba41e70c8b6d2b4bc4798))
+* **archive search:** [DLCM-2003] facetted search with multiple values on same field cause
+  error ([5b5ba41](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/5b5ba414a935239e636f7a1a94d437f28b704e48))
+* change indicator and message for checksum ([bb5339a](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/bb5339a05d6f23ce70635e13be49e29f8e460ecb))
+* default value for scope ([1a964c2](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/1a964c2f84417141b764afadae522a4a41bbb084))
+* disable preview in archive detail file ([7475756](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/74757564ea69ca9f3d5c712f79a8d7bf6412f0dc))
+* docx preview patch for better workarround ([0d70859](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/0d70859ccc4b748500374d48b1c4d1aa54e353a6))
+* docx-preview error missing jszip ([85f462b](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/85f462bc2cf3539407adbcaa8e45ca2b90caa6bc))
+* hide checksum option if not managed by backend ([4574f7b](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/4574f7b70a1e58329e8ecd969c585eda4275562c))
+* lint error ([0f4ab50](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/0f4ab50bcdf9e53465adc57897cc0fff4276b157))
+* logo on list ([7f2f405](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/7f2f40544a8abbe640de00bee9008058f022c863))
+* refresh token ([a212d1e](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/a212d1ecec72c5b953aa7a2a8cd1db90c46f23e6))
+* remove unused imports and added navigate method for org units
+  links ([a8c0d6c](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/a8c0d6c67b90e86f0c3385c3ca309b6134a2cfdc))
+* **search:** display error message and clean search result when error
+  append ([7cbed37](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/7cbed373106ca15f1fa26d45d7d2c33ca0bf6bdf))
+* set scope for dlcm ([f4fb9a9](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/f4fb9a99114d56d77a84a78c559a9614e6b838e4))
+* translate new notification type ([0a8d5ae](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/0a8d5ae0c53da952ce2efd3726bd5633a47bca08))
+* update refresh status polling for all package ([5852142](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/585214249b0d8a076dcee4baf6cc12aa866b7b72))
+* use operator and for contributor and allow to edit it in
+  settings ([279f5d5](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/279f5d55dede03ddeb287c819f21aa75672edbb3))
+
+## [2.1.0-alpha1](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/compare/dlcm-2.0.6...dlcm-2.1.0-alpha1) (2021-11-08)
+
+### Features
+
+* [AOU-1891] migrate TSLint to ESLint ([74f8e32](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/74f8e3262c4cb73bf941f9679f1701f3e06c7e21))
+* [DLCM-1774] migrate to angular 11 ([f3682eb](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/f3682eba4573d530c1faa2c37c696c690157a993))
+* [DLCM-1774] migrate to angular 12 ([7bb6fc9](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/7bb6fc9441c2d4acb8777ed3b32e4d2f958d993f))
+* [DLCM-1776] migration DLCM to last version of solidify
+  1.3.0 ([efbc0b9](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/efbc0b9325e94f5cd70760586133ea9173337045))
+* [DLCM-1907] remove 'OAuth2Client' management ([7f5f9af](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/7f5f9af41fb6b0b1b77a7631afeca59a1771752e))
+* [DLCM-1908] enable live reload on solidify frontend ([d7e3b5f](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/d7e3b5f0e268cccb5c8999b86869496ab1e21a89))
+* 1816 add embargo information in collection table ([7670325](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/7670325b8cc4cbeaa004b59c86eb81ba768b4e9f))
+* add 'refresh' action in user list for ROOT ([b0fdc44](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/b0fdc44ae06388853a846def219e1f8b0123e9e0))
+* add dialog util everywhere ([5d44d5b](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/5d44d5be975fc39676fd7590a6d64b8ffd338e85))
+* **download:** [DLCM-1743] apply download token for all authenticated
+  download ([843429e](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/843429e9b1f0f6dcca22ac42346c324ee1c16b46))
+* in OrgUnit edition, research domain list is interface language
+  dependent ([b722490](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/b722490762978164f94461a8d7f415aa0be4ab39))
+* update URL for OAI Set end point ([a12369f](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/a12369f4773f62510e33c5fb854e57fbbc8c0504))
+
+### Bug Fixes
+
+* [AOU-1898] deposit fle can no longer be selected using the
+  checkbox ([29cca12](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/29cca12e0b7941271aa0ec81ecb3046c1b11fa66))
+* [AOU-1900] remove environment.runtime.json from source code and
+  binary ([19e15d5](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/19e15d5d1756e4f39ba068e9db10575620788820))
+* [DLCM-1719] refresh ranking global once it has been
+  rated ([9751b9f](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/9751b9fb9d68c7791886fe965e89dc0d75ef9112))
+* [dlcm-1840] block if needed download button for closed
+  archives ([95d31c0](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/95d31c0f40f895678a4219542b3d5aece700c9e2))
+* [DLCM-1841] refresh deposit status on detail page properly when submit
+  it ([f7e2c9c](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/f7e2c9c977b4473ef93a5a54172be5dcc81187af))
+* [DLCM-1849] update to solidify 0.6.9 to fix missing description files excluded or
+  ignored ([eb87274](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/eb8727428dc5e1765d406fadb6f38676f72fc5cd))
+* [DLCM-1882] file detail toolbar hide behind deposit detail
+  bar ([d84e63d](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/d84e63de1e9cddc53dadf0ffc2a4fd4703dce36c))
+* [DLCM-1901] remove override and overrideProperty to use new typescript override
+  feature ([848c162](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/848c16240a5c5c3d4b3a539c297c92ddf1c179b7))
+* 1819 remove the upload data button from a collection's folder
+  view ([4f626a9](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/4f626a94289cd6fcb30501f94559d83de698e7e7))
+* 1820 close mat menu after click on action in datatable three dot
+  button ([6997a48](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/6997a488a2789586611205a9c574cb8c443e368c))
+* add missing english translate ([72b81b8](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/72b81b82d537711114416cb3232cd4bcf8bdd333))
+* **admin language:** [DLCM-1902] avoid to allow to create duplicate
+  language ([03931fb](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/03931fbfa11bdd920e64e7bbeaff37236ec29e54))
+* **admin orgunit:** [DLCM-1927] invalid create request sent when create org
+  unit ([43fb222](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/43fb222879ea7d2a42b20f876254a7d1405c8138))
+* allow to try to upload same picture twice time ([e31e641](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/e31e64148684da4620a18bce44e3b06abbd5d0e6))
+* **archive detail:** [DLCM-1915] page in error when log in then
+  unloggue ([be7130e](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/be7130e9c3e526b6a691badf7a849c82911d1363))
+* **archive detail:** 1833 license field display sensitivity when no
+  license ([ba06d8b](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/ba06d8b9bdf555be18734bbfb095958e660b5a83))
+* avatar in list and avoid 404 when we know that there is no
+  avatar ([ce1b088](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/ce1b088d86bd8ddda4c7bf01bdd1d239054b75c4))
+* **datatable checkbox:** [DLCM-1820] fix action buttons display in the list of files of a
+  deposit ([92b0e38](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/92b0e381b2bc04bc063ac0ba652eb7eb084a16ba))
+* **deposit:** [AOU-1835] detect change on deposit data sensitivity when
+  error ([9b1c940](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/9b1c94065502950b5d27efa21eb50fcbf69b18de))
+* **deposit:** 1834 warning banner is not updated when counter
+  change ([6cd434e](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/6cd434e0634a89970e905d187d29e18b980a421a))
+* display download button for sip aip dip button only when status
+  available ([a3ff473](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/a3ff473f7a5605f97560123f34bd1127c4c81853))
+* display user email for admin in notification detail ([be15df4](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/be15df4c94232afbf9f99348ea38cb1c3487aa82))
+* download dip data file cause double download ([6f241a8](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/6f241a8cac651ef664b54d5d303371bc3d39833c))
+* error on alternative dialog ([416738e](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/416738e4895f8d3e24a40464477af9a46de3c57a))
+* error on order all order form ([4bb06c9](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/4bb06c9e192a45c6c771945ee62b6dc4389610d2))
+* **general:** [DLCM-1831] sometimes app load first time in
+  german ([ba66d42](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/ba66d42056b0b83db0f988d6ba9e1bdd819aa8cf))
+* **home archive:** [DLCM-1829] Packages information are not displayed when should and sometime information displayed concen an other
+  archive ([7e35d2d](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/7e35d2d4512e38972b3b16b49eb0d7404c49ee24))
+* **job report:** [DLCM-1923] avoid invalid call on job
+  excution ([63a4591](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/63a4591306396f8032d147b4bcb0129e3c79854d))
+* **keyword:** [DLCM-1809] deposit keyword should accept
+  space ([1ff5f79](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/1ff5f79b9f4cafd644af4798e353e996ac672735))
+* lint error ([c6eb4dc](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/c6eb4dc2a26b207432ac869655cfc1279357fb0d))
+* metadata version enum ([37dc30d](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/37dc30dd82a44ad64a0cbb06a58788c5b2456b7f))
+* missing icon start empty ([71ca786](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/71ca786f4258a596dc6682c27896e5da806dafc5))
+* **orgunit:** [DLCM-1885] enter in edition when click on add member
+  button ([ea0e4d6](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/ea0e4d6dbd1f1a7c7c0d2a87c55edf98022e84a8))
+* preview with backend update ([91401a6](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/91401a6c7de0ce4c233848369c66d6a1d5e3239a))
+* **preview:** preview dialog missing download url ([2105c1f](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/2105c1f9db449624dc41e5e5c98a2e21afe4f6f9))
+* proxy conf variable by removing prefix ([8365867](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/8365867a04ab08667324316d25a565a52f2bd3f4))
+* remove nodocker config in package json ([29ea70b](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/29ea70b975e951c639ff2efa7535413a540a5732))
+* remove unused tour step ([649e30f](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/649e30fe2696eb19d1d55646b146ddd61ad596c9))
+* remove warning about IE 11 support ([d08d727](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/d08d727513e742eb343fa9491bbba32295628fc7))
+* **SharedArchiveState:** [DLCM-1821] Show longer time the info message upon preparation of (first)
+  DIP ([0599af5](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/0599af57616dbfa96d83cdb3e774520c62299d99))
+* show labels text in research domain ([03ac686](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/03ac686a3667f6e2fa02d316add23a7cb128a60c))
+* update status colors ([719cc29](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/719cc29cd6a137c62e0561cf6a15f860ebab9a7f))
+* use download service provided by solidify ([94c8925](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/94c8925a220abe6fa6b4d4c869a56ceff9a684ae))
+* warning about budget size ([62ae594](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/62ae594d798548bc64b352238c753a260bfe1c61))
+
+### [2.0.7](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/compare/dlcm-2.0.6...dlcm-2.0.7) (2021-06-07)
+
+### Features
+
+* 1816 add embargo information in collection table ([fc230fe](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/fc230fe07abd400f7679ea49a079b7256f16f421))
+* in OrgUnit edition, research domain list is interface language
+  dependent ([2168740](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/21687407f86373d83b5f92d5ccea623c7191ccee))
+
+### Bug Fixes
+
+* [dlcm-1840] block if needed download button for closed
+  archives ([fc03222](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/fc03222412c777d49f6dfd330d382988b537a00b))
+* 1819 remove the upload data button from a collection's folder
+  view ([1e92851](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/1e9285154eaa6c3bc144e4132cc5f82606d81c6a))
+* 1820 close mat menu after click on action in datatable three dot
+  button ([44949dc](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/44949dcb147cb23eec99e4c2fed502c137b1f511))
+* **archive detail:** 1833 license field display sensitivity when no
+  license ([4bbb162](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/4bbb162021c3300946bafea1676e0729a886a0ef))
+* **datatable checkbox:** [DLCM-1820] fix action buttons display in the list of files of a
+  deposit ([56a833a](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/56a833a991d0a3ef25b3a2a0e6f5346f1fb724dc))
+* **deposit:** [AOU-1835] detect change on deposit data sensitivity when
+  error ([eda1478](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/eda14785811b765f151f21194724d9d53d533abb))
+* **deposit:** 1834 warning banner is not updated when counter
+  change ([8a6df76](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/8a6df760e6262080e7bf963d7649afc7232df78f))
+* display user email for admin in notification detail ([237c4b6](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/237c4b68b382ab2c324869155850be5384d32d34))
+* **general:** [DLCM-1831] sometimes app load first time in
+  german ([ad8617c](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/ad8617c47dcaf37c090bacfea9ecdec359c172b4))
+* **home archive:** [DLCM-1829] Packages information are not displayed when should and sometime information displayed concen an other
+  archive ([008ad6b](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/008ad6b167902293f93ff11b1ab15a200cd31ef0))
+* **SharedArchiveState:** [DLCM-1821] Show longer time the info message upon preparation of (first)
+  DIP ([d89364c](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/d89364c0a09bbd132e6764c9275273f825712a55))
+* show labels text in research domain ([d1708ed](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/d1708ed54d0d2137816db2ce0933f8d3b93b8fca))
+* update status colors ([a6f2253](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/a6f2253e1b4f1fa86e0daf174f5209006730bd9a))
+* view AIP link in SIP detail when status is 'CLEANED' ([4c24a53](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/4c24a539f5cba2318aa9e4b34bd41ca144a7d513))
+
+### [2.0.6](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/compare/dlcm-2.0.5...dlcm-2.0.6) (2021-03-18)
+
+### Features
+
+* 1144 when drag and drop file, allow to open folder by staying hover the desired
+  folder ([dd0883f](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/dd0883f31fa09dbba1f61b056ae20b66553a7bc8))
+* 1432 add institution on organizational unit preservation
+  space ([ef50116](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/ef50116fdd6246dc85e7cd0601d6d4c731471762))
+* 1621 translate access level chip and data tags on faceted
+  search ([06af279](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/06af279ce92cf895d16dfc4e569c4c1dc9ef0ffb))
+* 1744 dynamic change webmanifest and logo and color meta depending of theme
+  used ([b165c7e](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/b165c7ec0e65fe028a69e7ff2904b1b5fd42c329))
+* 1749 decode user token ([f34ee1f](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/f34ee1fda32cf1fff8c2bda5d5b5031e067c369b))
+* 1754 parameter to enable a flag headband for test env to inform
+  user ([7269290](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/726929089b0eb05883fa45f18343e80d093b1446))
+* 1761 display institution and person first name last name if different for user searchable
+  select ([eafa39f](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/eafa39f336ec386b3be3ed3446c3c68b143420d2))
+* 1778 deposit delete button inside deposit form rename into delete
+  deposit ([10f5d16](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/10f5d164fc7ea565b86586f82f2a3ea3818495d0))
+* 1779 depost file list add column for display data
+  category ([6404fae](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/6404faeea7439360e076c90063e5087499ad30a2))
+* 1781 deposit list add button to download ignored file ([11d132f](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/11d132f9812e2bad8b10668093557cce2ca7a899))
+* 1783 add icon bottom arrow to the rigth of the solidify
+  select ([6b32a69](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/6b32a69ff39c4d206767c9dfddc4e992533532d7))
+* 1785 data sensitivity change display of infos ([13e73e8](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/13e73e8c056f2e16c6020594be45a374f1c5c065))
+* 1790 deposit warning banner polling use new endpoint ([95eb25e](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/95eb25e814dff3b4f88cfe6047d02abed62847a6))
+* 1794 deposit bulk task do not ignore ([4adf23c](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/4adf23cdb58127bf19d693dbd93e6355df58818f))
+* 1795 deposit data allow to directly upload a zip ([3aab69d](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/3aab69dde95057563a248f388fde9fd2ca7d5ceb))
+* 1803 add confirmation window asking user accept privacy policy and terms of use at first
+  login ([77bb28d](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/77bb28ddaee03ab95f7fd46e9a40685add8c6bad))
+* 950 upload by default in current location folder ([6667178](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/66671789a287a1797c1d1dd7debf223227794bbd))
+* add callback for extra info image and use it for orcid for contributors in deposit detail
+  page ([f228b9f](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/f228b9f9c8e4baf6be086363d0b8510fea36fe9a))
+* add creation time into preservation planning job
+  table ([cc6ed6c](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/cc6ed6c275913f1550a04b9cc15272b3dbad1ac4))
+* add message for contributors deposits to specify that only their authorized deposits are
+  shown ([8eb9796](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/8eb979601c92077325be5f2d6fcdc2da88c0ec9f))
+* add redirect link for orcid in archive detail page ([c69cc78](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/c69cc7852ca2c240f68145a9fe09b2446cf500dd))
+* allow to put in error sip dip aip ([0d78133](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/0d78133f9e79006bbb96c2eb7e8b41538d0b77be))
+* display default license on deposit license dropdown ([1268ae8](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/1268ae876dcaa681d5af9f0540f4607dfb3a552b))
+* update angular json ([dae9d3f](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/dae9d3f45103ee22ee25d3a2f45e16eede19e740))
+
+### Bug Fixes
+
+* 1411 display button to add a person even if not in edit
+  mode ([9dd39e6](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/9dd39e694048528bde8c465b9719cb6ef10a7463))
+* 1753 allow to copy field value without enter in edit mode on
+  chrome ([03113a3](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/03113a31d2b20249d580554f2dcf5da10421a907))
+* 1760 archive acl is not accessible twice and add scroll
+  service ([aba3598](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/aba3598d906cb454f4d35b5df58af595f9d3fa09))
+* 1764 advance search for users ([f35f7a0](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/f35f7a03306f84da99fe83cb876b15cd182b057a))
+* 1768 display all members of orgunit or all org unit of a person after
+  save ([a22f4ba](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/a22f4baa692d2a64ee00c290ed01d861c19c761e))
+* 1770 remove completed from datafile statuses ([93bc1fe](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/93bc1fe784e9c9de978b9e2cd13ebebfb7c6cba0))
+* 1788 sonar duplicate code issues ([bb514b2](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/bb514b2cc0699008a5300b34d1cb8a6ee5adc75c))
+* 1811 contributor filter and sorting problem ([1a13480](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/1a13480ccbda3debc655bea893fb0c0b0f301ab5))
+* Add a warning when submitting a deposit which indicates that the decision is potentially
+  final ([240ac77](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/240ac7704d6327481b92de4571542a2de1c3696f))
+* add missing input in a component ([a1add65](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/a1add655eefc7eb6441e1117bdc5735d0f8f7903))
+* allow funding agencies menu for admin ([5fc4e7e](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/5fc4e7eb0def41525171818b790029c68761fc10))
+* allow to copy field value when disabled on firefox ([0523e1d](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/0523e1d54dcea93b74988b909dea4d956303f8fd))
+* allow to save oauth 2 form change on admin page ([c976703](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/c976703bbd522a2641780307300fcf70574fc3fc))
+* change status enum used for aip and sip collection
+  list ([54adbf2](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/54adbf2f2ee484d71114bf7557c2af0404294fb4))
+* data table display problems ([236b0ae](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/236b0ae50b333107cf52cf46b691ac40a191ea76))
+* deposit sensitivity should be undefined when creating a
+  deposit ([fda3326](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/fda3326a274a4fce5586522d0d71b9b108041804))
+* do not create empty indexFieldAlias labels ([2d87afd](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/2d87afd98f9fda75bec558b70b2ee66ded5da6b1))
+* error on file and collection list for deposit, sip, dip and
+  aip ([5307025](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/53070256fbeb7ac779de06036270c83a14014174))
+* force to explicit status enum to use in history
+  dialog ([1312e5c](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/1312e5c10af309566e9bfbaad4c05abc9396f599))
+* french corrections ([db115f4](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/db115f4f47676e0db77df2a96417eab1ab111ccc))
+* initialize each time statistics component ([b22cf7d](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/b22cf7d61519580260ff963929b68557ff65f113))
+* lint error ([9a82446](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/9a824465ce089666832b22c55fdc24ddc287ad3f))
+* lint error ([deecebc](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/deecebcd27a07b2f6bf3b3d391030a84e1038c05))
+* missing import ([e5b365d](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/e5b365dffd256bc47ad578b07e1100232232d3e9))
+* missing spinner on deposit list ([bcadce8](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/bcadce833b985334101590fefc3ec076ca2a96ad))
+* open orcid link in a new browser tab ([0870f55](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/0870f55e3bcc339d8e0e8f4ba4b26577c1e51fc6))
+* preview of gif with pronom id ([9af270d](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/9af270d91f5636bd4dcc4ef99a82bac3cbf17be9))
+* remove environment runtime theme ([f9cf52e](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/f9cf52eedfaabdf4f1a186454e748662547000d3))
+* remove unused import ([ba3a78c](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/ba3a78ce09e465cdd0cb7c1e5416bccffd271407))
+* searchable multiple select field should not display pen when ignored or
+  cursor ([e680065](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/e6800658d97df6bb08af27deaebfb6f05676b8b9))
+* show notification when submitting an order in all orders
+  page ([edfb814](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/edfb814fd51a978f7de17d7bc3d13ce1cc6cd0ef))
+* show sip or aip depending of the type of job ([a1b18c4](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/a1b18c4668d23dd60aa07a92574c352636aad706))
+* spinner overlap data table header ([66b30a0](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/66b30a0bfb34969c8e1289f0ad58fd7d572d488b))
+* unable to save deposit after edition due to javascript
+  error ([1c46de0](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/1c46de0e3de5c9da4ef31f7c991e2061bc3571dc))
+* use Institution instead of org unit in person institution
+  action ([6199491](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/61994913a7acc556e84358f67c22a80498654f12))
+* when creating a deposit, licence should be undefined by
+  default ([97294a2](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/97294a27c138ea1bcac51ec431ed202f242504eb))
+* wrong template url on searchable select content ([867fcaf](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/867fcaf9ab21912939e08e57316a475feffd3ea1))
+
+### [2.0.5](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/compare/dlcm-2.0.4...dlcm-2.0.5) (2020-11-30)
 
+### Features
+
+* add archive preloading jobs ([e489b3a](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/e489b3ac41ddc2f91c76d31f0d50ed6efc91674d))
+* add delete button to downloaded AIP + DIP ([7e432ae](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/7e432ae589e34bf3aba06500ede4dabdb06f61be))
+* allow to dynamically define app language ([92b2d6e](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/92b2d6ed122a781b09532215e399d0ede42f0e82))
+* remove '<>{}[]()' from forbidden characters ([587edf6](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/587edf68ffca2b1dd701bb12b2c2fb2aac878a8c))
+
+### Bug Fixes
+
+* change order button bulk action on deposit data file ([1fedea2](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/1fedea26bbf717ecd8a3b2c5b3169f92eea443cf))
+* glitch on data table header when no data ([1313f3c](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/1313f3cbf021637e5ef1a29f0874fe3a31a37826))
+* package logo displayed on AIP in error ([9b5d787](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/9b5d7870a446c0c48ff116090c32119b4ab679a7))
+* preserve query parameters when come from deposit detail
+  page ([a0d7d96](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/a0d7d960e270d2893238ff181c99953c9e11b2fe))
+* remove file action buttons while deposit is in error ([8b3fa80](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/8b3fa80aedbb7fddd5ab892ece4987d650b60ab7))
+* replace final data by source data for sort and filter on deposit data
+  file ([c5d9b6c](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/c5d9b6c1d52e68336c732c73698fe148b1869627))
+* truncate spinner on archive detail file list when file
+  loading ([cfe12da](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/cfe12da57bed6e41acf003da562a27d5a0a8e0d9))
+* user avatar not refresh when change page on admin user
+  list ([6ce4fd1](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/6ce4fd11c47fad896a0046ab4c84a24c5118e2c0))
+* validate uniqueness acronym of a fundingagency before
+  create ([7e54bbc](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/7e54bbcc5a55d4ed4bb07994bea780e7de897b65))
+* validate uniqueness external_uid of an user before
+  create ([a8669d9](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/a8669d9f8c84f403f2bde58022c5e29637e42200))
+
+### [2.0.4](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/compare/dlcm-2.0.3...dlcm-2.0.4) (2020-11-19)
+
+### Features
+
+* add guard to avoid load page archive detail with wrong archive
+  id ([695e782](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/695e782fe0c7ccf8fe338aedfa0555c95f93ebcd))
+* add yareta manifest and icon for pwa ([fe3b36e](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/fe3b36e0fad1ccb8b0c9db71778c806098b8ce3c))
+* display a dedicated page when archive id doesn't
+  exist ([489d14a](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/489d14a75fe3b4aaf6bdf6e3fe6cb7ee661739bf))
+
+### Bug Fixes
+
+* aip list sort size ([c03c49d](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/c03c49d7a0931fb551584de4c85eb7e7097fdf5a))
+* avoid infinite spinner when invalide archive id in
+  url ([698e8d6](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/698e8d645284055c479c56025cc51af569e4b405))
+* avoid to block access to doc toc when user guide
+  error ([87e580e](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/87e580ede810e815f8406d811f9d39d866e15cbf))
+* display aip logo for aip downloaded file ([d4773b0](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/d4773b0a9bf7c5dbed57742a053fe3abe6c8026f))
+* error when file format is null on data file detail
+  page ([d198b01](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/d198b0161a4319cc82e4743f388138d1941a905d))
+* increase max size textarea deposit description before
+  scroll ([4622fc5](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/4622fc5ed70dc32ef44a2831fcb860ea25c9ab9b))
+* injected link path on toc ([362bc55](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/362bc55920f84b981693d31ff68e50ad3992dbd4))
+* regenerate model ([39b1bd0](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/39b1bd0185600e53b7b5671378bd2db224f74d8a))
+
+### [2.0.3](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/compare/dlcm-2.0.2...dlcm-2.0.3) (2020-11-18)
+
+### Bug Fixes
+
+* custom service worker to working when scope is root
+  server ([74fc6f0](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/74fc6f0c643d5bba020ac76db499eb8502f5298f))
+* custom service worker to working when scope is root
+  server ([3a16fae](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/3a16faec10dc556cb73c7019774e3e598f9a8d8c))
+
+### [2.0.2](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/compare/dlcm-2.0.1...dlcm-2.0.2) (2020-11-13)
+
+### Bug Fixes
+
+* display see detail person button on preservation space org unit member list only when admin or
+  root ([b02c826](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/b02c826d23d12cb224942b8f6c91bade034f318b))
+* text wrap on datafile detail page ([1d03ef4](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/1d03ef4b980fea549989400ad2a5a9c2c4a5db30))
+* update link of user guide toc if toc load from other endpoint than default docs
+  folder ([1349007](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/1349007d54c91d05c2d053c857fc9476db5fa54c))
+
+### [2.0.1](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/compare/dlcm-2.0.0...dlcm-2.0.1) (2020-11-06)
+
+### Features
+
+* add button display more option on data table ([b2ab505](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/b2ab505207a0b2af057a72d007ddffd3db65a900))
+* add current access level (embargo) in archive
+  metadata ([44ab04d](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/44ab04da9844d9d43c18a1c7112779c4d65623c9))
+* add current access level (embargo) in archive
+  metadata ([0ca7ee4](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/0ca7ee45e5a41563788ff99f4bb53f0afc4ff9cc))
+* add header table as sticky ([68cc757](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/68cc757079b34836c3f80ddecc818b89bff0c05f))
+* display embargo information on sip aip dip and display icon on embargo access
+  level ([3ccdfce](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/3ccdfceed0caa05d94b48bcb49a3284b32a2d458))
+* display general validation error message on deposit ([30d550a](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/30d550a6bba94381aefb44a61eb29068afeed789))
+
+### Bug Fixes
+
+* add a section for embargo on sip aip dip ([50e386b](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/50e386bd9fc2bb8e401544c87e93c90906d4f0fe))
+* deposit datafile sticky problem depending of status ([9facd77](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/9facd77396c7e251d82b11e179f9cb1be35af622))
+* error on deposit embargo at deposit creation ([0e2a117](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/0e2a11763f3f6c44484ef6fbd8c9528d52598fa4))
+* glitch on data table when not data and not loading ([2ae3b2b](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/2ae3b2bff524f3e7beda8fff55d6f1fd9af3a602))
+* header collapsed on datatable when no data are loaded ([bdb08fd](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/bdb08fdece02422d981d56748e73f8d4d8b59c45))
+* hide options button on datatable when no options
+  availaibe ([8f69c94](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/8f69c940b5e100639e81037a404c91f9862e50eb))
+* main toolbar on small desktop by hidding search bar ([8cd55a0](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/8cd55a057a61763daae8efd6a705f0b061ec872a))
+* make deposit tabs sticky ([57b3b7b](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/57b3b7b7967b9a0e230c3b53c9454bc8c21f9eec))
+* monitoring by not cancel a pending request ([f1f9174](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/f1f917498487d9f9d2a4efa75e01bb0238bf901b))
+* preserve data table line hover state when more action menu is
+  opened ([5c5584c](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/5c5584c00cee1ec3bd89f00ee93c5e0540fb0f7e))
+* several problem on sticky data table header ([d8c65a3](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/d8c65a3b4acd2458daf95963e243dbf7aeb39e21))
+* sticky header list on several screens ([043b275](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/043b275d1c85e0f8834fa67cd001b00d0e4aeb1d))
+* use translation of facet from backend for active
+  facet ([17a0af3](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/17a0af30dd84f01f3a61444f00a22eb288db79ac))
+
+## [2.0.0](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/compare/dlcm-2.0.0-RC3...dlcm-2.0.0) (2020-11-02)
+
+### Features
+
+* 1728 add a grey background for input fields ([7bf94a3](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/7bf94a3c82efbbfd0fff4d6f6483c83d34ad1ecf))
+* 1730 change logos for add to download orders and download
+  orders ([b1c823d](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/b1c823daf4854f1caca9d402337d3351d34c5e4a))
+* 1733 Use system properties web service to get ORCID client
+  ID ([399a613](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/399a613584ba67c6c5a44e58a54c93837709523b))
+* add confirmation modal before delete a selection of data
+  file ([8eb2b9e](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/8eb2b9e311f59185a3d88a893d9ec086139fba5c))
+* add cypress io test on home module when not logged ([909be10](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/909be10f4f26424be6a0594d7567db18ff7aeca4))
+* allow fullscreen preview only for certain formats ([af18a86](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/af18a86b67a59331307dee7609e602860ee491c2))
+* allow to customized i18n files depending of theme and also of
+  environment ([5ee673b](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/5ee673bafc47d0b4d75cbfd1f48edd0b62cdfc90))
+* allow to set google analytics account ([edc55f6](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/edc55f6aa1925bcd403a55bcfff065bf6efff079))
+* always display submit button on deposit but disable it when not
+  available ([8a406e3](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/8a406e373e4ae71d5ba7eee498f30dad537b8694))
+* detect link into description to display it ([c5f3a44](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/c5f3a44067b3a513ced415ccb08aeefe03ac4143))
+* display orcid and affiliation on archive detail
+  contributor ([04f7128](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/04f7128f7e32e392d99a4afb822b95d053c6fc47))
+* google analytics consent usage of cookie ([c95b70a](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/c95b70a30447b57997c01a06a7c90856f0a9aabc))
+* make labels more explicit + corrections ([c1139b5](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/c1139b566f5aa4040f2a34fb2320b0cb9bf71f91))
+* remove back button for USERs in download order list ([81ce400](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/81ce40073ec37ff02b86561c0cc8136ad9d30a79))
+* rename archive orders + more explicit labels ([7445f11](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/7445f11e42b9c4a96f9852e6e143eae9c91440e9))
+
+### Bug Fixes
+
+* 1709 move into the preview the button to allow
+  fullscreen ([320d200](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/320d2003066bd806bee0e069fb14e6e7836698a3))
+* activate user profile button when there is changes in
+  avatar ([e7f70b1](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/e7f70b143416b5a1a5092dbd4f0e0a10238a78bc))
+* add newspace at the end of the file ([b5b973a](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/b5b973a29285674755b97975af78da42bedbad06))
+* added notion of read/unread for notifications ([93a9693](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/93a9693b2d89aef47c077669f465ba8a2d5a847e))
+* allow to configure custom endpoint for userguide ([b13065c](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/b13065c0cb1be65874d943c8ca2cd6baf09dcd17))
+* allow to display cookie consent banner when set id google analytics on environment
+  runtime ([fc556e7](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/fc556e7ec2cacfd7d5afe8fc5960262435f0b724))
+* change display component table person org unit role ([4ccee3a](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/4ccee3abaec2b4a86dc346803da427e1cc211bc2))
+* change logo for login ([abee97a](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/abee97ad26e6e6c7ac6c9a3de84555c76e3c3eac))
+* change title in home page depending of theme ([09916fb](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/09916fb1d2f5c38031f81545a3870645fed92aae))
+* color label of mat input when focus and color marker required when
+  focus ([a77a594](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/a77a59441c3ef9afeaa1878a0b0dee2ec5ceee7f))
+* disable grid max width for archive detail page ([74ab84a](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/74ab84afa50c4afddd9b49caf962e86f2ca6d214))
+* display button for fullscreen preview on a dedicated space and not hover
+  preview ([34b4923](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/34b4923ed5373dfefd7ab28e81e8af22b5780bb8))
+* display button margin botton on add me as contributor ([c4c0c9f](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/c4c0c9f32a900dea3a2636582515403c6e14cfd0))
+* display input as focused when overlay open on single or multiple
+  select ([31dcd40](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/31dcd4047763c0902968514745ef78137b77fe4e))
+* display of multiple searchable select without value ([b83bb08](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/b83bb08d1d58ed5ce5e8ba611ecd661320a35342))
+* fix height and width after zoom ([29c17d3](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/29c17d3f9fe97531193f7da338d129b922e1f37b))
+* label considered only as placeholder ([ae45785](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/ae45785d0f0dc851ceb0ba4a31451a8825fdc2b9))
+* lint error ([9f23e22](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/9f23e222580238f3d56aaae18c0a170226cbac94))
+* lint error ([8d16a58](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/8d16a58974d9d799feea135019f96943421247b0))
+* make label more darker ([ea79e65](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/ea79e654441547a799fff3f7665063001a2a5d9d))
+* make some adjustment on notification ([7d1336e](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/7d1336e7b19da7b759818a5aa3c6b1ce7ec00ba0))
+* manage back to list for deposit and preservation-planning deposit
+  menus ([3bb920f](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/3bb920f4f861d39d9c8f53c5119d98b24eab06d7))
+* move org unit toolbar to right in deposit view ([f2bc80e](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/f2bc80ebb30f22571fc244ac5ffbe7f14e42b696))
+* move pen on input editable ([5566b88](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/5566b889df0d684e91030ced66f08c1c12fb302e))
+* not able to save the same deposit form twice ([69b9925](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/69b9925b1066f6ffb16c538eb75b5f1a1614e509))
+* on index field alias move translate field on the center
+  part ([7a9c33b](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/7a9c33be4482d0021d5250e4b41b24a5a7c6cef0))
+* preserve-query-parameters-in-url-for-notifications ([bbcdc74](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/bbcdc74820bfd3a9224cede3eb19519c54354edd))
+* readme ([e03346f](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/e03346fc164555a2c59842ce42a6e8177646a5c4))
+* regression on data file screen ([9e31f9c](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/9e31f9c22f8962fb185f27b06030c42c6502c326))
+* remove autofocus on deposit list org unit selector ([8482f56](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/8482f568badd23b05e3b3db20eed21e68db1f85e))
+* rename add to order button on archive detail and add
+  tooltip ([39ba010](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/39ba010a00657308921f532c7554f501cd114254))
+* rename label home search placeholder in fr and de ([c2f10ba](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/c2f10bada8916161e504c6e8381620dd731df34a))
+* research archive with & character ([69db84b](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/69db84b1246544fd7fc33f4187e35432b2958904))
+* research domain filter field not display correctly on readonly
+  mode ([1c1557f](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/1c1557fc1f38de28d300912f2118f1322e15f618))
+* searchable multi select link button ([7f63875](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/7f638751e0a1f4f343c3e9f94f2899f1fd434a79))
+* switch material input mode to outline and allow to configure
+  it ([56d0498](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/56d0498fb2ef26af10a822a982576749809e105d))
+* use container space for the preview ([3a8a07b](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/3a8a07b07a707a1385fd17e5cc2389d599be9866))
+* use object fit contain property to adapt image ([f613856](https://gitlab.unige.ch/dlcm/ui/dlcm-portal/commit/f6138567d3d26873dbed2cd9f45384f0e17f7d7c))
+
+## 0.0.0 (2019-06-24)
 
 ### Features
 
 * **dlcm-portal:** add oauth2 code flow ([1d7ad2e](https://gitlab.unige.ch///commit/1d7ad2e))
 * **dlcm-portal:** add refresh token flow ([cad9997](https://gitlab.unige.ch///commit/cad9997)), closes [#DLCM-595](https://gitlab.unige.ch///issues/DLCM-595)
 
-
 ### Tests
 
 * **dlcm-portal:** correct jasmine tests ([17433d3](https://gitlab.unige.ch///commit/17433d3))
diff --git a/README.adoc b/README.adoc
index 5b594c05cbead31305c0c47c6fb71a70514a0704..b252602c5ee4374e03454ca8cbf729be16e62290 100644
--- a/README.adoc
+++ b/README.adoc
@@ -23,6 +23,20 @@ For run the project on a dev server or build the project, you need to install al
 npm install
 ----
 
+== Release
+
+We use Jenkins to release the app (we use maven process to do the release).
+
+But, before running the build job you need to prepare the release with command
+
+----
+npm run prepare-release --release=VERSION_TO_RELEASE
+----
+
+Replace VERSION_TO_RELEASE with the appropriate version number.
+
+This command will update package json number and generate changelog.
+
 == Development server
 
 Before running the project, you need to setup both things :
diff --git a/angular.json b/angular.json
index 544e7ae055be828cbfa942534ffbd5bdaf31c23a..aec0212077163bce83dbb6a3abc1b49038b68da8 100644
--- a/angular.json
+++ b/angular.json
@@ -56,6 +56,16 @@
                 "glob": "**/*",
                 "input": "src/assets/",
                 "output": "/assets/"
+              },
+              {
+                "glob": "CHANGELOG.md",
+                "input": ".",
+                "output": "/"
+              },
+              {
+                "glob": "RELEASE_NOTES.md",
+                "input": ".",
+                "output": "/"
               }
             ],
             "styles": [
diff --git a/commitlint.config.js b/commitlint.config.js
new file mode 100644
index 0000000000000000000000000000000000000000..28fe5c5bf9299c98bf7eda81f658984e9d6a1129
--- /dev/null
+++ b/commitlint.config.js
@@ -0,0 +1 @@
+module.exports = {extends: ['@commitlint/config-conventional']}
diff --git a/package-lock.json b/package-lock.json
index 7c87411173b8810d0427115e8736dbe58022bdf6..3a905b76b7c95b22ec83b4d663daa38323cf7025 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -22,6 +22,8 @@
         "@angular/platform-browser-dynamic": "13.2.1",
         "@angular/router": "13.2.1",
         "@angular/service-worker": "13.2.1",
+        "@commitlint/cli": "16.2.1",
+        "@commitlint/config-conventional": "16.2.1",
         "@cospired/i18n-iso-languages": "3.1.1",
         "@elastic/apm-rum-angular": "2.1.3",
         "@fortawesome/angular-fontawesome": "0.10.1",
@@ -42,6 +44,7 @@
         "hash-wasm": "4.9.0",
         "jsme": "2017.2.26",
         "jsmol": "1.1.0",
+        "markdown-it": "12.3.2",
         "moment": "2.29.1",
         "ng2-pdf-viewer": "7.0.2",
         "ngx-cookie": "5.0.2",
@@ -53,7 +56,7 @@
         "normalize.css": "8.0.1",
         "patch-package": "6.4.7",
         "rxjs": "7.5.2",
-        "solidify-frontend": "3.0.20",
+        "solidify-frontend": "3.0.21",
         "tiff.js": "1.0.0",
         "tslib": "2.3.1",
         "videojs-wavesurfer": "3.8.0",
@@ -91,6 +94,7 @@
         "eslint-plugin-prefer-arrow": "1.2.3",
         "eslint-plugin-solidify": "0.0.2",
         "eslint-plugin-unused-imports": "2.0.0",
+        "husky": "7.0.4",
         "jasmine-core": "4.0.0",
         "jasmine-spec-reporter": "7.0.0",
         "karma": "6.3.13",
@@ -103,6 +107,7 @@
         "local-web-server": "5.1.1",
         "ngx-translate-extract-csv": "1.1.1",
         "protractor": "7.0.0",
+        "standard-version": "9.3.2",
         "ts-loader": "9.2.6",
         "ts-node": "10.4.0",
         "typescript": "4.5.5",
@@ -1279,7 +1284,6 @@
       "version": "7.16.7",
       "resolved": "https://nexus.unige.ch/repository/npm-all/@babel/code-frame/-/code-frame-7.16.7.tgz",
       "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==",
-      "dev": true,
       "license": "MIT",
       "dependencies": {
         "@babel/highlight": "^7.16.7"
@@ -1710,7 +1714,6 @@
       "version": "7.16.7",
       "resolved": "https://nexus.unige.ch/repository/npm-all/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz",
       "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==",
-      "dev": true,
       "license": "MIT",
       "engines": {
         "node": ">=6.9.0"
@@ -1761,7 +1764,6 @@
       "version": "7.16.10",
       "resolved": "https://nexus.unige.ch/repository/npm-all/@babel/highlight/-/highlight-7.16.10.tgz",
       "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==",
-      "dev": true,
       "license": "MIT",
       "dependencies": {
         "@babel/helper-validator-identifier": "^7.16.7",
@@ -3064,6 +3066,594 @@
         "typescript": ">=4.4.0"
       }
     },
+    "node_modules/@commitlint/cli": {
+      "version": "16.2.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/@commitlint/cli/-/cli-16.2.1.tgz",
+      "integrity": "sha512-zfKf+B9osuiDbxGMJ7bWFv7XFCW8wlQYPtCffNp7Ukdb7mdrep5R9e03vPUZysnwp8NX6hg05kPEvnD/wRIGWw==",
+      "license": "MIT",
+      "dependencies": {
+        "@commitlint/format": "^16.2.1",
+        "@commitlint/lint": "^16.2.1",
+        "@commitlint/load": "^16.2.1",
+        "@commitlint/read": "^16.2.1",
+        "@commitlint/types": "^16.2.1",
+        "lodash": "^4.17.19",
+        "resolve-from": "5.0.0",
+        "resolve-global": "1.0.0",
+        "yargs": "^17.0.0"
+      },
+      "bin": {
+        "commitlint": "cli.js"
+      },
+      "engines": {
+        "node": ">=v12"
+      }
+    },
+    "node_modules/@commitlint/config-conventional": {
+      "version": "16.2.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/@commitlint/config-conventional/-/config-conventional-16.2.1.tgz",
+      "integrity": "sha512-cP9gArx7gnaj4IqmtCIcHdRjTYdRUi6lmGE+lOzGGjGe45qGOS8nyQQNvkNy2Ey2VqoSWuXXkD8zCUh6EHf1Ww==",
+      "license": "MIT",
+      "dependencies": {
+        "conventional-changelog-conventionalcommits": "^4.3.1"
+      },
+      "engines": {
+        "node": ">=v12"
+      }
+    },
+    "node_modules/@commitlint/config-validator": {
+      "version": "16.2.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/@commitlint/config-validator/-/config-validator-16.2.1.tgz",
+      "integrity": "sha512-hogSe0WGg7CKmp4IfNbdNES3Rq3UEI4XRPB8JL4EPgo/ORq5nrGTVzxJh78omibNuB8Ho4501Czb1Er1MoDWpw==",
+      "license": "MIT",
+      "dependencies": {
+        "@commitlint/types": "^16.2.1",
+        "ajv": "^6.12.6"
+      },
+      "engines": {
+        "node": ">=v12"
+      }
+    },
+    "node_modules/@commitlint/config-validator/node_modules/ajv": {
+      "version": "6.12.6",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/ajv/-/ajv-6.12.6.tgz",
+      "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+      "license": "MIT",
+      "dependencies": {
+        "fast-deep-equal": "^3.1.1",
+        "fast-json-stable-stringify": "^2.0.0",
+        "json-schema-traverse": "^0.4.1",
+        "uri-js": "^4.2.2"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/epoberezkin"
+      }
+    },
+    "node_modules/@commitlint/config-validator/node_modules/json-schema-traverse": {
+      "version": "0.4.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+      "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+      "license": "MIT"
+    },
+    "node_modules/@commitlint/ensure": {
+      "version": "16.2.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/@commitlint/ensure/-/ensure-16.2.1.tgz",
+      "integrity": "sha512-/h+lBTgf1r5fhbDNHOViLuej38i3rZqTQnBTk+xEg+ehOwQDXUuissQ5GsYXXqI5uGy+261ew++sT4EA3uBJ+A==",
+      "license": "MIT",
+      "dependencies": {
+        "@commitlint/types": "^16.2.1",
+        "lodash": "^4.17.19"
+      },
+      "engines": {
+        "node": ">=v12"
+      }
+    },
+    "node_modules/@commitlint/execute-rule": {
+      "version": "16.2.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/@commitlint/execute-rule/-/execute-rule-16.2.1.tgz",
+      "integrity": "sha512-oSls82fmUTLM6cl5V3epdVo4gHhbmBFvCvQGHBRdQ50H/690Uq1Dyd7hXMuKITCIdcnr9umyDkr8r5C6HZDF3g==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=v12"
+      }
+    },
+    "node_modules/@commitlint/format": {
+      "version": "16.2.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/@commitlint/format/-/format-16.2.1.tgz",
+      "integrity": "sha512-Yyio9bdHWmNDRlEJrxHKglamIk3d6hC0NkEUW6Ti6ipEh2g0BAhy8Od6t4vLhdZRa1I2n+gY13foy+tUgk0i1Q==",
+      "license": "MIT",
+      "dependencies": {
+        "@commitlint/types": "^16.2.1",
+        "chalk": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=v12"
+      }
+    },
+    "node_modules/@commitlint/format/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/ansi-styles/-/ansi-styles-4.3.0.tgz",
+      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+      "license": "MIT",
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+      }
+    },
+    "node_modules/@commitlint/format/node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "license": "MIT",
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/chalk?sponsor=1"
+      }
+    },
+    "node_modules/@commitlint/format/node_modules/color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "license": "MIT",
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/@commitlint/format/node_modules/color-name": {
+      "version": "1.1.4",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+      "license": "MIT"
+    },
+    "node_modules/@commitlint/format/node_modules/has-flag": {
+      "version": "4.0.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/has-flag/-/has-flag-4.0.0.tgz",
+      "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/@commitlint/format/node_modules/supports-color": {
+      "version": "7.2.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/supports-color/-/supports-color-7.2.0.tgz",
+      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+      "license": "MIT",
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/@commitlint/is-ignored": {
+      "version": "16.2.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/@commitlint/is-ignored/-/is-ignored-16.2.1.tgz",
+      "integrity": "sha512-exl8HRzTIfb1YvDJp2b2HU5z1BT+9tmgxR2XF0YEzkMiCIuEKh+XLeocPr1VcvAKXv3Cmv5X/OfNRp+i+/HIhQ==",
+      "license": "MIT",
+      "dependencies": {
+        "@commitlint/types": "^16.2.1",
+        "semver": "7.3.5"
+      },
+      "engines": {
+        "node": ">=v12"
+      }
+    },
+    "node_modules/@commitlint/lint": {
+      "version": "16.2.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/@commitlint/lint/-/lint-16.2.1.tgz",
+      "integrity": "sha512-fNINQ3X2ZqsCkNB3Z0Z8ElmhewqrS3gy2wgBTx97BkcjOWiyPAGwDJ752hwrsUnWAVBRztgw826n37xPzxsOgg==",
+      "license": "MIT",
+      "dependencies": {
+        "@commitlint/is-ignored": "^16.2.1",
+        "@commitlint/parse": "^16.2.1",
+        "@commitlint/rules": "^16.2.1",
+        "@commitlint/types": "^16.2.1"
+      },
+      "engines": {
+        "node": ">=v12"
+      }
+    },
+    "node_modules/@commitlint/load": {
+      "version": "16.2.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/@commitlint/load/-/load-16.2.1.tgz",
+      "integrity": "sha512-oSpz0jTyVI/A1AIImxJINTLDOMB8YF7lWGm+Jg5wVWM0r7ucpuhyViVvpSRTgvL0z09oIxlctyFGWUQQpI42uw==",
+      "license": "MIT",
+      "dependencies": {
+        "@commitlint/config-validator": "^16.2.1",
+        "@commitlint/execute-rule": "^16.2.1",
+        "@commitlint/resolve-extends": "^16.2.1",
+        "@commitlint/types": "^16.2.1",
+        "@types/node": ">=12",
+        "chalk": "^4.0.0",
+        "cosmiconfig": "^7.0.0",
+        "cosmiconfig-typescript-loader": "^1.0.0",
+        "lodash": "^4.17.19",
+        "resolve-from": "^5.0.0",
+        "typescript": "^4.4.3"
+      },
+      "engines": {
+        "node": ">=v12"
+      }
+    },
+    "node_modules/@commitlint/load/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/ansi-styles/-/ansi-styles-4.3.0.tgz",
+      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+      "license": "MIT",
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+      }
+    },
+    "node_modules/@commitlint/load/node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "license": "MIT",
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/chalk?sponsor=1"
+      }
+    },
+    "node_modules/@commitlint/load/node_modules/color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "license": "MIT",
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/@commitlint/load/node_modules/color-name": {
+      "version": "1.1.4",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+      "license": "MIT"
+    },
+    "node_modules/@commitlint/load/node_modules/has-flag": {
+      "version": "4.0.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/has-flag/-/has-flag-4.0.0.tgz",
+      "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/@commitlint/load/node_modules/supports-color": {
+      "version": "7.2.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/supports-color/-/supports-color-7.2.0.tgz",
+      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+      "license": "MIT",
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/@commitlint/message": {
+      "version": "16.2.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/@commitlint/message/-/message-16.2.1.tgz",
+      "integrity": "sha512-2eWX/47rftViYg7a3axYDdrgwKv32mxbycBJT6OQY/MJM7SUfYNYYvbMFOQFaA4xIVZt7t2Alyqslbl6blVwWw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=v12"
+      }
+    },
+    "node_modules/@commitlint/parse": {
+      "version": "16.2.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/@commitlint/parse/-/parse-16.2.1.tgz",
+      "integrity": "sha512-2NP2dDQNL378VZYioLrgGVZhWdnJO4nAxQl5LXwYb08nEcN+cgxHN1dJV8OLJ5uxlGJtDeR8UZZ1mnQ1gSAD/g==",
+      "license": "MIT",
+      "dependencies": {
+        "@commitlint/types": "^16.2.1",
+        "conventional-changelog-angular": "^5.0.11",
+        "conventional-commits-parser": "^3.2.2"
+      },
+      "engines": {
+        "node": ">=v12"
+      }
+    },
+    "node_modules/@commitlint/read": {
+      "version": "16.2.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/@commitlint/read/-/read-16.2.1.tgz",
+      "integrity": "sha512-tViXGuaxLTrw2r7PiYMQOFA2fueZxnnt0lkOWqKyxT+n2XdEMGYcI9ID5ndJKXnfPGPppD0w/IItKsIXlZ+alw==",
+      "license": "MIT",
+      "dependencies": {
+        "@commitlint/top-level": "^16.2.1",
+        "@commitlint/types": "^16.2.1",
+        "fs-extra": "^10.0.0",
+        "git-raw-commits": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=v12"
+      }
+    },
+    "node_modules/@commitlint/read/node_modules/fs-extra": {
+      "version": "10.0.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/fs-extra/-/fs-extra-10.0.1.tgz",
+      "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==",
+      "license": "MIT",
+      "dependencies": {
+        "graceful-fs": "^4.2.0",
+        "jsonfile": "^6.0.1",
+        "universalify": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@commitlint/resolve-extends": {
+      "version": "16.2.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/@commitlint/resolve-extends/-/resolve-extends-16.2.1.tgz",
+      "integrity": "sha512-NbbCMPKTFf2J805kwfP9EO+vV+XvnaHRcBy6ud5dF35dxMsvdJqke54W3XazXF1ZAxC4a3LBy4i/GNVBAthsEg==",
+      "license": "MIT",
+      "dependencies": {
+        "@commitlint/config-validator": "^16.2.1",
+        "@commitlint/types": "^16.2.1",
+        "import-fresh": "^3.0.0",
+        "lodash": "^4.17.19",
+        "resolve-from": "^5.0.0",
+        "resolve-global": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=v12"
+      }
+    },
+    "node_modules/@commitlint/rules": {
+      "version": "16.2.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/@commitlint/rules/-/rules-16.2.1.tgz",
+      "integrity": "sha512-ZFezJXQaBBso+BOTre/+1dGCuCzlWVaeLiVRGypI53qVgPMzQqZhkCcrxBFeqB87qeyzr4A4EoG++IvITwwpIw==",
+      "license": "MIT",
+      "dependencies": {
+        "@commitlint/ensure": "^16.2.1",
+        "@commitlint/message": "^16.2.1",
+        "@commitlint/to-lines": "^16.2.1",
+        "@commitlint/types": "^16.2.1",
+        "execa": "^5.0.0"
+      },
+      "engines": {
+        "node": ">=v12"
+      }
+    },
+    "node_modules/@commitlint/rules/node_modules/execa": {
+      "version": "5.1.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/execa/-/execa-5.1.1.tgz",
+      "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+      "license": "MIT",
+      "dependencies": {
+        "cross-spawn": "^7.0.3",
+        "get-stream": "^6.0.0",
+        "human-signals": "^2.1.0",
+        "is-stream": "^2.0.0",
+        "merge-stream": "^2.0.0",
+        "npm-run-path": "^4.0.1",
+        "onetime": "^5.1.2",
+        "signal-exit": "^3.0.3",
+        "strip-final-newline": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sindresorhus/execa?sponsor=1"
+      }
+    },
+    "node_modules/@commitlint/rules/node_modules/get-stream": {
+      "version": "6.0.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/get-stream/-/get-stream-6.0.1.tgz",
+      "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/@commitlint/rules/node_modules/human-signals": {
+      "version": "2.1.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/human-signals/-/human-signals-2.1.0.tgz",
+      "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
+      "license": "Apache-2.0",
+      "engines": {
+        "node": ">=10.17.0"
+      }
+    },
+    "node_modules/@commitlint/to-lines": {
+      "version": "16.2.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/@commitlint/to-lines/-/to-lines-16.2.1.tgz",
+      "integrity": "sha512-9/VjpYj5j1QeY3eiog1zQWY6axsdWAc0AonUUfyZ7B0MVcRI0R56YsHAfzF6uK/g/WwPZaoe4Lb1QCyDVnpVaQ==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=v12"
+      }
+    },
+    "node_modules/@commitlint/top-level": {
+      "version": "16.2.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/@commitlint/top-level/-/top-level-16.2.1.tgz",
+      "integrity": "sha512-lS6GSieHW9y6ePL73ied71Z9bOKyK+Ib9hTkRsB8oZFAyQZcyRwq2w6nIa6Fngir1QW51oKzzaXfJL94qwImyw==",
+      "license": "MIT",
+      "dependencies": {
+        "find-up": "^5.0.0"
+      },
+      "engines": {
+        "node": ">=v12"
+      }
+    },
+    "node_modules/@commitlint/top-level/node_modules/find-up": {
+      "version": "5.0.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/find-up/-/find-up-5.0.0.tgz",
+      "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+      "license": "MIT",
+      "dependencies": {
+        "locate-path": "^6.0.0",
+        "path-exists": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/@commitlint/top-level/node_modules/locate-path": {
+      "version": "6.0.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/locate-path/-/locate-path-6.0.0.tgz",
+      "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+      "license": "MIT",
+      "dependencies": {
+        "p-locate": "^5.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/@commitlint/top-level/node_modules/p-limit": {
+      "version": "3.1.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/p-limit/-/p-limit-3.1.0.tgz",
+      "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+      "license": "MIT",
+      "dependencies": {
+        "yocto-queue": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/@commitlint/top-level/node_modules/p-locate": {
+      "version": "5.0.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/p-locate/-/p-locate-5.0.0.tgz",
+      "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+      "license": "MIT",
+      "dependencies": {
+        "p-limit": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/@commitlint/types": {
+      "version": "16.2.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/@commitlint/types/-/types-16.2.1.tgz",
+      "integrity": "sha512-7/z7pA7BM0i8XvMSBynO7xsB3mVQPUZbVn6zMIlp/a091XJ3qAXRXc+HwLYhiIdzzS5fuxxNIHZMGHVD4HJxdA==",
+      "license": "MIT",
+      "dependencies": {
+        "chalk": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=v12"
+      }
+    },
+    "node_modules/@commitlint/types/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/ansi-styles/-/ansi-styles-4.3.0.tgz",
+      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+      "license": "MIT",
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+      }
+    },
+    "node_modules/@commitlint/types/node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "license": "MIT",
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/chalk?sponsor=1"
+      }
+    },
+    "node_modules/@commitlint/types/node_modules/color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "license": "MIT",
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/@commitlint/types/node_modules/color-name": {
+      "version": "1.1.4",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+      "license": "MIT"
+    },
+    "node_modules/@commitlint/types/node_modules/has-flag": {
+      "version": "4.0.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/has-flag/-/has-flag-4.0.0.tgz",
+      "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/@commitlint/types/node_modules/supports-color": {
+      "version": "7.2.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/supports-color/-/supports-color-7.2.0.tgz",
+      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+      "license": "MIT",
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
     "node_modules/@cospired/i18n-iso-languages": {
       "version": "3.1.1",
       "resolved": "https://nexus.unige.ch/repository/npm-all/@cospired/i18n-iso-languages/-/i18n-iso-languages-3.1.1.tgz",
@@ -3077,7 +3667,6 @@
       "version": "0.8.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz",
       "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==",
-      "dev": true,
       "license": "BSD-3-Clause",
       "engines": {
         "node": ">= 12"
@@ -3087,7 +3676,6 @@
       "version": "0.7.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz",
       "integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==",
-      "dev": true,
       "license": "MIT",
       "dependencies": {
         "@cspotcode/source-map-consumer": "0.8.0"
@@ -3415,6 +4003,16 @@
       "dev": true,
       "license": "BSD-3-Clause"
     },
+    "node_modules/@hutson/parse-repository-url": {
+      "version": "3.0.2",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz",
+      "integrity": "sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==",
+      "dev": true,
+      "license": "Apache-2.0",
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
     "node_modules/@istanbuljs/load-nyc-config": {
       "version": "1.1.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz",
@@ -4649,28 +5247,24 @@
       "version": "1.0.8",
       "resolved": "https://nexus.unige.ch/repository/npm-all/@tsconfig/node10/-/node10-1.0.8.tgz",
       "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==",
-      "dev": true,
       "license": "MIT"
     },
     "node_modules/@tsconfig/node12": {
       "version": "1.0.9",
       "resolved": "https://nexus.unige.ch/repository/npm-all/@tsconfig/node12/-/node12-1.0.9.tgz",
       "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==",
-      "dev": true,
       "license": "MIT"
     },
     "node_modules/@tsconfig/node14": {
       "version": "1.0.1",
       "resolved": "https://nexus.unige.ch/repository/npm-all/@tsconfig/node14/-/node14-1.0.1.tgz",
       "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==",
-      "dev": true,
       "license": "MIT"
     },
     "node_modules/@tsconfig/node16": {
       "version": "1.0.2",
       "resolved": "https://nexus.unige.ch/repository/npm-all/@tsconfig/node16/-/node16-1.0.2.tgz",
       "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==",
-      "dev": true,
       "license": "MIT"
     },
     "node_modules/@types/body-parser": {
@@ -4838,18 +5432,28 @@
       "dev": true,
       "license": "MIT"
     },
+    "node_modules/@types/minimist": {
+      "version": "1.2.2",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/@types/minimist/-/minimist-1.2.2.tgz",
+      "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==",
+      "license": "MIT"
+    },
     "node_modules/@types/node": {
       "version": "17.0.14",
       "resolved": "https://nexus.unige.ch/repository/npm-all/@types/node/-/node-17.0.14.tgz",
       "integrity": "sha512-SbjLmERksKOGzWzPNuW7fJM7fk3YXVTFiZWB/Hs99gwhk+/dnrQRPBQjPW9aO+fi1tAffi9PrwFvsmOKmDTyng==",
-      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/@types/normalize-package-data": {
+      "version": "2.4.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz",
+      "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==",
       "license": "MIT"
     },
     "node_modules/@types/parse-json": {
       "version": "4.0.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/@types/parse-json/-/parse-json-4.0.0.tgz",
       "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==",
-      "dev": true,
       "license": "MIT"
     },
     "node_modules/@types/q": {
@@ -5607,7 +6211,6 @@
       "version": "8.7.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/acorn/-/acorn-8.7.0.tgz",
       "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==",
-      "dev": true,
       "license": "MIT",
       "bin": {
         "acorn": "bin/acorn"
@@ -5640,12 +6243,18 @@
       "version": "8.2.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/acorn-walk/-/acorn-walk-8.2.0.tgz",
       "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==",
-      "dev": true,
       "license": "MIT",
       "engines": {
         "node": ">=0.4.0"
       }
     },
+    "node_modules/add-stream": {
+      "version": "1.0.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/add-stream/-/add-stream-1.0.0.tgz",
+      "integrity": "sha1-anmQQ3ynNtXhKI25K9MmbV9csqo=",
+      "dev": true,
+      "license": "MIT"
+    },
     "node_modules/adjust-sourcemap-loader": {
       "version": "4.0.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz",
@@ -5980,7 +6589,6 @@
       "version": "4.1.3",
       "resolved": "https://nexus.unige.ch/repository/npm-all/arg/-/arg-4.1.3.tgz",
       "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
-      "dev": true,
       "license": "MIT"
     },
     "node_modules/argparse": {
@@ -6064,6 +6672,12 @@
       "dev": true,
       "license": "MIT"
     },
+    "node_modules/array-ify": {
+      "version": "1.0.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/array-ify/-/array-ify-1.0.0.tgz",
+      "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=",
+      "license": "MIT"
+    },
     "node_modules/array-includes": {
       "version": "3.1.4",
       "resolved": "https://nexus.unige.ch/repository/npm-all/array-includes/-/array-includes-3.1.4.tgz",
@@ -6126,7 +6740,6 @@
       "version": "1.0.1",
       "resolved": "https://nexus.unige.ch/repository/npm-all/arrify/-/arrify-1.0.1.tgz",
       "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
-      "dev": true,
       "license": "MIT",
       "engines": {
         "node": ">=0.10.0"
@@ -6985,7 +7598,6 @@
       "version": "3.1.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/callsites/-/callsites-3.1.0.tgz",
       "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
-      "dev": true,
       "license": "MIT",
       "engines": {
         "node": ">=6"
@@ -7005,12 +7617,28 @@
       "version": "5.3.1",
       "resolved": "https://nexus.unige.ch/repository/npm-all/camelcase/-/camelcase-5.3.1.tgz",
       "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
-      "dev": true,
       "license": "MIT",
       "engines": {
         "node": ">=6"
       }
     },
+    "node_modules/camelcase-keys": {
+      "version": "6.2.2",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/camelcase-keys/-/camelcase-keys-6.2.2.tgz",
+      "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==",
+      "license": "MIT",
+      "dependencies": {
+        "camelcase": "^5.3.1",
+        "map-obj": "^4.0.0",
+        "quick-lru": "^4.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
     "node_modules/caniuse-lite": {
       "version": "1.0.30001305",
       "resolved": "https://nexus.unige.ch/repository/npm-all/caniuse-lite/-/caniuse-lite-1.0.30001305.tgz",
@@ -7297,7 +7925,6 @@
       "version": "7.0.4",
       "resolved": "https://nexus.unige.ch/repository/npm-all/cliui/-/cliui-7.0.4.tgz",
       "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
-      "dev": true,
       "license": "ISC",
       "dependencies": {
         "string-width": "^4.2.0",
@@ -7309,7 +7936,6 @@
       "version": "4.3.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/ansi-styles/-/ansi-styles-4.3.0.tgz",
       "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-      "dev": true,
       "license": "MIT",
       "dependencies": {
         "color-convert": "^2.0.1"
@@ -7325,7 +7951,6 @@
       "version": "2.0.1",
       "resolved": "https://nexus.unige.ch/repository/npm-all/color-convert/-/color-convert-2.0.1.tgz",
       "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-      "dev": true,
       "license": "MIT",
       "dependencies": {
         "color-name": "~1.1.4"
@@ -7338,21 +7963,18 @@
       "version": "1.1.4",
       "resolved": "https://nexus.unige.ch/repository/npm-all/color-name/-/color-name-1.1.4.tgz",
       "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
-      "dev": true,
       "license": "MIT"
     },
     "node_modules/cliui/node_modules/emoji-regex": {
       "version": "8.0.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/emoji-regex/-/emoji-regex-8.0.0.tgz",
       "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
-      "dev": true,
       "license": "MIT"
     },
     "node_modules/cliui/node_modules/string-width": {
       "version": "4.2.3",
       "resolved": "https://nexus.unige.ch/repository/npm-all/string-width/-/string-width-4.2.3.tgz",
       "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
-      "dev": true,
       "license": "MIT",
       "dependencies": {
         "emoji-regex": "^8.0.0",
@@ -7367,7 +7989,6 @@
       "version": "7.0.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
       "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
-      "dev": true,
       "license": "MIT",
       "dependencies": {
         "ansi-styles": "^4.0.0",
@@ -7721,6 +8342,16 @@
       "dev": true,
       "license": "MIT"
     },
+    "node_modules/compare-func": {
+      "version": "2.0.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/compare-func/-/compare-func-2.0.0.tgz",
+      "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==",
+      "license": "MIT",
+      "dependencies": {
+        "array-ify": "^1.0.0",
+        "dot-prop": "^5.1.0"
+      }
+    },
     "node_modules/compare-versions": {
       "version": "3.6.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/compare-versions/-/compare-versions-3.6.0.tgz",
@@ -7800,6 +8431,22 @@
       "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
       "license": "MIT"
     },
+    "node_modules/concat-stream": {
+      "version": "2.0.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/concat-stream/-/concat-stream-2.0.0.tgz",
+      "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==",
+      "dev": true,
+      "engines": [
+        "node >= 6.0"
+      ],
+      "license": "MIT",
+      "dependencies": {
+        "buffer-from": "^1.0.0",
+        "inherits": "^2.0.3",
+        "readable-stream": "^3.0.2",
+        "typedarray": "^0.0.6"
+      }
+    },
     "node_modules/concurrently": {
       "version": "7.0.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/concurrently/-/concurrently-7.0.0.tgz",
@@ -8111,6 +8758,401 @@
         "node": ">= 0.6"
       }
     },
+    "node_modules/conventional-changelog": {
+      "version": "3.1.24",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/conventional-changelog/-/conventional-changelog-3.1.24.tgz",
+      "integrity": "sha512-ed6k8PO00UVvhExYohroVPXcOJ/K1N0/drJHx/faTH37OIZthlecuLIRX/T6uOp682CAoVoFpu+sSEaeuH6Asg==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "conventional-changelog-angular": "^5.0.12",
+        "conventional-changelog-atom": "^2.0.8",
+        "conventional-changelog-codemirror": "^2.0.8",
+        "conventional-changelog-conventionalcommits": "^4.5.0",
+        "conventional-changelog-core": "^4.2.1",
+        "conventional-changelog-ember": "^2.0.9",
+        "conventional-changelog-eslint": "^3.0.9",
+        "conventional-changelog-express": "^2.0.6",
+        "conventional-changelog-jquery": "^3.0.11",
+        "conventional-changelog-jshint": "^2.0.9",
+        "conventional-changelog-preset-loader": "^2.3.4"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/conventional-changelog-angular": {
+      "version": "5.0.13",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz",
+      "integrity": "sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==",
+      "license": "ISC",
+      "dependencies": {
+        "compare-func": "^2.0.0",
+        "q": "^1.5.1"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/conventional-changelog-angular/node_modules/q": {
+      "version": "1.5.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/q/-/q-1.5.1.tgz",
+      "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.6.0",
+        "teleport": ">=0.2.0"
+      }
+    },
+    "node_modules/conventional-changelog-atom": {
+      "version": "2.0.8",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/conventional-changelog-atom/-/conventional-changelog-atom-2.0.8.tgz",
+      "integrity": "sha512-xo6v46icsFTK3bb7dY/8m2qvc8sZemRgdqLb/bjpBsH2UyOS8rKNTgcb5025Hri6IpANPApbXMg15QLb1LJpBw==",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "q": "^1.5.1"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/conventional-changelog-atom/node_modules/q": {
+      "version": "1.5.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/q/-/q-1.5.1.tgz",
+      "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.6.0",
+        "teleport": ">=0.2.0"
+      }
+    },
+    "node_modules/conventional-changelog-codemirror": {
+      "version": "2.0.8",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/conventional-changelog-codemirror/-/conventional-changelog-codemirror-2.0.8.tgz",
+      "integrity": "sha512-z5DAsn3uj1Vfp7po3gpt2Boc+Bdwmw2++ZHa5Ak9k0UKsYAO5mH1UBTN0qSCuJZREIhX6WU4E1p3IW2oRCNzQw==",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "q": "^1.5.1"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/conventional-changelog-codemirror/node_modules/q": {
+      "version": "1.5.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/q/-/q-1.5.1.tgz",
+      "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.6.0",
+        "teleport": ">=0.2.0"
+      }
+    },
+    "node_modules/conventional-changelog-config-spec": {
+      "version": "2.1.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/conventional-changelog-config-spec/-/conventional-changelog-config-spec-2.1.0.tgz",
+      "integrity": "sha512-IpVePh16EbbB02V+UA+HQnnPIohgXvJRxHcS5+Uwk4AT5LjzCZJm5sp/yqs5C6KZJ1jMsV4paEV13BN1pvDuxQ==",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/conventional-changelog-conventionalcommits": {
+      "version": "4.6.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.6.1.tgz",
+      "integrity": "sha512-lzWJpPZhbM1R0PIzkwzGBCnAkH5RKJzJfFQZcl/D+2lsJxAwGnDKBqn/F4C1RD31GJNn8NuKWQzAZDAVXPp2Mw==",
+      "license": "ISC",
+      "dependencies": {
+        "compare-func": "^2.0.0",
+        "lodash": "^4.17.15",
+        "q": "^1.5.1"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/conventional-changelog-conventionalcommits/node_modules/q": {
+      "version": "1.5.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/q/-/q-1.5.1.tgz",
+      "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.6.0",
+        "teleport": ">=0.2.0"
+      }
+    },
+    "node_modules/conventional-changelog-core": {
+      "version": "4.2.4",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz",
+      "integrity": "sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "add-stream": "^1.0.0",
+        "conventional-changelog-writer": "^5.0.0",
+        "conventional-commits-parser": "^3.2.0",
+        "dateformat": "^3.0.0",
+        "get-pkg-repo": "^4.0.0",
+        "git-raw-commits": "^2.0.8",
+        "git-remote-origin-url": "^2.0.0",
+        "git-semver-tags": "^4.1.1",
+        "lodash": "^4.17.15",
+        "normalize-package-data": "^3.0.0",
+        "q": "^1.5.1",
+        "read-pkg": "^3.0.0",
+        "read-pkg-up": "^3.0.0",
+        "through2": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/conventional-changelog-core/node_modules/q": {
+      "version": "1.5.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/q/-/q-1.5.1.tgz",
+      "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.6.0",
+        "teleport": ">=0.2.0"
+      }
+    },
+    "node_modules/conventional-changelog-ember": {
+      "version": "2.0.9",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/conventional-changelog-ember/-/conventional-changelog-ember-2.0.9.tgz",
+      "integrity": "sha512-ulzIReoZEvZCBDhcNYfDIsLTHzYHc7awh+eI44ZtV5cx6LVxLlVtEmcO+2/kGIHGtw+qVabJYjdI5cJOQgXh1A==",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "q": "^1.5.1"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/conventional-changelog-ember/node_modules/q": {
+      "version": "1.5.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/q/-/q-1.5.1.tgz",
+      "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.6.0",
+        "teleport": ">=0.2.0"
+      }
+    },
+    "node_modules/conventional-changelog-eslint": {
+      "version": "3.0.9",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/conventional-changelog-eslint/-/conventional-changelog-eslint-3.0.9.tgz",
+      "integrity": "sha512-6NpUCMgU8qmWmyAMSZO5NrRd7rTgErjrm4VASam2u5jrZS0n38V7Y9CzTtLT2qwz5xEChDR4BduoWIr8TfwvXA==",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "q": "^1.5.1"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/conventional-changelog-eslint/node_modules/q": {
+      "version": "1.5.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/q/-/q-1.5.1.tgz",
+      "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.6.0",
+        "teleport": ">=0.2.0"
+      }
+    },
+    "node_modules/conventional-changelog-express": {
+      "version": "2.0.6",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/conventional-changelog-express/-/conventional-changelog-express-2.0.6.tgz",
+      "integrity": "sha512-SDez2f3iVJw6V563O3pRtNwXtQaSmEfTCaTBPCqn0oG0mfkq0rX4hHBq5P7De2MncoRixrALj3u3oQsNK+Q0pQ==",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "q": "^1.5.1"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/conventional-changelog-express/node_modules/q": {
+      "version": "1.5.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/q/-/q-1.5.1.tgz",
+      "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.6.0",
+        "teleport": ">=0.2.0"
+      }
+    },
+    "node_modules/conventional-changelog-jquery": {
+      "version": "3.0.11",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/conventional-changelog-jquery/-/conventional-changelog-jquery-3.0.11.tgz",
+      "integrity": "sha512-x8AWz5/Td55F7+o/9LQ6cQIPwrCjfJQ5Zmfqi8thwUEKHstEn4kTIofXub7plf1xvFA2TqhZlq7fy5OmV6BOMw==",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "q": "^1.5.1"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/conventional-changelog-jquery/node_modules/q": {
+      "version": "1.5.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/q/-/q-1.5.1.tgz",
+      "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.6.0",
+        "teleport": ">=0.2.0"
+      }
+    },
+    "node_modules/conventional-changelog-jshint": {
+      "version": "2.0.9",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/conventional-changelog-jshint/-/conventional-changelog-jshint-2.0.9.tgz",
+      "integrity": "sha512-wMLdaIzq6TNnMHMy31hql02OEQ8nCQfExw1SE0hYL5KvU+JCTuPaDO+7JiogGT2gJAxiUGATdtYYfh+nT+6riA==",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "compare-func": "^2.0.0",
+        "q": "^1.5.1"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/conventional-changelog-jshint/node_modules/q": {
+      "version": "1.5.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/q/-/q-1.5.1.tgz",
+      "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.6.0",
+        "teleport": ">=0.2.0"
+      }
+    },
+    "node_modules/conventional-changelog-preset-loader": {
+      "version": "2.3.4",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz",
+      "integrity": "sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/conventional-changelog-writer": {
+      "version": "5.0.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz",
+      "integrity": "sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "conventional-commits-filter": "^2.0.7",
+        "dateformat": "^3.0.0",
+        "handlebars": "^4.7.7",
+        "json-stringify-safe": "^5.0.1",
+        "lodash": "^4.17.15",
+        "meow": "^8.0.0",
+        "semver": "^6.0.0",
+        "split": "^1.0.0",
+        "through2": "^4.0.0"
+      },
+      "bin": {
+        "conventional-changelog-writer": "cli.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/conventional-changelog-writer/node_modules/semver": {
+      "version": "6.3.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/semver/-/semver-6.3.0.tgz",
+      "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+      "dev": true,
+      "license": "ISC",
+      "bin": {
+        "semver": "bin/semver.js"
+      }
+    },
+    "node_modules/conventional-commits-filter": {
+      "version": "2.0.7",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz",
+      "integrity": "sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "lodash.ismatch": "^4.4.0",
+        "modify-values": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/conventional-commits-parser": {
+      "version": "3.2.4",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz",
+      "integrity": "sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==",
+      "license": "MIT",
+      "dependencies": {
+        "is-text-path": "^1.0.1",
+        "JSONStream": "^1.0.4",
+        "lodash": "^4.17.15",
+        "meow": "^8.0.0",
+        "split2": "^3.0.0",
+        "through2": "^4.0.0"
+      },
+      "bin": {
+        "conventional-commits-parser": "cli.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/conventional-recommended-bump": {
+      "version": "6.1.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/conventional-recommended-bump/-/conventional-recommended-bump-6.1.0.tgz",
+      "integrity": "sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "concat-stream": "^2.0.0",
+        "conventional-changelog-preset-loader": "^2.3.4",
+        "conventional-commits-filter": "^2.0.7",
+        "conventional-commits-parser": "^3.2.0",
+        "git-raw-commits": "^2.0.8",
+        "git-semver-tags": "^4.1.1",
+        "meow": "^8.0.0",
+        "q": "^1.5.1"
+      },
+      "bin": {
+        "conventional-recommended-bump": "cli.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/conventional-recommended-bump/node_modules/q": {
+      "version": "1.5.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/q/-/q-1.5.1.tgz",
+      "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.6.0",
+        "teleport": ">=0.2.0"
+      }
+    },
     "node_modules/convert-source-map": {
       "version": "1.8.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/convert-source-map/-/convert-source-map-1.8.0.tgz",
@@ -8359,7 +9401,6 @@
       "version": "7.0.1",
       "resolved": "https://nexus.unige.ch/repository/npm-all/cosmiconfig/-/cosmiconfig-7.0.1.tgz",
       "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==",
-      "dev": true,
       "license": "MIT",
       "dependencies": {
         "@types/parse-json": "^4.0.0",
@@ -8372,6 +9413,68 @@
         "node": ">=10"
       }
     },
+    "node_modules/cosmiconfig-typescript-loader": {
+      "version": "1.0.6",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-1.0.6.tgz",
+      "integrity": "sha512-2nEotziYJWtNtoTjKbchj9QrdTT6DBxCvqjNKoDKARw+e2yZmTQCa07uRrykLIZuvSgp69YXLH89UHc0WhdMfQ==",
+      "license": "MIT",
+      "dependencies": {
+        "cosmiconfig": "^7",
+        "ts-node": "^10.6.0"
+      },
+      "engines": {
+        "node": ">=12",
+        "npm": ">=6"
+      },
+      "peerDependencies": {
+        "@types/node": "*",
+        "cosmiconfig": ">=7",
+        "typescript": ">=3"
+      }
+    },
+    "node_modules/cosmiconfig-typescript-loader/node_modules/ts-node": {
+      "version": "10.7.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/ts-node/-/ts-node-10.7.0.tgz",
+      "integrity": "sha512-TbIGS4xgJoX2i3do417KSaep1uRAW/Lu+WAL2doDHC0D6ummjirVOXU5/7aiZotbQ5p1Zp9tP7U6cYhA0O7M8A==",
+      "license": "MIT",
+      "dependencies": {
+        "@cspotcode/source-map-support": "0.7.0",
+        "@tsconfig/node10": "^1.0.7",
+        "@tsconfig/node12": "^1.0.7",
+        "@tsconfig/node14": "^1.0.0",
+        "@tsconfig/node16": "^1.0.2",
+        "acorn": "^8.4.1",
+        "acorn-walk": "^8.1.1",
+        "arg": "^4.1.0",
+        "create-require": "^1.1.0",
+        "diff": "^4.0.1",
+        "make-error": "^1.1.1",
+        "v8-compile-cache-lib": "^3.0.0",
+        "yn": "3.1.1"
+      },
+      "bin": {
+        "ts-node": "dist/bin.js",
+        "ts-node-cwd": "dist/bin-cwd.js",
+        "ts-node-esm": "dist/bin-esm.js",
+        "ts-node-script": "dist/bin-script.js",
+        "ts-node-transpile-only": "dist/bin-transpile.js",
+        "ts-script": "dist/bin-script-deprecated.js"
+      },
+      "peerDependencies": {
+        "@swc/core": ">=1.2.50",
+        "@swc/wasm": ">=1.2.50",
+        "@types/node": "*",
+        "typescript": ">=2.7"
+      },
+      "peerDependenciesMeta": {
+        "@swc/core": {
+          "optional": true
+        },
+        "@swc/wasm": {
+          "optional": true
+        }
+      }
+    },
     "node_modules/create-mixin": {
       "version": "3.0.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/create-mixin/-/create-mixin-3.0.0.tgz",
@@ -8386,7 +9489,6 @@
       "version": "1.1.1",
       "resolved": "https://nexus.unige.ch/repository/npm-all/create-require/-/create-require-1.1.1.tgz",
       "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
-      "dev": true,
       "license": "MIT"
     },
     "node_modules/critters": {
@@ -8491,7 +9593,6 @@
       "version": "7.0.3",
       "resolved": "https://nexus.unige.ch/repository/npm-all/cross-spawn/-/cross-spawn-7.0.3.tgz",
       "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
-      "dev": true,
       "license": "MIT",
       "dependencies": {
         "path-key": "^3.1.0",
@@ -8887,6 +9988,15 @@
       "dev": true,
       "license": "BSD-2-Clause"
     },
+    "node_modules/dargs": {
+      "version": "7.0.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/dargs/-/dargs-7.0.0.tgz",
+      "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
     "node_modules/dashdash": {
       "version": "1.14.1",
       "resolved": "https://nexus.unige.ch/repository/npm-all/dashdash/-/dashdash-1.14.1.tgz",
@@ -8936,6 +10046,16 @@
         "node": ">=4.0"
       }
     },
+    "node_modules/dateformat": {
+      "version": "3.0.3",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/dateformat/-/dateformat-3.0.3.tgz",
+      "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": "*"
+      }
+    },
     "node_modules/dayjs": {
       "version": "1.10.7",
       "resolved": "https://nexus.unige.ch/repository/npm-all/dayjs/-/dayjs-1.10.7.tgz",
@@ -8975,7 +10095,28 @@
       "version": "1.2.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/decamelize/-/decamelize-1.2.0.tgz",
       "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
-      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/decamelize-keys": {
+      "version": "1.1.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/decamelize-keys/-/decamelize-keys-1.1.0.tgz",
+      "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=",
+      "license": "MIT",
+      "dependencies": {
+        "decamelize": "^1.1.0",
+        "map-obj": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/decamelize-keys/node_modules/map-obj": {
+      "version": "1.0.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/map-obj/-/map-obj-1.0.1.tgz",
+      "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
       "license": "MIT",
       "engines": {
         "node": ">=0.10.0"
@@ -9225,6 +10366,26 @@
         "npm": "1.2.8000 || >= 1.4.16"
       }
     },
+    "node_modules/detect-indent": {
+      "version": "6.1.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/detect-indent/-/detect-indent-6.1.0.tgz",
+      "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/detect-newline": {
+      "version": "3.1.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/detect-newline/-/detect-newline-3.1.0.tgz",
+      "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
     "node_modules/detect-node": {
       "version": "2.1.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/detect-node/-/detect-node-2.1.0.tgz",
@@ -9254,7 +10415,6 @@
       "version": "4.0.2",
       "resolved": "https://nexus.unige.ch/repository/npm-all/diff/-/diff-4.0.2.tgz",
       "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
-      "dev": true,
       "license": "BSD-3-Clause",
       "engines": {
         "node": ">=0.3.1"
@@ -9436,6 +10596,82 @@
       "dev": true,
       "license": "MIT"
     },
+    "node_modules/dot-prop": {
+      "version": "5.3.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/dot-prop/-/dot-prop-5.3.0.tgz",
+      "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==",
+      "license": "MIT",
+      "dependencies": {
+        "is-obj": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/dotgitignore": {
+      "version": "2.1.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/dotgitignore/-/dotgitignore-2.1.0.tgz",
+      "integrity": "sha512-sCm11ak2oY6DglEPpCB8TixLjWAxd3kJTs6UIcSasNYxXdFPV+YKlye92c8H4kKFqV5qYMIh7d+cYecEg0dIkA==",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "find-up": "^3.0.0",
+        "minimatch": "^3.0.4"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/dotgitignore/node_modules/find-up": {
+      "version": "3.0.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/find-up/-/find-up-3.0.0.tgz",
+      "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "locate-path": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/dotgitignore/node_modules/locate-path": {
+      "version": "3.0.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/locate-path/-/locate-path-3.0.0.tgz",
+      "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "p-locate": "^3.0.0",
+        "path-exists": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/dotgitignore/node_modules/p-locate": {
+      "version": "3.0.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/p-locate/-/p-locate-3.0.0.tgz",
+      "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "p-limit": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/dotgitignore/node_modules/path-exists": {
+      "version": "3.0.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/path-exists/-/path-exists-3.0.0.tgz",
+      "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
     "node_modules/eastasianwidth": {
       "version": "0.2.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
@@ -9655,7 +10891,6 @@
       "version": "1.3.2",
       "resolved": "https://nexus.unige.ch/repository/npm-all/error-ex/-/error-ex-1.3.2.tgz",
       "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
-      "dev": true,
       "license": "MIT",
       "dependencies": {
         "is-arrayish": "^0.2.1"
@@ -10101,7 +11336,6 @@
       "version": "3.1.1",
       "resolved": "https://nexus.unige.ch/repository/npm-all/escalade/-/escalade-3.1.1.tgz",
       "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
-      "dev": true,
       "license": "MIT",
       "engines": {
         "node": ">=6"
@@ -11332,7 +12566,6 @@
       "version": "4.1.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/find-up/-/find-up-4.1.0.tgz",
       "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
-      "dev": true,
       "license": "MIT",
       "dependencies": {
         "locate-path": "^5.0.0",
@@ -11462,6 +12695,19 @@
         "node": ">= 0.6"
       }
     },
+    "node_modules/fs-access": {
+      "version": "1.0.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/fs-access/-/fs-access-1.0.1.tgz",
+      "integrity": "sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "null-check": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
     "node_modules/fs-extra": {
       "version": "9.1.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/fs-extra/-/fs-extra-9.1.0.tgz",
@@ -11523,7 +12769,6 @@
       "version": "1.1.1",
       "resolved": "https://nexus.unige.ch/repository/npm-all/function-bind/-/function-bind-1.1.1.tgz",
       "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
-      "dev": true,
       "license": "MIT"
     },
     "node_modules/functional-red-black-tree": {
@@ -11590,7 +12835,6 @@
       "version": "2.0.5",
       "resolved": "https://nexus.unige.ch/repository/npm-all/get-caller-file/-/get-caller-file-2.0.5.tgz",
       "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
-      "dev": true,
       "license": "ISC",
       "engines": {
         "node": "6.* || 8.* || >= 10.*"
@@ -11621,6 +12865,113 @@
         "node": ">=8.0.0"
       }
     },
+    "node_modules/get-pkg-repo": {
+      "version": "4.2.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz",
+      "integrity": "sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@hutson/parse-repository-url": "^3.0.0",
+        "hosted-git-info": "^4.0.0",
+        "through2": "^2.0.0",
+        "yargs": "^16.2.0"
+      },
+      "bin": {
+        "get-pkg-repo": "src/cli.js"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/get-pkg-repo/node_modules/emoji-regex": {
+      "version": "8.0.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/emoji-regex/-/emoji-regex-8.0.0.tgz",
+      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/get-pkg-repo/node_modules/readable-stream": {
+      "version": "2.3.7",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/readable-stream/-/readable-stream-2.3.7.tgz",
+      "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "core-util-is": "~1.0.0",
+        "inherits": "~2.0.3",
+        "isarray": "~1.0.0",
+        "process-nextick-args": "~2.0.0",
+        "safe-buffer": "~5.1.1",
+        "string_decoder": "~1.1.1",
+        "util-deprecate": "~1.0.1"
+      }
+    },
+    "node_modules/get-pkg-repo/node_modules/string_decoder": {
+      "version": "1.1.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/string_decoder/-/string_decoder-1.1.1.tgz",
+      "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "safe-buffer": "~5.1.0"
+      }
+    },
+    "node_modules/get-pkg-repo/node_modules/string-width": {
+      "version": "4.2.3",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/string-width/-/string-width-4.2.3.tgz",
+      "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "emoji-regex": "^8.0.0",
+        "is-fullwidth-code-point": "^3.0.0",
+        "strip-ansi": "^6.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/get-pkg-repo/node_modules/through2": {
+      "version": "2.0.5",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/through2/-/through2-2.0.5.tgz",
+      "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "readable-stream": "~2.3.6",
+        "xtend": "~4.0.1"
+      }
+    },
+    "node_modules/get-pkg-repo/node_modules/yargs": {
+      "version": "16.2.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/yargs/-/yargs-16.2.0.tgz",
+      "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "cliui": "^7.0.2",
+        "escalade": "^3.1.1",
+        "get-caller-file": "^2.0.5",
+        "require-directory": "^2.1.1",
+        "string-width": "^4.2.0",
+        "y18n": "^5.0.5",
+        "yargs-parser": "^20.2.2"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/get-pkg-repo/node_modules/yargs-parser": {
+      "version": "20.2.9",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/yargs-parser/-/yargs-parser-20.2.9.tgz",
+      "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
+      "dev": true,
+      "license": "ISC",
+      "engines": {
+        "node": ">=10"
+      }
+    },
     "node_modules/get-stream": {
       "version": "5.2.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/get-stream/-/get-stream-5.2.0.tgz",
@@ -11708,6 +13059,83 @@
       ],
       "license": "MIT"
     },
+    "node_modules/git-raw-commits": {
+      "version": "2.0.11",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/git-raw-commits/-/git-raw-commits-2.0.11.tgz",
+      "integrity": "sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==",
+      "license": "MIT",
+      "dependencies": {
+        "dargs": "^7.0.0",
+        "lodash": "^4.17.15",
+        "meow": "^8.0.0",
+        "split2": "^3.0.0",
+        "through2": "^4.0.0"
+      },
+      "bin": {
+        "git-raw-commits": "cli.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/git-remote-origin-url": {
+      "version": "2.0.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz",
+      "integrity": "sha1-UoJlna4hBxRaERJhEq0yFuxfpl8=",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "gitconfiglocal": "^1.0.0",
+        "pify": "^2.3.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/git-semver-tags": {
+      "version": "4.1.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/git-semver-tags/-/git-semver-tags-4.1.1.tgz",
+      "integrity": "sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "meow": "^8.0.0",
+        "semver": "^6.0.0"
+      },
+      "bin": {
+        "git-semver-tags": "cli.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/git-semver-tags/node_modules/semver": {
+      "version": "6.3.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/semver/-/semver-6.3.0.tgz",
+      "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+      "dev": true,
+      "license": "ISC",
+      "bin": {
+        "semver": "bin/semver.js"
+      }
+    },
+    "node_modules/gitconfiglocal": {
+      "version": "1.0.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz",
+      "integrity": "sha1-QdBF84UaXqiPA/JMocYXgRRGS5s=",
+      "dev": true,
+      "license": "BSD",
+      "dependencies": {
+        "ini": "^1.3.2"
+      }
+    },
+    "node_modules/gitconfiglocal/node_modules/ini": {
+      "version": "1.3.8",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/ini/-/ini-1.3.8.tgz",
+      "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
+      "dev": true,
+      "license": "ISC"
+    },
     "node_modules/glob": {
       "version": "7.2.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/glob/-/glob-7.2.0.tgz",
@@ -11828,6 +13256,38 @@
       "dev": true,
       "license": "MIT"
     },
+    "node_modules/handlebars": {
+      "version": "4.7.7",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/handlebars/-/handlebars-4.7.7.tgz",
+      "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "minimist": "^1.2.5",
+        "neo-async": "^2.6.0",
+        "source-map": "^0.6.1",
+        "wordwrap": "^1.0.0"
+      },
+      "bin": {
+        "handlebars": "bin/handlebars"
+      },
+      "engines": {
+        "node": ">=0.4.7"
+      },
+      "optionalDependencies": {
+        "uglify-js": "^3.1.4"
+      }
+    },
+    "node_modules/handlebars/node_modules/source-map": {
+      "version": "0.6.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/source-map/-/source-map-0.6.1.tgz",
+      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+      "dev": true,
+      "license": "BSD-3-Clause",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
     "node_modules/har-schema": {
       "version": "2.0.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/har-schema/-/har-schema-2.0.0.tgz",
@@ -11877,11 +13337,19 @@
       "dev": true,
       "license": "MIT"
     },
+    "node_modules/hard-rejection": {
+      "version": "2.1.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/hard-rejection/-/hard-rejection-2.1.0.tgz",
+      "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
     "node_modules/has": {
       "version": "1.0.3",
       "resolved": "https://nexus.unige.ch/repository/npm-all/has/-/has-1.0.3.tgz",
       "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
-      "dev": true,
       "license": "MIT",
       "dependencies": {
         "function-bind": "^1.1.1"
@@ -12022,7 +13490,6 @@
       "version": "4.1.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/hosted-git-info/-/hosted-git-info-4.1.0.tgz",
       "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==",
-      "dev": true,
       "license": "ISC",
       "dependencies": {
         "lru-cache": "^6.0.0"
@@ -12235,6 +13702,22 @@
         "ms": "^2.0.0"
       }
     },
+    "node_modules/husky": {
+      "version": "7.0.4",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/husky/-/husky-7.0.4.tgz",
+      "integrity": "sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==",
+      "dev": true,
+      "license": "MIT",
+      "bin": {
+        "husky": "lib/bin.js"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/typicode"
+      }
+    },
     "node_modules/iconv-lite": {
       "version": "0.6.3",
       "resolved": "https://nexus.unige.ch/repository/npm-all/iconv-lite/-/iconv-lite-0.6.3.tgz",
@@ -12335,7 +13818,6 @@
       "version": "3.3.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/import-fresh/-/import-fresh-3.3.0.tgz",
       "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
-      "dev": true,
       "license": "MIT",
       "dependencies": {
         "parent-module": "^1.0.0",
@@ -12352,7 +13834,6 @@
       "version": "4.0.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/resolve-from/-/resolve-from-4.0.0.tgz",
       "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
-      "dev": true,
       "license": "MIT",
       "engines": {
         "node": ">=4"
@@ -12372,7 +13853,6 @@
       "version": "4.0.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/indent-string/-/indent-string-4.0.0.tgz",
       "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
-      "dev": true,
       "license": "MIT",
       "engines": {
         "node": ">=8"
@@ -12586,7 +14066,6 @@
       "version": "0.2.1",
       "resolved": "https://nexus.unige.ch/repository/npm-all/is-arrayish/-/is-arrayish-0.2.1.tgz",
       "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
-      "dev": true,
       "license": "MIT"
     },
     "node_modules/is-bigint": {
@@ -12662,7 +14141,6 @@
       "version": "2.8.1",
       "resolved": "https://nexus.unige.ch/repository/npm-all/is-core-module/-/is-core-module-2.8.1.tgz",
       "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==",
-      "dev": true,
       "license": "MIT",
       "dependencies": {
         "has": "^1.0.3"
@@ -12726,7 +14204,6 @@
       "version": "3.0.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
       "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
-      "dev": true,
       "license": "MIT",
       "engines": {
         "node": ">=8"
@@ -12838,6 +14315,15 @@
         "url": "https://github.com/sponsors/ljharb"
       }
     },
+    "node_modules/is-obj": {
+      "version": "2.0.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/is-obj/-/is-obj-2.0.0.tgz",
+      "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
     "node_modules/is-path-cwd": {
       "version": "1.0.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/is-path-cwd/-/is-path-cwd-1.0.0.tgz",
@@ -12941,7 +14427,6 @@
       "version": "2.0.1",
       "resolved": "https://nexus.unige.ch/repository/npm-all/is-stream/-/is-stream-2.0.1.tgz",
       "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
-      "dev": true,
       "license": "MIT",
       "engines": {
         "node": ">=8"
@@ -12982,6 +14467,18 @@
         "url": "https://github.com/sponsors/ljharb"
       }
     },
+    "node_modules/is-text-path": {
+      "version": "1.0.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/is-text-path/-/is-text-path-1.0.1.tgz",
+      "integrity": "sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=",
+      "license": "MIT",
+      "dependencies": {
+        "text-extensions": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
     "node_modules/is-typedarray": {
       "version": "1.0.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/is-typedarray/-/is-typedarray-1.0.0.tgz",
@@ -13378,7 +14875,6 @@
       "version": "4.0.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/js-tokens/-/js-tokens-4.0.0.tgz",
       "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
-      "dev": true,
       "license": "MIT"
     },
     "node_modules/js-yaml": {
@@ -13448,7 +14944,6 @@
       "version": "2.3.1",
       "resolved": "https://nexus.unige.ch/repository/npm-all/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
       "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
-      "dev": true,
       "license": "MIT"
     },
     "node_modules/json-schema": {
@@ -13504,7 +14999,6 @@
       "version": "6.1.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/jsonfile/-/jsonfile-6.1.0.tgz",
       "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
-      "dev": true,
       "license": "MIT",
       "dependencies": {
         "universalify": "^2.0.0"
@@ -13517,7 +15011,6 @@
       "version": "1.3.1",
       "resolved": "https://nexus.unige.ch/repository/npm-all/jsonparse/-/jsonparse-1.3.1.tgz",
       "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=",
-      "dev": true,
       "engines": [
         "node >= 0.2.0"
       ],
@@ -13527,7 +15020,6 @@
       "version": "1.3.5",
       "resolved": "https://nexus.unige.ch/repository/npm-all/JSONStream/-/JSONStream-1.3.5.tgz",
       "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==",
-      "dev": true,
       "license": "(MIT OR Apache-2.0)",
       "dependencies": {
         "jsonparse": "^1.2.0",
@@ -13816,7 +15308,6 @@
       "version": "6.0.3",
       "resolved": "https://nexus.unige.ch/repository/npm-all/kind-of/-/kind-of-6.0.3.tgz",
       "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
-      "dev": true,
       "license": "MIT",
       "engines": {
         "node": ">=0.10.0"
@@ -14342,9 +15833,17 @@
       "version": "1.2.4",
       "resolved": "https://nexus.unige.ch/repository/npm-all/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
       "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
-      "dev": true,
       "license": "MIT"
     },
+    "node_modules/linkify-it": {
+      "version": "3.0.3",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/linkify-it/-/linkify-it-3.0.3.tgz",
+      "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==",
+      "license": "MIT",
+      "dependencies": {
+        "uc.micro": "^1.0.1"
+      }
+    },
     "node_modules/listr2": {
       "version": "3.14.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/listr2/-/listr2-3.14.0.tgz",
@@ -14449,6 +15948,46 @@
         "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
       }
     },
+    "node_modules/load-json-file": {
+      "version": "4.0.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/load-json-file/-/load-json-file-4.0.0.tgz",
+      "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "graceful-fs": "^4.1.2",
+        "parse-json": "^4.0.0",
+        "pify": "^3.0.0",
+        "strip-bom": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/load-json-file/node_modules/parse-json": {
+      "version": "4.0.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/parse-json/-/parse-json-4.0.0.tgz",
+      "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "error-ex": "^1.3.1",
+        "json-parse-better-errors": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/load-json-file/node_modules/pify": {
+      "version": "3.0.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/pify/-/pify-3.0.0.tgz",
+      "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
     "node_modules/load-module": {
       "version": "4.2.1",
       "resolved": "https://nexus.unige.ch/repository/npm-all/load-module/-/load-module-4.2.1.tgz",
@@ -14518,7 +16057,6 @@
       "version": "5.0.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/locate-path/-/locate-path-5.0.0.tgz",
       "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
-      "dev": true,
       "license": "MIT",
       "dependencies": {
         "p-locate": "^4.1.0"
@@ -14531,7 +16069,6 @@
       "version": "4.17.21",
       "resolved": "https://nexus.unige.ch/repository/npm-all/lodash/-/lodash-4.17.21.tgz",
       "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
-      "dev": true,
       "license": "MIT"
     },
     "node_modules/lodash.assignwith": {
@@ -14562,6 +16099,13 @@
       "dev": true,
       "license": "MIT"
     },
+    "node_modules/lodash.ismatch": {
+      "version": "4.4.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz",
+      "integrity": "sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc=",
+      "dev": true,
+      "license": "MIT"
+    },
     "node_modules/lodash.merge": {
       "version": "4.6.2",
       "resolved": "https://nexus.unige.ch/repository/npm-all/lodash.merge/-/lodash.merge-4.6.2.tgz",
@@ -14809,7 +16353,6 @@
       "version": "6.0.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/lru-cache/-/lru-cache-6.0.0.tgz",
       "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
-      "dev": true,
       "license": "ISC",
       "dependencies": {
         "yallist": "^4.0.0"
@@ -15143,7 +16686,6 @@
       "version": "1.3.6",
       "resolved": "https://nexus.unige.ch/repository/npm-all/make-error/-/make-error-1.3.6.tgz",
       "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
-      "dev": true,
       "license": "ISC"
     },
     "node_modules/make-fetch-happen": {
@@ -15174,6 +16716,55 @@
         "node": ">= 10"
       }
     },
+    "node_modules/map-obj": {
+      "version": "4.3.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/map-obj/-/map-obj-4.3.0.tgz",
+      "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/markdown-it": {
+      "version": "12.3.2",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/markdown-it/-/markdown-it-12.3.2.tgz",
+      "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==",
+      "license": "MIT",
+      "dependencies": {
+        "argparse": "^2.0.1",
+        "entities": "~2.1.0",
+        "linkify-it": "^3.0.1",
+        "mdurl": "^1.0.1",
+        "uc.micro": "^1.0.5"
+      },
+      "bin": {
+        "markdown-it": "bin/markdown-it.js"
+      }
+    },
+    "node_modules/markdown-it/node_modules/argparse": {
+      "version": "2.0.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/argparse/-/argparse-2.0.1.tgz",
+      "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+      "license": "Python-2.0"
+    },
+    "node_modules/markdown-it/node_modules/entities": {
+      "version": "2.1.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/entities/-/entities-2.1.0.tgz",
+      "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==",
+      "license": "BSD-2-Clause",
+      "funding": {
+        "url": "https://github.com/fb55/entities?sponsor=1"
+      }
+    },
+    "node_modules/mdurl": {
+      "version": "1.0.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/mdurl/-/mdurl-1.0.1.tgz",
+      "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=",
+      "license": "MIT"
+    },
     "node_modules/media-typer": {
       "version": "0.3.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/media-typer/-/media-typer-0.3.0.tgz",
@@ -15197,6 +16788,129 @@
         "node": ">= 4.0.0"
       }
     },
+    "node_modules/meow": {
+      "version": "8.1.2",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/meow/-/meow-8.1.2.tgz",
+      "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==",
+      "license": "MIT",
+      "dependencies": {
+        "@types/minimist": "^1.2.0",
+        "camelcase-keys": "^6.2.2",
+        "decamelize-keys": "^1.1.0",
+        "hard-rejection": "^2.1.0",
+        "minimist-options": "4.1.0",
+        "normalize-package-data": "^3.0.0",
+        "read-pkg-up": "^7.0.1",
+        "redent": "^3.0.0",
+        "trim-newlines": "^3.0.0",
+        "type-fest": "^0.18.0",
+        "yargs-parser": "^20.2.3"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/meow/node_modules/hosted-git-info": {
+      "version": "2.8.9",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
+      "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
+      "license": "ISC"
+    },
+    "node_modules/meow/node_modules/read-pkg": {
+      "version": "5.2.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/read-pkg/-/read-pkg-5.2.0.tgz",
+      "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==",
+      "license": "MIT",
+      "dependencies": {
+        "@types/normalize-package-data": "^2.4.0",
+        "normalize-package-data": "^2.5.0",
+        "parse-json": "^5.0.0",
+        "type-fest": "^0.6.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/meow/node_modules/read-pkg-up": {
+      "version": "7.0.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/read-pkg-up/-/read-pkg-up-7.0.1.tgz",
+      "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==",
+      "license": "MIT",
+      "dependencies": {
+        "find-up": "^4.1.0",
+        "read-pkg": "^5.2.0",
+        "type-fest": "^0.8.1"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/meow/node_modules/read-pkg-up/node_modules/type-fest": {
+      "version": "0.8.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/type-fest/-/type-fest-0.8.1.tgz",
+      "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
+      "license": "(MIT OR CC0-1.0)",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/meow/node_modules/read-pkg/node_modules/normalize-package-data": {
+      "version": "2.5.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
+      "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "hosted-git-info": "^2.1.4",
+        "resolve": "^1.10.0",
+        "semver": "2 || 3 || 4 || 5",
+        "validate-npm-package-license": "^3.0.1"
+      }
+    },
+    "node_modules/meow/node_modules/read-pkg/node_modules/type-fest": {
+      "version": "0.6.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/type-fest/-/type-fest-0.6.0.tgz",
+      "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==",
+      "license": "(MIT OR CC0-1.0)",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/meow/node_modules/semver": {
+      "version": "5.7.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/semver/-/semver-5.7.1.tgz",
+      "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+      "license": "ISC",
+      "bin": {
+        "semver": "bin/semver"
+      }
+    },
+    "node_modules/meow/node_modules/type-fest": {
+      "version": "0.18.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/type-fest/-/type-fest-0.18.1.tgz",
+      "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==",
+      "license": "(MIT OR CC0-1.0)",
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/meow/node_modules/yargs-parser": {
+      "version": "20.2.9",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/yargs-parser/-/yargs-parser-20.2.9.tgz",
+      "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
+      "license": "ISC",
+      "engines": {
+        "node": ">=10"
+      }
+    },
     "node_modules/merge-descriptors": {
       "version": "1.0.1",
       "resolved": "https://nexus.unige.ch/repository/npm-all/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
@@ -15208,7 +16922,6 @@
       "version": "2.0.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/merge-stream/-/merge-stream-2.0.0.tgz",
       "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
-      "dev": true,
       "license": "MIT"
     },
     "node_modules/merge2": {
@@ -15297,6 +17010,15 @@
         "dom-walk": "^0.1.0"
       }
     },
+    "node_modules/min-indent": {
+      "version": "1.0.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/min-indent/-/min-indent-1.0.1.tgz",
+      "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
     "node_modules/mini-css-extract-plugin": {
       "version": "2.5.3",
       "resolved": "https://nexus.unige.ch/repository/npm-all/mini-css-extract-plugin/-/mini-css-extract-plugin-2.5.3.tgz",
@@ -15362,6 +17084,29 @@
       "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
       "license": "MIT"
     },
+    "node_modules/minimist-options": {
+      "version": "4.1.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/minimist-options/-/minimist-options-4.1.0.tgz",
+      "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==",
+      "license": "MIT",
+      "dependencies": {
+        "arrify": "^1.0.1",
+        "is-plain-obj": "^1.1.0",
+        "kind-of": "^6.0.3"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/minimist-options/node_modules/is-plain-obj": {
+      "version": "1.1.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
+      "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
     "node_modules/minipass": {
       "version": "3.1.6",
       "resolved": "https://nexus.unige.ch/repository/npm-all/minipass/-/minipass-3.1.6.tgz",
@@ -15483,6 +17228,16 @@
         "node": ">=10"
       }
     },
+    "node_modules/modify-values": {
+      "version": "1.0.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/modify-values/-/modify-values-1.0.1.tgz",
+      "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
     "node_modules/moment": {
       "version": "2.29.1",
       "resolved": "https://nexus.unige.ch/repository/npm-all/moment/-/moment-2.29.1.tgz",
@@ -15969,6 +17724,21 @@
         "node": ">=6"
       }
     },
+    "node_modules/normalize-package-data": {
+      "version": "3.0.3",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/normalize-package-data/-/normalize-package-data-3.0.3.tgz",
+      "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==",
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "hosted-git-info": "^4.0.1",
+        "is-core-module": "^2.5.0",
+        "semver": "^7.3.4",
+        "validate-npm-package-license": "^3.0.1"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
     "node_modules/normalize-path": {
       "version": "3.0.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/normalize-path/-/normalize-path-3.0.0.tgz",
@@ -16157,7 +17927,6 @@
       "version": "4.0.1",
       "resolved": "https://nexus.unige.ch/repository/npm-all/npm-run-path/-/npm-run-path-4.0.1.tgz",
       "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
-      "dev": true,
       "license": "MIT",
       "dependencies": {
         "path-key": "^3.0.0"
@@ -16195,6 +17964,16 @@
         "url": "https://github.com/fb55/nth-check?sponsor=1"
       }
     },
+    "node_modules/null-check": {
+      "version": "1.0.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/null-check/-/null-check-1.0.0.tgz",
+      "integrity": "sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
     "node_modules/nx": {
       "version": "13.1.3",
       "resolved": "https://nexus.unige.ch/repository/npm-all/nx/-/nx-13.1.3.tgz",
@@ -16525,7 +18304,6 @@
       "version": "2.3.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/p-limit/-/p-limit-2.3.0.tgz",
       "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
-      "dev": true,
       "license": "MIT",
       "dependencies": {
         "p-try": "^2.0.0"
@@ -16541,7 +18319,6 @@
       "version": "4.1.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/p-locate/-/p-locate-4.1.0.tgz",
       "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
-      "dev": true,
       "license": "MIT",
       "dependencies": {
         "p-limit": "^2.2.0"
@@ -16594,7 +18371,6 @@
       "version": "2.2.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/p-try/-/p-try-2.2.0.tgz",
       "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
-      "dev": true,
       "license": "MIT",
       "engines": {
         "node": ">=6"
@@ -16654,7 +18430,6 @@
       "version": "1.0.1",
       "resolved": "https://nexus.unige.ch/repository/npm-all/parent-module/-/parent-module-1.0.1.tgz",
       "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
-      "dev": true,
       "license": "MIT",
       "dependencies": {
         "callsites": "^3.0.0"
@@ -16667,7 +18442,6 @@
       "version": "5.2.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/parse-json/-/parse-json-5.2.0.tgz",
       "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
-      "dev": true,
       "license": "MIT",
       "dependencies": {
         "@babel/code-frame": "^7.0.0",
@@ -16989,7 +18763,6 @@
       "version": "4.0.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/path-exists/-/path-exists-4.0.0.tgz",
       "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
-      "dev": true,
       "license": "MIT",
       "engines": {
         "node": ">=8"
@@ -17015,7 +18788,6 @@
       "version": "3.1.1",
       "resolved": "https://nexus.unige.ch/repository/npm-all/path-key/-/path-key-3.1.1.tgz",
       "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
-      "dev": true,
       "license": "MIT",
       "engines": {
         "node": ">=8"
@@ -17025,7 +18797,6 @@
       "version": "1.0.7",
       "resolved": "https://nexus.unige.ch/repository/npm-all/path-parse/-/path-parse-1.0.7.tgz",
       "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
-      "dev": true,
       "license": "MIT"
     },
     "node_modules/path-to-regexp": {
@@ -17039,7 +18810,6 @@
       "version": "4.0.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/path-type/-/path-type-4.0.0.tgz",
       "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
-      "dev": true,
       "license": "MIT",
       "engines": {
         "node": ">=8"
@@ -18263,6 +20033,15 @@
       ],
       "license": "MIT"
     },
+    "node_modules/quick-lru": {
+      "version": "4.0.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/quick-lru/-/quick-lru-4.0.1.tgz",
+      "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
     "node_modules/randombytes": {
       "version": "2.1.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/randombytes/-/randombytes-2.1.0.tgz",
@@ -18342,22 +20121,6 @@
         "graceful-fs": "^4.1.2"
       }
     },
-    "node_modules/read-installed-packages/node_modules/normalize-package-data": {
-      "version": "3.0.3",
-      "resolved": "https://nexus.unige.ch/repository/npm-all/normalize-package-data/-/normalize-package-data-3.0.3.tgz",
-      "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==",
-      "dev": true,
-      "license": "BSD-2-Clause",
-      "dependencies": {
-        "hosted-git-info": "^4.0.1",
-        "is-core-module": "^2.5.0",
-        "semver": "^7.3.4",
-        "validate-npm-package-license": "^3.0.1"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
     "node_modules/read-installed-packages/node_modules/read-package-json": {
       "version": "4.1.1",
       "resolved": "https://nexus.unige.ch/repository/npm-all/read-package-json/-/read-package-json-4.1.1.tgz",
@@ -18388,6 +20151,161 @@
         "node": ">=10"
       }
     },
+    "node_modules/read-pkg": {
+      "version": "3.0.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/read-pkg/-/read-pkg-3.0.0.tgz",
+      "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "load-json-file": "^4.0.0",
+        "normalize-package-data": "^2.3.2",
+        "path-type": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/read-pkg-up": {
+      "version": "3.0.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/read-pkg-up/-/read-pkg-up-3.0.0.tgz",
+      "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "find-up": "^2.0.0",
+        "read-pkg": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/read-pkg-up/node_modules/find-up": {
+      "version": "2.1.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/find-up/-/find-up-2.1.0.tgz",
+      "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "locate-path": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/read-pkg-up/node_modules/locate-path": {
+      "version": "2.0.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/locate-path/-/locate-path-2.0.0.tgz",
+      "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "p-locate": "^2.0.0",
+        "path-exists": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/read-pkg-up/node_modules/p-limit": {
+      "version": "1.3.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/p-limit/-/p-limit-1.3.0.tgz",
+      "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "p-try": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/read-pkg-up/node_modules/p-locate": {
+      "version": "2.0.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/p-locate/-/p-locate-2.0.0.tgz",
+      "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "p-limit": "^1.1.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/read-pkg-up/node_modules/p-try": {
+      "version": "1.0.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/p-try/-/p-try-1.0.0.tgz",
+      "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/read-pkg-up/node_modules/path-exists": {
+      "version": "3.0.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/path-exists/-/path-exists-3.0.0.tgz",
+      "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/read-pkg/node_modules/hosted-git-info": {
+      "version": "2.8.9",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
+      "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/read-pkg/node_modules/normalize-package-data": {
+      "version": "2.5.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
+      "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
+      "dev": true,
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "hosted-git-info": "^2.1.4",
+        "resolve": "^1.10.0",
+        "semver": "2 || 3 || 4 || 5",
+        "validate-npm-package-license": "^3.0.1"
+      }
+    },
+    "node_modules/read-pkg/node_modules/path-type": {
+      "version": "3.0.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/path-type/-/path-type-3.0.0.tgz",
+      "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "pify": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/read-pkg/node_modules/pify": {
+      "version": "3.0.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/pify/-/pify-3.0.0.tgz",
+      "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/read-pkg/node_modules/semver": {
+      "version": "5.7.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/semver/-/semver-5.7.1.tgz",
+      "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+      "dev": true,
+      "license": "ISC",
+      "bin": {
+        "semver": "bin/semver"
+      }
+    },
     "node_modules/readable-stream": {
       "version": "3.6.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/readable-stream/-/readable-stream-3.6.0.tgz",
@@ -18428,6 +20346,19 @@
         "node": ">=8.10.0"
       }
     },
+    "node_modules/redent": {
+      "version": "3.0.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/redent/-/redent-3.0.0.tgz",
+      "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==",
+      "license": "MIT",
+      "dependencies": {
+        "indent-string": "^4.0.0",
+        "strip-indent": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
     "node_modules/reduce-flatten": {
       "version": "2.0.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/reduce-flatten/-/reduce-flatten-2.0.0.tgz",
@@ -18648,7 +20579,6 @@
       "version": "2.1.1",
       "resolved": "https://nexus.unige.ch/repository/npm-all/require-directory/-/require-directory-2.1.1.tgz",
       "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
-      "dev": true,
       "license": "MIT",
       "engines": {
         "node": ">=0.10.0"
@@ -18681,7 +20611,6 @@
       "version": "1.22.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/resolve/-/resolve-1.22.0.tgz",
       "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==",
-      "dev": true,
       "license": "MIT",
       "dependencies": {
         "is-core-module": "^2.8.1",
@@ -18699,12 +20628,41 @@
       "version": "5.0.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/resolve-from/-/resolve-from-5.0.0.tgz",
       "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
-      "dev": true,
       "license": "MIT",
       "engines": {
         "node": ">=8"
       }
     },
+    "node_modules/resolve-global": {
+      "version": "1.0.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/resolve-global/-/resolve-global-1.0.0.tgz",
+      "integrity": "sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==",
+      "license": "MIT",
+      "dependencies": {
+        "global-dirs": "^0.1.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/resolve-global/node_modules/global-dirs": {
+      "version": "0.1.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/global-dirs/-/global-dirs-0.1.1.tgz",
+      "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=",
+      "license": "MIT",
+      "dependencies": {
+        "ini": "^1.3.4"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/resolve-global/node_modules/ini": {
+      "version": "1.3.8",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/ini/-/ini-1.3.8.tgz",
+      "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
+      "license": "ISC"
+    },
     "node_modules/resolve-path": {
       "version": "1.4.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/resolve-path/-/resolve-path-1.4.0.tgz",
@@ -19149,7 +21107,6 @@
       "version": "7.3.5",
       "resolved": "https://nexus.unige.ch/repository/npm-all/semver/-/semver-7.3.5.tgz",
       "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
-      "dev": true,
       "license": "ISC",
       "dependencies": {
         "lru-cache": "^6.0.0"
@@ -19459,7 +21416,6 @@
       "version": "2.0.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/shebang-command/-/shebang-command-2.0.0.tgz",
       "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
-      "dev": true,
       "license": "MIT",
       "dependencies": {
         "shebang-regex": "^3.0.0"
@@ -19472,7 +21428,6 @@
       "version": "3.0.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/shebang-regex/-/shebang-regex-3.0.0.tgz",
       "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
-      "dev": true,
       "license": "MIT",
       "engines": {
         "node": ">=8"
@@ -19674,9 +21629,9 @@
       }
     },
     "node_modules/solidify-frontend": {
-      "version": "3.0.20",
-      "resolved": "https://nexus.unige.ch/repository/npm-all/solidify-frontend/-/solidify-frontend-3.0.20.tgz",
-      "integrity": "sha512-0kB5VFVYXx0mPDYsdVqoBMLEQLP6Kg0qm1iIfz8jbZf5vB34ifLhJMEU3DK4+VNzDosVb+gJ70jPkVyZ4IoSwg==",
+      "version": "3.0.21",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/solidify-frontend/-/solidify-frontend-3.0.21.tgz",
+      "integrity": "sha512-z7whbHWDCMquTGfpPppxRk2JnQOXVT2jMZcteCYxoKuK+J9N2qsoNBSVrpvekxyiW3mc9q4CMWxtV57K+bRVew==",
       "license": "GPL-2.0-or-later",
       "dependencies": {
         "tslib": "^2.3.0"
@@ -19704,6 +21659,7 @@
         "change-case": "^4.1.2",
         "core-js": "^3.21.0",
         "docx-preview": "0.1.8",
+        "markdown-it": "12.3.2",
         "moment": "^2.29.1",
         "ng2-pdf-viewer": "7.0.2",
         "ngx-cookie": "5.0.2",
@@ -19818,7 +21774,6 @@
       "version": "3.1.1",
       "resolved": "https://nexus.unige.ch/repository/npm-all/spdx-correct/-/spdx-correct-3.1.1.tgz",
       "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
-      "dev": true,
       "license": "Apache-2.0",
       "dependencies": {
         "spdx-expression-parse": "^3.0.0",
@@ -19829,14 +21784,12 @@
       "version": "2.3.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
       "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
-      "dev": true,
       "license": "CC-BY-3.0"
     },
     "node_modules/spdx-expression-parse": {
       "version": "3.0.1",
       "resolved": "https://nexus.unige.ch/repository/npm-all/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
       "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
-      "dev": true,
       "license": "MIT",
       "dependencies": {
         "spdx-exceptions": "^2.1.0",
@@ -19847,7 +21800,6 @@
       "version": "3.0.11",
       "resolved": "https://nexus.unige.ch/repository/npm-all/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz",
       "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==",
-      "dev": true,
       "license": "CC0-1.0"
     },
     "node_modules/spdx-ranges": {
@@ -19901,6 +21853,28 @@
         "wbuf": "^1.7.3"
       }
     },
+    "node_modules/split": {
+      "version": "1.0.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/split/-/split-1.0.1.tgz",
+      "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "through": "2"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/split2": {
+      "version": "3.2.2",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/split2/-/split2-3.2.2.tgz",
+      "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==",
+      "license": "ISC",
+      "dependencies": {
+        "readable-stream": "^3.0.0"
+      }
+    },
     "node_modules/sprintf-js": {
       "version": "1.1.2",
       "resolved": "https://nexus.unige.ch/repository/npm-all/sprintf-js/-/sprintf-js-1.1.2.tgz",
@@ -19953,6 +21927,152 @@
       "integrity": "sha1-M6qE8Rd6VUjIk1Uzy/6zQgl19aQ=",
       "license": "SEE LICENSE IN LICENSE"
     },
+    "node_modules/standard-version": {
+      "version": "9.3.2",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/standard-version/-/standard-version-9.3.2.tgz",
+      "integrity": "sha512-u1rfKP4o4ew7Yjbfycv80aNMN2feTiqseAhUhrrx2XtdQGmu7gucpziXe68Z4YfHVqlxVEzo4aUA0Iu3VQOTgQ==",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "chalk": "^2.4.2",
+        "conventional-changelog": "3.1.24",
+        "conventional-changelog-config-spec": "2.1.0",
+        "conventional-changelog-conventionalcommits": "4.6.1",
+        "conventional-recommended-bump": "6.1.0",
+        "detect-indent": "^6.0.0",
+        "detect-newline": "^3.1.0",
+        "dotgitignore": "^2.1.0",
+        "figures": "^3.1.0",
+        "find-up": "^5.0.0",
+        "fs-access": "^1.0.1",
+        "git-semver-tags": "^4.0.0",
+        "semver": "^7.1.1",
+        "stringify-package": "^1.0.1",
+        "yargs": "^16.0.0"
+      },
+      "bin": {
+        "standard-version": "bin/cli.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/standard-version/node_modules/emoji-regex": {
+      "version": "8.0.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/emoji-regex/-/emoji-regex-8.0.0.tgz",
+      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/standard-version/node_modules/find-up": {
+      "version": "5.0.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/find-up/-/find-up-5.0.0.tgz",
+      "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "locate-path": "^6.0.0",
+        "path-exists": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/standard-version/node_modules/locate-path": {
+      "version": "6.0.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/locate-path/-/locate-path-6.0.0.tgz",
+      "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "p-locate": "^5.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/standard-version/node_modules/p-limit": {
+      "version": "3.1.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/p-limit/-/p-limit-3.1.0.tgz",
+      "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "yocto-queue": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/standard-version/node_modules/p-locate": {
+      "version": "5.0.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/p-locate/-/p-locate-5.0.0.tgz",
+      "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "p-limit": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/standard-version/node_modules/string-width": {
+      "version": "4.2.3",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/string-width/-/string-width-4.2.3.tgz",
+      "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "emoji-regex": "^8.0.0",
+        "is-fullwidth-code-point": "^3.0.0",
+        "strip-ansi": "^6.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/standard-version/node_modules/yargs": {
+      "version": "16.2.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/yargs/-/yargs-16.2.0.tgz",
+      "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "cliui": "^7.0.2",
+        "escalade": "^3.1.1",
+        "get-caller-file": "^2.0.5",
+        "require-directory": "^2.1.1",
+        "string-width": "^4.2.0",
+        "y18n": "^5.0.5",
+        "yargs-parser": "^20.2.2"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/standard-version/node_modules/yargs-parser": {
+      "version": "20.2.9",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/yargs-parser/-/yargs-parser-20.2.9.tgz",
+      "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
+      "dev": true,
+      "license": "ISC",
+      "engines": {
+        "node": ">=10"
+      }
+    },
     "node_modules/statuses": {
       "version": "1.5.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/statuses/-/statuses-1.5.0.tgz",
@@ -20219,6 +22339,13 @@
         "url": "https://github.com/sponsors/ljharb"
       }
     },
+    "node_modules/stringify-package": {
+      "version": "1.0.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/stringify-package/-/stringify-package-1.0.1.tgz",
+      "integrity": "sha512-sa4DUQsYciMP1xhKWGuFM04fB0LG/9DlluZoSVywUMRNvzid6XucHK0/90xGxRoHrAaROrcHK1aPKaijCtSrhg==",
+      "dev": true,
+      "license": "ISC"
+    },
     "node_modules/strip-ansi": {
       "version": "6.0.1",
       "resolved": "https://nexus.unige.ch/repository/npm-all/strip-ansi/-/strip-ansi-6.0.1.tgz",
@@ -20245,12 +22372,23 @@
       "version": "2.0.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
       "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
-      "dev": true,
       "license": "MIT",
       "engines": {
         "node": ">=6"
       }
     },
+    "node_modules/strip-indent": {
+      "version": "3.0.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/strip-indent/-/strip-indent-3.0.0.tgz",
+      "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==",
+      "license": "MIT",
+      "dependencies": {
+        "min-indent": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
     "node_modules/strip-json-comments": {
       "version": "3.1.1",
       "resolved": "https://nexus.unige.ch/repository/npm-all/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
@@ -20361,7 +22499,6 @@
       "version": "1.0.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
       "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
-      "dev": true,
       "license": "MIT",
       "engines": {
         "node": ">= 0.4"
@@ -20636,6 +22773,15 @@
         "node": ">=8"
       }
     },
+    "node_modules/text-extensions": {
+      "version": "1.9.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/text-extensions/-/text-extensions-1.9.0.tgz",
+      "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10"
+      }
+    },
     "node_modules/text-table": {
       "version": "0.2.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/text-table/-/text-table-0.2.0.tgz",
@@ -20677,9 +22823,17 @@
       "version": "2.3.8",
       "resolved": "https://nexus.unige.ch/repository/npm-all/through/-/through-2.3.8.tgz",
       "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
-      "dev": true,
       "license": "MIT"
     },
+    "node_modules/through2": {
+      "version": "4.0.2",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/through2/-/through2-4.0.2.tgz",
+      "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==",
+      "license": "MIT",
+      "dependencies": {
+        "readable-stream": "3"
+      }
+    },
     "node_modules/thunky": {
       "version": "1.1.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/thunky/-/thunky-1.1.0.tgz",
@@ -20779,6 +22933,15 @@
         "node": ">=0.6"
       }
     },
+    "node_modules/trim-newlines": {
+      "version": "3.0.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/trim-newlines/-/trim-newlines-3.0.1.tgz",
+      "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
     "node_modules/ts-loader": {
       "version": "9.2.6",
       "resolved": "https://nexus.unige.ch/repository/npm-all/ts-loader/-/ts-loader-9.2.6.tgz",
@@ -21137,6 +23300,13 @@
       "dev": true,
       "license": "MIT"
     },
+    "node_modules/typedarray": {
+      "version": "0.0.6",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/typedarray/-/typedarray-0.0.6.tgz",
+      "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
+      "dev": true,
+      "license": "MIT"
+    },
     "node_modules/typescript": {
       "version": "4.5.5",
       "resolved": "https://nexus.unige.ch/repository/npm-all/typescript/-/typescript-4.5.5.tgz",
@@ -21180,6 +23350,26 @@
         "node": "*"
       }
     },
+    "node_modules/uc.micro": {
+      "version": "1.0.6",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/uc.micro/-/uc.micro-1.0.6.tgz",
+      "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==",
+      "license": "MIT"
+    },
+    "node_modules/uglify-js": {
+      "version": "3.15.2",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/uglify-js/-/uglify-js-3.15.2.tgz",
+      "integrity": "sha512-peeoTk3hSwYdoc9nrdiEJk+gx1ALCtTjdYuKSXMTDqq7n1W7dHPqWDdSi+BPL0ni2YMeHD7hKUSdbj3TZauY2A==",
+      "dev": true,
+      "license": "BSD-2-Clause",
+      "optional": true,
+      "bin": {
+        "uglifyjs": "bin/uglifyjs"
+      },
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
     "node_modules/unbox-primitive": {
       "version": "1.0.1",
       "resolved": "https://nexus.unige.ch/repository/npm-all/unbox-primitive/-/unbox-primitive-1.0.1.tgz",
@@ -21264,7 +23454,6 @@
       "version": "2.0.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/universalify/-/universalify-2.0.0.tgz",
       "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
-      "dev": true,
       "license": "MIT",
       "engines": {
         "node": ">= 10.0.0"
@@ -21373,11 +23562,16 @@
       "dev": true,
       "license": "MIT"
     },
+    "node_modules/v8-compile-cache-lib": {
+      "version": "3.0.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.0.tgz",
+      "integrity": "sha512-mpSYqfsFvASnSn5qMiwrr4VKfumbPyONLCOPmsR3A6pTY/r0+tSaVbgPWSAIuzbk3lCTa+FForeTiO+wBQGkjA==",
+      "license": "MIT"
+    },
     "node_modules/validate-npm-package-license": {
       "version": "3.0.4",
       "resolved": "https://nexus.unige.ch/repository/npm-all/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
       "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
-      "dev": true,
       "license": "Apache-2.0",
       "dependencies": {
         "spdx-correct": "^3.0.0",
@@ -22026,7 +24220,6 @@
       "version": "2.0.2",
       "resolved": "https://nexus.unige.ch/repository/npm-all/which/-/which-2.0.2.tgz",
       "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
-      "dev": true,
       "license": "ISC",
       "dependencies": {
         "isexe": "^2.0.0"
@@ -22127,6 +24320,13 @@
         "node": ">=0.10.0"
       }
     },
+    "node_modules/wordwrap": {
+      "version": "1.0.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/wordwrap/-/wordwrap-1.0.0.tgz",
+      "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
+      "dev": true,
+      "license": "MIT"
+    },
     "node_modules/wordwrapjs": {
       "version": "4.0.1",
       "resolved": "https://nexus.unige.ch/repository/npm-all/wordwrapjs/-/wordwrapjs-4.0.1.tgz",
@@ -22273,11 +24473,20 @@
         "node": ">=6.0"
       }
     },
+    "node_modules/xtend": {
+      "version": "4.0.2",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/xtend/-/xtend-4.0.2.tgz",
+      "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.4"
+      }
+    },
     "node_modules/y18n": {
       "version": "5.0.8",
       "resolved": "https://nexus.unige.ch/repository/npm-all/y18n/-/y18n-5.0.8.tgz",
       "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
-      "dev": true,
       "license": "ISC",
       "engines": {
         "node": ">=10"
@@ -22287,14 +24496,12 @@
       "version": "4.0.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/yallist/-/yallist-4.0.0.tgz",
       "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
-      "dev": true,
       "license": "ISC"
     },
     "node_modules/yaml": {
       "version": "1.10.2",
       "resolved": "https://nexus.unige.ch/repository/npm-all/yaml/-/yaml-1.10.2.tgz",
       "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
-      "dev": true,
       "license": "ISC",
       "engines": {
         "node": ">= 6"
@@ -22304,7 +24511,6 @@
       "version": "17.3.1",
       "resolved": "https://nexus.unige.ch/repository/npm-all/yargs/-/yargs-17.3.1.tgz",
       "integrity": "sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA==",
-      "dev": true,
       "license": "MIT",
       "dependencies": {
         "cliui": "^7.0.2",
@@ -22333,14 +24539,12 @@
       "version": "8.0.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/emoji-regex/-/emoji-regex-8.0.0.tgz",
       "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
-      "dev": true,
       "license": "MIT"
     },
     "node_modules/yargs/node_modules/string-width": {
       "version": "4.2.3",
       "resolved": "https://nexus.unige.ch/repository/npm-all/string-width/-/string-width-4.2.3.tgz",
       "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
-      "dev": true,
       "license": "MIT",
       "dependencies": {
         "emoji-regex": "^8.0.0",
@@ -22355,7 +24559,6 @@
       "version": "21.0.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/yargs-parser/-/yargs-parser-21.0.0.tgz",
       "integrity": "sha512-z9kApYUOCwoeZ78rfRYYWdiU/iNL6mwwYlkkZfJoyMR1xps+NEBX5X7XmRpxkZHhXJ6+Ey00IwKxBBSW9FIjyA==",
-      "dev": true,
       "license": "ISC",
       "engines": {
         "node": ">=12"
@@ -22386,12 +24589,23 @@
       "version": "3.1.1",
       "resolved": "https://nexus.unige.ch/repository/npm-all/yn/-/yn-3.1.1.tgz",
       "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
-      "dev": true,
       "license": "MIT",
       "engines": {
         "node": ">=6"
       }
     },
+    "node_modules/yocto-queue": {
+      "version": "0.1.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/yocto-queue/-/yocto-queue-0.1.0.tgz",
+      "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
     "node_modules/zone.js": {
       "version": "0.11.4",
       "resolved": "https://nexus.unige.ch/repository/npm-all/zone.js/-/zone.js-0.11.4.tgz",
@@ -23072,7 +25286,6 @@
       "version": "7.16.7",
       "resolved": "https://nexus.unige.ch/repository/npm-all/@babel/code-frame/-/code-frame-7.16.7.tgz",
       "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==",
-      "dev": true,
       "requires": {
         "@babel/highlight": "^7.16.7"
       }
@@ -23377,8 +25590,7 @@
     "@babel/helper-validator-identifier": {
       "version": "7.16.7",
       "resolved": "https://nexus.unige.ch/repository/npm-all/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz",
-      "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==",
-      "dev": true
+      "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw=="
     },
     "@babel/helper-validator-option": {
       "version": "7.16.7",
@@ -23413,7 +25625,6 @@
       "version": "7.16.10",
       "resolved": "https://nexus.unige.ch/repository/npm-all/@babel/highlight/-/highlight-7.16.10.tgz",
       "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==",
-      "dev": true,
       "requires": {
         "@babel/helper-validator-identifier": "^7.16.7",
         "chalk": "^2.0.0",
@@ -24244,6 +26455,400 @@
         "yargs": "^17.2.1"
       }
     },
+    "@commitlint/cli": {
+      "version": "16.2.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/@commitlint/cli/-/cli-16.2.1.tgz",
+      "integrity": "sha512-zfKf+B9osuiDbxGMJ7bWFv7XFCW8wlQYPtCffNp7Ukdb7mdrep5R9e03vPUZysnwp8NX6hg05kPEvnD/wRIGWw==",
+      "requires": {
+        "@commitlint/format": "^16.2.1",
+        "@commitlint/lint": "^16.2.1",
+        "@commitlint/load": "^16.2.1",
+        "@commitlint/read": "^16.2.1",
+        "@commitlint/types": "^16.2.1",
+        "lodash": "^4.17.19",
+        "resolve-from": "5.0.0",
+        "resolve-global": "1.0.0",
+        "yargs": "^17.0.0"
+      }
+    },
+    "@commitlint/config-conventional": {
+      "version": "16.2.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/@commitlint/config-conventional/-/config-conventional-16.2.1.tgz",
+      "integrity": "sha512-cP9gArx7gnaj4IqmtCIcHdRjTYdRUi6lmGE+lOzGGjGe45qGOS8nyQQNvkNy2Ey2VqoSWuXXkD8zCUh6EHf1Ww==",
+      "requires": {
+        "conventional-changelog-conventionalcommits": "^4.3.1"
+      }
+    },
+    "@commitlint/config-validator": {
+      "version": "16.2.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/@commitlint/config-validator/-/config-validator-16.2.1.tgz",
+      "integrity": "sha512-hogSe0WGg7CKmp4IfNbdNES3Rq3UEI4XRPB8JL4EPgo/ORq5nrGTVzxJh78omibNuB8Ho4501Czb1Er1MoDWpw==",
+      "requires": {
+        "@commitlint/types": "^16.2.1",
+        "ajv": "^6.12.6"
+      },
+      "dependencies": {
+        "ajv": {
+          "version": "6.12.6",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/ajv/-/ajv-6.12.6.tgz",
+          "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+          "requires": {
+            "fast-deep-equal": "^3.1.1",
+            "fast-json-stable-stringify": "^2.0.0",
+            "json-schema-traverse": "^0.4.1",
+            "uri-js": "^4.2.2"
+          }
+        },
+        "json-schema-traverse": {
+          "version": "0.4.1",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+          "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
+        }
+      }
+    },
+    "@commitlint/ensure": {
+      "version": "16.2.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/@commitlint/ensure/-/ensure-16.2.1.tgz",
+      "integrity": "sha512-/h+lBTgf1r5fhbDNHOViLuej38i3rZqTQnBTk+xEg+ehOwQDXUuissQ5GsYXXqI5uGy+261ew++sT4EA3uBJ+A==",
+      "requires": {
+        "@commitlint/types": "^16.2.1",
+        "lodash": "^4.17.19"
+      }
+    },
+    "@commitlint/execute-rule": {
+      "version": "16.2.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/@commitlint/execute-rule/-/execute-rule-16.2.1.tgz",
+      "integrity": "sha512-oSls82fmUTLM6cl5V3epdVo4gHhbmBFvCvQGHBRdQ50H/690Uq1Dyd7hXMuKITCIdcnr9umyDkr8r5C6HZDF3g=="
+    },
+    "@commitlint/format": {
+      "version": "16.2.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/@commitlint/format/-/format-16.2.1.tgz",
+      "integrity": "sha512-Yyio9bdHWmNDRlEJrxHKglamIk3d6hC0NkEUW6Ti6ipEh2g0BAhy8Od6t4vLhdZRa1I2n+gY13foy+tUgk0i1Q==",
+      "requires": {
+        "@commitlint/types": "^16.2.1",
+        "chalk": "^4.0.0"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "4.3.0",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/ansi-styles/-/ansi-styles-4.3.0.tgz",
+          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+          "requires": {
+            "color-convert": "^2.0.1"
+          }
+        },
+        "chalk": {
+          "version": "4.1.2",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/chalk/-/chalk-4.1.2.tgz",
+          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+          "requires": {
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
+          }
+        },
+        "color-convert": {
+          "version": "2.0.1",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/color-convert/-/color-convert-2.0.1.tgz",
+          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+          "requires": {
+            "color-name": "~1.1.4"
+          }
+        },
+        "color-name": {
+          "version": "1.1.4",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/color-name/-/color-name-1.1.4.tgz",
+          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+        },
+        "has-flag": {
+          "version": "4.0.0",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/has-flag/-/has-flag-4.0.0.tgz",
+          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
+        },
+        "supports-color": {
+          "version": "7.2.0",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/supports-color/-/supports-color-7.2.0.tgz",
+          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+          "requires": {
+            "has-flag": "^4.0.0"
+          }
+        }
+      }
+    },
+    "@commitlint/is-ignored": {
+      "version": "16.2.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/@commitlint/is-ignored/-/is-ignored-16.2.1.tgz",
+      "integrity": "sha512-exl8HRzTIfb1YvDJp2b2HU5z1BT+9tmgxR2XF0YEzkMiCIuEKh+XLeocPr1VcvAKXv3Cmv5X/OfNRp+i+/HIhQ==",
+      "requires": {
+        "@commitlint/types": "^16.2.1",
+        "semver": "7.3.5"
+      }
+    },
+    "@commitlint/lint": {
+      "version": "16.2.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/@commitlint/lint/-/lint-16.2.1.tgz",
+      "integrity": "sha512-fNINQ3X2ZqsCkNB3Z0Z8ElmhewqrS3gy2wgBTx97BkcjOWiyPAGwDJ752hwrsUnWAVBRztgw826n37xPzxsOgg==",
+      "requires": {
+        "@commitlint/is-ignored": "^16.2.1",
+        "@commitlint/parse": "^16.2.1",
+        "@commitlint/rules": "^16.2.1",
+        "@commitlint/types": "^16.2.1"
+      }
+    },
+    "@commitlint/load": {
+      "version": "16.2.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/@commitlint/load/-/load-16.2.1.tgz",
+      "integrity": "sha512-oSpz0jTyVI/A1AIImxJINTLDOMB8YF7lWGm+Jg5wVWM0r7ucpuhyViVvpSRTgvL0z09oIxlctyFGWUQQpI42uw==",
+      "requires": {
+        "@commitlint/config-validator": "^16.2.1",
+        "@commitlint/execute-rule": "^16.2.1",
+        "@commitlint/resolve-extends": "^16.2.1",
+        "@commitlint/types": "^16.2.1",
+        "@types/node": ">=12",
+        "chalk": "^4.0.0",
+        "cosmiconfig": "^7.0.0",
+        "cosmiconfig-typescript-loader": "^1.0.0",
+        "lodash": "^4.17.19",
+        "resolve-from": "^5.0.0",
+        "typescript": "^4.4.3"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "4.3.0",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/ansi-styles/-/ansi-styles-4.3.0.tgz",
+          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+          "requires": {
+            "color-convert": "^2.0.1"
+          }
+        },
+        "chalk": {
+          "version": "4.1.2",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/chalk/-/chalk-4.1.2.tgz",
+          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+          "requires": {
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
+          }
+        },
+        "color-convert": {
+          "version": "2.0.1",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/color-convert/-/color-convert-2.0.1.tgz",
+          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+          "requires": {
+            "color-name": "~1.1.4"
+          }
+        },
+        "color-name": {
+          "version": "1.1.4",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/color-name/-/color-name-1.1.4.tgz",
+          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+        },
+        "has-flag": {
+          "version": "4.0.0",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/has-flag/-/has-flag-4.0.0.tgz",
+          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
+        },
+        "supports-color": {
+          "version": "7.2.0",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/supports-color/-/supports-color-7.2.0.tgz",
+          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+          "requires": {
+            "has-flag": "^4.0.0"
+          }
+        }
+      }
+    },
+    "@commitlint/message": {
+      "version": "16.2.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/@commitlint/message/-/message-16.2.1.tgz",
+      "integrity": "sha512-2eWX/47rftViYg7a3axYDdrgwKv32mxbycBJT6OQY/MJM7SUfYNYYvbMFOQFaA4xIVZt7t2Alyqslbl6blVwWw=="
+    },
+    "@commitlint/parse": {
+      "version": "16.2.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/@commitlint/parse/-/parse-16.2.1.tgz",
+      "integrity": "sha512-2NP2dDQNL378VZYioLrgGVZhWdnJO4nAxQl5LXwYb08nEcN+cgxHN1dJV8OLJ5uxlGJtDeR8UZZ1mnQ1gSAD/g==",
+      "requires": {
+        "@commitlint/types": "^16.2.1",
+        "conventional-changelog-angular": "^5.0.11",
+        "conventional-commits-parser": "^3.2.2"
+      }
+    },
+    "@commitlint/read": {
+      "version": "16.2.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/@commitlint/read/-/read-16.2.1.tgz",
+      "integrity": "sha512-tViXGuaxLTrw2r7PiYMQOFA2fueZxnnt0lkOWqKyxT+n2XdEMGYcI9ID5ndJKXnfPGPppD0w/IItKsIXlZ+alw==",
+      "requires": {
+        "@commitlint/top-level": "^16.2.1",
+        "@commitlint/types": "^16.2.1",
+        "fs-extra": "^10.0.0",
+        "git-raw-commits": "^2.0.0"
+      },
+      "dependencies": {
+        "fs-extra": {
+          "version": "10.0.1",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/fs-extra/-/fs-extra-10.0.1.tgz",
+          "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==",
+          "requires": {
+            "graceful-fs": "^4.2.0",
+            "jsonfile": "^6.0.1",
+            "universalify": "^2.0.0"
+          }
+        }
+      }
+    },
+    "@commitlint/resolve-extends": {
+      "version": "16.2.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/@commitlint/resolve-extends/-/resolve-extends-16.2.1.tgz",
+      "integrity": "sha512-NbbCMPKTFf2J805kwfP9EO+vV+XvnaHRcBy6ud5dF35dxMsvdJqke54W3XazXF1ZAxC4a3LBy4i/GNVBAthsEg==",
+      "requires": {
+        "@commitlint/config-validator": "^16.2.1",
+        "@commitlint/types": "^16.2.1",
+        "import-fresh": "^3.0.0",
+        "lodash": "^4.17.19",
+        "resolve-from": "^5.0.0",
+        "resolve-global": "^1.0.0"
+      }
+    },
+    "@commitlint/rules": {
+      "version": "16.2.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/@commitlint/rules/-/rules-16.2.1.tgz",
+      "integrity": "sha512-ZFezJXQaBBso+BOTre/+1dGCuCzlWVaeLiVRGypI53qVgPMzQqZhkCcrxBFeqB87qeyzr4A4EoG++IvITwwpIw==",
+      "requires": {
+        "@commitlint/ensure": "^16.2.1",
+        "@commitlint/message": "^16.2.1",
+        "@commitlint/to-lines": "^16.2.1",
+        "@commitlint/types": "^16.2.1",
+        "execa": "^5.0.0"
+      },
+      "dependencies": {
+        "execa": {
+          "version": "5.1.1",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/execa/-/execa-5.1.1.tgz",
+          "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+          "requires": {
+            "cross-spawn": "^7.0.3",
+            "get-stream": "^6.0.0",
+            "human-signals": "^2.1.0",
+            "is-stream": "^2.0.0",
+            "merge-stream": "^2.0.0",
+            "npm-run-path": "^4.0.1",
+            "onetime": "^5.1.2",
+            "signal-exit": "^3.0.3",
+            "strip-final-newline": "^2.0.0"
+          }
+        },
+        "get-stream": {
+          "version": "6.0.1",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/get-stream/-/get-stream-6.0.1.tgz",
+          "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg=="
+        },
+        "human-signals": {
+          "version": "2.1.0",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/human-signals/-/human-signals-2.1.0.tgz",
+          "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw=="
+        }
+      }
+    },
+    "@commitlint/to-lines": {
+      "version": "16.2.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/@commitlint/to-lines/-/to-lines-16.2.1.tgz",
+      "integrity": "sha512-9/VjpYj5j1QeY3eiog1zQWY6axsdWAc0AonUUfyZ7B0MVcRI0R56YsHAfzF6uK/g/WwPZaoe4Lb1QCyDVnpVaQ=="
+    },
+    "@commitlint/top-level": {
+      "version": "16.2.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/@commitlint/top-level/-/top-level-16.2.1.tgz",
+      "integrity": "sha512-lS6GSieHW9y6ePL73ied71Z9bOKyK+Ib9hTkRsB8oZFAyQZcyRwq2w6nIa6Fngir1QW51oKzzaXfJL94qwImyw==",
+      "requires": {
+        "find-up": "^5.0.0"
+      },
+      "dependencies": {
+        "find-up": {
+          "version": "5.0.0",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/find-up/-/find-up-5.0.0.tgz",
+          "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+          "requires": {
+            "locate-path": "^6.0.0",
+            "path-exists": "^4.0.0"
+          }
+        },
+        "locate-path": {
+          "version": "6.0.0",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/locate-path/-/locate-path-6.0.0.tgz",
+          "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+          "requires": {
+            "p-locate": "^5.0.0"
+          }
+        },
+        "p-limit": {
+          "version": "3.1.0",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/p-limit/-/p-limit-3.1.0.tgz",
+          "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+          "requires": {
+            "yocto-queue": "^0.1.0"
+          }
+        },
+        "p-locate": {
+          "version": "5.0.0",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/p-locate/-/p-locate-5.0.0.tgz",
+          "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+          "requires": {
+            "p-limit": "^3.0.2"
+          }
+        }
+      }
+    },
+    "@commitlint/types": {
+      "version": "16.2.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/@commitlint/types/-/types-16.2.1.tgz",
+      "integrity": "sha512-7/z7pA7BM0i8XvMSBynO7xsB3mVQPUZbVn6zMIlp/a091XJ3qAXRXc+HwLYhiIdzzS5fuxxNIHZMGHVD4HJxdA==",
+      "requires": {
+        "chalk": "^4.0.0"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "4.3.0",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/ansi-styles/-/ansi-styles-4.3.0.tgz",
+          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+          "requires": {
+            "color-convert": "^2.0.1"
+          }
+        },
+        "chalk": {
+          "version": "4.1.2",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/chalk/-/chalk-4.1.2.tgz",
+          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+          "requires": {
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
+          }
+        },
+        "color-convert": {
+          "version": "2.0.1",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/color-convert/-/color-convert-2.0.1.tgz",
+          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+          "requires": {
+            "color-name": "~1.1.4"
+          }
+        },
+        "color-name": {
+          "version": "1.1.4",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/color-name/-/color-name-1.1.4.tgz",
+          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+        },
+        "has-flag": {
+          "version": "4.0.0",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/has-flag/-/has-flag-4.0.0.tgz",
+          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
+        },
+        "supports-color": {
+          "version": "7.2.0",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/supports-color/-/supports-color-7.2.0.tgz",
+          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+          "requires": {
+            "has-flag": "^4.0.0"
+          }
+        }
+      }
+    },
     "@cospired/i18n-iso-languages": {
       "version": "3.1.1",
       "resolved": "https://nexus.unige.ch/repository/npm-all/@cospired/i18n-iso-languages/-/i18n-iso-languages-3.1.1.tgz",
@@ -24252,14 +26857,12 @@
     "@cspotcode/source-map-consumer": {
       "version": "0.8.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz",
-      "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==",
-      "dev": true
+      "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg=="
     },
     "@cspotcode/source-map-support": {
       "version": "0.7.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz",
       "integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==",
-      "dev": true,
       "requires": {
         "@cspotcode/source-map-consumer": "0.8.0"
       }
@@ -24492,6 +27095,12 @@
       "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
       "dev": true
     },
+    "@hutson/parse-repository-url": {
+      "version": "3.0.2",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz",
+      "integrity": "sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==",
+      "dev": true
+    },
     "@istanbuljs/load-nyc-config": {
       "version": "1.1.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz",
@@ -25335,26 +27944,22 @@
     "@tsconfig/node10": {
       "version": "1.0.8",
       "resolved": "https://nexus.unige.ch/repository/npm-all/@tsconfig/node10/-/node10-1.0.8.tgz",
-      "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==",
-      "dev": true
+      "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg=="
     },
     "@tsconfig/node12": {
       "version": "1.0.9",
       "resolved": "https://nexus.unige.ch/repository/npm-all/@tsconfig/node12/-/node12-1.0.9.tgz",
-      "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==",
-      "dev": true
+      "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw=="
     },
     "@tsconfig/node14": {
       "version": "1.0.1",
       "resolved": "https://nexus.unige.ch/repository/npm-all/@tsconfig/node14/-/node14-1.0.1.tgz",
-      "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==",
-      "dev": true
+      "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg=="
     },
     "@tsconfig/node16": {
       "version": "1.0.2",
       "resolved": "https://nexus.unige.ch/repository/npm-all/@tsconfig/node16/-/node16-1.0.2.tgz",
-      "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==",
-      "dev": true
+      "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA=="
     },
     "@types/body-parser": {
       "version": "1.19.2",
@@ -25503,17 +28108,25 @@
       "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==",
       "dev": true
     },
+    "@types/minimist": {
+      "version": "1.2.2",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/@types/minimist/-/minimist-1.2.2.tgz",
+      "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ=="
+    },
     "@types/node": {
       "version": "17.0.14",
       "resolved": "https://nexus.unige.ch/repository/npm-all/@types/node/-/node-17.0.14.tgz",
-      "integrity": "sha512-SbjLmERksKOGzWzPNuW7fJM7fk3YXVTFiZWB/Hs99gwhk+/dnrQRPBQjPW9aO+fi1tAffi9PrwFvsmOKmDTyng==",
-      "dev": true
+      "integrity": "sha512-SbjLmERksKOGzWzPNuW7fJM7fk3YXVTFiZWB/Hs99gwhk+/dnrQRPBQjPW9aO+fi1tAffi9PrwFvsmOKmDTyng=="
+    },
+    "@types/normalize-package-data": {
+      "version": "2.4.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz",
+      "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw=="
     },
     "@types/parse-json": {
       "version": "4.0.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/@types/parse-json/-/parse-json-4.0.0.tgz",
-      "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==",
-      "dev": true
+      "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA=="
     },
     "@types/q": {
       "version": "0.0.32",
@@ -26037,8 +28650,7 @@
     "acorn": {
       "version": "8.7.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/acorn/-/acorn-8.7.0.tgz",
-      "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==",
-      "dev": true
+      "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ=="
     },
     "acorn-import-assertions": {
       "version": "1.8.0",
@@ -26057,7 +28669,12 @@
     "acorn-walk": {
       "version": "8.2.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/acorn-walk/-/acorn-walk-8.2.0.tgz",
-      "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==",
+      "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA=="
+    },
+    "add-stream": {
+      "version": "1.0.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/add-stream/-/add-stream-1.0.0.tgz",
+      "integrity": "sha1-anmQQ3ynNtXhKI25K9MmbV9csqo=",
       "dev": true
     },
     "adjust-sourcemap-loader": {
@@ -26284,8 +28901,7 @@
     "arg": {
       "version": "4.1.3",
       "resolved": "https://nexus.unige.ch/repository/npm-all/arg/-/arg-4.1.3.tgz",
-      "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
-      "dev": true
+      "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA=="
     },
     "argparse": {
       "version": "1.0.10",
@@ -26353,6 +28969,11 @@
       "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==",
       "dev": true
     },
+    "array-ify": {
+      "version": "1.0.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/array-ify/-/array-ify-1.0.0.tgz",
+      "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4="
+    },
     "array-includes": {
       "version": "3.1.4",
       "resolved": "https://nexus.unige.ch/repository/npm-all/array-includes/-/array-includes-3.1.4.tgz",
@@ -26392,8 +29013,7 @@
     "arrify": {
       "version": "1.0.1",
       "resolved": "https://nexus.unige.ch/repository/npm-all/arrify/-/arrify-1.0.1.tgz",
-      "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
-      "dev": true
+      "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0="
     },
     "asap": {
       "version": "2.0.6",
@@ -26994,8 +29614,7 @@
     "callsites": {
       "version": "3.1.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/callsites/-/callsites-3.1.0.tgz",
-      "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
-      "dev": true
+      "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="
     },
     "camel-case": {
       "version": "4.1.2",
@@ -27009,8 +29628,17 @@
     "camelcase": {
       "version": "5.3.1",
       "resolved": "https://nexus.unige.ch/repository/npm-all/camelcase/-/camelcase-5.3.1.tgz",
-      "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
-      "dev": true
+      "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
+    },
+    "camelcase-keys": {
+      "version": "6.2.2",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/camelcase-keys/-/camelcase-keys-6.2.2.tgz",
+      "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==",
+      "requires": {
+        "camelcase": "^5.3.1",
+        "map-obj": "^4.0.0",
+        "quick-lru": "^4.0.1"
+      }
     },
     "caniuse-lite": {
       "version": "1.0.30001305",
@@ -27209,7 +29837,6 @@
       "version": "7.0.4",
       "resolved": "https://nexus.unige.ch/repository/npm-all/cliui/-/cliui-7.0.4.tgz",
       "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
-      "dev": true,
       "requires": {
         "string-width": "^4.2.0",
         "strip-ansi": "^6.0.0",
@@ -27220,7 +29847,6 @@
           "version": "4.3.0",
           "resolved": "https://nexus.unige.ch/repository/npm-all/ansi-styles/-/ansi-styles-4.3.0.tgz",
           "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-          "dev": true,
           "requires": {
             "color-convert": "^2.0.1"
           }
@@ -27229,7 +29855,6 @@
           "version": "2.0.1",
           "resolved": "https://nexus.unige.ch/repository/npm-all/color-convert/-/color-convert-2.0.1.tgz",
           "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-          "dev": true,
           "requires": {
             "color-name": "~1.1.4"
           }
@@ -27237,20 +29862,17 @@
         "color-name": {
           "version": "1.1.4",
           "resolved": "https://nexus.unige.ch/repository/npm-all/color-name/-/color-name-1.1.4.tgz",
-          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
-          "dev": true
+          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
         },
         "emoji-regex": {
           "version": "8.0.0",
           "resolved": "https://nexus.unige.ch/repository/npm-all/emoji-regex/-/emoji-regex-8.0.0.tgz",
-          "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
-          "dev": true
+          "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
         },
         "string-width": {
           "version": "4.2.3",
           "resolved": "https://nexus.unige.ch/repository/npm-all/string-width/-/string-width-4.2.3.tgz",
           "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
-          "dev": true,
           "requires": {
             "emoji-regex": "^8.0.0",
             "is-fullwidth-code-point": "^3.0.0",
@@ -27261,7 +29883,6 @@
           "version": "7.0.0",
           "resolved": "https://nexus.unige.ch/repository/npm-all/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
           "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
-          "dev": true,
           "requires": {
             "ansi-styles": "^4.0.0",
             "string-width": "^4.1.0",
@@ -27516,6 +30137,15 @@
       "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
       "dev": true
     },
+    "compare-func": {
+      "version": "2.0.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/compare-func/-/compare-func-2.0.0.tgz",
+      "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==",
+      "requires": {
+        "array-ify": "^1.0.0",
+        "dot-prop": "^5.1.0"
+      }
+    },
     "compare-versions": {
       "version": "3.6.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/compare-versions/-/compare-versions-3.6.0.tgz",
@@ -27580,6 +30210,18 @@
       "resolved": "https://nexus.unige.ch/repository/npm-all/concat-map/-/concat-map-0.0.1.tgz",
       "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
     },
+    "concat-stream": {
+      "version": "2.0.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/concat-stream/-/concat-stream-2.0.0.tgz",
+      "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==",
+      "dev": true,
+      "requires": {
+        "buffer-from": "^1.0.0",
+        "inherits": "^2.0.3",
+        "readable-stream": "^3.0.2",
+        "typedarray": "^0.0.6"
+      }
+    },
     "concurrently": {
       "version": "7.0.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/concurrently/-/concurrently-7.0.0.tgz",
@@ -27800,6 +30442,292 @@
       "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
       "dev": true
     },
+    "conventional-changelog": {
+      "version": "3.1.24",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/conventional-changelog/-/conventional-changelog-3.1.24.tgz",
+      "integrity": "sha512-ed6k8PO00UVvhExYohroVPXcOJ/K1N0/drJHx/faTH37OIZthlecuLIRX/T6uOp682CAoVoFpu+sSEaeuH6Asg==",
+      "dev": true,
+      "requires": {
+        "conventional-changelog-angular": "^5.0.12",
+        "conventional-changelog-atom": "^2.0.8",
+        "conventional-changelog-codemirror": "^2.0.8",
+        "conventional-changelog-conventionalcommits": "^4.5.0",
+        "conventional-changelog-core": "^4.2.1",
+        "conventional-changelog-ember": "^2.0.9",
+        "conventional-changelog-eslint": "^3.0.9",
+        "conventional-changelog-express": "^2.0.6",
+        "conventional-changelog-jquery": "^3.0.11",
+        "conventional-changelog-jshint": "^2.0.9",
+        "conventional-changelog-preset-loader": "^2.3.4"
+      }
+    },
+    "conventional-changelog-angular": {
+      "version": "5.0.13",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz",
+      "integrity": "sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==",
+      "requires": {
+        "compare-func": "^2.0.0",
+        "q": "^1.5.1"
+      },
+      "dependencies": {
+        "q": {
+          "version": "1.5.1",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/q/-/q-1.5.1.tgz",
+          "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc="
+        }
+      }
+    },
+    "conventional-changelog-atom": {
+      "version": "2.0.8",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/conventional-changelog-atom/-/conventional-changelog-atom-2.0.8.tgz",
+      "integrity": "sha512-xo6v46icsFTK3bb7dY/8m2qvc8sZemRgdqLb/bjpBsH2UyOS8rKNTgcb5025Hri6IpANPApbXMg15QLb1LJpBw==",
+      "dev": true,
+      "requires": {
+        "q": "^1.5.1"
+      },
+      "dependencies": {
+        "q": {
+          "version": "1.5.1",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/q/-/q-1.5.1.tgz",
+          "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
+          "dev": true
+        }
+      }
+    },
+    "conventional-changelog-codemirror": {
+      "version": "2.0.8",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/conventional-changelog-codemirror/-/conventional-changelog-codemirror-2.0.8.tgz",
+      "integrity": "sha512-z5DAsn3uj1Vfp7po3gpt2Boc+Bdwmw2++ZHa5Ak9k0UKsYAO5mH1UBTN0qSCuJZREIhX6WU4E1p3IW2oRCNzQw==",
+      "dev": true,
+      "requires": {
+        "q": "^1.5.1"
+      },
+      "dependencies": {
+        "q": {
+          "version": "1.5.1",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/q/-/q-1.5.1.tgz",
+          "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
+          "dev": true
+        }
+      }
+    },
+    "conventional-changelog-config-spec": {
+      "version": "2.1.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/conventional-changelog-config-spec/-/conventional-changelog-config-spec-2.1.0.tgz",
+      "integrity": "sha512-IpVePh16EbbB02V+UA+HQnnPIohgXvJRxHcS5+Uwk4AT5LjzCZJm5sp/yqs5C6KZJ1jMsV4paEV13BN1pvDuxQ==",
+      "dev": true
+    },
+    "conventional-changelog-conventionalcommits": {
+      "version": "4.6.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.6.1.tgz",
+      "integrity": "sha512-lzWJpPZhbM1R0PIzkwzGBCnAkH5RKJzJfFQZcl/D+2lsJxAwGnDKBqn/F4C1RD31GJNn8NuKWQzAZDAVXPp2Mw==",
+      "requires": {
+        "compare-func": "^2.0.0",
+        "lodash": "^4.17.15",
+        "q": "^1.5.1"
+      },
+      "dependencies": {
+        "q": {
+          "version": "1.5.1",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/q/-/q-1.5.1.tgz",
+          "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc="
+        }
+      }
+    },
+    "conventional-changelog-core": {
+      "version": "4.2.4",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz",
+      "integrity": "sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg==",
+      "dev": true,
+      "requires": {
+        "add-stream": "^1.0.0",
+        "conventional-changelog-writer": "^5.0.0",
+        "conventional-commits-parser": "^3.2.0",
+        "dateformat": "^3.0.0",
+        "get-pkg-repo": "^4.0.0",
+        "git-raw-commits": "^2.0.8",
+        "git-remote-origin-url": "^2.0.0",
+        "git-semver-tags": "^4.1.1",
+        "lodash": "^4.17.15",
+        "normalize-package-data": "^3.0.0",
+        "q": "^1.5.1",
+        "read-pkg": "^3.0.0",
+        "read-pkg-up": "^3.0.0",
+        "through2": "^4.0.0"
+      },
+      "dependencies": {
+        "q": {
+          "version": "1.5.1",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/q/-/q-1.5.1.tgz",
+          "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
+          "dev": true
+        }
+      }
+    },
+    "conventional-changelog-ember": {
+      "version": "2.0.9",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/conventional-changelog-ember/-/conventional-changelog-ember-2.0.9.tgz",
+      "integrity": "sha512-ulzIReoZEvZCBDhcNYfDIsLTHzYHc7awh+eI44ZtV5cx6LVxLlVtEmcO+2/kGIHGtw+qVabJYjdI5cJOQgXh1A==",
+      "dev": true,
+      "requires": {
+        "q": "^1.5.1"
+      },
+      "dependencies": {
+        "q": {
+          "version": "1.5.1",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/q/-/q-1.5.1.tgz",
+          "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
+          "dev": true
+        }
+      }
+    },
+    "conventional-changelog-eslint": {
+      "version": "3.0.9",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/conventional-changelog-eslint/-/conventional-changelog-eslint-3.0.9.tgz",
+      "integrity": "sha512-6NpUCMgU8qmWmyAMSZO5NrRd7rTgErjrm4VASam2u5jrZS0n38V7Y9CzTtLT2qwz5xEChDR4BduoWIr8TfwvXA==",
+      "dev": true,
+      "requires": {
+        "q": "^1.5.1"
+      },
+      "dependencies": {
+        "q": {
+          "version": "1.5.1",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/q/-/q-1.5.1.tgz",
+          "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
+          "dev": true
+        }
+      }
+    },
+    "conventional-changelog-express": {
+      "version": "2.0.6",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/conventional-changelog-express/-/conventional-changelog-express-2.0.6.tgz",
+      "integrity": "sha512-SDez2f3iVJw6V563O3pRtNwXtQaSmEfTCaTBPCqn0oG0mfkq0rX4hHBq5P7De2MncoRixrALj3u3oQsNK+Q0pQ==",
+      "dev": true,
+      "requires": {
+        "q": "^1.5.1"
+      },
+      "dependencies": {
+        "q": {
+          "version": "1.5.1",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/q/-/q-1.5.1.tgz",
+          "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
+          "dev": true
+        }
+      }
+    },
+    "conventional-changelog-jquery": {
+      "version": "3.0.11",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/conventional-changelog-jquery/-/conventional-changelog-jquery-3.0.11.tgz",
+      "integrity": "sha512-x8AWz5/Td55F7+o/9LQ6cQIPwrCjfJQ5Zmfqi8thwUEKHstEn4kTIofXub7plf1xvFA2TqhZlq7fy5OmV6BOMw==",
+      "dev": true,
+      "requires": {
+        "q": "^1.5.1"
+      },
+      "dependencies": {
+        "q": {
+          "version": "1.5.1",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/q/-/q-1.5.1.tgz",
+          "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
+          "dev": true
+        }
+      }
+    },
+    "conventional-changelog-jshint": {
+      "version": "2.0.9",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/conventional-changelog-jshint/-/conventional-changelog-jshint-2.0.9.tgz",
+      "integrity": "sha512-wMLdaIzq6TNnMHMy31hql02OEQ8nCQfExw1SE0hYL5KvU+JCTuPaDO+7JiogGT2gJAxiUGATdtYYfh+nT+6riA==",
+      "dev": true,
+      "requires": {
+        "compare-func": "^2.0.0",
+        "q": "^1.5.1"
+      },
+      "dependencies": {
+        "q": {
+          "version": "1.5.1",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/q/-/q-1.5.1.tgz",
+          "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
+          "dev": true
+        }
+      }
+    },
+    "conventional-changelog-preset-loader": {
+      "version": "2.3.4",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz",
+      "integrity": "sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==",
+      "dev": true
+    },
+    "conventional-changelog-writer": {
+      "version": "5.0.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz",
+      "integrity": "sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ==",
+      "dev": true,
+      "requires": {
+        "conventional-commits-filter": "^2.0.7",
+        "dateformat": "^3.0.0",
+        "handlebars": "^4.7.7",
+        "json-stringify-safe": "^5.0.1",
+        "lodash": "^4.17.15",
+        "meow": "^8.0.0",
+        "semver": "^6.0.0",
+        "split": "^1.0.0",
+        "through2": "^4.0.0"
+      },
+      "dependencies": {
+        "semver": {
+          "version": "6.3.0",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/semver/-/semver-6.3.0.tgz",
+          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+          "dev": true
+        }
+      }
+    },
+    "conventional-commits-filter": {
+      "version": "2.0.7",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz",
+      "integrity": "sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==",
+      "dev": true,
+      "requires": {
+        "lodash.ismatch": "^4.4.0",
+        "modify-values": "^1.0.0"
+      }
+    },
+    "conventional-commits-parser": {
+      "version": "3.2.4",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz",
+      "integrity": "sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==",
+      "requires": {
+        "is-text-path": "^1.0.1",
+        "JSONStream": "^1.0.4",
+        "lodash": "^4.17.15",
+        "meow": "^8.0.0",
+        "split2": "^3.0.0",
+        "through2": "^4.0.0"
+      }
+    },
+    "conventional-recommended-bump": {
+      "version": "6.1.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/conventional-recommended-bump/-/conventional-recommended-bump-6.1.0.tgz",
+      "integrity": "sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw==",
+      "dev": true,
+      "requires": {
+        "concat-stream": "^2.0.0",
+        "conventional-changelog-preset-loader": "^2.3.4",
+        "conventional-commits-filter": "^2.0.7",
+        "conventional-commits-parser": "^3.2.0",
+        "git-raw-commits": "^2.0.8",
+        "git-semver-tags": "^4.1.1",
+        "meow": "^8.0.0",
+        "q": "^1.5.1"
+      },
+      "dependencies": {
+        "q": {
+          "version": "1.5.1",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/q/-/q-1.5.1.tgz",
+          "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
+          "dev": true
+        }
+      }
+    },
     "convert-source-map": {
       "version": "1.8.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/convert-source-map/-/convert-source-map-1.8.0.tgz",
@@ -27965,7 +30893,6 @@
       "version": "7.0.1",
       "resolved": "https://nexus.unige.ch/repository/npm-all/cosmiconfig/-/cosmiconfig-7.0.1.tgz",
       "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==",
-      "dev": true,
       "requires": {
         "@types/parse-json": "^4.0.0",
         "import-fresh": "^3.2.1",
@@ -27974,6 +30901,37 @@
         "yaml": "^1.10.0"
       }
     },
+    "cosmiconfig-typescript-loader": {
+      "version": "1.0.6",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-1.0.6.tgz",
+      "integrity": "sha512-2nEotziYJWtNtoTjKbchj9QrdTT6DBxCvqjNKoDKARw+e2yZmTQCa07uRrykLIZuvSgp69YXLH89UHc0WhdMfQ==",
+      "requires": {
+        "cosmiconfig": "^7",
+        "ts-node": "^10.6.0"
+      },
+      "dependencies": {
+        "ts-node": {
+          "version": "10.7.0",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/ts-node/-/ts-node-10.7.0.tgz",
+          "integrity": "sha512-TbIGS4xgJoX2i3do417KSaep1uRAW/Lu+WAL2doDHC0D6ummjirVOXU5/7aiZotbQ5p1Zp9tP7U6cYhA0O7M8A==",
+          "requires": {
+            "@cspotcode/source-map-support": "0.7.0",
+            "@tsconfig/node10": "^1.0.7",
+            "@tsconfig/node12": "^1.0.7",
+            "@tsconfig/node14": "^1.0.0",
+            "@tsconfig/node16": "^1.0.2",
+            "acorn": "^8.4.1",
+            "acorn-walk": "^8.1.1",
+            "arg": "^4.1.0",
+            "create-require": "^1.1.0",
+            "diff": "^4.0.1",
+            "make-error": "^1.1.1",
+            "v8-compile-cache-lib": "^3.0.0",
+            "yn": "3.1.1"
+          }
+        }
+      }
+    },
     "create-mixin": {
       "version": "3.0.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/create-mixin/-/create-mixin-3.0.0.tgz",
@@ -27983,8 +30941,7 @@
     "create-require": {
       "version": "1.1.1",
       "resolved": "https://nexus.unige.ch/repository/npm-all/create-require/-/create-require-1.1.1.tgz",
-      "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
-      "dev": true
+      "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ=="
     },
     "critters": {
       "version": "0.0.16",
@@ -28061,7 +31018,6 @@
       "version": "7.0.3",
       "resolved": "https://nexus.unige.ch/repository/npm-all/cross-spawn/-/cross-spawn-7.0.3.tgz",
       "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
-      "dev": true,
       "requires": {
         "path-key": "^3.1.0",
         "shebang-command": "^2.0.0",
@@ -28333,6 +31289,11 @@
       "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==",
       "dev": true
     },
+    "dargs": {
+      "version": "7.0.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/dargs/-/dargs-7.0.0.tgz",
+      "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg=="
+    },
     "dashdash": {
       "version": "1.14.1",
       "resolved": "https://nexus.unige.ch/repository/npm-all/dashdash/-/dashdash-1.14.1.tgz",
@@ -28365,6 +31326,12 @@
       "integrity": "sha512-7P3FyqDcfeznLZp2b+OMitV9Sz2lUnsT87WaTat9nVwqsBkTzPG3lPLNwW3en6F4pHUiWzr6vb8CLhjdK9bcxQ==",
       "dev": true
     },
+    "dateformat": {
+      "version": "3.0.3",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/dateformat/-/dateformat-3.0.3.tgz",
+      "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==",
+      "dev": true
+    },
     "dayjs": {
       "version": "1.10.7",
       "resolved": "https://nexus.unige.ch/repository/npm-all/dayjs/-/dayjs-1.10.7.tgz",
@@ -28389,8 +31356,23 @@
     "decamelize": {
       "version": "1.2.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/decamelize/-/decamelize-1.2.0.tgz",
-      "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
-      "dev": true
+      "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
+    },
+    "decamelize-keys": {
+      "version": "1.1.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/decamelize-keys/-/decamelize-keys-1.1.0.tgz",
+      "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=",
+      "requires": {
+        "decamelize": "^1.1.0",
+        "map-obj": "^1.0.0"
+      },
+      "dependencies": {
+        "map-obj": {
+          "version": "1.0.1",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/map-obj/-/map-obj-1.0.1.tgz",
+          "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0="
+        }
+      }
     },
     "declare.js": {
       "version": "0.0.8",
@@ -28564,6 +31546,18 @@
       "integrity": "sha512-R5QZrOXxSs0JDUIU/VANvRJlQVMts9C0L76HToQdPdlftfZCE7W6dyH0G4GZ5UW9fRqUOhAoCE2aGekuu+3HjQ==",
       "dev": true
     },
+    "detect-indent": {
+      "version": "6.1.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/detect-indent/-/detect-indent-6.1.0.tgz",
+      "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==",
+      "dev": true
+    },
+    "detect-newline": {
+      "version": "3.1.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/detect-newline/-/detect-newline-3.1.0.tgz",
+      "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==",
+      "dev": true
+    },
     "detect-node": {
       "version": "2.1.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/detect-node/-/detect-node-2.1.0.tgz",
@@ -28589,8 +31583,7 @@
     "diff": {
       "version": "4.0.2",
       "resolved": "https://nexus.unige.ch/repository/npm-all/diff/-/diff-4.0.2.tgz",
-      "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
-      "dev": true
+      "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A=="
     },
     "dir-glob": {
       "version": "3.0.1",
@@ -28729,6 +31722,60 @@
         }
       }
     },
+    "dot-prop": {
+      "version": "5.3.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/dot-prop/-/dot-prop-5.3.0.tgz",
+      "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==",
+      "requires": {
+        "is-obj": "^2.0.0"
+      }
+    },
+    "dotgitignore": {
+      "version": "2.1.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/dotgitignore/-/dotgitignore-2.1.0.tgz",
+      "integrity": "sha512-sCm11ak2oY6DglEPpCB8TixLjWAxd3kJTs6UIcSasNYxXdFPV+YKlye92c8H4kKFqV5qYMIh7d+cYecEg0dIkA==",
+      "dev": true,
+      "requires": {
+        "find-up": "^3.0.0",
+        "minimatch": "^3.0.4"
+      },
+      "dependencies": {
+        "find-up": {
+          "version": "3.0.0",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/find-up/-/find-up-3.0.0.tgz",
+          "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+          "dev": true,
+          "requires": {
+            "locate-path": "^3.0.0"
+          }
+        },
+        "locate-path": {
+          "version": "3.0.0",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/locate-path/-/locate-path-3.0.0.tgz",
+          "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+          "dev": true,
+          "requires": {
+            "p-locate": "^3.0.0",
+            "path-exists": "^3.0.0"
+          }
+        },
+        "p-locate": {
+          "version": "3.0.0",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/p-locate/-/p-locate-3.0.0.tgz",
+          "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+          "dev": true,
+          "requires": {
+            "p-limit": "^2.0.0"
+          }
+        },
+        "path-exists": {
+          "version": "3.0.0",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/path-exists/-/path-exists-3.0.0.tgz",
+          "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+          "dev": true
+        }
+      }
+    },
     "eastasianwidth": {
       "version": "0.2.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
@@ -28895,7 +31942,6 @@
       "version": "1.3.2",
       "resolved": "https://nexus.unige.ch/repository/npm-all/error-ex/-/error-ex-1.3.2.tgz",
       "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
-      "dev": true,
       "requires": {
         "is-arrayish": "^0.2.1"
       }
@@ -29129,8 +32175,7 @@
     "escalade": {
       "version": "3.1.1",
       "resolved": "https://nexus.unige.ch/repository/npm-all/escalade/-/escalade-3.1.1.tgz",
-      "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
-      "dev": true
+      "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw=="
     },
     "escape-html": {
       "version": "1.0.3",
@@ -30013,7 +33058,6 @@
       "version": "4.1.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/find-up/-/find-up-4.1.0.tgz",
       "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
-      "dev": true,
       "requires": {
         "locate-path": "^5.0.0",
         "path-exists": "^4.0.0"
@@ -30090,6 +33134,15 @@
       "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
       "dev": true
     },
+    "fs-access": {
+      "version": "1.0.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/fs-access/-/fs-access-1.0.1.tgz",
+      "integrity": "sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=",
+      "dev": true,
+      "requires": {
+        "null-check": "^1.0.0"
+      }
+    },
     "fs-extra": {
       "version": "9.1.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/fs-extra/-/fs-extra-9.1.0.tgz",
@@ -30132,8 +33185,7 @@
     "function-bind": {
       "version": "1.1.1",
       "resolved": "https://nexus.unige.ch/repository/npm-all/function-bind/-/function-bind-1.1.1.tgz",
-      "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
-      "dev": true
+      "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
     },
     "functional-red-black-tree": {
       "version": "1.0.1",
@@ -30186,8 +33238,7 @@
     "get-caller-file": {
       "version": "2.0.5",
       "resolved": "https://nexus.unige.ch/repository/npm-all/get-caller-file/-/get-caller-file-2.0.5.tgz",
-      "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
-      "dev": true
+      "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
     },
     "get-intrinsic": {
       "version": "1.1.1",
@@ -30206,6 +33257,92 @@
       "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==",
       "dev": true
     },
+    "get-pkg-repo": {
+      "version": "4.2.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz",
+      "integrity": "sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==",
+      "dev": true,
+      "requires": {
+        "@hutson/parse-repository-url": "^3.0.0",
+        "hosted-git-info": "^4.0.0",
+        "through2": "^2.0.0",
+        "yargs": "^16.2.0"
+      },
+      "dependencies": {
+        "emoji-regex": {
+          "version": "8.0.0",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/emoji-regex/-/emoji-regex-8.0.0.tgz",
+          "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+          "dev": true
+        },
+        "readable-stream": {
+          "version": "2.3.7",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/readable-stream/-/readable-stream-2.3.7.tgz",
+          "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+          "dev": true,
+          "requires": {
+            "core-util-is": "~1.0.0",
+            "inherits": "~2.0.3",
+            "isarray": "~1.0.0",
+            "process-nextick-args": "~2.0.0",
+            "safe-buffer": "~5.1.1",
+            "string_decoder": "~1.1.1",
+            "util-deprecate": "~1.0.1"
+          }
+        },
+        "string_decoder": {
+          "version": "1.1.1",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/string_decoder/-/string_decoder-1.1.1.tgz",
+          "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+          "dev": true,
+          "requires": {
+            "safe-buffer": "~5.1.0"
+          }
+        },
+        "string-width": {
+          "version": "4.2.3",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/string-width/-/string-width-4.2.3.tgz",
+          "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+          "dev": true,
+          "requires": {
+            "emoji-regex": "^8.0.0",
+            "is-fullwidth-code-point": "^3.0.0",
+            "strip-ansi": "^6.0.1"
+          }
+        },
+        "through2": {
+          "version": "2.0.5",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/through2/-/through2-2.0.5.tgz",
+          "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
+          "dev": true,
+          "requires": {
+            "readable-stream": "~2.3.6",
+            "xtend": "~4.0.1"
+          }
+        },
+        "yargs": {
+          "version": "16.2.0",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/yargs/-/yargs-16.2.0.tgz",
+          "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
+          "dev": true,
+          "requires": {
+            "cliui": "^7.0.2",
+            "escalade": "^3.1.1",
+            "get-caller-file": "^2.0.5",
+            "require-directory": "^2.1.1",
+            "string-width": "^4.2.0",
+            "y18n": "^5.0.5",
+            "yargs-parser": "^20.2.2"
+          }
+        },
+        "yargs-parser": {
+          "version": "20.2.9",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/yargs-parser/-/yargs-parser-20.2.9.tgz",
+          "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
+          "dev": true
+        }
+      }
+    },
     "get-stream": {
       "version": "5.2.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/get-stream/-/get-stream-5.2.0.tgz",
@@ -30263,6 +33400,63 @@
         }
       }
     },
+    "git-raw-commits": {
+      "version": "2.0.11",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/git-raw-commits/-/git-raw-commits-2.0.11.tgz",
+      "integrity": "sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==",
+      "requires": {
+        "dargs": "^7.0.0",
+        "lodash": "^4.17.15",
+        "meow": "^8.0.0",
+        "split2": "^3.0.0",
+        "through2": "^4.0.0"
+      }
+    },
+    "git-remote-origin-url": {
+      "version": "2.0.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz",
+      "integrity": "sha1-UoJlna4hBxRaERJhEq0yFuxfpl8=",
+      "dev": true,
+      "requires": {
+        "gitconfiglocal": "^1.0.0",
+        "pify": "^2.3.0"
+      }
+    },
+    "git-semver-tags": {
+      "version": "4.1.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/git-semver-tags/-/git-semver-tags-4.1.1.tgz",
+      "integrity": "sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==",
+      "dev": true,
+      "requires": {
+        "meow": "^8.0.0",
+        "semver": "^6.0.0"
+      },
+      "dependencies": {
+        "semver": {
+          "version": "6.3.0",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/semver/-/semver-6.3.0.tgz",
+          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+          "dev": true
+        }
+      }
+    },
+    "gitconfiglocal": {
+      "version": "1.0.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz",
+      "integrity": "sha1-QdBF84UaXqiPA/JMocYXgRRGS5s=",
+      "dev": true,
+      "requires": {
+        "ini": "^1.3.2"
+      },
+      "dependencies": {
+        "ini": {
+          "version": "1.3.8",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/ini/-/ini-1.3.8.tgz",
+          "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
+          "dev": true
+        }
+      }
+    },
     "glob": {
       "version": "7.2.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/glob/-/glob-7.2.0.tgz",
@@ -30348,6 +33542,27 @@
       "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==",
       "dev": true
     },
+    "handlebars": {
+      "version": "4.7.7",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/handlebars/-/handlebars-4.7.7.tgz",
+      "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==",
+      "dev": true,
+      "requires": {
+        "minimist": "^1.2.5",
+        "neo-async": "^2.6.0",
+        "source-map": "^0.6.1",
+        "uglify-js": "^3.1.4",
+        "wordwrap": "^1.0.0"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        }
+      }
+    },
     "har-schema": {
       "version": "2.0.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/har-schema/-/har-schema-2.0.0.tgz",
@@ -30384,11 +33599,15 @@
         }
       }
     },
+    "hard-rejection": {
+      "version": "2.1.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/hard-rejection/-/hard-rejection-2.1.0.tgz",
+      "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA=="
+    },
     "has": {
       "version": "1.0.3",
       "resolved": "https://nexus.unige.ch/repository/npm-all/has/-/has-1.0.3.tgz",
       "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
-      "dev": true,
       "requires": {
         "function-bind": "^1.1.1"
       }
@@ -30487,7 +33706,6 @@
       "version": "4.1.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/hosted-git-info/-/hosted-git-info-4.1.0.tgz",
       "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==",
-      "dev": true,
       "requires": {
         "lru-cache": "^6.0.0"
       }
@@ -30654,6 +33872,12 @@
         "ms": "^2.0.0"
       }
     },
+    "husky": {
+      "version": "7.0.4",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/husky/-/husky-7.0.4.tgz",
+      "integrity": "sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==",
+      "dev": true
+    },
     "iconv-lite": {
       "version": "0.6.3",
       "resolved": "https://nexus.unige.ch/repository/npm-all/iconv-lite/-/iconv-lite-0.6.3.tgz",
@@ -30712,7 +33936,6 @@
       "version": "3.3.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/import-fresh/-/import-fresh-3.3.0.tgz",
       "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
-      "dev": true,
       "requires": {
         "parent-module": "^1.0.0",
         "resolve-from": "^4.0.0"
@@ -30721,8 +33944,7 @@
         "resolve-from": {
           "version": "4.0.0",
           "resolved": "https://nexus.unige.ch/repository/npm-all/resolve-from/-/resolve-from-4.0.0.tgz",
-          "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
-          "dev": true
+          "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="
         }
       }
     },
@@ -30735,8 +33957,7 @@
     "indent-string": {
       "version": "4.0.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/indent-string/-/indent-string-4.0.0.tgz",
-      "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
-      "dev": true
+      "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg=="
     },
     "individual": {
       "version": "2.0.0",
@@ -30891,8 +34112,7 @@
     "is-arrayish": {
       "version": "0.2.1",
       "resolved": "https://nexus.unige.ch/repository/npm-all/is-arrayish/-/is-arrayish-0.2.1.tgz",
-      "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
-      "dev": true
+      "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0="
     },
     "is-bigint": {
       "version": "1.0.4",
@@ -30941,7 +34161,6 @@
       "version": "2.8.1",
       "resolved": "https://nexus.unige.ch/repository/npm-all/is-core-module/-/is-core-module-2.8.1.tgz",
       "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==",
-      "dev": true,
       "requires": {
         "has": "^1.0.3"
       }
@@ -30978,8 +34197,7 @@
     "is-fullwidth-code-point": {
       "version": "3.0.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
-      "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
-      "dev": true
+      "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
     },
     "is-function": {
       "version": "1.0.2",
@@ -31045,6 +34263,11 @@
         "has-tostringtag": "^1.0.0"
       }
     },
+    "is-obj": {
+      "version": "2.0.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/is-obj/-/is-obj-2.0.0.tgz",
+      "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w=="
+    },
     "is-path-cwd": {
       "version": "1.0.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/is-path-cwd/-/is-path-cwd-1.0.0.tgz",
@@ -31111,8 +34334,7 @@
     "is-stream": {
       "version": "2.0.1",
       "resolved": "https://nexus.unige.ch/repository/npm-all/is-stream/-/is-stream-2.0.1.tgz",
-      "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
-      "dev": true
+      "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg=="
     },
     "is-string": {
       "version": "1.0.7",
@@ -31132,6 +34354,14 @@
         "has-symbols": "^1.0.2"
       }
     },
+    "is-text-path": {
+      "version": "1.0.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/is-text-path/-/is-text-path-1.0.1.tgz",
+      "integrity": "sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=",
+      "requires": {
+        "text-extensions": "^1.0.0"
+      }
+    },
     "is-typedarray": {
       "version": "1.0.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/is-typedarray/-/is-typedarray-1.0.0.tgz",
@@ -31414,8 +34644,7 @@
     "js-tokens": {
       "version": "4.0.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/js-tokens/-/js-tokens-4.0.0.tgz",
-      "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
-      "dev": true
+      "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
     },
     "js-yaml": {
       "version": "3.14.1",
@@ -31464,8 +34693,7 @@
     "json-parse-even-better-errors": {
       "version": "2.3.1",
       "resolved": "https://nexus.unige.ch/repository/npm-all/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
-      "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
-      "dev": true
+      "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="
     },
     "json-schema": {
       "version": "0.4.0",
@@ -31508,7 +34736,6 @@
       "version": "6.1.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/jsonfile/-/jsonfile-6.1.0.tgz",
       "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
-      "dev": true,
       "requires": {
         "graceful-fs": "^4.1.6",
         "universalify": "^2.0.0"
@@ -31517,14 +34744,12 @@
     "jsonparse": {
       "version": "1.3.1",
       "resolved": "https://nexus.unige.ch/repository/npm-all/jsonparse/-/jsonparse-1.3.1.tgz",
-      "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=",
-      "dev": true
+      "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA="
     },
     "JSONStream": {
       "version": "1.3.5",
       "resolved": "https://nexus.unige.ch/repository/npm-all/JSONStream/-/JSONStream-1.3.5.tgz",
       "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==",
-      "dev": true,
       "requires": {
         "jsonparse": "^1.2.0",
         "through": ">=2.2.7 <3"
@@ -31747,8 +34972,7 @@
     "kind-of": {
       "version": "6.0.3",
       "resolved": "https://nexus.unige.ch/repository/npm-all/kind-of/-/kind-of-6.0.3.tgz",
-      "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
-      "dev": true
+      "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw=="
     },
     "klaw-sync": {
       "version": "6.0.0",
@@ -32134,8 +35358,15 @@
     "lines-and-columns": {
       "version": "1.2.4",
       "resolved": "https://nexus.unige.ch/repository/npm-all/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
-      "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
-      "dev": true
+      "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="
+    },
+    "linkify-it": {
+      "version": "3.0.3",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/linkify-it/-/linkify-it-3.0.3.tgz",
+      "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==",
+      "requires": {
+        "uc.micro": "^1.0.1"
+      }
     },
     "listr2": {
       "version": "3.14.0",
@@ -32207,6 +35438,36 @@
         }
       }
     },
+    "load-json-file": {
+      "version": "4.0.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/load-json-file/-/load-json-file-4.0.0.tgz",
+      "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
+      "dev": true,
+      "requires": {
+        "graceful-fs": "^4.1.2",
+        "parse-json": "^4.0.0",
+        "pify": "^3.0.0",
+        "strip-bom": "^3.0.0"
+      },
+      "dependencies": {
+        "parse-json": {
+          "version": "4.0.0",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/parse-json/-/parse-json-4.0.0.tgz",
+          "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
+          "dev": true,
+          "requires": {
+            "error-ex": "^1.3.1",
+            "json-parse-better-errors": "^1.0.1"
+          }
+        },
+        "pify": {
+          "version": "3.0.0",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/pify/-/pify-3.0.0.tgz",
+          "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+          "dev": true
+        }
+      }
+    },
     "load-module": {
       "version": "4.2.1",
       "resolved": "https://nexus.unige.ch/repository/npm-all/load-module/-/load-module-4.2.1.tgz",
@@ -32257,7 +35518,6 @@
       "version": "5.0.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/locate-path/-/locate-path-5.0.0.tgz",
       "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
-      "dev": true,
       "requires": {
         "p-locate": "^4.1.0"
       }
@@ -32265,8 +35525,7 @@
     "lodash": {
       "version": "4.17.21",
       "resolved": "https://nexus.unige.ch/repository/npm-all/lodash/-/lodash-4.17.21.tgz",
-      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
-      "dev": true
+      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
     },
     "lodash.assignwith": {
       "version": "4.2.0",
@@ -32292,6 +35551,12 @@
       "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=",
       "dev": true
     },
+    "lodash.ismatch": {
+      "version": "4.4.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz",
+      "integrity": "sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc=",
+      "dev": true
+    },
     "lodash.merge": {
       "version": "4.6.2",
       "resolved": "https://nexus.unige.ch/repository/npm-all/lodash.merge/-/lodash.merge-4.6.2.tgz",
@@ -32466,7 +35731,6 @@
       "version": "6.0.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/lru-cache/-/lru-cache-6.0.0.tgz",
       "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
-      "dev": true,
       "requires": {
         "yallist": "^4.0.0"
       }
@@ -32706,8 +35970,7 @@
     "make-error": {
       "version": "1.3.6",
       "resolved": "https://nexus.unige.ch/repository/npm-all/make-error/-/make-error-1.3.6.tgz",
-      "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
-      "dev": true
+      "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw=="
     },
     "make-fetch-happen": {
       "version": "9.1.0",
@@ -32733,6 +35996,40 @@
         "ssri": "^8.0.0"
       }
     },
+    "map-obj": {
+      "version": "4.3.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/map-obj/-/map-obj-4.3.0.tgz",
+      "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ=="
+    },
+    "markdown-it": {
+      "version": "12.3.2",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/markdown-it/-/markdown-it-12.3.2.tgz",
+      "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==",
+      "requires": {
+        "argparse": "^2.0.1",
+        "entities": "~2.1.0",
+        "linkify-it": "^3.0.1",
+        "mdurl": "^1.0.1",
+        "uc.micro": "^1.0.5"
+      },
+      "dependencies": {
+        "argparse": {
+          "version": "2.0.1",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/argparse/-/argparse-2.0.1.tgz",
+          "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
+        },
+        "entities": {
+          "version": "2.1.0",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/entities/-/entities-2.1.0.tgz",
+          "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w=="
+        }
+      }
+    },
+    "mdurl": {
+      "version": "1.0.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/mdurl/-/mdurl-1.0.1.tgz",
+      "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4="
+    },
     "media-typer": {
       "version": "0.3.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/media-typer/-/media-typer-0.3.0.tgz",
@@ -32748,6 +36045,92 @@
         "fs-monkey": "1.0.3"
       }
     },
+    "meow": {
+      "version": "8.1.2",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/meow/-/meow-8.1.2.tgz",
+      "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==",
+      "requires": {
+        "@types/minimist": "^1.2.0",
+        "camelcase-keys": "^6.2.2",
+        "decamelize-keys": "^1.1.0",
+        "hard-rejection": "^2.1.0",
+        "minimist-options": "4.1.0",
+        "normalize-package-data": "^3.0.0",
+        "read-pkg-up": "^7.0.1",
+        "redent": "^3.0.0",
+        "trim-newlines": "^3.0.0",
+        "type-fest": "^0.18.0",
+        "yargs-parser": "^20.2.3"
+      },
+      "dependencies": {
+        "hosted-git-info": {
+          "version": "2.8.9",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
+          "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw=="
+        },
+        "read-pkg": {
+          "version": "5.2.0",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/read-pkg/-/read-pkg-5.2.0.tgz",
+          "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==",
+          "requires": {
+            "@types/normalize-package-data": "^2.4.0",
+            "normalize-package-data": "^2.5.0",
+            "parse-json": "^5.0.0",
+            "type-fest": "^0.6.0"
+          },
+          "dependencies": {
+            "normalize-package-data": {
+              "version": "2.5.0",
+              "resolved": "https://nexus.unige.ch/repository/npm-all/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
+              "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
+              "requires": {
+                "hosted-git-info": "^2.1.4",
+                "resolve": "^1.10.0",
+                "semver": "2 || 3 || 4 || 5",
+                "validate-npm-package-license": "^3.0.1"
+              }
+            },
+            "type-fest": {
+              "version": "0.6.0",
+              "resolved": "https://nexus.unige.ch/repository/npm-all/type-fest/-/type-fest-0.6.0.tgz",
+              "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg=="
+            }
+          }
+        },
+        "read-pkg-up": {
+          "version": "7.0.1",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/read-pkg-up/-/read-pkg-up-7.0.1.tgz",
+          "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==",
+          "requires": {
+            "find-up": "^4.1.0",
+            "read-pkg": "^5.2.0",
+            "type-fest": "^0.8.1"
+          },
+          "dependencies": {
+            "type-fest": {
+              "version": "0.8.1",
+              "resolved": "https://nexus.unige.ch/repository/npm-all/type-fest/-/type-fest-0.8.1.tgz",
+              "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA=="
+            }
+          }
+        },
+        "semver": {
+          "version": "5.7.1",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/semver/-/semver-5.7.1.tgz",
+          "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
+        },
+        "type-fest": {
+          "version": "0.18.1",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/type-fest/-/type-fest-0.18.1.tgz",
+          "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw=="
+        },
+        "yargs-parser": {
+          "version": "20.2.9",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/yargs-parser/-/yargs-parser-20.2.9.tgz",
+          "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w=="
+        }
+      }
+    },
     "merge-descriptors": {
       "version": "1.0.1",
       "resolved": "https://nexus.unige.ch/repository/npm-all/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
@@ -32757,8 +36140,7 @@
     "merge-stream": {
       "version": "2.0.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/merge-stream/-/merge-stream-2.0.0.tgz",
-      "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
-      "dev": true
+      "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="
     },
     "merge2": {
       "version": "1.4.1",
@@ -32815,6 +36197,11 @@
         "dom-walk": "^0.1.0"
       }
     },
+    "min-indent": {
+      "version": "1.0.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/min-indent/-/min-indent-1.0.1.tgz",
+      "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg=="
+    },
     "mini-css-extract-plugin": {
       "version": "2.5.3",
       "resolved": "https://nexus.unige.ch/repository/npm-all/mini-css-extract-plugin/-/mini-css-extract-plugin-2.5.3.tgz",
@@ -32857,6 +36244,23 @@
       "resolved": "https://nexus.unige.ch/repository/npm-all/minimist/-/minimist-1.2.5.tgz",
       "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
     },
+    "minimist-options": {
+      "version": "4.1.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/minimist-options/-/minimist-options-4.1.0.tgz",
+      "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==",
+      "requires": {
+        "arrify": "^1.0.1",
+        "is-plain-obj": "^1.1.0",
+        "kind-of": "^6.0.3"
+      },
+      "dependencies": {
+        "is-plain-obj": {
+          "version": "1.1.0",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
+          "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4="
+        }
+      }
+    },
     "minipass": {
       "version": "3.1.6",
       "resolved": "https://nexus.unige.ch/repository/npm-all/minipass/-/minipass-3.1.6.tgz",
@@ -32940,6 +36344,12 @@
       "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
       "dev": true
     },
+    "modify-values": {
+      "version": "1.0.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/modify-values/-/modify-values-1.0.1.tgz",
+      "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==",
+      "dev": true
+    },
     "moment": {
       "version": "2.29.1",
       "resolved": "https://nexus.unige.ch/repository/npm-all/moment/-/moment-2.29.1.tgz",
@@ -33263,6 +36673,17 @@
         "abbrev": "1"
       }
     },
+    "normalize-package-data": {
+      "version": "3.0.3",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/normalize-package-data/-/normalize-package-data-3.0.3.tgz",
+      "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==",
+      "requires": {
+        "hosted-git-info": "^4.0.1",
+        "is-core-module": "^2.5.0",
+        "semver": "^7.3.4",
+        "validate-npm-package-license": "^3.0.1"
+      }
+    },
     "normalize-path": {
       "version": "3.0.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/normalize-path/-/normalize-path-3.0.0.tgz",
@@ -33406,7 +36827,6 @@
       "version": "4.0.1",
       "resolved": "https://nexus.unige.ch/repository/npm-all/npm-run-path/-/npm-run-path-4.0.1.tgz",
       "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
-      "dev": true,
       "requires": {
         "path-key": "^3.0.0"
       }
@@ -33432,6 +36852,12 @@
         "boolbase": "^1.0.0"
       }
     },
+    "null-check": {
+      "version": "1.0.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/null-check/-/null-check-1.0.0.tgz",
+      "integrity": "sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=",
+      "dev": true
+    },
     "nx": {
       "version": "13.1.3",
       "resolved": "https://nexus.unige.ch/repository/npm-all/nx/-/nx-13.1.3.tgz",
@@ -33654,7 +37080,6 @@
       "version": "2.3.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/p-limit/-/p-limit-2.3.0.tgz",
       "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
-      "dev": true,
       "requires": {
         "p-try": "^2.0.0"
       }
@@ -33663,7 +37088,6 @@
       "version": "4.1.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/p-locate/-/p-locate-4.1.0.tgz",
       "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
-      "dev": true,
       "requires": {
         "p-limit": "^2.2.0"
       }
@@ -33698,8 +37122,7 @@
     "p-try": {
       "version": "2.2.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/p-try/-/p-try-2.2.0.tgz",
-      "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
-      "dev": true
+      "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
     },
     "pacote": {
       "version": "12.0.3",
@@ -33746,7 +37169,6 @@
       "version": "1.0.1",
       "resolved": "https://nexus.unige.ch/repository/npm-all/parent-module/-/parent-module-1.0.1.tgz",
       "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
-      "dev": true,
       "requires": {
         "callsites": "^3.0.0"
       }
@@ -33755,7 +37177,6 @@
       "version": "5.2.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/parse-json/-/parse-json-5.2.0.tgz",
       "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
-      "dev": true,
       "requires": {
         "@babel/code-frame": "^7.0.0",
         "error-ex": "^1.3.1",
@@ -33995,8 +37416,7 @@
     "path-exists": {
       "version": "4.0.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/path-exists/-/path-exists-4.0.0.tgz",
-      "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
-      "dev": true
+      "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
     },
     "path-is-absolute": {
       "version": "1.0.1",
@@ -34012,14 +37432,12 @@
     "path-key": {
       "version": "3.1.1",
       "resolved": "https://nexus.unige.ch/repository/npm-all/path-key/-/path-key-3.1.1.tgz",
-      "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
-      "dev": true
+      "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="
     },
     "path-parse": {
       "version": "1.0.7",
       "resolved": "https://nexus.unige.ch/repository/npm-all/path-parse/-/path-parse-1.0.7.tgz",
-      "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
-      "dev": true
+      "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
     },
     "path-to-regexp": {
       "version": "3.2.0",
@@ -34030,8 +37448,7 @@
     "path-type": {
       "version": "4.0.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/path-type/-/path-type-4.0.0.tgz",
-      "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
-      "dev": true
+      "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw=="
     },
     "pend": {
       "version": "1.2.0",
@@ -34842,6 +38259,11 @@
       "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
       "dev": true
     },
+    "quick-lru": {
+      "version": "4.0.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/quick-lru/-/quick-lru-4.0.1.tgz",
+      "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g=="
+    },
     "randombytes": {
       "version": "2.1.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/randombytes/-/randombytes-2.1.0.tgz",
@@ -34903,18 +38325,6 @@
         "slide": "~1.1.3"
       },
       "dependencies": {
-        "normalize-package-data": {
-          "version": "3.0.3",
-          "resolved": "https://nexus.unige.ch/repository/npm-all/normalize-package-data/-/normalize-package-data-3.0.3.tgz",
-          "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==",
-          "dev": true,
-          "requires": {
-            "hosted-git-info": "^4.0.1",
-            "is-core-module": "^2.5.0",
-            "semver": "^7.3.4",
-            "validate-npm-package-license": "^3.0.1"
-          }
-        },
         "read-package-json": {
           "version": "4.1.1",
           "resolved": "https://nexus.unige.ch/repository/npm-all/read-package-json/-/read-package-json-4.1.1.tgz",
@@ -34939,6 +38349,119 @@
         "npm-normalize-package-bin": "^1.0.1"
       }
     },
+    "read-pkg": {
+      "version": "3.0.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/read-pkg/-/read-pkg-3.0.0.tgz",
+      "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
+      "dev": true,
+      "requires": {
+        "load-json-file": "^4.0.0",
+        "normalize-package-data": "^2.3.2",
+        "path-type": "^3.0.0"
+      },
+      "dependencies": {
+        "hosted-git-info": {
+          "version": "2.8.9",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
+          "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
+          "dev": true
+        },
+        "normalize-package-data": {
+          "version": "2.5.0",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
+          "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
+          "dev": true,
+          "requires": {
+            "hosted-git-info": "^2.1.4",
+            "resolve": "^1.10.0",
+            "semver": "2 || 3 || 4 || 5",
+            "validate-npm-package-license": "^3.0.1"
+          }
+        },
+        "path-type": {
+          "version": "3.0.0",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/path-type/-/path-type-3.0.0.tgz",
+          "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
+          "dev": true,
+          "requires": {
+            "pify": "^3.0.0"
+          }
+        },
+        "pify": {
+          "version": "3.0.0",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/pify/-/pify-3.0.0.tgz",
+          "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+          "dev": true
+        },
+        "semver": {
+          "version": "5.7.1",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/semver/-/semver-5.7.1.tgz",
+          "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+          "dev": true
+        }
+      }
+    },
+    "read-pkg-up": {
+      "version": "3.0.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/read-pkg-up/-/read-pkg-up-3.0.0.tgz",
+      "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=",
+      "dev": true,
+      "requires": {
+        "find-up": "^2.0.0",
+        "read-pkg": "^3.0.0"
+      },
+      "dependencies": {
+        "find-up": {
+          "version": "2.1.0",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/find-up/-/find-up-2.1.0.tgz",
+          "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+          "dev": true,
+          "requires": {
+            "locate-path": "^2.0.0"
+          }
+        },
+        "locate-path": {
+          "version": "2.0.0",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/locate-path/-/locate-path-2.0.0.tgz",
+          "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+          "dev": true,
+          "requires": {
+            "p-locate": "^2.0.0",
+            "path-exists": "^3.0.0"
+          }
+        },
+        "p-limit": {
+          "version": "1.3.0",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/p-limit/-/p-limit-1.3.0.tgz",
+          "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+          "dev": true,
+          "requires": {
+            "p-try": "^1.0.0"
+          }
+        },
+        "p-locate": {
+          "version": "2.0.0",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/p-locate/-/p-locate-2.0.0.tgz",
+          "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+          "dev": true,
+          "requires": {
+            "p-limit": "^1.1.0"
+          }
+        },
+        "p-try": {
+          "version": "1.0.0",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/p-try/-/p-try-1.0.0.tgz",
+          "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+          "dev": true
+        },
+        "path-exists": {
+          "version": "3.0.0",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/path-exists/-/path-exists-3.0.0.tgz",
+          "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+          "dev": true
+        }
+      }
+    },
     "readable-stream": {
       "version": "3.6.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/readable-stream/-/readable-stream-3.6.0.tgz",
@@ -34970,6 +38493,15 @@
         "picomatch": "^2.2.1"
       }
     },
+    "redent": {
+      "version": "3.0.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/redent/-/redent-3.0.0.tgz",
+      "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==",
+      "requires": {
+        "indent-string": "^4.0.0",
+        "strip-indent": "^3.0.0"
+      }
+    },
     "reduce-flatten": {
       "version": "2.0.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/reduce-flatten/-/reduce-flatten-2.0.0.tgz",
@@ -35137,8 +38669,7 @@
     "require-directory": {
       "version": "2.1.1",
       "resolved": "https://nexus.unige.ch/repository/npm-all/require-directory/-/require-directory-2.1.1.tgz",
-      "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
-      "dev": true
+      "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I="
     },
     "require-from-string": {
       "version": "2.0.2",
@@ -35161,7 +38692,6 @@
       "version": "1.22.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/resolve/-/resolve-1.22.0.tgz",
       "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==",
-      "dev": true,
       "requires": {
         "is-core-module": "^2.8.1",
         "path-parse": "^1.0.7",
@@ -35171,8 +38701,30 @@
     "resolve-from": {
       "version": "5.0.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/resolve-from/-/resolve-from-5.0.0.tgz",
-      "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
-      "dev": true
+      "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw=="
+    },
+    "resolve-global": {
+      "version": "1.0.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/resolve-global/-/resolve-global-1.0.0.tgz",
+      "integrity": "sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==",
+      "requires": {
+        "global-dirs": "^0.1.1"
+      },
+      "dependencies": {
+        "global-dirs": {
+          "version": "0.1.1",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/global-dirs/-/global-dirs-0.1.1.tgz",
+          "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=",
+          "requires": {
+            "ini": "^1.3.4"
+          }
+        },
+        "ini": {
+          "version": "1.3.8",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/ini/-/ini-1.3.8.tgz",
+          "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="
+        }
+      }
     },
     "resolve-path": {
       "version": "1.4.0",
@@ -35483,7 +39035,6 @@
       "version": "7.3.5",
       "resolved": "https://nexus.unige.ch/repository/npm-all/semver/-/semver-7.3.5.tgz",
       "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
-      "dev": true,
       "requires": {
         "lru-cache": "^6.0.0"
       }
@@ -35736,7 +39287,6 @@
       "version": "2.0.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/shebang-command/-/shebang-command-2.0.0.tgz",
       "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
-      "dev": true,
       "requires": {
         "shebang-regex": "^3.0.0"
       }
@@ -35744,8 +39294,7 @@
     "shebang-regex": {
       "version": "3.0.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/shebang-regex/-/shebang-regex-3.0.0.tgz",
-      "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
-      "dev": true
+      "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="
     },
     "side-channel": {
       "version": "1.0.4",
@@ -35891,9 +39440,9 @@
       }
     },
     "solidify-frontend": {
-      "version": "3.0.20",
-      "resolved": "https://nexus.unige.ch/repository/npm-all/solidify-frontend/-/solidify-frontend-3.0.20.tgz",
-      "integrity": "sha512-0kB5VFVYXx0mPDYsdVqoBMLEQLP6Kg0qm1iIfz8jbZf5vB34ifLhJMEU3DK4+VNzDosVb+gJ70jPkVyZ4IoSwg==",
+      "version": "3.0.21",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/solidify-frontend/-/solidify-frontend-3.0.21.tgz",
+      "integrity": "sha512-z7whbHWDCMquTGfpPppxRk2JnQOXVT2jMZcteCYxoKuK+J9N2qsoNBSVrpvekxyiW3mc9q4CMWxtV57K+bRVew==",
       "requires": {
         "tslib": "^2.3.0"
       }
@@ -35974,7 +39523,6 @@
       "version": "3.1.1",
       "resolved": "https://nexus.unige.ch/repository/npm-all/spdx-correct/-/spdx-correct-3.1.1.tgz",
       "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
-      "dev": true,
       "requires": {
         "spdx-expression-parse": "^3.0.0",
         "spdx-license-ids": "^3.0.0"
@@ -35983,14 +39531,12 @@
     "spdx-exceptions": {
       "version": "2.3.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
-      "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
-      "dev": true
+      "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A=="
     },
     "spdx-expression-parse": {
       "version": "3.0.1",
       "resolved": "https://nexus.unige.ch/repository/npm-all/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
       "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
-      "dev": true,
       "requires": {
         "spdx-exceptions": "^2.1.0",
         "spdx-license-ids": "^3.0.0"
@@ -35999,8 +39545,7 @@
     "spdx-license-ids": {
       "version": "3.0.11",
       "resolved": "https://nexus.unige.ch/repository/npm-all/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz",
-      "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==",
-      "dev": true
+      "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g=="
     },
     "spdx-ranges": {
       "version": "2.1.1",
@@ -36046,6 +39591,23 @@
         "wbuf": "^1.7.3"
       }
     },
+    "split": {
+      "version": "1.0.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/split/-/split-1.0.1.tgz",
+      "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==",
+      "dev": true,
+      "requires": {
+        "through": "2"
+      }
+    },
+    "split2": {
+      "version": "3.2.2",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/split2/-/split2-3.2.2.tgz",
+      "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==",
+      "requires": {
+        "readable-stream": "^3.0.0"
+      }
+    },
     "sprintf-js": {
       "version": "1.1.2",
       "resolved": "https://nexus.unige.ch/repository/npm-all/sprintf-js/-/sprintf-js-1.1.2.tgz",
@@ -36083,6 +39645,106 @@
       "resolved": "https://nexus.unige.ch/repository/npm-all/stackframe/-/stackframe-0.3.1.tgz",
       "integrity": "sha1-M6qE8Rd6VUjIk1Uzy/6zQgl19aQ="
     },
+    "standard-version": {
+      "version": "9.3.2",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/standard-version/-/standard-version-9.3.2.tgz",
+      "integrity": "sha512-u1rfKP4o4ew7Yjbfycv80aNMN2feTiqseAhUhrrx2XtdQGmu7gucpziXe68Z4YfHVqlxVEzo4aUA0Iu3VQOTgQ==",
+      "dev": true,
+      "requires": {
+        "chalk": "^2.4.2",
+        "conventional-changelog": "3.1.24",
+        "conventional-changelog-config-spec": "2.1.0",
+        "conventional-changelog-conventionalcommits": "4.6.1",
+        "conventional-recommended-bump": "6.1.0",
+        "detect-indent": "^6.0.0",
+        "detect-newline": "^3.1.0",
+        "dotgitignore": "^2.1.0",
+        "figures": "^3.1.0",
+        "find-up": "^5.0.0",
+        "fs-access": "^1.0.1",
+        "git-semver-tags": "^4.0.0",
+        "semver": "^7.1.1",
+        "stringify-package": "^1.0.1",
+        "yargs": "^16.0.0"
+      },
+      "dependencies": {
+        "emoji-regex": {
+          "version": "8.0.0",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/emoji-regex/-/emoji-regex-8.0.0.tgz",
+          "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+          "dev": true
+        },
+        "find-up": {
+          "version": "5.0.0",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/find-up/-/find-up-5.0.0.tgz",
+          "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+          "dev": true,
+          "requires": {
+            "locate-path": "^6.0.0",
+            "path-exists": "^4.0.0"
+          }
+        },
+        "locate-path": {
+          "version": "6.0.0",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/locate-path/-/locate-path-6.0.0.tgz",
+          "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+          "dev": true,
+          "requires": {
+            "p-locate": "^5.0.0"
+          }
+        },
+        "p-limit": {
+          "version": "3.1.0",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/p-limit/-/p-limit-3.1.0.tgz",
+          "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+          "dev": true,
+          "requires": {
+            "yocto-queue": "^0.1.0"
+          }
+        },
+        "p-locate": {
+          "version": "5.0.0",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/p-locate/-/p-locate-5.0.0.tgz",
+          "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+          "dev": true,
+          "requires": {
+            "p-limit": "^3.0.2"
+          }
+        },
+        "string-width": {
+          "version": "4.2.3",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/string-width/-/string-width-4.2.3.tgz",
+          "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+          "dev": true,
+          "requires": {
+            "emoji-regex": "^8.0.0",
+            "is-fullwidth-code-point": "^3.0.0",
+            "strip-ansi": "^6.0.1"
+          }
+        },
+        "yargs": {
+          "version": "16.2.0",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/yargs/-/yargs-16.2.0.tgz",
+          "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
+          "dev": true,
+          "requires": {
+            "cliui": "^7.0.2",
+            "escalade": "^3.1.1",
+            "get-caller-file": "^2.0.5",
+            "require-directory": "^2.1.1",
+            "string-width": "^4.2.0",
+            "y18n": "^5.0.5",
+            "yargs-parser": "^20.2.2"
+          }
+        },
+        "yargs-parser": {
+          "version": "20.2.9",
+          "resolved": "https://nexus.unige.ch/repository/npm-all/yargs-parser/-/yargs-parser-20.2.9.tgz",
+          "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
+          "dev": true
+        }
+      }
+    },
     "statuses": {
       "version": "1.5.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/statuses/-/statuses-1.5.0.tgz",
@@ -36274,6 +39936,12 @@
         "define-properties": "^1.1.3"
       }
     },
+    "stringify-package": {
+      "version": "1.0.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/stringify-package/-/stringify-package-1.0.1.tgz",
+      "integrity": "sha512-sa4DUQsYciMP1xhKWGuFM04fB0LG/9DlluZoSVywUMRNvzid6XucHK0/90xGxRoHrAaROrcHK1aPKaijCtSrhg==",
+      "dev": true
+    },
     "strip-ansi": {
       "version": "6.0.1",
       "resolved": "https://nexus.unige.ch/repository/npm-all/strip-ansi/-/strip-ansi-6.0.1.tgz",
@@ -36291,8 +39959,15 @@
     "strip-final-newline": {
       "version": "2.0.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
-      "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
-      "dev": true
+      "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA=="
+    },
+    "strip-indent": {
+      "version": "3.0.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/strip-indent/-/strip-indent-3.0.0.tgz",
+      "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==",
+      "requires": {
+        "min-indent": "^1.0.0"
+      }
     },
     "strip-json-comments": {
       "version": "3.1.1",
@@ -36363,8 +40038,7 @@
     "supports-preserve-symlinks-flag": {
       "version": "1.0.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
-      "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
-      "dev": true
+      "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="
     },
     "symbol-observable": {
       "version": "4.0.0",
@@ -36532,6 +40206,11 @@
         "minimatch": "^3.0.4"
       }
     },
+    "text-extensions": {
+      "version": "1.9.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/text-extensions/-/text-extensions-1.9.0.tgz",
+      "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ=="
+    },
     "text-table": {
       "version": "0.2.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/text-table/-/text-table-0.2.0.tgz",
@@ -36565,8 +40244,15 @@
     "through": {
       "version": "2.3.8",
       "resolved": "https://nexus.unige.ch/repository/npm-all/through/-/through-2.3.8.tgz",
-      "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
-      "dev": true
+      "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU="
+    },
+    "through2": {
+      "version": "4.0.2",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/through2/-/through2-4.0.2.tgz",
+      "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==",
+      "requires": {
+        "readable-stream": "3"
+      }
     },
     "thunky": {
       "version": "1.1.0",
@@ -36636,6 +40322,11 @@
       "integrity": "sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==",
       "dev": true
     },
+    "trim-newlines": {
+      "version": "3.0.1",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/trim-newlines/-/trim-newlines-3.0.1.tgz",
+      "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw=="
+    },
     "ts-loader": {
       "version": "9.2.6",
       "resolved": "https://nexus.unige.ch/repository/npm-all/ts-loader/-/ts-loader-9.2.6.tgz",
@@ -36881,6 +40572,12 @@
       "integrity": "sha512-5NkbXZUlmCE73Fs7gvkp1XXJWHYetPkg60QnQ2NXQmBYNFxbBr2zA8GCtaH4K2s2WhOmSlgiSTmrjrcm5tnM5g==",
       "dev": true
     },
+    "typedarray": {
+      "version": "0.0.6",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/typedarray/-/typedarray-0.0.6.tgz",
+      "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
+      "dev": true
+    },
     "typescript": {
       "version": "4.5.5",
       "resolved": "https://nexus.unige.ch/repository/npm-all/typescript/-/typescript-4.5.5.tgz",
@@ -36898,6 +40595,18 @@
       "integrity": "sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ==",
       "dev": true
     },
+    "uc.micro": {
+      "version": "1.0.6",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/uc.micro/-/uc.micro-1.0.6.tgz",
+      "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA=="
+    },
+    "uglify-js": {
+      "version": "3.15.2",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/uglify-js/-/uglify-js-3.15.2.tgz",
+      "integrity": "sha512-peeoTk3hSwYdoc9nrdiEJk+gx1ALCtTjdYuKSXMTDqq7n1W7dHPqWDdSi+BPL0ni2YMeHD7hKUSdbj3TZauY2A==",
+      "dev": true,
+      "optional": true
+    },
     "unbox-primitive": {
       "version": "1.0.1",
       "resolved": "https://nexus.unige.ch/repository/npm-all/unbox-primitive/-/unbox-primitive-1.0.1.tgz",
@@ -36959,8 +40668,7 @@
     "universalify": {
       "version": "2.0.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/universalify/-/universalify-2.0.0.tgz",
-      "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
-      "dev": true
+      "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ=="
     },
     "unpipe": {
       "version": "1.0.0",
@@ -37043,11 +40751,15 @@
       "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==",
       "dev": true
     },
+    "v8-compile-cache-lib": {
+      "version": "3.0.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.0.tgz",
+      "integrity": "sha512-mpSYqfsFvASnSn5qMiwrr4VKfumbPyONLCOPmsR3A6pTY/r0+tSaVbgPWSAIuzbk3lCTa+FForeTiO+wBQGkjA=="
+    },
     "validate-npm-package-license": {
       "version": "3.0.4",
       "resolved": "https://nexus.unige.ch/repository/npm-all/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
       "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
-      "dev": true,
       "requires": {
         "spdx-correct": "^3.0.0",
         "spdx-expression-parse": "^3.0.0"
@@ -37504,7 +41216,6 @@
       "version": "2.0.2",
       "resolved": "https://nexus.unige.ch/repository/npm-all/which/-/which-2.0.2.tgz",
       "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
-      "dev": true,
       "requires": {
         "isexe": "^2.0.0"
       }
@@ -37577,6 +41288,12 @@
       "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
       "dev": true
     },
+    "wordwrap": {
+      "version": "1.0.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/wordwrap/-/wordwrap-1.0.0.tgz",
+      "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
+      "dev": true
+    },
     "wordwrapjs": {
       "version": "4.0.1",
       "resolved": "https://nexus.unige.ch/repository/npm-all/wordwrapjs/-/wordwrapjs-4.0.1.tgz",
@@ -37665,29 +41382,31 @@
       "integrity": "sha512-lMo8DJ8u6JRWp0/Y4XLa/atVDr75H9litKlb2E5j3V3MesoL50EBgZDWoLT3F/LztVnG67GjPXLZpqcky/UMnQ==",
       "dev": true
     },
+    "xtend": {
+      "version": "4.0.2",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/xtend/-/xtend-4.0.2.tgz",
+      "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
+      "dev": true
+    },
     "y18n": {
       "version": "5.0.8",
       "resolved": "https://nexus.unige.ch/repository/npm-all/y18n/-/y18n-5.0.8.tgz",
-      "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
-      "dev": true
+      "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="
     },
     "yallist": {
       "version": "4.0.0",
       "resolved": "https://nexus.unige.ch/repository/npm-all/yallist/-/yallist-4.0.0.tgz",
-      "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
-      "dev": true
+      "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
     },
     "yaml": {
       "version": "1.10.2",
       "resolved": "https://nexus.unige.ch/repository/npm-all/yaml/-/yaml-1.10.2.tgz",
-      "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
-      "dev": true
+      "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg=="
     },
     "yargs": {
       "version": "17.3.1",
       "resolved": "https://nexus.unige.ch/repository/npm-all/yargs/-/yargs-17.3.1.tgz",
       "integrity": "sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA==",
-      "dev": true,
       "requires": {
         "cliui": "^7.0.2",
         "escalade": "^3.1.1",
@@ -37701,14 +41420,12 @@
         "emoji-regex": {
           "version": "8.0.0",
           "resolved": "https://nexus.unige.ch/repository/npm-all/emoji-regex/-/emoji-regex-8.0.0.tgz",
-          "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
-          "dev": true
+          "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
         },
         "string-width": {
           "version": "4.2.3",
           "resolved": "https://nexus.unige.ch/repository/npm-all/string-width/-/string-width-4.2.3.tgz",
           "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
-          "dev": true,
           "requires": {
             "emoji-regex": "^8.0.0",
             "is-fullwidth-code-point": "^3.0.0",
@@ -37718,8 +41435,7 @@
         "yargs-parser": {
           "version": "21.0.0",
           "resolved": "https://nexus.unige.ch/repository/npm-all/yargs-parser/-/yargs-parser-21.0.0.tgz",
-          "integrity": "sha512-z9kApYUOCwoeZ78rfRYYWdiU/iNL6mwwYlkkZfJoyMR1xps+NEBX5X7XmRpxkZHhXJ6+Ey00IwKxBBSW9FIjyA==",
-          "dev": true
+          "integrity": "sha512-z9kApYUOCwoeZ78rfRYYWdiU/iNL6mwwYlkkZfJoyMR1xps+NEBX5X7XmRpxkZHhXJ6+Ey00IwKxBBSW9FIjyA=="
         }
       }
     },
@@ -37748,8 +41464,12 @@
     "yn": {
       "version": "3.1.1",
       "resolved": "https://nexus.unige.ch/repository/npm-all/yn/-/yn-3.1.1.tgz",
-      "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
-      "dev": true
+      "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q=="
+    },
+    "yocto-queue": {
+      "version": "0.1.0",
+      "resolved": "https://nexus.unige.ch/repository/npm-all/yocto-queue/-/yocto-queue-0.1.0.tgz",
+      "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="
     },
     "zone.js": {
       "version": "0.11.4",
diff --git a/package.json b/package.json
index eb8c4be8d3ad0a548994303dee0a18165fc30307..f901734969a6bc6c7e64db79ef218c217f66b198 100644
--- a/package.json
+++ b/package.json
@@ -51,8 +51,11 @@
     "refresh-ngsw-config": "ngsw-config dist/dlcm-portal ngsw-config.json",
     "build-solidify": "rm -rf node_modules/solidify-frontend && cd ../solidify-frontend && npm run build && cp -fr dist/solidify-frontend ../dlcm-portal/node_modules && cd ../dlcm-portal && npm run solidify-generate-timestamped-version && npm run copy-scripts-solidify",
     "solidify-generate-timestamped-version": "ts-node --project tsconfig-ts-node.json scripts/solidify-generate-timestamped-version.script.ts",
+    "extract-licenses": "license-checker-rseidelsohn --csv --out ./dist/dlcm-portal/third-party-licenses.csv",
+    "prepare-release": "npm run update-project-version $npm_config_release && npm run update-changelog && npm run generate-release-note",
     "update-project-version": "ts-node --project tsconfig-ts-node.json scripts/dlcm-update-version.script.ts",
-    "extract-licenses": "license-checker-rseidelsohn --csv --out ./dist/dlcm-portal/third-party-licenses.csv"
+    "update-changelog": "standard-version -t \"dlcm-\" --skip.bump --skip.tag --skip.commit",
+    "generate-release-note": "rm -f RELEASE_NOTES.md && standard-version -t \"dlcm-\" --skip.bump --skip.tag --skip.commit --infile=RELEASE_NOTES.md --header=\"\""
   },
   "dependencies": {
     "@angular/animations": "13.2.1",
@@ -67,6 +70,8 @@
     "@angular/platform-browser-dynamic": "13.2.1",
     "@angular/router": "13.2.1",
     "@angular/service-worker": "13.2.1",
+    "@commitlint/cli": "16.2.1",
+    "@commitlint/config-conventional": "16.2.1",
     "@cospired/i18n-iso-languages": "3.1.1",
     "@elastic/apm-rum-angular": "2.1.3",
     "@fortawesome/angular-fontawesome": "0.10.1",
@@ -87,6 +92,7 @@
     "hash-wasm": "4.9.0",
     "jsme": "2017.2.26",
     "jsmol": "1.1.0",
+    "markdown-it": "12.3.2",
     "moment": "2.29.1",
     "ng2-pdf-viewer": "7.0.2",
     "ngx-cookie": "5.0.2",
@@ -98,7 +104,7 @@
     "normalize.css": "8.0.1",
     "patch-package": "6.4.7",
     "rxjs": "7.5.2",
-    "solidify-frontend": "3.0.20",
+    "solidify-frontend": "3.0.21",
     "tiff.js": "1.0.0",
     "tslib": "2.3.1",
     "videojs-wavesurfer": "3.8.0",
@@ -136,6 +142,7 @@
     "eslint-plugin-prefer-arrow": "1.2.3",
     "eslint-plugin-solidify": "0.0.2",
     "eslint-plugin-unused-imports": "2.0.0",
+    "husky": "7.0.4",
     "jasmine-core": "4.0.0",
     "jasmine-spec-reporter": "7.0.0",
     "karma": "6.3.13",
@@ -148,9 +155,20 @@
     "local-web-server": "5.1.1",
     "ngx-translate-extract-csv": "1.1.1",
     "protractor": "7.0.0",
+    "standard-version": "9.3.2",
     "ts-loader": "9.2.6",
     "ts-node": "10.4.0",
     "typescript": "4.5.5",
     "webpack": "5.68.0"
+  },
+  "config": {
+    "commitizen": {
+      "path": "cz-conventional-changelog"
+    }
+  },
+  "husky": {
+    "hooks": {
+      "commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
+    }
   }
 }