diff --git a/blog/2024/August/recent-public-mqtt-broker-changes.mdx b/blog/2024/August/recent-public-mqtt-broker-changes.mdx new file mode 100644 index 00000000..38a371ff --- /dev/null +++ b/blog/2024/August/recent-public-mqtt-broker-changes.mdx @@ -0,0 +1,55 @@ +--- +title: Important Changes to the Meshtastic Project-Hosted MQTT Server +description: "Recent changes to the Meshtastic project-hosted MQTT server enhance user privacy and data protection." +slug: recent-public-mqtt-broker-changes +authors: crichton +tags: [meshtastic] +date: 2024-08-24T12:00 +hide_table_of_contents: false +image: "/design/web/social-preview-1200x630.png" +--- + +The Meshtastic project-hosted [MQTT](/docs/software/integrations/mqtt/) server, which allows sharing mesh traffic over the Internet, has recently made an important change that impacts the way information is shared via MQTT: the ability to subscribe to all topics has been removed. However, users can still subscribe to regional topics, such as `msh/US/#`, to view nodes in their specific area. The MQTT functionality remains intact, public maps are still accessible, and users can continue to see nodes within their specified regions with some new changes. + +{/* truncate */} + +## Understanding the Change + +On **August 21, 2024**, the Meshtastic development team made the decision to remove the ability for users to subscribe to all topics. + +### Why This Change Was Necessary + +The decision to restrict topic subscriptions was not made lightly. It stemmed from our observations that public mesh maps were now storing and, in some cases, tracking node positions over time. While users may have shared their position with their regional mesh, many might not have been aware that this information was being shared publicly online. + +This data, being shared by third parties, raised significant concerns regarding personally identifiable information (PII). We recognized that users were not adequately informed about how their location data could be used, which prompted us to act swiftly. + +We believe that while users have a responsibility to protect their information, the project also has a duty to the community to ensure that the services we provide do not contribute to potential privacy issues. This commitment is essential not only for the well-being of our community but also to protect the integrity of the Meshtastic project. + +### The Benefits of the Change + +1. **Regional Information Control**: By limiting topic subscriptions, we ensure that information stays within its relevant region, preventing groups from sharing data outside users' designated areas. +2. **Improved Server Performance**: With over 50% of MQTT traffic previously related to position data reporting, this change has significantly reduced server resource requirements. As a result, we have seen improvements in: + - **Availability** + - **Stability** + - **Reliability** +3. **Cost Efficiency**: Hosting a free service comes with its own set of challenges. The reduction in traffic has led to lower hosting costs, making the service more sustainable in the long run. +4. **Continued Success**: Like the success we experienced at DEF CON 32, where we implemented previous [traffic management policies](https://x.com/TheMeshtastic/status/1811082966283735317), we believe this change will further contribute to a successful MQTT server for the community. + +### New Features Implemented + +In response to community feedback, we have already enacted one of the solutions to enhance user experience. While subscribing to all topics remains disabled, we have introduced precise location filtering. This means: + +- **Server-Level Filtering**: Only position packets with imprecise location information will be passed to the topic, ensuring that sensitive data is not exposed. **Note: This filtering is only applied to the default key.** + +## Key Takeaways + +- The Meshtastic project has removed the ability to subscribe to all topics to ensure that information remains within relevant regions. +- Users can still subscribe to regional topics to receive localized updates. +- This change has improved server performance and reduced hosting costs. +- Precise location filtering has been implemented to prevent sensitive data exposure. + +## Conclusion + +The Meshtastic project is committed to protecting user privacy while providing a reliable and efficient service. We understand that changes can be challenging, but we believe that these adjustments will ultimately benefit our community. We appreciate your understanding and support as we navigate these important changes together. + +*Thank you for being a part of the Meshtastic community! Your feedback is invaluable as we continue to improve our services. Feel free to use the comment section below.* diff --git a/blog/2024/September/introducing-new-public-key-cryptography-in-v2_5.mdx b/blog/2024/September/introducing-new-public-key-cryptography-in-v2_5.mdx new file mode 100644 index 00000000..0598c9ab --- /dev/null +++ b/blog/2024/September/introducing-new-public-key-cryptography-in-v2_5.mdx @@ -0,0 +1,56 @@ +--- +title: "Meshtastic Encryption: Evolving from Simple Messaging to a Versatile Solution" +description: "Meshtastic's encryption has evolved, introducing our new Public Key Cryptography in v2.5.0 to enhance security in off-grid communication." +slug: introducing-new-public-key-cryptography-in-v2_5 +authors: [Jonathan, crichton] +tags: [meshtastic, technical] +date: 2024-09-12T21:00 +hide_table_of_contents: false +image: "/img/blog/Meshtastic_PKC_ECDH.png" +--- + +Meshtastic began with a straightforward goal: to keep hiking buddies connected in the outdoors when cell service was unavailable. What started as a simple project has grown, thanks to a passionate community pushing the boundaries of what's possible. Today, Meshtastic is used in Search and Rescue operations, off-grid communication, disaster recovery, and even grid-down scenarios. Whether it's preparing for the next flood or tornado, extending communication over the Internet with MQTT, or simply enjoying an off-grid adventure, Meshtastic has become an essential tool for many. + +{/* truncate */} + +### Balancing Encryption with Practical Use + +For many, Meshtastic's encryption is a key part of the appeal. Over the years, the challenge has been finding a balance: implementing strong encryption without excluding low-power IoT platforms or overwhelming LoRa's limited bandwidth. Before version 2.5, encryption relied on a static pre-shared key per channel, which was quite robust. However, it had one notable limitation: Direct Messages (DMs). + +DMs were sent using the same shared channel key, which meant that while DMs were theoretically private, they were accessible to anyone on the same channel. The honor system was the only safeguard, particularly since the default Meshtastic setup uses a publicly known encryption key, leaving DMs effectively unencrypted out of the box. + +### Challenges with Remote Administration + +Remote administration also presented hurdles. The conventional method involved creating an "admin" channel, allowing any node on that channel to be controlled remotely. This approach had drawbacks, notably that nodes open to administering others were also vulnerable to being administered themselves. + +## Introducing Public Key Cryptography (PKC) to Meshtastic + +In 2022, a user named edinnen proposed a solution with a pull request that introduced a public/private key scheme for DMs. Although the initial feedback was promising, the patch became outdated as time passed. Recently, everything aligned, and we revisited and reworked this patch, making it the foundation of Meshtastic's version 2.5 development. + +Our new PKC implementation is now a core feature, providing each node with a unique public key generated at first boot. This key enables secure, encrypted connections between nodes and serves as a unique identifier within the mesh. It also solves the remote administration challenge—nodes can now be identified and authorized as remote administrators through their public keys. + +### A Major Step Forward in Security + +With this new PKC scheme, Meshtastic offers enhanced encryption for DMs and secure remote administration for difficult-to-reach nodes. While we still caution against relying solely on Meshtastic encryption for life-or-death situations, this update marks a significant advancement in privacy and security for the mesh network. + +### Technical Deep Dive: The Mechanics of Meshtastic's New Encryption + +At the heart of Meshtastic's new encryption system lies the X25519 elliptic curve Diffie-Hellman key exchange. This process unfolds in two key steps: + +1. Key Generation: Upon first boot, each device generates a random private key and derives a corresponding public key using the X25519 algorithm. This public key is then broadcast to the mesh as part of the node's regular announcements. + +2. Secure Communication: When a node initiates a Direct Message (DM), it completes the X25519 key exchange by combining its private key with the recipient's public key. This process generates a unique shared secret, which is then used to encrypt the DM. The receiving node can independently derive the same shared secret using its private key and the sender's public key, enabling secure decryption. + +> ![Meshtastic's X25519 Key Exchange Process](/img/blog/Meshtastic_PKC_ECDH.png) Figure 1: Visual representation of Meshtastic's X25519 key exchange process + +The encryption scheme employs AES-CCM (Counter with CBC-MAC), which provides both confidentiality and authenticity. A notable feature is the inclusion of a short Message Authentication Code, verifying the sender's identity and ensuring message integrity. To further enhance security, DM messages incorporate an additional 4 bytes of random nonce, effectively preventing potential compromises due to nonce reuse. + +Remote administration has also seen significant improvements. Administration messages now include an 8-byte session key, set by the node being administered. This key is included in responses and must be present in any packet attempting to make changes. With a 300-second timeout, this mechanism provides robust protection against replay attacks of captured administration traffic. + +## Conclusion + +Meshtastic's journey from a simple hiking communication tool to a versatile, secure mesh networking solution showcases the power of community-driven development. The introduction of our new Public Key Cryptography scheme in version 2.5 represents a significant advancement in the platform's security capabilities, addressing long-standing challenges in direct messaging and remote administration. + +As we continue to refine and expand Meshtastic's features, we remain committed to balancing robust security with practical usability. While this update significantly enhances the platform's privacy and security, we encourage users to approach encryption with a clear understanding of its strengths and limitations, especially in critical scenarios. + +Looking ahead, we're excited about the possibilities this new encryption framework opens up. We invite our community to explore these new features, provide feedback, and continue pushing the boundaries of what's possible with Meshtastic. Together, we're building a more secure and connected future for off-grid communication. diff --git a/blog/authors.yml b/blog/authors.yml index 728d8af8..62e62ab3 100644 --- a/blog/authors.yml +++ b/blog/authors.yml @@ -19,4 +19,10 @@ GUVWAF: image_url: https://github.com/GUVWAF.png socials: github: GUVWAF - +Jonathan: + name: Jonathan Bennett + title: "Lead: The Linux Guy, Amateur Cryptographer, Position Wrangler, Privacy Protector, Bug Hunter" + url: https://github.com/jp-bennett + image_url: https://github.com/jp-bennett.png + socials: + github: jonathanbennett diff --git a/docs/about/contributing.mdx b/docs/about/contributing.mdx index 5a05a352..dc043e03 100644 --- a/docs/about/contributing.mdx +++ b/docs/about/contributing.mdx @@ -76,9 +76,9 @@ If direct development contribution is not feasible for you, financial support is -### Fiscal Sponsorships +### Sponsors -We're deeply thankful for the backing from the Open Collective, Open Source Collective, DigitalOcean, and Vercel, which has been instrumental in our project's sustainability and growth: +We're deeply thankful for the backing from our sponsors, listed below, which has been instrumental in our project's sustainability and growth. Their support enables us to continue serving and expanding our community.
@@ -86,8 +86,8 @@ We're deeply thankful for the backing from the Open Collective, Open Source Coll alt="Open Collective" className="max-h-8" sources={{ - light: useBaseUrl("/img/Open_Collective_logo_2021.svg"), - dark: useBaseUrl("/img/Open_Collective_logo_2021.svg"), + light: useBaseUrl("/img/contributing/Open_Collective_logo_2021.svg"), + dark: useBaseUrl("/img/contributing/Open_Collective_logo_2021.svg"), }} />
@@ -117,8 +117,8 @@ We're deeply thankful for the backing from the Open Collective, Open Source Coll alt="Vercel" className="max-h-8" sources={{ - light: useBaseUrl('/img/vercel-logotype-dark.svg'), - dark: useBaseUrl('/img/vercel-logotype-light.svg'), + light: useBaseUrl('/img/contributing/vercel-logotype-dark.svg'), + dark: useBaseUrl('/img/contributing/vercel-logotype-light.svg'), }} />
@@ -126,3 +126,18 @@ We're deeply thankful for the backing from the Open Collective, Open Source Coll By covering our hosting costs, Vercel directly contributes to Meshtastic's growth, enhancing our web scalability and presence. Their sponsorship is crucial for our continued development and focus on creating a robust platform for decentralized communication. +
+
+ +
+
+ Datadog is an observability and security platform for cloud applications, providing infrastructure monitoring, application performance monitoring, and log management. They sponsor us by granting free infrastructure monitoring and logging, aiding our development and operational efforts. +
+
diff --git a/docs/about/introduction.mdx b/docs/about/introduction.mdx index 08eda9ef..d66a810a 100644 --- a/docs/about/introduction.mdx +++ b/docs/about/introduction.mdx @@ -29,7 +29,7 @@ Meshtastic utilizes LoRa, a long-range radio protocol, which is widely accessibl These radios are designed to rebroadcast messages they receive, forming a mesh network. This setup ensures that every group member, including those at the furthest distance, can receive messages. -Additionally, Meshtastic radios can be paired with a single phone, allowing friends and family to send messages directly to your specific radio. It's important to note that each device is capable of supporting a connection from only one user at a time." +Additionally, Meshtastic radios can be paired with a single phone, allowing friends and family to send messages directly to your specific radio. It's important to note that each device is capable of supporting a connection from only one user at a time. If you are interested in a more technical overview of how Meshtastic works, visit the overview section below: diff --git a/docs/about/overview/encryption.mdx b/docs/about/overview/encryption.mdx deleted file mode 100644 index 1612549c..00000000 --- a/docs/about/overview/encryption.mdx +++ /dev/null @@ -1,151 +0,0 @@ ---- -id: encryption -title: Meshtastic Encryption -sidebar_label: Encryption -slug: /overview/encryption -sidebar_position: 3 -description: "Understand Meshtastic's encryption: optional network-wide AES256 security for off-grid communication, ensuring confidentiality against passive eavesdropping." ---- - -## Explanation - -Meshtastic provides AES256-CTR encryption for the payload of each packet when sending via LoRa, with a different key for each [channel](/docs/configuration/radio/channels/). The [packet header](/docs/overview/mesh-algo/#layer-1-unreliable-zero-hop-messaging) is always sent unencrypted, which allows nodes to relay packets they can't decrypt as well. One can disable this by setting a different [rebroadcast mode](/docs/configuration/radio/device#rebroadcast-mode). - -By default you have one primary channel which is encrypted with a simple known key ("AQ=="), so to use proper encryption you **must change** this key first, or create a new channel and share it with the ones you want to communicate with. However, if you don't have the default key, it means you will not be able to communicate with devices that don't have your key. - -Direct messages to a specific node (e.g. text, traceroute or position requests) may use any channel you share with the recipient. Namely, the device will use the one where it most recently heard a NodeInfo packet from the recipient on. Client apps will not show messages directed to other nodes, but in principle they could be read by **anyone** who knows the used channel key. This means that if it uses the default key, you have to assume anyone could read your direct messages. - -All periodic broadcasts (position, telemetry, etc.) the device sends out itself are sent over the primary channel and thus encrypted with that key. - -The device will decrypt the payload before sending it to a client app via BLE, serial, Wi-Fi/Ethernet. For MQTT you can [specify](/docs/configuration/module/mqtt#encryption-enabled) whether you want to send an encrypted or unencrypted payload. - -## Is it as secure as Wi-Fi WPA3, HTTPS TLS1.3 or Signal ? - -**No**. - -[WPA3](https://en.wikipedia.org/wiki/WPA3), [TLS1.3](https://en.wikipedia.org/wiki/TLS1.3), [Signal](https://en.wikipedia.org/wiki/Signal_Protocol) and Meshtastic can all use AES256, yet AES is one of the many cogs required in a modern encryption system, see below the main features "missing" in Meshtastic. - -### Perfect-Forward-Secrecy - -[**P**erfect-**F**orward-**S**ecrecy also known as **PFS**](https://en.wikipedia.org/wiki/Forward_secrecy) means *previous* communications and more generally anything *passively captured* cannot be decrypted ***even when the key is compromised***. - -This means Meshtastic is vulnerable to [**« Harvest now, Decrypt later »**](https://en.wikipedia.org/wiki/Harvest_now,_decrypt_later) attacks, **this attack itself is not enough to decrypt messages** it relies on an other failure leaking the channel key such as: -- Accidently sharing the channel key with the wrong person. -- One of your nodes being stolen. -- Any unknown bug revealing the channel key to an attacker. - -Other protocols such as *misconfigured TLS1.2* are far more impacted by Harvest now, Decrypt later attacks because their keys will be broken by near future Quantum-Computers yet they do not provide PFS. - -Meshtastic's encryption is not threatened by Quantum-Computers\* so realistic attack vectors are accidental miss-handling of channel keys and nodes being lost. - -\*on the Quantum-Resistance of AES256 see: -- [this stackoverflow question, contain a bit of debates and two good answers](https://crypto.stackexchange.com/q/6712) -- [NIST's Post-Quantum FAQ](https://csrc.nist.gov/projects/post-quantum-cryptography/faqs) section « To protect against the threat of quantum computers, should we double the key length for AES now? (added 11/18/18) » - -**Recommendations** for users using *private channels*: -- **Do not configure private channels on unattended nodes**, nodes will relay meshtastic traffic even if they are not able to decrypt it. - Your unattended routers should not have the private PSK configured as it is easy to gain physical access and extract the channel key. -- Keep in mind, everything sent on a channel can be stored and decrypted later by anyone who gain access to the key even if you locally delete the messages. -- Change your Channel Keys from time to time. - -### Integrity - -Integrity means ensuring messages cannot be modified without the key. - -Meshtastic does not check messages have not been tempered with, see [`#4030`](https://github.com/meshtastic/firmware/issues/4030) for details. - -**Recommendations**: -- Keep in mind, by applying a known plaintext attack anyone *could* send messages on a channel even with the channel key is private and secure. -- For developers of third party applications integrating meshtastic, include a cryptographic MAC over the message content and PSK, - we are also considering an [AEAD secured channel mode which would provide this natively](https://github.com/meshtastic/firmware/issues/4030). - -### Authentication - -Authentication means nodes say who they are on the network, meshtastic does not implement this so it is trivial to impersonate anyone else if you have access to the channel key. - -This is because node ids are based on hardware [MAC address](https://en.wikipedia.org/wiki/MAC_address), theses are hardcoded by the manufacturer. - -Some other networks like [Yggdrasil](https://yggdrasil-network.github.io/), [cjdns](https://github.com/cjdelisle/cjdns) or [libp2p](https://libp2p.io/) use [public / private key pairs](https://en.wikipedia.org/wiki/Public-key_cryptography) and the Public Key becomes the Node Identity, this make all messages bigger and or require an interactive handshake process. - -**Recommendations**: -- Keep in mind, the sender field is indicative and anyone with access to the channel key can trivially lie. - -## Direct-Messages - -Direct-Messages are implemented as channel messages which have a `to` protobuf field set. - -This means anyone in the channel can read all your direct-messages. - -Also the node needs to know the right channel to use, this is done by using the latest one a NodeInfo was received, due to the lack of `Authentication` this means anyone you share a channel with can send a spoofed NodeInfo and make you send direct-messages on an incorrect public channel. - -**Recommendations**: -- Keep in mind, due to NodeInfo spoof issue Direct-Messages are **very significantly less secure than a private channel** with a secure PSK. -- Do not use Direct-Messages for anything private, instead ahead of time create a new private channel and share it with the person you want to message with. - - Nodes will relay encrypted packets even if they can't decrypt it, so you only loose on some [small DM optimizations](https://github.com/meshtastic/firmware/pull/3753). - - Do not send the private channel key in direct messages or a public channel, because then anyone listening gain access. - - Use a different private channel for each person you want to have private conversations with. - -## Comments - -Cryptography is tricky, so we've tried to 'simply' apply standard crypto solutions to our implementation. However, the project developers are not cryptography experts. - -Based on comments from reviewers (see below), here are some tips for usage of these radios, so that you may know the level of protection offered: - -- It is pretty likely that the AES256 security is implemented 'correctly' and an observer will not be able to decode your messages. -- Warning: If an attacker is able to get one of the radios in their possession, they could either a) extract the channel key from that device or b) use that radio to listen to new communications. -- Warning: If an attacker is able to get the "Channel QR code/URL" that you share with others - that attacker could then be able to read any messages sent on the channel (either tomorrow or in the past - if they kept a raw copy of those broadcast packets) - -The current implementation provides optional confidentiality to members of a configured network: - -- Encryption is implemented in devices/nodes with network-wide encryption keys. -- Encryption is optional and is turned off when devices are in 'Ham mode'. -- There is no encryption supported in the clients (iOS, Android) to facilitate distribution as mass market software. -- Pairing from client-to-device is by: - - direct USB cable - - BT pairing -- Devices are 'promiscuous' and will pair with any near-by client. Network confidentiality requires physical protection of all nodes. - -Always keep in mind [xkcd's note on encryption](https://xkcd.com/538). - - -- If you are a cryptography expert, please review these notes and our questions below. Can you help us by reviewing our notes below and offering advice? We will happily give as much or as little credit as you wish ;-). -- Consider our existing solution 'alpha' and probably fairly secure against a not particularly aggressive adversary (but we can't yet make a more confident statement). - - -### Notes for reviewers - -If you are reviewing our implementation, this is a brief statement of our method. - -- We do all crypto at the SubPacket (payload) level only, so that all Meshtastic nodes will route for others - even those channels which are encrypted with a different key. -- Mostly based on reading [Wikipedia]() and using the modes the ESP32 provides support for in hardware. -- We use AES256-CTR as a stream cypher (with zero padding on the last BLOCK) because it is well supported with hardware acceleration. -- Our AES key is 128 or 256 bits, shared as part of the 'Channel' specification. -- The node number concatenated with the packet number is used as the NONCE. This nonce will be stored in flash in the device and should essentially never repeat. If the user makes a new 'Channel' (i.e. picking a new random 256 bit key), the packet number will start at zero. -- The packet number is sent in cleartext with each packet. The node number can be derived from the "from" field of each packet. (Cleartext is acceptable because it merely provides IV for each encryption run) -- Each 16 byte BLOCK for a packet has an incrementing COUNTER. COUNTER starts at zero for the first block of each packet. -- The IV for each block is constructed by concatenating the NONCE as the upper 96 bits of the IV and the COUNTER as the bottom 32 bits. Since our packets are small counter portion will really never be higher than 32 (five bits). - -### Comments from reviewer #1 - -This reviewer is a cryptography professional, but would like to remain anonymous. We thank them for their comments ;-): - -I'm assuming that meshtastic is being used to hike in places where someone capable is trying to break it - like you were going to walk around DefCon using these. I spent about an hour reviewing the encryption, and have the following notes: - -- The write-up isn't quite as clear as the code. -- The code is using AES-CTR mode correctly to ensure confidentiality. -- The comment for initNonce really covers the necessary information. -- I think the bigger encryption question is "what does the encryption need to do"? As it stands, an attacker who has yet to capture any of the devices cannot reasonably capture text or location data. An attacker who captures any device in the channel/mesh can read everything going to that device, everything stored on that device, and any other communication within the channel that they captured in encrypted form. If that capability basically matches your expectations, it is suitable for whatever adventures this was intended for, then, based on information publicly available or widely disclosed, the encryption is good. If those properties are distressing (like, device history is deliberately limited and you don't want a device captured today to endanger the information sent over the channel yesterday) we could talk about ways to achieve that (most likely synchronizing time and replacing the key with its own SHA256 every X hours, and ensuring the old key is not retained unnecessarily). -- Two other things to keep in mind are that AES-CTR does not itself provide authenticity (e.g. an attacker can flip bits in replaying data and scramble the resulting plaintext), and that the current scheme gives some hints about transmission in the size. So, if you worry about an adversary deliberately messing-up messages or knowing the length of a text message, it looks like those might be possible. - -I'm guessing that the network behaves somewhat like a store-and-forward network - or, at least, that the goal is to avoid establishing a two-way connection to transmit data. I'm afraid I haven't worked with mesh networks much, but remember studying them briefly in school about ten years ago. - -### Comments from @Jorropo - -- The IV initialization only use 31 random bits per reboot, it then increment messages sequentially. This is not high, it makes duplicate unlikely but probable given the complete scale of the network. Thankfully IV include lower 32 bits of the MAC address which should be unique per node, so each node is it's own birthday paradox, we aren't looking for network wide birthday paradox which would be easy to hack. See [`#4031`](https://github.com/meshtastic/firmware/issues/4031). - Could be fixed. -- The lack of [integrity wasn't properly considered](https://github.com/meshtastic/firmware/issues/4030), the remote administration module implements priviliged RPC calls over AES-CTR without any MAC or AEAD. - Could be fixed. -- The AES-CTR implementation looks like it protects Confidentiality assuming IVs are not duplicated. -- The lack of Forward Secrecy is a bit worrying for a chat messenger when new users lack the paranoid and annoying key management practice that would be required for safe operation. -- IMO the clients should have a big red box the first time you open a Direct-Message indicating theses are not private and not E2E. This was not clear to me without reading the code. -- This project is completely fine for chatting with strangers, using the default key and understanding everything is public, I would not trust it with anything private without some other layer or significant reworks. For example I would consider SSH or Signal over Meshtastic safe. Yet Meshtastic does not choose to have worse crypto for bad reasons, they make the network significantly more usable over the unreliable slow LoRa backhaul it is using. \ No newline at end of file diff --git a/docs/about/overview/encryption/comments.mdx b/docs/about/overview/encryption/comments.mdx new file mode 100644 index 00000000..66f0bfa1 --- /dev/null +++ b/docs/about/overview/encryption/comments.mdx @@ -0,0 +1,72 @@ +--- +id: comments +title: Comments on Meshtastic's Encryption +sidebar_label: Comments +sidebar_position: 2 +description: "Explore community insights and expert opinions on Meshtastic's encryption, including AES256 implementation, security tips, and potential vulnerabilities." +--- + +This page compiles community feedback and expert reviews on Meshtastic's encryption approach. We value these insights and aim to improve our encryption implementation where feasible. Explore key details, practical tips, and understand the strengths and potential limitations of Meshtastic's AES256 encryption. + +## Comments + +Cryptography is tricky, so we've tried to 'simply' apply standard crypto solutions to our implementation. However, the project developers are not cryptography experts. + +Based on comments from reviewers (see below), here are some tips for using these radios, so that you may know the level of protection offered: + +- It is likely that the AES256 security is implemented 'correctly' and an observer will not be able to decode your messages. +- **Warning:** If an attacker is able to get one of the radios in their possession, they could either a) extract the channel key from that device, or b) use that radio to listen to new communications. +- **Warning:** If an attacker is able to get the "Channel QR code/URL" that you share with others, that attacker could then be able to read any messages sent on the channel (either tomorrow or in the past - if they kept a raw copy of those broadcast packets). + +The current implementation provides optional confidentiality to members of a configured network: + +- Encryption is implemented in devices/nodes with network-wide encryption keys. +- Encryption is optional and is turned off when devices are in 'Ham mode'. +- There is no encryption supported in the clients (iOS, Android) to facilitate distribution as mass-market software. +- Pairing from client-to-device is by: + - Direct USB cable + - BT pairing +- Devices are 'promiscuous' and will pair with any nearby client. Network confidentiality requires physical protection of all nodes. + +Always keep in mind [xkcd's note on encryption](https://xkcd.com/538). + +- If you are a cryptography expert, please review these notes and our questions below. Can you help us by reviewing our notes below and offering advice? We will happily give as much or as little credit as you wish ;-). +- Consider our existing solution 'alpha' and probably fairly secure against a not particularly aggressive adversary (but we can't yet make a more confident statement). + +## Notes for reviewers + +If you are reviewing our implementation, this is a brief statement of our method. + +- We do all crypto at the SubPacket (payload) level only, so that all Meshtastic nodes will route for others - even those channels which are encrypted with a different key. +- Mostly based on reading [Wikipedia]() and using the modes the ESP32 provides support for in hardware. +- We use AES256-CTR as a stream cypher (with zero padding on the last BLOCK) because it is well supported with hardware acceleration. +- Our AES key is 128 or 256 bits, shared as part of the 'Channel' specification. +- The node number concatenated with the packet number is used as the NONCE. This nonce will be stored in flash in the device and should essentially never repeat. If the user makes a new 'Channel' (i.e. picking a new random 256 bit key), the packet number will start at zero. +- The packet number is sent in cleartext with each packet. The node number can be derived from the "from" field of each packet. (Cleartext is acceptable because it merely provides IV for each encryption run) +- Each 16 byte BLOCK for a packet has an incrementing COUNTER. COUNTER starts at zero for the first block of each packet. +- The IV for each block is constructed by concatenating the NONCE as the upper 96 bits of the IV and the COUNTER as the bottom 32 bits. Since our packets are small counter portion will really never be higher than 32 (five bits). + +### Comments from reviewer #1 + +This reviewer is a cryptography professional, but would like to remain anonymous. We thank them for their comments ;-): + +I'm assuming that meshtastic is being used to hike in places where someone capable is trying to break it - like you were going to walk around DefCon using these. I spent about an hour reviewing the encryption, and have the following notes: + +- The write-up isn't quite as clear as the code. +- The code is using AES-CTR mode correctly to ensure confidentiality. +- The comment for initNonce really covers the necessary information. +- I think the bigger encryption question is "what does the encryption need to do"? As it stands, an attacker who has yet to capture any of the devices cannot reasonably capture text or location data. An attacker who captures any device in the channel/mesh can read everything going to that device, everything stored on that device, and any other communication within the channel that they captured in encrypted form. If that capability basically matches your expectations, it is suitable for whatever adventures this was intended for, then, based on information publicly available or widely disclosed, the encryption is good. If those properties are distressing (like, device history is deliberately limited and you don't want a device captured today to endanger the information sent over the channel yesterday) we could talk about ways to achieve that (most likely synchronizing time and replacing the key with its own SHA256 every X hours, and ensuring the old key is not retained unnecessarily). +- Two other things to keep in mind are that AES-CTR does not itself provide authenticity (e.g. an attacker can flip bits in replaying data and scramble the resulting plaintext), and that the current scheme gives some hints about transmission in the size. So, if you worry about an adversary deliberately messing-up messages or knowing the length of a text message, it looks like those might be possible. + +I'm guessing that the network behaves somewhat like a store-and-forward network - or, at least, that the goal is to avoid establishing a two-way connection to transmit data. I'm afraid I haven't worked with mesh networks much, but remember studying them briefly in school about ten years ago. + +### Comments from @Jorropo + +- The IV initialization only use 31 random bits per reboot, it then increment messages sequentially. This is not high, it makes duplicate unlikely but probable given the complete scale of the network. Thankfully IV include lower 32 bits of the MAC address which should be unique per node, so each node is it's own birthday paradox, we aren't looking for network wide birthday paradox which would be easy to hack. See [`#4031`](https://github.com/meshtastic/firmware/issues/4031). + Could be fixed. +- The lack of [integrity wasn't properly considered](https://github.com/meshtastic/firmware/issues/4030), the remote administration module implements priviliged RPC calls over AES-CTR without any MAC or AEAD. + Could be fixed. +- The AES-CTR implementation looks like it protects Confidentiality assuming IVs are not duplicated. +- The lack of Forward Secrecy is a bit worrying for a chat messenger when new users lack the paranoid and annoying key management practice that would be required for safe operation. +- IMO the clients should have a big red box the first time you open a Direct-Message indicating theses are not private and not E2E. This was not clear to me without reading the code. +- This project is completely fine for chatting with strangers, using the default key and understanding everything is public, I would not trust it with anything private without some other layer or significant reworks. For example I would consider SSH or Signal over Meshtastic safe. Yet Meshtastic does not choose to have worse crypto for bad reasons, they make the network significantly more usable over the unreliable slow LoRa backhaul it is using. diff --git a/docs/about/overview/encryption/index.mdx b/docs/about/overview/encryption/index.mdx new file mode 100644 index 00000000..45750ed7 --- /dev/null +++ b/docs/about/overview/encryption/index.mdx @@ -0,0 +1,115 @@ +--- +id: encryption +title: Meshtastic Encryption +sidebar_label: Encryption +slug: /overview/encryption +sidebar_position: 3 +description: "Understand Meshtastic's encryption: optional network-wide AES256 security for off-grid communication, ensuring confidentiality against passive eavesdropping." +--- + +## Explanation + +Meshtastic provides AES256-CTR encryption for the payload of each packet when sending via LoRa, with a different key for each [channel](/docs/configuration/radio/channels/). The [packet header](/docs/overview/mesh-algo/#layer-1-unreliable-zero-hop-messaging) is always sent unencrypted, which allows nodes to relay packets they can't decrypt as well. One can disable this by setting a different [rebroadcast mode](/docs/configuration/radio/device#rebroadcast-mode). + +By default, you have one primary channel, which is encrypted with a simple known key ("AQ=="), so to use proper encryption, you **must change** this key first, or create a new channel and share it with the ones you want to communicate with. However, if you don't have the default key, it means you will not be able to communicate with devices that don't have your key. + +Direct messages to a specific node are now encrypted using Public Key Cryptography (PKC). Each node is equipped with a unique public/private key pair, and direct messages are encrypted with the recipient's public key. This ensures that only the recipient can decrypt the message using their private key. Additionally, messages are signed with the sender's private key, allowing the recipient to verify the sender's identity and ensuring the message's integrity. + +All periodic broadcasts (position, telemetry, traceroutes, etc.) the device sends out itself are sent over the primary channel and thus encrypted with that key. + +The device will decrypt the payload before sending it to a client app via BLE, serial, Wi-Fi/Ethernet. For MQTT, you can [specify](/docs/configuration/module/mqtt#encryption-enabled) whether you want to send an encrypted or unencrypted payload. + +## Is it as secure as Wi-Fi WPA3, HTTPS TLS1.3, or Signal? + +**No**. + +[WPA3](https://en.wikipedia.org/wiki/WPA3), [TLS1.3](https://en.wikipedia.org/wiki/TLS1.3), [Signal](https://en.wikipedia.org/wiki/Signal_Protocol), and Meshtastic can all use AES256. Yet AES is one of the many cogs required in a modern encryption system. Below are the main features "missing" in Meshtastic. + +### Perfect-Forward-Secrecy + +[**P**erfect-**F**orward-**S**ecrecy, also known as **PFS**](https://en.wikipedia.org/wiki/Forward_secrecy), means _previous_ communications and more generally anything _passively captured_ cannot be decrypted **_even when the key is compromised_**. + +This means Meshtastic is vulnerable to [**« Harvest now, Decrypt later »**](https://en.wikipedia.org/wiki/Harvest_now,_decrypt_later) attacks. **This attack itself is not enough to decrypt messages**; it relies on another failure leaking the channel key, such as: + +- Accidentally sharing the channel key with the wrong person. +- One of your nodes being stolen. +- Any unknown bug revealing the channel key to an attacker. + +Other protocols, such as _misconfigured TLS1.2_, are far more impacted by Harvest now, Decrypt later attacks because their keys will be broken by near-future Quantum-Computers, yet they do not provide PFS. + +Meshtastic's AES256 encryption is considered quantum-resistant[^1], but the public/private key exchange for DMs is not, as current quantum-resistant cryptography schemes don't fit in LoRa packets or our IoT hardware; realistic attack vectors include accidental mishandling of channel keys, nodes being lost, and potential future quantum attacks on DM key exchanges. + +[^1]: On the Quantum-Resistance of AES256, see [this stackoverflow question, containing a bit of debate and two good answers](https://crypto.stackexchange.com/q/6712) and the [NIST's Post-Quantum FAQ](https://csrc.nist.gov/projects/post-quantum-cryptography/faqs) section "To protect against the threat of quantum computers, should we double the key length for AES now? (added 11/18/18)" + +#### Recommendations for users using private channels + +- **Do not configure private channels on unattended nodes**. Nodes will relay Meshtastic traffic even if they are not able to decrypt it. Your unattended routers should not have the private PSK configured as it is easy to gain physical access and extract the channel key. +- Keep in mind that everything sent on a channel can be stored and decrypted later by anyone who gains access to the key, even if you locally delete the messages. +- Change your Channel Keys from time to time. + +#### Changes since 2.5.0 Firmware release + +- Direct Messages are now protected with PKC when messaging between devices on v2.5.0 or newer and key exchange has taken place, messaging to legacy 2.4.3 or older firmware versions are not protected. +- Admin Messages between two v2.5.0 or newer nodes are now protected and additonal relay attack protection in place. + +### Integrity + +Integrity means ensuring messages cannot be modified without the key. + +Meshtastic does not verify the integrity of channel messages to check if they have been tampered with (see [issue #4030](https://github.com/meshtastic/firmware/issues/4030) for details). + +#### Recommendations + +- Keep in mind that by applying a known plaintext attack, anyone _could_ send messages on a channel even if the channel key is private and secure. +- For developers of third-party applications integrating Meshtastic, include a cryptographic MAC over the message content and PSK. We are also considering an [AEAD secured channel mode which would provide this natively](https://github.com/meshtastic/firmware/issues/4030). + +#### Changes since 2.5.0 Firmware release + +- Message integrity is checked for Direct Messages or Admin Control when communication is between v2.5.0 or newer firmware. + +### Authentication + +Authentication means nodes say who they are on the network. Meshtastic does not implement this, so it is trivial to impersonate anyone else if you have access to the channel key + +This is because node IDs are based on hardware [MAC address](https://en.wikipedia.org/wiki/MAC_address), which are hardcoded by the manufacturer. + +Some other networks like [Yggdrasil](https://yggdrasil-network.github.io/), [cjdns](https://github.com/cjdelisle/cjdns), or [libp2p](https://libp2p.io/) use [public/private key pairs](https://en.wikipedia.org/wiki/Public-key_cryptography), and the Public Key becomes the Node Identity. This makes all messages bigger and/or requires an interactive handshake process. + +#### Recommendations + +- Keep in mind that the sender field is indicative, and anyone with access to the channel key can trivially lie. + +#### Changes since 2.5.0 Firmware release + +- The above now only relates to group chats/channels as DM's are protected when messaging between devices on 2.5 or newer, messaging to legacy 2.4 or older devices are not afforded this addition authentication. + +## Direct Messages + +Direct Messages (DMs) are now implemented using Public Key Cryptography (PKC). This provides a significant upgrade in security compared to the previous channel-based encryption: + +- **Message Encryption:** Each DM is encrypted using the recipient's public key, ensuring that only the recipient can decrypt the message with their private key. +- **Digital Signatures:** Messages are signed with the sender's private key, allowing the recipient to verify the sender's identity and ensuring the integrity of the message. + +### Prior to 2.5.0 Firmware Release + +Previously, DMs were implemented as channel messages with a `to` protobuf field set. This meant anyone in the channel could read all your direct messages. With PKC, this issue is resolved, as only the intended recipient can decrypt and read the message. + +### Recommendations + +- While PKC significantly enhances the security of DMs, it's still advisable to avoid sharing sensitive information in direct messages without proper verification of the recipient's public key. + +## Admin Messages + +Admin Messages/Control are now protected by enhanced security features, making sure that critical operations within the network are more secure than ever before. + +- **Stronger Encryption:** Admin Messages now use advanced encryption methods to ensure that only the intended recipients can access and read them. +- **Session IDs:** Each administrative session is assigned a unique Session ID, which helps prevent unauthorized access and ensures that messages are not tampered with or replayed. + +### Prior to 2.5.0 Firmware Release + +Previously, admin messages were not as secure, but with these updates, they are now much better protected against potential attacks and replay attacks. + +### Recommendations + +- Always ensure that your devices are using the latest firmware to benefit from these improved security features. +- Regularly monitor your network for any unusual activity to maintain a high level of security. diff --git a/docs/about/overview/radio-settings.mdx b/docs/about/overview/radio-settings.mdx index 258120be..993ea16d 100644 --- a/docs/about/overview/radio-settings.mdx +++ b/docs/about/overview/radio-settings.mdx @@ -79,21 +79,25 @@ Various data-rate options are available when configuring a frequency slot and ar We have eight LoRa radio presets. These are the most common settings and have been proven to work well: -| Channel setting | Alt Channel Name | Data-Rate | SF / Symbols | Coding Rate | Bandwidth | Link Budget | -| :--------------------: | :--------------: | :-----------------: | :----------: | :---------: | :-------: | :---------: | -| Short Range / Fast| Short Fast| 10.94 kbps| 7 / 128| 4/5| 250| 143dB| -| Short Range / Slow| Short Slow| 6.25 kbps| 8 / 256| 4/5| 250| 145.5dB| -| Medium Range / Fast| Medium Fast| 3.52 kbps| 9 / 512| 4/5| 250| 148dB| -| Medium Range / Slow| Medium Slow| 1.95 kbps| 10 / 1024| 4/5| 250| 150.5dB| -| Long Range / Fast| Long Fast| 1.07 kbps| 11 / 2048| 4/5| 250| 153dB| -| Long Range / Moderate| Long Moderate| 0.34 kbps| 11 / 2048| 4/8| 125| 156dB| -| Long Range / Slow| Long Slow| 0.18 kbps| 12 / 4096| 4/8| 125| 158.5dB| -| Very Long Range / Slow| Very Long Slow| 0.09 kbps| 12 / 4096| 4/8| 62.5| 161.5dB| +| Channel setting | Alt Channel Name | Data-Rate | SF / Symbols | Coding Rate | Bandwidth | Link Budget | +|:----------------------:|:----------------:|:----------:|:------------:|:-----------:|:---------:|:-----------:| +| Short Range / Turbo | Short Turbo | 21.88 kbps | 7 / 128 | 4/5 | 500[^1] | 140dB | +| Short Range / Fast | Short Fast | 10.94 kbps | 7 / 128 | 4/5 | 250 | 143dB | +| Short Range / Slow | Short Slow | 6.25 kbps | 8 / 256 | 4/5 | 250 | 145.5dB | +| Medium Range / Fast | Medium Fast | 3.52 kbps | 9 / 512 | 4/5 | 250 | 148dB | +| Medium Range / Slow | Medium Slow | 1.95 kbps | 10 / 1024 | 4/5 | 250 | 150.5dB | +| Long Range / Fast | Long Fast | 1.07 kbps | 11 / 2048 | 4/5 | 250 | 153dB | +| Long Range / Moderate | Long Moderate | 0.34 kbps | 11 / 2048 | 4/8 | 125 | 156dB | +| Long Range / Slow | Long Slow | 0.18 kbps | 12 / 4096 | 4/8 | 125 | 158.5dB | +| Very Long Range / Slow | Very Long Slow | 0.09 kbps | 12 / 4096 | 4/8 | 62.5 | 161.5dB | :::note The link budget used by these calculations assumes a transmit power of 22dBm and an antenna with 0dB gain. Adjust your link budget assumptions based on your actual devices. Data-rate in this table is the theoretical max but doesn't account for packet headers, hops and re-transmissions. Calculations based on data from the official [Semtech LoRa calculator](https://www.semtech.com/design-support/lora-calculator). ::: +![link budget vs data rate plot](/img/about/link-budget-vs-data-rate.webp) + + ### Custom Settings Custom settings can be applied by using [supported software](/docs/software). @@ -122,3 +126,5 @@ These frequency slot settings may not have been tested. Use at your own discreti ## Cryptography The pre-shared key (PSK) used by the devices can be an AES128 or AES256 sequence. Alternatively, encryption can be turned off, which may be useful if you are operating under a Ham Radio license. + +[^1]: Short Turbo is the fastest preset and the only one with 500kHz bandwidth. It is not legal to use in all regions due to this wider bandwidth. \ No newline at end of file diff --git a/docs/about/overview/range-test.mdx b/docs/about/overview/range-test.mdx index 438060cb..14c81e5f 100644 --- a/docs/about/overview/range-test.mdx +++ b/docs/about/overview/range-test.mdx @@ -30,6 +30,7 @@ values={[
Modem Settings
Default Long_Fast + - **Frequency:** 915MHz - **Bandwidth:** 250 - **Spread Factor:** 11 @@ -37,13 +38,13 @@ Default Long_Fast
Node A
-- **Device:** [RAK4631 Core](https://meshtastic.org/docs/hardware/devices/rak/core-module) with [RAK 5005-O Base Board](https://meshtastic.org/docs/hardware/devices/rak/base-board) +- **Device:** [RAK4631 Core](/docs/hardware/devices/rak-wireless/wisblock/core-module/?rakcore=RAK4631) with [RAK 5005-O Base Board](/docs/hardware/devices/rak-wireless/wisblock/base-board/?rakbase=RAK5005-O) - **Firmware Version:** 2.1.17 -- **Antenna:** 902-928MHz 5.8 dBi Slinkdsco Outdoor +- **Antenna:** 902-928MHz 5.8 dBi Slinkdsco Outdoor
Node B
-- **Device:** [RAK4631 Core](https://meshtastic.org/docs/hardware/devices/rak/core-module) with [RAK 19003 Mini Base Board](https://meshtastic.org/docs/hardware/devices/rak/base-board) +- **Device:** [RAK4631 Core](/docs/hardware/devices/rak-wireless/wisblock/core-module/?rakcore=RAK4631) with [RAK 19003 Mini Base Board](/docs/hardware/devices/rak-wireless/wisblock/base-board/?rakbase=RAK19003) - **Firmware Version:** 2.1.18 - **Antenna:** Standard LoRa 915MHz 60mm 2dBi Omnidirectional @@ -53,8 +54,7 @@ Default Long_Fast Geographic Locations - -##### Previous Record 166km +#### Previous Record 166km - **Range:** 166km (103 miles) - **Record Holder:** _PuzzledPancake_ @@ -69,13 +69,13 @@ Default Long_Fast
Node A
-- **Device:** [LILYGO TTGO T-Beam w/ SX1262](/docs/hardware/devices/tbeam) +- **Device:** [LILYGO TTGO T-Beam w/ SX1262](/docs/hardware/devices/lilygo/tbeam/?t-beam=sx1262) - **Firmware Version:** 1.2 - **Antenna:** [868MHz 5dBi Antenna](https://ivent.co.nz/product/category/1000/868mhz%205dbi%20antenna%20193mm%20black%20sma%20%28m%29/38646)
Node B
-- **Device:** [LILYGO TTGO T-Beam w/ SX1262](/docs/hardware/devices/tbeam) +- **Device:** [LILYGO TTGO T-Beam w/ SX1262](/docs/hardware/devices/lilygo/tbeam/?t-beam=sx1262) - **Firmware Version:** 1.2 - **Antenna:** [868MHz Vertical 6dBi](https://ivent.co.nz/product/category/1000/868mhz%20vertical%206dbi%20antenna/38606) @@ -85,8 +85,7 @@ Default Long_Fast ![Node B](https://canada1.discourse-cdn.com/free1/uploads/meshtastic/optimized/2X/1/1c8bd5fc41f7bab925404b657a9c481882de9313_2_1332x1000.jpeg) -
Resources Used
-- http://www.heywhatsthat.com +
Resources Used
- http://www.heywhatsthat.com @@ -103,6 +102,7 @@ Default Long_Fast
Modem Settings
Default Long_Fast + - **Frequency:** 915MHz - **Bandwidth:** 250 - **Spread Factor:** 11 @@ -110,13 +110,13 @@ Default Long_Fast
Node A
-- **Device:** [LILYGO TTGO T-Beam](/docs/hardware/devices/tbeam) +- **Device:** [LILYGO TTGO T-Beam](/docs/hardware/devices/lilygo/tbeam/?t-beam=1.1) - **Firmware Version:** 2.1.10 - **Antenna:** Stock Antenna
Node B
-- **Device:** [LILYGO TTGO T-Beam](/docs/hardware/devices/tbeam) +- **Device:** [LILYGO TTGO T-Beam](/docs/hardware/devices/lilygo/tbeam/?t-beam=1.1) - **Firmware Version:** 2.1.10 (modified to place GPS in flight mode) - **Antenna:** Stock Antenna diff --git a/docs/community/local-groups.mdx b/docs/community/local-groups.mdx index 77038499..fa4d9ed4 100644 --- a/docs/community/local-groups.mdx +++ b/docs/community/local-groups.mdx @@ -16,100 +16,147 @@ them for assistance in getting started or if you're interested in contributing t organizer with an online presence and wish to be included in this list, please edit this page directly or reach out to us on [Discord](https://discord.com/invite/ktMAKGBnBs) to add your group. +## Argentina + +- [Meshtastic Argentina Community](https://github.com/Meshtastic-Argentina/) + ## Australia + ### Australian Capital Territory + - [Canberra Meshtastic Community - Discord](https://discord.gg/4QgFsuaC3Z) + ### Tasmania + - [Meshtastic User Group Tasmania](https://www.facebook.com/groups/1556630645195649) ## Canada + ### Alberta + - [YYC Mesh](https://yycmesh.com/) - [Mesht Calgary](https://t.me/meshtcalgary) - [Mesht Alberta](https://t.me/meshtAlta) ### British Columbia + - [Meshtastic BC users group](https://t.me/Mesh_BC) - [Meshtastic Dawson Creek BC users group](https://t.me/Mesh_BC_Dawson_Creek) ### Manitoba + - [Mesht Manitoba](https://t.me/MeshtManitoba) ### New Brunswick + - [Mesht New Brunswick](https://t.me/MeshtNB) ### Newfoundland + - [Mesht Newfoundland](https://t.me/MeshtNewfoundland) ### Northwest Territories + - [Mesht Northwest Territories](https://t.me/MeshtNWT) ### Nova Scotia + - [Mesht Nova Scotia](https://t.me/MeshtNovaScotia) ### Ontario + - [Mesht Ontario](https://t.me/meshtOnt) ### Prince Edward Island + - [Mesht PEI](https://t.me/MeshtPEI) ### Quebec + - [Mesht Quebec](https://t.me/meshtQuebec) ### Saskatchewan + - [Mesht Saskatchewan](https://t.me/MeshtSaska) +## Denmark + +- [Danske Meshtastic Brugere](https://discord.gg/EXWWwDmfBN) + ## Finland + - [Mesh Finland Discord](https://discord.com/invite/GHnaVAjqed) - [Mesh Finland Website](https://mesh-finland.github.io) ## Germany + - [Meshtastic Users D-A-CH](https://t.me/meshtasticgermany) for technical chat - [Meshtastic Users Germany - Facebook](https://www.facebook.com/share/o6CZ9E35UmDKjp9U/) - [Mesh Hessen](https://t.me/Mesh_Hessen) ## India + - [India Bir Paragliding](https://bircom.in) ## Israel + - [Israel Meshtastic Club](https://t.me/+yUGsbNw3zp41MGFk) ## Italy + - [Mesh_ITA Discord Server](https://discord.gg/ETFmtyzbFT) +## Japan +- [Meshtastic Japan Community](https://www.facebook.com/share/g/BQCGxZhw9SxFQja8/?mibextid=K35XfP) + ## Lithuania + - [Meshtastic Lietuva](https://www.facebook.com/groups/1122509422249414) -## New Zealand -- [New Zealand Meshtastic community Discord](https://discord.gg/xb9bBZJUpz) +## Netherlands, The +- [Meshtastic Netherlands Telegram](https://t.me/meshtastic_nl) +- [MeshNet Meshtastic Community](https://www.meshnet.nl/) + +## New Zealand + +- [New Zealand Meshtastic Community Discord](https://discord.gg/xb9bBZJUpz) ## Poland + - [Meshtastic Poland Matrix Space](https://matrix.to/#/#meshtasticpl:matrix.org) ## Taiwan + - [Meshtastic Taiwan Community 臺灣鏈網 - Facebook](https://www.facebook.com/groups/413628121046386) - [Meshtastic Taiwan Community 臺灣鏈網 - Discord](https://discord.gg/2vZkuckp8E) ## Türkiye + - [Meshtastic Türkiye Community - Telegram](https://t.me/trmesh) -- [Meshtastic Türkiye Community - Discord](https://discord.gg/7TGnZSSA) +- [Meshtastic Türkiye Community - Discord](https://discord.gg/7TGnZSSA) - [Meshtastic Türkiye Community - Web](https://trmesh.org) ## Ukraine + - [WiKi Meshtastic UA](https://wikimesh.pp.ua) ## United States + - [Midwest Mesh](https://discord.gg/wYwD56K439) ### Arizona + - [Tucson Meshtastic Community](https://discord.gg/7MzbMMd2kg) - [Arizona Meshtastic Community](https://azmsh.net) +- [Mesa/Phoenix Meshtastic Community](https://discord.gg/wE39ZyCKu3) ### Arkansas + - [Fort Smith Mesh](https://discord.com/invite/nwsvcXeqMX) ### California + - [SoCal Mesh](https://socalmesh.org) - [Laguna Mesh](https://lagunamesh.com) - [Mission Viejo Mesh](https://missionviejomesh.org/) @@ -122,47 +169,65 @@ us on [Discord](https://discord.com/invite/ktMAKGBnBs) to add your group. - [Sac Valley Mesh](http://www.sacvalleymesh.com) ### Colorado + - [Denver Mesh](https://denvermesh.org) ### Hawaii + - [Hawaii Meshnet](https://www.hawaiimesh.net/) ### Illinois + - [Chicagoland Mesh](https://chicagolandmesh.org) ### Kansas + - [SecKC Amateur Radio Club of Kansas City and Surrounding Cities for Amateur Radio](https://ks3ckc.radio/home) ### Massachusetts + - [Boston Meshnet](https://github.com/Darachnid/Boston-Meshnet) ### Michigan + - [Michigan Meshtastic Network](https://discord.gg/3A5RREcBcc) ### Missouri + - [Kansas City Meshtastic Group](https://www.facebook.com/share/XZ9jnhxy1YT4wWqC/) - [MeshSTL - St. Louis](https://discord.gg/QYxUdKZpBd) +### Nevada + +- [VegasMesh Discord](https://discord.gg/vUmWuZxYPh) + ### New Mexico + - [Albuquerque Mesh](https://www.abqm.net) ### Ohio + - [Cincy Mesh](https://www.cincymesh.org) ### Oklahoma + - [Oklahoma Meshtastic Group](https://www.facebook.com/groups/942404880478488) ### Oregon + - [Southern Oregon Meshtastic Community](https://sites.google.com/view/someshtastic/home) - [PDXMesh for Portland & SW Washington](https://pdxmesh.com) - [Willamette Valley Mesh Eugene / Springfield](https://discord.gg/gf4mShtJz4) ### Tennessee + - [Nashville Meshville](https://meshville.org/) ### Texas + - [Austin Mesh](https://austinmesh.org/) - [Cypress, Texas Meshtastic Club](https://discord.gg/KzuwNRwE6q) ### Wisconsin + - [Meshconsin](https://meshconsin.org) diff --git a/docs/community/software/index.mdx b/docs/community/software/index.mdx index 461bc405..a9bc2485 100644 --- a/docs/community/software/index.mdx +++ b/docs/community/software/index.mdx @@ -13,6 +13,7 @@ Current community projects: - [Meshtastic Web API](/docs/community/software/meshtastic-web-api) - Meshtastic Web API provides a RESTful interface to interact with a Meshtastic node via a serial connection. - [Mesh-metrics](/docs/community/software/community-mesh-metrics) - Meshtastic repeater metrics scraper using meshtastic-cli to be ingested by node_exporter for use in Prometheus or Victoria Metrics Time series DB with a Grafana dashboard and sample alerting rules. - [Node-RED Messages Node](/docs/community/software/community-node-red-messages) - Node-RED node to send and receive packets / text messages from a device connected via HTTP. +- [MQTT Connect for Meshtastic](https://github.com/pdxlocations/MQTT-Connect-for-Meshtastic) - A nodeless python client for communicating with Meshtastic devices over MQTT. Support for these projects should be sought from their respective authors. diff --git a/docs/configuration/module/mqtt.mdx b/docs/configuration/module/mqtt.mdx index 90299506..908e1498 100644 --- a/docs/configuration/module/mqtt.mdx +++ b/docs/configuration/module/mqtt.mdx @@ -10,11 +10,10 @@ import TabItem from "@theme/TabItem"; If your device is connected to Internet via wifi or ethernet, you can enable it to forward packets along to an MQTT server. This allows users on the local mesh to communicate with users on the internet. One or more channels must also be enabled as uplink and/or downlink for packets to be transmitted from and/or to your mesh (See [channels](/docs/configuration/radio/channels#downlink-enabled)). Without these settings enabled, the node will still connect to the MQTT server but only send status messages. -The MQTT module config options are: Enabled, Server Address, Username, Password, Encryption Enabled, JSON Enabled, TLS Enabled, Root Topic, Client Proxy Enabled, Map Reporting Enabled (with Position Precision and Publish Interval). MQTT Module config uses an admin message sending a `ConfigModule.MQTT` protobuf. +The MQTT module config options are: Enabled, Server Address, Username, Password, Encryption Enabled, JSON Enabled, TLS Enabled, Root Topic, Client Proxy Enabled, Map Reporting Enabled (with Position Precision and Publish Interval), and Okay to MQTT. MQTT Module config uses an admin message sending a `ConfigModule.MQTT` protobuf. ## Settings - ## MQTT Module Config Values ### Enabled @@ -56,27 +55,40 @@ If true, we attempt to establish a secure connection using TLS. The root topic to use for MQTT messages. This is useful if you want to use a single MQTT server for multiple meshtastic networks and separate them via ACLs. ### Client Proxy Enabled + If true, let the device use the client's (e.g. your phone's) network connection to connect to the MQTT server. If false, it uses the device's network connection which you have to enable via the [network settings](/docs/configuration/radio/network). ### Map Reporting Enabled Available from firmware version 2.3.2 on. If true, your node will periodically send an unencrypted map report to the MQTT server to be displayed by online maps that support this packet. This report includes the following information: + - The node's long and short name and ID; - The node's position (with configurable precision) and altitude; - The node's hardware model and [role](/docs/configuration/radio/device/#roles); - The node's firmware version; -- The node's LoRa region, modem preset and primary channel name; +- The node's LoRa region, modem preset and primary channel name; - Whether the node can be reached on the default channel with known key; - Number of local online nodes (heard in the last 2 hours, excluding those heard via MQTT). #### Map Report Position Precision + The precision to use for the position in the map report. Defaults to a maximum deviation of around 1459m. #### Map Report Publish Interval + How often we should publish the map report to the MQTT server in seconds. Defaults to 900 seconds (15 minutes). +### OK to MQTT + +Acceptable values: `true`, `false` + +Default is `false`. When set to `true`, this configuration indicates that the user approves the packet to be uploaded to MQTT. If set to `false`, remote nodes are requested not to forward packets to MQTT. + +**Important:** This is not a cryptographic solution but a polite request that is enforced in the official firmware. + ## MQTT Module Config Client Availability + Radio configuration > MQTT: [![MQTT Settings](/img/modules/mqtt/android_mqtt_encryption_sm.webp)](/img/modules/mqtt/android_mqtt_encryption.webp) -*Optional:* To use your phone's internet connection to send and receive packets over the web, also enable the slider for **MQTT Client Proxy** and skip the Configure Network Settings step below. +_Optional:_ To use your phone's internet connection to send and receive packets over the web, also enable the slider for **MQTT Client Proxy** and skip the Configure Network Settings step below. [![Client Proxy](/img/modules/mqtt/android_mqtt_proxy_sm.webp)](/img/modules/mqtt/android_mqtt_proxy_encryption.webp) @@ -219,7 +232,7 @@ Navigate to Settings > MQTT: Turn on the slider for MQTT enabled and tap **Save* [![MQTT Settings 1](/img/modules/mqtt/apple_mqtt_1_encryption_sm.webp)](/img/modules/mqtt/apple_mqtt_1_encryption.webp) [![MQTT Settings 2](/img/modules/mqtt/apple_mqtt_2_sm.webp)](/img/modules/mqtt/apple_mqtt_2.webp) -*Optional:* To use your phone's internet connection to send and receive packets over the web, also enable the slider for **MQTT Client Proxy** and skip the Configure Network Settings step below. +_Optional:_ To use your phone's internet connection to send and receive packets over the web, also enable the slider for **MQTT Client Proxy** and skip the Configure Network Settings step below. [![Client Proxy](/img/modules/mqtt/apple_mqtt_1_proxy_sm.webp)](/img/modules/mqtt/apple_mqtt_1_proxy_encryption.webp) @@ -254,6 +267,7 @@ meshtastic --ch-set downlink_enabled true --ch-index 0 ``` or chained together: + ```shell meshtastic --ch-set uplink_enabled true --ch-index 0 --ch-set downlink_enabled true --ch-index 0 ``` @@ -267,6 +281,7 @@ meshtastic --set network.wifi_psk yourpassword ``` or chained together: + ```shell meshtastic --set network.wifi_enabled true --set network.wifi_ssid "your network" --set network.wifi_psk yourpassword ``` @@ -282,7 +297,7 @@ Navigate to Config > Module Config > MQTT - Turn on the slider for MQTT enabled [![MQTT Settings](/img/modules/mqtt/web_mqtt_encryption_sm.webp)](/img/modules/mqtt/web_mqtt_encryption.webp) -*Optional:* To use your client's internet connection to send and receive packets over the web, also enable the slider for **Proxy to Client Enabled** and skip the Configure Network Settings step below. +_Optional:_ To use your client's internet connection to send and receive packets over the web, also enable the slider for **Proxy to Client Enabled** and skip the Configure Network Settings step below. [![Client Proxy](/img/modules/mqtt/web_mqtt_proxy_sm.webp)](/img/modules/mqtt/web_mqtt_proxy_encryption.webp) @@ -292,7 +307,6 @@ Though this option may be visible in your UI, Client Proxy is not yet functional ::: - ##### 2. Enable Channel Uplink & Downlink Navigate to Channels > Primary: Turn on the sliders for **Uplink Enabled** and **Downlink Enabled** - Click the **Save** icon. diff --git a/docs/configuration/radio/device.mdx b/docs/configuration/radio/device.mdx index 5ed83531..69c65e87 100644 --- a/docs/configuration/radio/device.mdx +++ b/docs/configuration/radio/device.mdx @@ -79,23 +79,11 @@ This setting defines the device's behavior for how messages are rebroadcasted. | `LOCAL_ONLY` | LOCAL_ONLY - Ignores observed messages from foreign meshes that are open or those which it cannot decrypt. Only rebroadcasts message on the nodes local primary / secondary channels. | | `KNOWN_ONLY` | KNOWN_ONLY - Ignores observed messages from foreign meshes like LOCAL_ONLY, but takes it a step further by also ignoring messages from nodenums not in the node's known list (NodeDB). | -## Serial Console - -Acceptable values: `true` or `false` - -Disabling this will disable the SerialConsole by not initializing the StreamAPI. - ## TZDEF (Timezone Definition) The `tzdef` setting allows the local offset to be defined for the device. It uses the TZ Database format to display the correct local time on the device display and in its logs. -To set the timezone, use the POSIX TZ Database string for the relevant region. Here is a list of [supported timezones](https://github.com/nayarsystems/posix_tz_db/blob/master/zones.csv). - -## Debug Log - -Acceptable values: `true` or `false` - -By default we turn off logging as soon as an API client connects. Set this to true to leave the debug log outputting even when API is active. +To set the timezone, use the POSIX TZ Database string for the relevant region. Here is a list of [supported timezones](https://github.com/nayarsystems/posix_tz_db/blob/master/zones.csv). For example, if your region is `America/Los_Angeles`, you would input `PST8PDT,M3.2.0,M11.1.0` as the timezone. ## GPIO for user button @@ -113,10 +101,6 @@ This is the number of seconds between NodeInfo message (containing i.a. long and This option will enable a double tap, when a supported accelerometer is attached to the device, to be treated as a button press. -## Managed Mode - -Enabling Managed mode will restrict access to all radio configurations via client applications. Radio configurations will only be accessible through the Admin channel. To avoid being locked out, make sure the Admin channel is working properly before enabling it. - ## Device Config Client Availability diff --git a/docs/configuration/radio/lora.mdx b/docs/configuration/radio/lora.mdx index d857432d..242512a6 100644 --- a/docs/configuration/radio/lora.mdx +++ b/docs/configuration/radio/lora.mdx @@ -38,7 +38,9 @@ The presets are designed to provide further options for optimizing either speed The Presets available are as follows, and follow a linear pattern of Fastest \<\-\-\> Slowest, and Shortest \<\-\-\> Longest range: -1. `SHORT_FAST` (Fastest, highest bandwidth, lowest airtime, shortest range) +1. `SHORT_TURBO` (Fastest, highest bandwidth, lowest airtime, shortest range. It is not legal to use in all regions due to it's 500kHz bandwidth.) + +1. `SHORT_FAST` 2. `SHORT_SLOW` @@ -169,23 +171,23 @@ LoRa config commands are available in the python CLI. Example commands are below ::: -| Setting | Acceptable Values | Default | -|:---------------------------:|:---------------------------------------------------------------------------------------------------------------------------------------------------------:|:----------------------------:| -| lora.modem_preset | `LONG_FAST`, `LONG_SLOW`, `VERY_LONG_SLOW`, `MEDIUM_SLOW`, `MEDIUM_FAST`, `SHORT_SLOW`, `SHORT_FAST` | `LONG_FAST`, `LONG_MODERATE` | -| lora.use_preset | `false`, `true` | `false` | -| lora.region | `UNSET`, `US`, `EU_433`, `EU_868`, `CN`, `JP`, `ANZ`, `KR`, `TW`, `RU` ,`IN`, `NZ_865`, `TH`, `LORA_24`, `UA_433`, `UA_868`, `MY_433`, `MY_919`, `SG_923` | `UNSET` | -| lora.bandwidth | `31`, `62`, `125`, `250`, `500` | `250` | -| lora.spread_factor | `7`, `8`, `9`, `10`, `11`, `12` | `12` | -| lora.coding_rate | `5`, `6`, `7`, `8` | `8` | -| lora.frequency_offset | `0` to `1000000` | `0` | -| lora.hop_limit | `1`,`2`,`3`,`4`,`5`,`6`,`7` | `3` | -| lora.tx_power | `0` to `30` | `0` | -| lora.tx_enabled | `false`, `true` | `true` | -| lora.channel_num | `0`, `1` to `NUM_CHANNELS` | `0` | -| lora.ignore_mqtt | `false`, `true` | `false` | -| lora.override_duty_cycle | `false`, `true` | `false` | -| lora.sx126x_rx_boosted_gain | `false`, `true` | `false` | -| lora.override_frequency | Any supported frequency the LoRA radio is capable of. Please respect local rules and regulations | `0` | +| Setting | Acceptable Values | Default | +|:---------------------------:|:---------------------------------------------------------------------------------------------------------------------------------------------------------:|:-----------:| +| lora.modem_preset | `LONG_FAST`, `LONG_SLOW`, `VERY_LONG_SLOW`, `MEDIUM_SLOW`, `MEDIUM_FAST`, `SHORT_SLOW`, `SHORT_FAST`, `SHORT_TURBO` | `LONG_FAST` | +| lora.use_preset | `false`, `true` | `false` | +| lora.region | `UNSET`, `US`, `EU_433`, `EU_868`, `CN`, `JP`, `ANZ`, `KR`, `TW`, `RU` ,`IN`, `NZ_865`, `TH`, `LORA_24`, `UA_433`, `UA_868`, `MY_433`, `MY_919`, `SG_923` | `UNSET` | +| lora.bandwidth | `31`, `62`, `125`, `250`, `500` | `250` | +| lora.spread_factor | `7`, `8`, `9`, `10`, `11`, `12` | `12` | +| lora.coding_rate | `5`, `6`, `7`, `8` | `8` | +| lora.frequency_offset | `0` to `1000000` | `0` | +| lora.hop_limit | `1`,`2`,`3`,`4`,`5`,`6`,`7` | `3` | +| lora.tx_power | `0` to `30` | `0` | +| lora.tx_enabled | `false`, `true` | `true` | +| lora.channel_num | `0`, `1` to `NUM_CHANNELS` | `0` | +| lora.ignore_mqtt | `false`, `true` | `false` | +| lora.override_duty_cycle | `false`, `true` | `false` | +| lora.sx126x_rx_boosted_gain | `false`, `true` | `false` | +| lora.override_frequency | Any supported frequency the LoRA radio is capable of. Please respect local rules and regulations | `0` | :::tip diff --git a/docs/configuration/radio/security.mdx b/docs/configuration/radio/security.mdx new file mode 100644 index 00000000..f571f71a --- /dev/null +++ b/docs/configuration/radio/security.mdx @@ -0,0 +1,127 @@ +--- +id: security +title: Security Configuration +sidebar_label: Security +description: This section covers security options for the device such public key, privaate key, and admin key +--- + +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; + +The security config options are: Public Key, Private Key, Admin Key, Is Managed, Serial Console, Debug Logs, and Admin Channel. + +## Security Config Values + +### Public Key + +Acceptable values: `bytes` + +The public key of the device, shared with other nodes on the mesh to allow them to compute a shared secret key for secure communication. + +### Private Key + +Acceptable values: `bytes` + +The private key of the device, used to create a shared key with a remote device for secure communication.**This key should be kept confidential.** + +### Admin Key + +Acceptable values: `repeated bytes` + +The public key(s) authorized to send administrative messages to this node. Only messages signed by these keys will be accepted for administrative control. + +### Managed Mode + +Acceptable values: `true` or `false` + +Enabling Managed Mode restricts access to all radio configurations via client applications. Radio configurations will only be accessible through the Admin channel. Ensure the Admin channel is functioning properly before enabling this mode to avoid being locked out. + +### Serial Console + +Acceptable values: `true` or `false` + +Disabling this will prevent the Serial Console from initializing the Stream API. + +### Debug Log + +Acceptable values: `true` or `false` + +By default, logging is disabled when an API client connects to keep the shared serial link quiet. Set this to true to continue outputting live debug logs over serial or Bluetooth when the API is active. + +### Admin Channel Enabled + +Acceptable values: `true` or `false` + +Allows incoming device control over the insecure legacy admin channel. Enabling this option permits control messages to be received through the older, less secure admin channel. + +## Device Config Client Availability + + + + +#### Android + +All Security config options are available for Android. + +1. Open the Meshtastic App +2. Navigate to: **Vertical Ellipsis (3 dots top right) > Radio Configuration > Security** + + + + +#### Apple + +All Security config options are available on iOS, iPadOS and macOS at Settings > Radio Configuration > Security. + + + + +#### CLI + +All Security config options are available in the python CLI. Example commands are below: + +| Setting | Acceptable Values | Default | +| ------------------------------ | ----------------- | ------- | +| security.public_key | `bytes` | `None` | +| security.private_key | `bytes` | `None` | +| security.admin_key | `repeated bytes` | `None` | +| security.is_managed | `true`, `false` | `false` | +| security.serial_enabled | `true`, `false` | `true` | +| security.debug_log_api_enabled | `true`, `false` | `false` | +| security.admin_channel_enabled | `true`, `false` | `false` | + +:::tip + +Because the device may reboot after each command is sent via CLI, it is recommended when setting multiple values in a config section that commands be chained together as one. + +```shell title="Example:" +meshtastic --set security.is_managed false --set device.debug_log_api_enabled true +``` + +::: + +```shell title="Disable serial console" +meshtastic --set security.serial_enabled false +``` + +```shell title="Enable debug logging" +meshtastic --set security.debug_log_api_enabled true +``` + + + + +#### Web + +All Security config options are available in the Web client. + + + diff --git a/docs/configuration/region-by-country.mdx b/docs/configuration/region-by-country.mdx index 25b2c8f5..55c75410 100644 --- a/docs/configuration/region-by-country.mdx +++ b/docs/configuration/region-by-country.mdx @@ -12,173 +12,171 @@ If you'd like to contribute information for your country, click the "Edit this p ### A -| Country | LoRa Region | Regulatory document | -| --- | --- | --- | -| Albania | EU_868
EU_433 | | -| Australia | ANZ | | -| Austria | EU_868
EU_433 | | +| Country | LoRa Region | Regulatory document | +| --------- | ------------------ | ---------------------------------------------------------------------------------------------------------- | +| Albania | EU_868
EU_433 | | +| Australia | ANZ | [IoT Spectrum in Australia](https://www.iot.org.au/wp/wp-content/uploads/2016/12/IoTSpectrumFactSheet.pdf) | +| Austria | EU_868
EU_433 | | ### B -| Country | LoRa Region | Regulatory document | -| --- | --- | --- | -| Belgium | EU_868
EU_433 | | -| Bosnia-Herzegowina | EU_868
EU_433 | | -| Brazil | ANZ | https://www.gov.br/anatel/pt-br/regulado/radiofrequencia/radiacao-restrita | -| Bulgaria | EU_868
EU_433 | | - +| Country | LoRa Region | Regulatory document | +| ------------------ | ------------------ | --------------------------------------------------------------------------------------------------- | +| Belgium | EU_868
EU_433 | | +| Bosnia-Herzegowina | EU_868
EU_433 | | +| Brazil | ANZ | [Brazilian Regulations](https://www.gov.br/anatel/pt-br/regulado/radiofrequencia/radiacao-restrita) | +| Bulgaria | EU_868
EU_433 | | ### C -| Country | LoRa Region | Regulatory document | -| --- | --- | --- | -| Canada | US | | -| China | CN | | -| Croatia | EU_868
EU_433 | | -| Cyprus | EU_868
EU_433 | | -| Czech Republic | EU_868
EU_433 | | +| Country | LoRa Region | Regulatory document | +| -------------- | ------------------ | -------------------------------------------------------------------------------------------------------------------------------- | +| Canada | US | [LoRaWAN Regional Parameters](https://www.thethingsnetwork.org/docs/lorawan/regional-parameters/) | +| China | CN | [LoRaWAN Regional Parameters](https://lora-alliance.org/wp-content/uploads/2020/11/lorawan_regional_parameters_v1.0.3reva_0.pdf) | +| Croatia | EU_868
EU_433 | | +| Cyprus | EU_868
EU_433 | | +| Czech Republic | EU_868
EU_433 | | ### D -| Country | LoRa Region | Regulatory document | -| --- | --- | --- | -| Denmark | EU_868
EU_433 | https://www.retsinformation.dk/eli/lta/2024/490 | +| Country | LoRa Region | Regulatory document | +| ------- | ------------------ | --------------------------------------------------------------------- | +| Denmark | EU_868
EU_433 | [Danish Regulations](https://www.retsinformation.dk/eli/lta/2024/490) | ### E -| Country | LoRa Region | Regulatory document | -| --- | --- | --- | -| Estonia | EU_868
EU_433 | | +| Country | LoRa Region | Regulatory document | +| ------- | ------------------ | ------------------- | +| Estonia | EU_868
EU_433 | | ### F -| Country | LoRa Region | Regulatory document | -| --- | --- | --- | -| France | EU_868
EU_433 | | -| Finland | EU_868
EU_433 | | +| Country | LoRa Region | Regulatory document | +| ------- | ------------------ | ------------------- | +| France | EU_868
EU_433 | | +| Finland | EU_868
EU_433 | | ### G -| Country | LoRa Region | Regulatory document | -| --- | --- | --- | -| Germany | EU_868
EU_433 | | -| Greece | EU_868
EU_433 | | +| Country | LoRa Region | Regulatory document | +| ------- | ------------------ | ------------------- | +| Germany | EU_868
EU_433 | | +| Greece | EU_868
EU_433 | | ### H -| Country | LoRa Region | Regulatory document | -| --- | --- | --- | -| Hungary | EU_868
EU_433 | | +| Country | LoRa Region | Regulatory document | +| ------- | ------------------ | ------------------- | +| Hungary | EU_868
EU_433 | | ### I -| Country | LoRa Region | Regulatory document | -| --- | --- | --- | -| India | IN | | -| Ireland | EU_868
EU_433 | | -| Italy | EU_868
EU_433 | | +| Country | LoRa Region | Regulatory document | +| ------- | ------------------ | ------------------- | +| India | IN | | +| Ireland | EU_868
EU_433 | | +| Italy | EU_868
EU_433 | | ### J -| Country | LoRa Region | Regulatory document | -| --- | --- | --- | -| Japan | JP | | +| Country | LoRa Region | Regulatory document | +| ------- | ----------- | ---------------------------------------------------------------------------------------------- | +| Japan | JP | [Japanese Regulations](https://www.arib.or.jp/english/html/overview/doc/5-STD-T108v1_5-E1.pdf) | ### K -| Country | LoRa Region | Regulatory document | -| --- | --- | --- | -| Korea | KR | | +| Country | LoRa Region | Regulatory document | +| ------- | ----------- | --------------------------------------------------------------------------- | +| Korea | KR | [Korean Regulations](https://qiita.com/ammo0613/items/d952154f1195b64dc29f) | ### L -| Country | LoRa Region | Regulatory document | -| --- | --- | --- | -| Latvia | EU_868
EU_433 | | -| Lithauania | EU_868
EU_433 | | -| Luxembourg | EU_868
EU_433 | | +| Country | LoRa Region | Regulatory document | +| ---------- | ------------------ | ------------------- | +| Latvia | EU_868
EU_433 | | +| Lithauania | EU_868
EU_433 | | +| Luxembourg | EU_868
EU_433 | | ### M -| Country | LoRa Region | Regulatory document | -| --- | --- | --- | -| Malaysia | MY_919
MY_433 | | -| Montenegro | EU_868
EU_433 | | +| Country | LoRa Region | Regulatory document | +| ---------- | ------------------ | ------------------------------------------------------------------------------------------------------------- | +| Malaysia | MY_919
MY_433 | [MCMC Regulations](https://www.mcmc.gov.my/skmmgovmy/media/General/pdf/Short-Range-Devices-Specification.pdf) | +| Montenegro | EU_868
EU_433 | | ### N -| Country | LoRa Region | Regulatory document | -| --- | --- | --- | -| Netherlands | EU_868
EU_433 | | -| New Zealand | ANZ
NZ_865 | | -| North Macedonia | EU_868
EU_433 | | -| Norway | EU_868
EU_433 | | +| Country | LoRa Region | Regulatory document | +| --------------- | ------------------ | ------------------------------------------------------------------------------------------------------------------------- | +| Netherlands | EU_868
EU_433 | [Overheid.nl](https://wetten.overheid.nl/BWBR0036378) | +| New Zealand | ANZ
NZ_865 | [IoT Spectrum in NZ](https://iotalliance.org.nz/wp-content/uploads/sites/4/2019/05/IoT-Spectrum-in-NZ-Briefing-Paper.pdf) | +| North Macedonia | EU_868
EU_433 | | +| Norway | EU_868
EU_433 | | ### O | Country | LoRa Region | Regulatory document | -| --- | --- | --- | +| ------- | ----------- | ------------------- | ### P -| Country | LoRa Region | Regulatory document | -| --- | --- | --- | -| Poland | EU_868
EU_433 | | -| Portugal | EU_868
EU_433 | | +| Country | LoRa Region | Regulatory document | +| -------- | ------------------ | ------------------- | +| Poland | EU_868
EU_433 | | +| Portugal | EU_868
EU_433 | | ### Q | Country | LoRa Region | Regulatory document | -| --- | --- | --- | +| ------- | ----------- | ------------------- | ### R -| Country | LoRa Region | Regulatory document | -| --- | --- | --- | -| Romania | EU_868
EU_433 | | -| Russia | RU | | +| Country | LoRa Region | Regulatory document | +| ------- | ------------------ | ----------------------------------------------------------------------------------------------------------- | +| Romania | EU_868
EU_433 | | +| Russia | RU | [Russian Regulations](https://digital.gov.ru/uploaded/files/prilozhenie-12-k-reshenyu-gkrch-18-46-03-1.pdf) | ### S -| Country | LoRa Region | Regulatory document | -| --- | --- | --- | -| Serbia | EU_868
EU_433 | | -| Singapore | SG_923 | | -| Slowakia | EU_868
EU_433 | | -| Slowenia | EU_868
EU_433 | | -| Spain | EU_868
EU_433 | | -| Sweden | EU_868
EU_433 | | -| Switzerland | EU_868
EU_433 | | +| Country | LoRa Region | Regulatory document | +| ----------- | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Serbia | EU_868
EU_433 | | +| Singapore | SG_923 | [IMDA Regulations](https://www.imda.gov.sg/-/media/imda/files/regulation-licensing-and-consultations/ict-standards/telecommunication-standards/radio-comms/imdatssrd.pdf) | +| Slowakia | EU_868
EU_433 | | +| Slowenia | EU_868
EU_433 | | +| Spain | EU_868
EU_433 | | +| Sweden | EU_868
EU_433 | | +| Switzerland | EU_868
EU_433 | | ### T -| Country | LoRa Region | Regulatory document | -| --- | --- | --- | -| Taiwan | TW | | -| Thailand | TH | | -| Türkiye | EU_868
EU_433 | [Mevzuat](https://www.mevzuat.gov.tr/mevzuat?MevzuatNo=15416&MevzuatTur=7&MevzuatTertip=5), [BTK Frekans Tahsisi](https://www.btk.gov.tr/uploads/pages/frekans-tahsisinden-muaf-telsiz-cihaz-sistemleri-olcutler-633d4ca68c0b1.pdf), [BTK Milli Frekans Planı](https://www.btk.gov.tr/uploads/pages/milli-frekans-plani-23012023.pdf) | - +| Country | LoRa Region | Regulatory document | +| -------- | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Taiwan | TW | [Taiwan Regulations](https://www.ncc.gov.tw/english/files/23070/102_5190_230703_1_doc_C.PDF) | +| Thailand | TH | [LoRaWAN Regional Parameters](https://lora-alliance.org/wp-content/uploads/2020/11/lorawan_regional_parameters_v1.0.3reva_0.pdf) | +| Türkiye | EU_868
EU_433 | [Mevzuat](https://www.mevzuat.gov.tr/mevzuat?MevzuatNo=15416&MevzuatTur=7&MevzuatTertip=5), [BTK Frekans Tahsisi](https://www.btk.gov.tr/uploads/pages/frekans-tahsisinden-muaf-telsiz-cihaz-sistemleri-olcutler-633d4ca68c0b1.pdf), [BTK Milli Frekans Planı](https://www.btk.gov.tr/uploads/pages/milli-frekans-plani-23012023.pdf) | ### U -| Country | LoRa Region | Regulatory document | -| ------------------------------ | ------------------ | -------------------------------------------------------------------------------- | -| Ukraine | UA_868
UA_433 | | -| United Kingdom (UK) | EU_868
EU_433 | [IR2030](https://www.ofcom.org.uk/__data/assets/pdf_file/0028/84970/ir-2030.pdf) | -| United States of America (USA) | US | | +| Country | LoRa Region | Regulatory document | +| ------------------------------ | ------------------ | ------------------------------------------------------------------------------------------------- | +| Ukraine | UA_868
UA_433 | [Ukrainian Regulations](https://nkrzi.gov.ua/images/upload/256/5810/PDF_UUZ_19_01_2016.pdf) | +| United Kingdom (UK) | EU_868
EU_433 | [IR2030](https://www.ofcom.org.uk/__data/assets/pdf_file/0028/84970/ir-2030.pdf) | +| United States of America (USA) | US | [LoRaWAN Regional Parameters](https://www.thethingsnetwork.org/docs/lorawan/regional-parameters/) | ### V -| Country | LoRa Region | Regulatory document | -| --- | --- | --- | -| Vatican City | EU_868
EU_433 | | +| Country | LoRa Region | Regulatory document | +| ------------ | ------------------ | ------------------- | +| Vatican City | EU_868
EU_433 | | ### Y | Country | LoRa Region | Regulatory document | -| --- | --- | --- | +| ------- | ----------- | ------------------- | ### Z | Country | LoRa Region | Regulatory document | -| --- | --- | --- | +| ------- | ----------- | ------------------- | diff --git a/docs/configuration/tips.mdx b/docs/configuration/tips.mdx index 6435f3fe..625c1386 100644 --- a/docs/configuration/tips.mdx +++ b/docs/configuration/tips.mdx @@ -35,7 +35,7 @@ Remember: A network of `CLIENT` nodes with a small number of well-placed `ROUTER ## (Not) Sharing Your Location -Telemetry is shared over your [PRIMARY channel](/docs/configuration/radio/channels#role). This means that if your node has acquired GPS coordinates from an integrated GPS chip, or from your mobile device, your coordinates will be sent to the mesh over this channel, using it's defined encryption (if any). +Telemetry is shared over your [PRIMARY channel](/docs/configuration/radio/channels#role). This means that if your node has acquired GPS coordinates from an integrated GPS chip, or from your mobile device, your coordinates will be sent to the mesh over this channel, using its defined encryption (if any). By default the PRIMARY channel's name is LongFast with the encryption key "AQ==" (Base64 equivalent of Hex 0x01). If this is left unchanged, your location will be shared with all nodes in range that are also using the default channel. @@ -96,4 +96,4 @@ This property, formerly known as "LoRa Channel Number", configures the frequency - If you are part of a large mesh and don't know what a setting does, don't change it (unless you're super curious). - TEST your settings and hardware before you install in hard-to-reach locations. -- Connecting a node to the [public MQTT server](/docs/configuration/module/mqtt#connect-to-the-default-public-server) may publish the locations of all nodes in your mesh to the internet. This will also add every globally connected node to your node database and potentially flood your mesh with all types of packets. +- Connecting a node to the [public MQTT server](/docs/configuration/module/mqtt#connect-to-the-default-public-server) may publish the locations of all nodes in your mesh to the internet. diff --git a/docs/development/device/error-codes.mdx b/docs/development/device/error-codes.mdx index 625609cd..39730ba6 100644 --- a/docs/development/device/error-codes.mdx +++ b/docs/development/device/error-codes.mdx @@ -11,16 +11,18 @@ The device might report these fault codes on the screen, but it will also be out This table is derived from the [protobufs](https://buf.build/meshtastic/protobufs/docs/main:meshtastic#meshtastic.CriticalErrorCode) ::: -| Name | Number | Description | -| :-----------------: | :----: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| TxWatchdog | 1 | A software bug was detected while trying to send LoRa | -| SleepEnterWait | 2 | A software bug was detected on entry to sleep | -| NoRadio | 3 | No LoRa radio hardware could be found | -| Unspecified | 4 | Not normally used | -| UBloxInitFailed | 5 | We failed while configuring a UBlox GPS | -| NoAXP192 | 6 | This board was expected to have a power management chip and it is missing or broken | -| InvalidRadioSetting | 7 | The channel tried to set a radio setting which is not supported by this chipset, radio comms settings are now undefined | -| TransmitFailed | 8 | Radio transmit hardware failure. We sent data to the radio chip, but it did not reply with an interrupt | -| Brownout | 9 | We detected that the main CPU voltage dropped below the minimum acceptable value | -| SX1262Failure | 10 | Selftest of SX1262 radio chip failed | -| RadioSpiBug | 11 | A (likely software but possibly hardware) failure was detected while trying to send packets. If this occurs on your board, please post in the forum so that we can ask you to collect some information to allow fixing this bug | +| Name | Number | Description | +| :--------------------------: | :----: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| TxWatchdog | 1 | A software bug was detected while trying to send LoRa. | +| SleepEnterWait | 2 | A software bug was detected on entry to sleep. | +| NoRadio | 3 | No LoRa radio hardware could be found. | +| Unspecified | 4 | Not normally used. | +| UBloxInitFailed | 5 | Failed while configuring a UBlox GPS. | +| NoAXP192 | 6 | This board was expected to have a power management chip, but it is missing or broken. | +| InvalidRadioSetting | 7 | The channel tried to set a radio setting not supported by this chipset; radio communication settings are now undefined. | +| TransmitFailed | 8 | Radio transmit hardware failure. Data was sent to the radio chip, but it did not respond with an interrupt. | +| Brownout | 9 | Main CPU voltage dropped below the minimum acceptable value. | +| SX1262Failure | 10 | Self-test of the SX1262 radio chip failed. | +| RadioSpiBug | 11 | A failure (likely software, possibly hardware) was detected while sending packets. If this occurs on your board, please post in the forum to help us collect information to fix this bug. | +| FlashCorruptionRecoverable | 12 | Corruption was detected on the flash filesystem, but it was repaired. | +| FlashCorruptionUnrecoverable | 13 | Corruption was detected on the flash filesystem, and it could not be repaired. _Note: Your node will likely need reconfiguration upon the next reboot (e.g., loss of region code)._ | diff --git a/docs/development/documentation/local-dev.mdx b/docs/development/documentation/local-dev.mdx index 45fb9ff0..ae64ff27 100644 --- a/docs/development/documentation/local-dev.mdx +++ b/docs/development/documentation/local-dev.mdx @@ -4,10 +4,6 @@ title: Serving Docs Locally for Development sidebar_label: Local Development --- -:::note -Some things won't display properly like logos or protobufs page, this is not cause for concern. -::: - ## Prerequisites In order to set up your local environment, you will need to install: @@ -24,17 +20,23 @@ Log into GitHub and create a fork of the [meshtastic/meshtastic](https://github. ### Clone your Meshtastic Repository fork :::note -Replace `username` with your GitHub username. +Replace `YOUR_GITHUB_USERNAME` with your GitHub username. ::: -```shell title="Clone username/Meshtastic Repo" -git clone https://github.com/username/meshtastic.git +```shell title="Clone your Fork of the Documentation Repository" +git clone https://github.com/YOUR_GITHUB_USERNAME/meshtastic.git ``` -### Change directory to Local copy +### Change directory into your Local Copy ```shell title="Change Directory" -cd ~/meshtastic +cd ./meshtastic +``` + +### Install Submodules + +```shell title="Install Submodules" +git submodule update --init --recursive ``` ### Install Dependencies diff --git a/docs/development/firmware/building.mdx b/docs/development/firmware/building.mdx index 2c8863ba..18b0a10b 100644 --- a/docs/development/firmware/building.mdx +++ b/docs/development/firmware/building.mdx @@ -62,8 +62,20 @@ The build system is modular. Adding a new board variant for an already supported 1. Perform all of the steps [building with custom hardware](#build-with-custom-hardware) until your hardware runs fine. 2. [Send a proposal](https://github.com/meshtastic/firmware/issues/new?assignees=&labels=enhancement%2Ctriage&template=New+Board.yml&title=%5BBoard%5D%3A+) to add a new board. -3. If approved, go to (https://github.com/meshtastic/protobufs) and send a Pull Request for the `mesh.proto` file, adding your board to the `HardwareModel` Enum. +3. If approved, go to [https://github.com/meshtastic/protobufs](https://github.com/meshtastic/protobufs) and send a Pull Request for the `mesh.proto` file, adding your board to the `HardwareModel` Enum. 4. Change your define in `platformio.ini` from `PRIVATE_HW` to `YOUR_BOARD`. Adjust any macro guards in the code you need to support your board. 5. Add your board identifier to `architecture.h` on the firmware repo in the folder of the platform you are using, and send in that Pull Request too. 6. Wait for the Pulls to be merged back into Master. 7. Profit :-) + +## Alternative route: Gitpod + +Gitpod offers an alternative method for compiling the firmware without installing Visual Studio Code. It is a web browser-based online IDE that can be used with a GitHub account. Gitpod provides a free tier suitable for light use, such as compiling custom firmware. + +1. Go to [https://gitpod.io#https://github.com/meshtastic/firmware](https://gitpod.io#https://github.com/meshtastic/firmware). +2. Make the desired changes to the chosen variant. +3. Build the firmware by running: `pio run -e ` +4. Once complete, download `.bin` or `.uf2` from `/workspace/firmware/.pio/build/.` +5. As flashing directly to the device isn't possible using Gitpod, upload using either: +- [Drag & Drop](/docs/getting-started/flashing-firmware/nrf52/#drag--drop) for NRF52/RP2040 devices. +- [Web flasher](https://flasher.meshtastic.org/) for ESP32 devices. diff --git a/docs/development/reference/encryption-technical.mdx b/docs/development/reference/encryption-technical.mdx new file mode 100644 index 00000000..5790fec1 --- /dev/null +++ b/docs/development/reference/encryption-technical.mdx @@ -0,0 +1,78 @@ +--- +id: encryption-technical +title: Updated Security Implementation +sidebar_label: Encryption Technical +sidebar_position: 5 +description: Technical Overview of Encryption Employed with Meshtastic from Firmware 2.5.0 Onwards +--- + +## PSK for Channels, PKC for Direct Messages (DMs) and Admin Messages + +Starting with firmware version 2.5.0, which introduces Public Key Cryptography (PKC) for Direct Messages (DMs) and additionally incorporating the use of Session IDs for Admin Messages, the security architecture of Meshtastic has reached a new level of robustness. + +Below is a detailed overview of how PSK, PKC, and Session IDs are integrated into your system to secure Channels, Direct Messages, and Admin Messages. + +### 1. Chat Channels Using Pre-Shared Key (PSK) + +- **PSK Overview:** + + - Chat Channels continue to utilize a Pre-Shared Key (PSK) for encrypting communications. + - All participants share the same PSK for their Channels, which is used for both encryption and decryption within the channel. + +- **Security Considerations:** + - **Confidentiality:** Only participants with the correct PSK can access messages within the Chat Channel. + - **Key Management:** Secure distribution and regular rotation of the PSK are essential to maintaining the channel's security. + +### 2. Direct Messages (DMs) Now Using PKC + +- **PKC Implementation for DMs:** + + - **Public/Private Key Pairs:** Each node is equipped with a unique public/private key pair. The private key is securely stored on the node, and the public key is shared with other nodes, allowing for secure, authenticated communication. + - **Encryption and Signature:** + - **Encryption:** DMs are encrypted using the recipient’s public key, ensuring only the recipient with the corresponding private key can decrypt the message. + - **Digital Signatures:** Messages are signed with the sender’s private key before encryption, allowing the recipient to verify the sender’s identity and the message’s integrity using the sender’s public key. + +- **Security Enhancements with PKC:** + - **Message Confidentiality and Integrity:** With PKC, each DM is encrypted and signed, ensuring that only the intended recipient can read the message, and verifying that it has not been tampered with. + +### 3. Admin Messages: Enhanced Security with PKC and Session IDs + +- **Key Exchange with DH Curve25519:** + + - **Initial Key Exchange Setup:** + + - **Key Generation:** A Diffie-Hellman (DH) key exchange occurs using Curve25519 upon first communication between nodes. This generates a shared secret for establishing a symmetric encryption key. + - **Hardware Support:** Curve25519 is supported in hardware, ensuring efficient and secure key exchanges. + - **Shared Secret:** The derived shared secret is used for all subsequent communications between the nodes. + + - **Use of Shared Secret for Encryption:** + - **Symmetric Encryption:** Following the key exchange, messages are encrypted and decrypted using the shared secret with symmetric encryption algorithms like AES-CTR or AES-CCM. + - **Efficiency:** Symmetric encryption, especially when based on a secure DH exchange, balances security and performance, making it ideal for real-time applications. + +- **Session ID for Admin Messages:** + + - **Session ID Usage:** Session IDs are generated for each admin session and used as an additional value inside the encrypted packet. This ensures that each session is secure and unique. + - **Session Duration:** The session ID is valid only for a short duration (e.g., 300 seconds) and is discarded once the session ends or after the next control message is sent. + + - **Security Enhancements with PKC and Session ID:** + - **Replay Attack Mitigation:** By utilizing session IDs, replay attacks are effectively mitigated. Old session IDs cannot be reused, ensuring that intercepted packets are invalidated. + - **Isolated Impact:** The use of session IDs confines any issues related to session management to admin messages, without affecting broader communication functions like DMs or Chat Channels. + +### 4. Overall Security Architecture + +- **Integration of PKC with Existing Systems:** + + - **Direct Messages:** PKC enhances the security of DMs by providing encryption, authentication, and integrity through the use of asymmetric encryption and digital signatures. + - **Admin Messages:** The combination of PKC and session IDs secures admin-related operations, providing an additional layer of protection for critical functions. + +- **Use of PSK with Existing Systems:** + + - **Channels:** PSKs continue to be used for group communication, ensuring secure message exchanges within the channel. + +- **Scalability and Performance:** + - **Efficient Use of Resources:** PKC for DMs leverages asymmetric encryption for secure communication, while PSKs for Chat Channels and session IDs for admin messages optimize resource consumption on the platform. + - **Memory Management:** The selective use of PKC, PSKs, and session IDs ensures that memory and computational resources are effectively managed, allowing the system to scale while maintaining high security. + +## Conclusion + +PSKs and the expanded use of PKC and session IDs across different MCU architectures—ESP32, nRF52, and ARM—demonstrates a tailored approach to security that balances performance, power consumption, and memory management. Each architecture's strengths are leveraged to ensure that secure communications are maintained without compromising the efficiency or scalability of the system. This approach provides robust security for a wide range of applications, from low-power wearable devices to more powerful, feature-rich systems. diff --git a/docs/getting-started/flashing-firmware/esp32/cli-script.mdx b/docs/getting-started/flashing-firmware/esp32/cli-script.mdx index d6e24d29..b1845714 100644 --- a/docs/getting-started/flashing-firmware/esp32/cli-script.mdx +++ b/docs/getting-started/flashing-firmware/esp32/cli-script.mdx @@ -17,9 +17,9 @@ Make sure not to power the radio on without first attaching the antenna! You cou Before you flash your device start by verifying connectivity with the device being flashed. Outlined below are steps that can be taken to verify connectivity and, if necessary, to install the appropriate drivers. If you end up needing to install drivers be sure to reboot your computer afterwards to verify the installation is complete. :::note -The [T-Beam 0.7](/docs/hardware/devices/tbeam/?t-beam=0.7) board is an earlier version of the T-Beam board, and due to changes in the design in subsequent iterations this board uses a specific firmware file different from the other T-Beam boards. +The [T-Beam 0.7](/docs/hardware/devices/lilygo/tbeam/?t-beam=0.7) board is an earlier version of the T-Beam board, and due to changes in the design in subsequent iterations this board uses a specific firmware file different from the other T-Beam boards. -`firmware-tbeam0.7-X.X.X.xxxxxxx.bin` is the correct firmware. `firmware-tbeam-X.X.X.xxxxxxx.bin` is incompatible. For all other [T-Beam](/docs/hardware/devices/tbeam) boards `firmware-tbeam-X.X.X.xxxxxxx.bin` is the correct selection. +`firmware-tbeam0.7-X.X.X.xxxxxxx.bin` is the correct firmware. `firmware-tbeam-X.X.X.xxxxxxx.bin` is incompatible. For all other [T-Beam](/docs/hardware/devices/lilygo/tbeam) boards review the resources section for the correct selection. ::: ## Command Line Interface Instructions diff --git a/docs/getting-started/flashing-firmware/nrf52/nrf52-erase.mdx b/docs/getting-started/flashing-firmware/nrf52/nrf52-erase.mdx index 90a2cc9e..2c6b9179 100644 --- a/docs/getting-started/flashing-firmware/nrf52/nrf52-erase.mdx +++ b/docs/getting-started/flashing-firmware/nrf52/nrf52-erase.mdx @@ -11,7 +11,7 @@ import Link from "@docusaurus/Link"; Meshtastic uses the [littlefs](https://github.com/littlefs-project/littlefs) library to store configuration, logs, and other data in the internal flash of nRF52 & RP2040 devices. Updating the firmware does _not_ erase this additional data, which can cause issues when the format and location of data changes between releases. :::info -You may now use the [Meshtastic Web Flasher](https://flasher.meshtastic.org) to Factory Erase your nRF52 or RP2040-based devices. Visit the flasher, select your board, and click the trash can icon to the right of the Flash button. This will open a dialogue to begin the erase procedure. +You may now use the [Meshtastic Web Flasher](https://flasher.meshtastic.org) to Factory Erase your nRF52 or RP2040-based devices. Visit the flasher, select your board, and click the trash can icon to the right of the Flash button. This will open a dialogue to begin the erase procedure. Alternatively, follow the instructions below. ::: @@ -25,9 +25,10 @@ To reset the flash storage on your nRF52 board: 3. Double click the reset button on your device (this will put it into bootloader mode) 4. Notice a new drive will be mounted on your computer (Windows, Mac, or Linux) 5. Open this drive and you should see three files: `CURRENT.UF2`, `INDEX.HTM`, and `INFO_UF2.TXT` -6. Find the file included in the downloaded firmware named `Meshtastic_nRF52_factory_erase.uf2` and copy it onto the new drive. The device should reboot. -7. With the [Meshtastic CLI](/docs/software/python/cli/) installed, open your Terminal/Console and enter the command: `meshtastic --noproto`. -8. Press any key, you should see the message: `Formatting... Done`. +6. Open the `INFO_UF2.TXT` file with a text editor and note the `SoftDevice` value. +7. Find the file included in the downloaded firmware matching your softdevice major version number (7.x.x or 6.x.x). Either use `Meshtastic_nRF52_factory_erase_v3_S140_7.3.0.uf2` or `Meshtastic_nRF52_factory_erase_v3_S140_6.3.0.uf2` and copy it onto the new drive. The device should reboot. +8. With the [Meshtastic CLI](/docs/software/python/cli/) installed, open your Terminal/Console and enter the command: `meshtastic --noproto`. +9. You should see the message: `Formatting... Done`. Once the device has been erased, you can proceed to install the latest Meshtastic firmware on a clean storage filesystem by clicking the link below. @@ -41,7 +42,6 @@ To reset the flash storage on your RP2040 board: 4. Copy the flash_nuke.uf2 file to the device. 5. The board will now restart and the flash memory will be erased. - Once the device has been erased, you can proceed to install the latest Meshtastic firmware on a clean storage filesystem by clicking the link below.
diff --git a/docs/getting-started/flashing-firmware/nrf52/update-booloader.mdx b/docs/getting-started/flashing-firmware/nrf52/update-booloader.mdx new file mode 100644 index 00000000..46ee3a84 --- /dev/null +++ b/docs/getting-started/flashing-firmware/nrf52/update-booloader.mdx @@ -0,0 +1,69 @@ +--- +id: update-nrf52-bootloader +title: How to Update or Recover the Bootloader on nRF52 Devices to the Latest Version +sidebar_label: Update nRF52 Bootloader +sidebar_position: 5 +description: Instructions for updating or recovering the bootloader on nRF52 devices. +--- + +If you're experiencing issues with updating or flashing newer versions of the Meshtastic firmware, and your nRF52 device is not running the latest bootloader version, updating the bootloader may resolve these problems. + +To check which version of the bootloader your device is running, place the device into DFU mode. Then, open the mounted drive that appears on your computer and check the `INFO_UF2.TXT` file. + +## Updating bootloader + +Below are the steps to update your bootloader. + +### Method 1: Using the UF2 File (Recommended) + +Depending on your device, you need to select the correct bootloader package. Below are the links to the bootloader packages: + +- [Lilygo T-Echo](https://github.com/meshtastic/firmware/raw/master/bin/update-lilygo_techo_bootloader-0.6.1_nosd.uf2) +- [RAK4631](https://github.com/RAKWireless/WisBlock/raw/master/bootloader/RAK4630/Latest/wiscore_rak4631_board_bootloader-0.4.3_s140_6.1.1.uf2) +- [Seeed Tracker 1000-E](https://github.com/adafruit/Adafruit_nRF52_Bootloader/releases/download/0.9.2/update-t1000_e_bootloader-0.9.2_nosd.uf2) +- [Generic Meshtastic 6.1.1 for DIY](https://github.com/meshtastic/firmware/raw/master/bin/generic/Meshtastic_6.1.0_bootloader-0.9.2_s140_6.1.1.zip) +- [Generic Meshtastic 7.3.0 for DIY](https://github.com/meshtastic/firmware/raw/master/bin/generic/Meshtastic_7.3.0_bootloader-0.9.2_s140_7.3.0.zip) + +1. Download the correct UF2 Bootloader File. +2. Connect your device to your computer via USB. +3. Activate bootloader mode by quickly double pressing the RESET button on your device. For The Seeed Tracker 1000-E, you need to press-and-hold the user button and quickly connect the USB cable to the magsafe port twice. The device should appear as a removable drive on your computer. +4. Drag and drop the UF2 file you downloaded into the removable drive. The device will automatically update the bootloader and reset. +5. Once the device resets, the update is complete. Your device is now running the latest bootloader version and you can proceed with [flashing the firmware](/docs/getting-started/flashing-firmware/nrf52/drag-n-drop/). + +### Method 2: Using adafruit-nrfutil + +:::caution + +Unlike uf2 uploads, adafruit-nrfutil does not check if you have the correct bootloader package for your device. If you flash the wrong bootloader, you may brick your device. Please also verify the SHA256 checksum before flashing. + +::: + +:::info + +These instructions assume you have python and pip already installed. If you do not, please install the latest verion of python (which includes pip) from [Python.org](https://www.python.org/downloads/). + +::: + +Depending on your device, you need to select the correct bootloader package. Below are the links to the bootloader packages: + +- [Lilygo T-Echo](https://github.com/meshtastic/firmware/raw/master/bin/lilygo_techo_bootloader-0.6.1.zip) SHA256: 85d8a334bbf82802d712e183f29ec5215f06786ca88914687c437aceab75d9cf +- [RAK4631](https://github.com/RAKWireless/WisBlock/raw/master/bootloader/RAK4630/Latest/wiscore_rak4631_board_bootloader-0.4.3_s140_6.1.1.zip) SHA256: 4a216ad2be8be23b80371a11753677c850c5711d3b85129390a416fc47ea0910 +- [Seeed Tracker 1000-E](https://github.com/adafruit/Adafruit_nRF52_Bootloader/releases/download/0.9.2/t1000_e_bootloader-0.9.2_s140_7.3.0.zip) SHA256: 8c69f0d43a7aac925055451d7262682d6926d4cfb7ea8240b466dc8f16a692ba +- [Generic Meshtastic 6.1.1 for DIY](https://github.com/meshtastic/firmware/raw/master/bin/generic/update-Meshtastic_6.1.0_bootloader-0.9.2_nosd.uf2) SHA256: 069791053d21e73115d917110aaa09605945f4130d8febc038c902ed40b0822a +- [Generic Meshtastic 7.3.0 for DIY](https://github.com/meshtastic/firmware/raw/master/bin/generic/update-Meshtastic_7.3.0_bootloader-0.9.2_nosd.uf2) SHA256: a3bea38a522e3707b90b387449b4d051abfd80bd43a69fc4db75002c0fe57268 + +1. Open a terminal or command prompt and install adafruit-nrfutil by running: + +```bash +pip install adafruit-nrfutil +``` + +2. Obtain the correct zip package. +3. Connect your device to your computer via USB. +4. In the terminal or command prompt, navigate to the directory where you downloaded the bootloader zip package and execute the following command, replacing /dev/ttyACM0 with the correct port for your device (Windows users might use COMx): + +```bash +adafruit-nrfutil --verbose dfu serial --package .zip -p /dev/ttyACM0 -b 115200 --singlebank --touch 1200 +``` + +5. Once the process finishes, the update is complete. Your device is now running the latest bootloader version and you can proceed with [flashing the firmware](/docs/getting-started/flashing-firmware/nrf52/drag-n-drop/). diff --git a/docs/getting-started/flashing-firmware/nrf52/update-techo-booloader.mdx b/docs/getting-started/flashing-firmware/nrf52/update-techo-booloader.mdx deleted file mode 100644 index 45c5fd4a..00000000 --- a/docs/getting-started/flashing-firmware/nrf52/update-techo-booloader.mdx +++ /dev/null @@ -1,49 +0,0 @@ ---- -id: update-techo-bootloader -title: How to Update the LilyGo T-Echo Bootloader to the Latest Version -sidebar_label: Update T-Echo Bootloader -sidebar_position: 5 -description: Instructions for updating the T-Echo bootloader to the latest version for use with Meshtastic. ---- - -If you're experiencing issues with updating or flashing newer versions of the Meshtastic firmware, and your LilyGo T-Echo is not running the latest bootloader version (0.6.1), updating the bootloader may resolve these problems. - -To check which version of the bootloader your device is running, place the device into DFU mode by double-pressing the reset button. Then, open the mounted drive that appears on your computer and check the INFO_UF2.TXT file. - -## Updating bootloader - -Below are the steps to update your bootloader. - -### Method 1: Using the UF2 File (Recommended) - -1. Download the Latest UF2 Bootloader File for the T-Echo from [Github](https://github.com/meshtastic/firmware/blob/master/bin/update-lilygo_techo_bootloader-0.6.1_nosd.uf2). -2. Connect your LilyGo T-Echo to your computer via USB. -3. Activate bootloader mode by quickly double pressing the RESET button on your T-Echo. The device should appear as a removable drive on your computer. -4. Drag and drop the .uf2 file you downloaded into the T-Echo's drive. The device will automatically update the bootloader and reset. -5. Once the device resets, the update is complete. Your T-Echo is now running the latest bootloader version and you can proceed with [flashing the firmware](/docs/getting-started/flashing-firmware/nrf52/drag-n-drop/). - -### Method 2: Using adafruit-nrfutil - -Should flashing the UF2 file to update your bootloader fail, you can use adafruit-nrfutil. - -:::info - -These instructions assume you have python and pip already installed. If you do not, please install the latest verion of python (which includes pip) from [Python.org](https://www.python.org/downloads/). - -::: - -1. Open a terminal or command prompt and install adafruit-nrfutil by running: - -```bash -pip install adafruit-nrfutil -``` - -2. Obtain the lilygo_techo_bootloader-0.6.1.zip package from [Github](https://github.com/meshtastic/firmware/blob/master/bin/lilygo_techo_bootloader-0.6.1.zip). -3. Connect your LilyGo T-Echo to your computer via USB. -4. In the terminal or command prompt, navigate to the directory where you downloaded the bootloader zip package and execute the following command, replacing /dev/ttyACM0 with the correct port for your device (Windows users might use COMx): - -```bash -adafruit-nrfutil --verbose dfu serial --package lilygo_techo_bootloader-0.6.1.zip -p /dev/ttyACM0 -b 115200 --singlebank --touch 1200 -``` - -5. Once the process finishes, the update is complete. Your T-Echo is now running the latest bootloader version and you can proceed with [flashing the firmware](/docs/getting-started/flashing-firmware/nrf52/drag-n-drop/). diff --git a/docs/hardware/devices/b-and-q-consulting/index.mdx b/docs/hardware/devices/b-and-q-consulting/index.mdx new file mode 100644 index 00000000..c6b969d1 --- /dev/null +++ b/docs/hardware/devices/b-and-q-consulting/index.mdx @@ -0,0 +1,25 @@ +--- +id: b-and-q-consulting +title: B&Q Consulting Devices +sidebar_label: B&Q Consulting +sidebar_position: 5 +--- + +## [Nano Series](./nano/) + +Portable and durable devices designed for Meshtastic. + +| Name | MCU | Radio | WiFi | BT | GPS | +| :------------------------------------------- | :---------- | :----- | :----------: | :-: | :-: | +| [Nano G2 Ultra](./nano/?nano-series=g2) | NRF52840 | SX1262 | 2.4GHz b/g/n | 5.0 | YES | +| [Nano G1 Explorer](./nano/?nano-series=g1-e) | ESP32 WROOM | SX1262 | 2.4GHz b/g/n | 4.2 | YES | +| [Nano G1](./nano/?nano-series=g1) | ESP32 WROOM | SX1276 | 2.4GHz b/g/n | 4.2 | YES | + +## [Station Series](./station-series/) + +High power LoRa transceiver designed for Meshtastic Licensed HAM operation. + +| Name | MCU | Radio | WiFi | BT | GPS | +| :------------------------------ | :--------------- | :----- | :----------: | :-: | :------: | +| [Station G1](./station-series/) | ESP32 WROOM | SX1262 | 2.4GHz b/g/n | 4.2 | OPTIONAL | +| [Station G2](./station-series/) | ESP32-S3 WROOM-1 | SX1262 | 2.4GHz b/g/n | 5.0 | OPTIONAL | diff --git a/docs/hardware/devices/nano/buttons.mdx b/docs/hardware/devices/b-and-q-consulting/nano/buttons.mdx similarity index 98% rename from docs/hardware/devices/nano/buttons.mdx rename to docs/hardware/devices/b-and-q-consulting/nano/buttons.mdx index 28843f25..df8db0ea 100644 --- a/docs/hardware/devices/nano/buttons.mdx +++ b/docs/hardware/devices/b-and-q-consulting/nano/buttons.mdx @@ -28,7 +28,7 @@ values={[ - **User/Program Button:** - **Single press:** Changes the information page displayed on the device's screen. - **Double press:** Sends an adhoc ping of the device's position to the network. - - **Long press:** Will signal the device to shutdown after 5 seconds (*soft off*). + - **Long press:** Will signal the device to shutdown after 5 seconds (_soft off_). - **Message Read Button:** - **Single press:** Clears the New Message LED. @@ -44,7 +44,6 @@ values={[ - **Toggle Up:** Selects Buzzer for Enhanced Message Notification Circuit. - **Toggle Down:** Selects LED for Enhanced Message Notification Circuit. - @@ -73,7 +72,5 @@ values={[ - - diff --git a/docs/hardware/devices/nano/index.mdx b/docs/hardware/devices/b-and-q-consulting/nano/index.mdx similarity index 99% rename from docs/hardware/devices/nano/index.mdx rename to docs/hardware/devices/b-and-q-consulting/nano/index.mdx index 0bbf6f2b..492dfcd1 100644 --- a/docs/hardware/devices/nano/index.mdx +++ b/docs/hardware/devices/b-and-q-consulting/nano/index.mdx @@ -2,7 +2,7 @@ id: nano-series title: Nano Series sidebar_label: Nano Series -sidebar_position: 8 +sidebar_position: 1 --- import Tabs from "@theme/Tabs"; diff --git a/docs/hardware/devices/station-series/buttons.mdx b/docs/hardware/devices/b-and-q-consulting/station-series/buttons.mdx similarity index 100% rename from docs/hardware/devices/station-series/buttons.mdx rename to docs/hardware/devices/b-and-q-consulting/station-series/buttons.mdx diff --git a/docs/hardware/devices/station-series/index.mdx b/docs/hardware/devices/b-and-q-consulting/station-series/index.mdx similarity index 99% rename from docs/hardware/devices/station-series/index.mdx rename to docs/hardware/devices/b-and-q-consulting/station-series/index.mdx index 8e532a5b..6ebebdcf 100644 --- a/docs/hardware/devices/station-series/index.mdx +++ b/docs/hardware/devices/b-and-q-consulting/station-series/index.mdx @@ -2,7 +2,7 @@ id: station-series title: Station Series sidebar_label: Station Series -sidebar_position: 9 +sidebar_position: 2 --- import Tabs from "@theme/Tabs"; diff --git a/docs/hardware/devices/heltec-automation/index.mdx b/docs/hardware/devices/heltec-automation/index.mdx new file mode 100644 index 00000000..2b96ce11 --- /dev/null +++ b/docs/hardware/devices/heltec-automation/index.mdx @@ -0,0 +1,35 @@ +--- +id: heltec-automation +title: HELTEC® Devices +sidebar_label: HELTEC® +sidebar_position: 4 +--- + +## [LoRa 32](./lora32/) + +Inexpensive basic ESP32-based boards. + +| Name | MCU | Radio | WiFi | BT | GPS | +| :---------------------------------------------------------------- | :---------- | :----- | :----------: | :-: | :-: | +| [LoRa32 V2.1](./lora32/?heltec=v2.1) | ESP32 | SX127x | 2.4GHz b/g/n | 4.2 | NO | +| [LoRa32 V3/3.1](./lora32/?heltec=v23) | ESP32-S3FN8 | SX1262 | 2.4GHz b/g/n | 5.0 | NO | +| [Wireless Stick Lite V3](./lora32/?heltec=Wireless+Stick+Lite+V3) | ESP32-S3FN8 | SX1262 | 2.4GHz b/g/n | 5.0 | NO | +| [Wireless Tracker v1.0](./lora32/?heltec=tracker-v1.0) | ESP32-S3FN8 | SX1262 | 2.4GHz b/g/n | 5.0 | YES | +| [Wireless Tracker v1.1](./lora32/?heltec=tracker-v1.1) | ESP32-S3FN8 | SX1262 | 2.4GHz b/g/n | 5.0 | YES | +| [Wireless Paper](./lora32/?heltec=paper) | ESP32-S3FN8 | SX1262 | 2.4GHz b/g/n | 5.0 | NO | + +## [Plug & Play Sensors](./sensor/) + +| Name | MCU | Radio | WiFi | BT | GPS | +| ----------------------- | ----------- | ------ | ------------ | --- | --- | +| [Capsule V3](./sensor/) | ESP32-S3FN8 | SX1262 | 2.4GHz b/g/n | 5.0 | YES | + +### [Vision Master](./vision-master/) + +Versatile ESP32-S3-based boards E-Ink development boards. + +| Name | MCU | Radio | WiFi | BT | GPS | +| :--------------------------------------------------------------- | :--------- | :----- | :----------: | :-: | :-: | +| [Vision Master E213](./vision-master/?heltec=vision_master_e213) | ESP32-S3R8 | SX1262 | 2.4GHz b/g/n | 5.0 | NO | +| [Vision Master E290](./vision-master/?heltec=vision_master_e290) | ESP32-S3R8 | SX1262 | 2.4GHz b/g/n | 5.0 | NO | +| [Vision Master T190](./vision-master/?heltec=vision_master_t190) | ESP32-S3R8 | SX1262 | 2.4GHz b/g/n | 5.0 | NO | diff --git a/docs/hardware/devices/heltec/buttons.mdx b/docs/hardware/devices/heltec-automation/lora32/buttons.mdx similarity index 94% rename from docs/hardware/devices/heltec/buttons.mdx rename to docs/hardware/devices/heltec-automation/lora32/buttons.mdx index cba4792a..2929930d 100644 --- a/docs/hardware/devices/heltec/buttons.mdx +++ b/docs/hardware/devices/heltec-automation/lora32/buttons.mdx @@ -1,6 +1,6 @@ --- id: buttons -title: Heltec LoRa 32 Hardware Buttons +title: HELTEC® LoRa 32 Buttons sidebar_label: Buttons sidebar_position: 1 --- diff --git a/docs/hardware/devices/heltec/index.mdx b/docs/hardware/devices/heltec-automation/lora32/index.mdx similarity index 76% rename from docs/hardware/devices/heltec/index.mdx rename to docs/hardware/devices/heltec-automation/lora32/index.mdx index 27484e05..8e79f023 100644 --- a/docs/hardware/devices/heltec/index.mdx +++ b/docs/hardware/devices/heltec-automation/lora32/index.mdx @@ -1,8 +1,8 @@ --- -id: heltec +id: lora32 title: HELTEC® LoRa 32 -sidebar_label: HELTEC® LoRa 32 -sidebar_position: 7 +sidebar_label: LoRa 32 +sidebar_position: 1 --- import Tabs from "@theme/Tabs"; @@ -16,7 +16,8 @@ values={[ {label: 'LoRa32 V2.1', value: 'v2.1'}, {label: 'LoRa32 V3/V3.1', value:'v3'}, {label: 'Wireless Stick Lite V3', value:'Wireless Stick Lite V3'}, -{label: 'Wireless Tracker', value: 'tracker'}, +{label: 'Wireless Tracker v1.0', value: 'tracker-v1.0'}, +{label: 'Wireless Tracker v1.1', value: 'tracker-v1.1'}, {label: 'Wireless Paper v1.0', value: 'paper-v1.0'}, {label: 'Wireless Paper v1.1', value: 'paper-v1.1'} ]}> @@ -57,10 +58,6 @@ Not recommended because of design issues! Support is being phased out. Use V3 in ## V3/V3.1 -:::caution -Be careful when interacting with the USB-C port. This device does not have ESD protection for the CP2102 USB to UART bridge chip. -::: - :::info This device may have issues charging a connected battery if utilizing a USB-C to USB-C cable. It's recommended to use a USB-A to USB-C cable. ::: @@ -82,7 +79,7 @@ This device may have issues charging a connected battery if utilizing a USB-C to ### V3.1 differences -Firmware remains the same as V3 below. Compare schematics: [V3.0](https://web.archive.org/web/20221127054612/https://resource.heltec.cn/download/WiFi_LoRa32_V3/HTIT-WB32LA(F)_V3_Schematic_Diagram.pdf) and [V3.1](https://resource.heltec.cn/download/WiFi_LoRa_32_V3/HTIT-WB32LA(F)_V3.1_Schematic_Diagram.pdf). Key differences: +Firmware remains the same as V3 below. Compare schematics: [V3.0]() and [V3.1](). Key differences: - Removal of [FDG6322C](https://www.mouser.com/datasheet/2/308/1/FDG6322C_D-2312203.pdf) (a dual N & P channel FET) from the V3.1 power supply. - Antenna filter values in V3.1 (L11 = 1.8pF, C15 = 2.7nH, C24 = 1.8pF) align more closely with ESP32-S3 reference design than V3.0 (L11 = 1.6nH, C15 = 6.9pF, C24 = 2.4pF). @@ -169,9 +166,73 @@ Image Source: [Heltec](https://resource.heltec.cn/download/Wireless_Stick_Lite_V - + -## Wireless Tracker +## Wireless Tracker v1.0 + +:::info +This device may have issues charging a connected battery if utilizing a USB-C to USB-C cable. It's recommended to use a USB-A to USB-C cable. +::: + +- **MCU:** + - ESP32-S3FN8 (WiFi & Bluetooth) +- **LoRa Transceiver:** + - Semtech SX1262 +- **Frequency Options:** + - 470 - 510 MHz + - 863 - 870 MHz + - 902 - 928 MHz +- **Connectors:** + - USB-C + - Antenna: + - Dedicated 2.4 GHz metal spring antenna for WiFi/Bluetooth + - U.FL/IPEX antenna connector for LoRa and GNSS + +### Features + +- Onboard 0.96-inch LCD display +- User and Reset Buttons + +### Flashing + +To flash ESP32-S3 devices like the Wireless Tracker, you typically need to place them in Espressif's firmware download mode. Use the "1200bps reset" button in the web flasher to do this. If this method does not work for any reason, you can follow the manual process below. + +:::warning + +Do not proceed unless an antenna is connected to avoid possible damage to the device's radio. + +::: + +The following process will manually place the device into the Espressif Firmware Download mode: + +1. Unplug the device. +2. Press and hold the USER button. +3. Plug device in. +4. After 2-3 seconds, release the USER button. + +With the device now in the Espressif Firmware Download mode, you can proceed with flashing using one of the supported flashing methods. It's generally recommended to use the [Web Flasher](https://flasher.meshtastic.org/). You can select "Heltec Wireless Tracker" from the device drop-down. + +### Pin Map + +![HT-Tracker_V1 Pin Map](/img/hardware/HT-Tracker_V1_Pin_Map.webp) + +Image Source: [Heltec](https://heltec.org/project/wireless-tracker/) + +### Resources + +- Firmware file: `firmware-heltec-wireless-tracker-V1-0-X.X.X.xxxxxxx.bin` +- Purchase Links: + +:::note + +Heltec revised the Wireless Tracker schematics and released a V1.1, most devices being sold are now [V1.1.](/docs/hardware/devices/heltec-automation/lora32/?heltec=tracker-v1.1#resources-4) + +::: + + + + +## Wireless Tracker v1.1 :::info This device may have issues charging a connected battery if utilizing a USB-C to USB-C cable. It's recommended to use a USB-A to USB-C cable. @@ -243,8 +304,6 @@ Image Source: [Heltec](https://heltec.org/project/wireless-tracker/) This device may have issues charging a connected battery if utilizing a USB-C to USB-C cable. It's recommended to use a USB-A to USB-C cable. ::: - - - **MCU:** - ESP32-S3FN8 (WiFi & Bluetooth) - **LoRa Transceiver:** @@ -285,7 +344,6 @@ This device may have issues charging a connected battery if utilizing a USB-C to This device may have issues charging a connected battery if utilizing a USB-C to USB-C cable. It's recommended to use a USB-A to USB-C cable. ::: - - **MCU:** - ESP32-S3FN8 (WiFi & Bluetooth) - **LoRa Transceiver:** @@ -310,7 +368,7 @@ This device may have issues charging a connected battery if utilizing a USB-C to ### Resources - Firmware file: `firmware-heltec-wireless-paper-X.X.X.xxxxxxx.bin` -- Purchase Links: +- Purchase Links: - US - [Rokland](https://store.rokland.com/collections/heltec-products/products/heltec-wireless-paper-wi-fi-lora-bt) - International diff --git a/docs/hardware/devices/heltec/peripherals.mdx b/docs/hardware/devices/heltec-automation/lora32/peripherals.mdx similarity index 71% rename from docs/hardware/devices/heltec/peripherals.mdx rename to docs/hardware/devices/heltec-automation/lora32/peripherals.mdx index a19186cf..7602f96f 100644 --- a/docs/hardware/devices/heltec/peripherals.mdx +++ b/docs/hardware/devices/heltec-automation/lora32/peripherals.mdx @@ -1,6 +1,6 @@ --- id: peripherals -title: Heltec ESP32 V3 Supported Peripherals +title: Heltec® LoRa 32 Peripherals sidebar_label: Peripherals sidebar_position: 3 --- @@ -22,43 +22,48 @@ values={[ ## GPS Module ### Introduction + This informational guide outlines the process of enhancing the Heltec ESP32 V3 board by integrating the GT-U7 GPS Module. The addition of this module provides precise GPS capabilities and a real-time clock (RTC), eliminating the need for WiFi or a smartphone for time tracking. This enhancement is particularly beneficial for the mesh, where tracking the duration since the last seen device is crucial. However, it's important to note that the GPS module increases the power demand of your node. We'll address this by detailing how to incorporate a switch or an NPN 2N2222 transistor into your setup. This enables firmware-controlled power management, conserving battery life without sacrificing functionality. It is important to note that the GPS module increases the power demand of the node. This guide details the incorporation of a switch or an NPN 2N2222 transistor to enable firmware-controlled power management, conserving battery life without compromising functionality. ### Benefits + - **GPS Capabilities**: Provides the node with the ability to determine its location with high precision, which is invaluable for tracking, mapping, and various other applications requiring location data. - **Real-Time Clock (RTC)**: Ensures accurate timekeeping on the mesh network without relying on external time sources such as the internet or a connected smartphone. ### Power Consumption Considerations + The GT-U7 module is known for its high power consumption, which can potentially shorten the battery lifespan of the node. To mitigate this, two approaches are recommended: - - **Manual Switch**: A simple on/off switch for the GPS module, allowing for manual power management. - - **NPN 2N2222 Transistor**: Facilitates automatic power control through the firmware, enabling the device to turn off the GPS module based on specific conditions or after a set period. + +- **Manual Switch**: A simple on/off switch for the GPS module, allowing for manual power management. +- **NPN 2N2222 Transistor**: Facilitates automatic power control through the firmware, enabling the device to turn off the GPS module based on specific conditions or after a set period. ### Materials Needed - - Heltec ESP32 V3 board - - GT-U7 GPS Module - - NPN 2N2222 Transistor - - Wires and soldering equipment - - (Optional) Switch for manual power control + +- Heltec ESP32 V3 board +- GT-U7 GPS Module +- NPN 2N2222 Transistor +- Wires and soldering equipment +- (Optional) Switch for manual power control ### Instructions - 1. Solder a cable from the TXD slot on the GPS module to GPIO 48 on Heltec board. (You may choose your own GPIO pin) - 2. Solder a cable from the RXD slot on the GPS module to GPIO 47 on Heltec board. (You may choose your own GPIO pin) - 3. Solder a cable from the GND slot on the GPS module to GND pin on Heltec board. - 4. Solder a cable from left leg of NPN 2N2222 Transistor to VCC skit on GPS module. - 5. Solder a cable from Right leg of NPN 2N2222 Transistor to 3V/5V pin on Heltec board. - 6. Solder a cable from Middle leg of NPN 2N2222 Transistor to GPIO 48 of Heltec board. (You may choose your own GPIO pin) - 7. Go to Meshtastic app > Radio Configurations > Position - 8. Set GPS_RX_PIN to 48 (This will communicate to the TXD slot on the GPS) - 9. Set GPS_TX_PIN to 47 (This will communicate to the RXD slot on the GPS) - 10. Set PIN_GPS_EN to 46 (This will allow the meshtastic firmware to turn off the power on the GPS board with the user button of the Heltec Board by pressing it 3 times) +1. Solder a cable from the TXD slot on the GPS module to GPIO 48 on Heltec board. (You may choose your own GPIO pin) +2. Solder a cable from the RXD slot on the GPS module to GPIO 47 on Heltec board. (You may choose your own GPIO pin) +3. Solder a cable from the GND slot on the GPS module to GND pin on Heltec board. +4. Solder a cable from left leg of NPN 2N2222 Transistor to VCC skit on GPS module. +5. Solder a cable from Right leg of NPN 2N2222 Transistor to 3V/5V pin on Heltec board. +6. Solder a cable from Middle leg of NPN 2N2222 Transistor to GPIO 48 of Heltec board. (You may choose your own GPIO pin) +7. Go to Meshtastic app > Radio Configurations > Position +8. Set GPS_RX_PIN to 48 (This will communicate to the TXD slot on the GPS) +9. Set GPS_TX_PIN to 47 (This will communicate to the RXD slot on the GPS) +10. Set PIN_GPS_EN to 46 (This will allow the meshtastic firmware to turn off the power on the GPS board with the user button of the Heltec Board by pressing it 3 times) ### Wiring Diagram -![HeltecESP32V3-gps-module]() +![HeltecESP32V3-gps-module](/img/hardware/HeltecESP32V3-gps-module.webp) ### Troubleshooting Tips @@ -88,4 +93,3 @@ Coming Soon - diff --git a/docs/hardware/devices/heltec-automation/sensor/buttons.mdx b/docs/hardware/devices/heltec-automation/sensor/buttons.mdx new file mode 100644 index 00000000..34a7152c --- /dev/null +++ b/docs/hardware/devices/heltec-automation/sensor/buttons.mdx @@ -0,0 +1,11 @@ +--- +id: buttons +title: Heltec Sensor Hardware Buttons +sidebar_label: Buttons +sidebar_position: 1 +--- + +## Capsule Sensor V3 + +- **Long press 3 seconds:** Power on or shutdown. +- **Long press 8/16 seconds:** Long press for 8~16 seconds in the shutdown state until the blue indicator lights up. At this time, the device enters the WirelessBoot mode, which can be used to upload firmware. diff --git a/docs/hardware/devices/heltec-sensor/index.mdx b/docs/hardware/devices/heltec-automation/sensor/index.mdx similarity index 86% rename from docs/hardware/devices/heltec-sensor/index.mdx rename to docs/hardware/devices/heltec-automation/sensor/index.mdx index a383d1e1..452e0fac 100644 --- a/docs/hardware/devices/heltec-sensor/index.mdx +++ b/docs/hardware/devices/heltec-automation/sensor/index.mdx @@ -1,8 +1,8 @@ --- id: heltec-sensors -title: Heltec® Plug&Play Sensors -sidebar_label: HELTEC® Sensors -sidebar_position: 7 +title: HELTEC® Plug&Play Sensors +sidebar_label: Sensors +sidebar_position: 2 --- import Tabs from "@theme/Tabs"; @@ -38,32 +38,38 @@ values={[ :::info Capsule Sensor V3 uses WirelessBoot mode to upload firmware, exchange information, and print logs through WiFi. -That is, whether you update the firmware locally or via the Web, You need to get the device into WirelssBoot state first. +That is, whether you update the firmware locally or via the Web, You need to get the device into WirelssBoot state first. ::: Refer to this link for how to upload firmware for Capsule Sensor V3: [**Wireless Boot**](https://docs.heltec.org/en/node/esp32/capsule_sensor_v3/wireless_boot.html#). + ### Touch button/Physical button differences :::warning Because the touch button is easy to accidentally activate while close to metal or in your pocket, Heltec has discontinued production of this version. However, a small number of samples have entered the market. ::: + - Button differences -![Capsule Sensor V3 Button]() + ![Capsule Sensor V3 Button](/img/hardware/heltec/capsule-sensor-v3-button.webp) - Other hardware differences 1. Removal of [FDG6322C](https://www.mouser.com/datasheet/2/308/1/FDG6322C_D-2312203.pdf) (a dual N & P channel FET) from the physical-button version. 2. Antenna filter values physical-button version (L11 = 1.8pF, C15 = 2.7nH, C24 = 1.8pF) align more closely with ESP32-S3 reference design than touch-button version (L11 = 1.6nH, C15 = 6.9pF, C24 = 2.4pF). ### Features + - Meshtastic preinstalled. - Built-in battery. - Sensor replaceable. ### Pin + - Connector: - - Model name: [DF12NB(3.0)-10DS-0.5V(51)](https://resource.heltec.cn/download/Heltec%20Capsule%20Sensor%20V3/Connector.pdf) + - Model name: [DF12NB(3.0)-10DS-0.5V(51)](https://resource.heltec.cn/download/Heltec%20Capsule%20Sensor%20V3/Connector.pdf) - Pin: - ![Capsule Sensor V3 pin]() + ![Capsule Sensor V3 pin](/img/hardware/heltec/capsule-connector.webp) - More pin definitions please refer [Schematic Diagram](https://resource.heltec.cn/download/Heltec%20Capsule%20Sensor%20V3/Capsule_Main_Esp32_Schematic_Diagram.pdf) + ### Resources + - Firmware file: `firmware-heltec_capsule_sensor_v3-X.X.X.xxxxxx.bin` - Purchase links - International diff --git a/docs/hardware/devices/heltec-automation/vision-master/buttons.mdx b/docs/hardware/devices/heltec-automation/vision-master/buttons.mdx new file mode 100644 index 00000000..f38eccaa --- /dev/null +++ b/docs/hardware/devices/heltec-automation/vision-master/buttons.mdx @@ -0,0 +1,28 @@ +--- +id: buttons +title: Vision Master Hardware Buttons +sidebar_label: Buttons +sidebar_position: 1 +--- + +## Functionality + +### Vision Master E213/E290 + +- **RST Button(side):** + - **Single press:** Resets the device. +- **GPIO21 Button(side):** + - **Long press:** Will signal the device to shutdown after 5 seconds. + - **Single press:** Changes the information page displayed on the device's screen. + - **Double press:** Sends an adhoc ping of the device's position to the network. + - **Triple press:** Enables/Disables the GPS Module on demand. If an NPN Transistor is added it will cut power to the GPS board. The NPN pin must be configured on the PIN_GPS_EN inside the Position module in the App for this switching to work. + +### Vision Master T190 + +- **RST Button(side):** + - **Single press:** Resets the device. +- **BOOT Button(top):** + - **Long press:** Will signal the device to shutdown after 5 seconds. + - **Single press:** Changes the information page displayed on the device's screen. + - **Double press:** Sends an adhoc ping of the device's position to the network. + - **Triple press:** Enables/Disables the GPS Module on demand. If an NPN Transistor is added it will cut power to the GPS board. The NPN pin must be configured on the PIN_GPS_EN inside the Position module in the App for this switching to work. diff --git a/docs/hardware/devices/heltec-automation/vision-master/index.mdx b/docs/hardware/devices/heltec-automation/vision-master/index.mdx new file mode 100644 index 00000000..3b0fac8a --- /dev/null +++ b/docs/hardware/devices/heltec-automation/vision-master/index.mdx @@ -0,0 +1,206 @@ +--- +id: vision-master +title: HELTEC® Vision Master +sidebar_label: Vision Master +sidebar_position: 3 +--- + +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; + + + + +## Vision Master E213 + +- **MCU:** + - ESP32-S3R8 (WiFi & Bluetooth) +- **LoRa Transceiver:** + - HT-RA62(Semtech SX1262) +- **Frequency Options:** + - 433 MHz + - 470 - 510 MHz + - 863 - 870 MHz + - 902 - 928 MHz +- **Connectors:** + - USB-C + - 2x1.25 lithium battery interface + - 2 x SH1.0-4P sensor interface + - Antenna: + - U.FL/IPEX antenna connector for LoRa + - Integrated 2.4 GHz PCB antenna, U.FL/IPEX antenna connector for 2.4 GHz. + +### Features + +- Onboard 2.13-inch black and white E-Ink display screen +- Boot, Reset, and Custom(GPIO 21) switches +- No GPS + +### Flashing + +To flash ESP32-S3 devices like the Vission Master E213, you typically need to place them in Espressif's firmware download mode. Use the "1200bps reset" button in the web flasher to do this. If this method does not work for any reason, you can follow the manual process below. + +:::warning + +Do not proceed unless an antenna is connected to avoid possible damage to the device's radio. + +::: + +The following process will manually place the device into the Espressif Firmware Download mode: + +1. Unplug the device. +2. Press and hold the BOOT button. +3. Plug the device in. +4. After 2-3 seconds, release the BOOT button. + +With the device now in the Espressif Firmware Download mode, you can proceed with flashing using one of the supported flashing methods. It's generally recommended to use the [Web Flasher](https://flasher.meshtastic.org/). You can select "Heltec Vision Master E213" from the device drop-down. + +### Pin Map + +![HT-VME213_PIN_MAP](/img/hardware/heltec/HT-VME213_PIN_MAP.webp) + +Image Source: [Heltec](https://resource.heltec.cn/download/HT-VME213/HT-VME213.png) + +### Resources + +There is an additional interface on the board for 2.4GHz wireless signals. When connecting an external antenna, the resistor needs to be rotated 90 degrees to the left. For more details, please check the [FAQ on Heltec's official website](https://heltec.org/project/vision-master-e213/). + +- Firmware file: `firmware-heltec-vision-master-e213-X.X.X.xxxxxxx.bin` +- Purchase Links: + - [Heltec](https://heltec.org/project/vision-master-e213/) + - [AliExpress](https://www.aliexpress.com/item/1005007209756502.html) + + + + +## Vision Master E290 + +- **MCU:** + - ESP32-S3R8 (WiFi & Bluetooth) +- **LoRa Transceiver:** + - HT-RA62(Semtech SX1262) +- **Frequency Options:** + - 433 MHz + - 470 - 510 MHz + - 863 - 870 MHz + - 902 - 928 MHz +- **Connectors:** + - USB-C + - 2x1.25 lithium battery interface + - SH1.0-4P sensor interface + - Antenna: + - U.FL/IPEX antenna connector for LoRa + - Integrated 2.4 GHz PCB antenna, U.FL/IPEX antenna connector for 2.4 GHz. + +### Features + +- Onboard 2.90-inch black and white E-Ink display screen +- Boot, Reset, and Custom(GPIO 21) switches +- Raspberry Pi GPIO famale header - 2x20 +- No GPS + +### Flashing + +To flash ESP32-S3 devices like the Vission Master E290, you typically need to place them in Espressif's firmware download mode. Use the "1200bps reset" button in the web flasher to do this. If this method does not work for any reason, you can follow the manual process below. + +:::warning + +Do not proceed unless an antenna is connected to avoid possible damage to the device's radio. + +::: + +The following process will manually place the device into the Espressif Firmware Download mode: + +1. Unplug the device. +2. Press and hold the BOOT button. +3. Plug the device in. +4. After 2-3 seconds, release the BOOT button. + +With the device now in the Espressif Firmware Download mode, you can proceed with flashing using one of the supported flashing methods. It's generally recommended to use the [Web Flasher](https://flasher.meshtastic.org/). You can select "Heltec Vision Master E290" from the device drop-down. + +### Pin Map + +![HT-VME290_PIN_MAP](/img/hardware/heltec/HT-VME290_PIN_MAP.webp) + +Image Source: [Heltec](https://resource.heltec.cn/download/HT-VME290/HT-VME290%20Pin%20map.png) + +### Resources + +There is an additional interface on the board for 2.4GHz wireless signals. When connecting an external antenna, the resistor needs to be rotated 90 degrees to the left. For more details, please check the [FAQ on Heltec's official website](https://heltec.org/project/vision-master-e290/). + +- Firmware file: `firmware-vision-master-e290-X.X.X.xxxxxxx.bin` +- Purchase Links: + - [Heltec](https://heltec.org/project/vision-master-e290/) + - [AliExpress](https://www.aliexpress.com/item/1005007234361986.html) + + + + +## Vision Master T190 + +- **MCU:** + - ESP32-S3R8 (WiFi & Bluetooth) +- **LoRa Transceiver:** + - HT-RA62(Semtech SX1262) +- **Frequency Options:** + - 433 MHz + - 470 - 510 MHz + - 863 - 870 MHz + - 902 - 928 MHz +- **Connectors:** + - USB-C + - 2x1.25 lithium battery interface + - SH1.0-4P sensor interface + - Antenna: + - U.FL/IPEX antenna connector for LoRa + - Integrated 2.4 GHz PCB antenna, U.FL/IPEX antenna connector for 2.4 GHz. + +### Features + +- Onboard 1.90-inch TFT-LCD color screen +- Boot, Reset, and USER switches +- No GPS + +### Flashing + +To flash ESP32-S3 devices like the Vission Master T190, you typically need to place them in Espressif's firmware download mode. Use the "1200bps reset" button in the web flasher to do this. If this method does not work for any reason, you can follow the manual process below. + +:::warning + +Do not proceed unless an antenna is connected to avoid possible damage to the device's radio. + +::: + +The following process will manually place the device into the Espressif Firmware Download mode: + +1. Unplug the device. +2. Press and hold the BOOT button. +3. Plug the device in. +4. After 2-3 seconds, release the BOOT button. + +With the device now in the Espressif Firmware Download mode, you can proceed with flashing using one of the supported flashing methods. It's generally recommended to use the [Web Flasher](https://flasher.meshtastic.org/). You can select "Heltec Vision Master T190" from the device drop-down. + +### Pin Map + +![HT-VMT190_PIN_MAP](/img/hardware/heltec/HT-VMT190_PIN_MAP.webp) + +Image Source: [Heltec](https://resource.heltec.cn/download/HT-VMT190/HT-VMT190%20pin%20map.png) + +### Resources + +There is an additional interface on the board for 2.4GHz wireless signals. When connecting an external antenna, the resistor needs to be rotated 90 degrees to the left. For more details, please check the [FAQ on Heltec's official website](https://heltec.org/project/vision-master-t190/). + +- Firmware file: `firmware-vision-master-t190-X.X.X.xxxxxxx.bin` +- Purchase Links: + - [Heltec](https://heltec.org/project/vision-master-t190/) + + + diff --git a/docs/hardware/devices/heltec-sensor/buttons.mdx b/docs/hardware/devices/heltec-sensor/buttons.mdx deleted file mode 100644 index 1395c69d..00000000 --- a/docs/hardware/devices/heltec-sensor/buttons.mdx +++ /dev/null @@ -1,11 +0,0 @@ ---- -id: buttons -title: Heltec Sensor Hardware Buttons -sidebar_label: Buttons -sidebar_position: 1 ---- - -## Capsule Sensor V3 - - - **Long press 3 seconds:** Power on or shutdown. - - **Long press 8/16 seconds:** Long press for 8~16 seconds in the shutdown state until the blue indicator lights up. At this time, the device enters the WirelessBoot mode, which can be used to upload firmware. diff --git a/docs/hardware/devices/heltec-sensor/peripherals.mdx b/docs/hardware/devices/heltec-sensor/peripherals.mdx deleted file mode 100644 index 8fa84b84..00000000 --- a/docs/hardware/devices/heltec-sensor/peripherals.mdx +++ /dev/null @@ -1,51 +0,0 @@ ---- -id: peripherals -title: Heltec Sensor Peripherals -sidebar_label: Peripherals -sidebar_position: 3 ---- - -import Tabs from "@theme/Tabs"; -import TabItem from "@theme/TabItem"; - - - - -## Capsule Sensor V3 - -### Introduction -Strong extensibility is an important feature of Capsule Sensor V3. By replacing the sensor module at the bottom of the device, the device can be flexibly used in various occasions. - -:::warning -Different sensors may require different firmware versions, and the current version is based on the GNSS version. We will update the other firmware as soon as possible. -::: - -### Heltec sensor type -:::info -Each Capsule Sensor V3 comes with a sensor module by default when you buy it, you just need to choose it at the time of purchase. You can also purchase other sensors which is Capsule Sensor V3 from Heltec, and we will continue to expand the variety of these sensors. -::: - - GNSS: [Quectel_L76K_V1](https://resource.heltec.cn/download/Heltec%20Capsule%20Sensor%20V3/Quectel_L76K_V1.1-1.pdf) - - Temperature&Humidity: [GXHTC3_EN_V2.4](https://heltec.org/project/temp-humi-sensor/) - - 3-Axis: [DA217](https://heltec.org/project/3-axis-acceleration-sensor/) - - Atmospheric pressure sensor: [BMP280](https://heltec.org/project/atmospheric-pressure-sensor/) - -### Sensor module replacement step -![Capsule Sensor V3 Button]() - 1. Shutdown of device. - 2. Remove the bottom screw of the device and remove the back cover. - 3. Gently remove the old module. - 4. Plug in the new sensors. - 5. Close the cap and return the screw. If the firmware is not compatible, download a new one. -:::warning -Be careful not to screw too hard, otherwise it will damage the plastic structure. Also note the direction of the charging interface. -::: - - - - diff --git a/docs/hardware/devices/index.mdx b/docs/hardware/devices/index.mdx index 83bcbbee..2a6628b7 100644 --- a/docs/hardware/devices/index.mdx +++ b/docs/hardware/devices/index.mdx @@ -14,10 +14,11 @@ Meshtastic firmware can be installed on a wide range of development boards. The While all the boards listed on this page will run Meshtastic and mesh with each other, some current community favorites are: -- RAK Meshtastic Start Kit -- Station G1 -- LILYGO LoRa T3-S3 -- HELTEC LoRa V3 +- RAK Meshtastic Start Kit: [RAK19007](/docs/hardware/devices/rak-wireless/wisblock/base-board/?rakbase=RAK19007)+[RAK4631](/docs/hardware/devices/rak-wireless/wisblock/core-module/?rakcore=RAK4631) +- [HELTEC LoRa V3](/docs/hardware/devices/heltec-automation/lora32/?heltec=v23) +- [Nano G2 Ultra](/docs/hardware/devices/b-and-q-consulting/nano/?nano-series=g2) +- [Station G2](/docs/hardware/devices/b-and-q-consulting/station-series/?station-series=g2) +- [LILYGO LoRa T3-S3](/docs/hardware/devices/lilygo/lora/?t-lora=S3-v1) Please do your research and choose the board that meets your needs (or maybe already have in a bin somewhere). @@ -26,134 +27,186 @@ Please do your research and choose the board that meets your needs (or maybe alr - The Semtech SX1262 transceiver is newer than the SX1276 and provides increased receive and transmit performance. - nRF52-based devices use a fraction of the power compared to ESP32-based devices and are therefore generally preferred for solar and handset applications. - ESP32-based devices require more power to operate but are typically lower-cost alternatives that do perform well when using house power, or for handsets that only require a day or two of runtime, and for applications that require WiFi connectivity. - ::: -### [RAK Wisblock](./rak/) +::: + +## RAK® + +### [Wisblock](./rak-wireless/wisblock/) Modular hardware system with Base, Core and Peripheral modules including the low-power and solar ready nRF52840-based Meshtastic Starter Kit (19007 & 4631). -[**WisBlock Core Modules**](./rak/core-module/)
+[**WisBlock Core Modules**](./rak-wireless/wisblock/core-module/)
| Name | MCU | Radio | WiFi | BT | GPS | |:-----------------------------------------------|:---------|:-------|:------------:|:---:|:------:| -| [RAK4631](./rak/core-module?rakcore=RAK4631) | nRF52840 | SX1262 | NO | 5.0 | add-on | -| [RAK11200](./rak/core-module?rakcore=RAK11200) | ESP32 | add-on | 2.4GHz b/g/n | 4.2 | add-on | -| [RAK11310](./rak/core-module?rakcore=RAK11310) | RP2040 | SX1262 | NO | NO | add-on | +| [RAK4631](./rak-wireless/wisblock/core-module?rakcore=RAK4631) | nRF52840 | SX1262 | NO | 5.0 | add-on | +| [RAK11200](./rak-wireless/wisblock/core-module?rakcore=RAK11200) | ESP32 | add-on | 2.4GHz b/g/n | 4.2 | add-on | +| [RAK11310](./rak-wireless/wisblock/core-module?rakcore=RAK11310) | RP2040 | SX1262 | NO | NO | add-on | -[**Base Boards**](./rak/base-board/)
-[RAK5005-O](./rak/base-board?rakbase=RAK5005-O)
-[RAK19007](./rak/base-board?rakbase=RAK19007)
-[RAK19003](./rak/base-board?rakbase=RAK19003)
-[RAK19001](./rak/base-board?rakbase=RAK19001)
+[**Base Boards**](./rak-wireless/wisblock/base-board/)
+[RAK5005-O](./rak-wireless/wisblock/base-board?rakbase=RAK5005-O)
+[RAK19007](./rak-wireless/wisblock/base-board?rakbase=RAK19007)
+[RAK19003](./rak-wireless/wisblock/base-board?rakbase=RAK19003)
+[RAK19001](./rak-wireless/wisblock/base-board?rakbase=RAK19001)
-[**WisBlock Displays**](./rak/screens/)
-[RAK1921](./rak/screens?rakscreens=OLED)
-[RAK1400](./rak/screens?rakscreens=E-Ink)
+[**WisBlock Displays**](./rak-wireless/wisblock/screens/)
+[RAK1921](./rak-wireless/wisblock/screens?rakscreens=OLED)
+[RAK1400](./rak-wireless/wisblock/screens?rakscreens=E-Ink)
-[**WisBlock Peripherals**](./rak/peripherals/)
-[RAK1910](./rak/peripherals?rakmodules=GPS) GPS
-[RAK12500](./rak/peripherals?rakmodules=GPS) GPS
-[RAK18001](./rak/peripherals?rakmodules=Buzzer) Buzzer
-[RAK13002](./rak/peripherals?rakmodules=IO) IO
+[**WisBlock Peripherals**](./rak-wireless/wisblock/peripherals/)
+[RAK1910](./rak-wireless/wisblock/peripherals?rakmodules=GPS) GPS
+[RAK12500](./rak-wireless/wisblock/peripherals?rakmodules=GPS) GPS
+[RAK18001](./rak-wireless/wisblock/peripherals?rakmodules=Buzzer) Buzzer
+[RAK13002](./rak-wireless/wisblock/peripherals?rakmodules=IO) IO
RAK14001 RGB LED
-[RAK12002](./rak/peripherals?rakmodules=RTC) RTC
-[RAK1901](./rak/peripherals?rakmodules=Sensors&sensors=RAK1901) Temperature and Humidity Sensor
-[RAK1902](./rak/peripherals?rakmodules=Sensors&sensors=RAK1902) Barometric Pressure Sensor
-[RAK1906](./rak/peripherals?rakmodules=Sensors&sensors=RAK1906) Environment Sensor
+[RAK12002](./rak-wireless/wisblock/peripherals?rakmodules=RTC) RTC
+[RAK1901](./rak-wireless/wisblock/peripherals?rakmodules=Sensors&sensors=RAK1901) Temperature and Humidity Sensor
+[RAK1902](./rak-wireless/wisblock/peripherals?rakmodules=Sensors&sensors=RAK1902) Barometric Pressure Sensor
+[RAK1906](./rak-wireless/wisblock/peripherals?rakmodules=Sensors&sensors=RAK1906) Environment Sensor
RAK12013 Radar Sensor
RAK13800 Ethernet Module
-### [LILYGO® T-Beam](./tbeam/) +## LILYGO® + +### [T-Beam](./lilygo/tbeam/) Boards complete with GPS, 18650 battery holder, and optional screen. -| Name | MCU | Radio | WiFi | BT | GPS | -| :--------------------------------------- | :------- | :---------------- | :----------: | :-: | :-: | -| [T-Beam v0.7](./tbeam/?t-beam=0.7) | ESP32 | SX1276 | 2.4GHz b/g/n | 4.2 | YES | -| [T-Beam v1.1](./tbeam/?t-beam=1.1) | ESP32 | SX1276 | 2.4GHz b/g/n | 4.2 | YES | -| [T-Beam with M8N](./tbeam/?t-beam=m8n) | ESP32 | SX1276
SX1262 | 2.4GHz b/g/n | 4.2 | YES | -| [T-Beam S3-Core](./tbeam/?t-beam=s3core) | ESP32-S3 | SX1262 | 2.4GHz b/g/n | 5.0 | YES | -| [T-BeamSUPREME](./tbeam/?t-beam=supreme) | ESP32-S3 | SX1262 | 2.4GHz b/g/n | 5.0 | YES | +| Name | MCU | Radio | WiFi | BT | GPS | +| :---------------------------------------------- | :------- | :---------------- | :----------: | :-: | :-: | +| [T-Beam v0.7](./lilygo/tbeam/?t-beam=0.7) | ESP32 | SX1276 | 2.4GHz b/g/n | 4.2 | YES | +| [T-Beam v1.1](./lilygo/tbeam/?t-beam=1.1) | ESP32 | SX1276 | 2.4GHz b/g/n | 4.2 | YES | +| [T-Beam with M8N](./lilygo/tbeam/?t-beam=m8n) | ESP32 | SX1276
SX1262 | 2.4GHz b/g/n | 4.2 | YES | +| [T-Beam S3-Core](./lilygo/tbeam/?t-beam=s3core) | ESP32-S3 | SX1262 | 2.4GHz b/g/n | 5.0 | YES | +| [T-BeamSUPREME](./lilygo/tbeam/?t-beam=supreme) | ESP32-S3 | SX1262 | 2.4GHz b/g/n | 5.0 | YES | -### [LILYGO® T-Echo](./techo/) +### [T-Echo](./lilygo/techo/) All-in-one unit with E-Ink screen, GPS and battery in injection-molded case. Features the low-power nRF52840 for long battery life. -| Name | MCU | Radio | WiFi | BT | GPS | -| :----------------- | :------- | :----- | :--: | :-: | :-: | -| [T-Echo](./techo/) | nRF52840 | SX1262 | NO | 5.0 | YES | +| Name | MCU | Radio | WiFi | BT | GPS | +| :------------------------ | :------- | :----- | :--: | :-: | :-: | +| [T-Echo](./lilygo/techo/) | nRF52840 | SX1262 | NO | 5.0 | YES | -### [LILYGO® LoRa](./lora/) +### [LoRa](./lilygo/lora/) Inexpensive basic ESP32-based boards. -| Name | MCU | Radio | WiFi | BT | GPS | -| :----------------------------------------- | :------- | :--------------------------- | :----------: | :-: | :-: | -| [LoRa32 V1](./lora/?t-lora=v1) | ESP32 | SX127x | 2.4GHz b/g/n | 4.2 | NO | -| [LoRa32 V1.3](./lora/?t-lora=v1.3) | ESP32 | SX127x | 2.4GHz b/g/n | 4.2 | NO | -| [LoRa32 V2.0](./lora/?t-lora=v2.0) | ESP32 | SX127x | 2.4GHz b/g/n | 4.2 | NO | -| [LoRa32 V2.1-1.6](./lora/?t-lora=v2.1) | ESP32 | SX127x | 2.4GHz b/g/n | 4.2 | NO | -| [LoRa32 V2.1-1.8](./lora/?t-lora=v2.1-1.8) | ESP32 | SX1280 | 2.4GHz b/g/n | 4.2 | NO | -| [LoRa32 T3-S3 V1.0](./lora/?t-lora=S3-v1) | ESP32-S3 | SX1262
SX1276
SX1280 | 2.4GHz b/g/n | 5.0 | NO | +| Name | MCU | Radio | WiFi | BT | GPS | +| :------------------------------------------------ | :------- | :--------------------------- | :----------: | :-: | :-: | +| [LoRa32 V1](./lilygo/lora/?t-lora=v1) | ESP32 | SX127x | 2.4GHz b/g/n | 4.2 | NO | +| [LoRa32 V1.3](./lilygo/lora/?t-lora=v1.3) | ESP32 | SX127x | 2.4GHz b/g/n | 4.2 | NO | +| [LoRa32 V2.0](./lilygo/lora/?t-lora=v2.0) | ESP32 | SX127x | 2.4GHz b/g/n | 4.2 | NO | +| [LoRa32 V2.1-1.6](./lilygo/lora/?t-lora=v2.1) | ESP32 | SX127x | 2.4GHz b/g/n | 4.2 | NO | +| [LoRa32 V2.1-1.8](./lilygo/lora/?t-lora=v2.1-1.8) | ESP32 | SX1280 | 2.4GHz b/g/n | 4.2 | NO | +| [LoRa32 T3-S3 V1.0](./lilygo/lora/?t-lora=S3-v1) | ESP32-S3 | SX1262
SX1276
SX1280 | 2.4GHz b/g/n | 5.0 | NO | -### [LILYGO® T-Deck](./tdeck/) +### [T-Deck](./lilygo/tdeck/) Standalone device with screen and keyboard -| Name | MCU | Radio | WiFi | BT | GPS | -| :----------------- | :---------- | :----- | :--: | :-: | :-: | -| [T-Deck](./tdeck/) | ESP32-S3FN8 | SX1262 | YES | 5.0 | NO | +| Name | MCU | Radio | WiFi | BT | GPS | +| :------------------------ | :---------- | :----- | :--: | :-: | :-: | +| [T-Deck](./lilygo/tdeck/) | ESP32-S3FN8 | SX1262 | YES | 5.0 | NO | -### [LILYGO® T-Watch S3](./twatch/) +### [T-Watch S3](./lilygo/twatch/) -| Name | MCU | Radio | WiFi | BT | GPS | -| :---------------------- | :------- | :----- | :--: | :-: | :-: | -| [T-Watch S3](./twatch/) | ESP32-S3 | SX1262 | YES | 5.0 | NO | +| Name | MCU | Radio | WiFi | BT | GPS | +| :----------------------------- | :------- | :----- | :--: | :-: | :-: | +| [T-Watch S3](./lilygo/twatch/) | ESP32-S3 | SX1262 | YES | 5.0 | NO | -### [HELTEC® LoRa 32](./heltec/) +## HELTEC® + +### [LoRa 32](./heltec-automation/lora32/) Inexpensive basic ESP32-based boards. -| Name | MCU | Radio | WiFi | BT | GPS | -| :---------------------------------------------------------------- | :---------- | :----- | :----------: | :-: | :-: | -| [LoRa32 V2.1](./heltec/?heltec=v2.1) | ESP32 | SX127x | 2.4GHz b/g/n | 4.2 | NO | -| [LoRa32 V3/3.1](./heltec/?heltec=v23) | ESP32-S3FN8 | SX1262 | 2.4GHz b/g/n | 5.0 | NO | -| [Wireless Stick Lite V3](./heltec/?heltec=Wireless+Stick+Lite+V3) | ESP32-S3FN8 | SX1262 | 2.4GHz b/g/n | 5.0 | NO | -| [Wireless Tracker](./heltec/?heltec=tracker) | ESP32-S3FN8 | SX1262 | 2.4GHz b/g/n | 5.0 | YES | -| [Wireless Paper](./heltec/?heltec=paper) | ESP32-S3FN8 | SX1262 | 2.4GHz b/g/n | 5.0 | NO | +| Name | MCU | Radio | WiFi | BT | GPS | +| :---------------------------------------------------------------------------------- | :---------- | :----- | :----------: | :-: | :-: | +| [LoRa32 V2.1](./heltec-automation/lora32/?heltec=v2.1) | ESP32 | SX127x | 2.4GHz b/g/n | 4.2 | NO | +| [LoRa32 V3/3.1](./heltec-automation/lora32/?heltec=v23) | ESP32-S3FN8 | SX1262 | 2.4GHz b/g/n | 5.0 | NO | +| [Wireless Stick Lite V3](./heltec-automation/lora32/?heltec=Wireless+Stick+Lite+V3) | ESP32-S3FN8 | SX1262 | 2.4GHz b/g/n | 5.0 | NO | +| [Wireless Tracker v1.0](./heltec-automation/lora32/?heltec=tracker-v1.0) | ESP32-S3FN8 | SX1262 | 2.4GHz b/g/n | 5.0 | YES | +| [Wireless Tracker v1.1](./heltec-automation/lora32/?heltec=tracker-v1.1) | ESP32-S3FN8 | SX1262 | 2.4GHz b/g/n | 5.0 | YES | +| [Wireless Paper](./heltec-automation/lora32/?heltec=paper) | ESP32-S3FN8 | SX1262 | 2.4GHz b/g/n | 5.0 | NO | -### [Nano Series](./nano/) +### [Plug & Play Sensors](./heltec-automation/sensor/) + +| Name | MCU | Radio | WiFi | BT | GPS | +| ----------------------------------------- | ----------- | ------ | ------------ | --- | --- | +| [Capsule V3](./heltec-automation/sensor/) | ESP32-S3FN8 | SX1262 | 2.4GHz b/g/n | 5.0 | YES | + +### [Vision Master](./heltec-automation/vision-master/) + +Versatile ESP32-S3-based boards E-Ink development boards. + +| Name | MCU | Radio | WiFi | BT | GPS | +| :--------------------------------------------------------------------------------- | :--------- | :----- | :----------: | :-: | :-: | +| [Vision Master E213](./heltec-automation/vision-master/?heltec=vision_master_e213) | ESP32-S3R8 | SX1262 | 2.4GHz b/g/n | 5.0 | NO | +| [Vision Master E290](./heltec-automation/vision-master/?heltec=vision_master_e290) | ESP32-S3R8 | SX1262 | 2.4GHz b/g/n | 5.0 | NO | +| [Vision Master T190](./heltec-automation/vision-master/?heltec=vision_master_t190) | ESP32-S3R8 | SX1262 | 2.4GHz b/g/n | 5.0 | NO | + +## [B&Q Consulting](./b-and-q-consulting/) + +### [Nano Series](./b-and-q-consulting/nano/) Portable and durable devices designed for Meshtastic. -| Name | MCU | Radio | WiFi | BT | GPS | -| :------------------------------------------- | :---------- | :----- | :----------: | :-: | :-: | -| [Nano G2 Ultra](./nano/?nano-series=g2) | NRF52840 | SX1262 | 2.4GHz b/g/n | 5.0 | YES | -| [Nano G1 Explorer](./nano/?nano-series=g1-e) | ESP32 WROOM | SX1262 | 2.4GHz b/g/n | 4.2 | YES | -| [Nano G1](./nano/?nano-series=g1) | ESP32 WROOM | SX1276 | 2.4GHz b/g/n | 4.2 | YES | +| Name | MCU | Radio | WiFi | BT | GPS | +| :-------------------------------------------------------------- | :---------- | :----- | :----------: | :-: | :-: | +| [Nano G2 Ultra](./b-and-q-consulting/nano/?nano-series=g2) | NRF52840 | SX1262 | 2.4GHz b/g/n | 5.0 | YES | +| [Nano G1 Explorer](./b-and-q-consulting/nano/?nano-series=g1-e) | ESP32 WROOM | SX1262 | 2.4GHz b/g/n | 4.2 | YES | +| [Nano G1](./b-and-q-consulting/nano/?nano-series=g1) | ESP32 WROOM | SX1276 | 2.4GHz b/g/n | 4.2 | YES | -### [Station Series](./station-series/) +### [Station Series](./b-and-q-consulting/station-series/) High power LoRa transceiver designed for Meshtastic Licensed HAM operation. -| Name | MCU | Radio | WiFi | BT | GPS | -| :------------------------------ | :--------------- | :----- | :----------: | :-: | :------: | -| [Station G1](./station-series/) | ESP32 WROOM | SX1262 | 2.4GHz b/g/n | 4.2 | OPTIONAL | -| [Station G2](./station-series/) | ESP32-S3 WROOM-1 | SX1262 | 2.4GHz b/g/n | 5.0 | OPTIONAL | +| Name | MCU | Radio | WiFi | BT | GPS | +| :------------------------------------------------- | :--------------- | :----- | :----------: | :-: | :------: | +| [Station G1](./b-and-q-consulting/station-series/) | ESP32 WROOM | SX1262 | 2.4GHz b/g/n | 4.2 | OPTIONAL | +| [Station G2](./b-and-q-consulting/station-series/) | ESP32-S3 WROOM-1 | SX1262 | 2.4GHz b/g/n | 5.0 | OPTIONAL | -### [Raspberry Pi Pico](./raspberry-pi/) +## [Raspberry Pi](./raspberrypi/) + +### [Raspberry Pi Pico](./raspberrypi/pico/) Fast versatile boards using the RP2040. -| Name | MCU | Radio | WiFi | BT | GPS | -| :----------------------------------- | :----- | :----- | :----------: | :-----------: | :-: | -| [Raspberry Pi Pico](./raspberry-pi/) | RP2040 | SX1262 | 2.4GHz b/g/n | not supported | NO | +| Name | MCU | Radio | WiFi | BT | GPS | +| :-------------------------------------- | :----- | :----- | :----------: | :-----------: | :-: | +| [Raspberry Pi Pico](./raspberrypi/pico) | RP2040 | SX1262 | 2.4GHz b/g/n | not supported | NO | -[**Pico Peripherals**](./raspberry-pi/peripherals/)
+[**Pico Peripherals**](./raspberrypi/pico/peripherals/)
SSD1306 OLED Display
SH1106 OLED Display
CardKB Keyboard
-### [CanaryOne](./canary) +### [Raspberry Pi Zero/Zero2/3/4/400/5](./linux-native-hardware/) + +Meshtastic offers support for Raspberry Pi devices through our Linux native platform, meshtasticd. For full information, please see our [Linux Native Hardware](./linux-native-hardware/) documentation. + +## Seeed Studio + +### SenseCap + +The SenseCAP product line offers a comprehensive range of solutions for both hobbyists and industrial users, featuring the T1000-E card tracker, an IP65-rated, ready-to-go Meshtastic device, and the Indicator with a 4-inch touchscreen driven by ESP32-S3 and RP2040 Dual-MCU, coming soon. + +| Name | MCU | Radio | WiFi | BT | GPS | +| ------------------------------------------------------------- | ------------- | ------ | ---- | --- | --- | +| [Card Tracker T1000-E](./seeed-studio/sensecap/card-tracker/) | nRF52840 | LR1110 | NO | 5.1 | YES | +| [SenseCAP Indicator](./seeed-studio/) (coming soon) | ESP32, RP2040 | - | - | - | - | + +### [Seeed Wio-WM1110](./seeed-studio/wm1110) + +nRF52840-based development boards with GPS, and multiple ports to attach sensors. + +| Name | MCU | Radio | WiFi | BT | GPS | +| :------------------------------------------------------------------------ | :------- | :----- | :--: | :-: | :-: | +| [Seeed Wio-WM1110 Dev Kit](./seeed-studio/wm1110?wm1110=wio-sdk-wm1110) | nRF52840 | LR1110 | YES | 5.3 | YES | +| [Seeed Wio Tracker 1110](./seeed-studio/wm1110?wm1110=wio-tracker-wm1110) | nRF52840 | LR1110 | YES | 5.3 | YES | + +## [CanaryOne](./canary) Complete solution with battery, screen, case, and antenna. Ships pre-flashed with latest Meshtastic firmware. @@ -161,7 +214,7 @@ Complete solution with battery, screen, case, and antenna. Ships pre-flashed wit | :-------------------- | :------- | :----- | :--: | :-: | :-: | | [CanaryOne](./canary) | nRF52840 | SX1262 | NO | 5.0 | YES | -### [unPhone](./unPhone) +## [unPhone](./unPhone) All-in-one development device with LoRa, WiFi, BT, touchscreen, accelerometer, gyroscop, vibration motor, LiPo battery and more! @@ -169,12 +222,10 @@ All-in-one development device with LoRa, WiFi, BT, touchscreen, accelerometer, g | :------------------- | :--------------- | :----- | :--: | :-: | :-: | | [unPhone](./unPhone) | ESP32-S3-WROOM-1 | RF950W | YES | 5.0 | NO | -### [Seeed Wio-WM1110](./seeed-wm1110) +## [Chatter](./chatter) -nRF52840-based development boards with GPS, and multiple ports to attach sensors. - -| Name | MCU | Radio | WiFi | BT | GPS | -| :--------------------------------------------------------- | :------- | :----- | :--: | :-: | :-: | -| [Seeed Wio-WM1110 Dev Kit](./seeed-wm1110?wio-sdk-wm1110) | nRF52840 | LR1110 | YES | 5.3 | YES | -| [Seeed Wio Tracker 1110](./seeed-wm1110?wio-tracker-wm1110) | nRF52840 | LR1110 | YES | 5.3 | YES | +DIY kit with ESP32, LoRa chip, and optional GPS. Designed for STEM education. +| Name | MCU | Radio | WiFi | BT | GPS | +| :------------------- | :---- | :----- | :--: | :-: | :-: | +| [Chatter](./chatter) | ESP32 | LLCC68 | YES | 4.2 | No | diff --git a/docs/hardware/devices/lilygo/index.mdx b/docs/hardware/devices/lilygo/index.mdx new file mode 100644 index 00000000..f68d83fd --- /dev/null +++ b/docs/hardware/devices/lilygo/index.mdx @@ -0,0 +1,53 @@ +--- +id: lilygo +title: LILYGO® Devices +sidebar_label: LILYGO® +sidebar_position: 2 +--- + +## [T-Beam](./tbeam/) + +Boards complete with GPS, 18650 battery holder, and optional screen. + +| Name | MCU | Radio | WiFi | BT | GPS | +| :--------------------------------------- | :------- | :---------------- | :----------: | :-: | :-: | +| [T-Beam v0.7](./tbeam/?t-beam=0.7) | ESP32 | SX1276 | 2.4GHz b/g/n | 4.2 | YES | +| [T-Beam v1.1](./tbeam/?t-beam=1.1) | ESP32 | SX1276 | 2.4GHz b/g/n | 4.2 | YES | +| [T-Beam with M8N](./tbeam/?t-beam=m8n) | ESP32 | SX1276
SX1262 | 2.4GHz b/g/n | 4.2 | YES | +| [T-Beam S3-Core](./tbeam/?t-beam=s3core) | ESP32-S3 | SX1262 | 2.4GHz b/g/n | 5.0 | YES | +| [T-BeamSUPREME](./tbeam/?t-beam=supreme) | ESP32-S3 | SX1262 | 2.4GHz b/g/n | 5.0 | YES | + +## [T-Echo](./techo/) + +All-in-one unit with E-Ink screen, GPS and battery in injection-molded case. Features the low-power nRF52840 for long battery life. + +| Name | MCU | Radio | WiFi | BT | GPS | +| :----------------- | :------- | :----- | :--: | :-: | :-: | +| [T-Echo](./techo/) | nRF52840 | SX1262 | NO | 5.0 | YES | + +## [LoRa32](./lora/) + +Inexpensive basic ESP32-based boards. + +| Name | MCU | Radio | WiFi | BT | GPS | +| :----------------------------------------- | :------- | :--------------------------- | :----------: | :-: | :-: | +| [LoRa32 V1](./lora/?t-lora=v1) | ESP32 | SX127x | 2.4GHz b/g/n | 4.2 | NO | +| [LoRa32 V1.3](./lora/?t-lora=v1.3) | ESP32 | SX127x | 2.4GHz b/g/n | 4.2 | NO | +| [LoRa32 V2.0](./lora/?t-lora=v2.0) | ESP32 | SX127x | 2.4GHz b/g/n | 4.2 | NO | +| [LoRa32 V2.1-1.6](./lora/?t-lora=v2.1) | ESP32 | SX127x | 2.4GHz b/g/n | 4.2 | NO | +| [LoRa32 V2.1-1.8](./lora/?t-lora=v2.1-1.8) | ESP32 | SX1280 | 2.4GHz b/g/n | 4.2 | NO | +| [LoRa32 T3-S3 V1.0](./lora/?t-lora=S3-v1) | ESP32-S3 | SX1262
SX1276
SX1280 | 2.4GHz b/g/n | 5.0 | NO | + +## [T-Deck](./tdeck/) + +Standalone device with screen and keyboard + +| Name | MCU | Radio | WiFi | BT | GPS | +| :----------------- | :---------- | :----- | :--: | :-: | :-: | +| [T-Deck](./tdeck/) | ESP32-S3FN8 | SX1262 | YES | 5.0 | NO | + +## [T-Watch S3](./twatch/) + +| Name | MCU | Radio | WiFi | BT | GPS | +| :---------------------- | :------- | :----- | :--: | :-: | :-: | +| [T-Watch S3](./twatch/) | ESP32-S3 | SX1262 | YES | 5.0 | NO | diff --git a/docs/hardware/devices/lora/buttons.mdx b/docs/hardware/devices/lilygo/lora/buttons.mdx similarity index 100% rename from docs/hardware/devices/lora/buttons.mdx rename to docs/hardware/devices/lilygo/lora/buttons.mdx diff --git a/docs/hardware/devices/lora/gpio.mdx b/docs/hardware/devices/lilygo/lora/gpio.mdx similarity index 100% rename from docs/hardware/devices/lora/gpio.mdx rename to docs/hardware/devices/lilygo/lora/gpio.mdx diff --git a/docs/hardware/devices/lora/index.mdx b/docs/hardware/devices/lilygo/lora/index.mdx similarity index 99% rename from docs/hardware/devices/lora/index.mdx rename to docs/hardware/devices/lilygo/lora/index.mdx index c97bdf30..99f43482 100644 --- a/docs/hardware/devices/lora/index.mdx +++ b/docs/hardware/devices/lilygo/lora/index.mdx @@ -1,8 +1,8 @@ --- id: lora title: LILYGO® TTGO Lora Devices -sidebar_label: LILYGO® Lora -sidebar_position: 4 +sidebar_label: LoRa32 +sidebar_position: 1 --- import Tabs from "@theme/Tabs"; @@ -25,6 +25,7 @@ values={[ ## Lora v1 + :::warning Not recommended with a battery! These boards contain the wrong component in the LiPo battery charging circuit allowing the battery to be overcharged. ::: diff --git a/docs/hardware/devices/tbeam/buttons.mdx b/docs/hardware/devices/lilygo/tbeam/buttons.mdx similarity index 100% rename from docs/hardware/devices/tbeam/buttons.mdx rename to docs/hardware/devices/lilygo/tbeam/buttons.mdx diff --git a/docs/hardware/devices/tbeam/index.mdx b/docs/hardware/devices/lilygo/tbeam/index.mdx similarity index 98% rename from docs/hardware/devices/tbeam/index.mdx rename to docs/hardware/devices/lilygo/tbeam/index.mdx index c1ff5904..8edd0d34 100644 --- a/docs/hardware/devices/tbeam/index.mdx +++ b/docs/hardware/devices/lilygo/tbeam/index.mdx @@ -1,7 +1,7 @@ --- id: tbeam title: LILYGO® TTGO T-Beam Devices -sidebar_label: LILYGO® T-Beam +sidebar_label: T-Beam sidebar_position: 2 --- @@ -134,10 +134,10 @@ This is an earlier version of the T-Beam board. Due to changes in the design thi ### Resources - Firmware file: `firmware-tbeam-X.X.X.xxxxxxx.bin` -- Purchase Links: +- Purchase Links: - US - [Rokland](https://store.rokland.com/products/lilygo-ttgo-t-beam-v1-1-ipex-esp32-lora-915mhz-wifi-wireless-bluetooth-module-gps-neo-m8n-ipex-18650-battery-holder-q107?ref=8Bb2mUO5i-jKwt) - - International + - International - [AliExpress](https://www.aliexpress.com/item/32889583204.html) ![TTGO T-Beam M8N](/img/hardware/t-beam-m8n.webp) @@ -210,7 +210,7 @@ This is an earlier version of the T-Beam board. Due to changes in the design thi ### Resources - Firmware file: `firmware-tbeam-s3-core-X.X.X.xxxxxxx.bin` -- Purchase Links: +- Purchase Links: - International - [AliExpress](https://www.aliexpress.com/item/1005005418286231.html) diff --git a/docs/hardware/devices/tbeam/screens.mdx b/docs/hardware/devices/lilygo/tbeam/screens.mdx similarity index 99% rename from docs/hardware/devices/tbeam/screens.mdx rename to docs/hardware/devices/lilygo/tbeam/screens.mdx index 56fbdece..f44e845e 100644 --- a/docs/hardware/devices/tbeam/screens.mdx +++ b/docs/hardware/devices/lilygo/tbeam/screens.mdx @@ -19,6 +19,7 @@ To attach the screen: ![Connecting the OLED screen to a T-Beam](/img/hardware/t-beam-screen.webp) ### Resources + - Purchase Links: - US - [Rokland](https://store.rokland.com/products/lilygo-ttgo-0-96-inch-oled-white-color-text-display-module-l206-for-t-beam-and-t-sim) diff --git a/docs/hardware/devices/tdeck/index.mdx b/docs/hardware/devices/lilygo/tdeck/index.mdx similarity index 96% rename from docs/hardware/devices/tdeck/index.mdx rename to docs/hardware/devices/lilygo/tdeck/index.mdx index e880c471..73fb6141 100644 --- a/docs/hardware/devices/tdeck/index.mdx +++ b/docs/hardware/devices/lilygo/tdeck/index.mdx @@ -1,8 +1,8 @@ --- id: tdeck title: LILYGO® T-Deck -sidebar_label: LILYGO® T-Deck -sidebar_position: 5 +sidebar_label: T-Deck +sidebar_position: 4 --- The T-Deck is a compact device featuring a 2.8-inch IPS LCD touch screen with a resolution of 320x240 pixels, integrated with a small keyboard, trackball, microphone and speaker running on an ESP32-S3 dual-core processor. @@ -32,7 +32,7 @@ The T-Deck is a compact device featuring a 2.8-inch IPS LCD touch screen with a ## Keyboard Shortcuts | Shortcut | Function | -|-------------------|-----------------------------------------------------| +| ----------------- | --------------------------------------------------- | | `alt` & `b` | Toggle keyboard backlight on/off. | | `alt` & `c` | Toggle modifier function. `Fn` displayed on screen. | | `alt` & `c` + `m` | Disable/Enable notifications. | diff --git a/docs/hardware/devices/techo/buttons.mdx b/docs/hardware/devices/lilygo/techo/buttons.mdx similarity index 77% rename from docs/hardware/devices/techo/buttons.mdx rename to docs/hardware/devices/lilygo/techo/buttons.mdx index af4d4b7a..9267eac0 100644 --- a/docs/hardware/devices/techo/buttons.mdx +++ b/docs/hardware/devices/lilygo/techo/buttons.mdx @@ -8,17 +8,17 @@ sidebar_position: 1 ## Functionality - **Capacitive Touch Button (Top):**
- - **Touch:** + - **Touch:** - Update the display - - *(at screensaver)* Wake the display. + - _(at screensaver)_ Wake the display. - **Reset Button (Button 1):** - **Single press:** Power-on / reboot. - **Double press:** Enter bootloader mode, for firmware update. - **Program Button (Button 2):** - - **Single press:** + - **Single press:** - Display next page of information. - - *(at screensaver)* Wake the display. - - *(when off)* Enter bootloader mode, for firmware update. + - _(at screensaver)_ Wake the display. + - _(when off)_ Enter bootloader mode, for firmware update. - **Double press:** Send an "adhoc ping": announce device to network. - ** 3x press:** Enable / disable GPS. - ** 4x press:** Enable / disable display's backlight. diff --git a/docs/hardware/devices/techo/index.mdx b/docs/hardware/devices/lilygo/techo/index.mdx similarity index 97% rename from docs/hardware/devices/techo/index.mdx rename to docs/hardware/devices/lilygo/techo/index.mdx index 381c0614..b48eb213 100644 --- a/docs/hardware/devices/techo/index.mdx +++ b/docs/hardware/devices/lilygo/techo/index.mdx @@ -1,7 +1,7 @@ --- id: techo title: LILYGO® TTGO T-Echo devices -sidebar_label: LILYGO® T-Echo +sidebar_label: T-Echo sidebar_position: 3 --- diff --git a/docs/hardware/devices/twatch/index.mdx b/docs/hardware/devices/lilygo/twatch/index.mdx similarity index 97% rename from docs/hardware/devices/twatch/index.mdx rename to docs/hardware/devices/lilygo/twatch/index.mdx index 35fbe335..64fcd60e 100644 --- a/docs/hardware/devices/twatch/index.mdx +++ b/docs/hardware/devices/lilygo/twatch/index.mdx @@ -1,8 +1,8 @@ --- id: twatch title: LILYGO® T-Watch -sidebar_label: LILYGO® T-Watch -sidebar_position: 6 +sidebar_label: T-Watch +sidebar_position: 5 --- The T-Watch S3 is a compact wearable device featuring a 1.54-inch IPS LCD touch screen with a resolution of 240x240 pixels. It includes haptic feedback, an integrated microphone, speaker, real-time clock, and a three-axis accelerometer. diff --git a/docs/hardware/devices/linux-native-hardware/linux-native-hardware.mdx b/docs/hardware/devices/linux-native-hardware/linux-native-hardware.mdx index 5ecfa3c9..65afb600 100644 --- a/docs/hardware/devices/linux-native-hardware/linux-native-hardware.mdx +++ b/docs/hardware/devices/linux-native-hardware/linux-native-hardware.mdx @@ -115,6 +115,8 @@ Webserver: Port: 443 # Port for Webserver & Webservices RootPath: /usr/share/doc/meshtasticd/web # Root Dir of WebServer ``` +### Bluetooth Support +Bluetooth is currently unsupported and not functional on Linux Native devices. This may change in the future. ### GPS Support diff --git a/docs/hardware/devices/rak-wireless/index.mdx b/docs/hardware/devices/rak-wireless/index.mdx new file mode 100644 index 00000000..675f3a00 --- /dev/null +++ b/docs/hardware/devices/rak-wireless/index.mdx @@ -0,0 +1,44 @@ +--- +id: rak-wireless +title: RAK Wireless Devices +sidebar_label: RAK® +sidebar_position: 1 +--- + +## [RAK Wisblock](./wisblock/) + +Modular hardware system with Base, Core and Peripheral modules including the low-power and solar ready nRF52840-based Meshtastic Starter Kit (19007 & 4631). + +### [**WisBlock Core Modules**](./wisblock/core-module/) + +| Name | MCU | Radio | WiFi | BT | GPS | +| :-------------------------------------------------- | :------- | :----- | :----------: | :-: | :----: | +| [RAK4631](./wisblock/core-module?rakcore=RAK4631) | nRF52840 | SX1262 | NO | 5.0 | add-on | +| [RAK11200](./wisblock/core-module?rakcore=RAK11200) | ESP32 | add-on | 2.4GHz b/g/n | 4.2 | add-on | +| [RAK11310](./wisblock/core-module?rakcore=RAK11310) | RP2040 | SX1262 | NO | NO | add-on | + +### [**Base Boards**](./wisblock/base-board/) + +[RAK5005-O](./wisblock/base-board?rakbase=RAK5005-O)
+[RAK19007](./wisblock/base-board?rakbase=RAK19007)
+[RAK19003](./wisblock/base-board?rakbase=RAK19003)
+[RAK19001](./wisblock/base-board?rakbase=RAK19001)
+ +### [**WisBlock Displays**](./wisblock/screens/) + +[RAK1921](./wisblock/screens?rakscreens=OLED)
+[RAK1400](./wisblock/screens?rakscreens=E-Ink)
+ +### [**WisBlock Peripherals**](./wisblock/peripherals/) + +[RAK1910](./wisblock/peripherals?rakmodules=GPS) GPS
+[RAK12500](./wisblock/peripherals?rakmodules=GPS) GPS
+[RAK18001](./wisblock/peripherals?rakmodules=Buzzer) Buzzer
+[RAK13002](./wisblock/peripherals?rakmodules=IO) IO
+RAK14001 RGB LED
+[RAK12002](./wisblock/peripherals?rakmodules=RTC) RTC
+[RAK1901](./wisblock/peripherals?rakmodules=Sensors&sensors=RAK1901) Temperature and Humidity Sensor
+[RAK1902](./wisblock/peripherals?rakmodules=Sensors&sensors=RAK1902) Barometric Pressure Sensor
+[RAK1906](./wisblock/peripherals?rakmodules=Sensors&sensors=RAK1906) Environment Sensor
+RAK12013 Radar Sensor
+RAK13800 Ethernet Module
diff --git a/docs/hardware/devices/rak/base-boards.mdx b/docs/hardware/devices/rak-wireless/wisblock/base-boards.mdx similarity index 84% rename from docs/hardware/devices/rak/base-boards.mdx rename to docs/hardware/devices/rak-wireless/wisblock/base-boards.mdx index 39fe122e..2b289321 100644 --- a/docs/hardware/devices/rak/base-boards.mdx +++ b/docs/hardware/devices/rak-wireless/wisblock/base-boards.mdx @@ -8,7 +8,7 @@ sidebar_position: 1 import Tabs from "@theme/Tabs"; import TabItem from "@theme/TabItem"; -Operation requires both a base board and a [core module](/docs/hardware/devices/rak/core-module). +Operation requires both a base board and a [core module](../core-module/). 2C, UART, GPIOs and analog input accessible with solder contacts - - Micro USB port for debugging and power - - **Screen Support** - - OLED screen support (OLED screen sold separately) +- **Slots** + - (x1) Core Module slot + - (x1) WisBlock IO Module slot + - (x4) WisBlock Sensor Module slots +- **Buttons** + - (x1) Reset Button + - It may be possible to add a user button using the [13002 IO module](https://store.rakwireless.com/collections/wisblock-interface/products/adapter-module-rak13002). +- **Connectors** +- Connector for 3.7v LiPo battery (with charge controller) +- Connector for 5v solar panel (max 5.5v) +- I2C, UART, GPIOs and analog input accessible with solder contacts +- Micro USB port for debugging and power +- **Screen Support** +- OLED screen support (OLED screen sold separately) :::note The RAK5005 (without the -O) is not compatible. @@ -56,9 +56,9 @@ Further information on the RAK5005-O can be found on the [RAK Documentation Cent style={{ zoom: "50%" }} /> -
+
- + ## RAK19007 @@ -81,16 +81,17 @@ Further information on the RAK5005-O can be found on the [RAK Documentation Cent Further information on the RAK19007 can be found on the [RAK Documentation Center](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK19007/Overview/#product-description). ### Resources + - Purchase Links: - - US + - US - [Rokland](https://store.rokland.com/products/rak-wireless-wisblock-base-board-2nd-gen-rak19007-ver-b-pid-110082) - International - [RAK Wireless](https://store.rakwireless.com/products/wisblock-base?variant=42441632284870) - [RAK Wireless Starter Kit](https://store.rakwireless.com/products/wisblock-meshtastic-starter-kit) - + - + ## RAK19003 @@ -112,8 +113,9 @@ Further information on the RAK19007 can be found on the [RAK Documentation Cente Further information on the RAK19003 can be found on the [RAK Documentation Center](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK19003/Overview/#product-description) ### Resources + - Purchase Links: - - US + - US - [Rokland](https://store.rokland.com/products/rak-wireless-wisblock-mini-base-board-rak19003-ver-b-pid-306024) - International - [RAK Wireless](https://store.rakwireless.com/products/wisblock-base?variant=42441632252102) @@ -151,12 +153,12 @@ Further information on the RAK19003 can be found on the [RAK Documentation Cente Further information on the RAK19001 can be found on the [RAK Documentation Center](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK19001/Overview/#product-description). ### Resources + - Purchase Links: - - US + - US - [Rokland](https://store.rokland.com/products/rak-wireless-wisblock-dual-io-base-board-rak19001-pid-110081) - International - [RAK Wireless](https://store.rakwireless.com/products/wisblock-base?variant=42441631924422) - - - + + diff --git a/docs/hardware/devices/rak/buttons.mdx b/docs/hardware/devices/rak-wireless/wisblock/buttons.mdx similarity index 100% rename from docs/hardware/devices/rak/buttons.mdx rename to docs/hardware/devices/rak-wireless/wisblock/buttons.mdx diff --git a/docs/hardware/devices/rak/core-modules.mdx b/docs/hardware/devices/rak-wireless/wisblock/core-modules.mdx similarity index 93% rename from docs/hardware/devices/rak/core-modules.mdx rename to docs/hardware/devices/rak-wireless/wisblock/core-modules.mdx index 07b60759..d7092927 100644 --- a/docs/hardware/devices/rak/core-modules.mdx +++ b/docs/hardware/devices/rak-wireless/wisblock/core-modules.mdx @@ -62,7 +62,6 @@ Please be aware of the difference between the RAK4631 (Arduino bootloader) and t style={{ zoom: "50%" }} /> - ### GPIO :::caution Note @@ -93,7 +92,7 @@ meshtastic --set external_notification.output 10 This will use IO6 on a RAK4631 - + ## RAK11200 - ESP32 @@ -140,23 +139,23 @@ The RAK11200 does not contain a LoRa transceiver, and thus needs to be added sep ::: - - **MCU:** - - Raspberry Pi RP2040 - - Dual M0+ Core - - 133MHz CPU Clock - - **LoRa Transceiver:** - - SX1262 - - **Frequency Options:** - - 433 MHz - - 470 MHz - - 864 MHz - - 865 MHz - - 868 MHz - - 915 MHz - - 920 MHz - - 923 MHz - - **Connectors:** - - U.FL/IPEX antenna connector for LoRa +- **MCU:** + - Raspberry Pi RP2040 + - Dual M0+ Core + - 133MHz CPU Clock +- **LoRa Transceiver:** + - SX1262 +- **Frequency Options:** + - 433 MHz + - 470 MHz + - 864 MHz + - 865 MHz + - 868 MHz + - 915 MHz + - 920 MHz + - 923 MHz +- **Connectors:** + - U.FL/IPEX antenna connector for LoRa ### Resources @@ -169,5 +168,5 @@ The RAK11200 does not contain a LoRa transceiver, and thus needs to be added sep - [RAK Wireless Store](https://store.rakwireless.com/products/rak11310-wisblock-lpwan-module) - [RAK Wireless Aliexpress](https://www.aliexpress.us/item/3256803225175784.html) - + diff --git a/docs/hardware/devices/rak-wireless/wisblock/index.mdx b/docs/hardware/devices/rak-wireless/wisblock/index.mdx new file mode 100644 index 00000000..7d448850 --- /dev/null +++ b/docs/hardware/devices/rak-wireless/wisblock/index.mdx @@ -0,0 +1,32 @@ +--- +id: wisblock +title: RAK WisBlock Devices +sidebar_label: WisBlock +sidebar_position: 1 +--- + +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; + +The RAK WisBlock is a modular hardware system that can be used to build Meshtastic devices. + +RAK Wireless currently sells a [Meshtastic Starter kit](https://store.rakwireless.com/products/wisblock-meshtastic-starter-kit) that has the minimum you need to get started. + +If you wish to purchase parts separately, you will need a [WisBlock Base Board](./base-board) and a [WisBlock Core Module](./core-module). Please ensure you choose the correct operating frequency for your country when purchasing. + +You can optionally purchase peripherals such as a GPS module, Screen, Sensor, or other various modules. + +Please see the RAK documentation for the correct way to connect your hardware to the baseboard to ensure that you do not damage the device. + +## Resources + +- RAK's Wisblock [Documentation Center](https://docs.rakwireless.com/Product-Categories/WisBlock) +- RAK's [GitHub Page](https://github.com/RAKWireless/WisBlock) for the WisBlock +- RAK's [WisBlock IO Pin Mapping Tool](https://docs.rakwireless.com/Knowledge-Hub/Pin-Mapper/). +- This tool helps properly map your WisBlock modules by identifying the compatible pins and their possible conflicts. Be sure to reference the RAK4631 [variant.h](https://github.com/meshtastic/firmware/blob/master/variants/rak4631/variant.h) to cross-reference potential conflicts to Meshtastic's firmware pin definitions. +- Purchase links +- See purchase links under specific base boards, core modules, and peripherals +- China RAK Direct [RAK Wireless Starter Kit w/ Gen2 Base board](https://store.rakwireless.com/products/wisblock-meshtastic-starter-kit) +- US Distributor Rokland [RAK Wireless Starter Kit w/ Gen2 Base board](https://store.rokland.com/products/rak-wireless-wisblock-meshtastic-starter-kit) +- US Distributor Rokland [RAK Wireless Starter Kit w/ Gen1 Base board](https://store.rokland.com/products/rakwireless-meshtastic-starter-kit-alternative-with-rak5005-o-base) +- UK/EU Distributor ConnectedThings [RAK Wireless Starter Kit w/ Gen2 Base board](https://connectedthings.store/gb/meshtastic/rak-wisblock-meshtastic-starter-kit.html) diff --git a/docs/hardware/devices/rak/peripherals.mdx b/docs/hardware/devices/rak-wireless/wisblock/peripherals.mdx similarity index 97% rename from docs/hardware/devices/rak/peripherals.mdx rename to docs/hardware/devices/rak-wireless/wisblock/peripherals.mdx index 291bad94..909ccd37 100644 --- a/docs/hardware/devices/rak/peripherals.mdx +++ b/docs/hardware/devices/rak-wireless/wisblock/peripherals.mdx @@ -24,8 +24,7 @@ values={[ ## User Button -Any tactile momemtary push button is compatible as long as it is wired to the correct pins, here's a sample of a [Push Button](https://a.co/d/bPhhTxm) - +Any tactile momemtary push button is compatible as long as it is wired to the correct pins, here's a sample of a [Push Button](https://a.co/d/bPhhTxm) The button is recommended to be used on the following base board's exposed pins or slots : @@ -33,16 +32,17 @@ The button is recommended to be used on the following base board's exposed pins - RAK19001 on IO5 (Pin 37) ### Wiring -One side of the switch should be on GND and the other on the recommended Pin per your baseboard. The pin must be configured on the node using the app, webclient or CLI. + +One side of the switch should be on GND and the other on the recommended Pin per your baseboard. The pin must be configured on the node using the app, webclient or CLI. ### Resources -For more information on the User Button functionality refer to + +For more information on the User Button functionality refer to + - [RAK WisBlock Hardware Buttons](https://meshtastic.org/docs/hardware/devices/rak/buttons/) - - ## GPS Modules @@ -75,6 +75,7 @@ The RAK1910 is supported on the following base boards & slots: - RAK19001 on slot F ### Resources + - RAK Documentation Center - [RAK12500](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK12500/Overview/#product-description) - [RAK1910](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK1910/Overview/#product-description) @@ -94,12 +95,13 @@ The RAK1910 is supported on the following base boards & slots: The [RAK18001 Buzzer Module](https://store.rakwireless.com/products/wisblock-buzzer-module-rak18001) is currently being tested for integration with the External Notifications plugin. There is currently a known conflict with buzzer if the module is placed in Slot D, although other slots should work. ### Resources + - [RAK Documentation Center RAK18001](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK18001/Overview/#product-description) - Purchase Links: - International - [RAK Wireless](https://store.rakwireless.com/products/wisblock-buzzer-module-rak18001) - + ## IO Module @@ -116,6 +118,7 @@ The [RAK13002 IO Module](https://store.rakwireless.com/collections/wisblock-inte There is development activity in progress to get sensors such as this added to the Meshtastic Core. ### Resources + - [RAK Documentation Center RAK13002](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK13002/Overview) - Purchase Links: - US @@ -123,7 +126,7 @@ There is development activity in progress to get sensors such as this added to t - International - [RAK Wireless](https://store.rakwireless.com/collections/wisblock-interface/products/adapter-module-rak13002) - + ## Environmental Sensors @@ -154,7 +157,8 @@ The [RAK1906 Environment Sensor](https://store.rakwireless.com/products/rak1906- - Air Quality measurement #### Resources -- RAK Documentation Center + +- RAK Documentation Center - [RAK1901](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK1901/Overview/#product-description) - [RAK1902](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK1902/Overview/#product-description) - [RAK1906](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK1906/Overview/#product-description) @@ -168,7 +172,7 @@ The [RAK1906 Environment Sensor](https://store.rakwireless.com/products/rak1906- - [RAK Wireless RAK1902](https://store.rakwireless.com/products/rak1902-kps22hb-barometric-pressure-sensor) - [RAK Wireless RAK1906](https://store.rakwireless.com/products/rak1906-bme680-environment-sensor) - + ## RTC Module @@ -176,6 +180,7 @@ The [RAK1906 Environment Sensor](https://store.rakwireless.com/products/rak1906- The [RAK12002 WisBlock RTC Module](https://store.rakwireless.com/products/rtc-module-rak12002) is a real-time-clock with a supercapacitor backup, allowing a node to maintain the correct time across reboots and for up to seven days without power. It operates on a crystal oscilator and communicates via the i2c interface. The module can be inserted into slots A, B or C (some users have reported issues with slot D) and is plug and play - no settings are required. ### Resources + - [RAK Documentation Center RAK12002](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK12002/Overview/) - Purchase Links: - US @@ -183,5 +188,5 @@ The [RAK12002 WisBlock RTC Module](https://store.rakwireless.com/products/rtc-mo - International - [RAK Wireless](https://store.rakwireless.com/products/rtc-module-rak12002) - + diff --git a/docs/hardware/devices/rak/screens.mdx b/docs/hardware/devices/rak-wireless/wisblock/screens.mdx similarity index 78% rename from docs/hardware/devices/rak/screens.mdx rename to docs/hardware/devices/rak-wireless/wisblock/screens.mdx index a996da28..a355f7c6 100644 --- a/docs/hardware/devices/rak/screens.mdx +++ b/docs/hardware/devices/rak-wireless/wisblock/screens.mdx @@ -33,12 +33,13 @@ Similar modules are widely available from other suppliers, but do check the boar If pin ordering on the OLED board are swapped, there are some tricks to allow either reconfiguring the pins of the OLED via soldered jumpers, or by carefully soldering wire for those pins that are out-of-sequence. The final option is to use longer wires between the board and display, which permits re-ordering the wires as required. ### Resources + - [RAK Documentation Center](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK1921/Overview/#product-description) - Purchase Links: - - US - - [Rokland](https://store.rokland.com/products/rak-wireless-wisblock-oled-display-rak1921-pid-110004) - - International - - [RAK Wireless](https://store.rakwireless.com/products/rak1921-oled-display-panel) +- US + - [Rokland](https://store.rokland.com/products/rak-wireless-wisblock-oled-display-rak1921-pid-110004) +- International + - [RAK Wireless](https://store.rakwireless.com/products/rak1921-oled-display-panel) [0.96 inch OLED display](/img/hardware/screen.webp) @@ -54,23 +55,23 @@ The [RAK1400 EPD module](https://store.rakwireless.com/products/wisblock-epd-mod - Resolution 212 x 104 pixels - Occupies the IO Port of a Wisblock Base -Please note only the white-black display is supported at this time, the white-black-red display may work, but is not supported. - +Please note only the white-black display is supported at this time, the white-black-red display may work, but is not supported. ### Resources + - Firmware for 5005 with RAK14000 e-paper: [`firmware-rak4631_eink-X.X.X.xxxxxxx.uf2`](/downloads) - [RAK Documentation Center](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK14000/Overview/#product-description) - Purchase Links: - - US - - [Rokland](https://store.rokland.com/products/rak-wireless-wisblock-epd-module-rak14000-pid-110024) - - International - - [RAK Wireless](https://store.rakwireless.com/products/wisblock-epd-module-rak14000) +- US +- [Rokland](https://store.rokland.com/products/rak-wireless-wisblock-epd-module-rak14000-pid-110024) +- International +- [RAK Wireless](https://store.rakwireless.com/products/wisblock-epd-module-rak14000) - RAK4631 5005 14000 +RAK4631 5005 14000 diff --git a/docs/hardware/devices/rak/index.mdx b/docs/hardware/devices/rak/index.mdx deleted file mode 100644 index 479a8e23..00000000 --- a/docs/hardware/devices/rak/index.mdx +++ /dev/null @@ -1,32 +0,0 @@ ---- -id: wisBlock -title: RAK WisBlock Devices -sidebar_label: RAK WisBlock -sidebar_position: 1 ---- - -import Tabs from "@theme/Tabs"; -import TabItem from "@theme/TabItem"; - -The RAK WisBlock is a modular hardware system that can be used to build Meshtastic devices. - -RAK Wireless currently sells a [Meshtastic Starter kit](https://store.rakwireless.com/products/wisblock-meshtastic-starter-kit) that has the minimum you need to get started. - -If you wish to purchase parts separately, you will need a [WisBlock Base Board](/docs/hardware/devices/rak/base-board) and a [WisBlock Core Module](/docs/hardware/devices/rak/core-module). Please ensure you choose the correct operating frequency for your country when purchasing. - -You can optionally purchase peripherals such as a GPS module, Screen, Sensor, or other various modules. - -Please see the RAK documentation for the correct way to connect your hardware to the baseboard to ensure that you do not damage the device. - -## Resources - -- RAK's Wisblock [Documentation Center](https://docs.rakwireless.com/Product-Categories/WisBlock) -- RAK's [GitHub Page](https://github.com/RAKWireless/WisBlock) for the WisBlock -- RAK's [WisBlock IO Pin Mapping Tool](https://docs.rakwireless.com/Knowledge-Hub/Pin-Mapper/). - - This tool helps properly map your WisBlock modules by identifying the compatible pins and their possible conflicts. Be sure to reference the RAK4631 [variant.h](https://github.com/meshtastic/firmware/blob/master/variants/rak4631/variant.h) to cross-reference potential conflicts to Meshtastic's firmware pin definitions. -- Purchase links - - See purchase links under specific base boards, core modules, and peripherals - - China RAK Direct [RAK Wireless Starter Kit w/ Gen2 Base board](https://store.rakwireless.com/products/wisblock-meshtastic-starter-kit) - - US Distributor Rokland [RAK Wireless Starter Kit w/ Gen2 Base board](https://store.rokland.com/products/rak-wireless-wisblock-meshtastic-starter-kit) - - US Distributor Rokland [RAK Wireless Starter Kit w/ Gen1 Base board](https://store.rokland.com/products/rakwireless-meshtastic-starter-kit-alternative-with-rak5005-o-base) - - UK/EU Distributor ConnectedThings [RAK Wireless Starter Kit w/ Gen2 Base board](https://connectedthings.store/gb/meshtastic/rak-wisblock-meshtastic-starter-kit.html) diff --git a/docs/hardware/devices/raspberrypi/index.mdx b/docs/hardware/devices/raspberrypi/index.mdx new file mode 100644 index 00000000..5460f241 --- /dev/null +++ b/docs/hardware/devices/raspberrypi/index.mdx @@ -0,0 +1,18 @@ +--- +id: raspberry-pi +title: Raspberry Pi +sidebar_label: Raspberry Pi +sidebar_position: 5 +--- + +### [Raspberry Pi Pico](./pico/) + +Fast versatile boards using the RP2040. + +| Name | MCU | Radio | WiFi | BT | GPS | +| :--------------------------- | :----- | :----- | :----------: | :-----------: | :-: | +| [Raspberry Pi Pico](./pico/) | RP2040 | SX1262 | 2.4GHz b/g/n | not supported | NO | + +### [Raspberry Pi Zero/Zero2/3/4/400/5](/docs/hardware/devices/linux-native-hardware/) + +Meshtastic offers support for Raspberry Pi devices through our Linux native platform, meshtasticd. For full information, please see our [Linux Native Hardware](/docs/hardware/devices/linux-native-hardware/) documentation. diff --git a/docs/hardware/devices/raspberry-pi/index.mdx b/docs/hardware/devices/raspberrypi/pico/index.mdx similarity index 96% rename from docs/hardware/devices/raspberry-pi/index.mdx rename to docs/hardware/devices/raspberrypi/pico/index.mdx index 14d74174..173dbdb6 100644 --- a/docs/hardware/devices/raspberry-pi/index.mdx +++ b/docs/hardware/devices/raspberrypi/pico/index.mdx @@ -1,8 +1,8 @@ --- -id: raspberry-pi +id: raspberry-pi-pico title: Raspberry Pi Pico sidebar_label: Raspberry Pi Pico -sidebar_position: 10 +sidebar_position: 1 --- import Tabs from "@theme/Tabs"; @@ -42,7 +42,7 @@ Please be aware that the Raspberry Pi Pico must be used in combination with a [W :::note -LoRa transmissions may interfere with the USB connection. It is recommended to place the antenna as far away from the USB port as possible. +LoRa transmissions may interfere with the USB connection. It is recommended to place the antenna as far away from the USB port as possible. ::: diff --git a/docs/hardware/devices/raspberry-pi/peripherals.mdx b/docs/hardware/devices/raspberrypi/pico/peripherals.mdx similarity index 100% rename from docs/hardware/devices/raspberry-pi/peripherals.mdx rename to docs/hardware/devices/raspberrypi/pico/peripherals.mdx diff --git a/docs/hardware/devices/seeed-studio/index.mdx b/docs/hardware/devices/seeed-studio/index.mdx new file mode 100644 index 00000000..1f27e605 --- /dev/null +++ b/docs/hardware/devices/seeed-studio/index.mdx @@ -0,0 +1,27 @@ +--- +id: seeed-studios +title: Seeed Studio +sidebar_label: Seeed Studio +sidebar_position: 6 +--- + +Seeed Studio is a tech company focused on Edge AI and IoT. With the mission of "making technology accessible for all", Seeed Studio has been embracing open source since DAY 1. Seeed works closely with the Meshtastic community to bring easy-to-use, affordable products to community members. By listening to the voices, communicating and collaborating closely with innovators in this community, iterations of products and new services are brought to life. + +### [SenseCap](./sensecap/) + +The SenseCAP product line offers a comprehensive range of solutions for both hobbyists and industrial users, featuring the T1000-E card tracker, an IP65-rated, ready-to-go Meshtastic device, and the Indicator with a 4-inch touchscreen driven by ESP32-S3 and RP2040 Dual-MCU, coming soon. + +| Name | MCU | Radio | WiFi | BT | GPS | +| ------------------------------------------------ | ------------- | ------ | ---- | --- | --- | +| [Card Tracker T1000-E](./sensecap/card-tracker/) | nRF52840 | LR1110 | NO | 5.1 | YES | +| [SenseCAP Indicator](#) (coming soon) | ESP32, RP2040 | - | - | - | - | + + +### [Wio-WM1110](./wm1110) + +nRF52840-based development boards with GPS, and multiple ports to attach sensors. + +| Name | MCU | Radio | WiFi | BT | GPS | +| :----------------------------------------------------------- | :------- | :----- | :--: | :-: | :-: | +| [Seeed Wio-WM1110 Dev Kit](./wm1110?wm1110=wio-sdk-wm1110) | nRF52840 | LR1110 | YES | 5.3 | YES | +| [Seeed Wio Tracker 1110](./wm1110?wm1110=wio-tracker-wm1110) | nRF52840 | LR1110 | YES | 5.3 | YES | diff --git a/docs/hardware/devices/seeed-studio/sensecap/card-tracker.mdx b/docs/hardware/devices/seeed-studio/sensecap/card-tracker.mdx new file mode 100644 index 00000000..2c581116 --- /dev/null +++ b/docs/hardware/devices/seeed-studio/sensecap/card-tracker.mdx @@ -0,0 +1,42 @@ +--- +id: card-tracker +title: SenseCAP Card Tracker T1000-E +sidebar_label: Card Tracker T1000-E +sidebar_position: 2 +--- + +SenseCAP T1000-E is a high-performance tracker designed for Meshtastic. As small as a credit card, effortlessly fitting in your pocket or attaching to your assets. It embeds Semtech's LR1110, Nordic's nRF52840, and Mediatek's AG3335 GPS module, providing Meshtastic users with a high-precision, low-power positioning and communication solution. + +### Specifications + +- **MCU** + - Nordic nRF52840 (supports Bluetooth) +- **LoRa Transceiver** + - Semtech LR1110 +- **Frequency options** + - 865-928 MHz +- **Navigation Module** + - Mediatek AG3335 GPS chip +- **Battery Capacity** + - Rechargeable lithium battery, 700mAh +- **Charging** + - USB magnetic charging cable + +### Features + +- **Button and Buzzer**: For user interaction and alerts. +- **Pogo Pins**: Four pins for USB, DFU, serial logging, and charging. +- **Rugged Build**: IP65 rated, waterproof and durable for various environments. + +### Resources + +- Firmware file: `firmware-tracker-t1000-e-X.X.X.xxxxxxx.bin` +- Purchase Links: + - International + - [Seeed Studio](https://www.seeedstudio.com/SenseCAP-Card-Tracker-T1000-E-for-Meshtastic-p-5913.html) +- [User Guide](https://wiki.seeedstudio.com/sensecap_t1000_e/) + +#### Images + +![SenseCAP Card Tracker T1000-E for Meshtastic](/img/hardware/seeed/t1000-e-meshtastic.webp) +![SenseCAP Card Tracker T1000-E Dimensions](/img/hardware/seeed/t1000-e-hardware.webp) diff --git a/docs/hardware/devices/seeed-studio/sensecap/index.mdx b/docs/hardware/devices/seeed-studio/sensecap/index.mdx new file mode 100644 index 00000000..1728d206 --- /dev/null +++ b/docs/hardware/devices/seeed-studio/sensecap/index.mdx @@ -0,0 +1,11 @@ +--- +id: seeed-sensecap +title: Seeed SenseCAP +sidebar_label: SenseCAP +sidebar_position: 1 +--- + +| Name | MCU | Radio | WiFi | BT | GPS | +| ------------------------------------------------- | ------------- | ------ | ---- | --- | --- | +| [Card Tracker T1000-E](../sensecap/card-tracker/) | nRF52840 | LR1110 | NO | 5.1 | YES | +| [SenseCAP Indicator](#) (coming soon) | ESP32, RP2040 | - | - | - | - | diff --git a/docs/hardware/devices/seeed-wm1110/index.mdx b/docs/hardware/devices/seeed-studio/wm1110/index.mdx similarity index 92% rename from docs/hardware/devices/seeed-wm1110/index.mdx rename to docs/hardware/devices/seeed-studio/wm1110/index.mdx index 46240bd6..a7d38068 100644 --- a/docs/hardware/devices/seeed-wm1110/index.mdx +++ b/docs/hardware/devices/seeed-studio/wm1110/index.mdx @@ -1,14 +1,13 @@ --- id: seeed-wm1110 title: Seeed Wio-WM1100 -sidebar_label: Seeed Wio-WM1100 -sidebar_position: 15 +sidebar_label: Wio-WM1100 +sidebar_position: 1 --- import Tabs from "@theme/Tabs"; import TabItem from "@theme/TabItem"; - Generate XYZ Tiles (MBTiles) - -In Extent, choose Use Map Canvas Extent. This defines the area of the map that will be rendered into the export file -Use a zoom level of 12-17. You can play with this later, but thats a good starting point. Note that every increment of maximum zoom will increase the map size 4x. -Select JPG if there's aerial/satellite imagery, otherwise just use PNG. That will give the best compression. - -Finally choose a location for the output file. Click Run and you should eventually get a file that should play nice in the Meshtastic app. +To download offline maps, follow the official instructions from Apple for [iPhone](https://support.apple.com/en-gb/105084) or [iPad](https://support.apple.com/en-gb/guide/ipad/ipadc6e7e4d7/ipados). Video instructions are also [available](https://youtube.com/watch?v=L260qixQrYs). diff --git a/docs/software/python-cli/usage.mdx b/docs/software/python-cli/usage.mdx index 483bc13e..3c286c90 100644 --- a/docs/software/python-cli/usage.mdx +++ b/docs/software/python-cli/usage.mdx @@ -90,6 +90,8 @@ Use `--ch-set psk random --ch-index 0` to assign a new (high quality) random AES Use `--ch-set psk default --ch-index 0` to restore the standard 'default' (minimally secure, because it is in the source code for anyone to read) AES128 key. +Use `--ch-set psk base64:{key} --ch-index {index}` to set the PSK of a channel to a known entity + All `ch-set` commands need to have the `ch-index` parameter specified: ```shell diff --git a/package.json b/package.json index fc53b05d..ffafd5ac 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ "@giscus/react": "^3.0.0", "@heroicons/react": "^2.1.1", "@mdx-js/react": "^3.0.1", - "@meshtastic/js": "2.2.23-0", + "@meshtastic/js": "2.3.7-5", "autoprefixer": "^10.4.17", "base64-js": "^1.5.1", "clsx": "^2.1.0", @@ -39,7 +39,7 @@ }, "devDependencies": { "@biomejs/biome": "^1.5.3", - "@buf/meshtastic_protobufs.bufbuild_es": "1.7.2-20240216123215-6b07c41c68c9.1", + "@buf/meshtastic_protobufs.bufbuild_es": "2.0.0-20240906232734-3da561588c55.2", "@docusaurus/module-type-aliases": "3.1.1", "@tailwindcss/typography": "^0.5.10", "@tsconfig/docusaurus": "^2.0.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 53b6741b..c583f752 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,287 +7,303 @@ settings: dependencies: '@algolia/client-search': specifier: ^4.22.1 - version: 4.22.1 + version: 4.24.0 '@docusaurus/core': specifier: 3.1.1 - version: 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + version: 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) '@docusaurus/plugin-content-docs': specifier: 3.1.1 - version: 3.1.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + version: 3.1.1(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) '@docusaurus/preset-classic': specifier: 3.1.1 - version: 3.1.1(@algolia/client-search@4.22.1)(@types/react@18.2.56)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@5.3.3) + version: 3.1.1(@algolia/client-search@4.24.0)(@types/react@18.3.5)(react-dom@18.3.1)(react@18.3.1)(search-insights@2.17.2)(typescript@5.6.2) '@docusaurus/theme-common': specifier: 3.1.1 - version: 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + version: 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) '@docusaurus/theme-mermaid': specifier: 3.1.1 - version: 3.1.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + version: 3.1.1(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) '@giscus/react': specifier: ^3.0.0 - version: 3.0.0(react-dom@18.2.0)(react@18.2.0) + version: 3.0.0(react-dom@18.3.1)(react@18.3.1) '@heroicons/react': specifier: ^2.1.1 - version: 2.1.1(react@18.2.0) + version: 2.1.5(react@18.3.1) '@mdx-js/react': specifier: ^3.0.1 - version: 3.0.1(@types/react@18.2.56)(react@18.2.0) + version: 3.0.1(@types/react@18.3.5)(react@18.3.1) '@meshtastic/js': - specifier: 2.2.23-0 - version: 2.2.23-0 + specifier: 2.3.7-5 + version: 2.3.7-5 autoprefixer: specifier: ^10.4.17 - version: 10.4.17(postcss@8.4.35) + version: 10.4.20(postcss@8.4.47) base64-js: specifier: ^1.5.1 version: 1.5.1 clsx: specifier: ^2.1.0 - version: 2.1.0 + version: 2.1.1 dotenv: specifier: ^16.4.4 - version: 16.4.4 + version: 16.4.5 postcss: specifier: ^8.4.35 - version: 8.4.35 + version: 8.4.47 react: specifier: ^18.2.0 - version: 18.2.0 + version: 18.3.1 react-accessible-accordion: specifier: ^5.0.0 - version: 5.0.0(react-dom@18.2.0)(react@18.2.0) + version: 5.0.0(react-dom@18.3.1)(react@18.3.1) react-dom: specifier: ^18.2.0 - version: 18.2.0(react@18.2.0) + version: 18.3.1(react@18.3.1) react-icons: specifier: ^5.0.1 - version: 5.0.1(react@18.2.0) + version: 5.3.0(react@18.3.1) react-markdown: specifier: ^9.0.1 - version: 9.0.1(@types/react@18.2.56)(react@18.2.0) + version: 9.0.1(@types/react@18.3.5)(react@18.3.1) remark-deflist: specifier: ^1.0.0 version: 1.0.0 swr: specifier: ^2.2.5 - version: 2.2.5(react@18.2.0) + version: 2.2.5(react@18.3.1) tailwindcss: specifier: ^3.4.1 - version: 3.4.1 + version: 3.4.11 devDependencies: '@biomejs/biome': specifier: ^1.5.3 - version: 1.5.3 + version: 1.9.0 '@buf/meshtastic_protobufs.bufbuild_es': - specifier: 1.7.2-20240216123215-6b07c41c68c9.1 - version: 1.7.2-20240216123215-6b07c41c68c9.1(@bufbuild/protobuf@1.7.2) + specifier: 2.0.0-20240906232734-3da561588c55.2 + version: 2.0.0-20240906232734-3da561588c55.2(@bufbuild/protobuf@2.0.0) '@docusaurus/module-type-aliases': specifier: 3.1.1 - version: 3.1.1(react-dom@18.2.0)(react@18.2.0) + version: 3.1.1(react-dom@18.3.1)(react@18.3.1) '@tailwindcss/typography': specifier: ^0.5.10 - version: 0.5.10(tailwindcss@3.4.1) + version: 0.5.15(tailwindcss@3.4.11) '@tsconfig/docusaurus': specifier: ^2.0.2 - version: 2.0.2 + version: 2.0.3 '@types/node': specifier: ^20.11.19 - version: 20.11.19 + version: 20.16.5 '@types/react': specifier: ^18.2.56 - version: 18.2.56 + version: 18.3.5 '@types/react-dom': specifier: ^18.2.19 - version: 18.2.19 + version: 18.3.0 docusaurus-prince-pdf: specifier: ^1.2.1 version: 1.2.1 typescript: specifier: ^5.3.3 - version: 5.3.3 + version: 5.6.2 packages: - /@algolia/autocomplete-core@1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.22.1)(search-insights@2.13.0): + /@algolia/autocomplete-core@1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)(search-insights@2.17.2): resolution: {integrity: sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==} dependencies: - '@algolia/autocomplete-plugin-algolia-insights': 1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.22.1)(search-insights@2.13.0) - '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.22.1) + '@algolia/autocomplete-plugin-algolia-insights': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)(search-insights@2.17.2) + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0) transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - search-insights dev: false - /@algolia/autocomplete-plugin-algolia-insights@1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.22.1)(search-insights@2.13.0): + /@algolia/autocomplete-plugin-algolia-insights@1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)(search-insights@2.17.2): resolution: {integrity: sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==} peerDependencies: search-insights: '>= 1 < 3' dependencies: - '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.22.1) - search-insights: 2.13.0 + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0) + search-insights: 2.17.2 transitivePeerDependencies: - '@algolia/client-search' - algoliasearch dev: false - /@algolia/autocomplete-preset-algolia@1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.22.1): + /@algolia/autocomplete-preset-algolia@1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0): resolution: {integrity: sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==} peerDependencies: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' dependencies: - '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.22.1) - '@algolia/client-search': 4.22.1 - algoliasearch: 4.22.1 + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0) + '@algolia/client-search': 4.24.0 + algoliasearch: 4.24.0 dev: false - /@algolia/autocomplete-shared@1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.22.1): + /@algolia/autocomplete-shared@1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0): resolution: {integrity: sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==} peerDependencies: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' dependencies: - '@algolia/client-search': 4.22.1 - algoliasearch: 4.22.1 + '@algolia/client-search': 4.24.0 + algoliasearch: 4.24.0 dev: false - /@algolia/cache-browser-local-storage@4.22.1: - resolution: {integrity: sha512-Sw6IAmOCvvP6QNgY9j+Hv09mvkvEIDKjYW8ow0UDDAxSXy664RBNQk3i/0nt7gvceOJ6jGmOTimaZoY1THmU7g==} + /@algolia/cache-browser-local-storage@4.24.0: + resolution: {integrity: sha512-t63W9BnoXVrGy9iYHBgObNXqYXM3tYXCjDSHeNwnsc324r4o5UiVKUiAB4THQ5z9U5hTj6qUvwg/Ez43ZD85ww==} dependencies: - '@algolia/cache-common': 4.22.1 + '@algolia/cache-common': 4.24.0 dev: false - /@algolia/cache-common@4.22.1: - resolution: {integrity: sha512-TJMBKqZNKYB9TptRRjSUtevJeQVXRmg6rk9qgFKWvOy8jhCPdyNZV1nB3SKGufzvTVbomAukFR8guu/8NRKBTA==} + /@algolia/cache-common@4.24.0: + resolution: {integrity: sha512-emi+v+DmVLpMGhp0V9q9h5CdkURsNmFC+cOS6uK9ndeJm9J4TiqSvPYVu+THUP8P/S08rxf5x2P+p3CfID0Y4g==} dev: false - /@algolia/cache-in-memory@4.22.1: - resolution: {integrity: sha512-ve+6Ac2LhwpufuWavM/aHjLoNz/Z/sYSgNIXsinGofWOysPilQZPUetqLj8vbvi+DHZZaYSEP9H5SRVXnpsNNw==} + /@algolia/cache-in-memory@4.24.0: + resolution: {integrity: sha512-gDrt2so19jW26jY3/MkFg5mEypFIPbPoXsQGQWAi6TrCPsNOSEYepBMPlucqWigsmEy/prp5ug2jy/N3PVG/8w==} dependencies: - '@algolia/cache-common': 4.22.1 + '@algolia/cache-common': 4.24.0 dev: false - /@algolia/client-account@4.22.1: - resolution: {integrity: sha512-k8m+oegM2zlns/TwZyi4YgCtyToackkOpE+xCaKCYfBfDtdGOaVZCM5YvGPtK+HGaJMIN/DoTL8asbM3NzHonw==} + /@algolia/client-account@4.24.0: + resolution: {integrity: sha512-adcvyJ3KjPZFDybxlqnf+5KgxJtBjwTPTeyG2aOyoJvx0Y8dUQAEOEVOJ/GBxX0WWNbmaSrhDURMhc+QeevDsA==} dependencies: - '@algolia/client-common': 4.22.1 - '@algolia/client-search': 4.22.1 - '@algolia/transporter': 4.22.1 + '@algolia/client-common': 4.24.0 + '@algolia/client-search': 4.24.0 + '@algolia/transporter': 4.24.0 dev: false - /@algolia/client-analytics@4.22.1: - resolution: {integrity: sha512-1ssi9pyxyQNN4a7Ji9R50nSdISIumMFDwKNuwZipB6TkauJ8J7ha/uO60sPJFqQyqvvI+px7RSNRQT3Zrvzieg==} + /@algolia/client-analytics@4.24.0: + resolution: {integrity: sha512-y8jOZt1OjwWU4N2qr8G4AxXAzaa8DBvyHTWlHzX/7Me1LX8OayfgHexqrsL4vSBcoMmVw2XnVW9MhL+Y2ZDJXg==} dependencies: - '@algolia/client-common': 4.22.1 - '@algolia/client-search': 4.22.1 - '@algolia/requester-common': 4.22.1 - '@algolia/transporter': 4.22.1 + '@algolia/client-common': 4.24.0 + '@algolia/client-search': 4.24.0 + '@algolia/requester-common': 4.24.0 + '@algolia/transporter': 4.24.0 dev: false - /@algolia/client-common@4.22.1: - resolution: {integrity: sha512-IvaL5v9mZtm4k4QHbBGDmU3wa/mKokmqNBqPj0K7lcR8ZDKzUorhcGp/u8PkPC/e0zoHSTvRh7TRkGX3Lm7iOQ==} + /@algolia/client-common@4.24.0: + resolution: {integrity: sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==} dependencies: - '@algolia/requester-common': 4.22.1 - '@algolia/transporter': 4.22.1 + '@algolia/requester-common': 4.24.0 + '@algolia/transporter': 4.24.0 dev: false - /@algolia/client-personalization@4.22.1: - resolution: {integrity: sha512-sl+/klQJ93+4yaqZ7ezOttMQ/nczly/3GmgZXJ1xmoewP5jmdP/X/nV5U7EHHH3hCUEHeN7X1nsIhGPVt9E1cQ==} + /@algolia/client-personalization@4.24.0: + resolution: {integrity: sha512-l5FRFm/yngztweU0HdUzz1rC4yoWCFo3IF+dVIVTfEPg906eZg5BOd1k0K6rZx5JzyyoP4LdmOikfkfGsKVE9w==} dependencies: - '@algolia/client-common': 4.22.1 - '@algolia/requester-common': 4.22.1 - '@algolia/transporter': 4.22.1 + '@algolia/client-common': 4.24.0 + '@algolia/requester-common': 4.24.0 + '@algolia/transporter': 4.24.0 dev: false - /@algolia/client-search@4.22.1: - resolution: {integrity: sha512-yb05NA4tNaOgx3+rOxAmFztgMTtGBi97X7PC3jyNeGiwkAjOZc2QrdZBYyIdcDLoI09N0gjtpClcackoTN0gPA==} + /@algolia/client-search@4.24.0: + resolution: {integrity: sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==} dependencies: - '@algolia/client-common': 4.22.1 - '@algolia/requester-common': 4.22.1 - '@algolia/transporter': 4.22.1 + '@algolia/client-common': 4.24.0 + '@algolia/requester-common': 4.24.0 + '@algolia/transporter': 4.24.0 dev: false /@algolia/events@4.0.1: resolution: {integrity: sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==} dev: false - /@algolia/logger-common@4.22.1: - resolution: {integrity: sha512-OnTFymd2odHSO39r4DSWRFETkBufnY2iGUZNrMXpIhF5cmFE8pGoINNPzwg02QLBlGSaLqdKy0bM8S0GyqPLBg==} + /@algolia/logger-common@4.24.0: + resolution: {integrity: sha512-LLUNjkahj9KtKYrQhFKCzMx0BY3RnNP4FEtO+sBybCjJ73E8jNdaKJ/Dd8A/VA4imVHP5tADZ8pn5B8Ga/wTMA==} dev: false - /@algolia/logger-console@4.22.1: - resolution: {integrity: sha512-O99rcqpVPKN1RlpgD6H3khUWylU24OXlzkavUAMy6QZd1776QAcauE3oP8CmD43nbaTjBexZj2nGsBH9Tc0FVA==} + /@algolia/logger-console@4.24.0: + resolution: {integrity: sha512-X4C8IoHgHfiUROfoRCV+lzSy+LHMgkoEEU1BbKcsfnV0i0S20zyy0NLww9dwVHUWNfPPxdMU+/wKmLGYf96yTg==} dependencies: - '@algolia/logger-common': 4.22.1 + '@algolia/logger-common': 4.24.0 dev: false - /@algolia/requester-browser-xhr@4.22.1: - resolution: {integrity: sha512-dtQGYIg6MteqT1Uay3J/0NDqD+UciHy3QgRbk7bNddOJu+p3hzjTRYESqEnoX/DpEkaNYdRHUKNylsqMpgwaEw==} + /@algolia/recommend@4.24.0: + resolution: {integrity: sha512-P9kcgerfVBpfYHDfVZDvvdJv0lEoCvzNlOy2nykyt5bK8TyieYyiD0lguIJdRZZYGre03WIAFf14pgE+V+IBlw==} dependencies: - '@algolia/requester-common': 4.22.1 + '@algolia/cache-browser-local-storage': 4.24.0 + '@algolia/cache-common': 4.24.0 + '@algolia/cache-in-memory': 4.24.0 + '@algolia/client-common': 4.24.0 + '@algolia/client-search': 4.24.0 + '@algolia/logger-common': 4.24.0 + '@algolia/logger-console': 4.24.0 + '@algolia/requester-browser-xhr': 4.24.0 + '@algolia/requester-common': 4.24.0 + '@algolia/requester-node-http': 4.24.0 + '@algolia/transporter': 4.24.0 dev: false - /@algolia/requester-common@4.22.1: - resolution: {integrity: sha512-dgvhSAtg2MJnR+BxrIFqlLtkLlVVhas9HgYKMk2Uxiy5m6/8HZBL40JVAMb2LovoPFs9I/EWIoFVjOrFwzn5Qg==} - dev: false - - /@algolia/requester-node-http@4.22.1: - resolution: {integrity: sha512-JfmZ3MVFQkAU+zug8H3s8rZ6h0ahHZL/SpMaSasTCGYR5EEJsCc8SI5UZ6raPN2tjxa5bxS13BRpGSBUens7EA==} + /@algolia/requester-browser-xhr@4.24.0: + resolution: {integrity: sha512-Z2NxZMb6+nVXSjF13YpjYTdvV3032YTBSGm2vnYvYPA6mMxzM3v5rsCiSspndn9rzIW4Qp1lPHBvuoKJV6jnAA==} dependencies: - '@algolia/requester-common': 4.22.1 + '@algolia/requester-common': 4.24.0 dev: false - /@algolia/transporter@4.22.1: - resolution: {integrity: sha512-kzWgc2c9IdxMa3YqA6TN0NW5VrKYYW/BELIn7vnLyn+U/RFdZ4lxxt9/8yq3DKV5snvoDzzO4ClyejZRdV3lMQ==} + /@algolia/requester-common@4.24.0: + resolution: {integrity: sha512-k3CXJ2OVnvgE3HMwcojpvY6d9kgKMPRxs/kVohrwF5WMr2fnqojnycZkxPoEg+bXm8fi5BBfFmOqgYztRtHsQA==} + dev: false + + /@algolia/requester-node-http@4.24.0: + resolution: {integrity: sha512-JF18yTjNOVYvU/L3UosRcvbPMGT9B+/GQWNWnenIImglzNVGpyzChkXLnrSf6uxwVNO6ESGu6oN8MqcGQcjQJw==} dependencies: - '@algolia/cache-common': 4.22.1 - '@algolia/logger-common': 4.22.1 - '@algolia/requester-common': 4.22.1 + '@algolia/requester-common': 4.24.0 + dev: false + + /@algolia/transporter@4.24.0: + resolution: {integrity: sha512-86nI7w6NzWxd1Zp9q3413dRshDqAzSbsQjhcDhPIatEFiZrL1/TjnHL8S7jVKFePlIMzDsZWXAXwXzcok9c5oA==} + dependencies: + '@algolia/cache-common': 4.24.0 + '@algolia/logger-common': 4.24.0 + '@algolia/requester-common': 4.24.0 dev: false /@alloc/quick-lru@5.2.0: resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} - /@ampproject/remapping@2.2.1: - resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} + /@ampproject/remapping@2.3.0: + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} dependencies: - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.22 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 dev: false - /@babel/code-frame@7.23.5: - resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} + /@babel/code-frame@7.24.7: + resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/highlight': 7.23.4 - chalk: 2.4.2 + '@babel/highlight': 7.24.7 + picocolors: 1.1.0 dev: false - /@babel/compat-data@7.23.5: - resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} + /@babel/compat-data@7.25.4: + resolution: {integrity: sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==} engines: {node: '>=6.9.0'} dev: false - /@babel/core@7.23.9: - resolution: {integrity: sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==} + /@babel/core@7.25.2: + resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==} engines: {node: '>=6.9.0'} dependencies: - '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.23.5 - '@babel/generator': 7.23.6 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) - '@babel/helpers': 7.23.9 - '@babel/parser': 7.23.9 - '@babel/template': 7.23.9 - '@babel/traverse': 7.23.9 - '@babel/types': 7.23.9 + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.25.6 + '@babel/helper-compilation-targets': 7.25.2 + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) + '@babel/helpers': 7.25.6 + '@babel/parser': 7.25.6 + '@babel/template': 7.25.0 + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 convert-source-map: 2.0.0 - debug: 4.3.4 + debug: 4.3.7 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -295,1358 +311,1431 @@ packages: - supports-color dev: false - /@babel/generator@7.23.6: - resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} + /@babel/generator@7.25.6: + resolution: {integrity: sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.9 - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.22 + '@babel/types': 7.25.6 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 dev: false - /@babel/helper-annotate-as-pure@7.22.5: - resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} + /@babel/helper-annotate-as-pure@7.24.7: + resolution: {integrity: sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.25.6 dev: false - /@babel/helper-builder-binary-assignment-operator-visitor@7.22.15: - resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==} + /@babel/helper-builder-binary-assignment-operator-visitor@7.24.7: + resolution: {integrity: sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.9 + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 + transitivePeerDependencies: + - supports-color dev: false - /@babel/helper-compilation-targets@7.23.6: - resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} + /@babel/helper-compilation-targets@7.25.2: + resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/compat-data': 7.23.5 - '@babel/helper-validator-option': 7.23.5 - browserslist: 4.23.0 + '@babel/compat-data': 7.25.4 + '@babel/helper-validator-option': 7.24.8 + browserslist: 4.23.3 lru-cache: 5.1.1 semver: 6.3.1 dev: false - /@babel/helper-create-class-features-plugin@7.23.10(@babel/core@7.23.9): - resolution: {integrity: sha512-2XpP2XhkXzgxecPNEEK8Vz8Asj9aRxt08oKOqtiZoqV2UGZ5T+EkyP9sXQ9nwMxBIG34a7jmasVqoMop7VdPUw==} + /@babel/helper-create-class-features-plugin@7.25.4(@babel/core@7.25.2): + resolution: {integrity: sha512-ro/bFs3/84MDgDmMwbcHgDa8/E6J3QKNTk4xJJnVeFtGE+tL0K26E3pNxhYz2b67fJpt7Aphw5XcploKXuCvCQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-member-expression-to-functions': 7.23.0 - '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.9) - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 + '@babel/core': 7.25.2 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-member-expression-to-functions': 7.24.8 + '@babel/helper-optimise-call-expression': 7.24.7 + '@babel/helper-replace-supers': 7.25.0(@babel/core@7.25.2) + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + '@babel/traverse': 7.25.6 semver: 6.3.1 + transitivePeerDependencies: + - supports-color dev: false - /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.23.9): - resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} + /@babel/helper-create-regexp-features-plugin@7.25.2(@babel/core@7.25.2): + resolution: {integrity: sha512-+wqVGP+DFmqwFD3EH6TMTfUNeqDehV3E/dl+Sd54eaXqm17tEUNbEIn4sVivVowbvUpOtIGxdo3GoXyDH9N/9g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/core': 7.25.2 + '@babel/helper-annotate-as-pure': 7.24.7 regexpu-core: 5.3.2 semver: 6.3.1 dev: false - /@babel/helper-define-polyfill-provider@0.5.0(@babel/core@7.23.9): - resolution: {integrity: sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==} + /@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.25.2): + resolution: {integrity: sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.22.5 - debug: 4.3.4 + '@babel/core': 7.25.2 + '@babel/helper-compilation-targets': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + debug: 4.3.7 lodash.debounce: 4.0.8 resolve: 1.22.8 transitivePeerDependencies: - supports-color dev: false - /@babel/helper-environment-visitor@7.22.20: - resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} - engines: {node: '>=6.9.0'} - dev: false - - /@babel/helper-function-name@7.23.0: - resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} + /@babel/helper-member-expression-to-functions@7.24.8: + resolution: {integrity: sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.23.9 - '@babel/types': 7.23.9 - dev: false - - /@babel/helper-hoist-variables@7.22.5: - resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.9 - dev: false - - /@babel/helper-member-expression-to-functions@7.23.0: - resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.9 - dev: false - - /@babel/helper-module-imports@7.22.15: - resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.9 - dev: false - - /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-simple-access': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.20 - dev: false - - /@babel/helper-optimise-call-expression@7.22.5: - resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.9 - dev: false - - /@babel/helper-plugin-utils@7.22.5: - resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} - engines: {node: '>=6.9.0'} - dev: false - - /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.23.9): - resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-wrap-function': 7.22.20 - dev: false - - /@babel/helper-replace-supers@7.22.20(@babel/core@7.23.9): - resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-member-expression-to-functions': 7.23.0 - '@babel/helper-optimise-call-expression': 7.22.5 - dev: false - - /@babel/helper-simple-access@7.22.5: - resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.9 - dev: false - - /@babel/helper-skip-transparent-expression-wrappers@7.22.5: - resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.9 - dev: false - - /@babel/helper-split-export-declaration@7.22.6: - resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.9 - dev: false - - /@babel/helper-string-parser@7.23.4: - resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} - engines: {node: '>=6.9.0'} - dev: false - - /@babel/helper-validator-identifier@7.22.20: - resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} - engines: {node: '>=6.9.0'} - dev: false - - /@babel/helper-validator-option@7.23.5: - resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} - engines: {node: '>=6.9.0'} - dev: false - - /@babel/helper-wrap-function@7.22.20: - resolution: {integrity: sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-function-name': 7.23.0 - '@babel/template': 7.23.9 - '@babel/types': 7.23.9 - dev: false - - /@babel/helpers@7.23.9: - resolution: {integrity: sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.23.9 - '@babel/traverse': 7.23.9 - '@babel/types': 7.23.9 + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 transitivePeerDependencies: - supports-color dev: false - /@babel/highlight@7.23.4: - resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} + /@babel/helper-module-imports@7.24.7: + resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-validator-identifier': 7.22.20 - chalk: 2.4.2 - js-tokens: 4.0.0 + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 + transitivePeerDependencies: + - supports-color dev: false - /@babel/parser@7.23.9: - resolution: {integrity: sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.23.9 - dev: false - - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==} + /@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2): + resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.25.2 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-simple-access': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + '@babel/traverse': 7.25.6 + transitivePeerDependencies: + - supports-color dev: false - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==} + /@babel/helper-optimise-call-expression@7.24.7: + resolution: {integrity: sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.25.6 + dev: false + + /@babel/helper-plugin-utils@7.24.8: + resolution: {integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==} + engines: {node: '>=6.9.0'} + dev: false + + /@babel/helper-remap-async-to-generator@7.25.0(@babel/core@7.25.2): + resolution: {integrity: sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-wrap-function': 7.25.0 + '@babel/traverse': 7.25.6 + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/helper-replace-supers@7.25.0(@babel/core@7.25.2): + resolution: {integrity: sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-member-expression-to-functions': 7.24.8 + '@babel/helper-optimise-call-expression': 7.24.7 + '@babel/traverse': 7.25.6 + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/helper-simple-access@7.24.7: + resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/helper-skip-transparent-expression-wrappers@7.24.7: + resolution: {integrity: sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/helper-string-parser@7.24.8: + resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} + engines: {node: '>=6.9.0'} + dev: false + + /@babel/helper-validator-identifier@7.24.7: + resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} + engines: {node: '>=6.9.0'} + dev: false + + /@babel/helper-validator-option@7.24.8: + resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} + engines: {node: '>=6.9.0'} + dev: false + + /@babel/helper-wrap-function@7.25.0: + resolution: {integrity: sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.25.0 + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/helpers@7.25.6: + resolution: {integrity: sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.25.0 + '@babel/types': 7.25.6 + dev: false + + /@babel/highlight@7.24.7: + resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.24.7 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.1.0 + dev: false + + /@babel/parser@7.25.6: + resolution: {integrity: sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.25.6 + dev: false + + /@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.3(@babel/core@7.25.2): + resolution: {integrity: sha512-wUrcsxZg6rqBXG05HG1FPYgsP6EvwF4WpBbxIpWIIYnH8wG0gzx3yZY3dtEHas4sTAOGkbTsc9EGPxwff8lRoA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/traverse': 7.25.6 + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.0(@babel/core@7.25.2): + resolution: {integrity: sha512-Bm4bH2qsX880b/3ziJ8KD711LT7z4u8CFudmjqle65AZj/HNUFhEf90dqYv6O86buWvSBmeQDjv0Tn2aF/bIBA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + dev: false + + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.0(@babel/core@7.25.2): + resolution: {integrity: sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + dev: false + + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.23.9) + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + '@babel/plugin-transform-optional-chaining': 7.24.8(@babel/core@7.25.2) + transitivePeerDependencies: + - supports-color dev: false - /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.23.7(@babel/core@7.23.9): - resolution: {integrity: sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw==} + /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.0(@babel/core@7.25.2): + resolution: {integrity: sha512-tggFrk1AIShG/RUQbEwt2Tr/E+ObkfwrPjR6BjbRvsx24+PSjK8zrq0GWPNCjo8qpRx4DuJzlcvWJqlm+0h3kw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/traverse': 7.25.6 + transitivePeerDependencies: + - supports-color dev: false - /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.9): + /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.25.2): resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.25.2 dev: false - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.9): + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.25.2): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 dev: false - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.9): + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.25.2): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 dev: false - /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.23.9): + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.25.2): resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 dev: false - /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.23.9): + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.25.2): resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 dev: false - /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.23.9): + /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.25.2): resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 dev: false - /@babel/plugin-syntax-import-assertions@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==} + /@babel/plugin-syntax-import-assertions@7.25.6(@babel/core@7.25.2): + resolution: {integrity: sha512-aABl0jHw9bZ2karQ/uUD6XP4u0SG22SJrOHFoL6XB1R7dTovOP4TzTlsxOYC5yQ1pdscVK2JTUnF6QL3ARoAiQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 dev: false - /@babel/plugin-syntax-import-attributes@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==} + /@babel/plugin-syntax-import-attributes@7.25.6(@babel/core@7.25.2): + resolution: {integrity: sha512-sXaDXaJN9SNLymBdlWFA+bjzBhFD617ZaFiY13dGt7TVslVvVgA6fkZOP7Ki3IGElC45lwHdOTrCtKZGVAWeLQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 dev: false - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.9): + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.25.2): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 dev: false - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.9): + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.25.2): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 dev: false - /@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==} + /@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 dev: false - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.9): + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.25.2): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 dev: false - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.9): + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.25.2): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 dev: false - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.9): + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.25.2): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 dev: false - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.9): + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.25.2): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 dev: false - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.9): + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.25.2): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 dev: false - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.9): + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.25.2): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 dev: false - /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.23.9): + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.25.2): resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 dev: false - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.9): + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.25.2): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 dev: false - /@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==} + /@babel/plugin-syntax-typescript@7.25.4(@babel/core@7.25.2): + resolution: {integrity: sha512-uMOCoHVU52BsSWxPOMVv5qKRdeSlPuImUCB2dlPuBSU+W2/ROE7/Zg8F2Kepbk+8yBa68LlRKxO+xgEVWorsDg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 dev: false - /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.23.9): + /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.25.2): resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.25.2 + '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 dev: false - /@babel/plugin-transform-arrow-functions@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==} + /@babel/plugin-transform-arrow-functions@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 dev: false - /@babel/plugin-transform-async-generator-functions@7.23.9(@babel/core@7.23.9): - resolution: {integrity: sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ==} + /@babel/plugin-transform-async-generator-functions@7.25.4(@babel/core@7.25.2): + resolution: {integrity: sha512-jz8cV2XDDTqjKPwVPJBIjORVEmSGYhdRa8e5k5+vN+uwcjSrSxUaebBRa4ko1jqNF2uxyg8G6XYk30Jv285xzg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.9) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.9) + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-remap-async-to-generator': 7.25.0(@babel/core@7.25.2) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2) + '@babel/traverse': 7.25.6 + transitivePeerDependencies: + - supports-color dev: false - /@babel/plugin-transform-async-to-generator@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==} + /@babel/plugin-transform-async-to-generator@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.9) + '@babel/core': 7.25.2 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-remap-async-to-generator': 7.25.0(@babel/core@7.25.2) + transitivePeerDependencies: + - supports-color dev: false - /@babel/plugin-transform-block-scoped-functions@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==} + /@babel/plugin-transform-block-scoped-functions@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 dev: false - /@babel/plugin-transform-block-scoping@7.23.4(@babel/core@7.23.9): - resolution: {integrity: sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==} + /@babel/plugin-transform-block-scoping@7.25.0(@babel/core@7.25.2): + resolution: {integrity: sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 dev: false - /@babel/plugin-transform-class-properties@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==} + /@babel/plugin-transform-class-properties@7.25.4(@babel/core@7.25.2): + resolution: {integrity: sha512-nZeZHyCWPfjkdU5pA/uHiTaDAFUEqkpzf1YoQT2NeSynCGYq9rxfyI3XpQbfx/a0hSnFH6TGlEXvae5Vi7GD8g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.25.2 + '@babel/helper-create-class-features-plugin': 7.25.4(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 + transitivePeerDependencies: + - supports-color dev: false - /@babel/plugin-transform-class-static-block@7.23.4(@babel/core@7.23.9): - resolution: {integrity: sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==} + /@babel/plugin-transform-class-static-block@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.9) + '@babel/core': 7.25.2 + '@babel/helper-create-class-features-plugin': 7.25.4(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.25.2) + transitivePeerDependencies: + - supports-color dev: false - /@babel/plugin-transform-classes@7.23.8(@babel/core@7.23.9): - resolution: {integrity: sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg==} + /@babel/plugin-transform-classes@7.25.4(@babel/core@7.25.2): + resolution: {integrity: sha512-oexUfaQle2pF/b6E0dwsxQtAol9TLSO88kQvym6HHBWFliV2lGdrPieX+WgMRLSJDVzdYywk7jXbLPuO2KLTLg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.9) - '@babel/helper-split-export-declaration': 7.22.6 + '@babel/core': 7.25.2 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-compilation-targets': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-replace-supers': 7.25.0(@babel/core@7.25.2) + '@babel/traverse': 7.25.6 globals: 11.12.0 + transitivePeerDependencies: + - supports-color dev: false - /@babel/plugin-transform-computed-properties@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==} + /@babel/plugin-transform-computed-properties@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/template': 7.23.9 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/template': 7.25.0 dev: false - /@babel/plugin-transform-destructuring@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==} + /@babel/plugin-transform-destructuring@7.24.8(@babel/core@7.25.2): + resolution: {integrity: sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 dev: false - /@babel/plugin-transform-dotall-regex@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==} + /@babel/plugin-transform-dotall-regex@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.25.2 + '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 dev: false - /@babel/plugin-transform-duplicate-keys@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==} + /@babel/plugin-transform-duplicate-keys@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 dev: false - /@babel/plugin-transform-dynamic-import@7.23.4(@babel/core@7.23.9): - resolution: {integrity: sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.9) - dev: false - - /@babel/plugin-transform-exponentiation-operator@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 - '@babel/helper-plugin-utils': 7.22.5 - dev: false - - /@babel/plugin-transform-export-namespace-from@7.23.4(@babel/core@7.23.9): - resolution: {integrity: sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.9) - dev: false - - /@babel/plugin-transform-for-of@7.23.6(@babel/core@7.23.9): - resolution: {integrity: sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - dev: false - - /@babel/plugin-transform-function-name@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-plugin-utils': 7.22.5 - dev: false - - /@babel/plugin-transform-json-strings@7.23.4(@babel/core@7.23.9): - resolution: {integrity: sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.9) - dev: false - - /@babel/plugin-transform-literals@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - dev: false - - /@babel/plugin-transform-logical-assignment-operators@7.23.4(@babel/core@7.23.9): - resolution: {integrity: sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.9) - dev: false - - /@babel/plugin-transform-member-expression-literals@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - dev: false - - /@babel/plugin-transform-modules-amd@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 - dev: false - - /@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-simple-access': 7.22.5 - dev: false - - /@babel/plugin-transform-modules-systemjs@7.23.9(@babel/core@7.23.9): - resolution: {integrity: sha512-KDlPRM6sLo4o1FkiSlXoAa8edLXFsKKIda779fbLrvmeuc3itnjCtaO6RrtoaANsIJANj+Vk1zqbZIMhkCAHVw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-validator-identifier': 7.22.20 - dev: false - - /@babel/plugin-transform-modules-umd@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 - dev: false - - /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.23.9): - resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} + /@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.0(@babel/core@7.25.2): + resolution: {integrity: sha512-YLpb4LlYSc3sCUa35un84poXoraOiQucUTTu8X1j18JV+gNa8E0nyUf/CjZ171IRGr4jEguF+vzJU66QZhn29g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.25.2 + '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 dev: false - /@babel/plugin-transform-new-target@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==} + /@babel/plugin-transform-dynamic-import@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.25.2) dev: false - /@babel/plugin-transform-nullish-coalescing-operator@7.23.4(@babel/core@7.23.9): - resolution: {integrity: sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==} + /@babel/plugin-transform-exponentiation-operator@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.9) + '@babel/core': 7.25.2 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + transitivePeerDependencies: + - supports-color dev: false - /@babel/plugin-transform-numeric-separator@7.23.4(@babel/core@7.23.9): - resolution: {integrity: sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==} + /@babel/plugin-transform-export-namespace-from@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.9) + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.25.2) dev: false - /@babel/plugin-transform-object-rest-spread@7.23.4(@babel/core@7.23.9): - resolution: {integrity: sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==} + /@babel/plugin-transform-for-of@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.23.5 - '@babel/core': 7.23.9 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.9) + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + transitivePeerDependencies: + - supports-color dev: false - /@babel/plugin-transform-object-super@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==} + /@babel/plugin-transform-function-name@7.25.1(@babel/core@7.25.2): + resolution: {integrity: sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.9) + '@babel/core': 7.25.2 + '@babel/helper-compilation-targets': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/traverse': 7.25.6 + transitivePeerDependencies: + - supports-color dev: false - /@babel/plugin-transform-optional-catch-binding@7.23.4(@babel/core@7.23.9): - resolution: {integrity: sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==} + /@babel/plugin-transform-json-strings@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.9) + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.25.2) dev: false - /@babel/plugin-transform-optional-chaining@7.23.4(@babel/core@7.23.9): - resolution: {integrity: sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==} + /@babel/plugin-transform-literals@7.25.2(@babel/core@7.25.2): + resolution: {integrity: sha512-HQI+HcTbm9ur3Z2DkO+jgESMAMcYLuN/A7NRw9juzxAezN9AvqvUTnpKP/9kkYANz6u7dFlAyOu44ejuGySlfw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.9) + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 dev: false - /@babel/plugin-transform-parameters@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==} + /@babel/plugin-transform-logical-assignment-operators@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.2) dev: false - /@babel/plugin-transform-private-methods@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==} + /@babel/plugin-transform-member-expression-literals@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 dev: false - /@babel/plugin-transform-private-property-in-object@7.23.4(@babel/core@7.23.9): - resolution: {integrity: sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==} + /@babel/plugin-transform-modules-amd@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.9) + '@babel/core': 7.25.2 + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 + transitivePeerDependencies: + - supports-color dev: false - /@babel/plugin-transform-property-literals@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==} + /@babel/plugin-transform-modules-commonjs@7.24.8(@babel/core@7.25.2): + resolution: {integrity: sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.25.2 + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-simple-access': 7.24.7 + transitivePeerDependencies: + - supports-color dev: false - /@babel/plugin-transform-react-constant-elements@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-zP0QKq/p6O42OL94udMgSfKXyse4RyJ0JqbQ34zDAONWjyrEsghYEyTSK5FIpmXmCpB55SHokL1cRRKHv8L2Qw==} + /@babel/plugin-transform-modules-systemjs@7.25.0(@babel/core@7.25.2): + resolution: {integrity: sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.25.2 + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-validator-identifier': 7.24.7 + '@babel/traverse': 7.25.6 + transitivePeerDependencies: + - supports-color dev: false - /@babel/plugin-transform-react-display-name@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw==} + /@babel/plugin-transform-modules-umd@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.25.2 + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 + transitivePeerDependencies: + - supports-color dev: false - /@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.23.9): - resolution: {integrity: sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==} + /@babel/plugin-transform-named-capturing-groups-regex@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 + dev: false + + /@babel/plugin-transform-new-target@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.9) + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 dev: false - /@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.23.9): - resolution: {integrity: sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==} + /@babel/plugin-transform-nullish-coalescing-operator@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.9) - '@babel/types': 7.23.9 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) dev: false - /@babel/plugin-transform-react-pure-annotations@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ==} + /@babel/plugin-transform-numeric-separator@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.2) dev: false - /@babel/plugin-transform-regenerator@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==} + /@babel/plugin-transform-object-rest-spread@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.25.2 + '@babel/helper-compilation-targets': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.25.2) + dev: false + + /@babel/plugin-transform-object-super@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-replace-supers': 7.25.0(@babel/core@7.25.2) + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/plugin-transform-optional-catch-binding@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.2) + dev: false + + /@babel/plugin-transform-optional-chaining@7.24.8(@babel/core@7.25.2): + resolution: {integrity: sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/plugin-transform-parameters@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + dev: false + + /@babel/plugin-transform-private-methods@7.25.4(@babel/core@7.25.2): + resolution: {integrity: sha512-ao8BG7E2b/URaUQGqN3Tlsg+M3KlHY6rJ1O1gXAEUnZoyNQnvKyH87Kfg+FoxSeyWUB8ISZZsC91C44ZuBFytw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-create-class-features-plugin': 7.25.4(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/plugin-transform-private-property-in-object@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-create-class-features-plugin': 7.25.4(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.25.2) + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/plugin-transform-property-literals@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + dev: false + + /@babel/plugin-transform-react-constant-elements@7.25.1(@babel/core@7.25.2): + resolution: {integrity: sha512-SLV/giH/V4SmloZ6Dt40HjTGTAIkxn33TVIHxNGNvo8ezMhrxBkzisj4op1KZYPIOHFLqhv60OHvX+YRu4xbmQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + dev: false + + /@babel/plugin-transform-react-display-name@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-H/Snz9PFxKsS1JLI4dJLtnJgCJRoo0AUm3chP6NYr+9En1JMKloheEiLIhlp5MDVznWo+H3AAC1Mc8lmUEpsgg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + dev: false + + /@babel/plugin-transform-react-jsx-development@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-QG9EnzoGn+Qar7rxuW+ZOsbWOt56FvvI93xInqsZDC5fsekx1AlIO4KIJ5M+D0p0SqSH156EpmZyXq630B8OlQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.25.2) + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/plugin-transform-react-jsx@7.25.2(@babel/core@7.25.2): + resolution: {integrity: sha512-KQsqEAVBpU82NM/B/N9j9WOdphom1SZH3R+2V7INrQUH+V9EBFwZsEJl8eBIVeQE62FxJCc70jzEZwqU7RcVqA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2) + '@babel/types': 7.25.6 + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/plugin-transform-react-pure-annotations@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-PLgBVk3fzbmEjBJ/u8kFzOqS9tUeDjiaWud/rRym/yjCo/M9cASPlnrd2ZmmZpQT40fOOrvR8jh+n8jikrOhNA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + dev: false + + /@babel/plugin-transform-regenerator@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 regenerator-transform: 0.15.2 dev: false - /@babel/plugin-transform-reserved-words@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==} + /@babel/plugin-transform-reserved-words@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 dev: false - /@babel/plugin-transform-runtime@7.23.9(@babel/core@7.23.9): - resolution: {integrity: sha512-A7clW3a0aSjm3ONU9o2HAILSegJCYlEZmOhmBRReVtIpY/Z/p7yIZ+wR41Z+UipwdGuqwtID/V/dOdZXjwi9gQ==} + /@babel/plugin-transform-runtime@7.25.4(@babel/core@7.25.2): + resolution: {integrity: sha512-8hsyG+KUYGY0coX6KUCDancA0Vw225KJ2HJO0yCNr1vq5r+lJTleDaJf0K7iOhjw4SWhu03TMBzYTJ9krmzULQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-plugin-utils': 7.22.5 - babel-plugin-polyfill-corejs2: 0.4.8(@babel/core@7.23.9) - babel-plugin-polyfill-corejs3: 0.9.0(@babel/core@7.23.9) - babel-plugin-polyfill-regenerator: 0.5.5(@babel/core@7.23.9) + '@babel/core': 7.25.2 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.25.2) + babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.25.2) + babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.25.2) semver: 6.3.1 transitivePeerDependencies: - supports-color dev: false - /@babel/plugin-transform-shorthand-properties@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==} + /@babel/plugin-transform-shorthand-properties@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 dev: false - /@babel/plugin-transform-spread@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==} + /@babel/plugin-transform-spread@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + transitivePeerDependencies: + - supports-color dev: false - /@babel/plugin-transform-sticky-regex@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==} + /@babel/plugin-transform-sticky-regex@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 dev: false - /@babel/plugin-transform-template-literals@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==} + /@babel/plugin-transform-template-literals@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 dev: false - /@babel/plugin-transform-typeof-symbol@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==} + /@babel/plugin-transform-typeof-symbol@7.24.8(@babel/core@7.25.2): + resolution: {integrity: sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 dev: false - /@babel/plugin-transform-typescript@7.23.6(@babel/core@7.23.9): - resolution: {integrity: sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA==} + /@babel/plugin-transform-typescript@7.25.2(@babel/core@7.25.2): + resolution: {integrity: sha512-lBwRvjSmqiMYe/pS0+1gggjJleUJi7NzjvQ1Fkqtt69hBa/0t1YuW/MLQMAPixfwaQOHUXsd6jeU3Z+vdGv3+A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.9) + '@babel/core': 7.25.2 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-create-class-features-plugin': 7.25.4(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + '@babel/plugin-syntax-typescript': 7.25.4(@babel/core@7.25.2) + transitivePeerDependencies: + - supports-color dev: false - /@babel/plugin-transform-unicode-escapes@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==} + /@babel/plugin-transform-unicode-escapes@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 dev: false - /@babel/plugin-transform-unicode-property-regex@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==} + /@babel/plugin-transform-unicode-property-regex@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.25.2 + '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 dev: false - /@babel/plugin-transform-unicode-regex@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==} + /@babel/plugin-transform-unicode-regex@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.25.2 + '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 dev: false - /@babel/plugin-transform-unicode-sets-regex@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==} + /@babel/plugin-transform-unicode-sets-regex@7.25.4(@babel/core@7.25.2): + resolution: {integrity: sha512-qesBxiWkgN1Q+31xUE9RcMk79eOXXDCv6tfyGMRSs4RGlioSg2WVyQAm07k726cSE56pa+Kb0y9epX2qaXzTvA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.25.2 + '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 dev: false - /@babel/preset-env@7.23.9(@babel/core@7.23.9): - resolution: {integrity: sha512-3kBGTNBBk9DQiPoXYS0g0BYlwTQYUTifqgKTjxUwEUkduRT2QOa0FPGBJ+NROQhGyYO5BuTJwGvBnqKDykac6A==} + /@babel/preset-env@7.25.4(@babel/core@7.25.2): + resolution: {integrity: sha512-W9Gyo+KmcxjGahtt3t9fb14vFRWvPpu5pT6GBlovAK6BTBcxgjfVMSQCfJl4oi35ODrxP6xx2Wr8LNST57Mraw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.23.5 - '@babel/core': 7.23.9 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.23.7(@babel/core@7.23.9) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.9) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.9) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.9) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.9) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-import-assertions': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-syntax-import-attributes': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.9) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.9) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.9) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.9) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.9) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.23.9) - '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-async-generator-functions': 7.23.9(@babel/core@7.23.9) - '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-block-scoped-functions': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-block-scoping': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-class-static-block': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-classes': 7.23.8(@babel/core@7.23.9) - '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-dotall-regex': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-duplicate-keys': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-dynamic-import': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-exponentiation-operator': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-export-namespace-from': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-for-of': 7.23.6(@babel/core@7.23.9) - '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-json-strings': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-logical-assignment-operators': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-member-expression-literals': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-modules-amd': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-modules-systemjs': 7.23.9(@babel/core@7.23.9) - '@babel/plugin-transform-modules-umd': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.23.9) - '@babel/plugin-transform-new-target': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-nullish-coalescing-operator': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-numeric-separator': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-object-rest-spread': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-object-super': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-optional-catch-binding': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-private-property-in-object': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-property-literals': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-regenerator': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-reserved-words': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-sticky-regex': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-template-literals': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-typeof-symbol': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-unicode-escapes': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-unicode-property-regex': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-unicode-regex': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-unicode-sets-regex': 7.23.3(@babel/core@7.23.9) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.23.9) - babel-plugin-polyfill-corejs2: 0.4.8(@babel/core@7.23.9) - babel-plugin-polyfill-corejs3: 0.9.0(@babel/core@7.23.9) - babel-plugin-polyfill-regenerator: 0.5.5(@babel/core@7.23.9) - core-js-compat: 3.36.0 + '@babel/compat-data': 7.25.4 + '@babel/core': 7.25.2 + '@babel/helper-compilation-targets': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-validator-option': 7.24.8 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.25.3(@babel/core@7.25.2) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.25.0(@babel/core@7.25.2) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.25.0(@babel/core@7.25.2) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.25.0(@babel/core@7.25.2) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.25.2) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.25.2) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.25.2) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-import-assertions': 7.25.6(@babel/core@7.25.2) + '@babel/plugin-syntax-import-attributes': 7.25.6(@babel/core@7.25.2) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.25.2) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.2) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.2) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.25.2) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.25.2) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.25.2) + '@babel/plugin-transform-arrow-functions': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-async-generator-functions': 7.25.4(@babel/core@7.25.2) + '@babel/plugin-transform-async-to-generator': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-block-scoped-functions': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-block-scoping': 7.25.0(@babel/core@7.25.2) + '@babel/plugin-transform-class-properties': 7.25.4(@babel/core@7.25.2) + '@babel/plugin-transform-class-static-block': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-classes': 7.25.4(@babel/core@7.25.2) + '@babel/plugin-transform-computed-properties': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-destructuring': 7.24.8(@babel/core@7.25.2) + '@babel/plugin-transform-dotall-regex': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-duplicate-keys': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.25.0(@babel/core@7.25.2) + '@babel/plugin-transform-dynamic-import': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-exponentiation-operator': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-export-namespace-from': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-for-of': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-function-name': 7.25.1(@babel/core@7.25.2) + '@babel/plugin-transform-json-strings': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-literals': 7.25.2(@babel/core@7.25.2) + '@babel/plugin-transform-logical-assignment-operators': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-member-expression-literals': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-modules-amd': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.25.2) + '@babel/plugin-transform-modules-systemjs': 7.25.0(@babel/core@7.25.2) + '@babel/plugin-transform-modules-umd': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-named-capturing-groups-regex': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-new-target': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-nullish-coalescing-operator': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-numeric-separator': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-object-rest-spread': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-object-super': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-optional-catch-binding': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-optional-chaining': 7.24.8(@babel/core@7.25.2) + '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-private-methods': 7.25.4(@babel/core@7.25.2) + '@babel/plugin-transform-private-property-in-object': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-property-literals': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-regenerator': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-reserved-words': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-shorthand-properties': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-spread': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-sticky-regex': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-template-literals': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-typeof-symbol': 7.24.8(@babel/core@7.25.2) + '@babel/plugin-transform-unicode-escapes': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-unicode-property-regex': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-unicode-regex': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-unicode-sets-regex': 7.25.4(@babel/core@7.25.2) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.25.2) + babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.25.2) + babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.25.2) + babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.25.2) + core-js-compat: 3.38.1 semver: 6.3.1 transitivePeerDependencies: - supports-color dev: false - /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.23.9): + /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.25.2): resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} peerDependencies: '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/types': 7.23.9 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/types': 7.25.6 esutils: 2.0.3 dev: false - /@babel/preset-react@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-tbkHOS9axH6Ysf2OUEqoSZ6T3Fa2SrNH6WTWSPBboxKzdxNc9qOICeLXkNG0ZEwbQ1HY8liwOce4aN/Ceyuq6w==} + /@babel/preset-react@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-AAH4lEkpmzFWrGVlHaxJB7RLH21uPQ9+He+eFLWHmF9IuFQVugz8eAsamaW0DXRrTfco5zj1wWtpdcXJUOfsag==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-transform-react-display-name': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.23.9) - '@babel/plugin-transform-react-pure-annotations': 7.23.3(@babel/core@7.23.9) + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-validator-option': 7.24.8 + '@babel/plugin-transform-react-display-name': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.25.2) + '@babel/plugin-transform-react-jsx-development': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-react-pure-annotations': 7.24.7(@babel/core@7.25.2) + transitivePeerDependencies: + - supports-color dev: false - /@babel/preset-typescript@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ==} + /@babel/preset-typescript@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-typescript': 7.23.6(@babel/core@7.23.9) + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-validator-option': 7.24.8 + '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.25.2) + '@babel/plugin-transform-typescript': 7.25.2(@babel/core@7.25.2) + transitivePeerDependencies: + - supports-color dev: false /@babel/regjsgen@0.8.0: resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} dev: false - /@babel/runtime-corejs3@7.23.9: - resolution: {integrity: sha512-oeOFTrYWdWXCvXGB5orvMTJ6gCZ9I6FBjR+M38iKNXCsPxr4xT0RTdg5uz1H7QP8pp74IzPtwritEr+JscqHXQ==} + /@babel/runtime-corejs3@7.25.6: + resolution: {integrity: sha512-Gz0Nrobx8szge6kQQ5Z5MX9L3ObqNwCQY1PSwSNzreFL7aHGxv8Fp2j3ETV6/wWdbiV+mW6OSm8oQhg3Tcsniw==} engines: {node: '>=6.9.0'} dependencies: - core-js-pure: 3.36.0 + core-js-pure: 3.38.1 regenerator-runtime: 0.14.1 dev: false - /@babel/runtime@7.23.9: - resolution: {integrity: sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==} + /@babel/runtime@7.25.6: + resolution: {integrity: sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.14.1 - /@babel/template@7.23.9: - resolution: {integrity: sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==} + /@babel/template@7.25.0: + resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.23.5 - '@babel/parser': 7.23.9 - '@babel/types': 7.23.9 + '@babel/code-frame': 7.24.7 + '@babel/parser': 7.25.6 + '@babel/types': 7.25.6 dev: false - /@babel/traverse@7.23.9: - resolution: {integrity: sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==} + /@babel/traverse@7.25.6: + resolution: {integrity: sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.23.5 - '@babel/generator': 7.23.6 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.23.9 - '@babel/types': 7.23.9 - debug: 4.3.4 + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.25.6 + '@babel/parser': 7.25.6 + '@babel/template': 7.25.0 + '@babel/types': 7.25.6 + debug: 4.3.7 globals: 11.12.0 transitivePeerDependencies: - supports-color dev: false - /@babel/types@7.23.9: - resolution: {integrity: sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==} + /@babel/types@7.25.6: + resolution: {integrity: sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-string-parser': 7.23.4 - '@babel/helper-validator-identifier': 7.22.20 + '@babel/helper-string-parser': 7.24.8 + '@babel/helper-validator-identifier': 7.24.7 to-fast-properties: 2.0.0 dev: false - /@biomejs/biome@1.5.3: - resolution: {integrity: sha512-yvZCa/g3akwTaAQ7PCwPWDCkZs3Qa5ONg/fgOUT9e6wAWsPftCjLQFPXBeGxPK30yZSSpgEmRCfpGTmVbUjGgg==} - engines: {node: '>=14.*'} + /@biomejs/biome@1.9.0: + resolution: {integrity: sha512-NlWh2F1wbxB3O/wE+aohGL0BziTS6e+6+dyFvpdeqLsbQZY7EsiklFb9W5Xs41U4vEmY7ANgdNp+oVDij6sQdA==} + engines: {node: '>=14.21.3'} hasBin: true requiresBuild: true optionalDependencies: - '@biomejs/cli-darwin-arm64': 1.5.3 - '@biomejs/cli-darwin-x64': 1.5.3 - '@biomejs/cli-linux-arm64': 1.5.3 - '@biomejs/cli-linux-arm64-musl': 1.5.3 - '@biomejs/cli-linux-x64': 1.5.3 - '@biomejs/cli-linux-x64-musl': 1.5.3 - '@biomejs/cli-win32-arm64': 1.5.3 - '@biomejs/cli-win32-x64': 1.5.3 + '@biomejs/cli-darwin-arm64': 1.9.0 + '@biomejs/cli-darwin-x64': 1.9.0 + '@biomejs/cli-linux-arm64': 1.9.0 + '@biomejs/cli-linux-arm64-musl': 1.9.0 + '@biomejs/cli-linux-x64': 1.9.0 + '@biomejs/cli-linux-x64-musl': 1.9.0 + '@biomejs/cli-win32-arm64': 1.9.0 + '@biomejs/cli-win32-x64': 1.9.0 dev: true - /@biomejs/cli-darwin-arm64@1.5.3: - resolution: {integrity: sha512-ImU7mh1HghEDyqNmxEZBoMPr8SxekkZuYcs+gynKlNW+TALQs7swkERiBLkG9NR0K1B3/2uVzlvYowXrmlW8hw==} - engines: {node: '>=14.*'} + /@biomejs/cli-darwin-arm64@1.9.0: + resolution: {integrity: sha512-2w9v/NRtYSmodx5QWQ49OGcyGKSECdWKbzc7n532Iq5sBhkKk996fd19icT6BuL54f01KFKRCRibAW+A2rg1Kw==} + engines: {node: '>=14.21.3'} cpu: [arm64] os: [darwin] requiresBuild: true dev: true optional: true - /@biomejs/cli-darwin-x64@1.5.3: - resolution: {integrity: sha512-vCdASqYnlpq/swErH7FD6nrFz0czFtK4k/iLgj0/+VmZVjineFPgevOb+Sr9vz0tk0GfdQO60bSpI74zU8M9Dw==} - engines: {node: '>=14.*'} + /@biomejs/cli-darwin-x64@1.9.0: + resolution: {integrity: sha512-fBVt8jJQi0zX0SJ1C+tdzUbRpuX/07sgtBXEhunWRkPjdi6W/2S1sYHQ1wKn4OKiRAKfHM2Cf2FNO7hQvY61dA==} + engines: {node: '>=14.21.3'} cpu: [x64] os: [darwin] requiresBuild: true dev: true optional: true - /@biomejs/cli-linux-arm64-musl@1.5.3: - resolution: {integrity: sha512-DYuMizUYUBYfS0IHGjDrOP1RGipqWfMGEvNEJ398zdtmCKLXaUvTimiox5dvx4X15mBK5M2m8wgWUgOP1giUpQ==} - engines: {node: '>=14.*'} + /@biomejs/cli-linux-arm64-musl@1.9.0: + resolution: {integrity: sha512-Jy84mZ4vcppdmWMgQWOCfd8qIVC/vHmlaS5gy7GXkdWlBKSQ56YxEXTU58MHTbZ16LwJQpK2IulqRCC/rqWLBA==} + engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@biomejs/cli-linux-arm64@1.5.3: - resolution: {integrity: sha512-cupBQv0sNF1OKqBfx7EDWMSsKwRrBUZfjXawT4s6hKV6ALq7p0QzWlxr/sDmbKMLOaLQtw2Qgu/77N9rm+f9Rg==} - engines: {node: '>=14.*'} + /@biomejs/cli-linux-arm64@1.9.0: + resolution: {integrity: sha512-l8U2lcqsl9yKPP5WUdIrKH//C1pWyM2cSUfcTBn6GSvXmsSjBNEdGSdM4Wfne777Oe/9ONaD1Ga53U2HksHHLw==} + engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@biomejs/cli-linux-x64-musl@1.5.3: - resolution: {integrity: sha512-UUHiAnlDqr2Y/LpvshBFhUYMWkl2/Jn+bi3U6jKuav0qWbbBKU/ByHgR4+NBxpKBYoCtWxhnmatfH1bpPIuZMw==} - engines: {node: '>=14.*'} + /@biomejs/cli-linux-x64-musl@1.9.0: + resolution: {integrity: sha512-N3enoFoIrkB6qJWyYfTiYmFdB1R/Mrij1dd1xBHqxxCKZY9GRkEswRX3F1Uqzo5T+9Iu8nAQobDqI/ygicYy/Q==} + engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /@biomejs/cli-linux-x64@1.5.3: - resolution: {integrity: sha512-YQrSArQvcv4FYsk7Q91Yv4uuu5F8hJyORVcv3zsjCLGkjIjx2RhjYLpTL733SNL7v33GmOlZY0eFR1ko38tuUw==} - engines: {node: '>=14.*'} + /@biomejs/cli-linux-x64@1.9.0: + resolution: {integrity: sha512-8jAzjrrJTj510pwq4aVs7ZKkOvEy1D+nzl9DKvrPh4TOyUw5Ie+0EDwXGE2RAkCKHkGNOQBZ78WtIdsATgz5sA==} + engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /@biomejs/cli-win32-arm64@1.5.3: - resolution: {integrity: sha512-HxatYH7vf/kX9nrD+pDYuV2GI9GV8EFo6cfKkahAecTuZLPxryHx1WEfJthp5eNsE0+09STGkKIKjirP0ufaZA==} - engines: {node: '>=14.*'} + /@biomejs/cli-win32-arm64@1.9.0: + resolution: {integrity: sha512-AIjwJTGfdWGMRluSQ9pDB29nzce077dfHh0/HMqzztKzgD3spyuo2R9VoaFpbR0hLHPWEH6g6OxxDO7hfkXNkQ==} + engines: {node: '>=14.21.3'} cpu: [arm64] os: [win32] requiresBuild: true dev: true optional: true - /@biomejs/cli-win32-x64@1.5.3: - resolution: {integrity: sha512-fMvbSouZEASU7mZH8SIJSANDm5OqsjgtVXlbUqxwed6BP7uuHRSs396Aqwh2+VoW8fwTpp6ybIUoC9FrzB0kyA==} - engines: {node: '>=14.*'} + /@biomejs/cli-win32-x64@1.9.0: + resolution: {integrity: sha512-4/4wTjNSoyNkm1SzcUaStDx46baX1VJRXtUoeEHjX9LfedR5N3qwZz5KfrRUnCd2fl5bmXK1CwMqKBkoF6zEiA==} + engines: {node: '>=14.21.3'} cpu: [x64] os: [win32] requiresBuild: true @@ -1657,16 +1746,16 @@ packages: resolution: {integrity: sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A==} dev: false - /@buf/meshtastic_protobufs.bufbuild_es@1.7.2-20240216123215-6b07c41c68c9.1(@bufbuild/protobuf@1.7.2): - resolution: {registry: https://buf.build/gen/npm/v1, tarball: https://buf.build/gen/npm/v1/@buf/meshtastic_protobufs.bufbuild_es/-/meshtastic_protobufs.bufbuild_es-1.7.2-20240216123215-6b07c41c68c9.1.tgz} + /@buf/meshtastic_protobufs.bufbuild_es@2.0.0-20240906232734-3da561588c55.2(@bufbuild/protobuf@2.0.0): + resolution: {registry: https://buf.build/gen/npm/v1, tarball: https://buf.build/gen/npm/v1/@buf/meshtastic_protobufs.bufbuild_es/-/meshtastic_protobufs.bufbuild_es-2.0.0-20240906232734-3da561588c55.2.tgz} peerDependencies: - '@bufbuild/protobuf': ^1.7.2 + '@bufbuild/protobuf': ^2.0.0 dependencies: - '@bufbuild/protobuf': 1.7.2 + '@bufbuild/protobuf': 2.0.0 dev: true - /@bufbuild/protobuf@1.7.2: - resolution: {integrity: sha512-i5GE2Dk5ekdlK1TR7SugY4LWRrKSfb5T1Qn4unpIMbfxoeGKERKQ59HG3iYewacGD10SR7UzevfPnh6my4tNmQ==} + /@bufbuild/protobuf@2.0.0: + resolution: {integrity: sha512-sw2JhwJyvyL0zlhG61aDzOVryEfJg2PDZFSV7i7IdC7nAE41WuXCru3QWLGiP87At0BMzKOoKO/FqEGoKygGZQ==} dev: true /@colors/colors@1.5.0: @@ -1681,12 +1770,12 @@ packages: engines: {node: '>=10.0.0'} dev: false - /@docsearch/css@3.5.2: - resolution: {integrity: sha512-SPiDHaWKQZpwR2siD0KQUwlStvIAnEyK6tAE2h2Wuoq8ue9skzhlyVQ1ddzOxX6khULnAALDiR/isSF3bnuciA==} + /@docsearch/css@3.6.1: + resolution: {integrity: sha512-VtVb5DS+0hRIprU2CO6ZQjK2Zg4QU5HrDM1+ix6rT0umsYvFvatMAnf97NHZlVWDaaLlx7GRfR/7FikANiM2Fg==} dev: false - /@docsearch/react@3.5.2(@algolia/client-search@4.22.1)(@types/react@18.2.56)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0): - resolution: {integrity: sha512-9Ahcrs5z2jq/DcAvYtvlqEBHImbm4YJI8M9y0x6Tqg598P40HTEkX7hsMcIuThI+hTFxRGZ9hll0Wygm2yEjng==} + /@docsearch/react@3.6.1(@algolia/client-search@4.24.0)(@types/react@18.3.5)(react-dom@18.3.1)(react@18.3.1)(search-insights@2.17.2): + resolution: {integrity: sha512-qXZkEPvybVhSXj0K7U3bXc233tk5e8PfhoZ6MhPOiik/qUQxYC+Dn9DnoS7CxHQQhHfCvTiN0eY9M12oRghEXw==} peerDependencies: '@types/react': '>= 16.8.0 < 19.0.0' react: '>= 16.8.0 < 19.0.0' @@ -1702,19 +1791,19 @@ packages: search-insights: optional: true dependencies: - '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.22.1)(search-insights@2.13.0) - '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.22.1) - '@docsearch/css': 3.5.2 - '@types/react': 18.2.56 - algoliasearch: 4.22.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - search-insights: 2.13.0 + '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)(search-insights@2.17.2) + '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0) + '@docsearch/css': 3.6.1 + '@types/react': 18.3.5 + algoliasearch: 4.24.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + search-insights: 2.17.2 transitivePeerDependencies: - '@algolia/client-search' dev: false - /@docusaurus/core@3.1.1(@docusaurus/types@3.1.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + /@docusaurus/core@3.1.1(@docusaurus/types@3.1.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2): resolution: {integrity: sha512-2nQfKFcf+MLEM7JXsXwQxPOmQAR6ytKMZVSx7tVi9HEm9WtfwBH1fp6bn8Gj4zLUhjWKCLoysQ9/Wm+EZCQ4yQ==} engines: {node: '>=18.0'} hasBin: true @@ -1722,77 +1811,77 @@ packages: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@babel/core': 7.23.9 - '@babel/generator': 7.23.6 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-transform-runtime': 7.23.9(@babel/core@7.23.9) - '@babel/preset-env': 7.23.9(@babel/core@7.23.9) - '@babel/preset-react': 7.23.3(@babel/core@7.23.9) - '@babel/preset-typescript': 7.23.3(@babel/core@7.23.9) - '@babel/runtime': 7.23.9 - '@babel/runtime-corejs3': 7.23.9 - '@babel/traverse': 7.23.9 + '@babel/core': 7.25.2 + '@babel/generator': 7.25.6 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-transform-runtime': 7.25.4(@babel/core@7.25.2) + '@babel/preset-env': 7.25.4(@babel/core@7.25.2) + '@babel/preset-react': 7.24.7(@babel/core@7.25.2) + '@babel/preset-typescript': 7.24.7(@babel/core@7.25.2) + '@babel/runtime': 7.25.6 + '@babel/runtime-corejs3': 7.25.6 + '@babel/traverse': 7.25.6 '@docusaurus/cssnano-preset': 3.1.1 '@docusaurus/logger': 3.1.1 - '@docusaurus/mdx-loader': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/react-loadable': 5.5.2(react@18.2.0) + '@docusaurus/mdx-loader': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.3.1)(react@18.3.1) + '@docusaurus/react-loadable': 5.5.2(react@18.3.1) '@docusaurus/utils': 3.1.1(@docusaurus/types@3.1.1) '@docusaurus/utils-common': 3.1.1(@docusaurus/types@3.1.1) '@docusaurus/utils-validation': 3.1.1(@docusaurus/types@3.1.1) '@slorber/static-site-generator-webpack-plugin': 4.0.7 '@svgr/webpack': 6.5.1 - autoprefixer: 10.4.17(postcss@8.4.35) - babel-loader: 9.1.3(@babel/core@7.23.9)(webpack@5.90.2) + autoprefixer: 10.4.20(postcss@8.4.47) + babel-loader: 9.1.3(@babel/core@7.25.2)(webpack@5.94.0) babel-plugin-dynamic-import-node: 2.3.3 boxen: 6.2.1 chalk: 4.1.2 chokidar: 3.6.0 clean-css: 5.3.3 - cli-table3: 0.6.3 + cli-table3: 0.6.5 combine-promises: 1.2.0 commander: 5.1.0 - copy-webpack-plugin: 11.0.0(webpack@5.90.2) - core-js: 3.36.0 - css-loader: 6.10.0(webpack@5.90.2) - css-minimizer-webpack-plugin: 4.2.2(clean-css@5.3.3)(webpack@5.90.2) - cssnano: 5.1.15(postcss@8.4.35) + copy-webpack-plugin: 11.0.0(webpack@5.94.0) + core-js: 3.38.1 + css-loader: 6.11.0(webpack@5.94.0) + css-minimizer-webpack-plugin: 4.2.2(clean-css@5.3.3)(webpack@5.94.0) + cssnano: 5.1.15(postcss@8.4.47) del: 6.1.1 - detect-port: 1.5.1 + detect-port: 1.6.1 escape-html: 1.0.3 eta: 2.2.0 - file-loader: 6.2.0(webpack@5.90.2) + file-loader: 6.2.0(webpack@5.94.0) fs-extra: 11.2.0 html-minifier-terser: 7.2.0 html-tags: 3.3.1 - html-webpack-plugin: 5.6.0(webpack@5.90.2) + html-webpack-plugin: 5.6.0(webpack@5.94.0) leven: 3.1.0 lodash: 4.17.21 - mini-css-extract-plugin: 2.8.0(webpack@5.90.2) - postcss: 8.4.35 - postcss-loader: 7.3.4(postcss@8.4.35)(typescript@5.3.3)(webpack@5.90.2) + mini-css-extract-plugin: 2.9.1(webpack@5.94.0) + postcss: 8.4.47 + postcss-loader: 7.3.4(postcss@8.4.47)(typescript@5.6.2)(webpack@5.94.0) prompts: 2.4.2 - react: 18.2.0 - react-dev-utils: 12.0.1(typescript@5.3.3)(webpack@5.90.2) - react-dom: 18.2.0(react@18.2.0) - react-helmet-async: 1.3.0(react-dom@18.2.0)(react@18.2.0) - react-loadable: /@docusaurus/react-loadable@5.5.2(react@18.2.0) - react-loadable-ssr-addon-v5-slorber: 1.0.1(@docusaurus/react-loadable@5.5.2)(webpack@5.90.2) - react-router: 5.3.4(react@18.2.0) - react-router-config: 5.1.1(react-router@5.3.4)(react@18.2.0) - react-router-dom: 5.3.4(react@18.2.0) + react: 18.3.1 + react-dev-utils: 12.0.1(typescript@5.6.2)(webpack@5.94.0) + react-dom: 18.3.1(react@18.3.1) + react-helmet-async: 1.3.0(react-dom@18.3.1)(react@18.3.1) + react-loadable: /@docusaurus/react-loadable@5.5.2(react@18.3.1) + react-loadable-ssr-addon-v5-slorber: 1.0.1(@docusaurus/react-loadable@5.5.2)(webpack@5.94.0) + react-router: 5.3.4(react@18.3.1) + react-router-config: 5.1.1(react-router@5.3.4)(react@18.3.1) + react-router-dom: 5.3.4(react@18.3.1) rtl-detect: 1.1.2 - semver: 7.6.0 + semver: 7.6.3 serve-handler: 6.1.5 shelljs: 0.8.5 - terser-webpack-plugin: 5.3.10(webpack@5.90.2) - tslib: 2.6.2 + terser-webpack-plugin: 5.3.10(webpack@5.94.0) + tslib: 2.7.0 update-notifier: 6.0.2 - url-loader: 4.1.1(file-loader@6.2.0)(webpack@5.90.2) - webpack: 5.90.2 - webpack-bundle-analyzer: 4.10.1 - webpack-dev-server: 4.15.1(webpack@5.90.2) + url-loader: 4.1.1(file-loader@6.2.0)(webpack@5.94.0) + webpack: 5.94.0 + webpack-bundle-analyzer: 4.10.2 + webpack-dev-server: 4.15.2(webpack@5.94.0) webpack-merge: 5.10.0 - webpackbar: 5.0.2(webpack@5.90.2) + webpackbar: 5.0.2(webpack@5.94.0) transitivePeerDependencies: - '@docusaurus/types' - '@parcel/css' @@ -1817,10 +1906,10 @@ packages: resolution: {integrity: sha512-LnoIDjJWbirdbVZDMq+4hwmrTl2yHDnBf9MLG9qyExeAE3ac35s4yUhJI8yyTCdixzNfKit4cbXblzzqMu4+8g==} engines: {node: '>=18.0'} dependencies: - cssnano-preset-advanced: 5.3.10(postcss@8.4.35) - postcss: 8.4.35 - postcss-sort-media-queries: 4.4.1(postcss@8.4.35) - tslib: 2.6.2 + cssnano-preset-advanced: 5.3.10(postcss@8.4.47) + postcss: 8.4.47 + postcss-sort-media-queries: 4.4.1(postcss@8.4.47) + tslib: 2.7.0 dev: false /@docusaurus/logger@3.1.1: @@ -1828,44 +1917,44 @@ packages: engines: {node: '>=18.0'} dependencies: chalk: 4.1.2 - tslib: 2.6.2 + tslib: 2.7.0 dev: false - /@docusaurus/mdx-loader@3.1.1(@docusaurus/types@3.1.1)(react-dom@18.2.0)(react@18.2.0): + /@docusaurus/mdx-loader@3.1.1(@docusaurus/types@3.1.1)(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-xN2IccH9+sv7TmxwsDJNS97BHdmlqWwho+kIVY4tcCXkp+k4QuzvWBeunIMzeayY4Fu13A6sAjHGv5qm72KyGA==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@babel/parser': 7.23.9 - '@babel/traverse': 7.23.9 + '@babel/parser': 7.25.6 + '@babel/traverse': 7.25.6 '@docusaurus/logger': 3.1.1 '@docusaurus/utils': 3.1.1(@docusaurus/types@3.1.1) '@docusaurus/utils-validation': 3.1.1(@docusaurus/types@3.1.1) '@mdx-js/mdx': 3.0.1 '@slorber/remark-comment': 1.0.0 escape-html: 1.0.3 - estree-util-value-to-estree: 3.0.1 - file-loader: 6.2.0(webpack@5.90.2) + estree-util-value-to-estree: 3.1.2 + file-loader: 6.2.0(webpack@5.94.0) fs-extra: 11.2.0 image-size: 1.1.1 mdast-util-mdx: 3.0.0 mdast-util-to-string: 4.0.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) rehype-raw: 7.0.0 remark-directive: 3.0.0 remark-emoji: 4.0.1 remark-frontmatter: 5.0.0 remark-gfm: 4.0.0 stringify-object: 3.3.0 - tslib: 2.6.2 - unified: 11.0.4 + tslib: 2.7.0 + unified: 11.0.5 unist-util-visit: 5.0.0 - url-loader: 4.1.1(file-loader@6.2.0)(webpack@5.90.2) - vfile: 6.0.1 - webpack: 5.90.2 + url-loader: 4.1.1(file-loader@6.2.0)(webpack@5.94.0) + vfile: 6.0.3 + webpack: 5.94.0 transitivePeerDependencies: - '@docusaurus/types' - '@swc/core' @@ -1875,22 +1964,22 @@ packages: - webpack-cli dev: false - /@docusaurus/module-type-aliases@3.1.1(react-dom@18.2.0)(react@18.2.0): + /@docusaurus/module-type-aliases@3.1.1(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-xBJyx0TMfAfVZ9ZeIOb1awdXgR4YJMocIEzTps91rq+hJDFJgJaylDtmoRhUxkwuYmNK1GJpW95b7DLztSBJ3A==} peerDependencies: react: '*' react-dom: '*' dependencies: - '@docusaurus/react-loadable': 5.5.2(react@18.2.0) - '@docusaurus/types': 3.1.1(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/react-loadable': 5.5.2(react@18.3.1) + '@docusaurus/types': 3.1.1(react-dom@18.3.1)(react@18.3.1) '@types/history': 4.7.11 - '@types/react': 18.2.56 + '@types/react': 18.3.5 '@types/react-router-config': 5.0.11 '@types/react-router-dom': 5.3.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-helmet-async: 2.0.4(react-dom@18.2.0)(react@18.2.0) - react-loadable: /@docusaurus/react-loadable@5.5.2(react@18.2.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-helmet-async: 2.0.5(react@18.3.1) + react-loadable: /@docusaurus/react-loadable@5.5.2(react@18.3.1) transitivePeerDependencies: - '@swc/core' - esbuild @@ -1898,32 +1987,32 @@ packages: - uglify-js - webpack-cli - /@docusaurus/plugin-content-blog@3.1.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + /@docusaurus/plugin-content-blog@3.1.1(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2): resolution: {integrity: sha512-ew/3VtVoG3emoAKmoZl7oKe1zdFOsI0NbcHS26kIxt2Z8vcXKCUgK9jJJrz0TbOipyETPhqwq4nbitrY3baibg==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) '@docusaurus/logger': 3.1.1 - '@docusaurus/mdx-loader': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/types': 3.1.1(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/mdx-loader': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.3.1)(react@18.3.1) + '@docusaurus/types': 3.1.1(react-dom@18.3.1)(react@18.3.1) '@docusaurus/utils': 3.1.1(@docusaurus/types@3.1.1) '@docusaurus/utils-common': 3.1.1(@docusaurus/types@3.1.1) '@docusaurus/utils-validation': 3.1.1(@docusaurus/types@3.1.1) - cheerio: 1.0.0-rc.12 + cheerio: 1.0.0 feed: 4.2.2 fs-extra: 11.2.0 lodash: 4.17.21 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) reading-time: 1.5.0 srcset: 4.0.0 - tslib: 2.6.2 + tslib: 2.7.0 unist-util-visit: 5.0.0 utility-types: 3.11.0 - webpack: 5.90.2 + webpack: 5.94.0 transitivePeerDependencies: - '@parcel/css' - '@rspack/core' @@ -1943,18 +2032,18 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-content-docs@3.1.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + /@docusaurus/plugin-content-docs@3.1.1(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2): resolution: {integrity: sha512-lhFq4E874zw0UOH7ujzxnCayOyAt0f9YPVYSb9ohxrdCM8B4szxitUw9rIX4V9JLLHVoqIJb6k+lJJ1jrcGJ0A==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) '@docusaurus/logger': 3.1.1 - '@docusaurus/mdx-loader': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/module-type-aliases': 3.1.1(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/types': 3.1.1(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/mdx-loader': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.3.1)(react@18.3.1) + '@docusaurus/module-type-aliases': 3.1.1(react-dom@18.3.1)(react@18.3.1) + '@docusaurus/types': 3.1.1(react-dom@18.3.1)(react@18.3.1) '@docusaurus/utils': 3.1.1(@docusaurus/types@3.1.1) '@docusaurus/utils-validation': 3.1.1(@docusaurus/types@3.1.1) '@types/react-router-config': 5.0.11 @@ -1962,11 +2051,11 @@ packages: fs-extra: 11.2.0 js-yaml: 4.1.0 lodash: 4.17.21 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - tslib: 2.6.2 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + tslib: 2.7.0 utility-types: 3.11.0 - webpack: 5.90.2 + webpack: 5.94.0 transitivePeerDependencies: - '@parcel/css' - '@rspack/core' @@ -1986,23 +2075,23 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-content-pages@3.1.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + /@docusaurus/plugin-content-pages@3.1.1(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2): resolution: {integrity: sha512-NQHncNRAJbyLtgTim9GlEnNYsFhuCxaCNkMwikuxLTiGIPH7r/jpb7O3f3jUMYMebZZZrDq5S7om9a6rvB/YCA==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/mdx-loader': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/types': 3.1.1(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) + '@docusaurus/mdx-loader': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.3.1)(react@18.3.1) + '@docusaurus/types': 3.1.1(react-dom@18.3.1)(react@18.3.1) '@docusaurus/utils': 3.1.1(@docusaurus/types@3.1.1) '@docusaurus/utils-validation': 3.1.1(@docusaurus/types@3.1.1) fs-extra: 11.2.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - tslib: 2.6.2 - webpack: 5.90.2 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + tslib: 2.7.0 + webpack: 5.94.0 transitivePeerDependencies: - '@parcel/css' - '@rspack/core' @@ -2022,21 +2111,21 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-debug@3.1.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + /@docusaurus/plugin-debug@3.1.1(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2): resolution: {integrity: sha512-xWeMkueM9wE/8LVvl4+Qf1WqwXmreMjI5Kgr7GYCDoJ8zu4kD+KaMhrh7py7MNM38IFvU1RfrGKacCEe2DRRfQ==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/types': 3.1.1(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) + '@docusaurus/types': 3.1.1(react-dom@18.3.1)(react@18.3.1) '@docusaurus/utils': 3.1.1(@docusaurus/types@3.1.1) fs-extra: 11.2.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-json-view-lite: 1.2.1(react@18.2.0) - tslib: 2.6.2 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-json-view-lite: 1.5.0(react@18.3.1) + tslib: 2.7.0 transitivePeerDependencies: - '@parcel/css' - '@rspack/core' @@ -2056,19 +2145,19 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-google-analytics@3.1.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + /@docusaurus/plugin-google-analytics@3.1.1(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2): resolution: {integrity: sha512-+q2UpWTqVi8GdlLoSlD5bS/YpxW+QMoBwrPrUH/NpvpuOi0Of7MTotsQf9JWd3hymZxl2uu1o3PIrbpxfeDFDQ==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/types': 3.1.1(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) + '@docusaurus/types': 3.1.1(react-dom@18.3.1)(react@18.3.1) '@docusaurus/utils-validation': 3.1.1(@docusaurus/types@3.1.1) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - tslib: 2.6.2 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + tslib: 2.7.0 transitivePeerDependencies: - '@parcel/css' - '@rspack/core' @@ -2088,20 +2177,20 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-google-gtag@3.1.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + /@docusaurus/plugin-google-gtag@3.1.1(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2): resolution: {integrity: sha512-0mMPiBBlQ5LFHTtjxuvt/6yzh8v7OxLi3CbeEsxXZpUzcKO/GC7UA1VOWUoBeQzQL508J12HTAlR3IBU9OofSw==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/types': 3.1.1(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) + '@docusaurus/types': 3.1.1(react-dom@18.3.1)(react@18.3.1) '@docusaurus/utils-validation': 3.1.1(@docusaurus/types@3.1.1) '@types/gtag.js': 0.0.12 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - tslib: 2.6.2 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + tslib: 2.7.0 transitivePeerDependencies: - '@parcel/css' - '@rspack/core' @@ -2121,19 +2210,19 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-google-tag-manager@3.1.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + /@docusaurus/plugin-google-tag-manager@3.1.1(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2): resolution: {integrity: sha512-d07bsrMLdDIryDtY17DgqYUbjkswZQr8cLWl4tzXrt5OR/T/zxC1SYKajzB3fd87zTu5W5klV5GmUwcNSMXQXA==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/types': 3.1.1(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) + '@docusaurus/types': 3.1.1(react-dom@18.3.1)(react@18.3.1) '@docusaurus/utils-validation': 3.1.1(@docusaurus/types@3.1.1) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - tslib: 2.6.2 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + tslib: 2.7.0 transitivePeerDependencies: - '@parcel/css' - '@rspack/core' @@ -2153,24 +2242,24 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-sitemap@3.1.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + /@docusaurus/plugin-sitemap@3.1.1(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2): resolution: {integrity: sha512-iJ4hCaMmDaUqRv131XJdt/C/jJQx8UreDWTRqZKtNydvZVh/o4yXGRRFOplea1D9b/zpwL1Y+ZDwX7xMhIOTmg==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) '@docusaurus/logger': 3.1.1 - '@docusaurus/types': 3.1.1(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/types': 3.1.1(react-dom@18.3.1)(react@18.3.1) '@docusaurus/utils': 3.1.1(@docusaurus/types@3.1.1) '@docusaurus/utils-common': 3.1.1(@docusaurus/types@3.1.1) '@docusaurus/utils-validation': 3.1.1(@docusaurus/types@3.1.1) fs-extra: 11.2.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - sitemap: 7.1.1 - tslib: 2.6.2 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + sitemap: 7.1.2 + tslib: 2.7.0 transitivePeerDependencies: - '@parcel/css' - '@rspack/core' @@ -2190,28 +2279,28 @@ packages: - webpack-cli dev: false - /@docusaurus/preset-classic@3.1.1(@algolia/client-search@4.22.1)(@types/react@18.2.56)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@5.3.3): + /@docusaurus/preset-classic@3.1.1(@algolia/client-search@4.24.0)(@types/react@18.3.5)(react-dom@18.3.1)(react@18.3.1)(search-insights@2.17.2)(typescript@5.6.2): resolution: {integrity: sha512-jG4ys/hWYf69iaN/xOmF+3kjs4Nnz1Ay3CjFLDtYa8KdxbmUhArA9HmP26ru5N0wbVWhY+6kmpYhTJpez5wTyg==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-content-blog': 3.1.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-content-docs': 3.1.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-content-pages': 3.1.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-debug': 3.1.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-google-analytics': 3.1.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-google-gtag': 3.1.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-google-tag-manager': 3.1.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-sitemap': 3.1.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/theme-classic': 3.1.1(@types/react@18.2.56)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/theme-common': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/theme-search-algolia': 3.1.1(@algolia/client-search@4.22.1)(@docusaurus/types@3.1.1)(@types/react@18.2.56)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@5.3.3) - '@docusaurus/types': 3.1.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) + '@docusaurus/plugin-content-blog': 3.1.1(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) + '@docusaurus/plugin-content-docs': 3.1.1(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) + '@docusaurus/plugin-content-pages': 3.1.1(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) + '@docusaurus/plugin-debug': 3.1.1(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) + '@docusaurus/plugin-google-analytics': 3.1.1(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) + '@docusaurus/plugin-google-gtag': 3.1.1(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) + '@docusaurus/plugin-google-tag-manager': 3.1.1(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) + '@docusaurus/plugin-sitemap': 3.1.1(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) + '@docusaurus/theme-classic': 3.1.1(@types/react@18.3.5)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) + '@docusaurus/theme-common': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) + '@docusaurus/theme-search-algolia': 3.1.1(@algolia/client-search@4.24.0)(@docusaurus/types@3.1.1)(@types/react@18.3.5)(react-dom@18.3.1)(react@18.3.1)(search-insights@2.17.2)(typescript@5.6.2) + '@docusaurus/types': 3.1.1(react-dom@18.3.1)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) transitivePeerDependencies: - '@algolia/client-search' - '@parcel/css' @@ -2234,48 +2323,48 @@ packages: - webpack-cli dev: false - /@docusaurus/react-loadable@5.5.2(react@18.2.0): + /@docusaurus/react-loadable@5.5.2(react@18.3.1): resolution: {integrity: sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ==} peerDependencies: react: '*' dependencies: - '@types/react': 18.2.56 + '@types/react': 18.3.5 prop-types: 15.8.1 - react: 18.2.0 + react: 18.3.1 - /@docusaurus/theme-classic@3.1.1(@types/react@18.2.56)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + /@docusaurus/theme-classic@3.1.1(@types/react@18.3.5)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2): resolution: {integrity: sha512-GiPE/jbWM8Qv1A14lk6s9fhc0LhPEQ00eIczRO4QL2nAQJZXkjPG6zaVx+1cZxPFWbAsqSjKe2lqkwF3fGkQ7Q==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/mdx-loader': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/module-type-aliases': 3.1.1(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/plugin-content-blog': 3.1.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-content-docs': 3.1.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-content-pages': 3.1.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/theme-common': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) + '@docusaurus/mdx-loader': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.3.1)(react@18.3.1) + '@docusaurus/module-type-aliases': 3.1.1(react-dom@18.3.1)(react@18.3.1) + '@docusaurus/plugin-content-blog': 3.1.1(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) + '@docusaurus/plugin-content-docs': 3.1.1(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) + '@docusaurus/plugin-content-pages': 3.1.1(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) + '@docusaurus/theme-common': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) '@docusaurus/theme-translations': 3.1.1 - '@docusaurus/types': 3.1.1(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/types': 3.1.1(react-dom@18.3.1)(react@18.3.1) '@docusaurus/utils': 3.1.1(@docusaurus/types@3.1.1) '@docusaurus/utils-common': 3.1.1(@docusaurus/types@3.1.1) '@docusaurus/utils-validation': 3.1.1(@docusaurus/types@3.1.1) - '@mdx-js/react': 3.0.1(@types/react@18.2.56)(react@18.2.0) - clsx: 2.1.0 + '@mdx-js/react': 3.0.1(@types/react@18.3.5)(react@18.3.1) + clsx: 2.1.1 copy-text-to-clipboard: 3.2.0 infima: 0.2.0-alpha.43 lodash: 4.17.21 nprogress: 0.2.0 - postcss: 8.4.35 - prism-react-renderer: 2.3.1(react@18.2.0) + postcss: 8.4.47 + prism-react-renderer: 2.4.0(react@18.3.1) prismjs: 1.29.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-router-dom: 5.3.4(react@18.2.0) - rtlcss: 4.1.1 - tslib: 2.6.2 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-router-dom: 5.3.4(react@18.3.1) + rtlcss: 4.3.0 + tslib: 2.7.0 utility-types: 3.11.0 transitivePeerDependencies: - '@parcel/css' @@ -2297,29 +2386,29 @@ packages: - webpack-cli dev: false - /@docusaurus/theme-common@3.1.1(@docusaurus/types@3.1.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + /@docusaurus/theme-common@3.1.1(@docusaurus/types@3.1.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2): resolution: {integrity: sha512-38urZfeMhN70YaXkwIGXmcUcv2CEYK/2l4b05GkJPrbEbgpsIZM3Xc+Js2ehBGGZmfZq8GjjQ5RNQYG+MYzCYg==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/mdx-loader': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/module-type-aliases': 3.1.1(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/plugin-content-blog': 3.1.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-content-docs': 3.1.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-content-pages': 3.1.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/mdx-loader': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.3.1)(react@18.3.1) + '@docusaurus/module-type-aliases': 3.1.1(react-dom@18.3.1)(react@18.3.1) + '@docusaurus/plugin-content-blog': 3.1.1(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) + '@docusaurus/plugin-content-docs': 3.1.1(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) + '@docusaurus/plugin-content-pages': 3.1.1(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) '@docusaurus/utils': 3.1.1(@docusaurus/types@3.1.1) '@docusaurus/utils-common': 3.1.1(@docusaurus/types@3.1.1) '@types/history': 4.7.11 - '@types/react': 18.2.56 + '@types/react': 18.3.5 '@types/react-router-config': 5.0.11 - clsx: 2.1.0 + clsx: 2.1.1 parse-numeric-range: 1.3.0 - prism-react-renderer: 2.3.1(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - tslib: 2.6.2 + prism-react-renderer: 2.4.0(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + tslib: 2.7.0 utility-types: 3.11.0 transitivePeerDependencies: - '@docusaurus/types' @@ -2341,22 +2430,22 @@ packages: - webpack-cli dev: false - /@docusaurus/theme-mermaid@3.1.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + /@docusaurus/theme-mermaid@3.1.1(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2): resolution: {integrity: sha512-O6u9/7QX/ZapV4HJJSzNs0Jir1KA/LRLORWYeDvbGswqZNusj6q4iLELrKIClysJ3PB3zWUzyKtI/wjIKiV1vA==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/module-type-aliases': 3.1.1(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/theme-common': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/types': 3.1.1(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) + '@docusaurus/module-type-aliases': 3.1.1(react-dom@18.3.1)(react@18.3.1) + '@docusaurus/theme-common': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) + '@docusaurus/types': 3.1.1(react-dom@18.3.1)(react@18.3.1) '@docusaurus/utils-validation': 3.1.1(@docusaurus/types@3.1.1) - mermaid: 10.8.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - tslib: 2.6.2 + mermaid: 10.9.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + tslib: 2.7.0 transitivePeerDependencies: - '@parcel/css' - '@rspack/core' @@ -2376,30 +2465,30 @@ packages: - webpack-cli dev: false - /@docusaurus/theme-search-algolia@3.1.1(@algolia/client-search@4.22.1)(@docusaurus/types@3.1.1)(@types/react@18.2.56)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@5.3.3): + /@docusaurus/theme-search-algolia@3.1.1(@algolia/client-search@4.24.0)(@docusaurus/types@3.1.1)(@types/react@18.3.5)(react-dom@18.3.1)(react@18.3.1)(search-insights@2.17.2)(typescript@5.6.2): resolution: {integrity: sha512-tBH9VY5EpRctVdaAhT+b1BY8y5dyHVZGFXyCHgTrvcXQy5CV4q7serEX7U3SveNT9zksmchPyct6i1sFDC4Z5g==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docsearch/react': 3.5.2(@algolia/client-search@4.22.1)(@types/react@18.2.56)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0) - '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docsearch/react': 3.6.1(@algolia/client-search@4.24.0)(@types/react@18.3.5)(react-dom@18.3.1)(react@18.3.1)(search-insights@2.17.2) + '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) '@docusaurus/logger': 3.1.1 - '@docusaurus/plugin-content-docs': 3.1.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/theme-common': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/plugin-content-docs': 3.1.1(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) + '@docusaurus/theme-common': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.2) '@docusaurus/theme-translations': 3.1.1 '@docusaurus/utils': 3.1.1(@docusaurus/types@3.1.1) '@docusaurus/utils-validation': 3.1.1(@docusaurus/types@3.1.1) - algoliasearch: 4.22.1 - algoliasearch-helper: 3.16.2(algoliasearch@4.22.1) - clsx: 2.1.0 + algoliasearch: 4.24.0 + algoliasearch-helper: 3.22.5(algoliasearch@4.24.0) + clsx: 2.1.1 eta: 2.2.0 fs-extra: 11.2.0 lodash: 4.17.21 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - tslib: 2.6.2 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + tslib: 2.7.0 utility-types: 3.11.0 transitivePeerDependencies: - '@algolia/client-search' @@ -2429,10 +2518,10 @@ packages: engines: {node: '>=18.0'} dependencies: fs-extra: 11.2.0 - tslib: 2.6.2 + tslib: 2.7.0 dev: false - /@docusaurus/types@3.1.1(react-dom@18.2.0)(react@18.2.0): + /@docusaurus/types@3.1.1(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-grBqOLnubUecgKFXN9q3uit2HFbCxTWX4Fam3ZFbMN0sWX9wOcDoA7lwdX/8AmeL20Oc4kQvWVgNrsT8bKRvzg==} peerDependencies: react: ^18.0.0 @@ -2440,14 +2529,14 @@ packages: dependencies: '@mdx-js/mdx': 3.0.1 '@types/history': 4.7.11 - '@types/react': 18.2.56 + '@types/react': 18.3.5 commander: 5.1.0 - joi: 17.12.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-helmet-async: 1.3.0(react-dom@18.2.0)(react@18.2.0) + joi: 17.13.3 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-helmet-async: 1.3.0(react-dom@18.3.1)(react@18.3.1) utility-types: 3.11.0 - webpack: 5.90.2 + webpack: 5.94.0 webpack-merge: 5.10.0 transitivePeerDependencies: - '@swc/core' @@ -2465,8 +2554,8 @@ packages: '@docusaurus/types': optional: true dependencies: - '@docusaurus/types': 3.1.1(react-dom@18.2.0)(react@18.2.0) - tslib: 2.6.2 + '@docusaurus/types': 3.1.1(react-dom@18.3.1)(react@18.3.1) + tslib: 2.7.0 dev: false /@docusaurus/utils-validation@3.1.1(@docusaurus/types@3.1.1): @@ -2475,9 +2564,9 @@ packages: dependencies: '@docusaurus/logger': 3.1.1 '@docusaurus/utils': 3.1.1(@docusaurus/types@3.1.1) - joi: 17.12.1 + joi: 17.13.3 js-yaml: 4.1.0 - tslib: 2.6.2 + tslib: 2.7.0 transitivePeerDependencies: - '@docusaurus/types' - '@swc/core' @@ -2497,23 +2586,23 @@ packages: optional: true dependencies: '@docusaurus/logger': 3.1.1 - '@docusaurus/types': 3.1.1(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/types': 3.1.1(react-dom@18.3.1)(react@18.3.1) '@svgr/webpack': 6.5.1 escape-string-regexp: 4.0.0 - file-loader: 6.2.0(webpack@5.90.2) + file-loader: 6.2.0(webpack@5.94.0) fs-extra: 11.2.0 github-slugger: 1.5.0 globby: 11.1.0 gray-matter: 4.0.3 - jiti: 1.21.0 + jiti: 1.21.6 js-yaml: 4.1.0 lodash: 4.17.21 - micromatch: 4.0.5 + micromatch: 4.0.8 resolve-pathname: 3.0.0 shelljs: 0.8.5 - tslib: 2.6.2 - url-loader: 4.1.1(file-loader@6.2.0)(webpack@5.90.2) - webpack: 5.90.2 + tslib: 2.7.0 + url-loader: 4.1.1(file-loader@6.2.0)(webpack@5.94.0) + webpack: 5.94.0 transitivePeerDependencies: - '@swc/core' - esbuild @@ -2522,15 +2611,15 @@ packages: - webpack-cli dev: false - /@giscus/react@3.0.0(react-dom@18.2.0)(react@18.2.0): + /@giscus/react@3.0.0(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-hgCjLpg3Wgh8VbTF5p8ZLcIHI74wvDk1VIFv12+eKhenNVUDjgwNg2B1aq/3puyHOad47u/ZSyqiMtohjy/OOA==} peerDependencies: react: ^16 || ^17 || ^18 react-dom: ^16 || ^17 || ^18 dependencies: giscus: 1.5.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) dev: false /@hapi/hoek@9.3.0: @@ -2541,12 +2630,12 @@ packages: dependencies: '@hapi/hoek': 9.3.0 - /@heroicons/react@2.1.1(react@18.2.0): - resolution: {integrity: sha512-JyyN9Lo66kirbCMuMMRPtJxtKJoIsXKS569ebHGGRKbl8s4CtUfLnyKJxteA+vIKySocO4s1SkTkGS4xtG/yEA==} + /@heroicons/react@2.1.5(react@18.3.1): + resolution: {integrity: sha512-FuzFN+BsHa+7OxbvAERtgBTNeZpUjgM/MIizfVkSCL2/edriN0Hx/DWRCR//aPYwO5QX/YlgLGXk+E3PcfZwjA==} peerDependencies: react: '>= 16' dependencies: - react: 18.2.0 + react: 18.3.1 dev: false /@isaacs/cliui@8.0.2: @@ -2574,44 +2663,44 @@ packages: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.11.19 - '@types/yargs': 17.0.32 + '@types/node': 20.16.5 + '@types/yargs': 17.0.33 chalk: 4.1.2 dev: false - /@jridgewell/gen-mapping@0.3.3: - resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} + /@jridgewell/gen-mapping@0.3.5: + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} engines: {node: '>=6.0.0'} dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.22 + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 /@jridgewell/resolve-uri@3.1.2: resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} - /@jridgewell/set-array@1.1.2: - resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + /@jridgewell/set-array@1.2.1: + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} engines: {node: '>=6.0.0'} - /@jridgewell/source-map@0.3.5: - resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} + /@jridgewell/source-map@0.3.6: + resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} dependencies: - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.22 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 - /@jridgewell/sourcemap-codec@1.4.15: - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + /@jridgewell/sourcemap-codec@1.5.0: + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - /@jridgewell/trace-mapping@0.3.22: - resolution: {integrity: sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==} + /@jridgewell/trace-mapping@0.3.25: + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/sourcemap-codec': 1.5.0 - /@leichtgewicht/ip-codec@2.0.4: - resolution: {integrity: sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==} + /@leichtgewicht/ip-codec@2.0.5: + resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} dev: false /@lit-labs/ssr-dom-shim@1.2.1: @@ -2628,9 +2717,9 @@ packages: resolution: {integrity: sha512-eIQ4QTrOWyL3LWEe/bu6Taqzq2HQvHcyTMaOrI95P2/LmJE7AsfPfgJGuFLPVqBUE1BC1rik3VIhU+s9u72arA==} dependencies: '@types/estree': 1.0.5 - '@types/estree-jsx': 1.0.4 + '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 - '@types/mdx': 2.0.11 + '@types/mdx': 2.0.13 collapse-white-space: 2.1.0 devlop: 1.1.0 estree-util-build-jsx: 3.0.1 @@ -2645,31 +2734,31 @@ packages: remark-parse: 11.0.0 remark-rehype: 11.1.0 source-map: 0.7.4 - unified: 11.0.4 + unified: 11.0.5 unist-util-position-from-estree: 2.0.0 unist-util-stringify-position: 4.0.0 unist-util-visit: 5.0.0 - vfile: 6.0.1 + vfile: 6.0.3 transitivePeerDependencies: - supports-color - /@mdx-js/react@3.0.1(@types/react@18.2.56)(react@18.2.0): + /@mdx-js/react@3.0.1(@types/react@18.3.5)(react@18.3.1): resolution: {integrity: sha512-9ZrPIU4MGf6et1m1ov3zKf+q9+deetI51zprKB1D/z3NOb+rUxxtEl3mCjW5wTGh6VhRdwPueh1oRzi6ezkA8A==} peerDependencies: '@types/react': '>=16' react: '>=16' dependencies: - '@types/mdx': 2.0.11 - '@types/react': 18.2.56 - react: 18.2.0 + '@types/mdx': 2.0.13 + '@types/react': 18.3.5 + react: 18.3.1 dev: false - /@meshtastic/js@2.2.23-0: - resolution: {integrity: sha512-67L2xcgqIa+INuZBuMNikCNBLWvtOmGJIMDOsZx84pw6MLYAKAoX93SG0qKOvWHfsDyThBxjHzm2lAje8xC9/g==} + /@meshtastic/js@2.3.7-5: + resolution: {integrity: sha512-77wYoCl83PgRLkvWE8ko0YFm5LbolrfFPqoBkwLd2AFgZOHGsHTlUwA7cj82yhZM3f4mf7yTFxl+8CBawEAXRA==} dependencies: crc: 4.3.2 - sub-events: 1.9.0 - tslog: 4.9.2 + ste-simple-events: 3.0.11 + tslog: 4.9.3 transitivePeerDependencies: - buffer dev: false @@ -2690,7 +2779,7 @@ packages: engines: {node: '>= 8'} dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.16.0 + fastq: 1.17.1 /@pkgjs/parseargs@0.11.0: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} @@ -2710,8 +2799,8 @@ packages: graceful-fs: 4.2.10 dev: false - /@pnpm/npm-conf@2.2.2: - resolution: {integrity: sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA==} + /@pnpm/npm-conf@2.3.1: + resolution: {integrity: sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==} engines: {node: '>=12'} dependencies: '@pnpm/config.env-replace': 1.1.0 @@ -2719,8 +2808,8 @@ packages: config-chain: 1.1.13 dev: false - /@polka/url@1.0.0-next.24: - resolution: {integrity: sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==} + /@polka/url@1.0.0-next.25: + resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} dev: false /@sideway/address@4.1.5: @@ -2764,101 +2853,101 @@ packages: webpack-sources: 3.2.3 dev: false - /@svgr/babel-plugin-add-jsx-attribute@6.5.1(@babel/core@7.23.9): + /@svgr/babel-plugin-add-jsx-attribute@6.5.1(@babel/core@7.25.2): resolution: {integrity: sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.25.2 dev: false - /@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.23.9): + /@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.25.2): resolution: {integrity: sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==} engines: {node: '>=14'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.25.2 dev: false - /@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.23.9): + /@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.25.2): resolution: {integrity: sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==} engines: {node: '>=14'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.25.2 dev: false - /@svgr/babel-plugin-replace-jsx-attribute-value@6.5.1(@babel/core@7.23.9): + /@svgr/babel-plugin-replace-jsx-attribute-value@6.5.1(@babel/core@7.25.2): resolution: {integrity: sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.25.2 dev: false - /@svgr/babel-plugin-svg-dynamic-title@6.5.1(@babel/core@7.23.9): + /@svgr/babel-plugin-svg-dynamic-title@6.5.1(@babel/core@7.25.2): resolution: {integrity: sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.25.2 dev: false - /@svgr/babel-plugin-svg-em-dimensions@6.5.1(@babel/core@7.23.9): + /@svgr/babel-plugin-svg-em-dimensions@6.5.1(@babel/core@7.25.2): resolution: {integrity: sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.25.2 dev: false - /@svgr/babel-plugin-transform-react-native-svg@6.5.1(@babel/core@7.23.9): + /@svgr/babel-plugin-transform-react-native-svg@6.5.1(@babel/core@7.25.2): resolution: {integrity: sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.25.2 dev: false - /@svgr/babel-plugin-transform-svg-component@6.5.1(@babel/core@7.23.9): + /@svgr/babel-plugin-transform-svg-component@6.5.1(@babel/core@7.25.2): resolution: {integrity: sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ==} engines: {node: '>=12'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.25.2 dev: false - /@svgr/babel-preset@6.5.1(@babel/core@7.23.9): + /@svgr/babel-preset@6.5.1(@babel/core@7.25.2): resolution: {integrity: sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@svgr/babel-plugin-add-jsx-attribute': 6.5.1(@babel/core@7.23.9) - '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.23.9) - '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.23.9) - '@svgr/babel-plugin-replace-jsx-attribute-value': 6.5.1(@babel/core@7.23.9) - '@svgr/babel-plugin-svg-dynamic-title': 6.5.1(@babel/core@7.23.9) - '@svgr/babel-plugin-svg-em-dimensions': 6.5.1(@babel/core@7.23.9) - '@svgr/babel-plugin-transform-react-native-svg': 6.5.1(@babel/core@7.23.9) - '@svgr/babel-plugin-transform-svg-component': 6.5.1(@babel/core@7.23.9) + '@babel/core': 7.25.2 + '@svgr/babel-plugin-add-jsx-attribute': 6.5.1(@babel/core@7.25.2) + '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.25.2) + '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.25.2) + '@svgr/babel-plugin-replace-jsx-attribute-value': 6.5.1(@babel/core@7.25.2) + '@svgr/babel-plugin-svg-dynamic-title': 6.5.1(@babel/core@7.25.2) + '@svgr/babel-plugin-svg-em-dimensions': 6.5.1(@babel/core@7.25.2) + '@svgr/babel-plugin-transform-react-native-svg': 6.5.1(@babel/core@7.25.2) + '@svgr/babel-plugin-transform-svg-component': 6.5.1(@babel/core@7.25.2) dev: false /@svgr/core@6.5.1: resolution: {integrity: sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==} engines: {node: '>=10'} dependencies: - '@babel/core': 7.23.9 - '@svgr/babel-preset': 6.5.1(@babel/core@7.23.9) + '@babel/core': 7.25.2 + '@svgr/babel-preset': 6.5.1(@babel/core@7.25.2) '@svgr/plugin-jsx': 6.5.1(@svgr/core@6.5.1) camelcase: 6.3.0 cosmiconfig: 7.1.0 @@ -2870,7 +2959,7 @@ packages: resolution: {integrity: sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw==} engines: {node: '>=10'} dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.25.6 entities: 4.5.0 dev: false @@ -2880,8 +2969,8 @@ packages: peerDependencies: '@svgr/core': ^6.0.0 dependencies: - '@babel/core': 7.23.9 - '@svgr/babel-preset': 6.5.1(@babel/core@7.23.9) + '@babel/core': 7.25.2 + '@svgr/babel-preset': 6.5.1(@babel/core@7.25.2) '@svgr/core': 6.5.1 '@svgr/hast-util-to-babel-ast': 6.5.1 svg-parser: 2.0.4 @@ -2905,11 +2994,11 @@ packages: resolution: {integrity: sha512-cQ/AsnBkXPkEK8cLbv4Dm7JGXq2XrumKnL1dRpJD9rIO2fTIlJI9a1uCciYG1F2aUsox/hJQyNGbt3soDxSRkA==} engines: {node: '>=10'} dependencies: - '@babel/core': 7.23.9 - '@babel/plugin-transform-react-constant-elements': 7.23.3(@babel/core@7.23.9) - '@babel/preset-env': 7.23.9(@babel/core@7.23.9) - '@babel/preset-react': 7.23.3(@babel/core@7.23.9) - '@babel/preset-typescript': 7.23.3(@babel/core@7.23.9) + '@babel/core': 7.25.2 + '@babel/plugin-transform-react-constant-elements': 7.25.1(@babel/core@7.25.2) + '@babel/preset-env': 7.25.4(@babel/core@7.25.2) + '@babel/preset-react': 7.24.7(@babel/core@7.25.2) + '@babel/preset-typescript': 7.24.7(@babel/core@7.25.2) '@svgr/core': 6.5.1 '@svgr/plugin-jsx': 6.5.1(@svgr/core@6.5.1) '@svgr/plugin-svgo': 6.5.1(@svgr/core@6.5.1) @@ -2923,16 +3012,16 @@ packages: dependencies: defer-to-connect: 2.0.1 - /@tailwindcss/typography@0.5.10(tailwindcss@3.4.1): - resolution: {integrity: sha512-Pe8BuPJQJd3FfRnm6H0ulKIGoMEQS+Vq01R6M5aCrFB/ccR/shT+0kXLjouGC1gFLm9hopTFN+DMP0pfwRWzPw==} + /@tailwindcss/typography@0.5.15(tailwindcss@3.4.11): + resolution: {integrity: sha512-AqhlCXl+8grUz8uqExv5OTtgpjuVIwFTSXTrh8y9/pw6q2ek7fJ+Y8ZEVw7EB2DCcuCOtEjf9w3+J3rzts01uA==} peerDependencies: - tailwindcss: '>=3.0.0 || insiders' + tailwindcss: '>=3.0.0 || insiders || >=4.0.0-alpha.20' dependencies: lodash.castarray: 4.4.0 lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 postcss-selector-parser: 6.0.10 - tailwindcss: 3.4.1 + tailwindcss: 3.4.11 dev: true /@tootallnate/once@2.0.0: @@ -2945,8 +3034,8 @@ packages: engines: {node: '>=10.13.0'} dev: false - /@tsconfig/docusaurus@2.0.2: - resolution: {integrity: sha512-12HWfYmgUl4M2o76/TFufGtI68wl2k/b8qPrIrG7ci9YJLrpAtadpy897Bz5v29Mlkr7a1Hq4KHdQTKtU+2rhQ==} + /@tsconfig/docusaurus@2.0.3: + resolution: {integrity: sha512-3l1L5PzWVa7l0691TjnsZ0yOIEwG9DziSqu5IPZPlI5Dowi7z42cEym8Y35GHbgHvPcBfNxfrbxm7Cncn4nByQ==} dev: true /@types/acorn@4.0.6: @@ -2958,26 +3047,26 @@ packages: resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} dependencies: '@types/connect': 3.4.38 - '@types/node': 20.11.19 + '@types/node': 20.16.5 dev: false /@types/bonjour@3.5.13: resolution: {integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==} dependencies: - '@types/node': 20.11.19 + '@types/node': 20.16.5 dev: false /@types/connect-history-api-fallback@1.5.4: resolution: {integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==} dependencies: - '@types/express-serve-static-core': 4.17.43 - '@types/node': 20.11.19 + '@types/express-serve-static-core': 4.19.5 + '@types/node': 20.16.5 dev: false /@types/connect@3.4.38: resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} dependencies: - '@types/node': 20.11.19 + '@types/node': 20.16.5 dev: false /@types/d3-scale-chromatic@3.0.3: @@ -2999,31 +3088,19 @@ packages: dependencies: '@types/ms': 0.7.34 - /@types/eslint-scope@3.7.7: - resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} - dependencies: - '@types/eslint': 8.56.2 - '@types/estree': 1.0.5 - - /@types/eslint@8.56.2: - resolution: {integrity: sha512-uQDwm1wFHmbBbCZCqAlq6Do9LYwByNZHWzXppSnay9SuwJ+VRbjkbLABer54kcPnMSlG6Fdiy2yaFXm/z9Z5gw==} - dependencies: - '@types/estree': 1.0.5 - '@types/json-schema': 7.0.15 - - /@types/estree-jsx@1.0.4: - resolution: {integrity: sha512-5idy3hvI9lAMqsyilBM+N+boaCf1MgoefbDxN6KEO5aK17TOHwFAYT9sjxzeKAiIWRUBgLxmZ9mPcnzZXtTcRQ==} + /@types/estree-jsx@1.0.5: + resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} dependencies: '@types/estree': 1.0.5 /@types/estree@1.0.5: resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} - /@types/express-serve-static-core@4.17.43: - resolution: {integrity: sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg==} + /@types/express-serve-static-core@4.19.5: + resolution: {integrity: sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==} dependencies: - '@types/node': 20.11.19 - '@types/qs': 6.9.11 + '@types/node': 20.16.5 + '@types/qs': 6.9.16 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 dev: false @@ -3032,9 +3109,9 @@ packages: resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} dependencies: '@types/body-parser': 1.19.5 - '@types/express-serve-static-core': 4.17.43 - '@types/qs': 6.9.11 - '@types/serve-static': 1.15.5 + '@types/express-serve-static-core': 4.19.5 + '@types/qs': 6.9.16 + '@types/serve-static': 1.15.7 dev: false /@types/gtag.js@0.0.12: @@ -3044,7 +3121,7 @@ packages: /@types/hast@3.0.4: resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} dependencies: - '@types/unist': 3.0.2 + '@types/unist': 3.0.3 /@types/history@4.7.11: resolution: {integrity: sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==} @@ -3060,10 +3137,10 @@ packages: resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} dev: false - /@types/http-proxy@1.17.14: - resolution: {integrity: sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==} + /@types/http-proxy@1.17.15: + resolution: {integrity: sha512-25g5atgiVNTIv0LBDTg1H74Hvayx0ajtJPLLcYE3whFv75J0pWNtOBzaXJQgDTmrX1bx5U9YC2w/n65BN1HwRQ==} dependencies: - '@types/node': 20.11.19 + '@types/node': 20.16.5 dev: false /@types/istanbul-lib-coverage@2.0.6: @@ -3088,93 +3165,88 @@ packages: /@types/mdast@3.0.15: resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==} dependencies: - '@types/unist': 2.0.10 + '@types/unist': 2.0.11 dev: false - /@types/mdast@4.0.3: - resolution: {integrity: sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==} + /@types/mdast@4.0.4: + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} dependencies: - '@types/unist': 3.0.2 + '@types/unist': 3.0.3 - /@types/mdx@2.0.11: - resolution: {integrity: sha512-HM5bwOaIQJIQbAYfax35HCKxx7a3KrK3nBtIqJgSOitivTD1y3oW9P3rxY9RkXYPUk7y/AjAohfHKmFpGE79zw==} + /@types/mdx@2.0.13: + resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==} /@types/mime@1.3.5: resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} dev: false - /@types/mime@3.0.4: - resolution: {integrity: sha512-iJt33IQnVRkqeqC7PzBHPTC6fDlRNRW8vjrgqtScAhrmMwe8c4Eo7+fUGTa+XdWrpEgpyKWMYmi2dIwMAYRzPw==} - dev: false - /@types/ms@0.7.34: resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} /@types/node-forge@1.3.11: resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} dependencies: - '@types/node': 20.11.19 + '@types/node': 20.16.5 dev: false /@types/node@17.0.45: resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} dev: false - /@types/node@20.11.19: - resolution: {integrity: sha512-7xMnVEcZFu0DikYjWOlRq7NTPETrm7teqUT2WkQjrTIkEgUyyGdWsj/Zg8bEJt5TNklzbPD1X3fqfsHw3SpapQ==} + /@types/node@20.16.5: + resolution: {integrity: sha512-VwYCweNo3ERajwy0IUlqqcyZ8/A7Zwa9ZP3MnENWcB11AejO+tLy3pu850goUW2FC/IJMdZUfKpX/yxL1gymCA==} dependencies: - undici-types: 5.26.5 + undici-types: 6.19.8 /@types/parse-json@4.0.2: resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} dev: false - /@types/prismjs@1.26.3: - resolution: {integrity: sha512-A0D0aTXvjlqJ5ZILMz3rNfDBOx9hHxLZYv2by47Sm/pqW35zzjusrZTryatjN/Rf8Us2gZrJD+KeHbUSTux1Cw==} + /@types/prismjs@1.26.4: + resolution: {integrity: sha512-rlAnzkW2sZOjbqZ743IHUhFcvzaGbqijwOu8QZnZCjfQzBqFE3s4lOTJEsxikImav9uzz/42I+O7YUs1mWgMlg==} dev: false - /@types/prop-types@15.7.11: - resolution: {integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==} + /@types/prop-types@15.7.12: + resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==} - /@types/qs@6.9.11: - resolution: {integrity: sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ==} + /@types/qs@6.9.16: + resolution: {integrity: sha512-7i+zxXdPD0T4cKDuxCUXJ4wHcsJLwENa6Z3dCu8cfCK743OGy5Nu1RmAGqDPsoTDINVEcdXKRvR/zre+P2Ku1A==} dev: false /@types/range-parser@1.2.7: resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} dev: false - /@types/react-dom@18.2.19: - resolution: {integrity: sha512-aZvQL6uUbIJpjZk4U8JZGbau9KDeAwMfmhyWorxgBkqDIEf6ROjRozcmPIicqsUwPUjbkDfHKgGee1Lq65APcA==} + /@types/react-dom@18.3.0: + resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==} dependencies: - '@types/react': 18.2.56 + '@types/react': 18.3.5 dev: true /@types/react-router-config@5.0.11: resolution: {integrity: sha512-WmSAg7WgqW7m4x8Mt4N6ZyKz0BubSj/2tVUMsAHp+Yd2AMwcSbeFq9WympT19p5heCFmF97R9eD5uUR/t4HEqw==} dependencies: '@types/history': 4.7.11 - '@types/react': 18.2.56 + '@types/react': 18.3.5 '@types/react-router': 5.1.20 /@types/react-router-dom@5.3.3: resolution: {integrity: sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==} dependencies: '@types/history': 4.7.11 - '@types/react': 18.2.56 + '@types/react': 18.3.5 '@types/react-router': 5.1.20 /@types/react-router@5.1.20: resolution: {integrity: sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==} dependencies: '@types/history': 4.7.11 - '@types/react': 18.2.56 + '@types/react': 18.3.5 - /@types/react@18.2.56: - resolution: {integrity: sha512-NpwHDMkS/EFZF2dONFQHgkPRwhvgq/OAvIaGQzxGSBmaeR++kTg6njr15Vatz0/2VcCEwJQFi6Jf4Q0qBu0rLA==} + /@types/react@18.3.5: + resolution: {integrity: sha512-WeqMfGJLGuLCqHGYRGHxnKrXcTitc6L/nBUWfWPcTarG3t9PsquqUMuVeXZeca+mglY4Vo5GZjCi0A3Or2lnxA==} dependencies: - '@types/prop-types': 15.7.11 - '@types/scheduler': 0.16.8 + '@types/prop-types': 15.7.12 csstype: 3.1.3 /@types/retry@0.12.0: @@ -3184,17 +3256,14 @@ packages: /@types/sax@1.2.7: resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} dependencies: - '@types/node': 20.11.19 + '@types/node': 20.16.5 dev: false - /@types/scheduler@0.16.8: - resolution: {integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==} - /@types/send@0.17.4: resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} dependencies: '@types/mime': 1.3.5 - '@types/node': 20.11.19 + '@types/node': 20.16.5 dev: false /@types/serve-index@1.9.4: @@ -3203,42 +3272,42 @@ packages: '@types/express': 4.17.21 dev: false - /@types/serve-static@1.15.5: - resolution: {integrity: sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==} + /@types/serve-static@1.15.7: + resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==} dependencies: '@types/http-errors': 2.0.4 - '@types/mime': 3.0.4 - '@types/node': 20.11.19 + '@types/node': 20.16.5 + '@types/send': 0.17.4 dev: false /@types/sockjs@0.3.36: resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} dependencies: - '@types/node': 20.11.19 + '@types/node': 20.16.5 dev: false /@types/trusted-types@2.0.7: resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} dev: false - /@types/unist@2.0.10: - resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==} + /@types/unist@2.0.11: + resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} - /@types/unist@3.0.2: - resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==} + /@types/unist@3.0.3: + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} - /@types/ws@8.5.10: - resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} + /@types/ws@8.5.12: + resolution: {integrity: sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==} dependencies: - '@types/node': 20.11.19 + '@types/node': 20.16.5 dev: false /@types/yargs-parser@21.0.3: resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} dev: false - /@types/yargs@17.0.32: - resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} + /@types/yargs@17.0.33: + resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} dependencies: '@types/yargs-parser': 21.0.3 dev: false @@ -3246,8 +3315,8 @@ packages: /@ungap/structured-clone@1.2.0: resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - /@webassemblyjs/ast@1.11.6: - resolution: {integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==} + /@webassemblyjs/ast@1.12.1: + resolution: {integrity: sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==} dependencies: '@webassemblyjs/helper-numbers': 1.11.6 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 @@ -3258,8 +3327,8 @@ packages: /@webassemblyjs/helper-api-error@1.11.6: resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} - /@webassemblyjs/helper-buffer@1.11.6: - resolution: {integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==} + /@webassemblyjs/helper-buffer@1.12.1: + resolution: {integrity: sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==} /@webassemblyjs/helper-numbers@1.11.6: resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} @@ -3271,13 +3340,13 @@ packages: /@webassemblyjs/helper-wasm-bytecode@1.11.6: resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} - /@webassemblyjs/helper-wasm-section@1.11.6: - resolution: {integrity: sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==} + /@webassemblyjs/helper-wasm-section@1.12.1: + resolution: {integrity: sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==} dependencies: - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/helper-buffer': 1.11.6 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/wasm-gen': 1.11.6 + '@webassemblyjs/wasm-gen': 1.12.1 /@webassemblyjs/ieee754@1.11.6: resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} @@ -3292,49 +3361,49 @@ packages: /@webassemblyjs/utf8@1.11.6: resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} - /@webassemblyjs/wasm-edit@1.11.6: - resolution: {integrity: sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==} + /@webassemblyjs/wasm-edit@1.12.1: + resolution: {integrity: sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==} dependencies: - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/helper-buffer': 1.11.6 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/helper-wasm-section': 1.11.6 - '@webassemblyjs/wasm-gen': 1.11.6 - '@webassemblyjs/wasm-opt': 1.11.6 - '@webassemblyjs/wasm-parser': 1.11.6 - '@webassemblyjs/wast-printer': 1.11.6 + '@webassemblyjs/helper-wasm-section': 1.12.1 + '@webassemblyjs/wasm-gen': 1.12.1 + '@webassemblyjs/wasm-opt': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 + '@webassemblyjs/wast-printer': 1.12.1 - /@webassemblyjs/wasm-gen@1.11.6: - resolution: {integrity: sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==} + /@webassemblyjs/wasm-gen@1.12.1: + resolution: {integrity: sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==} dependencies: - '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/ast': 1.12.1 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 '@webassemblyjs/ieee754': 1.11.6 '@webassemblyjs/leb128': 1.11.6 '@webassemblyjs/utf8': 1.11.6 - /@webassemblyjs/wasm-opt@1.11.6: - resolution: {integrity: sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==} + /@webassemblyjs/wasm-opt@1.12.1: + resolution: {integrity: sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==} dependencies: - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/helper-buffer': 1.11.6 - '@webassemblyjs/wasm-gen': 1.11.6 - '@webassemblyjs/wasm-parser': 1.11.6 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 + '@webassemblyjs/wasm-gen': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 - /@webassemblyjs/wasm-parser@1.11.6: - resolution: {integrity: sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==} + /@webassemblyjs/wasm-parser@1.12.1: + resolution: {integrity: sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==} dependencies: - '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/ast': 1.12.1 '@webassemblyjs/helper-api-error': 1.11.6 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 '@webassemblyjs/ieee754': 1.11.6 '@webassemblyjs/leb128': 1.11.6 '@webassemblyjs/utf8': 1.11.6 - /@webassemblyjs/wast-printer@1.11.6: - resolution: {integrity: sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==} + /@webassemblyjs/wast-printer@1.12.1: + resolution: {integrity: sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==} dependencies: - '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/ast': 1.12.1 '@xtuc/long': 4.2.2 /@xtuc/ieee754@1.2.0: @@ -3356,27 +3425,29 @@ packages: negotiator: 0.6.3 dev: false - /acorn-import-assertions@1.9.0(acorn@8.11.3): - resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} + /acorn-import-attributes@1.9.5(acorn@8.12.1): + resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} peerDependencies: acorn: ^8 dependencies: - acorn: 8.11.3 + acorn: 8.12.1 - /acorn-jsx@5.3.2(acorn@8.11.3): + /acorn-jsx@5.3.2(acorn@8.12.1): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - acorn: 8.11.3 + acorn: 8.12.1 - /acorn-walk@8.3.2: - resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} + /acorn-walk@8.3.4: + resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} engines: {node: '>=0.4.0'} + dependencies: + acorn: 8.12.1 dev: false - /acorn@8.11.3: - resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + /acorn@8.12.1: + resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} engines: {node: '>=0.4.0'} hasBin: true @@ -3389,7 +3460,7 @@ packages: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} dependencies: - debug: 4.3.4 + debug: 4.3.7 transitivePeerDependencies: - supports-color dev: true @@ -3402,7 +3473,7 @@ packages: indent-string: 4.0.0 dev: false - /ajv-formats@2.1.1(ajv@8.12.0): + /ajv-formats@2.1.1(ajv@8.17.1): resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} peerDependencies: ajv: ^8.0.0 @@ -3410,7 +3481,7 @@ packages: ajv: optional: true dependencies: - ajv: 8.12.0 + ajv: 8.17.1 dev: false /ajv-keywords@3.5.2(ajv@6.12.6): @@ -3420,12 +3491,12 @@ packages: dependencies: ajv: 6.12.6 - /ajv-keywords@5.1.0(ajv@8.12.0): + /ajv-keywords@5.1.0(ajv@8.17.1): resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} peerDependencies: ajv: ^8.8.2 dependencies: - ajv: 8.12.0 + ajv: 8.17.1 fast-deep-equal: 3.1.3 dev: false @@ -3437,41 +3508,42 @@ packages: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - /ajv@8.12.0: - resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + /ajv@8.17.1: + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} dependencies: fast-deep-equal: 3.1.3 + fast-uri: 3.0.1 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - uri-js: 4.4.1 dev: false - /algoliasearch-helper@3.16.2(algoliasearch@4.22.1): - resolution: {integrity: sha512-Yl/Gu5Cq4Z5s/AJ0jR37OPI1H3+z7PHz657ibyaXgMOaWvPlZ3OACN13N+7HCLPUlB0BN+8BtmrG/CqTilowBA==} + /algoliasearch-helper@3.22.5(algoliasearch@4.24.0): + resolution: {integrity: sha512-lWvhdnc+aKOKx8jyA3bsdEgHzm/sglC4cYdMG4xSQyRiPLJVJtH/IVYZG3Hp6PkTEhQqhyVYkeP9z2IlcHJsWw==} peerDependencies: algoliasearch: '>= 3.1 < 6' dependencies: '@algolia/events': 4.0.1 - algoliasearch: 4.22.1 + algoliasearch: 4.24.0 dev: false - /algoliasearch@4.22.1: - resolution: {integrity: sha512-jwydKFQJKIx9kIZ8Jm44SdpigFwRGPESaxZBaHSV0XWN2yBJAOT4mT7ppvlrpA4UGzz92pqFnVKr/kaZXrcreg==} + /algoliasearch@4.24.0: + resolution: {integrity: sha512-bf0QV/9jVejssFBmz2HQLxUadxk574t4iwjCKp5E7NBzwKkrDEhKPISIIjAU/p6K5qDx3qoeh4+26zWN1jmw3g==} dependencies: - '@algolia/cache-browser-local-storage': 4.22.1 - '@algolia/cache-common': 4.22.1 - '@algolia/cache-in-memory': 4.22.1 - '@algolia/client-account': 4.22.1 - '@algolia/client-analytics': 4.22.1 - '@algolia/client-common': 4.22.1 - '@algolia/client-personalization': 4.22.1 - '@algolia/client-search': 4.22.1 - '@algolia/logger-common': 4.22.1 - '@algolia/logger-console': 4.22.1 - '@algolia/requester-browser-xhr': 4.22.1 - '@algolia/requester-common': 4.22.1 - '@algolia/requester-node-http': 4.22.1 - '@algolia/transporter': 4.22.1 + '@algolia/cache-browser-local-storage': 4.24.0 + '@algolia/cache-common': 4.24.0 + '@algolia/cache-in-memory': 4.24.0 + '@algolia/client-account': 4.24.0 + '@algolia/client-analytics': 4.24.0 + '@algolia/client-common': 4.24.0 + '@algolia/client-personalization': 4.24.0 + '@algolia/client-search': 4.24.0 + '@algolia/logger-common': 4.24.0 + '@algolia/logger-console': 4.24.0 + '@algolia/recommend': 4.24.0 + '@algolia/requester-browser-xhr': 4.24.0 + '@algolia/requester-common': 4.24.0 + '@algolia/requester-node-http': 4.24.0 + '@algolia/transporter': 4.24.0 dev: false /ansi-align@3.0.1: @@ -3490,8 +3562,8 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - /ansi-regex@6.0.1: - resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + /ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} engines: {node: '>=12'} /ansi-styles@3.2.1: @@ -3543,8 +3615,8 @@ packages: engines: {node: '>=8'} dev: false - /astring@1.8.6: - resolution: {integrity: sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==} + /astring@1.9.0: + resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} hasBin: true /asynckit@0.4.0: @@ -3556,33 +3628,33 @@ packages: engines: {node: '>= 4.0.0'} dev: false - /autoprefixer@10.4.17(postcss@8.4.35): - resolution: {integrity: sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg==} + /autoprefixer@10.4.20(postcss@8.4.47): + resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} engines: {node: ^10 || ^12 || >=14} hasBin: true peerDependencies: postcss: ^8.1.0 dependencies: - browserslist: 4.23.0 - caniuse-lite: 1.0.30001587 + browserslist: 4.23.3 + caniuse-lite: 1.0.30001660 fraction.js: 4.3.7 normalize-range: 0.1.2 - picocolors: 1.0.0 - postcss: 8.4.35 + picocolors: 1.1.0 + postcss: 8.4.47 postcss-value-parser: 4.2.0 dev: false - /babel-loader@9.1.3(@babel/core@7.23.9)(webpack@5.90.2): + /babel-loader@9.1.3(@babel/core@7.25.2)(webpack@5.94.0): resolution: {integrity: sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==} engines: {node: '>= 14.15.0'} peerDependencies: '@babel/core': ^7.12.0 webpack: '>=5' dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.25.2 find-cache-dir: 4.0.0 schema-utils: 4.2.0 - webpack: 5.90.2 + webpack: 5.94.0 dev: false /babel-plugin-dynamic-import-node@2.3.3: @@ -3591,38 +3663,38 @@ packages: object.assign: 4.1.5 dev: false - /babel-plugin-polyfill-corejs2@0.4.8(@babel/core@7.23.9): - resolution: {integrity: sha512-OtIuQfafSzpo/LhnJaykc0R/MMnuLSSVjVYy9mHArIZ9qTCSZ6TpWCuEKZYVoN//t8HqBNScHrOtCrIK5IaGLg==} + /babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.25.2): + resolution: {integrity: sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/compat-data': 7.23.5 - '@babel/core': 7.23.9 - '@babel/helper-define-polyfill-provider': 0.5.0(@babel/core@7.23.9) + '@babel/compat-data': 7.25.4 + '@babel/core': 7.25.2 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.2) semver: 6.3.1 transitivePeerDependencies: - supports-color dev: false - /babel-plugin-polyfill-corejs3@0.9.0(@babel/core@7.23.9): - resolution: {integrity: sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg==} + /babel-plugin-polyfill-corejs3@0.10.6(@babel/core@7.25.2): + resolution: {integrity: sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-define-polyfill-provider': 0.5.0(@babel/core@7.23.9) - core-js-compat: 3.36.0 + '@babel/core': 7.25.2 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.2) + core-js-compat: 3.38.1 transitivePeerDependencies: - supports-color dev: false - /babel-plugin-polyfill-regenerator@0.5.5(@babel/core@7.23.9): - resolution: {integrity: sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==} + /babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.25.2): + resolution: {integrity: sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-define-polyfill-provider': 0.5.0(@babel/core@7.23.9) + '@babel/core': 7.25.2 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.2) transitivePeerDependencies: - supports-color dev: false @@ -3645,12 +3717,12 @@ packages: resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} dev: false - /binary-extensions@2.2.0: - resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + /binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} - /body-parser@1.20.2: - resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==} + /body-parser@1.20.3: + resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} dependencies: bytes: 3.1.2 @@ -3661,7 +3733,7 @@ packages: http-errors: 2.0.0 iconv-lite: 0.4.24 on-finished: 2.4.1 - qs: 6.11.0 + qs: 6.13.0 raw-body: 2.5.2 type-is: 1.6.18 unpipe: 1.0.0 @@ -3726,15 +3798,15 @@ packages: dependencies: fill-range: 7.1.1 - /browserslist@4.23.0: - resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} + /browserslist@4.23.3: + resolution: {integrity: sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001587 - electron-to-chromium: 1.4.673 - node-releases: 2.0.14 - update-browserslist-db: 1.0.13(browserslist@4.23.0) + caniuse-lite: 1.0.30001660 + electron-to-chromium: 1.5.23 + node-releases: 2.0.18 + update-browserslist-db: 1.1.0(browserslist@4.23.3) /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} @@ -3762,7 +3834,7 @@ packages: http-cache-semantics: 4.1.1 keyv: 4.5.4 mimic-response: 4.0.0 - normalize-url: 8.0.0 + normalize-url: 8.0.1 responselike: 3.0.0 /call-bind@1.0.7: @@ -3773,7 +3845,7 @@ packages: es-errors: 1.3.0 function-bind: 1.1.2 get-intrinsic: 1.2.4 - set-function-length: 1.2.1 + set-function-length: 1.2.2 dev: false /callsites@3.1.0: @@ -3785,7 +3857,7 @@ packages: resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} dependencies: pascal-case: 3.1.2 - tslib: 2.6.2 + tslib: 2.7.0 dev: false /camelcase-css@2.0.1: @@ -3805,14 +3877,14 @@ packages: /caniuse-api@3.0.0: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} dependencies: - browserslist: 4.23.0 - caniuse-lite: 1.0.30001587 + browserslist: 4.23.3 + caniuse-lite: 1.0.30001660 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 dev: false - /caniuse-lite@1.0.30001587: - resolution: {integrity: sha512-HMFNotUmLXn71BQxg8cijvqxnIAofforZOwGsxyXJ0qugTdspUF4sPSJ2vhgprHCB996tIDzEq1ubumPDV8ULA==} + /caniuse-lite@1.0.30001660: + resolution: {integrity: sha512-GacvNTTuATm26qC74pt+ad1fW15mlQ/zuTzzY1ZoIzECTP8HURDfF43kNxPgf7H1jmelCBQTTbBNxdSXOA7Bqg==} /ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -3867,33 +3939,23 @@ packages: domutils: 3.1.0 dev: false - /cheerio@1.0.0-rc.12: - resolution: {integrity: sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==} - engines: {node: '>= 6'} + /cheerio@1.0.0: + resolution: {integrity: sha512-quS9HgjQpdaXOvsZz82Oz7uxtXiy6UIsIQcpBj7HRw2M63Skasm9qlDocAM7jNuaxdhpPU7c4kJN+gA5MCu4ww==} + engines: {node: '>=18.17'} dependencies: cheerio-select: 2.1.0 dom-serializer: 2.0.0 domhandler: 5.0.3 domutils: 3.1.0 - htmlparser2: 8.0.2 + encoding-sniffer: 0.2.0 + htmlparser2: 9.1.0 parse5: 7.1.2 parse5-htmlparser2-tree-adapter: 7.0.0 + parse5-parser-stream: 7.1.2 + undici: 6.19.8 + whatwg-mimetype: 4.0.0 dev: false - /chokidar@3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} - engines: {node: '>= 8.10.0'} - dependencies: - anymatch: 3.1.3 - braces: 3.0.3 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - /chokidar@3.6.0: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} @@ -3907,10 +3969,9 @@ packages: readdirp: 3.6.0 optionalDependencies: fsevents: 2.3.3 - dev: false - /chrome-trace-event@1.0.3: - resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} + /chrome-trace-event@1.0.4: + resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} engines: {node: '>=6.0'} /ci-info@3.9.0: @@ -3935,8 +3996,8 @@ packages: engines: {node: '>=10'} dev: false - /cli-table3@0.6.3: - resolution: {integrity: sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==} + /cli-table3@0.6.5: + resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} engines: {node: 10.* || >= 12.*} dependencies: string-width: 4.2.3 @@ -3965,8 +4026,8 @@ packages: kind-of: 6.0.3 shallow-clone: 3.0.1 - /clsx@2.1.0: - resolution: {integrity: sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==} + /clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} dev: false @@ -4049,7 +4110,7 @@ packages: resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} engines: {node: '>= 0.6'} dependencies: - mime-db: 1.52.0 + mime-db: 1.53.0 dev: false /compression@1.7.4: @@ -4133,7 +4194,7 @@ packages: engines: {node: '>=12'} dev: false - /copy-webpack-plugin@11.0.0(webpack@5.90.2): + /copy-webpack-plugin@11.0.0(webpack@5.94.0): resolution: {integrity: sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==} engines: {node: '>= 14.15.0'} peerDependencies: @@ -4145,22 +4206,22 @@ packages: normalize-path: 3.0.0 schema-utils: 4.2.0 serialize-javascript: 6.0.2 - webpack: 5.90.2 + webpack: 5.94.0 dev: false - /core-js-compat@3.36.0: - resolution: {integrity: sha512-iV9Pd/PsgjNWBXeq8XRtWVSgz2tKAfhfvBs7qxYty+RlRd+OCksaWmOnc4JKrTc1cToXL1N0s3l/vwlxPtdElw==} + /core-js-compat@3.38.1: + resolution: {integrity: sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==} dependencies: - browserslist: 4.23.0 + browserslist: 4.23.3 dev: false - /core-js-pure@3.36.0: - resolution: {integrity: sha512-cN28qmhRNgbMZZMc/RFu5w8pK9VJzpb2rJVR/lHuZJKwmXnoWOpXmMkxqBB514igkp1Hu8WGROsiOAzUcKdHOQ==} + /core-js-pure@3.38.1: + resolution: {integrity: sha512-BY8Etc1FZqdw1glX0XNOq2FDwfrg/VGqoZOZCdaL+UmdaqDwQwYXkMJT4t6In+zfEfOJDcM9T0KdbBeJg8KKCQ==} requiresBuild: true dev: false - /core-js@3.36.0: - resolution: {integrity: sha512-mt7+TUBbTFg5+GngsAxeKBTl5/VS0guFeJacYge9OmHb+m058UwwIm41SE9T4Den7ClatV57B6TYTuJ0CX1MAw==} + /core-js@3.38.1: + resolution: {integrity: sha512-OP35aUorbU3Zvlx7pjsFdu1rGNnD4pgw/CWoYzRY3t2EzoVT7shKHY1dlAy3f41cGIO7ZDPQimhGFTlEYkG/Hw==} requiresBuild: true dev: false @@ -4196,7 +4257,7 @@ packages: yaml: 1.10.2 dev: false - /cosmiconfig@8.3.6(typescript@5.3.3): + /cosmiconfig@8.3.6(typescript@5.6.2): resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} engines: {node: '>=14'} peerDependencies: @@ -4209,7 +4270,7 @@ packages: js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 - typescript: 5.3.3 + typescript: 5.6.2 dev: false /crc@4.3.2: @@ -4237,17 +4298,17 @@ packages: type-fest: 1.4.0 dev: false - /css-declaration-sorter@6.4.1(postcss@8.4.35): + /css-declaration-sorter@6.4.1(postcss@8.4.47): resolution: {integrity: sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==} engines: {node: ^10 || ^12 || >=14} peerDependencies: postcss: ^8.0.9 dependencies: - postcss: 8.4.35 + postcss: 8.4.47 dev: false - /css-loader@6.10.0(webpack@5.90.2): - resolution: {integrity: sha512-LTSA/jWbwdMlk+rhmElbDR2vbtQoTBPr7fkJE+mxrHj+7ru0hUmHafDRzWIjIHTwpitWVaqY2/UWGRca3yUgRw==} + /css-loader@6.11.0(webpack@5.94.0): + resolution: {integrity: sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==} engines: {node: '>= 12.13.0'} peerDependencies: '@rspack/core': 0.x || 1.x @@ -4258,18 +4319,18 @@ packages: webpack: optional: true dependencies: - icss-utils: 5.1.0(postcss@8.4.35) - postcss: 8.4.35 - postcss-modules-extract-imports: 3.0.0(postcss@8.4.35) - postcss-modules-local-by-default: 4.0.4(postcss@8.4.35) - postcss-modules-scope: 3.1.1(postcss@8.4.35) - postcss-modules-values: 4.0.0(postcss@8.4.35) + icss-utils: 5.1.0(postcss@8.4.47) + postcss: 8.4.47 + postcss-modules-extract-imports: 3.1.0(postcss@8.4.47) + postcss-modules-local-by-default: 4.0.5(postcss@8.4.47) + postcss-modules-scope: 3.2.0(postcss@8.4.47) + postcss-modules-values: 4.0.0(postcss@8.4.47) postcss-value-parser: 4.2.0 - semver: 7.6.0 - webpack: 5.90.2 + semver: 7.6.3 + webpack: 5.94.0 dev: false - /css-minimizer-webpack-plugin@4.2.2(clean-css@5.3.3)(webpack@5.90.2): + /css-minimizer-webpack-plugin@4.2.2(clean-css@5.3.3)(webpack@5.94.0): resolution: {integrity: sha512-s3Of/4jKfw1Hj9CxEO1E5oXhQAxlayuHO2y/ML+C6I9sQ7FdzfEV6QgMLN3vI+qFsjJGIAFLKtQK7t8BOXAIyA==} engines: {node: '>= 14.15.0'} peerDependencies: @@ -4295,13 +4356,13 @@ packages: optional: true dependencies: clean-css: 5.3.3 - cssnano: 5.1.15(postcss@8.4.35) + cssnano: 5.1.15(postcss@8.4.47) jest-worker: 29.7.0 - postcss: 8.4.35 + postcss: 8.4.47 schema-utils: 4.2.0 serialize-javascript: 6.0.2 source-map: 0.6.1 - webpack: 5.90.2 + webpack: 5.94.0 dev: false /css-select@4.3.0: @@ -4342,77 +4403,77 @@ packages: engines: {node: '>=4'} hasBin: true - /cssnano-preset-advanced@5.3.10(postcss@8.4.35): + /cssnano-preset-advanced@5.3.10(postcss@8.4.47): resolution: {integrity: sha512-fnYJyCS9jgMU+cmHO1rPSPf9axbQyD7iUhLO5Df6O4G+fKIOMps+ZbU0PdGFejFBBZ3Pftf18fn1eG7MAPUSWQ==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - autoprefixer: 10.4.17(postcss@8.4.35) - cssnano-preset-default: 5.2.14(postcss@8.4.35) - postcss: 8.4.35 - postcss-discard-unused: 5.1.0(postcss@8.4.35) - postcss-merge-idents: 5.1.1(postcss@8.4.35) - postcss-reduce-idents: 5.2.0(postcss@8.4.35) - postcss-zindex: 5.1.0(postcss@8.4.35) + autoprefixer: 10.4.20(postcss@8.4.47) + cssnano-preset-default: 5.2.14(postcss@8.4.47) + postcss: 8.4.47 + postcss-discard-unused: 5.1.0(postcss@8.4.47) + postcss-merge-idents: 5.1.1(postcss@8.4.47) + postcss-reduce-idents: 5.2.0(postcss@8.4.47) + postcss-zindex: 5.1.0(postcss@8.4.47) dev: false - /cssnano-preset-default@5.2.14(postcss@8.4.35): + /cssnano-preset-default@5.2.14(postcss@8.4.47): resolution: {integrity: sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - css-declaration-sorter: 6.4.1(postcss@8.4.35) - cssnano-utils: 3.1.0(postcss@8.4.35) - postcss: 8.4.35 - postcss-calc: 8.2.4(postcss@8.4.35) - postcss-colormin: 5.3.1(postcss@8.4.35) - postcss-convert-values: 5.1.3(postcss@8.4.35) - postcss-discard-comments: 5.1.2(postcss@8.4.35) - postcss-discard-duplicates: 5.1.0(postcss@8.4.35) - postcss-discard-empty: 5.1.1(postcss@8.4.35) - postcss-discard-overridden: 5.1.0(postcss@8.4.35) - postcss-merge-longhand: 5.1.7(postcss@8.4.35) - postcss-merge-rules: 5.1.4(postcss@8.4.35) - postcss-minify-font-values: 5.1.0(postcss@8.4.35) - postcss-minify-gradients: 5.1.1(postcss@8.4.35) - postcss-minify-params: 5.1.4(postcss@8.4.35) - postcss-minify-selectors: 5.2.1(postcss@8.4.35) - postcss-normalize-charset: 5.1.0(postcss@8.4.35) - postcss-normalize-display-values: 5.1.0(postcss@8.4.35) - postcss-normalize-positions: 5.1.1(postcss@8.4.35) - postcss-normalize-repeat-style: 5.1.1(postcss@8.4.35) - postcss-normalize-string: 5.1.0(postcss@8.4.35) - postcss-normalize-timing-functions: 5.1.0(postcss@8.4.35) - postcss-normalize-unicode: 5.1.1(postcss@8.4.35) - postcss-normalize-url: 5.1.0(postcss@8.4.35) - postcss-normalize-whitespace: 5.1.1(postcss@8.4.35) - postcss-ordered-values: 5.1.3(postcss@8.4.35) - postcss-reduce-initial: 5.1.2(postcss@8.4.35) - postcss-reduce-transforms: 5.1.0(postcss@8.4.35) - postcss-svgo: 5.1.0(postcss@8.4.35) - postcss-unique-selectors: 5.1.1(postcss@8.4.35) + css-declaration-sorter: 6.4.1(postcss@8.4.47) + cssnano-utils: 3.1.0(postcss@8.4.47) + postcss: 8.4.47 + postcss-calc: 8.2.4(postcss@8.4.47) + postcss-colormin: 5.3.1(postcss@8.4.47) + postcss-convert-values: 5.1.3(postcss@8.4.47) + postcss-discard-comments: 5.1.2(postcss@8.4.47) + postcss-discard-duplicates: 5.1.0(postcss@8.4.47) + postcss-discard-empty: 5.1.1(postcss@8.4.47) + postcss-discard-overridden: 5.1.0(postcss@8.4.47) + postcss-merge-longhand: 5.1.7(postcss@8.4.47) + postcss-merge-rules: 5.1.4(postcss@8.4.47) + postcss-minify-font-values: 5.1.0(postcss@8.4.47) + postcss-minify-gradients: 5.1.1(postcss@8.4.47) + postcss-minify-params: 5.1.4(postcss@8.4.47) + postcss-minify-selectors: 5.2.1(postcss@8.4.47) + postcss-normalize-charset: 5.1.0(postcss@8.4.47) + postcss-normalize-display-values: 5.1.0(postcss@8.4.47) + postcss-normalize-positions: 5.1.1(postcss@8.4.47) + postcss-normalize-repeat-style: 5.1.1(postcss@8.4.47) + postcss-normalize-string: 5.1.0(postcss@8.4.47) + postcss-normalize-timing-functions: 5.1.0(postcss@8.4.47) + postcss-normalize-unicode: 5.1.1(postcss@8.4.47) + postcss-normalize-url: 5.1.0(postcss@8.4.47) + postcss-normalize-whitespace: 5.1.1(postcss@8.4.47) + postcss-ordered-values: 5.1.3(postcss@8.4.47) + postcss-reduce-initial: 5.1.2(postcss@8.4.47) + postcss-reduce-transforms: 5.1.0(postcss@8.4.47) + postcss-svgo: 5.1.0(postcss@8.4.47) + postcss-unique-selectors: 5.1.1(postcss@8.4.47) dev: false - /cssnano-utils@3.1.0(postcss@8.4.35): + /cssnano-utils@3.1.0(postcss@8.4.47): resolution: {integrity: sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.35 + postcss: 8.4.47 dev: false - /cssnano@5.1.15(postcss@8.4.35): + /cssnano@5.1.15(postcss@8.4.47): resolution: {integrity: sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - cssnano-preset-default: 5.2.14(postcss@8.4.35) + cssnano-preset-default: 5.2.14(postcss@8.4.47) lilconfig: 2.1.0 - postcss: 8.4.35 + postcss: 8.4.47 yaml: 1.10.2 dev: false @@ -4433,21 +4494,18 @@ packages: /csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - /cytoscape-cose-bilkent@4.1.0(cytoscape@3.28.1): + /cytoscape-cose-bilkent@4.1.0(cytoscape@3.30.2): resolution: {integrity: sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==} peerDependencies: cytoscape: ^3.2.0 dependencies: cose-base: 1.0.3 - cytoscape: 3.28.1 + cytoscape: 3.30.2 dev: false - /cytoscape@3.28.1: - resolution: {integrity: sha512-xyItz4O/4zp9/239wCcH8ZcFuuZooEeF8KHRmzjDfGdXsj3OG9MFSMA0pJE0uX3uCN/ygof6hHf4L7lst+JaDg==} + /cytoscape@3.30.2: + resolution: {integrity: sha512-oICxQsjW8uSaRmn4UK/jkczKOqTrVqt5/1WL0POiJUT2EKNc9STM4hYFHv917yu55aTBMFNRzymlJhVAiWPCxw==} engines: {node: '>=0.10'} - dependencies: - heap: 0.2.7 - lodash: 4.17.21 dev: false /d3-array@2.12.1: @@ -4554,8 +4612,8 @@ packages: engines: {node: '>=12'} dev: false - /d3-geo@3.1.0: - resolution: {integrity: sha512-JEo5HxXDdDYXCaWdwLRt79y7giK8SbhZJbFWXqbRTolCHFI5jRqteLzCsq51NKbUoX0PjBVSohxrx+NoOUujYA==} + /d3-geo@3.1.1: + resolution: {integrity: sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==} engines: {node: '>=12'} dependencies: d3-array: 3.2.4 @@ -4604,8 +4662,8 @@ packages: d3-shape: 1.3.7 dev: false - /d3-scale-chromatic@3.0.0: - resolution: {integrity: sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==} + /d3-scale-chromatic@3.1.0: + resolution: {integrity: sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==} engines: {node: '>=12'} dependencies: d3-color: 3.1.0 @@ -4685,8 +4743,8 @@ packages: d3-transition: 3.0.1(d3-selection@3.0.0) dev: false - /d3@7.8.5: - resolution: {integrity: sha512-JgoahDG51ncUfJu6wX/1vWQEqOflgXyl4MaHqlcSruTez7yhaRKR9i8VjjcQGeS2en/jnFivXuaIMnseMMt0XA==} + /d3@7.9.0: + resolution: {integrity: sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==} engines: {node: '>=12'} dependencies: d3-array: 3.2.4 @@ -4703,7 +4761,7 @@ packages: d3-fetch: 3.0.1 d3-force: 3.0.0 d3-format: 3.1.0 - d3-geo: 3.1.0 + d3-geo: 3.1.1 d3-hierarchy: 3.1.2 d3-interpolate: 3.0.1 d3-path: 3.1.0 @@ -4711,7 +4769,7 @@ packages: d3-quadtree: 3.0.1 d3-random: 3.0.1 d3-scale: 4.0.2 - d3-scale-chromatic: 3.0.0 + d3-scale-chromatic: 3.1.0 d3-selection: 3.0.0 d3-shape: 3.2.0 d3-time: 3.1.0 @@ -4724,7 +4782,7 @@ packages: /dagre-d3-es@7.0.10: resolution: {integrity: sha512-qTCQmEhcynucuaZgY5/+ti3X/rnszKZhEQH/ZdWdtP1tA/y3VoHJzcVrO9pjjJCNpigfscAtoUB5ONcd2wNn0A==} dependencies: - d3: 7.8.5 + d3: 7.9.0 lodash-es: 4.17.21 dev: false @@ -4737,8 +4795,8 @@ packages: whatwg-url: 12.0.1 dev: true - /dayjs@1.11.10: - resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} + /dayjs@1.11.13: + resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} dev: false /debounce@1.2.1: @@ -4756,8 +4814,8 @@ packages: ms: 2.0.0 dev: false - /debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + /debug@4.3.7: + resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -4765,7 +4823,7 @@ packages: supports-color: optional: true dependencies: - ms: 2.1.2 + ms: 2.1.3 /decimal.js@10.4.3: resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} @@ -4885,12 +4943,13 @@ packages: - supports-color dev: false - /detect-port@1.5.1: - resolution: {integrity: sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==} + /detect-port@1.6.1: + resolution: {integrity: sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q==} + engines: {node: '>= 4.0.0'} hasBin: true dependencies: address: 1.2.2 - debug: 4.3.4 + debug: 4.3.7 transitivePeerDependencies: - supports-color dev: false @@ -4922,7 +4981,7 @@ packages: resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} engines: {node: '>=6'} dependencies: - '@leichtgewicht/ip-codec': 2.0.4 + '@leichtgewicht/ip-codec': 2.0.5 dev: false /docusaurus-prince-pdf@1.2.1: @@ -4988,8 +5047,8 @@ packages: domelementtype: 2.3.0 dev: false - /dompurify@3.0.8: - resolution: {integrity: sha512-b7uwreMYL2eZhrSCRC4ahLTeZcPZxSmYfmcQGXGkXiZSNW1X85v+SDM5KsWcpivIiUBH47Ji7NtyUdpLeF5JZQ==} + /dompurify@3.1.6: + resolution: {integrity: sha512-cTOAhc36AalkjtBpfG6O8JimdTMWNXjiePT2xQH/ppBGi/4uIpmj8eKyIkMJErXWARyINV/sB38yf8JCLF5pbQ==} dev: false /domutils@2.8.0: @@ -5012,7 +5071,7 @@ packages: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} dependencies: no-case: 3.0.4 - tslib: 2.6.2 + tslib: 2.7.0 dev: false /dot-prop@6.0.1: @@ -5022,8 +5081,8 @@ packages: is-obj: 2.0.0 dev: false - /dotenv@16.4.4: - resolution: {integrity: sha512-XvPXc8XAQThSjAbY6cQ/9PcBXmFoWuw1sQ3b8HqUCR6ziGXjkTi//kB9SWa2UwqlgdAIuRqAa/9hVljzPehbYg==} + /dotenv@16.4.5: + resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} engines: {node: '>=12'} dev: false @@ -5038,11 +5097,11 @@ packages: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} dev: false - /electron-to-chromium@1.4.673: - resolution: {integrity: sha512-zjqzx4N7xGdl5468G+vcgzDhaHkaYgVcf9MqgexcTqsl2UHSCmOj/Bi3HAprg4BZCpC7HyD8a6nZl6QAZf72gw==} + /electron-to-chromium@1.5.23: + resolution: {integrity: sha512-mBhODedOXg4v5QWwl21DjM5amzjmI1zw9EPrPK/5Wx7C8jt33bpZNrC7OhHUG3pxRtbLpr3W2dXT+Ph1SsfRZA==} - /elkjs@0.9.1: - resolution: {integrity: sha512-JWKDyqAdltuUcyxaECtYG6H4sqysXSLeoXuGUBfRNESMTkj+w+qdb0jya8Z/WI0jVd03WQtCGhS6FOFtlhD5FQ==} + /elkjs@0.9.3: + resolution: {integrity: sha512-f/ZeWvW/BCXbhGEf1Ujp29EASo/lk1FDnETgNKwJrsVvGZhUWCZyg3xLJjAsxfOmt8KjswHmI5EwCQcPMpOYhQ==} dev: false /emoji-regex@8.0.0: @@ -5060,8 +5119,8 @@ packages: engines: {node: '>= 4'} dev: false - /emoticon@4.0.1: - resolution: {integrity: sha512-dqx7eA9YaqyvYtUhJwT4rC1HIp82j5ybS1/vQ42ur+jBe17dJMwZE4+gvL1XadSFfxaPFFGt3Xsw+Y8akThDlw==} + /emoticon@4.1.0: + resolution: {integrity: sha512-VWZfnxqwNcc51hIy/sbOdEem6D+cVtpPzEEtVAFdaas30+1dgkyaOQ4sQ6Bp0tOMqWO1v+HQfYaoodOkdhK6SQ==} dev: false /encodeurl@1.0.2: @@ -5069,8 +5128,20 @@ packages: engines: {node: '>= 0.8'} dev: false - /enhanced-resolve@5.15.0: - resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} + /encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} + dev: false + + /encoding-sniffer@0.2.0: + resolution: {integrity: sha512-ju7Wq1kg04I3HtiYIOrUrdfdDvkyO9s5XM8QAj/bN61Yo/Vb4vgJxy5vi4Yxk01gWHbrofpPtpxM8bKger9jhg==} + dependencies: + iconv-lite: 0.6.3 + whatwg-encoding: 3.1.1 + dev: false + + /enhanced-resolve@5.17.1: + resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} engines: {node: '>=10.13.0'} dependencies: graceful-fs: 4.2.11 @@ -5102,11 +5173,11 @@ packages: engines: {node: '>= 0.4'} dev: false - /es-module-lexer@1.4.1: - resolution: {integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==} + /es-module-lexer@1.5.4: + resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} - /escalade@3.1.2: - resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} + /escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} /escape-goat@4.0.0: @@ -5168,7 +5239,7 @@ packages: /estree-util-build-jsx@3.0.1: resolution: {integrity: sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==} dependencies: - '@types/estree-jsx': 1.0.4 + '@types/estree-jsx': 1.0.5 devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 estree-walker: 3.0.3 @@ -5179,23 +5250,21 @@ packages: /estree-util-to-js@2.0.0: resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==} dependencies: - '@types/estree-jsx': 1.0.4 - astring: 1.8.6 + '@types/estree-jsx': 1.0.5 + astring: 1.9.0 source-map: 0.7.4 - /estree-util-value-to-estree@3.0.1: - resolution: {integrity: sha512-b2tdzTurEIbwRh+mKrEcaWfu1wgb8J1hVsgREg7FFiecWwK/PhO8X0kyc+0bIcKNtD4sqxIdNoRy6/p/TvECEA==} - engines: {node: '>=16.0.0'} + /estree-util-value-to-estree@3.1.2: + resolution: {integrity: sha512-S0gW2+XZkmsx00tU2uJ4L9hUT7IFabbml9pHh2WQqFmAbxit++YGZne0sKJbNwkj9Wvg9E4uqWl4nCIFQMmfag==} dependencies: '@types/estree': 1.0.5 - is-plain-obj: 4.1.0 dev: false /estree-util-visit@2.0.0: resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==} dependencies: - '@types/estree-jsx': 1.0.4 - '@types/unist': 3.0.2 + '@types/estree-jsx': 1.0.5 + '@types/unist': 3.0.3 /estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} @@ -5221,7 +5290,7 @@ packages: resolution: {integrity: sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw==} engines: {node: '>= 0.8'} dependencies: - '@types/node': 20.11.19 + '@types/node': 20.16.5 require-like: 0.1.2 dev: false @@ -5248,36 +5317,36 @@ packages: strip-final-newline: 2.0.0 dev: false - /express@4.19.2: - resolution: {integrity: sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==} + /express@4.21.0: + resolution: {integrity: sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==} engines: {node: '>= 0.10.0'} dependencies: accepts: 1.3.8 array-flatten: 1.1.1 - body-parser: 1.20.2 + body-parser: 1.20.3 content-disposition: 0.5.4 content-type: 1.0.5 cookie: 0.6.0 cookie-signature: 1.0.6 debug: 2.6.9 depd: 2.0.0 - encodeurl: 1.0.2 + encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 - finalhandler: 1.2.0 + finalhandler: 1.3.1 fresh: 0.5.2 http-errors: 2.0.0 - merge-descriptors: 1.0.1 + merge-descriptors: 1.0.3 methods: 1.1.2 on-finished: 2.4.1 parseurl: 1.3.3 - path-to-regexp: 0.1.7 + path-to-regexp: 0.1.10 proxy-addr: 2.0.7 - qs: 6.11.0 + qs: 6.13.0 range-parser: 1.2.1 safe-buffer: 5.2.1 - send: 0.18.0 - serve-static: 1.15.0 + send: 0.19.0 + serve-static: 1.16.2 setprototypeof: 1.2.0 statuses: 2.0.1 type-is: 1.6.18 @@ -5308,19 +5377,23 @@ packages: '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 - micromatch: 4.0.5 + micromatch: 4.0.8 /fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + /fast-uri@3.0.1: + resolution: {integrity: sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==} + dev: false + /fast-url-parser@1.1.3: resolution: {integrity: sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==} dependencies: punycode: 1.4.1 dev: false - /fastq@1.16.0: - resolution: {integrity: sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==} + /fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} dependencies: reusify: 1.0.4 @@ -5344,7 +5417,7 @@ packages: xml-js: 1.6.11 dev: false - /file-loader@6.2.0(webpack@5.90.2): + /file-loader@6.2.0(webpack@5.94.0): resolution: {integrity: sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -5352,7 +5425,7 @@ packages: dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.90.2 + webpack: 5.94.0 dev: false /filesize@8.0.7: @@ -5366,12 +5439,12 @@ packages: dependencies: to-regex-range: 5.0.1 - /finalhandler@1.2.0: - resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} + /finalhandler@1.3.1: + resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} engines: {node: '>= 0.8'} dependencies: debug: 2.6.9 - encodeurl: 1.0.2 + encodeurl: 2.0.0 escape-html: 1.0.3 on-finished: 2.4.1 parseurl: 1.3.3 @@ -5416,8 +5489,8 @@ packages: resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} hasBin: true - /follow-redirects@1.15.6: - resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} + /follow-redirects@1.15.9: + resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} engines: {node: '>=4.0'} peerDependencies: debug: '*' @@ -5426,14 +5499,14 @@ packages: optional: true dev: false - /foreground-child@3.1.1: - resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + /foreground-child@3.3.0: + resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} engines: {node: '>=14'} dependencies: cross-spawn: 7.0.3 signal-exit: 4.1.0 - /fork-ts-checker-webpack-plugin@6.5.3(typescript@5.3.3)(webpack@5.90.2): + /fork-ts-checker-webpack-plugin@6.5.3(typescript@5.6.2)(webpack@5.94.0): resolution: {integrity: sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==} engines: {node: '>=10', yarn: '>=1.0.0'} peerDependencies: @@ -5447,7 +5520,7 @@ packages: vue-template-compiler: optional: true dependencies: - '@babel/code-frame': 7.23.5 + '@babel/code-frame': 7.24.7 '@types/json-schema': 7.0.15 chalk: 4.1.2 chokidar: 3.6.0 @@ -5458,10 +5531,10 @@ packages: memfs: 3.5.3 minimatch: 3.1.2 schema-utils: 2.7.0 - semver: 7.6.0 + semver: 7.6.3 tapable: 1.1.3 - typescript: 5.3.3 - webpack: 5.90.2 + typescript: 5.6.2 + webpack: 5.94.0 dev: false /form-data-encoder@2.1.4: @@ -5515,8 +5588,8 @@ packages: universalify: 2.0.1 dev: false - /fs-monkey@1.0.5: - resolution: {integrity: sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==} + /fs-monkey@1.0.6: + resolution: {integrity: sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==} dev: false /fs.realpath@1.0.0: @@ -5549,9 +5622,9 @@ packages: dependencies: es-errors: 1.3.0 function-bind: 1.1.2 - has-proto: 1.0.1 + has-proto: 1.0.3 has-symbols: 1.0.3 - hasown: 2.0.1 + hasown: 2.0.2 dev: false /get-own-enumerable-property-symbols@3.0.2: @@ -5587,19 +5660,20 @@ packages: /glob-to-regexp@0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - /glob@10.3.10: - resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} - engines: {node: '>=16 || 14 >=14.17'} + /glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} hasBin: true dependencies: - foreground-child: 3.1.1 - jackspeak: 2.3.6 - minimatch: 9.0.3 - minipass: 7.0.4 - path-scurry: 1.10.1 + foreground-child: 3.3.0 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.0 + path-scurry: 1.11.1 /glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -5644,7 +5718,7 @@ packages: array-union: 2.1.0 dir-glob: 3.0.1 fast-glob: 3.3.2 - ignore: 5.3.1 + ignore: 5.3.2 merge2: 1.4.1 slash: 3.0.0 dev: false @@ -5655,7 +5729,7 @@ packages: dependencies: dir-glob: 3.0.1 fast-glob: 3.3.2 - ignore: 5.3.1 + ignore: 5.3.2 merge2: 1.4.1 slash: 4.0.0 dev: false @@ -5743,8 +5817,8 @@ packages: es-define-property: 1.0.0 dev: false - /has-proto@1.0.1: - resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + /has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} engines: {node: '>= 0.4'} dev: false @@ -5758,8 +5832,8 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: false - /hasown@2.0.1: - resolution: {integrity: sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==} + /hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} dependencies: function-bind: 1.1.2 @@ -5768,12 +5842,12 @@ packages: resolution: {integrity: sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==} dependencies: '@types/hast': 3.0.4 - '@types/unist': 3.0.2 + '@types/unist': 3.0.3 devlop: 1.1.0 hastscript: 8.0.0 - property-information: 6.4.1 - vfile: 6.0.1 - vfile-location: 5.0.2 + property-information: 6.5.0 + vfile: 6.0.3 + vfile-location: 5.0.3 web-namespaces: 2.0.1 dev: false @@ -5783,20 +5857,20 @@ packages: '@types/hast': 3.0.4 dev: false - /hast-util-raw@9.0.2: - resolution: {integrity: sha512-PldBy71wO9Uq1kyaMch9AHIghtQvIwxBUkv823pKmkTM3oV1JxtsTNYdevMxvUHqcnOAuO65JKU2+0NOxc2ksA==} + /hast-util-raw@9.0.4: + resolution: {integrity: sha512-LHE65TD2YiNsHD3YuXcKPHXPLuYh/gjp12mOfU8jxSrm1f/yJpsb0F/KKljS6U9LJoP0Ux+tCe8iJ2AsPzTdgA==} dependencies: '@types/hast': 3.0.4 - '@types/unist': 3.0.2 + '@types/unist': 3.0.3 '@ungap/structured-clone': 1.2.0 hast-util-from-parse5: 8.0.1 hast-util-to-parse5: 8.0.0 html-void-elements: 3.0.0 - mdast-util-to-hast: 13.1.0 + mdast-util-to-hast: 13.2.0 parse5: 7.1.2 unist-util-position: 5.0.0 unist-util-visit: 5.0.0 - vfile: 6.0.1 + vfile: 6.0.3 web-namespaces: 2.0.1 zwitch: 2.0.4 dev: false @@ -5805,17 +5879,17 @@ packages: resolution: {integrity: sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==} dependencies: '@types/estree': 1.0.5 - '@types/estree-jsx': 1.0.4 + '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 comma-separated-tokens: 2.0.3 devlop: 1.1.0 estree-util-attach-comments: 3.0.0 estree-util-is-identifier-name: 3.0.0 hast-util-whitespace: 3.0.0 - mdast-util-mdx-expression: 2.0.0 - mdast-util-mdx-jsx: 3.1.0 + mdast-util-mdx-expression: 2.0.1 + mdast-util-mdx-jsx: 3.1.3 mdast-util-mdxjs-esm: 2.0.1 - property-information: 6.4.1 + property-information: 6.5.0 space-separated-tokens: 2.0.2 style-to-object: 0.4.4 unist-util-position: 5.0.0 @@ -5828,17 +5902,17 @@ packages: dependencies: '@types/estree': 1.0.5 '@types/hast': 3.0.4 - '@types/unist': 3.0.2 + '@types/unist': 3.0.3 comma-separated-tokens: 2.0.3 devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 hast-util-whitespace: 3.0.0 - mdast-util-mdx-expression: 2.0.0 - mdast-util-mdx-jsx: 3.1.0 + mdast-util-mdx-expression: 2.0.1 + mdast-util-mdx-jsx: 3.1.3 mdast-util-mdxjs-esm: 2.0.1 - property-information: 6.4.1 + property-information: 6.5.0 space-separated-tokens: 2.0.2 - style-to-object: 1.0.5 + style-to-object: 1.0.8 unist-util-position: 5.0.0 vfile-message: 4.0.2 transitivePeerDependencies: @@ -5850,7 +5924,7 @@ packages: '@types/hast': 3.0.4 comma-separated-tokens: 2.0.3 devlop: 1.1.0 - property-information: 6.4.1 + property-information: 6.5.0 space-separated-tokens: 2.0.2 web-namespaces: 2.0.1 zwitch: 2.0.4 @@ -5867,7 +5941,7 @@ packages: '@types/hast': 3.0.4 comma-separated-tokens: 2.0.3 hast-util-parse-selector: 4.0.0 - property-information: 6.4.1 + property-information: 6.5.0 space-separated-tokens: 2.0.2 dev: false @@ -5876,17 +5950,13 @@ packages: hasBin: true dev: false - /heap@0.2.7: - resolution: {integrity: sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==} - dev: false - /history@4.10.1: resolution: {integrity: sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==} dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.25.6 loose-envify: 1.4.0 resolve-pathname: 3.0.0 - tiny-invariant: 1.3.1 + tiny-invariant: 1.3.3 tiny-warning: 1.0.3 value-equal: 1.0.1 dev: false @@ -5913,8 +5983,8 @@ packages: whatwg-encoding: 2.0.0 dev: true - /html-entities@2.4.0: - resolution: {integrity: sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==} + /html-entities@2.5.2: + resolution: {integrity: sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==} dev: false /html-escaper@2.0.2: @@ -5932,7 +6002,7 @@ packages: he: 1.2.0 param-case: 3.0.4 relateurl: 0.2.7 - terser: 5.27.1 + terser: 5.32.0 dev: false /html-minifier-terser@7.2.0: @@ -5946,7 +6016,7 @@ packages: entities: 4.5.0 param-case: 3.0.4 relateurl: 0.2.7 - terser: 5.27.1 + terser: 5.32.0 dev: false /html-tags@3.3.1: @@ -5962,7 +6032,7 @@ packages: resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} dev: false - /html-webpack-plugin@5.6.0(webpack@5.90.2): + /html-webpack-plugin@5.6.0(webpack@5.94.0): resolution: {integrity: sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw==} engines: {node: '>=10.13.0'} peerDependencies: @@ -5979,7 +6049,7 @@ packages: lodash: 4.17.21 pretty-error: 4.0.0 tapable: 2.2.1 - webpack: 5.90.2 + webpack: 5.94.0 dev: false /htmlparser2@6.1.0: @@ -5991,8 +6061,8 @@ packages: entities: 2.2.0 dev: false - /htmlparser2@8.0.2: - resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} + /htmlparser2@9.1.0: + resolution: {integrity: sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==} dependencies: domelementtype: 2.3.0 domhandler: 5.0.3 @@ -6038,7 +6108,7 @@ packages: dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 - debug: 4.3.4 + debug: 4.3.7 transitivePeerDependencies: - supports-color dev: true @@ -6053,11 +6123,11 @@ packages: optional: true dependencies: '@types/express': 4.17.21 - '@types/http-proxy': 1.17.14 + '@types/http-proxy': 1.17.15 http-proxy: 1.18.1 is-glob: 4.0.3 is-plain-obj: 3.0.0 - micromatch: 4.0.5 + micromatch: 4.0.8 transitivePeerDependencies: - debug dev: false @@ -6067,7 +6137,7 @@ packages: engines: {node: '>=8.0.0'} dependencies: eventemitter3: 4.0.7 - follow-redirects: 1.15.6 + follow-redirects: 1.15.9 requires-port: 1.0.0 transitivePeerDependencies: - debug @@ -6085,7 +6155,7 @@ packages: engines: {node: '>= 6'} dependencies: agent-base: 6.0.2 - debug: 4.3.4 + debug: 4.3.7 transitivePeerDependencies: - supports-color dev: true @@ -6108,17 +6178,17 @@ packages: dependencies: safer-buffer: 2.1.2 - /icss-utils@5.1.0(postcss@8.4.35): + /icss-utils@5.1.0(postcss@8.4.47): resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - postcss: 8.4.35 + postcss: 8.4.47 dev: false - /ignore@5.3.1: - resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} + /ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} dev: false @@ -6164,6 +6234,7 @@ packages: /inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. dependencies: once: 1.4.0 wrappy: 1.0.2 @@ -6189,8 +6260,8 @@ packages: /inline-style-parser@0.1.1: resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} - /inline-style-parser@0.2.2: - resolution: {integrity: sha512-EcKzdTHVe8wFVOGEYXiW9WmJXPjqi1T+234YpJr98RiFYKHV3cdy1+3mkTE+KHTHxFFLH51SfaGOoUdW+v7ViQ==} + /inline-style-parser@0.2.4: + resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==} /internmap@1.0.1: resolution: {integrity: sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==} @@ -6216,8 +6287,8 @@ packages: engines: {node: '>= 0.10'} dev: false - /ipaddr.js@2.1.0: - resolution: {integrity: sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==} + /ipaddr.js@2.2.0: + resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} engines: {node: '>= 10'} dev: false @@ -6238,7 +6309,7 @@ packages: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} dependencies: - binary-extensions: 2.2.0 + binary-extensions: 2.3.0 /is-ci@3.0.1: resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} @@ -6247,10 +6318,11 @@ packages: ci-info: 3.9.0 dev: false - /is-core-module@2.13.1: - resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + /is-core-module@2.15.1: + resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} + engines: {node: '>= 0.4'} dependencies: - hasown: 2.0.1 + hasown: 2.0.2 /is-decimal@2.0.1: resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} @@ -6335,11 +6407,6 @@ packages: dependencies: isobject: 3.0.1 - /is-plain-object@5.0.0: - resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} - engines: {node: '>=0.10.0'} - dev: false - /is-potential-custom-element-name@1.0.1: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} dev: true @@ -6395,9 +6462,8 @@ packages: resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} engines: {node: '>=0.10.0'} - /jackspeak@2.3.6: - resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} - engines: {node: '>=14'} + /jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} dependencies: '@isaacs/cliui': 8.0.2 optionalDependencies: @@ -6408,7 +6474,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.11.19 + '@types/node': 20.16.5 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -6419,7 +6485,7 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 20.11.19 + '@types/node': 20.16.5 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -6427,18 +6493,18 @@ packages: resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 20.11.19 + '@types/node': 20.16.5 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 dev: false - /jiti@1.21.0: - resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} + /jiti@1.21.6: + resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} hasBin: true - /joi@17.12.1: - resolution: {integrity: sha512-vtxmq+Lsc5SlfqotnfVjlViWfOL9nt/avKNbKYizwf6gsCfq9NYY/ceYRMFD8XDdrjJ9abJyScWmhmIiy+XRtQ==} + /joi@17.13.3: + resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==} dependencies: '@hapi/hoek': 9.3.0 '@hapi/topo': 5.1.0 @@ -6483,7 +6549,7 @@ packages: http-proxy-agent: 5.0.0 https-proxy-agent: 5.0.1 is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.7 + nwsapi: 2.2.12 parse5: 7.1.2 rrweb-cssom: 0.6.0 saxes: 6.0.0 @@ -6494,7 +6560,7 @@ packages: whatwg-encoding: 2.0.0 whatwg-mimetype: 3.0.0 whatwg-url: 12.0.1 - ws: 8.16.0 + ws: 8.18.0 xml-name-validator: 4.0.0 transitivePeerDependencies: - bufferutil @@ -6540,6 +6606,13 @@ packages: graceful-fs: 4.2.11 dev: false + /katex@0.16.11: + resolution: {integrity: sha512-RQrI8rlHY92OLf3rho/Ts8i/XvjgguEjOkO1BEXcU3N8BqPpSzBNwV/G0Ukr+P/l3ivvJUE/Fa/CwbS6HesGNQ==} + hasBin: true + dependencies: + commander: 8.3.0 + dev: false + /keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} dependencies: @@ -6570,10 +6643,10 @@ packages: package-json: 8.1.1 dev: false - /launch-editor@2.6.1: - resolution: {integrity: sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==} + /launch-editor@2.9.1: + resolution: {integrity: sha512-Gcnl4Bd+hRO9P9icCP/RVVT2o8SFlPXofuCxvA2SaZuH45whSvf5p8x5oih5ftLiVhEI4sp5xDY+R+b3zJBh5w==} dependencies: - picocolors: 1.0.0 + picocolors: 1.1.0 shell-quote: 1.8.1 dev: false @@ -6590,8 +6663,8 @@ packages: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} - /lilconfig@3.0.0: - resolution: {integrity: sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==} + /lilconfig@3.1.2: + resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} engines: {node: '>=14'} /lines-and-columns@1.2.4: @@ -6632,8 +6705,8 @@ packages: json5: 2.2.3 dev: false - /loader-utils@3.2.1: - resolution: {integrity: sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==} + /loader-utils@3.3.1: + resolution: {integrity: sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==} engines: {node: '>= 12.13.0'} dev: false @@ -6703,16 +6776,15 @@ packages: /lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} dependencies: - tslib: 2.6.2 + tslib: 2.7.0 dev: false /lowercase-keys@3.0.0: resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - /lru-cache@10.2.0: - resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} - engines: {node: 14 || >=16.14} + /lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} /lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} @@ -6720,13 +6792,6 @@ packages: yallist: 3.1.1 dev: false - /lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - dependencies: - yallist: 4.0.0 - dev: false - /markdown-extensions@2.0.0: resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} engines: {node: '>=16'} @@ -6738,13 +6803,13 @@ packages: /mdast-util-directive@3.0.0: resolution: {integrity: sha512-JUpYOqKI4mM3sZcNxmF/ox04XYFFkNwr0CFlrQIkCwbvH0xzMCqkMqAde9wRd80VAhaUrwFwKm2nxretdT1h7Q==} dependencies: - '@types/mdast': 4.0.3 - '@types/unist': 3.0.2 + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.0 + mdast-util-from-markdown: 2.0.1 mdast-util-to-markdown: 2.1.0 parse-entities: 4.0.1 - stringify-entities: 4.0.3 + stringify-entities: 4.0.4 unist-util-visit-parents: 6.0.1 transitivePeerDependencies: - supports-color @@ -6753,7 +6818,7 @@ packages: /mdast-util-find-and-replace@3.0.1: resolution: {integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==} dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 escape-string-regexp: 5.0.0 unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 @@ -6763,7 +6828,7 @@ packages: resolution: {integrity: sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==} dependencies: '@types/mdast': 3.0.15 - '@types/unist': 2.0.10 + '@types/unist': 2.0.11 decode-named-character-reference: 1.0.2 mdast-util-to-string: 3.2.0 micromark: 3.2.0 @@ -6778,11 +6843,11 @@ packages: - supports-color dev: false - /mdast-util-from-markdown@2.0.0: - resolution: {integrity: sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==} + /mdast-util-from-markdown@2.0.1: + resolution: {integrity: sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==} dependencies: - '@types/mdast': 4.0.3 - '@types/unist': 3.0.2 + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 decode-named-character-reference: 1.0.2 devlop: 1.1.0 mdast-util-to-string: 4.0.0 @@ -6799,20 +6864,20 @@ packages: /mdast-util-frontmatter@2.0.1: resolution: {integrity: sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==} dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 devlop: 1.1.0 escape-string-regexp: 5.0.0 - mdast-util-from-markdown: 2.0.0 + mdast-util-from-markdown: 2.0.1 mdast-util-to-markdown: 2.1.0 micromark-extension-frontmatter: 2.0.0 transitivePeerDependencies: - supports-color dev: false - /mdast-util-gfm-autolink-literal@2.0.0: - resolution: {integrity: sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg==} + /mdast-util-gfm-autolink-literal@2.0.1: + resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 ccount: 2.0.1 devlop: 1.1.0 mdast-util-find-and-replace: 3.0.1 @@ -6822,9 +6887,9 @@ packages: /mdast-util-gfm-footnote@2.0.0: resolution: {integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==} dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.0 + mdast-util-from-markdown: 2.0.1 mdast-util-to-markdown: 2.1.0 micromark-util-normalize-identifier: 2.0.0 transitivePeerDependencies: @@ -6834,8 +6899,8 @@ packages: /mdast-util-gfm-strikethrough@2.0.0: resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} dependencies: - '@types/mdast': 4.0.3 - mdast-util-from-markdown: 2.0.0 + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.1 mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color @@ -6844,10 +6909,10 @@ packages: /mdast-util-gfm-table@2.0.0: resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 devlop: 1.1.0 markdown-table: 3.0.3 - mdast-util-from-markdown: 2.0.0 + mdast-util-from-markdown: 2.0.1 mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color @@ -6856,9 +6921,9 @@ packages: /mdast-util-gfm-task-list-item@2.0.0: resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.0 + mdast-util-from-markdown: 2.0.1 mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color @@ -6867,8 +6932,8 @@ packages: /mdast-util-gfm@3.0.0: resolution: {integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==} dependencies: - mdast-util-from-markdown: 2.0.0 - mdast-util-gfm-autolink-literal: 2.0.0 + mdast-util-from-markdown: 2.0.1 + mdast-util-gfm-autolink-literal: 2.0.1 mdast-util-gfm-footnote: 2.0.0 mdast-util-gfm-strikethrough: 2.0.0 mdast-util-gfm-table: 2.0.0 @@ -6878,32 +6943,31 @@ packages: - supports-color dev: false - /mdast-util-mdx-expression@2.0.0: - resolution: {integrity: sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==} + /mdast-util-mdx-expression@2.0.1: + resolution: {integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==} dependencies: - '@types/estree-jsx': 1.0.4 + '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.0 + mdast-util-from-markdown: 2.0.1 mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color - /mdast-util-mdx-jsx@3.1.0: - resolution: {integrity: sha512-A8AJHlR7/wPQ3+Jre1+1rq040fX9A4Q1jG8JxmSNp/PLPHg80A6475wxTp3KzHpApFH6yWxFotHrJQA3dXP6/w==} + /mdast-util-mdx-jsx@3.1.3: + resolution: {integrity: sha512-bfOjvNt+1AcbPLTFMFWY149nJz0OjmewJs3LQQ5pIyVGxP4CdOqNVJL6kTaM5c68p8q82Xv3nCyFfUnuEcH3UQ==} dependencies: - '@types/estree-jsx': 1.0.4 + '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 - '@types/mdast': 4.0.3 - '@types/unist': 3.0.2 + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 ccount: 2.0.1 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.0 + mdast-util-from-markdown: 2.0.1 mdast-util-to-markdown: 2.1.0 parse-entities: 4.0.1 - stringify-entities: 4.0.3 - unist-util-remove-position: 5.0.0 + stringify-entities: 4.0.4 unist-util-stringify-position: 4.0.0 vfile-message: 4.0.2 transitivePeerDependencies: @@ -6912,9 +6976,9 @@ packages: /mdast-util-mdx@3.0.0: resolution: {integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==} dependencies: - mdast-util-from-markdown: 2.0.0 - mdast-util-mdx-expression: 2.0.0 - mdast-util-mdx-jsx: 3.1.0 + mdast-util-from-markdown: 2.0.1 + mdast-util-mdx-expression: 2.0.1 + mdast-util-mdx-jsx: 3.1.3 mdast-util-mdxjs-esm: 2.0.1 mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: @@ -6923,11 +6987,11 @@ packages: /mdast-util-mdxjs-esm@2.0.1: resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} dependencies: - '@types/estree-jsx': 1.0.4 + '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.0 + mdast-util-from-markdown: 2.0.1 mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color @@ -6942,27 +7006,27 @@ packages: /mdast-util-phrasing@4.1.0: resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 unist-util-is: 6.0.0 - /mdast-util-to-hast@13.1.0: - resolution: {integrity: sha512-/e2l/6+OdGp/FB+ctrJ9Avz71AN/GRH3oi/3KAx/kMnoUsD6q0woXlDT8lLEeViVKE7oZxE7RXzvO3T8kF2/sA==} + /mdast-util-to-hast@13.2.0: + resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} dependencies: '@types/hast': 3.0.4 - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 '@ungap/structured-clone': 1.2.0 devlop: 1.1.0 micromark-util-sanitize-uri: 2.0.0 trim-lines: 3.0.1 unist-util-position: 5.0.0 unist-util-visit: 5.0.0 - vfile: 6.0.1 + vfile: 6.0.3 /mdast-util-to-markdown@1.5.0: resolution: {integrity: sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==} dependencies: '@types/mdast': 3.0.15 - '@types/unist': 2.0.10 + '@types/unist': 2.0.11 longest-streak: 3.1.0 mdast-util-phrasing: 3.0.1 mdast-util-to-string: 3.2.0 @@ -6974,8 +7038,8 @@ packages: /mdast-util-to-markdown@2.1.0: resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} dependencies: - '@types/mdast': 4.0.3 - '@types/unist': 3.0.2 + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 longest-streak: 3.1.0 mdast-util-phrasing: 4.1.0 mdast-util-to-string: 4.0.0 @@ -6992,7 +7056,7 @@ packages: /mdast-util-to-string@4.0.0: resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 /mdn-data@2.0.14: resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} @@ -7007,11 +7071,11 @@ packages: resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} engines: {node: '>= 4.0.0'} dependencies: - fs-monkey: 1.0.5 + fs-monkey: 1.0.6 dev: false - /merge-descriptors@1.0.1: - resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} + /merge-descriptors@1.0.3: + resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} dev: false /merge-stream@2.0.0: @@ -7021,25 +7085,26 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - /mermaid@10.8.0: - resolution: {integrity: sha512-9CzfSreRjdDJxX796+jW4zjEq0DVw5xVF0nWsqff8OTbrt+ml0TZ5PyYUjjUZJa2NYxYJZZXewEquxGiM8qZEA==} + /mermaid@10.9.1: + resolution: {integrity: sha512-Mx45Obds5W1UkW1nv/7dHRsbfMM1aOKA2+Pxs/IGHNonygDHwmng8xTHyS9z4KWVi0rbko8gjiBmuwwXQ7tiNA==} dependencies: '@braintree/sanitize-url': 6.0.4 '@types/d3-scale': 4.0.8 '@types/d3-scale-chromatic': 3.0.3 - cytoscape: 3.28.1 - cytoscape-cose-bilkent: 4.1.0(cytoscape@3.28.1) - d3: 7.8.5 + cytoscape: 3.30.2 + cytoscape-cose-bilkent: 4.1.0(cytoscape@3.30.2) + d3: 7.9.0 d3-sankey: 0.12.3 dagre-d3-es: 7.0.10 - dayjs: 1.11.10 - dompurify: 3.0.8 - elkjs: 0.9.1 + dayjs: 1.11.13 + dompurify: 3.1.6 + elkjs: 0.9.3 + katex: 0.16.11 khroma: 2.1.0 lodash-es: 4.17.21 mdast-util-from-markdown: 1.3.1 non-layered-tidy-tree-layout: 2.0.2 - stylis: 4.3.1 + stylis: 4.3.4 ts-dedent: 2.2.0 uuid: 9.0.1 web-worker: 1.3.0 @@ -7073,8 +7138,8 @@ packages: uvu: 0.5.6 dev: false - /micromark-core-commonmark@2.0.0: - resolution: {integrity: sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA==} + /micromark-core-commonmark@2.0.1: + resolution: {integrity: sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==} dependencies: decode-named-character-reference: 1.0.2 devlop: 1.1.0 @@ -7089,12 +7154,12 @@ packages: micromark-util-html-tag-name: 2.0.0 micromark-util-normalize-identifier: 2.0.0 micromark-util-resolve-all: 2.0.0 - micromark-util-subtokenize: 2.0.0 + micromark-util-subtokenize: 2.0.1 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - /micromark-extension-directive@3.0.0: - resolution: {integrity: sha512-61OI07qpQrERc+0wEysLHMvoiO3s2R56x5u7glHq2Yqq6EHbH4dW25G9GfDdGCDYqA21KE6DWgNSzxSwHc2hSg==} + /micromark-extension-directive@3.0.1: + resolution: {integrity: sha512-VGV2uxUzhEZmaP7NSFo2vtq7M2nUD+WfmYQD+d8i/1nHbzE+rMy9uzTvUybBbNiVbrhOZibg3gbyoARGqgDWyg==} dependencies: devlop: 1.1.0 micromark-factory-space: 2.0.0 @@ -7114,8 +7179,8 @@ packages: micromark-util-types: 2.0.0 dev: false - /micromark-extension-gfm-autolink-literal@2.0.0: - resolution: {integrity: sha512-rTHfnpt/Q7dEAK1Y5ii0W8bhfJlVJFnJMHIPisfPK3gpVNuOP0VnRl96+YJ3RYWV/P4gFeQoGKNlT3RhuvpqAg==} + /micromark-extension-gfm-autolink-literal@2.1.0: + resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} dependencies: micromark-util-character: 2.1.0 micromark-util-sanitize-uri: 2.0.0 @@ -7123,11 +7188,11 @@ packages: micromark-util-types: 2.0.0 dev: false - /micromark-extension-gfm-footnote@2.0.0: - resolution: {integrity: sha512-6Rzu0CYRKDv3BfLAUnZsSlzx3ak6HAoI85KTiijuKIz5UxZxbUI+pD6oHgw+6UtQuiRwnGRhzMmPRv4smcz0fg==} + /micromark-extension-gfm-footnote@2.1.0: + resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} dependencies: devlop: 1.1.0 - micromark-core-commonmark: 2.0.0 + micromark-core-commonmark: 2.0.1 micromark-factory-space: 2.0.0 micromark-util-character: 2.1.0 micromark-util-normalize-identifier: 2.0.0 @@ -7136,8 +7201,8 @@ packages: micromark-util-types: 2.0.0 dev: false - /micromark-extension-gfm-strikethrough@2.0.0: - resolution: {integrity: sha512-c3BR1ClMp5fxxmwP6AoOY2fXO9U8uFMKs4ADD66ahLTNcwzSCyRVU4k7LPV5Nxo/VJiR4TdzxRQY2v3qIUceCw==} + /micromark-extension-gfm-strikethrough@2.1.0: + resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} dependencies: devlop: 1.1.0 micromark-util-chunked: 2.0.0 @@ -7147,8 +7212,8 @@ packages: micromark-util-types: 2.0.0 dev: false - /micromark-extension-gfm-table@2.0.0: - resolution: {integrity: sha512-PoHlhypg1ItIucOaHmKE8fbin3vTLpDOUg8KAr8gRCF1MOZI9Nquq2i/44wFvviM4WuxJzc3demT8Y3dkfvYrw==} + /micromark-extension-gfm-table@2.1.0: + resolution: {integrity: sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g==} dependencies: devlop: 1.1.0 micromark-factory-space: 2.0.0 @@ -7163,8 +7228,8 @@ packages: micromark-util-types: 2.0.0 dev: false - /micromark-extension-gfm-task-list-item@2.0.1: - resolution: {integrity: sha512-cY5PzGcnULaN5O7T+cOzfMoHjBW7j+T9D2sucA5d/KbsBTPcYdebm9zUd9zzdgJGCwahV+/W78Z3nbulBYVbTw==} + /micromark-extension-gfm-task-list-item@2.1.0: + resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} dependencies: devlop: 1.1.0 micromark-factory-space: 2.0.0 @@ -7176,12 +7241,12 @@ packages: /micromark-extension-gfm@3.0.0: resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} dependencies: - micromark-extension-gfm-autolink-literal: 2.0.0 - micromark-extension-gfm-footnote: 2.0.0 - micromark-extension-gfm-strikethrough: 2.0.0 - micromark-extension-gfm-table: 2.0.0 + micromark-extension-gfm-autolink-literal: 2.1.0 + micromark-extension-gfm-footnote: 2.1.0 + micromark-extension-gfm-strikethrough: 2.1.0 + micromark-extension-gfm-table: 2.1.0 micromark-extension-gfm-tagfilter: 2.0.0 - micromark-extension-gfm-task-list-item: 2.0.1 + micromark-extension-gfm-task-list-item: 2.1.0 micromark-util-combine-extensions: 2.0.0 micromark-util-types: 2.0.0 dev: false @@ -7191,23 +7256,24 @@ packages: dependencies: '@types/estree': 1.0.5 devlop: 1.1.0 - micromark-factory-mdx-expression: 2.0.1 + micromark-factory-mdx-expression: 2.0.2 micromark-factory-space: 2.0.0 micromark-util-character: 2.1.0 micromark-util-events-to-acorn: 2.0.2 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - /micromark-extension-mdx-jsx@3.0.0: - resolution: {integrity: sha512-uvhhss8OGuzR4/N17L1JwvmJIpPhAd8oByMawEKx6NVdBCbesjH4t+vjEp3ZXft9DwvlKSD07fCeI44/N0Vf2w==} + /micromark-extension-mdx-jsx@3.0.1: + resolution: {integrity: sha512-vNuFb9czP8QCtAQcEJn0UJQJZA8Dk6DXKBqx+bg/w0WGuSxDxNr7hErW89tHUY31dUW4NqEOWwmEUNhjTFmHkg==} dependencies: '@types/acorn': 4.0.6 '@types/estree': 1.0.5 devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 - micromark-factory-mdx-expression: 2.0.1 + micromark-factory-mdx-expression: 2.0.2 micromark-factory-space: 2.0.0 micromark-util-character: 2.1.0 + micromark-util-events-to-acorn: 2.0.2 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 vfile-message: 4.0.2 @@ -7222,7 +7288,7 @@ packages: dependencies: '@types/estree': 1.0.5 devlop: 1.1.0 - micromark-core-commonmark: 2.0.0 + micromark-core-commonmark: 2.0.1 micromark-util-character: 2.1.0 micromark-util-events-to-acorn: 2.0.2 micromark-util-symbol: 2.0.0 @@ -7233,10 +7299,10 @@ packages: /micromark-extension-mdxjs@3.0.0: resolution: {integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==} dependencies: - acorn: 8.11.3 - acorn-jsx: 5.3.2(acorn@8.11.3) + acorn: 8.12.1 + acorn-jsx: 5.3.2(acorn@8.12.1) micromark-extension-mdx-expression: 3.0.0 - micromark-extension-mdx-jsx: 3.0.0 + micromark-extension-mdx-jsx: 3.0.1 micromark-extension-mdx-md: 2.0.0 micromark-extension-mdxjs-esm: 3.0.0 micromark-util-combine-extensions: 2.0.0 @@ -7274,11 +7340,12 @@ packages: micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - /micromark-factory-mdx-expression@2.0.1: - resolution: {integrity: sha512-F0ccWIUHRLRrYp5TC9ZYXmZo+p2AM13ggbsW4T0b5CRKP8KHVRB8t4pwtBgTxtjRmwrK0Irwm7vs2JOZabHZfg==} + /micromark-factory-mdx-expression@2.0.2: + resolution: {integrity: sha512-5E5I2pFzJyg2CtemqAbcyCktpHXuJbABnsb32wX2U8IQKhhVFBqkcZR5LRm1WVoFqa4kTueZK4abep7wdo9nrw==} dependencies: '@types/estree': 1.0.5 devlop: 1.1.0 + micromark-factory-space: 2.0.0 micromark-util-character: 2.1.0 micromark-util-events-to-acorn: 2.0.2 micromark-util-symbol: 2.0.0 @@ -7425,7 +7492,7 @@ packages: dependencies: '@types/acorn': 4.0.6 '@types/estree': 1.0.5 - '@types/unist': 3.0.2 + '@types/unist': 3.0.3 devlop: 1.1.0 estree-util-visit: 2.0.0 micromark-util-symbol: 2.0.0 @@ -7485,8 +7552,8 @@ packages: uvu: 0.5.6 dev: false - /micromark-util-subtokenize@2.0.0: - resolution: {integrity: sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg==} + /micromark-util-subtokenize@2.0.1: + resolution: {integrity: sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==} dependencies: devlop: 1.1.0 micromark-util-chunked: 2.0.0 @@ -7511,7 +7578,7 @@ packages: resolution: {integrity: sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==} dependencies: '@types/debug': 4.1.12 - debug: 4.3.4 + debug: 4.3.7 decode-named-character-reference: 1.0.2 micromark-core-commonmark: 1.1.0 micromark-factory-space: 1.1.0 @@ -7535,10 +7602,10 @@ packages: resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==} dependencies: '@types/debug': 4.1.12 - debug: 4.3.4 + debug: 4.3.7 decode-named-character-reference: 1.0.2 devlop: 1.1.0 - micromark-core-commonmark: 2.0.0 + micromark-core-commonmark: 2.0.1 micromark-factory-space: 2.0.0 micromark-util-character: 2.1.0 micromark-util-chunked: 2.0.0 @@ -7548,14 +7615,14 @@ packages: micromark-util-normalize-identifier: 2.0.0 micromark-util-resolve-all: 2.0.0 micromark-util-sanitize-uri: 2.0.0 - micromark-util-subtokenize: 2.0.0 + micromark-util-subtokenize: 2.0.1 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 transitivePeerDependencies: - supports-color - /micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + /micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} dependencies: braces: 3.0.3 @@ -7570,6 +7637,11 @@ packages: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} + /mime-db@1.53.0: + resolution: {integrity: sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==} + engines: {node: '>= 0.6'} + dev: false + /mime-types@2.1.18: resolution: {integrity: sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==} engines: {node: '>= 0.6'} @@ -7602,15 +7674,15 @@ packages: resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - /mini-css-extract-plugin@2.8.0(webpack@5.90.2): - resolution: {integrity: sha512-CxmUYPFcTgET1zImteG/LZOy/4T5rTojesQXkSNBiquhydn78tfbCE9sjIjnJ/UcjNjOC1bphTCCW5rrS7cXAg==} + /mini-css-extract-plugin@2.9.1(webpack@5.94.0): + resolution: {integrity: sha512-+Vyi+GCCOHnrJ2VPS+6aPoXN2k2jgUzDRhTFLjjTBn23qyXJXkjUWQgTL+mXpF5/A8ixLdCc6kWsoeOjKGejKQ==} engines: {node: '>= 12.13.0'} peerDependencies: webpack: ^5.0.0 dependencies: schema-utils: 4.2.0 tapable: 2.2.1 - webpack: 5.90.2 + webpack: 5.94.0 dev: false /minimalistic-assert@1.0.1: @@ -7623,8 +7695,8 @@ packages: brace-expansion: 1.1.11 dev: false - /minimatch@9.0.3: - resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + /minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} dependencies: brace-expansion: 2.0.1 @@ -7633,8 +7705,8 @@ packages: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} dev: false - /minipass@7.0.4: - resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} + /minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} /mri@1.2.0: @@ -7651,12 +7723,8 @@ packages: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} dev: false - /ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - dev: false /multicast-dns@7.2.5: resolution: {integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==} @@ -7690,7 +7758,7 @@ packages: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} dependencies: lower-case: 2.0.2 - tslib: 2.6.2 + tslib: 2.7.0 dev: false /node-emoji@2.1.3: @@ -7708,8 +7776,8 @@ packages: engines: {node: '>= 6.13.0'} dev: false - /node-releases@2.0.14: - resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + /node-releases@2.0.18: + resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} /non-layered-tidy-tree-layout@2.0.2: resolution: {integrity: sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw==} @@ -7729,8 +7797,8 @@ packages: engines: {node: '>=10'} dev: false - /normalize-url@8.0.0: - resolution: {integrity: sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==} + /normalize-url@8.0.1: + resolution: {integrity: sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==} engines: {node: '>=14.16'} /npm-run-path@4.0.1: @@ -7750,8 +7818,8 @@ packages: boolbase: 1.0.0 dev: false - /nwsapi@2.2.7: - resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} + /nwsapi@2.2.12: + resolution: {integrity: sha512-qXDmcVlZV4XRtKFzddidpfVP4oMSGhga+xdMc25mv8kaLUHtgzCDhUxkrN8exkGdTlLNaXj7CV3GtON7zuGZ+w==} dev: true /object-assign@4.1.1: @@ -7762,8 +7830,9 @@ packages: resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} engines: {node: '>= 6'} - /object-inspect@1.13.1: - resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + /object-inspect@1.13.2: + resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} + engines: {node: '>= 0.4'} dev: false /object-keys@1.1.1: @@ -7846,7 +7915,7 @@ packages: resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: - yocto-queue: 1.0.0 + yocto-queue: 1.1.1 dev: false /p-locate@3.0.0: @@ -7890,6 +7959,9 @@ packages: engines: {node: '>=6'} dev: false + /package-json-from-dist@1.0.0: + resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} + /package-json@8.1.1: resolution: {integrity: sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==} engines: {node: '>=14.16'} @@ -7897,14 +7969,14 @@ packages: got: 12.6.1 registry-auth-token: 5.0.2 registry-url: 6.0.1 - semver: 7.6.0 + semver: 7.6.3 dev: false /param-case@3.0.4: resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} dependencies: dot-case: 3.0.4 - tslib: 2.6.2 + tslib: 2.7.0 dev: false /parent-module@1.0.1: @@ -7917,7 +7989,7 @@ packages: /parse-entities@4.0.1: resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==} dependencies: - '@types/unist': 2.0.10 + '@types/unist': 2.0.11 character-entities: 2.0.2 character-entities-legacy: 3.0.0 character-reference-invalid: 2.0.1 @@ -7930,7 +8002,7 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: - '@babel/code-frame': 7.23.5 + '@babel/code-frame': 7.24.7 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -7947,6 +8019,12 @@ packages: parse5: 7.1.2 dev: false + /parse5-parser-stream@7.1.2: + resolution: {integrity: sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==} + dependencies: + parse5: 7.1.2 + dev: false + /parse5@7.1.2: resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} dependencies: @@ -7961,7 +8039,7 @@ packages: resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} dependencies: no-case: 3.0.4 - tslib: 2.6.2 + tslib: 2.7.0 dev: false /path-exists@3.0.0: @@ -7995,19 +8073,19 @@ packages: /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - /path-scurry@1.10.1: - resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} - engines: {node: '>=16 || 14 >=14.17'} + /path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} dependencies: - lru-cache: 10.2.0 - minipass: 7.0.4 + lru-cache: 10.4.3 + minipass: 7.1.2 - /path-to-regexp@0.1.7: - resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} + /path-to-regexp@0.1.10: + resolution: {integrity: sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==} dev: false - /path-to-regexp@1.8.0: - resolution: {integrity: sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==} + /path-to-regexp@1.9.0: + resolution: {integrity: sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==} dependencies: isarray: 0.0.1 dev: false @@ -8028,8 +8106,8 @@ packages: estree-walker: 3.0.3 is-reference: 3.0.2 - /picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + /picocolors@1.1.0: + resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} /picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} @@ -8057,107 +8135,107 @@ packages: find-up: 3.0.0 dev: false - /postcss-calc@8.2.4(postcss@8.4.35): + /postcss-calc@8.2.4(postcss@8.4.47): resolution: {integrity: sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==} peerDependencies: postcss: ^8.2.2 dependencies: - postcss: 8.4.35 - postcss-selector-parser: 6.0.15 + postcss: 8.4.47 + postcss-selector-parser: 6.1.2 postcss-value-parser: 4.2.0 dev: false - /postcss-colormin@5.3.1(postcss@8.4.35): + /postcss-colormin@5.3.1(postcss@8.4.47): resolution: {integrity: sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.23.0 + browserslist: 4.23.3 caniuse-api: 3.0.0 colord: 2.9.3 - postcss: 8.4.35 + postcss: 8.4.47 postcss-value-parser: 4.2.0 dev: false - /postcss-convert-values@5.1.3(postcss@8.4.35): + /postcss-convert-values@5.1.3(postcss@8.4.47): resolution: {integrity: sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.23.0 - postcss: 8.4.35 + browserslist: 4.23.3 + postcss: 8.4.47 postcss-value-parser: 4.2.0 dev: false - /postcss-discard-comments@5.1.2(postcss@8.4.35): + /postcss-discard-comments@5.1.2(postcss@8.4.47): resolution: {integrity: sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.35 + postcss: 8.4.47 dev: false - /postcss-discard-duplicates@5.1.0(postcss@8.4.35): + /postcss-discard-duplicates@5.1.0(postcss@8.4.47): resolution: {integrity: sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.35 + postcss: 8.4.47 dev: false - /postcss-discard-empty@5.1.1(postcss@8.4.35): + /postcss-discard-empty@5.1.1(postcss@8.4.47): resolution: {integrity: sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.35 + postcss: 8.4.47 dev: false - /postcss-discard-overridden@5.1.0(postcss@8.4.35): + /postcss-discard-overridden@5.1.0(postcss@8.4.47): resolution: {integrity: sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.35 + postcss: 8.4.47 dev: false - /postcss-discard-unused@5.1.0(postcss@8.4.35): + /postcss-discard-unused@5.1.0(postcss@8.4.47): resolution: {integrity: sha512-KwLWymI9hbwXmJa0dkrzpRbSJEh0vVUd7r8t0yOGPcfKzyJJxFM8kLyC5Ev9avji6nY95pOp1W6HqIrfT+0VGw==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.35 - postcss-selector-parser: 6.0.15 + postcss: 8.4.47 + postcss-selector-parser: 6.1.2 dev: false - /postcss-import@15.1.0(postcss@8.4.35): + /postcss-import@15.1.0(postcss@8.4.47): resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} engines: {node: '>=14.0.0'} peerDependencies: postcss: ^8.0.0 dependencies: - postcss: 8.4.35 + postcss: 8.4.47 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.8 - /postcss-js@4.0.1(postcss@8.4.35): + /postcss-js@4.0.1(postcss@8.4.47): resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} engines: {node: ^12 || ^14 || >= 16} peerDependencies: postcss: ^8.4.21 dependencies: camelcase-css: 2.0.1 - postcss: 8.4.35 + postcss: 8.4.47 - /postcss-load-config@4.0.2(postcss@8.4.35): + /postcss-load-config@4.0.2(postcss@8.4.47): resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} engines: {node: '>= 14'} peerDependencies: @@ -8169,285 +8247,285 @@ packages: ts-node: optional: true dependencies: - lilconfig: 3.0.0 - postcss: 8.4.35 - yaml: 2.3.4 + lilconfig: 3.1.2 + postcss: 8.4.47 + yaml: 2.5.1 - /postcss-loader@7.3.4(postcss@8.4.35)(typescript@5.3.3)(webpack@5.90.2): + /postcss-loader@7.3.4(postcss@8.4.47)(typescript@5.6.2)(webpack@5.94.0): resolution: {integrity: sha512-iW5WTTBSC5BfsBJ9daFMPVrLT36MrNiC6fqOZTTaHjBNX6Pfd5p+hSBqe/fEeNd7pc13QiAyGt7VdGMw4eRC4A==} engines: {node: '>= 14.15.0'} peerDependencies: postcss: ^7.0.0 || ^8.0.1 webpack: ^5.0.0 dependencies: - cosmiconfig: 8.3.6(typescript@5.3.3) - jiti: 1.21.0 - postcss: 8.4.35 - semver: 7.6.0 - webpack: 5.90.2 + cosmiconfig: 8.3.6(typescript@5.6.2) + jiti: 1.21.6 + postcss: 8.4.47 + semver: 7.6.3 + webpack: 5.94.0 transitivePeerDependencies: - typescript dev: false - /postcss-merge-idents@5.1.1(postcss@8.4.35): + /postcss-merge-idents@5.1.1(postcss@8.4.47): resolution: {integrity: sha512-pCijL1TREiCoog5nQp7wUe+TUonA2tC2sQ54UGeMmryK3UFGIYKqDyjnqd6RcuI4znFn9hWSLNN8xKE/vWcUQw==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - cssnano-utils: 3.1.0(postcss@8.4.35) - postcss: 8.4.35 + cssnano-utils: 3.1.0(postcss@8.4.47) + postcss: 8.4.47 postcss-value-parser: 4.2.0 dev: false - /postcss-merge-longhand@5.1.7(postcss@8.4.35): + /postcss-merge-longhand@5.1.7(postcss@8.4.47): resolution: {integrity: sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.35 + postcss: 8.4.47 postcss-value-parser: 4.2.0 - stylehacks: 5.1.1(postcss@8.4.35) + stylehacks: 5.1.1(postcss@8.4.47) dev: false - /postcss-merge-rules@5.1.4(postcss@8.4.35): + /postcss-merge-rules@5.1.4(postcss@8.4.47): resolution: {integrity: sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.23.0 + browserslist: 4.23.3 caniuse-api: 3.0.0 - cssnano-utils: 3.1.0(postcss@8.4.35) - postcss: 8.4.35 - postcss-selector-parser: 6.0.15 + cssnano-utils: 3.1.0(postcss@8.4.47) + postcss: 8.4.47 + postcss-selector-parser: 6.1.2 dev: false - /postcss-minify-font-values@5.1.0(postcss@8.4.35): + /postcss-minify-font-values@5.1.0(postcss@8.4.47): resolution: {integrity: sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.35 + postcss: 8.4.47 postcss-value-parser: 4.2.0 dev: false - /postcss-minify-gradients@5.1.1(postcss@8.4.35): + /postcss-minify-gradients@5.1.1(postcss@8.4.47): resolution: {integrity: sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: colord: 2.9.3 - cssnano-utils: 3.1.0(postcss@8.4.35) - postcss: 8.4.35 + cssnano-utils: 3.1.0(postcss@8.4.47) + postcss: 8.4.47 postcss-value-parser: 4.2.0 dev: false - /postcss-minify-params@5.1.4(postcss@8.4.35): + /postcss-minify-params@5.1.4(postcss@8.4.47): resolution: {integrity: sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.23.0 - cssnano-utils: 3.1.0(postcss@8.4.35) - postcss: 8.4.35 + browserslist: 4.23.3 + cssnano-utils: 3.1.0(postcss@8.4.47) + postcss: 8.4.47 postcss-value-parser: 4.2.0 dev: false - /postcss-minify-selectors@5.2.1(postcss@8.4.35): + /postcss-minify-selectors@5.2.1(postcss@8.4.47): resolution: {integrity: sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.35 - postcss-selector-parser: 6.0.15 + postcss: 8.4.47 + postcss-selector-parser: 6.1.2 dev: false - /postcss-modules-extract-imports@3.0.0(postcss@8.4.35): - resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==} + /postcss-modules-extract-imports@3.1.0(postcss@8.4.47): + resolution: {integrity: sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - postcss: 8.4.35 + postcss: 8.4.47 dev: false - /postcss-modules-local-by-default@4.0.4(postcss@8.4.35): - resolution: {integrity: sha512-L4QzMnOdVwRm1Qb8m4x8jsZzKAaPAgrUF1r/hjDR2Xj7R+8Zsf97jAlSQzWtKx5YNiNGN8QxmPFIc/sh+RQl+Q==} + /postcss-modules-local-by-default@4.0.5(postcss@8.4.47): + resolution: {integrity: sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - icss-utils: 5.1.0(postcss@8.4.35) - postcss: 8.4.35 - postcss-selector-parser: 6.0.15 + icss-utils: 5.1.0(postcss@8.4.47) + postcss: 8.4.47 + postcss-selector-parser: 6.1.2 postcss-value-parser: 4.2.0 dev: false - /postcss-modules-scope@3.1.1(postcss@8.4.35): - resolution: {integrity: sha512-uZgqzdTleelWjzJY+Fhti6F3C9iF1JR/dODLs/JDefozYcKTBCdD8BIl6nNPbTbcLnGrk56hzwZC2DaGNvYjzA==} + /postcss-modules-scope@3.2.0(postcss@8.4.47): + resolution: {integrity: sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - postcss: 8.4.35 - postcss-selector-parser: 6.0.15 + postcss: 8.4.47 + postcss-selector-parser: 6.1.2 dev: false - /postcss-modules-values@4.0.0(postcss@8.4.35): + /postcss-modules-values@4.0.0(postcss@8.4.47): resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - icss-utils: 5.1.0(postcss@8.4.35) - postcss: 8.4.35 + icss-utils: 5.1.0(postcss@8.4.47) + postcss: 8.4.47 dev: false - /postcss-nested@6.0.1(postcss@8.4.35): - resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} + /postcss-nested@6.2.0(postcss@8.4.47): + resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.2.14 dependencies: - postcss: 8.4.35 - postcss-selector-parser: 6.0.15 + postcss: 8.4.47 + postcss-selector-parser: 6.1.2 - /postcss-normalize-charset@5.1.0(postcss@8.4.35): + /postcss-normalize-charset@5.1.0(postcss@8.4.47): resolution: {integrity: sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.35 + postcss: 8.4.47 dev: false - /postcss-normalize-display-values@5.1.0(postcss@8.4.35): + /postcss-normalize-display-values@5.1.0(postcss@8.4.47): resolution: {integrity: sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.35 + postcss: 8.4.47 postcss-value-parser: 4.2.0 dev: false - /postcss-normalize-positions@5.1.1(postcss@8.4.35): + /postcss-normalize-positions@5.1.1(postcss@8.4.47): resolution: {integrity: sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.35 + postcss: 8.4.47 postcss-value-parser: 4.2.0 dev: false - /postcss-normalize-repeat-style@5.1.1(postcss@8.4.35): + /postcss-normalize-repeat-style@5.1.1(postcss@8.4.47): resolution: {integrity: sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.35 + postcss: 8.4.47 postcss-value-parser: 4.2.0 dev: false - /postcss-normalize-string@5.1.0(postcss@8.4.35): + /postcss-normalize-string@5.1.0(postcss@8.4.47): resolution: {integrity: sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.35 + postcss: 8.4.47 postcss-value-parser: 4.2.0 dev: false - /postcss-normalize-timing-functions@5.1.0(postcss@8.4.35): + /postcss-normalize-timing-functions@5.1.0(postcss@8.4.47): resolution: {integrity: sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.35 + postcss: 8.4.47 postcss-value-parser: 4.2.0 dev: false - /postcss-normalize-unicode@5.1.1(postcss@8.4.35): + /postcss-normalize-unicode@5.1.1(postcss@8.4.47): resolution: {integrity: sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.23.0 - postcss: 8.4.35 + browserslist: 4.23.3 + postcss: 8.4.47 postcss-value-parser: 4.2.0 dev: false - /postcss-normalize-url@5.1.0(postcss@8.4.35): + /postcss-normalize-url@5.1.0(postcss@8.4.47): resolution: {integrity: sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: normalize-url: 6.1.0 - postcss: 8.4.35 + postcss: 8.4.47 postcss-value-parser: 4.2.0 dev: false - /postcss-normalize-whitespace@5.1.1(postcss@8.4.35): + /postcss-normalize-whitespace@5.1.1(postcss@8.4.47): resolution: {integrity: sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.35 + postcss: 8.4.47 postcss-value-parser: 4.2.0 dev: false - /postcss-ordered-values@5.1.3(postcss@8.4.35): + /postcss-ordered-values@5.1.3(postcss@8.4.47): resolution: {integrity: sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - cssnano-utils: 3.1.0(postcss@8.4.35) - postcss: 8.4.35 + cssnano-utils: 3.1.0(postcss@8.4.47) + postcss: 8.4.47 postcss-value-parser: 4.2.0 dev: false - /postcss-reduce-idents@5.2.0(postcss@8.4.35): + /postcss-reduce-idents@5.2.0(postcss@8.4.47): resolution: {integrity: sha512-BTrLjICoSB6gxbc58D5mdBK8OhXRDqud/zodYfdSi52qvDHdMwk+9kB9xsM8yJThH/sZU5A6QVSmMmaN001gIg==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.35 + postcss: 8.4.47 postcss-value-parser: 4.2.0 dev: false - /postcss-reduce-initial@5.1.2(postcss@8.4.35): + /postcss-reduce-initial@5.1.2(postcss@8.4.47): resolution: {integrity: sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.23.0 + browserslist: 4.23.3 caniuse-api: 3.0.0 - postcss: 8.4.35 + postcss: 8.4.47 dev: false - /postcss-reduce-transforms@5.1.0(postcss@8.4.35): + /postcss-reduce-transforms@5.1.0(postcss@8.4.47): resolution: {integrity: sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.35 + postcss: 8.4.47 postcss-value-parser: 4.2.0 dev: false @@ -8459,63 +8537,63 @@ packages: util-deprecate: 1.0.2 dev: true - /postcss-selector-parser@6.0.15: - resolution: {integrity: sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==} + /postcss-selector-parser@6.1.2: + resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} engines: {node: '>=4'} dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 - /postcss-sort-media-queries@4.4.1(postcss@8.4.35): + /postcss-sort-media-queries@4.4.1(postcss@8.4.47): resolution: {integrity: sha512-QDESFzDDGKgpiIh4GYXsSy6sek2yAwQx1JASl5AxBtU1Lq2JfKBljIPNdil989NcSKRQX1ToiaKphImtBuhXWw==} engines: {node: '>=10.0.0'} peerDependencies: postcss: ^8.4.16 dependencies: - postcss: 8.4.35 + postcss: 8.4.47 sort-css-media-queries: 2.1.0 dev: false - /postcss-svgo@5.1.0(postcss@8.4.35): + /postcss-svgo@5.1.0(postcss@8.4.47): resolution: {integrity: sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.35 + postcss: 8.4.47 postcss-value-parser: 4.2.0 svgo: 2.8.0 dev: false - /postcss-unique-selectors@5.1.1(postcss@8.4.35): + /postcss-unique-selectors@5.1.1(postcss@8.4.47): resolution: {integrity: sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.35 - postcss-selector-parser: 6.0.15 + postcss: 8.4.47 + postcss-selector-parser: 6.1.2 dev: false /postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - /postcss-zindex@5.1.0(postcss@8.4.35): + /postcss-zindex@5.1.0(postcss@8.4.47): resolution: {integrity: sha512-fgFMf0OtVSBR1va1JNHYgMxYk73yhn/qb4uQDq1DLGYolz8gHCyr/sesEuGUaYs58E3ZJRcpoGuPVoB7Meiq9A==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.35 + postcss: 8.4.47 dev: false - /postcss@8.4.35: - resolution: {integrity: sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==} + /postcss@8.4.47: + resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.7 - picocolors: 1.0.0 - source-map-js: 1.0.2 + picocolors: 1.1.0 + source-map-js: 1.2.1 /pretty-error@4.0.0: resolution: {integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==} @@ -8529,14 +8607,14 @@ packages: engines: {node: '>=4'} dev: false - /prism-react-renderer@2.3.1(react@18.2.0): - resolution: {integrity: sha512-Rdf+HzBLR7KYjzpJ1rSoxT9ioO85nZngQEoFIhL07XhtJHlCU3SOz0GJ6+qvMyQe0Se+BV3qpe6Yd/NmQF5Juw==} + /prism-react-renderer@2.4.0(react@18.3.1): + resolution: {integrity: sha512-327BsVCD/unU4CNLZTWVHyUHKnsqcvj2qbPlQ8MiBE2eq2rgctjigPA1Gp9HLF83kZ20zNN6jgizHJeEsyFYOw==} peerDependencies: react: '>=16.0.0' dependencies: - '@types/prismjs': 1.26.3 - clsx: 2.1.0 - react: 18.2.0 + '@types/prismjs': 1.26.4 + clsx: 2.1.1 + react: 18.3.1 dev: false /prismjs@1.29.0: @@ -8563,8 +8641,8 @@ packages: object-assign: 4.1.1 react-is: 16.13.1 - /property-information@6.4.1: - resolution: {integrity: sha512-OHYtXfu5aI2sS2LWFSN5rgJjrQ4pCy8i1jubJLe2QvMF8JJ++HXTUIVWFLfXJoaOfvYYjk2SN8J2wFUWIGXT4w==} + /property-information@6.5.0: + resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} /proto-list@1.2.4: resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} @@ -8597,11 +8675,11 @@ packages: escape-goat: 4.0.0 dev: false - /qs@6.11.0: - resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} + /qs@6.13.0: + resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} engines: {node: '>=0.6'} dependencies: - side-channel: 1.0.5 + side-channel: 1.0.6 dev: false /querystringify@2.2.0: @@ -8656,17 +8734,17 @@ packages: strip-json-comments: 2.0.1 dev: false - /react-accessible-accordion@5.0.0(react-dom@18.2.0)(react@18.2.0): + /react-accessible-accordion@5.0.0(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-MT2obYpTgLIIfPr9d7hEyvPB5rg8uJcHpgA83JSRlEUHvzH48+8HJPvzSs+nM+XprTugDgLfhozO5qyJpBvYRQ==} peerDependencies: react: ^16.3.2 || ^17.0.0 || ^18.0.0 react-dom: ^16.3.3 || ^17.0.0 || ^18.0.0 dependencies: - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) dev: false - /react-dev-utils@12.0.1(typescript@5.3.3)(webpack@5.90.2): + /react-dev-utils@12.0.1(typescript@5.6.2)(webpack@5.94.0): resolution: {integrity: sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==} engines: {node: '>=14'} peerDependencies: @@ -8676,22 +8754,22 @@ packages: typescript: optional: true dependencies: - '@babel/code-frame': 7.23.5 + '@babel/code-frame': 7.24.7 address: 1.2.2 - browserslist: 4.23.0 + browserslist: 4.23.3 chalk: 4.1.2 cross-spawn: 7.0.3 detect-port-alt: 1.1.6 escape-string-regexp: 4.0.0 filesize: 8.0.7 find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 6.5.3(typescript@5.3.3)(webpack@5.90.2) + fork-ts-checker-webpack-plugin: 6.5.3(typescript@5.6.2)(webpack@5.94.0) global-modules: 2.0.0 globby: 11.1.0 gzip-size: 6.0.0 immer: 9.0.21 is-root: 2.1.0 - loader-utils: 3.2.1 + loader-utils: 3.3.1 open: 8.4.2 pkg-up: 3.1.0 prompts: 2.4.2 @@ -8700,22 +8778,22 @@ packages: shell-quote: 1.8.1 strip-ansi: 6.0.1 text-table: 0.2.0 - typescript: 5.3.3 - webpack: 5.90.2 + typescript: 5.6.2 + webpack: 5.94.0 transitivePeerDependencies: - eslint - supports-color - vue-template-compiler dev: false - /react-dom@18.2.0(react@18.2.0): - resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} + /react-dom@18.3.1(react@18.3.1): + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} peerDependencies: - react: ^18.2.0 + react: ^18.3.1 dependencies: loose-envify: 1.4.0 - react: 18.2.0 - scheduler: 0.23.0 + react: 18.3.1 + scheduler: 0.23.2 /react-error-overlay@6.0.11: resolution: {integrity: sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==} @@ -8724,131 +8802,129 @@ packages: /react-fast-compare@3.2.2: resolution: {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==} - /react-helmet-async@1.3.0(react-dom@18.2.0)(react@18.2.0): + /react-helmet-async@1.3.0(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg==} peerDependencies: react: ^16.6.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.6.0 || ^17.0.0 || ^18.0.0 dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.25.6 invariant: 2.2.4 prop-types: 15.8.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) react-fast-compare: 3.2.2 shallowequal: 1.1.0 - /react-helmet-async@2.0.4(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-yxjQMWposw+akRfvpl5+8xejl4JtUlHnEBcji6u8/e6oc7ozT+P9PNTWMhCbz2y9tc5zPegw2BvKjQA+NwdEjQ==} + /react-helmet-async@2.0.5(react@18.3.1): + resolution: {integrity: sha512-rYUYHeus+i27MvFE+Jaa4WsyBKGkL6qVgbJvSBoX8mbsWoABJXdEO0bZyi0F6i+4f0NuIb8AvqPMj3iXFHkMwg==} peerDependencies: react: ^16.6.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.6.0 || ^17.0.0 || ^18.0.0 dependencies: invariant: 2.2.4 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react: 18.3.1 react-fast-compare: 3.2.2 shallowequal: 1.1.0 - /react-icons@5.0.1(react@18.2.0): - resolution: {integrity: sha512-WqLZJ4bLzlhmsvme6iFdgO8gfZP17rfjYEJ2m9RsZjZ+cc4k1hTzknEz63YS1MeT50kVzoa1Nz36f4BEx+Wigw==} + /react-icons@5.3.0(react@18.3.1): + resolution: {integrity: sha512-DnUk8aFbTyQPSkCfF8dbX6kQjXA9DktMeJqfjrg6cK9vwQVMxmcA3BfP4QoiztVmEHtwlTgLFsPuH2NskKT6eg==} peerDependencies: react: '*' dependencies: - react: 18.2.0 + react: 18.3.1 dev: false /react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - /react-json-view-lite@1.2.1(react@18.2.0): - resolution: {integrity: sha512-Itc0g86fytOmKZoIoJyGgvNqohWSbh3NXIKNgH6W6FT9PC1ck4xas1tT3Rr/b3UlFXyA9Jjaw9QSXdZy2JwGMQ==} + /react-json-view-lite@1.5.0(react@18.3.1): + resolution: {integrity: sha512-nWqA1E4jKPklL2jvHWs6s+7Na0qNgw9HCP6xehdQJeg6nPBTFZgGwyko9Q0oj+jQWKTTVRS30u0toM5wiuL3iw==} engines: {node: '>=14'} peerDependencies: react: ^16.13.1 || ^17.0.0 || ^18.0.0 dependencies: - react: 18.2.0 + react: 18.3.1 dev: false - /react-loadable-ssr-addon-v5-slorber@1.0.1(@docusaurus/react-loadable@5.5.2)(webpack@5.90.2): + /react-loadable-ssr-addon-v5-slorber@1.0.1(@docusaurus/react-loadable@5.5.2)(webpack@5.94.0): resolution: {integrity: sha512-lq3Lyw1lGku8zUEJPDxsNm1AfYHBrO9Y1+olAYwpUJ2IGFBskM0DMKok97A6LWUpHm+o7IvQBOWu9MLenp9Z+A==} engines: {node: '>=10.13.0'} peerDependencies: react-loadable: '*' webpack: '>=4.41.1 || 5.x' dependencies: - '@babel/runtime': 7.23.9 - react-loadable: /@docusaurus/react-loadable@5.5.2(react@18.2.0) - webpack: 5.90.2 + '@babel/runtime': 7.25.6 + react-loadable: /@docusaurus/react-loadable@5.5.2(react@18.3.1) + webpack: 5.94.0 dev: false - /react-markdown@9.0.1(@types/react@18.2.56)(react@18.2.0): + /react-markdown@9.0.1(@types/react@18.3.5)(react@18.3.1): resolution: {integrity: sha512-186Gw/vF1uRkydbsOIkcGXw7aHq0sZOCRFFjGrr7b9+nVZg4UfA4enXCaxm4fUzecU38sWfrNDitGhshuU7rdg==} peerDependencies: '@types/react': '>=18' react: '>=18' dependencies: '@types/hast': 3.0.4 - '@types/react': 18.2.56 + '@types/react': 18.3.5 devlop: 1.1.0 hast-util-to-jsx-runtime: 2.3.0 html-url-attributes: 3.0.0 - mdast-util-to-hast: 13.1.0 - react: 18.2.0 + mdast-util-to-hast: 13.2.0 + react: 18.3.1 remark-parse: 11.0.0 remark-rehype: 11.1.0 - unified: 11.0.4 + unified: 11.0.5 unist-util-visit: 5.0.0 - vfile: 6.0.1 + vfile: 6.0.3 transitivePeerDependencies: - supports-color dev: false - /react-router-config@5.1.1(react-router@5.3.4)(react@18.2.0): + /react-router-config@5.1.1(react-router@5.3.4)(react@18.3.1): resolution: {integrity: sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg==} peerDependencies: react: '>=15' react-router: '>=5' dependencies: - '@babel/runtime': 7.23.9 - react: 18.2.0 - react-router: 5.3.4(react@18.2.0) + '@babel/runtime': 7.25.6 + react: 18.3.1 + react-router: 5.3.4(react@18.3.1) dev: false - /react-router-dom@5.3.4(react@18.2.0): + /react-router-dom@5.3.4(react@18.3.1): resolution: {integrity: sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==} peerDependencies: react: '>=15' dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.25.6 history: 4.10.1 loose-envify: 1.4.0 prop-types: 15.8.1 - react: 18.2.0 - react-router: 5.3.4(react@18.2.0) - tiny-invariant: 1.3.1 + react: 18.3.1 + react-router: 5.3.4(react@18.3.1) + tiny-invariant: 1.3.3 tiny-warning: 1.0.3 dev: false - /react-router@5.3.4(react@18.2.0): + /react-router@5.3.4(react@18.3.1): resolution: {integrity: sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==} peerDependencies: react: '>=15' dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.25.6 history: 4.10.1 hoist-non-react-statics: 3.3.2 loose-envify: 1.4.0 - path-to-regexp: 1.8.0 + path-to-regexp: 1.9.0 prop-types: 15.8.1 - react: 18.2.0 + react: 18.3.1 react-is: 16.13.1 - tiny-invariant: 1.3.1 + tiny-invariant: 1.3.3 tiny-warning: 1.0.3 dev: false - /react@18.2.0: - resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} + /react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} engines: {node: '>=0.10.0'} dependencies: loose-envify: 1.4.0 @@ -8903,8 +8979,8 @@ packages: minimatch: 3.1.2 dev: false - /regenerate-unicode-properties@10.1.1: - resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==} + /regenerate-unicode-properties@10.2.0: + resolution: {integrity: sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==} engines: {node: '>=4'} dependencies: regenerate: 1.4.2 @@ -8920,7 +8996,7 @@ packages: /regenerator-transform@0.15.2: resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.25.6 dev: false /regexpu-core@5.3.2: @@ -8929,17 +9005,17 @@ packages: dependencies: '@babel/regjsgen': 0.8.0 regenerate: 1.4.2 - regenerate-unicode-properties: 10.1.1 + regenerate-unicode-properties: 10.2.0 regjsparser: 0.9.1 unicode-match-property-ecmascript: 2.0.0 - unicode-match-property-value-ecmascript: 2.1.0 + unicode-match-property-value-ecmascript: 2.2.0 dev: false /registry-auth-token@5.0.2: resolution: {integrity: sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==} engines: {node: '>=14'} dependencies: - '@pnpm/npm-conf': 2.2.2 + '@pnpm/npm-conf': 2.3.1 dev: false /registry-url@6.0.1: @@ -8960,8 +9036,8 @@ packages: resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==} dependencies: '@types/hast': 3.0.4 - hast-util-raw: 9.0.2 - vfile: 6.0.1 + hast-util-raw: 9.0.4 + vfile: 6.0.3 dev: false /relateurl@0.2.7: @@ -8983,10 +9059,10 @@ packages: /remark-directive@3.0.0: resolution: {integrity: sha512-l1UyWJ6Eg1VPU7Hm/9tt0zKtReJQNOA4+iDMAxTyZNWnJnFlbS/7zhiel/rogTLQ2vMYwDzSJa4BiVNqGlqIMA==} dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 mdast-util-directive: 3.0.0 - micromark-extension-directive: 3.0.0 - unified: 11.0.4 + micromark-extension-directive: 3.0.1 + unified: 11.0.5 transitivePeerDependencies: - supports-color dev: false @@ -8995,20 +9071,20 @@ packages: resolution: {integrity: sha512-fHdvsTR1dHkWKev9eNyhTo4EFwbUvJ8ka9SgeWkMPYFX4WoI7ViVBms3PjlQYgw5TLvNQso3GUB/b/8t3yo+dg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: - '@types/mdast': 4.0.3 - emoticon: 4.0.1 + '@types/mdast': 4.0.4 + emoticon: 4.1.0 mdast-util-find-and-replace: 3.0.1 node-emoji: 2.1.3 - unified: 11.0.4 + unified: 11.0.5 dev: false /remark-frontmatter@5.0.0: resolution: {integrity: sha512-XTFYvNASMe5iPN0719nPrdItC9aU0ssC4v14mH1BCi1u0n1gAocqcujWUrByftZTbLhRtiKRyjYTSIOcr69UVQ==} dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 mdast-util-frontmatter: 2.0.1 micromark-extension-frontmatter: 2.0.0 - unified: 11.0.4 + unified: 11.0.5 transitivePeerDependencies: - supports-color dev: false @@ -9016,12 +9092,12 @@ packages: /remark-gfm@4.0.0: resolution: {integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==} dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 mdast-util-gfm: 3.0.0 micromark-extension-gfm: 3.0.0 remark-parse: 11.0.0 remark-stringify: 11.0.0 - unified: 11.0.4 + unified: 11.0.5 transitivePeerDependencies: - supports-color dev: false @@ -9037,10 +9113,10 @@ packages: /remark-parse@11.0.0: resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} dependencies: - '@types/mdast': 4.0.3 - mdast-util-from-markdown: 2.0.0 + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.1 micromark-util-types: 2.0.0 - unified: 11.0.4 + unified: 11.0.5 transitivePeerDependencies: - supports-color @@ -9048,17 +9124,17 @@ packages: resolution: {integrity: sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g==} dependencies: '@types/hast': 3.0.4 - '@types/mdast': 4.0.3 - mdast-util-to-hast: 13.1.0 - unified: 11.0.4 - vfile: 6.0.1 + '@types/mdast': 4.0.4 + mdast-util-to-hast: 13.2.0 + unified: 11.0.5 + vfile: 6.0.3 /remark-stringify@11.0.0: resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 mdast-util-to-markdown: 2.1.0 - unified: 11.0.4 + unified: 11.0.5 dev: false /renderkid@3.0.0: @@ -9104,7 +9180,7 @@ packages: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true dependencies: - is-core-module: 2.13.1 + is-core-module: 2.15.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 @@ -9125,6 +9201,7 @@ packages: /rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true dependencies: glob: 7.2.3 @@ -9142,14 +9219,14 @@ packages: resolution: {integrity: sha512-PGMBq03+TTG/p/cRB7HCLKJ1MgDIi07+QU1faSjiYRfmY5UsAttV9Hs08jDAHVwcOwmVLcSJkpwyfXszVjWfIQ==} dev: false - /rtlcss@4.1.1: - resolution: {integrity: sha512-/oVHgBtnPNcggP2aVXQjSy6N1mMAfHg4GSag0QtZBlD5bdDgAHwr4pydqJGd+SUCu9260+Pjqbjwtvu7EMH1KQ==} + /rtlcss@4.3.0: + resolution: {integrity: sha512-FI+pHEn7Wc4NqKXMXFM+VAYKEj/mRIcW4h24YVwVtyjI+EqGrLc2Hx/Ny0lrZ21cBWU2goLy36eqMcNj3AQJig==} engines: {node: '>=12.0.0'} hasBin: true dependencies: - escalade: 3.1.2 - picocolors: 1.0.0 - postcss: 8.4.35 + escalade: 3.2.0 + picocolors: 1.1.0 + postcss: 8.4.47 strip-json-comments: 3.1.1 dev: false @@ -9179,8 +9256,8 @@ packages: /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - /sax@1.3.0: - resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==} + /sax@1.4.1: + resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} dev: false /saxes@6.0.0: @@ -9190,8 +9267,8 @@ packages: xmlchars: 2.2.0 dev: true - /scheduler@0.23.0: - resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} + /scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} dependencies: loose-envify: 1.4.0 @@ -9217,13 +9294,13 @@ packages: engines: {node: '>= 12.13.0'} dependencies: '@types/json-schema': 7.0.15 - ajv: 8.12.0 - ajv-formats: 2.1.1(ajv@8.12.0) - ajv-keywords: 5.1.0(ajv@8.12.0) + ajv: 8.17.1 + ajv-formats: 2.1.1(ajv@8.17.1) + ajv-keywords: 5.1.0(ajv@8.17.1) dev: false - /search-insights@2.13.0: - resolution: {integrity: sha512-Orrsjf9trHHxFRuo9/rzm0KIWmgzE8RMlZMzuhZOJ01Rnz3D0YBAe+V6473t6/H6c7irs6Lt48brULAiRWb3Vw==} + /search-insights@2.17.2: + resolution: {integrity: sha512-zFNpOpUO+tY2D85KrxJ+aqwnIfdEGi06UH2+xEb+Bp9Mwznmauqc9djbnBibJO5mpfUPPa8st6Sx65+vbeO45g==} dev: false /section-matter@1.0.0: @@ -9250,7 +9327,7 @@ packages: resolution: {integrity: sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==} engines: {node: '>=12'} dependencies: - semver: 7.6.0 + semver: 7.6.3 dev: false /semver@6.3.1: @@ -9258,16 +9335,14 @@ packages: hasBin: true dev: false - /semver@7.6.0: - resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} + /semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} engines: {node: '>=10'} hasBin: true - dependencies: - lru-cache: 6.0.0 dev: false - /send@0.18.0: - resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} + /send@0.19.0: + resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} engines: {node: '>= 0.8.0'} dependencies: debug: 2.6.9 @@ -9320,20 +9395,20 @@ packages: - supports-color dev: false - /serve-static@1.15.0: - resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} + /serve-static@1.16.2: + resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} engines: {node: '>= 0.8.0'} dependencies: - encodeurl: 1.0.2 + encodeurl: 2.0.0 escape-html: 1.0.3 parseurl: 1.3.3 - send: 0.18.0 + send: 0.19.0 transitivePeerDependencies: - supports-color dev: false - /set-function-length@1.2.1: - resolution: {integrity: sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==} + /set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} dependencies: define-data-property: 1.1.4 @@ -9385,14 +9460,14 @@ packages: rechoir: 0.6.2 dev: false - /side-channel@1.0.5: - resolution: {integrity: sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ==} + /side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 es-errors: 1.3.0 get-intrinsic: 1.2.4 - object-inspect: 1.13.1 + object-inspect: 1.13.2 dev: false /signal-exit@3.0.7: @@ -9407,7 +9482,7 @@ packages: resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} engines: {node: '>= 10'} dependencies: - '@polka/url': 1.0.0-next.24 + '@polka/url': 1.0.0-next.25 mrmime: 2.0.0 totalist: 3.0.1 dev: false @@ -9416,15 +9491,15 @@ packages: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} dev: false - /sitemap@7.1.1: - resolution: {integrity: sha512-mK3aFtjz4VdJN0igpIJrinf3EO8U8mxOPsTBzSsy06UtjZQJ3YY3o3Xa7zSc5nMqcMrRwlChHZ18Kxg0caiPBg==} + /sitemap@7.1.2: + resolution: {integrity: sha512-ARCqzHJ0p4gWt+j7NlU5eDlIO9+Rkr/JhPFZKKQ1l5GCus7rJH4UdrlVAh0xC/gDS/Qir2UMxqYNHtsKr2rpCw==} engines: {node: '>=12.0.0', npm: '>=5.6.0'} hasBin: true dependencies: '@types/node': 17.0.45 '@types/sax': 1.2.7 arg: 5.0.2 - sax: 1.3.0 + sax: 1.4.1 dev: false /skin-tone@2.0.0: @@ -9457,8 +9532,8 @@ packages: engines: {node: '>= 6.3.0'} dev: false - /source-map-js@1.0.2: - resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + /source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} /source-map-support@0.5.21: @@ -9481,7 +9556,7 @@ packages: /spdy-transport@3.0.0: resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} dependencies: - debug: 4.3.4 + debug: 4.3.7 detect-node: 2.1.0 hpack.js: 2.1.6 obuf: 1.1.2 @@ -9495,7 +9570,7 @@ packages: resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} engines: {node: '>=6.0.0'} dependencies: - debug: 4.3.4 + debug: 4.3.7 handle-thing: 2.0.1 http-deceiver: 1.2.7 select-hose: 2.0.0 @@ -9532,6 +9607,18 @@ packages: resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} dev: false + /ste-core@3.0.11: + resolution: {integrity: sha512-ivkRENMh0mdGoPlZ4xVcEaC8rXQfTEfvonRw5m8VDKV7kgcbZbaNd1TnKl08wXbcLdT7okSc63HNP8cVhy95zg==} + engines: {node: '>=4.2.4'} + dev: false + + /ste-simple-events@3.0.11: + resolution: {integrity: sha512-PDoQajqiTtJLNDWfJCihzACiTVZyFsXi6hNAVNelNJoNmqj+BaWuhJ/NHaAHxzfSRoMbL+hFgfPqFmxiHhAQSQ==} + engines: {node: '>=4.2.4'} + dependencies: + ste-core: 3.0.11 + dev: false + /string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -9560,8 +9647,8 @@ packages: safe-buffer: 5.2.1 dev: false - /stringify-entities@4.0.3: - resolution: {integrity: sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==} + /stringify-entities@4.0.4: + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} dependencies: character-entities-html4: 2.1.0 character-entities-legacy: 3.0.0 @@ -9585,7 +9672,7 @@ packages: resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} engines: {node: '>=12'} dependencies: - ansi-regex: 6.0.1 + ansi-regex: 6.1.0 /strip-bom-string@1.0.0: resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} @@ -9612,29 +9699,24 @@ packages: dependencies: inline-style-parser: 0.1.1 - /style-to-object@1.0.5: - resolution: {integrity: sha512-rDRwHtoDD3UMMrmZ6BzOW0naTjMsVZLIjsGleSKS/0Oz+cgCfAPRspaqJuE8rDzpKha/nEvnM0IF4seEAZUTKQ==} + /style-to-object@1.0.8: + resolution: {integrity: sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==} dependencies: - inline-style-parser: 0.2.2 + inline-style-parser: 0.2.4 - /stylehacks@5.1.1(postcss@8.4.35): + /stylehacks@5.1.1(postcss@8.4.47): resolution: {integrity: sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.23.0 - postcss: 8.4.35 - postcss-selector-parser: 6.0.15 + browserslist: 4.23.3 + postcss: 8.4.47 + postcss-selector-parser: 6.1.2 dev: false - /stylis@4.3.1: - resolution: {integrity: sha512-EQepAV+wMsIaGVGX1RECzgrcqRRU/0sYOHkeLsZ3fzHaHXZy4DaOOX0vOlGQdlsjkh3mFHAIlVimpwAs4dslyQ==} - dev: false - - /sub-events@1.9.0: - resolution: {integrity: sha512-dnFBayilG9Ku0k/lNs1Y7WV4kv91+ovCoeBV3uIYrY49DylvBb6z9d9ED2ctcrvX2YlReFalpCgJNtSgmrOaJg==} - engines: {node: '>=10.0.0'} + /stylis@4.3.4: + resolution: {integrity: sha512-osIBl6BGUmSfDkyH2mB7EFvCJntXDrLhKjHTRj/rK6xLH0yuPrHULDRQzKokSOD4VoorhtKpfcfW1GAntu8now==} dev: false /sucrase@3.35.0: @@ -9642,9 +9724,9 @@ packages: engines: {node: '>=16 || 14 >=14.17'} hasBin: true dependencies: - '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/gen-mapping': 0.3.5 commander: 4.1.1 - glob: 10.3.10 + glob: 10.4.5 lines-and-columns: 1.2.4 mz: 2.7.0 pirates: 4.0.6 @@ -9688,49 +9770,49 @@ packages: css-select: 4.3.0 css-tree: 1.1.3 csso: 4.2.0 - picocolors: 1.0.0 + picocolors: 1.1.0 stable: 0.1.8 dev: false - /swr@2.2.5(react@18.2.0): + /swr@2.2.5(react@18.3.1): resolution: {integrity: sha512-QtxqyclFeAsxEUeZIYmsaQ0UjimSq1RZ9Un7I68/0ClKK/U3LoyQunwkQfJZr2fc22DfIXLNDc2wFyTEikCUpg==} peerDependencies: react: ^16.11.0 || ^17.0.0 || ^18.0.0 dependencies: client-only: 0.0.1 - react: 18.2.0 - use-sync-external-store: 1.2.0(react@18.2.0) + react: 18.3.1 + use-sync-external-store: 1.2.2(react@18.3.1) dev: false /symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} dev: true - /tailwindcss@3.4.1: - resolution: {integrity: sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==} + /tailwindcss@3.4.11: + resolution: {integrity: sha512-qhEuBcLemjSJk5ajccN9xJFtM/h0AVCPaA6C92jNP+M2J8kX+eMJHI7R2HFKUvvAsMpcfLILMCFYSeDwpMmlUg==} engines: {node: '>=14.0.0'} hasBin: true dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 - chokidar: 3.5.3 + chokidar: 3.6.0 didyoumean: 1.2.2 dlv: 1.1.3 fast-glob: 3.3.2 glob-parent: 6.0.2 is-glob: 4.0.3 - jiti: 1.21.0 + jiti: 1.21.6 lilconfig: 2.1.0 - micromatch: 4.0.5 + micromatch: 4.0.8 normalize-path: 3.0.0 object-hash: 3.0.0 - picocolors: 1.0.0 - postcss: 8.4.35 - postcss-import: 15.1.0(postcss@8.4.35) - postcss-js: 4.0.1(postcss@8.4.35) - postcss-load-config: 4.0.2(postcss@8.4.35) - postcss-nested: 6.0.1(postcss@8.4.35) - postcss-selector-parser: 6.0.15 + picocolors: 1.1.0 + postcss: 8.4.47 + postcss-import: 15.1.0(postcss@8.4.47) + postcss-js: 4.0.1(postcss@8.4.47) + postcss-load-config: 4.0.2(postcss@8.4.47) + postcss-nested: 6.2.0(postcss@8.4.47) + postcss-selector-parser: 6.1.2 resolve: 1.22.8 sucrase: 3.35.0 transitivePeerDependencies: @@ -9745,7 +9827,7 @@ packages: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} - /terser-webpack-plugin@5.3.10(webpack@5.90.2): + /terser-webpack-plugin@5.3.10(webpack@5.94.0): resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -9761,20 +9843,20 @@ packages: uglify-js: optional: true dependencies: - '@jridgewell/trace-mapping': 0.3.22 + '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 - terser: 5.27.1 - webpack: 5.90.2 + terser: 5.32.0 + webpack: 5.94.0 - /terser@5.27.1: - resolution: {integrity: sha512-29wAr6UU/oQpnTw5HoadwjUZnFQXGdOfj0LjZ4sVxzqwHh/QVkvr7m8y9WoR4iN3FRitVduTc6KdjcW38Npsug==} + /terser@5.32.0: + resolution: {integrity: sha512-v3Gtw3IzpBJ0ugkxEX8U0W6+TnPKRRCWGh1jC/iM/e3Ki5+qvO1L1EAZ56bZasc64aXHwRHNIQEzm6//i5cemQ==} engines: {node: '>=10'} hasBin: true dependencies: - '@jridgewell/source-map': 0.3.5 - acorn: 8.11.3 + '@jridgewell/source-map': 0.3.6 + acorn: 8.12.1 commander: 2.20.3 source-map-support: 0.5.21 @@ -9797,8 +9879,8 @@ packages: resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} dev: false - /tiny-invariant@1.3.1: - resolution: {integrity: sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==} + /tiny-invariant@1.3.3: + resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} dev: false /tiny-warning@1.0.3: @@ -9857,12 +9939,12 @@ packages: /ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - /tslib@2.6.2: - resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + /tslib@2.7.0: + resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} dev: false - /tslog@4.9.2: - resolution: {integrity: sha512-wBM+LRJoNl34Bdu8mYEFxpvmOUedpNUwMNQB/NcuPIZKwdDde6xLHUev3bBjXQU7gdurX++X/YE7gLH8eXYsiQ==} + /tslog@4.9.3: + resolution: {integrity: sha512-oDWuGVONxhVEBtschLf2cs/Jy8i7h1T+CpdkTNWQgdAF7DhRo2G8vMCgILKe7ojdEkLhICWgI1LYSSKaJsRgcw==} engines: {node: '>=16'} dev: false @@ -9890,16 +9972,21 @@ packages: is-typedarray: 1.0.0 dev: false - /typescript@5.3.3: - resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} + /typescript@5.6.2: + resolution: {integrity: sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==} engines: {node: '>=14.17'} hasBin: true - /undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + /undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} - /unicode-canonical-property-names-ecmascript@2.0.0: - resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} + /undici@6.19.8: + resolution: {integrity: sha512-U8uCCl2x9TK3WANvmBavymRzxbfFYG+tAu+fgx3zxQy3qdagQqBLwJVrdyO1TBfUXvfKveMKJZhpvUYoOjM+4g==} + engines: {node: '>=18.17'} + dev: false + + /unicode-canonical-property-names-ecmascript@2.0.1: + resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} engines: {node: '>=4'} dev: false @@ -9912,12 +9999,12 @@ packages: resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} engines: {node: '>=4'} dependencies: - unicode-canonical-property-names-ecmascript: 2.0.0 + unicode-canonical-property-names-ecmascript: 2.0.1 unicode-property-aliases-ecmascript: 2.1.0 dev: false - /unicode-match-property-value-ecmascript@2.1.0: - resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} + /unicode-match-property-value-ecmascript@2.2.0: + resolution: {integrity: sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==} engines: {node: '>=4'} dev: false @@ -9926,16 +10013,16 @@ packages: engines: {node: '>=4'} dev: false - /unified@11.0.4: - resolution: {integrity: sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==} + /unified@11.0.5: + resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} dependencies: - '@types/unist': 3.0.2 + '@types/unist': 3.0.3 bail: 2.0.2 devlop: 1.1.0 extend: 3.0.2 is-plain-obj: 4.1.0 trough: 2.2.0 - vfile: 6.0.1 + vfile: 6.0.3 /unique-string@3.0.0: resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==} @@ -9947,58 +10034,52 @@ packages: /unist-util-is@5.2.1: resolution: {integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==} dependencies: - '@types/unist': 2.0.10 + '@types/unist': 2.0.11 dev: false /unist-util-is@6.0.0: resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} dependencies: - '@types/unist': 3.0.2 + '@types/unist': 3.0.3 /unist-util-position-from-estree@2.0.0: resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==} dependencies: - '@types/unist': 3.0.2 + '@types/unist': 3.0.3 /unist-util-position@5.0.0: resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} dependencies: - '@types/unist': 3.0.2 - - /unist-util-remove-position@5.0.0: - resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==} - dependencies: - '@types/unist': 3.0.2 - unist-util-visit: 5.0.0 + '@types/unist': 3.0.3 /unist-util-stringify-position@3.0.3: resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==} dependencies: - '@types/unist': 2.0.10 + '@types/unist': 2.0.11 dev: false /unist-util-stringify-position@4.0.0: resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} dependencies: - '@types/unist': 3.0.2 + '@types/unist': 3.0.3 /unist-util-visit-parents@5.1.3: resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==} dependencies: - '@types/unist': 2.0.10 + '@types/unist': 2.0.11 unist-util-is: 5.2.1 dev: false /unist-util-visit-parents@6.0.1: resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} dependencies: - '@types/unist': 3.0.2 + '@types/unist': 3.0.3 unist-util-is: 6.0.0 /unist-util-visit@4.1.2: resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==} dependencies: - '@types/unist': 2.0.10 + '@types/unist': 2.0.11 unist-util-is: 5.2.1 unist-util-visit-parents: 5.1.3 dev: false @@ -10006,7 +10087,7 @@ packages: /unist-util-visit@5.0.0: resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} dependencies: - '@types/unist': 3.0.2 + '@types/unist': 3.0.3 unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 @@ -10025,15 +10106,15 @@ packages: engines: {node: '>= 0.8'} dev: false - /update-browserslist-db@1.0.13(browserslist@4.23.0): - resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + /update-browserslist-db@1.1.0(browserslist@4.23.3): + resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' dependencies: - browserslist: 4.23.0 - escalade: 3.1.2 - picocolors: 1.0.0 + browserslist: 4.23.3 + escalade: 3.2.0 + picocolors: 1.1.0 /update-notifier@6.0.2: resolution: {integrity: sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==} @@ -10050,7 +10131,7 @@ packages: is-yarn-global: 0.4.1 latest-version: 7.0.0 pupa: 3.1.0 - semver: 7.6.0 + semver: 7.6.3 semver-diff: 4.0.0 xdg-basedir: 5.1.0 dev: false @@ -10060,7 +10141,7 @@ packages: dependencies: punycode: 2.3.1 - /url-loader@4.1.1(file-loader@6.2.0)(webpack@5.90.2): + /url-loader@4.1.1(file-loader@6.2.0)(webpack@5.94.0): resolution: {integrity: sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -10070,11 +10151,11 @@ packages: file-loader: optional: true dependencies: - file-loader: 6.2.0(webpack@5.90.2) + file-loader: 6.2.0(webpack@5.94.0) loader-utils: 2.0.4 mime-types: 2.1.35 schema-utils: 3.3.0 - webpack: 5.90.2 + webpack: 5.94.0 dev: false /url-parse@1.5.10: @@ -10084,12 +10165,12 @@ packages: requires-port: 1.0.0 dev: true - /use-sync-external-store@1.2.0(react@18.2.0): - resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} + /use-sync-external-store@1.2.2(react@18.3.1): + resolution: {integrity: sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - react: 18.2.0 + react: 18.3.1 dev: false /util-deprecate@1.0.2: @@ -10138,24 +10219,23 @@ packages: engines: {node: '>= 0.8'} dev: false - /vfile-location@5.0.2: - resolution: {integrity: sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==} + /vfile-location@5.0.3: + resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==} dependencies: - '@types/unist': 3.0.2 - vfile: 6.0.1 + '@types/unist': 3.0.3 + vfile: 6.0.3 dev: false /vfile-message@4.0.2: resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} dependencies: - '@types/unist': 3.0.2 + '@types/unist': 3.0.3 unist-util-stringify-position: 4.0.0 - /vfile@6.0.1: - resolution: {integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==} + /vfile@6.0.3: + resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} dependencies: - '@types/unist': 3.0.2 - unist-util-stringify-position: 4.0.0 + '@types/unist': 3.0.3 vfile-message: 4.0.2 /w3c-xmlserializer@4.0.0: @@ -10165,8 +10245,8 @@ packages: xml-name-validator: 4.0.0 dev: true - /watchpack@2.4.0: - resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} + /watchpack@2.4.2: + resolution: {integrity: sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==} engines: {node: '>=10.13.0'} dependencies: glob-to-regexp: 0.4.1 @@ -10191,22 +10271,21 @@ packages: engines: {node: '>=12'} dev: true - /webpack-bundle-analyzer@4.10.1: - resolution: {integrity: sha512-s3P7pgexgT/HTUSYgxJyn28A+99mmLq4HsJepMPzu0R8ImJc52QNqaFYW1Z2z2uIb1/J3eYgaAWVpaC+v/1aAQ==} + /webpack-bundle-analyzer@4.10.2: + resolution: {integrity: sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw==} engines: {node: '>= 10.13.0'} hasBin: true dependencies: '@discoveryjs/json-ext': 0.5.7 - acorn: 8.11.3 - acorn-walk: 8.3.2 + acorn: 8.12.1 + acorn-walk: 8.3.4 commander: 7.2.0 debounce: 1.2.1 escape-string-regexp: 4.0.0 gzip-size: 6.0.0 html-escaper: 2.0.2 - is-plain-object: 5.0.0 opener: 1.5.2 - picocolors: 1.0.0 + picocolors: 1.1.0 sirv: 2.0.4 ws: 7.5.10 transitivePeerDependencies: @@ -10214,7 +10293,7 @@ packages: - utf-8-validate dev: false - /webpack-dev-middleware@5.3.4(webpack@5.90.2): + /webpack-dev-middleware@5.3.4(webpack@5.94.0): resolution: {integrity: sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==} engines: {node: '>= 12.13.0'} peerDependencies: @@ -10225,11 +10304,11 @@ packages: mime-types: 2.1.35 range-parser: 1.2.1 schema-utils: 4.2.0 - webpack: 5.90.2 + webpack: 5.94.0 dev: false - /webpack-dev-server@4.15.1(webpack@5.90.2): - resolution: {integrity: sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==} + /webpack-dev-server@4.15.2(webpack@5.94.0): + resolution: {integrity: sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==} engines: {node: '>= 12.13.0'} hasBin: true peerDependencies: @@ -10245,9 +10324,9 @@ packages: '@types/connect-history-api-fallback': 1.5.4 '@types/express': 4.17.21 '@types/serve-index': 1.9.4 - '@types/serve-static': 1.15.5 + '@types/serve-static': 1.15.7 '@types/sockjs': 0.3.36 - '@types/ws': 8.5.10 + '@types/ws': 8.5.12 ansi-html-community: 0.0.8 bonjour-service: 1.2.1 chokidar: 3.6.0 @@ -10255,12 +10334,12 @@ packages: compression: 1.7.4 connect-history-api-fallback: 2.0.0 default-gateway: 6.0.3 - express: 4.19.2 + express: 4.21.0 graceful-fs: 4.2.11 - html-entities: 2.4.0 + html-entities: 2.5.2 http-proxy-middleware: 2.0.6(@types/express@4.17.21) - ipaddr.js: 2.1.0 - launch-editor: 2.6.1 + ipaddr.js: 2.2.0 + launch-editor: 2.9.1 open: 8.4.2 p-retry: 4.6.2 rimraf: 3.0.2 @@ -10269,9 +10348,9 @@ packages: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack: 5.90.2 - webpack-dev-middleware: 5.3.4(webpack@5.90.2) - ws: 8.16.0 + webpack: 5.94.0 + webpack-dev-middleware: 5.3.4(webpack@5.94.0) + ws: 8.18.0 transitivePeerDependencies: - bufferutil - debug @@ -10291,8 +10370,8 @@ packages: resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} engines: {node: '>=10.13.0'} - /webpack@5.90.2: - resolution: {integrity: sha512-ziXu8ABGr0InCMEYFnHrYweinHK2PWrMqnwdHk2oK3rRhv/1B+2FnfwYv5oD+RrknK/Pp/Hmyvu+eAsaMYhzCw==} + /webpack@5.94.0: + resolution: {integrity: sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -10301,17 +10380,16 @@ packages: webpack-cli: optional: true dependencies: - '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.5 - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/wasm-edit': 1.11.6 - '@webassemblyjs/wasm-parser': 1.11.6 - acorn: 8.11.3 - acorn-import-assertions: 1.9.0(acorn@8.11.3) - browserslist: 4.23.0 - chrome-trace-event: 1.0.3 - enhanced-resolve: 5.15.0 - es-module-lexer: 1.4.1 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/wasm-edit': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 + acorn: 8.12.1 + acorn-import-attributes: 1.9.5(acorn@8.12.1) + browserslist: 4.23.3 + chrome-trace-event: 1.0.4 + enhanced-resolve: 5.17.1 + es-module-lexer: 1.5.4 eslint-scope: 5.1.1 events: 3.3.0 glob-to-regexp: 0.4.1 @@ -10322,15 +10400,15 @@ packages: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(webpack@5.90.2) - watchpack: 2.4.0 + terser-webpack-plugin: 5.3.10(webpack@5.94.0) + watchpack: 2.4.2 webpack-sources: 3.2.3 transitivePeerDependencies: - '@swc/core' - esbuild - uglify-js - /webpackbar@5.0.2(webpack@5.90.2): + /webpackbar@5.0.2(webpack@5.94.0): resolution: {integrity: sha512-BmFJo7veBDgQzfWXl/wwYXr/VFus0614qZ8i9znqcl9fnEdiVkdbi0TedLQ6xAK92HZHDJ0QmyQ0fmuZPAgCYQ==} engines: {node: '>=12'} peerDependencies: @@ -10340,7 +10418,7 @@ packages: consola: 2.15.3 pretty-time: 1.1.0 std-env: 3.7.0 - webpack: 5.90.2 + webpack: 5.94.0 dev: false /websocket-driver@0.7.4: @@ -10364,11 +10442,23 @@ packages: iconv-lite: 0.6.3 dev: true + /whatwg-encoding@3.1.1: + resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} + engines: {node: '>=18'} + dependencies: + iconv-lite: 0.6.3 + dev: false + /whatwg-mimetype@3.0.0: resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} engines: {node: '>=12'} dev: true + /whatwg-mimetype@4.0.0: + resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} + engines: {node: '>=18'} + dev: false + /whatwg-url@12.0.1: resolution: {integrity: sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==} engines: {node: '>=14'} @@ -10443,8 +10533,8 @@ packages: optional: true dev: false - /ws@8.16.0: - resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==} + /ws@8.18.0: + resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -10464,7 +10554,7 @@ packages: resolution: {integrity: sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==} hasBin: true dependencies: - sax: 1.3.0 + sax: 1.4.1 dev: false /xml-name-validator@4.0.0: @@ -10485,18 +10575,15 @@ packages: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} dev: false - /yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - dev: false - /yaml@1.10.2: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} dev: false - /yaml@2.3.4: - resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} + /yaml@2.5.1: + resolution: {integrity: sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==} engines: {node: '>= 14'} + hasBin: true /yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} @@ -10508,7 +10595,7 @@ packages: engines: {node: '>=12'} dependencies: cliui: 8.0.1 - escalade: 3.1.2 + escalade: 3.2.0 get-caller-file: 2.0.5 require-directory: 2.1.1 string-width: 4.2.3 @@ -10521,8 +10608,8 @@ packages: engines: {node: '>=10'} dev: false - /yocto-queue@1.0.0: - resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} + /yocto-queue@1.1.1: + resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} engines: {node: '>=12.20'} dev: false diff --git a/src/components/tools/FrequencyCalculator.tsx b/src/components/tools/FrequencyCalculator.tsx index ffd96cba..d00f3236 100644 --- a/src/components/tools/FrequencyCalculator.tsx +++ b/src/components/tools/FrequencyCalculator.tsx @@ -215,6 +215,14 @@ const modemPresets = new Map< Protobuf.Config.Config_LoRaConfig_ModemPreset, Modem >([ + [ + Protobuf.Config.Config_LoRaConfig_ModemPreset.SHORT_TURBO, + { + bw: 500, + cr: 5, + sf: 7, + }, + ], [ Protobuf.Config.Config_LoRaConfig_ModemPreset.SHORT_FAST, { @@ -323,8 +331,9 @@ export const FrequencyCalculator = (): JSX.Element => { return (
- +
- +
-
- - + +
-
- +
-
- - + +
); diff --git a/src/css/custom.css b/src/css/custom.css index 51ca50b0..ec58c8ad 100644 --- a/src/css/custom.css +++ b/src/css/custom.css @@ -185,6 +185,7 @@ a + .navbar__link > svg { .markdown :where(li):not(:where([class~="not-prose"] *)) { margin-bottom: 0; margin-top: 0; + line-height: 1.6; } .markdown @@ -271,4 +272,12 @@ blockquote p::after, .markdown blockquote p::after { content: none !important; display: none !important; -} \ No newline at end of file +} + +p { + line-height: 1.6; +} + +.markdown img { + margin-bottom: 0; +} diff --git a/src/css/faq.css b/src/css/faq.css index 5592460a..5e60327a 100644 --- a/src/css/faq.css +++ b/src/css/faq.css @@ -1,46 +1,46 @@ .accordion { - border-radius: 2px; - border: 1px solid var(--ifm-color-emphasis-200); + border-radius: 2px; + border: 1px solid var(--ifm-color-emphasis-200); } .accordion__item + .accordion__item { - border-top: 1px solid var(--ifm-color-emphasis-200); + border-top: 1px solid var(--ifm-color-emphasis-200); } .accordion__button { - background-color: var(--ifm-footer-background-color); - border: none; - cursor: pointer; - padding: calc(var(--ifm-pre-padding)/1.5); - text-align: left; - width: 100%; + background-color: var(--ifm-footer-background-color); + border: none; + cursor: pointer; + padding: calc(var(--ifm-pre-padding) / 1.5); + text-align: left; + width: 100%; } .accordion__button:hover { - background-color: var(--ifm-background-surface-color); + background-color: var(--ifm-background-surface-color); } .accordion__button:before { - border-bottom: 2px solid currentColor; - border-right: 2px solid currentColor; - content: ''; - display: inline-block; - height: 10px; - margin-right: 12px; - transform: rotate(-45deg); - width: 10px; + border-bottom: 2px solid currentColor; + border-right: 2px solid currentColor; + content: ""; + display: inline-block; + height: 10px; + margin-right: 12px; + transform: rotate(-45deg); + width: 10px; } -.accordion__button[aria-expanded='true']::before, -.accordion__button[aria-selected='true']::before { - transform: rotate(45deg); +.accordion__button[aria-expanded="true"]::before, +.accordion__button[aria-selected="true"]::before { + transform: rotate(45deg); } [hidden] { - display: none; + display: none; } .accordion__panel { - background: var(--ifm-background-color); - padding: var(--ifm-pre-padding); + background: var(--ifm-background-color); + padding: var(--ifm-pre-padding); } diff --git a/static/img/Open_Collective_logo_2021.svg b/static/img/Open_Collective_logo_2021.svg deleted file mode 100644 index 4de9005e..00000000 --- a/static/img/Open_Collective_logo_2021.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/img/about/link-budget-vs-data-rate.webp b/static/img/about/link-budget-vs-data-rate.webp new file mode 100644 index 00000000..5fc05fae Binary files /dev/null and b/static/img/about/link-budget-vs-data-rate.webp differ diff --git a/static/img/blog/Meshtastic_PKC_ECDH.png b/static/img/blog/Meshtastic_PKC_ECDH.png new file mode 100644 index 00000000..5bd9ad59 Binary files /dev/null and b/static/img/blog/Meshtastic_PKC_ECDH.png differ diff --git a/static/img/contributing/Open_Collective_logo_2021.svg b/static/img/contributing/Open_Collective_logo_2021.svg new file mode 100644 index 00000000..baaad9d0 --- /dev/null +++ b/static/img/contributing/Open_Collective_logo_2021.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/img/contributing/dd_logo_h_rgb.svg b/static/img/contributing/dd_logo_h_rgb.svg new file mode 100644 index 00000000..1632c2c6 --- /dev/null +++ b/static/img/contributing/dd_logo_h_rgb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/img/contributing/dd_logo_h_white.svg b/static/img/contributing/dd_logo_h_white.svg new file mode 100644 index 00000000..1d581b5b --- /dev/null +++ b/static/img/contributing/dd_logo_h_white.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/img/contributing/vercel-logotype-dark.svg b/static/img/contributing/vercel-logotype-dark.svg new file mode 100644 index 00000000..ee7c2a4a --- /dev/null +++ b/static/img/contributing/vercel-logotype-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/img/contributing/vercel-logotype-light.svg b/static/img/contributing/vercel-logotype-light.svg new file mode 100644 index 00000000..fb2a4d76 --- /dev/null +++ b/static/img/contributing/vercel-logotype-light.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/img/hardware/heltec/HT-VME213_PIN_MAP.webp b/static/img/hardware/heltec/HT-VME213_PIN_MAP.webp new file mode 100644 index 00000000..b345c2ed Binary files /dev/null and b/static/img/hardware/heltec/HT-VME213_PIN_MAP.webp differ diff --git a/static/img/hardware/heltec/HT-VME290_PIN_MAP.webp b/static/img/hardware/heltec/HT-VME290_PIN_MAP.webp new file mode 100644 index 00000000..ae17e4b1 Binary files /dev/null and b/static/img/hardware/heltec/HT-VME290_PIN_MAP.webp differ diff --git a/static/img/hardware/heltec/HT-VMT190_PIN_MAP.webp b/static/img/hardware/heltec/HT-VMT190_PIN_MAP.webp new file mode 100644 index 00000000..f09e96ce Binary files /dev/null and b/static/img/hardware/heltec/HT-VMT190_PIN_MAP.webp differ diff --git a/static/img/hardware/seeed/card_tracker.webp b/static/img/hardware/seeed/card_tracker.webp new file mode 100644 index 00000000..5660fb64 Binary files /dev/null and b/static/img/hardware/seeed/card_tracker.webp differ diff --git a/static/img/hardware/seeed/t1000-e-hardware.webp b/static/img/hardware/seeed/t1000-e-hardware.webp new file mode 100644 index 00000000..93529a86 Binary files /dev/null and b/static/img/hardware/seeed/t1000-e-hardware.webp differ diff --git a/static/img/hardware/seeed/t1000-e-meshtastic.webp b/static/img/hardware/seeed/t1000-e-meshtastic.webp new file mode 100644 index 00000000..0c956e6f Binary files /dev/null and b/static/img/hardware/seeed/t1000-e-meshtastic.webp differ diff --git a/static/img/vercel-logotype-dark.svg b/static/img/vercel-logotype-dark.svg deleted file mode 100644 index bb5a15a2..00000000 --- a/static/img/vercel-logotype-dark.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/static/img/vercel-logotype-light.svg b/static/img/vercel-logotype-light.svg deleted file mode 100644 index 0fbca5b5..00000000 --- a/static/img/vercel-logotype-light.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/vercel.json b/vercel.json index afbb715b..dec376fc 100644 --- a/vercel.json +++ b/vercel.json @@ -72,6 +72,54 @@ { "source": "/docs/", "destination": "/docs/introduction/" + }, + { + "source": "/docs/hardware/devices/rak/:path*/", + "destination": "/docs/hardware/devices/rak-wireless/wisblock/:path*" + }, + { + "source": "/docs/hardware/devices/lora/:path*/", + "destination": "/docs/hardware/devices/lilygo/lora/:path*" + }, + { + "source": "/docs/hardware/devices/tbeam/:path*/", + "destination": "/docs/hardware/devices/lilygo/tbeam/:path*" + }, + { + "source": "/docs/hardware/devices/techo/:path*/", + "destination": "/docs/hardware/devices/lily/techo/:path*" + }, + { + "source": "/docs/hardware/devices/tdeck/:path*/", + "destination": "/docs/hardware/devices/lilygo/tdeck/:path*" + }, + { + "source": "/docs/hardware/devices/twatch/:path*/", + "destination": "/docs/hardware/devices/lilygo/twatch/:path*" + }, + { + "source": "/docs/hardware/devices/heltec/:path*/", + "destination": "/docs/hardware/devices/heltec-automation/lora32/:path*" + }, + { + "source": "/docs/hardware/devices/heltec-sensor/:path*/", + "destination": "/docs/hardware/devices/heltec-automation/sensor/:path*" + }, + { + "source": "/docs/hardware/devices/nano/:path*/", + "destination": "/docs/hardware/devices/b-and-q-consulting/nano/:path*" + }, + { + "source": "/docs/hardware/devices/station-series/:path*/", + "destination": "/docs/hardware/devices/b-and-q-consulting/station-series/:path*" + }, + { + "source": "/docs/hardware/devices/raspberry-pi/:path*/", + "destination": "/docs/hardware/devices/raspberrypi/pico/:path*" + }, + { + "source": "/docs/hardware/devices/seeed-wm1110/:path*/", + "destination": "/docs/hardware/devices/seeed-studio/wm1110/:path*" } ] }