Live location tracking and playback for the game "manhunt"

Frontend #1

open opened by bwc9876.dev targeting main from ben/frontend

In React + Tauri yippee!

Labels

None yet.

assignee

None yet.

Participants 1
AT URI
at://did:plc:x7tlupbnqot7nu6udnffnv4h/sh.tangled.repo.pull/3mfsitklkjo22
+4939 -5499
Diff #0
+616 -10
Cargo.lock
··· 70 70 ] 71 71 72 72 [[package]] 73 + name = "aligned" 74 + version = "0.4.3" 75 + source = "registry+https://github.com/rust-lang/crates.io-index" 76 + checksum = "ee4508988c62edf04abd8d92897fca0c2995d907ce1dfeaf369dac3716a40685" 77 + dependencies = [ 78 + "as-slice", 79 + ] 80 + 81 + [[package]] 82 + name = "aligned-vec" 83 + version = "0.6.4" 84 + source = "registry+https://github.com/rust-lang/crates.io-index" 85 + checksum = "dc890384c8602f339876ded803c97ad529f3842aba97f6392b3dba0dd171769b" 86 + dependencies = [ 87 + "equator", 88 + ] 89 + 90 + [[package]] 73 91 name = "alloc-no-stdlib" 74 92 version = "2.0.4" 75 93 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 167 185 checksum = "5f0e0fee31ef5ed1ba1316088939cea399010ed7731dba877ed44aeb407a75ea" 168 186 169 187 [[package]] 188 + name = "arbitrary" 189 + version = "1.4.2" 190 + source = "registry+https://github.com/rust-lang/crates.io-index" 191 + checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1" 192 + 193 + [[package]] 170 194 name = "arc-swap" 171 195 version = "1.8.2" 172 196 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 176 200 ] 177 201 178 202 [[package]] 203 + name = "arg_enum_proc_macro" 204 + version = "0.3.4" 205 + source = "registry+https://github.com/rust-lang/crates.io-index" 206 + checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea" 207 + dependencies = [ 208 + "proc-macro2", 209 + "quote", 210 + "syn 2.0.116", 211 + ] 212 + 213 + [[package]] 179 214 name = "arrayvec" 180 215 version = "0.7.6" 181 216 source = "registry+https://github.com/rust-lang/crates.io-index" 182 217 checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" 183 218 184 219 [[package]] 220 + name = "as-slice" 221 + version = "0.2.1" 222 + source = "registry+https://github.com/rust-lang/crates.io-index" 223 + checksum = "516b6b4f0e40d50dcda9365d53964ec74560ad4284da2e7fc97122cd83174516" 224 + dependencies = [ 225 + "stable_deref_trait", 226 + ] 227 + 228 + [[package]] 185 229 name = "asn1-rs" 186 230 version = "0.6.2" 187 231 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 190 234 "asn1-rs-derive", 191 235 "asn1-rs-impl", 192 236 "displaydoc", 193 - "nom", 237 + "nom 7.1.3", 194 238 "num-traits", 195 239 "rusticata-macros", 196 240 "thiserror 1.0.69", ··· 493 537 checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" 494 538 495 539 [[package]] 540 + name = "av-scenechange" 541 + version = "0.14.1" 542 + source = "registry+https://github.com/rust-lang/crates.io-index" 543 + checksum = "0f321d77c20e19b92c39e7471cf986812cbb46659d2af674adc4331ef3f18394" 544 + dependencies = [ 545 + "aligned", 546 + "anyhow", 547 + "arg_enum_proc_macro", 548 + "arrayvec", 549 + "log", 550 + "num-rational", 551 + "num-traits", 552 + "pastey", 553 + "rayon", 554 + "thiserror 2.0.18", 555 + "v_frame", 556 + "y4m", 557 + ] 558 + 559 + [[package]] 560 + name = "av1-grain" 561 + version = "0.2.5" 562 + source = "registry+https://github.com/rust-lang/crates.io-index" 563 + checksum = "8cfddb07216410377231960af4fcab838eaa12e013417781b78bd95ee22077f8" 564 + dependencies = [ 565 + "anyhow", 566 + "arrayvec", 567 + "log", 568 + "nom 8.0.0", 569 + "num-rational", 570 + "v_frame", 571 + ] 572 + 573 + [[package]] 574 + name = "avif-serialize" 575 + version = "0.8.8" 576 + source = "registry+https://github.com/rust-lang/crates.io-index" 577 + checksum = "375082f007bd67184fb9c0374614b29f9aaa604ec301635f72338bb65386a53d" 578 + dependencies = [ 579 + "arrayvec", 580 + ] 581 + 582 + [[package]] 496 583 name = "aws-lc-rs" 497 584 version = "1.15.4" 498 585 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 594 681 checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06" 595 682 596 683 [[package]] 684 + name = "bit_field" 685 + version = "0.10.3" 686 + source = "registry+https://github.com/rust-lang/crates.io-index" 687 + checksum = "1e4b40c7323adcfc0a41c4b88143ed58346ff65a288fc144329c5c45e05d70c6" 688 + 689 + [[package]] 597 690 name = "bitflags" 598 691 version = "1.3.2" 599 692 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 609 702 ] 610 703 611 704 [[package]] 705 + name = "bitstream-io" 706 + version = "4.9.0" 707 + source = "registry+https://github.com/rust-lang/crates.io-index" 708 + checksum = "60d4bd9d1db2c6bdf285e223a7fa369d5ce98ec767dec949c6ca62863ce61757" 709 + dependencies = [ 710 + "core2", 711 + ] 712 + 713 + [[package]] 612 714 name = "bitvec" 613 715 version = "1.0.1" 614 716 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 705 807 ] 706 808 707 809 [[package]] 810 + name = "built" 811 + version = "0.8.0" 812 + source = "registry+https://github.com/rust-lang/crates.io-index" 813 + checksum = "f4ad8f11f288f48ca24471bbd51ac257aaeaaa07adae295591266b792902ae64" 814 + 815 + [[package]] 708 816 name = "bumpalo" 709 - version = "3.19.1" 817 + version = "3.20.1" 710 818 source = "registry+https://github.com/rust-lang/crates.io-index" 711 - checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510" 819 + checksum = "5c6f81257d10a0f602a294ae4182251151ff97dbb504ef9afcdda4a64b24d9b4" 712 820 713 821 [[package]] 714 822 name = "byte-unit" ··· 780 888 checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" 781 889 782 890 [[package]] 891 + name = "byteorder-lite" 892 + version = "0.1.0" 893 + source = "registry+https://github.com/rust-lang/crates.io-index" 894 + checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" 895 + 896 + [[package]] 783 897 name = "bytes" 784 898 version = "1.11.1" 785 899 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1048 1162 ] 1049 1163 1050 1164 [[package]] 1165 + name = "color_quant" 1166 + version = "1.1.0" 1167 + source = "registry+https://github.com/rust-lang/crates.io-index" 1168 + checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" 1169 + 1170 + [[package]] 1051 1171 name = "colorchoice" 1052 1172 version = "1.0.4" 1053 1173 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1169 1289 ] 1170 1290 1171 1291 [[package]] 1292 + name = "core2" 1293 + version = "0.4.0" 1294 + source = "registry+https://github.com/rust-lang/crates.io-index" 1295 + checksum = "b49ba7ef1ad6107f8824dbe97de947cbaac53c44e7f9756a1fba0d37c1eec505" 1296 + dependencies = [ 1297 + "memchr", 1298 + ] 1299 + 1300 + [[package]] 1172 1301 name = "cpufeatures" 1173 1302 version = "0.2.17" 1174 1303 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1220 1349 ] 1221 1350 1222 1351 [[package]] 1352 + name = "crossbeam-deque" 1353 + version = "0.8.6" 1354 + source = "registry+https://github.com/rust-lang/crates.io-index" 1355 + checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" 1356 + dependencies = [ 1357 + "crossbeam-epoch", 1358 + "crossbeam-utils", 1359 + ] 1360 + 1361 + [[package]] 1362 + name = "crossbeam-epoch" 1363 + version = "0.9.18" 1364 + source = "registry+https://github.com/rust-lang/crates.io-index" 1365 + checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" 1366 + dependencies = [ 1367 + "crossbeam-utils", 1368 + ] 1369 + 1370 + [[package]] 1223 1371 name = "crossbeam-utils" 1224 1372 version = "0.8.21" 1225 1373 source = "registry+https://github.com/rust-lang/crates.io-index" 1226 1374 checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" 1227 1375 1228 1376 [[package]] 1377 + name = "crunchy" 1378 + version = "0.2.4" 1379 + source = "registry+https://github.com/rust-lang/crates.io-index" 1380 + checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" 1381 + 1382 + [[package]] 1229 1383 name = "crypto-bigint" 1230 1384 version = "0.5.5" 1231 1385 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1380 1534 dependencies = [ 1381 1535 "asn1-rs", 1382 1536 "displaydoc", 1383 - "nom", 1537 + "nom 7.1.3", 1384 1538 "num-bigint", 1385 1539 "num-traits", 1386 1540 "rusticata-macros", ··· 1610 1764 ] 1611 1765 1612 1766 [[package]] 1767 + name = "either" 1768 + version = "1.15.0" 1769 + source = "registry+https://github.com/rust-lang/crates.io-index" 1770 + checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" 1771 + 1772 + [[package]] 1613 1773 name = "elliptic-curve" 1614 1774 version = "0.13.8" 1615 1775 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1720 1880 ] 1721 1881 1722 1882 [[package]] 1883 + name = "equator" 1884 + version = "0.4.2" 1885 + source = "registry+https://github.com/rust-lang/crates.io-index" 1886 + checksum = "4711b213838dfee0117e3be6ac926007d7f433d7bbe33595975d4190cb07e6fc" 1887 + dependencies = [ 1888 + "equator-macro", 1889 + ] 1890 + 1891 + [[package]] 1892 + name = "equator-macro" 1893 + version = "0.4.2" 1894 + source = "registry+https://github.com/rust-lang/crates.io-index" 1895 + checksum = "44f23cf4b44bfce11a86ace86f8a73ffdec849c9fd00a386a53d278bd9e81fb3" 1896 + dependencies = [ 1897 + "proc-macro2", 1898 + "quote", 1899 + "syn 2.0.116", 1900 + ] 1901 + 1902 + [[package]] 1723 1903 name = "equivalent" 1724 1904 version = "1.0.2" 1725 1905 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1774 1954 ] 1775 1955 1776 1956 [[package]] 1957 + name = "exr" 1958 + version = "1.74.0" 1959 + source = "registry+https://github.com/rust-lang/crates.io-index" 1960 + checksum = "4300e043a56aa2cb633c01af81ca8f699a321879a7854d3896a0ba89056363be" 1961 + dependencies = [ 1962 + "bit_field", 1963 + "half", 1964 + "lebe", 1965 + "miniz_oxide", 1966 + "rayon-core", 1967 + "smallvec", 1968 + "zune-inflate", 1969 + ] 1970 + 1971 + [[package]] 1777 1972 name = "fastrand" 1778 1973 version = "2.3.0" 1779 1974 source = "registry+https://github.com/rust-lang/crates.io-index" 1780 1975 checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" 1976 + 1977 + [[package]] 1978 + name = "fax" 1979 + version = "0.2.6" 1980 + source = "registry+https://github.com/rust-lang/crates.io-index" 1981 + checksum = "f05de7d48f37cd6730705cbca900770cab77a89f413d23e100ad7fad7795a0ab" 1982 + dependencies = [ 1983 + "fax_derive", 1984 + ] 1985 + 1986 + [[package]] 1987 + name = "fax_derive" 1988 + version = "0.2.0" 1989 + source = "registry+https://github.com/rust-lang/crates.io-index" 1990 + checksum = "a0aca10fb742cb43f9e7bb8467c91aa9bcb8e3ffbc6a6f7389bb93ffc920577d" 1991 + dependencies = [ 1992 + "proc-macro2", 1993 + "quote", 1994 + "syn 2.0.116", 1995 + ] 1781 1996 1782 1997 [[package]] 1783 1998 name = "fdeflate" ··· 2202 2417 ] 2203 2418 2204 2419 [[package]] 2420 + name = "gif" 2421 + version = "0.14.1" 2422 + source = "registry+https://github.com/rust-lang/crates.io-index" 2423 + checksum = "f5df2ba84018d80c213569363bdcd0c64e6933c67fe4c1d60ecf822971a3c35e" 2424 + dependencies = [ 2425 + "color_quant", 2426 + "weezl", 2427 + ] 2428 + 2429 + [[package]] 2205 2430 name = "gio" 2206 2431 version = "0.18.4" 2207 2432 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2404 2629 ] 2405 2630 2406 2631 [[package]] 2632 + name = "half" 2633 + version = "2.7.1" 2634 + source = "registry+https://github.com/rust-lang/crates.io-index" 2635 + checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b" 2636 + dependencies = [ 2637 + "cfg-if", 2638 + "crunchy", 2639 + "zerocopy", 2640 + ] 2641 + 2642 + [[package]] 2407 2643 name = "hashbrown" 2408 2644 version = "0.12.3" 2409 2645 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2621 2857 checksum = "3e795dff5605e0f04bff85ca41b51a96b83e80b281e96231bcaaf1ac35103371" 2622 2858 dependencies = [ 2623 2859 "byteorder", 2624 - "png", 2860 + "png 0.17.16", 2625 2861 ] 2626 2862 2627 2863 [[package]] ··· 2739 2975 ] 2740 2976 2741 2977 [[package]] 2978 + name = "image" 2979 + version = "0.25.9" 2980 + source = "registry+https://github.com/rust-lang/crates.io-index" 2981 + checksum = "e6506c6c10786659413faa717ceebcb8f70731c0a60cbae39795fdf114519c1a" 2982 + dependencies = [ 2983 + "bytemuck", 2984 + "byteorder-lite", 2985 + "color_quant", 2986 + "exr", 2987 + "gif", 2988 + "image-webp", 2989 + "moxcms", 2990 + "num-traits", 2991 + "png 0.18.1", 2992 + "qoi", 2993 + "ravif", 2994 + "rayon", 2995 + "rgb", 2996 + "tiff", 2997 + "zune-core 0.5.1", 2998 + "zune-jpeg 0.5.12", 2999 + ] 3000 + 3001 + [[package]] 3002 + name = "image-webp" 3003 + version = "0.2.4" 3004 + source = "registry+https://github.com/rust-lang/crates.io-index" 3005 + checksum = "525e9ff3e1a4be2fbea1fdf0e98686a6d98b4d8f937e1bf7402245af1909e8c3" 3006 + dependencies = [ 3007 + "byteorder-lite", 3008 + "quick-error", 3009 + ] 3010 + 3011 + [[package]] 3012 + name = "imgref" 3013 + version = "1.12.0" 3014 + source = "registry+https://github.com/rust-lang/crates.io-index" 3015 + checksum = "e7c5cedc30da3a610cac6b4ba17597bdf7152cf974e8aab3afb3d54455e371c8" 3016 + 3017 + [[package]] 2742 3018 name = "indexmap" 2743 3019 version = "1.9.3" 2744 3020 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2802 3078 ] 2803 3079 2804 3080 [[package]] 3081 + name = "interpolate_name" 3082 + version = "0.2.4" 3083 + source = "registry+https://github.com/rust-lang/crates.io-index" 3084 + checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60" 3085 + dependencies = [ 3086 + "proc-macro2", 3087 + "quote", 3088 + "syn 2.0.116", 3089 + ] 3090 + 3091 + [[package]] 2805 3092 name = "interprocess" 2806 3093 version = "2.3.1" 2807 3094 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2856 3143 version = "1.70.2" 2857 3144 source = "registry+https://github.com/rust-lang/crates.io-index" 2858 3145 checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" 3146 + 3147 + [[package]] 3148 + name = "itertools" 3149 + version = "0.14.0" 3150 + source = "registry+https://github.com/rust-lang/crates.io-index" 3151 + checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" 3152 + dependencies = [ 3153 + "either", 3154 + ] 2859 3155 2860 3156 [[package]] 2861 3157 name = "itoa" ··· 3019 3315 checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" 3020 3316 3021 3317 [[package]] 3318 + name = "lebe" 3319 + version = "0.5.3" 3320 + source = "registry+https://github.com/rust-lang/crates.io-index" 3321 + checksum = "7a79a3332a6609480d7d0c9eab957bca6b455b91bb84e66d19f5ff66294b85b8" 3322 + 3323 + [[package]] 3022 3324 name = "libappindicator" 3023 3325 version = "0.9.0" 3024 3326 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3049 3351 checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112" 3050 3352 3051 3353 [[package]] 3354 + name = "libfuzzer-sys" 3355 + version = "0.4.12" 3356 + source = "registry+https://github.com/rust-lang/crates.io-index" 3357 + checksum = "f12a681b7dd8ce12bff52488013ba614b869148d54dd79836ab85aafdd53f08d" 3358 + dependencies = [ 3359 + "arbitrary", 3360 + "cc", 3361 + ] 3362 + 3363 + [[package]] 3052 3364 name = "libloading" 3053 3365 version = "0.7.4" 3054 3366 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3099 3411 ] 3100 3412 3101 3413 [[package]] 3414 + name = "loop9" 3415 + version = "0.1.5" 3416 + source = "registry+https://github.com/rust-lang/crates.io-index" 3417 + checksum = "0fae87c125b03c1d2c0150c90365d7d6bcc53fb73a9acaef207d2d065860f062" 3418 + dependencies = [ 3419 + "imgref", 3420 + ] 3421 + 3422 + [[package]] 3102 3423 name = "lru-slab" 3103 3424 version = "0.1.2" 3104 3425 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3127 3448 version = "0.1.0" 3128 3449 dependencies = [ 3129 3450 "anyhow", 3451 + "base64 0.22.1", 3130 3452 "chrono", 3453 + "image", 3131 3454 "log", 3132 3455 "manhunt-logic", 3133 3456 "manhunt-transport", 3457 + "rustls 0.23.36", 3134 3458 "serde", 3135 3459 "serde_json", 3136 3460 "specta", ··· 3138 3462 "tauri", 3139 3463 "tauri-build", 3140 3464 "tauri-plugin-dialog", 3465 + "tauri-plugin-fs", 3141 3466 "tauri-plugin-geolocation", 3142 3467 "tauri-plugin-log", 3143 3468 "tauri-plugin-notification", ··· 3319 3644 checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" 3320 3645 3321 3646 [[package]] 3647 + name = "maybe-rayon" 3648 + version = "0.1.1" 3649 + source = "registry+https://github.com/rust-lang/crates.io-index" 3650 + checksum = "8ea1f30cedd69f0a2954655f7188c6a834246d2bcf1e315e2ac40c4b24dc9519" 3651 + dependencies = [ 3652 + "cfg-if", 3653 + "rayon", 3654 + ] 3655 + 3656 + [[package]] 3322 3657 name = "md-5" 3323 3658 version = "0.10.6" 3324 3659 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3386 3721 ] 3387 3722 3388 3723 [[package]] 3724 + name = "moxcms" 3725 + version = "0.7.11" 3726 + source = "registry+https://github.com/rust-lang/crates.io-index" 3727 + checksum = "ac9557c559cd6fc9867e122e20d2cbefc9ca29d80d027a8e39310920ed2f0a97" 3728 + dependencies = [ 3729 + "num-traits", 3730 + "pxfm", 3731 + ] 3732 + 3733 + [[package]] 3389 3734 name = "muda" 3390 3735 version = "0.17.1" 3391 3736 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3400 3745 "objc2-core-foundation", 3401 3746 "objc2-foundation", 3402 3747 "once_cell", 3403 - "png", 3748 + "png 0.17.16", 3404 3749 "serde", 3405 3750 "thiserror 2.0.18", 3406 3751 "windows-sys 0.60.2", ··· 3492 3837 ] 3493 3838 3494 3839 [[package]] 3840 + name = "nom" 3841 + version = "8.0.0" 3842 + source = "registry+https://github.com/rust-lang/crates.io-index" 3843 + checksum = "df9761775871bdef83bee530e60050f7e54b1105350d6884eb0fb4f46c2f9405" 3844 + dependencies = [ 3845 + "memchr", 3846 + ] 3847 + 3848 + [[package]] 3849 + name = "noop_proc_macro" 3850 + version = "0.3.0" 3851 + source = "registry+https://github.com/rust-lang/crates.io-index" 3852 + checksum = "0676bb32a98c1a483ce53e500a81ad9c3d5b3f7c920c28c24e9cb0980d0b5bc8" 3853 + 3854 + [[package]] 3495 3855 name = "notify-rust" 3496 3856 version = "4.12.0" 3497 3857 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3522 3882 checksum = "cf97ec579c3c42f953ef76dbf8d55ac91fb219dde70e49aa4a6b7d74e9919050" 3523 3883 3524 3884 [[package]] 3885 + name = "num-derive" 3886 + version = "0.4.2" 3887 + source = "registry+https://github.com/rust-lang/crates.io-index" 3888 + checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" 3889 + dependencies = [ 3890 + "proc-macro2", 3891 + "quote", 3892 + "syn 2.0.116", 3893 + ] 3894 + 3895 + [[package]] 3525 3896 name = "num-integer" 3526 3897 version = "0.1.46" 3527 3898 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3531 3902 ] 3532 3903 3533 3904 [[package]] 3905 + name = "num-rational" 3906 + version = "0.4.2" 3907 + source = "registry+https://github.com/rust-lang/crates.io-index" 3908 + checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" 3909 + dependencies = [ 3910 + "num-bigint", 3911 + "num-integer", 3912 + "num-traits", 3913 + ] 3914 + 3915 + [[package]] 3534 3916 name = "num-traits" 3535 3917 version = "0.2.19" 3536 3918 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3928 4310 checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" 3929 4311 3930 4312 [[package]] 4313 + name = "pastey" 4314 + version = "0.1.1" 4315 + source = "registry+https://github.com/rust-lang/crates.io-index" 4316 + checksum = "35fb2e5f958ec131621fdd531e9fc186ed768cbe395337403ae56c17a74c68ec" 4317 + 4318 + [[package]] 3931 4319 name = "pathdiff" 3932 4320 version = "0.2.3" 3933 4321 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4168 4556 ] 4169 4557 4170 4558 [[package]] 4559 + name = "png" 4560 + version = "0.18.1" 4561 + source = "registry+https://github.com/rust-lang/crates.io-index" 4562 + checksum = "60769b8b31b2a9f263dae2776c37b1b28ae246943cf719eb6946a1db05128a61" 4563 + dependencies = [ 4564 + "bitflags 2.11.0", 4565 + "crc32fast", 4566 + "fdeflate", 4567 + "flate2", 4568 + "miniz_oxide", 4569 + ] 4570 + 4571 + [[package]] 4171 4572 name = "polling" 4172 4573 version = "3.11.0" 4173 4574 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4337 4738 ] 4338 4739 4339 4740 [[package]] 4741 + name = "profiling" 4742 + version = "1.0.17" 4743 + source = "registry+https://github.com/rust-lang/crates.io-index" 4744 + checksum = "3eb8486b569e12e2c32ad3e204dbaba5e4b5b216e9367044f25f1dba42341773" 4745 + dependencies = [ 4746 + "profiling-procmacros", 4747 + ] 4748 + 4749 + [[package]] 4750 + name = "profiling-procmacros" 4751 + version = "1.0.17" 4752 + source = "registry+https://github.com/rust-lang/crates.io-index" 4753 + checksum = "52717f9a02b6965224f95ca2a81e2e0c5c43baacd28ca057577988930b6c3d5b" 4754 + dependencies = [ 4755 + "quote", 4756 + "syn 2.0.116", 4757 + ] 4758 + 4759 + [[package]] 4340 4760 name = "ptr_meta" 4341 4761 version = "0.1.4" 4342 4762 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4375 4795 "quote", 4376 4796 "syn 2.0.116", 4377 4797 ] 4798 + 4799 + [[package]] 4800 + name = "pxfm" 4801 + version = "0.1.27" 4802 + source = "registry+https://github.com/rust-lang/crates.io-index" 4803 + checksum = "7186d3822593aa4393561d186d1393b3923e9d6163d3fbfd6e825e3e6cf3e6a8" 4804 + dependencies = [ 4805 + "num-traits", 4806 + ] 4807 + 4808 + [[package]] 4809 + name = "qoi" 4810 + version = "0.4.1" 4811 + source = "registry+https://github.com/rust-lang/crates.io-index" 4812 + checksum = "7f6d64c71eb498fe9eae14ce4ec935c555749aef511cca85b5568910d6e48001" 4813 + dependencies = [ 4814 + "bytemuck", 4815 + ] 4816 + 4817 + [[package]] 4818 + name = "quick-error" 4819 + version = "2.0.1" 4820 + source = "registry+https://github.com/rust-lang/crates.io-index" 4821 + checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" 4378 4822 4379 4823 [[package]] 4380 4824 name = "quick-xml" ··· 4618 5062 ] 4619 5063 4620 5064 [[package]] 5065 + name = "rav1e" 5066 + version = "0.8.1" 5067 + source = "registry+https://github.com/rust-lang/crates.io-index" 5068 + checksum = "43b6dd56e85d9483277cde964fd1bdb0428de4fec5ebba7540995639a21cb32b" 5069 + dependencies = [ 5070 + "aligned-vec", 5071 + "arbitrary", 5072 + "arg_enum_proc_macro", 5073 + "arrayvec", 5074 + "av-scenechange", 5075 + "av1-grain", 5076 + "bitstream-io", 5077 + "built", 5078 + "cfg-if", 5079 + "interpolate_name", 5080 + "itertools", 5081 + "libc", 5082 + "libfuzzer-sys", 5083 + "log", 5084 + "maybe-rayon", 5085 + "new_debug_unreachable", 5086 + "noop_proc_macro", 5087 + "num-derive", 5088 + "num-traits", 5089 + "paste", 5090 + "profiling", 5091 + "rand 0.9.2", 5092 + "rand_chacha 0.9.0", 5093 + "simd_helpers", 5094 + "thiserror 2.0.18", 5095 + "v_frame", 5096 + "wasm-bindgen", 5097 + ] 5098 + 5099 + [[package]] 5100 + name = "ravif" 5101 + version = "0.12.0" 5102 + source = "registry+https://github.com/rust-lang/crates.io-index" 5103 + checksum = "ef69c1990ceef18a116855938e74793a5f7496ee907562bd0857b6ac734ab285" 5104 + dependencies = [ 5105 + "avif-serialize", 5106 + "imgref", 5107 + "loop9", 5108 + "quick-error", 5109 + "rav1e", 5110 + "rayon", 5111 + "rgb", 5112 + ] 5113 + 5114 + [[package]] 4621 5115 name = "raw-window-handle" 4622 5116 version = "0.6.2" 4623 5117 source = "registry+https://github.com/rust-lang/crates.io-index" 4624 5118 checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" 4625 5119 4626 5120 [[package]] 5121 + name = "rayon" 5122 + version = "1.11.0" 5123 + source = "registry+https://github.com/rust-lang/crates.io-index" 5124 + checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" 5125 + dependencies = [ 5126 + "either", 5127 + "rayon-core", 5128 + ] 5129 + 5130 + [[package]] 5131 + name = "rayon-core" 5132 + version = "1.13.0" 5133 + source = "registry+https://github.com/rust-lang/crates.io-index" 5134 + checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" 5135 + dependencies = [ 5136 + "crossbeam-deque", 5137 + "crossbeam-utils", 5138 + ] 5139 + 5140 + [[package]] 4627 5141 name = "rcgen" 4628 5142 version = "0.13.2" 4629 5143 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4808 5322 ] 4809 5323 4810 5324 [[package]] 5325 + name = "rgb" 5326 + version = "0.8.52" 5327 + source = "registry+https://github.com/rust-lang/crates.io-index" 5328 + checksum = "0c6a884d2998352bb4daf0183589aec883f16a6da1f4dde84d8e2e9a5409a1ce" 5329 + 5330 + [[package]] 4811 5331 name = "ring" 4812 5332 version = "0.17.14" 4813 5333 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4962 5482 source = "registry+https://github.com/rust-lang/crates.io-index" 4963 5483 checksum = "faf0c4a6ece9950b9abdb62b1cfcf2a68b3b67a10ba445b3bb85be2a293d0632" 4964 5484 dependencies = [ 4965 - "nom", 5485 + "nom 7.1.3", 4966 5486 ] 4967 5487 4968 5488 [[package]] ··· 4997 5517 checksum = "c665f33d38cea657d9614f766881e4d510e0eda4239891eea56b4cadcf01801b" 4998 5518 dependencies = [ 4999 5519 "aws-lc-rs", 5520 + "log", 5000 5521 "once_cell", 5001 5522 "ring", 5002 5523 "rustls-pki-types", ··· 5524 6045 checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" 5525 6046 5526 6047 [[package]] 6048 + name = "simd_helpers" 6049 + version = "0.1.0" 6050 + source = "registry+https://github.com/rust-lang/crates.io-index" 6051 + checksum = "95890f873bec569a0362c235787f3aca6e1e887302ba4840839bcc6459c42da6" 6052 + dependencies = [ 6053 + "quote", 6054 + ] 6055 + 6056 + [[package]] 5527 6057 name = "simdutf8" 5528 6058 version = "0.1.5" 5529 6059 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 5993 6523 "ico", 5994 6524 "json-patch", 5995 6525 "plist", 5996 - "png", 6526 + "png 0.17.16", 5997 6527 "proc-macro2", 5998 6528 "quote", 5999 6529 "semver", ··· 6379 6909 ] 6380 6910 6381 6911 [[package]] 6912 + name = "tiff" 6913 + version = "0.10.3" 6914 + source = "registry+https://github.com/rust-lang/crates.io-index" 6915 + checksum = "af9605de7fee8d9551863fd692cce7637f548dbd9db9180fcc07ccc6d26c336f" 6916 + dependencies = [ 6917 + "fax", 6918 + "flate2", 6919 + "half", 6920 + "quick-error", 6921 + "weezl", 6922 + "zune-jpeg 0.4.21", 6923 + ] 6924 + 6925 + [[package]] 6382 6926 name = "time" 6383 6927 version = "0.3.47" 6384 6928 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 6702 7246 "objc2-core-graphics", 6703 7247 "objc2-foundation", 6704 7248 "once_cell", 6705 - "png", 7249 + "png 0.17.16", 6706 7250 "serde", 6707 7251 "thiserror 2.0.18", 6708 7252 "windows-sys 0.60.2", ··· 6918 7462 ] 6919 7463 6920 7464 [[package]] 7465 + name = "v_frame" 7466 + version = "0.3.9" 7467 + source = "registry+https://github.com/rust-lang/crates.io-index" 7468 + checksum = "666b7727c8875d6ab5db9533418d7c764233ac9c0cff1d469aec8fa127597be2" 7469 + dependencies = [ 7470 + "aligned-vec", 7471 + "num-traits", 7472 + "wasm-bindgen", 7473 + ] 7474 + 7475 + [[package]] 6921 7476 name = "value-bag" 6922 7477 version = "1.12.0" 6923 7478 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 7415 7970 "windows", 7416 7971 "windows-core 0.61.2", 7417 7972 ] 7973 + 7974 + [[package]] 7975 + name = "weezl" 7976 + version = "0.1.12" 7977 + source = "registry+https://github.com/rust-lang/crates.io-index" 7978 + checksum = "a28ac98ddc8b9274cb41bb4d9d4d5c425b6020c50c46f25559911905610b4a88" 7418 7979 7419 7980 [[package]] 7420 7981 name = "widestring" ··· 8105 8666 "data-encoding", 8106 8667 "der-parser", 8107 8668 "lazy_static", 8108 - "nom", 8669 + "nom 7.1.3", 8109 8670 "oid-registry", 8110 8671 "ring", 8111 8672 "rusticata-macros", 8112 8673 "thiserror 1.0.69", 8113 8674 "time", 8114 8675 ] 8676 + 8677 + [[package]] 8678 + name = "y4m" 8679 + version = "0.8.0" 8680 + source = "registry+https://github.com/rust-lang/crates.io-index" 8681 + checksum = "7a5a4b21e1a62b67a2970e6831bc091d7b87e119e7f9791aef9702e3bef04448" 8115 8682 8116 8683 [[package]] 8117 8684 name = "yasna" ··· 8305 8872 version = "1.0.21" 8306 8873 source = "registry+https://github.com/rust-lang/crates.io-index" 8307 8874 checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" 8875 + 8876 + [[package]] 8877 + name = "zune-core" 8878 + version = "0.4.12" 8879 + source = "registry+https://github.com/rust-lang/crates.io-index" 8880 + checksum = "3f423a2c17029964870cfaabb1f13dfab7d092a62a29a89264f4d36990ca414a" 8881 + 8882 + [[package]] 8883 + name = "zune-core" 8884 + version = "0.5.1" 8885 + source = "registry+https://github.com/rust-lang/crates.io-index" 8886 + checksum = "cb8a0807f7c01457d0379ba880ba6322660448ddebc890ce29bb64da71fb40f9" 8887 + 8888 + [[package]] 8889 + name = "zune-inflate" 8890 + version = "0.2.54" 8891 + source = "registry+https://github.com/rust-lang/crates.io-index" 8892 + checksum = "73ab332fe2f6680068f3582b16a24f90ad7096d5d39b974d1c0aff0125116f02" 8893 + dependencies = [ 8894 + "simd-adler32", 8895 + ] 8896 + 8897 + [[package]] 8898 + name = "zune-jpeg" 8899 + version = "0.4.21" 8900 + source = "registry+https://github.com/rust-lang/crates.io-index" 8901 + checksum = "29ce2c8a9384ad323cf564b67da86e21d3cfdff87908bc1223ed5c99bc792713" 8902 + dependencies = [ 8903 + "zune-core 0.4.12", 8904 + ] 8905 + 8906 + [[package]] 8907 + name = "zune-jpeg" 8908 + version = "0.5.12" 8909 + source = "registry+https://github.com/rust-lang/crates.io-index" 8910 + checksum = "410e9ecef634c709e3831c2cfdb8d9c32164fae1c67496d5b68fff728eec37fe" 8911 + dependencies = [ 8912 + "zune-core 0.5.1", 8913 + ] 8308 8914 8309 8915 [[package]] 8310 8916 name = "zvariant"
+1 -34
TODO.md
··· 1 1 # TODO 2 2 3 - ## Ben 4 - 5 - - [x] Transport : Packet splitting 6 - - [x] Transport : Handle Errors 7 - - [x] Transport : Mark game started on client 8 - - [x] API : Command to check if a game exists and is open for fast error checking 9 - - [x] Transport : Switch to burst message processing for less time in the 10 - critical path 11 - - [x] State : Event history tracking 12 - - [x] State : Post game sync 13 - - [x] API : Handling Profile Syncing 14 - - [x] API : State Update Events 15 - - [x] API : Game Replay Screen 16 - - [x] Frontend : Scaffolding 17 - - [x] Meta : CI Setup 18 - - [x] Meta : README Instructions 19 - - [x] Meta : Recipes for type binding generation 20 - - [x] Signaling: All of it 21 - - [x] Backend : Better transport error handling 22 - - [x] Backend : Abstract lobby? Separate crate? 23 - - [x] Transport : Handle transport cancellation better 24 - - [x] Backend : Add checks for when the `powerup_locations` field is an empty array in settings 25 - - [ ] Backend : More tests 26 - - [x] Lobby tests 27 - - [x] Game end test for actual return from loop 28 - - [x] More transport crate tests 29 - - [x] Signaling is wrong, only kick everyone else on host leave if the lobby is open 30 - - [x] Organize signalling and seperate out more logic 31 - - [x] Signaling tests 32 - - [ ] Testing crate for integration testing? 33 - - [ ] NixOS VM tests wrapping the testing crate? 34 - - [ ] Nix : Cheat the dependency nightmare and use crane 35 - - [x] Nix : Fix manhunt.nix to actually build 36 - - [ ] Frontend : Rework state management, better hooks 3 + - [ ] Setup screen
+44
flake.lock
··· 18 18 "type": "github" 19 19 } 20 20 }, 21 + "flakelight-treefmt": { 22 + "inputs": { 23 + "flakelight": [ 24 + "flakelight" 25 + ], 26 + "treefmt-nix": "treefmt-nix" 27 + }, 28 + "locked": { 29 + "lastModified": 1771333462, 30 + "narHash": "sha256-nkE5hR6+JCu6mhxDv+GxJmLmCf0vl/HvRapzF9LNUcI=", 31 + "owner": "m15a", 32 + "repo": "flakelight-treefmt", 33 + "rev": "3eb38fcc804c4434e8fe96aad659f8aed2b1e01a", 34 + "type": "github" 35 + }, 36 + "original": { 37 + "owner": "m15a", 38 + "repo": "flakelight-treefmt", 39 + "type": "github" 40 + } 41 + }, 21 42 "nixpkgs": { 22 43 "locked": { 23 44 "lastModified": 1771008912, ··· 53 74 "root": { 54 75 "inputs": { 55 76 "flakelight": "flakelight", 77 + "flakelight-treefmt": "flakelight-treefmt", 56 78 "nixpkgs": "nixpkgs_2", 57 79 "rust-overlay": "rust-overlay" 58 80 } ··· 74 96 "original": { 75 97 "owner": "oxalica", 76 98 "repo": "rust-overlay", 99 + "type": "github" 100 + } 101 + }, 102 + "treefmt-nix": { 103 + "inputs": { 104 + "nixpkgs": [ 105 + "flakelight-treefmt", 106 + "flakelight", 107 + "nixpkgs" 108 + ] 109 + }, 110 + "locked": { 111 + "lastModified": 1770228511, 112 + "narHash": "sha256-wQ6NJSuFqAEmIg2VMnLdCnUc0b7vslUohqqGGD+Fyxk=", 113 + "owner": "numtide", 114 + "repo": "treefmt-nix", 115 + "rev": "337a4fe074be1042a35086f15481d763b8ddc0e7", 116 + "type": "github" 117 + }, 118 + "original": { 119 + "owner": "numtide", 120 + "repo": "treefmt-nix", 77 121 "type": "github" 78 122 } 79 123 }
+18 -17
flake.nix
··· 4 4 flakelight.url = "github:nix-community/flakelight"; 5 5 rust-overlay.url = "github:oxalica/rust-overlay"; 6 6 rust-overlay.inputs.nixpkgs.follows = "nixpkgs"; 7 + flakelight-treefmt.url = "github:m15a/flakelight-treefmt"; 8 + flakelight-treefmt.inputs.flakelight.follows = "flakelight"; 7 9 }; 8 10 outputs = {flakelight, ...} @ inputs: 9 11 flakelight ./. { 10 12 inherit inputs; 13 + imports = [inputs.flakelight-treefmt.flakelightModules.default]; 11 14 withOverlays = [inputs.rust-overlay.overlays.default]; 12 15 nixpkgs.config = { 13 16 allowUnfree = true; 14 17 android_sdk.accept_license = true; 15 18 }; 16 19 17 - flakelight.builtinFormatters = false; 18 - formatters = pkgs: let 19 - prettier = "${pkgs.prettier}/bin/prettier --write ."; 20 - alejandra = "${pkgs.alejandra}/bin/alejandra ."; 21 - rustfmt = "${pkgs.rustfmt}/bin/rustfmt fmt"; 22 - just = "${pkgs.just}/bin/just --fmt --unstable"; 23 - in { 24 - "justfile" = just; 25 - "*.nix" = alejandra; 26 - "*.js" = prettier; 27 - "*.ts" = prettier; 28 - "*.jsx" = prettier; 29 - "*.tsx" = prettier; 30 - "*.md" = prettier; 31 - "*.json" = prettier; 32 - "*.rs" = rustfmt; 20 + treefmtConfig = {pkgs, ...}: { 21 + programs = { 22 + alejandra.enable = true; 23 + just.enable = true; 24 + prettier.enable = true; 25 + rustfmt.enable = true; 26 + }; 33 27 }; 34 28 35 29 devShell = pkgs: let ··· 82 76 pkg-config 83 77 gobject-introspection 84 78 nodePackages.prettier 85 - (rust-bin.stable.latest.default.override {targets = ["aarch64-linux-android" "armv7-linux-androideabi" "i686-linux-android" "x86_64-linux-android"];}) 79 + (rust-bin.stable.latest.default.override { 80 + targets = [ 81 + "aarch64-linux-android" 82 + "armv7-linux-androideabi" 83 + "i686-linux-android" 84 + "x86_64-linux-android" 85 + ]; 86 + }) 86 87 cargo-tauri 87 88 nodejs 88 89 (android-studio.withSdk androidComposition.androidsdk)
+3
frontend/.oxlintrc.json
··· 1 + { 2 + "ignorePatterns": ["src/bindings.ts"] 3 + }
-22
frontend/eslint.config.js
··· 1 - import js from "@eslint/js"; 2 - import globals from "globals"; 3 - import tseslint from "typescript-eslint"; 4 - import pluginReact from "eslint-plugin-react"; 5 - import reactHooks from "eslint-plugin-react-hooks"; 6 - import { defineConfig, globalIgnores } from "eslint/config"; 7 - 8 - export default defineConfig([ 9 - globalIgnores(["dist"]), 10 - { 11 - files: ["**/*.{js,mjs,cjs,ts,mts,cts,jsx,tsx}"], 12 - plugins: { js }, 13 - extends: ["js/recommended"] 14 - }, 15 - { 16 - files: ["**/*.{js,mjs,cjs,ts,mts,cts,jsx,tsx}"], 17 - languageOptions: { globals: globals.browser } 18 - }, 19 - tseslint.configs.recommended, 20 - { settings: { react: { version: "detect" } }, ...pluginReact.configs.flat.recommended }, 21 - reactHooks.configs["recommended-latest"] 22 - ]);
+2 -3
frontend/index.html
··· 5 5 <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 6 6 <title>Man Hunt</title> 7 7 <script type="module" src="/src/main.tsx"></script> 8 + <link rel="stylesheet" href="/src/style.css" /> 8 9 </head> 9 10 10 - <body> 11 - <div id="root"></div> 12 - </body> 11 + <body id="root"></body> 13 12 </html>
+2621 -5259
frontend/package-lock.json
··· 1 1 { 2 - "name": "manhunt-app", 3 - "version": "0.1.0", 4 - "lockfileVersion": 3, 5 - "requires": true, 6 - "packages": { 7 - "": { 8 - "name": "manhunt-app", 9 - "version": "0.1.0", 10 - "dependencies": { 11 - "@tauri-apps/api": "^2", 12 - "@tauri-apps/plugin-dialog": "^2", 13 - "@tauri-apps/plugin-geolocation": "^2", 14 - "@tauri-apps/plugin-log": "^2", 15 - "@tauri-apps/plugin-notification": "^2", 16 - "@tauri-apps/plugin-opener": "^2", 17 - "react": "^19", 18 - "react-dom": "^19", 19 - "swr": "^2" 20 - }, 21 - "devDependencies": { 22 - "@eslint/js": "^9.39.2", 23 - "@types/node": "^25.2.3", 24 - "@types/react": "^19", 25 - "@types/react-dom": "^19", 26 - "@vitejs/plugin-react": "^5.1.4", 27 - "eslint": "^9.39.2", 28 - "eslint-plugin-react": "^7", 29 - "eslint-plugin-react-hooks": "^5.2.0", 30 - "globals": "^17.3.0", 31 - "prettier": "^3", 32 - "typescript": "^5", 33 - "typescript-eslint": "^8", 34 - "vite": "^7" 35 - } 36 - }, 37 - "node_modules/@babel/code-frame": { 38 - "version": "7.29.0", 39 - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", 40 - "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", 41 - "dev": true, 42 - "license": "MIT", 43 - "dependencies": { 44 - "@babel/helper-validator-identifier": "^7.28.5", 45 - "js-tokens": "^4.0.0", 46 - "picocolors": "^1.1.1" 47 - }, 48 - "engines": { 49 - "node": ">=6.9.0" 50 - } 51 - }, 52 - "node_modules/@babel/compat-data": { 53 - "version": "7.29.0", 54 - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", 55 - "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", 56 - "dev": true, 57 - "license": "MIT", 58 - "engines": { 59 - "node": ">=6.9.0" 60 - } 61 - }, 62 - "node_modules/@babel/core": { 63 - "version": "7.29.0", 64 - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", 65 - "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", 66 - "dev": true, 67 - "license": "MIT", 68 - "dependencies": { 69 - "@babel/code-frame": "^7.29.0", 70 - "@babel/generator": "^7.29.0", 71 - "@babel/helper-compilation-targets": "^7.28.6", 72 - "@babel/helper-module-transforms": "^7.28.6", 73 - "@babel/helpers": "^7.28.6", 74 - "@babel/parser": "^7.29.0", 75 - "@babel/template": "^7.28.6", 76 - "@babel/traverse": "^7.29.0", 77 - "@babel/types": "^7.29.0", 78 - "@jridgewell/remapping": "^2.3.5", 79 - "convert-source-map": "^2.0.0", 80 - "debug": "^4.1.0", 81 - "gensync": "^1.0.0-beta.2", 82 - "json5": "^2.2.3", 83 - "semver": "^6.3.1" 84 - }, 85 - "engines": { 86 - "node": ">=6.9.0" 87 - }, 88 - "funding": { 89 - "type": "opencollective", 90 - "url": "https://opencollective.com/babel" 91 - } 92 - }, 93 - "node_modules/@babel/generator": { 94 - "version": "7.29.1", 95 - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", 96 - "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", 97 - "dev": true, 98 - "license": "MIT", 99 - "dependencies": { 100 - "@babel/parser": "^7.29.0", 101 - "@babel/types": "^7.29.0", 102 - "@jridgewell/gen-mapping": "^0.3.12", 103 - "@jridgewell/trace-mapping": "^0.3.28", 104 - "jsesc": "^3.0.2" 105 - }, 106 - "engines": { 107 - "node": ">=6.9.0" 108 - } 109 - }, 110 - "node_modules/@babel/helper-compilation-targets": { 111 - "version": "7.28.6", 112 - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", 113 - "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", 114 - "dev": true, 115 - "license": "MIT", 116 - "dependencies": { 117 - "@babel/compat-data": "^7.28.6", 118 - "@babel/helper-validator-option": "^7.27.1", 119 - "browserslist": "^4.24.0", 120 - "lru-cache": "^5.1.1", 121 - "semver": "^6.3.1" 122 - }, 123 - "engines": { 124 - "node": ">=6.9.0" 125 - } 126 - }, 127 - "node_modules/@babel/helper-globals": { 128 - "version": "7.28.0", 129 - "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", 130 - "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", 131 - "dev": true, 132 - "license": "MIT", 133 - "engines": { 134 - "node": ">=6.9.0" 135 - } 136 - }, 137 - "node_modules/@babel/helper-module-imports": { 138 - "version": "7.28.6", 139 - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", 140 - "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", 141 - "dev": true, 142 - "license": "MIT", 143 - "dependencies": { 144 - "@babel/traverse": "^7.28.6", 145 - "@babel/types": "^7.28.6" 146 - }, 147 - "engines": { 148 - "node": ">=6.9.0" 149 - } 150 - }, 151 - "node_modules/@babel/helper-module-transforms": { 152 - "version": "7.28.6", 153 - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", 154 - "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", 155 - "dev": true, 156 - "license": "MIT", 157 - "dependencies": { 158 - "@babel/helper-module-imports": "^7.28.6", 159 - "@babel/helper-validator-identifier": "^7.28.5", 160 - "@babel/traverse": "^7.28.6" 161 - }, 162 - "engines": { 163 - "node": ">=6.9.0" 164 - }, 165 - "peerDependencies": { 166 - "@babel/core": "^7.0.0" 167 - } 168 - }, 169 - "node_modules/@babel/helper-plugin-utils": { 170 - "version": "7.28.6", 171 - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", 172 - "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", 173 - "dev": true, 174 - "license": "MIT", 175 - "engines": { 176 - "node": ">=6.9.0" 177 - } 178 - }, 179 - "node_modules/@babel/helper-string-parser": { 180 - "version": "7.27.1", 181 - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", 182 - "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", 183 - "dev": true, 184 - "license": "MIT", 185 - "engines": { 186 - "node": ">=6.9.0" 187 - } 188 - }, 189 - "node_modules/@babel/helper-validator-identifier": { 190 - "version": "7.28.5", 191 - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", 192 - "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", 193 - "dev": true, 194 - "license": "MIT", 195 - "engines": { 196 - "node": ">=6.9.0" 197 - } 198 - }, 199 - "node_modules/@babel/helper-validator-option": { 200 - "version": "7.27.1", 201 - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", 202 - "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", 203 - "dev": true, 204 - "license": "MIT", 205 - "engines": { 206 - "node": ">=6.9.0" 207 - } 208 - }, 209 - "node_modules/@babel/helpers": { 210 - "version": "7.28.6", 211 - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz", 212 - "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==", 213 - "dev": true, 214 - "license": "MIT", 215 - "dependencies": { 216 - "@babel/template": "^7.28.6", 217 - "@babel/types": "^7.28.6" 218 - }, 219 - "engines": { 220 - "node": ">=6.9.0" 221 - } 222 - }, 223 - "node_modules/@babel/parser": { 224 - "version": "7.29.0", 225 - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz", 226 - "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==", 227 - "dev": true, 228 - "license": "MIT", 229 - "dependencies": { 230 - "@babel/types": "^7.29.0" 231 - }, 232 - "bin": { 233 - "parser": "bin/babel-parser.js" 234 - }, 235 - "engines": { 236 - "node": ">=6.0.0" 237 - } 238 - }, 239 - "node_modules/@babel/plugin-transform-react-jsx-self": { 240 - "version": "7.27.1", 241 - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", 242 - "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", 243 - "dev": true, 244 - "license": "MIT", 245 - "dependencies": { 246 - "@babel/helper-plugin-utils": "^7.27.1" 247 - }, 248 - "engines": { 249 - "node": ">=6.9.0" 250 - }, 251 - "peerDependencies": { 252 - "@babel/core": "^7.0.0-0" 253 - } 254 - }, 255 - "node_modules/@babel/plugin-transform-react-jsx-source": { 256 - "version": "7.27.1", 257 - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", 258 - "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", 259 - "dev": true, 260 - "license": "MIT", 261 - "dependencies": { 262 - "@babel/helper-plugin-utils": "^7.27.1" 263 - }, 264 - "engines": { 265 - "node": ">=6.9.0" 266 - }, 267 - "peerDependencies": { 268 - "@babel/core": "^7.0.0-0" 269 - } 270 - }, 271 - "node_modules/@babel/template": { 272 - "version": "7.28.6", 273 - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", 274 - "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", 275 - "dev": true, 276 - "license": "MIT", 277 - "dependencies": { 278 - "@babel/code-frame": "^7.28.6", 279 - "@babel/parser": "^7.28.6", 280 - "@babel/types": "^7.28.6" 281 - }, 282 - "engines": { 283 - "node": ">=6.9.0" 284 - } 285 - }, 286 - "node_modules/@babel/traverse": { 287 - "version": "7.29.0", 288 - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", 289 - "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", 290 - "dev": true, 291 - "license": "MIT", 292 - "dependencies": { 293 - "@babel/code-frame": "^7.29.0", 294 - "@babel/generator": "^7.29.0", 295 - "@babel/helper-globals": "^7.28.0", 296 - "@babel/parser": "^7.29.0", 297 - "@babel/template": "^7.28.6", 298 - "@babel/types": "^7.29.0", 299 - "debug": "^4.3.1" 300 - }, 301 - "engines": { 302 - "node": ">=6.9.0" 303 - } 304 - }, 305 - "node_modules/@babel/types": { 306 - "version": "7.29.0", 307 - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", 308 - "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", 309 - "dev": true, 310 - "license": "MIT", 311 - "dependencies": { 312 - "@babel/helper-string-parser": "^7.27.1", 313 - "@babel/helper-validator-identifier": "^7.28.5" 314 - }, 315 - "engines": { 316 - "node": ">=6.9.0" 317 - } 318 - }, 319 - "node_modules/@esbuild/aix-ppc64": { 320 - "version": "0.27.3", 321 - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.3.tgz", 322 - "integrity": "sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==", 323 - "cpu": [ 324 - "ppc64" 325 - ], 326 - "dev": true, 327 - "license": "MIT", 328 - "optional": true, 329 - "os": [ 330 - "aix" 331 - ], 332 - "engines": { 333 - "node": ">=18" 334 - } 335 - }, 336 - "node_modules/@esbuild/android-arm": { 337 - "version": "0.27.3", 338 - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.3.tgz", 339 - "integrity": "sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==", 340 - "cpu": [ 341 - "arm" 342 - ], 343 - "dev": true, 344 - "license": "MIT", 345 - "optional": true, 346 - "os": [ 347 - "android" 348 - ], 349 - "engines": { 350 - "node": ">=18" 351 - } 352 - }, 353 - "node_modules/@esbuild/android-arm64": { 354 - "version": "0.27.3", 355 - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.3.tgz", 356 - "integrity": "sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==", 357 - "cpu": [ 358 - "arm64" 359 - ], 360 - "dev": true, 361 - "license": "MIT", 362 - "optional": true, 363 - "os": [ 364 - "android" 365 - ], 366 - "engines": { 367 - "node": ">=18" 368 - } 369 - }, 370 - "node_modules/@esbuild/android-x64": { 371 - "version": "0.27.3", 372 - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.3.tgz", 373 - "integrity": "sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==", 374 - "cpu": [ 375 - "x64" 376 - ], 377 - "dev": true, 378 - "license": "MIT", 379 - "optional": true, 380 - "os": [ 381 - "android" 382 - ], 383 - "engines": { 384 - "node": ">=18" 385 - } 386 - }, 387 - "node_modules/@esbuild/darwin-arm64": { 388 - "version": "0.27.3", 389 - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.3.tgz", 390 - "integrity": "sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==", 391 - "cpu": [ 392 - "arm64" 393 - ], 394 - "dev": true, 395 - "license": "MIT", 396 - "optional": true, 397 - "os": [ 398 - "darwin" 399 - ], 400 - "engines": { 401 - "node": ">=18" 402 - } 403 - }, 404 - "node_modules/@esbuild/darwin-x64": { 405 - "version": "0.27.3", 406 - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.3.tgz", 407 - "integrity": "sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==", 408 - "cpu": [ 409 - "x64" 410 - ], 411 - "dev": true, 412 - "license": "MIT", 413 - "optional": true, 414 - "os": [ 415 - "darwin" 416 - ], 417 - "engines": { 418 - "node": ">=18" 419 - } 420 - }, 421 - "node_modules/@esbuild/freebsd-arm64": { 422 - "version": "0.27.3", 423 - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.3.tgz", 424 - "integrity": "sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==", 425 - "cpu": [ 426 - "arm64" 427 - ], 428 - "dev": true, 429 - "license": "MIT", 430 - "optional": true, 431 - "os": [ 432 - "freebsd" 433 - ], 434 - "engines": { 435 - "node": ">=18" 436 - } 437 - }, 438 - "node_modules/@esbuild/freebsd-x64": { 439 - "version": "0.27.3", 440 - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.3.tgz", 441 - "integrity": "sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==", 442 - "cpu": [ 443 - "x64" 444 - ], 445 - "dev": true, 446 - "license": "MIT", 447 - "optional": true, 448 - "os": [ 449 - "freebsd" 450 - ], 451 - "engines": { 452 - "node": ">=18" 453 - } 454 - }, 455 - "node_modules/@esbuild/linux-arm": { 456 - "version": "0.27.3", 457 - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.3.tgz", 458 - "integrity": "sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==", 459 - "cpu": [ 460 - "arm" 461 - ], 462 - "dev": true, 463 - "license": "MIT", 464 - "optional": true, 465 - "os": [ 466 - "linux" 467 - ], 468 - "engines": { 469 - "node": ">=18" 470 - } 471 - }, 472 - "node_modules/@esbuild/linux-arm64": { 473 - "version": "0.27.3", 474 - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.3.tgz", 475 - "integrity": "sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==", 476 - "cpu": [ 477 - "arm64" 478 - ], 479 - "dev": true, 480 - "license": "MIT", 481 - "optional": true, 482 - "os": [ 483 - "linux" 484 - ], 485 - "engines": { 486 - "node": ">=18" 487 - } 488 - }, 489 - "node_modules/@esbuild/linux-ia32": { 490 - "version": "0.27.3", 491 - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.3.tgz", 492 - "integrity": "sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==", 493 - "cpu": [ 494 - "ia32" 495 - ], 496 - "dev": true, 497 - "license": "MIT", 498 - "optional": true, 499 - "os": [ 500 - "linux" 501 - ], 502 - "engines": { 503 - "node": ">=18" 504 - } 505 - }, 506 - "node_modules/@esbuild/linux-loong64": { 507 - "version": "0.27.3", 508 - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.3.tgz", 509 - "integrity": "sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==", 510 - "cpu": [ 511 - "loong64" 512 - ], 513 - "dev": true, 514 - "license": "MIT", 515 - "optional": true, 516 - "os": [ 517 - "linux" 518 - ], 519 - "engines": { 520 - "node": ">=18" 521 - } 522 - }, 523 - "node_modules/@esbuild/linux-mips64el": { 524 - "version": "0.27.3", 525 - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.3.tgz", 526 - "integrity": "sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==", 527 - "cpu": [ 528 - "mips64el" 529 - ], 530 - "dev": true, 531 - "license": "MIT", 532 - "optional": true, 533 - "os": [ 534 - "linux" 535 - ], 536 - "engines": { 537 - "node": ">=18" 538 - } 539 - }, 540 - "node_modules/@esbuild/linux-ppc64": { 541 - "version": "0.27.3", 542 - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.3.tgz", 543 - "integrity": "sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==", 544 - "cpu": [ 545 - "ppc64" 546 - ], 547 - "dev": true, 548 - "license": "MIT", 549 - "optional": true, 550 - "os": [ 551 - "linux" 552 - ], 553 - "engines": { 554 - "node": ">=18" 555 - } 556 - }, 557 - "node_modules/@esbuild/linux-riscv64": { 558 - "version": "0.27.3", 559 - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.3.tgz", 560 - "integrity": "sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==", 561 - "cpu": [ 562 - "riscv64" 563 - ], 564 - "dev": true, 565 - "license": "MIT", 566 - "optional": true, 567 - "os": [ 568 - "linux" 569 - ], 570 - "engines": { 571 - "node": ">=18" 572 - } 573 - }, 574 - "node_modules/@esbuild/linux-s390x": { 575 - "version": "0.27.3", 576 - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.3.tgz", 577 - "integrity": "sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==", 578 - "cpu": [ 579 - "s390x" 580 - ], 581 - "dev": true, 582 - "license": "MIT", 583 - "optional": true, 584 - "os": [ 585 - "linux" 586 - ], 587 - "engines": { 588 - "node": ">=18" 589 - } 590 - }, 591 - "node_modules/@esbuild/linux-x64": { 592 - "version": "0.27.3", 593 - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.3.tgz", 594 - "integrity": "sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==", 595 - "cpu": [ 596 - "x64" 597 - ], 598 - "dev": true, 599 - "license": "MIT", 600 - "optional": true, 601 - "os": [ 602 - "linux" 603 - ], 604 - "engines": { 605 - "node": ">=18" 606 - } 607 - }, 608 - "node_modules/@esbuild/netbsd-arm64": { 609 - "version": "0.27.3", 610 - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.3.tgz", 611 - "integrity": "sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==", 612 - "cpu": [ 613 - "arm64" 614 - ], 615 - "dev": true, 616 - "license": "MIT", 617 - "optional": true, 618 - "os": [ 619 - "netbsd" 620 - ], 621 - "engines": { 622 - "node": ">=18" 623 - } 624 - }, 625 - "node_modules/@esbuild/netbsd-x64": { 626 - "version": "0.27.3", 627 - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.3.tgz", 628 - "integrity": "sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==", 629 - "cpu": [ 630 - "x64" 631 - ], 632 - "dev": true, 633 - "license": "MIT", 634 - "optional": true, 635 - "os": [ 636 - "netbsd" 637 - ], 638 - "engines": { 639 - "node": ">=18" 640 - } 641 - }, 642 - "node_modules/@esbuild/openbsd-arm64": { 643 - "version": "0.27.3", 644 - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.3.tgz", 645 - "integrity": "sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==", 646 - "cpu": [ 647 - "arm64" 648 - ], 649 - "dev": true, 650 - "license": "MIT", 651 - "optional": true, 652 - "os": [ 653 - "openbsd" 654 - ], 655 - "engines": { 656 - "node": ">=18" 657 - } 658 - }, 659 - "node_modules/@esbuild/openbsd-x64": { 660 - "version": "0.27.3", 661 - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.3.tgz", 662 - "integrity": "sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==", 663 - "cpu": [ 664 - "x64" 665 - ], 666 - "dev": true, 667 - "license": "MIT", 668 - "optional": true, 669 - "os": [ 670 - "openbsd" 671 - ], 672 - "engines": { 673 - "node": ">=18" 674 - } 675 - }, 676 - "node_modules/@esbuild/openharmony-arm64": { 677 - "version": "0.27.3", 678 - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.3.tgz", 679 - "integrity": "sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==", 680 - "cpu": [ 681 - "arm64" 682 - ], 683 - "dev": true, 684 - "license": "MIT", 685 - "optional": true, 686 - "os": [ 687 - "openharmony" 688 - ], 689 - "engines": { 690 - "node": ">=18" 691 - } 692 - }, 693 - "node_modules/@esbuild/sunos-x64": { 694 - "version": "0.27.3", 695 - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.3.tgz", 696 - "integrity": "sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==", 697 - "cpu": [ 698 - "x64" 699 - ], 700 - "dev": true, 701 - "license": "MIT", 702 - "optional": true, 703 - "os": [ 704 - "sunos" 705 - ], 706 - "engines": { 707 - "node": ">=18" 708 - } 709 - }, 710 - "node_modules/@esbuild/win32-arm64": { 711 - "version": "0.27.3", 712 - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.3.tgz", 713 - "integrity": "sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==", 714 - "cpu": [ 715 - "arm64" 716 - ], 717 - "dev": true, 718 - "license": "MIT", 719 - "optional": true, 720 - "os": [ 721 - "win32" 722 - ], 723 - "engines": { 724 - "node": ">=18" 725 - } 726 - }, 727 - "node_modules/@esbuild/win32-ia32": { 728 - "version": "0.27.3", 729 - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.3.tgz", 730 - "integrity": "sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==", 731 - "cpu": [ 732 - "ia32" 733 - ], 734 - "dev": true, 735 - "license": "MIT", 736 - "optional": true, 737 - "os": [ 738 - "win32" 739 - ], 740 - "engines": { 741 - "node": ">=18" 742 - } 743 - }, 744 - "node_modules/@esbuild/win32-x64": { 745 - "version": "0.27.3", 746 - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.3.tgz", 747 - "integrity": "sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==", 748 - "cpu": [ 749 - "x64" 750 - ], 751 - "dev": true, 752 - "license": "MIT", 753 - "optional": true, 754 - "os": [ 755 - "win32" 756 - ], 757 - "engines": { 758 - "node": ">=18" 759 - } 760 - }, 761 - "node_modules/@eslint-community/eslint-utils": { 762 - "version": "4.9.1", 763 - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", 764 - "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", 765 - "dev": true, 766 - "license": "MIT", 767 - "dependencies": { 768 - "eslint-visitor-keys": "^3.4.3" 769 - }, 770 - "engines": { 771 - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 772 - }, 773 - "funding": { 774 - "url": "https://opencollective.com/eslint" 775 - }, 776 - "peerDependencies": { 777 - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" 778 - } 779 - }, 780 - "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { 781 - "version": "3.4.3", 782 - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", 783 - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", 784 - "dev": true, 785 - "license": "Apache-2.0", 786 - "engines": { 787 - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 788 - }, 789 - "funding": { 790 - "url": "https://opencollective.com/eslint" 791 - } 792 - }, 793 - "node_modules/@eslint-community/regexpp": { 794 - "version": "4.12.2", 795 - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", 796 - "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", 797 - "dev": true, 798 - "license": "MIT", 799 - "engines": { 800 - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" 801 - } 802 - }, 803 - "node_modules/@eslint/config-array": { 804 - "version": "0.21.1", 805 - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz", 806 - "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", 807 - "dev": true, 808 - "license": "Apache-2.0", 809 - "dependencies": { 810 - "@eslint/object-schema": "^2.1.7", 811 - "debug": "^4.3.1", 812 - "minimatch": "^3.1.2" 813 - }, 814 - "engines": { 815 - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 816 - } 817 - }, 818 - "node_modules/@eslint/config-helpers": { 819 - "version": "0.4.2", 820 - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", 821 - "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", 822 - "dev": true, 823 - "license": "Apache-2.0", 824 - "dependencies": { 825 - "@eslint/core": "^0.17.0" 826 - }, 827 - "engines": { 828 - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 829 - } 830 - }, 831 - "node_modules/@eslint/core": { 832 - "version": "0.17.0", 833 - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", 834 - "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", 835 - "dev": true, 836 - "license": "Apache-2.0", 837 - "dependencies": { 838 - "@types/json-schema": "^7.0.15" 839 - }, 840 - "engines": { 841 - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 842 - } 843 - }, 844 - "node_modules/@eslint/eslintrc": { 845 - "version": "3.3.3", 846 - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.3.tgz", 847 - "integrity": "sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==", 848 - "dev": true, 849 - "license": "MIT", 850 - "dependencies": { 851 - "ajv": "^6.12.4", 852 - "debug": "^4.3.2", 853 - "espree": "^10.0.1", 854 - "globals": "^14.0.0", 855 - "ignore": "^5.2.0", 856 - "import-fresh": "^3.2.1", 857 - "js-yaml": "^4.1.1", 858 - "minimatch": "^3.1.2", 859 - "strip-json-comments": "^3.1.1" 860 - }, 861 - "engines": { 862 - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 863 - }, 864 - "funding": { 865 - "url": "https://opencollective.com/eslint" 866 - } 867 - }, 868 - "node_modules/@eslint/eslintrc/node_modules/globals": { 869 - "version": "14.0.0", 870 - "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", 871 - "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", 872 - "dev": true, 873 - "license": "MIT", 874 - "engines": { 875 - "node": ">=18" 876 - }, 877 - "funding": { 878 - "url": "https://github.com/sponsors/sindresorhus" 879 - } 880 - }, 881 - "node_modules/@eslint/js": { 882 - "version": "9.39.2", 883 - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.2.tgz", 884 - "integrity": "sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==", 885 - "dev": true, 886 - "license": "MIT", 887 - "engines": { 888 - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 889 - }, 890 - "funding": { 891 - "url": "https://eslint.org/donate" 892 - } 893 - }, 894 - "node_modules/@eslint/object-schema": { 895 - "version": "2.1.7", 896 - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", 897 - "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", 898 - "dev": true, 899 - "license": "Apache-2.0", 900 - "engines": { 901 - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 902 - } 903 - }, 904 - "node_modules/@eslint/plugin-kit": { 905 - "version": "0.4.1", 906 - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", 907 - "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", 908 - "dev": true, 909 - "license": "Apache-2.0", 910 - "dependencies": { 911 - "@eslint/core": "^0.17.0", 912 - "levn": "^0.4.1" 913 - }, 914 - "engines": { 915 - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 916 - } 917 - }, 918 - "node_modules/@humanfs/core": { 919 - "version": "0.19.1", 920 - "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", 921 - "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", 922 - "dev": true, 923 - "license": "Apache-2.0", 924 - "engines": { 925 - "node": ">=18.18.0" 926 - } 927 - }, 928 - "node_modules/@humanfs/node": { 929 - "version": "0.16.7", 930 - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", 931 - "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", 932 - "dev": true, 933 - "license": "Apache-2.0", 934 - "dependencies": { 935 - "@humanfs/core": "^0.19.1", 936 - "@humanwhocodes/retry": "^0.4.0" 937 - }, 938 - "engines": { 939 - "node": ">=18.18.0" 940 - } 941 - }, 942 - "node_modules/@humanwhocodes/module-importer": { 943 - "version": "1.0.1", 944 - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", 945 - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", 946 - "dev": true, 947 - "license": "Apache-2.0", 948 - "engines": { 949 - "node": ">=12.22" 950 - }, 951 - "funding": { 952 - "type": "github", 953 - "url": "https://github.com/sponsors/nzakas" 954 - } 955 - }, 956 - "node_modules/@humanwhocodes/retry": { 957 - "version": "0.4.3", 958 - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", 959 - "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", 960 - "dev": true, 961 - "license": "Apache-2.0", 962 - "engines": { 963 - "node": ">=18.18" 964 - }, 965 - "funding": { 966 - "type": "github", 967 - "url": "https://github.com/sponsors/nzakas" 968 - } 969 - }, 970 - "node_modules/@jridgewell/gen-mapping": { 971 - "version": "0.3.13", 972 - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", 973 - "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", 974 - "dev": true, 975 - "license": "MIT", 976 - "dependencies": { 977 - "@jridgewell/sourcemap-codec": "^1.5.0", 978 - "@jridgewell/trace-mapping": "^0.3.24" 979 - } 980 - }, 981 - "node_modules/@jridgewell/remapping": { 982 - "version": "2.3.5", 983 - "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", 984 - "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", 985 - "dev": true, 986 - "license": "MIT", 987 - "dependencies": { 988 - "@jridgewell/gen-mapping": "^0.3.5", 989 - "@jridgewell/trace-mapping": "^0.3.24" 990 - } 991 - }, 992 - "node_modules/@jridgewell/resolve-uri": { 993 - "version": "3.1.2", 994 - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", 995 - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", 996 - "dev": true, 997 - "license": "MIT", 998 - "engines": { 999 - "node": ">=6.0.0" 1000 - } 1001 - }, 1002 - "node_modules/@jridgewell/sourcemap-codec": { 1003 - "version": "1.5.5", 1004 - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", 1005 - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", 1006 - "dev": true, 1007 - "license": "MIT" 1008 - }, 1009 - "node_modules/@jridgewell/trace-mapping": { 1010 - "version": "0.3.31", 1011 - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", 1012 - "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", 1013 - "dev": true, 1014 - "license": "MIT", 1015 - "dependencies": { 1016 - "@jridgewell/resolve-uri": "^3.1.0", 1017 - "@jridgewell/sourcemap-codec": "^1.4.14" 1018 - } 1019 - }, 1020 - "node_modules/@rolldown/pluginutils": { 1021 - "version": "1.0.0-rc.3", 1022 - "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.3.tgz", 1023 - "integrity": "sha512-eybk3TjzzzV97Dlj5c+XrBFW57eTNhzod66y9HrBlzJ6NsCrWCp/2kaPS3K9wJmurBC0Tdw4yPjXKZqlznim3Q==", 1024 - "dev": true, 1025 - "license": "MIT" 1026 - }, 1027 - "node_modules/@rollup/rollup-android-arm-eabi": { 1028 - "version": "4.57.1", 1029 - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.57.1.tgz", 1030 - "integrity": "sha512-A6ehUVSiSaaliTxai040ZpZ2zTevHYbvu/lDoeAteHI8QnaosIzm4qwtezfRg1jOYaUmnzLX1AOD6Z+UJjtifg==", 1031 - "cpu": [ 1032 - "arm" 1033 - ], 1034 - "dev": true, 1035 - "license": "MIT", 1036 - "optional": true, 1037 - "os": [ 1038 - "android" 1039 - ] 1040 - }, 1041 - "node_modules/@rollup/rollup-android-arm64": { 1042 - "version": "4.57.1", 1043 - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.57.1.tgz", 1044 - "integrity": "sha512-dQaAddCY9YgkFHZcFNS/606Exo8vcLHwArFZ7vxXq4rigo2bb494/xKMMwRRQW6ug7Js6yXmBZhSBRuBvCCQ3w==", 1045 - "cpu": [ 1046 - "arm64" 1047 - ], 1048 - "dev": true, 1049 - "license": "MIT", 1050 - "optional": true, 1051 - "os": [ 1052 - "android" 1053 - ] 1054 - }, 1055 - "node_modules/@rollup/rollup-darwin-arm64": { 1056 - "version": "4.57.1", 1057 - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.57.1.tgz", 1058 - "integrity": "sha512-crNPrwJOrRxagUYeMn/DZwqN88SDmwaJ8Cvi/TN1HnWBU7GwknckyosC2gd0IqYRsHDEnXf328o9/HC6OkPgOg==", 1059 - "cpu": [ 1060 - "arm64" 1061 - ], 1062 - "dev": true, 1063 - "license": "MIT", 1064 - "optional": true, 1065 - "os": [ 1066 - "darwin" 1067 - ] 1068 - }, 1069 - "node_modules/@rollup/rollup-darwin-x64": { 1070 - "version": "4.57.1", 1071 - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.57.1.tgz", 1072 - "integrity": "sha512-Ji8g8ChVbKrhFtig5QBV7iMaJrGtpHelkB3lsaKzadFBe58gmjfGXAOfI5FV0lYMH8wiqsxKQ1C9B0YTRXVy4w==", 1073 - "cpu": [ 1074 - "x64" 1075 - ], 1076 - "dev": true, 1077 - "license": "MIT", 1078 - "optional": true, 1079 - "os": [ 1080 - "darwin" 1081 - ] 1082 - }, 1083 - "node_modules/@rollup/rollup-freebsd-arm64": { 1084 - "version": "4.57.1", 1085 - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.57.1.tgz", 1086 - "integrity": "sha512-R+/WwhsjmwodAcz65guCGFRkMb4gKWTcIeLy60JJQbXrJ97BOXHxnkPFrP+YwFlaS0m+uWJTstrUA9o+UchFug==", 1087 - "cpu": [ 1088 - "arm64" 1089 - ], 1090 - "dev": true, 1091 - "license": "MIT", 1092 - "optional": true, 1093 - "os": [ 1094 - "freebsd" 1095 - ] 1096 - }, 1097 - "node_modules/@rollup/rollup-freebsd-x64": { 1098 - "version": "4.57.1", 1099 - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.57.1.tgz", 1100 - "integrity": "sha512-IEQTCHeiTOnAUC3IDQdzRAGj3jOAYNr9kBguI7MQAAZK3caezRrg0GxAb6Hchg4lxdZEI5Oq3iov/w/hnFWY9Q==", 1101 - "cpu": [ 1102 - "x64" 1103 - ], 1104 - "dev": true, 1105 - "license": "MIT", 1106 - "optional": true, 1107 - "os": [ 1108 - "freebsd" 1109 - ] 1110 - }, 1111 - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { 1112 - "version": "4.57.1", 1113 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.57.1.tgz", 1114 - "integrity": "sha512-F8sWbhZ7tyuEfsmOxwc2giKDQzN3+kuBLPwwZGyVkLlKGdV1nvnNwYD0fKQ8+XS6hp9nY7B+ZeK01EBUE7aHaw==", 1115 - "cpu": [ 1116 - "arm" 1117 - ], 1118 - "dev": true, 1119 - "license": "MIT", 1120 - "optional": true, 1121 - "os": [ 1122 - "linux" 1123 - ] 1124 - }, 1125 - "node_modules/@rollup/rollup-linux-arm-musleabihf": { 1126 - "version": "4.57.1", 1127 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.57.1.tgz", 1128 - "integrity": "sha512-rGfNUfn0GIeXtBP1wL5MnzSj98+PZe/AXaGBCRmT0ts80lU5CATYGxXukeTX39XBKsxzFpEeK+Mrp9faXOlmrw==", 1129 - "cpu": [ 1130 - "arm" 1131 - ], 1132 - "dev": true, 1133 - "license": "MIT", 1134 - "optional": true, 1135 - "os": [ 1136 - "linux" 1137 - ] 1138 - }, 1139 - "node_modules/@rollup/rollup-linux-arm64-gnu": { 1140 - "version": "4.57.1", 1141 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.57.1.tgz", 1142 - "integrity": "sha512-MMtej3YHWeg/0klK2Qodf3yrNzz6CGjo2UntLvk2RSPlhzgLvYEB3frRvbEF2wRKh1Z2fDIg9KRPe1fawv7C+g==", 1143 - "cpu": [ 1144 - "arm64" 1145 - ], 1146 - "dev": true, 1147 - "license": "MIT", 1148 - "optional": true, 1149 - "os": [ 1150 - "linux" 1151 - ] 1152 - }, 1153 - "node_modules/@rollup/rollup-linux-arm64-musl": { 1154 - "version": "4.57.1", 1155 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.57.1.tgz", 1156 - "integrity": "sha512-1a/qhaaOXhqXGpMFMET9VqwZakkljWHLmZOX48R0I/YLbhdxr1m4gtG1Hq7++VhVUmf+L3sTAf9op4JlhQ5u1Q==", 1157 - "cpu": [ 1158 - "arm64" 1159 - ], 1160 - "dev": true, 1161 - "license": "MIT", 1162 - "optional": true, 1163 - "os": [ 1164 - "linux" 1165 - ] 1166 - }, 1167 - "node_modules/@rollup/rollup-linux-loong64-gnu": { 1168 - "version": "4.57.1", 1169 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.57.1.tgz", 1170 - "integrity": "sha512-QWO6RQTZ/cqYtJMtxhkRkidoNGXc7ERPbZN7dVW5SdURuLeVU7lwKMpo18XdcmpWYd0qsP1bwKPf7DNSUinhvA==", 1171 - "cpu": [ 1172 - "loong64" 1173 - ], 1174 - "dev": true, 1175 - "license": "MIT", 1176 - "optional": true, 1177 - "os": [ 1178 - "linux" 1179 - ] 1180 - }, 1181 - "node_modules/@rollup/rollup-linux-loong64-musl": { 1182 - "version": "4.57.1", 1183 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.57.1.tgz", 1184 - "integrity": "sha512-xpObYIf+8gprgWaPP32xiN5RVTi/s5FCR+XMXSKmhfoJjrpRAjCuuqQXyxUa/eJTdAE6eJ+KDKaoEqjZQxh3Gw==", 1185 - "cpu": [ 1186 - "loong64" 1187 - ], 1188 - "dev": true, 1189 - "license": "MIT", 1190 - "optional": true, 1191 - "os": [ 1192 - "linux" 1193 - ] 1194 - }, 1195 - "node_modules/@rollup/rollup-linux-ppc64-gnu": { 1196 - "version": "4.57.1", 1197 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.57.1.tgz", 1198 - "integrity": "sha512-4BrCgrpZo4hvzMDKRqEaW1zeecScDCR+2nZ86ATLhAoJ5FQ+lbHVD3ttKe74/c7tNT9c6F2viwB3ufwp01Oh2w==", 1199 - "cpu": [ 1200 - "ppc64" 1201 - ], 1202 - "dev": true, 1203 - "license": "MIT", 1204 - "optional": true, 1205 - "os": [ 1206 - "linux" 1207 - ] 1208 - }, 1209 - "node_modules/@rollup/rollup-linux-ppc64-musl": { 1210 - "version": "4.57.1", 1211 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.57.1.tgz", 1212 - "integrity": "sha512-NOlUuzesGauESAyEYFSe3QTUguL+lvrN1HtwEEsU2rOwdUDeTMJdO5dUYl/2hKf9jWydJrO9OL/XSSf65R5+Xw==", 1213 - "cpu": [ 1214 - "ppc64" 1215 - ], 1216 - "dev": true, 1217 - "license": "MIT", 1218 - "optional": true, 1219 - "os": [ 1220 - "linux" 1221 - ] 1222 - }, 1223 - "node_modules/@rollup/rollup-linux-riscv64-gnu": { 1224 - "version": "4.57.1", 1225 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.57.1.tgz", 1226 - "integrity": "sha512-ptA88htVp0AwUUqhVghwDIKlvJMD/fmL/wrQj99PRHFRAG6Z5nbWoWG4o81Nt9FT+IuqUQi+L31ZKAFeJ5Is+A==", 1227 - "cpu": [ 1228 - "riscv64" 1229 - ], 1230 - "dev": true, 1231 - "license": "MIT", 1232 - "optional": true, 1233 - "os": [ 1234 - "linux" 1235 - ] 1236 - }, 1237 - "node_modules/@rollup/rollup-linux-riscv64-musl": { 1238 - "version": "4.57.1", 1239 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.57.1.tgz", 1240 - "integrity": "sha512-S51t7aMMTNdmAMPpBg7OOsTdn4tySRQvklmL3RpDRyknk87+Sp3xaumlatU+ppQ+5raY7sSTcC2beGgvhENfuw==", 1241 - "cpu": [ 1242 - "riscv64" 1243 - ], 1244 - "dev": true, 1245 - "license": "MIT", 1246 - "optional": true, 1247 - "os": [ 1248 - "linux" 1249 - ] 1250 - }, 1251 - "node_modules/@rollup/rollup-linux-s390x-gnu": { 1252 - "version": "4.57.1", 1253 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.57.1.tgz", 1254 - "integrity": "sha512-Bl00OFnVFkL82FHbEqy3k5CUCKH6OEJL54KCyx2oqsmZnFTR8IoNqBF+mjQVcRCT5sB6yOvK8A37LNm/kPJiZg==", 1255 - "cpu": [ 1256 - "s390x" 1257 - ], 1258 - "dev": true, 1259 - "license": "MIT", 1260 - "optional": true, 1261 - "os": [ 1262 - "linux" 1263 - ] 1264 - }, 1265 - "node_modules/@rollup/rollup-linux-x64-gnu": { 1266 - "version": "4.57.1", 1267 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.57.1.tgz", 1268 - "integrity": "sha512-ABca4ceT4N+Tv/GtotnWAeXZUZuM/9AQyCyKYyKnpk4yoA7QIAuBt6Hkgpw8kActYlew2mvckXkvx0FfoInnLg==", 1269 - "cpu": [ 1270 - "x64" 1271 - ], 1272 - "dev": true, 1273 - "license": "MIT", 1274 - "optional": true, 1275 - "os": [ 1276 - "linux" 1277 - ] 1278 - }, 1279 - "node_modules/@rollup/rollup-linux-x64-musl": { 1280 - "version": "4.57.1", 1281 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.57.1.tgz", 1282 - "integrity": "sha512-HFps0JeGtuOR2convgRRkHCekD7j+gdAuXM+/i6kGzQtFhlCtQkpwtNzkNj6QhCDp7DRJ7+qC/1Vg2jt5iSOFw==", 1283 - "cpu": [ 1284 - "x64" 1285 - ], 1286 - "dev": true, 1287 - "license": "MIT", 1288 - "optional": true, 1289 - "os": [ 1290 - "linux" 1291 - ] 1292 - }, 1293 - "node_modules/@rollup/rollup-openbsd-x64": { 1294 - "version": "4.57.1", 1295 - "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.57.1.tgz", 1296 - "integrity": "sha512-H+hXEv9gdVQuDTgnqD+SQffoWoc0Of59AStSzTEj/feWTBAnSfSD3+Dql1ZruJQxmykT/JVY0dE8Ka7z0DH1hw==", 1297 - "cpu": [ 1298 - "x64" 1299 - ], 1300 - "dev": true, 1301 - "license": "MIT", 1302 - "optional": true, 1303 - "os": [ 1304 - "openbsd" 1305 - ] 1306 - }, 1307 - "node_modules/@rollup/rollup-openharmony-arm64": { 1308 - "version": "4.57.1", 1309 - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.57.1.tgz", 1310 - "integrity": "sha512-4wYoDpNg6o/oPximyc/NG+mYUejZrCU2q+2w6YZqrAs2UcNUChIZXjtafAiiZSUc7On8v5NyNj34Kzj/Ltk6dQ==", 1311 - "cpu": [ 1312 - "arm64" 1313 - ], 1314 - "dev": true, 1315 - "license": "MIT", 1316 - "optional": true, 1317 - "os": [ 1318 - "openharmony" 1319 - ] 1320 - }, 1321 - "node_modules/@rollup/rollup-win32-arm64-msvc": { 1322 - "version": "4.57.1", 1323 - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.57.1.tgz", 1324 - "integrity": "sha512-O54mtsV/6LW3P8qdTcamQmuC990HDfR71lo44oZMZlXU4tzLrbvTii87Ni9opq60ds0YzuAlEr/GNwuNluZyMQ==", 1325 - "cpu": [ 1326 - "arm64" 1327 - ], 1328 - "dev": true, 1329 - "license": "MIT", 1330 - "optional": true, 1331 - "os": [ 1332 - "win32" 1333 - ] 1334 - }, 1335 - "node_modules/@rollup/rollup-win32-ia32-msvc": { 1336 - "version": "4.57.1", 1337 - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.57.1.tgz", 1338 - "integrity": "sha512-P3dLS+IerxCT/7D2q2FYcRdWRl22dNbrbBEtxdWhXrfIMPP9lQhb5h4Du04mdl5Woq05jVCDPCMF7Ub0NAjIew==", 1339 - "cpu": [ 1340 - "ia32" 1341 - ], 1342 - "dev": true, 1343 - "license": "MIT", 1344 - "optional": true, 1345 - "os": [ 1346 - "win32" 1347 - ] 1348 - }, 1349 - "node_modules/@rollup/rollup-win32-x64-gnu": { 1350 - "version": "4.57.1", 1351 - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.57.1.tgz", 1352 - "integrity": "sha512-VMBH2eOOaKGtIJYleXsi2B8CPVADrh+TyNxJ4mWPnKfLB/DBUmzW+5m1xUrcwWoMfSLagIRpjUFeW5CO5hyciQ==", 1353 - "cpu": [ 1354 - "x64" 1355 - ], 1356 - "dev": true, 1357 - "license": "MIT", 1358 - "optional": true, 1359 - "os": [ 1360 - "win32" 1361 - ] 1362 - }, 1363 - "node_modules/@rollup/rollup-win32-x64-msvc": { 1364 - "version": "4.57.1", 1365 - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.57.1.tgz", 1366 - "integrity": "sha512-mxRFDdHIWRxg3UfIIAwCm6NzvxG0jDX/wBN6KsQFTvKFqqg9vTrWUE68qEjHt19A5wwx5X5aUi2zuZT7YR0jrA==", 1367 - "cpu": [ 1368 - "x64" 1369 - ], 1370 - "dev": true, 1371 - "license": "MIT", 1372 - "optional": true, 1373 - "os": [ 1374 - "win32" 1375 - ] 1376 - }, 1377 - "node_modules/@tauri-apps/api": { 1378 - "version": "2.10.1", 1379 - "resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-2.10.1.tgz", 1380 - "integrity": "sha512-hKL/jWf293UDSUN09rR69hrToyIXBb8CjGaWC7gfinvnQrBVvnLr08FeFi38gxtugAVyVcTa5/FD/Xnkb1siBw==", 1381 - "license": "Apache-2.0 OR MIT", 1382 - "funding": { 1383 - "type": "opencollective", 1384 - "url": "https://opencollective.com/tauri" 1385 - } 1386 - }, 1387 - "node_modules/@tauri-apps/plugin-dialog": { 1388 - "version": "2.6.0", 1389 - "resolved": "https://registry.npmjs.org/@tauri-apps/plugin-dialog/-/plugin-dialog-2.6.0.tgz", 1390 - "integrity": "sha512-q4Uq3eY87TdcYzXACiYSPhmpBA76shgmQswGkSVio4C82Sz2W4iehe9TnKYwbq7weHiL88Yw19XZm7v28+Micg==", 1391 - "license": "MIT OR Apache-2.0", 1392 - "dependencies": { 1393 - "@tauri-apps/api": "^2.8.0" 1394 - } 1395 - }, 1396 - "node_modules/@tauri-apps/plugin-geolocation": { 1397 - "version": "2.3.2", 1398 - "resolved": "https://registry.npmjs.org/@tauri-apps/plugin-geolocation/-/plugin-geolocation-2.3.2.tgz", 1399 - "integrity": "sha512-ONCwav1monafjeO8/JdXtRlbhZ3xgAdBYxo/62qgw99u9+y6xGsohy3avZgFZsBHA0JVNe1uJnMi+vfT5ZSFUA==", 1400 - "license": "MIT OR Apache-2.0", 1401 - "dependencies": { 1402 - "@tauri-apps/api": "^2.8.0" 1403 - } 1404 - }, 1405 - "node_modules/@tauri-apps/plugin-log": { 1406 - "version": "2.8.0", 1407 - "resolved": "https://registry.npmjs.org/@tauri-apps/plugin-log/-/plugin-log-2.8.0.tgz", 1408 - "integrity": "sha512-a+7rOq3MJwpTOLLKbL8d0qGZ85hgHw5pNOWusA9o3cf7cEgtYHiGY/+O8fj8MvywQIGqFv0da2bYQDlrqLE7rw==", 1409 - "license": "MIT OR Apache-2.0", 1410 - "dependencies": { 1411 - "@tauri-apps/api": "^2.8.0" 1412 - } 1413 - }, 1414 - "node_modules/@tauri-apps/plugin-notification": { 1415 - "version": "2.3.3", 1416 - "resolved": "https://registry.npmjs.org/@tauri-apps/plugin-notification/-/plugin-notification-2.3.3.tgz", 1417 - "integrity": "sha512-Zw+ZH18RJb41G4NrfHgIuofJiymusqN+q8fGUIIV7vyCH+5sSn5coqRv/MWB9qETsUs97vmU045q7OyseCV3Qg==", 1418 - "license": "MIT OR Apache-2.0", 1419 - "dependencies": { 1420 - "@tauri-apps/api": "^2.8.0" 1421 - } 1422 - }, 1423 - "node_modules/@tauri-apps/plugin-opener": { 1424 - "version": "2.5.3", 1425 - "resolved": "https://registry.npmjs.org/@tauri-apps/plugin-opener/-/plugin-opener-2.5.3.tgz", 1426 - "integrity": "sha512-CCcUltXMOfUEArbf3db3kCE7Ggy1ExBEBl51Ko2ODJ6GDYHRp1nSNlQm5uNCFY5k7/ufaK5Ib3Du/Zir19IYQQ==", 1427 - "license": "MIT OR Apache-2.0", 1428 - "dependencies": { 1429 - "@tauri-apps/api": "^2.8.0" 1430 - } 1431 - }, 1432 - "node_modules/@types/babel__core": { 1433 - "version": "7.20.5", 1434 - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", 1435 - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", 1436 - "dev": true, 1437 - "license": "MIT", 1438 - "dependencies": { 1439 - "@babel/parser": "^7.20.7", 1440 - "@babel/types": "^7.20.7", 1441 - "@types/babel__generator": "*", 1442 - "@types/babel__template": "*", 1443 - "@types/babel__traverse": "*" 1444 - } 1445 - }, 1446 - "node_modules/@types/babel__generator": { 1447 - "version": "7.27.0", 1448 - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", 1449 - "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", 1450 - "dev": true, 1451 - "license": "MIT", 1452 - "dependencies": { 1453 - "@babel/types": "^7.0.0" 1454 - } 1455 - }, 1456 - "node_modules/@types/babel__template": { 1457 - "version": "7.4.4", 1458 - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", 1459 - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", 1460 - "dev": true, 1461 - "license": "MIT", 1462 - "dependencies": { 1463 - "@babel/parser": "^7.1.0", 1464 - "@babel/types": "^7.0.0" 1465 - } 1466 - }, 1467 - "node_modules/@types/babel__traverse": { 1468 - "version": "7.28.0", 1469 - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", 1470 - "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", 1471 - "dev": true, 1472 - "license": "MIT", 1473 - "dependencies": { 1474 - "@babel/types": "^7.28.2" 1475 - } 1476 - }, 1477 - "node_modules/@types/estree": { 1478 - "version": "1.0.8", 1479 - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", 1480 - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", 1481 - "dev": true, 1482 - "license": "MIT" 1483 - }, 1484 - "node_modules/@types/json-schema": { 1485 - "version": "7.0.15", 1486 - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", 1487 - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", 1488 - "dev": true, 1489 - "license": "MIT" 1490 - }, 1491 - "node_modules/@types/node": { 1492 - "version": "25.2.3", 1493 - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", 1494 - "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", 1495 - "dev": true, 1496 - "license": "MIT", 1497 - "dependencies": { 1498 - "undici-types": "~7.16.0" 1499 - } 1500 - }, 1501 - "node_modules/@types/react": { 1502 - "version": "19.2.14", 1503 - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz", 1504 - "integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==", 1505 - "dev": true, 1506 - "license": "MIT", 1507 - "dependencies": { 1508 - "csstype": "^3.2.2" 1509 - } 1510 - }, 1511 - "node_modules/@types/react-dom": { 1512 - "version": "19.2.3", 1513 - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz", 1514 - "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", 1515 - "dev": true, 1516 - "license": "MIT", 1517 - "peerDependencies": { 1518 - "@types/react": "^19.2.0" 1519 - } 1520 - }, 1521 - "node_modules/@typescript-eslint/eslint-plugin": { 1522 - "version": "8.56.0", 1523 - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.56.0.tgz", 1524 - "integrity": "sha512-lRyPDLzNCuae71A3t9NEINBiTn7swyOhvUj3MyUOxb8x6g6vPEFoOU+ZRmGMusNC3X3YMhqMIX7i8ShqhT74Pw==", 1525 - "dev": true, 1526 - "license": "MIT", 1527 - "dependencies": { 1528 - "@eslint-community/regexpp": "^4.12.2", 1529 - "@typescript-eslint/scope-manager": "8.56.0", 1530 - "@typescript-eslint/type-utils": "8.56.0", 1531 - "@typescript-eslint/utils": "8.56.0", 1532 - "@typescript-eslint/visitor-keys": "8.56.0", 1533 - "ignore": "^7.0.5", 1534 - "natural-compare": "^1.4.0", 1535 - "ts-api-utils": "^2.4.0" 1536 - }, 1537 - "engines": { 1538 - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1539 - }, 1540 - "funding": { 1541 - "type": "opencollective", 1542 - "url": "https://opencollective.com/typescript-eslint" 1543 - }, 1544 - "peerDependencies": { 1545 - "@typescript-eslint/parser": "^8.56.0", 1546 - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", 1547 - "typescript": ">=4.8.4 <6.0.0" 1548 - } 1549 - }, 1550 - "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { 1551 - "version": "7.0.5", 1552 - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", 1553 - "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", 1554 - "dev": true, 1555 - "license": "MIT", 1556 - "engines": { 1557 - "node": ">= 4" 1558 - } 1559 - }, 1560 - "node_modules/@typescript-eslint/parser": { 1561 - "version": "8.56.0", 1562 - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.56.0.tgz", 1563 - "integrity": "sha512-IgSWvLobTDOjnaxAfDTIHaECbkNlAlKv2j5SjpB2v7QHKv1FIfjwMy8FsDbVfDX/KjmCmYICcw7uGaXLhtsLNg==", 1564 - "dev": true, 1565 - "license": "MIT", 1566 - "dependencies": { 1567 - "@typescript-eslint/scope-manager": "8.56.0", 1568 - "@typescript-eslint/types": "8.56.0", 1569 - "@typescript-eslint/typescript-estree": "8.56.0", 1570 - "@typescript-eslint/visitor-keys": "8.56.0", 1571 - "debug": "^4.4.3" 1572 - }, 1573 - "engines": { 1574 - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1575 - }, 1576 - "funding": { 1577 - "type": "opencollective", 1578 - "url": "https://opencollective.com/typescript-eslint" 1579 - }, 1580 - "peerDependencies": { 1581 - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", 1582 - "typescript": ">=4.8.4 <6.0.0" 1583 - } 1584 - }, 1585 - "node_modules/@typescript-eslint/project-service": { 1586 - "version": "8.56.0", 1587 - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.56.0.tgz", 1588 - "integrity": "sha512-M3rnyL1vIQOMeWxTWIW096/TtVP+8W3p/XnaFflhmcFp+U4zlxUxWj4XwNs6HbDeTtN4yun0GNTTDBw/SvufKg==", 1589 - "dev": true, 1590 - "license": "MIT", 1591 - "dependencies": { 1592 - "@typescript-eslint/tsconfig-utils": "^8.56.0", 1593 - "@typescript-eslint/types": "^8.56.0", 1594 - "debug": "^4.4.3" 1595 - }, 1596 - "engines": { 1597 - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1598 - }, 1599 - "funding": { 1600 - "type": "opencollective", 1601 - "url": "https://opencollective.com/typescript-eslint" 1602 - }, 1603 - "peerDependencies": { 1604 - "typescript": ">=4.8.4 <6.0.0" 1605 - } 1606 - }, 1607 - "node_modules/@typescript-eslint/scope-manager": { 1608 - "version": "8.56.0", 1609 - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.56.0.tgz", 1610 - "integrity": "sha512-7UiO/XwMHquH+ZzfVCfUNkIXlp/yQjjnlYUyYz7pfvlK3/EyyN6BK+emDmGNyQLBtLGaYrTAI6KOw8tFucWL2w==", 1611 - "dev": true, 1612 - "license": "MIT", 1613 - "dependencies": { 1614 - "@typescript-eslint/types": "8.56.0", 1615 - "@typescript-eslint/visitor-keys": "8.56.0" 1616 - }, 1617 - "engines": { 1618 - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1619 - }, 1620 - "funding": { 1621 - "type": "opencollective", 1622 - "url": "https://opencollective.com/typescript-eslint" 1623 - } 1624 - }, 1625 - "node_modules/@typescript-eslint/tsconfig-utils": { 1626 - "version": "8.56.0", 1627 - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.56.0.tgz", 1628 - "integrity": "sha512-bSJoIIt4o3lKXD3xmDh9chZcjCz5Lk8xS7Rxn+6l5/pKrDpkCwtQNQQwZ2qRPk7TkUYhrq3WPIHXOXlbXP0itg==", 1629 - "dev": true, 1630 - "license": "MIT", 1631 - "engines": { 1632 - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1633 - }, 1634 - "funding": { 1635 - "type": "opencollective", 1636 - "url": "https://opencollective.com/typescript-eslint" 1637 - }, 1638 - "peerDependencies": { 1639 - "typescript": ">=4.8.4 <6.0.0" 1640 - } 1641 - }, 1642 - "node_modules/@typescript-eslint/type-utils": { 1643 - "version": "8.56.0", 1644 - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.56.0.tgz", 1645 - "integrity": "sha512-qX2L3HWOU2nuDs6GzglBeuFXviDODreS58tLY/BALPC7iu3Fa+J7EOTwnX9PdNBxUI7Uh0ntP0YWGnxCkXzmfA==", 1646 - "dev": true, 1647 - "license": "MIT", 1648 - "dependencies": { 1649 - "@typescript-eslint/types": "8.56.0", 1650 - "@typescript-eslint/typescript-estree": "8.56.0", 1651 - "@typescript-eslint/utils": "8.56.0", 1652 - "debug": "^4.4.3", 1653 - "ts-api-utils": "^2.4.0" 1654 - }, 1655 - "engines": { 1656 - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1657 - }, 1658 - "funding": { 1659 - "type": "opencollective", 1660 - "url": "https://opencollective.com/typescript-eslint" 1661 - }, 1662 - "peerDependencies": { 1663 - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", 1664 - "typescript": ">=4.8.4 <6.0.0" 1665 - } 1666 - }, 1667 - "node_modules/@typescript-eslint/types": { 1668 - "version": "8.56.0", 1669 - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.56.0.tgz", 1670 - "integrity": "sha512-DBsLPs3GsWhX5HylbP9HNG15U0bnwut55Lx12bHB9MpXxQ+R5GC8MwQe+N1UFXxAeQDvEsEDY6ZYwX03K7Z6HQ==", 1671 - "dev": true, 1672 - "license": "MIT", 1673 - "engines": { 1674 - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1675 - }, 1676 - "funding": { 1677 - "type": "opencollective", 1678 - "url": "https://opencollective.com/typescript-eslint" 1679 - } 1680 - }, 1681 - "node_modules/@typescript-eslint/typescript-estree": { 1682 - "version": "8.56.0", 1683 - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.56.0.tgz", 1684 - "integrity": "sha512-ex1nTUMWrseMltXUHmR2GAQ4d+WjkZCT4f+4bVsps8QEdh0vlBsaCokKTPlnqBFqqGaxilDNJG7b8dolW2m43Q==", 1685 - "dev": true, 1686 - "license": "MIT", 1687 - "dependencies": { 1688 - "@typescript-eslint/project-service": "8.56.0", 1689 - "@typescript-eslint/tsconfig-utils": "8.56.0", 1690 - "@typescript-eslint/types": "8.56.0", 1691 - "@typescript-eslint/visitor-keys": "8.56.0", 1692 - "debug": "^4.4.3", 1693 - "minimatch": "^9.0.5", 1694 - "semver": "^7.7.3", 1695 - "tinyglobby": "^0.2.15", 1696 - "ts-api-utils": "^2.4.0" 1697 - }, 1698 - "engines": { 1699 - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1700 - }, 1701 - "funding": { 1702 - "type": "opencollective", 1703 - "url": "https://opencollective.com/typescript-eslint" 1704 - }, 1705 - "peerDependencies": { 1706 - "typescript": ">=4.8.4 <6.0.0" 1707 - } 1708 - }, 1709 - "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { 1710 - "version": "2.0.2", 1711 - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", 1712 - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", 1713 - "dev": true, 1714 - "license": "MIT", 1715 - "dependencies": { 1716 - "balanced-match": "^1.0.0" 1717 - } 1718 - }, 1719 - "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { 1720 - "version": "9.0.5", 1721 - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", 1722 - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", 1723 - "dev": true, 1724 - "license": "ISC", 1725 - "dependencies": { 1726 - "brace-expansion": "^2.0.1" 1727 - }, 1728 - "engines": { 1729 - "node": ">=16 || 14 >=14.17" 1730 - }, 1731 - "funding": { 1732 - "url": "https://github.com/sponsors/isaacs" 1733 - } 1734 - }, 1735 - "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { 1736 - "version": "7.7.4", 1737 - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", 1738 - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", 1739 - "dev": true, 1740 - "license": "ISC", 1741 - "bin": { 1742 - "semver": "bin/semver.js" 1743 - }, 1744 - "engines": { 1745 - "node": ">=10" 1746 - } 1747 - }, 1748 - "node_modules/@typescript-eslint/utils": { 1749 - "version": "8.56.0", 1750 - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.56.0.tgz", 1751 - "integrity": "sha512-RZ3Qsmi2nFGsS+n+kjLAYDPVlrzf7UhTffrDIKr+h2yzAlYP/y5ZulU0yeDEPItos2Ph46JAL5P/On3pe7kDIQ==", 1752 - "dev": true, 1753 - "license": "MIT", 1754 - "dependencies": { 1755 - "@eslint-community/eslint-utils": "^4.9.1", 1756 - "@typescript-eslint/scope-manager": "8.56.0", 1757 - "@typescript-eslint/types": "8.56.0", 1758 - "@typescript-eslint/typescript-estree": "8.56.0" 1759 - }, 1760 - "engines": { 1761 - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1762 - }, 1763 - "funding": { 1764 - "type": "opencollective", 1765 - "url": "https://opencollective.com/typescript-eslint" 1766 - }, 1767 - "peerDependencies": { 1768 - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", 1769 - "typescript": ">=4.8.4 <6.0.0" 1770 - } 1771 - }, 1772 - "node_modules/@typescript-eslint/visitor-keys": { 1773 - "version": "8.56.0", 1774 - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.56.0.tgz", 1775 - "integrity": "sha512-q+SL+b+05Ud6LbEE35qe4A99P+htKTKVbyiNEe45eCbJFyh/HVK9QXwlrbz+Q4L8SOW4roxSVwXYj4DMBT7Ieg==", 1776 - "dev": true, 1777 - "license": "MIT", 1778 - "dependencies": { 1779 - "@typescript-eslint/types": "8.56.0", 1780 - "eslint-visitor-keys": "^5.0.0" 1781 - }, 1782 - "engines": { 1783 - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1784 - }, 1785 - "funding": { 1786 - "type": "opencollective", 1787 - "url": "https://opencollective.com/typescript-eslint" 1788 - } 1789 - }, 1790 - "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { 1791 - "version": "5.0.0", 1792 - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.0.tgz", 1793 - "integrity": "sha512-A0XeIi7CXU7nPlfHS9loMYEKxUaONu/hTEzHTGba9Huu94Cq1hPivf+DE5erJozZOky0LfvXAyrV/tcswpLI0Q==", 1794 - "dev": true, 1795 - "license": "Apache-2.0", 1796 - "engines": { 1797 - "node": "^20.19.0 || ^22.13.0 || >=24" 1798 - }, 1799 - "funding": { 1800 - "url": "https://opencollective.com/eslint" 1801 - } 1802 - }, 1803 - "node_modules/@vitejs/plugin-react": { 1804 - "version": "5.1.4", 1805 - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-5.1.4.tgz", 1806 - "integrity": "sha512-VIcFLdRi/VYRU8OL/puL7QXMYafHmqOnwTZY50U1JPlCNj30PxCMx65c494b1K9be9hX83KVt0+gTEwTWLqToA==", 1807 - "dev": true, 1808 - "license": "MIT", 1809 - "dependencies": { 1810 - "@babel/core": "^7.29.0", 1811 - "@babel/plugin-transform-react-jsx-self": "^7.27.1", 1812 - "@babel/plugin-transform-react-jsx-source": "^7.27.1", 1813 - "@rolldown/pluginutils": "1.0.0-rc.3", 1814 - "@types/babel__core": "^7.20.5", 1815 - "react-refresh": "^0.18.0" 1816 - }, 1817 - "engines": { 1818 - "node": "^20.19.0 || >=22.12.0" 1819 - }, 1820 - "peerDependencies": { 1821 - "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" 1822 - } 1823 - }, 1824 - "node_modules/acorn": { 1825 - "version": "8.15.0", 1826 - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", 1827 - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", 1828 - "dev": true, 1829 - "license": "MIT", 1830 - "bin": { 1831 - "acorn": "bin/acorn" 1832 - }, 1833 - "engines": { 1834 - "node": ">=0.4.0" 1835 - } 1836 - }, 1837 - "node_modules/acorn-jsx": { 1838 - "version": "5.3.2", 1839 - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", 1840 - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", 1841 - "dev": true, 1842 - "license": "MIT", 1843 - "peerDependencies": { 1844 - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" 1845 - } 1846 - }, 1847 - "node_modules/ajv": { 1848 - "version": "6.12.6", 1849 - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 1850 - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 1851 - "dev": true, 1852 - "license": "MIT", 1853 - "dependencies": { 1854 - "fast-deep-equal": "^3.1.1", 1855 - "fast-json-stable-stringify": "^2.0.0", 1856 - "json-schema-traverse": "^0.4.1", 1857 - "uri-js": "^4.2.2" 1858 - }, 1859 - "funding": { 1860 - "type": "github", 1861 - "url": "https://github.com/sponsors/epoberezkin" 1862 - } 1863 - }, 1864 - "node_modules/ansi-styles": { 1865 - "version": "4.3.0", 1866 - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 1867 - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 1868 - "dev": true, 1869 - "license": "MIT", 1870 - "dependencies": { 1871 - "color-convert": "^2.0.1" 1872 - }, 1873 - "engines": { 1874 - "node": ">=8" 1875 - }, 1876 - "funding": { 1877 - "url": "https://github.com/chalk/ansi-styles?sponsor=1" 1878 - } 1879 - }, 1880 - "node_modules/argparse": { 1881 - "version": "2.0.1", 1882 - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 1883 - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 1884 - "dev": true, 1885 - "license": "Python-2.0" 1886 - }, 1887 - "node_modules/array-buffer-byte-length": { 1888 - "version": "1.0.2", 1889 - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", 1890 - "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", 1891 - "dev": true, 1892 - "license": "MIT", 1893 - "dependencies": { 1894 - "call-bound": "^1.0.3", 1895 - "is-array-buffer": "^3.0.5" 1896 - }, 1897 - "engines": { 1898 - "node": ">= 0.4" 1899 - }, 1900 - "funding": { 1901 - "url": "https://github.com/sponsors/ljharb" 1902 - } 1903 - }, 1904 - "node_modules/array-includes": { 1905 - "version": "3.1.9", 1906 - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", 1907 - "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", 1908 - "dev": true, 1909 - "license": "MIT", 1910 - "dependencies": { 1911 - "call-bind": "^1.0.8", 1912 - "call-bound": "^1.0.4", 1913 - "define-properties": "^1.2.1", 1914 - "es-abstract": "^1.24.0", 1915 - "es-object-atoms": "^1.1.1", 1916 - "get-intrinsic": "^1.3.0", 1917 - "is-string": "^1.1.1", 1918 - "math-intrinsics": "^1.1.0" 1919 - }, 1920 - "engines": { 1921 - "node": ">= 0.4" 1922 - }, 1923 - "funding": { 1924 - "url": "https://github.com/sponsors/ljharb" 1925 - } 1926 - }, 1927 - "node_modules/array.prototype.findlast": { 1928 - "version": "1.2.5", 1929 - "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", 1930 - "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", 1931 - "dev": true, 1932 - "license": "MIT", 1933 - "dependencies": { 1934 - "call-bind": "^1.0.7", 1935 - "define-properties": "^1.2.1", 1936 - "es-abstract": "^1.23.2", 1937 - "es-errors": "^1.3.0", 1938 - "es-object-atoms": "^1.0.0", 1939 - "es-shim-unscopables": "^1.0.2" 1940 - }, 1941 - "engines": { 1942 - "node": ">= 0.4" 1943 - }, 1944 - "funding": { 1945 - "url": "https://github.com/sponsors/ljharb" 1946 - } 1947 - }, 1948 - "node_modules/array.prototype.flat": { 1949 - "version": "1.3.3", 1950 - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", 1951 - "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", 1952 - "dev": true, 1953 - "license": "MIT", 1954 - "dependencies": { 1955 - "call-bind": "^1.0.8", 1956 - "define-properties": "^1.2.1", 1957 - "es-abstract": "^1.23.5", 1958 - "es-shim-unscopables": "^1.0.2" 1959 - }, 1960 - "engines": { 1961 - "node": ">= 0.4" 1962 - }, 1963 - "funding": { 1964 - "url": "https://github.com/sponsors/ljharb" 1965 - } 1966 - }, 1967 - "node_modules/array.prototype.flatmap": { 1968 - "version": "1.3.3", 1969 - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", 1970 - "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", 1971 - "dev": true, 1972 - "license": "MIT", 1973 - "dependencies": { 1974 - "call-bind": "^1.0.8", 1975 - "define-properties": "^1.2.1", 1976 - "es-abstract": "^1.23.5", 1977 - "es-shim-unscopables": "^1.0.2" 1978 - }, 1979 - "engines": { 1980 - "node": ">= 0.4" 1981 - }, 1982 - "funding": { 1983 - "url": "https://github.com/sponsors/ljharb" 1984 - } 1985 - }, 1986 - "node_modules/array.prototype.tosorted": { 1987 - "version": "1.1.4", 1988 - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", 1989 - "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", 1990 - "dev": true, 1991 - "license": "MIT", 1992 - "dependencies": { 1993 - "call-bind": "^1.0.7", 1994 - "define-properties": "^1.2.1", 1995 - "es-abstract": "^1.23.3", 1996 - "es-errors": "^1.3.0", 1997 - "es-shim-unscopables": "^1.0.2" 1998 - }, 1999 - "engines": { 2000 - "node": ">= 0.4" 2001 - } 2002 - }, 2003 - "node_modules/arraybuffer.prototype.slice": { 2004 - "version": "1.0.4", 2005 - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", 2006 - "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", 2007 - "dev": true, 2008 - "license": "MIT", 2009 - "dependencies": { 2010 - "array-buffer-byte-length": "^1.0.1", 2011 - "call-bind": "^1.0.8", 2012 - "define-properties": "^1.2.1", 2013 - "es-abstract": "^1.23.5", 2014 - "es-errors": "^1.3.0", 2015 - "get-intrinsic": "^1.2.6", 2016 - "is-array-buffer": "^3.0.4" 2017 - }, 2018 - "engines": { 2019 - "node": ">= 0.4" 2020 - }, 2021 - "funding": { 2022 - "url": "https://github.com/sponsors/ljharb" 2023 - } 2024 - }, 2025 - "node_modules/async-function": { 2026 - "version": "1.0.0", 2027 - "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", 2028 - "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", 2029 - "dev": true, 2030 - "license": "MIT", 2031 - "engines": { 2032 - "node": ">= 0.4" 2033 - } 2034 - }, 2035 - "node_modules/available-typed-arrays": { 2036 - "version": "1.0.7", 2037 - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", 2038 - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", 2039 - "dev": true, 2040 - "license": "MIT", 2041 - "dependencies": { 2042 - "possible-typed-array-names": "^1.0.0" 2043 - }, 2044 - "engines": { 2045 - "node": ">= 0.4" 2046 - }, 2047 - "funding": { 2048 - "url": "https://github.com/sponsors/ljharb" 2049 - } 2050 - }, 2051 - "node_modules/balanced-match": { 2052 - "version": "1.0.2", 2053 - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 2054 - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 2055 - "dev": true, 2056 - "license": "MIT" 2057 - }, 2058 - "node_modules/baseline-browser-mapping": { 2059 - "version": "2.9.19", 2060 - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.19.tgz", 2061 - "integrity": "sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==", 2062 - "dev": true, 2063 - "license": "Apache-2.0", 2064 - "bin": { 2065 - "baseline-browser-mapping": "dist/cli.js" 2066 - } 2067 - }, 2068 - "node_modules/brace-expansion": { 2069 - "version": "1.1.12", 2070 - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", 2071 - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", 2072 - "dev": true, 2073 - "license": "MIT", 2074 - "dependencies": { 2075 - "balanced-match": "^1.0.0", 2076 - "concat-map": "0.0.1" 2077 - } 2078 - }, 2079 - "node_modules/browserslist": { 2080 - "version": "4.28.1", 2081 - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", 2082 - "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", 2083 - "dev": true, 2084 - "funding": [ 2085 - { 2086 - "type": "opencollective", 2087 - "url": "https://opencollective.com/browserslist" 2 + "name": "manhunt-app", 3 + "version": "0.1.0", 4 + "lockfileVersion": 3, 5 + "requires": true, 6 + "packages": { 7 + "": { 8 + "name": "manhunt-app", 9 + "version": "0.1.0", 10 + "dependencies": { 11 + "@fontsource/bungee": "^5.2.7", 12 + "@tabler/icons-react": "^3.36.1", 13 + "@tauri-apps/api": "^2", 14 + "@tauri-apps/plugin-dialog": "^2", 15 + "@tauri-apps/plugin-geolocation": "^2", 16 + "@tauri-apps/plugin-log": "^2", 17 + "@tauri-apps/plugin-notification": "^2", 18 + "@tauri-apps/plugin-opener": "^2", 19 + "lightningcss": "^1.31.1", 20 + "react": "^19", 21 + "react-dom": "^19", 22 + "swr": "^2" 23 + }, 24 + "devDependencies": { 25 + "@types/node": "^25.2.3", 26 + "@types/react": "^19", 27 + "@types/react-dom": "^19", 28 + "@vitejs/plugin-react": "^5.1.4", 29 + "babel-plugin-react-compiler": "^1.0.0", 30 + "globals": "^17.3.0", 31 + "oxlint": "^1.49.0", 32 + "prettier": "^3", 33 + "typescript": "^5", 34 + "vite": "^7" 35 + } 2088 36 }, 2089 - { 2090 - "type": "tidelift", 2091 - "url": "https://tidelift.com/funding/github/npm/browserslist" 37 + "node_modules/@babel/code-frame": { 38 + "version": "7.29.0", 39 + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", 40 + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", 41 + "dev": true, 42 + "license": "MIT", 43 + "dependencies": { 44 + "@babel/helper-validator-identifier": "^7.28.5", 45 + "js-tokens": "^4.0.0", 46 + "picocolors": "^1.1.1" 47 + }, 48 + "engines": { 49 + "node": ">=6.9.0" 50 + } 2092 51 }, 2093 - { 2094 - "type": "github", 2095 - "url": "https://github.com/sponsors/ai" 2096 - } 2097 - ], 2098 - "license": "MIT", 2099 - "dependencies": { 2100 - "baseline-browser-mapping": "^2.9.0", 2101 - "caniuse-lite": "^1.0.30001759", 2102 - "electron-to-chromium": "^1.5.263", 2103 - "node-releases": "^2.0.27", 2104 - "update-browserslist-db": "^1.2.0" 2105 - }, 2106 - "bin": { 2107 - "browserslist": "cli.js" 2108 - }, 2109 - "engines": { 2110 - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" 2111 - } 2112 - }, 2113 - "node_modules/call-bind": { 2114 - "version": "1.0.8", 2115 - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", 2116 - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", 2117 - "dev": true, 2118 - "license": "MIT", 2119 - "dependencies": { 2120 - "call-bind-apply-helpers": "^1.0.0", 2121 - "es-define-property": "^1.0.0", 2122 - "get-intrinsic": "^1.2.4", 2123 - "set-function-length": "^1.2.2" 2124 - }, 2125 - "engines": { 2126 - "node": ">= 0.4" 2127 - }, 2128 - "funding": { 2129 - "url": "https://github.com/sponsors/ljharb" 2130 - } 2131 - }, 2132 - "node_modules/call-bind-apply-helpers": { 2133 - "version": "1.0.2", 2134 - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", 2135 - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", 2136 - "dev": true, 2137 - "license": "MIT", 2138 - "dependencies": { 2139 - "es-errors": "^1.3.0", 2140 - "function-bind": "^1.1.2" 2141 - }, 2142 - "engines": { 2143 - "node": ">= 0.4" 2144 - } 2145 - }, 2146 - "node_modules/call-bound": { 2147 - "version": "1.0.4", 2148 - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", 2149 - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", 2150 - "dev": true, 2151 - "license": "MIT", 2152 - "dependencies": { 2153 - "call-bind-apply-helpers": "^1.0.2", 2154 - "get-intrinsic": "^1.3.0" 2155 - }, 2156 - "engines": { 2157 - "node": ">= 0.4" 2158 - }, 2159 - "funding": { 2160 - "url": "https://github.com/sponsors/ljharb" 2161 - } 2162 - }, 2163 - "node_modules/callsites": { 2164 - "version": "3.1.0", 2165 - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 2166 - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 2167 - "dev": true, 2168 - "license": "MIT", 2169 - "engines": { 2170 - "node": ">=6" 2171 - } 2172 - }, 2173 - "node_modules/caniuse-lite": { 2174 - "version": "1.0.30001770", 2175 - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001770.tgz", 2176 - "integrity": "sha512-x/2CLQ1jHENRbHg5PSId2sXq1CIO1CISvwWAj027ltMVG2UNgW+w9oH2+HzgEIRFembL8bUlXtfbBHR1fCg2xw==", 2177 - "dev": true, 2178 - "funding": [ 2179 - { 2180 - "type": "opencollective", 2181 - "url": "https://opencollective.com/browserslist" 52 + "node_modules/@babel/compat-data": { 53 + "version": "7.29.0", 54 + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", 55 + "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", 56 + "dev": true, 57 + "license": "MIT", 58 + "engines": { 59 + "node": ">=6.9.0" 60 + } 2182 61 }, 2183 - { 2184 - "type": "tidelift", 2185 - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" 62 + "node_modules/@babel/core": { 63 + "version": "7.29.0", 64 + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", 65 + "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", 66 + "dev": true, 67 + "license": "MIT", 68 + "peer": true, 69 + "dependencies": { 70 + "@babel/code-frame": "^7.29.0", 71 + "@babel/generator": "^7.29.0", 72 + "@babel/helper-compilation-targets": "^7.28.6", 73 + "@babel/helper-module-transforms": "^7.28.6", 74 + "@babel/helpers": "^7.28.6", 75 + "@babel/parser": "^7.29.0", 76 + "@babel/template": "^7.28.6", 77 + "@babel/traverse": "^7.29.0", 78 + "@babel/types": "^7.29.0", 79 + "@jridgewell/remapping": "^2.3.5", 80 + "convert-source-map": "^2.0.0", 81 + "debug": "^4.1.0", 82 + "gensync": "^1.0.0-beta.2", 83 + "json5": "^2.2.3", 84 + "semver": "^6.3.1" 85 + }, 86 + "engines": { 87 + "node": ">=6.9.0" 88 + }, 89 + "funding": { 90 + "type": "opencollective", 91 + "url": "https://opencollective.com/babel" 92 + } 2186 93 }, 2187 - { 2188 - "type": "github", 2189 - "url": "https://github.com/sponsors/ai" 2190 - } 2191 - ], 2192 - "license": "CC-BY-4.0" 2193 - }, 2194 - "node_modules/chalk": { 2195 - "version": "4.1.2", 2196 - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 2197 - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 2198 - "dev": true, 2199 - "license": "MIT", 2200 - "dependencies": { 2201 - "ansi-styles": "^4.1.0", 2202 - "supports-color": "^7.1.0" 2203 - }, 2204 - "engines": { 2205 - "node": ">=10" 2206 - }, 2207 - "funding": { 2208 - "url": "https://github.com/chalk/chalk?sponsor=1" 2209 - } 2210 - }, 2211 - "node_modules/color-convert": { 2212 - "version": "2.0.1", 2213 - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 2214 - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 2215 - "dev": true, 2216 - "license": "MIT", 2217 - "dependencies": { 2218 - "color-name": "~1.1.4" 2219 - }, 2220 - "engines": { 2221 - "node": ">=7.0.0" 2222 - } 2223 - }, 2224 - "node_modules/color-name": { 2225 - "version": "1.1.4", 2226 - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 2227 - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 2228 - "dev": true, 2229 - "license": "MIT" 2230 - }, 2231 - "node_modules/concat-map": { 2232 - "version": "0.0.1", 2233 - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 2234 - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 2235 - "dev": true, 2236 - "license": "MIT" 2237 - }, 2238 - "node_modules/convert-source-map": { 2239 - "version": "2.0.0", 2240 - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", 2241 - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", 2242 - "dev": true, 2243 - "license": "MIT" 2244 - }, 2245 - "node_modules/cross-spawn": { 2246 - "version": "7.0.6", 2247 - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", 2248 - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", 2249 - "dev": true, 2250 - "license": "MIT", 2251 - "dependencies": { 2252 - "path-key": "^3.1.0", 2253 - "shebang-command": "^2.0.0", 2254 - "which": "^2.0.1" 2255 - }, 2256 - "engines": { 2257 - "node": ">= 8" 2258 - } 2259 - }, 2260 - "node_modules/csstype": { 2261 - "version": "3.2.3", 2262 - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", 2263 - "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", 2264 - "dev": true, 2265 - "license": "MIT" 2266 - }, 2267 - "node_modules/data-view-buffer": { 2268 - "version": "1.0.2", 2269 - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", 2270 - "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", 2271 - "dev": true, 2272 - "license": "MIT", 2273 - "dependencies": { 2274 - "call-bound": "^1.0.3", 2275 - "es-errors": "^1.3.0", 2276 - "is-data-view": "^1.0.2" 2277 - }, 2278 - "engines": { 2279 - "node": ">= 0.4" 2280 - }, 2281 - "funding": { 2282 - "url": "https://github.com/sponsors/ljharb" 2283 - } 2284 - }, 2285 - "node_modules/data-view-byte-length": { 2286 - "version": "1.0.2", 2287 - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", 2288 - "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", 2289 - "dev": true, 2290 - "license": "MIT", 2291 - "dependencies": { 2292 - "call-bound": "^1.0.3", 2293 - "es-errors": "^1.3.0", 2294 - "is-data-view": "^1.0.2" 2295 - }, 2296 - "engines": { 2297 - "node": ">= 0.4" 2298 - }, 2299 - "funding": { 2300 - "url": "https://github.com/sponsors/inspect-js" 2301 - } 2302 - }, 2303 - "node_modules/data-view-byte-offset": { 2304 - "version": "1.0.1", 2305 - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", 2306 - "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", 2307 - "dev": true, 2308 - "license": "MIT", 2309 - "dependencies": { 2310 - "call-bound": "^1.0.2", 2311 - "es-errors": "^1.3.0", 2312 - "is-data-view": "^1.0.1" 2313 - }, 2314 - "engines": { 2315 - "node": ">= 0.4" 2316 - }, 2317 - "funding": { 2318 - "url": "https://github.com/sponsors/ljharb" 2319 - } 2320 - }, 2321 - "node_modules/debug": { 2322 - "version": "4.4.3", 2323 - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", 2324 - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", 2325 - "dev": true, 2326 - "license": "MIT", 2327 - "dependencies": { 2328 - "ms": "^2.1.3" 2329 - }, 2330 - "engines": { 2331 - "node": ">=6.0" 2332 - }, 2333 - "peerDependenciesMeta": { 2334 - "supports-color": { 2335 - "optional": true 2336 - } 2337 - } 2338 - }, 2339 - "node_modules/deep-is": { 2340 - "version": "0.1.4", 2341 - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", 2342 - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", 2343 - "dev": true, 2344 - "license": "MIT" 2345 - }, 2346 - "node_modules/define-data-property": { 2347 - "version": "1.1.4", 2348 - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", 2349 - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", 2350 - "dev": true, 2351 - "license": "MIT", 2352 - "dependencies": { 2353 - "es-define-property": "^1.0.0", 2354 - "es-errors": "^1.3.0", 2355 - "gopd": "^1.0.1" 2356 - }, 2357 - "engines": { 2358 - "node": ">= 0.4" 2359 - }, 2360 - "funding": { 2361 - "url": "https://github.com/sponsors/ljharb" 2362 - } 2363 - }, 2364 - "node_modules/define-properties": { 2365 - "version": "1.2.1", 2366 - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", 2367 - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", 2368 - "dev": true, 2369 - "license": "MIT", 2370 - "dependencies": { 2371 - "define-data-property": "^1.0.1", 2372 - "has-property-descriptors": "^1.0.0", 2373 - "object-keys": "^1.1.1" 2374 - }, 2375 - "engines": { 2376 - "node": ">= 0.4" 2377 - }, 2378 - "funding": { 2379 - "url": "https://github.com/sponsors/ljharb" 2380 - } 2381 - }, 2382 - "node_modules/dequal": { 2383 - "version": "2.0.3", 2384 - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", 2385 - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", 2386 - "license": "MIT", 2387 - "engines": { 2388 - "node": ">=6" 2389 - } 2390 - }, 2391 - "node_modules/doctrine": { 2392 - "version": "2.1.0", 2393 - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", 2394 - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", 2395 - "dev": true, 2396 - "license": "Apache-2.0", 2397 - "dependencies": { 2398 - "esutils": "^2.0.2" 2399 - }, 2400 - "engines": { 2401 - "node": ">=0.10.0" 2402 - } 2403 - }, 2404 - "node_modules/dunder-proto": { 2405 - "version": "1.0.1", 2406 - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", 2407 - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", 2408 - "dev": true, 2409 - "license": "MIT", 2410 - "dependencies": { 2411 - "call-bind-apply-helpers": "^1.0.1", 2412 - "es-errors": "^1.3.0", 2413 - "gopd": "^1.2.0" 2414 - }, 2415 - "engines": { 2416 - "node": ">= 0.4" 2417 - } 2418 - }, 2419 - "node_modules/electron-to-chromium": { 2420 - "version": "1.5.286", 2421 - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.286.tgz", 2422 - "integrity": "sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A==", 2423 - "dev": true, 2424 - "license": "ISC" 2425 - }, 2426 - "node_modules/es-abstract": { 2427 - "version": "1.24.1", 2428 - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.1.tgz", 2429 - "integrity": "sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==", 2430 - "dev": true, 2431 - "license": "MIT", 2432 - "dependencies": { 2433 - "array-buffer-byte-length": "^1.0.2", 2434 - "arraybuffer.prototype.slice": "^1.0.4", 2435 - "available-typed-arrays": "^1.0.7", 2436 - "call-bind": "^1.0.8", 2437 - "call-bound": "^1.0.4", 2438 - "data-view-buffer": "^1.0.2", 2439 - "data-view-byte-length": "^1.0.2", 2440 - "data-view-byte-offset": "^1.0.1", 2441 - "es-define-property": "^1.0.1", 2442 - "es-errors": "^1.3.0", 2443 - "es-object-atoms": "^1.1.1", 2444 - "es-set-tostringtag": "^2.1.0", 2445 - "es-to-primitive": "^1.3.0", 2446 - "function.prototype.name": "^1.1.8", 2447 - "get-intrinsic": "^1.3.0", 2448 - "get-proto": "^1.0.1", 2449 - "get-symbol-description": "^1.1.0", 2450 - "globalthis": "^1.0.4", 2451 - "gopd": "^1.2.0", 2452 - "has-property-descriptors": "^1.0.2", 2453 - "has-proto": "^1.2.0", 2454 - "has-symbols": "^1.1.0", 2455 - "hasown": "^2.0.2", 2456 - "internal-slot": "^1.1.0", 2457 - "is-array-buffer": "^3.0.5", 2458 - "is-callable": "^1.2.7", 2459 - "is-data-view": "^1.0.2", 2460 - "is-negative-zero": "^2.0.3", 2461 - "is-regex": "^1.2.1", 2462 - "is-set": "^2.0.3", 2463 - "is-shared-array-buffer": "^1.0.4", 2464 - "is-string": "^1.1.1", 2465 - "is-typed-array": "^1.1.15", 2466 - "is-weakref": "^1.1.1", 2467 - "math-intrinsics": "^1.1.0", 2468 - "object-inspect": "^1.13.4", 2469 - "object-keys": "^1.1.1", 2470 - "object.assign": "^4.1.7", 2471 - "own-keys": "^1.0.1", 2472 - "regexp.prototype.flags": "^1.5.4", 2473 - "safe-array-concat": "^1.1.3", 2474 - "safe-push-apply": "^1.0.0", 2475 - "safe-regex-test": "^1.1.0", 2476 - "set-proto": "^1.0.0", 2477 - "stop-iteration-iterator": "^1.1.0", 2478 - "string.prototype.trim": "^1.2.10", 2479 - "string.prototype.trimend": "^1.0.9", 2480 - "string.prototype.trimstart": "^1.0.8", 2481 - "typed-array-buffer": "^1.0.3", 2482 - "typed-array-byte-length": "^1.0.3", 2483 - "typed-array-byte-offset": "^1.0.4", 2484 - "typed-array-length": "^1.0.7", 2485 - "unbox-primitive": "^1.1.0", 2486 - "which-typed-array": "^1.1.19" 2487 - }, 2488 - "engines": { 2489 - "node": ">= 0.4" 2490 - }, 2491 - "funding": { 2492 - "url": "https://github.com/sponsors/ljharb" 2493 - } 2494 - }, 2495 - "node_modules/es-define-property": { 2496 - "version": "1.0.1", 2497 - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", 2498 - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", 2499 - "dev": true, 2500 - "license": "MIT", 2501 - "engines": { 2502 - "node": ">= 0.4" 2503 - } 2504 - }, 2505 - "node_modules/es-errors": { 2506 - "version": "1.3.0", 2507 - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", 2508 - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", 2509 - "dev": true, 2510 - "license": "MIT", 2511 - "engines": { 2512 - "node": ">= 0.4" 2513 - } 2514 - }, 2515 - "node_modules/es-iterator-helpers": { 2516 - "version": "1.2.2", 2517 - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.2.tgz", 2518 - "integrity": "sha512-BrUQ0cPTB/IwXj23HtwHjS9n7O4h9FX94b4xc5zlTHxeLgTAdzYUDyy6KdExAl9lbN5rtfe44xpjpmj9grxs5w==", 2519 - "dev": true, 2520 - "license": "MIT", 2521 - "dependencies": { 2522 - "call-bind": "^1.0.8", 2523 - "call-bound": "^1.0.4", 2524 - "define-properties": "^1.2.1", 2525 - "es-abstract": "^1.24.1", 2526 - "es-errors": "^1.3.0", 2527 - "es-set-tostringtag": "^2.1.0", 2528 - "function-bind": "^1.1.2", 2529 - "get-intrinsic": "^1.3.0", 2530 - "globalthis": "^1.0.4", 2531 - "gopd": "^1.2.0", 2532 - "has-property-descriptors": "^1.0.2", 2533 - "has-proto": "^1.2.0", 2534 - "has-symbols": "^1.1.0", 2535 - "internal-slot": "^1.1.0", 2536 - "iterator.prototype": "^1.1.5", 2537 - "safe-array-concat": "^1.1.3" 2538 - }, 2539 - "engines": { 2540 - "node": ">= 0.4" 2541 - } 2542 - }, 2543 - "node_modules/es-object-atoms": { 2544 - "version": "1.1.1", 2545 - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", 2546 - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", 2547 - "dev": true, 2548 - "license": "MIT", 2549 - "dependencies": { 2550 - "es-errors": "^1.3.0" 2551 - }, 2552 - "engines": { 2553 - "node": ">= 0.4" 2554 - } 2555 - }, 2556 - "node_modules/es-set-tostringtag": { 2557 - "version": "2.1.0", 2558 - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", 2559 - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", 2560 - "dev": true, 2561 - "license": "MIT", 2562 - "dependencies": { 2563 - "es-errors": "^1.3.0", 2564 - "get-intrinsic": "^1.2.6", 2565 - "has-tostringtag": "^1.0.2", 2566 - "hasown": "^2.0.2" 2567 - }, 2568 - "engines": { 2569 - "node": ">= 0.4" 2570 - } 2571 - }, 2572 - "node_modules/es-shim-unscopables": { 2573 - "version": "1.1.0", 2574 - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", 2575 - "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", 2576 - "dev": true, 2577 - "license": "MIT", 2578 - "dependencies": { 2579 - "hasown": "^2.0.2" 2580 - }, 2581 - "engines": { 2582 - "node": ">= 0.4" 2583 - } 2584 - }, 2585 - "node_modules/es-to-primitive": { 2586 - "version": "1.3.0", 2587 - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", 2588 - "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", 2589 - "dev": true, 2590 - "license": "MIT", 2591 - "dependencies": { 2592 - "is-callable": "^1.2.7", 2593 - "is-date-object": "^1.0.5", 2594 - "is-symbol": "^1.0.4" 2595 - }, 2596 - "engines": { 2597 - "node": ">= 0.4" 2598 - }, 2599 - "funding": { 2600 - "url": "https://github.com/sponsors/ljharb" 2601 - } 2602 - }, 2603 - "node_modules/esbuild": { 2604 - "version": "0.27.3", 2605 - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.3.tgz", 2606 - "integrity": "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==", 2607 - "dev": true, 2608 - "hasInstallScript": true, 2609 - "license": "MIT", 2610 - "bin": { 2611 - "esbuild": "bin/esbuild" 2612 - }, 2613 - "engines": { 2614 - "node": ">=18" 2615 - }, 2616 - "optionalDependencies": { 2617 - "@esbuild/aix-ppc64": "0.27.3", 2618 - "@esbuild/android-arm": "0.27.3", 2619 - "@esbuild/android-arm64": "0.27.3", 2620 - "@esbuild/android-x64": "0.27.3", 2621 - "@esbuild/darwin-arm64": "0.27.3", 2622 - "@esbuild/darwin-x64": "0.27.3", 2623 - "@esbuild/freebsd-arm64": "0.27.3", 2624 - "@esbuild/freebsd-x64": "0.27.3", 2625 - "@esbuild/linux-arm": "0.27.3", 2626 - "@esbuild/linux-arm64": "0.27.3", 2627 - "@esbuild/linux-ia32": "0.27.3", 2628 - "@esbuild/linux-loong64": "0.27.3", 2629 - "@esbuild/linux-mips64el": "0.27.3", 2630 - "@esbuild/linux-ppc64": "0.27.3", 2631 - "@esbuild/linux-riscv64": "0.27.3", 2632 - "@esbuild/linux-s390x": "0.27.3", 2633 - "@esbuild/linux-x64": "0.27.3", 2634 - "@esbuild/netbsd-arm64": "0.27.3", 2635 - "@esbuild/netbsd-x64": "0.27.3", 2636 - "@esbuild/openbsd-arm64": "0.27.3", 2637 - "@esbuild/openbsd-x64": "0.27.3", 2638 - "@esbuild/openharmony-arm64": "0.27.3", 2639 - "@esbuild/sunos-x64": "0.27.3", 2640 - "@esbuild/win32-arm64": "0.27.3", 2641 - "@esbuild/win32-ia32": "0.27.3", 2642 - "@esbuild/win32-x64": "0.27.3" 2643 - } 2644 - }, 2645 - "node_modules/escalade": { 2646 - "version": "3.2.0", 2647 - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", 2648 - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", 2649 - "dev": true, 2650 - "license": "MIT", 2651 - "engines": { 2652 - "node": ">=6" 2653 - } 2654 - }, 2655 - "node_modules/escape-string-regexp": { 2656 - "version": "4.0.0", 2657 - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 2658 - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 2659 - "dev": true, 2660 - "license": "MIT", 2661 - "engines": { 2662 - "node": ">=10" 2663 - }, 2664 - "funding": { 2665 - "url": "https://github.com/sponsors/sindresorhus" 2666 - } 2667 - }, 2668 - "node_modules/eslint": { 2669 - "version": "9.39.2", 2670 - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.2.tgz", 2671 - "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==", 2672 - "dev": true, 2673 - "license": "MIT", 2674 - "dependencies": { 2675 - "@eslint-community/eslint-utils": "^4.8.0", 2676 - "@eslint-community/regexpp": "^4.12.1", 2677 - "@eslint/config-array": "^0.21.1", 2678 - "@eslint/config-helpers": "^0.4.2", 2679 - "@eslint/core": "^0.17.0", 2680 - "@eslint/eslintrc": "^3.3.1", 2681 - "@eslint/js": "9.39.2", 2682 - "@eslint/plugin-kit": "^0.4.1", 2683 - "@humanfs/node": "^0.16.6", 2684 - "@humanwhocodes/module-importer": "^1.0.1", 2685 - "@humanwhocodes/retry": "^0.4.2", 2686 - "@types/estree": "^1.0.6", 2687 - "ajv": "^6.12.4", 2688 - "chalk": "^4.0.0", 2689 - "cross-spawn": "^7.0.6", 2690 - "debug": "^4.3.2", 2691 - "escape-string-regexp": "^4.0.0", 2692 - "eslint-scope": "^8.4.0", 2693 - "eslint-visitor-keys": "^4.2.1", 2694 - "espree": "^10.4.0", 2695 - "esquery": "^1.5.0", 2696 - "esutils": "^2.0.2", 2697 - "fast-deep-equal": "^3.1.3", 2698 - "file-entry-cache": "^8.0.0", 2699 - "find-up": "^5.0.0", 2700 - "glob-parent": "^6.0.2", 2701 - "ignore": "^5.2.0", 2702 - "imurmurhash": "^0.1.4", 2703 - "is-glob": "^4.0.0", 2704 - "json-stable-stringify-without-jsonify": "^1.0.1", 2705 - "lodash.merge": "^4.6.2", 2706 - "minimatch": "^3.1.2", 2707 - "natural-compare": "^1.4.0", 2708 - "optionator": "^0.9.3" 2709 - }, 2710 - "bin": { 2711 - "eslint": "bin/eslint.js" 2712 - }, 2713 - "engines": { 2714 - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 2715 - }, 2716 - "funding": { 2717 - "url": "https://eslint.org/donate" 2718 - }, 2719 - "peerDependencies": { 2720 - "jiti": "*" 2721 - }, 2722 - "peerDependenciesMeta": { 2723 - "jiti": { 2724 - "optional": true 2725 - } 2726 - } 2727 - }, 2728 - "node_modules/eslint-plugin-react": { 2729 - "version": "7.37.5", 2730 - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", 2731 - "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==", 2732 - "dev": true, 2733 - "license": "MIT", 2734 - "dependencies": { 2735 - "array-includes": "^3.1.8", 2736 - "array.prototype.findlast": "^1.2.5", 2737 - "array.prototype.flatmap": "^1.3.3", 2738 - "array.prototype.tosorted": "^1.1.4", 2739 - "doctrine": "^2.1.0", 2740 - "es-iterator-helpers": "^1.2.1", 2741 - "estraverse": "^5.3.0", 2742 - "hasown": "^2.0.2", 2743 - "jsx-ast-utils": "^2.4.1 || ^3.0.0", 2744 - "minimatch": "^3.1.2", 2745 - "object.entries": "^1.1.9", 2746 - "object.fromentries": "^2.0.8", 2747 - "object.values": "^1.2.1", 2748 - "prop-types": "^15.8.1", 2749 - "resolve": "^2.0.0-next.5", 2750 - "semver": "^6.3.1", 2751 - "string.prototype.matchall": "^4.0.12", 2752 - "string.prototype.repeat": "^1.0.0" 2753 - }, 2754 - "engines": { 2755 - "node": ">=4" 2756 - }, 2757 - "peerDependencies": { 2758 - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" 2759 - } 2760 - }, 2761 - "node_modules/eslint-plugin-react-hooks": { 2762 - "version": "5.2.0", 2763 - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", 2764 - "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==", 2765 - "dev": true, 2766 - "license": "MIT", 2767 - "engines": { 2768 - "node": ">=10" 2769 - }, 2770 - "peerDependencies": { 2771 - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" 2772 - } 2773 - }, 2774 - "node_modules/eslint-scope": { 2775 - "version": "8.4.0", 2776 - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", 2777 - "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", 2778 - "dev": true, 2779 - "license": "BSD-2-Clause", 2780 - "dependencies": { 2781 - "esrecurse": "^4.3.0", 2782 - "estraverse": "^5.2.0" 2783 - }, 2784 - "engines": { 2785 - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 2786 - }, 2787 - "funding": { 2788 - "url": "https://opencollective.com/eslint" 2789 - } 2790 - }, 2791 - "node_modules/eslint-visitor-keys": { 2792 - "version": "4.2.1", 2793 - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", 2794 - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", 2795 - "dev": true, 2796 - "license": "Apache-2.0", 2797 - "engines": { 2798 - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 2799 - }, 2800 - "funding": { 2801 - "url": "https://opencollective.com/eslint" 2802 - } 2803 - }, 2804 - "node_modules/espree": { 2805 - "version": "10.4.0", 2806 - "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", 2807 - "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", 2808 - "dev": true, 2809 - "license": "BSD-2-Clause", 2810 - "dependencies": { 2811 - "acorn": "^8.15.0", 2812 - "acorn-jsx": "^5.3.2", 2813 - "eslint-visitor-keys": "^4.2.1" 2814 - }, 2815 - "engines": { 2816 - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 2817 - }, 2818 - "funding": { 2819 - "url": "https://opencollective.com/eslint" 2820 - } 2821 - }, 2822 - "node_modules/esquery": { 2823 - "version": "1.7.0", 2824 - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", 2825 - "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", 2826 - "dev": true, 2827 - "license": "BSD-3-Clause", 2828 - "dependencies": { 2829 - "estraverse": "^5.1.0" 2830 - }, 2831 - "engines": { 2832 - "node": ">=0.10" 2833 - } 2834 - }, 2835 - "node_modules/esrecurse": { 2836 - "version": "4.3.0", 2837 - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 2838 - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 2839 - "dev": true, 2840 - "license": "BSD-2-Clause", 2841 - "dependencies": { 2842 - "estraverse": "^5.2.0" 2843 - }, 2844 - "engines": { 2845 - "node": ">=4.0" 2846 - } 2847 - }, 2848 - "node_modules/estraverse": { 2849 - "version": "5.3.0", 2850 - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 2851 - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 2852 - "dev": true, 2853 - "license": "BSD-2-Clause", 2854 - "engines": { 2855 - "node": ">=4.0" 2856 - } 2857 - }, 2858 - "node_modules/esutils": { 2859 - "version": "2.0.3", 2860 - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 2861 - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 2862 - "dev": true, 2863 - "license": "BSD-2-Clause", 2864 - "engines": { 2865 - "node": ">=0.10.0" 2866 - } 2867 - }, 2868 - "node_modules/fast-deep-equal": { 2869 - "version": "3.1.3", 2870 - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 2871 - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 2872 - "dev": true, 2873 - "license": "MIT" 2874 - }, 2875 - "node_modules/fast-json-stable-stringify": { 2876 - "version": "2.1.0", 2877 - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 2878 - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 2879 - "dev": true, 2880 - "license": "MIT" 2881 - }, 2882 - "node_modules/fast-levenshtein": { 2883 - "version": "2.0.6", 2884 - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 2885 - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", 2886 - "dev": true, 2887 - "license": "MIT" 2888 - }, 2889 - "node_modules/fdir": { 2890 - "version": "6.5.0", 2891 - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", 2892 - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", 2893 - "dev": true, 2894 - "license": "MIT", 2895 - "engines": { 2896 - "node": ">=12.0.0" 2897 - }, 2898 - "peerDependencies": { 2899 - "picomatch": "^3 || ^4" 2900 - }, 2901 - "peerDependenciesMeta": { 2902 - "picomatch": { 2903 - "optional": true 2904 - } 2905 - } 2906 - }, 2907 - "node_modules/file-entry-cache": { 2908 - "version": "8.0.0", 2909 - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", 2910 - "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", 2911 - "dev": true, 2912 - "license": "MIT", 2913 - "dependencies": { 2914 - "flat-cache": "^4.0.0" 2915 - }, 2916 - "engines": { 2917 - "node": ">=16.0.0" 2918 - } 2919 - }, 2920 - "node_modules/find-up": { 2921 - "version": "5.0.0", 2922 - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 2923 - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 2924 - "dev": true, 2925 - "license": "MIT", 2926 - "dependencies": { 2927 - "locate-path": "^6.0.0", 2928 - "path-exists": "^4.0.0" 2929 - }, 2930 - "engines": { 2931 - "node": ">=10" 2932 - }, 2933 - "funding": { 2934 - "url": "https://github.com/sponsors/sindresorhus" 2935 - } 2936 - }, 2937 - "node_modules/flat-cache": { 2938 - "version": "4.0.1", 2939 - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", 2940 - "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", 2941 - "dev": true, 2942 - "license": "MIT", 2943 - "dependencies": { 2944 - "flatted": "^3.2.9", 2945 - "keyv": "^4.5.4" 2946 - }, 2947 - "engines": { 2948 - "node": ">=16" 2949 - } 2950 - }, 2951 - "node_modules/flatted": { 2952 - "version": "3.3.3", 2953 - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", 2954 - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", 2955 - "dev": true, 2956 - "license": "ISC" 2957 - }, 2958 - "node_modules/for-each": { 2959 - "version": "0.3.5", 2960 - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", 2961 - "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", 2962 - "dev": true, 2963 - "license": "MIT", 2964 - "dependencies": { 2965 - "is-callable": "^1.2.7" 2966 - }, 2967 - "engines": { 2968 - "node": ">= 0.4" 2969 - }, 2970 - "funding": { 2971 - "url": "https://github.com/sponsors/ljharb" 2972 - } 2973 - }, 2974 - "node_modules/fsevents": { 2975 - "version": "2.3.3", 2976 - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", 2977 - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 2978 - "dev": true, 2979 - "hasInstallScript": true, 2980 - "license": "MIT", 2981 - "optional": true, 2982 - "os": [ 2983 - "darwin" 2984 - ], 2985 - "engines": { 2986 - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 2987 - } 2988 - }, 2989 - "node_modules/function-bind": { 2990 - "version": "1.1.2", 2991 - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", 2992 - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", 2993 - "dev": true, 2994 - "license": "MIT", 2995 - "funding": { 2996 - "url": "https://github.com/sponsors/ljharb" 2997 - } 2998 - }, 2999 - "node_modules/function.prototype.name": { 3000 - "version": "1.1.8", 3001 - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", 3002 - "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", 3003 - "dev": true, 3004 - "license": "MIT", 3005 - "dependencies": { 3006 - "call-bind": "^1.0.8", 3007 - "call-bound": "^1.0.3", 3008 - "define-properties": "^1.2.1", 3009 - "functions-have-names": "^1.2.3", 3010 - "hasown": "^2.0.2", 3011 - "is-callable": "^1.2.7" 3012 - }, 3013 - "engines": { 3014 - "node": ">= 0.4" 3015 - }, 3016 - "funding": { 3017 - "url": "https://github.com/sponsors/ljharb" 3018 - } 3019 - }, 3020 - "node_modules/functions-have-names": { 3021 - "version": "1.2.3", 3022 - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", 3023 - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", 3024 - "dev": true, 3025 - "license": "MIT", 3026 - "funding": { 3027 - "url": "https://github.com/sponsors/ljharb" 3028 - } 3029 - }, 3030 - "node_modules/generator-function": { 3031 - "version": "2.0.1", 3032 - "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", 3033 - "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", 3034 - "dev": true, 3035 - "license": "MIT", 3036 - "engines": { 3037 - "node": ">= 0.4" 3038 - } 3039 - }, 3040 - "node_modules/gensync": { 3041 - "version": "1.0.0-beta.2", 3042 - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", 3043 - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", 3044 - "dev": true, 3045 - "license": "MIT", 3046 - "engines": { 3047 - "node": ">=6.9.0" 3048 - } 3049 - }, 3050 - "node_modules/get-intrinsic": { 3051 - "version": "1.3.0", 3052 - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", 3053 - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", 3054 - "dev": true, 3055 - "license": "MIT", 3056 - "dependencies": { 3057 - "call-bind-apply-helpers": "^1.0.2", 3058 - "es-define-property": "^1.0.1", 3059 - "es-errors": "^1.3.0", 3060 - "es-object-atoms": "^1.1.1", 3061 - "function-bind": "^1.1.2", 3062 - "get-proto": "^1.0.1", 3063 - "gopd": "^1.2.0", 3064 - "has-symbols": "^1.1.0", 3065 - "hasown": "^2.0.2", 3066 - "math-intrinsics": "^1.1.0" 3067 - }, 3068 - "engines": { 3069 - "node": ">= 0.4" 3070 - }, 3071 - "funding": { 3072 - "url": "https://github.com/sponsors/ljharb" 3073 - } 3074 - }, 3075 - "node_modules/get-proto": { 3076 - "version": "1.0.1", 3077 - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", 3078 - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", 3079 - "dev": true, 3080 - "license": "MIT", 3081 - "dependencies": { 3082 - "dunder-proto": "^1.0.1", 3083 - "es-object-atoms": "^1.0.0" 3084 - }, 3085 - "engines": { 3086 - "node": ">= 0.4" 3087 - } 3088 - }, 3089 - "node_modules/get-symbol-description": { 3090 - "version": "1.1.0", 3091 - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", 3092 - "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", 3093 - "dev": true, 3094 - "license": "MIT", 3095 - "dependencies": { 3096 - "call-bound": "^1.0.3", 3097 - "es-errors": "^1.3.0", 3098 - "get-intrinsic": "^1.2.6" 3099 - }, 3100 - "engines": { 3101 - "node": ">= 0.4" 3102 - }, 3103 - "funding": { 3104 - "url": "https://github.com/sponsors/ljharb" 3105 - } 3106 - }, 3107 - "node_modules/glob-parent": { 3108 - "version": "6.0.2", 3109 - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", 3110 - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", 3111 - "dev": true, 3112 - "license": "ISC", 3113 - "dependencies": { 3114 - "is-glob": "^4.0.3" 3115 - }, 3116 - "engines": { 3117 - "node": ">=10.13.0" 3118 - } 3119 - }, 3120 - "node_modules/globals": { 3121 - "version": "17.3.0", 3122 - "resolved": "https://registry.npmjs.org/globals/-/globals-17.3.0.tgz", 3123 - "integrity": "sha512-yMqGUQVVCkD4tqjOJf3TnrvaaHDMYp4VlUSObbkIiuCPe/ofdMBFIAcBbCSRFWOnos6qRiTVStDwqPLUclaxIw==", 3124 - "dev": true, 3125 - "license": "MIT", 3126 - "engines": { 3127 - "node": ">=18" 3128 - }, 3129 - "funding": { 3130 - "url": "https://github.com/sponsors/sindresorhus" 3131 - } 3132 - }, 3133 - "node_modules/globalthis": { 3134 - "version": "1.0.4", 3135 - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", 3136 - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", 3137 - "dev": true, 3138 - "license": "MIT", 3139 - "dependencies": { 3140 - "define-properties": "^1.2.1", 3141 - "gopd": "^1.0.1" 3142 - }, 3143 - "engines": { 3144 - "node": ">= 0.4" 3145 - }, 3146 - "funding": { 3147 - "url": "https://github.com/sponsors/ljharb" 3148 - } 3149 - }, 3150 - "node_modules/gopd": { 3151 - "version": "1.2.0", 3152 - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", 3153 - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", 3154 - "dev": true, 3155 - "license": "MIT", 3156 - "engines": { 3157 - "node": ">= 0.4" 3158 - }, 3159 - "funding": { 3160 - "url": "https://github.com/sponsors/ljharb" 3161 - } 3162 - }, 3163 - "node_modules/has-bigints": { 3164 - "version": "1.1.0", 3165 - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", 3166 - "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", 3167 - "dev": true, 3168 - "license": "MIT", 3169 - "engines": { 3170 - "node": ">= 0.4" 3171 - }, 3172 - "funding": { 3173 - "url": "https://github.com/sponsors/ljharb" 3174 - } 3175 - }, 3176 - "node_modules/has-flag": { 3177 - "version": "4.0.0", 3178 - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 3179 - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 3180 - "dev": true, 3181 - "license": "MIT", 3182 - "engines": { 3183 - "node": ">=8" 3184 - } 3185 - }, 3186 - "node_modules/has-property-descriptors": { 3187 - "version": "1.0.2", 3188 - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", 3189 - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", 3190 - "dev": true, 3191 - "license": "MIT", 3192 - "dependencies": { 3193 - "es-define-property": "^1.0.0" 3194 - }, 3195 - "funding": { 3196 - "url": "https://github.com/sponsors/ljharb" 3197 - } 3198 - }, 3199 - "node_modules/has-proto": { 3200 - "version": "1.2.0", 3201 - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", 3202 - "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", 3203 - "dev": true, 3204 - "license": "MIT", 3205 - "dependencies": { 3206 - "dunder-proto": "^1.0.0" 3207 - }, 3208 - "engines": { 3209 - "node": ">= 0.4" 3210 - }, 3211 - "funding": { 3212 - "url": "https://github.com/sponsors/ljharb" 3213 - } 3214 - }, 3215 - "node_modules/has-symbols": { 3216 - "version": "1.1.0", 3217 - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", 3218 - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", 3219 - "dev": true, 3220 - "license": "MIT", 3221 - "engines": { 3222 - "node": ">= 0.4" 3223 - }, 3224 - "funding": { 3225 - "url": "https://github.com/sponsors/ljharb" 3226 - } 3227 - }, 3228 - "node_modules/has-tostringtag": { 3229 - "version": "1.0.2", 3230 - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", 3231 - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", 3232 - "dev": true, 3233 - "license": "MIT", 3234 - "dependencies": { 3235 - "has-symbols": "^1.0.3" 3236 - }, 3237 - "engines": { 3238 - "node": ">= 0.4" 3239 - }, 3240 - "funding": { 3241 - "url": "https://github.com/sponsors/ljharb" 3242 - } 3243 - }, 3244 - "node_modules/hasown": { 3245 - "version": "2.0.2", 3246 - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", 3247 - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", 3248 - "dev": true, 3249 - "license": "MIT", 3250 - "dependencies": { 3251 - "function-bind": "^1.1.2" 3252 - }, 3253 - "engines": { 3254 - "node": ">= 0.4" 3255 - } 3256 - }, 3257 - "node_modules/ignore": { 3258 - "version": "5.3.2", 3259 - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", 3260 - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", 3261 - "dev": true, 3262 - "license": "MIT", 3263 - "engines": { 3264 - "node": ">= 4" 3265 - } 3266 - }, 3267 - "node_modules/import-fresh": { 3268 - "version": "3.3.1", 3269 - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", 3270 - "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", 3271 - "dev": true, 3272 - "license": "MIT", 3273 - "dependencies": { 3274 - "parent-module": "^1.0.0", 3275 - "resolve-from": "^4.0.0" 3276 - }, 3277 - "engines": { 3278 - "node": ">=6" 3279 - }, 3280 - "funding": { 3281 - "url": "https://github.com/sponsors/sindresorhus" 3282 - } 3283 - }, 3284 - "node_modules/imurmurhash": { 3285 - "version": "0.1.4", 3286 - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 3287 - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", 3288 - "dev": true, 3289 - "license": "MIT", 3290 - "engines": { 3291 - "node": ">=0.8.19" 3292 - } 3293 - }, 3294 - "node_modules/internal-slot": { 3295 - "version": "1.1.0", 3296 - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", 3297 - "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", 3298 - "dev": true, 3299 - "license": "MIT", 3300 - "dependencies": { 3301 - "es-errors": "^1.3.0", 3302 - "hasown": "^2.0.2", 3303 - "side-channel": "^1.1.0" 3304 - }, 3305 - "engines": { 3306 - "node": ">= 0.4" 3307 - } 3308 - }, 3309 - "node_modules/is-array-buffer": { 3310 - "version": "3.0.5", 3311 - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", 3312 - "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", 3313 - "dev": true, 3314 - "license": "MIT", 3315 - "dependencies": { 3316 - "call-bind": "^1.0.8", 3317 - "call-bound": "^1.0.3", 3318 - "get-intrinsic": "^1.2.6" 3319 - }, 3320 - "engines": { 3321 - "node": ">= 0.4" 3322 - }, 3323 - "funding": { 3324 - "url": "https://github.com/sponsors/ljharb" 3325 - } 3326 - }, 3327 - "node_modules/is-async-function": { 3328 - "version": "2.1.1", 3329 - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", 3330 - "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", 3331 - "dev": true, 3332 - "license": "MIT", 3333 - "dependencies": { 3334 - "async-function": "^1.0.0", 3335 - "call-bound": "^1.0.3", 3336 - "get-proto": "^1.0.1", 3337 - "has-tostringtag": "^1.0.2", 3338 - "safe-regex-test": "^1.1.0" 3339 - }, 3340 - "engines": { 3341 - "node": ">= 0.4" 3342 - }, 3343 - "funding": { 3344 - "url": "https://github.com/sponsors/ljharb" 3345 - } 3346 - }, 3347 - "node_modules/is-bigint": { 3348 - "version": "1.1.0", 3349 - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", 3350 - "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", 3351 - "dev": true, 3352 - "license": "MIT", 3353 - "dependencies": { 3354 - "has-bigints": "^1.0.2" 3355 - }, 3356 - "engines": { 3357 - "node": ">= 0.4" 3358 - }, 3359 - "funding": { 3360 - "url": "https://github.com/sponsors/ljharb" 3361 - } 3362 - }, 3363 - "node_modules/is-boolean-object": { 3364 - "version": "1.2.2", 3365 - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", 3366 - "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", 3367 - "dev": true, 3368 - "license": "MIT", 3369 - "dependencies": { 3370 - "call-bound": "^1.0.3", 3371 - "has-tostringtag": "^1.0.2" 3372 - }, 3373 - "engines": { 3374 - "node": ">= 0.4" 3375 - }, 3376 - "funding": { 3377 - "url": "https://github.com/sponsors/ljharb" 3378 - } 3379 - }, 3380 - "node_modules/is-callable": { 3381 - "version": "1.2.7", 3382 - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", 3383 - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", 3384 - "dev": true, 3385 - "license": "MIT", 3386 - "engines": { 3387 - "node": ">= 0.4" 3388 - }, 3389 - "funding": { 3390 - "url": "https://github.com/sponsors/ljharb" 3391 - } 3392 - }, 3393 - "node_modules/is-core-module": { 3394 - "version": "2.16.1", 3395 - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", 3396 - "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", 3397 - "dev": true, 3398 - "license": "MIT", 3399 - "dependencies": { 3400 - "hasown": "^2.0.2" 3401 - }, 3402 - "engines": { 3403 - "node": ">= 0.4" 3404 - }, 3405 - "funding": { 3406 - "url": "https://github.com/sponsors/ljharb" 3407 - } 3408 - }, 3409 - "node_modules/is-data-view": { 3410 - "version": "1.0.2", 3411 - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", 3412 - "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", 3413 - "dev": true, 3414 - "license": "MIT", 3415 - "dependencies": { 3416 - "call-bound": "^1.0.2", 3417 - "get-intrinsic": "^1.2.6", 3418 - "is-typed-array": "^1.1.13" 3419 - }, 3420 - "engines": { 3421 - "node": ">= 0.4" 3422 - }, 3423 - "funding": { 3424 - "url": "https://github.com/sponsors/ljharb" 3425 - } 3426 - }, 3427 - "node_modules/is-date-object": { 3428 - "version": "1.1.0", 3429 - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", 3430 - "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", 3431 - "dev": true, 3432 - "license": "MIT", 3433 - "dependencies": { 3434 - "call-bound": "^1.0.2", 3435 - "has-tostringtag": "^1.0.2" 3436 - }, 3437 - "engines": { 3438 - "node": ">= 0.4" 3439 - }, 3440 - "funding": { 3441 - "url": "https://github.com/sponsors/ljharb" 3442 - } 3443 - }, 3444 - "node_modules/is-extglob": { 3445 - "version": "2.1.1", 3446 - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 3447 - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 3448 - "dev": true, 3449 - "license": "MIT", 3450 - "engines": { 3451 - "node": ">=0.10.0" 3452 - } 3453 - }, 3454 - "node_modules/is-finalizationregistry": { 3455 - "version": "1.1.1", 3456 - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", 3457 - "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", 3458 - "dev": true, 3459 - "license": "MIT", 3460 - "dependencies": { 3461 - "call-bound": "^1.0.3" 3462 - }, 3463 - "engines": { 3464 - "node": ">= 0.4" 3465 - }, 3466 - "funding": { 3467 - "url": "https://github.com/sponsors/ljharb" 3468 - } 3469 - }, 3470 - "node_modules/is-generator-function": { 3471 - "version": "1.1.2", 3472 - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", 3473 - "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", 3474 - "dev": true, 3475 - "license": "MIT", 3476 - "dependencies": { 3477 - "call-bound": "^1.0.4", 3478 - "generator-function": "^2.0.0", 3479 - "get-proto": "^1.0.1", 3480 - "has-tostringtag": "^1.0.2", 3481 - "safe-regex-test": "^1.1.0" 3482 - }, 3483 - "engines": { 3484 - "node": ">= 0.4" 3485 - }, 3486 - "funding": { 3487 - "url": "https://github.com/sponsors/ljharb" 3488 - } 3489 - }, 3490 - "node_modules/is-glob": { 3491 - "version": "4.0.3", 3492 - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 3493 - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 3494 - "dev": true, 3495 - "license": "MIT", 3496 - "dependencies": { 3497 - "is-extglob": "^2.1.1" 3498 - }, 3499 - "engines": { 3500 - "node": ">=0.10.0" 3501 - } 3502 - }, 3503 - "node_modules/is-map": { 3504 - "version": "2.0.3", 3505 - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", 3506 - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", 3507 - "dev": true, 3508 - "license": "MIT", 3509 - "engines": { 3510 - "node": ">= 0.4" 3511 - }, 3512 - "funding": { 3513 - "url": "https://github.com/sponsors/ljharb" 3514 - } 3515 - }, 3516 - "node_modules/is-negative-zero": { 3517 - "version": "2.0.3", 3518 - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", 3519 - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", 3520 - "dev": true, 3521 - "license": "MIT", 3522 - "engines": { 3523 - "node": ">= 0.4" 3524 - }, 3525 - "funding": { 3526 - "url": "https://github.com/sponsors/ljharb" 3527 - } 3528 - }, 3529 - "node_modules/is-number-object": { 3530 - "version": "1.1.1", 3531 - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", 3532 - "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", 3533 - "dev": true, 3534 - "license": "MIT", 3535 - "dependencies": { 3536 - "call-bound": "^1.0.3", 3537 - "has-tostringtag": "^1.0.2" 3538 - }, 3539 - "engines": { 3540 - "node": ">= 0.4" 3541 - }, 3542 - "funding": { 3543 - "url": "https://github.com/sponsors/ljharb" 3544 - } 3545 - }, 3546 - "node_modules/is-regex": { 3547 - "version": "1.2.1", 3548 - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", 3549 - "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", 3550 - "dev": true, 3551 - "license": "MIT", 3552 - "dependencies": { 3553 - "call-bound": "^1.0.2", 3554 - "gopd": "^1.2.0", 3555 - "has-tostringtag": "^1.0.2", 3556 - "hasown": "^2.0.2" 3557 - }, 3558 - "engines": { 3559 - "node": ">= 0.4" 3560 - }, 3561 - "funding": { 3562 - "url": "https://github.com/sponsors/ljharb" 3563 - } 3564 - }, 3565 - "node_modules/is-set": { 3566 - "version": "2.0.3", 3567 - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", 3568 - "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", 3569 - "dev": true, 3570 - "license": "MIT", 3571 - "engines": { 3572 - "node": ">= 0.4" 3573 - }, 3574 - "funding": { 3575 - "url": "https://github.com/sponsors/ljharb" 3576 - } 3577 - }, 3578 - "node_modules/is-shared-array-buffer": { 3579 - "version": "1.0.4", 3580 - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", 3581 - "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", 3582 - "dev": true, 3583 - "license": "MIT", 3584 - "dependencies": { 3585 - "call-bound": "^1.0.3" 3586 - }, 3587 - "engines": { 3588 - "node": ">= 0.4" 3589 - }, 3590 - "funding": { 3591 - "url": "https://github.com/sponsors/ljharb" 3592 - } 3593 - }, 3594 - "node_modules/is-string": { 3595 - "version": "1.1.1", 3596 - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", 3597 - "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", 3598 - "dev": true, 3599 - "license": "MIT", 3600 - "dependencies": { 3601 - "call-bound": "^1.0.3", 3602 - "has-tostringtag": "^1.0.2" 3603 - }, 3604 - "engines": { 3605 - "node": ">= 0.4" 3606 - }, 3607 - "funding": { 3608 - "url": "https://github.com/sponsors/ljharb" 3609 - } 3610 - }, 3611 - "node_modules/is-symbol": { 3612 - "version": "1.1.1", 3613 - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", 3614 - "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", 3615 - "dev": true, 3616 - "license": "MIT", 3617 - "dependencies": { 3618 - "call-bound": "^1.0.2", 3619 - "has-symbols": "^1.1.0", 3620 - "safe-regex-test": "^1.1.0" 3621 - }, 3622 - "engines": { 3623 - "node": ">= 0.4" 3624 - }, 3625 - "funding": { 3626 - "url": "https://github.com/sponsors/ljharb" 3627 - } 3628 - }, 3629 - "node_modules/is-typed-array": { 3630 - "version": "1.1.15", 3631 - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", 3632 - "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", 3633 - "dev": true, 3634 - "license": "MIT", 3635 - "dependencies": { 3636 - "which-typed-array": "^1.1.16" 3637 - }, 3638 - "engines": { 3639 - "node": ">= 0.4" 3640 - }, 3641 - "funding": { 3642 - "url": "https://github.com/sponsors/ljharb" 3643 - } 3644 - }, 3645 - "node_modules/is-weakmap": { 3646 - "version": "2.0.2", 3647 - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", 3648 - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", 3649 - "dev": true, 3650 - "license": "MIT", 3651 - "engines": { 3652 - "node": ">= 0.4" 3653 - }, 3654 - "funding": { 3655 - "url": "https://github.com/sponsors/ljharb" 3656 - } 3657 - }, 3658 - "node_modules/is-weakref": { 3659 - "version": "1.1.1", 3660 - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", 3661 - "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", 3662 - "dev": true, 3663 - "license": "MIT", 3664 - "dependencies": { 3665 - "call-bound": "^1.0.3" 3666 - }, 3667 - "engines": { 3668 - "node": ">= 0.4" 3669 - }, 3670 - "funding": { 3671 - "url": "https://github.com/sponsors/ljharb" 3672 - } 3673 - }, 3674 - "node_modules/is-weakset": { 3675 - "version": "2.0.4", 3676 - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", 3677 - "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", 3678 - "dev": true, 3679 - "license": "MIT", 3680 - "dependencies": { 3681 - "call-bound": "^1.0.3", 3682 - "get-intrinsic": "^1.2.6" 3683 - }, 3684 - "engines": { 3685 - "node": ">= 0.4" 3686 - }, 3687 - "funding": { 3688 - "url": "https://github.com/sponsors/ljharb" 3689 - } 3690 - }, 3691 - "node_modules/isarray": { 3692 - "version": "2.0.5", 3693 - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", 3694 - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", 3695 - "dev": true, 3696 - "license": "MIT" 3697 - }, 3698 - "node_modules/isexe": { 3699 - "version": "2.0.0", 3700 - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 3701 - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 3702 - "dev": true, 3703 - "license": "ISC" 3704 - }, 3705 - "node_modules/iterator.prototype": { 3706 - "version": "1.1.5", 3707 - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", 3708 - "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", 3709 - "dev": true, 3710 - "license": "MIT", 3711 - "dependencies": { 3712 - "define-data-property": "^1.1.4", 3713 - "es-object-atoms": "^1.0.0", 3714 - "get-intrinsic": "^1.2.6", 3715 - "get-proto": "^1.0.0", 3716 - "has-symbols": "^1.1.0", 3717 - "set-function-name": "^2.0.2" 3718 - }, 3719 - "engines": { 3720 - "node": ">= 0.4" 3721 - } 3722 - }, 3723 - "node_modules/js-tokens": { 3724 - "version": "4.0.0", 3725 - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 3726 - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 3727 - "dev": true, 3728 - "license": "MIT" 3729 - }, 3730 - "node_modules/js-yaml": { 3731 - "version": "4.1.1", 3732 - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", 3733 - "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", 3734 - "dev": true, 3735 - "license": "MIT", 3736 - "dependencies": { 3737 - "argparse": "^2.0.1" 3738 - }, 3739 - "bin": { 3740 - "js-yaml": "bin/js-yaml.js" 3741 - } 3742 - }, 3743 - "node_modules/jsesc": { 3744 - "version": "3.1.0", 3745 - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", 3746 - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", 3747 - "dev": true, 3748 - "license": "MIT", 3749 - "bin": { 3750 - "jsesc": "bin/jsesc" 3751 - }, 3752 - "engines": { 3753 - "node": ">=6" 3754 - } 3755 - }, 3756 - "node_modules/json-buffer": { 3757 - "version": "3.0.1", 3758 - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", 3759 - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", 3760 - "dev": true, 3761 - "license": "MIT" 3762 - }, 3763 - "node_modules/json-schema-traverse": { 3764 - "version": "0.4.1", 3765 - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 3766 - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 3767 - "dev": true, 3768 - "license": "MIT" 3769 - }, 3770 - "node_modules/json-stable-stringify-without-jsonify": { 3771 - "version": "1.0.1", 3772 - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 3773 - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", 3774 - "dev": true, 3775 - "license": "MIT" 3776 - }, 3777 - "node_modules/json5": { 3778 - "version": "2.2.3", 3779 - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", 3780 - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", 3781 - "dev": true, 3782 - "license": "MIT", 3783 - "bin": { 3784 - "json5": "lib/cli.js" 3785 - }, 3786 - "engines": { 3787 - "node": ">=6" 3788 - } 3789 - }, 3790 - "node_modules/jsx-ast-utils": { 3791 - "version": "3.3.5", 3792 - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", 3793 - "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", 3794 - "dev": true, 3795 - "license": "MIT", 3796 - "dependencies": { 3797 - "array-includes": "^3.1.6", 3798 - "array.prototype.flat": "^1.3.1", 3799 - "object.assign": "^4.1.4", 3800 - "object.values": "^1.1.6" 3801 - }, 3802 - "engines": { 3803 - "node": ">=4.0" 3804 - } 3805 - }, 3806 - "node_modules/keyv": { 3807 - "version": "4.5.4", 3808 - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", 3809 - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", 3810 - "dev": true, 3811 - "license": "MIT", 3812 - "dependencies": { 3813 - "json-buffer": "3.0.1" 3814 - } 3815 - }, 3816 - "node_modules/levn": { 3817 - "version": "0.4.1", 3818 - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", 3819 - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", 3820 - "dev": true, 3821 - "license": "MIT", 3822 - "dependencies": { 3823 - "prelude-ls": "^1.2.1", 3824 - "type-check": "~0.4.0" 3825 - }, 3826 - "engines": { 3827 - "node": ">= 0.8.0" 3828 - } 3829 - }, 3830 - "node_modules/locate-path": { 3831 - "version": "6.0.0", 3832 - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 3833 - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 3834 - "dev": true, 3835 - "license": "MIT", 3836 - "dependencies": { 3837 - "p-locate": "^5.0.0" 3838 - }, 3839 - "engines": { 3840 - "node": ">=10" 3841 - }, 3842 - "funding": { 3843 - "url": "https://github.com/sponsors/sindresorhus" 3844 - } 3845 - }, 3846 - "node_modules/lodash.merge": { 3847 - "version": "4.6.2", 3848 - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", 3849 - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", 3850 - "dev": true, 3851 - "license": "MIT" 3852 - }, 3853 - "node_modules/loose-envify": { 3854 - "version": "1.4.0", 3855 - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 3856 - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 3857 - "dev": true, 3858 - "license": "MIT", 3859 - "dependencies": { 3860 - "js-tokens": "^3.0.0 || ^4.0.0" 3861 - }, 3862 - "bin": { 3863 - "loose-envify": "cli.js" 3864 - } 3865 - }, 3866 - "node_modules/lru-cache": { 3867 - "version": "5.1.1", 3868 - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", 3869 - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", 3870 - "dev": true, 3871 - "license": "ISC", 3872 - "dependencies": { 3873 - "yallist": "^3.0.2" 3874 - } 3875 - }, 3876 - "node_modules/math-intrinsics": { 3877 - "version": "1.1.0", 3878 - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", 3879 - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", 3880 - "dev": true, 3881 - "license": "MIT", 3882 - "engines": { 3883 - "node": ">= 0.4" 3884 - } 3885 - }, 3886 - "node_modules/minimatch": { 3887 - "version": "3.1.2", 3888 - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 3889 - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 3890 - "dev": true, 3891 - "license": "ISC", 3892 - "dependencies": { 3893 - "brace-expansion": "^1.1.7" 3894 - }, 3895 - "engines": { 3896 - "node": "*" 3897 - } 3898 - }, 3899 - "node_modules/ms": { 3900 - "version": "2.1.3", 3901 - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 3902 - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 3903 - "dev": true, 3904 - "license": "MIT" 3905 - }, 3906 - "node_modules/nanoid": { 3907 - "version": "3.3.11", 3908 - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", 3909 - "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", 3910 - "dev": true, 3911 - "funding": [ 3912 - { 3913 - "type": "github", 3914 - "url": "https://github.com/sponsors/ai" 3915 - } 3916 - ], 3917 - "license": "MIT", 3918 - "bin": { 3919 - "nanoid": "bin/nanoid.cjs" 3920 - }, 3921 - "engines": { 3922 - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 3923 - } 3924 - }, 3925 - "node_modules/natural-compare": { 3926 - "version": "1.4.0", 3927 - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 3928 - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", 3929 - "dev": true, 3930 - "license": "MIT" 3931 - }, 3932 - "node_modules/node-exports-info": { 3933 - "version": "1.6.0", 3934 - "resolved": "https://registry.npmjs.org/node-exports-info/-/node-exports-info-1.6.0.tgz", 3935 - "integrity": "sha512-pyFS63ptit/P5WqUkt+UUfe+4oevH+bFeIiPPdfb0pFeYEu/1ELnJu5l+5EcTKYL5M7zaAa7S8ddywgXypqKCw==", 3936 - "dev": true, 3937 - "license": "MIT", 3938 - "dependencies": { 3939 - "array.prototype.flatmap": "^1.3.3", 3940 - "es-errors": "^1.3.0", 3941 - "object.entries": "^1.1.9", 3942 - "semver": "^6.3.1" 3943 - }, 3944 - "engines": { 3945 - "node": ">= 0.4" 3946 - }, 3947 - "funding": { 3948 - "url": "https://github.com/sponsors/ljharb" 3949 - } 3950 - }, 3951 - "node_modules/node-releases": { 3952 - "version": "2.0.27", 3953 - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", 3954 - "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", 3955 - "dev": true, 3956 - "license": "MIT" 3957 - }, 3958 - "node_modules/object-assign": { 3959 - "version": "4.1.1", 3960 - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 3961 - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", 3962 - "dev": true, 3963 - "license": "MIT", 3964 - "engines": { 3965 - "node": ">=0.10.0" 3966 - } 3967 - }, 3968 - "node_modules/object-inspect": { 3969 - "version": "1.13.4", 3970 - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", 3971 - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", 3972 - "dev": true, 3973 - "license": "MIT", 3974 - "engines": { 3975 - "node": ">= 0.4" 3976 - }, 3977 - "funding": { 3978 - "url": "https://github.com/sponsors/ljharb" 3979 - } 3980 - }, 3981 - "node_modules/object-keys": { 3982 - "version": "1.1.1", 3983 - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", 3984 - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", 3985 - "dev": true, 3986 - "license": "MIT", 3987 - "engines": { 3988 - "node": ">= 0.4" 3989 - } 3990 - }, 3991 - "node_modules/object.assign": { 3992 - "version": "4.1.7", 3993 - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", 3994 - "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", 3995 - "dev": true, 3996 - "license": "MIT", 3997 - "dependencies": { 3998 - "call-bind": "^1.0.8", 3999 - "call-bound": "^1.0.3", 4000 - "define-properties": "^1.2.1", 4001 - "es-object-atoms": "^1.0.0", 4002 - "has-symbols": "^1.1.0", 4003 - "object-keys": "^1.1.1" 4004 - }, 4005 - "engines": { 4006 - "node": ">= 0.4" 4007 - }, 4008 - "funding": { 4009 - "url": "https://github.com/sponsors/ljharb" 4010 - } 4011 - }, 4012 - "node_modules/object.entries": { 4013 - "version": "1.1.9", 4014 - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", 4015 - "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", 4016 - "dev": true, 4017 - "license": "MIT", 4018 - "dependencies": { 4019 - "call-bind": "^1.0.8", 4020 - "call-bound": "^1.0.4", 4021 - "define-properties": "^1.2.1", 4022 - "es-object-atoms": "^1.1.1" 4023 - }, 4024 - "engines": { 4025 - "node": ">= 0.4" 4026 - } 4027 - }, 4028 - "node_modules/object.fromentries": { 4029 - "version": "2.0.8", 4030 - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", 4031 - "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", 4032 - "dev": true, 4033 - "license": "MIT", 4034 - "dependencies": { 4035 - "call-bind": "^1.0.7", 4036 - "define-properties": "^1.2.1", 4037 - "es-abstract": "^1.23.2", 4038 - "es-object-atoms": "^1.0.0" 4039 - }, 4040 - "engines": { 4041 - "node": ">= 0.4" 4042 - }, 4043 - "funding": { 4044 - "url": "https://github.com/sponsors/ljharb" 4045 - } 4046 - }, 4047 - "node_modules/object.values": { 4048 - "version": "1.2.1", 4049 - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", 4050 - "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", 4051 - "dev": true, 4052 - "license": "MIT", 4053 - "dependencies": { 4054 - "call-bind": "^1.0.8", 4055 - "call-bound": "^1.0.3", 4056 - "define-properties": "^1.2.1", 4057 - "es-object-atoms": "^1.0.0" 4058 - }, 4059 - "engines": { 4060 - "node": ">= 0.4" 4061 - }, 4062 - "funding": { 4063 - "url": "https://github.com/sponsors/ljharb" 4064 - } 4065 - }, 4066 - "node_modules/optionator": { 4067 - "version": "0.9.4", 4068 - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", 4069 - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", 4070 - "dev": true, 4071 - "license": "MIT", 4072 - "dependencies": { 4073 - "deep-is": "^0.1.3", 4074 - "fast-levenshtein": "^2.0.6", 4075 - "levn": "^0.4.1", 4076 - "prelude-ls": "^1.2.1", 4077 - "type-check": "^0.4.0", 4078 - "word-wrap": "^1.2.5" 4079 - }, 4080 - "engines": { 4081 - "node": ">= 0.8.0" 4082 - } 4083 - }, 4084 - "node_modules/own-keys": { 4085 - "version": "1.0.1", 4086 - "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", 4087 - "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", 4088 - "dev": true, 4089 - "license": "MIT", 4090 - "dependencies": { 4091 - "get-intrinsic": "^1.2.6", 4092 - "object-keys": "^1.1.1", 4093 - "safe-push-apply": "^1.0.0" 4094 - }, 4095 - "engines": { 4096 - "node": ">= 0.4" 4097 - }, 4098 - "funding": { 4099 - "url": "https://github.com/sponsors/ljharb" 4100 - } 4101 - }, 4102 - "node_modules/p-limit": { 4103 - "version": "3.1.0", 4104 - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 4105 - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 4106 - "dev": true, 4107 - "license": "MIT", 4108 - "dependencies": { 4109 - "yocto-queue": "^0.1.0" 4110 - }, 4111 - "engines": { 4112 - "node": ">=10" 4113 - }, 4114 - "funding": { 4115 - "url": "https://github.com/sponsors/sindresorhus" 4116 - } 4117 - }, 4118 - "node_modules/p-locate": { 4119 - "version": "5.0.0", 4120 - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 4121 - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 4122 - "dev": true, 4123 - "license": "MIT", 4124 - "dependencies": { 4125 - "p-limit": "^3.0.2" 4126 - }, 4127 - "engines": { 4128 - "node": ">=10" 4129 - }, 4130 - "funding": { 4131 - "url": "https://github.com/sponsors/sindresorhus" 4132 - } 4133 - }, 4134 - "node_modules/parent-module": { 4135 - "version": "1.0.1", 4136 - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 4137 - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 4138 - "dev": true, 4139 - "license": "MIT", 4140 - "dependencies": { 4141 - "callsites": "^3.0.0" 4142 - }, 4143 - "engines": { 4144 - "node": ">=6" 4145 - } 4146 - }, 4147 - "node_modules/path-exists": { 4148 - "version": "4.0.0", 4149 - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 4150 - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 4151 - "dev": true, 4152 - "license": "MIT", 4153 - "engines": { 4154 - "node": ">=8" 4155 - } 4156 - }, 4157 - "node_modules/path-key": { 4158 - "version": "3.1.1", 4159 - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 4160 - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 4161 - "dev": true, 4162 - "license": "MIT", 4163 - "engines": { 4164 - "node": ">=8" 4165 - } 4166 - }, 4167 - "node_modules/path-parse": { 4168 - "version": "1.0.7", 4169 - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 4170 - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 4171 - "dev": true, 4172 - "license": "MIT" 4173 - }, 4174 - "node_modules/picocolors": { 4175 - "version": "1.1.1", 4176 - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", 4177 - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", 4178 - "dev": true, 4179 - "license": "ISC" 4180 - }, 4181 - "node_modules/picomatch": { 4182 - "version": "4.0.3", 4183 - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", 4184 - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", 4185 - "dev": true, 4186 - "license": "MIT", 4187 - "engines": { 4188 - "node": ">=12" 4189 - }, 4190 - "funding": { 4191 - "url": "https://github.com/sponsors/jonschlinkert" 4192 - } 4193 - }, 4194 - "node_modules/possible-typed-array-names": { 4195 - "version": "1.1.0", 4196 - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", 4197 - "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", 4198 - "dev": true, 4199 - "license": "MIT", 4200 - "engines": { 4201 - "node": ">= 0.4" 4202 - } 4203 - }, 4204 - "node_modules/postcss": { 4205 - "version": "8.5.6", 4206 - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", 4207 - "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", 4208 - "dev": true, 4209 - "funding": [ 4210 - { 4211 - "type": "opencollective", 4212 - "url": "https://opencollective.com/postcss/" 94 + "node_modules/@babel/generator": { 95 + "version": "7.29.1", 96 + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", 97 + "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", 98 + "dev": true, 99 + "license": "MIT", 100 + "dependencies": { 101 + "@babel/parser": "^7.29.0", 102 + "@babel/types": "^7.29.0", 103 + "@jridgewell/gen-mapping": "^0.3.12", 104 + "@jridgewell/trace-mapping": "^0.3.28", 105 + "jsesc": "^3.0.2" 106 + }, 107 + "engines": { 108 + "node": ">=6.9.0" 109 + } 4213 110 }, 4214 - { 4215 - "type": "tidelift", 4216 - "url": "https://tidelift.com/funding/github/npm/postcss" 111 + "node_modules/@babel/helper-compilation-targets": { 112 + "version": "7.28.6", 113 + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", 114 + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", 115 + "dev": true, 116 + "license": "MIT", 117 + "dependencies": { 118 + "@babel/compat-data": "^7.28.6", 119 + "@babel/helper-validator-option": "^7.27.1", 120 + "browserslist": "^4.24.0", 121 + "lru-cache": "^5.1.1", 122 + "semver": "^6.3.1" 123 + }, 124 + "engines": { 125 + "node": ">=6.9.0" 126 + } 4217 127 }, 4218 - { 4219 - "type": "github", 4220 - "url": "https://github.com/sponsors/ai" 4221 - } 4222 - ], 4223 - "license": "MIT", 4224 - "dependencies": { 4225 - "nanoid": "^3.3.11", 4226 - "picocolors": "^1.1.1", 4227 - "source-map-js": "^1.2.1" 4228 - }, 4229 - "engines": { 4230 - "node": "^10 || ^12 || >=14" 4231 - } 4232 - }, 4233 - "node_modules/prelude-ls": { 4234 - "version": "1.2.1", 4235 - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", 4236 - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", 4237 - "dev": true, 4238 - "license": "MIT", 4239 - "engines": { 4240 - "node": ">= 0.8.0" 4241 - } 4242 - }, 4243 - "node_modules/prettier": { 4244 - "version": "3.8.1", 4245 - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz", 4246 - "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==", 4247 - "dev": true, 4248 - "license": "MIT", 4249 - "bin": { 4250 - "prettier": "bin/prettier.cjs" 4251 - }, 4252 - "engines": { 4253 - "node": ">=14" 4254 - }, 4255 - "funding": { 4256 - "url": "https://github.com/prettier/prettier?sponsor=1" 4257 - } 4258 - }, 4259 - "node_modules/prop-types": { 4260 - "version": "15.8.1", 4261 - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", 4262 - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", 4263 - "dev": true, 4264 - "license": "MIT", 4265 - "dependencies": { 4266 - "loose-envify": "^1.4.0", 4267 - "object-assign": "^4.1.1", 4268 - "react-is": "^16.13.1" 4269 - } 4270 - }, 4271 - "node_modules/punycode": { 4272 - "version": "2.3.1", 4273 - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", 4274 - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", 4275 - "dev": true, 4276 - "license": "MIT", 4277 - "engines": { 4278 - "node": ">=6" 4279 - } 4280 - }, 4281 - "node_modules/react": { 4282 - "version": "19.2.4", 4283 - "resolved": "https://registry.npmjs.org/react/-/react-19.2.4.tgz", 4284 - "integrity": "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==", 4285 - "license": "MIT", 4286 - "engines": { 4287 - "node": ">=0.10.0" 4288 - } 4289 - }, 4290 - "node_modules/react-dom": { 4291 - "version": "19.2.4", 4292 - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.4.tgz", 4293 - "integrity": "sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==", 4294 - "license": "MIT", 4295 - "dependencies": { 4296 - "scheduler": "^0.27.0" 4297 - }, 4298 - "peerDependencies": { 4299 - "react": "^19.2.4" 4300 - } 4301 - }, 4302 - "node_modules/react-is": { 4303 - "version": "16.13.1", 4304 - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", 4305 - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", 4306 - "dev": true, 4307 - "license": "MIT" 4308 - }, 4309 - "node_modules/react-refresh": { 4310 - "version": "0.18.0", 4311 - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.18.0.tgz", 4312 - "integrity": "sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==", 4313 - "dev": true, 4314 - "license": "MIT", 4315 - "engines": { 4316 - "node": ">=0.10.0" 4317 - } 4318 - }, 4319 - "node_modules/reflect.getprototypeof": { 4320 - "version": "1.0.10", 4321 - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", 4322 - "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", 4323 - "dev": true, 4324 - "license": "MIT", 4325 - "dependencies": { 4326 - "call-bind": "^1.0.8", 4327 - "define-properties": "^1.2.1", 4328 - "es-abstract": "^1.23.9", 4329 - "es-errors": "^1.3.0", 4330 - "es-object-atoms": "^1.0.0", 4331 - "get-intrinsic": "^1.2.7", 4332 - "get-proto": "^1.0.1", 4333 - "which-builtin-type": "^1.2.1" 4334 - }, 4335 - "engines": { 4336 - "node": ">= 0.4" 4337 - }, 4338 - "funding": { 4339 - "url": "https://github.com/sponsors/ljharb" 4340 - } 4341 - }, 4342 - "node_modules/regexp.prototype.flags": { 4343 - "version": "1.5.4", 4344 - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", 4345 - "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", 4346 - "dev": true, 4347 - "license": "MIT", 4348 - "dependencies": { 4349 - "call-bind": "^1.0.8", 4350 - "define-properties": "^1.2.1", 4351 - "es-errors": "^1.3.0", 4352 - "get-proto": "^1.0.1", 4353 - "gopd": "^1.2.0", 4354 - "set-function-name": "^2.0.2" 4355 - }, 4356 - "engines": { 4357 - "node": ">= 0.4" 4358 - }, 4359 - "funding": { 4360 - "url": "https://github.com/sponsors/ljharb" 4361 - } 4362 - }, 4363 - "node_modules/resolve": { 4364 - "version": "2.0.0-next.6", 4365 - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.6.tgz", 4366 - "integrity": "sha512-3JmVl5hMGtJ3kMmB3zi3DL25KfkCEyy3Tw7Gmw7z5w8M9WlwoPFnIvwChzu1+cF3iaK3sp18hhPz8ANeimdJfA==", 4367 - "dev": true, 4368 - "license": "MIT", 4369 - "dependencies": { 4370 - "es-errors": "^1.3.0", 4371 - "is-core-module": "^2.16.1", 4372 - "node-exports-info": "^1.6.0", 4373 - "object-keys": "^1.1.1", 4374 - "path-parse": "^1.0.7", 4375 - "supports-preserve-symlinks-flag": "^1.0.0" 4376 - }, 4377 - "bin": { 4378 - "resolve": "bin/resolve" 4379 - }, 4380 - "engines": { 4381 - "node": ">= 0.4" 4382 - }, 4383 - "funding": { 4384 - "url": "https://github.com/sponsors/ljharb" 4385 - } 4386 - }, 4387 - "node_modules/resolve-from": { 4388 - "version": "4.0.0", 4389 - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 4390 - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 4391 - "dev": true, 4392 - "license": "MIT", 4393 - "engines": { 4394 - "node": ">=4" 4395 - } 4396 - }, 4397 - "node_modules/rollup": { 4398 - "version": "4.57.1", 4399 - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.57.1.tgz", 4400 - "integrity": "sha512-oQL6lgK3e2QZeQ7gcgIkS2YZPg5slw37hYufJ3edKlfQSGGm8ICoxswK15ntSzF/a8+h7ekRy7k7oWc3BQ7y8A==", 4401 - "dev": true, 4402 - "license": "MIT", 4403 - "dependencies": { 4404 - "@types/estree": "1.0.8" 4405 - }, 4406 - "bin": { 4407 - "rollup": "dist/bin/rollup" 4408 - }, 4409 - "engines": { 4410 - "node": ">=18.0.0", 4411 - "npm": ">=8.0.0" 4412 - }, 4413 - "optionalDependencies": { 4414 - "@rollup/rollup-android-arm-eabi": "4.57.1", 4415 - "@rollup/rollup-android-arm64": "4.57.1", 4416 - "@rollup/rollup-darwin-arm64": "4.57.1", 4417 - "@rollup/rollup-darwin-x64": "4.57.1", 4418 - "@rollup/rollup-freebsd-arm64": "4.57.1", 4419 - "@rollup/rollup-freebsd-x64": "4.57.1", 4420 - "@rollup/rollup-linux-arm-gnueabihf": "4.57.1", 4421 - "@rollup/rollup-linux-arm-musleabihf": "4.57.1", 4422 - "@rollup/rollup-linux-arm64-gnu": "4.57.1", 4423 - "@rollup/rollup-linux-arm64-musl": "4.57.1", 4424 - "@rollup/rollup-linux-loong64-gnu": "4.57.1", 4425 - "@rollup/rollup-linux-loong64-musl": "4.57.1", 4426 - "@rollup/rollup-linux-ppc64-gnu": "4.57.1", 4427 - "@rollup/rollup-linux-ppc64-musl": "4.57.1", 4428 - "@rollup/rollup-linux-riscv64-gnu": "4.57.1", 4429 - "@rollup/rollup-linux-riscv64-musl": "4.57.1", 4430 - "@rollup/rollup-linux-s390x-gnu": "4.57.1", 4431 - "@rollup/rollup-linux-x64-gnu": "4.57.1", 4432 - "@rollup/rollup-linux-x64-musl": "4.57.1", 4433 - "@rollup/rollup-openbsd-x64": "4.57.1", 4434 - "@rollup/rollup-openharmony-arm64": "4.57.1", 4435 - "@rollup/rollup-win32-arm64-msvc": "4.57.1", 4436 - "@rollup/rollup-win32-ia32-msvc": "4.57.1", 4437 - "@rollup/rollup-win32-x64-gnu": "4.57.1", 4438 - "@rollup/rollup-win32-x64-msvc": "4.57.1", 4439 - "fsevents": "~2.3.2" 4440 - } 4441 - }, 4442 - "node_modules/safe-array-concat": { 4443 - "version": "1.1.3", 4444 - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", 4445 - "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", 4446 - "dev": true, 4447 - "license": "MIT", 4448 - "dependencies": { 4449 - "call-bind": "^1.0.8", 4450 - "call-bound": "^1.0.2", 4451 - "get-intrinsic": "^1.2.6", 4452 - "has-symbols": "^1.1.0", 4453 - "isarray": "^2.0.5" 4454 - }, 4455 - "engines": { 4456 - "node": ">=0.4" 4457 - }, 4458 - "funding": { 4459 - "url": "https://github.com/sponsors/ljharb" 4460 - } 4461 - }, 4462 - "node_modules/safe-push-apply": { 4463 - "version": "1.0.0", 4464 - "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", 4465 - "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", 4466 - "dev": true, 4467 - "license": "MIT", 4468 - "dependencies": { 4469 - "es-errors": "^1.3.0", 4470 - "isarray": "^2.0.5" 4471 - }, 4472 - "engines": { 4473 - "node": ">= 0.4" 4474 - }, 4475 - "funding": { 4476 - "url": "https://github.com/sponsors/ljharb" 4477 - } 4478 - }, 4479 - "node_modules/safe-regex-test": { 4480 - "version": "1.1.0", 4481 - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", 4482 - "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", 4483 - "dev": true, 4484 - "license": "MIT", 4485 - "dependencies": { 4486 - "call-bound": "^1.0.2", 4487 - "es-errors": "^1.3.0", 4488 - "is-regex": "^1.2.1" 4489 - }, 4490 - "engines": { 4491 - "node": ">= 0.4" 4492 - }, 4493 - "funding": { 4494 - "url": "https://github.com/sponsors/ljharb" 4495 - } 4496 - }, 4497 - "node_modules/scheduler": { 4498 - "version": "0.27.0", 4499 - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", 4500 - "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", 4501 - "license": "MIT" 4502 - }, 4503 - "node_modules/semver": { 4504 - "version": "6.3.1", 4505 - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", 4506 - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", 4507 - "dev": true, 4508 - "license": "ISC", 4509 - "bin": { 4510 - "semver": "bin/semver.js" 4511 - } 4512 - }, 4513 - "node_modules/set-function-length": { 4514 - "version": "1.2.2", 4515 - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", 4516 - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", 4517 - "dev": true, 4518 - "license": "MIT", 4519 - "dependencies": { 4520 - "define-data-property": "^1.1.4", 4521 - "es-errors": "^1.3.0", 4522 - "function-bind": "^1.1.2", 4523 - "get-intrinsic": "^1.2.4", 4524 - "gopd": "^1.0.1", 4525 - "has-property-descriptors": "^1.0.2" 4526 - }, 4527 - "engines": { 4528 - "node": ">= 0.4" 4529 - } 4530 - }, 4531 - "node_modules/set-function-name": { 4532 - "version": "2.0.2", 4533 - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", 4534 - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", 4535 - "dev": true, 4536 - "license": "MIT", 4537 - "dependencies": { 4538 - "define-data-property": "^1.1.4", 4539 - "es-errors": "^1.3.0", 4540 - "functions-have-names": "^1.2.3", 4541 - "has-property-descriptors": "^1.0.2" 4542 - }, 4543 - "engines": { 4544 - "node": ">= 0.4" 4545 - } 4546 - }, 4547 - "node_modules/set-proto": { 4548 - "version": "1.0.0", 4549 - "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", 4550 - "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", 4551 - "dev": true, 4552 - "license": "MIT", 4553 - "dependencies": { 4554 - "dunder-proto": "^1.0.1", 4555 - "es-errors": "^1.3.0", 4556 - "es-object-atoms": "^1.0.0" 4557 - }, 4558 - "engines": { 4559 - "node": ">= 0.4" 4560 - } 4561 - }, 4562 - "node_modules/shebang-command": { 4563 - "version": "2.0.0", 4564 - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 4565 - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 4566 - "dev": true, 4567 - "license": "MIT", 4568 - "dependencies": { 4569 - "shebang-regex": "^3.0.0" 4570 - }, 4571 - "engines": { 4572 - "node": ">=8" 4573 - } 4574 - }, 4575 - "node_modules/shebang-regex": { 4576 - "version": "3.0.0", 4577 - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 4578 - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 4579 - "dev": true, 4580 - "license": "MIT", 4581 - "engines": { 4582 - "node": ">=8" 4583 - } 4584 - }, 4585 - "node_modules/side-channel": { 4586 - "version": "1.1.0", 4587 - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", 4588 - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", 4589 - "dev": true, 4590 - "license": "MIT", 4591 - "dependencies": { 4592 - "es-errors": "^1.3.0", 4593 - "object-inspect": "^1.13.3", 4594 - "side-channel-list": "^1.0.0", 4595 - "side-channel-map": "^1.0.1", 4596 - "side-channel-weakmap": "^1.0.2" 4597 - }, 4598 - "engines": { 4599 - "node": ">= 0.4" 4600 - }, 4601 - "funding": { 4602 - "url": "https://github.com/sponsors/ljharb" 4603 - } 4604 - }, 4605 - "node_modules/side-channel-list": { 4606 - "version": "1.0.0", 4607 - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", 4608 - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", 4609 - "dev": true, 4610 - "license": "MIT", 4611 - "dependencies": { 4612 - "es-errors": "^1.3.0", 4613 - "object-inspect": "^1.13.3" 4614 - }, 4615 - "engines": { 4616 - "node": ">= 0.4" 4617 - }, 4618 - "funding": { 4619 - "url": "https://github.com/sponsors/ljharb" 4620 - } 4621 - }, 4622 - "node_modules/side-channel-map": { 4623 - "version": "1.0.1", 4624 - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", 4625 - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", 4626 - "dev": true, 4627 - "license": "MIT", 4628 - "dependencies": { 4629 - "call-bound": "^1.0.2", 4630 - "es-errors": "^1.3.0", 4631 - "get-intrinsic": "^1.2.5", 4632 - "object-inspect": "^1.13.3" 4633 - }, 4634 - "engines": { 4635 - "node": ">= 0.4" 4636 - }, 4637 - "funding": { 4638 - "url": "https://github.com/sponsors/ljharb" 4639 - } 4640 - }, 4641 - "node_modules/side-channel-weakmap": { 4642 - "version": "1.0.2", 4643 - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", 4644 - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", 4645 - "dev": true, 4646 - "license": "MIT", 4647 - "dependencies": { 4648 - "call-bound": "^1.0.2", 4649 - "es-errors": "^1.3.0", 4650 - "get-intrinsic": "^1.2.5", 4651 - "object-inspect": "^1.13.3", 4652 - "side-channel-map": "^1.0.1" 4653 - }, 4654 - "engines": { 4655 - "node": ">= 0.4" 4656 - }, 4657 - "funding": { 4658 - "url": "https://github.com/sponsors/ljharb" 4659 - } 4660 - }, 4661 - "node_modules/source-map-js": { 4662 - "version": "1.2.1", 4663 - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", 4664 - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", 4665 - "dev": true, 4666 - "license": "BSD-3-Clause", 4667 - "engines": { 4668 - "node": ">=0.10.0" 4669 - } 4670 - }, 4671 - "node_modules/stop-iteration-iterator": { 4672 - "version": "1.1.0", 4673 - "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", 4674 - "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", 4675 - "dev": true, 4676 - "license": "MIT", 4677 - "dependencies": { 4678 - "es-errors": "^1.3.0", 4679 - "internal-slot": "^1.1.0" 4680 - }, 4681 - "engines": { 4682 - "node": ">= 0.4" 4683 - } 4684 - }, 4685 - "node_modules/string.prototype.matchall": { 4686 - "version": "4.0.12", 4687 - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", 4688 - "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", 4689 - "dev": true, 4690 - "license": "MIT", 4691 - "dependencies": { 4692 - "call-bind": "^1.0.8", 4693 - "call-bound": "^1.0.3", 4694 - "define-properties": "^1.2.1", 4695 - "es-abstract": "^1.23.6", 4696 - "es-errors": "^1.3.0", 4697 - "es-object-atoms": "^1.0.0", 4698 - "get-intrinsic": "^1.2.6", 4699 - "gopd": "^1.2.0", 4700 - "has-symbols": "^1.1.0", 4701 - "internal-slot": "^1.1.0", 4702 - "regexp.prototype.flags": "^1.5.3", 4703 - "set-function-name": "^2.0.2", 4704 - "side-channel": "^1.1.0" 4705 - }, 4706 - "engines": { 4707 - "node": ">= 0.4" 4708 - }, 4709 - "funding": { 4710 - "url": "https://github.com/sponsors/ljharb" 4711 - } 4712 - }, 4713 - "node_modules/string.prototype.repeat": { 4714 - "version": "1.0.0", 4715 - "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", 4716 - "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", 4717 - "dev": true, 4718 - "license": "MIT", 4719 - "dependencies": { 4720 - "define-properties": "^1.1.3", 4721 - "es-abstract": "^1.17.5" 4722 - } 4723 - }, 4724 - "node_modules/string.prototype.trim": { 4725 - "version": "1.2.10", 4726 - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", 4727 - "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", 4728 - "dev": true, 4729 - "license": "MIT", 4730 - "dependencies": { 4731 - "call-bind": "^1.0.8", 4732 - "call-bound": "^1.0.2", 4733 - "define-data-property": "^1.1.4", 4734 - "define-properties": "^1.2.1", 4735 - "es-abstract": "^1.23.5", 4736 - "es-object-atoms": "^1.0.0", 4737 - "has-property-descriptors": "^1.0.2" 4738 - }, 4739 - "engines": { 4740 - "node": ">= 0.4" 4741 - }, 4742 - "funding": { 4743 - "url": "https://github.com/sponsors/ljharb" 4744 - } 4745 - }, 4746 - "node_modules/string.prototype.trimend": { 4747 - "version": "1.0.9", 4748 - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", 4749 - "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", 4750 - "dev": true, 4751 - "license": "MIT", 4752 - "dependencies": { 4753 - "call-bind": "^1.0.8", 4754 - "call-bound": "^1.0.2", 4755 - "define-properties": "^1.2.1", 4756 - "es-object-atoms": "^1.0.0" 4757 - }, 4758 - "engines": { 4759 - "node": ">= 0.4" 4760 - }, 4761 - "funding": { 4762 - "url": "https://github.com/sponsors/ljharb" 4763 - } 4764 - }, 4765 - "node_modules/string.prototype.trimstart": { 4766 - "version": "1.0.8", 4767 - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", 4768 - "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", 4769 - "dev": true, 4770 - "license": "MIT", 4771 - "dependencies": { 4772 - "call-bind": "^1.0.7", 4773 - "define-properties": "^1.2.1", 4774 - "es-object-atoms": "^1.0.0" 4775 - }, 4776 - "engines": { 4777 - "node": ">= 0.4" 4778 - }, 4779 - "funding": { 4780 - "url": "https://github.com/sponsors/ljharb" 4781 - } 4782 - }, 4783 - "node_modules/strip-json-comments": { 4784 - "version": "3.1.1", 4785 - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 4786 - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 4787 - "dev": true, 4788 - "license": "MIT", 4789 - "engines": { 4790 - "node": ">=8" 4791 - }, 4792 - "funding": { 4793 - "url": "https://github.com/sponsors/sindresorhus" 4794 - } 4795 - }, 4796 - "node_modules/supports-color": { 4797 - "version": "7.2.0", 4798 - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 4799 - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 4800 - "dev": true, 4801 - "license": "MIT", 4802 - "dependencies": { 4803 - "has-flag": "^4.0.0" 4804 - }, 4805 - "engines": { 4806 - "node": ">=8" 4807 - } 4808 - }, 4809 - "node_modules/supports-preserve-symlinks-flag": { 4810 - "version": "1.0.0", 4811 - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 4812 - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 4813 - "dev": true, 4814 - "license": "MIT", 4815 - "engines": { 4816 - "node": ">= 0.4" 4817 - }, 4818 - "funding": { 4819 - "url": "https://github.com/sponsors/ljharb" 4820 - } 4821 - }, 4822 - "node_modules/swr": { 4823 - "version": "2.4.0", 4824 - "resolved": "https://registry.npmjs.org/swr/-/swr-2.4.0.tgz", 4825 - "integrity": "sha512-sUlC20T8EOt1pHmDiqueUWMmRRX03W7w5YxovWX7VR2KHEPCTMly85x05vpkP5i6Bu4h44ePSMD9Tc+G2MItFw==", 4826 - "license": "MIT", 4827 - "dependencies": { 4828 - "dequal": "^2.0.3", 4829 - "use-sync-external-store": "^1.6.0" 4830 - }, 4831 - "peerDependencies": { 4832 - "react": "^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" 4833 - } 4834 - }, 4835 - "node_modules/tinyglobby": { 4836 - "version": "0.2.15", 4837 - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", 4838 - "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", 4839 - "dev": true, 4840 - "license": "MIT", 4841 - "dependencies": { 4842 - "fdir": "^6.5.0", 4843 - "picomatch": "^4.0.3" 4844 - }, 4845 - "engines": { 4846 - "node": ">=12.0.0" 4847 - }, 4848 - "funding": { 4849 - "url": "https://github.com/sponsors/SuperchupuDev" 4850 - } 4851 - }, 4852 - "node_modules/ts-api-utils": { 4853 - "version": "2.4.0", 4854 - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.4.0.tgz", 4855 - "integrity": "sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==", 4856 - "dev": true, 4857 - "license": "MIT", 4858 - "engines": { 4859 - "node": ">=18.12" 4860 - }, 4861 - "peerDependencies": { 4862 - "typescript": ">=4.8.4" 4863 - } 4864 - }, 4865 - "node_modules/type-check": { 4866 - "version": "0.4.0", 4867 - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", 4868 - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", 4869 - "dev": true, 4870 - "license": "MIT", 4871 - "dependencies": { 4872 - "prelude-ls": "^1.2.1" 4873 - }, 4874 - "engines": { 4875 - "node": ">= 0.8.0" 4876 - } 4877 - }, 4878 - "node_modules/typed-array-buffer": { 4879 - "version": "1.0.3", 4880 - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", 4881 - "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", 4882 - "dev": true, 4883 - "license": "MIT", 4884 - "dependencies": { 4885 - "call-bound": "^1.0.3", 4886 - "es-errors": "^1.3.0", 4887 - "is-typed-array": "^1.1.14" 4888 - }, 4889 - "engines": { 4890 - "node": ">= 0.4" 4891 - } 4892 - }, 4893 - "node_modules/typed-array-byte-length": { 4894 - "version": "1.0.3", 4895 - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", 4896 - "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", 4897 - "dev": true, 4898 - "license": "MIT", 4899 - "dependencies": { 4900 - "call-bind": "^1.0.8", 4901 - "for-each": "^0.3.3", 4902 - "gopd": "^1.2.0", 4903 - "has-proto": "^1.2.0", 4904 - "is-typed-array": "^1.1.14" 4905 - }, 4906 - "engines": { 4907 - "node": ">= 0.4" 4908 - }, 4909 - "funding": { 4910 - "url": "https://github.com/sponsors/ljharb" 4911 - } 4912 - }, 4913 - "node_modules/typed-array-byte-offset": { 4914 - "version": "1.0.4", 4915 - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", 4916 - "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", 4917 - "dev": true, 4918 - "license": "MIT", 4919 - "dependencies": { 4920 - "available-typed-arrays": "^1.0.7", 4921 - "call-bind": "^1.0.8", 4922 - "for-each": "^0.3.3", 4923 - "gopd": "^1.2.0", 4924 - "has-proto": "^1.2.0", 4925 - "is-typed-array": "^1.1.15", 4926 - "reflect.getprototypeof": "^1.0.9" 4927 - }, 4928 - "engines": { 4929 - "node": ">= 0.4" 4930 - }, 4931 - "funding": { 4932 - "url": "https://github.com/sponsors/ljharb" 4933 - } 4934 - }, 4935 - "node_modules/typed-array-length": { 4936 - "version": "1.0.7", 4937 - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", 4938 - "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", 4939 - "dev": true, 4940 - "license": "MIT", 4941 - "dependencies": { 4942 - "call-bind": "^1.0.7", 4943 - "for-each": "^0.3.3", 4944 - "gopd": "^1.0.1", 4945 - "is-typed-array": "^1.1.13", 4946 - "possible-typed-array-names": "^1.0.0", 4947 - "reflect.getprototypeof": "^1.0.6" 4948 - }, 4949 - "engines": { 4950 - "node": ">= 0.4" 4951 - }, 4952 - "funding": { 4953 - "url": "https://github.com/sponsors/ljharb" 4954 - } 4955 - }, 4956 - "node_modules/typescript": { 4957 - "version": "5.9.3", 4958 - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", 4959 - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", 4960 - "dev": true, 4961 - "license": "Apache-2.0", 4962 - "bin": { 4963 - "tsc": "bin/tsc", 4964 - "tsserver": "bin/tsserver" 4965 - }, 4966 - "engines": { 4967 - "node": ">=14.17" 4968 - } 4969 - }, 4970 - "node_modules/typescript-eslint": { 4971 - "version": "8.56.0", 4972 - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.56.0.tgz", 4973 - "integrity": "sha512-c7toRLrotJ9oixgdW7liukZpsnq5CZ7PuKztubGYlNppuTqhIoWfhgHo/7EU0v06gS2l/x0i2NEFK1qMIf0rIg==", 4974 - "dev": true, 4975 - "license": "MIT", 4976 - "dependencies": { 4977 - "@typescript-eslint/eslint-plugin": "8.56.0", 4978 - "@typescript-eslint/parser": "8.56.0", 4979 - "@typescript-eslint/typescript-estree": "8.56.0", 4980 - "@typescript-eslint/utils": "8.56.0" 4981 - }, 4982 - "engines": { 4983 - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 4984 - }, 4985 - "funding": { 4986 - "type": "opencollective", 4987 - "url": "https://opencollective.com/typescript-eslint" 4988 - }, 4989 - "peerDependencies": { 4990 - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", 4991 - "typescript": ">=4.8.4 <6.0.0" 4992 - } 4993 - }, 4994 - "node_modules/unbox-primitive": { 4995 - "version": "1.1.0", 4996 - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", 4997 - "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", 4998 - "dev": true, 4999 - "license": "MIT", 5000 - "dependencies": { 5001 - "call-bound": "^1.0.3", 5002 - "has-bigints": "^1.0.2", 5003 - "has-symbols": "^1.1.0", 5004 - "which-boxed-primitive": "^1.1.1" 5005 - }, 5006 - "engines": { 5007 - "node": ">= 0.4" 5008 - }, 5009 - "funding": { 5010 - "url": "https://github.com/sponsors/ljharb" 5011 - } 5012 - }, 5013 - "node_modules/undici-types": { 5014 - "version": "7.16.0", 5015 - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", 5016 - "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", 5017 - "dev": true, 5018 - "license": "MIT" 5019 - }, 5020 - "node_modules/update-browserslist-db": { 5021 - "version": "1.2.3", 5022 - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", 5023 - "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", 5024 - "dev": true, 5025 - "funding": [ 5026 - { 5027 - "type": "opencollective", 5028 - "url": "https://opencollective.com/browserslist" 128 + "node_modules/@babel/helper-globals": { 129 + "version": "7.28.0", 130 + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", 131 + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", 132 + "dev": true, 133 + "license": "MIT", 134 + "engines": { 135 + "node": ">=6.9.0" 136 + } 137 + }, 138 + "node_modules/@babel/helper-module-imports": { 139 + "version": "7.28.6", 140 + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", 141 + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", 142 + "dev": true, 143 + "license": "MIT", 144 + "dependencies": { 145 + "@babel/traverse": "^7.28.6", 146 + "@babel/types": "^7.28.6" 147 + }, 148 + "engines": { 149 + "node": ">=6.9.0" 150 + } 151 + }, 152 + "node_modules/@babel/helper-module-transforms": { 153 + "version": "7.28.6", 154 + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", 155 + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", 156 + "dev": true, 157 + "license": "MIT", 158 + "dependencies": { 159 + "@babel/helper-module-imports": "^7.28.6", 160 + "@babel/helper-validator-identifier": "^7.28.5", 161 + "@babel/traverse": "^7.28.6" 162 + }, 163 + "engines": { 164 + "node": ">=6.9.0" 165 + }, 166 + "peerDependencies": { 167 + "@babel/core": "^7.0.0" 168 + } 169 + }, 170 + "node_modules/@babel/helper-plugin-utils": { 171 + "version": "7.28.6", 172 + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", 173 + "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", 174 + "dev": true, 175 + "license": "MIT", 176 + "engines": { 177 + "node": ">=6.9.0" 178 + } 179 + }, 180 + "node_modules/@babel/helper-string-parser": { 181 + "version": "7.27.1", 182 + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", 183 + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", 184 + "dev": true, 185 + "license": "MIT", 186 + "engines": { 187 + "node": ">=6.9.0" 188 + } 189 + }, 190 + "node_modules/@babel/helper-validator-identifier": { 191 + "version": "7.28.5", 192 + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", 193 + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", 194 + "dev": true, 195 + "license": "MIT", 196 + "engines": { 197 + "node": ">=6.9.0" 198 + } 199 + }, 200 + "node_modules/@babel/helper-validator-option": { 201 + "version": "7.27.1", 202 + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", 203 + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", 204 + "dev": true, 205 + "license": "MIT", 206 + "engines": { 207 + "node": ">=6.9.0" 208 + } 209 + }, 210 + "node_modules/@babel/helpers": { 211 + "version": "7.28.6", 212 + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz", 213 + "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==", 214 + "dev": true, 215 + "license": "MIT", 216 + "dependencies": { 217 + "@babel/template": "^7.28.6", 218 + "@babel/types": "^7.28.6" 219 + }, 220 + "engines": { 221 + "node": ">=6.9.0" 222 + } 223 + }, 224 + "node_modules/@babel/parser": { 225 + "version": "7.29.0", 226 + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz", 227 + "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==", 228 + "dev": true, 229 + "license": "MIT", 230 + "dependencies": { 231 + "@babel/types": "^7.29.0" 232 + }, 233 + "bin": { 234 + "parser": "bin/babel-parser.js" 235 + }, 236 + "engines": { 237 + "node": ">=6.0.0" 238 + } 239 + }, 240 + "node_modules/@babel/plugin-transform-react-jsx-self": { 241 + "version": "7.27.1", 242 + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", 243 + "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", 244 + "dev": true, 245 + "license": "MIT", 246 + "dependencies": { 247 + "@babel/helper-plugin-utils": "^7.27.1" 248 + }, 249 + "engines": { 250 + "node": ">=6.9.0" 251 + }, 252 + "peerDependencies": { 253 + "@babel/core": "^7.0.0-0" 254 + } 255 + }, 256 + "node_modules/@babel/plugin-transform-react-jsx-source": { 257 + "version": "7.27.1", 258 + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", 259 + "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", 260 + "dev": true, 261 + "license": "MIT", 262 + "dependencies": { 263 + "@babel/helper-plugin-utils": "^7.27.1" 264 + }, 265 + "engines": { 266 + "node": ">=6.9.0" 267 + }, 268 + "peerDependencies": { 269 + "@babel/core": "^7.0.0-0" 270 + } 271 + }, 272 + "node_modules/@babel/template": { 273 + "version": "7.28.6", 274 + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", 275 + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", 276 + "dev": true, 277 + "license": "MIT", 278 + "dependencies": { 279 + "@babel/code-frame": "^7.28.6", 280 + "@babel/parser": "^7.28.6", 281 + "@babel/types": "^7.28.6" 282 + }, 283 + "engines": { 284 + "node": ">=6.9.0" 285 + } 286 + }, 287 + "node_modules/@babel/traverse": { 288 + "version": "7.29.0", 289 + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", 290 + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", 291 + "dev": true, 292 + "license": "MIT", 293 + "dependencies": { 294 + "@babel/code-frame": "^7.29.0", 295 + "@babel/generator": "^7.29.0", 296 + "@babel/helper-globals": "^7.28.0", 297 + "@babel/parser": "^7.29.0", 298 + "@babel/template": "^7.28.6", 299 + "@babel/types": "^7.29.0", 300 + "debug": "^4.3.1" 301 + }, 302 + "engines": { 303 + "node": ">=6.9.0" 304 + } 305 + }, 306 + "node_modules/@babel/types": { 307 + "version": "7.29.0", 308 + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", 309 + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", 310 + "dev": true, 311 + "license": "MIT", 312 + "dependencies": { 313 + "@babel/helper-string-parser": "^7.27.1", 314 + "@babel/helper-validator-identifier": "^7.28.5" 315 + }, 316 + "engines": { 317 + "node": ">=6.9.0" 318 + } 319 + }, 320 + "node_modules/@esbuild/aix-ppc64": { 321 + "version": "0.27.3", 322 + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.3.tgz", 323 + "integrity": "sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==", 324 + "cpu": [ 325 + "ppc64" 326 + ], 327 + "dev": true, 328 + "license": "MIT", 329 + "optional": true, 330 + "os": [ 331 + "aix" 332 + ], 333 + "engines": { 334 + "node": ">=18" 335 + } 336 + }, 337 + "node_modules/@esbuild/android-arm": { 338 + "version": "0.27.3", 339 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.3.tgz", 340 + "integrity": "sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==", 341 + "cpu": [ 342 + "arm" 343 + ], 344 + "dev": true, 345 + "license": "MIT", 346 + "optional": true, 347 + "os": [ 348 + "android" 349 + ], 350 + "engines": { 351 + "node": ">=18" 352 + } 353 + }, 354 + "node_modules/@esbuild/android-arm64": { 355 + "version": "0.27.3", 356 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.3.tgz", 357 + "integrity": "sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==", 358 + "cpu": [ 359 + "arm64" 360 + ], 361 + "dev": true, 362 + "license": "MIT", 363 + "optional": true, 364 + "os": [ 365 + "android" 366 + ], 367 + "engines": { 368 + "node": ">=18" 369 + } 370 + }, 371 + "node_modules/@esbuild/android-x64": { 372 + "version": "0.27.3", 373 + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.3.tgz", 374 + "integrity": "sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==", 375 + "cpu": [ 376 + "x64" 377 + ], 378 + "dev": true, 379 + "license": "MIT", 380 + "optional": true, 381 + "os": [ 382 + "android" 383 + ], 384 + "engines": { 385 + "node": ">=18" 386 + } 387 + }, 388 + "node_modules/@esbuild/darwin-arm64": { 389 + "version": "0.27.3", 390 + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.3.tgz", 391 + "integrity": "sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==", 392 + "cpu": [ 393 + "arm64" 394 + ], 395 + "dev": true, 396 + "license": "MIT", 397 + "optional": true, 398 + "os": [ 399 + "darwin" 400 + ], 401 + "engines": { 402 + "node": ">=18" 403 + } 404 + }, 405 + "node_modules/@esbuild/darwin-x64": { 406 + "version": "0.27.3", 407 + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.3.tgz", 408 + "integrity": "sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==", 409 + "cpu": [ 410 + "x64" 411 + ], 412 + "dev": true, 413 + "license": "MIT", 414 + "optional": true, 415 + "os": [ 416 + "darwin" 417 + ], 418 + "engines": { 419 + "node": ">=18" 420 + } 421 + }, 422 + "node_modules/@esbuild/freebsd-arm64": { 423 + "version": "0.27.3", 424 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.3.tgz", 425 + "integrity": "sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==", 426 + "cpu": [ 427 + "arm64" 428 + ], 429 + "dev": true, 430 + "license": "MIT", 431 + "optional": true, 432 + "os": [ 433 + "freebsd" 434 + ], 435 + "engines": { 436 + "node": ">=18" 437 + } 438 + }, 439 + "node_modules/@esbuild/freebsd-x64": { 440 + "version": "0.27.3", 441 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.3.tgz", 442 + "integrity": "sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==", 443 + "cpu": [ 444 + "x64" 445 + ], 446 + "dev": true, 447 + "license": "MIT", 448 + "optional": true, 449 + "os": [ 450 + "freebsd" 451 + ], 452 + "engines": { 453 + "node": ">=18" 454 + } 455 + }, 456 + "node_modules/@esbuild/linux-arm": { 457 + "version": "0.27.3", 458 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.3.tgz", 459 + "integrity": "sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==", 460 + "cpu": [ 461 + "arm" 462 + ], 463 + "dev": true, 464 + "license": "MIT", 465 + "optional": true, 466 + "os": [ 467 + "linux" 468 + ], 469 + "engines": { 470 + "node": ">=18" 471 + } 472 + }, 473 + "node_modules/@esbuild/linux-arm64": { 474 + "version": "0.27.3", 475 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.3.tgz", 476 + "integrity": "sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==", 477 + "cpu": [ 478 + "arm64" 479 + ], 480 + "dev": true, 481 + "license": "MIT", 482 + "optional": true, 483 + "os": [ 484 + "linux" 485 + ], 486 + "engines": { 487 + "node": ">=18" 488 + } 489 + }, 490 + "node_modules/@esbuild/linux-ia32": { 491 + "version": "0.27.3", 492 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.3.tgz", 493 + "integrity": "sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==", 494 + "cpu": [ 495 + "ia32" 496 + ], 497 + "dev": true, 498 + "license": "MIT", 499 + "optional": true, 500 + "os": [ 501 + "linux" 502 + ], 503 + "engines": { 504 + "node": ">=18" 505 + } 506 + }, 507 + "node_modules/@esbuild/linux-loong64": { 508 + "version": "0.27.3", 509 + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.3.tgz", 510 + "integrity": "sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==", 511 + "cpu": [ 512 + "loong64" 513 + ], 514 + "dev": true, 515 + "license": "MIT", 516 + "optional": true, 517 + "os": [ 518 + "linux" 519 + ], 520 + "engines": { 521 + "node": ">=18" 522 + } 523 + }, 524 + "node_modules/@esbuild/linux-mips64el": { 525 + "version": "0.27.3", 526 + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.3.tgz", 527 + "integrity": "sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==", 528 + "cpu": [ 529 + "mips64el" 530 + ], 531 + "dev": true, 532 + "license": "MIT", 533 + "optional": true, 534 + "os": [ 535 + "linux" 536 + ], 537 + "engines": { 538 + "node": ">=18" 539 + } 540 + }, 541 + "node_modules/@esbuild/linux-ppc64": { 542 + "version": "0.27.3", 543 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.3.tgz", 544 + "integrity": "sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==", 545 + "cpu": [ 546 + "ppc64" 547 + ], 548 + "dev": true, 549 + "license": "MIT", 550 + "optional": true, 551 + "os": [ 552 + "linux" 553 + ], 554 + "engines": { 555 + "node": ">=18" 556 + } 557 + }, 558 + "node_modules/@esbuild/linux-riscv64": { 559 + "version": "0.27.3", 560 + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.3.tgz", 561 + "integrity": "sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==", 562 + "cpu": [ 563 + "riscv64" 564 + ], 565 + "dev": true, 566 + "license": "MIT", 567 + "optional": true, 568 + "os": [ 569 + "linux" 570 + ], 571 + "engines": { 572 + "node": ">=18" 573 + } 574 + }, 575 + "node_modules/@esbuild/linux-s390x": { 576 + "version": "0.27.3", 577 + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.3.tgz", 578 + "integrity": "sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==", 579 + "cpu": [ 580 + "s390x" 581 + ], 582 + "dev": true, 583 + "license": "MIT", 584 + "optional": true, 585 + "os": [ 586 + "linux" 587 + ], 588 + "engines": { 589 + "node": ">=18" 590 + } 591 + }, 592 + "node_modules/@esbuild/linux-x64": { 593 + "version": "0.27.3", 594 + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.3.tgz", 595 + "integrity": "sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==", 596 + "cpu": [ 597 + "x64" 598 + ], 599 + "dev": true, 600 + "license": "MIT", 601 + "optional": true, 602 + "os": [ 603 + "linux" 604 + ], 605 + "engines": { 606 + "node": ">=18" 607 + } 608 + }, 609 + "node_modules/@esbuild/netbsd-arm64": { 610 + "version": "0.27.3", 611 + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.3.tgz", 612 + "integrity": "sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==", 613 + "cpu": [ 614 + "arm64" 615 + ], 616 + "dev": true, 617 + "license": "MIT", 618 + "optional": true, 619 + "os": [ 620 + "netbsd" 621 + ], 622 + "engines": { 623 + "node": ">=18" 624 + } 5029 625 }, 5030 - { 5031 - "type": "tidelift", 5032 - "url": "https://tidelift.com/funding/github/npm/browserslist" 626 + "node_modules/@esbuild/netbsd-x64": { 627 + "version": "0.27.3", 628 + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.3.tgz", 629 + "integrity": "sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==", 630 + "cpu": [ 631 + "x64" 632 + ], 633 + "dev": true, 634 + "license": "MIT", 635 + "optional": true, 636 + "os": [ 637 + "netbsd" 638 + ], 639 + "engines": { 640 + "node": ">=18" 641 + } 5033 642 }, 5034 - { 5035 - "type": "github", 5036 - "url": "https://github.com/sponsors/ai" 5037 - } 5038 - ], 5039 - "license": "MIT", 5040 - "dependencies": { 5041 - "escalade": "^3.2.0", 5042 - "picocolors": "^1.1.1" 5043 - }, 5044 - "bin": { 5045 - "update-browserslist-db": "cli.js" 5046 - }, 5047 - "peerDependencies": { 5048 - "browserslist": ">= 4.21.0" 5049 - } 5050 - }, 5051 - "node_modules/uri-js": { 5052 - "version": "4.4.1", 5053 - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 5054 - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 5055 - "dev": true, 5056 - "license": "BSD-2-Clause", 5057 - "dependencies": { 5058 - "punycode": "^2.1.0" 5059 - } 5060 - }, 5061 - "node_modules/use-sync-external-store": { 5062 - "version": "1.6.0", 5063 - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz", 5064 - "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==", 5065 - "license": "MIT", 5066 - "peerDependencies": { 5067 - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" 5068 - } 5069 - }, 5070 - "node_modules/vite": { 5071 - "version": "7.3.1", 5072 - "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz", 5073 - "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==", 5074 - "dev": true, 5075 - "license": "MIT", 5076 - "dependencies": { 5077 - "esbuild": "^0.27.0", 5078 - "fdir": "^6.5.0", 5079 - "picomatch": "^4.0.3", 5080 - "postcss": "^8.5.6", 5081 - "rollup": "^4.43.0", 5082 - "tinyglobby": "^0.2.15" 5083 - }, 5084 - "bin": { 5085 - "vite": "bin/vite.js" 5086 - }, 5087 - "engines": { 5088 - "node": "^20.19.0 || >=22.12.0" 5089 - }, 5090 - "funding": { 5091 - "url": "https://github.com/vitejs/vite?sponsor=1" 5092 - }, 5093 - "optionalDependencies": { 5094 - "fsevents": "~2.3.3" 5095 - }, 5096 - "peerDependencies": { 5097 - "@types/node": "^20.19.0 || >=22.12.0", 5098 - "jiti": ">=1.21.0", 5099 - "less": "^4.0.0", 5100 - "lightningcss": "^1.21.0", 5101 - "sass": "^1.70.0", 5102 - "sass-embedded": "^1.70.0", 5103 - "stylus": ">=0.54.8", 5104 - "sugarss": "^5.0.0", 5105 - "terser": "^5.16.0", 5106 - "tsx": "^4.8.1", 5107 - "yaml": "^2.4.2" 5108 - }, 5109 - "peerDependenciesMeta": { 5110 - "@types/node": { 5111 - "optional": true 643 + "node_modules/@esbuild/openbsd-arm64": { 644 + "version": "0.27.3", 645 + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.3.tgz", 646 + "integrity": "sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==", 647 + "cpu": [ 648 + "arm64" 649 + ], 650 + "dev": true, 651 + "license": "MIT", 652 + "optional": true, 653 + "os": [ 654 + "openbsd" 655 + ], 656 + "engines": { 657 + "node": ">=18" 658 + } 5112 659 }, 5113 - "jiti": { 5114 - "optional": true 660 + "node_modules/@esbuild/openbsd-x64": { 661 + "version": "0.27.3", 662 + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.3.tgz", 663 + "integrity": "sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==", 664 + "cpu": [ 665 + "x64" 666 + ], 667 + "dev": true, 668 + "license": "MIT", 669 + "optional": true, 670 + "os": [ 671 + "openbsd" 672 + ], 673 + "engines": { 674 + "node": ">=18" 675 + } 5115 676 }, 5116 - "less": { 5117 - "optional": true 677 + "node_modules/@esbuild/openharmony-arm64": { 678 + "version": "0.27.3", 679 + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.3.tgz", 680 + "integrity": "sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==", 681 + "cpu": [ 682 + "arm64" 683 + ], 684 + "dev": true, 685 + "license": "MIT", 686 + "optional": true, 687 + "os": [ 688 + "openharmony" 689 + ], 690 + "engines": { 691 + "node": ">=18" 692 + } 5118 693 }, 5119 - "lightningcss": { 5120 - "optional": true 694 + "node_modules/@esbuild/sunos-x64": { 695 + "version": "0.27.3", 696 + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.3.tgz", 697 + "integrity": "sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==", 698 + "cpu": [ 699 + "x64" 700 + ], 701 + "dev": true, 702 + "license": "MIT", 703 + "optional": true, 704 + "os": [ 705 + "sunos" 706 + ], 707 + "engines": { 708 + "node": ">=18" 709 + } 5121 710 }, 5122 - "sass": { 5123 - "optional": true 711 + "node_modules/@esbuild/win32-arm64": { 712 + "version": "0.27.3", 713 + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.3.tgz", 714 + "integrity": "sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==", 715 + "cpu": [ 716 + "arm64" 717 + ], 718 + "dev": true, 719 + "license": "MIT", 720 + "optional": true, 721 + "os": [ 722 + "win32" 723 + ], 724 + "engines": { 725 + "node": ">=18" 726 + } 5124 727 }, 5125 - "sass-embedded": { 5126 - "optional": true 728 + "node_modules/@esbuild/win32-ia32": { 729 + "version": "0.27.3", 730 + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.3.tgz", 731 + "integrity": "sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==", 732 + "cpu": [ 733 + "ia32" 734 + ], 735 + "dev": true, 736 + "license": "MIT", 737 + "optional": true, 738 + "os": [ 739 + "win32" 740 + ], 741 + "engines": { 742 + "node": ">=18" 743 + } 744 + }, 745 + "node_modules/@esbuild/win32-x64": { 746 + "version": "0.27.3", 747 + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.3.tgz", 748 + "integrity": "sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==", 749 + "cpu": [ 750 + "x64" 751 + ], 752 + "dev": true, 753 + "license": "MIT", 754 + "optional": true, 755 + "os": [ 756 + "win32" 757 + ], 758 + "engines": { 759 + "node": ">=18" 760 + } 5127 761 }, 5128 - "stylus": { 5129 - "optional": true 762 + "node_modules/@fontsource/bungee": { 763 + "version": "5.2.7", 764 + "resolved": "https://registry.npmjs.org/@fontsource/bungee/-/bungee-5.2.7.tgz", 765 + "integrity": "sha512-pzUlTXEFdiDM5p0inlWRM+1ovS3vTWG6NplJ65EpfBwZNQmM6wNS6z22tml07+NWKK+e8/FPPupBVbzd0th54w==", 766 + "license": "OFL-1.1", 767 + "funding": { 768 + "url": "https://github.com/sponsors/ayuhito" 769 + } 5130 770 }, 5131 - "sugarss": { 5132 - "optional": true 771 + "node_modules/@jridgewell/gen-mapping": { 772 + "version": "0.3.13", 773 + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", 774 + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", 775 + "dev": true, 776 + "license": "MIT", 777 + "dependencies": { 778 + "@jridgewell/sourcemap-codec": "^1.5.0", 779 + "@jridgewell/trace-mapping": "^0.3.24" 780 + } 5133 781 }, 5134 - "terser": { 5135 - "optional": true 782 + "node_modules/@jridgewell/remapping": { 783 + "version": "2.3.5", 784 + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", 785 + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", 786 + "dev": true, 787 + "license": "MIT", 788 + "dependencies": { 789 + "@jridgewell/gen-mapping": "^0.3.5", 790 + "@jridgewell/trace-mapping": "^0.3.24" 791 + } 5136 792 }, 5137 - "tsx": { 5138 - "optional": true 793 + "node_modules/@jridgewell/resolve-uri": { 794 + "version": "3.1.2", 795 + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", 796 + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", 797 + "dev": true, 798 + "license": "MIT", 799 + "engines": { 800 + "node": ">=6.0.0" 801 + } 5139 802 }, 5140 - "yaml": { 5141 - "optional": true 803 + "node_modules/@jridgewell/sourcemap-codec": { 804 + "version": "1.5.5", 805 + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", 806 + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", 807 + "dev": true, 808 + "license": "MIT" 809 + }, 810 + "node_modules/@jridgewell/trace-mapping": { 811 + "version": "0.3.31", 812 + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", 813 + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", 814 + "dev": true, 815 + "license": "MIT", 816 + "dependencies": { 817 + "@jridgewell/resolve-uri": "^3.1.0", 818 + "@jridgewell/sourcemap-codec": "^1.4.14" 819 + } 820 + }, 821 + "node_modules/@oxlint/binding-android-arm-eabi": { 822 + "version": "1.49.0", 823 + "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm-eabi/-/binding-android-arm-eabi-1.49.0.tgz", 824 + "integrity": "sha512-2WPoh/2oK9r/i2R4o4J18AOrm3HVlWiHZ8TnuCaS4dX8m5ZzRmHW0I3eLxEurQLHWVruhQN7fHgZnah+ag5iQg==", 825 + "cpu": [ 826 + "arm" 827 + ], 828 + "dev": true, 829 + "license": "MIT", 830 + "optional": true, 831 + "os": [ 832 + "android" 833 + ], 834 + "engines": { 835 + "node": "^20.19.0 || >=22.12.0" 836 + } 837 + }, 838 + "node_modules/@oxlint/binding-android-arm64": { 839 + "version": "1.49.0", 840 + "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm64/-/binding-android-arm64-1.49.0.tgz", 841 + "integrity": "sha512-YqJAGvNB11EzoKm1euVhZntb79alhMvWW/j12bYqdvVxn6xzEQWrEDCJg9BPo3A3tBCSUBKH7bVkAiCBqK/L1w==", 842 + "cpu": [ 843 + "arm64" 844 + ], 845 + "dev": true, 846 + "license": "MIT", 847 + "optional": true, 848 + "os": [ 849 + "android" 850 + ], 851 + "engines": { 852 + "node": "^20.19.0 || >=22.12.0" 853 + } 854 + }, 855 + "node_modules/@oxlint/binding-darwin-arm64": { 856 + "version": "1.49.0", 857 + "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-arm64/-/binding-darwin-arm64-1.49.0.tgz", 858 + "integrity": "sha512-WFocCRlvVkMhChCJ2qpJfp1Gj/IjvyjuifH9Pex8m8yHonxxQa3d8DZYreuDQU3T4jvSY8rqhoRqnpc61Nlbxw==", 859 + "cpu": [ 860 + "arm64" 861 + ], 862 + "dev": true, 863 + "license": "MIT", 864 + "optional": true, 865 + "os": [ 866 + "darwin" 867 + ], 868 + "engines": { 869 + "node": "^20.19.0 || >=22.12.0" 870 + } 871 + }, 872 + "node_modules/@oxlint/binding-darwin-x64": { 873 + "version": "1.49.0", 874 + "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-x64/-/binding-darwin-x64-1.49.0.tgz", 875 + "integrity": "sha512-BN0KniwvehbUfYztOMwEDkYoojGm/narf5oJf+/ap+6PnzMeWLezMaVARNIS0j3OdMkjHTEP8s3+GdPJ7WDywQ==", 876 + "cpu": [ 877 + "x64" 878 + ], 879 + "dev": true, 880 + "license": "MIT", 881 + "optional": true, 882 + "os": [ 883 + "darwin" 884 + ], 885 + "engines": { 886 + "node": "^20.19.0 || >=22.12.0" 887 + } 888 + }, 889 + "node_modules/@oxlint/binding-freebsd-x64": { 890 + "version": "1.49.0", 891 + "resolved": "https://registry.npmjs.org/@oxlint/binding-freebsd-x64/-/binding-freebsd-x64-1.49.0.tgz", 892 + "integrity": "sha512-SnkAc/DPIY6joMCiP/+53Q+N2UOGMU6ULvbztpmvPJNF/jYPGhNbKtN982uj2Gs6fpbxYkmyj08QnpkD4fbHJA==", 893 + "cpu": [ 894 + "x64" 895 + ], 896 + "dev": true, 897 + "license": "MIT", 898 + "optional": true, 899 + "os": [ 900 + "freebsd" 901 + ], 902 + "engines": { 903 + "node": "^20.19.0 || >=22.12.0" 904 + } 905 + }, 906 + "node_modules/@oxlint/binding-linux-arm-gnueabihf": { 907 + "version": "1.49.0", 908 + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.49.0.tgz", 909 + "integrity": "sha512-6Z3EzRvpQVIpO7uFhdiGhdE8Mh3S2VWKLL9xuxVqD6fzPhyI3ugthpYXlCChXzO8FzcYIZ3t1+Kau+h2NY1hqA==", 910 + "cpu": [ 911 + "arm" 912 + ], 913 + "dev": true, 914 + "license": "MIT", 915 + "optional": true, 916 + "os": [ 917 + "linux" 918 + ], 919 + "engines": { 920 + "node": "^20.19.0 || >=22.12.0" 921 + } 922 + }, 923 + "node_modules/@oxlint/binding-linux-arm-musleabihf": { 924 + "version": "1.49.0", 925 + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-1.49.0.tgz", 926 + "integrity": "sha512-wdjXaQYAL/L25732mLlngfst4Jdmi/HLPVHb3yfCoP5mE3lO/pFFrmOJpqWodgv29suWY74Ij+RmJ/YIG5VuzQ==", 927 + "cpu": [ 928 + "arm" 929 + ], 930 + "dev": true, 931 + "license": "MIT", 932 + "optional": true, 933 + "os": [ 934 + "linux" 935 + ], 936 + "engines": { 937 + "node": "^20.19.0 || >=22.12.0" 938 + } 939 + }, 940 + "node_modules/@oxlint/binding-linux-arm64-gnu": { 941 + "version": "1.49.0", 942 + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.49.0.tgz", 943 + "integrity": "sha512-oSHpm8zmSvAG1BWUumbDRSg7moJbnwoEXKAkwDf/xTQJOzvbUknq95NVQdw/AduZr5dePftalB8rzJNGBogUMg==", 944 + "cpu": [ 945 + "arm64" 946 + ], 947 + "dev": true, 948 + "license": "MIT", 949 + "optional": true, 950 + "os": [ 951 + "linux" 952 + ], 953 + "engines": { 954 + "node": "^20.19.0 || >=22.12.0" 955 + } 956 + }, 957 + "node_modules/@oxlint/binding-linux-arm64-musl": { 958 + "version": "1.49.0", 959 + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.49.0.tgz", 960 + "integrity": "sha512-xeqkMOARgGBlEg9BQuPDf6ZW711X6BT5qjDyeM5XNowCJeTSdmMhpePJjTEiVbbr3t21sIlK8RE6X5bc04nWyQ==", 961 + "cpu": [ 962 + "arm64" 963 + ], 964 + "dev": true, 965 + "license": "MIT", 966 + "optional": true, 967 + "os": [ 968 + "linux" 969 + ], 970 + "engines": { 971 + "node": "^20.19.0 || >=22.12.0" 972 + } 973 + }, 974 + "node_modules/@oxlint/binding-linux-ppc64-gnu": { 975 + "version": "1.49.0", 976 + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.49.0.tgz", 977 + "integrity": "sha512-uvcqRO6PnlJGbL7TeePhTK5+7/JXbxGbN+C6FVmfICDeeRomgQqrfVjf0lUrVpUU8ii8TSkIbNdft3M+oNlOsQ==", 978 + "cpu": [ 979 + "ppc64" 980 + ], 981 + "dev": true, 982 + "license": "MIT", 983 + "optional": true, 984 + "os": [ 985 + "linux" 986 + ], 987 + "engines": { 988 + "node": "^20.19.0 || >=22.12.0" 989 + } 990 + }, 991 + "node_modules/@oxlint/binding-linux-riscv64-gnu": { 992 + "version": "1.49.0", 993 + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-1.49.0.tgz", 994 + "integrity": "sha512-Dw1HkdXAwHNH+ZDserHP2RzXQmhHtpsYYI0hf8fuGAVCIVwvS6w1+InLxpPMY25P8ASRNiFN3hADtoh6lI+4lg==", 995 + "cpu": [ 996 + "riscv64" 997 + ], 998 + "dev": true, 999 + "license": "MIT", 1000 + "optional": true, 1001 + "os": [ 1002 + "linux" 1003 + ], 1004 + "engines": { 1005 + "node": "^20.19.0 || >=22.12.0" 1006 + } 1007 + }, 1008 + "node_modules/@oxlint/binding-linux-riscv64-musl": { 1009 + "version": "1.49.0", 1010 + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-1.49.0.tgz", 1011 + "integrity": "sha512-EPlMYaA05tJ9km/0dI9K57iuMq3Tw+nHst7TNIegAJZrBPtsOtYaMFZEaWj02HA8FI5QvSnRHMt+CI+RIhXJBQ==", 1012 + "cpu": [ 1013 + "riscv64" 1014 + ], 1015 + "dev": true, 1016 + "license": "MIT", 1017 + "optional": true, 1018 + "os": [ 1019 + "linux" 1020 + ], 1021 + "engines": { 1022 + "node": "^20.19.0 || >=22.12.0" 1023 + } 1024 + }, 1025 + "node_modules/@oxlint/binding-linux-s390x-gnu": { 1026 + "version": "1.49.0", 1027 + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.49.0.tgz", 1028 + "integrity": "sha512-yZiQL9qEwse34aMbnMb5VqiAWfDY+fLFuoJbHOuzB1OaJZbN1MRF9Nk+W89PIpGr5DNPDipwjZb8+Q7wOywoUQ==", 1029 + "cpu": [ 1030 + "s390x" 1031 + ], 1032 + "dev": true, 1033 + "license": "MIT", 1034 + "optional": true, 1035 + "os": [ 1036 + "linux" 1037 + ], 1038 + "engines": { 1039 + "node": "^20.19.0 || >=22.12.0" 1040 + } 1041 + }, 1042 + "node_modules/@oxlint/binding-linux-x64-gnu": { 1043 + "version": "1.49.0", 1044 + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.49.0.tgz", 1045 + "integrity": "sha512-CcCDwMMXSchNkhdgvhVn3DLZ4EnBXAD8o8+gRzahg+IdSt/72y19xBgShJgadIRF0TsRcV/MhDUMwL5N/W54aQ==", 1046 + "cpu": [ 1047 + "x64" 1048 + ], 1049 + "dev": true, 1050 + "license": "MIT", 1051 + "optional": true, 1052 + "os": [ 1053 + "linux" 1054 + ], 1055 + "engines": { 1056 + "node": "^20.19.0 || >=22.12.0" 1057 + } 1058 + }, 1059 + "node_modules/@oxlint/binding-linux-x64-musl": { 1060 + "version": "1.49.0", 1061 + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-musl/-/binding-linux-x64-musl-1.49.0.tgz", 1062 + "integrity": "sha512-u3HfKV8BV6t6UCCbN0RRiyqcymhrnpunVmLFI8sEa5S/EBu+p/0bJ3D7LZ2KT6PsBbrB71SWq4DeFrskOVgIZg==", 1063 + "cpu": [ 1064 + "x64" 1065 + ], 1066 + "dev": true, 1067 + "license": "MIT", 1068 + "optional": true, 1069 + "os": [ 1070 + "linux" 1071 + ], 1072 + "engines": { 1073 + "node": "^20.19.0 || >=22.12.0" 1074 + } 1075 + }, 1076 + "node_modules/@oxlint/binding-openharmony-arm64": { 1077 + "version": "1.49.0", 1078 + "resolved": "https://registry.npmjs.org/@oxlint/binding-openharmony-arm64/-/binding-openharmony-arm64-1.49.0.tgz", 1079 + "integrity": "sha512-dRDpH9fw+oeUMpM4br0taYCFpW6jQtOuEIec89rOgDA1YhqwmeRcx0XYeCv7U48p57qJ1XZHeMGM9LdItIjfzA==", 1080 + "cpu": [ 1081 + "arm64" 1082 + ], 1083 + "dev": true, 1084 + "license": "MIT", 1085 + "optional": true, 1086 + "os": [ 1087 + "openharmony" 1088 + ], 1089 + "engines": { 1090 + "node": "^20.19.0 || >=22.12.0" 1091 + } 1092 + }, 1093 + "node_modules/@oxlint/binding-win32-arm64-msvc": { 1094 + "version": "1.49.0", 1095 + "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.49.0.tgz", 1096 + "integrity": "sha512-6rrKe/wL9tn0qnOy76i1/0f4Dc3dtQnibGlU4HqR/brVHlVjzLSoaH0gAFnLnznh9yQ6gcFTBFOPrcN/eKPDGA==", 1097 + "cpu": [ 1098 + "arm64" 1099 + ], 1100 + "dev": true, 1101 + "license": "MIT", 1102 + "optional": true, 1103 + "os": [ 1104 + "win32" 1105 + ], 1106 + "engines": { 1107 + "node": "^20.19.0 || >=22.12.0" 1108 + } 1109 + }, 1110 + "node_modules/@oxlint/binding-win32-ia32-msvc": { 1111 + "version": "1.49.0", 1112 + "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.49.0.tgz", 1113 + "integrity": "sha512-CXHLWAtLs2xG/aVy1OZiYJzrULlq0QkYpI6cd7VKMrab+qur4fXVE/B1Bp1m0h1qKTj5/FTGg6oU4qaXMjS/ug==", 1114 + "cpu": [ 1115 + "ia32" 1116 + ], 1117 + "dev": true, 1118 + "license": "MIT", 1119 + "optional": true, 1120 + "os": [ 1121 + "win32" 1122 + ], 1123 + "engines": { 1124 + "node": "^20.19.0 || >=22.12.0" 1125 + } 1126 + }, 1127 + "node_modules/@oxlint/binding-win32-x64-msvc": { 1128 + "version": "1.49.0", 1129 + "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.49.0.tgz", 1130 + "integrity": "sha512-VteIelt78kwzSglOozaQcs6BCS4Lk0j+QA+hGV0W8UeyaqQ3XpbZRhDU55NW1PPvCy1tg4VXsTlEaPovqto7nQ==", 1131 + "cpu": [ 1132 + "x64" 1133 + ], 1134 + "dev": true, 1135 + "license": "MIT", 1136 + "optional": true, 1137 + "os": [ 1138 + "win32" 1139 + ], 1140 + "engines": { 1141 + "node": "^20.19.0 || >=22.12.0" 1142 + } 1143 + }, 1144 + "node_modules/@rolldown/pluginutils": { 1145 + "version": "1.0.0-rc.3", 1146 + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.3.tgz", 1147 + "integrity": "sha512-eybk3TjzzzV97Dlj5c+XrBFW57eTNhzod66y9HrBlzJ6NsCrWCp/2kaPS3K9wJmurBC0Tdw4yPjXKZqlznim3Q==", 1148 + "dev": true, 1149 + "license": "MIT" 1150 + }, 1151 + "node_modules/@rollup/rollup-android-arm-eabi": { 1152 + "version": "4.57.1", 1153 + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.57.1.tgz", 1154 + "integrity": "sha512-A6ehUVSiSaaliTxai040ZpZ2zTevHYbvu/lDoeAteHI8QnaosIzm4qwtezfRg1jOYaUmnzLX1AOD6Z+UJjtifg==", 1155 + "cpu": [ 1156 + "arm" 1157 + ], 1158 + "dev": true, 1159 + "license": "MIT", 1160 + "optional": true, 1161 + "os": [ 1162 + "android" 1163 + ] 1164 + }, 1165 + "node_modules/@rollup/rollup-android-arm64": { 1166 + "version": "4.57.1", 1167 + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.57.1.tgz", 1168 + "integrity": "sha512-dQaAddCY9YgkFHZcFNS/606Exo8vcLHwArFZ7vxXq4rigo2bb494/xKMMwRRQW6ug7Js6yXmBZhSBRuBvCCQ3w==", 1169 + "cpu": [ 1170 + "arm64" 1171 + ], 1172 + "dev": true, 1173 + "license": "MIT", 1174 + "optional": true, 1175 + "os": [ 1176 + "android" 1177 + ] 1178 + }, 1179 + "node_modules/@rollup/rollup-darwin-arm64": { 1180 + "version": "4.57.1", 1181 + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.57.1.tgz", 1182 + "integrity": "sha512-crNPrwJOrRxagUYeMn/DZwqN88SDmwaJ8Cvi/TN1HnWBU7GwknckyosC2gd0IqYRsHDEnXf328o9/HC6OkPgOg==", 1183 + "cpu": [ 1184 + "arm64" 1185 + ], 1186 + "dev": true, 1187 + "license": "MIT", 1188 + "optional": true, 1189 + "os": [ 1190 + "darwin" 1191 + ] 1192 + }, 1193 + "node_modules/@rollup/rollup-darwin-x64": { 1194 + "version": "4.57.1", 1195 + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.57.1.tgz", 1196 + "integrity": "sha512-Ji8g8ChVbKrhFtig5QBV7iMaJrGtpHelkB3lsaKzadFBe58gmjfGXAOfI5FV0lYMH8wiqsxKQ1C9B0YTRXVy4w==", 1197 + "cpu": [ 1198 + "x64" 1199 + ], 1200 + "dev": true, 1201 + "license": "MIT", 1202 + "optional": true, 1203 + "os": [ 1204 + "darwin" 1205 + ] 1206 + }, 1207 + "node_modules/@rollup/rollup-freebsd-arm64": { 1208 + "version": "4.57.1", 1209 + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.57.1.tgz", 1210 + "integrity": "sha512-R+/WwhsjmwodAcz65guCGFRkMb4gKWTcIeLy60JJQbXrJ97BOXHxnkPFrP+YwFlaS0m+uWJTstrUA9o+UchFug==", 1211 + "cpu": [ 1212 + "arm64" 1213 + ], 1214 + "dev": true, 1215 + "license": "MIT", 1216 + "optional": true, 1217 + "os": [ 1218 + "freebsd" 1219 + ] 1220 + }, 1221 + "node_modules/@rollup/rollup-freebsd-x64": { 1222 + "version": "4.57.1", 1223 + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.57.1.tgz", 1224 + "integrity": "sha512-IEQTCHeiTOnAUC3IDQdzRAGj3jOAYNr9kBguI7MQAAZK3caezRrg0GxAb6Hchg4lxdZEI5Oq3iov/w/hnFWY9Q==", 1225 + "cpu": [ 1226 + "x64" 1227 + ], 1228 + "dev": true, 1229 + "license": "MIT", 1230 + "optional": true, 1231 + "os": [ 1232 + "freebsd" 1233 + ] 1234 + }, 1235 + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { 1236 + "version": "4.57.1", 1237 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.57.1.tgz", 1238 + "integrity": "sha512-F8sWbhZ7tyuEfsmOxwc2giKDQzN3+kuBLPwwZGyVkLlKGdV1nvnNwYD0fKQ8+XS6hp9nY7B+ZeK01EBUE7aHaw==", 1239 + "cpu": [ 1240 + "arm" 1241 + ], 1242 + "dev": true, 1243 + "license": "MIT", 1244 + "optional": true, 1245 + "os": [ 1246 + "linux" 1247 + ] 1248 + }, 1249 + "node_modules/@rollup/rollup-linux-arm-musleabihf": { 1250 + "version": "4.57.1", 1251 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.57.1.tgz", 1252 + "integrity": "sha512-rGfNUfn0GIeXtBP1wL5MnzSj98+PZe/AXaGBCRmT0ts80lU5CATYGxXukeTX39XBKsxzFpEeK+Mrp9faXOlmrw==", 1253 + "cpu": [ 1254 + "arm" 1255 + ], 1256 + "dev": true, 1257 + "license": "MIT", 1258 + "optional": true, 1259 + "os": [ 1260 + "linux" 1261 + ] 1262 + }, 1263 + "node_modules/@rollup/rollup-linux-arm64-gnu": { 1264 + "version": "4.57.1", 1265 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.57.1.tgz", 1266 + "integrity": "sha512-MMtej3YHWeg/0klK2Qodf3yrNzz6CGjo2UntLvk2RSPlhzgLvYEB3frRvbEF2wRKh1Z2fDIg9KRPe1fawv7C+g==", 1267 + "cpu": [ 1268 + "arm64" 1269 + ], 1270 + "dev": true, 1271 + "license": "MIT", 1272 + "optional": true, 1273 + "os": [ 1274 + "linux" 1275 + ] 1276 + }, 1277 + "node_modules/@rollup/rollup-linux-arm64-musl": { 1278 + "version": "4.57.1", 1279 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.57.1.tgz", 1280 + "integrity": "sha512-1a/qhaaOXhqXGpMFMET9VqwZakkljWHLmZOX48R0I/YLbhdxr1m4gtG1Hq7++VhVUmf+L3sTAf9op4JlhQ5u1Q==", 1281 + "cpu": [ 1282 + "arm64" 1283 + ], 1284 + "dev": true, 1285 + "license": "MIT", 1286 + "optional": true, 1287 + "os": [ 1288 + "linux" 1289 + ] 1290 + }, 1291 + "node_modules/@rollup/rollup-linux-loong64-gnu": { 1292 + "version": "4.57.1", 1293 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.57.1.tgz", 1294 + "integrity": "sha512-QWO6RQTZ/cqYtJMtxhkRkidoNGXc7ERPbZN7dVW5SdURuLeVU7lwKMpo18XdcmpWYd0qsP1bwKPf7DNSUinhvA==", 1295 + "cpu": [ 1296 + "loong64" 1297 + ], 1298 + "dev": true, 1299 + "license": "MIT", 1300 + "optional": true, 1301 + "os": [ 1302 + "linux" 1303 + ] 1304 + }, 1305 + "node_modules/@rollup/rollup-linux-loong64-musl": { 1306 + "version": "4.57.1", 1307 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.57.1.tgz", 1308 + "integrity": "sha512-xpObYIf+8gprgWaPP32xiN5RVTi/s5FCR+XMXSKmhfoJjrpRAjCuuqQXyxUa/eJTdAE6eJ+KDKaoEqjZQxh3Gw==", 1309 + "cpu": [ 1310 + "loong64" 1311 + ], 1312 + "dev": true, 1313 + "license": "MIT", 1314 + "optional": true, 1315 + "os": [ 1316 + "linux" 1317 + ] 1318 + }, 1319 + "node_modules/@rollup/rollup-linux-ppc64-gnu": { 1320 + "version": "4.57.1", 1321 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.57.1.tgz", 1322 + "integrity": "sha512-4BrCgrpZo4hvzMDKRqEaW1zeecScDCR+2nZ86ATLhAoJ5FQ+lbHVD3ttKe74/c7tNT9c6F2viwB3ufwp01Oh2w==", 1323 + "cpu": [ 1324 + "ppc64" 1325 + ], 1326 + "dev": true, 1327 + "license": "MIT", 1328 + "optional": true, 1329 + "os": [ 1330 + "linux" 1331 + ] 1332 + }, 1333 + "node_modules/@rollup/rollup-linux-ppc64-musl": { 1334 + "version": "4.57.1", 1335 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.57.1.tgz", 1336 + "integrity": "sha512-NOlUuzesGauESAyEYFSe3QTUguL+lvrN1HtwEEsU2rOwdUDeTMJdO5dUYl/2hKf9jWydJrO9OL/XSSf65R5+Xw==", 1337 + "cpu": [ 1338 + "ppc64" 1339 + ], 1340 + "dev": true, 1341 + "license": "MIT", 1342 + "optional": true, 1343 + "os": [ 1344 + "linux" 1345 + ] 1346 + }, 1347 + "node_modules/@rollup/rollup-linux-riscv64-gnu": { 1348 + "version": "4.57.1", 1349 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.57.1.tgz", 1350 + "integrity": "sha512-ptA88htVp0AwUUqhVghwDIKlvJMD/fmL/wrQj99PRHFRAG6Z5nbWoWG4o81Nt9FT+IuqUQi+L31ZKAFeJ5Is+A==", 1351 + "cpu": [ 1352 + "riscv64" 1353 + ], 1354 + "dev": true, 1355 + "license": "MIT", 1356 + "optional": true, 1357 + "os": [ 1358 + "linux" 1359 + ] 1360 + }, 1361 + "node_modules/@rollup/rollup-linux-riscv64-musl": { 1362 + "version": "4.57.1", 1363 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.57.1.tgz", 1364 + "integrity": "sha512-S51t7aMMTNdmAMPpBg7OOsTdn4tySRQvklmL3RpDRyknk87+Sp3xaumlatU+ppQ+5raY7sSTcC2beGgvhENfuw==", 1365 + "cpu": [ 1366 + "riscv64" 1367 + ], 1368 + "dev": true, 1369 + "license": "MIT", 1370 + "optional": true, 1371 + "os": [ 1372 + "linux" 1373 + ] 1374 + }, 1375 + "node_modules/@rollup/rollup-linux-s390x-gnu": { 1376 + "version": "4.57.1", 1377 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.57.1.tgz", 1378 + "integrity": "sha512-Bl00OFnVFkL82FHbEqy3k5CUCKH6OEJL54KCyx2oqsmZnFTR8IoNqBF+mjQVcRCT5sB6yOvK8A37LNm/kPJiZg==", 1379 + "cpu": [ 1380 + "s390x" 1381 + ], 1382 + "dev": true, 1383 + "license": "MIT", 1384 + "optional": true, 1385 + "os": [ 1386 + "linux" 1387 + ] 1388 + }, 1389 + "node_modules/@rollup/rollup-linux-x64-gnu": { 1390 + "version": "4.57.1", 1391 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.57.1.tgz", 1392 + "integrity": "sha512-ABca4ceT4N+Tv/GtotnWAeXZUZuM/9AQyCyKYyKnpk4yoA7QIAuBt6Hkgpw8kActYlew2mvckXkvx0FfoInnLg==", 1393 + "cpu": [ 1394 + "x64" 1395 + ], 1396 + "dev": true, 1397 + "license": "MIT", 1398 + "optional": true, 1399 + "os": [ 1400 + "linux" 1401 + ] 1402 + }, 1403 + "node_modules/@rollup/rollup-linux-x64-musl": { 1404 + "version": "4.57.1", 1405 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.57.1.tgz", 1406 + "integrity": "sha512-HFps0JeGtuOR2convgRRkHCekD7j+gdAuXM+/i6kGzQtFhlCtQkpwtNzkNj6QhCDp7DRJ7+qC/1Vg2jt5iSOFw==", 1407 + "cpu": [ 1408 + "x64" 1409 + ], 1410 + "dev": true, 1411 + "license": "MIT", 1412 + "optional": true, 1413 + "os": [ 1414 + "linux" 1415 + ] 1416 + }, 1417 + "node_modules/@rollup/rollup-openbsd-x64": { 1418 + "version": "4.57.1", 1419 + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.57.1.tgz", 1420 + "integrity": "sha512-H+hXEv9gdVQuDTgnqD+SQffoWoc0Of59AStSzTEj/feWTBAnSfSD3+Dql1ZruJQxmykT/JVY0dE8Ka7z0DH1hw==", 1421 + "cpu": [ 1422 + "x64" 1423 + ], 1424 + "dev": true, 1425 + "license": "MIT", 1426 + "optional": true, 1427 + "os": [ 1428 + "openbsd" 1429 + ] 1430 + }, 1431 + "node_modules/@rollup/rollup-openharmony-arm64": { 1432 + "version": "4.57.1", 1433 + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.57.1.tgz", 1434 + "integrity": "sha512-4wYoDpNg6o/oPximyc/NG+mYUejZrCU2q+2w6YZqrAs2UcNUChIZXjtafAiiZSUc7On8v5NyNj34Kzj/Ltk6dQ==", 1435 + "cpu": [ 1436 + "arm64" 1437 + ], 1438 + "dev": true, 1439 + "license": "MIT", 1440 + "optional": true, 1441 + "os": [ 1442 + "openharmony" 1443 + ] 1444 + }, 1445 + "node_modules/@rollup/rollup-win32-arm64-msvc": { 1446 + "version": "4.57.1", 1447 + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.57.1.tgz", 1448 + "integrity": "sha512-O54mtsV/6LW3P8qdTcamQmuC990HDfR71lo44oZMZlXU4tzLrbvTii87Ni9opq60ds0YzuAlEr/GNwuNluZyMQ==", 1449 + "cpu": [ 1450 + "arm64" 1451 + ], 1452 + "dev": true, 1453 + "license": "MIT", 1454 + "optional": true, 1455 + "os": [ 1456 + "win32" 1457 + ] 1458 + }, 1459 + "node_modules/@rollup/rollup-win32-ia32-msvc": { 1460 + "version": "4.57.1", 1461 + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.57.1.tgz", 1462 + "integrity": "sha512-P3dLS+IerxCT/7D2q2FYcRdWRl22dNbrbBEtxdWhXrfIMPP9lQhb5h4Du04mdl5Woq05jVCDPCMF7Ub0NAjIew==", 1463 + "cpu": [ 1464 + "ia32" 1465 + ], 1466 + "dev": true, 1467 + "license": "MIT", 1468 + "optional": true, 1469 + "os": [ 1470 + "win32" 1471 + ] 1472 + }, 1473 + "node_modules/@rollup/rollup-win32-x64-gnu": { 1474 + "version": "4.57.1", 1475 + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.57.1.tgz", 1476 + "integrity": "sha512-VMBH2eOOaKGtIJYleXsi2B8CPVADrh+TyNxJ4mWPnKfLB/DBUmzW+5m1xUrcwWoMfSLagIRpjUFeW5CO5hyciQ==", 1477 + "cpu": [ 1478 + "x64" 1479 + ], 1480 + "dev": true, 1481 + "license": "MIT", 1482 + "optional": true, 1483 + "os": [ 1484 + "win32" 1485 + ] 1486 + }, 1487 + "node_modules/@rollup/rollup-win32-x64-msvc": { 1488 + "version": "4.57.1", 1489 + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.57.1.tgz", 1490 + "integrity": "sha512-mxRFDdHIWRxg3UfIIAwCm6NzvxG0jDX/wBN6KsQFTvKFqqg9vTrWUE68qEjHt19A5wwx5X5aUi2zuZT7YR0jrA==", 1491 + "cpu": [ 1492 + "x64" 1493 + ], 1494 + "dev": true, 1495 + "license": "MIT", 1496 + "optional": true, 1497 + "os": [ 1498 + "win32" 1499 + ] 1500 + }, 1501 + "node_modules/@tabler/icons": { 1502 + "version": "3.36.1", 1503 + "resolved": "https://registry.npmjs.org/@tabler/icons/-/icons-3.36.1.tgz", 1504 + "integrity": "sha512-f4Jg3Fof/Vru5ioix/UO4GX+sdDsF9wQo47FbtvG+utIYYVQ/QVAC0QYgcBbAjQGfbdOh2CCf0BgiFOF9Ixtjw==", 1505 + "license": "MIT", 1506 + "funding": { 1507 + "type": "github", 1508 + "url": "https://github.com/sponsors/codecalm" 1509 + } 1510 + }, 1511 + "node_modules/@tabler/icons-react": { 1512 + "version": "3.36.1", 1513 + "resolved": "https://registry.npmjs.org/@tabler/icons-react/-/icons-react-3.36.1.tgz", 1514 + "integrity": "sha512-/8nOXeNeMoze9xY/QyEKG65wuvRhkT3q9aytaur6Gj8bYU2A98YVJyLc9MRmc5nVvpy+bRlrrwK/Ykr8WGyUWg==", 1515 + "license": "MIT", 1516 + "dependencies": { 1517 + "@tabler/icons": "" 1518 + }, 1519 + "funding": { 1520 + "type": "github", 1521 + "url": "https://github.com/sponsors/codecalm" 1522 + }, 1523 + "peerDependencies": { 1524 + "react": ">= 16" 1525 + } 1526 + }, 1527 + "node_modules/@tauri-apps/api": { 1528 + "version": "2.10.1", 1529 + "resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-2.10.1.tgz", 1530 + "integrity": "sha512-hKL/jWf293UDSUN09rR69hrToyIXBb8CjGaWC7gfinvnQrBVvnLr08FeFi38gxtugAVyVcTa5/FD/Xnkb1siBw==", 1531 + "license": "Apache-2.0 OR MIT", 1532 + "funding": { 1533 + "type": "opencollective", 1534 + "url": "https://opencollective.com/tauri" 1535 + } 1536 + }, 1537 + "node_modules/@tauri-apps/plugin-dialog": { 1538 + "version": "2.6.0", 1539 + "resolved": "https://registry.npmjs.org/@tauri-apps/plugin-dialog/-/plugin-dialog-2.6.0.tgz", 1540 + "integrity": "sha512-q4Uq3eY87TdcYzXACiYSPhmpBA76shgmQswGkSVio4C82Sz2W4iehe9TnKYwbq7weHiL88Yw19XZm7v28+Micg==", 1541 + "license": "MIT OR Apache-2.0", 1542 + "dependencies": { 1543 + "@tauri-apps/api": "^2.8.0" 1544 + } 1545 + }, 1546 + "node_modules/@tauri-apps/plugin-geolocation": { 1547 + "version": "2.3.2", 1548 + "resolved": "https://registry.npmjs.org/@tauri-apps/plugin-geolocation/-/plugin-geolocation-2.3.2.tgz", 1549 + "integrity": "sha512-ONCwav1monafjeO8/JdXtRlbhZ3xgAdBYxo/62qgw99u9+y6xGsohy3avZgFZsBHA0JVNe1uJnMi+vfT5ZSFUA==", 1550 + "license": "MIT OR Apache-2.0", 1551 + "dependencies": { 1552 + "@tauri-apps/api": "^2.8.0" 1553 + } 1554 + }, 1555 + "node_modules/@tauri-apps/plugin-log": { 1556 + "version": "2.8.0", 1557 + "resolved": "https://registry.npmjs.org/@tauri-apps/plugin-log/-/plugin-log-2.8.0.tgz", 1558 + "integrity": "sha512-a+7rOq3MJwpTOLLKbL8d0qGZ85hgHw5pNOWusA9o3cf7cEgtYHiGY/+O8fj8MvywQIGqFv0da2bYQDlrqLE7rw==", 1559 + "license": "MIT OR Apache-2.0", 1560 + "dependencies": { 1561 + "@tauri-apps/api": "^2.8.0" 1562 + } 1563 + }, 1564 + "node_modules/@tauri-apps/plugin-notification": { 1565 + "version": "2.3.3", 1566 + "resolved": "https://registry.npmjs.org/@tauri-apps/plugin-notification/-/plugin-notification-2.3.3.tgz", 1567 + "integrity": "sha512-Zw+ZH18RJb41G4NrfHgIuofJiymusqN+q8fGUIIV7vyCH+5sSn5coqRv/MWB9qETsUs97vmU045q7OyseCV3Qg==", 1568 + "license": "MIT OR Apache-2.0", 1569 + "dependencies": { 1570 + "@tauri-apps/api": "^2.8.0" 1571 + } 1572 + }, 1573 + "node_modules/@tauri-apps/plugin-opener": { 1574 + "version": "2.5.3", 1575 + "resolved": "https://registry.npmjs.org/@tauri-apps/plugin-opener/-/plugin-opener-2.5.3.tgz", 1576 + "integrity": "sha512-CCcUltXMOfUEArbf3db3kCE7Ggy1ExBEBl51Ko2ODJ6GDYHRp1nSNlQm5uNCFY5k7/ufaK5Ib3Du/Zir19IYQQ==", 1577 + "license": "MIT OR Apache-2.0", 1578 + "dependencies": { 1579 + "@tauri-apps/api": "^2.8.0" 1580 + } 1581 + }, 1582 + "node_modules/@types/babel__core": { 1583 + "version": "7.20.5", 1584 + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", 1585 + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", 1586 + "dev": true, 1587 + "license": "MIT", 1588 + "dependencies": { 1589 + "@babel/parser": "^7.20.7", 1590 + "@babel/types": "^7.20.7", 1591 + "@types/babel__generator": "*", 1592 + "@types/babel__template": "*", 1593 + "@types/babel__traverse": "*" 1594 + } 1595 + }, 1596 + "node_modules/@types/babel__generator": { 1597 + "version": "7.27.0", 1598 + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", 1599 + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", 1600 + "dev": true, 1601 + "license": "MIT", 1602 + "dependencies": { 1603 + "@babel/types": "^7.0.0" 1604 + } 1605 + }, 1606 + "node_modules/@types/babel__template": { 1607 + "version": "7.4.4", 1608 + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", 1609 + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", 1610 + "dev": true, 1611 + "license": "MIT", 1612 + "dependencies": { 1613 + "@babel/parser": "^7.1.0", 1614 + "@babel/types": "^7.0.0" 1615 + } 1616 + }, 1617 + "node_modules/@types/babel__traverse": { 1618 + "version": "7.28.0", 1619 + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", 1620 + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", 1621 + "dev": true, 1622 + "license": "MIT", 1623 + "dependencies": { 1624 + "@babel/types": "^7.28.2" 1625 + } 1626 + }, 1627 + "node_modules/@types/estree": { 1628 + "version": "1.0.8", 1629 + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", 1630 + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", 1631 + "dev": true, 1632 + "license": "MIT" 1633 + }, 1634 + "node_modules/@types/node": { 1635 + "version": "25.2.3", 1636 + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", 1637 + "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", 1638 + "dev": true, 1639 + "license": "MIT", 1640 + "peer": true, 1641 + "dependencies": { 1642 + "undici-types": "~7.16.0" 1643 + } 1644 + }, 1645 + "node_modules/@types/react": { 1646 + "version": "19.2.14", 1647 + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz", 1648 + "integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==", 1649 + "dev": true, 1650 + "license": "MIT", 1651 + "peer": true, 1652 + "dependencies": { 1653 + "csstype": "^3.2.2" 1654 + } 1655 + }, 1656 + "node_modules/@types/react-dom": { 1657 + "version": "19.2.3", 1658 + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz", 1659 + "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", 1660 + "dev": true, 1661 + "license": "MIT", 1662 + "peerDependencies": { 1663 + "@types/react": "^19.2.0" 1664 + } 1665 + }, 1666 + "node_modules/@vitejs/plugin-react": { 1667 + "version": "5.1.4", 1668 + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-5.1.4.tgz", 1669 + "integrity": "sha512-VIcFLdRi/VYRU8OL/puL7QXMYafHmqOnwTZY50U1JPlCNj30PxCMx65c494b1K9be9hX83KVt0+gTEwTWLqToA==", 1670 + "dev": true, 1671 + "license": "MIT", 1672 + "dependencies": { 1673 + "@babel/core": "^7.29.0", 1674 + "@babel/plugin-transform-react-jsx-self": "^7.27.1", 1675 + "@babel/plugin-transform-react-jsx-source": "^7.27.1", 1676 + "@rolldown/pluginutils": "1.0.0-rc.3", 1677 + "@types/babel__core": "^7.20.5", 1678 + "react-refresh": "^0.18.0" 1679 + }, 1680 + "engines": { 1681 + "node": "^20.19.0 || >=22.12.0" 1682 + }, 1683 + "peerDependencies": { 1684 + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" 1685 + } 1686 + }, 1687 + "node_modules/babel-plugin-react-compiler": { 1688 + "version": "1.0.0", 1689 + "resolved": "https://registry.npmjs.org/babel-plugin-react-compiler/-/babel-plugin-react-compiler-1.0.0.tgz", 1690 + "integrity": "sha512-Ixm8tFfoKKIPYdCCKYTsqv+Fd4IJ0DQqMyEimo+pxUOMUR9cVPlwTrFt9Avu+3cb6Zp3mAzl+t1MrG2fxxKsxw==", 1691 + "dev": true, 1692 + "license": "MIT", 1693 + "dependencies": { 1694 + "@babel/types": "^7.26.0" 1695 + } 1696 + }, 1697 + "node_modules/baseline-browser-mapping": { 1698 + "version": "2.9.19", 1699 + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.19.tgz", 1700 + "integrity": "sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==", 1701 + "dev": true, 1702 + "license": "Apache-2.0", 1703 + "bin": { 1704 + "baseline-browser-mapping": "dist/cli.js" 1705 + } 1706 + }, 1707 + "node_modules/browserslist": { 1708 + "version": "4.28.1", 1709 + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", 1710 + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", 1711 + "dev": true, 1712 + "funding": [ 1713 + { 1714 + "type": "opencollective", 1715 + "url": "https://opencollective.com/browserslist" 1716 + }, 1717 + { 1718 + "type": "tidelift", 1719 + "url": "https://tidelift.com/funding/github/npm/browserslist" 1720 + }, 1721 + { 1722 + "type": "github", 1723 + "url": "https://github.com/sponsors/ai" 1724 + } 1725 + ], 1726 + "license": "MIT", 1727 + "peer": true, 1728 + "dependencies": { 1729 + "baseline-browser-mapping": "^2.9.0", 1730 + "caniuse-lite": "^1.0.30001759", 1731 + "electron-to-chromium": "^1.5.263", 1732 + "node-releases": "^2.0.27", 1733 + "update-browserslist-db": "^1.2.0" 1734 + }, 1735 + "bin": { 1736 + "browserslist": "cli.js" 1737 + }, 1738 + "engines": { 1739 + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" 1740 + } 1741 + }, 1742 + "node_modules/caniuse-lite": { 1743 + "version": "1.0.30001770", 1744 + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001770.tgz", 1745 + "integrity": "sha512-x/2CLQ1jHENRbHg5PSId2sXq1CIO1CISvwWAj027ltMVG2UNgW+w9oH2+HzgEIRFembL8bUlXtfbBHR1fCg2xw==", 1746 + "dev": true, 1747 + "funding": [ 1748 + { 1749 + "type": "opencollective", 1750 + "url": "https://opencollective.com/browserslist" 1751 + }, 1752 + { 1753 + "type": "tidelift", 1754 + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" 1755 + }, 1756 + { 1757 + "type": "github", 1758 + "url": "https://github.com/sponsors/ai" 1759 + } 1760 + ], 1761 + "license": "CC-BY-4.0" 1762 + }, 1763 + "node_modules/convert-source-map": { 1764 + "version": "2.0.0", 1765 + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", 1766 + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", 1767 + "dev": true, 1768 + "license": "MIT" 1769 + }, 1770 + "node_modules/csstype": { 1771 + "version": "3.2.3", 1772 + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", 1773 + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", 1774 + "dev": true, 1775 + "license": "MIT" 1776 + }, 1777 + "node_modules/debug": { 1778 + "version": "4.4.3", 1779 + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", 1780 + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", 1781 + "dev": true, 1782 + "license": "MIT", 1783 + "dependencies": { 1784 + "ms": "^2.1.3" 1785 + }, 1786 + "engines": { 1787 + "node": ">=6.0" 1788 + }, 1789 + "peerDependenciesMeta": { 1790 + "supports-color": { 1791 + "optional": true 1792 + } 1793 + } 1794 + }, 1795 + "node_modules/dequal": { 1796 + "version": "2.0.3", 1797 + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", 1798 + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", 1799 + "license": "MIT", 1800 + "engines": { 1801 + "node": ">=6" 1802 + } 1803 + }, 1804 + "node_modules/detect-libc": { 1805 + "version": "2.1.2", 1806 + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", 1807 + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", 1808 + "license": "Apache-2.0", 1809 + "engines": { 1810 + "node": ">=8" 1811 + } 1812 + }, 1813 + "node_modules/electron-to-chromium": { 1814 + "version": "1.5.286", 1815 + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.286.tgz", 1816 + "integrity": "sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A==", 1817 + "dev": true, 1818 + "license": "ISC" 1819 + }, 1820 + "node_modules/esbuild": { 1821 + "version": "0.27.3", 1822 + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.3.tgz", 1823 + "integrity": "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==", 1824 + "dev": true, 1825 + "hasInstallScript": true, 1826 + "license": "MIT", 1827 + "bin": { 1828 + "esbuild": "bin/esbuild" 1829 + }, 1830 + "engines": { 1831 + "node": ">=18" 1832 + }, 1833 + "optionalDependencies": { 1834 + "@esbuild/aix-ppc64": "0.27.3", 1835 + "@esbuild/android-arm": "0.27.3", 1836 + "@esbuild/android-arm64": "0.27.3", 1837 + "@esbuild/android-x64": "0.27.3", 1838 + "@esbuild/darwin-arm64": "0.27.3", 1839 + "@esbuild/darwin-x64": "0.27.3", 1840 + "@esbuild/freebsd-arm64": "0.27.3", 1841 + "@esbuild/freebsd-x64": "0.27.3", 1842 + "@esbuild/linux-arm": "0.27.3", 1843 + "@esbuild/linux-arm64": "0.27.3", 1844 + "@esbuild/linux-ia32": "0.27.3", 1845 + "@esbuild/linux-loong64": "0.27.3", 1846 + "@esbuild/linux-mips64el": "0.27.3", 1847 + "@esbuild/linux-ppc64": "0.27.3", 1848 + "@esbuild/linux-riscv64": "0.27.3", 1849 + "@esbuild/linux-s390x": "0.27.3", 1850 + "@esbuild/linux-x64": "0.27.3", 1851 + "@esbuild/netbsd-arm64": "0.27.3", 1852 + "@esbuild/netbsd-x64": "0.27.3", 1853 + "@esbuild/openbsd-arm64": "0.27.3", 1854 + "@esbuild/openbsd-x64": "0.27.3", 1855 + "@esbuild/openharmony-arm64": "0.27.3", 1856 + "@esbuild/sunos-x64": "0.27.3", 1857 + "@esbuild/win32-arm64": "0.27.3", 1858 + "@esbuild/win32-ia32": "0.27.3", 1859 + "@esbuild/win32-x64": "0.27.3" 1860 + } 1861 + }, 1862 + "node_modules/escalade": { 1863 + "version": "3.2.0", 1864 + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", 1865 + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", 1866 + "dev": true, 1867 + "license": "MIT", 1868 + "engines": { 1869 + "node": ">=6" 1870 + } 1871 + }, 1872 + "node_modules/fdir": { 1873 + "version": "6.5.0", 1874 + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", 1875 + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", 1876 + "dev": true, 1877 + "license": "MIT", 1878 + "engines": { 1879 + "node": ">=12.0.0" 1880 + }, 1881 + "peerDependencies": { 1882 + "picomatch": "^3 || ^4" 1883 + }, 1884 + "peerDependenciesMeta": { 1885 + "picomatch": { 1886 + "optional": true 1887 + } 1888 + } 1889 + }, 1890 + "node_modules/fsevents": { 1891 + "version": "2.3.3", 1892 + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", 1893 + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 1894 + "dev": true, 1895 + "hasInstallScript": true, 1896 + "license": "MIT", 1897 + "optional": true, 1898 + "os": [ 1899 + "darwin" 1900 + ], 1901 + "engines": { 1902 + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 1903 + } 1904 + }, 1905 + "node_modules/gensync": { 1906 + "version": "1.0.0-beta.2", 1907 + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", 1908 + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", 1909 + "dev": true, 1910 + "license": "MIT", 1911 + "engines": { 1912 + "node": ">=6.9.0" 1913 + } 1914 + }, 1915 + "node_modules/globals": { 1916 + "version": "17.3.0", 1917 + "resolved": "https://registry.npmjs.org/globals/-/globals-17.3.0.tgz", 1918 + "integrity": "sha512-yMqGUQVVCkD4tqjOJf3TnrvaaHDMYp4VlUSObbkIiuCPe/ofdMBFIAcBbCSRFWOnos6qRiTVStDwqPLUclaxIw==", 1919 + "dev": true, 1920 + "license": "MIT", 1921 + "engines": { 1922 + "node": ">=18" 1923 + }, 1924 + "funding": { 1925 + "url": "https://github.com/sponsors/sindresorhus" 1926 + } 1927 + }, 1928 + "node_modules/js-tokens": { 1929 + "version": "4.0.0", 1930 + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 1931 + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 1932 + "dev": true, 1933 + "license": "MIT" 1934 + }, 1935 + "node_modules/jsesc": { 1936 + "version": "3.1.0", 1937 + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", 1938 + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", 1939 + "dev": true, 1940 + "license": "MIT", 1941 + "bin": { 1942 + "jsesc": "bin/jsesc" 1943 + }, 1944 + "engines": { 1945 + "node": ">=6" 1946 + } 1947 + }, 1948 + "node_modules/json5": { 1949 + "version": "2.2.3", 1950 + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", 1951 + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", 1952 + "dev": true, 1953 + "license": "MIT", 1954 + "bin": { 1955 + "json5": "lib/cli.js" 1956 + }, 1957 + "engines": { 1958 + "node": ">=6" 1959 + } 1960 + }, 1961 + "node_modules/lightningcss": { 1962 + "version": "1.31.1", 1963 + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.31.1.tgz", 1964 + "integrity": "sha512-l51N2r93WmGUye3WuFoN5k10zyvrVs0qfKBhyC5ogUQ6Ew6JUSswh78mbSO+IU3nTWsyOArqPCcShdQSadghBQ==", 1965 + "license": "MPL-2.0", 1966 + "peer": true, 1967 + "dependencies": { 1968 + "detect-libc": "^2.0.3" 1969 + }, 1970 + "engines": { 1971 + "node": ">= 12.0.0" 1972 + }, 1973 + "funding": { 1974 + "type": "opencollective", 1975 + "url": "https://opencollective.com/parcel" 1976 + }, 1977 + "optionalDependencies": { 1978 + "lightningcss-android-arm64": "1.31.1", 1979 + "lightningcss-darwin-arm64": "1.31.1", 1980 + "lightningcss-darwin-x64": "1.31.1", 1981 + "lightningcss-freebsd-x64": "1.31.1", 1982 + "lightningcss-linux-arm-gnueabihf": "1.31.1", 1983 + "lightningcss-linux-arm64-gnu": "1.31.1", 1984 + "lightningcss-linux-arm64-musl": "1.31.1", 1985 + "lightningcss-linux-x64-gnu": "1.31.1", 1986 + "lightningcss-linux-x64-musl": "1.31.1", 1987 + "lightningcss-win32-arm64-msvc": "1.31.1", 1988 + "lightningcss-win32-x64-msvc": "1.31.1" 1989 + } 1990 + }, 1991 + "node_modules/lightningcss-android-arm64": { 1992 + "version": "1.31.1", 1993 + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.31.1.tgz", 1994 + "integrity": "sha512-HXJF3x8w9nQ4jbXRiNppBCqeZPIAfUo8zE/kOEGbW5NZvGc/K7nMxbhIr+YlFlHW5mpbg/YFPdbnCh1wAXCKFg==", 1995 + "cpu": [ 1996 + "arm64" 1997 + ], 1998 + "license": "MPL-2.0", 1999 + "optional": true, 2000 + "os": [ 2001 + "android" 2002 + ], 2003 + "engines": { 2004 + "node": ">= 12.0.0" 2005 + }, 2006 + "funding": { 2007 + "type": "opencollective", 2008 + "url": "https://opencollective.com/parcel" 2009 + } 2010 + }, 2011 + "node_modules/lightningcss-darwin-arm64": { 2012 + "version": "1.31.1", 2013 + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.31.1.tgz", 2014 + "integrity": "sha512-02uTEqf3vIfNMq3h/z2cJfcOXnQ0GRwQrkmPafhueLb2h7mqEidiCzkE4gBMEH65abHRiQvhdcQ+aP0D0g67sg==", 2015 + "cpu": [ 2016 + "arm64" 2017 + ], 2018 + "license": "MPL-2.0", 2019 + "optional": true, 2020 + "os": [ 2021 + "darwin" 2022 + ], 2023 + "engines": { 2024 + "node": ">= 12.0.0" 2025 + }, 2026 + "funding": { 2027 + "type": "opencollective", 2028 + "url": "https://opencollective.com/parcel" 2029 + } 2030 + }, 2031 + "node_modules/lightningcss-darwin-x64": { 2032 + "version": "1.31.1", 2033 + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.31.1.tgz", 2034 + "integrity": "sha512-1ObhyoCY+tGxtsz1lSx5NXCj3nirk0Y0kB/g8B8DT+sSx4G9djitg9ejFnjb3gJNWo7qXH4DIy2SUHvpoFwfTA==", 2035 + "cpu": [ 2036 + "x64" 2037 + ], 2038 + "license": "MPL-2.0", 2039 + "optional": true, 2040 + "os": [ 2041 + "darwin" 2042 + ], 2043 + "engines": { 2044 + "node": ">= 12.0.0" 2045 + }, 2046 + "funding": { 2047 + "type": "opencollective", 2048 + "url": "https://opencollective.com/parcel" 2049 + } 2050 + }, 2051 + "node_modules/lightningcss-freebsd-x64": { 2052 + "version": "1.31.1", 2053 + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.31.1.tgz", 2054 + "integrity": "sha512-1RINmQKAItO6ISxYgPwszQE1BrsVU5aB45ho6O42mu96UiZBxEXsuQ7cJW4zs4CEodPUioj/QrXW1r9pLUM74A==", 2055 + "cpu": [ 2056 + "x64" 2057 + ], 2058 + "license": "MPL-2.0", 2059 + "optional": true, 2060 + "os": [ 2061 + "freebsd" 2062 + ], 2063 + "engines": { 2064 + "node": ">= 12.0.0" 2065 + }, 2066 + "funding": { 2067 + "type": "opencollective", 2068 + "url": "https://opencollective.com/parcel" 2069 + } 2070 + }, 2071 + "node_modules/lightningcss-linux-arm-gnueabihf": { 2072 + "version": "1.31.1", 2073 + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.31.1.tgz", 2074 + "integrity": "sha512-OOCm2//MZJ87CdDK62rZIu+aw9gBv4azMJuA8/KB74wmfS3lnC4yoPHm0uXZ/dvNNHmnZnB8XLAZzObeG0nS1g==", 2075 + "cpu": [ 2076 + "arm" 2077 + ], 2078 + "license": "MPL-2.0", 2079 + "optional": true, 2080 + "os": [ 2081 + "linux" 2082 + ], 2083 + "engines": { 2084 + "node": ">= 12.0.0" 2085 + }, 2086 + "funding": { 2087 + "type": "opencollective", 2088 + "url": "https://opencollective.com/parcel" 2089 + } 2090 + }, 2091 + "node_modules/lightningcss-linux-arm64-gnu": { 2092 + "version": "1.31.1", 2093 + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.31.1.tgz", 2094 + "integrity": "sha512-WKyLWztD71rTnou4xAD5kQT+982wvca7E6QoLpoawZ1gP9JM0GJj4Tp5jMUh9B3AitHbRZ2/H3W5xQmdEOUlLg==", 2095 + "cpu": [ 2096 + "arm64" 2097 + ], 2098 + "license": "MPL-2.0", 2099 + "optional": true, 2100 + "os": [ 2101 + "linux" 2102 + ], 2103 + "engines": { 2104 + "node": ">= 12.0.0" 2105 + }, 2106 + "funding": { 2107 + "type": "opencollective", 2108 + "url": "https://opencollective.com/parcel" 2109 + } 2110 + }, 2111 + "node_modules/lightningcss-linux-arm64-musl": { 2112 + "version": "1.31.1", 2113 + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.31.1.tgz", 2114 + "integrity": "sha512-mVZ7Pg2zIbe3XlNbZJdjs86YViQFoJSpc41CbVmKBPiGmC4YrfeOyz65ms2qpAobVd7WQsbW4PdsSJEMymyIMg==", 2115 + "cpu": [ 2116 + "arm64" 2117 + ], 2118 + "license": "MPL-2.0", 2119 + "optional": true, 2120 + "os": [ 2121 + "linux" 2122 + ], 2123 + "engines": { 2124 + "node": ">= 12.0.0" 2125 + }, 2126 + "funding": { 2127 + "type": "opencollective", 2128 + "url": "https://opencollective.com/parcel" 2129 + } 2130 + }, 2131 + "node_modules/lightningcss-linux-x64-gnu": { 2132 + "version": "1.31.1", 2133 + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.31.1.tgz", 2134 + "integrity": "sha512-xGlFWRMl+0KvUhgySdIaReQdB4FNudfUTARn7q0hh/V67PVGCs3ADFjw+6++kG1RNd0zdGRlEKa+T13/tQjPMA==", 2135 + "cpu": [ 2136 + "x64" 2137 + ], 2138 + "license": "MPL-2.0", 2139 + "optional": true, 2140 + "os": [ 2141 + "linux" 2142 + ], 2143 + "engines": { 2144 + "node": ">= 12.0.0" 2145 + }, 2146 + "funding": { 2147 + "type": "opencollective", 2148 + "url": "https://opencollective.com/parcel" 2149 + } 2150 + }, 2151 + "node_modules/lightningcss-linux-x64-musl": { 2152 + "version": "1.31.1", 2153 + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.31.1.tgz", 2154 + "integrity": "sha512-eowF8PrKHw9LpoZii5tdZwnBcYDxRw2rRCyvAXLi34iyeYfqCQNA9rmUM0ce62NlPhCvof1+9ivRaTY6pSKDaA==", 2155 + "cpu": [ 2156 + "x64" 2157 + ], 2158 + "license": "MPL-2.0", 2159 + "optional": true, 2160 + "os": [ 2161 + "linux" 2162 + ], 2163 + "engines": { 2164 + "node": ">= 12.0.0" 2165 + }, 2166 + "funding": { 2167 + "type": "opencollective", 2168 + "url": "https://opencollective.com/parcel" 2169 + } 2170 + }, 2171 + "node_modules/lightningcss-win32-arm64-msvc": { 2172 + "version": "1.31.1", 2173 + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.31.1.tgz", 2174 + "integrity": "sha512-aJReEbSEQzx1uBlQizAOBSjcmr9dCdL3XuC/6HLXAxmtErsj2ICo5yYggg1qOODQMtnjNQv2UHb9NpOuFtYe4w==", 2175 + "cpu": [ 2176 + "arm64" 2177 + ], 2178 + "license": "MPL-2.0", 2179 + "optional": true, 2180 + "os": [ 2181 + "win32" 2182 + ], 2183 + "engines": { 2184 + "node": ">= 12.0.0" 2185 + }, 2186 + "funding": { 2187 + "type": "opencollective", 2188 + "url": "https://opencollective.com/parcel" 2189 + } 2190 + }, 2191 + "node_modules/lightningcss-win32-x64-msvc": { 2192 + "version": "1.31.1", 2193 + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.31.1.tgz", 2194 + "integrity": "sha512-I9aiFrbd7oYHwlnQDqr1Roz+fTz61oDDJX7n9tYF9FJymH1cIN1DtKw3iYt6b8WZgEjoNwVSncwF4wx/ZedMhw==", 2195 + "cpu": [ 2196 + "x64" 2197 + ], 2198 + "license": "MPL-2.0", 2199 + "optional": true, 2200 + "os": [ 2201 + "win32" 2202 + ], 2203 + "engines": { 2204 + "node": ">= 12.0.0" 2205 + }, 2206 + "funding": { 2207 + "type": "opencollective", 2208 + "url": "https://opencollective.com/parcel" 2209 + } 2210 + }, 2211 + "node_modules/lru-cache": { 2212 + "version": "5.1.1", 2213 + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", 2214 + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", 2215 + "dev": true, 2216 + "license": "ISC", 2217 + "dependencies": { 2218 + "yallist": "^3.0.2" 2219 + } 2220 + }, 2221 + "node_modules/ms": { 2222 + "version": "2.1.3", 2223 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 2224 + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 2225 + "dev": true, 2226 + "license": "MIT" 2227 + }, 2228 + "node_modules/nanoid": { 2229 + "version": "3.3.11", 2230 + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", 2231 + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", 2232 + "dev": true, 2233 + "funding": [ 2234 + { 2235 + "type": "github", 2236 + "url": "https://github.com/sponsors/ai" 2237 + } 2238 + ], 2239 + "license": "MIT", 2240 + "bin": { 2241 + "nanoid": "bin/nanoid.cjs" 2242 + }, 2243 + "engines": { 2244 + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 2245 + } 2246 + }, 2247 + "node_modules/node-releases": { 2248 + "version": "2.0.27", 2249 + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", 2250 + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", 2251 + "dev": true, 2252 + "license": "MIT" 2253 + }, 2254 + "node_modules/oxlint": { 2255 + "version": "1.49.0", 2256 + "resolved": "https://registry.npmjs.org/oxlint/-/oxlint-1.49.0.tgz", 2257 + "integrity": "sha512-YZffp0gM+63CJoRhHjtjRnwKtAgUnXM6j63YQ++aigji2NVvLGsUlrXo9gJUXZOdcbfShLYtA6RuTu8GZ4lzOQ==", 2258 + "dev": true, 2259 + "license": "MIT", 2260 + "bin": { 2261 + "oxlint": "bin/oxlint" 2262 + }, 2263 + "engines": { 2264 + "node": "^20.19.0 || >=22.12.0" 2265 + }, 2266 + "funding": { 2267 + "url": "https://github.com/sponsors/Boshen" 2268 + }, 2269 + "optionalDependencies": { 2270 + "@oxlint/binding-android-arm-eabi": "1.49.0", 2271 + "@oxlint/binding-android-arm64": "1.49.0", 2272 + "@oxlint/binding-darwin-arm64": "1.49.0", 2273 + "@oxlint/binding-darwin-x64": "1.49.0", 2274 + "@oxlint/binding-freebsd-x64": "1.49.0", 2275 + "@oxlint/binding-linux-arm-gnueabihf": "1.49.0", 2276 + "@oxlint/binding-linux-arm-musleabihf": "1.49.0", 2277 + "@oxlint/binding-linux-arm64-gnu": "1.49.0", 2278 + "@oxlint/binding-linux-arm64-musl": "1.49.0", 2279 + "@oxlint/binding-linux-ppc64-gnu": "1.49.0", 2280 + "@oxlint/binding-linux-riscv64-gnu": "1.49.0", 2281 + "@oxlint/binding-linux-riscv64-musl": "1.49.0", 2282 + "@oxlint/binding-linux-s390x-gnu": "1.49.0", 2283 + "@oxlint/binding-linux-x64-gnu": "1.49.0", 2284 + "@oxlint/binding-linux-x64-musl": "1.49.0", 2285 + "@oxlint/binding-openharmony-arm64": "1.49.0", 2286 + "@oxlint/binding-win32-arm64-msvc": "1.49.0", 2287 + "@oxlint/binding-win32-ia32-msvc": "1.49.0", 2288 + "@oxlint/binding-win32-x64-msvc": "1.49.0" 2289 + }, 2290 + "peerDependencies": { 2291 + "oxlint-tsgolint": ">=0.14.1" 2292 + }, 2293 + "peerDependenciesMeta": { 2294 + "oxlint-tsgolint": { 2295 + "optional": true 2296 + } 2297 + } 2298 + }, 2299 + "node_modules/picocolors": { 2300 + "version": "1.1.1", 2301 + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", 2302 + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", 2303 + "dev": true, 2304 + "license": "ISC" 2305 + }, 2306 + "node_modules/picomatch": { 2307 + "version": "4.0.3", 2308 + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", 2309 + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", 2310 + "dev": true, 2311 + "license": "MIT", 2312 + "peer": true, 2313 + "engines": { 2314 + "node": ">=12" 2315 + }, 2316 + "funding": { 2317 + "url": "https://github.com/sponsors/jonschlinkert" 2318 + } 2319 + }, 2320 + "node_modules/postcss": { 2321 + "version": "8.5.6", 2322 + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", 2323 + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", 2324 + "dev": true, 2325 + "funding": [ 2326 + { 2327 + "type": "opencollective", 2328 + "url": "https://opencollective.com/postcss/" 2329 + }, 2330 + { 2331 + "type": "tidelift", 2332 + "url": "https://tidelift.com/funding/github/npm/postcss" 2333 + }, 2334 + { 2335 + "type": "github", 2336 + "url": "https://github.com/sponsors/ai" 2337 + } 2338 + ], 2339 + "license": "MIT", 2340 + "dependencies": { 2341 + "nanoid": "^3.3.11", 2342 + "picocolors": "^1.1.1", 2343 + "source-map-js": "^1.2.1" 2344 + }, 2345 + "engines": { 2346 + "node": "^10 || ^12 || >=14" 2347 + } 2348 + }, 2349 + "node_modules/prettier": { 2350 + "version": "3.8.1", 2351 + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz", 2352 + "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==", 2353 + "dev": true, 2354 + "license": "MIT", 2355 + "bin": { 2356 + "prettier": "bin/prettier.cjs" 2357 + }, 2358 + "engines": { 2359 + "node": ">=14" 2360 + }, 2361 + "funding": { 2362 + "url": "https://github.com/prettier/prettier?sponsor=1" 2363 + } 2364 + }, 2365 + "node_modules/react": { 2366 + "version": "19.2.4", 2367 + "resolved": "https://registry.npmjs.org/react/-/react-19.2.4.tgz", 2368 + "integrity": "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==", 2369 + "license": "MIT", 2370 + "peer": true, 2371 + "engines": { 2372 + "node": ">=0.10.0" 2373 + } 2374 + }, 2375 + "node_modules/react-dom": { 2376 + "version": "19.2.4", 2377 + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.4.tgz", 2378 + "integrity": "sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==", 2379 + "license": "MIT", 2380 + "dependencies": { 2381 + "scheduler": "^0.27.0" 2382 + }, 2383 + "peerDependencies": { 2384 + "react": "^19.2.4" 2385 + } 2386 + }, 2387 + "node_modules/react-refresh": { 2388 + "version": "0.18.0", 2389 + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.18.0.tgz", 2390 + "integrity": "sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==", 2391 + "dev": true, 2392 + "license": "MIT", 2393 + "engines": { 2394 + "node": ">=0.10.0" 2395 + } 2396 + }, 2397 + "node_modules/rollup": { 2398 + "version": "4.57.1", 2399 + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.57.1.tgz", 2400 + "integrity": "sha512-oQL6lgK3e2QZeQ7gcgIkS2YZPg5slw37hYufJ3edKlfQSGGm8ICoxswK15ntSzF/a8+h7ekRy7k7oWc3BQ7y8A==", 2401 + "dev": true, 2402 + "license": "MIT", 2403 + "dependencies": { 2404 + "@types/estree": "1.0.8" 2405 + }, 2406 + "bin": { 2407 + "rollup": "dist/bin/rollup" 2408 + }, 2409 + "engines": { 2410 + "node": ">=18.0.0", 2411 + "npm": ">=8.0.0" 2412 + }, 2413 + "optionalDependencies": { 2414 + "@rollup/rollup-android-arm-eabi": "4.57.1", 2415 + "@rollup/rollup-android-arm64": "4.57.1", 2416 + "@rollup/rollup-darwin-arm64": "4.57.1", 2417 + "@rollup/rollup-darwin-x64": "4.57.1", 2418 + "@rollup/rollup-freebsd-arm64": "4.57.1", 2419 + "@rollup/rollup-freebsd-x64": "4.57.1", 2420 + "@rollup/rollup-linux-arm-gnueabihf": "4.57.1", 2421 + "@rollup/rollup-linux-arm-musleabihf": "4.57.1", 2422 + "@rollup/rollup-linux-arm64-gnu": "4.57.1", 2423 + "@rollup/rollup-linux-arm64-musl": "4.57.1", 2424 + "@rollup/rollup-linux-loong64-gnu": "4.57.1", 2425 + "@rollup/rollup-linux-loong64-musl": "4.57.1", 2426 + "@rollup/rollup-linux-ppc64-gnu": "4.57.1", 2427 + "@rollup/rollup-linux-ppc64-musl": "4.57.1", 2428 + "@rollup/rollup-linux-riscv64-gnu": "4.57.1", 2429 + "@rollup/rollup-linux-riscv64-musl": "4.57.1", 2430 + "@rollup/rollup-linux-s390x-gnu": "4.57.1", 2431 + "@rollup/rollup-linux-x64-gnu": "4.57.1", 2432 + "@rollup/rollup-linux-x64-musl": "4.57.1", 2433 + "@rollup/rollup-openbsd-x64": "4.57.1", 2434 + "@rollup/rollup-openharmony-arm64": "4.57.1", 2435 + "@rollup/rollup-win32-arm64-msvc": "4.57.1", 2436 + "@rollup/rollup-win32-ia32-msvc": "4.57.1", 2437 + "@rollup/rollup-win32-x64-gnu": "4.57.1", 2438 + "@rollup/rollup-win32-x64-msvc": "4.57.1", 2439 + "fsevents": "~2.3.2" 2440 + } 2441 + }, 2442 + "node_modules/scheduler": { 2443 + "version": "0.27.0", 2444 + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", 2445 + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", 2446 + "license": "MIT" 2447 + }, 2448 + "node_modules/semver": { 2449 + "version": "6.3.1", 2450 + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", 2451 + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", 2452 + "dev": true, 2453 + "license": "ISC", 2454 + "bin": { 2455 + "semver": "bin/semver.js" 2456 + } 2457 + }, 2458 + "node_modules/source-map-js": { 2459 + "version": "1.2.1", 2460 + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", 2461 + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", 2462 + "dev": true, 2463 + "license": "BSD-3-Clause", 2464 + "engines": { 2465 + "node": ">=0.10.0" 2466 + } 2467 + }, 2468 + "node_modules/swr": { 2469 + "version": "2.4.0", 2470 + "resolved": "https://registry.npmjs.org/swr/-/swr-2.4.0.tgz", 2471 + "integrity": "sha512-sUlC20T8EOt1pHmDiqueUWMmRRX03W7w5YxovWX7VR2KHEPCTMly85x05vpkP5i6Bu4h44ePSMD9Tc+G2MItFw==", 2472 + "license": "MIT", 2473 + "dependencies": { 2474 + "dequal": "^2.0.3", 2475 + "use-sync-external-store": "^1.6.0" 2476 + }, 2477 + "peerDependencies": { 2478 + "react": "^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" 2479 + } 2480 + }, 2481 + "node_modules/tinyglobby": { 2482 + "version": "0.2.15", 2483 + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", 2484 + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", 2485 + "dev": true, 2486 + "license": "MIT", 2487 + "dependencies": { 2488 + "fdir": "^6.5.0", 2489 + "picomatch": "^4.0.3" 2490 + }, 2491 + "engines": { 2492 + "node": ">=12.0.0" 2493 + }, 2494 + "funding": { 2495 + "url": "https://github.com/sponsors/SuperchupuDev" 2496 + } 2497 + }, 2498 + "node_modules/typescript": { 2499 + "version": "5.9.3", 2500 + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", 2501 + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", 2502 + "dev": true, 2503 + "license": "Apache-2.0", 2504 + "bin": { 2505 + "tsc": "bin/tsc", 2506 + "tsserver": "bin/tsserver" 2507 + }, 2508 + "engines": { 2509 + "node": ">=14.17" 2510 + } 2511 + }, 2512 + "node_modules/undici-types": { 2513 + "version": "7.16.0", 2514 + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", 2515 + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", 2516 + "dev": true, 2517 + "license": "MIT" 2518 + }, 2519 + "node_modules/update-browserslist-db": { 2520 + "version": "1.2.3", 2521 + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", 2522 + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", 2523 + "dev": true, 2524 + "funding": [ 2525 + { 2526 + "type": "opencollective", 2527 + "url": "https://opencollective.com/browserslist" 2528 + }, 2529 + { 2530 + "type": "tidelift", 2531 + "url": "https://tidelift.com/funding/github/npm/browserslist" 2532 + }, 2533 + { 2534 + "type": "github", 2535 + "url": "https://github.com/sponsors/ai" 2536 + } 2537 + ], 2538 + "license": "MIT", 2539 + "dependencies": { 2540 + "escalade": "^3.2.0", 2541 + "picocolors": "^1.1.1" 2542 + }, 2543 + "bin": { 2544 + "update-browserslist-db": "cli.js" 2545 + }, 2546 + "peerDependencies": { 2547 + "browserslist": ">= 4.21.0" 2548 + } 2549 + }, 2550 + "node_modules/use-sync-external-store": { 2551 + "version": "1.6.0", 2552 + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz", 2553 + "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==", 2554 + "license": "MIT", 2555 + "peerDependencies": { 2556 + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" 2557 + } 2558 + }, 2559 + "node_modules/vite": { 2560 + "version": "7.3.1", 2561 + "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz", 2562 + "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==", 2563 + "dev": true, 2564 + "license": "MIT", 2565 + "peer": true, 2566 + "dependencies": { 2567 + "esbuild": "^0.27.0", 2568 + "fdir": "^6.5.0", 2569 + "picomatch": "^4.0.3", 2570 + "postcss": "^8.5.6", 2571 + "rollup": "^4.43.0", 2572 + "tinyglobby": "^0.2.15" 2573 + }, 2574 + "bin": { 2575 + "vite": "bin/vite.js" 2576 + }, 2577 + "engines": { 2578 + "node": "^20.19.0 || >=22.12.0" 2579 + }, 2580 + "funding": { 2581 + "url": "https://github.com/vitejs/vite?sponsor=1" 2582 + }, 2583 + "optionalDependencies": { 2584 + "fsevents": "~2.3.3" 2585 + }, 2586 + "peerDependencies": { 2587 + "@types/node": "^20.19.0 || >=22.12.0", 2588 + "jiti": ">=1.21.0", 2589 + "less": "^4.0.0", 2590 + "lightningcss": "^1.21.0", 2591 + "sass": "^1.70.0", 2592 + "sass-embedded": "^1.70.0", 2593 + "stylus": ">=0.54.8", 2594 + "sugarss": "^5.0.0", 2595 + "terser": "^5.16.0", 2596 + "tsx": "^4.8.1", 2597 + "yaml": "^2.4.2" 2598 + }, 2599 + "peerDependenciesMeta": { 2600 + "@types/node": { 2601 + "optional": true 2602 + }, 2603 + "jiti": { 2604 + "optional": true 2605 + }, 2606 + "less": { 2607 + "optional": true 2608 + }, 2609 + "lightningcss": { 2610 + "optional": true 2611 + }, 2612 + "sass": { 2613 + "optional": true 2614 + }, 2615 + "sass-embedded": { 2616 + "optional": true 2617 + }, 2618 + "stylus": { 2619 + "optional": true 2620 + }, 2621 + "sugarss": { 2622 + "optional": true 2623 + }, 2624 + "terser": { 2625 + "optional": true 2626 + }, 2627 + "tsx": { 2628 + "optional": true 2629 + }, 2630 + "yaml": { 2631 + "optional": true 2632 + } 2633 + } 2634 + }, 2635 + "node_modules/yallist": { 2636 + "version": "3.1.1", 2637 + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", 2638 + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", 2639 + "dev": true, 2640 + "license": "ISC" 5142 2641 } 5143 - } 5144 - }, 5145 - "node_modules/which": { 5146 - "version": "2.0.2", 5147 - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 5148 - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 5149 - "dev": true, 5150 - "license": "ISC", 5151 - "dependencies": { 5152 - "isexe": "^2.0.0" 5153 - }, 5154 - "bin": { 5155 - "node-which": "bin/node-which" 5156 - }, 5157 - "engines": { 5158 - "node": ">= 8" 5159 - } 5160 - }, 5161 - "node_modules/which-boxed-primitive": { 5162 - "version": "1.1.1", 5163 - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", 5164 - "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", 5165 - "dev": true, 5166 - "license": "MIT", 5167 - "dependencies": { 5168 - "is-bigint": "^1.1.0", 5169 - "is-boolean-object": "^1.2.1", 5170 - "is-number-object": "^1.1.1", 5171 - "is-string": "^1.1.1", 5172 - "is-symbol": "^1.1.1" 5173 - }, 5174 - "engines": { 5175 - "node": ">= 0.4" 5176 - }, 5177 - "funding": { 5178 - "url": "https://github.com/sponsors/ljharb" 5179 - } 5180 - }, 5181 - "node_modules/which-builtin-type": { 5182 - "version": "1.2.1", 5183 - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", 5184 - "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", 5185 - "dev": true, 5186 - "license": "MIT", 5187 - "dependencies": { 5188 - "call-bound": "^1.0.2", 5189 - "function.prototype.name": "^1.1.6", 5190 - "has-tostringtag": "^1.0.2", 5191 - "is-async-function": "^2.0.0", 5192 - "is-date-object": "^1.1.0", 5193 - "is-finalizationregistry": "^1.1.0", 5194 - "is-generator-function": "^1.0.10", 5195 - "is-regex": "^1.2.1", 5196 - "is-weakref": "^1.0.2", 5197 - "isarray": "^2.0.5", 5198 - "which-boxed-primitive": "^1.1.0", 5199 - "which-collection": "^1.0.2", 5200 - "which-typed-array": "^1.1.16" 5201 - }, 5202 - "engines": { 5203 - "node": ">= 0.4" 5204 - }, 5205 - "funding": { 5206 - "url": "https://github.com/sponsors/ljharb" 5207 - } 5208 - }, 5209 - "node_modules/which-collection": { 5210 - "version": "1.0.2", 5211 - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", 5212 - "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", 5213 - "dev": true, 5214 - "license": "MIT", 5215 - "dependencies": { 5216 - "is-map": "^2.0.3", 5217 - "is-set": "^2.0.3", 5218 - "is-weakmap": "^2.0.2", 5219 - "is-weakset": "^2.0.3" 5220 - }, 5221 - "engines": { 5222 - "node": ">= 0.4" 5223 - }, 5224 - "funding": { 5225 - "url": "https://github.com/sponsors/ljharb" 5226 - } 5227 - }, 5228 - "node_modules/which-typed-array": { 5229 - "version": "1.1.20", 5230 - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz", 5231 - "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==", 5232 - "dev": true, 5233 - "license": "MIT", 5234 - "dependencies": { 5235 - "available-typed-arrays": "^1.0.7", 5236 - "call-bind": "^1.0.8", 5237 - "call-bound": "^1.0.4", 5238 - "for-each": "^0.3.5", 5239 - "get-proto": "^1.0.1", 5240 - "gopd": "^1.2.0", 5241 - "has-tostringtag": "^1.0.2" 5242 - }, 5243 - "engines": { 5244 - "node": ">= 0.4" 5245 - }, 5246 - "funding": { 5247 - "url": "https://github.com/sponsors/ljharb" 5248 - } 5249 - }, 5250 - "node_modules/word-wrap": { 5251 - "version": "1.2.5", 5252 - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", 5253 - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", 5254 - "dev": true, 5255 - "license": "MIT", 5256 - "engines": { 5257 - "node": ">=0.10.0" 5258 - } 5259 - }, 5260 - "node_modules/yallist": { 5261 - "version": "3.1.1", 5262 - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", 5263 - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", 5264 - "dev": true, 5265 - "license": "ISC" 5266 - }, 5267 - "node_modules/yocto-queue": { 5268 - "version": "0.1.0", 5269 - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 5270 - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 5271 - "dev": true, 5272 - "license": "MIT", 5273 - "engines": { 5274 - "node": ">=10" 5275 - }, 5276 - "funding": { 5277 - "url": "https://github.com/sponsors/sindresorhus" 5278 - } 5279 2642 } 5280 - } 5281 2643 }
+8 -7
frontend/package.json
··· 7 7 "dev": "vite", 8 8 "build": "tsc && vite build", 9 9 "preview": "vite preview", 10 - "lint": "tsc && eslint --cache" 10 + "lint": "tsc && oxlint", 11 + "lint:fix": "oxlint --fix" 11 12 }, 12 13 "dependencies": { 14 + "@fontsource/bungee": "^5.2.7", 15 + "@tabler/icons-react": "^3.36.1", 13 16 "@tauri-apps/api": "^2", 17 + "@tauri-apps/plugin-dialog": "^2", 14 18 "@tauri-apps/plugin-geolocation": "^2", 15 19 "@tauri-apps/plugin-log": "^2", 16 20 "@tauri-apps/plugin-notification": "^2", 17 21 "@tauri-apps/plugin-opener": "^2", 18 - "@tauri-apps/plugin-dialog": "^2", 22 + "lightningcss": "^1.31.1", 19 23 "react": "^19", 20 24 "react-dom": "^19", 21 25 "swr": "^2" 22 26 }, 23 27 "devDependencies": { 24 - "@eslint/js": "^9.39.2", 25 28 "@types/node": "^25.2.3", 26 29 "@types/react": "^19", 27 30 "@types/react-dom": "^19", 28 31 "@vitejs/plugin-react": "^5.1.4", 29 - "eslint": "^9.39.2", 30 - "eslint-plugin-react": "^7", 31 - "eslint-plugin-react-hooks": "^5.2.0", 32 + "babel-plugin-react-compiler": "^1.0.0", 32 33 "globals": "^17.3.0", 34 + "oxlint": "^1.49.0", 33 35 "prettier": "^3", 34 36 "typescript": "^5", 35 - "typescript-eslint": "^8", 36 37 "vite": "^7" 37 38 } 38 39 }
+7
frontend/src/bindings.ts
··· 31 31 return await TAURI_INVOKE("get_current_screen"); 32 32 }, 33 33 /** 34 + * (Screen: Menu) Prompt user for a profile picture and handles converting it to base64 35 + * Returns `null` if the user cancelled the dialog 36 + */ 37 + async createProfilePicture(): Promise<string | null> { 38 + return await TAURI_INVOKE("create_profile_picture"); 39 + }, 40 + /** 34 41 * (Screen: Menu) Update the player's profile and persist it 35 42 */ 36 43 async updateProfile(newProfile: PlayerProfile): Promise<null> {
+16 -13
frontend/src/components/App.tsx
··· 1 - import React from "react"; 2 - import useSWR from "swr"; 3 - import { AppScreen, commands } from "@/bindings"; 4 - import { useTauriEvent, sharedSwrConfig } from "@/lib/hooks"; 1 + import React, { useState } from "react"; 2 + import { AppScreen } from "@/bindings"; 3 + import { useTauriEvent } from "@/lib/hooks"; 5 4 import SetupScreen from "./SetupScreen"; 6 5 import MenuScreen from "./MenuScreen"; 7 6 import LobbyScreen from "./LobbyScreen"; 8 7 import GameScreen from "./GameScreen"; 8 + import { flushSync } from "react-dom"; 9 9 10 10 function ScreenRouter({ screen }: { screen: AppScreen }) { 11 11 switch (screen) { ··· 22 22 } 23 23 } 24 24 25 - export default function App() { 26 - const { data: screen, mutate } = useSWR( 27 - "fetch-screen", 28 - commands.getCurrentScreen, 29 - sharedSwrConfig 30 - ); 25 + export default function App({ initialScreen }: { initialScreen: AppScreen }) { 26 + const [currentScreen, setScreen] = useState(initialScreen); 31 27 32 28 useTauriEvent("changeScreen", (newScreen) => { 33 - mutate(newScreen); 29 + const update = () => { 30 + setScreen(newScreen); 31 + }; 32 + 33 + if (document.startViewTransition) { 34 + document.startViewTransition(() => flushSync(update)); 35 + } else { 36 + update(); 37 + } 34 38 }); 35 39 36 40 return ( 37 41 <> 38 - <h1>Screen: {screen}</h1> 39 - <ScreenRouter screen={screen} /> 42 + <ScreenRouter screen={currentScreen} /> 40 43 </> 41 44 ); 42 45 }
+16
frontend/src/components/LoadingCover.tsx
··· 1 + import React from "react"; 2 + import LoadingSpinner from "./LoadingSpinner"; 3 + 4 + export type LoadingCoverProps = { 5 + text?: string; 6 + show: boolean; 7 + }; 8 + 9 + export default function LoadingCover({ show, text }: LoadingCoverProps) { 10 + return ( 11 + <div className="screen-cover" style={{ display: show ? undefined : "none" }}> 12 + <LoadingSpinner /> 13 + {text && <strong>{text}</strong>} 14 + </div> 15 + ); 16 + }
+9
frontend/src/components/LoadingSpinner.tsx
··· 1 + import React from "react"; 2 + 3 + export type LoadingSpinnerProps = { 4 + className?: string; 5 + }; 6 + 7 + export default function LoadingSpinner({ className }: LoadingSpinnerProps) { 8 + return <span className={`spinner ${className ?? ""}`}></span>; 9 + }
+191 -43
frontend/src/components/LobbyScreen.tsx
··· 1 - import React from "react"; 2 - import { commands } from "@/bindings"; 3 - import { sharedSwrConfig, useTauriEvent } from "@/lib/hooks"; 4 - import useSWR from "swr"; 1 + import React, { useEffect, useState } from "react"; 2 + import { commands, GameSettings, LobbyState, PingStartCondition, PlayerProfile } from "@/bindings"; 3 + import { useTauriEvent } from "@/lib/hooks"; 4 + import ProfilePicture, { iconForDecor, ProfileDecor } from "./ProfilePicture"; 5 + import { defaultSettings } from "./MenuScreen"; 6 + import { ask } from "@tauri-apps/plugin-dialog"; 7 + import { 8 + IconArrowBigLeftLinesFilled, 9 + IconCircleCheckFilled, 10 + IconCircleDashedPlus, 11 + IconFlagFilled, 12 + IconInfoCircleFilled, 13 + IconSettingsFilled 14 + } from "@tabler/icons-react"; 15 + import LoadingCover from "./LoadingCover"; 16 + import GameSettingsModal from "./game-settings/GameSettingsModal"; 17 + 18 + function ProfileList({ 19 + profiles, 20 + decoration, 21 + emptyText 22 + }: { 23 + profiles: [string, PlayerProfile][]; 24 + decoration: ProfileDecor; 25 + emptyText: string; 26 + }) { 27 + return ( 28 + <div className="pfp-list"> 29 + {profiles.length === 0 && <small>{emptyText}</small>} 30 + {profiles.map(([k, p]) => ( 31 + <ProfilePicture 32 + key={k} 33 + decoration={decoration} 34 + src={p.pfp_base64} 35 + fallbackName={p.display_name} 36 + /> 37 + ))} 38 + </div> 39 + ); 40 + } 41 + 42 + function TeamButton({ 43 + onClick, 44 + active, 45 + deco, 46 + text 47 + }: { 48 + onClick: () => void; 49 + active: boolean; 50 + deco: ProfileDecor; 51 + text: string; 52 + }) { 53 + const Icon = iconForDecor(deco); 54 + 55 + return ( 56 + <button onClick={onClick} className={`team-button ${deco}`}> 57 + <Icon /> 58 + {active ? "You're On" : "Join"} {text} 59 + {active ? <IconCircleCheckFilled /> : <IconCircleDashedPlus />} 60 + </button> 61 + ); 62 + } 63 + 64 + const initLobbyState: LobbyState = { 65 + profiles: {}, 66 + join_code: "", 67 + teams: {}, 68 + self_id: "", 69 + is_host: false, 70 + settings: defaultSettings() 71 + }; 5 72 6 73 export default function LobbyScreen() { 7 - const { data: lobbyState, mutate } = useSWR( 8 - "fetch-lobby-state", 9 - commands.getLobbyState, 10 - sharedSwrConfig 11 - ); 74 + const [lobbyState, setLobbyState] = useState(initLobbyState); 75 + const [loadingCover, setLoadingCover] = useState(true); 76 + const [settingOpen, setSettingsOpen] = useState(false); 77 + 78 + useEffect(() => { 79 + let cancel = false; 80 + const clear = setTimeout(() => { 81 + commands.getLobbyState().then((state) => { 82 + if (!cancel) { 83 + setLobbyState(state); 84 + setLoadingCover(false); 85 + } 86 + }); 87 + }, 300); 88 + return () => { 89 + cancel = true; 90 + clearTimeout(clear); 91 + }; 92 + }, [setLobbyState]); 12 93 13 94 useTauriEvent("lobbyStateUpdate", () => { 14 - mutate(); 95 + commands.getLobbyState().then((state) => { 96 + setLobbyState(state); 97 + }); 15 98 }); 16 99 17 - const setSeeker = async (seeker: boolean) => { 18 - await commands.switchTeams(seeker); 100 + const profiles = Object.entries(lobbyState.profiles).filter(([_, p]) => p !== undefined) as [ 101 + string, 102 + PlayerProfile 103 + ][]; 104 + 105 + const seekers = profiles.filter(([id, _]) => lobbyState.teams[id] ?? false); 106 + const hiders = profiles.filter(([id, _]) => !(lobbyState.teams[id] ?? false)); 107 + 108 + const isSeeker = lobbyState.teams[lobbyState.self_id] ?? false; 109 + 110 + const onLeaveLobby = () => { 111 + // Don't prompt since the lobby is empty (besides us obv) 112 + // <= even though it should never be 0... hopefully.... 113 + if (lobbyState.is_host && profiles.length <= 1) { 114 + commands.quitToMenu(); 115 + return; 116 + } 117 + const hostMsg = lobbyState.is_host ? " You are the host so this will cancel the lobby" : ""; 118 + 119 + const msg = `Are you sure you want to leave this lobby?${hostMsg}`; 120 + 121 + ask(msg, { 122 + title: "Leave Lobby", 123 + kind: lobbyState.is_host ? "warning" : "info" 124 + }).then((choice) => { 125 + if (choice) { 126 + commands.quitToMenu(); 127 + } 128 + }); 19 129 }; 20 130 21 - const startGame = async () => { 22 - await commands.hostStartGame(); 131 + const canStart = lobbyState.is_host && seekers.length !== 0 && hiders.length !== 0; 132 + 133 + const onStartGame = () => { 134 + if (canStart) { 135 + setLoadingCover(true); 136 + ask( 137 + "Are you ready to start the game? New players will be unable to join. The hiding timer will begin the moment you press start." 138 + ) 139 + .then((choice) => { 140 + if (choice) { 141 + commands.hostStartGame().finally(() => { 142 + setLoadingCover(false); 143 + }); 144 + } else { 145 + setLoadingCover(false); 146 + } 147 + }) 148 + .catch(() => { 149 + setLoadingCover(false); 150 + }); 151 + } 23 152 }; 24 153 25 - const quit = async () => { 26 - await commands.quitToMenu(); 154 + const onOpenSettings = () => { 155 + setSettingsOpen(true); 27 156 }; 28 157 29 - if (lobbyState.self_id === null) { 30 - return <h2>Connecting to Lobby...</h2>; 31 - } 158 + const onSettingsSave = (settings: GameSettings) => { 159 + commands.hostUpdateSettings(settings); 160 + setSettingsOpen(false); 161 + }; 32 162 33 163 return ( 34 164 <> 35 - <h2>Join Code: {lobbyState.join_code}</h2> 36 - 37 - {lobbyState.is_host && <button onClick={startGame}>Start Game</button>} 38 - 39 - <button onClick={() => setSeeker(true)}>Become Seeker</button> 40 - <button onClick={() => setSeeker(false)}>Become Hider</button> 41 - 42 - <h3>Seekers</h3> 43 - <ul> 44 - {Object.keys(lobbyState.teams) 45 - .filter((k) => lobbyState.teams[k]) 46 - .map((key) => ( 47 - <li key={key}>{lobbyState.profiles[key]?.display_name ?? key}</li> 48 - ))} 49 - </ul> 50 - <h3>Hiders</h3> 51 - <ul> 52 - {Object.keys(lobbyState.teams) 53 - .filter((k) => !lobbyState.teams[k]) 54 - .map((key) => ( 55 - <li key={key}>{lobbyState.profiles[key]?.display_name ?? key}</li> 56 - ))} 57 - </ul> 58 - <button onClick={quit}>Quit to Menu</button> 165 + <LoadingCover show={loadingCover} /> 166 + {settingOpen && ( 167 + <GameSettingsModal gameSettings={lobbyState.settings} onSave={onSettingsSave} /> 168 + )} 169 + <header> 170 + <span className="grow">Lobby</span> 171 + <span>Join: {lobbyState.join_code}</span> 172 + </header> 173 + <main className="lobby"> 174 + <ProfileList profiles={seekers} decoration="seeker" emptyText="No Seekers" /> 175 + <TeamButton 176 + onClick={() => commands.switchTeams(true)} 177 + active={isSeeker} 178 + text="Seekers" 179 + deco="seeker" 180 + /> 181 + <div className="frame"> 182 + <button onClick={onLeaveLobby} className="fab tl"> 183 + <IconArrowBigLeftLinesFilled size="1.5em" /> 184 + Leave 185 + </button> 186 + {lobbyState.is_host && ( 187 + <button onClick={onOpenSettings} className="fab bl"> 188 + <IconSettingsFilled size="1.5em" /> 189 + Rules 190 + </button> 191 + )} 192 + {lobbyState.is_host && ( 193 + <button disabled={!canStart} onClick={onStartGame} className="fab br"> 194 + <IconFlagFilled size="1.5em" /> 195 + Start 196 + </button> 197 + )} 198 + </div> 199 + <TeamButton 200 + onClick={() => commands.switchTeams(false)} 201 + active={!isSeeker} 202 + text="Hiders" 203 + deco="hider" 204 + /> 205 + <ProfileList profiles={hiders} decoration="hider" emptyText="No Hiders" /> 206 + </main> 59 207 </> 60 208 ); 61 209 }
+111 -72
frontend/src/components/MenuScreen.tsx
··· 1 - import { commands, GameSettings } from "@/bindings"; 2 - import { sharedSwrConfig } from "@/lib/hooks"; 3 - import React from "react"; 4 - import useSWR from "swr"; 1 + import React, { useCallback, useEffect, useState } from "react"; 2 + import "@fontsource/bungee"; 3 + import { 4 + IconBuildingBroadcastTowerFilled, 5 + IconHexagonPlusFilled, 6 + IconClockFilled 7 + } from "@tabler/icons-react"; 8 + import { commands, GameSettings, PlayerProfile } from "@/bindings"; 9 + import ProfilePicture from "./ProfilePicture"; 10 + import LoadingCover from "./LoadingCover"; 11 + import { message } from "@tauri-apps/plugin-dialog"; 5 12 6 - // Temp settings for now. 7 - const settings: GameSettings = { 8 - random_seed: 21341234, 9 - hiding_time_seconds: 10, 13 + export const defaultSettings: () => GameSettings = () => ({ 14 + random_seed: Math.floor(Math.random() * 2 ** 32), 15 + hiding_time_seconds: 60 * 5, 10 16 ping_start: "Instant", 11 - ping_minutes_interval: 1, 17 + ping_minutes_interval: 10, 12 18 powerup_start: "Instant", 13 19 powerup_chance: 60, 14 20 powerup_minutes_cooldown: 1, 15 - powerup_locations: [ 16 - { 17 - lat: 0, 18 - long: 0, 19 - heading: null 20 - } 21 - ] 21 + powerup_locations: [] 22 + }); 23 + 24 + const defaultProfile: PlayerProfile = { 25 + display_name: "", 26 + pfp_base64: null 22 27 }; 23 28 24 29 export default function MenuScreen() { 25 - const [roomCode, setRoomCode] = React.useState(""); 26 - const [newName, setName] = React.useState(""); 30 + const [profile, setProfile] = useState<PlayerProfile>(defaultProfile); 31 + const [loadingCover, setLoadingCover] = useState<boolean>(false); 27 32 28 - const { data: profile, mutate: setProfile } = useSWR( 29 - "fetch-profile", 30 - commands.getProfile, 31 - sharedSwrConfig 32 - ); 33 - const { data: gameHistory } = useSWR( 34 - "list-game-history", 35 - commands.listGameHistories, 36 - sharedSwrConfig 37 - ); 33 + useEffect(() => { 34 + let cancel = false; 35 + commands.getProfile().then((profile) => { 36 + if (!cancel) { 37 + setProfile(profile); 38 + } 39 + }); 40 + return () => { 41 + cancel = true; 42 + }; 43 + }, [setProfile]); 38 44 39 - const onStartGame = async (code: string | null) => { 40 - if (code) { 41 - try { 42 - const validCode = await commands.checkRoomCode(code); 43 - if (!validCode) { 44 - window.alert("Invalid Join Code"); 45 - return; 45 + const startLobby = () => { 46 + setLoadingCover(true); 47 + setTimeout(() => { 48 + commands.startLobby(null, defaultSettings()).catch(() => { 49 + setLoadingCover(false); 50 + }); 51 + }, 100); 52 + }; 53 + 54 + const joinLobby = () => { 55 + setLoadingCover(true); 56 + const code = window.prompt("Enter join code"); 57 + if (!code) { 58 + setLoadingCover(false); 59 + return; 60 + } 61 + const cleanedCode = code.toUpperCase().trim(); 62 + commands 63 + .checkRoomCode(cleanedCode) 64 + .then((valid) => { 65 + if (valid) { 66 + commands.startLobby(cleanedCode, defaultSettings()).catch(() => { 67 + setLoadingCover(false); 68 + }); 69 + } else { 70 + message("Invalid Join Code", { kind: "error", title: "Failed to Join" }); 71 + setLoadingCover(false); 46 72 } 47 - } catch (e) { 48 - window.alert(`Failed to connect to Server ${e}`); 49 - return; 50 - } 73 + }) 74 + .catch(() => { 75 + setLoadingCover(false); 76 + }); 77 + }; 78 + 79 + const onEditName = () => { 80 + const newName = window.prompt("Enter New Name"); 81 + if (!newName) { 82 + return; 51 83 } 52 - await commands.startLobby(code, settings); 84 + 85 + const newProfile = { ...profile, display_name: newName }; 86 + commands.updateProfile(newProfile); 87 + setProfile(newProfile); 53 88 }; 54 89 55 - const onSaveProfile = async () => { 56 - await commands.updateProfile({ ...profile, display_name: newName }); 57 - setProfile({ ...profile, display_name: newName }); 90 + const onEditPicture = () => { 91 + setLoadingCover(true); 92 + commands 93 + .createProfilePicture() 94 + .then((newPic) => { 95 + if (newPic) { 96 + const newProfile = { ...profile, pfp_base64: newPic }; 97 + commands.updateProfile(newProfile); 98 + setProfile(newProfile); 99 + } 100 + }) 101 + .finally(() => { 102 + setLoadingCover(false); 103 + }); 58 104 }; 59 105 60 106 return ( 61 107 <> 62 - {profile.pfp_base64 && ( 63 - <img src={profile.pfp_base64} alt={`${profile.display_name}'s Profile Picture`} /> 64 - )} 65 - <h2>Welcome, {profile.display_name}</h2> 66 - <hr /> 67 - <h3>Play</h3> 68 - <button onClick={() => onStartGame(null)}>Start Lobby</button> 69 - <div> 70 - <input 71 - value={roomCode} 72 - placeholder="Room Code" 73 - onChange={(e) => setRoomCode(e.target.value)} 108 + <header> 109 + <ProfilePicture 110 + onClick={onEditPicture} 111 + fallbackName={profile.display_name} 112 + src={profile.pfp_base64} 74 113 /> 75 - <button onClick={() => onStartGame(roomCode)} disabled={roomCode === ""}> 114 + <span className="grow" onClick={onEditName}> 115 + Hello,&nbsp;&nbsp;{profile.display_name} 116 + </span> 117 + </header> 118 + <main className="menu"> 119 + <button onClick={startLobby}> 120 + <IconBuildingBroadcastTowerFilled size="5em" /> 121 + Start Lobby 122 + </button> 123 + <button onClick={joinLobby}> 124 + <IconHexagonPlusFilled size="2.5em" /> 76 125 Join Lobby 77 126 </button> 78 - </div> 79 - <hr /> 80 - <h3>Edit Profile</h3> 81 - <input 82 - placeholder={profile.display_name} 83 - value={newName} 84 - onChange={(e) => setName(e.target.value)} 85 - /> 86 - <button onClick={onSaveProfile}>Save</button> 87 - <hr /> 88 - <h3>Previous Games</h3> 89 - <ul> 90 - {gameHistory.map((time) => ( 91 - <li key={time}>{time}</li> 92 - ))} 93 - </ul> 127 + <button> 128 + <IconClockFilled size="1.5em" /> 129 + Past Games 130 + </button> 131 + </main> 132 + <LoadingCover show={loadingCover} /> 94 133 </> 95 134 ); 96 135 }
+69
frontend/src/components/ProfilePicture.tsx
··· 1 + import React from "react"; 2 + import fallbackPicture from "@/default-pfp.webp"; 3 + import { IconBinocularsFilled, IconGhostFilled } from "@tabler/icons-react"; 4 + 5 + export type ProfileDecor = "hider" | "seeker"; 6 + 7 + export const iconForDecor = (decor: ProfileDecor) => { 8 + if (decor === "hider") { 9 + return IconGhostFilled; 10 + } else { 11 + return IconBinocularsFilled; 12 + } 13 + }; 14 + 15 + export type ProfilePictureProps = { 16 + fallbackName: string; 17 + src: string | null; 18 + decoration?: ProfileDecor; 19 + onClick?: () => void; 20 + }; 21 + 22 + const hashName = (str: string, seed = 3) => { 23 + let h1 = 0xdeadbeef ^ seed, 24 + h2 = 0x41c6ce57 ^ seed; 25 + for (let i = 0, ch; i < str.length; i++) { 26 + ch = str.charCodeAt(i); 27 + h1 = Math.imul(h1 ^ ch, 2654435761); 28 + h2 = Math.imul(h2 ^ ch, 1597334677); 29 + } 30 + h1 = Math.imul(h1 ^ (h1 >>> 16), 2246822507) ^ Math.imul(h2 ^ (h2 >>> 13), 3266489909); 31 + h2 = Math.imul(h2 ^ (h2 >>> 16), 2246822507) ^ Math.imul(h1 ^ (h1 >>> 13), 3266489909); 32 + return 4294967296 * (2097151 & h2) + (h1 >>> 0); 33 + }; 34 + 35 + export default function ProfilePicture({ 36 + onClick, 37 + fallbackName, 38 + src, 39 + decoration 40 + }: ProfilePictureProps) { 41 + const fallback = src ? `data:image/webp;base64,${src}` : fallbackPicture; 42 + const hueshift = hashName(fallbackName) % 360; 43 + 44 + const style = 45 + src === null 46 + ? { 47 + filter: `hue-rotate(${hueshift}deg)` 48 + } 49 + : undefined; 50 + 51 + const className = "pfp" + (decoration !== undefined ? ` ${decoration}` : ""); 52 + 53 + const fallbackInitial = src === null ? (fallbackName[0] ?? "?") : undefined; 54 + 55 + const Icon = decoration !== undefined ? iconForDecor(decoration) : null; 56 + 57 + return ( 58 + <span 59 + onClick={() => { 60 + onClick?.(); 61 + }} 62 + data-initial={fallbackInitial} 63 + className={className} 64 + > 65 + <img width={64} height={64} style={style} alt="Profile Picture" src={fallback} /> 66 + {Icon && <Icon size="1em" />} 67 + </span> 68 + ); 69 + }
+86
frontend/src/components/game-settings/GameSettingsModal.tsx
··· 1 + import { GameSettings } from "@/bindings"; 2 + import React, { useState } from "react"; 3 + import SettingsSection from "./SettingsSection"; 4 + import StartConditionField from "./StartConditionField"; 5 + import SliderField from "./SliderField"; 6 + import SettingsAdmo from "./SettingsAdmo"; 7 + import { iconForDecor } from "../ProfilePicture"; 8 + import { IconMapPinFilled, IconSettingsFilled } from "@tabler/icons-react"; 9 + 10 + export default function GameSettingsModal({ 11 + gameSettings, 12 + onSave 13 + }: { 14 + gameSettings: GameSettings; 15 + onSave: (settings: GameSettings) => void; 16 + }) { 17 + const [hidingTime, setHidingTime] = useState(gameSettings.hiding_time_seconds); 18 + const [pingStart, setPingStart] = useState(gameSettings.ping_start); 19 + const [pingInterval, setPingInterval] = useState(gameSettings.ping_minutes_interval); 20 + 21 + const onSaveClick = () => { 22 + const newSettings = { 23 + ...gameSettings, 24 + hiding_time_seconds: hidingTime, 25 + ping_start: pingStart, 26 + ping_minutes_interval: pingInterval 27 + }; 28 + onSave(newSettings); 29 + }; 30 + 31 + const HiderIcon = iconForDecor("hider"); 32 + 33 + return ( 34 + <div className="screen-cover"> 35 + <dialog className="settings-popup"> 36 + <h2> 37 + <IconSettingsFilled /> Game Rules 38 + </h2> 39 + <div> 40 + <SettingsSection icon={<HiderIcon />} title="Hiding"> 41 + <SettingsAdmo> 42 + Hiders will have a period of time to hide. 43 + <br /> 44 + After this, seekers are allowed to begin searching. 45 + </SettingsAdmo> 46 + <SliderField 47 + label="Hide For" 48 + displayValue={`${hidingTime / 60} minutes`} 49 + value={hidingTime / 60} 50 + min={2} 51 + max={120} 52 + onChange={(e) => { 53 + setHidingTime(parseInt(e.target.value) * 60); 54 + }} 55 + /> 56 + </SettingsSection> 57 + <SettingsSection icon={<IconMapPinFilled />} title="Pings"> 58 + <SettingsAdmo> 59 + Pings are when hider locations are shared with everyone. 60 + <br /> 61 + They start after seekers are released and continue at an interval. 62 + </SettingsAdmo> 63 + <StartConditionField 64 + label="Pings Start" 65 + value={pingStart} 66 + onChange={(val) => setPingStart(val)} 67 + /> 68 + <SliderField 69 + label="Ping Every" 70 + displayValue={`${pingInterval.toString()} minutes`} 71 + value={pingInterval} 72 + min={5} 73 + max={60} 74 + onChange={(e) => { 75 + setPingInterval(parseInt(e.target.value)); 76 + }} 77 + /> 78 + </SettingsSection> 79 + </div> 80 + <div> 81 + <button onClick={onSaveClick}>Save Settings</button> 82 + </div> 83 + </dialog> 84 + </div> 85 + ); 86 + }
+6
frontend/src/components/game-settings/SettingsAdmo.tsx
··· 1 + import { IconInfoCircleFilled } from "@tabler/icons-react"; 2 + import React, { PropsWithChildren } from "react"; 3 + 4 + export default function SettingsAdmo({ children }: PropsWithChildren<{}>) { 5 + return <p>{children}</p>; 6 + }
+13
frontend/src/components/game-settings/SettingsField.tsx
··· 1 + import React, { PropsWithChildren } from "react"; 2 + 3 + export type SettingsFieldProps = PropsWithChildren<{ label: string; displayValue: string }>; 4 + 5 + export default function SettingsField({ label, displayValue, children }: SettingsFieldProps) { 6 + return ( 7 + <label> 8 + <span>{label}</span> 9 + <span>{displayValue}</span> 10 + {children} 11 + </label> 12 + ); 13 + }
+16
frontend/src/components/game-settings/SettingsSection.tsx
··· 1 + import React, { PropsWithChildren, ReactNode } from "react"; 2 + 3 + export default function SettingsSection({ 4 + title, 5 + children, 6 + icon 7 + }: PropsWithChildren<{ title: string; icon: ReactNode }>) { 8 + return ( 9 + <fieldset> 10 + <h3> 11 + {icon} {title} 12 + </h3> 13 + {children} 14 + </fieldset> 15 + ); 16 + }
+13
frontend/src/components/game-settings/SliderField.tsx
··· 1 + import React, { HTMLProps } from "react"; 2 + import SettingsField, { SettingsFieldProps } from "./SettingsField"; 3 + 4 + type Props = Omit<Omit<HTMLProps<HTMLInputElement>, "type">, "label"> & 5 + Omit<SettingsFieldProps, "children">; 6 + 7 + export default function SliderField({ label, displayValue, ...rest }: Props) { 8 + return ( 9 + <SettingsField label={label} displayValue={displayValue}> 10 + <input type="range" {...rest} /> 11 + </SettingsField> 12 + ); 13 + }
+116
frontend/src/components/game-settings/StartConditionField.tsx
··· 1 + import { PingStartCondition } from "@/bindings"; 2 + import React from "react"; 3 + import SettingsField from "./SettingsField"; 4 + 5 + export type StartConditionInputProps = { 6 + value: PingStartCondition; 7 + onChange: (val: PingStartCondition) => void; 8 + label: string; 9 + }; 10 + 11 + const startConditionOptions = { 12 + instant: "Instantly", 13 + minutes: "After _ Minutes", 14 + players: "After _ Caught" 15 + }; 16 + 17 + const startConditionDefaults: Record<keyof typeof startConditionOptions, PingStartCondition> = { 18 + instant: "Instant", 19 + minutes: { Minutes: 5 }, 20 + players: { Players: 1 } 21 + }; 22 + 23 + const getStartConditionName = (cond: PingStartCondition) => { 24 + if (cond === "Instant") { 25 + return startConditionOptions.instant; 26 + } else if (cond.hasOwnProperty("Minutes")) { 27 + const mins = cond as { Minutes: number }; 28 + return startConditionOptions.minutes.replace("_", mins["Minutes"].toString()); 29 + } else if (cond.hasOwnProperty("Players")) { 30 + const plays = cond as { Players: number }; 31 + return startConditionOptions.players.replace("_", plays["Players"].toString()); 32 + } else { 33 + return "Instant"; 34 + } 35 + }; 36 + 37 + const getStartConditionKey = (cond: PingStartCondition): keyof typeof startConditionOptions => { 38 + if (cond === "Instant") { 39 + return "instant"; 40 + } else if (cond.hasOwnProperty("Minutes")) { 41 + return "minutes"; 42 + } else if (cond.hasOwnProperty("Players")) { 43 + return "players"; 44 + } else { 45 + return "instant"; 46 + } 47 + }; 48 + 49 + const getStartConditionValue = ( 50 + cond: PingStartCondition, 51 + key: keyof typeof startConditionOptions 52 + ) => { 53 + switch (key) { 54 + case "instant": 55 + return null; 56 + case "minutes": 57 + return (cond as { Minutes: number })["Minutes"]; 58 + case "players": 59 + return (cond as { Players: number })["Players"]; 60 + } 61 + }; 62 + 63 + const setStartConditionValue = ( 64 + key: keyof typeof startConditionOptions, 65 + val: number 66 + ): PingStartCondition => { 67 + switch (key) { 68 + case "instant": 69 + return "Instant"; 70 + case "minutes": 71 + return { Minutes: val }; 72 + case "players": 73 + return { Players: val }; 74 + } 75 + }; 76 + 77 + export default function StartConditionField({ value, onChange, label }: StartConditionInputProps) { 78 + const key = getStartConditionKey(value); 79 + const sliderVal = getStartConditionValue(value, key); 80 + 81 + return ( 82 + <> 83 + <SettingsField label={label} displayValue={getStartConditionName(value)}> 84 + <select 85 + onChange={(e) => { 86 + onChange( 87 + startConditionDefaults[ 88 + e.target.value as keyof typeof startConditionOptions 89 + ] 90 + ); 91 + }} 92 + value={key} 93 + > 94 + {Object.entries(startConditionOptions).map(([k, v]) => ( 95 + <option value={k} key={k}> 96 + {v} 97 + </option> 98 + ))} 99 + </select> 100 + </SettingsField> 101 + {sliderVal !== null && ( 102 + <input 103 + className="extra" 104 + min={1} 105 + max={key === "minutes" ? 120 : 20} 106 + type="range" 107 + value={sliderVal} 108 + onChange={(e) => { 109 + const newVal = setStartConditionValue(key, parseInt(e.target.value)); 110 + onChange(newVal); 111 + }} 112 + /> 113 + )} 114 + </> 115 + ); 116 + }
frontend/src/default-pfp.webp

This is a binary file and will not be displayed.

+4 -3
frontend/src/main.tsx
··· 4 4 const App = React.lazy(() => import("@/components/App")); 5 5 6 6 import { warn, debug, trace, info, error } from "@tauri-apps/plugin-log"; 7 + import { commands } from "./bindings"; 7 8 8 9 function forwardConsole( 9 10 fnName: "log" | "debug" | "info" | "warn" | "error", ··· 22 23 forwardConsole("warn", warn); 23 24 forwardConsole("error", error); 24 25 26 + const screen = await commands.getCurrentScreen(); 27 + 25 28 ReactDOM.createRoot(document.getElementById("root") as HTMLElement).render( 26 29 <React.StrictMode> 27 - <React.Suspense> 28 - <App /> 29 - </React.Suspense> 30 + <App initialScreen={screen} /> 30 31 </React.StrictMode> 31 32 );
+453
frontend/src/style.css
··· 1 + :root { 2 + font-family: "Bungee"; 3 + user-select: none; 4 + -webkit-user-select: none; 5 + 6 + --scale: 1.25; 7 + --small: calc(1rem * pow(var(--scale), -1)); 8 + --half: calc(1rem * pow(var(--scale), -0.5)); 9 + --1: calc(1rem * pow(var(--scale), 0)); 10 + --2: calc(1rem * pow(var(--scale), 1)); 11 + --3: calc(1rem * pow(var(--scale), 2)); 12 + --4: calc(1rem * pow(var(--scale), 3)); 13 + --5: calc(1rem * pow(var(--scale), 4)); 14 + --6: calc(1rem * pow(var(--scale), 5)); 15 + --7: calc(1rem * pow(var(--scale), 6)); 16 + --8: calc(1rem * pow(var(--scale), 7)); 17 + --9: calc(1rem * pow(var(--scale), 8)); 18 + --10: calc(1rem * pow(var(--scale), 9)); 19 + --11: calc(1rem * pow(var(--scale), 10)); 20 + --12: calc(1rem * pow(var(--scale), 11)); 21 + --14: calc(1rem * pow(var(--scale), 13)); 22 + overflow: hidden; 23 + } 24 + 25 + body { 26 + display: flex; 27 + flex-direction: column; 28 + overflow: hidden; 29 + margin: 0; 30 + width: 100vw; 31 + height: 100vh; 32 + } 33 + 34 + button { 35 + font-family: "Bungee"; 36 + } 37 + 38 + header { 39 + font-size: 18pt; 40 + font-weight: bold; 41 + box-sizing: border-box; 42 + z-index: 80; 43 + 44 + display: flex; 45 + flex-direction: row; 46 + align-items: center; 47 + 48 + box-shadow: #0001 0 2px 20px; 49 + background-color: #eee; 50 + 51 + padding: var(--1); 52 + gap: var(--1); 53 + 54 + .grow { 55 + flex-grow: 1; 56 + display: flex; 57 + height: 100%; 58 + align-items: center; 59 + } 60 + } 61 + 62 + main { 63 + display: flex; 64 + flex-direction: column; 65 + flex-grow: 1; 66 + 67 + .map { 68 + flex-grow: 1; 69 + background-color: #211; /* TEMP: Until I set up and actual map */ 70 + } 71 + 72 + &.lobby { 73 + .frame { 74 + flex-grow: 1; 75 + background-color: #aaa; 76 + position: relative; 77 + overflow-y: scroll; 78 + width: 100%; 79 + } 80 + 81 + .pfp-list { 82 + z-index: 4; 83 + overflow-x: auto; 84 + box-shadow: 0 0 10px #0004; 85 + display: flex; 86 + flex-direction: row; 87 + align-items: center; 88 + justify-content: center; 89 + gap: var(--2); 90 + width: 100%; 91 + font-size: 20pt; 92 + height: 5vh; 93 + padding: var(--small) 0; 94 + 95 + small { 96 + font-size: 0.7em; 97 + font-style: italic; 98 + color: #383838ff; 99 + } 100 + 101 + .pfp { 102 + transition: transform 175ms linear; 103 + 104 + @starting-style { 105 + transform: scale(0); 106 + } 107 + } 108 + } 109 + 110 + .team-button { 111 + display: flex; 112 + --deco: black; 113 + z-index: 3; 114 + flex-direction: row; 115 + align-items: center; 116 + justify-content: center; 117 + box-shadow: 0 0 5px var(--deco); 118 + background-color: var(--deco); 119 + font-size: 16pt; 120 + gap: var(--small); 121 + padding: var(--1) 0; 122 + border: none; 123 + 124 + &.hider { 125 + --deco: #67c; 126 + } 127 + 128 + &.seeker { 129 + --deco: #c67; 130 + } 131 + } 132 + } 133 + 134 + &.menu button { 135 + display: flex; 136 + flex-direction: row; 137 + align-items: center; 138 + justify-content: center; 139 + border-radius: 0; 140 + border: none; 141 + margin: 0; 142 + /* box-shadow: 0 0 25px black; */ 143 + width: 105%; 144 + 145 + &:first-child { 146 + font-size: 35pt; 147 + flex-grow: 1; 148 + justify-content: safe; 149 + flex-direction: column; 150 + background-color: #6c6; 151 + margin-top: calc(-1 * var(--4)); 152 + transform: rotateZ(2deg) translateX(-7px) translateY(-30px); 153 + } 154 + 155 + &:nth-child(2) { 156 + font-size: 28pt; 157 + min-height: 32%; 158 + flex-direction: column; 159 + background-color: #67c; 160 + margin-top: calc(-1 * var(--8)); 161 + padding-bottom: var(--5); 162 + transform: rotateZ(-2deg) translateX(-6px); 163 + } 164 + 165 + &:nth-child(3) { 166 + font-size: 25pt; 167 + min-height: 20%; 168 + margin-top: calc(-1 * var(--4)); 169 + gap: 4px; 170 + background-color: #c67; 171 + transform: rotateZ(1deg) translateY(5px); 172 + } 173 + } 174 + } 175 + 176 + div.screen-cover { 177 + font-size: 24pt; 178 + position: fixed; 179 + inset: 0; 180 + background-color: #0009; 181 + display: flex; 182 + align-items: center; 183 + justify-content: center; 184 + z-index: 500; 185 + flex-direction: column; 186 + backdrop-filter: blur(1px); 187 + gap: var(--2); 188 + 189 + strong { 190 + color: white; 191 + filter: drop-shadow(0 0 10px #000a); 192 + } 193 + 194 + .spinner { 195 + font-size: 48pt; 196 + view-transition-name: spinner; 197 + opacity: 0.85; 198 + } 199 + } 200 + 201 + .settings-popup { 202 + position: relative; 203 + font-family: "sans-serif"; 204 + font-size: 18pt; 205 + background-color: white; 206 + display: flex; 207 + padding: var(--small) var(--1); 208 + flex-direction: column; 209 + width: 93vw; 210 + height: 95vh; 211 + border-radius: 10px; 212 + overflow: hidden; 213 + border: none; 214 + transition: 100ms ease-out; 215 + transition-property: transform, opacity; 216 + 217 + @starting-style { 218 + transform: translateY(10px); 219 + opacity: 0; 220 + } 221 + 222 + h2 { 223 + margin: 0; 224 + font-size: 22pt; 225 + font-family: "Bungee"; 226 + border-bottom: solid 2px #aaa; 227 + display: flex; 228 + gap: 0.2em; 229 + align-items: center; 230 + justify-content: center; 231 + } 232 + 233 + h3 { 234 + font-size: 20pt; 235 + font-family: "Bungee"; 236 + margin: 0; 237 + display: flex; 238 + gap: 0.2em; 239 + align-items: center; 240 + } 241 + 242 + fieldset { 243 + padding: var(--small) 0; 244 + border: none; 245 + border-bottom: solid 2px #ddd; 246 + display: flex; 247 + flex-direction: column; 248 + 249 + p { 250 + font-size: 16pt; 251 + margin: 0; 252 + margin-bottom: var(--2); 253 + text-wrap: balance; 254 + font-family: sans-serif; 255 + } 256 + } 257 + 258 + & > div:nth-child(2) { 259 + flex-grow: 1; 260 + display: flex; 261 + flex-direction: column; 262 + overflow-y: scroll; 263 + min-height: 0; 264 + } 265 + 266 + & > div:nth-child(3) { 267 + height: 7%; 268 + 269 + button { 270 + font-size: 20pt; 271 + box-shadow: 0 0 5px black; 272 + background-color: #6c7; 273 + border: none; 274 + border-radius: 5px; 275 + margin: 0; 276 + padding: 0 var(--1); 277 + width: 100%; 278 + height: 100%; 279 + } 280 + } 281 + 282 + select { 283 + padding: 0.5em 0; 284 + } 285 + 286 + input { 287 + width: 100%; 288 + box-shadow: 0 0 5px #0004 inset; 289 + 290 + &.extra { 291 + margin-top: 0em; 292 + } 293 + 294 + &[type="range"] { 295 + appearance: none; 296 + padding: 0.2em 0; 297 + border-radius: 5px; 298 + background-color: #999; 299 + height: var(--1); 300 + 301 + &::-webkit-slider-thumb { 302 + appearance: none; 303 + border-radius: 50%; 304 + color: red; 305 + background-color: white; 306 + box-shadow: 0 0 5px #000a; 307 + height: var(--4); 308 + width: var(--4); 309 + } 310 + } 311 + } 312 + 313 + label { 314 + display: grid; 315 + grid-template-areas: "l p" "i i"; 316 + gap: var(--small); 317 + margin: var(--1) 0; 318 + width: 100%; 319 + 320 + :first-child { 321 + grid-area: l; 322 + } 323 + 324 + :nth-child(2) { 325 + grid-area: p; 326 + text-align: right; 327 + } 328 + 329 + :nth-child(3) { 330 + grid-area: i; 331 + } 332 + } 333 + } 334 + 335 + :root::view-transition-group(spinner) { 336 + animation-duration: 0s; 337 + animation-delay: 0s; 338 + } 339 + 340 + @keyframes rotation { 341 + 0% { 342 + transform: rotate(0deg); 343 + } 344 + 345 + 100% { 346 + transform: rotate(360deg); 347 + } 348 + } 349 + 350 + span.spinner { 351 + width: 1em; 352 + height: 1em; 353 + filter: drop-shadow(0 0 10px #000a); 354 + border: solid 0.1em gray; 355 + border-bottom-color: white; 356 + border-radius: 50%; 357 + display: inline-block; 358 + box-sizing: border-box; 359 + animation: rotation 1s linear infinite; 360 + } 361 + 362 + span.pfp { 363 + border-radius: 50%; 364 + position: relative; 365 + display: flex; 366 + align-items: center; 367 + justify-content: center; 368 + 369 + --deco-color: #0000; 370 + 371 + box-sizing: border-box; 372 + border-style: solid; 373 + border-width: 4px; 374 + border-color: var(--deco-color); 375 + 376 + img { 377 + width: 2em; 378 + height: 2em; 379 + border-radius: 50%; 380 + } 381 + 382 + svg { 383 + position: absolute; 384 + bottom: -10%; 385 + right: -15%; 386 + color: var(--deco-color); 387 + filter: drop-shadow(0 0 2px black); 388 + border-radius: 50%; 389 + padding: 1px; 390 + text-align: center; 391 + } 392 + 393 + &[data-initial]::after { 394 + content: attr(data-initial); 395 + color: white; 396 + filter: drop-shadow(0 0 4px black); 397 + position: absolute; 398 + display: flex; 399 + align-items: center; 400 + justify-content: center; 401 + } 402 + 403 + &.seeker { 404 + --deco-color: #c67; 405 + } 406 + 407 + &.hider { 408 + --deco-color: #67c; 409 + } 410 + } 411 + 412 + button.fab { 413 + transition: 100ms linear; 414 + transition-property: color, background-color, box-shadow; 415 + background-color: #151515ff; 416 + color: #eee; 417 + border-radius: 100px; 418 + box-shadow: 0 0 6px #222; 419 + border: none; 420 + display: flex; 421 + align-items: center; 422 + justify-content: center; 423 + gap: 0.3em; 424 + font-size: 12pt; 425 + padding: var(--2); 426 + position: absolute; 427 + 428 + &:disabled { 429 + background-color: #999; 430 + color: #555; 431 + box-shadow: 0 0 5px #4445 inset; 432 + } 433 + 434 + &.bl { 435 + left: 0.5em; 436 + bottom: var(--small); 437 + } 438 + 439 + &.br { 440 + right: 0.5em; 441 + bottom: var(--small); 442 + } 443 + 444 + &.tr { 445 + right: 0.5em; 446 + top: var(--small); 447 + } 448 + 449 + &.tl { 450 + left: 0.5em; 451 + top: var(--small); 452 + } 453 + }
+19 -1
frontend/vite.config.ts
··· 4 4 import react from "@vitejs/plugin-react"; 5 5 import path from "path"; 6 6 7 + import browserslist from "browserslist"; 8 + import { browserslistToTargets } from "lightningcss"; 9 + 7 10 const host = process.env.HOST_OVERRIDE || process.env.TAURI_DEV_HOST; 8 11 9 12 export default defineConfig(async () => ({ 10 - plugins: [react()], 13 + plugins: [ 14 + react({ 15 + babel: { 16 + plugins: ["babel-plugin-react-compiler"] 17 + } 18 + }) 19 + ], 11 20 clearScreen: false, 12 21 server: { 13 22 port: 1420, ··· 23 32 }, 24 33 resolve: { 25 34 alias: [{ find: "@", replacement: path.resolve(__dirname, "./src") }] 35 + }, 36 + css: { 37 + transformer: "lightningcss", 38 + lightningcss: { 39 + targets: browserslistToTargets(browserslist(">= 0.25%")) 40 + } 41 + }, 42 + build: { 43 + cssMinify: "lightningcss" 26 44 } 27 45 }));
+5
justfile
··· 10 10 dev: 11 11 cargo tauri dev 12 12 13 + # Start a frontend server *ON ALL INTERFACES!!!!* 14 + [working-directory('frontend')] 15 + dev-front: 16 + HOST_OVERRIDE="0.0.0.0" npm run dev 17 + 13 18 # Start a webview window *without* running the frontend, only one frontend needs to run at once 14 19 dev-window: 15 20 cargo run -p manhunt-app
+4
manhunt-app/Cargo.toml
··· 37 37 manhunt-transport = { version = "0.1.0", path = "../manhunt-transport" } 38 38 uuid = { version = "1.21.0", features = ["serde"] } 39 39 chrono = { version = "0.4.43", features = ["serde"] } 40 + image = "0.25.9" 41 + base64 = "0.22.1" 42 + tauri-plugin-fs = "2.4.5" 43 + rustls = "0.23.36"
+15 -1
manhunt-app/src/lib.rs
··· 17 17 18 18 use crate::{ 19 19 history::AppGameHistory, 20 - profiles::{read_profile_from_store, write_profile_to_store}, 20 + profiles::{profile_picture_flow, read_profile_from_store, write_profile_to_store}, 21 21 state::{AppScreen, AppState, AppStateHandle, ChangeScreen, GameStateUpdate, LobbyStateUpdate}, 22 22 }; 23 23 ··· 94 94 /// for faster error checking. 95 95 async fn check_room_code(code: &str) -> Result<bool> { 96 96 room_exists(code).await.map_err(|err| err.to_string()) 97 + } 98 + 99 + #[tauri::command] 100 + #[specta::specta] 101 + /// (Screen: Menu) Prompt user for a profile picture and handles converting it to base64 102 + /// Returns `null` if the user cancelled the dialog 103 + async fn create_profile_picture(app: AppHandle) -> Result<Option<String>> { 104 + profile_picture_flow(&app).map_err(|e| format!("Couldn't Set Your Profile Picture:\n\n{e:?}")) 97 105 } 98 106 99 107 #[tauri::command] ··· 236 244 get_profile, 237 245 quit_to_menu, 238 246 get_current_screen, 247 + create_profile_picture, 239 248 update_profile, 240 249 get_lobby_state, 241 250 host_update_settings, ··· 262 271 263 272 #[cfg_attr(mobile, tauri::mobile_entry_point)] 264 273 pub fn run() { 274 + rustls::crypto::aws_lc_rs::default_provider() 275 + .install_default() 276 + .expect("Failed to setup crypto"); 277 + 265 278 let state = RwLock::new(AppState::Setup); 266 279 267 280 let builder = mk_specta(); 268 281 269 282 tauri::Builder::default() 283 + .plugin(tauri_plugin_fs::init()) 270 284 .plugin(tauri_plugin_dialog::init()) 271 285 .plugin(tauri_plugin_notification::init()) 272 286 .plugin(
+57
manhunt-app/src/profiles.rs
··· 1 + use anyhow::Context; 2 + use base64::{Engine, prelude::BASE64_STANDARD}; 3 + use image::{ImageReader, codecs::webp::WebPEncoder, imageops::FilterType}; 4 + use log::info; 1 5 use manhunt_logic::PlayerProfile; 6 + use std::io::BufReader; 2 7 use tauri::AppHandle; 8 + use tauri_plugin_dialog::{DialogExt, PickerMode}; 9 + use tauri_plugin_fs::{FsExt, OpenOptions}; 3 10 use tauri_plugin_store::StoreExt; 4 11 12 + type Result<T = (), E = anyhow::Error> = std::result::Result<T, E>; 13 + 5 14 const STORE_NAME: &str = "profile"; 15 + 16 + const IMAGE_SIZE: u32 = 64; 17 + 18 + const SUPPORTED_EXTS: [&str; 7] = ["avif", "png", "jpg", "jpeg", "png", "tiff", "webp"]; 19 + 20 + fn create_profile_picture(file: std::fs::File) -> Result<String> { 21 + let reader = BufReader::new(file); 22 + let img = ImageReader::new(reader) 23 + .with_guessed_format() 24 + .context("Failed to guess format")? 25 + .decode() 26 + .context("Failed to read image file")?; 27 + 28 + let img = img.resize_to_fill(IMAGE_SIZE, IMAGE_SIZE, FilterType::Lanczos3); 29 + 30 + let mut buf = Vec::<u8>::new(); 31 + let encoder = WebPEncoder::new_lossless(&mut buf); 32 + img.write_with_encoder(encoder) 33 + .context("Failed to encode image")?; 34 + 35 + Ok(BASE64_STANDARD.encode(buf)) 36 + } 37 + 38 + pub fn profile_picture_flow(app: &AppHandle) -> Result<Option<String>> { 39 + let exts = &SUPPORTED_EXTS.as_slice(); 40 + 41 + let dialog = app 42 + .dialog() 43 + .file() 44 + .set_title("Select a profile picture") 45 + .set_picker_mode(PickerMode::Image) 46 + .add_filter("Images", exts); 47 + 48 + let file = dialog.blocking_pick_file(); 49 + 50 + if let Some(file) = file { 51 + info!("Picked {file:?}"); 52 + let fs = app.fs(); 53 + 54 + let mut opts = OpenOptions::new(); 55 + opts.read(true); 56 + let file = fs.open(file, opts).context("Failed to open file")?; 57 + let base64 = create_profile_picture(file).context("Failed to create profile picture")?; 58 + Ok(Some(base64)) 59 + } else { 60 + Ok(None) 61 + } 62 + } 6 63 7 64 pub fn read_profile_from_store(app: &AppHandle) -> Option<PlayerProfile> { 8 65 let store = app.store(STORE_NAME).expect("Couldn't Create Store");
+7 -1
manhunt-app/src/state.rs
··· 222 222 } 223 223 Ok(None) => { 224 224 info!("User quit lobby"); 225 + state.quit_to_menu(app_game).await; 225 226 } 226 227 Err(why) => { 227 228 error!("Lobby Error: {why}"); 228 - error_dialog(&app_game, &format!("Error joining the lobby: {why}")); 229 + error_dialog( 230 + &app_game, 231 + &format!( 232 + "Encountered an error while in the lobby. You have been disconnected:\n\n{why}" 233 + ), 234 + ); 229 235 state.quit_to_menu(app_game).await; 230 236 } 231 237 }
+6 -7
manhunt-signaling/src/state.rs
··· 66 66 } 67 67 } 68 68 69 - const ROOM_CODE_CHAR_POOL: &[u8] = b"ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"; 69 + // Removed O, 0, I, and 1 to avoid confusing characters 70 + const ROOM_CODE_CHAR_POOL: &[u8] = b"ABCDEFGHJKLMNPQRSTUVWXYZ23456789"; 70 71 const ROOM_CODE_LEN: usize = 6; 71 72 const MAX_ROOM_TRIES: usize = 25; 72 73 ··· 222 223 }) 223 224 .unwrap_or_default(); 224 225 225 - if host { 226 - if let Some(mat) = matches.get_mut(&removed_peer.room).filter(|m| m.open_lobby) { 227 - // If we're host, disconnect everyone else 228 - mat.open_lobby = false; 229 - mat.cancel.cancel(); 230 - } 226 + if host && let Some(mat) = matches.get_mut(&removed_peer.room).filter(|m| m.open_lobby) { 227 + // If we're host, disconnect everyone else 228 + mat.open_lobby = false; 229 + mat.cancel.cancel(); 231 230 } 232 231 233 232 if other_peers.is_empty() {
+5 -2
manhunt-signaling/src/topology.rs
··· 1 1 use async_trait::async_trait; 2 2 use axum::extract::ws::Message; 3 3 use futures::StreamExt; 4 - use log::{error, info, warn}; 4 + use log::{debug, error, info, warn}; 5 5 use matchbox_protocol::{JsonPeerEvent, PeerRequest}; 6 6 use matchbox_signaling::{ 7 7 ClientRequestError, NoCallbacks, SignalingTopology, WsStateMeta, common_logic::parse_request, ··· 56 56 Ok(req) => req, 57 57 Err(e) => match e { 58 58 ClientRequestError::Axum(e) => { 59 - warn!("Peer {peer_id} encountered Axum error: {e:?}. Disconnecting..."); 59 + let e = e.into_inner(); 60 + debug!("Peer {peer_id} Axum error: {e:?}"); 60 61 break; 61 62 } 62 63 ClientRequestError::Close => { ··· 95 96 } else { 96 97 warn!("Trying to remove peer {peer_id}, which doesn't exist?"); 97 98 } 99 + 100 + info!("Peer {peer_id} Finish"); 98 101 } 99 102 }
+2 -4
manhunt-transport/src/matchbox.rs
··· 197 197 self.incoming.1.lock().await.close(); 198 198 drop(mrx); 199 199 drop(socket); 200 - if should_await { 201 - if let Err(why) = loop_fut.await { 202 - error!("Failed to await after disconnect: {why:?}"); 203 - } 200 + if should_await && let Err(why) = loop_fut.await { 201 + error!("Failed to await after disconnect: {why:?}"); 204 202 } 205 203 info!("Transport disconnected"); 206 204 }
+380
package-lock.json
··· 1 + { 2 + "name": "manhunt-app", 3 + "lockfileVersion": 3, 4 + "requires": true, 5 + "packages": { 6 + "": { 7 + "devDependencies": { 8 + "oxlint": "^1.49.0" 9 + } 10 + }, 11 + "node_modules/@oxlint/binding-android-arm-eabi": { 12 + "version": "1.49.0", 13 + "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm-eabi/-/binding-android-arm-eabi-1.49.0.tgz", 14 + "integrity": "sha512-2WPoh/2oK9r/i2R4o4J18AOrm3HVlWiHZ8TnuCaS4dX8m5ZzRmHW0I3eLxEurQLHWVruhQN7fHgZnah+ag5iQg==", 15 + "cpu": [ 16 + "arm" 17 + ], 18 + "dev": true, 19 + "license": "MIT", 20 + "optional": true, 21 + "os": [ 22 + "android" 23 + ], 24 + "engines": { 25 + "node": "^20.19.0 || >=22.12.0" 26 + } 27 + }, 28 + "node_modules/@oxlint/binding-android-arm64": { 29 + "version": "1.49.0", 30 + "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm64/-/binding-android-arm64-1.49.0.tgz", 31 + "integrity": "sha512-YqJAGvNB11EzoKm1euVhZntb79alhMvWW/j12bYqdvVxn6xzEQWrEDCJg9BPo3A3tBCSUBKH7bVkAiCBqK/L1w==", 32 + "cpu": [ 33 + "arm64" 34 + ], 35 + "dev": true, 36 + "license": "MIT", 37 + "optional": true, 38 + "os": [ 39 + "android" 40 + ], 41 + "engines": { 42 + "node": "^20.19.0 || >=22.12.0" 43 + } 44 + }, 45 + "node_modules/@oxlint/binding-darwin-arm64": { 46 + "version": "1.49.0", 47 + "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-arm64/-/binding-darwin-arm64-1.49.0.tgz", 48 + "integrity": "sha512-WFocCRlvVkMhChCJ2qpJfp1Gj/IjvyjuifH9Pex8m8yHonxxQa3d8DZYreuDQU3T4jvSY8rqhoRqnpc61Nlbxw==", 49 + "cpu": [ 50 + "arm64" 51 + ], 52 + "dev": true, 53 + "license": "MIT", 54 + "optional": true, 55 + "os": [ 56 + "darwin" 57 + ], 58 + "engines": { 59 + "node": "^20.19.0 || >=22.12.0" 60 + } 61 + }, 62 + "node_modules/@oxlint/binding-darwin-x64": { 63 + "version": "1.49.0", 64 + "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-x64/-/binding-darwin-x64-1.49.0.tgz", 65 + "integrity": "sha512-BN0KniwvehbUfYztOMwEDkYoojGm/narf5oJf+/ap+6PnzMeWLezMaVARNIS0j3OdMkjHTEP8s3+GdPJ7WDywQ==", 66 + "cpu": [ 67 + "x64" 68 + ], 69 + "dev": true, 70 + "license": "MIT", 71 + "optional": true, 72 + "os": [ 73 + "darwin" 74 + ], 75 + "engines": { 76 + "node": "^20.19.0 || >=22.12.0" 77 + } 78 + }, 79 + "node_modules/@oxlint/binding-freebsd-x64": { 80 + "version": "1.49.0", 81 + "resolved": "https://registry.npmjs.org/@oxlint/binding-freebsd-x64/-/binding-freebsd-x64-1.49.0.tgz", 82 + "integrity": "sha512-SnkAc/DPIY6joMCiP/+53Q+N2UOGMU6ULvbztpmvPJNF/jYPGhNbKtN982uj2Gs6fpbxYkmyj08QnpkD4fbHJA==", 83 + "cpu": [ 84 + "x64" 85 + ], 86 + "dev": true, 87 + "license": "MIT", 88 + "optional": true, 89 + "os": [ 90 + "freebsd" 91 + ], 92 + "engines": { 93 + "node": "^20.19.0 || >=22.12.0" 94 + } 95 + }, 96 + "node_modules/@oxlint/binding-linux-arm-gnueabihf": { 97 + "version": "1.49.0", 98 + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.49.0.tgz", 99 + "integrity": "sha512-6Z3EzRvpQVIpO7uFhdiGhdE8Mh3S2VWKLL9xuxVqD6fzPhyI3ugthpYXlCChXzO8FzcYIZ3t1+Kau+h2NY1hqA==", 100 + "cpu": [ 101 + "arm" 102 + ], 103 + "dev": true, 104 + "license": "MIT", 105 + "optional": true, 106 + "os": [ 107 + "linux" 108 + ], 109 + "engines": { 110 + "node": "^20.19.0 || >=22.12.0" 111 + } 112 + }, 113 + "node_modules/@oxlint/binding-linux-arm-musleabihf": { 114 + "version": "1.49.0", 115 + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-1.49.0.tgz", 116 + "integrity": "sha512-wdjXaQYAL/L25732mLlngfst4Jdmi/HLPVHb3yfCoP5mE3lO/pFFrmOJpqWodgv29suWY74Ij+RmJ/YIG5VuzQ==", 117 + "cpu": [ 118 + "arm" 119 + ], 120 + "dev": true, 121 + "license": "MIT", 122 + "optional": true, 123 + "os": [ 124 + "linux" 125 + ], 126 + "engines": { 127 + "node": "^20.19.0 || >=22.12.0" 128 + } 129 + }, 130 + "node_modules/@oxlint/binding-linux-arm64-gnu": { 131 + "version": "1.49.0", 132 + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.49.0.tgz", 133 + "integrity": "sha512-oSHpm8zmSvAG1BWUumbDRSg7moJbnwoEXKAkwDf/xTQJOzvbUknq95NVQdw/AduZr5dePftalB8rzJNGBogUMg==", 134 + "cpu": [ 135 + "arm64" 136 + ], 137 + "dev": true, 138 + "license": "MIT", 139 + "optional": true, 140 + "os": [ 141 + "linux" 142 + ], 143 + "engines": { 144 + "node": "^20.19.0 || >=22.12.0" 145 + } 146 + }, 147 + "node_modules/@oxlint/binding-linux-arm64-musl": { 148 + "version": "1.49.0", 149 + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.49.0.tgz", 150 + "integrity": "sha512-xeqkMOARgGBlEg9BQuPDf6ZW711X6BT5qjDyeM5XNowCJeTSdmMhpePJjTEiVbbr3t21sIlK8RE6X5bc04nWyQ==", 151 + "cpu": [ 152 + "arm64" 153 + ], 154 + "dev": true, 155 + "license": "MIT", 156 + "optional": true, 157 + "os": [ 158 + "linux" 159 + ], 160 + "engines": { 161 + "node": "^20.19.0 || >=22.12.0" 162 + } 163 + }, 164 + "node_modules/@oxlint/binding-linux-ppc64-gnu": { 165 + "version": "1.49.0", 166 + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.49.0.tgz", 167 + "integrity": "sha512-uvcqRO6PnlJGbL7TeePhTK5+7/JXbxGbN+C6FVmfICDeeRomgQqrfVjf0lUrVpUU8ii8TSkIbNdft3M+oNlOsQ==", 168 + "cpu": [ 169 + "ppc64" 170 + ], 171 + "dev": true, 172 + "license": "MIT", 173 + "optional": true, 174 + "os": [ 175 + "linux" 176 + ], 177 + "engines": { 178 + "node": "^20.19.0 || >=22.12.0" 179 + } 180 + }, 181 + "node_modules/@oxlint/binding-linux-riscv64-gnu": { 182 + "version": "1.49.0", 183 + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-1.49.0.tgz", 184 + "integrity": "sha512-Dw1HkdXAwHNH+ZDserHP2RzXQmhHtpsYYI0hf8fuGAVCIVwvS6w1+InLxpPMY25P8ASRNiFN3hADtoh6lI+4lg==", 185 + "cpu": [ 186 + "riscv64" 187 + ], 188 + "dev": true, 189 + "license": "MIT", 190 + "optional": true, 191 + "os": [ 192 + "linux" 193 + ], 194 + "engines": { 195 + "node": "^20.19.0 || >=22.12.0" 196 + } 197 + }, 198 + "node_modules/@oxlint/binding-linux-riscv64-musl": { 199 + "version": "1.49.0", 200 + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-1.49.0.tgz", 201 + "integrity": "sha512-EPlMYaA05tJ9km/0dI9K57iuMq3Tw+nHst7TNIegAJZrBPtsOtYaMFZEaWj02HA8FI5QvSnRHMt+CI+RIhXJBQ==", 202 + "cpu": [ 203 + "riscv64" 204 + ], 205 + "dev": true, 206 + "license": "MIT", 207 + "optional": true, 208 + "os": [ 209 + "linux" 210 + ], 211 + "engines": { 212 + "node": "^20.19.0 || >=22.12.0" 213 + } 214 + }, 215 + "node_modules/@oxlint/binding-linux-s390x-gnu": { 216 + "version": "1.49.0", 217 + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.49.0.tgz", 218 + "integrity": "sha512-yZiQL9qEwse34aMbnMb5VqiAWfDY+fLFuoJbHOuzB1OaJZbN1MRF9Nk+W89PIpGr5DNPDipwjZb8+Q7wOywoUQ==", 219 + "cpu": [ 220 + "s390x" 221 + ], 222 + "dev": true, 223 + "license": "MIT", 224 + "optional": true, 225 + "os": [ 226 + "linux" 227 + ], 228 + "engines": { 229 + "node": "^20.19.0 || >=22.12.0" 230 + } 231 + }, 232 + "node_modules/@oxlint/binding-linux-x64-gnu": { 233 + "version": "1.49.0", 234 + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.49.0.tgz", 235 + "integrity": "sha512-CcCDwMMXSchNkhdgvhVn3DLZ4EnBXAD8o8+gRzahg+IdSt/72y19xBgShJgadIRF0TsRcV/MhDUMwL5N/W54aQ==", 236 + "cpu": [ 237 + "x64" 238 + ], 239 + "dev": true, 240 + "license": "MIT", 241 + "optional": true, 242 + "os": [ 243 + "linux" 244 + ], 245 + "engines": { 246 + "node": "^20.19.0 || >=22.12.0" 247 + } 248 + }, 249 + "node_modules/@oxlint/binding-linux-x64-musl": { 250 + "version": "1.49.0", 251 + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-musl/-/binding-linux-x64-musl-1.49.0.tgz", 252 + "integrity": "sha512-u3HfKV8BV6t6UCCbN0RRiyqcymhrnpunVmLFI8sEa5S/EBu+p/0bJ3D7LZ2KT6PsBbrB71SWq4DeFrskOVgIZg==", 253 + "cpu": [ 254 + "x64" 255 + ], 256 + "dev": true, 257 + "license": "MIT", 258 + "optional": true, 259 + "os": [ 260 + "linux" 261 + ], 262 + "engines": { 263 + "node": "^20.19.0 || >=22.12.0" 264 + } 265 + }, 266 + "node_modules/@oxlint/binding-openharmony-arm64": { 267 + "version": "1.49.0", 268 + "resolved": "https://registry.npmjs.org/@oxlint/binding-openharmony-arm64/-/binding-openharmony-arm64-1.49.0.tgz", 269 + "integrity": "sha512-dRDpH9fw+oeUMpM4br0taYCFpW6jQtOuEIec89rOgDA1YhqwmeRcx0XYeCv7U48p57qJ1XZHeMGM9LdItIjfzA==", 270 + "cpu": [ 271 + "arm64" 272 + ], 273 + "dev": true, 274 + "license": "MIT", 275 + "optional": true, 276 + "os": [ 277 + "openharmony" 278 + ], 279 + "engines": { 280 + "node": "^20.19.0 || >=22.12.0" 281 + } 282 + }, 283 + "node_modules/@oxlint/binding-win32-arm64-msvc": { 284 + "version": "1.49.0", 285 + "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.49.0.tgz", 286 + "integrity": "sha512-6rrKe/wL9tn0qnOy76i1/0f4Dc3dtQnibGlU4HqR/brVHlVjzLSoaH0gAFnLnznh9yQ6gcFTBFOPrcN/eKPDGA==", 287 + "cpu": [ 288 + "arm64" 289 + ], 290 + "dev": true, 291 + "license": "MIT", 292 + "optional": true, 293 + "os": [ 294 + "win32" 295 + ], 296 + "engines": { 297 + "node": "^20.19.0 || >=22.12.0" 298 + } 299 + }, 300 + "node_modules/@oxlint/binding-win32-ia32-msvc": { 301 + "version": "1.49.0", 302 + "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.49.0.tgz", 303 + "integrity": "sha512-CXHLWAtLs2xG/aVy1OZiYJzrULlq0QkYpI6cd7VKMrab+qur4fXVE/B1Bp1m0h1qKTj5/FTGg6oU4qaXMjS/ug==", 304 + "cpu": [ 305 + "ia32" 306 + ], 307 + "dev": true, 308 + "license": "MIT", 309 + "optional": true, 310 + "os": [ 311 + "win32" 312 + ], 313 + "engines": { 314 + "node": "^20.19.0 || >=22.12.0" 315 + } 316 + }, 317 + "node_modules/@oxlint/binding-win32-x64-msvc": { 318 + "version": "1.49.0", 319 + "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.49.0.tgz", 320 + "integrity": "sha512-VteIelt78kwzSglOozaQcs6BCS4Lk0j+QA+hGV0W8UeyaqQ3XpbZRhDU55NW1PPvCy1tg4VXsTlEaPovqto7nQ==", 321 + "cpu": [ 322 + "x64" 323 + ], 324 + "dev": true, 325 + "license": "MIT", 326 + "optional": true, 327 + "os": [ 328 + "win32" 329 + ], 330 + "engines": { 331 + "node": "^20.19.0 || >=22.12.0" 332 + } 333 + }, 334 + "node_modules/oxlint": { 335 + "version": "1.49.0", 336 + "resolved": "https://registry.npmjs.org/oxlint/-/oxlint-1.49.0.tgz", 337 + "integrity": "sha512-YZffp0gM+63CJoRhHjtjRnwKtAgUnXM6j63YQ++aigji2NVvLGsUlrXo9gJUXZOdcbfShLYtA6RuTu8GZ4lzOQ==", 338 + "dev": true, 339 + "license": "MIT", 340 + "bin": { 341 + "oxlint": "bin/oxlint" 342 + }, 343 + "engines": { 344 + "node": "^20.19.0 || >=22.12.0" 345 + }, 346 + "funding": { 347 + "url": "https://github.com/sponsors/Boshen" 348 + }, 349 + "optionalDependencies": { 350 + "@oxlint/binding-android-arm-eabi": "1.49.0", 351 + "@oxlint/binding-android-arm64": "1.49.0", 352 + "@oxlint/binding-darwin-arm64": "1.49.0", 353 + "@oxlint/binding-darwin-x64": "1.49.0", 354 + "@oxlint/binding-freebsd-x64": "1.49.0", 355 + "@oxlint/binding-linux-arm-gnueabihf": "1.49.0", 356 + "@oxlint/binding-linux-arm-musleabihf": "1.49.0", 357 + "@oxlint/binding-linux-arm64-gnu": "1.49.0", 358 + "@oxlint/binding-linux-arm64-musl": "1.49.0", 359 + "@oxlint/binding-linux-ppc64-gnu": "1.49.0", 360 + "@oxlint/binding-linux-riscv64-gnu": "1.49.0", 361 + "@oxlint/binding-linux-riscv64-musl": "1.49.0", 362 + "@oxlint/binding-linux-s390x-gnu": "1.49.0", 363 + "@oxlint/binding-linux-x64-gnu": "1.49.0", 364 + "@oxlint/binding-linux-x64-musl": "1.49.0", 365 + "@oxlint/binding-openharmony-arm64": "1.49.0", 366 + "@oxlint/binding-win32-arm64-msvc": "1.49.0", 367 + "@oxlint/binding-win32-ia32-msvc": "1.49.0", 368 + "@oxlint/binding-win32-x64-msvc": "1.49.0" 369 + }, 370 + "peerDependencies": { 371 + "oxlint-tsgolint": ">=0.14.1" 372 + }, 373 + "peerDependenciesMeta": { 374 + "oxlint-tsgolint": { 375 + "optional": true 376 + } 377 + } 378 + } 379 + } 380 + }

History

1 round 0 comments
sign up or login to add to the discussion
bwc9876.dev submitted #0
26 commits
expand
Menu screen mockup
Profile Picture Component
Lobby screen mockup
Remove confusing characters from room code pool
Add lightning css, Remove eslint
Add Edit Name
Add Quit Button to Lobby
Add Icons for Hider/Seeker
Profile Picture Creation Flow
Use oxlint
Use treefmt
Fix rust lints
Loading screen for pfp processing
Fix rustls default TLS issue
Use tauri-plugin-dialog where possible, loading screens
Make host leaving a lobby close the lobby
Less annoying Axum error
Vite just recipe
Add start game button, lobby screen cleanup
View Transitions on screen change
Remove console.debug
Loading Cover for Start Game
Don't prompt when leaving an empty lobby
Smoother view transitions and loading screen
Game Setting Modal
Tweak layout for mobile, format
no conflicts, ready to merge
expand 0 comments