From aea7406586f4da75898ee4ddcc02c96d0e0faaff Mon Sep 17 00:00:00 2001
From: Kalle <38327916+Sendouc@users.noreply.github.com>
Date: Wed, 23 Nov 2022 17:38:38 +0200
Subject: [PATCH] Map Planner (#1145)
* Initial
* Add images
* Tweaks
* Proper sized bg image and weapons
* Stage bg picker
* Outlined weapon images for planner
* First version
* Lint
* Add alt and title to weapon
---
app/components/Planner.tsx | 252 +++
app/components/layout/nav-items.json | 5 +
app/hooks/useForceRefresh.tsx | 9 +
app/modules/i18n/config.ts | 2 +
app/modules/i18n/index.ts | 2 +-
app/routes/contributions.tsx | 10 +
app/routes/index.tsx | 7 +
app/routes/plans.tsx | 22 +
app/styles/common.css | 2 +-
app/styles/plans.css | 92 +
app/utils/urls.ts | 14 +-
package-lock.json | 2357 +++++++++++++++++++-
package.json | 4 +
public/img/layout/plans.avif | Bin 0 -> 5545 bytes
public/img/layout/plans.png | Bin 0 -> 36122 bytes
public/img/main-weapons-outlined/0.avif | Bin 0 -> 2636 bytes
public/img/main-weapons-outlined/0.png | Bin 0 -> 7749 bytes
public/img/main-weapons-outlined/10.avif | Bin 0 -> 2184 bytes
public/img/main-weapons-outlined/10.png | Bin 0 -> 6825 bytes
public/img/main-weapons-outlined/1000.avif | Bin 0 -> 2451 bytes
public/img/main-weapons-outlined/1000.png | Bin 0 -> 7824 bytes
public/img/main-weapons-outlined/1010.avif | Bin 0 -> 2407 bytes
public/img/main-weapons-outlined/1010.png | Bin 0 -> 6758 bytes
public/img/main-weapons-outlined/1020.avif | Bin 0 -> 2522 bytes
public/img/main-weapons-outlined/1020.png | Bin 0 -> 8613 bytes
public/img/main-weapons-outlined/1030.avif | Bin 0 -> 2317 bytes
public/img/main-weapons-outlined/1030.png | Bin 0 -> 7311 bytes
public/img/main-weapons-outlined/1100.avif | Bin 0 -> 2213 bytes
public/img/main-weapons-outlined/1100.png | Bin 0 -> 4643 bytes
public/img/main-weapons-outlined/1110.avif | Bin 0 -> 2350 bytes
public/img/main-weapons-outlined/1110.png | Bin 0 -> 5364 bytes
public/img/main-weapons-outlined/20.avif | Bin 0 -> 2722 bytes
public/img/main-weapons-outlined/20.png | Bin 0 -> 8018 bytes
public/img/main-weapons-outlined/200.avif | Bin 0 -> 2294 bytes
public/img/main-weapons-outlined/200.png | Bin 0 -> 6407 bytes
public/img/main-weapons-outlined/2000.avif | Bin 0 -> 1976 bytes
public/img/main-weapons-outlined/2000.png | Bin 0 -> 5412 bytes
public/img/main-weapons-outlined/2010.avif | Bin 0 -> 2085 bytes
public/img/main-weapons-outlined/2010.png | Bin 0 -> 4715 bytes
public/img/main-weapons-outlined/2020.avif | Bin 0 -> 2647 bytes
public/img/main-weapons-outlined/2020.png | Bin 0 -> 5102 bytes
public/img/main-weapons-outlined/2030.avif | Bin 0 -> 2000 bytes
public/img/main-weapons-outlined/2030.png | Bin 0 -> 5387 bytes
public/img/main-weapons-outlined/2040.avif | Bin 0 -> 2378 bytes
public/img/main-weapons-outlined/2040.png | Bin 0 -> 5806 bytes
public/img/main-weapons-outlined/2050.avif | Bin 0 -> 1967 bytes
public/img/main-weapons-outlined/2050.png | Bin 0 -> 4913 bytes
public/img/main-weapons-outlined/2060.avif | Bin 0 -> 2845 bytes
public/img/main-weapons-outlined/2060.png | Bin 0 -> 7547 bytes
public/img/main-weapons-outlined/210.avif | Bin 0 -> 2821 bytes
public/img/main-weapons-outlined/210.png | Bin 0 -> 8565 bytes
public/img/main-weapons-outlined/220.avif | Bin 0 -> 2698 bytes
public/img/main-weapons-outlined/220.png | Bin 0 -> 8008 bytes
public/img/main-weapons-outlined/230.avif | Bin 0 -> 2679 bytes
public/img/main-weapons-outlined/230.png | Bin 0 -> 9005 bytes
public/img/main-weapons-outlined/240.avif | Bin 0 -> 2643 bytes
public/img/main-weapons-outlined/240.png | Bin 0 -> 8471 bytes
public/img/main-weapons-outlined/250.avif | Bin 0 -> 2561 bytes
public/img/main-weapons-outlined/250.png | Bin 0 -> 7719 bytes
public/img/main-weapons-outlined/30.avif | Bin 0 -> 2697 bytes
public/img/main-weapons-outlined/30.png | Bin 0 -> 6670 bytes
public/img/main-weapons-outlined/300.avif | Bin 0 -> 2404 bytes
public/img/main-weapons-outlined/300.png | Bin 0 -> 8556 bytes
public/img/main-weapons-outlined/3000.avif | Bin 0 -> 2625 bytes
public/img/main-weapons-outlined/3000.png | Bin 0 -> 8462 bytes
public/img/main-weapons-outlined/3010.avif | Bin 0 -> 2178 bytes
public/img/main-weapons-outlined/3010.png | Bin 0 -> 5054 bytes
public/img/main-weapons-outlined/3020.avif | Bin 0 -> 2309 bytes
public/img/main-weapons-outlined/3020.png | Bin 0 -> 6593 bytes
public/img/main-weapons-outlined/3030.avif | Bin 0 -> 2130 bytes
public/img/main-weapons-outlined/3030.png | Bin 0 -> 5975 bytes
public/img/main-weapons-outlined/3040.avif | Bin 0 -> 2491 bytes
public/img/main-weapons-outlined/3040.png | Bin 0 -> 8093 bytes
public/img/main-weapons-outlined/310.avif | Bin 0 -> 2245 bytes
public/img/main-weapons-outlined/310.png | Bin 0 -> 7909 bytes
public/img/main-weapons-outlined/40.avif | Bin 0 -> 2457 bytes
public/img/main-weapons-outlined/40.png | Bin 0 -> 7077 bytes
public/img/main-weapons-outlined/400.avif | Bin 0 -> 2992 bytes
public/img/main-weapons-outlined/400.png | Bin 0 -> 7306 bytes
public/img/main-weapons-outlined/4000.avif | Bin 0 -> 2623 bytes
public/img/main-weapons-outlined/4000.png | Bin 0 -> 6122 bytes
public/img/main-weapons-outlined/4010.avif | Bin 0 -> 2205 bytes
public/img/main-weapons-outlined/4010.png | Bin 0 -> 7010 bytes
public/img/main-weapons-outlined/4020.avif | Bin 0 -> 2677 bytes
public/img/main-weapons-outlined/4020.png | Bin 0 -> 8557 bytes
public/img/main-weapons-outlined/4030.avif | Bin 0 -> 2252 bytes
public/img/main-weapons-outlined/4030.png | Bin 0 -> 6171 bytes
public/img/main-weapons-outlined/4040.avif | Bin 0 -> 2128 bytes
public/img/main-weapons-outlined/4040.png | Bin 0 -> 5746 bytes
public/img/main-weapons-outlined/45.avif | Bin 0 -> 2451 bytes
public/img/main-weapons-outlined/45.png | Bin 0 -> 7565 bytes
public/img/main-weapons-outlined/50.avif | Bin 0 -> 2436 bytes
public/img/main-weapons-outlined/50.png | Bin 0 -> 7220 bytes
public/img/main-weapons-outlined/5000.avif | Bin 0 -> 3365 bytes
public/img/main-weapons-outlined/5000.png | Bin 0 -> 10138 bytes
public/img/main-weapons-outlined/5010.avif | Bin 0 -> 3003 bytes
public/img/main-weapons-outlined/5010.png | Bin 0 -> 8383 bytes
public/img/main-weapons-outlined/5020.avif | Bin 0 -> 2974 bytes
public/img/main-weapons-outlined/5020.png | Bin 0 -> 10365 bytes
public/img/main-weapons-outlined/5030.avif | Bin 0 -> 2449 bytes
public/img/main-weapons-outlined/5030.png | Bin 0 -> 7917 bytes
public/img/main-weapons-outlined/5040.avif | Bin 0 -> 2845 bytes
public/img/main-weapons-outlined/5040.png | Bin 0 -> 9562 bytes
public/img/main-weapons-outlined/60.avif | Bin 0 -> 1863 bytes
public/img/main-weapons-outlined/60.png | Bin 0 -> 4951 bytes
public/img/main-weapons-outlined/6000.avif | Bin 0 -> 2444 bytes
public/img/main-weapons-outlined/6000.png | Bin 0 -> 7508 bytes
public/img/main-weapons-outlined/6010.avif | Bin 0 -> 2535 bytes
public/img/main-weapons-outlined/6010.png | Bin 0 -> 6461 bytes
public/img/main-weapons-outlined/6020.avif | Bin 0 -> 1929 bytes
public/img/main-weapons-outlined/6020.png | Bin 0 -> 4633 bytes
public/img/main-weapons-outlined/70.avif | Bin 0 -> 2917 bytes
public/img/main-weapons-outlined/70.png | Bin 0 -> 7032 bytes
public/img/main-weapons-outlined/7010.avif | Bin 0 -> 2834 bytes
public/img/main-weapons-outlined/7010.png | Bin 0 -> 8076 bytes
public/img/main-weapons-outlined/7020.avif | Bin 0 -> 3067 bytes
public/img/main-weapons-outlined/7020.png | Bin 0 -> 8508 bytes
public/img/main-weapons-outlined/80.avif | Bin 0 -> 2401 bytes
public/img/main-weapons-outlined/80.png | Bin 0 -> 7056 bytes
public/img/main-weapons-outlined/8000.avif | Bin 0 -> 2442 bytes
public/img/main-weapons-outlined/8000.png | Bin 0 -> 6860 bytes
public/img/main-weapons-outlined/8010.avif | Bin 0 -> 2552 bytes
public/img/main-weapons-outlined/8010.png | Bin 0 -> 7382 bytes
public/img/main-weapons-outlined/90.avif | Bin 0 -> 2064 bytes
public/img/main-weapons-outlined/90.png | Bin 0 -> 6198 bytes
public/img/planner-maps/test.png | Bin 0 -> 106363 bytes
public/img/stage-minimaps/0-CB.jpeg | Bin 0 -> 117067 bytes
public/img/stage-minimaps/0-RM.jpeg | Bin 0 -> 127221 bytes
public/img/stage-minimaps/0-SZ.jpeg | Bin 0 -> 119579 bytes
public/img/stage-minimaps/0-TC.jpeg | Bin 0 -> 116960 bytes
public/img/stage-minimaps/0-TW.jpeg | Bin 0 -> 115564 bytes
public/img/stage-minimaps/1-CB.jpeg | Bin 0 -> 111192 bytes
public/img/stage-minimaps/1-RM.jpeg | Bin 0 -> 106363 bytes
public/img/stage-minimaps/1-SZ.jpeg | Bin 0 -> 111507 bytes
public/img/stage-minimaps/1-TC.jpeg | Bin 0 -> 110171 bytes
public/img/stage-minimaps/1-TW.jpeg | Bin 0 -> 96709 bytes
public/img/stage-minimaps/10-CB.jpeg | Bin 0 -> 119619 bytes
public/img/stage-minimaps/10-RM.jpeg | Bin 0 -> 130216 bytes
public/img/stage-minimaps/10-SZ.jpeg | Bin 0 -> 119839 bytes
public/img/stage-minimaps/10-TC.jpeg | Bin 0 -> 111114 bytes
public/img/stage-minimaps/10-TW.jpeg | Bin 0 -> 115483 bytes
public/img/stage-minimaps/11-CB.jpeg | Bin 0 -> 134058 bytes
public/img/stage-minimaps/11-RM.jpeg | Bin 0 -> 137132 bytes
public/img/stage-minimaps/11-SZ.jpeg | Bin 0 -> 130165 bytes
public/img/stage-minimaps/11-TC.jpeg | Bin 0 -> 130976 bytes
public/img/stage-minimaps/11-TW.jpeg | Bin 0 -> 129259 bytes
public/img/stage-minimaps/2-CB.jpeg | Bin 0 -> 132511 bytes
public/img/stage-minimaps/2-RM.jpeg | Bin 0 -> 137415 bytes
public/img/stage-minimaps/2-SZ.jpeg | Bin 0 -> 128237 bytes
public/img/stage-minimaps/2-TC.jpeg | Bin 0 -> 124148 bytes
public/img/stage-minimaps/2-TW.jpeg | Bin 0 -> 133962 bytes
public/img/stage-minimaps/3-CB.jpeg | Bin 0 -> 117739 bytes
public/img/stage-minimaps/3-RM.jpeg | Bin 0 -> 135705 bytes
public/img/stage-minimaps/3-SZ.jpeg | Bin 0 -> 118600 bytes
public/img/stage-minimaps/3-TC.jpeg | Bin 0 -> 116303 bytes
public/img/stage-minimaps/3-TW.jpeg | Bin 0 -> 115683 bytes
public/img/stage-minimaps/4-CB.jpeg | Bin 0 -> 121881 bytes
public/img/stage-minimaps/4-RM.jpeg | Bin 0 -> 124681 bytes
public/img/stage-minimaps/4-SZ.jpeg | Bin 0 -> 122361 bytes
public/img/stage-minimaps/4-TC.jpeg | Bin 0 -> 119092 bytes
public/img/stage-minimaps/4-TW.jpeg | Bin 0 -> 120771 bytes
public/img/stage-minimaps/5-CB.jpeg | Bin 0 -> 110912 bytes
public/img/stage-minimaps/5-RM.jpeg | Bin 0 -> 100068 bytes
public/img/stage-minimaps/5-SZ.jpeg | Bin 0 -> 95471 bytes
public/img/stage-minimaps/5-TC.jpeg | Bin 0 -> 95477 bytes
public/img/stage-minimaps/5-TW.jpeg | Bin 0 -> 95175 bytes
public/img/stage-minimaps/6-CB.jpeg | Bin 0 -> 126359 bytes
public/img/stage-minimaps/6-RM.jpeg | Bin 0 -> 135921 bytes
public/img/stage-minimaps/6-SZ.jpeg | Bin 0 -> 128337 bytes
public/img/stage-minimaps/6-TC.jpeg | Bin 0 -> 125394 bytes
public/img/stage-minimaps/6-TW.jpeg | Bin 0 -> 126090 bytes
public/img/stage-minimaps/7-CB.jpeg | Bin 0 -> 126794 bytes
public/img/stage-minimaps/7-RM.jpeg | Bin 0 -> 112846 bytes
public/img/stage-minimaps/7-SZ.jpeg | Bin 0 -> 108149 bytes
public/img/stage-minimaps/7-TC.jpeg | Bin 0 -> 122793 bytes
public/img/stage-minimaps/7-TW.jpeg | Bin 0 -> 105570 bytes
public/img/stage-minimaps/8-CB.jpeg | Bin 0 -> 132371 bytes
public/img/stage-minimaps/8-RM.jpeg | Bin 0 -> 135672 bytes
public/img/stage-minimaps/8-SZ.jpeg | Bin 0 -> 133921 bytes
public/img/stage-minimaps/8-TC.jpeg | Bin 0 -> 129396 bytes
public/img/stage-minimaps/8-TW.jpeg | Bin 0 -> 132916 bytes
public/img/stage-minimaps/9-CB.jpeg | Bin 0 -> 123143 bytes
public/img/stage-minimaps/9-RM.jpeg | Bin 0 -> 128425 bytes
public/img/stage-minimaps/9-SZ.jpeg | Bin 0 -> 121841 bytes
public/img/stage-minimaps/9-TC.jpeg | Bin 0 -> 118159 bytes
public/img/stage-minimaps/9-TW.jpeg | Bin 0 -> 122751 bytes
public/locales/da/contributions.json | 1 -
public/locales/de/contributions.json | 1 -
public/locales/en/common.json | 6 +-
public/locales/en/contributions.json | 3 +-
public/locales/en/front.json | 1 +
public/locales/es-ES/contributions.json | 1 -
public/locales/es-US/contributions.json | 1 -
public/locales/ja/contributions.json | 1 -
public/locales/ko/contributions.json | 1 -
public/locales/nl/contributions.json | 1 -
public/locales/ru/contributions.json | 1 -
public/locales/zh/contributions.json | 1 -
scripts/replace-weapon-names.ts | 42 +
tsconfig.json | 1 +
200 files changed, 2804 insertions(+), 36 deletions(-)
create mode 100644 app/components/Planner.tsx
create mode 100644 app/hooks/useForceRefresh.tsx
create mode 100644 app/routes/plans.tsx
create mode 100644 app/styles/plans.css
create mode 100644 public/img/layout/plans.avif
create mode 100644 public/img/layout/plans.png
create mode 100644 public/img/main-weapons-outlined/0.avif
create mode 100644 public/img/main-weapons-outlined/0.png
create mode 100644 public/img/main-weapons-outlined/10.avif
create mode 100644 public/img/main-weapons-outlined/10.png
create mode 100644 public/img/main-weapons-outlined/1000.avif
create mode 100644 public/img/main-weapons-outlined/1000.png
create mode 100644 public/img/main-weapons-outlined/1010.avif
create mode 100644 public/img/main-weapons-outlined/1010.png
create mode 100644 public/img/main-weapons-outlined/1020.avif
create mode 100644 public/img/main-weapons-outlined/1020.png
create mode 100644 public/img/main-weapons-outlined/1030.avif
create mode 100644 public/img/main-weapons-outlined/1030.png
create mode 100644 public/img/main-weapons-outlined/1100.avif
create mode 100644 public/img/main-weapons-outlined/1100.png
create mode 100644 public/img/main-weapons-outlined/1110.avif
create mode 100644 public/img/main-weapons-outlined/1110.png
create mode 100644 public/img/main-weapons-outlined/20.avif
create mode 100644 public/img/main-weapons-outlined/20.png
create mode 100644 public/img/main-weapons-outlined/200.avif
create mode 100644 public/img/main-weapons-outlined/200.png
create mode 100644 public/img/main-weapons-outlined/2000.avif
create mode 100644 public/img/main-weapons-outlined/2000.png
create mode 100644 public/img/main-weapons-outlined/2010.avif
create mode 100644 public/img/main-weapons-outlined/2010.png
create mode 100644 public/img/main-weapons-outlined/2020.avif
create mode 100644 public/img/main-weapons-outlined/2020.png
create mode 100644 public/img/main-weapons-outlined/2030.avif
create mode 100644 public/img/main-weapons-outlined/2030.png
create mode 100644 public/img/main-weapons-outlined/2040.avif
create mode 100644 public/img/main-weapons-outlined/2040.png
create mode 100644 public/img/main-weapons-outlined/2050.avif
create mode 100644 public/img/main-weapons-outlined/2050.png
create mode 100644 public/img/main-weapons-outlined/2060.avif
create mode 100644 public/img/main-weapons-outlined/2060.png
create mode 100644 public/img/main-weapons-outlined/210.avif
create mode 100644 public/img/main-weapons-outlined/210.png
create mode 100644 public/img/main-weapons-outlined/220.avif
create mode 100644 public/img/main-weapons-outlined/220.png
create mode 100644 public/img/main-weapons-outlined/230.avif
create mode 100644 public/img/main-weapons-outlined/230.png
create mode 100644 public/img/main-weapons-outlined/240.avif
create mode 100644 public/img/main-weapons-outlined/240.png
create mode 100644 public/img/main-weapons-outlined/250.avif
create mode 100644 public/img/main-weapons-outlined/250.png
create mode 100644 public/img/main-weapons-outlined/30.avif
create mode 100644 public/img/main-weapons-outlined/30.png
create mode 100644 public/img/main-weapons-outlined/300.avif
create mode 100644 public/img/main-weapons-outlined/300.png
create mode 100644 public/img/main-weapons-outlined/3000.avif
create mode 100644 public/img/main-weapons-outlined/3000.png
create mode 100644 public/img/main-weapons-outlined/3010.avif
create mode 100644 public/img/main-weapons-outlined/3010.png
create mode 100644 public/img/main-weapons-outlined/3020.avif
create mode 100644 public/img/main-weapons-outlined/3020.png
create mode 100644 public/img/main-weapons-outlined/3030.avif
create mode 100644 public/img/main-weapons-outlined/3030.png
create mode 100644 public/img/main-weapons-outlined/3040.avif
create mode 100644 public/img/main-weapons-outlined/3040.png
create mode 100644 public/img/main-weapons-outlined/310.avif
create mode 100644 public/img/main-weapons-outlined/310.png
create mode 100644 public/img/main-weapons-outlined/40.avif
create mode 100644 public/img/main-weapons-outlined/40.png
create mode 100644 public/img/main-weapons-outlined/400.avif
create mode 100644 public/img/main-weapons-outlined/400.png
create mode 100644 public/img/main-weapons-outlined/4000.avif
create mode 100644 public/img/main-weapons-outlined/4000.png
create mode 100644 public/img/main-weapons-outlined/4010.avif
create mode 100644 public/img/main-weapons-outlined/4010.png
create mode 100644 public/img/main-weapons-outlined/4020.avif
create mode 100644 public/img/main-weapons-outlined/4020.png
create mode 100644 public/img/main-weapons-outlined/4030.avif
create mode 100644 public/img/main-weapons-outlined/4030.png
create mode 100644 public/img/main-weapons-outlined/4040.avif
create mode 100644 public/img/main-weapons-outlined/4040.png
create mode 100644 public/img/main-weapons-outlined/45.avif
create mode 100644 public/img/main-weapons-outlined/45.png
create mode 100644 public/img/main-weapons-outlined/50.avif
create mode 100644 public/img/main-weapons-outlined/50.png
create mode 100644 public/img/main-weapons-outlined/5000.avif
create mode 100644 public/img/main-weapons-outlined/5000.png
create mode 100644 public/img/main-weapons-outlined/5010.avif
create mode 100644 public/img/main-weapons-outlined/5010.png
create mode 100644 public/img/main-weapons-outlined/5020.avif
create mode 100644 public/img/main-weapons-outlined/5020.png
create mode 100644 public/img/main-weapons-outlined/5030.avif
create mode 100644 public/img/main-weapons-outlined/5030.png
create mode 100644 public/img/main-weapons-outlined/5040.avif
create mode 100644 public/img/main-weapons-outlined/5040.png
create mode 100644 public/img/main-weapons-outlined/60.avif
create mode 100644 public/img/main-weapons-outlined/60.png
create mode 100644 public/img/main-weapons-outlined/6000.avif
create mode 100644 public/img/main-weapons-outlined/6000.png
create mode 100644 public/img/main-weapons-outlined/6010.avif
create mode 100644 public/img/main-weapons-outlined/6010.png
create mode 100644 public/img/main-weapons-outlined/6020.avif
create mode 100644 public/img/main-weapons-outlined/6020.png
create mode 100644 public/img/main-weapons-outlined/70.avif
create mode 100644 public/img/main-weapons-outlined/70.png
create mode 100644 public/img/main-weapons-outlined/7010.avif
create mode 100644 public/img/main-weapons-outlined/7010.png
create mode 100644 public/img/main-weapons-outlined/7020.avif
create mode 100644 public/img/main-weapons-outlined/7020.png
create mode 100644 public/img/main-weapons-outlined/80.avif
create mode 100644 public/img/main-weapons-outlined/80.png
create mode 100644 public/img/main-weapons-outlined/8000.avif
create mode 100644 public/img/main-weapons-outlined/8000.png
create mode 100644 public/img/main-weapons-outlined/8010.avif
create mode 100644 public/img/main-weapons-outlined/8010.png
create mode 100644 public/img/main-weapons-outlined/90.avif
create mode 100644 public/img/main-weapons-outlined/90.png
create mode 100644 public/img/planner-maps/test.png
create mode 100644 public/img/stage-minimaps/0-CB.jpeg
create mode 100644 public/img/stage-minimaps/0-RM.jpeg
create mode 100644 public/img/stage-minimaps/0-SZ.jpeg
create mode 100644 public/img/stage-minimaps/0-TC.jpeg
create mode 100644 public/img/stage-minimaps/0-TW.jpeg
create mode 100644 public/img/stage-minimaps/1-CB.jpeg
create mode 100644 public/img/stage-minimaps/1-RM.jpeg
create mode 100644 public/img/stage-minimaps/1-SZ.jpeg
create mode 100644 public/img/stage-minimaps/1-TC.jpeg
create mode 100644 public/img/stage-minimaps/1-TW.jpeg
create mode 100644 public/img/stage-minimaps/10-CB.jpeg
create mode 100644 public/img/stage-minimaps/10-RM.jpeg
create mode 100644 public/img/stage-minimaps/10-SZ.jpeg
create mode 100644 public/img/stage-minimaps/10-TC.jpeg
create mode 100644 public/img/stage-minimaps/10-TW.jpeg
create mode 100644 public/img/stage-minimaps/11-CB.jpeg
create mode 100644 public/img/stage-minimaps/11-RM.jpeg
create mode 100644 public/img/stage-minimaps/11-SZ.jpeg
create mode 100644 public/img/stage-minimaps/11-TC.jpeg
create mode 100644 public/img/stage-minimaps/11-TW.jpeg
create mode 100644 public/img/stage-minimaps/2-CB.jpeg
create mode 100644 public/img/stage-minimaps/2-RM.jpeg
create mode 100644 public/img/stage-minimaps/2-SZ.jpeg
create mode 100644 public/img/stage-minimaps/2-TC.jpeg
create mode 100644 public/img/stage-minimaps/2-TW.jpeg
create mode 100644 public/img/stage-minimaps/3-CB.jpeg
create mode 100644 public/img/stage-minimaps/3-RM.jpeg
create mode 100644 public/img/stage-minimaps/3-SZ.jpeg
create mode 100644 public/img/stage-minimaps/3-TC.jpeg
create mode 100644 public/img/stage-minimaps/3-TW.jpeg
create mode 100644 public/img/stage-minimaps/4-CB.jpeg
create mode 100644 public/img/stage-minimaps/4-RM.jpeg
create mode 100644 public/img/stage-minimaps/4-SZ.jpeg
create mode 100644 public/img/stage-minimaps/4-TC.jpeg
create mode 100644 public/img/stage-minimaps/4-TW.jpeg
create mode 100644 public/img/stage-minimaps/5-CB.jpeg
create mode 100644 public/img/stage-minimaps/5-RM.jpeg
create mode 100644 public/img/stage-minimaps/5-SZ.jpeg
create mode 100644 public/img/stage-minimaps/5-TC.jpeg
create mode 100644 public/img/stage-minimaps/5-TW.jpeg
create mode 100644 public/img/stage-minimaps/6-CB.jpeg
create mode 100644 public/img/stage-minimaps/6-RM.jpeg
create mode 100644 public/img/stage-minimaps/6-SZ.jpeg
create mode 100644 public/img/stage-minimaps/6-TC.jpeg
create mode 100644 public/img/stage-minimaps/6-TW.jpeg
create mode 100644 public/img/stage-minimaps/7-CB.jpeg
create mode 100644 public/img/stage-minimaps/7-RM.jpeg
create mode 100644 public/img/stage-minimaps/7-SZ.jpeg
create mode 100644 public/img/stage-minimaps/7-TC.jpeg
create mode 100644 public/img/stage-minimaps/7-TW.jpeg
create mode 100644 public/img/stage-minimaps/8-CB.jpeg
create mode 100644 public/img/stage-minimaps/8-RM.jpeg
create mode 100644 public/img/stage-minimaps/8-SZ.jpeg
create mode 100644 public/img/stage-minimaps/8-TC.jpeg
create mode 100644 public/img/stage-minimaps/8-TW.jpeg
create mode 100644 public/img/stage-minimaps/9-CB.jpeg
create mode 100644 public/img/stage-minimaps/9-RM.jpeg
create mode 100644 public/img/stage-minimaps/9-SZ.jpeg
create mode 100644 public/img/stage-minimaps/9-TC.jpeg
create mode 100644 public/img/stage-minimaps/9-TW.jpeg
create mode 100644 scripts/replace-weapon-names.ts
diff --git a/app/components/Planner.tsx b/app/components/Planner.tsx
new file mode 100644
index 000000000..98fd66585
--- /dev/null
+++ b/app/components/Planner.tsx
@@ -0,0 +1,252 @@
+import type { TDImageAsset } from "@tldraw/tldraw";
+import {
+ Tldraw,
+ ColorStyle,
+ type TldrawApp,
+ TDShapeType,
+ TDAssetType,
+} from "@tldraw/tldraw";
+import clsx from "clsx";
+import * as React from "react";
+import { useForceRefreshOnMount } from "~/hooks/useForceRefresh";
+import { useTranslation } from "~/hooks/useTranslation";
+import type { MainWeaponId, ModeShort, StageId } from "~/modules/in-game-lists";
+import { stageIds } from "~/modules/in-game-lists";
+import { mainWeaponIds } from "~/modules/in-game-lists";
+import { modesShort } from "~/modules/in-game-lists/modes";
+import {
+ mainWeaponImageUrl,
+ modeImageUrl,
+ outlinedMainWeaponImageUrl,
+ stageMinimapImageUrlWithEnding,
+ TLDRAW_URL,
+} from "~/utils/urls";
+import { Button } from "./Button";
+import { Image } from "./Image";
+import { nanoid } from "nanoid";
+import randomInt from "just-random-integer";
+import type { LanguageCode } from "~/modules/i18n";
+
+export default function Planner() {
+ const { t } = useTranslation(["common", "weapons"]);
+ const { i18n } = useTranslation();
+ const appRef = React.useRef();
+ const app = appRef.current!;
+
+ useForceRefreshOnMount();
+
+ const handleMount = React.useCallback(
+ (mountedApp: TldrawApp) => {
+ appRef.current = mountedApp;
+ mountedApp.setSetting(
+ "language",
+ ourLanguageToTldrawLanguage(i18n.language)
+ );
+ mountedApp.style({ color: ColorStyle.Red });
+ },
+ [i18n]
+ );
+
+ const handleAddImage = React.useCallback(
+ ({
+ src,
+ size,
+ isLocked,
+ point,
+ cb,
+ }: {
+ src: string;
+ size: number[];
+ isLocked: boolean;
+ point: number[];
+ cb?: () => void;
+ }) => {
+ if (!app) return;
+
+ const asset: TDImageAsset = {
+ id: src,
+ type: TDAssetType.Image,
+ fileName: "img",
+ src,
+ size,
+ };
+
+ // tldraw creator:
+ // "So image shapes in tldraw work like this: we add an asset to the app.assets table, then we reference that asset in the shape object itself.
+ // This lets us have multiple copies of an image on the canvas without having all of those take up memory individually"
+
+ app.insertContent({
+ assets: [asset],
+ shapes: [],
+ });
+
+ app.createShapes({
+ id: nanoid(),
+ type: TDShapeType.Image,
+ assetId: src,
+ size,
+ isAspectRatioLocked: true,
+ isLocked,
+ point,
+ });
+ cb?.();
+ },
+ [app]
+ );
+
+ const handleAddWeapon = React.useCallback(
+ (weaponId: MainWeaponId) => {
+ handleAddImage({
+ src: `${outlinedMainWeaponImageUrl(weaponId)}.png`,
+ size: [45, 45],
+ isLocked: false,
+ point: [randomInt(250, 1000), randomInt(250, 750)],
+ cb: () => app.selectTool("select"),
+ });
+ },
+ [app, handleAddImage]
+ );
+
+ const handleAddBackgroundImage = React.useCallback(
+ ({ stageId, modeShort }: { stageId: StageId; modeShort: ModeShort }) => {
+ app.resetDocument();
+ handleAddImage({
+ src: stageMinimapImageUrlWithEnding({ stageId, modeShort }),
+ size: [1600, 900],
+ isLocked: true,
+ point: [65, 20],
+ });
+ },
+ [app, handleAddImage]
+ );
+
+ return (
+ <>
+
+
+ {mainWeaponIds.map((weaponId) => {
+ return (
+
+ );
+ })}
+
+
+
+ >
+ );
+}
+
+function StageBackgroundSelector({
+ onAddBackground,
+}: {
+ onAddBackground: ({
+ stageId,
+ modeShort,
+ }: {
+ stageId: StageId;
+ modeShort: ModeShort;
+ }) => void;
+}) {
+ const { t } = useTranslation(["game-misc", "common"]);
+ const [stageId, setStageId] = React.useState(stageIds[0]);
+ const [selectedMode, setSelectedMode] = React.useState("SZ");
+
+ return (
+
+
+
+ {modesShort.map((mode) => {
+ const selected = mode === selectedMode;
+ return (
+
+ );
+ })}
+
+
+
+ );
+}
+
+// when adding new language check from Tldraw codebase what is the matching
+// language in TRANSLATIONS constant, or default to english if none found
+const ourLanguageToTldrawLanguageMap: Record = {
+ "es-US": "es",
+ "es-ES": "es",
+ ko: "ko-kr",
+ nl: "en",
+ zh: "zh-ch",
+ // map to itself
+ da: "da",
+ de: "de",
+ en: "en",
+ fr: "fr",
+ it: "it",
+ ja: "ja",
+ ru: "ru",
+};
+function ourLanguageToTldrawLanguage(ourLanguageUserSelected: string) {
+ for (const [ourLanguage, tldrawLanguage] of Object.entries(
+ ourLanguageToTldrawLanguageMap
+ )) {
+ if (ourLanguage === ourLanguageUserSelected) {
+ return tldrawLanguage;
+ }
+ }
+
+ console.error(`No tldraw language found for: ${ourLanguageUserSelected}`);
+ return "en";
+}
diff --git a/app/components/layout/nav-items.json b/app/components/layout/nav-items.json
index 6cdf24785..322463aae 100644
--- a/app/components/layout/nav-items.json
+++ b/app/components/layout/nav-items.json
@@ -11,6 +11,11 @@
"url": "object-damage-calculator",
"prefetch": true
},
+ {
+ "name": "plans",
+ "url": "plans",
+ "prefetch": false
+ },
{ "name": "calendar", "url": "calendar", "prefetch": false },
{ "name": "maps", "url": "maps", "prefetch": false },
{ "name": "badges", "url": "badges", "prefetch": false },
diff --git a/app/hooks/useForceRefresh.tsx b/app/hooks/useForceRefresh.tsx
new file mode 100644
index 000000000..db558bd5b
--- /dev/null
+++ b/app/hooks/useForceRefresh.tsx
@@ -0,0 +1,9 @@
+import * as React from "react";
+
+export function useForceRefreshOnMount() {
+ const [, setOne] = React.useState(0);
+
+ React.useEffect(() => {
+ setOne(1);
+ }, []);
+}
diff --git a/app/modules/i18n/config.ts b/app/modules/i18n/config.ts
index 80d84dd38..b01e33ca1 100644
--- a/app/modules/i18n/config.ts
+++ b/app/modules/i18n/config.ts
@@ -51,6 +51,8 @@ export const languages = [
},
] as const;
+export type LanguageCode = typeof languages[number]["code"];
+
export const config = {
supportedLngs: languages.map((lang) => lang.code),
fallbackLng: DEFAULT_LANGUAGE,
diff --git a/app/modules/i18n/index.ts b/app/modules/i18n/index.ts
index d46768a1f..1214ba1bf 100644
--- a/app/modules/i18n/index.ts
+++ b/app/modules/i18n/index.ts
@@ -1,4 +1,4 @@
export { i18nLoader } from "./loader";
export { i18Instance } from "./loader.server";
export { i18next, i18nCookie } from "./i18next.server";
-export { DEFAULT_LANGUAGE, languages } from "./config";
+export { DEFAULT_LANGUAGE, languages, type LanguageCode } from "./config";
diff --git a/app/routes/contributions.tsx b/app/routes/contributions.tsx
index 96776ee4c..03a0b21ce 100644
--- a/app/routes/contributions.tsx
+++ b/app/routes/contributions.tsx
@@ -9,6 +9,7 @@ import {
GITHUB_CONTRIBUTORS_URL,
LEAN_TWITTER,
SENDOU_TWITTER_URL,
+ TWIG_TWITTER,
UBERU_TWITTER,
} from "~/utils/urls";
import { type SendouRouteHandle } from "~/utils/remix";
@@ -24,6 +25,8 @@ export const handle: SendouRouteHandle = {
i18n: "contributions",
};
+const PROGRAMMERS = ["DoubleCookies", "ElementUser", "remmycat"] as const;
+
const TRANSLATORS: Array<{
translators: Array;
language: typeof languages[number]["code"];
@@ -83,6 +86,7 @@ export default function ContributionsPage() {
-
+ {PROGRAMMERS.join(", ")} -{" "}
{t("contributions:code")}
@@ -105,6 +109,12 @@ export default function ContributionsPage() {
{" "}
- {t("contributions:uberu")}
+ -
+
+ Twig
+ {" "}
+ - {t("contributions:twig")}
+
{TRANSLATORS.map(({ translators, language }) => (
-
{translators.join(", ")} - {t("contributions:translation")} (
diff --git a/app/routes/index.tsx b/app/routes/index.tsx
index 44c0d46b3..758b8661a 100644
--- a/app/routes/index.tsx
+++ b/app/routes/index.tsx
@@ -24,6 +24,7 @@ import {
mapsPage,
navIconUrl,
objectDamageCalculatorPage,
+ PLANNER_URL,
plusSuggestionPage,
userPage,
} from "~/utils/urls";
@@ -108,6 +109,12 @@ export default function Index() {
description={t("front:maps.description")}
to={mapsPage()}
/>
+
diff --git a/app/routes/plans.tsx b/app/routes/plans.tsx
new file mode 100644
index 000000000..c2a999228
--- /dev/null
+++ b/app/routes/plans.tsx
@@ -0,0 +1,22 @@
+import { lazy, Suspense } from "react";
+import type { LinksFunction } from "@remix-run/node";
+import styles from "~/styles/plans.css";
+import type { SendouRouteHandle } from "~/utils/remix";
+
+export const handle: SendouRouteHandle = {
+ i18n: ["weapons"],
+};
+
+export const links: LinksFunction = () => {
+ return [{ rel: "stylesheet", href: styles }];
+};
+
+const Planner = lazy(() => import("~/components/Planner"));
+
+export default function MapPlannerPage() {
+ return (
+ }>
+
+
+ );
+}
diff --git a/app/styles/common.css b/app/styles/common.css
index 9262e916b..86252d76a 100644
--- a/app/styles/common.css
+++ b/app/styles/common.css
@@ -266,7 +266,7 @@ select {
font-size: var(--fonts-sm);
font-weight: 500;
padding-block: 3.5px;
- padding-inline: var(--s-3) var(--s-7);
+ padding-inline: var(--s-3) var(--s-8);
}
/* Temporary solution for issue: https://github.com/Sendouc/sendou.ink/issues/1141 */
diff --git a/app/styles/plans.css b/app/styles/plans.css
new file mode 100644
index 000000000..2ec185e1e
--- /dev/null
+++ b/app/styles/plans.css
@@ -0,0 +1,92 @@
+div {
+ box-shadow: none !important;
+}
+
+/** Hacky selector to remove the question mark popup on bottom left */
+button[data-state="closed"][aria-haspopup="dialog"] {
+ display: none;
+}
+
+/* stylelint-disable selector-id-pattern */
+#TD-MenuPanel {
+ display: none;
+}
+/* stylelint-enable selector-id-pattern */
+
+.layout__header {
+ display: none;
+}
+
+.tl-canvas {
+ background-color: var(--bg);
+}
+
+.plans__placeholder {
+ min-height: 100%;
+}
+
+.plans__top-section {
+ position: fixed;
+ z-index: 10;
+ top: 3%;
+ left: 50%;
+ display: flex;
+ align-items: center;
+ padding: var(--s-3);
+ border: 1px solid var(--theme-very-transparent);
+ border-radius: 0 0 var(--rounded) var(--rounded);
+ background-color: var(--bg-darker);
+ gap: var(--s-4);
+ transform: translate(-50%, -42%);
+}
+
+.plans__mode-buttons {
+ display: flex;
+ width: 100%;
+ align-items: center;
+ justify-content: center;
+}
+
+.plans__mode-button {
+ padding: 0;
+ padding: var(--s-1-5);
+ border: none;
+ border-radius: var(--rounded-full);
+ background-color: transparent;
+ color: var(--theme);
+ opacity: 1 !important;
+ outline: initial;
+}
+
+.plans__mode-button.selected {
+ background-color: var(--bg-mode-active);
+}
+
+.plans__mode-img:not(.selected) {
+ filter: var(--inactive-image-filter);
+ opacity: 0.6;
+}
+
+.plans__weapons-section {
+ position: fixed;
+ z-index: 10;
+ top: 15%;
+ display: flex;
+ width: 130px;
+ flex-wrap: wrap;
+ justify-content: center;
+ padding: var(--s-2);
+ border: 1px solid var(--theme-very-transparent);
+ border-radius: 0 var(--rounded) var(--rounded) 0;
+ background: var(--bg-darker);
+ gap: 2px;
+}
+
+.plans__powered-by {
+ position: fixed;
+ z-index: 10;
+ right: 0.5%;
+ bottom: 0.5%;
+ color: var(--text-lighter);
+ font-size: var(--fonts-xxxs);
+}
diff --git a/app/utils/urls.ts b/app/utils/urls.ts
index 4beabb755..7e8a9441b 100644
--- a/app/utils/urls.ts
+++ b/app/utils/urls.ts
@@ -12,8 +12,8 @@ import type {
AbilityWithUnknown,
MainWeaponId,
SpecialWeaponId,
- StageId,
SubWeaponId,
+ StageId,
} from "~/modules/in-game-lists/types";
import type navItems from "~/components/layout/nav-items.json";
import { type AuthErrorCode } from "~/modules/auth";
@@ -27,9 +27,11 @@ export const SENDOU_INK_PATREON_URL = "https://patreon.com/sendou";
export const SENDOU_INK_GITHUB_URL = "https://github.com/Sendouc/sendou.ink";
export const GITHUB_CONTRIBUTORS_URL =
"https://github.com/Sendouc/sendou.ink/graphs/contributors";
+export const TLDRAW_URL = "https://www.tldraw.com/";
export const BORZOIC_TWITTER = "https://twitter.com/borzoic_";
export const LEAN_TWITTER = "https://twitter.com/LeanYoshi";
export const UBERU_TWITTER = "https://twitter.com/uberu5";
+export const TWIG_TWITTER = "https://twitter.com/TwigTheBluePik";
export const ipLabsMaps = (pool: string) =>
`https://maps.iplabs.ink/?3&pool=${pool}`;
@@ -44,6 +46,7 @@ export const BUILDS_PAGE = "/builds";
export const CALENDAR_PAGE = "/calendar";
export const STOP_IMPERSONATING_URL = "/auth/impersonate/stop";
export const SEED_URL = "/seed";
+export const PLANNER_URL = "/plans";
export const COMMON_PREVIEW_IMAGE = "/img/layout/common-preview.png";
export const ERROR_GIRL_IMAGE_PATH = `/img/layout/error-girl`;
@@ -125,6 +128,8 @@ export const weaponCategoryUrl = (
) => `/img/weapon-categories/${category}`;
export const mainWeaponImageUrl = (mainWeaponSplId: MainWeaponId) =>
`/img/main-weapons/${mainWeaponSplId}`;
+export const outlinedMainWeaponImageUrl = (mainWeaponSplId: MainWeaponId) =>
+ `/img/main-weapons-outlined/${mainWeaponSplId}`;
export const subWeaponImageUrl = (subWeaponSplId: SubWeaponId) =>
`/img/sub-weapons/${subWeaponSplId}`;
export const specialWeaponImageUrl = (specialWeaponSplId: SpecialWeaponId) =>
@@ -133,6 +138,13 @@ export const abilityImageUrl = (ability: AbilityWithUnknown) =>
`/img/abilities/${ability}`;
export const modeImageUrl = (mode: ModeShort) => `/img/modes/${mode}`;
export const stageImageUrl = (stageId: StageId) => `/img/stages/${stageId}`;
+export const stageMinimapImageUrlWithEnding = ({
+ stageId,
+ modeShort,
+}: {
+ stageId: StageId;
+ modeShort: ModeShort;
+}) => `/img/stage-minimaps/${stageId}-${modeShort}.jpeg`;
export function resolveBaseUrl(url: string) {
return new URL(url).host;
diff --git a/package-lock.json b/package-lock.json
index 448958095..51dfb2e4d 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -12,6 +12,7 @@
"@remix-run/node": "^1.7.4",
"@remix-run/react": "^1.7.4",
"@remix-run/serve": "^1.7.4",
+ "@tldraw/tldraw": "^1.26.2",
"better-sqlite3": "^7.6.2",
"clsx": "^1.2.1",
"countries-list": "^2.6.1",
@@ -24,8 +25,10 @@
"i18next-http-backend": "^1.4.4",
"just-capitalize": "^3.1.1",
"just-clone": "^6.1.1",
+ "just-random-integer": "^4.1.1",
"just-shuffle": "^4.1.1",
"markdown-to-jsx": "^7.1.7",
+ "nanoid": "^4.0.0",
"node-cron": "3.0.2",
"react": "^18.2.0",
"react-dom": "^18.2.0",
@@ -2194,6 +2197,118 @@
"npm": ">=6.0.0"
}
},
+ "node_modules/@floating-ui/core": {
+ "version": "0.7.3",
+ "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-0.7.3.tgz",
+ "integrity": "sha512-buc8BXHmG9l82+OQXOFU3Kr2XQx9ys01U/Q9HMIrZ300iLc8HLMgh7dcCqgYzAzf4BkoQvDcXf5Y+CuEZ5JBYg=="
+ },
+ "node_modules/@floating-ui/dom": {
+ "version": "0.5.4",
+ "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-0.5.4.tgz",
+ "integrity": "sha512-419BMceRLq0RrmTSDxn8hf9R3VCJv2K9PUfugh5JyEFmdjzDo+e8U5EdR8nzKq8Yj1htzLm3b6eQEEam3/rrtg==",
+ "dependencies": {
+ "@floating-ui/core": "^0.7.3"
+ }
+ },
+ "node_modules/@floating-ui/react-dom": {
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-0.7.2.tgz",
+ "integrity": "sha512-1T0sJcpHgX/u4I1OzIEhlcrvkUN8ln39nz7fMoE/2HDHrPiMFoOGR7++GYyfUmIQHkkrTinaeQsO3XWubjSvGg==",
+ "dependencies": {
+ "@floating-ui/dom": "^0.5.3",
+ "use-isomorphic-layout-effect": "^1.1.1"
+ },
+ "peerDependencies": {
+ "react": ">=16.8.0",
+ "react-dom": ">=16.8.0"
+ }
+ },
+ "node_modules/@formatjs/ecma402-abstract": {
+ "version": "1.13.0",
+ "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.13.0.tgz",
+ "integrity": "sha512-CQ8Ykd51jYD1n05dtoX6ns6B9n/+6ZAxnWUAonvHC4kkuAemROYBhHkEB4tm1uVrRlE7gLDqXkAnY51Y0pRCWQ==",
+ "dependencies": {
+ "@formatjs/intl-localematcher": "0.2.31",
+ "tslib": "2.4.0"
+ }
+ },
+ "node_modules/@formatjs/fast-memoize": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-1.2.6.tgz",
+ "integrity": "sha512-9CWZ3+wCkClKHX+i5j+NyoBVqGf0pIskTo6Xl6ihGokYM2yqSSS68JIgeo+99UIHc+7vi9L3/SDSz/dWI9SNlA==",
+ "dependencies": {
+ "tslib": "2.4.0"
+ }
+ },
+ "node_modules/@formatjs/icu-messageformat-parser": {
+ "version": "2.1.10",
+ "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.1.10.tgz",
+ "integrity": "sha512-KkRMxhifWkRC45dhM9tqm0GXbb6NPYTGVYY3xx891IKc6p++DQrZTnmkVSNNO47OEERLfuP2KkPFPJBuu8z/wg==",
+ "dependencies": {
+ "@formatjs/ecma402-abstract": "1.13.0",
+ "@formatjs/icu-skeleton-parser": "1.3.14",
+ "tslib": "2.4.0"
+ }
+ },
+ "node_modules/@formatjs/icu-skeleton-parser": {
+ "version": "1.3.14",
+ "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.3.14.tgz",
+ "integrity": "sha512-7bv60HQQcBb3+TSj+45tOb/CHV5z1hOpwdtS50jsSBXfB+YpGhnoRsZxSRksXeCxMy6xn6tA6VY2601BrrK+OA==",
+ "dependencies": {
+ "@formatjs/ecma402-abstract": "1.13.0",
+ "tslib": "2.4.0"
+ }
+ },
+ "node_modules/@formatjs/intl": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@formatjs/intl/-/intl-2.5.1.tgz",
+ "integrity": "sha512-P01ZGuDDlcN8bHHBCEHspJPvs8WJeO8SXlUIcVGWhS3IN5vUgz0QKUXcKBFnJbEHhONJ+azlObVwvlDKsE+kUg==",
+ "dependencies": {
+ "@formatjs/ecma402-abstract": "1.13.0",
+ "@formatjs/fast-memoize": "1.2.6",
+ "@formatjs/icu-messageformat-parser": "2.1.10",
+ "@formatjs/intl-displaynames": "6.1.4",
+ "@formatjs/intl-listformat": "7.1.3",
+ "intl-messageformat": "10.2.1",
+ "tslib": "2.4.0"
+ },
+ "peerDependencies": {
+ "typescript": "^4.7"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@formatjs/intl-displaynames": {
+ "version": "6.1.4",
+ "resolved": "https://registry.npmjs.org/@formatjs/intl-displaynames/-/intl-displaynames-6.1.4.tgz",
+ "integrity": "sha512-sEbziGLsWQo6nA8ZUBcsDRlZzPg+uMVjDmbTalgGqRWLbdXuxMldTYdaCK+UptyJhkmNVM/erz3csTiyqamXHQ==",
+ "dependencies": {
+ "@formatjs/ecma402-abstract": "1.13.0",
+ "@formatjs/intl-localematcher": "0.2.31",
+ "tslib": "2.4.0"
+ }
+ },
+ "node_modules/@formatjs/intl-listformat": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/@formatjs/intl-listformat/-/intl-listformat-7.1.3.tgz",
+ "integrity": "sha512-rs0Kxl78PeRCedx2cmFoBqcun2Kf0bCQrF8ycna54sfePpDhMskvODWeI4G/xBioW01FjK7CJSvtJJ87hrr79A==",
+ "dependencies": {
+ "@formatjs/ecma402-abstract": "1.13.0",
+ "@formatjs/intl-localematcher": "0.2.31",
+ "tslib": "2.4.0"
+ }
+ },
+ "node_modules/@formatjs/intl-localematcher": {
+ "version": "0.2.31",
+ "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.2.31.tgz",
+ "integrity": "sha512-9QTjdSBpQ7wHShZgsNzNig5qT3rCPvmZogS/wXZzKotns5skbXgs0I7J8cuN0PPqXyynvNVuN+iOKhNS2eb+ZA==",
+ "dependencies": {
+ "tslib": "2.4.0"
+ }
+ },
"node_modules/@gar/promisify": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz",
@@ -2423,6 +2538,810 @@
"url": "https://opencollective.com/popperjs"
}
},
+ "node_modules/@radix-ui/primitive": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.0.tgz",
+ "integrity": "sha512-3e7rn8FDMin4CgeL7Z/49smCA3rFYY3Ha2rUQ7HRWFadS5iCRw08ZgVT1LaNTCNqgvrUiyczLflrVrF0SRQtNA==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10"
+ }
+ },
+ "node_modules/@radix-ui/react-alert-dialog": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-alert-dialog/-/react-alert-dialog-1.0.2.tgz",
+ "integrity": "sha512-0MtxV53FaEEBOKRgyLnEqHZKKDS5BldQ9oUBsKVXWI5FHbl2jp35qs+0aJET+K5hJDsc40kQUzP7g+wC7tqrqA==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/primitive": "1.0.0",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-context": "1.0.0",
+ "@radix-ui/react-dialog": "1.0.2",
+ "@radix-ui/react-primitive": "1.0.1",
+ "@radix-ui/react-slot": "1.0.1"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-arrow": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.0.0.tgz",
+ "integrity": "sha512-1MUuv24HCdepi41+qfv125EwMuxgQ+U+h0A9K3BjCO/J8nVRREKHHpkD9clwfnjEDk9hgGzCnff4aUKCPiRepw==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-primitive": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-arrow/node_modules/@radix-ui/react-primitive": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.0.tgz",
+ "integrity": "sha512-EyXe6mnRlHZ8b6f4ilTDrXmkLShICIuOTTj0GX4w1rp+wSxf3+TD05u1UOITC8VsJ2a9nwHvdXtOXEOl0Cw/zQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-slot": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-arrow/node_modules/@radix-ui/react-slot": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.0.tgz",
+ "integrity": "sha512-3mrKauI/tWXo1Ll+gN5dHcxDPdm/Df1ufcDLCecn+pnCIVcdWE7CujXo8QaXOWRJyZyQWWbpB8eFwHzWXlv5mQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-compose-refs": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-collection": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.0.0.tgz",
+ "integrity": "sha512-8i1pf5dKjnq90Z8udnnXKzdCEV3/FYrfw0n/b6NvB6piXEn3fO1bOh7HBcpG8XrnIXzxlYu2oCcR38QpyLS/mg==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-context": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.0",
+ "@radix-ui/react-slot": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-collection/node_modules/@radix-ui/react-primitive": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.0.tgz",
+ "integrity": "sha512-EyXe6mnRlHZ8b6f4ilTDrXmkLShICIuOTTj0GX4w1rp+wSxf3+TD05u1UOITC8VsJ2a9nwHvdXtOXEOl0Cw/zQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-slot": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-collection/node_modules/@radix-ui/react-slot": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.0.tgz",
+ "integrity": "sha512-3mrKauI/tWXo1Ll+gN5dHcxDPdm/Df1ufcDLCecn+pnCIVcdWE7CujXo8QaXOWRJyZyQWWbpB8eFwHzWXlv5mQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-compose-refs": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-compose-refs": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.0.tgz",
+ "integrity": "sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-context": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.0.0.tgz",
+ "integrity": "sha512-1pVM9RfOQ+n/N5PJK33kRSKsr1glNxomxONs5c49MliinBY6Yw2Q995qfBUUo0/Mbg05B/sGA0gkgPI7kmSHBg==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-context-menu": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-context-menu/-/react-context-menu-1.0.0.tgz",
+ "integrity": "sha512-JkwOgdXwErwEEpsmgu0Ob8zD3gzWS1brPXnNGPyZEtR6/EYyDgruQYKiihXVsCrPCdrNUHawop9I1+6JTdXPTA==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/primitive": "1.0.0",
+ "@radix-ui/react-context": "1.0.0",
+ "@radix-ui/react-menu": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.0",
+ "@radix-ui/react-use-callback-ref": "1.0.0",
+ "@radix-ui/react-use-controllable-state": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-context-menu/node_modules/@radix-ui/react-primitive": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.0.tgz",
+ "integrity": "sha512-EyXe6mnRlHZ8b6f4ilTDrXmkLShICIuOTTj0GX4w1rp+wSxf3+TD05u1UOITC8VsJ2a9nwHvdXtOXEOl0Cw/zQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-slot": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-context-menu/node_modules/@radix-ui/react-slot": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.0.tgz",
+ "integrity": "sha512-3mrKauI/tWXo1Ll+gN5dHcxDPdm/Df1ufcDLCecn+pnCIVcdWE7CujXo8QaXOWRJyZyQWWbpB8eFwHzWXlv5mQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-compose-refs": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-dialog": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.0.2.tgz",
+ "integrity": "sha512-EKxxp2WNSmUPkx4trtWNmZ4/vAYEg7JkAfa1HKBUnaubw9eHzf1Orr9B472lJYaYz327RHDrd4R95fsw7VR8DA==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/primitive": "1.0.0",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-context": "1.0.0",
+ "@radix-ui/react-dismissable-layer": "1.0.2",
+ "@radix-ui/react-focus-guards": "1.0.0",
+ "@radix-ui/react-focus-scope": "1.0.1",
+ "@radix-ui/react-id": "1.0.0",
+ "@radix-ui/react-portal": "1.0.1",
+ "@radix-ui/react-presence": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.1",
+ "@radix-ui/react-slot": "1.0.1",
+ "@radix-ui/react-use-controllable-state": "1.0.0",
+ "aria-hidden": "^1.1.1",
+ "react-remove-scroll": "2.5.5"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-direction": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.0.0.tgz",
+ "integrity": "sha512-2HV05lGUgYcA6xgLQ4BKPDmtL+QbIZYH5fCOTAOOcJ5O0QbWS3i9lKaurLzliYUDhORI2Qr3pyjhJh44lKA3rQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-dismissable-layer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.2.tgz",
+ "integrity": "sha512-WjJzMrTWROozDqLB0uRWYvj4UuXsM/2L19EmQ3Au+IJWqwvwq9Bwd+P8ivo0Deg9JDPArR1I6MbWNi1CmXsskg==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/primitive": "1.0.0",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.1",
+ "@radix-ui/react-use-callback-ref": "1.0.0",
+ "@radix-ui/react-use-escape-keydown": "1.0.2"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-dropdown-menu": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-1.0.0.tgz",
+ "integrity": "sha512-Ptben3TxPWrZLbInO7zjAK73kmjYuStsxfg6ujgt+EywJyREoibhZYnsSNqC+UiOtl4PdW/MOHhxVDtew5fouQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/primitive": "1.0.0",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-context": "1.0.0",
+ "@radix-ui/react-id": "1.0.0",
+ "@radix-ui/react-menu": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.0",
+ "@radix-ui/react-use-controllable-state": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-dropdown-menu/node_modules/@radix-ui/react-primitive": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.0.tgz",
+ "integrity": "sha512-EyXe6mnRlHZ8b6f4ilTDrXmkLShICIuOTTj0GX4w1rp+wSxf3+TD05u1UOITC8VsJ2a9nwHvdXtOXEOl0Cw/zQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-slot": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-dropdown-menu/node_modules/@radix-ui/react-slot": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.0.tgz",
+ "integrity": "sha512-3mrKauI/tWXo1Ll+gN5dHcxDPdm/Df1ufcDLCecn+pnCIVcdWE7CujXo8QaXOWRJyZyQWWbpB8eFwHzWXlv5mQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-compose-refs": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-focus-guards": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.0.0.tgz",
+ "integrity": "sha512-UagjDk4ijOAnGu4WMUPj9ahi7/zJJqNZ9ZAiGPp7waUWJO0O1aWXi/udPphI0IUjvrhBsZJGSN66dR2dsueLWQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-focus-scope": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.1.tgz",
+ "integrity": "sha512-Ej2MQTit8IWJiS2uuujGUmxXjF/y5xZptIIQnyd2JHLwtV0R2j9NRVoRj/1j/gJ7e3REdaBw4Hjf4a1ImhkZcQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.1",
+ "@radix-ui/react-use-callback-ref": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-icons": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-icons/-/react-icons-1.1.1.tgz",
+ "integrity": "sha512-xc3wQC59rsFylVbSusQCrrM+6695ppF730Q6yqzhRdqDcRNWIm2R6ngpzBoSOQMcwnq4p805F+Gr7xo4fmtN1A==",
+ "peerDependencies": {
+ "react": "^16.x || ^17.x || ^18.x"
+ }
+ },
+ "node_modules/@radix-ui/react-id": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.0.0.tgz",
+ "integrity": "sha512-Q6iAB/U7Tq3NTolBBQbHTgclPmGWE3OlktGGqrClPozSw4vkQ1DfQAOtzgRPecKsMdJINE05iaoDUG8tRzCBjw==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-use-layout-effect": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-menu": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-1.0.0.tgz",
+ "integrity": "sha512-icW4C64T6nHh3Z4Q1fxO1RlSShouFF4UpUmPV8FLaJZfphDljannKErDuALDx4ClRLihAPZ9i+PrLNPoWS2DMA==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/primitive": "1.0.0",
+ "@radix-ui/react-collection": "1.0.0",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-context": "1.0.0",
+ "@radix-ui/react-direction": "1.0.0",
+ "@radix-ui/react-dismissable-layer": "1.0.0",
+ "@radix-ui/react-focus-guards": "1.0.0",
+ "@radix-ui/react-focus-scope": "1.0.0",
+ "@radix-ui/react-id": "1.0.0",
+ "@radix-ui/react-popper": "1.0.0",
+ "@radix-ui/react-portal": "1.0.0",
+ "@radix-ui/react-presence": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.0",
+ "@radix-ui/react-roving-focus": "1.0.0",
+ "@radix-ui/react-slot": "1.0.0",
+ "@radix-ui/react-use-callback-ref": "1.0.0",
+ "aria-hidden": "^1.1.1",
+ "react-remove-scroll": "2.5.4"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-menu/node_modules/@radix-ui/react-dismissable-layer": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.0.tgz",
+ "integrity": "sha512-n7kDRfx+LB1zLueRDvZ1Pd0bxdJWDUZNQ/GWoxDn2prnuJKRdxsjulejX/ePkOsLi2tTm6P24mDqlMSgQpsT6g==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/primitive": "1.0.0",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.0",
+ "@radix-ui/react-use-callback-ref": "1.0.0",
+ "@radix-ui/react-use-escape-keydown": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-menu/node_modules/@radix-ui/react-focus-scope": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.0.tgz",
+ "integrity": "sha512-C4SWtsULLGf/2L4oGeIHlvWQx7Rf+7cX/vKOAD2dXW0A1b5QXwi3wWeaEgW+wn+SEVrraMUk05vLU9fZZz5HbQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.0",
+ "@radix-ui/react-use-callback-ref": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-menu/node_modules/@radix-ui/react-portal": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.0.0.tgz",
+ "integrity": "sha512-a8qyFO/Xb99d8wQdu4o7qnigNjTPG123uADNecz0eX4usnQEj7o+cG4ZX4zkqq98NYekT7UoEQIjxBNWIFuqTA==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-primitive": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-menu/node_modules/@radix-ui/react-primitive": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.0.tgz",
+ "integrity": "sha512-EyXe6mnRlHZ8b6f4ilTDrXmkLShICIuOTTj0GX4w1rp+wSxf3+TD05u1UOITC8VsJ2a9nwHvdXtOXEOl0Cw/zQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-slot": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-menu/node_modules/@radix-ui/react-slot": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.0.tgz",
+ "integrity": "sha512-3mrKauI/tWXo1Ll+gN5dHcxDPdm/Df1ufcDLCecn+pnCIVcdWE7CujXo8QaXOWRJyZyQWWbpB8eFwHzWXlv5mQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-compose-refs": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-menu/node_modules/@radix-ui/react-use-escape-keydown": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.0.tgz",
+ "integrity": "sha512-JwfBCUIfhXRxKExgIqGa4CQsiMemo1Xt0W/B4ei3fpzpvPENKpMKQ8mZSB6Acj3ebrAEgi2xiQvcI1PAAodvyg==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-use-callback-ref": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-menu/node_modules/react-remove-scroll": {
+ "version": "2.5.4",
+ "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.4.tgz",
+ "integrity": "sha512-xGVKJJr0SJGQVirVFAUZ2k1QLyO6m+2fy0l8Qawbp5Jgrv3DeLalrfMNBFSlmz5kriGGzsVBtGVnf4pTKIhhWA==",
+ "dependencies": {
+ "react-remove-scroll-bar": "^2.3.3",
+ "react-style-singleton": "^2.2.1",
+ "tslib": "^2.1.0",
+ "use-callback-ref": "^1.3.0",
+ "use-sidecar": "^1.1.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-popover": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.0.2.tgz",
+ "integrity": "sha512-4tqZEl9w95R5mlZ/sFdgBnfhCBOEPepLIurBA5kt/qaAhldJ1tNQd0ngr0ET0AHbPotT4mwxMPr7a+MA/wbK0g==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/primitive": "1.0.0",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-context": "1.0.0",
+ "@radix-ui/react-dismissable-layer": "1.0.2",
+ "@radix-ui/react-focus-guards": "1.0.0",
+ "@radix-ui/react-focus-scope": "1.0.1",
+ "@radix-ui/react-id": "1.0.0",
+ "@radix-ui/react-popper": "1.0.1",
+ "@radix-ui/react-portal": "1.0.1",
+ "@radix-ui/react-presence": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.1",
+ "@radix-ui/react-slot": "1.0.1",
+ "@radix-ui/react-use-controllable-state": "1.0.0",
+ "aria-hidden": "^1.1.1",
+ "react-remove-scroll": "2.5.5"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-arrow": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.0.1.tgz",
+ "integrity": "sha512-1yientwXqXcErDHEv8av9ZVNEBldH8L9scVR3is20lL+jOCfcJyMFZFEY5cgIrgexsq1qggSXqiEL/d/4f+QXA==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-primitive": "1.0.1"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-popper": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.0.1.tgz",
+ "integrity": "sha512-J4Vj7k3k+EHNWgcKrE+BLlQfpewxA7Zd76h5I0bIa+/EqaIZ3DuwrbPj49O3wqN+STnXsBuxiHLiF0iU3yfovw==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@floating-ui/react-dom": "0.7.2",
+ "@radix-ui/react-arrow": "1.0.1",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-context": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.1",
+ "@radix-ui/react-use-layout-effect": "1.0.0",
+ "@radix-ui/react-use-rect": "1.0.0",
+ "@radix-ui/react-use-size": "1.0.0",
+ "@radix-ui/rect": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-popper": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.0.0.tgz",
+ "integrity": "sha512-k2dDd+1Wl0XWAMs9ZvAxxYsB9sOsEhrFQV4CINd7IUZf0wfdye4OHen9siwxvZImbzhgVeKTJi68OQmPRvVdMg==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@floating-ui/react-dom": "0.7.2",
+ "@radix-ui/react-arrow": "1.0.0",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-context": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.0",
+ "@radix-ui/react-use-layout-effect": "1.0.0",
+ "@radix-ui/react-use-rect": "1.0.0",
+ "@radix-ui/react-use-size": "1.0.0",
+ "@radix-ui/rect": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-popper/node_modules/@radix-ui/react-primitive": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.0.tgz",
+ "integrity": "sha512-EyXe6mnRlHZ8b6f4ilTDrXmkLShICIuOTTj0GX4w1rp+wSxf3+TD05u1UOITC8VsJ2a9nwHvdXtOXEOl0Cw/zQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-slot": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-popper/node_modules/@radix-ui/react-slot": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.0.tgz",
+ "integrity": "sha512-3mrKauI/tWXo1Ll+gN5dHcxDPdm/Df1ufcDLCecn+pnCIVcdWE7CujXo8QaXOWRJyZyQWWbpB8eFwHzWXlv5mQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-compose-refs": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-portal": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.0.1.tgz",
+ "integrity": "sha512-NY2vUWI5WENgAT1nfC6JS7RU5xRYBfjZVLq0HmgEN1Ezy3rk/UruMV4+Rd0F40PEaFC5SrLS1ixYvcYIQrb4Ig==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-primitive": "1.0.1"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-presence": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.0.0.tgz",
+ "integrity": "sha512-A+6XEvN01NfVWiKu38ybawfHsBjWum42MRPnEuqPsBZ4eV7e/7K321B5VgYMPv3Xx5An6o1/l9ZuDBgmcmWK3w==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-use-layout-effect": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-primitive": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.1.tgz",
+ "integrity": "sha512-fHbmislWVkZaIdeF6GZxF0A/NH/3BjrGIYj+Ae6eTmTCr7EB0RQAAVEiqsXK6p3/JcRqVSBQoceZroj30Jj3XA==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-slot": "1.0.1"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-roving-focus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.0.0.tgz",
+ "integrity": "sha512-lHvO4MhvoWpeNbiJAoyDsEtbKqP2jkkdwsMVJ3kfqbkC71J/aXE6Th6gkZA1xHEqSku+t+UgoDjvE7Z3gsBpcg==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/primitive": "1.0.0",
+ "@radix-ui/react-collection": "1.0.0",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-context": "1.0.0",
+ "@radix-ui/react-direction": "1.0.0",
+ "@radix-ui/react-id": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.0",
+ "@radix-ui/react-use-callback-ref": "1.0.0",
+ "@radix-ui/react-use-controllable-state": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-roving-focus/node_modules/@radix-ui/react-primitive": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.0.tgz",
+ "integrity": "sha512-EyXe6mnRlHZ8b6f4ilTDrXmkLShICIuOTTj0GX4w1rp+wSxf3+TD05u1UOITC8VsJ2a9nwHvdXtOXEOl0Cw/zQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-slot": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-roving-focus/node_modules/@radix-ui/react-slot": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.0.tgz",
+ "integrity": "sha512-3mrKauI/tWXo1Ll+gN5dHcxDPdm/Df1ufcDLCecn+pnCIVcdWE7CujXo8QaXOWRJyZyQWWbpB8eFwHzWXlv5mQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-compose-refs": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-slot": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.1.tgz",
+ "integrity": "sha512-avutXAFL1ehGvAXtPquu0YK5oz6ctS474iM3vNGQIkswrVhdrS52e3uoMQBzZhNRAIE0jBnUyXWNmSjGHhCFcw==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-compose-refs": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-tooltip": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.0.2.tgz",
+ "integrity": "sha512-11gUlok2rv5mu+KBtxniOKKNKjqC/uTbgFHWoQdbF46vMV+zjDaBvCtVDK9+MTddlpmlisGPGvvojX7Qm0yr+g==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/primitive": "1.0.0",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-context": "1.0.0",
+ "@radix-ui/react-dismissable-layer": "1.0.2",
+ "@radix-ui/react-id": "1.0.0",
+ "@radix-ui/react-popper": "1.0.1",
+ "@radix-ui/react-portal": "1.0.1",
+ "@radix-ui/react-presence": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.1",
+ "@radix-ui/react-slot": "1.0.1",
+ "@radix-ui/react-use-controllable-state": "1.0.0",
+ "@radix-ui/react-visually-hidden": "1.0.1"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-arrow": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.0.1.tgz",
+ "integrity": "sha512-1yientwXqXcErDHEv8av9ZVNEBldH8L9scVR3is20lL+jOCfcJyMFZFEY5cgIrgexsq1qggSXqiEL/d/4f+QXA==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-primitive": "1.0.1"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-popper": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.0.1.tgz",
+ "integrity": "sha512-J4Vj7k3k+EHNWgcKrE+BLlQfpewxA7Zd76h5I0bIa+/EqaIZ3DuwrbPj49O3wqN+STnXsBuxiHLiF0iU3yfovw==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@floating-ui/react-dom": "0.7.2",
+ "@radix-ui/react-arrow": "1.0.1",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-context": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.1",
+ "@radix-ui/react-use-layout-effect": "1.0.0",
+ "@radix-ui/react-use-rect": "1.0.0",
+ "@radix-ui/react-use-size": "1.0.0",
+ "@radix-ui/rect": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-use-callback-ref": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.0.tgz",
+ "integrity": "sha512-GZtyzoHz95Rhs6S63D2t/eqvdFCm7I+yHMLVQheKM7nBD8mbZIt+ct1jz4536MDnaOGKIxynJ8eHTkVGVVkoTg==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-use-controllable-state": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.0.tgz",
+ "integrity": "sha512-FohDoZvk3mEXh9AWAVyRTYR4Sq7/gavuofglmiXB2g1aKyboUD4YtgWxKj8O5n+Uak52gXQ4wKz5IFST4vtJHg==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-use-callback-ref": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-use-escape-keydown": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.2.tgz",
+ "integrity": "sha512-DXGim3x74WgUv+iMNCF+cAo8xUHHeqvjx8zs7trKf+FkQKPQXLk2sX7Gx1ysH7Q76xCpZuxIJE7HLPxRE+Q+GA==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-use-callback-ref": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-use-layout-effect": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.0.tgz",
+ "integrity": "sha512-6Tpkq+R6LOlmQb1R5NNETLG0B4YP0wc+klfXafpUCj6JGyaUc8il7/kUZ7m59rGbXGczE9Bs+iz2qloqsZBduQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-use-rect": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.0.0.tgz",
+ "integrity": "sha512-TB7pID8NRMEHxb/qQJpvSt3hQU4sqNPM1VCTjTRjEOa7cEop/QMuq8S6fb/5Tsz64kqSvB9WnwsDHtjnrM9qew==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/rect": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-use-size": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.0.0.tgz",
+ "integrity": "sha512-imZ3aYcoYCKhhgNpkNDh/aTiU05qw9hX+HHI1QDBTyIlcFjgeFlKKySNGMwTp7nYFLQg/j0VA2FmCY4WPDDHMg==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-use-layout-effect": "1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/react-visually-hidden": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.0.1.tgz",
+ "integrity": "sha512-K1hJcCMfWfiYUibRqf3V8r5Drpyf7rh44jnrwAbdvI5iCCijilBBeyQv9SKidYNZIopMdCyR9FnIjkHxHN0FcQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-primitive": "1.0.1"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ }
+ },
+ "node_modules/@radix-ui/rect": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.0.0.tgz",
+ "integrity": "sha512-d0O68AYy/9oeEy1DdC07bz1/ZXX+DqCskRd3i4JzLSTXwefzaepQrKjXC7aNM8lTHjFLDO0pDgaEiQ7jEk+HVg==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10"
+ }
+ },
"node_modules/@remix-run/dev": {
"version": "1.7.4",
"resolved": "https://registry.npmjs.org/@remix-run/dev/-/dev-1.7.4.tgz",
@@ -2701,6 +3620,14 @@
"url": "https://github.com/sindresorhus/is?sponsor=1"
}
},
+ "node_modules/@stitches/react": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@stitches/react/-/react-1.2.8.tgz",
+ "integrity": "sha512-9g9dWI4gsSVe8bNLlb+lMkBYsnIKCZTmvqvDG+Avnn69XfmHZKiaMrx7cgTaddq7aTPPmXiTsbFcUy0xgI4+wA==",
+ "peerDependencies": {
+ "react": ">= 16.3.0"
+ }
+ },
"node_modules/@szmarczak/http-timer": {
"version": "4.0.6",
"resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz",
@@ -2732,6 +3659,64 @@
"node": ">=12"
}
},
+ "node_modules/@tldraw/core": {
+ "version": "1.20.1",
+ "resolved": "https://registry.npmjs.org/@tldraw/core/-/core-1.20.1.tgz",
+ "integrity": "sha512-DEeu64TvgttifJPt51hFYrzc6fwpYpjDMcvlqN6RZ4CfQftv9ZaZJA2KWbqf9EQGJT01ujYH9UM6MdkWp3lTyg==",
+ "dependencies": {
+ "@tldraw/intersect": "^1.8.0",
+ "@tldraw/vec": "^1.8.0",
+ "@use-gesture/react": "^10.2.19",
+ "perfect-freehand": "^1.1.0"
+ },
+ "peerDependencies": {
+ "react": ">=16.8",
+ "react-dom": ">=16.8"
+ }
+ },
+ "node_modules/@tldraw/intersect": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@tldraw/intersect/-/intersect-1.8.0.tgz",
+ "integrity": "sha512-0UarshNpyq2+O4o0xHMJIBgF0E630mes5CkMoO+D5xgYppSBIkeqYDcv0ujsmAhMKX1O6Y0ShuuHeflBEULUoQ==",
+ "dependencies": {
+ "@tldraw/vec": "^1.8.0"
+ }
+ },
+ "node_modules/@tldraw/tldraw": {
+ "version": "1.26.2",
+ "resolved": "https://registry.npmjs.org/@tldraw/tldraw/-/tldraw-1.26.2.tgz",
+ "integrity": "sha512-quNY068Nq6geN4oGvTyGBjILYMi/XpaV8DTPes/JFWxqKxfOLlj9hsziwug+zIjPDa2k9EO4Q+yc0+z1RSFI9A==",
+ "dependencies": {
+ "@radix-ui/react-alert-dialog": "^1.0.0",
+ "@radix-ui/react-context-menu": "^1.0.0",
+ "@radix-ui/react-dialog": "^1.0.0",
+ "@radix-ui/react-dropdown-menu": "^1.0.0",
+ "@radix-ui/react-icons": "^1.1.1",
+ "@radix-ui/react-popover": "^1.0.0",
+ "@radix-ui/react-tooltip": "^1.0.0",
+ "@stitches/react": "^1.2.8",
+ "@tldraw/core": "^1.20.1",
+ "@tldraw/intersect": "^1.8.0",
+ "@tldraw/vec": "^1.8.0",
+ "browser-fs-access": "^0.31.0",
+ "idb-keyval": "^6.2.0",
+ "perfect-freehand": "^1.2.0",
+ "react-error-boundary": "^3.1.4",
+ "react-hotkeys-hook": "^3.4.7",
+ "react-intl": "^6.1.1",
+ "tslib": "^2.4.0",
+ "zustand": "^4.1.1"
+ },
+ "peerDependencies": {
+ "react": ">=16.8",
+ "react-dom": ">=16.8"
+ }
+ },
+ "node_modules/@tldraw/vec": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@tldraw/vec/-/vec-1.8.0.tgz",
+ "integrity": "sha512-GiS5Df3CzXY/fPBFcM0CKFERZfI4Cg1X33VPZX+NLo7Fwm/h9zu/aU24N1mG75Q9LuMnwKm7woxKr8BiUXGYCg=="
+ },
"node_modules/@tootallnate/once": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
@@ -2849,6 +3834,15 @@
"@types/unist": "*"
}
},
+ "node_modules/@types/hoist-non-react-statics": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz",
+ "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==",
+ "dependencies": {
+ "@types/react": "*",
+ "hoist-non-react-statics": "^3.3.0"
+ }
+ },
"node_modules/@types/http-cache-semantics": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz",
@@ -2962,14 +3956,12 @@
"node_modules/@types/prop-types": {
"version": "15.7.5",
"resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
- "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==",
- "dev": true
+ "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w=="
},
"node_modules/@types/react": {
"version": "18.0.24",
"resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.24.tgz",
"integrity": "sha512-wRJWT6ouziGUy+9uX0aW4YOJxAY0bG6/AOk5AW5QSvZqI7dk6VBIbXvcVgIw/W5Jrl24f77df98GEKTJGOLx7Q==",
- "dev": true,
"dependencies": {
"@types/prop-types": "*",
"@types/scheduler": "*",
@@ -2997,8 +3989,7 @@
"node_modules/@types/scheduler": {
"version": "0.16.2",
"resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz",
- "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==",
- "dev": true
+ "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew=="
},
"node_modules/@types/semver": {
"version": "7.3.12",
@@ -3319,6 +4310,22 @@
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
}
},
+ "node_modules/@use-gesture/core": {
+ "version": "10.2.22",
+ "resolved": "https://registry.npmjs.org/@use-gesture/core/-/core-10.2.22.tgz",
+ "integrity": "sha512-Ek0JZFYfk+hicLmoG094gm3YOuDMBNckHb988e59YOZoAkETT8dQSzT+g3QkSHSiP1m5wFXAGPSgxvOuwvGKHQ=="
+ },
+ "node_modules/@use-gesture/react": {
+ "version": "10.2.22",
+ "resolved": "https://registry.npmjs.org/@use-gesture/react/-/react-10.2.22.tgz",
+ "integrity": "sha512-ECo7ig16SxBE06ENIURO1woKEB6TC8qY3a0rugJjQ2f1o0Tj28xS/eYNyJuqzQB5YT0q5IrF7ZFpbx1p/5ohYA==",
+ "dependencies": {
+ "@use-gesture/core": "10.2.22"
+ },
+ "peerDependencies": {
+ "react": ">= 16.8.0"
+ }
+ },
"node_modules/@web3-storage/multipart-parser": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@web3-storage/multipart-parser/-/multipart-parser-1.0.0.tgz",
@@ -3564,6 +4571,26 @@
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
"dev": true
},
+ "node_modules/aria-hidden": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.2.tgz",
+ "integrity": "sha512-6y/ogyDTk/7YAe91T3E2PR1ALVKyM2QbTio5HwM+N1Q6CMlCKhvClyIjkckBswa0f2xJhjsfzIGa1yVSe1UMVA==",
+ "dependencies": {
+ "tslib": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "@types/react": "^16.9.0 || ^17.0.0 || ^18.0.0",
+ "react": "^16.9.0 || ^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
"node_modules/aria-query": {
"version": "5.0.2",
"resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.0.2.tgz",
@@ -4067,6 +5094,11 @@
"node": ">=8"
}
},
+ "node_modules/browser-fs-access": {
+ "version": "0.31.1",
+ "resolved": "https://registry.npmjs.org/browser-fs-access/-/browser-fs-access-0.31.1.tgz",
+ "integrity": "sha512-jMz9f56DkLM7LyA8wZYO7CtpoF3RdUk1/FXrnRNybgV0R5eqk/fgFWR0k5IMjPYgK4jmZecytP/UDO5WBi9Dhg=="
+ },
"node_modules/browserify-zlib": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz",
@@ -5232,6 +6264,11 @@
"node": ">=8"
}
},
+ "node_modules/detect-node-es": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz",
+ "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ=="
+ },
"node_modules/diff": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz",
@@ -7545,6 +8582,14 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/get-nonce": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz",
+ "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/get-port": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz",
@@ -8084,12 +9129,30 @@
"@babel/runtime": "^7.7.6"
}
},
+ "node_modules/hoist-non-react-statics": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
+ "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
+ "dependencies": {
+ "react-is": "^16.7.0"
+ }
+ },
+ "node_modules/hoist-non-react-statics/node_modules/react-is": {
+ "version": "16.13.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
+ },
"node_modules/hosted-git-info": {
"version": "2.8.9",
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
"integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
"dev": true
},
+ "node_modules/hotkeys-js": {
+ "version": "3.9.4",
+ "resolved": "https://registry.npmjs.org/hotkeys-js/-/hotkeys-js-3.9.4.tgz",
+ "integrity": "sha512-2zuLt85Ta+gIyvs4N88pCYskNrxf1TFv3LR9t5mdAZIX8BcgQQ48F2opUptvHa6m8zsy5v/a0i9mWzTrlNWU0Q=="
+ },
"node_modules/html-parse-stringify": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz",
@@ -8288,6 +9351,14 @@
"node": ">=0.10.0"
}
},
+ "node_modules/idb-keyval": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-6.2.0.tgz",
+ "integrity": "sha512-uw+MIyQn2jl3+hroD7hF8J7PUviBU7BPKWw4f/ISf32D4LoGu98yHjrzWWJDASu9QNrX10tCJqk9YY0ClWm8Ng==",
+ "dependencies": {
+ "safari-14-idb-fix": "^3.0.0"
+ }
+ },
"node_modules/ieee754": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
@@ -8438,6 +9509,17 @@
"node": ">= 0.4"
}
},
+ "node_modules/intl-messageformat": {
+ "version": "10.2.1",
+ "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.2.1.tgz",
+ "integrity": "sha512-1lrJG2qKzcC1TVzYu1VuB1yiY68LU5rwpbHa2THCzA67Vutkz7+1lv5U20K3Lz5RAiH78zxNztMEtchokMWv8A==",
+ "dependencies": {
+ "@formatjs/ecma402-abstract": "1.13.0",
+ "@formatjs/fast-memoize": "1.2.6",
+ "@formatjs/icu-messageformat-parser": "2.1.10",
+ "tslib": "2.4.0"
+ }
+ },
"node_modules/intl-parse-accept-language": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/intl-parse-accept-language/-/intl-parse-accept-language-1.0.0.tgz",
@@ -8446,6 +9528,14 @@
"node": ">=14"
}
},
+ "node_modules/invariant": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
+ "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
+ "dependencies": {
+ "loose-envify": "^1.0.0"
+ }
+ },
"node_modules/ip": {
"version": "1.1.8",
"resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz",
@@ -9240,6 +10330,11 @@
"resolved": "https://registry.npmjs.org/just-clone/-/just-clone-6.1.1.tgz",
"integrity": "sha512-V24KLIid8uaG7ayOymGfheNHtxgrbpzj1UznQnF9vQZMHlKGTSLT3WWmFx62OXSQPwk1Tn+uo+H5/Xhb4bL9pA=="
},
+ "node_modules/just-random-integer": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/just-random-integer/-/just-random-integer-4.1.1.tgz",
+ "integrity": "sha512-4BjDeKr8tJgi7G2YrUF9FY1DkiwO/ToJ6tzzXM0seLGXJCeBwZ/QiEaNECYuA+QFPqV5zJALo6LG9hHPCAwQEA=="
+ },
"node_modules/just-shuffle": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/just-shuffle/-/just-shuffle-4.1.1.tgz",
@@ -10716,15 +11811,14 @@
}
},
"node_modules/nanoid": {
- "version": "3.3.4",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
- "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
- "dev": true,
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.0.tgz",
+ "integrity": "sha512-IgBP8piMxe/gf73RTQx7hmnhwz0aaEXYakvqZyE302IXW3HyVNhdNGC+O2MwMAVhLEnvXlvKtGbtJf6wvHihCg==",
"bin": {
- "nanoid": "bin/nanoid.cjs"
+ "nanoid": "bin/nanoid.js"
},
"engines": {
- "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ "node": "^14 || ^16 || >=18"
}
},
"node_modules/nanomatch": {
@@ -11439,6 +12533,11 @@
"through2": "^2.0.3"
}
},
+ "node_modules/perfect-freehand": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/perfect-freehand/-/perfect-freehand-1.2.0.tgz",
+ "integrity": "sha512-h/0ikF1M3phW7CwpZ5MMvKnfpHficWoOEyr//KVNTxV4F6deRK1eYMtHyBKEAKFK0aXIEUK9oBvlF6PNXMDsAw=="
+ },
"node_modules/periscopic": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.0.4.tgz",
@@ -11592,6 +12691,18 @@
"integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
"dev": true
},
+ "node_modules/postcss/node_modules/nanoid": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
+ "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
+ "dev": true,
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
"node_modules/prebuild-install": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.0.tgz",
@@ -11951,6 +13062,21 @@
"react": "^18.2.0"
}
},
+ "node_modules/react-error-boundary": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/react-error-boundary/-/react-error-boundary-3.1.4.tgz",
+ "integrity": "sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA==",
+ "dependencies": {
+ "@babel/runtime": "^7.12.5"
+ },
+ "engines": {
+ "node": ">=10",
+ "npm": ">=6"
+ },
+ "peerDependencies": {
+ "react": ">=16.13.1"
+ }
+ },
"node_modules/react-fast-compare": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz",
@@ -11973,6 +13099,18 @@
"react-dom": ">= 16.x"
}
},
+ "node_modules/react-hotkeys-hook": {
+ "version": "3.4.7",
+ "resolved": "https://registry.npmjs.org/react-hotkeys-hook/-/react-hotkeys-hook-3.4.7.tgz",
+ "integrity": "sha512-+bbPmhPAl6ns9VkXkNNyxlmCAIyDAcWbB76O4I0ntr3uWCRuIQf/aRLartUahe9chVMPj+OEzzfk3CQSjclUEQ==",
+ "dependencies": {
+ "hotkeys-js": "3.9.4"
+ },
+ "peerDependencies": {
+ "react": ">=16.8.1",
+ "react-dom": ">=16.8.1"
+ }
+ },
"node_modules/react-i18next": {
"version": "11.18.6",
"resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-11.18.6.tgz",
@@ -11994,6 +13132,32 @@
}
}
},
+ "node_modules/react-intl": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-6.2.1.tgz",
+ "integrity": "sha512-hYxcSamgoA3Mvc55nwhTF1v15T0NUSkaV/EScMNVZXg0kRyaMAoNHkCi9/9H+TnXWNiWrcWH9bjlMlJwrG2V7g==",
+ "dependencies": {
+ "@formatjs/ecma402-abstract": "1.13.0",
+ "@formatjs/icu-messageformat-parser": "2.1.10",
+ "@formatjs/intl": "2.5.1",
+ "@formatjs/intl-displaynames": "6.1.4",
+ "@formatjs/intl-listformat": "7.1.3",
+ "@types/hoist-non-react-statics": "^3.3.1",
+ "@types/react": "16 || 17 || 18",
+ "hoist-non-react-statics": "^3.3.2",
+ "intl-messageformat": "10.2.1",
+ "tslib": "2.4.0"
+ },
+ "peerDependencies": {
+ "react": "^16.6.0 || 17 || 18",
+ "typescript": "^4.7"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
"node_modules/react-is": {
"version": "17.0.2",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
@@ -12014,6 +13178,51 @@
"react-dom": "^16.8.0 || ^17 || ^18"
}
},
+ "node_modules/react-remove-scroll": {
+ "version": "2.5.5",
+ "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz",
+ "integrity": "sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==",
+ "dependencies": {
+ "react-remove-scroll-bar": "^2.3.3",
+ "react-style-singleton": "^2.2.1",
+ "tslib": "^2.1.0",
+ "use-callback-ref": "^1.3.0",
+ "use-sidecar": "^1.1.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/react-remove-scroll-bar": {
+ "version": "2.3.4",
+ "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz",
+ "integrity": "sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==",
+ "dependencies": {
+ "react-style-singleton": "^2.2.1",
+ "tslib": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
"node_modules/react-router": {
"version": "6.3.0",
"resolved": "https://registry.npmjs.org/react-router/-/react-router-6.3.0.tgz",
@@ -12038,6 +13247,28 @@
"react-dom": ">=16.8"
}
},
+ "node_modules/react-style-singleton": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz",
+ "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==",
+ "dependencies": {
+ "get-nonce": "^1.0.0",
+ "invariant": "^2.2.4",
+ "tslib": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
"node_modules/react-universal-interface": {
"version": "0.6.2",
"resolved": "https://registry.npmjs.org/react-universal-interface/-/react-universal-interface-0.6.2.tgz",
@@ -12719,6 +13950,11 @@
"node": ">=6"
}
},
+ "node_modules/safari-14-idb-fix": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/safari-14-idb-fix/-/safari-14-idb-fix-3.0.0.tgz",
+ "integrity": "sha512-eBNFLob4PMq8JA1dGyFn6G97q3/WzNtFK4RnzT1fnLq+9RyrGknzYiM/9B12MnKAxuj1IXr7UKYtTNtjyKMBog=="
+ },
"node_modules/safe-buffer": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
@@ -14524,7 +15760,7 @@
"version": "4.8.4",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz",
"integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==",
- "dev": true,
+ "devOptional": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
@@ -14905,6 +16141,26 @@
"node": ">=0.10.0"
}
},
+ "node_modules/use-callback-ref": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.0.tgz",
+ "integrity": "sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==",
+ "dependencies": {
+ "tslib": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
"node_modules/use-consistent-value": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/use-consistent-value/-/use-consistent-value-1.0.0.tgz",
@@ -14919,6 +16175,48 @@
"react": ">=16"
}
},
+ "node_modules/use-isomorphic-layout-effect": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz",
+ "integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==",
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/use-sidecar": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz",
+ "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==",
+ "dependencies": {
+ "detect-node-es": "^1.1.0",
+ "tslib": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "@types/react": "^16.9.0 || ^17.0.0 || ^18.0.0",
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/use-sync-external-store": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz",
+ "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==",
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
"node_modules/util": {
"version": "0.12.5",
"resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz",
@@ -15407,6 +16705,29 @@
"url": "https://github.com/sponsors/colinhacks"
}
},
+ "node_modules/zustand": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.1.4.tgz",
+ "integrity": "sha512-k2jVOlWo8p4R83mQ+/uyB8ILPO2PCJOf+QVjcL+1PbMCk1w5OoPYpAIxy9zd93FSfmJqoH6lGdwzzjwqJIRU5A==",
+ "dependencies": {
+ "use-sync-external-store": "1.2.0"
+ },
+ "engines": {
+ "node": ">=12.7.0"
+ },
+ "peerDependencies": {
+ "immer": ">=9.0",
+ "react": ">=16.8"
+ },
+ "peerDependenciesMeta": {
+ "immer": {
+ "optional": true
+ },
+ "react": {
+ "optional": true
+ }
+ }
+ },
"node_modules/zwitch": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.2.tgz",
@@ -16889,6 +18210,106 @@
"resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-7.6.0.tgz",
"integrity": "sha512-XK6BTq1NDMo9Xqw/YkYyGjSsg44fbNwYRx7QK2CuoQgyy+f1rrTDHoExVM5PsyXCtfl2vs2vVJ0MN0yN6LppRw=="
},
+ "@floating-ui/core": {
+ "version": "0.7.3",
+ "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-0.7.3.tgz",
+ "integrity": "sha512-buc8BXHmG9l82+OQXOFU3Kr2XQx9ys01U/Q9HMIrZ300iLc8HLMgh7dcCqgYzAzf4BkoQvDcXf5Y+CuEZ5JBYg=="
+ },
+ "@floating-ui/dom": {
+ "version": "0.5.4",
+ "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-0.5.4.tgz",
+ "integrity": "sha512-419BMceRLq0RrmTSDxn8hf9R3VCJv2K9PUfugh5JyEFmdjzDo+e8U5EdR8nzKq8Yj1htzLm3b6eQEEam3/rrtg==",
+ "requires": {
+ "@floating-ui/core": "^0.7.3"
+ }
+ },
+ "@floating-ui/react-dom": {
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-0.7.2.tgz",
+ "integrity": "sha512-1T0sJcpHgX/u4I1OzIEhlcrvkUN8ln39nz7fMoE/2HDHrPiMFoOGR7++GYyfUmIQHkkrTinaeQsO3XWubjSvGg==",
+ "requires": {
+ "@floating-ui/dom": "^0.5.3",
+ "use-isomorphic-layout-effect": "^1.1.1"
+ }
+ },
+ "@formatjs/ecma402-abstract": {
+ "version": "1.13.0",
+ "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.13.0.tgz",
+ "integrity": "sha512-CQ8Ykd51jYD1n05dtoX6ns6B9n/+6ZAxnWUAonvHC4kkuAemROYBhHkEB4tm1uVrRlE7gLDqXkAnY51Y0pRCWQ==",
+ "requires": {
+ "@formatjs/intl-localematcher": "0.2.31",
+ "tslib": "2.4.0"
+ }
+ },
+ "@formatjs/fast-memoize": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-1.2.6.tgz",
+ "integrity": "sha512-9CWZ3+wCkClKHX+i5j+NyoBVqGf0pIskTo6Xl6ihGokYM2yqSSS68JIgeo+99UIHc+7vi9L3/SDSz/dWI9SNlA==",
+ "requires": {
+ "tslib": "2.4.0"
+ }
+ },
+ "@formatjs/icu-messageformat-parser": {
+ "version": "2.1.10",
+ "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.1.10.tgz",
+ "integrity": "sha512-KkRMxhifWkRC45dhM9tqm0GXbb6NPYTGVYY3xx891IKc6p++DQrZTnmkVSNNO47OEERLfuP2KkPFPJBuu8z/wg==",
+ "requires": {
+ "@formatjs/ecma402-abstract": "1.13.0",
+ "@formatjs/icu-skeleton-parser": "1.3.14",
+ "tslib": "2.4.0"
+ }
+ },
+ "@formatjs/icu-skeleton-parser": {
+ "version": "1.3.14",
+ "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.3.14.tgz",
+ "integrity": "sha512-7bv60HQQcBb3+TSj+45tOb/CHV5z1hOpwdtS50jsSBXfB+YpGhnoRsZxSRksXeCxMy6xn6tA6VY2601BrrK+OA==",
+ "requires": {
+ "@formatjs/ecma402-abstract": "1.13.0",
+ "tslib": "2.4.0"
+ }
+ },
+ "@formatjs/intl": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@formatjs/intl/-/intl-2.5.1.tgz",
+ "integrity": "sha512-P01ZGuDDlcN8bHHBCEHspJPvs8WJeO8SXlUIcVGWhS3IN5vUgz0QKUXcKBFnJbEHhONJ+azlObVwvlDKsE+kUg==",
+ "requires": {
+ "@formatjs/ecma402-abstract": "1.13.0",
+ "@formatjs/fast-memoize": "1.2.6",
+ "@formatjs/icu-messageformat-parser": "2.1.10",
+ "@formatjs/intl-displaynames": "6.1.4",
+ "@formatjs/intl-listformat": "7.1.3",
+ "intl-messageformat": "10.2.1",
+ "tslib": "2.4.0"
+ }
+ },
+ "@formatjs/intl-displaynames": {
+ "version": "6.1.4",
+ "resolved": "https://registry.npmjs.org/@formatjs/intl-displaynames/-/intl-displaynames-6.1.4.tgz",
+ "integrity": "sha512-sEbziGLsWQo6nA8ZUBcsDRlZzPg+uMVjDmbTalgGqRWLbdXuxMldTYdaCK+UptyJhkmNVM/erz3csTiyqamXHQ==",
+ "requires": {
+ "@formatjs/ecma402-abstract": "1.13.0",
+ "@formatjs/intl-localematcher": "0.2.31",
+ "tslib": "2.4.0"
+ }
+ },
+ "@formatjs/intl-listformat": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/@formatjs/intl-listformat/-/intl-listformat-7.1.3.tgz",
+ "integrity": "sha512-rs0Kxl78PeRCedx2cmFoBqcun2Kf0bCQrF8ycna54sfePpDhMskvODWeI4G/xBioW01FjK7CJSvtJJ87hrr79A==",
+ "requires": {
+ "@formatjs/ecma402-abstract": "1.13.0",
+ "@formatjs/intl-localematcher": "0.2.31",
+ "tslib": "2.4.0"
+ }
+ },
+ "@formatjs/intl-localematcher": {
+ "version": "0.2.31",
+ "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.2.31.tgz",
+ "integrity": "sha512-9QTjdSBpQ7wHShZgsNzNig5qT3rCPvmZogS/wXZzKotns5skbXgs0I7J8cuN0PPqXyynvNVuN+iOKhNS2eb+ZA==",
+ "requires": {
+ "tslib": "2.4.0"
+ }
+ },
"@gar/promisify": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz",
@@ -17062,6 +18483,630 @@
"resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz",
"integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw=="
},
+ "@radix-ui/primitive": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.0.tgz",
+ "integrity": "sha512-3e7rn8FDMin4CgeL7Z/49smCA3rFYY3Ha2rUQ7HRWFadS5iCRw08ZgVT1LaNTCNqgvrUiyczLflrVrF0SRQtNA==",
+ "requires": {
+ "@babel/runtime": "^7.13.10"
+ }
+ },
+ "@radix-ui/react-alert-dialog": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-alert-dialog/-/react-alert-dialog-1.0.2.tgz",
+ "integrity": "sha512-0MtxV53FaEEBOKRgyLnEqHZKKDS5BldQ9oUBsKVXWI5FHbl2jp35qs+0aJET+K5hJDsc40kQUzP7g+wC7tqrqA==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/primitive": "1.0.0",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-context": "1.0.0",
+ "@radix-ui/react-dialog": "1.0.2",
+ "@radix-ui/react-primitive": "1.0.1",
+ "@radix-ui/react-slot": "1.0.1"
+ }
+ },
+ "@radix-ui/react-arrow": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.0.0.tgz",
+ "integrity": "sha512-1MUuv24HCdepi41+qfv125EwMuxgQ+U+h0A9K3BjCO/J8nVRREKHHpkD9clwfnjEDk9hgGzCnff4aUKCPiRepw==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-primitive": "1.0.0"
+ },
+ "dependencies": {
+ "@radix-ui/react-primitive": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.0.tgz",
+ "integrity": "sha512-EyXe6mnRlHZ8b6f4ilTDrXmkLShICIuOTTj0GX4w1rp+wSxf3+TD05u1UOITC8VsJ2a9nwHvdXtOXEOl0Cw/zQ==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-slot": "1.0.0"
+ }
+ },
+ "@radix-ui/react-slot": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.0.tgz",
+ "integrity": "sha512-3mrKauI/tWXo1Ll+gN5dHcxDPdm/Df1ufcDLCecn+pnCIVcdWE7CujXo8QaXOWRJyZyQWWbpB8eFwHzWXlv5mQ==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-compose-refs": "1.0.0"
+ }
+ }
+ }
+ },
+ "@radix-ui/react-collection": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.0.0.tgz",
+ "integrity": "sha512-8i1pf5dKjnq90Z8udnnXKzdCEV3/FYrfw0n/b6NvB6piXEn3fO1bOh7HBcpG8XrnIXzxlYu2oCcR38QpyLS/mg==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-context": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.0",
+ "@radix-ui/react-slot": "1.0.0"
+ },
+ "dependencies": {
+ "@radix-ui/react-primitive": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.0.tgz",
+ "integrity": "sha512-EyXe6mnRlHZ8b6f4ilTDrXmkLShICIuOTTj0GX4w1rp+wSxf3+TD05u1UOITC8VsJ2a9nwHvdXtOXEOl0Cw/zQ==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-slot": "1.0.0"
+ }
+ },
+ "@radix-ui/react-slot": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.0.tgz",
+ "integrity": "sha512-3mrKauI/tWXo1Ll+gN5dHcxDPdm/Df1ufcDLCecn+pnCIVcdWE7CujXo8QaXOWRJyZyQWWbpB8eFwHzWXlv5mQ==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-compose-refs": "1.0.0"
+ }
+ }
+ }
+ },
+ "@radix-ui/react-compose-refs": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.0.tgz",
+ "integrity": "sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA==",
+ "requires": {
+ "@babel/runtime": "^7.13.10"
+ }
+ },
+ "@radix-ui/react-context": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.0.0.tgz",
+ "integrity": "sha512-1pVM9RfOQ+n/N5PJK33kRSKsr1glNxomxONs5c49MliinBY6Yw2Q995qfBUUo0/Mbg05B/sGA0gkgPI7kmSHBg==",
+ "requires": {
+ "@babel/runtime": "^7.13.10"
+ }
+ },
+ "@radix-ui/react-context-menu": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-context-menu/-/react-context-menu-1.0.0.tgz",
+ "integrity": "sha512-JkwOgdXwErwEEpsmgu0Ob8zD3gzWS1brPXnNGPyZEtR6/EYyDgruQYKiihXVsCrPCdrNUHawop9I1+6JTdXPTA==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/primitive": "1.0.0",
+ "@radix-ui/react-context": "1.0.0",
+ "@radix-ui/react-menu": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.0",
+ "@radix-ui/react-use-callback-ref": "1.0.0",
+ "@radix-ui/react-use-controllable-state": "1.0.0"
+ },
+ "dependencies": {
+ "@radix-ui/react-primitive": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.0.tgz",
+ "integrity": "sha512-EyXe6mnRlHZ8b6f4ilTDrXmkLShICIuOTTj0GX4w1rp+wSxf3+TD05u1UOITC8VsJ2a9nwHvdXtOXEOl0Cw/zQ==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-slot": "1.0.0"
+ }
+ },
+ "@radix-ui/react-slot": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.0.tgz",
+ "integrity": "sha512-3mrKauI/tWXo1Ll+gN5dHcxDPdm/Df1ufcDLCecn+pnCIVcdWE7CujXo8QaXOWRJyZyQWWbpB8eFwHzWXlv5mQ==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-compose-refs": "1.0.0"
+ }
+ }
+ }
+ },
+ "@radix-ui/react-dialog": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.0.2.tgz",
+ "integrity": "sha512-EKxxp2WNSmUPkx4trtWNmZ4/vAYEg7JkAfa1HKBUnaubw9eHzf1Orr9B472lJYaYz327RHDrd4R95fsw7VR8DA==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/primitive": "1.0.0",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-context": "1.0.0",
+ "@radix-ui/react-dismissable-layer": "1.0.2",
+ "@radix-ui/react-focus-guards": "1.0.0",
+ "@radix-ui/react-focus-scope": "1.0.1",
+ "@radix-ui/react-id": "1.0.0",
+ "@radix-ui/react-portal": "1.0.1",
+ "@radix-ui/react-presence": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.1",
+ "@radix-ui/react-slot": "1.0.1",
+ "@radix-ui/react-use-controllable-state": "1.0.0",
+ "aria-hidden": "^1.1.1",
+ "react-remove-scroll": "2.5.5"
+ }
+ },
+ "@radix-ui/react-direction": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.0.0.tgz",
+ "integrity": "sha512-2HV05lGUgYcA6xgLQ4BKPDmtL+QbIZYH5fCOTAOOcJ5O0QbWS3i9lKaurLzliYUDhORI2Qr3pyjhJh44lKA3rQ==",
+ "requires": {
+ "@babel/runtime": "^7.13.10"
+ }
+ },
+ "@radix-ui/react-dismissable-layer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.2.tgz",
+ "integrity": "sha512-WjJzMrTWROozDqLB0uRWYvj4UuXsM/2L19EmQ3Au+IJWqwvwq9Bwd+P8ivo0Deg9JDPArR1I6MbWNi1CmXsskg==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/primitive": "1.0.0",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.1",
+ "@radix-ui/react-use-callback-ref": "1.0.0",
+ "@radix-ui/react-use-escape-keydown": "1.0.2"
+ }
+ },
+ "@radix-ui/react-dropdown-menu": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-1.0.0.tgz",
+ "integrity": "sha512-Ptben3TxPWrZLbInO7zjAK73kmjYuStsxfg6ujgt+EywJyREoibhZYnsSNqC+UiOtl4PdW/MOHhxVDtew5fouQ==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/primitive": "1.0.0",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-context": "1.0.0",
+ "@radix-ui/react-id": "1.0.0",
+ "@radix-ui/react-menu": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.0",
+ "@radix-ui/react-use-controllable-state": "1.0.0"
+ },
+ "dependencies": {
+ "@radix-ui/react-primitive": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.0.tgz",
+ "integrity": "sha512-EyXe6mnRlHZ8b6f4ilTDrXmkLShICIuOTTj0GX4w1rp+wSxf3+TD05u1UOITC8VsJ2a9nwHvdXtOXEOl0Cw/zQ==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-slot": "1.0.0"
+ }
+ },
+ "@radix-ui/react-slot": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.0.tgz",
+ "integrity": "sha512-3mrKauI/tWXo1Ll+gN5dHcxDPdm/Df1ufcDLCecn+pnCIVcdWE7CujXo8QaXOWRJyZyQWWbpB8eFwHzWXlv5mQ==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-compose-refs": "1.0.0"
+ }
+ }
+ }
+ },
+ "@radix-ui/react-focus-guards": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.0.0.tgz",
+ "integrity": "sha512-UagjDk4ijOAnGu4WMUPj9ahi7/zJJqNZ9ZAiGPp7waUWJO0O1aWXi/udPphI0IUjvrhBsZJGSN66dR2dsueLWQ==",
+ "requires": {
+ "@babel/runtime": "^7.13.10"
+ }
+ },
+ "@radix-ui/react-focus-scope": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.1.tgz",
+ "integrity": "sha512-Ej2MQTit8IWJiS2uuujGUmxXjF/y5xZptIIQnyd2JHLwtV0R2j9NRVoRj/1j/gJ7e3REdaBw4Hjf4a1ImhkZcQ==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.1",
+ "@radix-ui/react-use-callback-ref": "1.0.0"
+ }
+ },
+ "@radix-ui/react-icons": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-icons/-/react-icons-1.1.1.tgz",
+ "integrity": "sha512-xc3wQC59rsFylVbSusQCrrM+6695ppF730Q6yqzhRdqDcRNWIm2R6ngpzBoSOQMcwnq4p805F+Gr7xo4fmtN1A==",
+ "requires": {}
+ },
+ "@radix-ui/react-id": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.0.0.tgz",
+ "integrity": "sha512-Q6iAB/U7Tq3NTolBBQbHTgclPmGWE3OlktGGqrClPozSw4vkQ1DfQAOtzgRPecKsMdJINE05iaoDUG8tRzCBjw==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-use-layout-effect": "1.0.0"
+ }
+ },
+ "@radix-ui/react-menu": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-1.0.0.tgz",
+ "integrity": "sha512-icW4C64T6nHh3Z4Q1fxO1RlSShouFF4UpUmPV8FLaJZfphDljannKErDuALDx4ClRLihAPZ9i+PrLNPoWS2DMA==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/primitive": "1.0.0",
+ "@radix-ui/react-collection": "1.0.0",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-context": "1.0.0",
+ "@radix-ui/react-direction": "1.0.0",
+ "@radix-ui/react-dismissable-layer": "1.0.0",
+ "@radix-ui/react-focus-guards": "1.0.0",
+ "@radix-ui/react-focus-scope": "1.0.0",
+ "@radix-ui/react-id": "1.0.0",
+ "@radix-ui/react-popper": "1.0.0",
+ "@radix-ui/react-portal": "1.0.0",
+ "@radix-ui/react-presence": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.0",
+ "@radix-ui/react-roving-focus": "1.0.0",
+ "@radix-ui/react-slot": "1.0.0",
+ "@radix-ui/react-use-callback-ref": "1.0.0",
+ "aria-hidden": "^1.1.1",
+ "react-remove-scroll": "2.5.4"
+ },
+ "dependencies": {
+ "@radix-ui/react-dismissable-layer": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.0.tgz",
+ "integrity": "sha512-n7kDRfx+LB1zLueRDvZ1Pd0bxdJWDUZNQ/GWoxDn2prnuJKRdxsjulejX/ePkOsLi2tTm6P24mDqlMSgQpsT6g==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/primitive": "1.0.0",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.0",
+ "@radix-ui/react-use-callback-ref": "1.0.0",
+ "@radix-ui/react-use-escape-keydown": "1.0.0"
+ }
+ },
+ "@radix-ui/react-focus-scope": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.0.tgz",
+ "integrity": "sha512-C4SWtsULLGf/2L4oGeIHlvWQx7Rf+7cX/vKOAD2dXW0A1b5QXwi3wWeaEgW+wn+SEVrraMUk05vLU9fZZz5HbQ==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.0",
+ "@radix-ui/react-use-callback-ref": "1.0.0"
+ }
+ },
+ "@radix-ui/react-portal": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.0.0.tgz",
+ "integrity": "sha512-a8qyFO/Xb99d8wQdu4o7qnigNjTPG123uADNecz0eX4usnQEj7o+cG4ZX4zkqq98NYekT7UoEQIjxBNWIFuqTA==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-primitive": "1.0.0"
+ }
+ },
+ "@radix-ui/react-primitive": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.0.tgz",
+ "integrity": "sha512-EyXe6mnRlHZ8b6f4ilTDrXmkLShICIuOTTj0GX4w1rp+wSxf3+TD05u1UOITC8VsJ2a9nwHvdXtOXEOl0Cw/zQ==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-slot": "1.0.0"
+ }
+ },
+ "@radix-ui/react-slot": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.0.tgz",
+ "integrity": "sha512-3mrKauI/tWXo1Ll+gN5dHcxDPdm/Df1ufcDLCecn+pnCIVcdWE7CujXo8QaXOWRJyZyQWWbpB8eFwHzWXlv5mQ==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-compose-refs": "1.0.0"
+ }
+ },
+ "@radix-ui/react-use-escape-keydown": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.0.tgz",
+ "integrity": "sha512-JwfBCUIfhXRxKExgIqGa4CQsiMemo1Xt0W/B4ei3fpzpvPENKpMKQ8mZSB6Acj3ebrAEgi2xiQvcI1PAAodvyg==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-use-callback-ref": "1.0.0"
+ }
+ },
+ "react-remove-scroll": {
+ "version": "2.5.4",
+ "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.4.tgz",
+ "integrity": "sha512-xGVKJJr0SJGQVirVFAUZ2k1QLyO6m+2fy0l8Qawbp5Jgrv3DeLalrfMNBFSlmz5kriGGzsVBtGVnf4pTKIhhWA==",
+ "requires": {
+ "react-remove-scroll-bar": "^2.3.3",
+ "react-style-singleton": "^2.2.1",
+ "tslib": "^2.1.0",
+ "use-callback-ref": "^1.3.0",
+ "use-sidecar": "^1.1.2"
+ }
+ }
+ }
+ },
+ "@radix-ui/react-popover": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.0.2.tgz",
+ "integrity": "sha512-4tqZEl9w95R5mlZ/sFdgBnfhCBOEPepLIurBA5kt/qaAhldJ1tNQd0ngr0ET0AHbPotT4mwxMPr7a+MA/wbK0g==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/primitive": "1.0.0",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-context": "1.0.0",
+ "@radix-ui/react-dismissable-layer": "1.0.2",
+ "@radix-ui/react-focus-guards": "1.0.0",
+ "@radix-ui/react-focus-scope": "1.0.1",
+ "@radix-ui/react-id": "1.0.0",
+ "@radix-ui/react-popper": "1.0.1",
+ "@radix-ui/react-portal": "1.0.1",
+ "@radix-ui/react-presence": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.1",
+ "@radix-ui/react-slot": "1.0.1",
+ "@radix-ui/react-use-controllable-state": "1.0.0",
+ "aria-hidden": "^1.1.1",
+ "react-remove-scroll": "2.5.5"
+ },
+ "dependencies": {
+ "@radix-ui/react-arrow": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.0.1.tgz",
+ "integrity": "sha512-1yientwXqXcErDHEv8av9ZVNEBldH8L9scVR3is20lL+jOCfcJyMFZFEY5cgIrgexsq1qggSXqiEL/d/4f+QXA==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-primitive": "1.0.1"
+ }
+ },
+ "@radix-ui/react-popper": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.0.1.tgz",
+ "integrity": "sha512-J4Vj7k3k+EHNWgcKrE+BLlQfpewxA7Zd76h5I0bIa+/EqaIZ3DuwrbPj49O3wqN+STnXsBuxiHLiF0iU3yfovw==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@floating-ui/react-dom": "0.7.2",
+ "@radix-ui/react-arrow": "1.0.1",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-context": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.1",
+ "@radix-ui/react-use-layout-effect": "1.0.0",
+ "@radix-ui/react-use-rect": "1.0.0",
+ "@radix-ui/react-use-size": "1.0.0",
+ "@radix-ui/rect": "1.0.0"
+ }
+ }
+ }
+ },
+ "@radix-ui/react-popper": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.0.0.tgz",
+ "integrity": "sha512-k2dDd+1Wl0XWAMs9ZvAxxYsB9sOsEhrFQV4CINd7IUZf0wfdye4OHen9siwxvZImbzhgVeKTJi68OQmPRvVdMg==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@floating-ui/react-dom": "0.7.2",
+ "@radix-ui/react-arrow": "1.0.0",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-context": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.0",
+ "@radix-ui/react-use-layout-effect": "1.0.0",
+ "@radix-ui/react-use-rect": "1.0.0",
+ "@radix-ui/react-use-size": "1.0.0",
+ "@radix-ui/rect": "1.0.0"
+ },
+ "dependencies": {
+ "@radix-ui/react-primitive": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.0.tgz",
+ "integrity": "sha512-EyXe6mnRlHZ8b6f4ilTDrXmkLShICIuOTTj0GX4w1rp+wSxf3+TD05u1UOITC8VsJ2a9nwHvdXtOXEOl0Cw/zQ==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-slot": "1.0.0"
+ }
+ },
+ "@radix-ui/react-slot": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.0.tgz",
+ "integrity": "sha512-3mrKauI/tWXo1Ll+gN5dHcxDPdm/Df1ufcDLCecn+pnCIVcdWE7CujXo8QaXOWRJyZyQWWbpB8eFwHzWXlv5mQ==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-compose-refs": "1.0.0"
+ }
+ }
+ }
+ },
+ "@radix-ui/react-portal": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.0.1.tgz",
+ "integrity": "sha512-NY2vUWI5WENgAT1nfC6JS7RU5xRYBfjZVLq0HmgEN1Ezy3rk/UruMV4+Rd0F40PEaFC5SrLS1ixYvcYIQrb4Ig==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-primitive": "1.0.1"
+ }
+ },
+ "@radix-ui/react-presence": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.0.0.tgz",
+ "integrity": "sha512-A+6XEvN01NfVWiKu38ybawfHsBjWum42MRPnEuqPsBZ4eV7e/7K321B5VgYMPv3Xx5An6o1/l9ZuDBgmcmWK3w==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-use-layout-effect": "1.0.0"
+ }
+ },
+ "@radix-ui/react-primitive": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.1.tgz",
+ "integrity": "sha512-fHbmislWVkZaIdeF6GZxF0A/NH/3BjrGIYj+Ae6eTmTCr7EB0RQAAVEiqsXK6p3/JcRqVSBQoceZroj30Jj3XA==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-slot": "1.0.1"
+ }
+ },
+ "@radix-ui/react-roving-focus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.0.0.tgz",
+ "integrity": "sha512-lHvO4MhvoWpeNbiJAoyDsEtbKqP2jkkdwsMVJ3kfqbkC71J/aXE6Th6gkZA1xHEqSku+t+UgoDjvE7Z3gsBpcg==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/primitive": "1.0.0",
+ "@radix-ui/react-collection": "1.0.0",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-context": "1.0.0",
+ "@radix-ui/react-direction": "1.0.0",
+ "@radix-ui/react-id": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.0",
+ "@radix-ui/react-use-callback-ref": "1.0.0",
+ "@radix-ui/react-use-controllable-state": "1.0.0"
+ },
+ "dependencies": {
+ "@radix-ui/react-primitive": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.0.tgz",
+ "integrity": "sha512-EyXe6mnRlHZ8b6f4ilTDrXmkLShICIuOTTj0GX4w1rp+wSxf3+TD05u1UOITC8VsJ2a9nwHvdXtOXEOl0Cw/zQ==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-slot": "1.0.0"
+ }
+ },
+ "@radix-ui/react-slot": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.0.tgz",
+ "integrity": "sha512-3mrKauI/tWXo1Ll+gN5dHcxDPdm/Df1ufcDLCecn+pnCIVcdWE7CujXo8QaXOWRJyZyQWWbpB8eFwHzWXlv5mQ==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-compose-refs": "1.0.0"
+ }
+ }
+ }
+ },
+ "@radix-ui/react-slot": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.1.tgz",
+ "integrity": "sha512-avutXAFL1ehGvAXtPquu0YK5oz6ctS474iM3vNGQIkswrVhdrS52e3uoMQBzZhNRAIE0jBnUyXWNmSjGHhCFcw==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-compose-refs": "1.0.0"
+ }
+ },
+ "@radix-ui/react-tooltip": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.0.2.tgz",
+ "integrity": "sha512-11gUlok2rv5mu+KBtxniOKKNKjqC/uTbgFHWoQdbF46vMV+zjDaBvCtVDK9+MTddlpmlisGPGvvojX7Qm0yr+g==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/primitive": "1.0.0",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-context": "1.0.0",
+ "@radix-ui/react-dismissable-layer": "1.0.2",
+ "@radix-ui/react-id": "1.0.0",
+ "@radix-ui/react-popper": "1.0.1",
+ "@radix-ui/react-portal": "1.0.1",
+ "@radix-ui/react-presence": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.1",
+ "@radix-ui/react-slot": "1.0.1",
+ "@radix-ui/react-use-controllable-state": "1.0.0",
+ "@radix-ui/react-visually-hidden": "1.0.1"
+ },
+ "dependencies": {
+ "@radix-ui/react-arrow": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.0.1.tgz",
+ "integrity": "sha512-1yientwXqXcErDHEv8av9ZVNEBldH8L9scVR3is20lL+jOCfcJyMFZFEY5cgIrgexsq1qggSXqiEL/d/4f+QXA==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-primitive": "1.0.1"
+ }
+ },
+ "@radix-ui/react-popper": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.0.1.tgz",
+ "integrity": "sha512-J4Vj7k3k+EHNWgcKrE+BLlQfpewxA7Zd76h5I0bIa+/EqaIZ3DuwrbPj49O3wqN+STnXsBuxiHLiF0iU3yfovw==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@floating-ui/react-dom": "0.7.2",
+ "@radix-ui/react-arrow": "1.0.1",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-context": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.1",
+ "@radix-ui/react-use-layout-effect": "1.0.0",
+ "@radix-ui/react-use-rect": "1.0.0",
+ "@radix-ui/react-use-size": "1.0.0",
+ "@radix-ui/rect": "1.0.0"
+ }
+ }
+ }
+ },
+ "@radix-ui/react-use-callback-ref": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.0.tgz",
+ "integrity": "sha512-GZtyzoHz95Rhs6S63D2t/eqvdFCm7I+yHMLVQheKM7nBD8mbZIt+ct1jz4536MDnaOGKIxynJ8eHTkVGVVkoTg==",
+ "requires": {
+ "@babel/runtime": "^7.13.10"
+ }
+ },
+ "@radix-ui/react-use-controllable-state": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.0.tgz",
+ "integrity": "sha512-FohDoZvk3mEXh9AWAVyRTYR4Sq7/gavuofglmiXB2g1aKyboUD4YtgWxKj8O5n+Uak52gXQ4wKz5IFST4vtJHg==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-use-callback-ref": "1.0.0"
+ }
+ },
+ "@radix-ui/react-use-escape-keydown": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.2.tgz",
+ "integrity": "sha512-DXGim3x74WgUv+iMNCF+cAo8xUHHeqvjx8zs7trKf+FkQKPQXLk2sX7Gx1ysH7Q76xCpZuxIJE7HLPxRE+Q+GA==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-use-callback-ref": "1.0.0"
+ }
+ },
+ "@radix-ui/react-use-layout-effect": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.0.tgz",
+ "integrity": "sha512-6Tpkq+R6LOlmQb1R5NNETLG0B4YP0wc+klfXafpUCj6JGyaUc8il7/kUZ7m59rGbXGczE9Bs+iz2qloqsZBduQ==",
+ "requires": {
+ "@babel/runtime": "^7.13.10"
+ }
+ },
+ "@radix-ui/react-use-rect": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.0.0.tgz",
+ "integrity": "sha512-TB7pID8NRMEHxb/qQJpvSt3hQU4sqNPM1VCTjTRjEOa7cEop/QMuq8S6fb/5Tsz64kqSvB9WnwsDHtjnrM9qew==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/rect": "1.0.0"
+ }
+ },
+ "@radix-ui/react-use-size": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.0.0.tgz",
+ "integrity": "sha512-imZ3aYcoYCKhhgNpkNDh/aTiU05qw9hX+HHI1QDBTyIlcFjgeFlKKySNGMwTp7nYFLQg/j0VA2FmCY4WPDDHMg==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-use-layout-effect": "1.0.0"
+ }
+ },
+ "@radix-ui/react-visually-hidden": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.0.1.tgz",
+ "integrity": "sha512-K1hJcCMfWfiYUibRqf3V8r5Drpyf7rh44jnrwAbdvI5iCCijilBBeyQv9SKidYNZIopMdCyR9FnIjkHxHN0FcQ==",
+ "requires": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-primitive": "1.0.1"
+ }
+ },
+ "@radix-ui/rect": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.0.0.tgz",
+ "integrity": "sha512-d0O68AYy/9oeEy1DdC07bz1/ZXX+DqCskRd3i4JzLSTXwefzaepQrKjXC7aNM8lTHjFLDO0pDgaEiQ7jEk+HVg==",
+ "requires": {
+ "@babel/runtime": "^7.13.10"
+ }
+ },
"@remix-run/dev": {
"version": "1.7.4",
"resolved": "https://registry.npmjs.org/@remix-run/dev/-/dev-1.7.4.tgz",
@@ -17276,6 +19321,12 @@
"integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==",
"dev": true
},
+ "@stitches/react": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@stitches/react/-/react-1.2.8.tgz",
+ "integrity": "sha512-9g9dWI4gsSVe8bNLlb+lMkBYsnIKCZTmvqvDG+Avnn69XfmHZKiaMrx7cgTaddq7aTPPmXiTsbFcUy0xgI4+wA==",
+ "requires": {}
+ },
"@szmarczak/http-timer": {
"version": "4.0.6",
"resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz",
@@ -17301,6 +19352,56 @@
"pretty-format": "^27.0.2"
}
},
+ "@tldraw/core": {
+ "version": "1.20.1",
+ "resolved": "https://registry.npmjs.org/@tldraw/core/-/core-1.20.1.tgz",
+ "integrity": "sha512-DEeu64TvgttifJPt51hFYrzc6fwpYpjDMcvlqN6RZ4CfQftv9ZaZJA2KWbqf9EQGJT01ujYH9UM6MdkWp3lTyg==",
+ "requires": {
+ "@tldraw/intersect": "^1.8.0",
+ "@tldraw/vec": "^1.8.0",
+ "@use-gesture/react": "^10.2.19",
+ "perfect-freehand": "^1.1.0"
+ }
+ },
+ "@tldraw/intersect": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@tldraw/intersect/-/intersect-1.8.0.tgz",
+ "integrity": "sha512-0UarshNpyq2+O4o0xHMJIBgF0E630mes5CkMoO+D5xgYppSBIkeqYDcv0ujsmAhMKX1O6Y0ShuuHeflBEULUoQ==",
+ "requires": {
+ "@tldraw/vec": "^1.8.0"
+ }
+ },
+ "@tldraw/tldraw": {
+ "version": "1.26.2",
+ "resolved": "https://registry.npmjs.org/@tldraw/tldraw/-/tldraw-1.26.2.tgz",
+ "integrity": "sha512-quNY068Nq6geN4oGvTyGBjILYMi/XpaV8DTPes/JFWxqKxfOLlj9hsziwug+zIjPDa2k9EO4Q+yc0+z1RSFI9A==",
+ "requires": {
+ "@radix-ui/react-alert-dialog": "^1.0.0",
+ "@radix-ui/react-context-menu": "^1.0.0",
+ "@radix-ui/react-dialog": "^1.0.0",
+ "@radix-ui/react-dropdown-menu": "^1.0.0",
+ "@radix-ui/react-icons": "^1.1.1",
+ "@radix-ui/react-popover": "^1.0.0",
+ "@radix-ui/react-tooltip": "^1.0.0",
+ "@stitches/react": "^1.2.8",
+ "@tldraw/core": "^1.20.1",
+ "@tldraw/intersect": "^1.8.0",
+ "@tldraw/vec": "^1.8.0",
+ "browser-fs-access": "^0.31.0",
+ "idb-keyval": "^6.2.0",
+ "perfect-freehand": "^1.2.0",
+ "react-error-boundary": "^3.1.4",
+ "react-hotkeys-hook": "^3.4.7",
+ "react-intl": "^6.1.1",
+ "tslib": "^2.4.0",
+ "zustand": "^4.1.1"
+ }
+ },
+ "@tldraw/vec": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@tldraw/vec/-/vec-1.8.0.tgz",
+ "integrity": "sha512-GiS5Df3CzXY/fPBFcM0CKFERZfI4Cg1X33VPZX+NLo7Fwm/h9zu/aU24N1mG75Q9LuMnwKm7woxKr8BiUXGYCg=="
+ },
"@tootallnate/once": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
@@ -17415,6 +19516,15 @@
"@types/unist": "*"
}
},
+ "@types/hoist-non-react-statics": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz",
+ "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==",
+ "requires": {
+ "@types/react": "*",
+ "hoist-non-react-statics": "^3.3.0"
+ }
+ },
"@types/http-cache-semantics": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz",
@@ -17528,14 +19638,12 @@
"@types/prop-types": {
"version": "15.7.5",
"resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
- "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==",
- "dev": true
+ "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w=="
},
"@types/react": {
"version": "18.0.24",
"resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.24.tgz",
"integrity": "sha512-wRJWT6ouziGUy+9uX0aW4YOJxAY0bG6/AOk5AW5QSvZqI7dk6VBIbXvcVgIw/W5Jrl24f77df98GEKTJGOLx7Q==",
- "dev": true,
"requires": {
"@types/prop-types": "*",
"@types/scheduler": "*",
@@ -17563,8 +19671,7 @@
"@types/scheduler": {
"version": "0.16.2",
"resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz",
- "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==",
- "dev": true
+ "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew=="
},
"@types/semver": {
"version": "7.3.12",
@@ -17765,6 +19872,19 @@
}
}
},
+ "@use-gesture/core": {
+ "version": "10.2.22",
+ "resolved": "https://registry.npmjs.org/@use-gesture/core/-/core-10.2.22.tgz",
+ "integrity": "sha512-Ek0JZFYfk+hicLmoG094gm3YOuDMBNckHb988e59YOZoAkETT8dQSzT+g3QkSHSiP1m5wFXAGPSgxvOuwvGKHQ=="
+ },
+ "@use-gesture/react": {
+ "version": "10.2.22",
+ "resolved": "https://registry.npmjs.org/@use-gesture/react/-/react-10.2.22.tgz",
+ "integrity": "sha512-ECo7ig16SxBE06ENIURO1woKEB6TC8qY3a0rugJjQ2f1o0Tj28xS/eYNyJuqzQB5YT0q5IrF7ZFpbx1p/5ohYA==",
+ "requires": {
+ "@use-gesture/core": "10.2.22"
+ }
+ },
"@web3-storage/multipart-parser": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@web3-storage/multipart-parser/-/multipart-parser-1.0.0.tgz",
@@ -17954,6 +20074,14 @@
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
"dev": true
},
+ "aria-hidden": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.2.tgz",
+ "integrity": "sha512-6y/ogyDTk/7YAe91T3E2PR1ALVKyM2QbTio5HwM+N1Q6CMlCKhvClyIjkckBswa0f2xJhjsfzIGa1yVSe1UMVA==",
+ "requires": {
+ "tslib": "^2.0.0"
+ }
+ },
"aria-query": {
"version": "5.0.2",
"resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.0.2.tgz",
@@ -18331,6 +20459,11 @@
"fill-range": "^7.0.1"
}
},
+ "browser-fs-access": {
+ "version": "0.31.1",
+ "resolved": "https://registry.npmjs.org/browser-fs-access/-/browser-fs-access-0.31.1.tgz",
+ "integrity": "sha512-jMz9f56DkLM7LyA8wZYO7CtpoF3RdUk1/FXrnRNybgV0R5eqk/fgFWR0k5IMjPYgK4jmZecytP/UDO5WBi9Dhg=="
+ },
"browserify-zlib": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz",
@@ -19191,6 +21324,11 @@
"integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==",
"dev": true
},
+ "detect-node-es": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz",
+ "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ=="
+ },
"diff": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz",
@@ -20845,6 +22983,11 @@
"has-symbols": "^1.0.1"
}
},
+ "get-nonce": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz",
+ "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q=="
+ },
"get-port": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz",
@@ -21262,12 +23405,32 @@
"@babel/runtime": "^7.7.6"
}
},
+ "hoist-non-react-statics": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
+ "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
+ "requires": {
+ "react-is": "^16.7.0"
+ },
+ "dependencies": {
+ "react-is": {
+ "version": "16.13.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
+ }
+ }
+ },
"hosted-git-info": {
"version": "2.8.9",
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
"integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
"dev": true
},
+ "hotkeys-js": {
+ "version": "3.9.4",
+ "resolved": "https://registry.npmjs.org/hotkeys-js/-/hotkeys-js-3.9.4.tgz",
+ "integrity": "sha512-2zuLt85Ta+gIyvs4N88pCYskNrxf1TFv3LR9t5mdAZIX8BcgQQ48F2opUptvHa6m8zsy5v/a0i9mWzTrlNWU0Q=="
+ },
"html-parse-stringify": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz",
@@ -21415,6 +23578,14 @@
"safer-buffer": ">= 2.1.2 < 3"
}
},
+ "idb-keyval": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-6.2.0.tgz",
+ "integrity": "sha512-uw+MIyQn2jl3+hroD7hF8J7PUviBU7BPKWw4f/ISf32D4LoGu98yHjrzWWJDASu9QNrX10tCJqk9YY0ClWm8Ng==",
+ "requires": {
+ "safari-14-idb-fix": "^3.0.0"
+ }
+ },
"ieee754": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
@@ -21527,11 +23698,30 @@
"side-channel": "^1.0.4"
}
},
+ "intl-messageformat": {
+ "version": "10.2.1",
+ "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.2.1.tgz",
+ "integrity": "sha512-1lrJG2qKzcC1TVzYu1VuB1yiY68LU5rwpbHa2THCzA67Vutkz7+1lv5U20K3Lz5RAiH78zxNztMEtchokMWv8A==",
+ "requires": {
+ "@formatjs/ecma402-abstract": "1.13.0",
+ "@formatjs/fast-memoize": "1.2.6",
+ "@formatjs/icu-messageformat-parser": "2.1.10",
+ "tslib": "2.4.0"
+ }
+ },
"intl-parse-accept-language": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/intl-parse-accept-language/-/intl-parse-accept-language-1.0.0.tgz",
"integrity": "sha512-YFMSV91JNBOSjw1cOfw2tup6hDP7mkz+2AUV7W1L1AM6ntgI75qC1ZeFpjPGMrWp+upmBRTX2fJWQ8c7jsUWpA=="
},
+ "invariant": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
+ "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
+ "requires": {
+ "loose-envify": "^1.0.0"
+ }
+ },
"ip": {
"version": "1.1.8",
"resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz",
@@ -22118,6 +24308,11 @@
"resolved": "https://registry.npmjs.org/just-clone/-/just-clone-6.1.1.tgz",
"integrity": "sha512-V24KLIid8uaG7ayOymGfheNHtxgrbpzj1UznQnF9vQZMHlKGTSLT3WWmFx62OXSQPwk1Tn+uo+H5/Xhb4bL9pA=="
},
+ "just-random-integer": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/just-random-integer/-/just-random-integer-4.1.1.tgz",
+ "integrity": "sha512-4BjDeKr8tJgi7G2YrUF9FY1DkiwO/ToJ6tzzXM0seLGXJCeBwZ/QiEaNECYuA+QFPqV5zJALo6LG9hHPCAwQEA=="
+ },
"just-shuffle": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/just-shuffle/-/just-shuffle-4.1.1.tgz",
@@ -23128,10 +25323,9 @@
}
},
"nanoid": {
- "version": "3.3.4",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
- "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
- "dev": true
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.0.tgz",
+ "integrity": "sha512-IgBP8piMxe/gf73RTQx7hmnhwz0aaEXYakvqZyE302IXW3HyVNhdNGC+O2MwMAVhLEnvXlvKtGbtJf6wvHihCg=="
},
"nanomatch": {
"version": "1.2.13",
@@ -23660,6 +25854,11 @@
"through2": "^2.0.3"
}
},
+ "perfect-freehand": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/perfect-freehand/-/perfect-freehand-1.2.0.tgz",
+ "integrity": "sha512-h/0ikF1M3phW7CwpZ5MMvKnfpHficWoOEyr//KVNTxV4F6deRK1eYMtHyBKEAKFK0aXIEUK9oBvlF6PNXMDsAw=="
+ },
"periscopic": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.0.4.tgz",
@@ -23726,6 +25925,14 @@
"nanoid": "^3.3.4",
"picocolors": "^1.0.0",
"source-map-js": "^1.0.2"
+ },
+ "dependencies": {
+ "nanoid": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
+ "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
+ "dev": true
+ }
}
},
"postcss-media-query-parser": {
@@ -24043,6 +26250,14 @@
"scheduler": "^0.23.0"
}
},
+ "react-error-boundary": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/react-error-boundary/-/react-error-boundary-3.1.4.tgz",
+ "integrity": "sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA==",
+ "requires": {
+ "@babel/runtime": "^7.12.5"
+ }
+ },
"react-fast-compare": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz",
@@ -24057,6 +26272,14 @@
"prop-types": "^15.5.7"
}
},
+ "react-hotkeys-hook": {
+ "version": "3.4.7",
+ "resolved": "https://registry.npmjs.org/react-hotkeys-hook/-/react-hotkeys-hook-3.4.7.tgz",
+ "integrity": "sha512-+bbPmhPAl6ns9VkXkNNyxlmCAIyDAcWbB76O4I0ntr3uWCRuIQf/aRLartUahe9chVMPj+OEzzfk3CQSjclUEQ==",
+ "requires": {
+ "hotkeys-js": "3.9.4"
+ }
+ },
"react-i18next": {
"version": "11.18.6",
"resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-11.18.6.tgz",
@@ -24066,6 +26289,23 @@
"html-parse-stringify": "^3.0.1"
}
},
+ "react-intl": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-6.2.1.tgz",
+ "integrity": "sha512-hYxcSamgoA3Mvc55nwhTF1v15T0NUSkaV/EScMNVZXg0kRyaMAoNHkCi9/9H+TnXWNiWrcWH9bjlMlJwrG2V7g==",
+ "requires": {
+ "@formatjs/ecma402-abstract": "1.13.0",
+ "@formatjs/icu-messageformat-parser": "2.1.10",
+ "@formatjs/intl": "2.5.1",
+ "@formatjs/intl-displaynames": "6.1.4",
+ "@formatjs/intl-listformat": "7.1.3",
+ "@types/hoist-non-react-statics": "^3.3.1",
+ "@types/react": "16 || 17 || 18",
+ "hoist-non-react-statics": "^3.3.2",
+ "intl-messageformat": "10.2.1",
+ "tslib": "2.4.0"
+ }
+ },
"react-is": {
"version": "17.0.2",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
@@ -24081,6 +26321,27 @@
"warning": "^4.0.2"
}
},
+ "react-remove-scroll": {
+ "version": "2.5.5",
+ "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz",
+ "integrity": "sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==",
+ "requires": {
+ "react-remove-scroll-bar": "^2.3.3",
+ "react-style-singleton": "^2.2.1",
+ "tslib": "^2.1.0",
+ "use-callback-ref": "^1.3.0",
+ "use-sidecar": "^1.1.2"
+ }
+ },
+ "react-remove-scroll-bar": {
+ "version": "2.3.4",
+ "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz",
+ "integrity": "sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==",
+ "requires": {
+ "react-style-singleton": "^2.2.1",
+ "tslib": "^2.0.0"
+ }
+ },
"react-router": {
"version": "6.3.0",
"resolved": "https://registry.npmjs.org/react-router/-/react-router-6.3.0.tgz",
@@ -24098,6 +26359,16 @@
"react-router": "6.3.0"
}
},
+ "react-style-singleton": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz",
+ "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==",
+ "requires": {
+ "get-nonce": "^1.0.0",
+ "invariant": "^2.2.4",
+ "tslib": "^2.0.0"
+ }
+ },
"react-universal-interface": {
"version": "0.6.2",
"resolved": "https://registry.npmjs.org/react-universal-interface/-/react-universal-interface-0.6.2.tgz",
@@ -24621,6 +26892,11 @@
"mri": "^1.1.0"
}
},
+ "safari-14-idb-fix": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/safari-14-idb-fix/-/safari-14-idb-fix-3.0.0.tgz",
+ "integrity": "sha512-eBNFLob4PMq8JA1dGyFn6G97q3/WzNtFK4RnzT1fnLq+9RyrGknzYiM/9B12MnKAxuj1IXr7UKYtTNtjyKMBog=="
+ },
"safe-buffer": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
@@ -26019,7 +28295,7 @@
"version": "4.8.4",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz",
"integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==",
- "dev": true
+ "devOptional": true
},
"unbox-primitive": {
"version": "1.0.2",
@@ -26280,6 +28556,14 @@
"integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
"dev": true
},
+ "use-callback-ref": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.0.tgz",
+ "integrity": "sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==",
+ "requires": {
+ "tslib": "^2.0.0"
+ }
+ },
"use-consistent-value": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/use-consistent-value/-/use-consistent-value-1.0.0.tgz",
@@ -26288,6 +28572,27 @@
"fast-deep-equal": "^3.1.3"
}
},
+ "use-isomorphic-layout-effect": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz",
+ "integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==",
+ "requires": {}
+ },
+ "use-sidecar": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz",
+ "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==",
+ "requires": {
+ "detect-node-es": "^1.1.0",
+ "tslib": "^2.0.0"
+ }
+ },
+ "use-sync-external-store": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz",
+ "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==",
+ "requires": {}
+ },
"util": {
"version": "0.12.5",
"resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz",
@@ -26646,6 +28951,14 @@
"resolved": "https://registry.npmjs.org/zod/-/zod-3.19.1.tgz",
"integrity": "sha512-LYjZsEDhCdYET9ikFu6dVPGp2YH9DegXjdJToSzD9rO6fy4qiRYFoyEYwps88OseJlPyl2NOe2iJuhEhL7IpEA=="
},
+ "zustand": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.1.4.tgz",
+ "integrity": "sha512-k2jVOlWo8p4R83mQ+/uyB8ILPO2PCJOf+QVjcL+1PbMCk1w5OoPYpAIxy9zd93FSfmJqoH6lGdwzzjwqJIRU5A==",
+ "requires": {
+ "use-sync-external-store": "1.2.0"
+ }
+ },
"zwitch": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.2.tgz",
diff --git a/package.json b/package.json
index d188eea50..bd66b176d 100644
--- a/package.json
+++ b/package.json
@@ -19,6 +19,7 @@
"check-translation-jsons": "node --experimental-specifier-resolution=node --loader ts-node/esm -r tsconfig-paths/register scripts/check-translation-jsons.ts",
"check-translation-jsons:no-write": "node --experimental-specifier-resolution=node --loader ts-node/esm -r tsconfig-paths/register scripts/check-translation-jsons.ts --no-write",
"replace-img-names": "node --experimental-specifier-resolution=node --loader ts-node/esm -r tsconfig-paths/register scripts/replace-img-names.ts",
+ "replace-weapon-names": "node --experimental-specifier-resolution=node --loader ts-node/esm -r tsconfig-paths/register scripts/replace-weapon-names.ts",
"remove-bad-custom-urls": "node --experimental-specifier-resolution=node --loader ts-node/esm -r tsconfig-paths/register scripts/remove-bad-custom-urls.ts",
"lint:ts": "eslint . --ext .ts,.tsx",
"lint:styles": "stylelint \"app/styles/**/*.css\"",
@@ -36,6 +37,7 @@
"@remix-run/node": "^1.7.4",
"@remix-run/react": "^1.7.4",
"@remix-run/serve": "^1.7.4",
+ "@tldraw/tldraw": "^1.26.2",
"better-sqlite3": "^7.6.2",
"clsx": "^1.2.1",
"countries-list": "^2.6.1",
@@ -48,8 +50,10 @@
"i18next-http-backend": "^1.4.4",
"just-capitalize": "^3.1.1",
"just-clone": "^6.1.1",
+ "just-random-integer": "^4.1.1",
"just-shuffle": "^4.1.1",
"markdown-to-jsx": "^7.1.7",
+ "nanoid": "^4.0.0",
"node-cron": "3.0.2",
"react": "^18.2.0",
"react-dom": "^18.2.0",
diff --git a/public/img/layout/plans.avif b/public/img/layout/plans.avif
new file mode 100644
index 0000000000000000000000000000000000000000..8ccb3a6ef3e488bec37220d567ae5d78d0a139e5
GIT binary patch
literal 5545
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
LW+c3qQT%@Z$k;-~
literal 0
HcmV?d00001
diff --git a/public/img/layout/plans.png b/public/img/layout/plans.png
new file mode 100644
index 0000000000000000000000000000000000000000..cbae7d7fe76aeb181856c35adc841cd9e1b1fc05
GIT binary patch
literal 36122
zcmce81y|HxwDyov(k-cUOM@r~f^sf2WQONk&M(jiE$!~#|@Wor6vU;9RT&z94&D^aJGFFZrz8(xuJfB(GxiDzCxHxu|eh)w(
z7!V4N9%}h~-O2IxNwQk_{9-Jrc(d55{xyHp+bFhL3^&d)tXgy;A~JOpjeL3rUKy$=
zhWwCzEsaM~AA*!I*xCGX`rp)hzG)d5^?31u=_a?+*Ei~p%OV?YKWwv>^ws`sw^lz_
zkj9eO>kPeCk*7o5>qH|!@mUGJ@&8{+pd(-UV8K@<_6UREQwR=o>E4xuC5=DkCK0hCClZjhQ#~8?>pA(9n(}Ti8o=bThKm8iyUiBWwKW2Y4+>?+Rr`cpPdFI*eg=
zg@leP_xASGToX7M!un5;b+AZ!ss8HUWsuB@gP7{6KW%psn#Q14Kx6@1lq?n_He+#h
z$CbGM)|Ya7oB=XI>Fgu;N7oJ^e=vMt^=z1#nT3W*MjO2@|HOQ=+t^V5J#=%}S|E|B
zV8Zt7>S8xT!k0fIBcqXrWX=QQB@W|^Vj>eRBPnd%-ZIxwm(=r}d5@dHI*WJ{;iz5L
zH}j^<-!lyHbEHHqzqro1Yw?+ojO;-`m(hN^8`
zEq`rrXrr+&uX-Fur!&@|nE3wHHx4u+Db~JaAsXRU*RoF)*KfwE*l?t=v^dB%MswCu
zbWOg0j=9y8ruUu|dtmO6SR9w}_I-5q6A@4C6{n}g7Kedee~&gj%FD}d*7T*uNY%`^9o_9
z|MOsd=xA#?Iz2tzFwNK_-i$dvns8Nw044di$`TbNj>M-C!X%=8(dU2bP3`R~Oh-@S
z?q8A+Fp0@aZJgaFk3co2IkmAkrCdNb#L?X!wmQ#z^!Tw-gZ(sd?6wA4i^V8~KjpiU
zwc^vye?AUz?}!zMl}iMiN@Km2yE8B_AfNc?cxyVrYTk)Bo+BDzTb8t
z$=p;dT2Nz9xF3*1L7|Vuc&Gr>i(GIb$oidPh}1(*~;03*(nyQm@{^4
zM^P|mY=;0!os27Krx7(vIFmx6#V3kps+o7j3y%_+N~}jRZ*I?2U1ZCQf2v_!@u4{I
z9csbk$9up!&HMq+VhU|^u2-DJ_^7=FoZ0tIl?l2jWepq5Z;aLa25Kv{!C@9t
z^nr!btDGg`kIMx!7ow_Vi_~cF-eZ+5>2WfSI>Ivugb>K
zh)Ek5P+QkgRZd5ZSl_vGCv<1WadL7p+aQ>0=@T(wN@qt(fT0b%AOL}THLz%*8`S`G?GnjYnZI6*;1ub
zW_*%osVUkKrLPLmBf_Oy@RD+WemByfcdI=y(yiv=)Man=a<@v+8TXz;~rd
z1a9zzbOas&%HsX+-okdSJ*BXo=5Z>^_>R&MKX55{jG|&dLh^+L#nr8Vr8#
zuCGsPm1u_d*Y1S3smnfz`rz?W=2ne)oF@8GVMue%(<04steZEPxwv+m^LD!3YL)c$
z^(}2|k}@(B{QShpqr;1fnO4`<6ciM`|2^I|>Ilqv`<9DT_F<~k#(;^D&;t?ZgP&G=
zqsxt&+#{DRMsx1@UjI9t*z|17MAU}*G@7YlHLo%Twe0@b#%q1qmiYFo(}QQ?H8x-C
z?G(0Wt9S9!$z=C6%eAJQgtH1XOB9<~bA7riHHzf4Ikn2vHHs#*QkcqFPU7{2b|U%Q
z_1nF~3_AavF2~6|@x%5L&Qj5<(iyOCz=`gahK_M`y8I$3H#b(b)Fbz&SZqsA&m%bd
zQH4(%48EOwrFgkDT`BP5D!_iaV*SLTN{17QYrQ1Rq}x{Tr-lg)OCFBsO;2L!NB&qV
zf3O3g+^!2{5YL@GKGA(`^FMtDwf$^pbhQ1(ULuaDa~Po?<0A=I)mw*5MJrfIy
zIUi;AXv^H39&(YDl#oRVD_$yZt*hu^zx
zBws{xr_|~xB<>v_m%tj>HZb!vQs`7_E2^n&Kuu8MVG_~OswgYJPEJmKWN*&_(+$41
zy1H6pP^DV>_1jX5iHS+T<$j;UehVKci~4Xx9z;fX??8eFsf^G|LlIPvZ$!gI*yN
z)%Jusr#f#*Q8-s?gsGDpm=F1{j_dAo652=*S?l(q28cs
zbaqyRhk;?mKwe&6IY;~%@u%)?WtOCJ9d&hec~{q(Y9<8^Sq)2tL`$hurUA9obxin#
zKW?K>|4x*SCHzvR5$bom)#O1PH9V}$&cT6`qx#CEdIJh&@uOSl(UB)H35kM=O0W6*
z#R{J5O7+TV^PUKz!6DubuCzxB&2XOS1NKlB8eO~_eh}{k6Pj1S$9Q~}g>W%f`)TKz
z)n4{`XJ@D5#l`Q&vfgM4-4?gC&!M$ky3J22d}4)HqVRC$vN2s;b|1l}+`78DVuxlN
zRb5?8LrKY|{my9Ks8p5KLS8-shKpRPRg7Xu1=oQG~exw)#)WBl5#OvUD-arIMEP|z@$T90Q8
zwbzM7DU?}ALT?bX3sJG11}b34VKcVx6L#h_95&3!`0bh#_@Afj*^y<9kiYo%_gJ7*
zHAiu&-Y#i(Ac=M1tK)|#{AV3nJ9{+5{Y~sqnnqc=@`;vH_6<}I9y};tT3XVFt^XSo
zgph&JJ9SIM+3}r0L&eO{kW$fvZM}WNSJ;q>xdnUQCK=SG21M4#%U<)Yr+kFBZYdcV
z(E#3nt`eS}PFY&I^pp=y@u7s8>Xswbvw$dQG^X_T{XEO!;?yD&^FP0)`UEq|<=-Fo
zlNiJjh4k<-d(P>?#tq;i_Nt+n+C_Cr5~LwgVp7k9{hvRFaBH;N3+O81OyE$#R!RzS`pui3B`Fdf*xbS*GAe2n08dYEFU)#5MMWIHwk29rP6tBR
zu0g1O1`+2)J%g{e$PE1V_wLh9L_omeJv4yP9an!j
zUD}RQE17jx5aSQA%z(N1hwP$BpaujzCzO%L{_VyX#%IWt+VkbhmtRoUpI;n~h@5`z
z=@H}@3o)fePdt2*YQ?1Bp4juE&O$$tN!)9v|JOtjHXfd*Z;a9TUF7Ow63{8bG~q-&
zBl+dmD310|moVs#_w}<^&GcICrdf$r!dX*Cer-G~EOL#|?u((19@ox0QV*JCRNg3&
zL2w(?uN1{SC^TrW$H4K6rP7IyTlq1N^qNL2ajI0U#V_*C+*B}uFIK*7*Q~kPGHuZF
zbPEMFq0ni2m4U&*s22D2s6W6l6ff7)O#e)8dX8A?>tHiVgzN?{6W
z~{Zjd|=Fg>-~tn+ZJ$
zEiJA8=444SK+O!*T#0iU_5J0&KmO_`8V&Z^fTk2-f7v;RLR4im1>!z>U|7{&&~hzPt3vxC&MIYd5@VD
zG}nu>{8qZE%G3)`iHL|K;72*9VP=h3Ls#m90ffUzMvpU0;cbSN%6c>Z!T5;V*6fOP
zhmW^e!@MIE{L-y9?V$7i(VtMPU8yszq^j!79=4Y-Xiq-a5!W5SAeQy(#p+jIU*C!H
zC#-)@ek(!yU#t)v9v-&r3c(0CnYZCd!F-C(r-79KOtfXMBlz3E=`SaVnA>4B98rlW
zsi|J;;{`G{x^ML~))t#QoJeK&`_@)kXi?Ad4$%Z%ma6UTL@%ySYNHy?o2xp`tNpBZ#AM{|k$(MlCnFlC__o-$90eO`+uZkE9Dt
zP0g)^k$||QF*K2Mb*%30Zp!<9g4~85JjKtVqUm2;CM4W>++0r_bSxc_c3m2P;1S>R
za-BP8=AIT>aQq+$^DZMNCkJ>!`Un40=Mh*vdSz8r{A4RCSq+Kq-QWdu^%6xgx!06k
zPt@+OdZ9066QozL10_WXwJP@*7e5Wyc#7EibIA?YYY1R(Ab^7!{3V<>=nT?2HU5
zdJ2lPz@uLpRzs=WHw%l3Zs~E6(PBT=81j*yvm73f)|4YguR`+}(pJ_8$VVV$1?_5?h1sUPDpVCM=nB~Rk6w1&)R$hL}$HdIU)N_3}Ch7RKo}G)I
zzqYoz+NI|4@L+1^#u4t`{{F+#DYxb4rxS&;xCZsMU2AcYs_TO(=g_*($6j2?1O!L~
z2M1e?8YNj}yu5kq;AfW0Wczdf#^E67yKmI;M&TqGbKgbz6zmdC_|shtfgyTk;x+d-
z#f2!qdvyS{X5R6Ga^-YpVrnY6_tmBE;h%3UoPXx)O5JpHQqzi7N7jCD-XWBZ2LKqSl7kR?QQ*BpIwbMx%)-_#~KM)=kG?_|MqXKtcuuoE!E
z}C*xB7KP;iv*Z^U@It>pEy`49`R;TRe8Hb}SkW%XSxcUK<#F7tyPl!3*t*kB4pg
z@ZvgfH|CbeOOqC_D&R+dUCJL`yAWPNHwW%N@tD3uB}=$B-Bhxs3pMaE09P@*W#OY-Pm;+^LI
zGxp@Wm!K>bZt33-X{LeY
zu~AVK?`F5H;0Y7jU+C|V$ubHFr2u+@p5gPW;FZtS`G(zOaimgLTvU`f0Dah@mq4Z0
zwzrk~VrkF+wCuux`sFEZJ)GV(n8JBTHhY<+UaobtGoSP@6jS59xojhy|IXZ9sJqXA
zIE=Z^$$Sj4h@QMtM)XBqoS5!+6`Adw&Ne_BwD7&-0I;UJ=yUjM2?h89sJ&d~RP7SZP!037u(9{#B9Kk>0@m_
zI2GE!d$UiNx%K=$M$3&CeW=TSKBI@enXEF6kxoFCOFO9wto@NjP{fGL%{1$A8{m>zn`JbnD{ew@mdc=ums7
zr@X?x)rs^aVqL{UEFS{rUV;wueQj;cvHHHl3>S}S`)i%bf3t!pFh4*DmC1YXe3AN=
zbKN|sGc0x1Bkm1MwCT)Y>6)1ZoeMJv_k>QRPMc1rxTulQ(GPUup7L$aFT8-kXA3MF
z|ENuo=zfuwZG;)xHIFJGA(7qw{NkX8MD1fX7FXEH(dHDF(Z~3_7gtm%il8Y1IJVU1
zQ9rvyB!yeCN1~f^+NOeLlD7S%SA*PK-B7gSQu}ND`^G?!eJo(i1pGUm1vGf+AchLy
z8N|)K&$nDeg_2iSFLpaNpmjZ}o~0;rL=gxlv>1#gskyUvlhE(hR>?=7{X%!BoayhM
zUV-BDx_@wR@cv5ooip!&rcySX$jC^oN}ZTDDp?1UO1%4fp9r2bI)6h|Td1!WJlS1V
zt1@UP)2<{3iTZvtIrnWLAu?XxYH789=aVuL+}bwzztyhdi4p0n4F#cE0tB;?}(pX8p*MMLE3_KnIcn+1V%0cmv`+{STH@Xjhu2Vd64IL`D|ajO7}&c#TY7#GvF7
zOB=BfppR4QVT6%22y=1{1%M`+()Co`xIG{PBxynlipMb7{n|`mID8j9A8K3K82(rd
zGypRcB}GvdwgOrn2rO%+V~%wORWK7^=&C{o-Tc-f0&~rS{S2^)GT`pACf?Ev6VN}dAnz96+^03P95-4b6aTL$jseEwzwcv~-
z9HSSW;9~!fwC?tZO)j2d2jZZ5+UTrEV
z?)gi-rgPr0=ksUe8Ps{J*R?rS+7$Rt9B>(iJu#@TYLfqwXHEQXW{rG?XB>j1!{JW1
zQ`V!gyz~Avj`fdJ=&9~jzULex2-SiKn~eQbMJE+e{_AQsGz`p
zI_)o3>I*6oe4t{$0rd{Ev8B0wQRCy|0pBa&JYnL~^uzgoK8wxp;6ZLp4Ih$_AjkN-
zXaFm_OKopWJ91@S;fwjtU;O>s?Dz#BIub^L7Z+vcUClE0}zU$?zZq;O9Cx7!?B~vgm
z9G9ZmAQ3NsE9|Vbm9SH{Q!1+es7{Z|akpXJ?REFnHCSb>
zw|WWA-I)b&I>!JO$xYI#o+Tl4ol-e~w#nyv@T2?XqeUW6EGBFp6-~rvXDdTZ
zQAq~24n2_s=fgDcJRGX^0NR)MK$YkNTv-ji3}vL<1)ve71~3LvRsf+RcZ^`~b=l}_
z#Vc1yt4B4(rhL^gbUy=BlLmTtJ1)ClQwc;wMKyEAK5Q^hf#UXEixDvrS28wRYV}pl
z;O`~N_!^`j9l^dHj$lC{BAu8Tvu~(1@5LeK(hHif^594Q=|IGqyZkGJ9O|i;=
z_r7a8&LA!GEjq+y;X@2aQzZ2CyY>U9E7xI!^H$$(Lo+dGOhFqbW!WdwZ_RYX;^lD8
zy)^wg>lDAlcqRqUU*o}m&71DCg9G^F==VZeSQxslQsAd0#xr}E8edU5D6CMykr99u
z8O@V4bq+I4wL0>!z#*
z$PM)#qCF)_X_WkySQn?erHUyW-aYFv2buWrvFUG;_xyxPuITQyT{&AorTth@1D#aQFC5Y<(j%>I5qj+O0QA9C5p4Sx*DAaQ?))G?
zT7w6Sj)9R9^#sNYOuk=BZTH3`4wc){3iz@mU*wv7dg->>gRQGf5#HAEd400%#>Xji
zbuxc(*V4ind}_gnJC9@4XIh?ZANv7|E_g-f?iEx8vUqL`ln$fU&RiFOjsch_Px%hK7*+mz8MVc30t6
zy#{+SP#;H4{CXb(G6eBm;&jmij9ge6X<*IR1O$((bbtlGo8Tg;erGUR*vpr5H7W2Y<0ZO9x?L7{EkCZ0u+2I*lfGE1++|
zV99_RTRb6z(d5SVlfvfCWG$j=S-S7uDxz95&ijWPPtMCXPq|GJ=zm5ckj0CPbx=^~
za!iMkacHf8>iY(`o^v?rh_yhGT#Pw%w|D)bbZ2pdt1So8h^d;>3*IBj3s8>q>TQX1
zDjSrs+vgow7#M=UjNjj>8=C}rN-g5NbNK>bnC?3xsIi-lb2Ugt&Zv-RX!WkCA=-QS
zxkwy2A+TDoQlfu<==A;N*15dU(0&NEdjJ!1V?Joo7WG(k}*Vhdc{&b8`#MnG@0C0bGsfPpc!W*wgeG8hSa$
zhIPV^SE-*QCs~r`GxpaiYibgknVBi)N@M^V6P+@fwig039k6ta)53@MAm|!=a2$XW
zQm);=5_#)R2A@0WjfsTY`VqO&U~y#vj;#c3Fv!Lqs>7E
z2=)!|d*=<*%cChZqdv5i@}>q1Ss0P
zpm+RS^51>dUJd151LFc5)*gVh*=rSl9>iyqnak_q;#Bn)GZak=Bl?1%o_vQ&L)u2(Z$H%#h5+zAgafaM><5yg)^%=x
z;b18g8J&K|ndOmD>e6B51abeFrX+4IFu^L83EIgalwnK#zxxi{#RvZnmvi
zraVbL?8fEgbNVU>Tx#Q172bqS2lEc4;DK|fu9ZHf&4-zaDIagw`l#&O>550`L{5MB
z3AmkxE^Xm{Q`m284Oin*TMMMZE%DG54765%3MB;y*|tBwv02dUn;il)j9FZq8V1Ee
zyRbA??u#qmmv~gG
zq^=LZ?)=LqAUPjv3S$5w
z+mN#ZNdux=y^v{1VA_l|vAIcXQOqL2qRsq7PmhD=u;B7(yM4RB?TmNk-U(xk>V6Td
zCDcEd5VXYmtsEz2eAN3VC)VJCfz+N3`4gmEG~R1zl18nrh9iYa93HH6JE=;Oi!A)*
zn0D1fL{^?I&Vg*5wW#L5tiT)?W&9pLm0!osel*tiS&d|+6mu_LKzCgqB$JDy8(C`e
z2N^WF?QVYp|1P@c(Tz)*3(qO({cqmOcfJ2C@>`)E{hA16fAZ!>GzHS4@cjKX1-v-(
zHq*7oS94z-G=2*e_jKUshz-R7jR}lFg5!$fZIh0;
z8&&_>laoo2iXgC-aa+O06g=iIQ3}hFvvibpo7iwT33(7l*3}2Nu{{C^86`>
zx~+e*
FdWGmolK+IIOI?<6Gfv@=K|@=?=rAE&1AQo=2=r?-Q)20oW{
z(Ehr-0FP2RTQs5Qaa^;|_eO@r7uWxkvxG;SP!W`Ho`=$Sy*D{fL8fVMnW7C*`gDT<
zg#hJ(y|DHU4^J!%V~>^2V15$pbbc$Ge;23Tep3z*e-gX_x(FN)QSqF2Gz3$ksi7(MtHl!=VC=
zV7vBPGPFoYcz`^0d$~MWh8nrukdXo9V>>p!iadh_y)ada#TIHpmq}K>KdC_+Fh?d{UoSAue(4m#gcQ5EZUyi`5xjpeg#TSeyr4
z<2$B)*s9uhS;@xu#~X5IY5~~SD~fZD!bqVGNV=-4D<8*-m~;kDV`sEEsZ}lwp`c%&5O_G}j##h3aoAaE%Yy#uc6sIoa~=y1uUIYbK>)Z{KK}lI
z3)4m2Zgc9s>zSQxlyb5IUBmOwV$=B82N22SVre2(OIx^!eT=lM-d8-&CAq-DKGL|2
zQWi>oYn^qEv%W1Y|6@sqX3St&pZCMStH3ZqB=~u&_dWy~HxT5wxHtj=;vUj+vG1A_
zcUbEhgoh;w-WW_}u{;5nhCc9&5zqy<8!Kas+$ZR1zCSZ;7ArO&l)JOg7zbre@nOe1
z{}tiwDhWa<${K20{W)=24W!NwPt3Iyf_no+zC;CqhKcvII}F=5Y}ip4qD6H{Ia-%IdjNuGDV)u`&NtKN3Nw{^XZp3;hRV)6nGu#sMeMzTbRxIuH=L(L-d
z4r@PVvXm2*hrj)kibu1>J|P2n!Du%Wlj-v{%PEB&DPgxcy}Vawkjnz!NKDjRL2*ID
zM~%Z}w!?>F|r`CJ(=8bq#5VROD!fD~X*Ut9W
zyb^zHg!(!nqJIAL*JA#<_b2f+yLc9i9d*dOg2gfn%^$=-Tu`OlE26}@*)EwM-6Wf*
z5U`zCdDwooikm5DhdSqh1}4NylWN}aj8mW&wU9E9)}DhVC;)60>;k1l{}ly|nDB~M
zO+uK3pIv4S4A3>8U~8X^c&R#W)8he=cf14fl#p-zdl$RG_>8
z4^Mx2W=8$zMw7ha45v>=!ppzu;UK#cQ&L6@Si0l)w@$0pORR?bhS3)mVB(>kXLtRX|7>#~ywg>+6dr3gAYHiJef`Y<)J2(&dxoXxN
zh#bi^Ub}{sZ?E)Wo?~A|@9Y`w&2oh6^f-KzFWc&iBwd-!CH)+97b|bRtPKW!k#ZXnRfln%IPf{80tR5<rwP2Lg}|{Nd=vg2Pn2d6LTIYII_Tt@&f;|!@99;F>#O)_bc>jS59k{
zYlf3^8|(phIY9btARS4VwnKmIi6lWv>Ax2mks)_TNn|^`Cb@j?wT~i+{Tg-J9__(Y
z?ZJz92JD44YNni<)3Pl^EC{7N%3h3M4@CLAW#r&kK^)1)UB$
z1=1KZ)uw9j+&D2f5*IslFeY2pam!v35JWH#Go!J({*J2%dx_z0n5j`BMcm)nkG@WM
z=f?#WXIaf-;&k0M8L4f#;q<$q&!42#v}*Plau7azOzx5V;uqWWidnf|a#$W)BrgF>jw5_2(eXlpZ>50_&kP0Zs7*n8o*hIQGgM#@IDdmCuMhspQoCJt!
zoX_ZI*{M^PCsZ%QztbZs;NZi0#7#C++Q4>mIzo!7^=C|+J6fP#Gx|2Ca
zIJT>g{=9eYaYwx@GXBq+m{@W?jfWJm5ruw0LH4@Kq#m=RoGeAv9j1n`S>}tgorl%!
zpUb}SKNG~rdCQE;`O~+Gquqx#cUAB^9wr(Xs;hNl4?Z~xQ`~zy`$pv!lE=V2{x*oA
zPTFgi38uF0&;ztLIE?&*Xegc-GZYOxrT*I$+9kr5Ow~aKRbW|+SQi1OkvJTNE;$~I
zgd%KsazzP9*bH$A4z=YEg_Knch#g!`^5z*Ved8E3&Ah`=!|qs?f{>zwY4X<
zw+=GT_;u}NN!YzDNF%d{FVJhL$}W2)Ndp;#n1Z@A@6aVkmoeBSWPi$y9=$?~INvAR
zk~m_xIQ?C8zU^?Bf#MyDA~oG0wl!b#vy)?Yx4ncftAony?w-UZB!cw+bO=Kz>>gNz_DCgbTT2$CWr8(Z1gycsd&8_cKMe?kjWqa>!?rck_hu_RO5
zJL2VHsNY)-5F_UhsF%KgsR1C;Lon9$CpNezb)K7=sa*Pyn+cf`_&xfDMq0)sX)yX;9e{)6yN(zhku-|fJ%r2XA8
zWb1&&{a`wg=&5Nt-yDQ6Xhj(r%A1wQRV~j^!Wf
zVSrq=4t4&xL{ls)B3+q<$E39%=~lyO1T(vN;U8jJ9*;S@-97!2Sla1*j>Hrnv;2x5
zp^E+KHHCdq_#{(~rA-VaMV}t2>UO?C->+J1pL_D+kf_3P{rLjpXwv8x#_Puy1ei6y
zDt%k|xAOv~L%oyHE6`V-S!&Xmj)!5BWPkHF{!L(NYTE3%`5%3|dGlGz{0K--+Isc@
zI4A9htRV>$A>bvT1K1g0S}CGw@pFpXNs{>Me_cJ+6g_k;7dK>$4Rs;XYG7tJK?HyF`VDW3DG;7gs&=cx(fw5D1X={rj)>JU=L
z4?lIPkn4C;yFJo46ft(ODc|&UiwX}DAbmGna9H23GpSA*X;}wvG1iZANOU>7g?6nXgrCNK$=oP5U?!fq
zW_zWtqU9_}n{aVjG;Ke>@K4e+wj3^B1)+bftUFw6aGd97QO%ZzI|{)$nV>ZjNM79dOqWAtTVJF?$pk`rZEuy6iIpf;3q#SXP3s_QV^!6E>Af>M0
zb1cg)_3HHf+qbZnnHXvPc*zH1y>B4=2X`xy!Jaq(i|IW)DWrMMKy!L;P}K?|HZzBv
z6R&i7rG1Q~iLBp7O!~gu2)FwIojr2LrgWn7hp8V8p#gUFzqLc#IHY3yy*u1iFf+iiQnMUJ
z;ay;6#ULa&pPRsKkQT4s?k7cTdm(do9MHlDKOaaT?gZ=i>bJl{240=pm|J|?4G8!(
zUV!TV{uUl4xQZgkFUQhLj)DgZt!ayv$j?xPtb+1ZnN)ZbC^~tNdOsMPJ{|8!l>G3{
zI5FJoZ%K(B_y1-AM)sXd`gm`v^%o5+vypQ4ir9qDiwD%0Kyy0H%
zuh*JfdNo17wh|yU25R$J@XE^5M%L>9=7u-7mx83^LqyH;Urz1cXqtLf9Y2~js2|9j
zS|DitagmAM&XIgJg7C3=5clL0!Q{p5vTU~6Uu8R7uEZMG;#CoIM>m1I79F>A5bH_P
z%edulP2wGA2aa|W6&50yAIyc}4T}V($oP0dq^S)-o|Tipg*qDo&%(z|yGr)!
zd?-wb6C`H$LiB5iqIfq3@)O5vAAQ4bP(LhCB>z#CPZZldb}>ur>J*s-gJn;q
zYnTnM=_PZazphVwU{bgZh9v~qCZQ)b(guT(V+B_|XzqCpPbV7BRiX+Y(d><%G84}-
z!KSr<3>$RcQEpVYu4)D11hfcIUQfvFBeTRXWn@aH#B%)q1n4+e2o0i9Ke|aZ%&nO-;%W%QGGk`|&>XBYDUrNW_z$UlUHj_-l*HU^UTb~40l^4gZ$wpuQkXshMTg1YNa8PAL(fH7;LyoC$>pdameCH
zUy}boqpTGl5;RDO4A5gQq}K+30%q=haNwxbmDZ8xw&lG)UQfg^&r^yP*Vlrg6MVk>nq~|NAw=@0LAyV{9UUPU
z0cC3i--H12$5vN|FJ)Z-Yv|qlfPQ^&Ssn!xK`8z4#~z9E)AXH~b$t=ixJ5PM)6>N9
z9ljupu$G>$k|L8D&Rs0)9RZdmJx)Y9b+4||@H}@}i<+zTqF>opJPZn03j3>d)er=j
zt{twlfDl3jaT}!W_(fGNy7;GOLk5;Y@s#xWp9FCPf#s1{=dvgDf%`*#R1a7At2aI4
za`^0vQ>Im}rP()fc^jBqADuqt7lw!^^8cIwecGpos7$BQZoZb;rFCB})mi1;AX2Ua
zpzpznv&9-VcgBQ};$FFzUs(5^ot^!yaZ4%~Fc60Mec+AE`$0Cqx^fHdLA(b|C6(7S
zw=Qq~u{1G52^PPJTc2Pz33KN;+TkyXxWB~%59O*IRz~(|`}TU1Qc}5Sonh-V@#jkV7)YmjC|j@XYMMbkLucerGl
z!U+wdrA$&PQEMJH4L;a3$$fVhi*~BybA1|)Tb&{~p(bNs?uxY!;lZo>WttaVk=J~T
z+W=l<0abubH+rXm3A{ZhEMy)QWcj30b$B;Ra0p_B_r?0P-WGJ$C*mVgg2sYWM?Z5!
zbpvn*HBw2n)plMH&^5FG{n!uh+NgejnA1=BBeo=id_)yZGqZD2F|?@!AHD3<>Zx5-
z@8X;<-Zv*5oXqN}1kKt};}RQtSKHoGL_opLit&^nmzdVzKsgQ*8{4{;z5u!add0Ed
zqRpG1LwL6E|0z`JR5K|izf8Ilgwm|Ek!jM+K3>fr;|QtL2u^;63s
zkGk7>h!6a*p9C={Gz)xS;|o*IaHx9z`$uR&H_;zpEO}b(01eQCjwcp!rRtu3yEBmVnrHZ5RO()Yh{f%{w
z$l)hfKRC+6p1f2aprwjTD;fN#(b*i$|A)^T(Jb6x95|Ha(mwFw`eJ!UB!x)>&|@jM{N|2+?SAsWQnhhFh64sbGW!!`rm2>TLZ5=M#+vS3s=@NcG2XtTU=Z&pScc|npFXTT&gYc6(dJqm72OsFh
za7`^?!&k!NCmv+Yen7rtnCMQ>|Eue}!?EuF_AfK5NFrMH%1RPtrDSDqNs?K}O7@C|
ztjw&8vP#G(N>UkFQ8Y-|q-3CR7
z_mCvosY%*CiG;8Nl!sLmDH3UCuU;25D+>c(cJv_?zQ_5t>X7tHrV{!_-y;kw4*XH0
zO&QbL8gU~`-z+@PgCsu^UG$-i%<4v2=JC8`I)yu|gIVLB-a~H{Mu*R{gtJy^V
zrf+WB&wXz+NpsC=LB8OQ_pON2alh>~PI#UF@b9PE{*TQ4H^1uqcP_D^+
zi*`sR-zQe`M{-14Y}&{)O@fl}DD~T8IRWJ!A;pTA2A_&@FL7UU3o3Ij@8vGG6)WE*y?>U{G^y|D&X0c66g*ce2LOhLo0~ko+3+W?=!V0p-t;_;
za}^oSxcZ0yU#fWZ8_&Y+I^W(zGwu-!ElIp|dSqE-W;0uB&g%d2G;~^ME3`L0#b>!SvP34>II^-m&r)0qf@`B)T
zgWLWDqHej&qac$HDsHYaCLS<(Zv4GYTCgPVcuAH?n1>y3G;4$>(#iJwoH~^
zGt$jYtFYp{D
zmmi&HFn*|Oyu_;_xx=V=Z~wuLuAx=2aOrVn8pQ3Sv;Y?>L$f?IZbbS-^dA#q+-H8dB$L!AVVasq3_#o^Bu^p@%<8BH?{=k&cE^hi`c>bo$ht{!O_>%IgKbWD+0c
zqB=ys(d*Ew8Fsd79AAj?(2`hmbximun|X4dc*A{p=Rvdu1n&W7X&BOQVq_f0r@1F3
zv`oal`O`Zgb51fgBl%b-InuIPc2wE;_So4wQhmHpU!5WfS_Y3R3L6;B^IO`uChV#m
zmgY~Bwu-5SAIH(VvHO42t%`0E%w?2ZB9=8W=Vl1fB>~Ie=Dt5fBJeAaO&~#!hA8j8^$KI3}{U<32uJr6`NUxnBX+UL+0FOC6H?Ok!rkoxGP
z&U~Su;gS2{)21si^ZECEOG_u+D$UzLh-m}lw|`afn9_(5a9RS|Nl^&!4Jj5!)rY$B
zBN&}>H^_&FhKPv@NQm#|iYTe+&zBc!l+tE3YFv=o$Hx2=z8^OuBS#1=z9`$#tCgm?
z)|kM9>-EV|kT+NAId*!KTD{U-KIihZz&fghyVmcAwem@JjotOlNpWSfIMl$qQPn
zE$*_G$CvdaQ@@+tX90^2W%WnsLqNQdbsM6@^dOqW8uZYdoSd&fK-dBm8!lEK*2b!W}2O8X2i>)*c`+S+57OK?I$UzcesvFmG%&mpvCZI9)XTbY@d
z>QHKEgH*9_y36i~DV~Rw3&U$S>8%60>RU*(-t1ooT2{aqV->S_hj|v=$sgNUSsMwa
zK4fGWN3Bi?=v;^@wz}wZsrsP&NdAQ2k^Bh5*K>dK3(w7k`0nFZ7pjm=+_BRzXxAO_
zRK0bZlL6gfe1_rYtHqN_w+KX~bLj>Yc6`j#_0}|fSfI;sal0+=gBNrU1K10u%}Y9L
zBxNJaz@2x-)G687+;yyP1)PqB))gv-7aXxv!|idmwze4cYQA2{9(^?=ZBQ@tW|p7o
z&=)nokwf_UVr^x=J-yU(k<5`=_){?>yb|;{4^+MgwM`_u}^}k=@&=Jn6%HI(W%6jiV~;4FGDe$sgCz3gU0`gFk{7
z9)Er}@{QWH`thpYcVdt1)DhOYyz2P;(NTTXhtZew>XS~GFm^rrW6EG|klm4={xIuo
z>UFPGiZN3U`NP*2H)1OG#}A8Cz1kJ?t9Hn92lR!ibiW}fO1LB+++f{IUKI4W|3o-r
zErm*8{kI|S7#l8?T|(i}<=l5dhGO3uLLmp&JvB8NyYilF#}Qt6p{5(|Cu%xNMThBb
zoGWetS81=7p2c=h1u
zq4@Xi2jn`lTN29tetJ1oQ?kmaZuvJSO_!^4Qffe9?6`1M?!$;bTQ>v)&5mTHKN#o{
zVigklH(n%22f8*0f)bEW5Z`$I`R>UIQt+{tcH3Pg8%MvbeDuE)V`#s({S4#`s3vJJ
zPO=7SxQjvdn6!z8sN;deE0f{d=eOUxws-Bhl~vsGG=SOk
zhv#3!Ege)_R)~l%5%Ft^@km_aRyTfNTxi&)wi1@RZ}-6omWUJGehl6<@t=}o6+Y0n
za>j@(z5Kg{V&B{Sk@38=(5j`iZ_|E_08h9g65^cvRbv(^uCNn3@Fng#6L`}v=aPr3
zUUHkjlo7$Sz;r~$doQMpS`b6Ki_(37WwZ{z5^;2tMCT;G$YPBHJ?
zX*ANI7RO6i#bH`k01EQG{#T&BBZnpJVB!c74`V7x_9jx6<$$9};}2MGLF3~FI2l+6
zxH1G+FZrvPWi)%kzRb7Ua#EpMs&*f8?=O0#PER$CdOcxDerFd_BTmsSO|gseS2_O!
z%8<^`RkI_fb$&DD+DQF7)LEp{p?}yxIt^j~NU90fKlHUa-rh3Dj~`#v_n2BE^Q!jw
zB^UBC=^Ecv&V#;n->;e*EIwx2@57I2XEyrp0`N}^9KPLDGA=Y%95FHeI-9dUz&@(!
z?ORY?!(Ll)qIkp*_#l*meWqR!lq6xpf;upDz@_f+&{zb)o`8%2z&1O+V;$H}HAp3>
zP5Qc3?i&4_|Exc>(vs{0>-ubnwg76G9xu8Uk>y0wU+kGpf}<{UKXdq8C^y2i^M@BA
zA4l4Z@mw$**K+ure%aVklSKt4TLZuUWi9tloc&ig_ugx_LC5{wn;VBd6)w$WXXzbNIKad6_O)55
z|EfDEY3Y2P#_T#r^^#7-DgG#^Rz3Qdroxupj-0Rg&4&)l2WRu6gDcZIFwuhNmHRFB
z!csm7iO#{(i%U!IyZnF}5)d1-6YY-gwig+N*lRwg9k`yz?hyQFTP*Dk{#kqzY`?C6
z(;9_w($U2&A{{Fc%N7pyoxd&47$1Hb{m8{Xb=RGnzjSsa^?nZjtsuO;eVLu+2yM63
zuIXD7hdY!r&-Dn#2H_eXq!Kcck*|c&SR0{LH=4e5#Aosqe7q!fF_?-ZiO{b-3lhuT
zFbNubH+(g|YWegP4V9YU%eiIIQJ3wzui#FRJWy0sp^$z{Yf5q1?p>6FlB3CcM&`cL
zRr@ohNx4ud9fFBUnA=DBeMm*6y@S&!r1~!wlI`WH##kUo&G2GMH-*~V`wp2`BF=S(_-*)Hd
zT(8D*wariW6Oy)TRd{>dREaQVx~L>@e$UA9#=AKa*7u)VpIWwzGtk#l(E|yF;6Gw+
z^t^t9CybD%fPe4=Jg_%!->x<(ZiJ+zrJc|^vWo#nze(s)+q(hf8OMZIw!y6De>Te9
zRyD2Ov-f7ot4G!iMJ#cL9P2gRZRg+oyPADHn%d9KOjP=IID|HmpohvWY6vorVAYie
z5+(7u3E3en32aw_W{pX|Y&f}S-2&Bl8nGm~U`gASn{X}KS7&S@pM^VYgZ3`mGNKpU
zBZP*jgyPklDvcX|j{h{$c4}mJT^y$4V01A3wu#uszsl$OerVP88Q-uAx^ASE{JLA?
zwp$WoQdasa18rU1y=_VfaT3ou(w+w(zjIks~wbYID9X|TK9X|MTYC_3U__0_8l|c
z+g|69btwgYkAx#5Vf&%zTVyJN0ZBB9^YWn04JUQ;OW;D+_$&~{3=uh;>dY`gP1IPt
znHsP>eKs^S)cx$*QU@{aztAXm)5#~tI=N3M=zF+PXu;kSg=fFDEH0x0lZ5#j$hq;(
z7dmp7j)@~SQ9!iax`PDGKB4kOpOV-WD`l0!WZf4(KuGlmt9&bG?K#upL>!odw?7_9Cp
zy`-g6WZXw+(Dy4myL>EPdpF8xU|OCs%#cgLQOqpec_}I*K8Y)A039kp%f4G>ldl6;^@)G_lf>5O}W>y(ZzP#HP$Gs
zf7y5*?xi;T&_eN1kM?Bn>E2~BLCcu;;lFBVzyE74=y+k-&8yDr=H`ZO=r-Qg(VCgf
zjpbMS9j_#&wWZ6(Lw{y7#{*tQvfMNfO@HX6pu6Py;#RC1n8Me^b24X}NAbB`i*_&J
zJ91J*WeyHGvyheyPEDN^jIz#Xhe&^s{fNsRX!+iG#K*#mkN7cTpAWbm_^f?=0x-%R
za`QoJy-qOVn$XT52a@3P`WEP3dKt~S*v13A;~lGKGC&oU)0
zkK9+#$)>1aRZs3vrT)B4Z@&m8#_%cQ_j)PAus^96#GVD!NRZ=QB
z9KSN5Bz)B&8Wqj*^ml?_k9jR?>vN(<1z!08o}NC`B=7(fH|7`v*AF)t2Md&5Cl3;z
z;16airT#hfkirIt(;gYuEHyn}3^@tKn)a>TU-B;7*4S=4r8TYnH1!O{*N=95+1c6M
zv?Z!7--~*De{j`$2Ce!~uV3I?4BbE5smgwNHsR;(?ev(2i*eJoAHTqw>i^b8Jd&d9
zXpi9>U8+u(uCh&AhNrFuHND!hh=X+Q{dKwTLY*LLq`rHnCTvoC8YWDbm!8KQtD1kv
zCJCg#ga0Q1a}`c)w_{Q9sox{xGtWzKGogU;@zv(wt&RJppQ%b8J!bm8EJ@HZk2xck
zsaL++=UwD2=c$)JUswxsM8O%l9@uz_l%xKge`H}y31Vkc0f&4<7M7zR)j@R7^V09C
z_GU)#VU`sSbZ}cg4~55^WzS4aZNaU8uKwyBN0QfzD~Oh!zq*?XH|0BY{vQ{h_wVtx
zAk(38E|Z|(1c$-Jm}8Q7(@A1yTmEYOzEjhkKrhxBd&F{hb?N)T2fM4T&JZ%8M)+%>
zd)WKfxOL;t{XYr&C8(=KHB`!tV-kcVj&xd?nzy_@nyy0sjwvg6NX*vK2OV(sZM9QZ
zzQz3}->EDCxxK>50EL{qe6{!7f8=FMNw3K2IdoHYe?8^*7|VuKlgIOH#_gLar$9Ce
z?%VChB29udi3F+&2>MdT0V(2`#&sTAqnk;cf-=jTq9SvRH#i(gq!VcJmXL~~~O
z)e;_I%1&s$3EB}Z+#Oz8$ji|xRe4RBKPmD%a^wi4AL@9m1qNSW3wWoJfom&!zVEL)
zX>~qOIiz7LNj~^WRj25#qOFQaqGyane)K|rBY}BI6K&Fct)y%Lxnjm66z;{o1_77r
zJWevhkb}>;w*ssddjGiwHm4soDFAT#zJG_{%R!0*#=f**5`d)%;~s`!%fH(v4c3ik
zqg)$rek-ssd?r$Tv@ndRuf``HbdoJx1-$AORjwf>=K>NjrF%Zoy#SdXU>8DLGuJjb
zrer6|DJ&d;Y&>fBg;fpQYFH5bmo57J<1yT^bJM5ea)5bT>&A`Hh*S3mE5BIYN1ldJ
z>nQslf+=`xX5<}T;g-*IT&Lt{Ih5ovk^Ea6*E8GyUzcYSO1m61-Tgv}6b5n&x
zpa9&adxv{L$eu^BGTwdo8@az&*e?AcvN~$=Ex}&JkuN>Qw*kP|bJVlIbYBv(Ek1QN
zlBRaXVfvCHYmHg`1gGoGx9BX}t@lW$^_XNij)V*H@OUzRbiQ2~Dz0ZETM6N66Dk38
zTHDf?z2@?o5<(qGY^STXYMs2I;}#6tI`@QG2%QMbm#{87)FC(A88{g&$3+SB#vXhK
zAK?cRpB}NH0WZF=&|DVT;}m!@{vXurdn4aYPfxG(O
z*06fFr{Z=@Oh=MZMFG73iOCHbE(b`P@S$;Dh%zd0Q(jedQ+vRO>*QKIiPTTA*Nuw>
z2hj}bYBVe&EbdGu4^X$mIzLzPp`Zh
z%?LxROUj2L^{cTyy=)i3<2QX`O$DcnJWK1VF3(ljeg;;Y%Nvvy-5LM-q`SK$@(N-M
z(ETm<{HA3IZvere?aEnSe(#;AQKms3-gvctRQ}W2%jF-$sRR#LR{Cj!wNF_5c__d|
zEUG%sA9(S6AD_B19Mh!Jh)0Yf`24$At^`a+3L^p#8o)y}DvX$5@%EU!qc|x3oG5wV%WTZM^1Kv}WU(zLq>-iey
z+7?Z!EO>&_45jI$T0eG*YP1e5PQf1v2tSWX{Hdr&dx@RFWrhKDN{z8+DE*R%nTOo^
zpDrNO@@G6o&g-#+BO}?T(M=luD^)QexLJZVWtTWpRyQC@^M;y~p!S+Smi}_7#Ywxq
zzFxQ1--mD)KoG)mgOt`UOTcL$AIY(nUxB0EJCwuI`V~UQMC}1gO!ieD%ICN)mGy#Y
zXdpg|jDgI!T9Vj+0Q;f&_9Oi)nscY@^4q~AhTq`*F0Hchzk$~UcXTGV?^kM`Ab(an
zS0HY>PP??Sikq`KuDIFE&?>1QUDDQXZ%?z9clYPaoE+%VS-6!xM*}P-LetU+Mabsb
zxT2IpXWf&KDS=euM_2Bep|7@u5)Gxln2DtBOUszFwB0zWNTRn;@O1(km762caoxOm
za{yCtp{I+yVXnGisC&A^42o?(lL)PInQg24F&aNwuBQsLBTysDBe
z%fq`^S;q`>)4l8z7L+lsZ97*R`qz(QA5UBvDf7mSErh5J)70G5Cm#0->t7Z>^cjEl
z!?XC)Jq)DAZZq7Ma2mDG3`m0Q-Z2gTDdD0I4xX+g)S*wEdftG5atjxS{CSGeI^fE#
zY7cwj^x!HdhlkZ0-HM9Bp%!akB`Ynt0A4RfJS~6=GVQIIuD!0q>#q!4V|3@RexvbH
z@jywG^1dx3PfBBoofhnhF#3mT?6&n5Qt-1MzPAZWxe4X2--|WwYiE}ZukTe!T&{Zh
zD~GmYe5hRHFH!^X9YZj+i&kr+$Ny{#f+fnPzwN!AQSb`~5V;S`
z%0;sux(?9t=o(o{SNPOmHJmCp)@OnU1=E%RIxd(SaEpjUB2y7}AMHY7Ngv_h0GYZf
z>^bj<$LD3`bWISBJdm1}87QYt+Mv9yUZgv{M={O72kvU_h*
zQWqK_(kg<)5K+d{6mzl4uEx~FI~xuDA+
z!4mqTqZfD1`_BJ(6_iOFZj69uWmFy;cfASNV5H&v;yUc=G9FdZxwtROYV+w3L#33mY)
zu=_hlwncZL^}tFKb#)f?I0Q}#RDZ2(R4?EqkLKSATTb}MHRY=|Im0Cr=c
z&&|)rDwO#)Lnr%HRMpcLx|q%;673P-aEQuN?92J##fy&u*-G5~(QB1k##y<-S`RKX
zQIV!XoP!N6Co+W++ySSaGV3#0)hXnd;kx_kn~AWZ{rWZVbjL-tV|yLIY$+nM>8ccv
zm1XCmMBPMKlo77i@F$qiD{Cje*oN7O(ES{Ct!G90X+B70WPiuFirhEcXG0l982sXJ6tRIv74l
z$@wR#Brmg4E3)q|u3n88fVU?x+=O-58KZ7-jq|i$Y%O0q80QWiRE=r2QNI7d6$zEF
zk^?@%#^}Y43j2qTI5@0Qno==P6wK
z|K4MgQrc;L_!G3^eL{QXcdLg*yk?dh-UP6AlAY{LA2XzZo5+94EgWpQTRERD62aia
zb%tgW)jZ752!h%)j5@nwjeMqduE>yC?UbN#HQ((xbBA@u4g--s(tDycGW+W45f6+|
z61zcEwTECZho7j5nBs#jh_F)W$MEiH_Myr-R2(8_pI5xQI72TCG$J3Q=V*r4H`dwV
zV*rxkLCA+x&xHyY!6SyCzG14rtzAIe9TvRAsN{^GD;r^LV~|6}iQNNKHH@dNYdEEeOb=&k~(FHt84A(?5P
zcuzqQ&LogYxiyQvv?=ik?xj1+ZMkThtVv#EKq`9HDjPb$NeA&BF&lOO{S=k9M3GvTlMv&YI2^xLjQ2c@gpzd&7JXO0Re#>?CdFL
zMj9#qkbAuV#FtLe-TjrJ+g(~3=NcbvcIsI_>m{?&1I+B~%`mP`&X4PU!-NJNYMUk^
zU7%=OIdhMJRA5mpX^?l?t#rq@3NiYJLJgGRQ_*Lr?h1$9^juBdCouG!gBD{rP|@z<
z(1U}N$h@eF-0^O0bpf6v$M2N09f)`XNi%VGA>ADAKlY0@0XPIemQ#o}^NSmVO=!^i
z?{l*2&-Ps^se1w{o8%RS4HoaN#ARZ469kiA&r>Jx8a=_u!_3h}lgBP*j_o7>d}3^g
zW*8{O#>?CHtYFb)4>3QsAjq8?nOCEZ8$+W9x`72)<3XJmIiP&=1)qtdv4dla=?h5hO)|
za*hbI`QzZ`g`u&rMxd-eLDj1z;c^fL&ZD2rr?@{qtcxcIeMbz~WQJS5;zmG7@D@4?
z&B?b|t%1%a7Tx*S>L7fwp12Mw<98Pnr)W1f#Q-FNa$@N_k?UVsqj~!D13WUK%FgE!
zQc~rrpA#S>UA*9YdC!c8e$jdw7Fhd1rmw}cF7=hX5>{)KR+
z?K*U%Zt6gCcdf{0rXqXfeG@SEc14tJYT5SZ*_!D4N&m;jxAXG_@Bs24zlP~XI4trB
zLe347!1Q1e%3DH>`E&7a`gJGr>$F_VDB@^HE)Rg}
z7nlFr1P3jea;`=q+)C>IcTdiZQ@Xl@Aq5~_UM{Yt_4Q-M*9XdhawkyKQgIwJC?rfP
zpb&;F?@PP;ccx
zD4@XnM)1s25v(_OSC)Qx@ka`%8N}N`C~)_nw=5|66aibd=`a*v;AIjC_g)tQv3Io|I1h9=-CKqkX%D;a*n3#f5
z#o|dhRQ4+KdHIO8_ijaE(Xdp|G~L&_THHp^AdOtxRMX97Bf+$1l5V
z%uYQvK1Le8>_&tD94$}|Y3b;=LD9m}8hv;?;^AXusOz7D{^=g6*m-vHWLWuoRY&Rg
zzlXR^p8Buzu^XKFyhwZ~HrJ45vg;f1C0-e{ILW8SM119g6^G{K{haauu>fTwyBo!Zfi
zZ8|zSQXK8Wy?@AK0X<^%7cT}-L;(%oVf%WSCv_}VKxwViKal)`zbhTEPa}TX+RAVY
zu|fizMS&;t`ySb-5W6Apu5L>v`^
zjhPoo`FQVj#pYixVPXSM=?8%R2&4klw;nVTz*|2!NC7+^!1L9e+TZk7LrZHXhEx{t
z3J36G^cN=*64EhXHN{d*+v`xX7JaDvS6xYaK#0UiaUnP+BMLm^F{B?tkOD=w!ok~}
z)5o{b&~U;$KiSf^Iam5Zbu+?2nXQI4+HSzG=$FAdX~47p@OyEaL@7mxMy@ix)tb+n
z^kboWt)}v8wDaG#w?{$!4*>7C>yVGHFUmi+t5=)810iPgsuOJdy)$l#UI#wdXdoNW
z6pJBOUG95+h5oT|+Lvfk@)asm(jKzuF=G}(?l-~GURnE04^U)0tV1<#izWw+K<>#$
zPnW7;=0O;61Dr+cdJ-{#&h`#$wL^aX{Ar<;_rE*ls)IHaj$HmRf{aHzY{;-!RNPjW
zCOJaZD=Mzl$5YcS8N5KK!wczS>P(y=P>tYf;qB`?G&MCvGcI3j@WVkW0+>w%6#we5
z`5lL=YclGbUq1y>;;DyQ%&t`$tvC(na9Yxw4`lWy1q6$eGRousAS@86#vk_0;o6VS
z-rarf(IG~tt+?>s_=I~fI{&Q
zmzw&EM%8ZmtAXK@sWmrOnf9aT`8@
zOo+_%3}Y2IR=khvF|V6_TBq?$k*bRFfgG+l;~GiIotlJaWP=_A&lamezA`_Xlb4et
zLM#%@eSGZyT;AByvB3{DFX3KNF`Is?!I}$~0S_cTJw4L0L_kdJ{c(GjC#LvFf)PWc
zYfXCt+ups)!fSRvG`fwRPd42fi3!0@B>Q<2rR5N+1-tlW-phSeAN)t&ZI=}j(>6F+
z|1>4@pWDFM0g){6ITF*39X!cG2B*+WtJ^a!4BAFvmI
zN2u0emjlz%_}ExtWf7JsC2AP)s+%!pUdMk!>WN;RnD;|y`T#E4$ZRs{X3nXMVH
zQDAvt!DAWGasj_QJUr;(&}_2$@82WTHx`|KPt&%bT^K?kNSu1S92yIFc#5;Mb9!uj
zY5w>W&2gCd5Q;Tqj$F7NBlgkZS$ZD*e&GxS>unX;ppBY?3JR8%Sg2A3j{#wPH&ZlU2Rv!n~QX3}_$K>#LW
z;2s-;XcB|E-6uix%;%Q~f=3w{87r|Vv+&a|e^FCEX6&XNhlK`VBM7gNYalP&Xdb}r
zmE`>TX%VVF_!JV05(#u2k+lBXx7~>A2&ALBbNj!j2f-u13xE9(!LY4zyHDNOQYO+9
zz~68;&&6c@kdyW+2P<}0C7Qv66SWWSl9tqzjtvAKxIK;gJqg$YXM$z-+vxAdrbkDK
z6%5|L3iBPX!wRIz*KlIfojR?ehcyOIA?V55FXye>`zq+wH=s?Qa7cY^LV7lgN#)L5
zU!7}t>!x`nuuv2GNvDryXfG`+@BpJAJgHp(!hOUnsrf!al?z8yo|38~jwuM*4{~#{
z1(C37z8MwOfL)F_+M1dk6+Ru4B9%9O6Q7ahOZbf&s5N5wl;^6Xk*P!ZWM$1{J%7ed
zz+#07Dj^rJLzA7-X56xLC7G@zQmw=~_w$l}NzeGp*F)*O?d#yf9ZvY}34|1}U}x)M
z^@|qiF6+#BC0xwZqPY2rMZ4;&@@#gZBvE
z;Y7qmBw}1;!y?lUZXa);{+pOk$CCC7F>_EOEZn8z%h$EM
zuYqHHbE}LPM2T{)?XIilJ~~!U?voH4kqt_1mRYTWvn$+QDS%L^|I>
z$@&+Sgg3nCzJvc2F^$M)4kNnCwXzP`_`F`PpnClFyxz>#s18Gjl?+3So3#6EZaxLjw;RUhSa
zT0ni|!XZt*$LZ4i{B~@!MF;4Aq0l3S#;`njsg~}y6j2I)5~h9ov;m{2hEiW6kr=M1
zpFD0ze|ScThKof7Azj)LgtPpslVA1zB0?v+WgF-#IMq*DnmBC=?DK8kMp6%cfXiq8
z*m!hojNi}CPZRZx29~K>pgecRZrH|-4xOpN!R(LN!mW`T=M=6+)hiLl3%-jM&Pqf$
zwSus4i#wKKI3nfjk@Lom8o}JWJl4g$j)@)%(h_-oFm|-LVTI_S8w>L<1~Vy1U&-Xg
zAF>my8N$8+JALVGhaVXVW2Jx)%5@k)6G}Ivn4P}M{m7#W$Og<<#o%)RAtwYA<58!M
zN=Gvtdr%MXbPD{xwEAX=dM}7x}0_f;Ztd}=il_E@W1``?F_tWBhREr
z+InKD^Epw-pb=L}%>Z?xtb_zp)Tv=+I&>gdcP0p|BwNP#@{bxJcsh0<4CMml)X>w@
zi?(@a&3|{5{Qmf!bUUUd$xlTX|mlTVVod-FD`D%{|`(}MG`N|1ldr3RU>Mgyf1
z`ti{e`+M22?nDj6y0NY8oy5$yXETieY3lLvC&-?0n|u2f?HiOTN<6>C>DA>6qfw01
z%FeGSoL{x}T0Xj~v!mWc;VaK}A?f`m><*iVww67|rt{~B`5pM>j1w~g=f0ueztbM~
zfNh5{3(-HV8b8@eeN6`1N_gMJ5?kfa7`42uP2~Qu#$R+YW3G;QH&fH|-nxa&-K2`w
z9G_i{674X7L=fZcunU$Svw-a?fog(gy~jyB+;JSBrlz5x;YWPN`(GZPF)`L->E}+Z
zH5`zdz2W?NFNKQ@8)Fi$I(>mtnn9!awZY32!4g?dQSnY)(Mj)il(RXy%bC9a%{4iy
zLyT|i$aPo${(Xopf9wZPwzH_C4)>_+A$mZ7ZLM~}*y;lWRL9e^;tx~@ggRjYAHa8y
z+5P0;#kzCKHy5A!Bu}OIgxfZ4mXImQTk+_&Ce8uQB=iv22SOlu_9to0(*05U5u3<}
zSzK0DmhvmMYp<=IyN_!0Vn!wc8oU0vYWIe3JG=PB$BLXUsC?62U9Y>Wd~<be=Xa+KvQoD)%)8U2`7nhrF{W(ws@PduTdR-U`3bO@!9NrjxGpw`
zV^{ErK1FdHjziGe(_sSO*F_6<|56;pR7F7N-Uv|TbcF!(qll{!Ik8De#!jtl2e`(U
z>n;{0dYcHn=1x4R-;UXpsFJuzQ$MOY!o&juUMq=RWoN_Uc-5Dblh7m*Q!T8aQ3kL<
zxBgd@^)_MQ!Z-8v$=e!y#u=10XSeenI7_Z=y_IqA7MJR{Rims1ZgmCet=Vx}ngxy&
zza(~>R{c6wYC}#j7aRYf`1pfwm6S@veE}KG{UNG@D+pOn5u$(LzY{UEc;PV~{Rj9W
z^WMGf82WjbQ>X~Nx)9ZId57|3^EN{jTH6xQLQ*N+uAyJvfXo1M0jc0Zp~?8o{Y~C2
zO-zY%kT2%J=_Hs6diC=v@T>fb3c~=2={FX?jpjI5x{`mTbz)MsNZ?f;)nNO|O?_P=
zi&mGhU|T{tS!m{zsyjIyXoy#GY%HC;+Qq?y2Tk2fL#WSW8Hr$RvDCoA1a+qyRQ45n%X6pqqFyP
zl)x>wks7Vvy|*eo0%W2(tMl(
zW=Lg%>g8o=$q`vu*>xa}6Tn|*Wn2e>)6TAoJZR6nS(*1wvxqXLneS|F8`&<6Z&IP0
zyO|7|M;sWQl7)~vI0YqBzEOVB!A*O~DUfZpoN0)A^Mt=Nk}#&%Fn|2CGhPmR$?nu(h&+XB(HBwo;m;Oh#(8S4`o{v!!!KyI
zbisl^#`{M;tTSkX{<
z^V%Wxx4p{0Yqh@h(ONJmpIm>H`Yn#m0dsAG;O64!nCR$JNt-1v53SsK6frb=q~Zy)
z6i4c7-LuAB8T42AUHUvH8Y?+A7`OWI?7kS9@>l;26SqNb!w1?6nw(0Jd3A5DlkA-G
z>gp+fhJBEvxja@?H6z5`O&;S$9oQd1RTI)A-~V!^#-qbIr?T?!N6`nhGyhio125Rv
zjJ&Ctm74i;qX!;}`_K)rTRO(>I
z@I}UbLv#gsAU
zOEa_8$B!QU4#x^Q`UdNRE$o|&eV1MytD@{Tbe-atpP{E6=qJBP5m5IjexnF$ho^FL
zb8oD#uZv#0c5TWp;#SUpN#8-OOp2>-NAp9^sgbtO5A2!cx}iq7?|k9qOP4MwE-x*)
z_}p7Ie_|?k>*Mzqb)?w_Gc74v+JVy7`@Lub*`6JeD60r8l~4Zk>65#3T0kf8mRiJS
z+b2qQuiT?xR%&T8mg)|pboJg|6W$toE_%rK+qZ9@l(ThH($kBU78i}|?d{XJKBlg3
z%?fUv6wo=-QxHqKC>m_)VXjpPiM!_SKXWb}#uG
zsz&9T6vduLZ0%yCoWdw|{n$N8`v<)O!oRy-r3-%}j<2sIziWaY$M$d4MWz)Wi^D@v
zr9wBDnCmuqg6#(O4mkHEbzI@>!eL0)&R3)sQHOJ$u#;9)gPAs{pUjzQJ8Q{5#*yxKo#jS!p<8pztCUxlrF0
zm*HOL4o4aq+N>wn6fLOao)~l9T{KX7(-zqGZ-IkOncQJ5v97j~yo#=NcU`jG*zbO^
z`Uw`||Ebd%^r*G-=h7}DdEHhDSPql9PtK&QMpCAsMZ-Ww!^KPD3Zvu7oQ=_*t14iMhV%;HbR)J*AiKpL^EUXs~N_atjXAtEpE2Ta&5znELpN|
zaczZ^?8?5CNY=>Q8TY-P_xhr)*8TV}fMWm*0qzsvL&D;H;Ite72cU=naMZsei2?-t@ocoKv(W(H6?JWTncMhGNA*#!Fj(qi4E|o~2)QCu
z*yPrcb|t}wS31({6U5^FnoWxf^y*C>R&`2YCRINao2j>R^w^>Y&GhQ%{))!XLp|}n
zs=)m6RTTqyGTWA1_jp`Q))i`lPjxj%!*DJHEY&ELSohZU0lYITwNwy1Zdlfp5g??T3CI
z(;Dhxz%(@5aCAMcOZ%Gt^73ZhWujdkmfi6>_3JeMB66?;*|@rPDF0*Eo}nS#gbB$z
zNfZm~D--K5OlyFvKV$tmrt_*x%+bV-2j{TX$a%5606{J2&eY3~AkVl5*|Ky*^)F;a
ztXXsEKefh)#?rnhl>S9MLcxp%D(~135#SRLZfkDq+B;P0yc{oTw!bX(`f~>y@n-cD
z;^fp(t<;O${t}&7*|@GC^KW*|lapd5XYotOwVM)=?bnUgM@975p2d_uC;CPkU1T()Nc>nX-@=@Aa
z=|Ee{Zmrk$;%+{ACUSSX9Ct-|CsWMWj)`hhc+(;X7&iy4RF6k4m
zJH4~Jt;WnB_ik}MUzurX`)tkggTt)kiNo(9QG*K8Frav8cx>W&~xL$crX8qsV*HMv=Un7FgL
zab)r>s^#u5BVMW7LRVQ@!QY-$VrK@XrW+|OL7y$#iF_5OSd_UJ31
zqRxF@Cd?>vp+Z~srPDJ^afvrGA-#E~5v!nTD)(zbHz6USP$ERZpTu*q8=r)~9u
zKaC|-RGLZH9YS0lS+S5Q)@9dv!Ow{!_}qt_$aaB1N4>(WMgCJ5`!G&T
zz_lr?*=c%CVb5V|rmEtbW-;Tam8FlUcY{@@rfeaR(yX!M5U!uUJr{ZVV1U||B6a==
zddqaKB&Sfuo;Z&lJHq5lA_uFt5VInBguY@`C4Mg9VKwqsE&q10*QzY8<+u_$N~AwQ&c==05YH!{P`ZKk8qQ`a?C2iN!v0XVIdfoZ0KF;AU14wob(CHb*08
z$f{%HzDn4G#6h{E%g$2V(hCZ1TGLNVr6p^~hRWx7&^`q#@$!6?Gtc<=&x(sre#!cn
zuw*P5zb!7}ArBfS>+nd_JaCw}rb~MG-4_FkCz$`PSt%9!;vrJdVm!XIusbZ}YJaa4
z#o{mH)%oJ}x+e8K5m&gnhi;%PC{J+^c$`m?PrI5J1j4^o8U8a|)*I`c@TFj^ccRdQ
z)lx42#-#6gJ>Pj=j>vpyl-agic=uH7(S1S*8WrM}w<3F`ol&eW*lcR+y_OeCOI~?O
zxL#2Q0?ZDhOutUx74hsa}-SFP?u^e_M$a5t{G?-GQgBGsPCTQ9rk3!x+VPPWptg$0bl)bw>|`k&_3ad~q>
z$d4b4%#4NV>yzt3`aG{>2&V^Gh$lu%L4RW@!q`=MUzGvFWMopJDAl{M2!gztbLJ+~
z8+MAw=F0N#f+%LWKUSZ0IEN1E4BYF`m#x%g-4Bz61@tgwvnxC_OnQAE2)!#B1YBUe
z?6%8YQ&Ll~;3C4PxH(!j#~Op}xaXA7(9qhMwVhEjoX3aAR+*7-4`#%LIIYmc+Eb3c?>
K9C)+hMEV=DXV|c!Q
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