From 90e5cff5072b915aaedac9423fed944baaf860f3 Mon Sep 17 00:00:00 2001 From: swarnabhasinha Date: Mon, 28 Jul 2025 23:43:22 +0530 Subject: [PATCH 01/18] feat: enhance OptimumP2P documentation --- .vitepress/theme/style.css | 31 + docs/learn/overview/p2p.md | 71 +- package-lock.json | 7232 ++++++++++++++++++++++++++++ static/img/P2P_data_flow_dark.png | Bin 0 -> 275480 bytes static/img/P2P_data_flow_light.png | Bin 0 -> 360335 bytes static/img/intro.png | Bin 0 -> 114276 bytes yarn.lock | 1124 +++-- 7 files changed, 7908 insertions(+), 550 deletions(-) create mode 100644 package-lock.json create mode 100644 static/img/P2P_data_flow_dark.png create mode 100644 static/img/P2P_data_flow_light.png create mode 100644 static/img/intro.png diff --git a/.vitepress/theme/style.css b/.vitepress/theme/style.css index 654459d..45ff480 100644 --- a/.vitepress/theme/style.css +++ b/.vitepress/theme/style.css @@ -134,3 +134,34 @@ .DocSearch { --docsearch-primary-color: var(--vp-c-brand-1) !important; } + +/** + * Component: Theme-aware Images + * -------------------------------------------------------------------------- */ + +.theme-aware-image { + position: relative; +} + +.theme-aware-image img { + width: 100%; + height: auto; +} + +/* Hide dark images in light mode */ +.light-mode-only { + display: block !important; +} + +.dark-mode-only { + display: none !important; +} + +/* Show dark images in dark mode, hide light images */ +html.dark .light-mode-only { + display: none !important; +} + +html.dark .dark-mode-only { + display: block !important; +} diff --git a/docs/learn/overview/p2p.md b/docs/learn/overview/p2p.md index b84cd13..c9756b6 100644 --- a/docs/learn/overview/p2p.md +++ b/docs/learn/overview/p2p.md @@ -1,29 +1,66 @@ -# What is OptimumP2P +# OptimumP2P: High-Performance Network Coding for Decentralized Systems -OptimumP2P is a performant message-passing (gossiping) protocol for fast, bandwidth-efficient data propagation in decentralized networks. It is optimized for high speed, low latency, and low bandwidth usage. OptimumP2P leverages Random Linear Network Coding (RLNC), a network coding technique developed at MIT, to address the limitations of traditional gossip protocols. +OptimumP2P is a performant message-passing protocol designed for fast, bandwidth-efficient data propagation in decentralized networks. It leverages Random Linear Network Coding (RLNC), a network coding technique developed at MIT, to address fundamental limitations of traditional gossip protocols in blockchain and distributed systems. -## Message-Passing Systems and Motivation +## Architecture Overview -Gossip protocols are widely used to disseminate information across peer-to-peer networks, including Web3 systems. In blockchain networks, gossip is critical for propagating transactions and blocks. Slow propagation can result in missed block rewards for validators and reduced profitability for MEV optimizers. Efficient message dissemination is essential for network health and participant incentives. +OptimumP2P operates through a distributed architecture consisting of several key components that work together to enable efficient data propagation. -## Limitations of Traditional Gossip +The **Gateway Layer** provides API access and message coordination through HTTP and WebSocket interfaces. The gateway manages client connections, topic registries, and node pool coordination while handling authentication and authorization for secure access to the network. -* High latency: Peers must receive full messages before forwarding. -* Bandwidth waste: Peers may receive multiple redundant copies of the same message. +The **P2P Node Network** implements the core networking protocol using libp2p infrastructure with optimized transport layers. Each node maintains peer connections through DHT-based discovery and supports both native OptimumP2P and fallback GossipSub protocols for maximum compatibility and reliability. -## RLNC and OptimumP2P +The **Protocol Abstraction** layer provides a unified interface that allows seamless switching between different P2P protocols based on network conditions and requirements. This enables dynamic protocol selection and fallback mechanisms to ensure consistent network operation under varying conditions. -* Reduced latency: Forwarding starts with the first shard. -* Bandwidth efficiency: Redundant data is minimized. -* Fault tolerance: Any sufficient subset of shards enables decoding. +**Message Coordination** handles topic-based message routing with single-node-per-topic assignment to prevent duplicate processing and optimize bandwidth utilization across the network. -## Performance Characteristics +## Data Flow and Propagation -* **Latency**: Testnet results show 50%+ reduction in propagation latency compared to Gossipsub. -* **Bandwidth**: RLNC reduces redundant transmissions, achieving sub-linear bandwidth growth as the network scales. -* **Fault tolerance**: The protocol is resilient to packet loss and node churn; partial data is sufficient for message recovery. -* **Scalability**: Efficient for both L1 and L2 chains, and supports high throughput under load. +
+ OptimumP2P Data Flow + OptimumP2P Data Flow +
+ +The data flow diagram illustrates how OptimumP2P integrates with blockchain infrastructure to provide enhanced data propagation. The system operates through three main components: the Validator Node, the Optimum Service, and the Networks layer. + +At the **Validator Node** level, the Optimum Agent interfaces directly with the blockchain client through IPC (Inter-Process Communication). Transaction data flows from the blockchain client to the Optimum Agent, which serves as the bridge between the blockchain infrastructure and the OptimumP2P network. + +The **Optimum Service** acts as the central processing unit where the core RLNC encoding and network coordination takes place. When transaction data arrives from the Optimum Agent, the service applies Random Linear Network Coding to create redundant, encoded shards that can be efficiently propagated across the network. + +The **Networks** component demonstrates the dual-path approach for maximum reliability. The primary path uses Fast Sync through the Optimum Network for rapid propagation using RLNC-encoded data. This network injects encoded shards to global blockchain nodes and validator nodes, ensuring fast delivery of critical information. + +A fallback mechanism ensures network reliability through the standard Blockchain Network using traditional gossip protocols. This dual approach guarantees that even if the OptimumP2P network experiences issues, data can still propagate through conventional means, maintaining network integrity and consensus. + +![Network Introduction](/static/img/intro.png) + +The network topology shows the hierarchical structure where OptimumP2P nodes operate in the upper layer, connecting to gateway nodes that interface with user clients. This architecture enables efficient data distribution from the P2P network down to individual client applications while maintaining scalability and performance. + +## How OptimumP2P Works + +OptimumP2P integrates with networks at the validator level as a software component running on each validator's machine. Block data is read directly from the network client, then sharded and encoded using RLNC before being forwarded to other nodes on the network. The entire process from block data intake to full network propagation takes place in a few hundred milliseconds, maintaining this performance level as data size and frequency scales. + +The system leverages RLNC to reduce the amount of redundant data that needs to be transmitted. Unlike traditional gossip protocols that require complete message reception before forwarding, OptimumP2P allows data forwarding to begin as soon as any shards are received. This approach saves both time and computational resources while improving overall network efficiency. + +## Random Linear Network Coding Implementation + +The RLNC implementation in OptimumP2P provides the mathematical foundation for efficient data propagation. Data objects are systematically encoded into k-of-n coded elements using linear algebra over finite fields. This encoding process creates redundant information that allows complete reconstruction from any k received elements out of n transmitted elements. + +During the encoding process, original data is split into systematic chunks, and linear combinations are computed using randomly generated coefficients. This creates coded shards that contain both original data fragments and encoding vectors. Each shard carries its encoding coefficients, enabling recipients to perform Gaussian elimination for data reconstruction. + +The system includes recoding capability, where intermediate nodes can generate new coded packets by linearly combining received packets. This improves network efficiency without requiring full data reconstruction at intermediate nodes, allowing for more flexible and resilient data propagation paths. + +## Message Types and Protocol Handling + +OptimumP2P defines several message types for efficient network operation. Data messages carry encoded payload data with RLNC coefficients and metadata necessary for reconstruction. Control messages handle subscription management, peer discovery, and protocol negotiation between nodes. Trace events provide network monitoring capabilities by tracking shard propagation and performance metrics throughout the system. + +The protocol employs DHT-based peer discovery with configurable bootstrap nodes to establish and maintain network connectivity. Connection management includes adaptive connection pools that scale dynamically based on network conditions and message throughput, automated failure detection and recovery from node failures or network partitions, and capability-based selection between OptimumP2P and fallback protocols. + +## Security Model + +OptimumP2P implements a comprehensive security model to protect against various attack vectors. The system uses Boneh-Lynn-Shacham (BLS) signatures to provide authentication and non-repudiation for all network communications. Cryptographic hashing ensures data integrity throughout the network, while distributed key management with on-chain registration and verification provides secure identity management. + +The protocol includes protection against pollution attacks through coding-theoretic techniques that detect and mitigate data pollution attempts. Eclipse attacks are prevented through DHT-based discovery with multiple bootstrap nodes, preventing network isolation. Integration with blockchain identity systems provides resistance against Sybil attacks by leveraging existing trust infrastructure. ## Summary -OptimumP2P is a high-performance, developer-friendly protocol for fast, reliable, and bandwidth-efficient data propagation in decentralized networks. By leveraging RLNC, it addresses the limitations of traditional gossip, providing measurable improvements in latency, bandwidth usage, and fault tolerance. The protocol is designed for easy integration, broad compatibility, and robust security, making it suitable for validators, chains, and applications seeking to optimize network performance. +OptimumP2P is a high-performance, developer-friendly protocol for fast, reliable, and bandwidth-efficient data propagation in decentralized networks. By leveraging RLNC, it addresses the limitations of traditional gossip protocols, providing measurable improvements in latency, bandwidth usage, and fault tolerance. The protocol is designed for easy integration, broad compatibility, and robust security, making it suitable for validators, chains, and applications seeking to optimize network performance. diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..e798920 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,7232 @@ +{ + "name": "docs", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "dependencies": { + "markdown-it-mathjax3": "^4.3.2", + "v-tooltip": "^2.1.3", + "vue-clipboard2": "^0.3.3" + }, + "devDependencies": { + "@eslint/js": "^9.22.0", + "@typescript-eslint/eslint-plugin": "^8.26.1", + "@typescript-eslint/parser": "^8.26.1", + "eslint": "^9.22.0", + "eslint-plugin-vue": "^10.0.0", + "globals": "^16.0.0", + "lint-staged": "^15.4.3", + "markdown-it-mathjax3": "^4.3.2", + "markdownlint-cli": "^0.44.0", + "prettier": "^3.5.3", + "typescript": "^5.2.2", + "typescript-eslint": "^8.26.1", + "vitepress": "^1.6.3", + "vue-eslint-parser": "^10.1.1" + } + }, + "node_modules/@algolia/autocomplete-core": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.17.7.tgz", + "integrity": "sha512-BjiPOW6ks90UKl7TwMv7oNQMnzU+t/wk9mgIDi6b1tXpUek7MW0lbNOUHpvam9pe3lVCf4xPFT+lK7s+e+fs7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-plugin-algolia-insights": "1.17.7", + "@algolia/autocomplete-shared": "1.17.7" + } + }, + "node_modules/@algolia/autocomplete-plugin-algolia-insights": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.17.7.tgz", + "integrity": "sha512-Jca5Ude6yUOuyzjnz57og7Et3aXjbwCSDf/8onLHSQgw1qW3ALl9mrMWaXb5FmPVkV3EtkD2F/+NkT6VHyPu9A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-shared": "1.17.7" + }, + "peerDependencies": { + "search-insights": ">= 1 < 3" + } + }, + "node_modules/@algolia/autocomplete-preset-algolia": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.17.7.tgz", + "integrity": "sha512-ggOQ950+nwbWROq2MOCIL71RE0DdQZsceqrg32UqnhDz8FlO9rL8ONHNsI2R1MH0tkgVIDKI/D0sMiUchsFdWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-shared": "1.17.7" + }, + "peerDependencies": { + "@algolia/client-search": ">= 4.9.1 < 6", + "algoliasearch": ">= 4.9.1 < 6" + } + }, + "node_modules/@algolia/autocomplete-shared": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.17.7.tgz", + "integrity": "sha512-o/1Vurr42U/qskRSuhBH+VKxMvkkUVTLU6WZQr+L5lGZZLYWyhdzWjW0iGXY7EkwRTjBqvN2EsR81yCTGV/kmg==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@algolia/client-search": ">= 4.9.1 < 6", + "algoliasearch": ">= 4.9.1 < 6" + } + }, + "node_modules/@algolia/client-abtesting": { + "version": "5.20.4", + "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.20.4.tgz", + "integrity": "sha512-OZ3Xvvf+k7NMcwmmioIVX+76E/KKtN607NCMNsBEKe+uHqktZ+I5bmi/EVr2m5VF59Gnh9MTlJCdXtBiGjruxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.20.4", + "@algolia/requester-browser-xhr": "5.20.4", + "@algolia/requester-fetch": "5.20.4", + "@algolia/requester-node-http": "5.20.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-abtesting/node_modules/@algolia/client-common": { + "version": "5.20.4", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.20.4.tgz", + "integrity": "sha512-OCGa8hKAP6kQKBwi+tu9flTXshz4qeCK5P8J6bI1qq8KYs+/TU1xSotT+E7hO+uyDanGU6dT6soiMSi4A38JgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-abtesting/node_modules/@algolia/requester-browser-xhr": { + "version": "5.20.4", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.20.4.tgz", + "integrity": "sha512-Y8GThjDVdhFUurZKKDdzAML/LNKOA/BOydEcaFeb/g4Iv4Iq0qQJs6aIbtdsngUU6cu74qH/2P84kr2h16uVvQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.20.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-abtesting/node_modules/@algolia/requester-fetch": { + "version": "5.20.4", + "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.20.4.tgz", + "integrity": "sha512-OrAUSrvbFi46U7AxOXkyl9QQiaW21XWpixWmcx3D2S65P/DCIGOVE6K2741ZE+WiKIqp+RSYkyDFj3BiFHzLTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.20.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-abtesting/node_modules/@algolia/requester-node-http": { + "version": "5.20.4", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.20.4.tgz", + "integrity": "sha512-Jc/bofGBw4P9nBii4oCzCqqusv8DAFFORfUD2Ce1cZk3fvUPk+q/Qnu7i9JpTSHjMc0MWzqApLdq7Nwh1gelLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.20.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-analytics": { + "version": "5.20.4", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.20.4.tgz", + "integrity": "sha512-8pM5zQpHonCIBxKmMyBLgQoaSKUNBE5u741VEIjn2ArujolhoKRXempRAlLwEg5hrORKl9XIlit00ff4g6LWvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.20.4", + "@algolia/requester-browser-xhr": "5.20.4", + "@algolia/requester-fetch": "5.20.4", + "@algolia/requester-node-http": "5.20.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-analytics/node_modules/@algolia/client-common": { + "version": "5.20.4", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.20.4.tgz", + "integrity": "sha512-OCGa8hKAP6kQKBwi+tu9flTXshz4qeCK5P8J6bI1qq8KYs+/TU1xSotT+E7hO+uyDanGU6dT6soiMSi4A38JgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-analytics/node_modules/@algolia/requester-browser-xhr": { + "version": "5.20.4", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.20.4.tgz", + "integrity": "sha512-Y8GThjDVdhFUurZKKDdzAML/LNKOA/BOydEcaFeb/g4Iv4Iq0qQJs6aIbtdsngUU6cu74qH/2P84kr2h16uVvQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.20.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-analytics/node_modules/@algolia/requester-fetch": { + "version": "5.20.4", + "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.20.4.tgz", + "integrity": "sha512-OrAUSrvbFi46U7AxOXkyl9QQiaW21XWpixWmcx3D2S65P/DCIGOVE6K2741ZE+WiKIqp+RSYkyDFj3BiFHzLTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.20.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-analytics/node_modules/@algolia/requester-node-http": { + "version": "5.20.4", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.20.4.tgz", + "integrity": "sha512-Jc/bofGBw4P9nBii4oCzCqqusv8DAFFORfUD2Ce1cZk3fvUPk+q/Qnu7i9JpTSHjMc0MWzqApLdq7Nwh1gelLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.20.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-common": { + "version": "5.34.1", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.34.1.tgz", + "integrity": "sha512-otPWALs72KvmVuP0CN0DI6sqVx1jQWKi+/DgAiP8DysVMgiNlva3GDKTtAK6XVGlT08f4h32FNuL0yQODuCfKA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-insights": { + "version": "5.20.4", + "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.20.4.tgz", + "integrity": "sha512-MroyJStJFLf/cYeCbguCRdrA2U6miDVqbi3t9ZGovBWWTef7BZwVQG0mLyInzp4MIjBfwqu3xTrhxsiiOavX3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.20.4", + "@algolia/requester-browser-xhr": "5.20.4", + "@algolia/requester-fetch": "5.20.4", + "@algolia/requester-node-http": "5.20.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-insights/node_modules/@algolia/client-common": { + "version": "5.20.4", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.20.4.tgz", + "integrity": "sha512-OCGa8hKAP6kQKBwi+tu9flTXshz4qeCK5P8J6bI1qq8KYs+/TU1xSotT+E7hO+uyDanGU6dT6soiMSi4A38JgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-insights/node_modules/@algolia/requester-browser-xhr": { + "version": "5.20.4", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.20.4.tgz", + "integrity": "sha512-Y8GThjDVdhFUurZKKDdzAML/LNKOA/BOydEcaFeb/g4Iv4Iq0qQJs6aIbtdsngUU6cu74qH/2P84kr2h16uVvQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.20.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-insights/node_modules/@algolia/requester-fetch": { + "version": "5.20.4", + "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.20.4.tgz", + "integrity": "sha512-OrAUSrvbFi46U7AxOXkyl9QQiaW21XWpixWmcx3D2S65P/DCIGOVE6K2741ZE+WiKIqp+RSYkyDFj3BiFHzLTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.20.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-insights/node_modules/@algolia/requester-node-http": { + "version": "5.20.4", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.20.4.tgz", + "integrity": "sha512-Jc/bofGBw4P9nBii4oCzCqqusv8DAFFORfUD2Ce1cZk3fvUPk+q/Qnu7i9JpTSHjMc0MWzqApLdq7Nwh1gelLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.20.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-personalization": { + "version": "5.20.4", + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.20.4.tgz", + "integrity": "sha512-bVR5sxFfgCQ+G0ZegGVhBqtaDd7jCfr33m5mGuT43U+bH//xeqAHQyIS4abcmRulwqeIAHNm5Yl2J7grT3z//A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.20.4", + "@algolia/requester-browser-xhr": "5.20.4", + "@algolia/requester-fetch": "5.20.4", + "@algolia/requester-node-http": "5.20.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-personalization/node_modules/@algolia/client-common": { + "version": "5.20.4", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.20.4.tgz", + "integrity": "sha512-OCGa8hKAP6kQKBwi+tu9flTXshz4qeCK5P8J6bI1qq8KYs+/TU1xSotT+E7hO+uyDanGU6dT6soiMSi4A38JgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-personalization/node_modules/@algolia/requester-browser-xhr": { + "version": "5.20.4", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.20.4.tgz", + "integrity": "sha512-Y8GThjDVdhFUurZKKDdzAML/LNKOA/BOydEcaFeb/g4Iv4Iq0qQJs6aIbtdsngUU6cu74qH/2P84kr2h16uVvQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.20.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-personalization/node_modules/@algolia/requester-fetch": { + "version": "5.20.4", + "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.20.4.tgz", + "integrity": "sha512-OrAUSrvbFi46U7AxOXkyl9QQiaW21XWpixWmcx3D2S65P/DCIGOVE6K2741ZE+WiKIqp+RSYkyDFj3BiFHzLTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.20.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-personalization/node_modules/@algolia/requester-node-http": { + "version": "5.20.4", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.20.4.tgz", + "integrity": "sha512-Jc/bofGBw4P9nBii4oCzCqqusv8DAFFORfUD2Ce1cZk3fvUPk+q/Qnu7i9JpTSHjMc0MWzqApLdq7Nwh1gelLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.20.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-query-suggestions": { + "version": "5.20.4", + "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.20.4.tgz", + "integrity": "sha512-ZHsV0vceNDR87wIVaz7VjxilwCUCkzbuy4QnqIdnQs3NnC43is7KKbEtKueuNw+YGMdx+wmD5kRI2XKip1R93A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.20.4", + "@algolia/requester-browser-xhr": "5.20.4", + "@algolia/requester-fetch": "5.20.4", + "@algolia/requester-node-http": "5.20.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-query-suggestions/node_modules/@algolia/client-common": { + "version": "5.20.4", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.20.4.tgz", + "integrity": "sha512-OCGa8hKAP6kQKBwi+tu9flTXshz4qeCK5P8J6bI1qq8KYs+/TU1xSotT+E7hO+uyDanGU6dT6soiMSi4A38JgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-query-suggestions/node_modules/@algolia/requester-browser-xhr": { + "version": "5.20.4", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.20.4.tgz", + "integrity": "sha512-Y8GThjDVdhFUurZKKDdzAML/LNKOA/BOydEcaFeb/g4Iv4Iq0qQJs6aIbtdsngUU6cu74qH/2P84kr2h16uVvQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.20.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-query-suggestions/node_modules/@algolia/requester-fetch": { + "version": "5.20.4", + "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.20.4.tgz", + "integrity": "sha512-OrAUSrvbFi46U7AxOXkyl9QQiaW21XWpixWmcx3D2S65P/DCIGOVE6K2741ZE+WiKIqp+RSYkyDFj3BiFHzLTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.20.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-query-suggestions/node_modules/@algolia/requester-node-http": { + "version": "5.20.4", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.20.4.tgz", + "integrity": "sha512-Jc/bofGBw4P9nBii4oCzCqqusv8DAFFORfUD2Ce1cZk3fvUPk+q/Qnu7i9JpTSHjMc0MWzqApLdq7Nwh1gelLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.20.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-search": { + "version": "5.34.1", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.34.1.tgz", + "integrity": "sha512-bt5hC9vvjaKvdvsgzfXJ42Sl3qjQqoi/FD8V7HOQgtNFhwSauZOlgLwFoUiw67sM+r7ehF7QDk5WRDgY7fAkIg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@algolia/client-common": "5.34.1", + "@algolia/requester-browser-xhr": "5.34.1", + "@algolia/requester-fetch": "5.34.1", + "@algolia/requester-node-http": "5.34.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/ingestion": { + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.20.4.tgz", + "integrity": "sha512-idAe53XsTlLSSQ7pJcjscUEmc67vEM+VohYkr78Ebfb43vtfKH0ik8ux9OGQpLRNGntaHqpe/lfU5PDRi5/92w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.20.4", + "@algolia/requester-browser-xhr": "5.20.4", + "@algolia/requester-fetch": "5.20.4", + "@algolia/requester-node-http": "5.20.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/ingestion/node_modules/@algolia/client-common": { + "version": "5.20.4", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.20.4.tgz", + "integrity": "sha512-OCGa8hKAP6kQKBwi+tu9flTXshz4qeCK5P8J6bI1qq8KYs+/TU1xSotT+E7hO+uyDanGU6dT6soiMSi4A38JgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/ingestion/node_modules/@algolia/requester-browser-xhr": { + "version": "5.20.4", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.20.4.tgz", + "integrity": "sha512-Y8GThjDVdhFUurZKKDdzAML/LNKOA/BOydEcaFeb/g4Iv4Iq0qQJs6aIbtdsngUU6cu74qH/2P84kr2h16uVvQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.20.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/ingestion/node_modules/@algolia/requester-fetch": { + "version": "5.20.4", + "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.20.4.tgz", + "integrity": "sha512-OrAUSrvbFi46U7AxOXkyl9QQiaW21XWpixWmcx3D2S65P/DCIGOVE6K2741ZE+WiKIqp+RSYkyDFj3BiFHzLTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.20.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/ingestion/node_modules/@algolia/requester-node-http": { + "version": "5.20.4", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.20.4.tgz", + "integrity": "sha512-Jc/bofGBw4P9nBii4oCzCqqusv8DAFFORfUD2Ce1cZk3fvUPk+q/Qnu7i9JpTSHjMc0MWzqApLdq7Nwh1gelLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.20.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/monitoring": { + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.20.4.tgz", + "integrity": "sha512-O6HjdSWtyu5LhHR7gdU83oWbl1vVVRwoTxkENHF61Ar7l9C1Ok91VtnK7RtXB9pJL1kpIMDExwZOT5sEN2Ppfw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.20.4", + "@algolia/requester-browser-xhr": "5.20.4", + "@algolia/requester-fetch": "5.20.4", + "@algolia/requester-node-http": "5.20.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/monitoring/node_modules/@algolia/client-common": { + "version": "5.20.4", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.20.4.tgz", + "integrity": "sha512-OCGa8hKAP6kQKBwi+tu9flTXshz4qeCK5P8J6bI1qq8KYs+/TU1xSotT+E7hO+uyDanGU6dT6soiMSi4A38JgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/monitoring/node_modules/@algolia/requester-browser-xhr": { + "version": "5.20.4", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.20.4.tgz", + "integrity": "sha512-Y8GThjDVdhFUurZKKDdzAML/LNKOA/BOydEcaFeb/g4Iv4Iq0qQJs6aIbtdsngUU6cu74qH/2P84kr2h16uVvQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.20.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/monitoring/node_modules/@algolia/requester-fetch": { + "version": "5.20.4", + "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.20.4.tgz", + "integrity": "sha512-OrAUSrvbFi46U7AxOXkyl9QQiaW21XWpixWmcx3D2S65P/DCIGOVE6K2741ZE+WiKIqp+RSYkyDFj3BiFHzLTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.20.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/monitoring/node_modules/@algolia/requester-node-http": { + "version": "5.20.4", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.20.4.tgz", + "integrity": "sha512-Jc/bofGBw4P9nBii4oCzCqqusv8DAFFORfUD2Ce1cZk3fvUPk+q/Qnu7i9JpTSHjMc0MWzqApLdq7Nwh1gelLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.20.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/recommend": { + "version": "5.20.4", + "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.20.4.tgz", + "integrity": "sha512-p8M78pQjPrN6PudO2TnkWiOJbyp/IPhgCFBW8aZrLshhZpPkV9N4u0YsU/w6OoeYDKSxmXntWQrKYiU1dVRWfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.20.4", + "@algolia/requester-browser-xhr": "5.20.4", + "@algolia/requester-fetch": "5.20.4", + "@algolia/requester-node-http": "5.20.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/recommend/node_modules/@algolia/client-common": { + "version": "5.20.4", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.20.4.tgz", + "integrity": "sha512-OCGa8hKAP6kQKBwi+tu9flTXshz4qeCK5P8J6bI1qq8KYs+/TU1xSotT+E7hO+uyDanGU6dT6soiMSi4A38JgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/recommend/node_modules/@algolia/requester-browser-xhr": { + "version": "5.20.4", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.20.4.tgz", + "integrity": "sha512-Y8GThjDVdhFUurZKKDdzAML/LNKOA/BOydEcaFeb/g4Iv4Iq0qQJs6aIbtdsngUU6cu74qH/2P84kr2h16uVvQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.20.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/recommend/node_modules/@algolia/requester-fetch": { + "version": "5.20.4", + "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.20.4.tgz", + "integrity": "sha512-OrAUSrvbFi46U7AxOXkyl9QQiaW21XWpixWmcx3D2S65P/DCIGOVE6K2741ZE+WiKIqp+RSYkyDFj3BiFHzLTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.20.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/recommend/node_modules/@algolia/requester-node-http": { + "version": "5.20.4", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.20.4.tgz", + "integrity": "sha512-Jc/bofGBw4P9nBii4oCzCqqusv8DAFFORfUD2Ce1cZk3fvUPk+q/Qnu7i9JpTSHjMc0MWzqApLdq7Nwh1gelLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.20.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-browser-xhr": { + "version": "5.34.1", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.34.1.tgz", + "integrity": "sha512-567LfFTc9VOiPtuySQohoqaWMeohYWbXK71aMSin+SLMgeKX7hz5LrVmkmMQj9udwWK6/mtHEYZGPYHSuXpLQg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@algolia/client-common": "5.34.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-fetch": { + "version": "5.34.1", + "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.34.1.tgz", + "integrity": "sha512-YRbygPgGBEik5U593JvyjgxFjcsyZMR25eIQxNHvSQumdAzt5A4E4Idw3yXnwhrmMdjML54ZXT7EAjnTjWy8Xw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@algolia/client-common": "5.34.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-node-http": { + "version": "5.34.1", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.34.1.tgz", + "integrity": "sha512-o0mqRYbS82Rt4DE02Od7RL6pNtV7oSxScPuIw8LW4aqO2V5eCF05Pry/SnUgcI/Vb2QCYC66hytBCqzyC/toZA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@algolia/client-common": "5.34.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.0.tgz", + "integrity": "sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.9.tgz", + "integrity": "sha512-aA63XwOkcl4xxQa3HjPMqOP6LiK0ZDv3mUPYEFXkpHbaFjtGggE1A61FjFzJnB+p7/oy2gA8E+rcBNl/zC1tMg==", + "license": "MIT", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.28.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.2.tgz", + "integrity": "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@docsearch/css": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.8.2.tgz", + "integrity": "sha512-y05ayQFyUmCXze79+56v/4HpycYF3uFqB78pLPrSV5ZKAlDuIAAJNhaRi8tTdRNXh05yxX/TyNnzD6LwSM89vQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@docsearch/js": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/@docsearch/js/-/js-3.8.2.tgz", + "integrity": "sha512-Q5wY66qHn0SwA7Taa0aDbHiJvaFJLOJyHmooQ7y8hlwwQLQ/5WwCcoX0g7ii04Qi2DJlHsd0XXzJ8Ypw9+9YmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@docsearch/react": "3.8.2", + "preact": "^10.0.0" + } + }, + "node_modules/@docsearch/react": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.8.2.tgz", + "integrity": "sha512-xCRrJQlTt8N9GU0DG4ptwHRkfnSnD/YpdeaXe02iKfqs97TkZJv60yE+1eq/tjPcVnTW8dP5qLP7itifFVV5eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-core": "1.17.7", + "@algolia/autocomplete-preset-algolia": "1.17.7", + "@docsearch/css": "3.8.2", + "algoliasearch": "^5.14.2" + }, + "peerDependencies": { + "@types/react": ">= 16.8.0 < 19.0.0", + "react": ">= 16.8.0 < 19.0.0", + "react-dom": ">= 16.8.0 < 19.0.0", + "search-insights": ">= 1 < 3" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + }, + "search-insights": { + "optional": true + } + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", + "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.2.tgz", + "integrity": "sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.6", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-array/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.1.0.tgz", + "integrity": "sha512-kLrdPDJE1ckPo94kmPPf9Hfd0DU0Jw6oKYrhe+pwSC0iTUInmTa+w6fw8sGgcfkFJGNdWOUeOaDM4quW4a7OkA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.12.0.tgz", + "integrity": "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.0.tgz", + "integrity": "sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/js": { + "version": "9.22.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.22.0.tgz", + "integrity": "sha512-vLFajx9o8d1/oL2ZkpMYbkLv8nDB6yaIwFNt7nI4+I80U/z03SxmfOMsLbvWr3p7C+Wnoh//aOu2pQW8cS0HCQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.7.tgz", + "integrity": "sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.12.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.2.tgz", + "integrity": "sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@iconify-json/simple-icons": { + "version": "1.2.28", + "resolved": "https://registry.npmjs.org/@iconify-json/simple-icons/-/simple-icons-1.2.28.tgz", + "integrity": "sha512-KoCuXgJ2AysGjzOAMUtNPrXeOvvC3zRR+REbYhei2mx5LGTSSrrlVJdaSBv4f8LH9hgfhG7E4Us3hH3XwreP+A==", + "dev": true, + "license": "CC0-1.0", + "dependencies": { + "@iconify/types": "*" + } + }, + "node_modules/@iconify/types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz", + "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.35.0.tgz", + "integrity": "sha512-uYQ2WfPaqz5QtVgMxfN6NpLD+no0MYHDBywl7itPYd3K5TjjSghNKmX8ic9S8NU8w81NVhJv/XojcHptRly7qQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.35.0.tgz", + "integrity": "sha512-FtKddj9XZudurLhdJnBl9fl6BwCJ3ky8riCXjEw3/UIbjmIY58ppWwPEvU3fNu+W7FUsAsB1CdH+7EQE6CXAPA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.35.0.tgz", + "integrity": "sha512-Uk+GjOJR6CY844/q6r5DR/6lkPFOw0hjfOIzVx22THJXMxktXG6CbejseJFznU8vHcEBLpiXKY3/6xc+cBm65Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.35.0.tgz", + "integrity": "sha512-3IrHjfAS6Vkp+5bISNQnPogRAW5GAV1n+bNCrDwXmfMHbPl5EhTmWtfmwlJxFRUCBZ+tZ/OxDyU08aF6NI/N5Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.35.0.tgz", + "integrity": "sha512-sxjoD/6F9cDLSELuLNnY0fOrM9WA0KrM0vWm57XhrIMf5FGiN8D0l7fn+bpUeBSU7dCgPV2oX4zHAsAXyHFGcQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.35.0.tgz", + "integrity": "sha512-2mpHCeRuD1u/2kruUiHSsnjWtHjqVbzhBkNVQ1aVD63CcexKVcQGwJ2g5VphOd84GvxfSvnnlEyBtQCE5hxVVw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.35.0.tgz", + "integrity": "sha512-mrA0v3QMy6ZSvEuLs0dMxcO2LnaCONs1Z73GUDBHWbY8tFFocM6yl7YyMu7rz4zS81NDSqhrUuolyZXGi8TEqg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.35.0.tgz", + "integrity": "sha512-DnYhhzcvTAKNexIql8pFajr0PiDGrIsBYPRvCKlA5ixSS3uwo/CWNZxB09jhIapEIg945KOzcYEAGGSmTSpk7A==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.35.0.tgz", + "integrity": "sha512-uagpnH2M2g2b5iLsCTZ35CL1FgyuzzJQ8L9VtlJ+FckBXroTwNOaD0z0/UF+k5K3aNQjbm8LIVpxykUOQt1m/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.35.0.tgz", + "integrity": "sha512-XQxVOCd6VJeHQA/7YcqyV0/88N6ysSVzRjJ9I9UA/xXpEsjvAgDTgH3wQYz5bmr7SPtVK2TsP2fQ2N9L4ukoUg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.35.0.tgz", + "integrity": "sha512-5pMT5PzfgwcXEwOaSrqVsz/LvjDZt+vQ8RT/70yhPU06PTuq8WaHhfT1LW+cdD7mW6i/J5/XIkX/1tCAkh1W6g==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.35.0.tgz", + "integrity": "sha512-c+zkcvbhbXF98f4CtEIP1EBA/lCic5xB0lToneZYvMeKu5Kamq3O8gqrxiYYLzlZH6E3Aq+TSW86E4ay8iD8EA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.35.0.tgz", + "integrity": "sha512-s91fuAHdOwH/Tad2tzTtPX7UZyytHIRR6V4+2IGlV0Cej5rkG0R61SX4l4y9sh0JBibMiploZx3oHKPnQBKe4g==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.35.0.tgz", + "integrity": "sha512-hQRkPQPLYJZYGP+Hj4fR9dDBMIM7zrzJDWFEMPdTnTy95Ljnv0/4w/ixFw3pTBMEuuEuoqtBINYND4M7ujcuQw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.35.0.tgz", + "integrity": "sha512-Pim1T8rXOri+0HmV4CdKSGrqcBWX0d1HoPnQ0uw0bdp1aP5SdQVNBy8LjYncvnLgu3fnnCt17xjWGd4cqh8/hA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.35.0.tgz", + "integrity": "sha512-QysqXzYiDvQWfUiTm8XmJNO2zm9yC9P/2Gkrwg2dH9cxotQzunBHYr6jk4SujCTqnfGxduOmQcI7c2ryuW8XVg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.35.0.tgz", + "integrity": "sha512-OUOlGqPkVJCdJETKOCEf1mw848ZyJ5w50/rZ/3IBQVdLfR5jk/6Sr5m3iO2tdPgwo0x7VcncYuOvMhBWZq8ayg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.35.0.tgz", + "integrity": "sha512-2/lsgejMrtwQe44glq7AFFHLfJBPafpsTa6JvP2NGef/ifOa4KBoglVf7AKN7EV9o32evBPRqfg96fEHzWo5kw==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.35.0.tgz", + "integrity": "sha512-PIQeY5XDkrOysbQblSW7v3l1MDZzkTEzAfTPkj5VAu3FW8fS4ynyLg2sINp0fp3SjZ8xkRYpLqoKcYqAkhU1dw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@shikijs/core": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-2.5.0.tgz", + "integrity": "sha512-uu/8RExTKtavlpH7XqnVYBrfBkUc20ngXiX9NSrBhOVZYv/7XQRKUyhtkeflY5QsxC0GbJThCerruZfsUaSldg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/engine-javascript": "2.5.0", + "@shikijs/engine-oniguruma": "2.5.0", + "@shikijs/types": "2.5.0", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4", + "hast-util-to-html": "^9.0.4" + } + }, + "node_modules/@shikijs/engine-javascript": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-2.5.0.tgz", + "integrity": "sha512-VjnOpnQf8WuCEZtNUdjjwGUbtAVKuZkVQ/5cHy/tojVVRIRtlWMYVjyWhxOmIq05AlSOv72z7hRNRGVBgQOl0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "2.5.0", + "@shikijs/vscode-textmate": "^10.0.2", + "oniguruma-to-es": "^3.1.0" + } + }, + "node_modules/@shikijs/engine-oniguruma": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-2.5.0.tgz", + "integrity": "sha512-pGd1wRATzbo/uatrCIILlAdFVKdxImWJGQ5rFiB5VZi2ve5xj3Ax9jny8QvkaV93btQEwR/rSz5ERFpC5mKNIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "2.5.0", + "@shikijs/vscode-textmate": "^10.0.2" + } + }, + "node_modules/@shikijs/langs": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-2.5.0.tgz", + "integrity": "sha512-Qfrrt5OsNH5R+5tJ/3uYBBZv3SuGmnRPejV9IlIbFH3HTGLDlkqgHymAlzklVmKBjAaVmkPkyikAV/sQ1wSL+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "2.5.0" + } + }, + "node_modules/@shikijs/themes": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-2.5.0.tgz", + "integrity": "sha512-wGrk+R8tJnO0VMzmUExHR+QdSaPUl/NKs+a4cQQRWyoc3YFbUzuLEi/KWK1hj+8BfHRKm2jNhhJck1dfstJpiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "2.5.0" + } + }, + "node_modules/@shikijs/transformers": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/transformers/-/transformers-2.5.0.tgz", + "integrity": "sha512-SI494W5X60CaUwgi8u4q4m4s3YAFSxln3tzNjOSYqq54wlVgz0/NbbXEb3mdLbqMBztcmS7bVTaEd2w0qMmfeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/core": "2.5.0", + "@shikijs/types": "2.5.0" + } + }, + "node_modules/@shikijs/types": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-2.5.0.tgz", + "integrity": "sha512-ygl5yhxki9ZLNuNpPitBWvcy9fsSKKaRuO4BAlMyagszQidxcpLAr0qiW/q43DtSIDxO6hEbtYLiFZNXO/hdGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, + "node_modules/@shikijs/vscode-textmate": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", + "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/katex": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@types/katex/-/katex-0.16.7.tgz", + "integrity": "sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/markdown-it": { + "version": "14.1.2", + "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.2.tgz", + "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/linkify-it": "^5", + "@types/mdurl": "^2" + } + }, + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/web-bluetooth": { + "version": "0.0.21", + "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.21.tgz", + "integrity": "sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.26.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.26.1.tgz", + "integrity": "sha512-2X3mwqsj9Bd3Ciz508ZUtoQQYpOhU/kWoUqIf49H8Z0+Vbh6UF/y0OEYp0Q0axOGzaBGs7QxRwq0knSQ8khQNA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.26.1", + "@typescript-eslint/type-utils": "8.26.1", + "@typescript-eslint/utils": "8.26.1", + "@typescript-eslint/visitor-keys": "8.26.1", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.26.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.26.1.tgz", + "integrity": "sha512-w6HZUV4NWxqd8BdeFf81t07d7/YV9s7TCWrQQbG5uhuvGUAW+fq1usZ1Hmz9UPNLniFnD8GLSsDpjP0hm1S4lQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.26.1", + "@typescript-eslint/types": "8.26.1", + "@typescript-eslint/typescript-estree": "8.26.1", + "@typescript-eslint/visitor-keys": "8.26.1", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.26.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.26.1.tgz", + "integrity": "sha512-6EIvbE5cNER8sqBu6V7+KeMZIC1664d2Yjt+B9EWUXrsyWpxx4lEZrmvxgSKRC6gX+efDL/UY9OpPZ267io3mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.26.1", + "@typescript-eslint/visitor-keys": "8.26.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.26.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.26.1.tgz", + "integrity": "sha512-Kcj/TagJLwoY/5w9JGEFV0dclQdyqw9+VMndxOJKtoFSjfZhLXhYjzsQEeyza03rwHx2vFEGvrJWJBXKleRvZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "8.26.1", + "@typescript-eslint/utils": "8.26.1", + "debug": "^4.3.4", + "ts-api-utils": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.26.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.26.1.tgz", + "integrity": "sha512-n4THUQW27VmQMx+3P+B0Yptl7ydfceUj4ON/AQILAASwgYdZ/2dhfymRMh5egRUrvK5lSmaOm77Ry+lmXPOgBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.26.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.26.1.tgz", + "integrity": "sha512-yUwPpUHDgdrv1QJ7YQal3cMVBGWfnuCdKbXw1yyjArax3353rEJP1ZA+4F8nOlQ3RfS2hUN/wze3nlY+ZOhvoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.26.1", + "@typescript-eslint/visitor-keys": "8.26.1", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.26.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.26.1.tgz", + "integrity": "sha512-V4Urxa/XtSUroUrnI7q6yUTD3hDtfJ2jzVfeT3VK0ciizfK2q/zGC0iDh1lFMUZR8cImRrep6/q0xd/1ZGPQpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.26.1", + "@typescript-eslint/types": "8.26.1", + "@typescript-eslint/typescript-estree": "8.26.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.26.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.26.1.tgz", + "integrity": "sha512-AjOC3zfnxd6S4Eiy3jwktJPclqhFHNyd8L6Gycf9WUPoKZpgM5PjkxY1X7uSy61xVpiJDhhk7XT2NVsN3ALTWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.26.1", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "dev": true, + "license": "ISC" + }, + "node_modules/@vue/compiler-core": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.13.tgz", + "integrity": "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.25.3", + "@vue/shared": "3.5.13", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/compiler-core/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz", + "integrity": "sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/compiler-core": "3.5.13", + "@vue/shared": "3.5.13" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "2.7.16", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.16.tgz", + "integrity": "sha512-KWhJ9k5nXuNtygPU7+t1rX6baZeqOYLEforUPjgNDBnLicfHCoi48H87Q8XyLZOrNNsmhuwKqtpDQWjEFe6Ekg==", + "peer": true, + "dependencies": { + "@babel/parser": "^7.23.5", + "postcss": "^8.4.14", + "source-map": "^0.6.1" + }, + "optionalDependencies": { + "prettier": "^1.18.2 || ^2.0.0" + } + }, + "node_modules/@vue/compiler-sfc/node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "license": "MIT", + "optional": true, + "peer": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz", + "integrity": "sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.13", + "@vue/shared": "3.5.13" + } + }, + "node_modules/@vue/devtools-api": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-7.7.2.tgz", + "integrity": "sha512-1syn558KhyN+chO5SjlZIwJ8bV/bQ1nOVTG66t2RbG66ZGekyiYNmRO7X9BJCXQqPsFHlnksqvPhce2qpzxFnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/devtools-kit": "^7.7.2" + } + }, + "node_modules/@vue/devtools-kit": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-7.7.2.tgz", + "integrity": "sha512-CY0I1JH3Z8PECbn6k3TqM1Bk9ASWxeMtTCvZr7vb+CHi+X/QwQm5F1/fPagraamKMAHVfuuCbdcnNg1A4CYVWQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/devtools-shared": "^7.7.2", + "birpc": "^0.2.19", + "hookable": "^5.5.3", + "mitt": "^3.0.1", + "perfect-debounce": "^1.0.0", + "speakingurl": "^14.0.1", + "superjson": "^2.2.1" + } + }, + "node_modules/@vue/devtools-shared": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-7.7.2.tgz", + "integrity": "sha512-uBFxnp8gwW2vD6FrJB8JZLUzVb6PNRG0B0jBnHsOH8uKyva2qINY8PTF5Te4QlTbMDqU5K6qtJDr6cNsKWhbOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "rfdc": "^1.4.1" + } + }, + "node_modules/@vue/reactivity": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.13.tgz", + "integrity": "sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/shared": "3.5.13" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.13.tgz", + "integrity": "sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.13", + "@vue/shared": "3.5.13" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.13.tgz", + "integrity": "sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.13", + "@vue/runtime-core": "3.5.13", + "@vue/shared": "3.5.13", + "csstype": "^3.1.3" + } + }, + "node_modules/@vue/shared": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.13.tgz", + "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@vueuse/core": { + "version": "12.8.2", + "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-12.8.2.tgz", + "integrity": "sha512-HbvCmZdzAu3VGi/pWYm5Ut+Kd9mn1ZHnn4L5G8kOQTPs/IwIAmJoBrmYk2ckLArgMXZj0AW3n5CAejLUO+PhdQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/web-bluetooth": "^0.0.21", + "@vueuse/metadata": "12.8.2", + "@vueuse/shared": "12.8.2", + "vue": "^3.5.13" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/core/node_modules/@vue/compiler-sfc": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz", + "integrity": "sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.25.3", + "@vue/compiler-core": "3.5.13", + "@vue/compiler-dom": "3.5.13", + "@vue/compiler-ssr": "3.5.13", + "@vue/shared": "3.5.13", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.11", + "postcss": "^8.4.48", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vueuse/core/node_modules/@vue/server-renderer": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.13.tgz", + "integrity": "sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/compiler-ssr": "3.5.13", + "@vue/shared": "3.5.13" + }, + "peerDependencies": { + "vue": "3.5.13" + } + }, + "node_modules/@vueuse/core/node_modules/vue": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.13.tgz", + "integrity": "sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.13", + "@vue/compiler-sfc": "3.5.13", + "@vue/runtime-dom": "3.5.13", + "@vue/server-renderer": "3.5.13", + "@vue/shared": "3.5.13" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@vueuse/integrations": { + "version": "12.8.2", + "resolved": "https://registry.npmjs.org/@vueuse/integrations/-/integrations-12.8.2.tgz", + "integrity": "sha512-fbGYivgK5uBTRt7p5F3zy6VrETlV9RtZjBqd1/HxGdjdckBgBM4ugP8LHpjolqTj14TXTxSK1ZfgPbHYyGuH7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vueuse/core": "12.8.2", + "@vueuse/shared": "12.8.2", + "vue": "^3.5.13" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "async-validator": "^4", + "axios": "^1", + "change-case": "^5", + "drauu": "^0.4", + "focus-trap": "^7", + "fuse.js": "^7", + "idb-keyval": "^6", + "jwt-decode": "^4", + "nprogress": "^0.2", + "qrcode": "^1.5", + "sortablejs": "^1", + "universal-cookie": "^7" + }, + "peerDependenciesMeta": { + "async-validator": { + "optional": true + }, + "axios": { + "optional": true + }, + "change-case": { + "optional": true + }, + "drauu": { + "optional": true + }, + "focus-trap": { + "optional": true + }, + "fuse.js": { + "optional": true + }, + "idb-keyval": { + "optional": true + }, + "jwt-decode": { + "optional": true + }, + "nprogress": { + "optional": true + }, + "qrcode": { + "optional": true + }, + "sortablejs": { + "optional": true + }, + "universal-cookie": { + "optional": true + } + } + }, + "node_modules/@vueuse/integrations/node_modules/@vue/compiler-sfc": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz", + "integrity": "sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.25.3", + "@vue/compiler-core": "3.5.13", + "@vue/compiler-dom": "3.5.13", + "@vue/compiler-ssr": "3.5.13", + "@vue/shared": "3.5.13", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.11", + "postcss": "^8.4.48", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vueuse/integrations/node_modules/@vue/server-renderer": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.13.tgz", + "integrity": "sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/compiler-ssr": "3.5.13", + "@vue/shared": "3.5.13" + }, + "peerDependencies": { + "vue": "3.5.13" + } + }, + "node_modules/@vueuse/integrations/node_modules/vue": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.13.tgz", + "integrity": "sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.13", + "@vue/compiler-sfc": "3.5.13", + "@vue/runtime-dom": "3.5.13", + "@vue/server-renderer": "3.5.13", + "@vue/shared": "3.5.13" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@vueuse/metadata": { + "version": "12.8.2", + "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-12.8.2.tgz", + "integrity": "sha512-rAyLGEuoBJ/Il5AmFHiziCPdQzRt88VxR+Y/A/QhJ1EWtWqPBBAxTAFaSkviwEuOEZNtW8pvkPgoCZQ+HxqW1A==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/shared": { + "version": "12.8.2", + "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-12.8.2.tgz", + "integrity": "sha512-dznP38YzxZoNloI0qpEfpkms8knDtaoQ6Y/sfS0L7Yki4zh40LFHEhur0odJC6xTHG5dxWVPiUWBXn+wCG2s5w==", + "dev": true, + "license": "MIT", + "dependencies": { + "vue": "^3.5.13" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/shared/node_modules/@vue/compiler-sfc": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz", + "integrity": "sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.25.3", + "@vue/compiler-core": "3.5.13", + "@vue/compiler-dom": "3.5.13", + "@vue/compiler-ssr": "3.5.13", + "@vue/shared": "3.5.13", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.11", + "postcss": "^8.4.48", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vueuse/shared/node_modules/@vue/server-renderer": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.13.tgz", + "integrity": "sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/compiler-ssr": "3.5.13", + "@vue/shared": "3.5.13" + }, + "peerDependencies": { + "vue": "3.5.13" + } + }, + "node_modules/@vueuse/shared/node_modules/vue": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.13.tgz", + "integrity": "sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.13", + "@vue/compiler-sfc": "3.5.13", + "@vue/runtime-dom": "3.5.13", + "@vue/server-renderer": "3.5.13", + "@vue/shared": "3.5.13" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/acorn": { + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/algoliasearch": { + "version": "5.20.4", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.20.4.tgz", + "integrity": "sha512-wjfzqruxovJyDqga8M6Xk5XtfuVg3igrWjhjgkRya87+WwfEa1kg+IluujBLzgAiMSd6rO6jqRb7czjgeeSYgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-abtesting": "5.20.4", + "@algolia/client-analytics": "5.20.4", + "@algolia/client-common": "5.20.4", + "@algolia/client-insights": "5.20.4", + "@algolia/client-personalization": "5.20.4", + "@algolia/client-query-suggestions": "5.20.4", + "@algolia/client-search": "5.20.4", + "@algolia/ingestion": "1.20.4", + "@algolia/monitoring": "1.20.4", + "@algolia/recommend": "5.20.4", + "@algolia/requester-browser-xhr": "5.20.4", + "@algolia/requester-fetch": "5.20.4", + "@algolia/requester-node-http": "5.20.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/algoliasearch/node_modules/@algolia/client-common": { + "version": "5.20.4", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.20.4.tgz", + "integrity": "sha512-OCGa8hKAP6kQKBwi+tu9flTXshz4qeCK5P8J6bI1qq8KYs+/TU1xSotT+E7hO+uyDanGU6dT6soiMSi4A38JgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/algoliasearch/node_modules/@algolia/client-search": { + "version": "5.20.4", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.20.4.tgz", + "integrity": "sha512-hXM2LpwTzG5kGQSyq3feIijzzl6vkjYPP+LF3ru1relNUIh7fWJ4uYQay2NMNbWX5LWQzF8Vr9qlIA139doQXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.20.4", + "@algolia/requester-browser-xhr": "5.20.4", + "@algolia/requester-fetch": "5.20.4", + "@algolia/requester-node-http": "5.20.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/algoliasearch/node_modules/@algolia/requester-browser-xhr": { + "version": "5.20.4", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.20.4.tgz", + "integrity": "sha512-Y8GThjDVdhFUurZKKDdzAML/LNKOA/BOydEcaFeb/g4Iv4Iq0qQJs6aIbtdsngUU6cu74qH/2P84kr2h16uVvQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.20.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/algoliasearch/node_modules/@algolia/requester-fetch": { + "version": "5.20.4", + "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.20.4.tgz", + "integrity": "sha512-OrAUSrvbFi46U7AxOXkyl9QQiaW21XWpixWmcx3D2S65P/DCIGOVE6K2741ZE+WiKIqp+RSYkyDFj3BiFHzLTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.20.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/algoliasearch/node_modules/@algolia/requester-node-http": { + "version": "5.20.4", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.20.4.tgz", + "integrity": "sha512-Jc/bofGBw4P9nBii4oCzCqqusv8DAFFORfUD2Ce1cZk3fvUPk+q/Qnu7i9JpTSHjMc0MWzqApLdq7Nwh1gelLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.20.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz", + "integrity": "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "environment": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/birpc": { + "version": "0.2.19", + "resolved": "https://registry.npmjs.org/birpc/-/birpc-0.2.19.tgz", + "integrity": "sha512-5WeXXAvTmitV1RqJFppT5QtUiz2p1mRSYU000Jkft5ZUCLJIk4uQriYNO50HknxKwM6jd8utNc66K1qGIwwWBQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true, + "license": "ISC" + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/cheerio": { + "version": "1.0.0-rc.10", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz", + "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==", + "dev": true, + "license": "MIT", + "dependencies": { + "cheerio-select": "^1.5.0", + "dom-serializer": "^1.3.2", + "domhandler": "^4.2.0", + "htmlparser2": "^6.1.0", + "parse5": "^6.0.1", + "parse5-htmlparser2-tree-adapter": "^6.0.1", + "tslib": "^2.2.0" + }, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + } + }, + "node_modules/cheerio-select": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.6.0.tgz", + "integrity": "sha512-eq0GdBvxVFbqWgmCm7M3XGs1I8oLy/nExUnh6oLqmBditPO9AqQJrkslDpMun/hZ0yyTs8L0m85OHp4ho6Qm9g==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "css-select": "^4.3.0", + "css-what": "^6.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.3.1", + "domutils": "^2.8.0" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cli-cursor": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", + "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", + "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", + "dev": true, + "license": "MIT", + "dependencies": { + "slice-ansi": "^5.0.0", + "string-width": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clipboard": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.11.tgz", + "integrity": "sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==", + "license": "MIT", + "dependencies": { + "good-listener": "^1.2.2", + "select": "^1.1.2", + "tiny-emitter": "^2.0.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/commander": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", + "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/copy-anything": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-3.0.5.tgz", + "integrity": "sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-what": "^4.1.8" + }, + "engines": { + "node": ">=12.13" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decode-named-character-reference": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.1.0.tgz", + "integrity": "sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/delegate": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", + "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==", + "license": "MIT" + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true, + "license": "MIT" + }, + "node_modules/emoji-regex": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", + "dev": true, + "license": "MIT" + }, + "node_modules/emoji-regex-xs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex-xs/-/emoji-regex-xs-1.0.0.tgz", + "integrity": "sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==", + "dev": true, + "license": "MIT" + }, + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "license": "BSD-2-Clause", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/environment": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", + "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/escape-goat": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-3.0.0.tgz", + "integrity": "sha512-w3PwNZJwRxlp47QGzhuEBldEqVHHhh8/tIPcl6ecf2Bou99cdAt0knihBV0Ecc7CGxYduXVBDheH1K2oADRlvw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.22.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.22.0.tgz", + "integrity": "sha512-9V/QURhsRN40xuHXWjV64yvrzMjcz7ZyNoF2jJFmy9j/SLk0u1OLSZgXi28MrXjymnjEGSR80WCdab3RGMDveQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.19.2", + "@eslint/config-helpers": "^0.1.0", + "@eslint/core": "^0.12.0", + "@eslint/eslintrc": "^3.3.0", + "@eslint/js": "9.22.0", + "@eslint/plugin-kit": "^0.2.7", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.3.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-vue": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-10.0.0.tgz", + "integrity": "sha512-XKckedtajqwmaX6u1VnECmZ6xJt+YvlmMzBPZd+/sI3ub2lpYZyFnsyWo7c3nMOQKJQudeyk1lw/JxdgeKT64w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "natural-compare": "^1.4.0", + "nth-check": "^2.1.1", + "postcss-selector-parser": "^6.0.15", + "semver": "^7.6.3", + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "vue-eslint-parser": "^10.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.3.0.tgz", + "integrity": "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/esm": { + "version": "3.2.25", + "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", + "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/espree": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", + "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.14.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true, + "license": "MIT" + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "dev": true, + "license": "MIT" + }, + "node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/focus-trap": { + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.6.4.tgz", + "integrity": "sha512-xx560wGBk7seZ6y933idtjJQc1l+ck+pI3sKvhKozdBV1dRZoKhkW5xoCaFv9tQiX5RH1xfSxjuNu6g+lmN/gw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tabbable": "^6.2.0" + } + }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/get-east-asian-width": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz", + "integrity": "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.0.0.tgz", + "integrity": "sha512-iInW14XItCXET01CQFqudPOWP2jYMl7T+QRQT+UNcR/iQncN/F0UNpgd76iFkBPgNQb4+X3LV9tLJYzwh+Gl3A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/good-listener": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", + "integrity": "sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==", + "license": "MIT", + "dependencies": { + "delegate": "^3.1.2" + } + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/hast-util-to-html": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz", + "integrity": "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-whitespace": "^3.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.0", + "zwitch": "^2.0.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-html/node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hookable": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz", + "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/html-void-elements": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", + "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/ini": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.3.tgz", + "integrity": "sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-what": { + "version": "4.1.16", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-4.1.16.tgz", + "integrity": "sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.13" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsonc-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsonpointer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", + "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/juice": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/juice/-/juice-8.1.0.tgz", + "integrity": "sha512-FLzurJrx5Iv1e7CfBSZH68dC04EEvXvvVvPYB7Vx1WAuhCp1ZPIMtqxc+WTWxVkpTIC2Ach/GAv0rQbtGf6YMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cheerio": "1.0.0-rc.10", + "commander": "^6.1.0", + "mensch": "^0.3.4", + "slick": "^1.12.2", + "web-resource-inliner": "^6.0.1" + }, + "bin": { + "juice": "bin/juice" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/juice/node_modules/commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/katex": { + "version": "0.16.21", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.21.tgz", + "integrity": "sha512-XvqR7FgOHtWupfMiigNzmh+MgUVmDGU2kXZm899ZkPfcuoPuFxyHmXsgATDpFZDAXCI8tvinaVcDo8PIIJSo4A==", + "dev": true, + "funding": [ + "https://opencollective.com/katex", + "https://github.com/sponsors/katex" + ], + "license": "MIT", + "dependencies": { + "commander": "^8.3.0" + }, + "bin": { + "katex": "cli.js" + } + }, + "node_modules/katex/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "uc.micro": "^2.0.0" + } + }, + "node_modules/lint-staged": { + "version": "15.4.3", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.4.3.tgz", + "integrity": "sha512-FoH1vOeouNh1pw+90S+cnuoFwRfUD9ijY2GKy5h7HS3OR7JVir2N2xrsa0+Twc1B7cW72L+88geG5cW4wIhn7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^5.4.1", + "commander": "^13.1.0", + "debug": "^4.4.0", + "execa": "^8.0.1", + "lilconfig": "^3.1.3", + "listr2": "^8.2.5", + "micromatch": "^4.0.8", + "pidtree": "^0.6.0", + "string-argv": "^0.3.2", + "yaml": "^2.7.0" + }, + "bin": { + "lint-staged": "bin/lint-staged.js" + }, + "engines": { + "node": ">=18.12.0" + }, + "funding": { + "url": "https://opencollective.com/lint-staged" + } + }, + "node_modules/lint-staged/node_modules/chalk": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/listr2": { + "version": "8.2.5", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.2.5.tgz", + "integrity": "sha512-iyAZCeyD+c1gPyE9qpFu8af0Y+MRtmKOncdGoA2S5EY8iFq99dmmvkNnHiWo+pj0s7yH7l3KPIgee77tKpXPWQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "cli-truncate": "^4.0.0", + "colorette": "^2.0.20", + "eventemitter3": "^5.0.1", + "log-update": "^6.1.0", + "rfdc": "^1.4.1", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/log-update": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", + "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-escapes": "^7.0.0", + "cli-cursor": "^5.0.0", + "slice-ansi": "^7.1.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-update/node_modules/is-fullwidth-code-point": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz", + "integrity": "sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-east-asian-width": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/slice-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.0.tgz", + "integrity": "sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "is-fullwidth-code-point": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/magic-string": { + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/mark.js": { + "version": "8.11.1", + "resolved": "https://registry.npmjs.org/mark.js/-/mark.js-8.11.1.tgz", + "integrity": "sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/markdown-it": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", + "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" + }, + "bin": { + "markdown-it": "bin/markdown-it.mjs" + } + }, + "node_modules/markdown-it-mathjax3": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/markdown-it-mathjax3/-/markdown-it-mathjax3-4.3.2.tgz", + "integrity": "sha512-TX3GW5NjmupgFtMJGRauioMbbkGsOXAAt1DZ/rzzYmTHqzkO1rNAdiMD4NiruurToPApn2kYy76x02QN26qr2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "juice": "^8.0.0", + "mathjax-full": "^3.2.0" + } + }, + "node_modules/markdown-it/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/markdownlint": { + "version": "0.37.4", + "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.37.4.tgz", + "integrity": "sha512-u00joA/syf3VhWh6/ybVFkib5Zpj2e5KB/cfCei8fkSRuums6nyisTWGqjTWIOFoFwuXoTBQQiqlB4qFKp8ncQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "markdown-it": "14.1.0", + "micromark": "4.0.1", + "micromark-core-commonmark": "2.0.2", + "micromark-extension-directive": "3.0.2", + "micromark-extension-gfm-autolink-literal": "2.1.0", + "micromark-extension-gfm-footnote": "2.1.0", + "micromark-extension-gfm-table": "2.1.0", + "micromark-extension-math": "3.1.0", + "micromark-util-types": "2.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/DavidAnson" + } + }, + "node_modules/markdownlint-cli": { + "version": "0.44.0", + "resolved": "https://registry.npmjs.org/markdownlint-cli/-/markdownlint-cli-0.44.0.tgz", + "integrity": "sha512-ZJTAONlvF9NkrIBltCdW15DxN9UTbPiKMEqAh2EU2gwIFlrCMavyCEPPO121cqfYOrLUJWW8/XKWongstmmTeQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "commander": "~13.1.0", + "glob": "~10.4.5", + "ignore": "~7.0.3", + "js-yaml": "~4.1.0", + "jsonc-parser": "~3.3.1", + "jsonpointer": "~5.0.1", + "markdownlint": "~0.37.4", + "minimatch": "~9.0.5", + "run-con": "~1.3.2", + "smol-toml": "~1.3.1" + }, + "bin": { + "markdownlint": "markdownlint.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/markdownlint-cli/node_modules/ignore": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.3.tgz", + "integrity": "sha512-bAH5jbK/F3T3Jls4I0SO1hmPR0dKU0a7+SY6n1yzRtG54FLO8d6w/nxLFX2Nb7dBu6cCWXPaAME6cYqFUMmuCA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/mathjax-full": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/mathjax-full/-/mathjax-full-3.2.2.tgz", + "integrity": "sha512-+LfG9Fik+OuI8SLwsiR02IVdjcnRCy5MufYLi0C3TdMT56L/pjB0alMVGgoWJF8pN9Rc7FESycZB9BMNWIid5w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esm": "^3.2.25", + "mhchemparser": "^4.1.0", + "mj-context-menu": "^0.6.1", + "speech-rule-engine": "^4.0.6" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz", + "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", + "dev": true, + "license": "MIT" + }, + "node_modules/mensch": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/mensch/-/mensch-0.3.4.tgz", + "integrity": "sha512-IAeFvcOnV9V0Yk+bFhYR07O3yNina9ANIN5MoXBKYJ/RLYPurd2d0yw14MDhpr9/momp0WofT1bPUh3hkzdi/g==", + "dev": true, + "license": "MIT" + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true, + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/mhchemparser": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/mhchemparser/-/mhchemparser-4.2.1.tgz", + "integrity": "sha512-kYmyrCirqJf3zZ9t/0wGgRZ4/ZJw//VwaRVGA75C4nhE60vtnIzhl9J9ndkX/h6hxSN7pjg/cE0VxbnNM+bnDQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/micromark": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.1.tgz", + "integrity": "sha512-eBPdkcoCNvYcxQOAKAlceo5SNdzZWfF+FcSupREAzdAh9rRmE239CEQAiTwIgblwnoM8zzj35sZ5ZwvSEOF6Kw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "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-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.2.tgz", + "integrity": "sha512-FKjQKbxd1cibWMM1P9N+H8TwlgGgSkWZMmfuVucLCHaYqeSvJ0hFeHsIa65pA2nYbes0f8LDHPMrd9X7Ujxg9w==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "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-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-directive": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/micromark-extension-directive/-/micromark-extension-directive-3.0.2.tgz", + "integrity": "sha512-wjcXHgk+PPdmvR58Le9d7zQYWy+vKEU9Se44p2CrCDPiLr2FMyiT4Fyb5UFKFC66wGB3kPlgD7q3TnoqPS7SZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "parse-entities": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", + "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", + "dev": true, + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", + "dev": true, + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-table": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.0.tgz", + "integrity": "sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g==", + "dev": true, + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-math": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-math/-/micromark-extension-math-3.1.0.tgz", + "integrity": "sha512-lvEqd+fHjATVs+2v/8kg9i5Q0AP2k85H0WUOwpIVvUML8BapsMvh1XAogmQjOCsLpoKRCVQqEkQBB3NhVBcsOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/katex": "^0.16.0", + "devlop": "^1.0.0", + "katex": "^0.16.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-factory-destination": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", + "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-label": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", + "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", + "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", + "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-chunked": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", + "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-classify-character": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", + "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", + "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", + "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", + "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-html-tag-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", + "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", + "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-resolve-all": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", + "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", + "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-subtokenize": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz", + "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-types": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.1.tgz", + "integrity": "sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mimic-function": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", + "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minisearch": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minisearch/-/minisearch-7.1.2.tgz", + "integrity": "sha512-R1Pd9eF+MD5JYDDSPAp/q1ougKglm14uEkPMvQ/05RGmx6G9wvmLTrTI/Q5iPNJLYqNdsDQ7qTGIcNWR+FrHmA==", + "dev": true, + "license": "MIT" + }, + "node_modules/mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", + "dev": true, + "license": "MIT" + }, + "node_modules/mj-context-menu": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/mj-context-menu/-/mj-context-menu-0.6.1.tgz", + "integrity": "sha512-7NO5s6n10TIV96d4g2uDpG7ZDpIhMh0QNfGdJw/W47JswFcosz457wqz/b5sAKvl12sxINGFCn80NZHKwxQEXA==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.9.tgz", + "integrity": "sha512-SppoicMGpZvbF1l3z4x7No3OlIjP7QJvC9XR7AhZr1kL133KHnKPztkKDc+Ir4aJ/1VhTySrtKhrsycmrMQfvg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/oniguruma-to-es": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-3.1.1.tgz", + "integrity": "sha512-bUH8SDvPkH3ho3dvwJwfonjlQ4R80vjyvrU8YpxuROddv55vAEJrTuCuCVUhhsHbtlD9tGGbaNApGQckXhS8iQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex-xs": "^1.0.0", + "regex": "^6.0.1", + "regex-recursion": "^6.0.2" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, + "license": "BlueOak-1.0.0" + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-entities": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz", + "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true, + "license": "MIT" + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "parse5": "^6.0.1" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/perfect-debounce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz", + "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pidtree": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", + "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", + "dev": true, + "license": "MIT", + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/popper.js": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", + "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", + "deprecated": "You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/postcss": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.8", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/preact": { + "version": "10.26.4", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.26.4.tgz", + "integrity": "sha512-KJhO7LBFTjP71d83trW+Ilnjbo+ySsaAgCfXOXUlmGzJ4ygYPWmysm77yg4emwfmoz3b22yvH5IsVFHbhUaH5w==", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/preact" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", + "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/property-information": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.0.0.tgz", + "integrity": "sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "license": "MIT" + }, + "node_modules/regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/regex/-/regex-6.0.1.tgz", + "integrity": "sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "node_modules/regex-recursion": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-6.0.2.tgz", + "integrity": "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==", + "dev": true, + "license": "MIT", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "node_modules/regex-utilities": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz", + "integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==", + "dev": true, + "license": "MIT" + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/restore-cursor": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", + "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^7.0.0", + "signal-exit": "^4.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/restore-cursor/node_modules/onetime": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", + "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-function": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "dev": true, + "license": "MIT" + }, + "node_modules/rollup": { + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.35.0.tgz", + "integrity": "sha512-kg6oI4g+vc41vePJyO6dHt/yl0Rz3Thv0kJeVQ3D1kS3E5XSuKbPc29G4IpT/Kv1KQwgHVcN+HtyS+HYLNSvQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.6" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.35.0", + "@rollup/rollup-android-arm64": "4.35.0", + "@rollup/rollup-darwin-arm64": "4.35.0", + "@rollup/rollup-darwin-x64": "4.35.0", + "@rollup/rollup-freebsd-arm64": "4.35.0", + "@rollup/rollup-freebsd-x64": "4.35.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.35.0", + "@rollup/rollup-linux-arm-musleabihf": "4.35.0", + "@rollup/rollup-linux-arm64-gnu": "4.35.0", + "@rollup/rollup-linux-arm64-musl": "4.35.0", + "@rollup/rollup-linux-loongarch64-gnu": "4.35.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.35.0", + "@rollup/rollup-linux-riscv64-gnu": "4.35.0", + "@rollup/rollup-linux-s390x-gnu": "4.35.0", + "@rollup/rollup-linux-x64-gnu": "4.35.0", + "@rollup/rollup-linux-x64-musl": "4.35.0", + "@rollup/rollup-win32-arm64-msvc": "4.35.0", + "@rollup/rollup-win32-ia32-msvc": "4.35.0", + "@rollup/rollup-win32-x64-msvc": "4.35.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/run-con": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/run-con/-/run-con-1.3.2.tgz", + "integrity": "sha512-CcfE+mYiTcKEzg0IqS08+efdnH0oJ3zV0wSUFBNrMHMuxCtXvBCLzCJHatwuXDcu/RlhjTziTo/a1ruQik6/Yg==", + "dev": true, + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~4.1.0", + "minimist": "^1.2.8", + "strip-json-comments": "~3.1.1" + }, + "bin": { + "run-con": "cli.js" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/search-insights": { + "version": "2.17.3", + "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.17.3.tgz", + "integrity": "sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/select": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", + "integrity": "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/shiki": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-2.5.0.tgz", + "integrity": "sha512-mI//trrsaiCIPsja5CNfsyNOqgAZUb6VpJA+340toL42UpzQlXpwRV9nch69X6gaUxrr9kaOOa6e3y3uAkGFxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/core": "2.5.0", + "@shikijs/engine-javascript": "2.5.0", + "@shikijs/engine-oniguruma": "2.5.0", + "@shikijs/langs": "2.5.0", + "@shikijs/themes": "2.5.0", + "@shikijs/types": "2.5.0", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/slice-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/slick": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/slick/-/slick-1.12.2.tgz", + "integrity": "sha512-4qdtOGcBjral6YIBCWJ0ljFSKNLz9KkhbWtuGvUyRowl1kxfuE1x/Z/aJcaiilpb3do9bl5K7/1h9XC5wWpY/A==", + "dev": true, + "license": "MIT (http://mootools.net/license.txt)", + "engines": { + "node": "*" + } + }, + "node_modules/smol-toml": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.3.1.tgz", + "integrity": "sha512-tEYNll18pPKHroYSmLLrksq233j021G0giwW7P3D24jC54pQ5W5BXMsQ/Mvw1OJCmEYDgY+lrzT+3nNUtoNfXQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">= 18" + }, + "funding": { + "url": "https://github.com/sponsors/cyyynthia" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/speakingurl": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/speakingurl/-/speakingurl-14.0.1.tgz", + "integrity": "sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/speech-rule-engine": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/speech-rule-engine/-/speech-rule-engine-4.0.7.tgz", + "integrity": "sha512-sJrL3/wHzNwJRLBdf6CjJWIlxC04iYKkyXvYSVsWVOiC2DSkHmxsqOhEeMsBA9XK+CHuNcsdkbFDnoUfAsmp9g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "commander": "9.2.0", + "wicked-good-xpath": "1.3.0", + "xmldom-sre": "0.1.31" + }, + "bin": { + "sre": "bin/sre" + } + }, + "node_modules/speech-rule-engine/node_modules/commander": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.2.0.tgz", + "integrity": "sha512-e2i4wANQiSXgnrBlIatyHtP1odfUp0BbV5Y5nEGbxtIrStkEOAAzCUirvLBNXHLr7kwLvJl6V+4V3XV9x7Wd9w==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/string-argv": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", + "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6.19" + } + }, + "node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/stringify-entities": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "dev": true, + "license": "MIT", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/superjson": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/superjson/-/superjson-2.2.2.tgz", + "integrity": "sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "copy-anything": "^3.0.2" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tabbable": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", + "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==", + "dev": true, + "license": "MIT" + }, + "node_modules/tiny-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", + "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==", + "license": "MIT" + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true, + "license": "MIT" + }, + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/ts-api-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.1.tgz", + "integrity": "sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/typescript": { + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-eslint": { + "version": "8.26.1", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.26.1.tgz", + "integrity": "sha512-t/oIs9mYyrwZGRpDv3g+3K6nZ5uhKEMt2oNmAPwaY4/ye0+EH4nXIPYNtkYFS6QHm+1DFg34DbglYBz5P9Xysg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.26.1", + "@typescript-eslint/parser": "8.26.1", + "@typescript-eslint/utils": "8.26.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/uc.micro": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", + "dev": true, + "license": "MIT" + }, + "node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-is/node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position/node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position/node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents/node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/unist-util-visit/node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/v-tooltip": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/v-tooltip/-/v-tooltip-2.1.3.tgz", + "integrity": "sha512-xXngyxLQTOx/yUEy50thb8te7Qo4XU6h4LZB6cvEfVd9mnysUxLEoYwGWDdqR+l69liKsy3IPkdYff3J1gAJ5w==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.13.10", + "lodash": "^4.17.21", + "popper.js": "^1.16.1", + "vue-resize": "^1.0.1" + } + }, + "node_modules/valid-data-url": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/valid-data-url/-/valid-data-url-3.0.1.tgz", + "integrity": "sha512-jOWVmzVceKlVVdwjNSenT4PbGghU0SBIizAev8ofZVgivk/TVHXSbNL8LP6M3spZvkR9/QolkyJavGSX5Cs0UA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/vfile": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message/node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/vfile/node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/vite": { + "version": "5.4.14", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.14.tgz", + "integrity": "sha512-EK5cY7Q1D8JNhSaPKVK4pwBFvaTmZxEnoKXLG/U9gmdDcihQGNzFlgIvaxezFR4glP1LsuiedwMBqCXH3wZccA==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vitepress": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/vitepress/-/vitepress-1.6.3.tgz", + "integrity": "sha512-fCkfdOk8yRZT8GD9BFqusW3+GggWYZ/rYncOfmgcDtP3ualNHCAg+Robxp2/6xfH1WwPHtGpPwv7mbA3qomtBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@docsearch/css": "3.8.2", + "@docsearch/js": "3.8.2", + "@iconify-json/simple-icons": "^1.2.21", + "@shikijs/core": "^2.1.0", + "@shikijs/transformers": "^2.1.0", + "@shikijs/types": "^2.1.0", + "@types/markdown-it": "^14.1.2", + "@vitejs/plugin-vue": "^5.2.1", + "@vue/devtools-api": "^7.7.0", + "@vue/shared": "^3.5.13", + "@vueuse/core": "^12.4.0", + "@vueuse/integrations": "^12.4.0", + "focus-trap": "^7.6.4", + "mark.js": "8.11.1", + "minisearch": "^7.1.1", + "shiki": "^2.1.0", + "vite": "^5.4.14", + "vue": "^3.5.13" + }, + "bin": { + "vitepress": "bin/vitepress.js" + }, + "peerDependencies": { + "markdown-it-mathjax3": "^4", + "postcss": "^8" + }, + "peerDependenciesMeta": { + "markdown-it-mathjax3": { + "optional": true + }, + "postcss": { + "optional": true + } + } + }, + "node_modules/vitepress/node_modules/@vitejs/plugin-vue": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.2.1.tgz", + "integrity": "sha512-cxh314tzaWwOLqVes2gnnCtvBDcM1UMdn+iFR+UjAn411dPT3tOmqrJjbMd7koZpMAmBM/GqeV4n9ge7JSiJJQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "vite": "^5.0.0 || ^6.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/vitepress/node_modules/@vue/compiler-sfc": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz", + "integrity": "sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.25.3", + "@vue/compiler-core": "3.5.13", + "@vue/compiler-dom": "3.5.13", + "@vue/compiler-ssr": "3.5.13", + "@vue/shared": "3.5.13", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.11", + "postcss": "^8.4.48", + "source-map-js": "^1.2.0" + } + }, + "node_modules/vitepress/node_modules/@vue/server-renderer": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.13.tgz", + "integrity": "sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/compiler-ssr": "3.5.13", + "@vue/shared": "3.5.13" + }, + "peerDependencies": { + "vue": "3.5.13" + } + }, + "node_modules/vitepress/node_modules/vue": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.13.tgz", + "integrity": "sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.13", + "@vue/compiler-sfc": "3.5.13", + "@vue/runtime-dom": "3.5.13", + "@vue/server-renderer": "3.5.13", + "@vue/shared": "3.5.13" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/vue": { + "version": "2.7.16", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.7.16.tgz", + "integrity": "sha512-4gCtFXaAA3zYZdTp5s4Hl2sozuySsgz4jy1EnpBHNfpMa9dK1ZCG7viqBPCwXtmgc8nHqUsAu3G4gtmXkkY3Sw==", + "deprecated": "Vue 2 has reached EOL and is no longer actively maintained. See https://v2.vuejs.org/eol/ for more details.", + "license": "MIT", + "peer": true, + "dependencies": { + "@vue/compiler-sfc": "2.7.16", + "csstype": "^3.1.0" + } + }, + "node_modules/vue-clipboard2": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/vue-clipboard2/-/vue-clipboard2-0.3.3.tgz", + "integrity": "sha512-aNWXIL2DKgJyY/1OOeITwAQz1fHaCIGvUFHf9h8UcoQBG5a74MkdhS/xqoYe7DNZdQmZRL+TAdIbtUs9OyVjbw==", + "license": "MIT", + "dependencies": { + "clipboard": "^2.0.0" + } + }, + "node_modules/vue-eslint-parser": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-10.1.1.tgz", + "integrity": "sha512-bh2Z/Au5slro9QJ3neFYLanZtb1jH+W2bKqGHXAoYD4vZgNG3KeotL7JpPv5xzY4UXUXJl7TrIsnzECH63kd3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "eslint-scope": "^8.2.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", + "esquery": "^1.6.0", + "lodash": "^4.17.21", + "semver": "^7.6.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0" + } + }, + "node_modules/vue-eslint-parser/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/vue-resize": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vue-resize/-/vue-resize-1.0.1.tgz", + "integrity": "sha512-z5M7lJs0QluJnaoMFTIeGx6dIkYxOwHThlZDeQnWZBizKblb99GSejPnK37ZbNE/rVwDcYcHY+Io+AxdpY952w==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "vue": "^2.6.0" + } + }, + "node_modules/web-resource-inliner": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/web-resource-inliner/-/web-resource-inliner-6.0.1.tgz", + "integrity": "sha512-kfqDxt5dTB1JhqsCUQVFDj0rmY+4HLwGQIsLPbyrsN9y9WV/1oFDSx3BQ4GfCv9X+jVeQ7rouTqwK53rA/7t8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-colors": "^4.1.1", + "escape-goat": "^3.0.0", + "htmlparser2": "^5.0.0", + "mime": "^2.4.6", + "node-fetch": "^2.6.0", + "valid-data-url": "^3.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/web-resource-inliner/node_modules/domhandler": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-3.3.0.tgz", + "integrity": "sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.0.1" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/web-resource-inliner/node_modules/htmlparser2": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-5.0.1.tgz", + "integrity": "sha512-vKZZra6CSe9qsJzh0BjBGXo8dvzNsq/oGvsjfRdOrrryfeD9UOBEEQdeoqCRmKZchF5h2zOBMQ6YuQ0uRUmdbQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^3.3.0", + "domutils": "^2.4.2", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/fb55/htmlparser2?sponsor=1" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wicked-good-xpath": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/wicked-good-xpath/-/wicked-good-xpath-1.3.0.tgz", + "integrity": "sha512-Gd9+TUn5nXdwj/hFsPVx5cuHHiF5Bwuc30jZ4+ronF1qHK5O7HD0sgmXWSEgwKquT3ClLoKPVbO6qGwVwLzvAw==", + "dev": true, + "license": "MIT" + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", + "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi-cjs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12" + } + }, + "node_modules/xmldom-sre": { + "version": "0.1.31", + "resolved": "https://registry.npmjs.org/xmldom-sre/-/xmldom-sre-0.1.31.tgz", + "integrity": "sha512-f9s+fUkX04BxQf+7mMWAp5zk61pciie+fFLC9hX9UVvCeJQfNHRHXpeo5MPcR0EUf57PYLdt+ZO4f3Ipk2oZUw==", + "dev": true, + "license": "(LGPL-2.0 or MIT)", + "engines": { + "node": ">=0.1" + } + }, + "node_modules/yaml": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz", + "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==", + "dev": true, + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + } + } +} diff --git a/static/img/P2P_data_flow_dark.png b/static/img/P2P_data_flow_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..bf3a3e247ee3f362be28fb9771f47f0f4788ca52 GIT binary patch literal 275480 zcmeFZX*|@?`#(HHB}6L8no1=*S+j(sOenjtC&@CxB>RxHvKHBwlzrbByOed9vW$HT zGudS@#(E#i_xHc=|L@WL{QG${ug`kUb*|-oUDx}}`zLD3v}c&lKp+s>M-T67Kp+ea z5XhO}(Qn>NJ97@j8Sas{A zu2*3nnHa^u!&ZMtwf^*Xez6}zJs#c<_P(F06dw~2FO#A1S&Gni%AS)}|MC9C9Sww9 zVs@W0FqW^ z@TNTa&Biq`w>r}?^WC31XCg=Sl(DA@pUdd@xXH!ZgJiDh;ea-dI^Pf_j3W7{f*Bz_#tlk=5-Y*?E;mzgx?~jtC=hkbp zp{3F43b(TMKSM2H9MMjxbZb8^nOuOxe88eU)YjH&|2+}k(=Gnq!;8dDW_ms}z&KIP zs}8N5736GddXvFK2&$eZIeb-+e7Y($}Ux zKhIc`t}Wl12`eTo{^;(<4WIg)dCU2@!EbOSBv!Np+j*R%*6yGn`_t%H5sn=~ORv&B zQtYX1l9fFDp1I+hEC zFuwlu^Y%aFTc{De)+O@3Q+tOWZjerUDN32^+L`CQeqAkDcGsOr=gj3~X;+O6BJtqi zj?WHDfeJ}B4XQrj6wf>jn|pwg>fhIUBiqp#FW#}Vv}CPzMPQyItJqGgz^_Kzsn!X)qttj=p=jnPz&!(hna0 z)oyNw(xGLg1XdO+#-sWROfGH44C##2xN6$7AH8-(-s^TlvqeSDLNIaj-_+`#pFw@( z9}^Q3j~3Nd?SqcyuUM4(r0#wuV~vy;c|Ir4gvI=ThMMl!>Ya?KBW1~ML-g+NzpfPSbe_tz~hFGsr*m-yTgUM_vf72B(E z`S(?lOf9$kqW-n`@;`k!y2lncphjM3`aP8Yw3LK|9^Yoy_bZ2=GG)4Z_wEd?GkylB zmj6_TNXR7tV_T)SA}eNiOtL^;5>N>UL@$8rlo{8`TyqFZ4yI+li)y6G$)>FNoZ40M zwi-0|(W*CWY-y6c;Pe+8l$W7aS``U;aQFppS&f>wi5y^#)b-Zkf5urAl^Vc>`^|ys z$+CPv`U22!CwG!`bL~Da;Wm_%blD`Id*1x$ou+qzm`XmK+J=s?(H*|7xxA!Ab7`zL zr!qf+wdDd2uF@?O+x8U|QU%SusX7yn%#9*)X?>shJy3yzJ^Hu$Bc@1*63XHUHR9MIJ-=Ck> zc?QOaPeMyT10GP-w;ML(=oYkhL<{I5$bna}$)iQr+zWLj&nDo5f4792f39DSe^qzR z=O-*QActD>P@5s%Gv~c2sh{{3vP-)>VVCu|b)eGVkWFFi4$YZqr5z(?*|#rKPB#O9J_4 z9u_kl)CwVxO-t_YHD3FBw-c;*1x)G;FBW2x&0XsU)=Mz51{YDrmG)*U&-%YPsCKtmt9oO)B{#WL+?_x8;f8^^zY!!T%E*pQa0J`BF zQT=8ShH@pmxZE^3Y38~*-DchMAq(Aq)8jVgrFEmJLZQY&+`U{sbJ{G%J~t$I1l<_f z>?o5UOE>A#9` zaDNqhs?uSq`8K_K7Os$S<9cZMMInEu5?48@5=`9n`A>(Ef|$Bem=+1S{!La=KxlC+ zad=u(6xWE=-pXuucl-CpANc6tF3*E_ACr9nffFs2KH<7DA@2$nA-1ZfrDoM*DyN_h z#+J+(#7x-v^KYtUX82Wo;&TTPUNy!>hOQqCUyqSYuP|VtDyl#5&0@Pxg7g5U%OYNneyy%bB!09vHpoz5P|41y z3vqD!grY`i9BDOW8r66xuN_yr)g;ZA3A#zIrb!A(PBbY2rfHR8N?!|~OOE%?#DZxn z-mN;j^mj8iVE8$!Oz*&or}OfdQEeEvA6LJF4aUhUFfcI3VI@+rPxvJ2^{fWUgXBo` zUf8LN7BJzL)v{}I^sF1#nTEAVYYe@ozQi9~tfO=K7)|hoL3sc2Qv1x=&1#Rb3D9k} z!02CVF zvyJU8WnAbDPdaw#TXMT=J+?U7)mls5PgCJ#VYSz%(GQY3J}noY%vQ#I>eivTtiTal zppuy&$#pFE0J)2%_WCrD-=i-C?R3=dKuJs0%k6u6dzsX*V)|L&#dEH59Ns%{GM2?_ z?eA|>C1*^soIo_c5e$B>C~_s|n>D?TLbisMgx`gF<2nx%xLZ*5^74)6H>R3wA4faA zQVcmK61qPVZBiAWo~Y&HHdarl1eNa!CpJr1nW2QEODifW zta$vv!`-|gy@QVST_hq6+M@J7LX$U{VVHovJ>08M$ zR?1OMb6KA2%gK@4yWq!fbSANWXSE|=sX&>k5!@CN82q+miO)>$^0l+)>>`}t#N}~; z_;AP~h3R^DLk??(ZGxmFDapO-R005UhShKK3T>@;<~+K?<@MsvqK_TL7QHtmOVmov zh1TaSISU(N)1kWB?3;4PodI93!x1yicO~BS^)r!iS^46zyWT$o0;k0=0L~bZ0GB9E ziUSBC%U~BF^o%?SASCFk%b4*>hi}2$HnVR2CKe+ev)yTq_V!Pru8cb=1iQ64sM$*n zo3)y*8&<@gI08NpoGOIz@qI>0i;9XA=bG%*iT&B03=2!kjKdK$d`ewe1n@X513hd~ z>sAKDU0vh3U2dBrjbX}uDa5IlWB_hND>uJ$cX!YE=eWFXS6yBGE%e;^_Fi+vHr7B2 z-j#kE-1Tgt|E$13$sna~vkAU~JRdzZO z!8OVp-F!oCnFB~sP`_7I-=J0X9a&GaU%t5|hMtG>8r=Pmm9|&T`AQ=}(E3 zqOYyRKp&cJFfe3$55!v5AA-SMPxu9ke^_}iUe8P1F8(CaXsIb2*I)Fq9D zC|z~#*5Tn{gNsG0VQ0^t)$y+-4MNYvdy!@?DFuN?MIub&m+Q9kZ3Al$CrUufzknR%59sGpbWg)?b_$EZKPwF6F{%$#T9uy?klrp_S1@friZXX z(DD+$;a_It=Z2gy|7vLD_c3TRzmsRcM{@i&ak=2bC2&_vbnrL#(6sa3qSKoz?Vov! z6k-UmU}3b&0q}Si{?# zdWx+c3SokaySux2XMU-@+yu^g&N2rW()W#aT%n9&p=KIph-PU-^C;U6)pKfwyt`f_gTAu6!&*j$-x>Q-zHxV%q{ zarsJLRw!i19cuzmsiUh)?NE>q2u=yYh}L54G^~1U zRpys`ThcDy88AP7jiS4Pe+B^1*dU5DPl6@=_ToT&i5Q~3=H0Vx6LQu ziOLTlI`dmUIqM8?H}M(;4K?VChYkV)A%HyM1#ggVz<_^Ufa#$AAw2fxhNf5-TzxdD zySsL_aSOOA=@Rhrn5+XGIWU>hIkr!)L9&Xww+Jw7^iB1oNciVvr&q5EN~`QA72cw` z)(7at`paF9<5|olGCe^A_m6{MQZZVP&AUV*;g8ew$4_xZ1t#^zZuH1L6AXQ>N59<8 zisIoK31gRpWFLR&1j3k2Yf1Q?XHd~z?tYXPTUa@O)FXeKkI>8WgwO31?pRz+!1|~^ z{=6gOtQof8*O%jRl)SrDA@E(dnX&?x>-UW}`yi_$U;9t81M@yem;r$ICbbO|ieBe- z%d@C!nXO8s(Zo8BRJLCmcPxgwmg2bAx7Vcq`T_A1Bz zKaLrYET<`bxa74td5W?~@adT#GRS7k+NF|n=FrnRv}LZq@968|F2Z~(fh+Ea7k_nT zpNGK1M-U|$uR0pGN%dg~-28@>rU}R9DDp3ZoVP3Drn=7EY~m+>F78{0tKqE*{bzv7 zGf4X@My5w2;2%WQI9K$$8Kkz^0|#b7niV?xitT)PfXPqaQ*>wcGnE@$$b+sh2=`~V zl$|}AVlY6UyjqNrYrG>*pByS}LwXwhD)1L+eE@0>4iEDL<0mG*3?qWTI1fMw4i7}! zIoS%*EM7i-fRka*J+=X?{4Uo{j4S-dcpz^2S7SA^jLUXgh%s(dj+ImAWSeRi3BvyQ`H*a?%%=Zf-UPyQTSWJtwb>q<0<#V;cVG|Q ze;R#H`O|@)u2#RdMhkiK;7S8)$BTuN2QwJ~I$U)j;yxqfSVpGjK~bhSF2nA#LLWQj z>sZ&hZOsT$^;2GXyKvbmy=9Ilbz87rA&paDmM zLi<8^2gtc^NJ>ld%A|ftRepQ!@B*tYE=@#k^fqD!;2}*j1Ou|HqCyvzb_JWxb})+w zNEX&~8d%3?C&Nnnl+xA*kw7@y9(tjw^Ugel?{4EY=5Ymo?4Iot!-yw4f)57eUt{IW3`c z4xmJLw781UO>LXE)@wu8ePqW#aRMZMdN3{sl=B*>Qq}Bi48KbInWdT0{;2FE57z*< zxxQ@vdbMaXKC^yz@l{%%)Z(%32=W8nv9KGjGjeO?cLVAE(fNQ+6FC&7Wh$V|&^P-C zf(3O(XwZe`8wYX9oAi>ltW9qvRsN9-dEsU$cDa1r{h7XSa=(=Gbi&c_yk|jDYH)+v z!EMpe>;DY8?F9{0qqPGFc?Y8Gi6C!g$M7NxZ8Idp`9jG-IavqRx+P7(T==`^ftq=|-=O^7`MW9!CIS8MxE- z_d)vO(d4MZ<;!akp*}355>`PavHQ<;`9~yY1K-ca^++R$B%ykPD1mt+1Bv9Lg)`j( zI5$eA5d#u>Xb#XTgDZy@?l~XiB6)7`lZ}O|=&#B`Q%4cglzk8HwU<#U(H2(*z(W+{ zK{TGS*|k$ol+ylUO{;Yr%hT0CRjbI@U+#_eK^h48lF^f)ULa=r@<6V}0EEN@2GVgv z=^Ru~z~z-X5zDSf#skA>cu^XVZkcpsT#y*x*$RJZY!ZOy?p8UrMVa-}!tJb;?^;Nakqq5V?y35Ko5 z?7xtvs&`wReq?2F;0z#R{mfA#%mXyw=fSZf1in9WFyOOvbkH1NPav*<&_Dp|)+eMgsqNFUT2g1KIfqI>5J5<(zjO(i+q$BN zciba_flxPysc=jXFmn5~Yg%-D+p%v%gVJpbtjTUbe)UKpn6|hZZWw_isdQ+3 zTmY>uw)oIx@Bsc)IVKMe4(jjn%jR`ir54zakj!=|1`>vv*%tfvf3L#|`gYJ|Reb%k zfkS0sAzov0YDuHtajftuN7{a`4bF8~=Xy09J~CKhsoOGB2_F$-zggb$s0)w%0yjlC z7TA0w9b!e`n}$GCpP6h5oEa*!QKhC_9X}|e6e%e=rC5BhEB;l?U%rsWFNWq(l5}zq zUDLtLBs57T&-)A*Cv-HFXTq(FNr(?LZrO`gd^_6V5D2U8hb!|tKf`w;hjiPZa+H6w zx>sjrpzGe9z(k+u8TZM@^qWlHr1!!%E*Nd_a+8V%jfxB7ze3}6!` zyCp+Ww?X+aR0?)F)?qwmH&SXThw~Cn(3>6BRPdd(w}z{R*L*U{9hT&LkZ7$qn|Ge; zU-{t1)^G2Rww&g=b3Qb~xWuZ%jktW?N7r}dswb(m8bSRbi%>>l%}aUjwYEK9dDA+x ztJa<9Cv@*y%5de*Sk*>axdUQ8F!*3s&9`?5m<~PIiCBr)Ll;8a zWW)h4esCPP5HcR_C$_W=*>@egTpJt0gZR|589$`P+zFy7`QoM$gt1{#e#J+vQ#?HU zWO+W5cQ3(B{uQ5a)tkkk>8_blaaVn5>c^wMC{Ny8M>h5WtfHgDqWMbQU|ET~a-f+q zt9I)S;%@~F=PoGK_C?hFp84`R1-kt*?q)qMSnVr!ai z6sCMu-vZ!~LZ&_!4e~#`6|nNqL=`m|wNf|@b(=8?VWI>rPC;Hg1{G3&)S z^Nv3eI~5>{O`P%RSLM4dozE*#1Hi=`MpNHI_Q9{-M>DLfQ=T&e>Sgy3XYr0>CdP&uY21ElFWIBReRvVyQVP*z&Z=JiT&Od6d<{y4gj&41?{6%nwwz8r4hd z_muSPt_f2$DOqPu{6mQ6mf6pKE9ELDsfM6=Zv`imqY6G3EmaXh<4-rhDndHe$IXqA zw+T$jiVLL<92I_Ip`=#k5*=*(V@;a@Gu)erOzg%p7V(ke7>oiG%*}l_Ub}*77mN}k zgRI+HrZjTLrTDGrLR0I|8`MOY)lj#Y_hvZ20m05>you0~}AsMHAT791qgL%rOL z*5w;Qcx?Sb3Z5wO6Y=b&zSekm#gktr9zWgUzI=C==(SJ0er76+XR4=WIcq~RNyc3V zRvNH|eu}{)xNjJC%@}tpTg6rk1|U_sim(KQ%|7Al)2K2DhvA{wQX!{Mm-dvgr{cS< z?r02K7@=Q>A)rHt2|>9lREvlqmg9&LxCFx;~H*>L?j#YLu_67*t!`EzTy;i3S1 z==a{R)^KHMizb<1j zJc48~pT14fBhHE@Sj%z2kx)4<;sTtdWrOCXs@%-NV2MS1=?0;@!nlf^&_S*m&ACWu zY?Qb9Xk*9H96<`E!nAq5u_G{}!f=;cMz*EwHBfdoa$ecHZ8a^1$?-JK2X5iEwB;Nb zNm4dx@cVu?rXYhgK?~2lDl7hvJ*>P)bGbf^7TYWoiG31}6}r}Bl}I3rI!6A7Dm!qN zywH2RjB!_q@st{BrGU`~Ei>^avr5o$*oU@!G=cFad;ii>zQRpYtumAFtJ!I#X-}!e zS5fJ|1Z?IgM1gt9>ICL0<_OSvRVFp>3D%Ab^N^aK3_(8J~ zW~(X3HEyzu{8`>fR+=CHyoSMVbt{<`;XV47Rje`!<56R38Em@+`&$Lt577y1i`NFO zzfJ2P)JU!q5UQbU3ffHwVduLUSDI8$1vFkr&5P*~iLSv&C$l5+ltv>h?A~fPC8@9| ztLMS}!&7Ii;kup`tTP_R+Pw$@&*mwaGb-s-F-82hlHEC51D}61V|+2>gt+_sscqK` z7jnGpR~w3k2F^|Sl_O$X=}f-eNM+GKg(9r!d-$0x)~}lm@jhHIU&#Zs+mPNz3JMOw zX)Sm%SQRXf*Vi-e!>jC9L7-3jDMo2ZD};}ps^}%`D8jbNWN`2de*AZE4N5(!+tEE$ z^GYTo{dPap=e(nUk;dIPqB9EN~nWdHQ$#x7APX%x*TjrUxS%?k+{ctDj0 zH4v((dsJ)J;$j?Gf6cQ}x<2+>%`$6F+D6f3-TYcCqAlP?Pv1}%*J<`_Y|-2DqlrUs zlNid0cNb2VF}A8Z6d5owyl9;1wwQEfJO?Vh9e+an+fg;sSO4Bl7E(Gp?nz8UT>g6- z)KcX3rH9G0osN4yQ5;@74(2~6xM9fcjm06NKqCWO<9_(pYWV3BFJ+MA=em4%7DzeiImB zwr(kXZd{la5*i!`(oLhN>x*pwlUiQ-f?#msp91A#T%f*RsX5h~c=v~{v<)izo|)tI zezY3aF=|QuvY%a@pN-dfO`1iY0{sl|4>e599OxmlpCeZa!PXcAwRVhxhI?dflSYPfFwc zAd_F^n+v34!E)yQ{zJZp4=0ibK4&T{O2S&5iNNjlNe4hK<9Ok}zA1<4cr zvO1~{{&0B7=ktpQ&Uo(ZTmgF2&#tvh9$1Ax zz#Q<{Y8%ObVT~_?%qQbfi}2HDhQ(w)T!V2+~k9ANS5&rma*7ABO!e&*Fo5r;nF8;u)4BRSmRE#(+-aCKTjeAf(BqV zAltlHNBsR#=th%oTsy>S-HZ#a6>*_$%<;GIdc7nO{TB6b`}I_F$W!V}YlFD{mhVa} zw$L!3DXOJ8`nd^HMN4?JvkNeh;^&HtO*8Ho8K*X4HIo} z?w`Kn>GVZ8dTT&iWlH#F)V3s*c+4t84t# zBDtHslL!D@2%ZhC5N0FZZ{v9b)g_YPmU!ci$2(aM@@KH-%b+7M+g+DdA8BdinukaL zZMQ93#WG8(cWne1L7i8A=o9LQ@%ghKIV7j7q5Hvb#KT9Mtij zsh(-U&b!7)dRtkKE|?kM8YPn0&0L3zi;jd1;eC53?OS3j?!@KnrSy@zJGZIVi?3Xz z&Twa(njvB-2R{-Ml>+tYdu<$?kOv;T=Jpvgrx+rV!VUR1tkr(X!C1U5l@uzk^ zOHIN%=D(s;YjB`pdl#$Jhw{34%j{kG8puF%yrPiu#)^LCspEIvRNmi9ic(r6y^3ZI z7JQv~e|oIuIbTbm#XrQ>QXcizxHHi9@s`sKt2Augk~#q3d|rDRaGSm!EYch?^y1hi zfH~Aw4HNRqLcAG??$9s zt)14!Us#nz2(Ss$@OUYQzL$KK&foZC-nd$_q6gn)sAQwp{d@k-RJdOt(ZfzNx#Py# zbgE-8jNE3(4TaNcI>L~KbY7<#-YI(Ol)S0txj4Tad`7`)Bf0$xD zucYg%=tKd&_R79z=+ng#PyuiiJ-IyCtRM0H(e#c@qNU2i?oYnG_}nu1zgms;mptDk zkBcP)P5>xw>R%tI`nHvRM#XLMg5kQMw=1i@hu(f2uk=FMJrU~Q0|4K zv++=v+bS+R*{@sUb6kklyFS8<{$0E&*-}b$8Wd(ckq*yX$w~34mczX~?TC>K{x)}Z z*?eT5pby*PHXrE_w|FOrCC*ghk##?OQrDh#CCM0I`xts9Z^{h)^s6m-OtLe;sUX<8 z9C&-LNpQj+8k-w(xRxJudbbGljc2q&-+NQ0^Lh?A`DmY?4tH%yl6O*`amM1sWVV-4 zHwe{g-IgXqrk_lRQYW=?J9M|rPSp66D<2|y-Z^pGeWZP--`A0UMqYFtYEX09j^4< z(ZKim5jgk$ce;UG_HV^F(&l#65}SkrD<3u0c*T3~AmY057gTlia2frZ%s)K|cjp;( zu*>k5UfaXt?cp%Sz4}*Y@Q!>J{<`wxrStDPoM08bzu9+Ts5|9@cy^IOq2rDQeYG8# zZC!s&ROJ)VpEt}~NhLqXBLVXz%1M8RCfMTLN)Gp$=Cf9$3UXX;YS$ycsbva!)}Hxl z&9tI$0e*A$+XcB-&`eF}L%nG|KB2##>pLWhwY!QW%Y;z-WnB^KlcWbrA%hDk&YPA) zSPHS;hCFuRap~Rx!QCLIWK^c;;NEa zs;n6vNuYh17y5Jz5!SFehOsewJR6_e(`;eX7=!4xnsN*&TgwOqPuR(&lwZ18_Fjy? z`V@Oa&m+44VWSh7Vo<;)aLw$j zWOPPxL#d^_(uersE4pUa?6tPoK{I)o8MzLqi>p2Aa;n+2mv5V1rOe{K&0f_YyIjjf zaYe}yN^P&QpP@`P>cIPNQ>jDJ;-83MRIs^QfZSs^`jX;?W;X|mR4xI)2-T@Ru9Ffo z32Z!nW#2|syc*|+M$DTT4Qs9S56RvxG%jZ+)01q$IjZKdB+zTlb41hd7N-p8?)$aug z(}Ku;QI>DRCwmz;7k2rq(q&QC)^9IWxB1WYQpV-^vjX=D8j@yJpp$Rt){08-Pt!Em z)Ga8ffj$4X@aU5MiH?2|t*g{m0e!UUc0;oDfH5OkM&9zpv50a}VoJ)1vl_fu$H(V+ zi|)uU?r`Y(d~H56%na=sj9M}F|IxstQTThFU1ytHla-)dyUqPkffTi|C*i36ayBE_ zRhxlkS*c%@Qq{aVS$yEN$ZseSF+w&9H{6<9t>; z-T1#LPWeZS7zh*K^iB94Fo$8g^Ywc+mzy44iu8KOxN0G9!sx25A4VAmYK$e^8-rpp zT{FC6k2u$QF*EFx7hCjS(%6P2QHF76Z*9#NSf2Z!sVJ;@{kJ)pC2b?K@D=XmlC&qb z@5$8oQcllT0y2{Rr>H5*40}_W*^ISYkPoE>i201??BA5hESB~U$So5HW~#q>x?@w_ z%~|_<%lpRIBD?X|3&`KUV6y7@@o=iSg>!Zp>J_$Dny~t*gVMgFp5^1DJ$W4Lyo8K} z^7cuYpeOxQy>G`>YyMQeeIQzx@6;2YB&-`v?42{8O4{+dImbkgexp<*PgjG ze|ANY@q?WEMsBH|hPP%YQL6F2q;mgaMrjv8wNux`QyW{xH>vwCx_&3EG_GTWf8M4x zj8(kUECM@tg_Cm(h3U$ABH`(4j9_{i^xRBSZPg<~HX`AfsnHgDEDQW&-AW+2nfew@ zuIzH$pBh!qS9x%~&_@dXrgK=Usq_JH_5E+6r?0_B0-IZJ!l$es4qRyQ5T(d*TAB@8 zI%S*8jO6|{PdKS#?!Vfe;c<)u_lwqgj65|WSd0`!c1 z709Rbl|v`1$k<58K$^3cHD#5dzgop8p^&K@GgX;|#l_C52A16B_-#p{D962J`M z$PpHR2cXQ~^4-Hai8Xe5^7-*XxC<@a-RgtsU%C#kVyQ-NxkujkKPHwprFxdgZvift zrvOhp+@AnUU`nyc%1I~0K=@6>w>-~qx-tv#S7W>_+P-G#9tqt67Qt9+tH}ah&HULZ zG#AEfR0*dI7-#x0kH1x_l^BQ4Nr`pqDck2t%PTpCa(OHZzs9BHyOyEDI|tqHH*+8@ zKzW)S_Xq^lK~ajX{h2q`hz*kGOIoChk)x|+$d=2BYObuV-M`R&3~0$8cijR_)4WVeD4L_( zcOAC)o%S5g5_2f#%cQR%T1@Rgp#omzzJoA^4I&D{ioa`n$h3-&z;_(*~n8SshWUsqlyJ(d}oxa+(`gH=Cl@D=%O+lDSm$tTVRVG(aeAsK1G z{{)O{^sr^Ble)j9@-=(Q+1xxZ$zFS|v0v9Nt7$9@&KpZn*5WN}qZ$T6-9aVm4L>o* zFglNug32#T&Cw{`GrmU}-cgdLav-viU2epg&7c}glxarrXB)lO%|bT^U)$Qnmz3oy zWkoUAceYKBMbQSkbq!nWl$1(#bF~sjvh6mTHriyqIzKVq!jbnK2j99qL&)AeM#@rN zVJ2Zi?w~8Mv0)8H>F14;fF+?bd11bl{57?l7>`n7*GzqK2e<8}*WrI8^w$dP)bVHN z{eE=axZ#VQ|1&Dp;D)TqTQa84p3;j@&i-uXzVPF_1RG~d=7px-_gs!am+X`AcdOuG zf=y^+8>i(x0!d5tE#_PyfKfKPZtGi~)vtXGQ=o2+l8M*vQju8fdq z3rXE;tLKWkcGrXTny&6RA;jMi79_MuDAaCM{a(xO^zS|Gt{=@!h8v3EqGZ?NxLl&| zY$T?m=*BX%6N`TU3g(zWsOF;v4FQ5)T>;hkmwf%vqE0HfjJSXy?w3z9QgwJp{L?k9 zBq8FHZ*fucHwA8wW zco>Qw!JFZx?liKK#<~{wlNUL4Bfn6fS)iMu|8ZoEb>8f!JD?RiGcakRe(HV7PXu5y~!>2n*eK3y7{ z&PbPiCV6pdx&{TvZe8J4zr$OuAgw#yjD$3pr2k1D*3Ou zq#Y33*708hU#^Wt-SGz1oF40QYQil6zN)DyR|xmvA}(|JVB<%ASxsHsl-!T>fuhfK zf!{j2JnyxncfS@Un#a6o@4k_i;Etf{gQVvu5ikr*d}D6_A!1I73!y)5I1a-asI03l zAavXe!vYwe=kq1L!W(BKlWB8OA$G^GHA}rsSvS?)<-|p&4Z}1$J%@}RRmwbW1pG(K%Tj}O+0tcMS5Ysa0j7Jp({6Km7dc*C*ly5UupM>fx=w&=;e zTG8|D^5SJTqOoLFCz0-Z7zbXf$PO17y#41m2s$mW9Wq?<=)|-GZsdCXd)dENom4uR zyFrt+3Zz^*qR;C(_V$q4*W7S}lKt^qst-vtp(jn1y6~R@DtESR?jmbN^WnX+4;#x? zrAnFbfgUegelg@1uWel!p8;*VH|j~!v(~Bkt*mtcZXc{Vn7a}%O}XM0s)eOGm}D8% zD=$Me*|h{M(}-5?ivC;Q!&gUDZ*>~ZxQVPQ%rYJ91k&7fM#!mo>glQe>Ks{Cw6CdK z$|vzBUN7q%wo$d!ovR+QDUWf_L(hf?>7XT_9I+iBo8q7WSp>Ut)?!Lw{^XCL2i;tD zE-rwPHR-@VcsKf_+bt02&Ca3Z^IuJIl8&kLwU^-5EZm(c7Ag88`PZjn_!-l1VMPv37l4Eu+Y9N(+%J zhBMwSR#TJ~G=EI0`z)(>Rc+f7!;BfJA1*U9L)6nXdbL+Qo%04_2pLtAt*qL)?YY;Lpi8r0)wV^^0RkaW7hJ zHw@-p6n3AS1Vq@gdUdwN1*2MbiOsMX8N)B_Y%wOMc$Il?XUeMw zw3fc5LED;=lAg||aW7O_d=e01eJ2!KYkI$`=^H4T=D)J>{Tkrr<}nL{uF)nTv|#47 zJP;oF8)<~4G-z~{WV^(ZDr9UxUYWmp#b#3J=?BlYVCXQuxYreC@Q_9;!#ty=)&UKc zuau(2NKH+s+RtBPe@NTW_6gQYJsZ|bm%k5072~hcMKNiF_As#jc;e1s*+t~s)Rt{R zYXaW#9CGJh%Tim!P2WJ1nFIsq>6L`*o4HDz#gVYs@piqBGVd<)9N?X%qN{WPtWrC- ziCQDXqq>u~1t31$A!o-n{ z(pGm-8ikYMT9zRgW~C_bTgRE<4KpI|2-Ov^b0@mvnaQ8@P*jz#b;`XfDEOkX zVgaaM4b!S_9upaPG0S(o$t+3~J3>y1(ryiI7Ea$Nj=T94|32Qvws1H-E@VM6I(nsa zU}`Ns1S+PU-lmmF$qQPVcG|y2hs1l+Z**)Qbn9}%5Xob@PGBvI9)vpoy zM)Jp@C#uJZvLeK&JFV*}i#FMsxmJ;}e|%Y)9>~s%QZnbcvRzBL>$)sTi}k#hj-IVc=_oscNompmv~q{AJ$8EHSnN$GF-9 z!+oXT>g(kOP6%wcDXl!4huRpA>TVt<=2iFkksWZz-%Q%4rQo4-%W_?xm`}vkq5LiR zP(qt`g!e4Z=95MOPPh6I+dS$@?{xr9ygYef6qB0n`P81k(@X_1#la4!2gaWaeQD2m zmz4_TZ^(8Tp2&9xC~A?(7)uFg+;;p4F}=6I?wh|b7eIOcgZuc6fdPB_R`3*6{c%rt zX3OZ5eXz8ur^*&?M*~XN@WED!cQWhyRE{LhMk3mz&SUU%%yy6Y+o?3Nlyo7f5X4KmrRdrTuP}IOZShiAPx75gW z+WoXum`YQ4dD`{f8C*497OjJ=Um6rDk<-dXNHqpr~Oh`~YQ27$Fl4I2tM+BVb zxRJn4(WT`59sF7A=VOe><4Sc0*cc&!mD?v_>{P737g&>%;Zk4w2LAfu&}V1r%+G;A z(R4V0rdED41B-}?1$&m&T&v!2)n%TL^P=%Xfi4Q$PgE2&)I|29#lE0tHDA$(E249A`cHQn)ClUTD(cjpK%SuSEi$)0FhT z$^T)+d;;qGL)f`%mMQAw`_xA{PE9xNSx3fse+yOx8xt2dD~6;j-Zf;!VP2}qN2J-j z%Al&qrecWKe5W@ngf2Sgt<7)FJzp4wfqAYNfSr|d)@Z)RA4#xP=4p_5R_hd>tn58i zJ54A+1>!jc9_zy;)*{PBpr5YPq;*m18x%;MvSxQ_5uT}b2HeRxx8w~NAf^N61k0Vj|-jG40Z+$kacLVFx$sX zd?|Ybk9-iUp?D_@dxzMS6T_-He49NAvh6m5b;#d#hxZwucX%#oh?PA;gAy$=3{n@#VUi5Qfo?$A7sj&SG+ zXm!qk|9HuEKfDtoN}Go`{ood@(!ew;|LA>VmI>h~urKg+n%^XuV&-MJ^Y(h@A*knN zA!T{KY$BKXd%3A*;;MRYaTSP|S!BqFrO7|bO2N_FYazz0C~~hsY-F&7OBu48>ams# zKHBE|W|8QAtELWo_KlTkIMgI(z3^((EuwxDt47b5WAp4MY>iT8acs} zQs2`H;`gMItc}X^+|9Y1f-0~jckZ6;apEb994ABnI9R67u#Ok+;^=ek(6OHHw)2n^XQo{8TNM5GKS(%-QMr81(v7NXe;6= z#M2saV0Xu8x+DAax@s*|(b~?#YjaP^?7BvGcJubt%CE)G$v7daRTN#yIj3HziiFz- zOt1zg?~SijsdtX=<&F)4&S7?lk^!1@B_pGwiz?GG zpb6uqP&3YlXaJj?t2AQq8WmaVm)pDRt3}`5RL+}>tH#M1&yDTqU3z96g-lNC+a-$j zI*7KkpBTjQiQdCD8!kWAonOfbzLeK*sb4qps#9-rjOs`zxe=gxtEcH6=cc;(6Bfs8 zEh~~DKXnfGrZ|qaFe#k2ieoem30X-k@NRU_kg$_?)pfZkk+hop&c6d2Q#siIB-ZCUFWGL2ZLTw-~S3^$} z2AqB~0?5Dl@vE}w>{U-;&aYq@(+ED&(ljAq)%iy9G9Y&AK3kmBJ=n70?G^84`ltN) zS-x8AVkf6WJPGCoAI}aoQXJJ}`INM6PF@%jmv#zUy47VdYC3D3Kkm1a7cr6J+B!6I z(289wdn9wP_5Z9IkGWEQ7KO<%_pAz(3SV%tOxBTb@%g>QjCoV)t)pH5_6UgVS2^p0FCwKBfCKcwLe)_rae_3J|IM=7T`$DHQ z>AEaDu}_jq-MnmKs2yc{=~pYxl7bNh{BnSU!`2fe+URFe=JxWL^%S80W?D)--KWn4 z?DjKl$7J}kVD=~btQDbRGA`}?ZL3;!8hJ_6Eo})MH*+MT2kQ<<65nb??dZD#hT}TR z$zQ2Ob*74T+T_J6YZB7lel1NA#iO-O6snACJ~B7$+65aOoa5VF!_6i7RGZUU?D;}6 z8!8<;H4tnveI#oYjZ4qjdD->@PrpI0dsw;rjZ_p@nP2)usJydsXW!FjJVPqOr0R7R z&qwpgsx;%cO#Q$#FYKHzu|wL>F>e^UD>fsjgtOtBFF()->*?x>0CR2kS2fz36s5%h z6IGeCBm-!;6`YN0`W0$x+g*QqPH{T6E*F6{1PqzYiy0q>uFj{Rn#GSdY(kX5^h47e zUK)eVLbjTBg2I~(-r5pwJonRKfIVqKxkwF~!kDMS?|r~_ej8kXF~9z3`aVmnrLzf~+C`u@zG!;QFs&qmZ5#@^6KiUkfAI&3X10tn0WyIg0h@B zQFnFST&oLVd)+rd-Q>7M#8B6x?_sg~evKBuc(C7X{%JQxe}JydsO%2*ne=)UTwEY$ zlWfrKN!ih~5$I8L!yVroFTX&`jxMmEj`$;w`F(sK1+xonUa9WB{O_jz;_KJXz?1or zd6<(;J6WeKOrsEv4=b-T5Q3F$xJCWgtw;=P(7l2$Qn}m%-BSUbQ zw*cVsY&WhIsu*(v>a3r@&w!@9J{kQJ=&cP`i%(mTi1VX0!|oBL%KqcV%Th*m=FKL* z05_gD{3KAT(#|S9viqBOkJ45_U5k{78F(uZ4xAu7`Fxk}9KgnRvoV-lqcET8gWVu$ z@J;F=Hw9j#+aK4q)Z+T8`HTr!m&&O*rUgHz%H^U7E666acTr%u;JMmGuOM-y0T22D zh4OPnijAf-w_-@%tjFA5WmE3)5^j8tk=f900h)!7a94OuiY=XnpL`6(zVt- zHryqzw+Yz`=hmMA>%HmCXKRdFgIuv>ZWih&L2zaf0ILcCIV^RD-f<-5vLtg|GI_nc za`E;9Al*!gqCa`&Z(D;s^^rUcbWRiEl>@G4>H2YbiNJPWXqaCkq2r=suFU;6?mG|D zm<-}-Q+GxZdvJrGv@?D!m?J%}vht{9rX;JdH+h(<3zGJ0#PvtKNJYqN!ALvDr`5XI zun$+S|I^)rQ%ynRultGZtatf);wez=7TkMn^jMz62Ya)gmCaAsnzW=%$cFh9(`*xx z`C&jzESPOLi9KRb;dXPaZ#R0S6VDSe(fE&F@QvSiE$IB?z$2*5{_W_O@-O7mE0bMzmWlcjsx3v%MH-bd5_V{|cPy2{ zE5NbF6GH6k1d1^j;`pUVGI6WasX3Qr^cyWkx`@*>d`85A8$yMI@&V7?;SNIV-P~p)8-0e=J`_Mi{y> zM0yAEG)JWf)3%!TRCc2iek*B<0Ya++{~k$@)@>4_T;l;gpKh@EqkWp<1jC$kDj%d!e4RpJ4;_p3RxU#4KdEkxrqI^48zo(`hoWkM*`1RR7+)l@r%bcz&bGi?5qq|c}| z`!JGr3@%cC6uqxds*VVj^7BAd>gn_O(jD4(^iy85HXkefCi20BOG-h$F9r+%1=SNz zSFHTX15`~T*fbN-N|GVT%{f=7l&kBkU{oz91lj!lZ&eG-Mub3TIqDnh}oYk1h(7 zFS`jbQts`6MB{nX-W}XEstQ-cFBk>&e#QC$!l~>{a{nX-u_@0b?Wp1FuW%N}v^0sE za{m#+KoIU%>Pl6@_;nfl1vemSK;_MInE?uQa&Wnj6vc6L8K9Cs!ADbMWqY&jWX

k0E#XG){*zBTuVk=~6RN<54mLO@N2lL~2|x+g2Px5X9VLsYBNoMPd2@udQe6 z-`fwVKL=9XYPAq%2)89HzT=ks@9hHA3&qF3oep3p%$d=YAQ6^v(P(%Zo;xG>^hB>r zRKEeoxs!ttlw$d}jc zfIa^JuD3Cx6BXGKB@g3JB+q#R^-xO@YP}M%bdl#V0<5UA2phQdH=y9Vx-$ogDhpzA zFEulsSoXlH6c21H9fw{le6m!KQ89<414DE`#&4!_O*RUdAXm1&}ZR= zH&Bi@RgaYsm!WhACyczco{n> zj)jDvBIipfwr0#8gq?QXmeorI{v-yI+?CM%b$#czgfgnp_4avemZ^)YI+3f>bQxnc zv-2D-ZshR(^qc8dt`YMKfa!&GjvfGuSIN)K@T$kqXJXSUegL3VQEMra>8fzv)9LQILpoE zv|)$nCBEIYCUERzm<7L`k`r{aMX-1bI6#c}@=agc%N?k{L+)RGs?c_E^0mSDC+$K+ z+6S=awi3;aU8VE0FIJ1pm#<(tlYIdk0p7&9Z17<`7JZ2SuGXioo2FRa7DbAsSJ^=% z_dgrfSWsw*?u@dNgBT!MUo8*U``D$-(_5E6#*Y1kKI%>APlj?nE0-YuK!?eq=tQTz z^(8ddvHr95rkTG*rqr0UF52xUr1#0_860#`ItXp#0y-raw?&NFMvlC{K; zn5OUQ5So9+mS`nr7IMH-+vDu0gX2;%`~e#{Ev%jB1SZQgpEUElpL268ZhH&LS_V|S zUYC5`Jg;!u#8KbA3VIX@+-j263&{Xc`^sDrh#0N& zuNw~f19}_@E)4`>X=B?W{u4_$+DZ*IC}f;ewG?xSOmI4(06>HB2e+j^n?EIKax7M6@PgQcLJ%JJ?eXWnJ63pk0g3o^sv=h97tmYo8`(SSPN#s{Q>FCa zW1JbpXw((A+hZ3Srix`fsA;Xr#q2ur_EV81*bXv5_*eH_dU6ud*=D5jjXMSad@^G2 zOaT2p={))Kz;#A>PJsfi9KDyfQ%n|dWhc)YZFtXk9P#F1=uDRHjpb<77lIp`mR!06 zLRF?rwMf}X8B?jQ-x*nI1E2y`2=aB@9$@n}brm7{_K7rMic&!@W8(A`1La{Z)2nIU z74vi7YCA(JgKvPRfOQ9n-dA#Sv?7o~Y%ZnkI`MM<8*>AQYZeC<;^^3K9yC}zQ%24X z(LK==Q3cc-MZl%Ok}k;@46?ESk)otslh;eU3%d0k7#eiio5;W87)D^X(8}e}7foIp z>^syLClSJ-#_SjCm^7Z6;bm-Y@0vkQP|%Pyw651m%4lqGZO_x0=EQlr^venTCmPdVs*7J~4*?OL^Y zS_<*K2Z5>9%^4}Zlj^w)#X23oxTS8$WT@l0Nr=rb-up;>-I;B+Gv|})RItu3=|(WN zK-jL`7kOQ?+NuND8%e$fe~2JWG?5UVUS3rkYQdl5nNwXZ{3vzbwr?)%6=;5>=NyfP zzfc-MSVP){8C_4*&|)6@_^dTRd!^u2{u4+BAVr-2S3 zV9>e-y3g9_rP8yfz~)V2Gd=w_)*r_Ix!Sw;_?pq=w~8%b=x`HI{gK`hr6ABh zr)E_!KR@p!(0JsSmW2TqPRjko00$-LL~Kxwl(X2=4$X!D@Byup7A2~GuyNhpzD$$w zzMTTyE7~B0Yk>R3hi3F3P_%o3_xtW{uLjqJ4<3~b{8EOc$>R?dU`w5oArwM+wRz- ze)~f+WYz=;ie38IU?(&t+iEo=)o%YDc5!6sy~6gATlz-+@)FmD8%``}zBiGTWQSx2 zoLiV72F?BhtdM}!mW@XGnxD$1KMCy4*BNuaa0i&d}|u_ghGY;XV=i~@725QQvzfI)m-{% z9%chHFqb8bc%feM{b=s1O^SS{Z_P1Yb*p=iyhz`>ub@DK@{`ST9?EW6>bVy_>nQ+U z^UExKNz0MMeH|6zegYgFdc&ZPW^3U@ zEvbT-_7IlX+hKC*Dagf*Mpl>BI>SY-;}<2=C$z<0KbX-tc5&ETZprv(KbrC!tK{ zzK$WRX=?MQIWzLn(loqDG3=OUg7wRuN6;tiYW=yWvMZ?0(Xp}l#;C{~N_&zfJgPo8 zBf;NCTzA#(ADK4>x4j<4x*brRuPd9(aA zcFfY~xLb@h9w59fw?VD)Q!~`N)8UA2howGda+_@%sf9TQ{u2|aa2=%=FXx(hOu4`& zw(jDY9^k3VzZz3b56j&npLXdDh}NpIk-hbDO~+O5Tfh7`7bOV8*Fc)Qc60B5cZ>IbgLd z*??;_W*w@c79gwNIU9PC8aX6vST0(+M^7*yR_SK}dq zdZ3Yn;CO4OpFP<%DR+b%^s27Pea;}II1%I#ujfDASYPjCcnfK
k-t(UzT^{ex37Y=o+l>g{0CqmQANiC)P&hwHvk}1RfK1$wv*oO9_PWQ zVLDknSRwP$RK+{TN1`L+Go}Z676?WC>*x9Jf<)`5rk(Q=otb%5lNRF~n9^xcr*2p> zde!c8*F$=^M-HEEf_Z=}KD?uklv(G!L;xw;KwSRgt*I;isKvroua=ej?+Zp$_Ue3V zaS(BXdqnlBas_q6xtDSu*aEiJ6JwOgl7V7SX9!^^eD$`|`SzUghfBJ~yW@ ztzIm=2Y?Z7Re1B{fZJ9vv+*Jhka=5sYWMZE(HnU4t6?W zpKcTK6Bzgf*Y!($JnAN{0+!PPcAb8xDerDAH8>2_@}GhrxiBuXYR5FQrg_nwVl1w$ zo2M_!{cy&IeSuzQnvd?nFXJWwAjMm6!Xav|S${JH2Pu*)cygR-dVZ!!&n88HU&{8t zXFfw@_C-fdXVG9a*I$JPY`oQ#`U1}R(VBA zV_A8ZJzIQzGKEQtbtP*Anxo`t3yYvqQUtCW3bhnnMiuhq`T50zl}-Af2bNXGoO}>h z{1eH(Q2FmM3Q*cL`kB_Kuh7(}_e4ox=?AR;7+UoMnh`rHKn6wGD)4-wavmn<{OZwb z^$~bj?z!!s)Nhug#}|{!#`l1i<(kNNEF`9Ri*DxplisU2N0+oiMdBolc5Fig4 znI~i)@W!V9Q^ciN%%9_dxXs7uKGk~i`t{IhD$%UdKENvn#nJDh@1nzCg3mZ8c|%wg zW%3cmU5pTl@pDkyuN9NSa)v?p&hadFU``P(B}OGS>Pt5XF5t=SMFLPa+;o{h(-j)G zK+wUfpa7WDbXq#yY0>#)D5xXjso9xZA@hs$Kq_Ateuq#-dIazbP@PBw(YGu>D!3<{{t*Cc_~z|6T;78d!&#R5%r) zKGpBgQ8=|WjPqdWGVm^=Kc*9$AHE^e+E6)L!0ID}+lhgoUiiWD$B!TG__9xO$m7D@ z8!TS83v!+>SURnHzrt<}=BlQK6&Qe)DCLrB*b3uZz6cR$NucCmNGY_ZTLQCk^E zjKn?0!k3`U!MDR&1p74aU9z(mY3ub5)<2EKfb1voA4#r>Vv(F!dd3E_8m{TVe|+YV z&iC6Yd_e97av)*yI}SC)>t1X?pxhrjq`u?`U$AYnehHSvYj59B$Y3-j@K8)3iYHqp zvRu%dDV;)ZV{`HOt=Tk9qxXfCePS|_ZYs-1=#Rxx8ll%SiIdpN+dq(j+pC%?5h9dF zTHWV=Yy%}X?^4fKq^%2kO-{vGt2~^ogBWjs{!b;yeXa`EHGpnir(SeZ!h)>e@#x;8 zFyR5VLU#w#2Ve95*xBCv+})X`GM2?4k>oFKSv{ZxJSv_!JFe7(IH9rPj9LcVq8SfL zwL5xgz*xUGOw8jm;1X7H)mTV?T1FQbd^Tt>YQdJ40WT%L$&=XV5d% z^ePG5)fJ2B&(6YZKU=B?-sos_l;l!O5C`l3={cI4&tIkxgr~hi$OmEj&o9Vy5Qv=z zg5qhRL)I@td4~_G17Mp}ayB|Dy8c4;)_Z|u|E8=gg~?bV+-R%{c+U?~m_?1a3^A!DdEmn6 z;L%Y-VvqF`nbx0R!HLBS!q5rby!Cs| zoq#nJJ498`gWvC>^V>Lg)|ym2lW_Ve`bgWdH!FawL3t!ULlJSF^vSQGHm^q>6`jub zI5f-Cuf5;fmEajFtInwRoz6Ld0Md!R?poi`)i->~J`Yd(O+EV86B-hL2Qlk%YzNF6 z_lPK&N=TiK;M8rb@?M($n)btDiGmI4|Nhtu96n#`*#j!*0(@i5iEqocm1Z zyb4YG@HT z!t~un&`-hH{Tl!-9^eW-14JXQ@2*n#_!RbyGsn(scADVHNiU=riAc@*{ZMRM`52@j zm*pO_^&m&>Hi*H~n`OnYxC4`PR>|IzDFh7=Ydlg>LkTH!F6ClUAbQH<5bNDxq|f}K zLDQ{>vmRPrAWt}AQcg#t@iO5qq_PJ>{F=j&@G(&6e$y;azymj?8tEd=^G#SJ2}i+AS+b?G5}62Pg-jRx-Z&9p-@5Vx*fLg8i%Im!2%De( zZk+vKk{Tp@=}!!s=Ij5N zl*?8zFg;RLS2q^h?5$sQ))ScIx*!s5%T4=hv^pg7i7T2rK4{x_m*&U^pXo}!p?#Qb z-Tr52U2?3h2a_b?cub<26WVl%21g{(APMXlR0vP3M-ad$V2=+@-SL*Q1bG+x-@Ho< zII$f932qjKKgl^LPCaO-F^isai^+V_G47li>Jqx{fkh=yVNaLnfNdJZH{>t z$2^0xe%Vd~&Ul{*gteGyT))Bbd^4^i8-JQD!!eQRT;zA^7zDN&t&)e#MQIgGV7?FL z<3V>3k!*_zx9O-rR0_&}M7pwY1Q=Ec#%=rwYrT}$rf+ZR4Z%#C&cMlruPmh-$2S*M3>@{x#stU-5E8f(&>^-NWV5!;n-0r!HKyw|$JQLBe1tnwN ztNsc?V+p(RTDmPxlkw~$x?`eYebWeVC?GIW=fG)d$kxeqOSeF#Ik$Yy`em{Zz954@ z6=gAK#-!YJMq*hpwHSQH30w1E5P=#ya0`J$v<7l6%WWNag)_c?F;Pe>DK8$@6i3yC zvc16j8|lqRNc}83D60vH>wY@hGNb>v>pUhKka^RUe-W2$z*+SHA0 zlg=?`_iQ820b5YwmA#6)P!n9t&0>b^kI|G1x=Gw>&b>`I*nYfsTjMZTaCa;Gcm2u* ziL!_GEgAF%SaH9u5G1cqPvCB8ai?J3*J(Z#An=SBJYvP}!~`Ck?26%ONOpy0NJEH} zK&OM>6>E6%aD_OLz>FVsNCQpv1{OggT}61>WBDNbSa}qeJp3Oz&!7RA-NA3WO(w7P zrtMH9c`F3}aMh43+{v3Bs#LZ8r71t?WHr!;h1Ah&P-8T4DYj4(a=yO^(8f`V3oV%d z%Ap%$AJ_|S^=RNVd9sB$nX`D-A(Ty){6q)!LUW=Gd9V&wHgqjpCM`n_RZ5a(v_DX%am2-8^RmWsWgxb!(5AvHhKf>~c0|FG+?)#aJeDcbBs$yx zCEOQF>DS{LLLjqaw<<&epYsZ>OeZu+&^QG8IS|T0T9Mdu{3c|MGCS7PaK*yR-$P3M zc&!SZ95ydxB}ET9e&OjMh8?1yi93<@6MY*Jbf^yaVs?%{6UIEN+j~IPonY&L=yY+G z9wx!_N$)P_w zB4gwpuJnsPN|zN>^=1};8Sv{f%bdF@SBzAJ{&^{#t+CgCcGZTmols>E84wrO{WqHmNuNxXWKkN)M2F)l8y>n94^4j(*)I@N8%NPgf;q?Xln2kQ1NseTv0oSYW9RmL(U*JTG(la&G&)(|qS`%o(=55fR9g0kYZvIw<7AG^JmJ-f zK7dbCm&vzhGSye2^Y4G1eH|Py(;0=hZI?Tw+W9VXvHoWHg;!FV@KPn1!zJ zs0t!zvCM(4Zme1uB?glT^vOr=^P@_bH)fIZb|FV!`plzezKU=JthkVAR}uMakg{0- zBv^zE1@E?pZL&gWGB?%?sWKoi%YWaYyI0d+^oDVv9#M8Y>zK7jY zr{iQoQAW&!96=vR*qN*Sg5$=}CWn7KfT=$y5HOFkEygaJ@@aniZLT`0g{k4G0|*>q zyPVz_gvHtl=U~m{NB?k1r$*iaHB{3>w|2Ar*G4O_*=DcX{k^~JuOokevIaQ+323%( z_L7$BALB|8S~R8v%$t!(VdU`XyF}S*4M5`5fd{Z2VBpC-aJFUCfoDz(rN+cJ>JhXO zhG)H>N-c;(J0^35G;ss{=??8FXb{M(X((E5)C4SBeHeExzSpN8#*!|lSt2E2NM;aK z4FFd^`IVl-P_jHP)zqpu7aD4$NM(N^;E=AM+wx&ou>XjbN|096%6CqT!@A#@kfvAj zCV88j>s#?Wk;9iRI*CXH^{2`c@3rGQvp@S>@fT5eJ0sV4&}Icsd>MZKI5Mr zd$FwkF(`1Jqj*6Ug%-?ZVSD3?o=djtb%vXq*1j2{E@+*|A$q5GU<=IT@!B%_9*mP* zt(vc;5rk(nPyxNDeTATsuyP-nrZ^_`BaxeF(}3$+Kz~4Q1S!HCm0xi?Ng z+XNw-G}4*aC7jK_Yp@VMO~N=dO`iww)M;?s{Csff83ig^QuC=`xOv z;N}4w#*-FJ)usdT&gk%_`x@$QeC4E1{GXZ*bec%5~_IfYxQ$1%9K!ExzX zfrMB&ksHMq?cBoO0ap4u4I9FIo^AMrE%YYX>E3U{EiO;or>%JS#bUaRIvN0EU+3|OkkY2Z#CchtM&@x&q4DxyInY*$F5;a80PsF;%R zsFxFmoSD8AHMx9P$^c-1h-8SU^>--;D$`j(_bH(GM3j5VA0hV#VGpK?ve9_XgA2Nz zg5nY-7L1;{7`OaW@x(li zOY|0B#~qa1t*7t9uLjK@Zc@;}G07Z+VD-44F46ZTJrBqAQPGKBS~CTbU>b#&Kr!t8 z2#;B@OQc76pk?QsSz6}e zAsedAm~1=oFu9lD{t26Upi7Vt)y~n<5hI6U1|Au#n2{#x8fEaYA z%O$Vl_yClJ*#6MZiRS*?%TsKiHR`?zNPncp6SBzu+HAb+b)jbVFETxpEwE)t2GcK~ z5%MTy5*trG8$Y)e>KUf<)x`AYDA30^M*`@=OtYl+((tg`w!RxHhS45Cx@OrQaI~2A z<765SHW%SWih-XH<)iw;8R_LUE`ox}R56qx8 zUGR`qCH&Ai8*@B;Q8BRM2?XCULjORO$@6 zsDlrezul4DPv$qDM^{_@BOqHtabZfjE8YAD$I&{1HN!BT(j%35ORl^F%1uQ7d4u!U zZ(vb!I!bqjwsuH*fjo6l4kY;lT0mSU!!{$#68l1)PtDpFY^1@yW|N9W1py8j#Dxxf zJVU~;-Uf1vOpPThk@tHLH0nyll>mNsb=Oq@bNs17w$Q|Vcys$5)xuVLam*RNSdRdx z)hWAVS8v6ca}#dP@R*`6^izc6bZ`KFAM*?GUr*p-)EHsNgRKs4ZP1j>`U&)>hV>G2gcDJ?Fq%OU#fceNQuJ}&I1yw%L5d6lLG zizn7X-p0J(R^&%tJnD61td}P|5CK%<*_jw<~JRPqbjhRHxH?v8B(A- zIe$(D#mcD^p?M^qFk3(xHiZLJUJ*8(<(W`*jT-4yq-*YC1)%EGJlMd#9Wb!c(In|Ji!uw*Vy%>^n{8j*~^`^e@ z3@)Ei^_^B>X0~v#eu(@wcqrJ4I6L~cJyiO;>PSMh49#u=g>wd_0q*Vv4cu`wSBTq) zW)dX(jUl*SQ`iEOHn9DkB?vPdfg*!1Ihl=JJE-@SPJYGSL8%K6SH0t_lqSi z=jOnBtKE(MzEDOMi8pNPoj#J~);J0aex_xZ#wdWXLb;_qZuV6Dpjl(V9ZwN?UqHBw zxlgxPLuwFLSL=3tKd}SCNL{B3SUX*dUH&`RrUEyorTd|H%(2i!dTS5_ImI)tNad?r77BvCZ+9_D=};kDq6AC3XqepbcGMS)1ymc?zf63ng| z*#NbB=@a}1SF|~CW~{)X3bt8TOO5mMKSw(y)|n|nWtPv@vahvLTRT&zL>?!ZYFWJB zidnsnBfGD#)Vq~FbTlKWjCB3&H#`D``_ph{tEv92`3$=YodyjBugmza=sH?x+Frxu zQx~)5LAm9DFP8WIC(V0q`j?SzYVuQ~FzxzEfyi8fw}cc)e0Fx(RqOM8aCDN4zJIKM zt;D#eNMOlt$3nM_dHRxvrgOU2bQjS0E~f7Qu350& z>V?HG;XqcPD7YRD(iD5ce#UIJzP7bA<~f1XXY%pL{7;i6ah>dH^cIG3!y^TWEKYWn zgv}MqG_^M-r4}n~h(Gm`mDE zVo3-zwR&S?5{!lclAe(`j!TH+$zunsVgp~W)ZrrXeajEJ%U!ZHRxPB~*2YdmVmk9{ z%FPSRZPyGZ6_w_ayU}M;qC#85eojoD)>%pI{}b-z)vG%O0Mb?X~+v)r(tC8Oh;T~3?E z_j=_-_l~?YE3N54fsP_5|6T8+*MU*=O^?=UJ6@j`U7{1%r-gARRNaxLn6B;6C=7nJ zWpy3ElzHaIM`YfjH26&_e%Aum&wkbLaf7b3Y7*`~CI46Zy7DOrUon!EbZXZFmsY43 zm7*I(>#q1w0Qs_w{2{{e&)>nj&h(KZ&4M^516_%C09JfBAd1DoW5w)jrvVU_q_XaJ zdvkNsf~ctE1Ezf?Ma#(8WiALl;n8y32_5Qw!BfSl8|q5@xcUb(kK??rqY4FHme#brU?l+>g+XM8qAW@kPDYfEZ)Ls&(i1`8Z5+ptbX*eo;Ek zRX;MtRd`eQE{Ty(@nN@}-x$HXO;7@VQ_WpfA->z%sB${CJCPzHF!Lb_?4s@PsnccZ-ge>ei-Y%v&kuYp@ZY96;TRVcdbQn$ z*vgBtvJVr+b79Np#wv1^jw#Ips|_qHqHD^$b1fe09o==lNjRyQLFaNuJGn#t)%}-7 z8LY$Ivf*Wp60L+eJmn-Fs~K*qA*?!GB)}BRYly4^#kcuVX-+(Z@Y*mX3Ns?#FH#|> zefw6Pg1rd#CRJIJ78F$P}q{%56h3~^EtWk*<6D8TEE|%HaRg^Oy|_gZ}R?&3MI4OOM6a~l)}sZtTmZWr4QX~wbsR{t#Z=wSox$T z+0Tk{!43k}Nd2)ajne1sb!Tj6D2hV|?v2+nQj=1j!8vJM zH&Huab@Tm2DP1(rj$wEMVa9R#*+>XZZQ%CuigsJDF;Ip0a?a?5U}(xF>IXR`0z(mE z`;xI8NREN4aem@Mla@Yto9qxLs}Rhw)xS=s=`~|s_3FjBTVRq$F!zO}=-rf#SL+^N zFg1q3xT!_3F}SZ7wsx6yR(Uw6)g^F0N)fEAp?e||;}m#GOe!;3he;HvAO9`GIk zJ%okF^0CZ=$!&wI#>0gpX>GgPW4pcsKjZ}f8JJtDR`6QE&9|zJ12W&T2ED#d=r<09 zRuH-Pq;~-&*F!5h{b>eQ*%)lKa?@htXpv;N4atgNGz_6=iah}Oy#~x%q;K;_p6@YW zhUC`;a@iZi29$(H6{+7x;xp0_aSHVLf|(Q%=o5SGTaBGQam1(VqtpX7Q$l0&OsrkG zwH*m52M*b>@@+hhop+hOg?Uo90%i)oo=7`T2&4}>ZZ&WFAF*9nOzEtUIY1;45wer> z315B1t#{ly`o0c9Z4H0xX*-jyB!=jBi9P5zWlcny(;QsPR2Npv!EkX03dCn`GnRo^ zZWaxXKv9!kXC@hJ)aNB2-}Y(rM8?A3Xbmz&tuBHLE;BE-OV(dkRjNl@YX7=&j57IZ z+LFQOEiIyI*Lm(lY-k-2CTck8=^%7)321I#H}T!=d4H9yO#;V4>}o9Y`=|~-ltXIk zCS+P<$%gNJzv`G?LJthBQO%in(gN;yr(I835Cv)d@2Cc z$69?-`O<)9v~hW*i$cl_dV`=3rD|5s4vd-fC9^Vm#|s2&6R3#n!k3{bXX1B3`ovl} zomQlvQlZ{#qBKQ&9{M@ac=1v2*@*M~11wh5`VE%~*zWMyPT8;Z!GcpWYdRvr*cU_R z2&LkFNaDWAB~xH3=M+UgC*dkK-z5mSY=Z={uwj+uyS=Niv>du>o)^*<+5Ls{ouSxo z(t}62@M0M2zjw60n5F(Mrg+@<4TA|bJ}iMH1UVFads98bD1#HF(9t;T40}p}`AwGS zFwW`Y?_?Vyv|&Z|(H^PHX@p2zP|23X`i~xK)7L8TW>DoB9?fS%u(a1BU(L&G*c>xl zH!y}*mcu01Hwi}rp$5I*qSOS=&*vFVP&c*3go*g-a-*@l=pEhwJerp}xNE_3IT4gp z-5#y_YJ!ODi>w#YCL-f_MrEjvj|Y%NO)s<$EP@96J3gOJR>ta$-;=f0J(4oq6V)~z z%h*1*Tp=u5|C8G~5_vQ~IZYr9&R1JDcP>8z{p{P=@W^DUYPd$o{KzMygso<{#;or< zKkep$w-nrAxtbr+x0@|Pir&S8eR!*itjno=yge%E*oH%79NbafYa^(nHt|9o zA>%gy+UnMSE~n}4Y;P(1!|Hx>X930T`LW*QHX_b{acD87rKoEPK;lquK03t#6X1Xh zw*Cml56GMhAI$G{tM-k@2Wu|(*eSb1s6G1}BU;yArGfsmvQFnm=O73q)CTaEC)~fs z06A(nEcFdysF_?1$#=62O!008NhSjJuP^x0>e_qnlKiJ zf2Vou?C_-RjNaN={iN`wj?gs|Gd44NOSxd@taf;wH9CFena|xHj~8>j+)|JLy=_bQ zHY!kG>@4PFn0zS>7*J0^bY zR?;D9_Iq2JC2lmqo~^5iX+ejgzfCD+l_AyG62G*@!OdLTybFWwhf~LLGiBa0VkFgp zEegutf49)+OtB8i!(vSw!&3K;^0Gs-ZN;*;=eI%xjk7Jzg9`fQF!rx18nsK?4?$xR zvjG|M@!x!~;5#v%D1C3|q$75@znpQqT%cdeJE1|JZ$vUCREa)FWo2XS)5f{9o1{4; zGiho|vmWWM%K^YjW62Cd^8bA#?6#s2y z!WIl~)Tr2CjgQkTay!YGbjus5&TIXi_{tnyT=iLq0lTzW_?cw{ycEo-j1&NObEN`_wPu`$F@3jO2S8>WQ8+xd?r&QWx=g zqRr>~;O2JBx5Zu=i+a7v!lI6jPx-)$X*@g3v#8IdoQ39 zKrScA9-C0*bA_W?)`0h5cPqe~>ZtW*SGlNO?iNZaXN0gSOTOWqw}=IXpR1Tm2t_2b ze^(wPKnkRG1nOxY4}(#!5TP_ap)hsd0KF?=xxPzH!|-#1=1D5Oy9!xQmr6LI4d`ms zSs2fl!Q9vfe=L%)73`>&6X4d#vwx;IG0IB>g-V}U>iM8Jsn{bc!q=aZtnhVi*Dq;l z2w0x6b0<&*-|gR5*otS?<(2$Uku=|oEN~83(M-RId-UfB@Y{xF1Ni}GE`rL@GuXCy z_7Vic#viQ~obm=i<)_(!0jRTd+TfbB`j@e&sjG<|pUHt|j)-8m&&(hXY@0R>q*9)M zR#Tm6`2mmzDX|E4KJy964;ejG4E^mh33i>Efaugl*O!5yu?)D#7lHmA3=zQ*1iR5aiBlB} zK6JHXtg7r<8M#d^rb~&|skXmY%(V8(nXXN!?ohLLBCRunvG(!zXX66regb2@q(UX@ zo{fNRXCg6T-L=w-rO?UyG|%1>l(49y1+=t9_msTb1;f!)M%=+jg)uipH>WspxEd~5$N4*vH-nb%pT9Ii%+v$(9cH(Wm ztmDQF-xzEA-E_ojl$%G=^v>{y)KgaYO|(+|N5I0XbyoVD#{3C-5_bj{QsHrfBWY~- z!7r}Ix2nKE;6$1>XBNb}a>CilO1s~EYZ_}8dVj$GauZ?d zUTx!$ufKmC2E}IM4oPZVvHl(-5dJDLWND{3$d>I#Ir4xJ@z+`zY0j))sXgsnzE#tk zc3smtPOc>1`bo6V~jk$0DpzRk0kG%yfI?3a?UVx^6RHv`CmE_FDNY=lZuQ&{{1nIb%yu^E+S0OlnA&{&bgECp^qPE{QRnmO zrV5yZ5}1`-Xd{w#vff~YEl3Mxsmvv8v!!I&wqX-C4hI!@$5XMT8pP_pYBRop#DG@< zOrB?nh`6Jc$}w@|k6aB&`o^W^_k8Kx)%l(SHuk>$Ewt!cyu3})D!CKc83m`@#5+AK zE_mpCPpOW8s@&jDv;TP@Cpthr0dvrHIysb#VKrkiDWP|s_pYbDbi0-jrxkr2_kIbJ zN=+WSH?e_}{TU(Fbd`;d-YEtH2R@~MX`4yK$=rjENqjRcvmJ9-@lRmbJ)`&N1YI=+ zx3I+E+?h5Ruu(xNTcD42>NBWN?n#cGjjfa}uo8QqAa6ux%cF_VYLOWe+!oMTj`a1& zu-`8ZjYWwn)5UxP!*{oMqoENU%h#j**BbaLkr*~t&6Fry?Z>f+)0E*3(-!3h{`?B)a~e0?*ynC4@jr8*~?lBw%L0>1)FBgUI^QVI9$@rG}K5@ znc)nFDe6id%u|W)O|a!*n*QOqzh|I5lFUn{0UrfpeQ%w8Gaa~uq33Ncrx#h98^u5s;8279jk4yuDR(w&} zZlY>QM$swAH@KMH&6Ir$W~NE)r&DMxBEi3B_|KiG+bq0kyEgr2-00<%!Fy?Jzx5bs z&25n@IrQus9BaY0nzWT%AHnsXyJ@>i{*^%Eek5J}ds@5FaHUR1LR|XC+OoYSG!TQ) zrxfOSl>Tyj5t)_Qb1jCg47CUxEGw8Jj^U5l-Mcqqm4@Z=Tg2)=yRDqLl{I)F%}TXk zaZ~0zd~S)>HC0`g!9BY;T4FO&!J6NfVCz!gdZW|a?#F&ec(j7RipDPObiNnFiNKe+ zX`S!oRv&Wca0XKZBMncCBJk zXvSjqa{bYb?&(lNwb6+A{_f{=Mbf{oc96~m{QS(Xfls<$^6s~zV-)l2+18mYaqLd@ z21q&_zNlbO@C$MT&< z_CpBMS+s`R&WoNk`|8&=?r&!9ZaUv;LeVJ0(oK+jui1X74QvM>+^P*v`c(sV)ZQz= z9#C)p{k@)}$e)?Ef4^nBY4P{``THgC>xKXP{r~!6eGYi=|Mlm8e=7lWQU9MWLPGye znEfB$%KYEAg+TuICV(~Zzc=Ck;!W7F+Fb!Z{Qol5V86jx>w)*%S)ch&!~t=f`2V|| z-;Dibx&PPJl{o*un;i20Zlv=YyPm-<>%z0Mke3E@)eHR~6LP1I7a1>DuUo0x0Xn4J z4SMLdmiv>9(e?d#4}jF-Cy+bxuFxejf9Uc87+1Pt`xdwV?&et4AB8Wdud4ue{)k)( zorFyHPt~NGSb$mSn*V)nXq|@~=8^|fj&pa1K_i%#*#>VTP^SW>b~}yGbDeZcs%i1h zMZk&m!~+~0%vBGg`}T+ld=bq+(x=wkN{LY3$dTK+R0}5B{MRalK!C~NQ!zQv;2+oJ z5_!z>UenfrYjyF$(Zlq&HK!T_o1n#e$4l+P2$mf)3$=9!h*1r$OK^-W?SC9rP~a~X z9eFLEKKSDC!k6px&aEfVmi`1@Y9qeOpKkrBW0Eww9}b-Yy_#!CpfLtOHpWmcM zvKr(1I^S^*L(JEKM-Bi^=YQWm$e&LaA5;r~8P75Q-R<#$KW<>)KdayD3o@Pq_lmOq zHRMWV1|?AT7wuOb%L}dMzlHjrk3?DXJpimtd%)%RtS!;y3UrOz-k$$r!9myr?bh5p z`c(BJ*5Mr8(H=4SEc{&&EAeh>K?YOvBsO`o5?nwzczWxWf8KHLCp|cXvpwdVC0w^e%k zpbE@UN@sgc|2}pJ+%AIyD;FUlQXmQa99hg6S9l8+KT!sZxnt4C#Q(<~0>vdiom=q} zs9uAg{7E^sz5`>-Z)jlIrt|G#1}*^K%b{m94Tea~p(%cUeVzV%l5=$Cqz`z=p8|@_ulsz#RTN1L%zI)EM-@U)<_dL)1QTNq-&3Dc@ z-*Z0av%KH$4>wuvgU;u<2WrQ+&nnZJcVQ!mcD&U{%=46 zzUjk6X<8^oUH_XvosML9%z9NB-ms$gV^&-uRm$0gZ|5781NiQ;^h<-j^cT#Gb0Z5tlA?z3y;=-uq|Z zOQ7llE$5dkYO?yd^g}uH^aGu_-`W;2(YQB|-PwcWsx*Q8T>e$l?At`rszsQb-du9r zvcg*-so%fw_a8qYt8q_s3@91UdtaiB+^GQFm?Y950G7DN=8+&78SV=>-&;UPBkwk9 zr(13hcf!;QdZ9Vrk^r8bBk;79eZW?`w9cEjcOv9gnObWce|m%;|B2+Nap!s>=nCU9 z3d#@kY_m}5YYBwVbAcZia5wg$CB@xuj6z-6Z;NaD>=dt}gjpH~3@CouQGM)h)!9`J zMzZ6({P*%GLWgzI=>2kmmU!n=wAb{y(^+^ zySi_{nDv&W19}~cKFu6|nPdpC5^q!(h*8&cDj{k-9x`^&Ie^>)AF&;pX@U{H6u|3R_GLWy%gJfVd6F8l4_C)|4O>Y4!dU(z)Dru+A?uySf zu0w$>AHw1}P=)#j1r2?X%nd-H&qa{o9BOwm)}6o!5BNQ6bBIKo-V6|rXYS^DN;m|4 z00s!x*DH5-cyttj&~N>_G2icJkg)^s_=6rG^<5cg3RHV)pnnx;7&b%Z?t(S*e^aNl z={|M^*epC<0tHfl%D8_)G;rhGATmKmiBQ%;R zP@hc?c$Y5UKC0Q+fCBi%qlqK6y}naX6_e8X$RvB((Bm7>#|7xrox_mfK$DtiPC=u} zN6-&oz5zS_`zck96N=gI9n(`OJ~KXge3{#jG!w2CFZp~WyI=Z$E~0NnU~~L63J49= z9y>)PkZP2|>x7kbks9|ef+tOdwWP5}W%JZ*T!(wW8K~?Se zX(F3n9iZrF1U%oiy2Fk9-b>A|dDY_oej)YiJR?)!niL@0*Yk~bx}Z6~zq1xF4yly( zZEJvA=O-YlrQadlef8C0LI+`H3cX8cBL92}1cAZ5%BUapv6l3)ULhEQ0%?GAKie*) zP>-np!dUwP^rz9hmZC^~LFL}p-u_c>Jbyx$9Ij7gn5v$C3P8)!iNN=Rx~=@r8anSF z$)BX&eP}{a0R7ms-~|V$H=euy|9_WQ+^R2Q`Ne6(DWCbdxgGUD#aj^G2^gaSmqrW%d zRMYX-QvV#VURWTNE8FMa|9S&$v;s;zsH3y!&l$CWO9dIKeFCpf;#1H-Lb?x{cKtpg z|I7gT8`6n+a&O`)_|N)ZS3+i?!w#9B_TC>$Ho(gEy#n7-fd-*(K71RwGLS=Vb^QAp zNbn|lfZCEuE-=ym`Tg8eA~p7JxRF439zj6;ewPZ%2s2PUv3_QoM0E5#{s2j+e5Qrx z*5y@Cgw~J@sd4Vpi@|KIOghCNOq%%mwFwnyqvfJ(Q!zqWaFpj5@z?POkhMZnm;>vT z-rO534pzr!$_=RS*uHm<1inep705P=p~jt&Z2evX+0rgchS?hcwLfk8{~JdD3e-4$ z?@DUug+ni1ACkxvP^L&nHGMr-@F+Ds6xg1stb#2W2R!ll{|qG;(t5SMulySNSI7mk zeGW)pMKD75E)d7e*cw?~zFJ~Ot(G9I4H+C1bnuQppgsd62BCjoS_bbRU0E?m-!~`& z>YUzZL(5`ko0?8(N|2eEAIQfJ|ARsN{r$(F{qU1H;Fmx{_nExEqE6xSd)ysHinWmK zN0kJI5K6uPq-h&t$-2US0nfj`{q#Rukj&?39JqWcZ+R$96XZNA`{w>Ac(i8?Int*m zjL;Zsz)XJ&qQn0&XV@#?mr(%S2tCQs15d7+38qKI9ajuolqlAJE*m_wlBiDEWE{^v zzZ+%b|7>FZLw&OCa9DOC$f91n^^{M)b0+InA&6=tfj`T+|KN`qFswG%)D9%Rd?d5{ z<{a$bke8mZVhVvwbxQ0#X@YVjcp3kkCrbnk@N8Cqi@OGc$(x@ zP*rtv{$dL0T{`AlP7`>5CcvL+qppz61EFK9JXF(X^FfKOQ6Zgtr!?OqG%x9Fcl<47= zth-9Pie7?NUPCt~-Hpedb>kk^v{hCTZ?mgZ8Tu`?p}n?705wpO;s??y3&!i>ci?HCi|Lw;=J{|^0?RIZS0UxF25*cx78Wpd*~Wrh zy#M;@Oh(U*Bw$-O_pO!4i2yo%ep`aHxy?!A2~>tJ-Olz?EuGPL8oMDB(!O~Ai!(_k z$$1$$Cc$eR%2eCbYwu>nG5vkt(=X)i{M;+{rE`cBk!AEN@AFE0`b5jM)y*HHWhFb6 zyY0-D%bJ(1gAzTZC(}S9EGo(P$!*r@2z@m58jIo+h}JB7Z`;Uwyr5OigB~MST2?mW zAx2@F3PkJod7mE>pY3; zX;Z}G45x&ZPs6ohVp z;@=(OW4mKV{)9K+Jihrn{-gukEr(X%9=Ce;$4nUZM^&27lcg48({rt78V!LF?)Elnyv8 zfQ~dZQfJvC*uMbAU+dQhiR_=ekqz0SgkwrbN zMpfhLR}aOKtZ_4BRQ$15XM9kk*OY;^KgsK*CGz}gak*+UF_HRDevog$3ck&pDQ1whu z8@4_RG=I<^))>xC7ddpfa1n`^%YU;6U#>Zgzt^lfgIMQCEpponQ4%0Q4`$fpa1k|*?9crD>eOH zqu)Nuf2LQ!0i5qZ{WG4LF_PMFnfv9RMrc^Z#bN0k_yW6Ef(>^!G9LeRB&YOKh2}Hn z303EP@)>ptYhX~mMrX2Hir*VfSLgq8zaWL|rgAk}FB8OQZYwerIx%q-lvdSp&z0dKEa@t;@R zOQjaS80?Y&tkSSWz|0CwFUi`a>xAn)c<7i9r=1Sd3$l4Xv9&bjd^Cr8T{_U2*?Ayz6gWkmH|>)%n(5 z(0Y3EPv|Hm8T9U$!?#@iUF~{F;J(M+|8*}H4g{l{Yk}*;kH$2X@$A3cNfqGU&T3{L z8?abVSJ-V}e`_KdWF=_O%dBqDt&c=&j7|*-;$pM9b_!8vs4Yy+7PWR5BPPh_1TT9BybWoi*RMRd9N>W5SzKNIV2(|vY-87Hyo+I$iJ%yi3O#^r%6V)%zULNc zDo=cy!sle$a2cr=KF%|**|NfT!WuKS8Pd&gyKMcyd`uy@ZxQPq?IN;u@qI}d1MZOV zY#(cma5Py`ya5XI2`tBHEft`Ke}b6RicWu5m!b`v810rTdnosg@vip9z@tw)7Q1d^ zC#*d6T(hc0z zyEJyIaH&W5-^DYH1;!#|o$n%x!Nl-GjK)eyw)F$|%z~>Yvv>3i9z^?MfpPFtjDZ>F ziF(}XxpUN$21BH0x&J()G%=GSK16T+^9=k|`&Lq%bC3y7_mF;%WvF1omW#wD4RCmg`AeOhd_^UlD_pYEGgebq zOo+87wbV)_5r5f?SF^}A; z2bznoRQ8~jsSmV~l6oOi0yWt}?YOC+fpwyL!NdbXmj(_u1I%o~!suOkKtav7-qv0U zBYJw5EV(BdyR5!njw=-IP@X^A+?JGZumL#eQ1bTg&n?iw-1Mqu$WSWPPf#=vuqe&; z&4k(30x7hFiA!*=A;1CL9@?wI?XhT?u7PxsU+L1uFeyj_<8f(u3KSSlD;Lf4ZE^%3 zY4#<2U*nlQ9~UW(l)v}uN6$0a!;Yqdi;I!wBOWu(=L<9PAx-Af0Xkazl&TGbARa_I z#8!d0#i^%M_DrW%NVNLl0yBxAlYBdkLB!Jr)jTsV7;Lzu+qnm>NK%P&m$Bwxn{;D- z;H}0ISLC<;hu%vM*U&9S`M0X}V}WoM5c{OSnvd_BHQn6Z8$YTo_e6)UWCOk-90u5r_=&FrT9y?j z8Vdjqq*u0HZq<55Z4FdJps@GvPx1v|l}^B0em=bY;nJJJ3#}R3X)f=-tgsCPjaSxo z)`vNt|3#l7vh(y~=$cDf3~!S2d1v~Qj!2pY6=55@?S5%r_AwrdSx5PMT=z_L@BY#r zYk#!cC`~iln+GQwdGu>l<0rOG^kgj*$n@sTUUtP~hs-($n%Fzx=u(h7>oLVa1ObJ6 zXxh0wXPh^b3ski(ZDmQe$3`2w*GqT^~bw< z10L+L5p{>Vc4(*5v*(7e1WMYe@dOmv+whTp0{YqiPQaX>BX(y;a+-xGkm_n4zHZk-WO-yRitn!Wij94t~oQ?(v!Ed zr}b%o@rLlHy&X^^xcWzYq`2YT?S5ubNo#z<*4n7cc+~F@;q%S=lB)C;x|#0zU*P_# zM~mlQ73NXQn91e{mkd`PthQedNbPhTm+?5gH|>T{I1`I5?LQs3BWd@b);nDG&h(Fo z5hS*{31pt(K?1+i7bMGZq)GlzsueEXGec5sb<|*Ys&tur?ZEx?Xt_6Z$^?*Z$!52~}*K`RXTI~zD9a#Q5P z-Qf&IkG_vQH{gr%u+?yd<@&THy3;p92-ny7)7UJku6`33=S{hbXs&UUH}O7ju0YSI zvE-U{EwOlsm5PUU48S9CMt)i$N!|`deGx5km~hd8xzlCAn$%P?T97m= ze8I{j;$@=6%CTx*fvY#X-ZK3sM4w0x5E{Tut^f=aG} zX7ozseD;jyU!>KqSlR}olrT=5qiH}zY)*WRrLp8bVZ!pgm?L)0cuCZ~W()VeVyj*5 zC2ro8BBqGAe)iXAqwk=9Rcz|Q&SS8U*hZrjL)w&kvW@w@&#*Lg!JH|@v+hGppZE1hlpOFL~lZCWabq8#QNLil;bjp+dBy&YX-<_!q3 zh*oSbQ4QX8zsGg|mq|-Ye46Rg{*Q$z?~Z_4Me6lcHky35E(Lh4ip^k5$*CP$&1CVG zp7^G~!cqMP1CyS3CHsq`4+G7+gfF1zd-JGgb7G6N%4LEoDqhMv>5^P=qC(IEN0EU z-N^ivgf*i+`;k_cLKwdrbfoib5=Bva@gvao%1JLib-LTL9 z>XfV+x8YPlhdf+kLHpHti!;Wv+V>;^lG7CIOqGHwTA3K%?Nr|7wmxg&tkoP}V;O(d z)ZzT>o>mfe?JRzNqi0%+Dm!E$MMR>E+3p?3*S>24m*;JEHy>?vQfJN=I&fN;+Pqy4 z)%G=YGG=$r`kAalMPyg%7RPURO@QK%6$-UA8Jh`YoZ2%8{*kJ9PyNQv<_0tG*0YV> z|H8f1qB`_4STb`T_3ISwE81KT8#x)i6D`v*v{I+DzRg3=!Zws?KerGsH{doPIx?hs zzw@B$Vee**BJIB!TAwKZss1dj~R?_ zvv9!7dR(!^oP`*R*6l4E6m#?g#t01(+xYH@C31ysMAV4pxUU-O%~RpV!a3 zbdnoy##$KqG1-|V_{a^mme0yAc4zh|*Z-=jtcLZw#@ycp;CIgF?TYb_Auz3l^MF{F|G=AX8|zfqZx$Qv7GRpr_X?|=yi;Wm zJQDPM3|?m6;*9heU~WXa13~^lu+HF_)t$LMTl}!Rc@(R|r;V;aBcxMabQMeFs_Ima#!a#u9uut@}ev z#=uV4o90^PE_Ox><~edG5Bsx|2W*XxQvkgZ%~`5PNxCd)O*biXl1K=6F-+I}S$E-& zMzMjyxWgT&)#P497@MXDQ|`juun#YjoCe!2E)EwB#Lc;NY~mT8tqY>h*0HYBG{o)J z?nq{EdWiuxnS#~|a`Vyj4{`hi14uc6CRqZa=oW^);i!tDERmonvgB zvv7BY$xEypxF2i9Q?lM5?`W0tSjrt#aSqI$&CJ7RfkWaS;9ybb1yaJAc7ihp3iB~- zhfh=#lK!=?_2nSX@m{6jR&Y}yC@f(pswvw;Dya6$1D z)brAtW18;hLr*c>k{|Abb>%p+d$2jw5QMg?t6x z9;V{{yH6vEtOlEp-aofed-m0h(}8+;FmgSDBvszJgID(TN7X59dTCLecsi8&Ogb6Y z8aoF>)r)W1v0G6!plAsTe_X7zZLK-eHOS;eFoNoO+W{QF0Vzs+CMqD)-77LP(;+Xh zGajPvyPZ)KcC4~B3FJ%fTsoNrmo&Cs(N6Q305O`?T*fv#{4CT@+V*{8G7s#4Rx@UZ zm56D?N-@2<&eOxKIWnk!Hd;!ITNispa;6*Ay7v67nY$gW@LQhHewq2w6ZCE<`y;8m z0ljFunMt_6rx0iCn!&&#JaDS?9)sC@trR&AdRT(@QA6TfxBg~!$!RJ`!aBsrp6jzw zXT}LkSTCcd_@*opI_1(DHO}e@avKm#Q9zl9BOV|XJ;gnb3aMw$P)9#;?=6Gcl}~w> zeKMA<+cq_r(D_od+$q~_=+|X1bJ5!S-`$-YNG34&0Tz5VMd#>ntF9er($RrDaEg9&p;5ErAyQDS?V1%-e zEf_`Dm&ismBSkN3Wt6M?eG4%+N@8dLLscq|Wo8SkQI0vBcKE6 zD;9`Dpvm;d)ANO}uq_NlCCPjpU@)Ro=l&r3;Ot@x`gC!>xM~*&CJQv!qgVlfkiXH| za{)VVl|XPf>||8zL7kwspdo)?fhi=qi4VOfpU*+fye_2leE@&uq7A|V0Ya}F_ACQR zRts^!iA%?eyMnihTsmX%u4ZRz+i2rvrV@7@C&j~ zD}uf_^q)rHkr^f(QtTme`dgh^ve(x?B!BK`LZn5D4z4U+{UtiIlgYZn;PP zc=wC+TV4a2mdgPoG{!WHRjK^PRbuh_dnP2;Z)Cb(eP#A<$jmgm*ZHAvz@VSzAXMvM zQd(Gc~aTOQx2rL%1!5p2($e1S)o7VcJM=b7NmU|1Ta!3@%+byfdC zVS5Uyz0Y3R&f_x8jT`9!$vlolk4X~T5Blt=b%UKxuMzLnWsRO8)P|2aO=roPSkbXh zZrkYbN>tnh2yJs)Gua~}5`HT2;=!x7EmI`b13D-jkKW$6Gd=3Qz(D(_j`GwOE z+K7N*h(8C~_rS%(AKn@uNrd!|TOGuiH#i~X4HUs?^dF=)m@rzv?%C0@-NQcU1pVyV zKa?zS$O9CLVhwT28w3d=;skQ!5L?JEfv>9xEljL^jA~2(>uGgvRn|Z$CE7_)E{`bs zB>!TnDzc!YW^{Ukrmn5>-BGA{hYJPbAa`oXfnVSEal+oeXU#_&s`B11T)tr9AzY9ngdp)|ghtVri@i6=R!~@r}I3bFf$x*?ogok#HU9fKYc}%I@Z2Rm@t?JWQ^O)5> zkld*R1z%j#LQAPvK1jd}UZq$#HXT=h2NivHDQo}E2Ix3*<9uD1w%xhO)%blyaL7}l#G%y*hdQJ(HEzTbVcub%xJSe7C+Ji6)8K(4cj z&|PHVrg%w+#r$RvB1I#nKi#B+(*4TChV8v#Vo#6rVl>ezTY&}2q-OUsjkOe|kWe;^gV-6= zb#0Pr+x@V{6a(LcXoi)@jWzFs{3Gp+9RN*-I4OUB>iIzm(4V$J2YnPehgXmo?$uns zfJA(g3tNAKDJTP=U<^EVZ97klXugK=$$-O7Z?67o<%(tna5F0-H~&dh=NkR8?0{{S z)_KCx#hV$~&W8jCuQDRR_9?m0@*1G8V0d;x4+0eg+Np|ItUq6)piaG(MVrIE7E2J< zfY0~|pL8juWPHZ|PJFy@DuEjGR=^0A#q_#y?lwN*+0VJl6|1?eU9ympvDyBQo*y*$ z7BvV&tm&J7se2dX!bFq-<{HkNgXlH%g&h#qLBTE~#+iokr%=Ce!882H_w#&Y_S7~g z_>+Vp`5ApL5ei1GE?O-ArM-f=XsrxTJWvdFJ?9_sk-&4_ ze=0VUFTe_6#vgnr2lWf;Z_a{iw$93YRmJlw6(fk&> zCD(E>6hf~twao27OesSkcl|(NkvR-xVnJ@-_lg}b4ED3h^_06@7||Jk zxJ2Shx?xLf33v$$sydX^Fl`1i@Y~3B-~Wo4IR-yY29j~i6)>N4-RsKj@EpT9h}iYu zq22S3=K1u)J#&z+$2AiFFRjsvM2v?4-*c6OLqntfJn7{9&`yioY9|bV4&K;ra-z#yZ2!_5F8+DQ?Ev6FrsxE? zHMI7}5l&?zmn@zOaAW>HEYM$CTOd4E30Brz-vC-1kpO7qaQfsG(B@Cqa$7sNGGliH zp=_lX9>(jLn%+|?=5Kv&-H#rbrS=xS?pMJwc~kw1HL~y}G1uAOsq_AHG0&3Kbe7l% z*%+}%&~ki4zr2<**4uzW+Q8RSoV&a9hjaPHke%O`ZKL@L`?C!n5N7^bl4V4%){t-r zzo0tgLMZ9ZplG9{ak$g&uEG}T*=4dDS4$nM1;wk|E4j=Rj0PTii)EXd$L7ERqFMy< z%S(!UAo^|ub;9%O$py^3Na%Kv<1^P%cAFR4`u?TR##P6H&+_0MJp8rl{h!M1hEjp% zYdrT;rgTpf=riZGPRe#Rfqighy^oRIZX5uo(2kp(7Id|C)LS2+)|-l0qHGtlqAiG` zbWkOyf}X0hZ;fp3OaV7Dy*Y!FWhHxo&%*=1D7DG3lHCE`FNbRF~ zDg$SXya1u%Se?vA90aOLj4z^mg8?>-%iqXzXDa%%nGRrh3@Lo;2aq$^Qms|a@?`~n zM8Itd#jyOlDZgTXe?;+_Ci&vHQeTmsggan~G7 zgIf2Q@N|7hdXN=W=umC^{R~bOt*TmHGAo)QdOWRd1)u^9Wsm@c#mG`IRYHMb|4GUE z6a!_QVNFv$7NiVh?Q*=_M4TSfqOIwI#A}5dfnl9>c0F2l7ppHEk;B zW={}A)XqQU>h3+Ek|DT<4YBx{E#}j+@9xo5QSuV;Om-3%vGx+XPQ6@UG@XhOy+7S# zA8#V-i8t=+UYM3e-wYmesLmf{QINVV+LFRGw0`9or$Wfo;v5hY*Pf~q+n4K(4ozj0)DbD1 zjfy(a2Uhl`caR2nY(dC)BU{Ip;izBzj4;>3{hcBNVe%&ViWaLkwO>xciLY|QRNZPZ zD(z!Z3iq)+tRMJ#oWu~;J?ojc3l<|vL&NyHE!JI5jrn7Xz@8c{;a2m`-N3l~@ZLJ+ zUFvq4(9~0@N@@InHYjE#x1X>c1v>~8`%{_x=Pv@2QMgo(*&Jis8u;H2gG>mgCaCN6 zLmlgEKTEqpF~%k127X)<6ow+!mgn?0qm@is2Cwib>E3}u?%GqG79FHX$2RHlEwueM zv9AjUz~#d<`oqpR?r%%C_mCIA0!UeaiRZ0dzCfU%>YTu&eQ%LfL#dhNAC9z~Tz7x9*Q&{bC07C5~2C)bF90tC6` zjHwY_w#0aMKYM?&Qc8!ZJWDO|*AxheYsN3npE zUhYKIaet-1lxAC}U;j@&+%qxADKd)}xo~xXU%3}bSJ1btiTiTu0?%=v))mbCDeg6k z5EH&3i=glb?`^&4Cf|Hn#p=t0+zQxzG0Uq-CH;CPz!%Ds8^WHnayo+R|{t)-QrgLm;OyQe# zD8P?6+<25Drcusw#qGTBH_*BxhxDzm@RX_QhTyBGjF$20^wj=tK!IH^7&i&7q%33J zG2Y3grO~R>NAWv5U}K(^U$pwy$0hRu=`QBrO?{h;A={mp0ETL%PriuC<;hab#s@yy@8JED(HC<8lN4MJO?Oi2Q$mvRo(hx z{uV69_(b)L09Afx24GyQa!_yYTC{c7*y97dEm8|?p zXZOw)XvwZYw3p27Ck+o@!}bY^wR#|^@+6G-Mlb~bUB@D30m=iD`7vKhS=&hdJB~4xFj7FrVnKS%U zyY;M@TF?n6%`_Lub=2(gG#`HXFI_ye_ivoM(=|Hr++DJui}}ejxx?*AO{D3a8ptW_ zYmo4rlRXwYzEN zZ;Xa6az41{R0DPg2I2-9L%nBLL6jlrRVV9j3W13_(N4KdDY{U1t?h1q^JB9>gH4~D ziW#TLAIvqjdkFF8SZdrX{73m>)xvg}TlCA(KIs^t50r*aFa34NTRl`}JaX#rVp5!_slCl$4ivhg zc+OfyG=Qs!|21Yqf81z^t_AkQ+TmfQ%eJ=VGYG4skit&j*|E&s5B@(3)w6Jj@P~@V_+$hvO#?u0Ip8y zaY5qF42LD_rJvV83!%M>59R;>!m1L+R#h^P5iqMnz4xxH0DbiqFT{QXEgTiFQUQOY-$I-m+UZCU5?dPv;-qvmr_A7t#*Top z_&La!R+Aa~eI~@3T(^V~Qz(nKrhCn@V#Z=k9gG?}VaZk4r4j5e+0U%y_~I?7;P}1F ziTz5fp|6Darcu_U7i{5fNGgiigj@v-7z$?N;cLm5}aZno0;N;UU;+l%WrbJ7Y z8T_Mq-2NSHVtKf zNg*XmF-sLo6DVNE0o8U28Auz^3AEMaK1t^I0MC6}>H-eAd5z#6xo~FsqI(=jR)Z7j zGB1-!Sl|K$YT~NkG|aq)7DCh#TAWTd0{0hgZRiCN*PTF;&TlVI>K@-TKt<9o39q6P z+!>CI6k^`ie-DLQX7PM_JFD`12vWqY`b%>%i06jjMR-B#dc*_>_aNH?t$^FRBl z4wtK^Znt%sC3OdPd1V>8^6qTzpg$D1gWhy1p_I(L>t$silz82vX=>y&-C2n#;Pr}j z-US`CPn+rLnXDzMCCcb!EI~|F=pOHmur_FoI|gQUi~%%EA4H6~jhdp9=5}Hdb#)sM zN)&iVqX>M?A@)ZF_u;x~ua_9~B|yY)BP+;_ZpLHk6*I|<1lWN+*@raFBc!N4Y z{#AUwXLV*eq%^GlhL3{c3G_>k)gSjK!UMNHs4vkt%|sXcl^tYe70T{ga0nc*Zo#wX z{#_$xdPsYR?FKA7RO$wAfV;!#A89fA_vrSoHsj!j9K}r*uc&GmgUS8^=9Zke3^W5c zjmRE%T@rh({(dGF>mO-lQkLV-%sZI2b@OwQo?Y1DiS=KQvhT*vf_T3m_e)`zEi_;v z`FVF$CvM2N_)xdR9pp6s%wK}g4qw4aCx9e502=RM$Rfsyt@Z-IMK~R?^XpKcJ1tq!i{U;X`jjd6C=> zEeHw%fY#{@IEzox!npGlYn_Hk8<*ulXHLD0s|u){L!bj3`c3)Y6->ScR_Q$A zz90UWv&DgeH_-8vkG<%H22>Gd;FPH{MXuW^w*EkIh+o?ArC=t$AA+qZHo|x`Dg>5f=9sSf#&UuS5J$HdIHsNR&rAu z-TC6bdWW@EcRqj0zt3;?MJUkyluY|!%wP-p@ifOqy%(6j}J*38bk!OHi?XQU+ zk2l42{k}kfsS#moy>Qe(T8Sz>b#G2oJ=Q+)4F1gU7q<+RIy2)iHm~y)I&Iz(4cfAb z1&q}%K;?=29@~p}0G>x+E4@F<@s7{_Us&xH6B@G764*QVkNhnt9nJ)Wr!41Eq;uH} zep$DyLB?Gjeg$dTWu4^taz$%fn+phCA+w`iiW}=hD0XCjVqU5d=iQzI?y(G?IFna% zFM;yOpak&Hr6kp|C|2&`?Yw|^N(Yv@IjhiL7OB{V`XSK6Xe^cmxXkut>d55n$gWcs z7T5nW%k?**T^;YN`#LWtKz(nD!yy#2Vy zk-$T{m9`Af8>0p}_}9fr@snA;`QKa+&6|y<=Lrk3{w4|uB*%0GMPL1y8j?>sRNppV zSO%qWeZ++J`%U{;ti&IvRXM~#lbf*vDD{*uWXW>HX6n$^vHlp}naj3N zVnOwn3KvwkXqOoGK=)V^c@~$AkA+lOfJF{G`o_9!f8UUY?Nw|R!ug6R{e-Zj#AXxO zw>6snufWYQXMRTxM_7bdXOgubdn)phr4AC*sDUUs9zY4XbK-)K1Y%ylQ8DXl(Op|= zgdb0PVl7V^AGZSDJ?nQ+GEApKio^&dlU#=9$H!lmqwE-}8F12gckTw#8Ypu)Z+CyH z(Yju7?wqff+AK(?%1BWScJsQNud!0A0}XqQg(138K;$z_|IAU=SIx6BEgIY@bh&m2 zs%7o{*ykg;J=eL<&GX-zbitc(YEivljUZASse(9@~pPXK?23aO>o2IC> z$4){N`mC?4nlC_VtoQqGK^IL583V<()n^8qVF-Kdw>bN8+mcf>24Ck({C&30l3BZp zScCFPtDY#@vn#LW$AeMPM{$RN--^}c4@&lGEQrnUk%NEFEZHOo{*qHc)`nZx`F9ML zE4KfHW8JTx5Euwr9!7HlIH8pwr2ch>rAJ%>Z-2eunV5yQ$&MF9pT=wY?}PXZ1DXlI zzS;b)a788mv6n85SSzSMo2A2+cO#3oAUI@?BvmX{Zl|K(Sc~$LD@r7k*xS|3rEGM} z$!J?YQ&_=WeXR^2AE%_MeoMYMfwY?w@WmR-t>l<}3*5%udxK>6v23yF`QQ5+amfzu zVVDC8DTN(|7AEUtHO)bO6)N4d;O-Yw67H^}S|g9!1(DTfuH6W<3r(r$lbr&1buJVX zaEb&*!IU8OR3(OaB_z@aTu?j+-;~&eY*DUBuKqJ;qvNd)Geh$cqWVaJKS$E9!aF= zI)86F28k3^aN?7S?+^%AicNr;OZ4}-Psee>*c)1mKFmV zvD~tzITFv^NPsqguqOLU4@k5E;db7e$b{i~2^{|n2H80o??ccnOV>q4w&j!b247dT z_mP(?K=Xm}zOTC^&WcuiD=%*v zzu!ObJ@?~0&ij4p^?JUZ&ud@T^BVawg}+2fQLBx2nZYNNd_0oO*|!)Vf3^gAKFlRv zADV~O5^we!g87phI-m6EXjwLmeU5KBXI1BTHnYzNJGCCcK8@wp!=Z+=y1Mm3Q%4_T zWFah(+4}ypT$a5@pj+c%$vLei-=v(ItJR$2@1f5G4-KdJ)&57GuiLYd#|bzEUn~a_ zX5mO>>uEifCtiLMJx=1?AYzjA=|J=^TO39*EE8lHp$yxYexnZAx=Q>xgAqq9Npt6A zFYMz~>Z7Y{=fWRfpb?J4Tq26he%3)%uOl*cyMuYan%(FU_4#kIvMthMx^6anoZ{X< zp1P~yoW~pZa755Sk%Q0KoA9QR>}Im_X^Ubg*kZ``eVQBjBjgV1(UB2pt20Gf{=k8U zDS!BG!~oH+4RrTlN0^Xxmt9W(O;J*CMZ%|JD>>AB=Woak-6vf~wToKWG+bm&U8&Ue zIWz?NMUJ25tq{{2*@IEkdcqb0k2mX--wHcrT%jUO6gcA&6zsMH!A{ba)D`jqGet$q z^cLkBS6S(kB~ADM79xDnVXJu-9If`I)iWiPT#T*l{tm&U5ezV*xRYGMB~r+M$)nm zbvnA02A`Obze~ZWqx_fd!Mh(qro*)fcpHjqI_Q@>jG76v4(z5pAXaFRwp^R;tbE^* zu-avNTF1n{EklgiXfy9X&oiuTd*@s^ZB#$ZV>?m+;@yzGbqCpd*%|!q5K;YwSq3Fx zXUXES7j8f4+Pbqme2@K=+*f_s!HUy51rHPE-BS!HA^jp&)%;LT>y!F%de5NzLVg2- zSssO&9V;!eT92)Tnha_qrb;>W`mG*%iF{VhB^?QQXCLOWR+G5_o=CNPu6QP#EXz{( z!3Sm{k~xvO*yvH6aM8XEh2Zb_#I@>`SCupIAwq2^t4fbY9dc`5K&bN)WRCx$mevAF zX)pz{orzv1gh`WtT>O~{W{zSY0(*3v_=bym!D_Pb3Srh z&m!bIl?4}GEAuf}$V{A@t?b0Ka@LC;cEXy9*IBc>{x13fOUe{RCGH*}#d9`I@hOJ=M&$a94rV`u zIHT{&z8uU777FlwA@LN=(4k1K6Lk-CSsw~vZ*vV!9qkAC`Oil0GlHVR!U0hn-rPIB zXaKTzWm6#0N#XQEHmP?T6<@W;j9re}=X#H`dYeD1s-NOneP50hefjBZ*}Q+;A-Sd6 zGf}T;=xSsiOtvKuh?p>0u*WMzWvM%tV%=;d>O9@GDtY~R=RoJ*vAQ_s@$G^Bd~{1W zR&nrxUs_I4Zc#{gOHM3wFx9!Y0FgeLyFr*_Lc^6;LSEi~TT93u+-Yqt=fp8Lnfur@PF_qWvV}c)lP4I@Y0&nU^%qe_wKOmMD>qk9_)q)(3XT@BmR(C1N z%}D6N!k<0IzAKQw%UP|{dZ~%lDr{*`7rL7adChfPwyI&wB2Wn`maLClx@7vfTcq=K zQ{7Y>56+DZleEIv!|}z5NlVg3ba^&7dBq|~v^ZA?0jbI+BqL>R1)5U#9FX1 zDN$pJILnWa>S^m#{ZhTSci91UrYq-K)D~)+IpJ;FycG>7lb-^73NcaV*i#xF*6c&7j*{I3iO6;x2 z+&k#US~Al&!Kn73s_&F%iG0E=?!?}!XQrVz_5)JhZQjWI#q=%cKJn(5yECYb{l_2S z%qe)CJ9Y~AF|yK4EKt$}8Qeo(c8lyH>X^QDW)qW=9ofmm3I#x<>ZnFYZyKbEo?4qt zpEhI>an8!wd>y=04IvxN#Nc_Zp*Q~kbdSX{u@dl4uHZelW1K|EM(?<`Xp+Ba5#k^| z)+%f6p(S&rwQa-d$&%LQjVJqIuCjLUX}4}2J~0yWP-WQY%3!%yYsJ=5A=cq5eZziN z4fDY^B}17mFKlWTXY`-8szS%^+;nZzOoNtj&cuRg+EbcvtHx=_VcY6_;Fah(S6@4A zhzwmGdldXjZvpr!L~ueG;WL08y!~oLDYK z)sZ4rP;n?c3_cONNH+BY&gl5un$A97?4jTuZ*85aCW9-|LIC1Zf{F|6i-~) zujeZ)rKKgYaGNeu`s35;s>T5X>NoXoajQ=6`M1uRzQJBe6*O}?bDby_5k{L?zIu0- zYe(>v?B%K0h?p0xCw11~%Abh;`0x(Mh}e+jU1$qrUn*c8))C?=Hjv>?GW5$iUVv0C zBhI3E+Xrn}{ty?OL)pWv-$9OLvgNI>_E;b5Ip$0_m3)#g<!;MjcXm6zHF=lwxQTVHd=nw(l#01QcU*R4v2Biq^TgdLCh4(bM&a^xq9vvW)tb7I zi!U;o`f>GKsGw_tVWBL^{a-GsbFQNUe85bg&T?v`7N{F>#x0To$3n-4s#6C=yM3v} z&VS+>$ydSjoG?n~yEV+l>7(P6D(LrcnYOU!wNuP>X@v@nF}sBj94OCCgfGQtw{NNp9owV6s2P-hY$pb;(SU17?4adSF5Nr3X}+7NaX{ zt#v5i=BdM3k~r2EPBFRip3uJlP6w~$<26xr09eeK*##QEs4tO!f4_w6~DGX4+o zdr~20Jr33YJ15M&D)=(M6ZO6n`~5xY(Fu{UpnNC-kp83%A^(CWV%nQnot_LJshlj! zCj#1|x~On3lR~I|NyK@1LSwg&`O)oSRF557^;)uDl+{S1<=a=J9Hw46y|-)3u}*aW zO`tgwZaA$)@c8?@DC;BH?5Wi@C|PMrBx5IG)^O>B5mX`{)e zS$*zRepTKbZJt$^-dOU(#2riS?6}X_JY10W{xzfY3l|0Lu*fer9^9fJCHYxPbxX4I zR-mvi!qT&@ko98RDc4~@nmL(hcigEJAL{&UYO?Da<;Zxx{2?@{N{4KG?C{&b_l?U@ zYV5RI=yt3ZCQj8@P7x+OlYgwIMash~)@UQD5EbG4SKnq9@zz^N0!tUw%+&7aI5iv2 z%aSW>i!F>aBr5Ye^)AkY<<$kTw`a_nkA_(j4HRqFi!>clT(zggCW0KUqmK2+C2ahB zc)zBL@DfUu z_##=-Cx^?vo{-wIJvXK+qd#%9ETidA7S;eoY8%hLJ6UA|lqaoZoc4W)@Kj&1OKw9| z;*k0j`Frzrt=CTA+4G#a_l;1oNmuskl1?RA4Xe}=XRH7C#c}s95Mz5&$&;af`0@Vm z4*Ekp-b7T;LDo#9xj|P}u@3HlDBW|2FOLh!sbYh%0l8Su8unVvf>Rc!4`03m4IUnZ zwDMxuab79IMlBBnUJ4d>;Ajiqa%o}Hv4?)SwZyv=7K%@3j(ll5A$10t`<=55k$8_C zjPXv%Dw(?=t3UAvC7)U`fd-bTAh4np`?z1wXZ%Co;ff1qM8;;tAD6@Z=%sanS=Gw4 z+Y#aqQ?w+B%=VwDJ{v8bB7RwA9$NB3n^18YSB+{Db2ho^v9~xGFJ?oG5hc5KzImS? z>+4Ua-o3X=)qUK}FH<;Ti>lQ)hAya3^42*VBlZv`!B~sPnu@S23iZDS3jqK(ysIl`r`44ZUYa$vv=W{p3M+{gg!tR1c1*tRPgieWT zzMK+ifImY#q@LB3C>}{&Iv+l9AVq4J?wc)lRu8D^!UH5{93e%<_~|K?(BjE8Mwj$D zNKTP`nsu+@%-Ek(bIKJFC|aV-vF&l*QuGeWfF})mmOmRr%q}yx;HuImP|27Tc`C!I z!`J4{i=zq)hMX={S@QM$iFQ$!iAjzq1gJmF_bWHG4tqDECYY-r$o+i%hDU>Frs+W} z*h|__0Vn&k;RffDxkRIj_o~0Dk!Gq} zj(<9k^np8*&-jc~URY_|xg|x}M^kNC#1~i{|5~ZbD{|YkzZX>EhUit`hnMUCoXWmwb2Lg(}>KLkI@s0y`|7@KAayyYdgVR51qlXBlD^1L+??P z*D>cw&8CktHiXz-t1oKX_@$ezrwI~=MC?4erv@i<$7oz%pMZ10{Wvr(d$1_Q|AWQp z#qb+hed(T$R3H9IZa=+Q4&88VkL#NoF7v0*ySHl%mU5ER|M=rG4{d)Bb@l8aIR{W~ zLE{q%uuN+Gy=F9ZK(77llyvnxW5olA{5SF~Tgx3DX`#PJN0JcUQ<8suO||;b_lKP& z*gq3NFa^_t*9tb0CYNameYPcUsI0VRT4r1CZ21G+*OSuDlsJQio-f}K%DYk$@ID(gkcU1F@~d81>gJA3hq&7=6Z2cP&nGpwknn~jX4(2dVY+o7^HZk7R6h9U%it);_7QKtaQ zE7OUuxJ89D=pN`f)1!7}S_gE2A%o?`_Q64iTKB>l-W9C_xt!y^gr2yAw;H!!rqflQ z7k5Mvs2?WnoAEKp&N%1S`9w=Aj?9n#@8Cb^Sepnoy+!Szw%1W9%CBDyzGarO?Fkrs z?&_T9wz+EYWJmeg7KE6Bb|Rv=4hL2U_sHHoIO~|_ za1Y8O%9(U4qc#?q`@<|Opx^u8%@yWz=1#L$oTslpsHVA7bBpy*@py5|p~tF1!5NgR zYoc`DR0^71LYRltZ43SfrfFiooEAST!unU7sb|aSk;2o$ra^<^ru%$|Osp)|H%Xxl@VCD446KQJfBM}mzG6a{@D75Q0!|G|}hwLTxJ2Q~x=hAue z5$c=hobLUo*8jCl;;3^26WtLN4S&DEa@8J3%H#HaD{KujN~{fjCQUQh)=fG>vBk=) zteLnHrx)dCxlO{E1E)Ico4R&(cB&=ooc(5Bh&L2Z*aD#PQTE1S&au1JVJ#h11$oT% z?mG%b7iU}{$?Uw;tLt=+(|N8fHcy>@*ANxuj)R1bLcz7Ohn0D&6n(spuNoVgTl_NR=H7D|fZ*KG!NTi=I zVwHL;NvlSBnAbl?#s%_|N>KNdEx04n9UslIOS4I*V0WFl;BP#=0}b;SRr8v-)7q$W z?xaK*87NfS__t)zVtb!)Vn5;-d8>C8D<~X2(xt|TB5+23K}iv zm1>4m;xa|t#jAAYe({ez8`sSD8Bi<#`6?Z{QsCAzm6ro0g15R*(6HzA<0#jV$Vb;- zet$#Q0!GX(Ey!|1)h9|zKU9|mrN54=>$~wi@r?C;paUUR6i&^O>4`N+b&&2q>zvgC zWnNUIZ^zl(W}kAETw=RBtHiw~8YV{7938g1h#NPpzOu7ELoksAd8$q2&C4H`>p?7@ z-(F(tnNBJm5gDUXPVbf+>rZ~fKHG<7Y%d_DB3iW#TAj@ntG%?jvpKi>&0o1iw`X=e zv(?@&BP)$E&j$qdCcJ4(*PFV5W{NOzw3!+*)4vG2as#L?x@ z72z4%mC1I^v~kHbTrWYKW?b*+O3}^Qb%RS!Q_kX?)|o|`X-UTF--OTc1{+k`^)@$c zH~qs!7!5HnD^K!Jf54s1`n!^7n|-I=R7L86q_}+KnSq#G@SbMMLh=is_(lAwx4QS+0AT&tl|h7UDDnW`av|WBZf|LrR1o z;D@GTzw5lb?W*Ft{^!g^V$I4NUE_XPQvD@8m!nDJ%{M}I`)^h+oF40c*5kc!3iHm6 zqW_L#$LSA;1Z`ED4e|^dpC6B()itz}+#H!}7BkfuALquAmR;^HfEE|la%*4WaE(*l zT%4A0ClkbX@5nw4*@Nm@e#s>3$;0l$mPRBpnz;~7ws90`F20UkMiu=emCQxsn%}vH z)Enei<46=_4yvUsb#h0wfzi-k%xrRyckYi@z3)3j29&B7Wq;}A;Q0gP+wn+#x!U}_ zRC=GmPD3S^{2Pi#X@SVoF=x$H0(MjO~! zNo{EQyU+|>Bb8sOrGLwv+&^@L{k8}=apeOqANMg!rLec?N?;_rHz9~*!o=e-&KsOw zAb6v&7-DuVYX;pM=8mFJIBZ&S<3i~?2W@EsUwEhN*j%&%*4xgnKh7=qqG{SmLXM0` zs?E9HOsKVH%F>@Jo=I=6|JcF2#a59Pnza05c?Q53cKwJ|@e@6VwChfrqWnurvs4{+ z{Y^TrH;Y}de>n4f3A3=kW&A^BWy=s6q>Z*ax=Z0ZAk4x(edA@F;{Cu~A)o6kXX9mI z5KB{&xQ)IjJE@F#W5JVql(K(#JTVWx%l3IvmD)a!>qDboNx;n~9H`j@j;24Z7!_RZ zEX%g`C-!1eP4SS*4yA zKRs2$Hp~So(_&m$;IdHa`ex->0s zM;>qWGvO?O=`7`Ee7AA;sWK*=MSDG18y*}PFFEB~mU*snT?iLZj4f+8L&r<9qc1gA z*b!4SW#t|kxESR&p}@bG%EQGJ8P20Vn*8bSe0E!h*&n}LCZNd|lm21?4}3Zc1qO2bVbJO_=p;8=M`IAsLkx zpDrL!rSvnT@Ri61?`tceQTb4ahiTtTZrgm4I4O2%i^NE)*Ry#2Rj zS**SG5iVa&`EsmWBn(cqb-&s9^{`2!%r0`au_YZ5t9gE9;{!dEx(?WXXbR(unD93Hi5m-3mpz8J{45GX?*vFhQH!%ahw!BjF6jds600KwcQjr#coa*<+m>uXScHmzT>a(J5I)T#!vzL#WpEl5 z1U_$&7Zm8Z`OAq!wqr5eW|A#mp|N?r@~JDQiLO6c+r4{GKtox&7L?GLW2vw0Wp;Hd zXqle`g)qC@X;cI*DvT*+2~!(*!0?@?;r`!VuvbJBMhDpa4LyUX7tXJ*f3(u@n+}KA zOC6Sp&CvaBZWDj2Xlb7pno#|;KairlwIWU9{o7KP7rWlqx8brEKewYALJ|>w?54pU z%@3CTk~59Q)Nt=(-;w=OszN~dZU!~Ucj=ceuSDQv|G@TcRv%imgZR6bN96l_zdE@K zZ!J_76?j6>ptL{=lUkg@OQVhXTQvqr)I(!T4R)zaPo_f{881qUsSgV4RzjPiR5xC3 zDY|BoOl`ldeA&MGm8_;gf4Byzu+CsXpoCoe>rGe^CWZ7f=Tzr-H7n9k+z-sfxmQ9F zv5nXLC~N~Wf2oj6rvzvGH0uz9EXhY{L#xNvQ1bp-dbD+NlA?3CZ%KO7iDCILBaN;@ zc^5|SXUNk@XvQ7(4qBCaWK?2Zl6#`&fugr4%z9o*I zm0@P&8C-fD{f@epVyaFoT_4XIKCgFy*apyz>p)UcC*eUT(+!L(SR?vg!^MU&m#sq z$^(YaZHi74vJ*wHPs=@u$zSvL&9|qNN@Le+6b|>7z>3K-jQ2Izlx9;`x(apJXIcBM zYjtQEzIasIlktN4({yFyxCg)Y`SGobHHUJC)-xi>u6T*n>6MIk2OUaAUETc*q?-P= zjqvXeHkCgZjgkL{J`MW7xsto}C52e^GN+5v*k*E8e+;sM3w%T@XIp{Cz()EOoE{mrjCZn+2A zzx`Gs*c@Q`2{v5UIa_?JzV{Opqfel&lgp>yO>aMNmx(uNI%n&s?uQ$Zh#l&~bF*ie z9-5tjh6c9Y4)q^DeiNUtH(r|Z3vb&WI{EXQqbtXA5z>u7CvyDd3Vt? zE_oacPEpDDTu62IrOm7K1QcfPDK+iSgFBCM!L+LTC83k94>kI2o9M&Bdw+@ZV!~m< zj=^clW4#}wSD`taF4+Ya8F6`1nz@0}w1WPvl^Q%%5r-HOR;nt5MoMwNHHkdKh~JBrRud<*$!N zYec#8_>J;n->XZlx-nATtkW~Et7??Rt(G`7h)2_9hUsTe_6SsF7&qYFMrC~b7}e0+ zrH$*Q3LRJHB{Uq>xrp6-QOQGWyV}u|UeIf5T!bSpucHqa6By2DZySrLSL#s{W^6>4-JPrYpm;)Wjpo*EE?aS zKMNa5r+Safhku$4f3Azm$p!Pjs!In3$ae~HRYelV@cUfvEr z{%#1e%uS9c=ZR6bj%0qgU3%ew0fle6-}2w`)J7C;;x_FI_fC#M`vY?oTO;dm9gobW zxH3^Ajk`^EOiKFu`nGQheM}o)iXQaIQWAwr)B{pqpcnk*P>&@QnE%{;ZkRvHayp#X z_Zv%=7$%Eubx57++!-%HOs(lDNpEAb{DIpPw%_LK*&p=(!X30=D`Utm zdS4{pM^V|_{XLxeYY}uJe)rd%wR6SyJxF1qHN%F)ldDU-+aFFZAD@YoIJ+HPYM4xE zc}vJD`;VTC&zR&&Gs#ykUS&HRl&_;@mI$Pc%34s$>bTe`u)j>0QS^Fl>NvFX^*f|8 zC3v6FubI|wj#$g@-2uN?12HMy%9}$J*TZjPu!S(L zgT1A@t82Y-ceCZdqV2>ni(vlS&~_^wN_6y5-P;)3F#p^g+QK<47b<@fgU#vieFhu8 zSGpZ$s)pw^yTj-;KIYCHcu_F^6#nNe-#>)p$-Zg6&r{NO;4syGx7%A;f2i2py0C5& z+v1w4d?oEK=D3;-GR!wqkptDAf6d!Vzv{sbi=6z3`6cxkt!khLf)ZvNfQpE}j+{|=tp!Lvi~rMq{?!0o^xz98MPZH+ckfxWxoo5XE@{ma!mY;t z*q{5)H6Ov?Nhox905h?ahrts29|!kGaJ@7FBR)B^4==-nBbK8(6Cl}Ru@Hd&A6SAr zSqz2}BJuh%Pr=!*V9_mh&Tezu-mqI=ACLO~c-#pbb@6#+G+*|Zy94Bs?Cl1cto)MC zgdpMR1hy>(V~y65O@RxYqwWr1HvTX8b_G8GqYTsJPKg z1af=-dua?eeiYo`L2&hL*LOSfUEcENa=xgXVvgXSRXD=y=}4du@kNAGL}v2pGF$53 z6HH285)?8~Y}q3FXgx*t@p`&s>;FA5+3$LLiE42CW$-E)!M!vQ&w;bm!#0)~U@h-3PGk3)OSaG&!ixZ?E>-7ld8$@9Yn({h(&| z@Zqg(_fqDJuXk?^FXX9x?RWm9@tcUjP(>j;Zk1W^C;fP+l{A6h|AxUy4X^TdlvGsa zN0-)%nwoznT+hZo5n+j42$M5Y<#b;;bW$VcYdp+fXpt&WTL6OijSdWK4mnguvDF>!Zvt$ks^MpsYoHxYyhmqfhbUT(|-*wRZfTS$T!oc%)lW+G7< zAW|U7%z6XN!r#A?iT@Ip#`%yHuqw3traaq*h76B=F1YDiIi$5;52&xN=eL*AHSu^k zrmLgVR$eZiQV&Vn5s{JhA>ugUoQ9XXv00l!#>W-%j=E8$83dNhKk7* z=an-Qew9#!Bk2$YBa+A6z)mXoT|Q&Nr{>@c?mdwHTyUk$fIHr_2s=l|HNIPR+FI`t z8=;n=WG9vAQ#TXMQz-{MUES@0UAXCwC)3ORf!pkB*4EYzvUhdWfqWQ_-?nxaA;drm zY!qE@Gces>5qpXE9RRBSrKkY^%HGG#TL^B#c7ZHboQvO^M#+6yyq0)ZfR5Xb&Q?#$II~^OYxnJdZ-}a_L z`bx8}NnIAJE58_e=orvT3^6p*1zPfgL)g0)Crh;D=5B^IkL!D>Lxmg7=x?&sU>g{~B5g+wyq)KR5;cRLSFaI)FbUL`(nvJ9G-+@weZV*Z=FHNYMWN zyZY~wxFHHX>so#j=Uyl0S*Z}}3{VPy@BNGhfUwQhkj{1!#{#7S~BiA z3=;vQ)p3m_s^hUu*`>`+kx}SQ?e|~u>;LEew9SFTAcd0Y@k4<$v9TI{`@0UTL2ghMS35H+SfM^0j8&b|nf}+gDbE z8e@<*@(D(M=%Rl^F!?<*Y51_v0ZPWT0s`lt+vWc5%Q2H*UY?90kRT;m*C|I283@`% z59O9_Tdq_c(|^|g@u1SNGw{Wo1U~}IG_e!huOvqaBdhBj%Vc!AD6xTfjj~+cc%;iU zjyqd5yK5{*@wEupcjqso4oB@UE+=^c9%oXbBElHFLa%Nd_eZivLu^HH0&t)Hfts4x zb-sKON?losqjEz7^zEVDILr2{`c2nJef#yi9oMa96iK(pysX^?^ElZY{_gz}28kc8 zI;Bwpem8br<-*mme}6snOfqKNUFIR&5aG<;cuUVC_5gqq(EKIEDFZlS|tyCVj7 z{RLy##`u(k__l2FPAAs|c*=8>HT*{T@wveEHkOZ9F32y2C6~N>TnWuu&cYR^f1Bh! z%-s`c)!AAj0LD`{nwb<+#)DAAErj5UDZ8UY<+DTQNkn9) zG;~I6{l-cR%XYlRtuK>wcE^ufv!7ohLbn&(!tDGXS`?QvVP;w_Jhy_QphrBq^D@IDV0w`B%a zk1{;)nq;spx=48D`fRr&gVXzm^<9npsa%x3! z?d1OSPP6=$5K=PhqJ`?aQWSfyr~gGwuWbCKjv=?-c}k$RdD?A6K%S=X3pMcMv#r4|W zTp8Hu@n9%s`3P5<=o?u_>0hvj>FGipC*)j6Au=h8`T`U<5xDnBJ7p@95L(YFwJ$RC zTqSF_5o*^M^wsfV-+)QR$2U3a8L#76;< znL*EA7k!nzm-`;5Ovm_(Uam{4Ztqehh5Iw^=gvUSa%TY2@5m4`fmNkNUR#=CXc(p< zU1k$@X6JTNFFzRhB2eNE9jYdMj_Gm79)ia_#er6(e5o0#Pn9}D?cgZ9d{G&w%X1y= zM8kXUH1hA5>vDK7PoD<{U37<9A9bMC&jKYoJp(&A8{wtv;ggUkiNByDZ=A^;(2Edp z$teJVUb?W7oU<^nyXldu476|(kwv;NB8$v`Jt+U(CfSAPRw*N~dSG{Zz(4LV7BvAW zMvOy-gcOEcSFPtuV$>E=oa}F%s15lGc8@H=|S?*Q$9d$su&o-sZn6pl4$?R=OZ_7?JnQky?Br*N%+tYl~@OTSHXs*6vH;aOxTSsgq8^fjcetu$>d;%og5&IY)dC z2&H{st8w629GUx^%K(ELXOdYF%$to#1Er~sN0Eh>vF;q4oo)9rl*%(shomX@)(yWfMw@?F_KsL>=@iKcIbuUq@gJ+XEwagfpAu%1>OS-_D;0;&B4jiU| zNEb7(3VQT;e}}*{Bw?01&zB!a0y@^dw;y9*fYgjZCXy)pet3z38H-`AYXSLKXRiLEhdX@40+O>Cj?$hG?D=F=^Aj`4{&+~SAV_iV$y@`c$!PL& z`J>5SjBSPhk11@SjUiU`$#ojT!%U@?6f!D8|!Ecn_aH4p4hpODhk ziRUtSg3oAaNvl0kX?*Pf=86LzpSkE+HS{6)CB-t=CH`ky(aG^PP^Di?)`2j1EayMm zaHaGGqo6WygH=}DwGZ?6K?Iuv?CM1&dTB#g$~QT00SFkl=$rx)B%!RpnG-*$6?;?UwJJB}X_N3$ z18;k?`)Vev<}?~K34E7=j_=vN34;6D++6;6W-qFb}wagMsPk0XFT|@fx{Ps7oZIz#rA8cPG zWL)5hfLn+C^fXL$xTW(~kq3YgN7G2B zJ85}`YF;q?WP1u57-pap7lN}H`SNlSoY7=B+DUY@cO2+w_IsSssWTb|-->eBT_>s7T5$MFbx~Y;XaJL z4`Q`+8GwvI$WPH!nBbRjaDV#Upo$7;1D%gsN7VQq+X<6%ou_nx;c1lP_rHt7U+e=n z2)_anZU*WdLopfMP>(tH1PNmi$P{;piuw<~=X8*96{X`AKqzYTx#9YbV#;!mJAlF7 zKwvn$2Zm{y6~!?_42=||g7D4C)-T4MDNK`5DZ{>x`SPZr;f~u>b0|weBC2~q%kc4d^w%$ zC$)yRNrnaO)41q77G}CCs$eq&-Sziqbo&)i37#4JO@01<-*v5Do5WkM{Z8W%d!J@v z=Wa`~VCA?4ax&*{yqsi3pb!5E`rHIR9$9IH@#eynzy($QSI0%y2EBkF;_&>% z{|K#3ytno{0M{vEgA0q`(oDN0=b;Z^+D@x?(Ka6jn{SU3NC10f{ClntM!rpweZA?? z{sSeco%b9D+#FW=UFK%o+-sN|ZvDs5#oUHgVeM%i+f!dR9l<$G+GGFlD`%k+*Lu6dzV4iPOHD!yr6mca`Z+!WoEY*OYF%IIidH7+ozlv{2q#@p>}0C_HVdO* zzG@Te2bq~$ibAFOB$Uzgxlru|l?(y_g$6EJD_d>8{Vd7_H~Y6c)9IFPfuRdJqIORn zS2bOJIH9-_KCpFX&K5|Iydy#7V;*}u+O z)`Of@FNRXc_VaZ+U);l9Z@=6o=y^Y*rB=T(9qq?VKf;|ry&q~IJJ*Wkp#cKtmeoFk zyQkGBw{g2W0}R0=7;>;lElMxyGYZ*TTwI<^Eu2j(cx@q|sng$kg#wd|!kYNVQRn&C z$bcKWKg6~_mQ$8*gm|onRHqfPFz`zzeEbgf5mWI#)g?DI%HvCou z`W=nth7qe1U}z!S+Nl6l0W1_Hb@vlh+rKE+)c%<)uN!*jn6b2G0``t09VT2F_}>B< zZPRhf7h~;#hq*P86DFBy z70(rK$@XI^L&_Cn85RWYVbmmMS~1C}T|GgkTK-N1G(;i5blze=|7;+BYtV}d+;d3~ zAU&fmuQMm~d+ct9`O?Kku0osKTU^D<$}62l{;D1;>K=T~$kP<)pG+HX9%;UF;f<#6 z?Nd|Rqg)<>W@F%lJVo?`;ep`Sv+$ z*P~4`jR)!>YFN^c3#8>5YZXsZnAM?M*hUn2#l*mw|nAbW* z0c%gf#4JnQB*$c-?MXtc!?W)J42e+M{&2(W6io>&zX-%3 z$RT=Z2uQALD_kI`T&sfENPz0ca8@=^`)Lh6V@;yM8*hk_?YYk)ki6_HpA>i}w=Ys3 z0#Ysp3UFZ=aNnGHQ?$=h9KX4v6+OQCZaeGa?UGa?w@@T}E<-i(tCX+7y$LW4 zk(BU73c8S;FHpH}1Z108$^wXsXDU>u$jiFLhpT*$&x%(>o#*mvMLDzt@?oY|Qgq#9 zW9&W+x8ynsZo=4h%kK!8ynxIP#!ry2ni%eF`43lsn;*_4{|B9?>LN6@ctNa;X6Uvj zj(m!Ao=o^!ao|+KHxVe^IEuLvf>cxh(ghBqqU*}mDwD!Lj)SiddQIdtH^%(H^JBEt zXNLBr3m!fcLVV36)>~+ z7?@D}+7G@V@+yr2b7+P9=yju%hwh@X-Yt*6YsV+vkY=;_tV zKd@w+9F)L#@|SM3r>%-ImnP7GE{0o*%wiZLST*Mc0iqaaLdkD=P>ud_vRR2Uh$r@_ z19;Jd@s&Z?;UtqnGc!T0O{Eqhm4{+#-{SqC2KdDd8$+-T_CzQ?3~#`TT1&)~E6FoE zjlBG7Mk4tte2a=jw0EsI$55}3wR{&^;V=xew(PS=CI4h@UU%7ctYI(}9Pe-VTRUj# zc#Y+ZZB`vIhMN%NX%~t|eIJY`zd&CxpQJ@>5QN_*Gx9S&VOOEtQw@_|i!gTxNmS|W zxU2~m?HMqG-^DRM0i81j@yXuJPB5Xu(=Jl83$zb_so5UDnq~DWV6&1+EE$udOML83 zi*6wGO0v~{jKzD1m(95eM~XnS=P3xR)R7Od&dSDlN(oN4b=^092DVFMTB6Xk3KIS!j^+gcXRVnrAojU4X;SV)(W11;~(F2FO?~TE9B3 zCuy#RnUE!QiMmG`7Dt?|kzuQ;;l(ziR=avuEL8^_isHS!w<{@%~ z@E?qiE&T!R%e^hVjla*)fYm7%!(7kWFN6S(}vE+7R4PjuO1>%8^;zTTGTo~(iCHHyuK?pLO!|p>{;2UG5N3DrN zlJn40kY>s*x6fYNrVxV}Lvq;{ITLbqZj1T)B{yg!UYY=HfO+Q-4xl$K%DexgHTHHW zBG|$q4>k@~Fk_MzrlLG{obYy`LC6QXvmCt_Z}8rF;sP@6M3v71Ll_I($-mn$irL^uafT28fOmO zkFls@Ed0oo*^fT=Deh58(T`Rum{1XAx`C<9|?t#3} zvk-0<@5pfe0A&i`eb5HIwp1lUd|!ZtoV(zX5ZDJK1Onq2B0EJ0DtMmOWZS^wqJJAV zAm$8a2AdL9pDwY%Ou)jiT!Q^&_BXEdvU0E{Z~AU1S4y~o8GW?ueBEFLTwkZIZG%Vv zhdTVWusLICEih<1oSZki{gq6THreMog)C^ zZ{q!CQ|HvCy+Ijz#FTN1u26b5hV0V-gW=&YZgB;|4n_Wb1kT$V1R!YAM%!+XL9X{m`h>=mv~aS+I7S19498R(x^rJ_8?9 zW#?=2mbJO}wU(W69jX@Hb3~X89H^-oH&^gHzs^0^-NEtWBf9DNGT9$SZbGm)iC>Cm zAo*^jtAlbxX3EB{%*t)Sz!eOg{;rJO(`j7W`Nb0R*x?k>9Qs%}k($D^4lU+!7`PTw z6Y2VV+=j`vQvtbW2LVS{!i`%sM?TzBnlPrLd%ObXg=*ou8D`sU1-Z=U#bOEOawW`* zTPo&_Q-OSKRG1xUk%taIOed{Mw^xh(j~>J1+}s&bD~K+kl)^6f7xoT@r>ETL zIop}JGi@=4kltObX^aT>fQz-{t!{m{K0*%^0;Ce2FY9mY{5Ik=qEo-X(5e_My!)2S zDV*F+_VBYY%deKTJ2HRu#yu4N=w_{>UL(56CV#c-dS+^9#-Evo=CZT==57{Y&PuEIm^m~DlKBFSUFz?+X12-83^WhSytm4bYc%YAzv&TN zP_@z@f@j5x$RN?9h3H;jkjNVk`3>sl>F_&w#nUma=bEGd^3;w@M6wHj&b`VXuwsdb?b-5 z%>r=!Ld^Izmo;iKHt*6nSqb_EE^5S1VR+^&Zxm zIWU=HzE_=i(7P0T^wH$Cm#W9aY#VC@H8w;#;@ovjSVmT|EMjDj1?Q`cGy<)IMOk|4n5cU0BP#VuZ6=vH{MI$; zx<>BtwYfZC?C|a3gsI2VlozZybD!m&tf}<%YNMKm4Ak#Q-#6)R)5}~8OivMOjX7-QZLddvR~S4vzo>uX~DLA z+n9^EbSb9vh`LuZJB*;(%=0rP(7uyr15#^vyB%y3goBp~;kZgxO?z=LywSgN)v0(5 z#n_+|Ln;q+|Hp#|UXqgUWlPFNlvK!_wOoarpE|&KBMkh}uOOdBT$%$;n<#`}AaeSy zP4T3lDN3-l`mxoQ4}&kMx3vs(H&sCdQPw&MLG>rUPadoI?)`MJxJ&EJy`rcir4q;7 z=iws(GyST;XBn$BO5K;$<&}#8c@}#Kj;G04c^(Elb_q8du<}A6>RDiV&nSUFLrghzQsp^(aw8|*JBK@Z_Zxl?u-LWh=C^M)PHri; zlXJu!c72k#cX$XslHZ4B!;@@g-s&>IV@DDm?)~&|1;qQW1U0`z8x_Q)o+CC@&DLJ` z9ayP&rn>(v_Bm?*S7uy#YR*a-Xo4LXqUrIYweccoRd%N4O1@fQlT(eY%H+wt4NLZm z!NUWK_Q6jVL4P(XL*@I5GW4TP#XJnp!BtqYG=Wc_*bDd>3XJTU^x&?QsmRtMdq zH9xFZf*`zdQon$=M6NWeqUf8OTP!8b41cmavZ-_=KRHNww@pZ8jzYhEs>a09NU5DF zM9pN|2ja5UZX@K(59%cTJ`6GqZDE0MT;}+eL(|f`=?M9_@6naLXGTId@LRqgUc6%o zRtD#M&J?*+uoQ?i`jZfsLl~cC&9#k2QkI=^*2qz7!0N1!g2D+K=^JUI!#>}$9qBo! zv03?=2K`abT)uk$8hl7Z6h)mH8L)XL`1|Udk@wh~EXxGTnr=5p?Z-^u;rg&R;b0s_VZZ={S?Y<*SUJwQ47W7T}M^o?4d ztLP`puGacw*SJ50!%-!NF6ne61^1N-lpJPWUETM}dukx;_t;?jkqXWqN#jA^T$@({ zFpsU0AAZ;pw?!`M?PxQL)D39^>4$O?ab$7sPr2?rEHcOaVW3Pt7xBJBcq3bm=1J#C z!;i~$+&=nI7nqA4O1k@!IL)!`sl`(men{)FaAQcEP@VWdl8$S*MQDi5osfaBE3w8qMs}fmv4l)(rc2ApM9%IDBpqxL zT1~{8uYH*l^s{y#M<@PP@@+xN=3+IZV7|qx{erT2sdc^?} zx-)(CTK1%dlW@;L-FCZy%HwpnKL|KzlN(4zk!ij1hVM`&dF^UtVdFCM+lb|D{0);j zJeH-}hM?xa8KJMw&aNu%givA1K1-(`mF=9jE7+itHq3W_dZ=^1^Th9qx0)i#aQozv zzO*D<>cBn4>n}&2^BjI`wg1~OrHj{e3&|&@WQQ!ObFj}}6nzW%F7@4f(cbvNT}fq$ zO!T5{d@)x*o^ZfSfCMv*y8jTPu!ioeE0*OTu+H{!WTykz4ejOvyEkW)uw12y+5MQf z4aDpRv#{r^lh0@ml9MtfxE{%C)DYp_Mc-?+1nmvN_Q82W%D%BKQLWPBQL3avtMPnK zj9evh#w$q+T{<6VK(v}-oKu-|u={{m%jVs0OpjIhZ^DO8?y`|G>o0E;I(Zr#g!8sylF+fd4csPjet-KX(%-c(~)1G zReCo6z_{0qg)}p_=(?eb-kXU**BV6{i|8p@ZAqH(tERnmxQ149ftCl!#+O=0oz^DI zI$Tc4OmC4>(*gdI=qBfDd5#upP;!(1JpS{ltRZbO8qW;yT30GxuRhxjoYo)xnH%X9-wV>;`>q`m38B!fu>=E7^voTY4;v+gfz zRKY%K)nCg4t0BejG}V90p1MPx{+yb{e;$Ot=-)GyId+U8G$TJyAW(0oJL#DdM$M%+ z!_y4&*D7=Hn)!j+$@J(y&YeHRKHv3tulrIir?$zDmwoiq2PdF(T`H$S?%Y=iusA*d zH;=Hf+P^c|;kuW2{F$jZk~vTFyPL3^vw~u>MDnpXCjsd3!AmaeZU*68hr842-Vg97 zM)E5w`sukGC%5i{ull1{m>iCearT5M)}`WfeFryUoNnNulFPF3WPQVLW%k2AO-3gv z#;*>I&Igtl`i5eV`&Z6j5MN7oe>v6TW7QiTakywHyXB_|-CSfNg-9s*IJesaCWmR<2jR}-Ck6tL zh66+lYr~DBSG<7Zq+D5}{iRC(>J5{DC&^}>L{HwEvbrzH*y)KGR7I0~W2Vf{nnOKR zh^BLmqabSDXrN5S=2Ue&ybHFhzNvE5`s=O$*#+K>t0)i~}@wxM0NV3+7=SSi=v!QvYR~8xj~^0_ktMKJ2QSBk z0$1m^Xl?U}q{iWK4((`Joa0h(TQr%NL@pyVHRiprh8hUCnZG_CRhFv}EBAS9Q@2iQ z(y>Jb8M7JUx&yf-F~HnkL`k6W!19_w_6ooziY`xv|V z4B>hY;H5!57y!8hk1~n3ZQs^gtj3|8ffaslc)hjV6ic|eQUY5mZrN0ZoaSM54A}!v z{B*igIUSd^Lo#_gTV`@#ov5GGk>26ddqWWQ)PQ(4D4N!N0&?;7@EC7ZHdi{`)up9k zS8sG97FSpS<(ztd?VcDHAMErs@?)3&MvRdN(cM3By%O`IwB@JVioz(h*YSqS@lsh` z&U_o$oQ3sCY)Szh7y=t;G0#2fk7_qT?x`56wq8OY;fBo!aY(OqSk37xP=f(wCjTo$*a?SPI=E z=vy=!tq|`KqC4a$ZO{tqwADRJs~q*1Fs;_}_~Z0Pwrk zGZ?zX4{yaH_nAZ*#mnaF&$fZHasaJHJR2h;AsaE3ENofZD}3rWox$pOo)Ya@!!n*T z%{nBnyKzMoPrlyGl0sEIL=5hEgu?u1`v8n{V6E=}FQiKFXTPF{>0K9t0}D=E9>+Z5 z!XkYhsLy2q*9UXMD%l1hIbia#PwtO{-hM-!-A`0@40kmjS631k*puowvLLmd+bb93 z?lm5!5n-*f%F}h#0focU6axUL==ySC&uvz~MpOF+I9vvnYpRVWHijs2w+|ZA;e=y=lU#g`WwD^_Hr`!|=&dIQ=MFYPZkg-|%}z3gXrhL3-0@{R84o>f&k%9U5Yt6iIJ!rZ8nLNJjM2m#?7%;tN9uFCXaS+~ddg@IQpdo?wz%*}GLb--$0ODN5^Au+&O zr`~-F2=Smkq3;d~2lZ6v4+5F2UrR(6O;ZhM2K0kRi=N*NirHMAFTNluU@{CtOtaM* ziMdnLVxP8Qg>ZMWpd7qamg<&_5O`t9ru`bT5quv(Ge^40C|Q7=^yY%oH)-td>)2{P zy?zr6hmQK>rOPZ)$D$~SERRmZFQ*LVLn(Rs1csTmt<5Fko4JY^^ex<%;R&Bw4RNchG%7+I(Jv2Bx1l?nUQrNxc z(NNFBIxp*|mtg8oCiaiPewraA^-hH>RgDBQ+>&`V0f@M>ewM}eTJuS>#NOQXKQC0> z*H?u;{}P{1LLM-G;a}&6{AOsihTHd=dO!pd3*~-$k2L!krQR!NSYWu%EM8wv#Q4F+ zUtO>0{kkRG%P`t(Zd?6&t(a^q^!>v1(36c>sNHLV1>bk6$pdt-cByE`P6*o>|0IDh zf@YwW+X@OU44N1#K~K$~AqJ&fw$czr^6EEob`Qz>?n03oSs1!+*LLZ{-}8B~(oK3v zn4Q=%ylaX0sM1cF)p&1ze2)!i6`485u;lvWIvEQ~wO3+#kPR(a_r?*b`@2QvO1=b|NQIXbpp)kFtD7O*@AvwX_)}@@ZxiyZo-} zQ*^-iS!n8EHb}7AWq7NpQaQ^Oiiz!E4zBSW>do>g35^%K;Zsx0!ZtAorRm;xZr8AUL+I zL7yznl#3X5w#e`Uuf9ROC`;75zFpWcB2d=T< zP-8Yh+2`WYnR3>F6a{Z5Ni$#MBR$v4jI%Z|8&_j)*ak#mp66BhN5Y?$3cHyGANolI z8EPJqNX*Mu>YKS$ckA*)iG*YA`7bH`qP1!le;Rz$O4 zE%-?s*`#%PiL@0w7r3&~OZg=kCJ3icZo<1=(E^~vq31=Hlz=|;L_#V^lbFf^d)a{@ zE5X7AXqyX};thH{kBrbW!F|sHi*=T$SJuuNl(Cnx?WsnDjmXG1dTSClIQQ zH<@3HE%nU&Xs$rW}V;t0wLBSN&d2h&-D11p>DMvk2ZI{b=ihJ7PmT zA}dD^ZPy^=u_@ud5!`8)9ed8$crX9?>6!|n^!#F7=i@U?60D<8s<}Sm4F)Or7d8oo z-WAtGVlKmJpGsHZn{98+`)?{2@K{jB*)>SYz<1Q^$5ZQu*&5 zUJm_U06LIy6b8aLjBd6Se2J0Rn|?vf70uAuQQy_NlKk+gr%0dm?KcUJ9W4iAY9^V2 zpQk&b*52&l(xC5IpK5dr2i0vG+HGrHx%2&$Gf&FyVn!}8u3e(?m&;t19BAwJwYVM6 zcfoWZ&X@Co8_~l#RQ}`+j=mt{J_tAo*q*IH?P5#^LL02@n!zB~|zzu$QZOmkdaWD5U z7s%it^R$q~Q&wH5izV5ci`g~CJXk!JXeB<0DOhKi4FhORY zE1$9Ky66C!<~7}Qg#*&^pR=M8lp#(BE2#_}0ygeZ?yOOw&gXkb)0TS|w9sqQ4ZewQrvJp2%h9A8seQQZ(=Si8@W*SQop@RloO-tY`}eS2CWzCZr(itQdkx&1|8bl<7TAz z!Y*-bmD1zcnT1+5S`3T_U<=iX_^?MgyoED#Cj=O<2vE3PIDQNp;}I4L_&IT#d##@& z=$k5%f64~5?Js51qVf~5!@V|z1*4KN5bvav!|YVdWz)fDTaehWg*^L@@cgKrTXLvJ z1G&|Jd00Q2s_5$qrQPQ*@v%Bobj?8Y94GRnjkx(fQ4~$lI9x=w%d~Ts&2_*G*<5em zVvBBG7U2r%4;%al6|ffmU~Xd7Z~U|mlj3Q)w#Bww_2|6w22r(p4WUDA&V-@&Y{X>JTZ(wb%2$GNS8k-YjvJrMCn(>|c6ye6vAWDC@KY*Q`*u2#dn zTA<}JA;JCC4=e*5i-)^pAA&Q0+B{p%GNWW%Zaka7E(QME&d0A)?FQ^RamI+t#C(sg z?74}p2kN=`j?0GKwc5(ax3qpTGfwa>D)<0~!ytU2Jr*6|bjHpoH#46((uqOX=jbB2 z)qnHdi89S0Ni~Yr;a3M{S1Q|;mn<0RP2M`Q1E2uncDpRChZwfX!DikLK>;@JI=VZo zEA&1`U&#I=$Mt2OJMV`}qk@j^{|jbowZ|qOcC$l~lP{D6-&ue~@~V|cVD>KtCo3JE zj4B@wy8L`oU8%Qa%3HoM#t~v%Py?qd0D<|}J65}12?t;1LLmGEKP)UW4*}ichvMC) z2CFrH2HfyQIAhV5(_OPjux?gCjbt(|rskr2GgX-OHF&6_cBZ;mq??MlvBW)VW7I3_ z4{Cz8D^@zP2lu9zV^uI!Geo!2)2r_{bi*(As1+Y+2H7*Cd_>NsOle?od+K$0MdRp+ zY3r7U;}yC|z4$oq%d(YC8^u~%7CFuy2$H7dtb1|f?tC}QY8_T0Bt1BVVrPz$tIJs} zxK0c52j%CutIlnuo0S#@(wsQ{-dI{}NPG3TbC$eYDs3;wpn%eH$aNtOD}#(^$v=Sh zYvE!Fds2;6lX$F?US~2N#Q1r|l9SlXv~)sjyve_+Wl?WW>!SsIGjAJrG&!T|pP=UV zv6Tna&R}n*G707(9>j$6{B1yS>~h)tQh0x>0Qz@ktn7DJ% zunIqP%zdq<&v2JT{E1L@X-c0Z=49CUox>&yzezeM`Obhfy8X=fp9%^$&4#4jqdvcz0b3jgCk zl2d+x{?uDaqAsrYI(BY86U^P)S;l(Xv$L3;>lt1O+(UBoH{upgFS}h-8#l(LxPHLH z57jpZZWw`rhl(6K9G{|(%j_uVe_;ffDj>YM-}!?DwrPZQD5x>S6^Mlt^u-|-%wqc zY5uN$3A~zQWse-E zYybDq)PYHlWJR(VEC8c)4ART4I{Vu-FrOJ}JCY|{>AAt?jMl}WO}mwsnTwBrJVEft z>OfxIBk8PM?Xdf;xrWS^M|fmdU-FS)@eqQ7bb~ZTKBRaPJy)ZvuPYpcxg`MMC z*A+jIe+NY95dp4P>eta-kQV*zc!}dvq?T43hblZtn4xQs zgr&m9+iyR`OHa8(^Kw1Z+hgsx8WNUq(cfw@NbBQ9m(CR>zWJ6u6^z)1l7> zX=DCnrrHWD3P95nm50Q8%%{;Nn3>2HCu&#-mnGd4YJg*}89?odQHj#uGFVOErawk} z1!PSzZg!vI2D|`ZHYFJuv=0Eh!@Tu6Hmm03PpX4&gkE%r0GMGUh9Kd9_YIqV*d_D$w|=H><1T%8#tU;MEz_s1+w zcdcYRVi$y{&97nyj68n9gI$g@Tf25h=UC>zw}%6{6AwT)a4-jtr2M{PBD>W)|trloGa{@FYy!X?on z#H3qmd5(*Yt;R4w>K_*6&_=3;o>#r(*&k_yItZYt)9l@UVQ1#C(%2n8*p#FsBl^UK zSvFlanr6ULEGv@fpgee)`Z3^#E;~u)+C3f=JY7b4MH{S08BsVqX%}|GgyFokBu1$| z@hIt)y2vuSF(exBIdPVyToh8lI4dF3g*`6G6HQE=@ba@NLH-5x=3(b5-P8P{;nX;7 zOzg9szaQkI0?g){pAu$T!TOV0puuh$Zm;W6v%xIwNpqGBZ&K_k#feWXmP0k#ONrfG zp*1(>P-0`-qby{N=NVHnIWYdSRmo-OiJBSy7g*E)cL02%0$Yxy6Oa0)|H|Eadz^KT z@`|D8Z*@>X)!?b6!)0T_MSL{iV%(_#3~L^Fu+i^|z?*elq}|@IKq63Pcq~m)isNUo z698s1O}0tfCV;X1p+j+}6`+mrUZ!Vo zV%kJ(W5tZ0goK!|$!tC1u${HN!80*??xVbBjTU{C*G0XCTzK!thSb|PMjA2R(UNUV z1JZPrS!9>T%mq#CC5hm73Z6O}H=?^d=Rtn6N|*y;UI#jU^hp6`uaw)e`2lp&m!^P= zTJF3du}3at-c=rR86a<2N`1ZW!!AfE_L3--4bMt=07%)9Z7N2cD(9; z;QD(P*_b|^g^>LESx=9L-w4eY`)U^>2n9tC!l)H9C+*q8w9)q((;vO*AwE)??5iVN zFc!tit!*)NZZK&M>e(*6ggmMRnVzni&YYHoN*C{(J-^bX`v3OHy174BP7|m+QH*ME z3iy6g+AQU9Ktd>a$~vg<5xjTioPIhbZ)bd%aO3$6hvwQCcTVeg#+LlP@I4i+8=ur^Cik`kIlu?BF`f%^DI)2uL1!By z>#%FrL}AY}yWBn+zD77drUR;6&-*08)#r*hz`O)oMh27I6Ya=FZx}@uf721soysMY zwIS4yRPqkfYzgkM?QLUI;ic;n)-R(Cr2|6`zLj`y0eczhrHXe}XN|6EDm1u$k(UtYAHiTWEnYL+Of6gbjvS zyucDX6rZet42JMx9aWj6Rgp< zVaiwO<_bXnqUQw}pEMI|?VR3*)#kh3RXSX@wVuAkEUzW}w!4a93U9bw#N4>aRC&?0 zvEH(XfZ7l9hYPm&+72+;E#t#Og=s&jo}`-Iw0N`e!NA{{FA#2R!IpbLJ$Dm(C)~h@ ztV-p-&5()th!S1RgW>$0GjzhNS&qlQg}eIGc@f5VtZfE|)6fGzD*L{7rNIa`KPT0;cry#4bWy8lz*64b=QJluLN+=i$(8 z?SM~jF4&7h(Qi}Sk9+jCGR22D(}@km;or!;WnP{+`vql{!YPG!)$xq&ndpcZykwoL zozX35gD~(LmE-zO03r3JJifZetH$5A*4~d|~_^kFh{_=G`Y5 z?9v>BCVz>{<%=BfboqAAI!NB--H{BJu*=WeN?du9x@muKr&m|*DYl`+Y!-5+O|KA} z_k_2oc)Fdq4ifkPAhIF&rpBYd49rIBKSmB5xEgHs(7&&v093hva(v-RC-d$v9VVS^ z5uF!7CA3pdEaB%?u;_R!#^U6!ICGDjRYKctJNA1arm36)qO5mW54`|3nR{5>+##Sl zi5^5C!o6}F*I9bCH#`1XrUSgy~a zJv}|Gp!yGp#6YG#c74iy=8uUj)!`Ve^rq!HmT~D!Ue}_={irNWPcjzxO)bteqX%it zW#EjulHI@9B*;X|Jdai9?TWr%(QdC{wqsiVS}16!WM%A|;O7`u%ePIp#@w)cOEIFa zG5R9A2`!d}0LQ5dvG>4B|$-h28Seoe7x~Xxq)w`ZL;ZUQ<+zGS@WpL29Sal zox7D6S`K}JDdXs;l*09FoK$2PP<$GMwN)unJ2N7zC1i*A$>e3HOTz= z!ZW%4xJ@mH4Im-|$0@J$-NTy+O_0(PU&MLFS|>rzc%yV5=p!7v?=`RD>e4iB zQYiona2%1nDR-N$^m|Qst4j#Vo<@i}-k}R)^_=WpeBU#EfLqdmI(eTR{`+U0NX>7hnH!Fikh&3}V%e`Y&hxtMgSMT>4jx#nh>*@GNKqZ(UJH~UP zw7X{qQj#rCoM#)lK8ecx)jrXz(#Hn4hhVSUSqh#BNk6EOCyKuloD*}=(<|bQM=baC z-%Q~xR33ACQAj2ap0^~@t}og8`CfULZ+KjLwjp=YxN@nAUi7Xr9=&Jc0RT4)gI#%c z#pZ=p_xAdP22O@qx?AT^Y}YO5_7D^L%3;jXCE8*EYje!Po%c!X>ThxN!hwPt!BkRc z=qRPiKOYEd0dg3mu}f|=Vwv+YKpF{^HALf7;Q_5 z1oDIV>w`uo5{W@vw6ms5QX-a@9wITP*$;Ul+M=Y?6;)gU>fqd_)eH5#MTV+VEN0jx zeXB8psFUh5Itq62V0BoVd$+PxUsUo$N4MpgY!a-%3HWPCzmZ-XMhd2yUOpw z?0`8E(zES?7A1}}R(*XWsB1FgCi#9vbS(HDK(7-TehX+5+jD(Z3eU4&_n zW=cSWi*ji)aB^}5rH?ubxUTMm5Te+#GYYf)u`IKqe~|Fe#A4;>V5`ygoR+jt z@YvBVxmyyAp#IE%(Uv}ojq5R)zUphC%mc(5q=75zQX^P-BFmTWf+pQ*<=ItBuHRbU zuAcdUqJCX{=7JHt#rhK`u{Vv3JLK@YtAe1t+?^%aA@>!BJ15z$&?-7g1oLY+21H#< z%kl`e>So$mjC0j0y_heWJN{T&aoBwvcy&BD-^0MwuG!vK`F@UvkJw2rb}^)@6$+nE zY|3vDa_p9K5NN9s($zk26=P&i+)TaK!g4;jQ)b)FS>^DyO79X=&scRAeL2{-zPUCV zisP1+s5BYrr#N^dauzUN`wg^PT=32>>p23Gk19DckB0X2buD*mpzt|*qpk8IKq&=W zeU_+${(hF~B0c%op>}X~*0-F>*J1UKc1?h$yddv|%FVfrktuZ51Bq8;p5xfu8vmzQ zMOcVc^q}9!?O9zkKdcO1qZ<0oO^Ysj^o$cYpkgKs`)7m29b(*W&@IfcFAf9QL{89Y z5#gyN!G-^=sP$Su;mp=@)K-PhX^R)lqa4G8yZP-MG5Y?X1P5uJ8DxwBO}O@{Q^VSQ zj_#UJpjAeV+#ebLl!!n+2{93qE#=~EZub=P|876fyx8vWeodc zBJ(i?o-0f0$R8Kk({cw!=$G3iR($T3iEos4(<~_azvde|Y{W@=HC7E*FC_8|q^A_- zpK<74)tw(DB(JTV?rnD+>m&3mS_Mv*xt{S&b**ko=CmH>WPe>DRk{M3?}yc)bBXjk zoeaT{S%OAhAEV5goCGX`Mh@`De_oKH2j!VfBRO6(Z)-QgxaNf>cqB~qpYMgrC zbY9Sg-Y4Gu{Vgf_h!j=j%ppI8`&eVwv6m8i498i?v>^gM4!M3NbR%ZRAEk%XW)V*H zNIhhqEyatE4JwC^=yKR3N|I{B#s?)%26*uyu#yHO0&GpZT{*%toO@-yxg17&*%U2h8SKr{FyVp0k($glVnrK04moq368!DARNLo}1UBMDHKPT_v$n9%Lc z+m?sfU;L=Gq`5Xj$rvfAKeR;dQSQeO+l!U22QO8WA}2N6Cii~xo>~oA?HY|=ka~p6 zR}~E3Eah85g3O+)g5Ty(fz8Zc$zBCzEJw$YxXA_-C4Fs{M2dc%qOXd&UJ$&H4vzUc zKQYkIbp#-CPPLiUj3b^FdrGSThS>uaCy7;q?$i46>rM*0c8}5CoUW@CGwpid79)pc znO`U=!#c4lBQ7)D{%y0#d=WW}<)b3kWHK%JOAZEXDhM1~l+8(2n53yd^I9I<^-rLU zEDUyMblv_DADr|@xxHLFm~-CwnD7XwLR(->F{;Oz$hFc#<~of;k9F;YR2%O&JGDiV zG;g{o#p^rurhnM^Mx{nl{^J}SkwfD_;#@DA8B(6ehq)sIZ68uzAQ3vYmuSw^fW+yk z_eb5<%Z$*~?$#STY2$v~rEYpAa0mEgy1An8DCNUh60-3^F&9u};zb$I6;H9sZrTC? z9H8=f0S5~kHfFvgM!qd~&|A6gyP1~9&IfE*O~kr0K$LcdtEXwCWo^t4r5b7>jn5-n zAYNx(VYSXhuh|VF)KV)a+RGgS-=c!pz@fy2!0+~Q;~!XGI95XVy^B5G*~f79MG%3sQI%SpVzlz>XA3};94n4n=; zzjLR*@#I~L4P{Hpz3LD09wa`nn1}z&dBOcq9gFa$BCY!>PqLKYa zVMCAPS_1le0MpCzx5&vvyXuO2*0(QNo0qt&ze=gJT0jmQ$vaKrhx13H11Bdc%#t{` zwi~x*9BhgQ$R^R`R06hkKdDWiD(0uM8DD_qioZGBCJymQDbWoOg2}{z-t`n@xa?R! z?4)psl5_8+i1VnjnuLqGo;bIMmfOz=V#CBNU07;vm$pEfu|6d`{6s~W(0=L>F9oJ; zMy$W)Oq&FNp3y>uOwNnPaO!aF9-HwZXL_nmaNZT)&@aU`s*JoP6mDvyx&c4kBTF&wrYfoyEW4N4t=< zB%$B&yay&?nL-@?0<;G4I>h@E1-eX-jbPR4`!DM7(}0G7QTqHfASC&Rd=o~-r)%Wf zkvgNyUKv?7yB-rUEPK9EhJ-^=`s60Uco9)f=WPz*x35oZ{R_0DS;5I*{^;M#rR~I3 zmB@;*N7vn2BYCbo*nELfh=9UawNuSobRt5{y3%p-V3WS{8Ha|6#4&D zB5hsL4W=4<>NMlb&e-VlNzMX3;Di3fXZO#byJFGl6Q-;)l9%qcK3kVa4{R&i6^T2r zKEK)wgIIc~N3SLTIK-~)we@KFjd(!Mk|Zr{ifp29Fqvy|p)7jg$ynNy3UkhAv4UKzj9SWH z+OU}KLzU$iiPv8BsBXuFTcyqo3mi1N;xS;S!qyL90e*pe2)^L0ufjeZ-BUnR>_4J@ zgkH8%I1q(mi_o3~@(o8UUscSD^dBa z{XOe!ubPfWyVSm2-~hrRo`*pqA%D!Gi7z^${hhbQeAQTFQzfx^;*>AQVRm|_$0R3Z zE92K|+_!cfR+2=I7#}{ZUn{>^ZE)qx$fn}qHg9jg9bs5}!;FYbdEw9OXf5 zR(yx#Y5Rgo@v7z})A*E;0B@@u;_X|1fr1_|B|rl*Vo4P~@oRL+Q9YW7)ek+34wW-E z7}2f}hNxXl9Gd~6DlGw0+sg`fA$k`;y-CWCP~>s8lUcQ*dKA>8Z%(sUD$u#Qrdzx;;NZhQ@7uHG)@O^q(p369&NT zfByQU#`dYU!SwA{rk*7K`^JAhVJf(@@Si{a`G={<|La$CX17(U*)|_o*%WwC9`_E+~iwkqHVkVli|Gj&N%_(+<`ac&RTUidrcE*W7_D1t5 zp8Kt>DNupeW&uGNLm*v-{O7F@YBN}}|G7->?XhIT?rfWt%U17iX>MJSe*3oyANaxLt-h*}zKXW%MN7KXyTqwS zPnw59{(67^v7z5zH^8%T7qO9ljekZ%qBEhZ;)@vg{5T9vfp_ z_s*}M2|sxB*gcXEl=OSYQTv^ieY?%d*MxFJvf(>T9rX9Lq2Xm_*;;QW{RZ_MCsTgD zNl{1D}l=v!?g7-F-!~Sr_TXs|Izb~8pM^lOZb9V5#jD41H zI2=Q#(|v%VtGHp=wGgAD?UbG#-%F(^VZS^L}oYf1;{?wFH6U)bwt{}tA3tpVXF%uv9grV=W~R+jRaG?|>IS~Nq@<*h ziVh4s{@*Wyl<9ZkLDuKGqI9Yx`3{JjlB#ME zXaCt%kfi7Tu7knx-hA^)29-)R@bvUdN=(#lwaITd+L(#Mi5+}0JzTSf1(+Av{ga??8tSi$F-kF{u>4;ebo>KaS63 zJbwK6;&~m0#;(VjnwqYWJ5K&JDk~=!S6?_OXm^h-_cucTyd81B;EP@-bf6EgFL}qO z{qoqN7NQ0zFF*;@n8$VhKR=Y2MZf1FP6wuhU&B6q`c(Ed{uMbeO&pWPTmu^9$e;){s342KFCDmc zZ+ry=8gDdkze4(je0%__U;Lq=TNcvQRn#x|Y*bHJTAbJ~{Q#j8WyVs3YkNTMv#E^^ zv=SL!cV^NqJ!s>(*uaA~XkW2Z;MSl4v8=zZiuivYmADs>>iU8j8X7WFa<1Xw=Wnyq zW9{1s<<87_xl7|^u6U8^QALD@znhnrba>`TWoI*?UPI`kGH%fuMVfpsu9<)zk(BmGWIQ!ob3OTdY-KUot$wsEUDf*ZdGkm_ql&V!rEf^%F_MHA zkg0N4y?y&OL)zoN6Jm=0_Z&HQ`>Px1XOl1P5PeDL8fdWr9~~XV)W6}O0}$J+52tnO zv7PmKVyPkd(l0f(&=xnZsA5P&q>V;JE@JBAu{VgbiU*D=9su%%EnGJBm9x{+(2Hum zKvR5>Hi zz+Xit>xYFbxMy>EB6Sf8fSFE6m;9XY5^#i%@Rhl`0x<`}`_lr01rmqw~%}kc>M8%ItAGl3uyv zHCh2G9R71vIypOci{Yz_$3{gt(qEngI#mi>hYx2L6cmsT*yU+}5ooaW8pR^5pEor% z$w*4Rd0smI)s3=ds! z^gpoFUKjmZd&>c8=c2)GAmp!<`&YUMPhd64-lIS!}kzXex>5rX&{|{_+U;6{M-=D*L#! zs=lazJ0(1z_?o*hyljQ@GUKpj-VZScQ$SE#q|UoZR^7K<(J(6#!M zlk{?UVQI7&h+{57B+LMf3+;~*Vlykubbe|z@lGibpSQJ6khTx7t=)gK>%cdTsLL8>0CxAkua{z6u(7`|FtN zNm};r(+z!$qkg!TG|>YMP{04jdsE{QTJQ#vZ{pa}r2BWjrh(Z{19^~y?WqG+%?F6L z%3QmaKqM0N&3>_7{ZiB5c;Azhn#$gMmDI_T(Zs-XV_p(*EnprTL-OKw+_X#Wz@CWe z=&6aOsD{?g%;8=ooY&|qLa6IM@R*OZt@dN^k#b*->Ya!Te}MP>^N-V*^gsTQxcb*O zd-m+<0-jOs3)sg?LZ zFYk^=C_K>w?TfS{jx?Uvtyx5hNc|u7-ZC!A?F$>e5fnreX#oWV6{L}p#z2&omJaC> z>6}3U2>}a~Mv#&ikj??5B$e(FknWBF=G`~vDChk>&$s96pHJtEGxxps+G}6yTCvyO z4rbEj-A+qQRbi%DG{3m6J@p-c;hBWuH|wHda{3jSZyf(JA?=9&V6ZBI(|sA4E)ds; z_rTlwNbnkA0F#f;&x1;81^AvHPm;`;-DVU@EY zbXo~8QBpOs*tdRSEh!*(@L?h->K`7~rA}b`2D*u#nbwRV%SnPXUS(@Pu*wcMVD-pO zDxv)|0GoTqTrxeANK9IOZYfa>@S-_D_QqAo+y^T?U9~faxa!xz9UeJ6A1nse1=wbMQO=v;-d!SMSz0ySuw;k#5;Z zGyO0p{Pv7&xjDon!hQb^LDyQ{vFlk)^B;5}h`8Llv*Wfk5B4TU0EJOjAOok+D+);j zj4c%fu{$b{piEZ&Zq`1OL5CiCP)eEkt_<)bET2629bc`oFVb!zu8##bMwHIaQ}ut5 ze&lCenpfxna>xB&84M_w**q7dm(!9={!&ExH^(}dD3Qf}=L zPju5?8~>rZZ-&3Wf9+-UWVqc=JrZjtCw_1W zf)(5|!VgGd_eMTh%@<%-f=V9Mxl&s{;s4T>0I3E-M4qTuTI{M)jxBHvyKm!mgPVJdlUPhbiT}%U)$~9(ixZ`Ey zQae5=Wm<_e=R9HGLs?1s$E+D9TmGf$QeD9-%6_?k%XEVFteFjt?Xkk|>fZ*BtH4}Z z4+DH#ao7BrnHepIrx~x5ySls8>}+7~Y^aEwtRwiK-80)NFV~}m{;ow)pjv#=Q|;Ky z!jBl~#+%0Qv7n>B|4gjFk4O}jBRF_{&XC-$2GpFkNjs}0$ z57KU!nX%|$RUydz;-8~^JD)I@>6C!Dcw9MrL6+q;K>wE?3jqhu%*;%Muf%y?!^$O_ zJkn}w_w1h`oBqe+q;>>e8%NlCmT?jGP@YHSd3kxmo9dZt{MVE^+$pfR2p|R?f#~)%wC-(-duuW`8vK;VsGl1tfq@S5& zIPfg~h4C>a@v|I5VF_oFv^#LS@>2%n0V0B`sbLC3VnC2fB^~E`vxhgq1sh5f6cj;| zK~4QlO-*1_EtPbqp#5m9wmN(Gr9aQ=j{L+)X+-cAA9rMZCrqa{Ha5W6q=4DdX;J-rw9IY5HwEG-pw@N|qpU9< z_xkfts7>ZLAfw_SZ?(NNlJQvmj3IcW59p0IC7}UXPXdDRtdI2ExzrS3gr^y>V1WuW znC2qVqA-M1@L}vFkK?gfC?4bd>)>yam6es2m8`@Brwy}*fk&yWrB!0?jX>buj->z$ z9o{_h$SI{enR_*BW%B!dv{u=H7Le;P!@W;y~nC`dH)qJ7OX&y?@`aok%PNZFW zE1s-In`5dC_>5l;Z43-B;`3n0#M8#KU!*&u#otp;GcEVmmwX5Y%_RQ)o1{37cnraZ zkV~@BXi0%&tFbRhft?Er3*z%k=em1(BDA8CN>yz~!P$~qLaYM3yl;9{9$n?+pU3{P zg99D&F#^W_q#nV8>7$MjX4nM;p=wt;K#YMp$VyNeFRP+SU3$SBU~Aq@Fz3?73KRNGxIEb2b8#6R);G8_Q}7|uEgE{5Ij*VjGLU4qyoiX%*K10JP%miE_^b~leVLWphEk55E%^RqTg)wcGIbq}JKAlA#>Pyp z-i3*p$&_s^Ny7RY4EiB~BQT*AMVFVA{oP#u4Tn(Hf4bxM3eX~JqbE;3Kh=3u&3f<2 z4P%24>EZNNB8{Kc3Q9_88vGzmRxZKqMAazL(ciCSbxPXt>ibL2=iyk20cCZt!*tuH zK!Z!d&#p#X^FcM8(W~D9-6!JzED3b1LnX|$lG1poL^HY-ZoC370_T7GN7MpCU&Po$ zSs(pHx^OPrVqe-Q*-VpCKiIMG)>Z_Kad1LhLV{9Tl111(h<)^oX`t}iZEaqeFPAbw zWN3I31Wc7oZv@A3ZjSzOO_8DZj+KAurl25Dg7R|FI0_V_pDeW=^4}*h(f`&KA z79U@envl{8oMd?P zw&0!>D{5h@&w=MB7w^8pf##4I>h;6l&u{~b9~Dk@cTDSD*GTOTPujjsP#JteX_LGW z^itOJLEvWCD>R3$Gr>yFy-thMML@Gm-ri_TF>)cK4BM zNFQkLdxtul?b$+qo?0e2u`$^Y&2(-9+?)3Ke$X^GabUfJy|epR$}Ly2P-1tZ&qU?| z$^9R|`~CW1HqTslF=$&e9te-)SJC?mo}>F=jt<~%n1D*x%r^T~_CJfh^ItN0wN@C8 zn%haGjRQI}3oeR#ypsBJTmZDzh&@F}c!rT;HC?+_ifXmLLQ6I9fofgR9OqUts|4kz zl+E)*AjZ(FhX4-u!v1922eY$?`hCVrm)b@&PCx7seXedB=BFL5UYMsjsG%C|nbP?{47l>XtE=nS1eab} zK~kW~ek-7^OGSYK_4B>fXf~tdq-jwQF48779{qi(D=-*1w9^tk!ed{*wzalW26VEK zWmOz#2YsCAnQD5*Y){6_9<0c@sokO;WJOh}^g-0+k8t{l{zDV10eHeUXGVJIUZaK+ zjSD`0z8Y*kMZmUs=77@@m(LigQ}`x;e)ee*aLgD4m_bl=&Jp-o*BX@-u8mW5sG@Qo z<%g`O#8=!>scVVW^ZONiN5#RXBUU*73z06TSmV8@H-4}V4m8Ei!?4i)1h^6W+`+}GO=Kn~<8{Ex`{Yf)Dr#(|v zl)Lur^8v7Y>}GCeb{&|zC%$Pq#dfCKcdwOD6zA1ht3_(#Ym*UZKcuwCb31@9ffzww zKrE>Gy*5sWBqu{19v)tMVMs=(ZC9O1&egmQt~W_3q{d>wkzx*a1`{rD8Q)BMZ2E^= zTcEQT&ci<;SvS4U-dmm(O_w5MDH9k|VXwn1!iH8Z6_ z0z?%cx|;tZSa%n)j$1c7+Att^_wXo+f&40c&-}@gC*L7uS`azy1UyLLQ@nN$-DzSn zrr=y9f=Xi!2c6R%($(xsedMd!5BI;^>@_=Q=nweB6Nk@MOhuI7)E*sGHF4pBrgZBY zqBQjrPuZiGd8a_nRQH}Yxo(x<#!xeqUWnU>Y_45)<2mKJ|6^duoPX_@TriPhT`-ds zh^lGdd9+D=C2nYG;dY{M;-NVu2HQffarID3hx#$-8PcFnc%2#4`sEL z0PyMMU<0nO>>DWELl@gj;dnLDBXCz7h$K`rG9}B*=Ve3#xKr<+KSSnYJ_8BF#Ky{l z#$2-SWo*&FfSINfBs2Y@DBcVMX#f$jU8~C?Js1DDU=4Jr4ZkoQ+<0@ldU(NQ>FFtP-~eLbpm zPH^a>&r)rJP017k?m&182N=rA%e$=VtL}NFt0yb5lTGK$^b0U8sigu(ha-|2%M0&c zLXFHUVRDo3K)u%G3$6wR2HM%7x6ps2YFJqH73A_TEWOz=LiVGjusR(XjUNvrK;pXj z_aMH-eX^S1Uylf!fzgem3Jb38Sy-?sx_6Hy@@BGTPhAxphml)Q_4LHPmE;3Vc=4{E zFMLyhP+QfH3%o3FGRbDC@nVMQl2FUVpxsN$BcNpw9QKO74 zUOP5Ke?OJVIEKEzA407EiJlyPnnM1U%N>81sCJCy$Dh8JJ+}CNKSiqiZ?ON9Ec8D$ z0R3$Kx556W2LDq7U>g3X2LDro|Ea+dNBVy^3Sa&@EH=<$%wT7{48sHQO9l!$b{NdT zN@~HRFL!StrYaPBrKnKy7q})|>R@DNW1ZU$cNj7hjyq)RGRN(d^SgQ;G!}m-!FBEG zSdOh@{uIz4H`|K^{^jmS=M?fXk(HUguTAO%sH#Hi{B$ZPcS^+GAZFOR9JjS88}CnK zbg+j0oY0DC9@mmA^~N0}Afo?}!Cnf?!k_q%wl)FkoY%xy0dC%aqWlEZ>t7NXbgOq< zsuwGXd&v>Jd5GA1xiN~^=jZe~EdTSXA78wN{uDx32oo}R?k3&%wr^(9pmKg2ixc67vyAP2lF;FaWsjh5wJ0We`=g`t) z{RNIA;E#_~K!7>*=f9&PXMpHzMHmO(2QUmo1=tw~1sVNuYO%F!1b?Y5XR&6>3D+w=`$=4UmXx9YEkl2i=t0d3 zoz8=yttUf+b{Nt;PM@=oGDw|nhAwQaD^-;oEV3}B;SOUuIwgH>emERLNh+ety>aN# zo!P}9e*)+~#X>(QnOrtUB!?sGQG<*t5vL%eN8p9t`MVoDIuJx>J`?V0)&j2}XuP>szc{1>ua?wfCY!>^Rs7-) z2gaJ{m97eER4@HX78<^p0iV)_Q6JYQpdiIZ0GJu>c*aO@d{Y?nHvj?c1p{K@AN@D6zOb(OE!?RKln9dIrAMX1~{>SUc&T7c_=EF zh3tSOUJpF4(UDQySw&-@6k}(Qk5}#SBl6#2KpJBU)m2X8Hw?buL;XZB0_Zc&wcEi{ zf#c4(J_X|a@gjtZDS8Ji;Da{nM&D01yOZ4pX$E@O%#B?ZA#$kT%ik*2YGNmeiW`;d zxUFCVa4WPFOTs|R;o|JUfWQ^-v>$s+i7SYzz2!O-Sl7hx#+pN*}Y{5N=p+9>o#?D zTbvJ8R0a#$5XOX3^T%1j$jLg@@-9)_XQ4BoJ4tR{y?~J}eY{(7wga}Fl=aYF-F7E#)qMF$pBwZ;_HWWqDpXM-UkCufFFSL>trSkuf)rRUVa?$$ z#uhuLdUIEC!58GU7l@Z!^Y)&xq5ifPj>A3J+kXeDZKFrL{}iMqo-(;RG7fG>r3|*N z&+k}-*HvnLaIY?ZHvDiw@1HeonZT-cd@t?{!@moD9QQXrq^yojE#mOmWKmj@2Z50` zc#p_6q9X=MBZ8$vRMWf=qHZiFR#i-MGiL}RHR?4=T z86Sqa4sZ+}R;80KX z;Gp}?y}e|_mSP#g+8h`alMo^eUHS$ACWxQn@22}D2kT5a%~1)q7JVE(OIP2^cJSg7 z9bM*zLh#))|M_l1Kv_Nf^_W1zxJ&(T^cneV!P9|b(Ot0{{I{1wcFFe1JT)l##b3cb zmGL_rzc>K0N{R6S@xxJI8z{mHGXZaadX&q>9T35TdKTs+-<0{d-6#(r_-`iU39KA( zZeRHDU_d5d&w=Z2k$WLeZ-bq8H1YueS|9Z81{>n#M*a;^A)UrEMvTF8`D16;z}vbF zuK8>N>74*z8EE|gOt$y!-x1n86)&%fZa*gmHg6&cP(stbMDUyHxgfCBa59 z?Fm5Ga_{WHDDXq1*S7t<{0Q>|EZ6RXZ>t5CG3al2i4K1k)$qlPmz%1{W@{fH2>i+K zIu_b;z`gVk($jmsTW9t#yA}jt-?QJz(vze#KKcLq;Vscz?m|fzofBzoOTDv21UK5i z03ff&)71~*W*KMR09J9w=%k+ggGRI!BX%m zz|7&B5-4$2 zEk|idH%+Vx7vFe~V18XmLNP%P*EcI999ok6@fB!2Bq!C0m#aptaBCVGB{Wa zb(-kvfN7o0JyFtx2RaOrufZszY}~yNF4=pT)`&PLkpV1pVo<$-T7m0g$05&!)yzPE zV+Ca|MLfTn0wPwP&&8ybpoie*^xBBO40Igo9{6s)1)$188dkmz+$0)?>fE2h=xn}4 z_a!wjd9#A)(s#36fa?8YQnTRWCHzr=`d}ZGTVj1_2v896Ec5e(yw6TI54N^mVqj`n zwmTYQ43j|6U6%1cn{ICcw*T6XbUT(18)F-X9Y=mb?wf^6BJ-H{K#T>048w1$R>!sW zWC_+1ZD2ad87GkBd!PA{Th`!a~PDi!6h(18~V|K2{Q3 z;nHQE;2k-_#j*38C|B&C85@efpB?V>5GjZIc}ujG>L*j$8`3g=h04|IUOXx|@t zp`$Wgov{&uSOtDTR`>tqY=M>ztW&_4Mo5FY46RF7IFM5yJ-EZTaNuoovCntM^Nsb*QPkO!qyHCo=gXMepB8fB(FBC+ynq zS%XJCV(JTKuFjfhgrro=f`)5ltVmkFg!;5=XIFKB?NE{Mi=M-Uj>Fd7xEf0$S$uE) zooPnUhN5+MeY&l#&JS z`X=zBwRu;+)0iz=GtzPV!UcVyKX?hfmfUM-d9lm@DSPSY-!kqkcBKd3OdOOqh~|0s za+?k!qVRsZ`2xzKlQB7kTniQ(wM+8Uck%(SkXW*G^?F;qCMk~z$a2wozfE_gE7$_Z z*Q3E5BGdeaoNpd{Hsk7B_K;Un5|tc5$an|dPtHhq^Pp}wLxzLe(Wj`W$V@L_F60#U z)vH%LzX+YdIA*2$_&?@LTJwQXNM#RT2Zi}ozjMBD-& zwu5rMQ;@R9#=|5A%S3H^d(^s?)sN^?hM?*DAZSWjLtBtac;4^SUO_>@E&OYnSQUK4 zFrMVyyLUS=x?d^(PeSOm;xhq|Xg`hO9yILUeJ^zn1Q1&x{WNdRmJziFq@zt&YLo0K&=aDH( z;DO(lP3N}$mDWens2WG1&IGnZ;>HX;_oXUNNNN>~$?5u0I`m6iEs7F=ol&CFSD*7p z^$CksNSUss?|xg+p{kj?BcQBM;@8%Z2OqzGsx;d=g?|M~q?~zok8^%@mKT(Lw_g^N zJgWh!x_MsoD)aKMSDxCRNn?EBtt_{*l-ECi8#YT)ID525)hQCZjJB$_KH&j5S;BH! zOSZ2lIg%6Ef8>;{3`IT%ra^h*VK3>4T&s(rv{10Ux95j}?t?zFf#&;w!62KRa7zV2 zXn`j=m3%f3R4<)y)#}ZuhoJZ}+M=7@2OOcX4S4wy?&#Lq+WHEQ?aiDmNSF^sEz>T% z(5`kRMHRJ$N2^MXT7u~zwTrh49nHqy>7i{l+PpF9Gf60_@%_d?zdZ8F6-kV+#-^;B)WG6 ztZZzYPMKI$ha+-3e*gX~{PY)+Z-y{k&}(}|q;u16_HgtRm>bkxHnvS+_N%SsXgHJ7 zxGRvF#9qU4(qhCH6=3TG6%#;0Q7#s8jO&j2y9EfmQ!PZHbXtv zwsaE)_TCA_E<1w%jk4gW`}HeP*nRD@`AYPu9LxJFdgU&{lC%{8R!MuHB)|%s614?a zKv|5hy3Jv=Kcwm-R`Ri zepwJaPl{6;Gg|+96GFxwy&o#8&dtWXe>^I$1+Y{~pliFVw@TFyPzEGr+d?*Nl~TNz zWztXoWg<`<3zkMf_9}UXZxkqD%;;0cDaDCQ77#)`DW2Q^EXcd|-ojI?RPY`W{2_D> zO1~=K49Y!`+CbcOS=P)TnDv_e1Td^kWJi)O^ap4J{pw6Sb@VblP)9TcdU$fTjaGWb z)tr~gRymMxnt3hkwvrgsIFZrU!_XctK2Q7ObmG^)g6@lR#pIaM46Auh#`v;&G9(|(ztFW+WP#3}( zy?O}Rx5U@PL2Rl+Q!)w#88zT((B{>z#*f#^d2Z*ja>4T}`U&R8`k`sU_LUNNvQ%5w zwmvup)f5090sne=ANW0qMPvXlqz>pVUgVbvXAlSt4Q*eCF_eeL@Z7~)hM<6&MA?3r zcDd(VH^Wu(pj);nsPKW8zOuaoW$j1rO!r<-KE+B6zfS^|C+o}2#gU^8MyMbv0#tk8 zJkX+Qaw53dPC6;PZpsGyhKry}bbM6##A=EATt-^!%1SQYT->1V;EO?jxffoeZWE#1 zNF^vD#dN~zXdfkSwONy#7d(2+(X>*UdR>nG<;CWr9#B@BBN@IhWv4%V^d@FIqR1*j zz$FK%LhrW$4K*JeqOrRUOo8($ev1HmXuX@^aGd+F7MRq}`tu75PJ`itWXNW+$9b=A z(P=yaJIHSzj!-rnim~da5OoCN8?h#RMZ^Hgy z=|k|kZich+x18tRn**!(D*3w8zqEh0W0y4Nh2`SQ7 zwfl%q(ES_ap9IYPWmvI-ZM{8<@pQMB6=STINn&Q@CcZb;kuS&M&LwT@db;-S>fI*) zqSSpOalZjk;Pca(*lXZ$4ad_GW0I=Hga{SoOYiz&ud=@H`MuW3KGG=Cw=E?S z62`ewlVnPfDC|cOAv2_kYIWT6=MY5fy9lf=hiMd0W(NBBS>C+qJuoO}t`C^p*0`PB z-zQfdf#G~fKuA3|Tao~n9QDyq@Wy3La9E^0YYUv3;(hbLZ(zxnxbv$+A$STj_jta+ z{zBsU4aO7D%}@3hq4RGRxF?$DV2_^RLL#;Kz>pq6t~I+#)0Xji8TiQQ_Xs7k(tSDFM! zk0OrU%KI4q_0zy{>?VXECYM9Wg}gC-UI>h&I(6wb-@66fgvy$;ArPdN@ARS%G?g&F z&cbpQX$X#Q#BMpR{eF0A52E_)y-s(e`h5Pif;n1dW=kVNQp)fYz8*~>6^8Fk1&Vxq z+TDSq^O;~zv;~-Zv|3Ja@^=jUMK_FW)g+82Gum5hV*OBv!p=r}yqY+!=v zz&8>{r8PMC@&wMFA_@j@CzS)66+ct;tolTs8;Nsk^MvA`)XQW9fEF$6)xW&HrEAc; z!X5+&YEi}0Ivd=sry0=TY0Q+})m9m9oPX)N^d($z<$lXuvwfL))$r0A&t)Fzbt~!t z6&H1;TTkUybQ^TtZ@Yq@C~>c-2r%-SSKti6OTk6P){Nu}U`U%LyMyU4y9J}$;};aX z>2{X&tvtSW_Y(A8W4@sWhAL#OQQw8jL;zf%+eZre{`%xAvGzoqhk&zP>uL1YS%#iP zZuB&P!6e_~ObOKGtlmS_RHMaOH&*{ed4^GQc&kgf+qjRVr|BsHhoEniRuHH?<+&yT zV8`TPXsW(2%~bm@HT;#f9JIv&f@Fyzp!~3#Z+;6L!K1A><@aE5w%QjzW7^6deYlA_ zi|h;*$cFbCv@udr1Ks|CAcC3*y(b{#ou`b(2hrtZLX6m2l!mlU+g1YF9MEHhPin>5 zSn8LCagr4syQdR3Iu&X!BCG=qMIdL?8!0VF>J$M$;JJA67sdNCf$*x{T z1_`q>GY`ZWFI?aOIkh6Z^Ep95r_GR zvV}5ucb7OR`k}ZckD@g$LwQ-wIdWiHZ)!Ny?_q`TlewRJTXq!QIoz8TgFlUsD(gzM zSyE*!Xt5_CQYyWpNCGt>fnkywQH}Pvz;_*tEYT$;#vj!AsinrpGnhj$))p2`B&4MD zP(81R$Xo&6he1PNCh?T%vf(*F(79TpH|+2t8YP0A{5o7ckNU-)<6@i{nkbbLmPqNC;9z%Jn#alP6NlNJ5xPR1DI!# zBauamxJIM`rT{&eNH`i*yam729+u_~yUhLjVlPM`%9n#tgE4Y^BbnkSSaX_!O}{tx z!PE}9yWAN1oiLa3XlO|=$f*5Zb$PLO6Cg}Zm1paE^mP-xQQeAV*mI@v7r!?88|Ur& z?4i)<^+puqO`z-aP`XTJ5~uX(6DJ`xNfBf$^}kiAD1; zgg3TTS0jO3Kr5EFT}!}hyA3iU$1Mg*2Eh*?t@AovhR76HnTY6NWzyx{HS>UG7dcWoHJyL@VG#G9b2;XqOFWTV_%= zypNh9xFq(>8-Q(#sEJqi^zay57%B#3o2?h1lrfOJr7Ubb^f~dw*El$9rwm@P+(hRI zA(Gdp0R=@GA1zvD#4EiFxuD_zu?~}t%_tS+AH8Kob{*D1LN7^>YXfVwkCb>ux=VSd z@u1E0H&1~=)3pE_;LKK(#($|1JTjd#nl|K27|@zXz}UOG@_Ft~0fYMRD)}iX%Z!nX z152rlbiH`s!Ggom7of3_oX2+HXAp;lZVhMN1DKLZ@xma`B>iph<8AM#s#`!V9Q)|$ zuMuSVRh2{UWdUh(TpSteUKb5IGj%v(X)a1E@L?DgGp!io`8|PjsqJb)W82!3O9rDC z1%PC(e=X#Ezp2J_sjoa}eahvl7~^mp>FtB$-##)7_DYfNOB4%pTEk*OW_FD%;-)1c zgT{34TC}M$+kS{GZpZDMyCm{9vj%$hX^?5$)4- z&u8_vbRo_51qA~-AxG69wE>B@!}l+xMJUqS3lV)lOU&PTKT$Ckk6Cmn~L%J$X_`Lb~os$4XNu zd6sQ)<|BG_7MyLLB9z?m1qZu$p;{_yZKESO1_}sVs6GF5c--noi=1E|O;D_>d}b3SVVc=cu7ci+RLdYF8_s3tL;3G2Ywz#Q zvxnpTj^1*Sd0X?%O-M(MCCsL`raTvR@0)@1e$oESgT(V`iP+dSdjs#$)4$(1ZPqB& zC<;kxe>BuuE^b`9HhNLk4wLtMTXZPz>7+KH+{4Yesh4T0Lpghi&jtz*Ki>d?n|lMB?FMM#3`}36%v)!Rrgd$8 zxgot^+vVDG$7~GY zqI@>^tSE54Itm=osJ_QUmgfB>?i>jTP<<<#U(aBEW;h{wvlEUPDYL;WGSc{^e4@l~ zkim+W{iyyR#PRr@?z8~=%DtNFawjWTKR29h-FvZFMnCA}?bZETcDd*7_K?|`=MH^Q z9iCOqPZ?4A#gdM=(Sp-o&v}*-vj(FhDkY7$c6VD)jL&Mb89c`V9~a#m-*r9Ns=IHG zi0Z0r6wzSZSZ>eQU$8w_)*2_QUe;x~%dCap%M5_DQ--IzVsInZvRc;DqGu7>1Z^s^h z)u6~08Yx@!=qt$Ya$HE0plcC@tl0+c9}Im~&ho;~rF664MmbpP^mY(%I+}}?;IC8)HcexOBl?ILKYctI132RX~ck-0nv)*L$jo=a9} zamI-28bEaCrG*x8TW;oo_xG2Qi&56Qzrac2DFsC@2$iM_(MAKCNh}MK54o z?b%WNscUkc(!&JUl zR9^GFMj@S#QE0A^En9V`7)!5;HsMCu)Gacz5}ni)cH8jg+H=jsa%DVHwWzs{{q2eS z*FO_NZm_GFE}AF4-vP5G;S050*cq%n^Dv{6h785T!}%hNK81o@UYcFS*iy~W&Fca7M#4hrpl$d#SXQqPP0JugFDnbR?JTU2}bE7cqR1aAG@ z{zBIP)f%3`>6v(%uBGyZ3`4?2=smqpN^bbsj*aM0rEL*3He+AH zbNgey-G`!2mecuE6u&6z09;9^BPhqIJaZ%$eKPf}Bo_}3cQ)@{Ukf3P-TU&Ip_t)@ z;REOE-c8C0ssZordaBO%tiwDDM8BeBKZ%$SrdiS#hR1A?Mysf}^%QVdJlt-~98K-} zP!yVWhQsk-Xi2jb-=Ml}apyBjtWtut?D~LAmSe=6Z~N_~t+LxM25M9HZ=S>}tI>+u z7XP-!rRY|h@jSr5RFtJeZIoCcf8P1inBA6e`-scQeSyUVjzJ6u0{B=y>S#6BWlS7D zNVda_xSPs3@O^R@tonuKJ^_(}9sU4~ltsXi=hQ;yvFk;jJ^^0;)gl#}Z{8t-E-oyL z3JW`DzCwz8S{JSH&yHbYud;(^VEXV3c71-)T(u!8tT|ig5W!BMuwBZgJXu90vHojR zzTJ5ZSj*Vjko|eJTW@^Wel({1pg8%=QdrPduB@8YzxhJ`Q-s}mSo_;B!kCy~;6Jw` zUII5RLa?GG)my7d(Cj)Xw_gIA)_oNFJ$W@3Vk4D6rR!|P%PyqRgsy3-SA>bDG76wH zUEPBrlZ>LoHC17=B#*=cY9RtSthc~!dBcgaE8=XT5#Llcl}-BxU7Ni&G$kMOc#q6y z|4L3YdRSjDDI)`%9?1v~AHYnz3i6Ym45e>bV(=5>27-qgs3g)H{aVg( zV}YzqpN*6fD9ws*2`YKtqAsbRd}f;E{YXcLD2M*^MWlf9Qo*X7$&`m3VQJ|+Vw|P% zgBS}3NAb|<)2hNs;=_bO1lHJ&4uZoRUdAUbAU4prpZA1bfyR*fdM)Z#8n`pKod8O= zHvkESZZd?-4S0V9&cyq`#2^`EKh{790~=sfrjN=C2tS-V7wM8J3-2OG84bJo@6P~k z385v8$+ydre=)>7f74vg82oG+F-^_C`fKSGMH4e!NXpYBo0?mKC!<;W>r&4%pOjO_ zKUv61DKjQAP>a%yR_i<0@u>P$t^V+N-jl7r$(@*Eye6}MFd{0yIQ6mIk4*qd%tcH5 zM71(+Tc@RD2XpQgTC_$(n1H`@d1S>2H7y|eI-5M5>z;RwBtSZ~w-Z@NVIej7=kK$v zC%VMj^PDZqQLjio8mmC>D?<~MUPULGWkH;U%g(lEY_}B0@BCUT{vae->ar)5<78UJ zDR((Op?z8h@oZSQuf!?-dzziKj#F5diw$D8GU=s(CH=verbsclk2;3o^wV~{f8Bg% zlMF>TSA3bV3|a6h%oX(b%_%P*x|h5z6xcA~01k8-10QE>%!p519O3wJ&{m1`9VKKG zlw*11`%&`)A0Ilh&vvj`usLf=B6-Js2Vafh@uMoNJmcfBv(;q??&7C3u8jQD>|44% z@9Nq5>&{vIyeWwtGE!AI;yT+ycv?x9Ikz`2pPFD)mn8!bD1LZQ|H-M~!lA{ojd-J(i;Tazi;QnYu4lmCJX+NT3yF;Lj@y zJ@5nmg%t0OIT3I!>ihbNe{>|%76`l(L^glMlc1ZKP{G>TT)hWp$)WRAM0i?mfiRIT zg^7GF?{~8U_ouE6>$;yfCsiyCy0o(HM1FcrF*Hq)Oht3&eNb)8^HblRL~98ZvFv;- zYU&m2Sf7Yn@vYa873SL@0^;^$7t>lX9;p@^2Qb*E&atQ~f&GOmn=kH}{=gT}Am!<-{0-K+j6B8}rS}!tXJq=I3|8!T{A__%J-m z!d`lH%ImXR9ovV$Cfj&B92Y@V#NEu~A+e5WyE+Ad z$5gftCA1ZkXHU4VWxqV!!~`it%O>yT)oAu{p?%UVZab(>SKujOIC4X=_@B*!FN|IT zL0_@?a@xzeRt>~iU*`wPiu`YuL~$hOw&)ufbNQ_ij*)(1&ZmBFFV|iFh*fFoE5i@#S zVf)XO4_cz)WItNHUG|YQ_TS^+$o%#@xyB$sh%KK4c%JS>&RnH&#H7SA?b1ToP}bCw z(g5DkuRn?30Y~{!w`2U$Q1MV|vlZ9NA_o@US>eO^p>h?p(6VlN=AcWZ5PhZnAaS?$ zm#{%o2}a_6yIMm+*WGYi!FmSkc~W$zk3C{n9H4BTje0U3xUdCy)5?UzaSqS}^SyDu zQqU~Hj)m)1J|tFB{Nwg^Q*hur`Kp@(yvbo1KsnRifv7_Fb-mAp+{Qg8M%*khUcxYh zK&-{UK2n6XW8BC<2%ukUNyrvrIGSzGf_P!w)nqCPl#eBOv02-1^I~xv14!Atp=yyIa_#%L)yN=_O^-GL`76Yb z;&7}&m5b!&vfYqIj2+0{TY`@DU=Exx@T<}7HQ+&=xq@cO2KzPAz#snjY?biaPOhA2#kr@F7EAE^e!fBo!k|$Uv4VXKb^1J-H=mRe!k30R3eHaW>}*9Yv64) zU>;`Pf0CQ5%*Lrb!Y@{i+edKYL6>3lp<&Vq>9c&kmvnCfgwkM^@8*Gz!y-56N0D-5>T^=^Bae<8Qfb{dIy0+UGyh8u12Cm3@Cq6S4D+5yUDY zr0@xJ=`Ql{sm2Mp;cYg>&5j<#4`49%Ai{4Abq7fvAUbeY2{PH_y`HsPJRD;Go?yVS zD{*o<@VV2yPr@VRLLYNRFgNp3slaakUTiA_%!7z_Z*&!-U6L(Gr7;}s_q$-fLz@{j zG&fVQoh_zY0YVV_gV#U4ygs2)pcoNU&Pn$nS>~G3O-8d@@>j4K9U9h(vmM2&w{iL!hXuHhc$1;U+T-V)F_Qs00PxHN^(p8(f60ft5<()V)sogxMwS%W6 zg0dDn31`_Z8^Ao>DqaM+lkkL+ZTnYdYwFuL9gp<&DG=r&E$sR-sHYH_-Q1r-xo4bu zfL|Jj7ATkz@E=s)s~3bOKdnEna@F{jr8cnh4HXa&&^j}djt3|CAUT&w@6AiKSud z@17wun>EJ{Yc}RYN@Cj~zU`%$pQJv^Vw6v1&TGuhcv;O`=viwE`Fw+*&LhVy19lsD z;!_Sew*6~b6|cz)@4V2w+ULO0(ifm(PsM8b(xL5I%V+(i@2I{!!dIn4Tp+Pq>TJi+ zqd|EUPB+_t40J8e{F#ZauN0{(68t#fcE$=C!5+@ImSOBxe(3rmqEFruHltOyvc3S1 zAOqsywBGC7c{?$<0CAjrW;)Kjo_nY99@d)BcLeUz`{+_5{h8oms3@A)z5KUB*uVRIBtO zk`)sqY{`SxhA$FbMnup0fX1W(7Yd7uKP<;cWjlV$A*%Ue(Y0N5^DYA0VYYLyfkDyH zM@HFV4g-K&{Bb7w)U?3K@jCl9kx!cMG|{>nwEjh}yq>mQMEKAfaXx&P;9bfJCp6zb zr_9beLge%&*9(9C;! zJ?U43#ZnFX*(-#R96DnouAV2Hp>?M)w*~)Xv$d7cZfi}MkvR2C_p{v=F`Gd~SDh)l z_bADYHPpEjag>42!RvuuL??%R7;SYpZy`vb!x3Ep?yrSy(5_0f_kMQ05FP96{*co4 zN9RSX>L<;p^yG!Toxt_n42oxS$-E-Zki;M!fu$9RMqL}q5owsU!2d-vFla|^ufBXX z7|tWJ#fh>?f#!Z^k#nDyKiYXN&CZUAvM7_n;$Dr}Zmq)kw4W}|yKx~c-#Kn}Z?sq* zJ0&2;bvNM>?sp_b_uCSIdG~`1+!{U0Oi(UM;s&tJ&da09Plrag2ZbHi8bygrPC#l$ zA?=7)M=}jr;_JINzjbx2Oj6I6Gv)JZ>Y*?Fg1~{3X0YdjvvnXTqFCuNStnCTf@rYe~euNPL> zu_dhU=l93FU&R4FEexl6l-Fw?+>-H@rSVBo{0R7yFPB)lqkK4s`?aqvgyn0`HvL>U z;lkvD-+Fj2R6l#?bX#DDk} zS4vc<#Ah-ajF7u8mrh06B5eLi@^7i4A1W z)!)EkD#+q{;aT+2LiMg<%TH`sjNr$mWm_I*bZHSQN8{OF8B;(tm8y6=4X`|$vC7

AD&+C^3#k(q2+}QU1Y`H5--qrj&byB4NkZ&Kn;I;O2dc;TKn1GKhv7E zbS~gky>UB4@!?dQ#na#5BC1wUVgrixg!uS+Xl%4OfnLYaE~Vt>zjHa;edbOsn{3%i zWn89Mn{V&$r#jQV= z5aw$s)x}}G&Wh)UTPv~c*2Fa;{Chf%bB&^BA-5UNc&wfhQO%vxAXoDK!=6D;M_*^> z_y*c;sHkmyIp|)k*J?eDA}(`J-!d&-6ZmFQb{hwWpaos~@}6ByrA@lVA-2Olo?ec= zU4^5Jar7*s11Ht~xR7WBk5P0?uxC7<%c&;$#fiTZ=h`TpY`msOtY^sgW(%BX=z5z;-J?cBFKX*{h%N9&^XIp!+fK++{YPs!*@=_w8&lLa7fzdo{bd)hS= zt#;tdLfzN@9YieUt#J?AalphfAAyXmX;Yj?I;raSc22}j1bI{ORZ-G!xvR4bEU|5v zH;$`4_}{}~RY5XS4-VMpJighTfpW3#IQPaUtP4>2`UB6l$p=icZ1-KtJUgUjP^XJ0C9@?klBHnuid>2e@ zY+5htvgx?KRstD3T99yr<_NB6QBCYlOw;%q+^9?49LiMq1j@~(S`mBOQ@@%dqk!E_ z@bHF9sX$E#%jGjttH9WU`aNP|^s~b2L(8ZH90dzOivV1?`CF(jc109=3ci6P|Afok zrxZiXsaY<0f<`^(8%yt`W3&!DOE=KLdj`(l+TNXW^u2|%x_fE9+OV7Sdx{jXb9c^l zdsJ}A@~%K<<#e>y$R)m{*KhxY{8Y-ED#upfPV(HoBQs^^ht(V5B-9jmxzrs}dgBn0 z9qV-NQR0t6SL){*a9IT?vY>s(jgWfVF4r?mO(kKPVD3zcmW1Rce00~RCtIg)AH;~; z&8!DKS|2%hF*>Oit5tAT4g_}B#Yp*dl^Z)GiUr@VYTe)7i0XGdV?s{ZU9`!9-tsHC zA-2%mBxNxHpB7o%jRuq_KwOsR^a(gIj1wEL%t#a-prvw|4jy`AqDmMw!uwcBP;A6H z>3bO0Hrc?S8S>c=VJRAFy}1e((G8&;E$SawtXd~E!eDOb}So*?*GP=&Dzb88{ zkC%!+WtoYNGEJH5z>d(7N)|syFjYI}UF)B>J+V!MeI&u(5Tis`v9o^dxJpILuEee=J|!s3m72}yP(MhG z=D(6~s9E^f-`tWGv_n@!^D2`9Dux`kc*}&95X5=gNeTSCb$Y1BH9SgX1w+9dO)0_Z zAK`cV3g^~W%36x6ug*;JdV=!ZXR3*>PsHn5$*c;kqx;HhXpqh<42tyJG;uQg5*^O# z!yg^1@@D@(n$9{Z%J%#E14;-YJOYX|1|8DUWzyXUNOyOas3@RxcXvoP3ew#%ATjjN zHN(vB8o%#5|F~RBT{8E5#o1@?&*4vypk_iT$CzO5h zf(xZ6q-S(HGx>L(_%?Fcmc;U%vo6`_y+2fJC~8;GQY66zHQe|=ZDS(7!sIpNHfey( zpNV%Rk!K2Rwda+EPkP&J%L43KTZT)mvvlM?$od3aej<4v&f{cZ?KnrXSe$VF`_|Cr z3Y;1*aB9phpOOT#DjCmL9^qC@F%r2ucUSUl6_HRf=ZzN2cWO~;XM1CYM_k`?-J9hG z4q0>HE8(?=0+w_`k+3PNi&h(h8KjtkLEDV9-D~7dM>RRG`iA8UDPvPU!k^czqHUV)fO0foANWmyW$=9==~KwR+ryu4Xnz6eO64*>#jZBA@4@Tr zr!o09`d<`Gw2mL;{5KsshJqwbsW39IeS9wSJD+R3SM`poJlzQnzJZU&3%HX7>Lf4# zDbHWsi@fYUSC0ZJ^E<&4U+O&5p-AS`lVW)tWBnhT zp~Z`?zS%x4(A9FrUB|x)JshB6|2rNSf~{jEepCHnTw;GHJ75U9^C>o%rlY;Tr|=Y3 z{;)vakpr-MU@3dw+5M1#ikzhx_b%7*T)Zf3-AT3dry^uTs#$hXN09( zkKZnxG!~$pMCQ&Xs-G&gw3G7E3*%35b-Th1#@!0gfR@ddUhA4vCBod!_KV^C-``SX z#$zP5MwgNA2d(x8O2cV|j7@0KrUK}{!(U-lT|p#+A7e11D36L_r+iqm@#gBAQj$|} z2?23Nv)3>Jz1tYtL;pg=R>9n19gWs<|3uPX;`PSjc+5DTw(iL{lSbhF$^VIty(4?k zDEO4le(A7&$k%G2yw!#MOh4$&Rp`Nn42%@9?1yvFxZ8#i+Qh?THh9F9VRo%EG%ydp z55IoV;=Z`L)$J^laFtL%|1u2wql$RFud#09ZQr<%9`i3W-W$05*WFd%R^#_?P1Ydq z%t;EMbU0&q?3p?rMsQln(=DfXmq!q#G~vml`C&=ACnt5b{o#fFcVHJjBqAcppaU#b zj1a<($4xA&sHOgvLphLW%cPuRc$sAW>CLtk$q!t9a_Nv{Zyz58rKk&Z$*JF~ko@4g z(Q1kDxNliH`t!{&j89kxYpYV{dv8nncf?D?bAXF5&yXoS_Poi*FbB#^RF;=so@C{!y8cR?85%#`2h zly1csGlCgz6aJ)M%H4($!+F6aknxoJ3D`ncsUFs>CZ)G9h0O>&q@4VlQMfGej=!sh zbu;bLfjt(3CMXomm4z@(-z3y_x%!`&`AyIQOFO5T1hx)n?%@-hsI-X&N)c-7f%(6; zk$E{T{l%6x);Aa}9)3XQ>Yq_nS7i03pijf(I5mN@(z>7Eu8kt^GBYU+Q?sx7W*DxK z)uZ!ECYo;Fk+Zx^5_UB7*0(kFNA^bYKn(WW0#52c%2%Ew!G|8%f3D9t)d*yrXS&_b z(*6zx;?wi`xZ}NhXqy-5)ZE(i@C=ynTwXnU42-eL-^e7_$5;4qTPGjTj06Q?)!58% zl1BB4p#@&N*t+Z4AGYiP4m_pHxcGt~RbBtKTW|P0Z2-JBBDjGpIB#FZn9O;zZu{-i zzp-qA!W+cz4#S!0`D6loexJ11o#ZgiPa4T)p~F)|N63Hi`@z|6(d(l+*aGM^waKh! z5^QGr_BtspNNuizoK ziaSAhpKQkV@W4trvwwZnPw`S-n~%}l*)oHP#0=wu6Ps}$Z~`S*J_+jcP6~Et&ukZa ziEiE@Rdc#ksf_r>Ch@e?Rnd^`&iQglZXLfMxuDclZ=a=5SS=UYvqfVpzC%jhMJ;Sf zP^3c+kiW6+5qkEvhh7p)!&Cj${dH QAr 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

J|4LynxsVqCdq-FAtplK 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

^z@HPmL_gT8y)?vO4;!n=$rRukP13FgOz?#uEAk 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

=#`A~8}D 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 E3&;=80RR91 literal 0 HcmV?d00001 diff --git a/static/img/intro.png b/static/img/intro.png new file mode 100644 index 0000000000000000000000000000000000000000..6ebeec92e02bc513603d3205b29cecfd8a472fb6 GIT binary patch literal 114276 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 literal 0 HcmV?d00001 diff --git a/yarn.lock b/yarn.lock index b9dba6c..fc4f605 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4,7 +4,7 @@ "@algolia/autocomplete-core@1.17.7": version "1.17.7" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-core/-/autocomplete-core-1.17.7.tgz#2c410baa94a47c5c5f56ed712bb4a00ebe24088b" + resolved "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.17.7.tgz" integrity sha512-BjiPOW6ks90UKl7TwMv7oNQMnzU+t/wk9mgIDi6b1tXpUek7MW0lbNOUHpvam9pe3lVCf4xPFT+lK7s+e+fs7Q== dependencies: "@algolia/autocomplete-plugin-algolia-insights" "1.17.7" @@ -12,26 +12,26 @@ "@algolia/autocomplete-plugin-algolia-insights@1.17.7": version "1.17.7" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.17.7.tgz#7d2b105f84e7dd8f0370aa4c4ab3b704e6760d82" + resolved "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.17.7.tgz" integrity sha512-Jca5Ude6yUOuyzjnz57og7Et3aXjbwCSDf/8onLHSQgw1qW3ALl9mrMWaXb5FmPVkV3EtkD2F/+NkT6VHyPu9A== dependencies: "@algolia/autocomplete-shared" "1.17.7" "@algolia/autocomplete-preset-algolia@1.17.7": version "1.17.7" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.17.7.tgz#c9badc0d73d62db5bf565d839d94ec0034680ae9" + resolved "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.17.7.tgz" integrity sha512-ggOQ950+nwbWROq2MOCIL71RE0DdQZsceqrg32UqnhDz8FlO9rL8ONHNsI2R1MH0tkgVIDKI/D0sMiUchsFdWA== dependencies: "@algolia/autocomplete-shared" "1.17.7" "@algolia/autocomplete-shared@1.17.7": version "1.17.7" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.17.7.tgz#105e84ad9d1a31d3fb86ba20dc890eefe1a313a0" + resolved "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.17.7.tgz" integrity sha512-o/1Vurr42U/qskRSuhBH+VKxMvkkUVTLU6WZQr+L5lGZZLYWyhdzWjW0iGXY7EkwRTjBqvN2EsR81yCTGV/kmg== "@algolia/client-abtesting@5.20.4": version "5.20.4" - resolved "https://registry.yarnpkg.com/@algolia/client-abtesting/-/client-abtesting-5.20.4.tgz#eb1dfd010a61d136f26e51feb8e9e7c3a1e74d5f" + resolved "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.20.4.tgz" integrity sha512-OZ3Xvvf+k7NMcwmmioIVX+76E/KKtN607NCMNsBEKe+uHqktZ+I5bmi/EVr2m5VF59Gnh9MTlJCdXtBiGjruxw== dependencies: "@algolia/client-common" "5.20.4" @@ -41,7 +41,7 @@ "@algolia/client-analytics@5.20.4": version "5.20.4" - resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-5.20.4.tgz#536140dbfc8ae8aed9215f3d0cd60503f2ae2bc0" + resolved "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.20.4.tgz" integrity sha512-8pM5zQpHonCIBxKmMyBLgQoaSKUNBE5u741VEIjn2ArujolhoKRXempRAlLwEg5hrORKl9XIlit00ff4g6LWvA== dependencies: "@algolia/client-common" "5.20.4" @@ -51,12 +51,17 @@ "@algolia/client-common@5.20.4": version "5.20.4" - resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-5.20.4.tgz#e7451f4f96802fcaf3043796c74748733b2fe973" + resolved "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.20.4.tgz" integrity sha512-OCGa8hKAP6kQKBwi+tu9flTXshz4qeCK5P8J6bI1qq8KYs+/TU1xSotT+E7hO+uyDanGU6dT6soiMSi4A38JgA== +"@algolia/client-common@5.34.1": + version "5.34.1" + resolved "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.34.1.tgz" + integrity sha512-otPWALs72KvmVuP0CN0DI6sqVx1jQWKi+/DgAiP8DysVMgiNlva3GDKTtAK6XVGlT08f4h32FNuL0yQODuCfKA== + "@algolia/client-insights@5.20.4": version "5.20.4" - resolved "https://registry.yarnpkg.com/@algolia/client-insights/-/client-insights-5.20.4.tgz#5364d5898407f239bd17da9ab693fc258e8c0cd8" + resolved "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.20.4.tgz" integrity sha512-MroyJStJFLf/cYeCbguCRdrA2U6miDVqbi3t9ZGovBWWTef7BZwVQG0mLyInzp4MIjBfwqu3xTrhxsiiOavX3A== dependencies: "@algolia/client-common" "5.20.4" @@ -66,7 +71,7 @@ "@algolia/client-personalization@5.20.4": version "5.20.4" - resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-5.20.4.tgz#37eeb952f1b535475a6f25fd1e9921c9abc2356c" + resolved "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.20.4.tgz" integrity sha512-bVR5sxFfgCQ+G0ZegGVhBqtaDd7jCfr33m5mGuT43U+bH//xeqAHQyIS4abcmRulwqeIAHNm5Yl2J7grT3z//A== dependencies: "@algolia/client-common" "5.20.4" @@ -76,7 +81,7 @@ "@algolia/client-query-suggestions@5.20.4": version "5.20.4" - resolved "https://registry.yarnpkg.com/@algolia/client-query-suggestions/-/client-query-suggestions-5.20.4.tgz#49582d82d097c2d92e5f90b6390fb63a234090c5" + resolved "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.20.4.tgz" integrity sha512-ZHsV0vceNDR87wIVaz7VjxilwCUCkzbuy4QnqIdnQs3NnC43is7KKbEtKueuNw+YGMdx+wmD5kRI2XKip1R93A== dependencies: "@algolia/client-common" "5.20.4" @@ -84,9 +89,19 @@ "@algolia/requester-fetch" "5.20.4" "@algolia/requester-node-http" "5.20.4" +"@algolia/client-search@>= 4.9.1 < 6": + version "5.34.1" + resolved "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.34.1.tgz" + integrity sha512-bt5hC9vvjaKvdvsgzfXJ42Sl3qjQqoi/FD8V7HOQgtNFhwSauZOlgLwFoUiw67sM+r7ehF7QDk5WRDgY7fAkIg== + dependencies: + "@algolia/client-common" "5.34.1" + "@algolia/requester-browser-xhr" "5.34.1" + "@algolia/requester-fetch" "5.34.1" + "@algolia/requester-node-http" "5.34.1" + "@algolia/client-search@5.20.4": version "5.20.4" - resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-5.20.4.tgz#4310cd622c821443a7f00e3445cdef254de90f28" + resolved "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.20.4.tgz" integrity sha512-hXM2LpwTzG5kGQSyq3feIijzzl6vkjYPP+LF3ru1relNUIh7fWJ4uYQay2NMNbWX5LWQzF8Vr9qlIA139doQXg== dependencies: "@algolia/client-common" "5.20.4" @@ -96,7 +111,7 @@ "@algolia/ingestion@1.20.4": version "1.20.4" - resolved "https://registry.yarnpkg.com/@algolia/ingestion/-/ingestion-1.20.4.tgz#bd7a116c9d37938d3c88e966c52d439803a5cc6c" + resolved "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.20.4.tgz" integrity sha512-idAe53XsTlLSSQ7pJcjscUEmc67vEM+VohYkr78Ebfb43vtfKH0ik8ux9OGQpLRNGntaHqpe/lfU5PDRi5/92w== dependencies: "@algolia/client-common" "5.20.4" @@ -106,7 +121,7 @@ "@algolia/monitoring@1.20.4": version "1.20.4" - resolved "https://registry.yarnpkg.com/@algolia/monitoring/-/monitoring-1.20.4.tgz#4a13f1bee303d2e8fd70664b476461f3f2acf08a" + resolved "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.20.4.tgz" integrity sha512-O6HjdSWtyu5LhHR7gdU83oWbl1vVVRwoTxkENHF61Ar7l9C1Ok91VtnK7RtXB9pJL1kpIMDExwZOT5sEN2Ppfw== dependencies: "@algolia/client-common" "5.20.4" @@ -116,7 +131,7 @@ "@algolia/recommend@5.20.4": version "5.20.4" - resolved "https://registry.yarnpkg.com/@algolia/recommend/-/recommend-5.20.4.tgz#5919aed5cafa9615a9f580fc6080f4c4cffadd8a" + resolved "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.20.4.tgz" integrity sha512-p8M78pQjPrN6PudO2TnkWiOJbyp/IPhgCFBW8aZrLshhZpPkV9N4u0YsU/w6OoeYDKSxmXntWQrKYiU1dVRWfg== dependencies: "@algolia/client-common" "5.20.4" @@ -126,65 +141,86 @@ "@algolia/requester-browser-xhr@5.20.4": version "5.20.4" - resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.20.4.tgz#4ab94d44817a06fdc208fe5cf19ed6297588f62a" + resolved "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.20.4.tgz" integrity sha512-Y8GThjDVdhFUurZKKDdzAML/LNKOA/BOydEcaFeb/g4Iv4Iq0qQJs6aIbtdsngUU6cu74qH/2P84kr2h16uVvQ== dependencies: "@algolia/client-common" "5.20.4" +"@algolia/requester-browser-xhr@5.34.1": + version "5.34.1" + resolved "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.34.1.tgz" + integrity sha512-567LfFTc9VOiPtuySQohoqaWMeohYWbXK71aMSin+SLMgeKX7hz5LrVmkmMQj9udwWK6/mtHEYZGPYHSuXpLQg== + dependencies: + "@algolia/client-common" "5.34.1" + "@algolia/requester-fetch@5.20.4": version "5.20.4" - resolved "https://registry.yarnpkg.com/@algolia/requester-fetch/-/requester-fetch-5.20.4.tgz#d8d640735b7a80f3497ab200f4451ee16415af6e" + resolved "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.20.4.tgz" integrity sha512-OrAUSrvbFi46U7AxOXkyl9QQiaW21XWpixWmcx3D2S65P/DCIGOVE6K2741ZE+WiKIqp+RSYkyDFj3BiFHzLTg== dependencies: "@algolia/client-common" "5.20.4" +"@algolia/requester-fetch@5.34.1": + version "5.34.1" + resolved "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.34.1.tgz" + integrity sha512-YRbygPgGBEik5U593JvyjgxFjcsyZMR25eIQxNHvSQumdAzt5A4E4Idw3yXnwhrmMdjML54ZXT7EAjnTjWy8Xw== + dependencies: + "@algolia/client-common" "5.34.1" + "@algolia/requester-node-http@5.20.4": version "5.20.4" - resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-5.20.4.tgz#fa493402a29af2a2197a62e8d2ecc37aa96f17e5" + resolved "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.20.4.tgz" integrity sha512-Jc/bofGBw4P9nBii4oCzCqqusv8DAFFORfUD2Ce1cZk3fvUPk+q/Qnu7i9JpTSHjMc0MWzqApLdq7Nwh1gelLg== dependencies: "@algolia/client-common" "5.20.4" -"@babel/helper-string-parser@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz#1aabb72ee72ed35789b4bbcad3ca2862ce614e8c" - integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA== +"@algolia/requester-node-http@5.34.1": + version "5.34.1" + resolved "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.34.1.tgz" + integrity sha512-o0mqRYbS82Rt4DE02Od7RL6pNtV7oSxScPuIw8LW4aqO2V5eCF05Pry/SnUgcI/Vb2QCYC66hytBCqzyC/toZA== + dependencies: + "@algolia/client-common" "5.34.1" -"@babel/helper-validator-identifier@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7" - integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ== +"@babel/helper-string-parser@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz" + integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== -"@babel/parser@^7.25.3": - version "7.26.9" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.9.tgz#d9e78bee6dc80f9efd8f2349dcfbbcdace280fd5" - integrity sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A== +"@babel/helper-validator-identifier@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz" + integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow== + +"@babel/parser@^7.23.5", "@babel/parser@^7.25.3": + version "7.28.0" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.28.0.tgz" + integrity sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g== dependencies: - "@babel/types" "^7.26.9" + "@babel/types" "^7.28.0" "@babel/runtime@^7.13.10": version "7.26.9" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.26.9.tgz#aa4c6facc65b9cb3f87d75125ffd47781b475433" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.9.tgz" integrity sha512-aA63XwOkcl4xxQa3HjPMqOP6LiK0ZDv3mUPYEFXkpHbaFjtGggE1A61FjFzJnB+p7/oy2gA8E+rcBNl/zC1tMg== dependencies: regenerator-runtime "^0.14.0" -"@babel/types@^7.26.9": - version "7.26.9" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.26.9.tgz#08b43dec79ee8e682c2ac631c010bdcac54a21ce" - integrity sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw== +"@babel/types@^7.28.0": + version "7.28.2" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.28.2.tgz" + integrity sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ== dependencies: - "@babel/helper-string-parser" "^7.25.9" - "@babel/helper-validator-identifier" "^7.25.9" + "@babel/helper-string-parser" "^7.27.1" + "@babel/helper-validator-identifier" "^7.27.1" "@docsearch/css@3.8.2": version "3.8.2" - resolved "https://registry.yarnpkg.com/@docsearch/css/-/css-3.8.2.tgz#7973ceb6892c30f154ba254cd05c562257a44977" + resolved "https://registry.npmjs.org/@docsearch/css/-/css-3.8.2.tgz" integrity sha512-y05ayQFyUmCXze79+56v/4HpycYF3uFqB78pLPrSV5ZKAlDuIAAJNhaRi8tTdRNXh05yxX/TyNnzD6LwSM89vQ== "@docsearch/js@3.8.2": version "3.8.2" - resolved "https://registry.yarnpkg.com/@docsearch/js/-/js-3.8.2.tgz#bdcfc9837700eb38453b88e211ab5cc5a3813cc6" + resolved "https://registry.npmjs.org/@docsearch/js/-/js-3.8.2.tgz" integrity sha512-Q5wY66qHn0SwA7Taa0aDbHiJvaFJLOJyHmooQ7y8hlwwQLQ/5WwCcoX0g7ii04Qi2DJlHsd0XXzJ8Ypw9+9YmQ== dependencies: "@docsearch/react" "3.8.2" @@ -192,7 +228,7 @@ "@docsearch/react@3.8.2": version "3.8.2" - resolved "https://registry.yarnpkg.com/@docsearch/react/-/react-3.8.2.tgz#7b11d39b61c976c0aa9fbde66e6b73b30f3acd42" + resolved "https://registry.npmjs.org/@docsearch/react/-/react-3.8.2.tgz" integrity sha512-xCRrJQlTt8N9GU0DG4ptwHRkfnSnD/YpdeaXe02iKfqs97TkZJv60yE+1eq/tjPcVnTW8dP5qLP7itifFVV5eg== dependencies: "@algolia/autocomplete-core" "1.17.7" @@ -202,134 +238,134 @@ "@esbuild/aix-ppc64@0.21.5": version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz#c7184a326533fcdf1b8ee0733e21c713b975575f" + resolved "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz" integrity sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ== -"@esbuild/android-arm64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz#09d9b4357780da9ea3a7dfb833a1f1ff439b4052" - integrity sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A== - "@esbuild/android-arm@0.21.5": version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.21.5.tgz#9b04384fb771926dfa6d7ad04324ecb2ab9b2e28" + resolved "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz" integrity sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg== +"@esbuild/android-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz" + integrity sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A== + "@esbuild/android-x64@0.21.5": version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.21.5.tgz#29918ec2db754cedcb6c1b04de8cd6547af6461e" + resolved "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz" integrity sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA== "@esbuild/darwin-arm64@0.21.5": version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz#e495b539660e51690f3928af50a76fb0a6ccff2a" + resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz" integrity sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ== "@esbuild/darwin-x64@0.21.5": version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz#c13838fa57372839abdddc91d71542ceea2e1e22" + resolved "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz" integrity sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw== "@esbuild/freebsd-arm64@0.21.5": version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz#646b989aa20bf89fd071dd5dbfad69a3542e550e" + resolved "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz" integrity sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g== "@esbuild/freebsd-x64@0.21.5": version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz#aa615cfc80af954d3458906e38ca22c18cf5c261" + resolved "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz" integrity sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ== -"@esbuild/linux-arm64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz#70ac6fa14f5cb7e1f7f887bcffb680ad09922b5b" - integrity sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q== - "@esbuild/linux-arm@0.21.5": version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz#fc6fd11a8aca56c1f6f3894f2bea0479f8f626b9" + resolved "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz" integrity sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA== +"@esbuild/linux-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz" + integrity sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q== + "@esbuild/linux-ia32@0.21.5": version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz#3271f53b3f93e3d093d518d1649d6d68d346ede2" + resolved "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz" integrity sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg== "@esbuild/linux-loong64@0.21.5": version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz#ed62e04238c57026aea831c5a130b73c0f9f26df" + resolved "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz" integrity sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg== "@esbuild/linux-mips64el@0.21.5": version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz#e79b8eb48bf3b106fadec1ac8240fb97b4e64cbe" + resolved "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz" integrity sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg== "@esbuild/linux-ppc64@0.21.5": version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz#5f2203860a143b9919d383ef7573521fb154c3e4" + resolved "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz" integrity sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w== "@esbuild/linux-riscv64@0.21.5": version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz#07bcafd99322d5af62f618cb9e6a9b7f4bb825dc" + resolved "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz" integrity sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA== "@esbuild/linux-s390x@0.21.5": version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz#b7ccf686751d6a3e44b8627ababc8be3ef62d8de" + resolved "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz" integrity sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A== "@esbuild/linux-x64@0.21.5": version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz#6d8f0c768e070e64309af8004bb94e68ab2bb3b0" + resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz" integrity sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ== "@esbuild/netbsd-x64@0.21.5": version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz#bbe430f60d378ecb88decb219c602667387a6047" + resolved "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz" integrity sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg== "@esbuild/openbsd-x64@0.21.5": version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz#99d1cf2937279560d2104821f5ccce220cb2af70" + resolved "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz" integrity sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow== "@esbuild/sunos-x64@0.21.5": version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz#08741512c10d529566baba837b4fe052c8f3487b" + resolved "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz" integrity sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg== "@esbuild/win32-arm64@0.21.5": version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz#675b7385398411240735016144ab2e99a60fc75d" + resolved "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz" integrity sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A== "@esbuild/win32-ia32@0.21.5": version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz#1bfc3ce98aa6ca9a0969e4d2af72144c59c1193b" + resolved "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz" integrity sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA== "@esbuild/win32-x64@0.21.5": version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz#acad351d582d157bb145535db2a6ff53dd514b5c" + resolved "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz" integrity sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw== "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": version "4.4.1" - resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz#d1145bf2c20132d6400495d6df4bf59362fd9d56" + resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz" integrity sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA== dependencies: eslint-visitor-keys "^3.4.3" "@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.12.1": version "4.12.1" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0" + resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz" integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== "@eslint/config-array@^0.19.2": version "0.19.2" - resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.19.2.tgz#3060b809e111abfc97adb0bb1172778b90cb46aa" + resolved "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.2.tgz" integrity sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w== dependencies: "@eslint/object-schema" "^2.1.6" @@ -338,19 +374,19 @@ "@eslint/config-helpers@^0.1.0": version "0.1.0" - resolved "https://registry.yarnpkg.com/@eslint/config-helpers/-/config-helpers-0.1.0.tgz#62f1b7821e9d9ced1b3f512c7ea731825765d1cc" + resolved "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.1.0.tgz" integrity sha512-kLrdPDJE1ckPo94kmPPf9Hfd0DU0Jw6oKYrhe+pwSC0iTUInmTa+w6fw8sGgcfkFJGNdWOUeOaDM4quW4a7OkA== "@eslint/core@^0.12.0": version "0.12.0" - resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.12.0.tgz#5f960c3d57728be9f6c65bd84aa6aa613078798e" + resolved "https://registry.npmjs.org/@eslint/core/-/core-0.12.0.tgz" integrity sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg== dependencies: "@types/json-schema" "^7.0.15" "@eslint/eslintrc@^3.3.0": version "3.3.0" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.3.0.tgz#96a558f45842989cca7ea1ecd785ad5491193846" + resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.0.tgz" integrity sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ== dependencies: ajv "^6.12.4" @@ -363,19 +399,19 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@9.22.0", "@eslint/js@^9.22.0": +"@eslint/js@^9.22.0", "@eslint/js@9.22.0": version "9.22.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.22.0.tgz#4ff53649ded7cbce90b444b494c234137fa1aa3d" + resolved "https://registry.npmjs.org/@eslint/js/-/js-9.22.0.tgz" integrity sha512-vLFajx9o8d1/oL2ZkpMYbkLv8nDB6yaIwFNt7nI4+I80U/z03SxmfOMsLbvWr3p7C+Wnoh//aOu2pQW8cS0HCQ== "@eslint/object-schema@^2.1.6": version "2.1.6" - resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.6.tgz#58369ab5b5b3ca117880c0f6c0b0f32f6950f24f" + resolved "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz" integrity sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA== "@eslint/plugin-kit@^0.2.7": version "0.2.7" - resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.2.7.tgz#9901d52c136fb8f375906a73dcc382646c3b6a27" + resolved "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.7.tgz" integrity sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g== dependencies: "@eslint/core" "^0.12.0" @@ -383,12 +419,12 @@ "@humanfs/core@^0.19.1": version "0.19.1" - resolved "https://registry.yarnpkg.com/@humanfs/core/-/core-0.19.1.tgz#17c55ca7d426733fe3c561906b8173c336b40a77" + resolved "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz" integrity sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA== "@humanfs/node@^0.16.6": version "0.16.6" - resolved "https://registry.yarnpkg.com/@humanfs/node/-/node-0.16.6.tgz#ee2a10eaabd1131987bf0488fd9b820174cd765e" + resolved "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz" integrity sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw== dependencies: "@humanfs/core" "^0.19.1" @@ -396,34 +432,34 @@ "@humanwhocodes/module-importer@^1.0.1": version "1.0.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz" integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== "@humanwhocodes/retry@^0.3.0": version "0.3.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.3.1.tgz#c72a5c76a9fbaf3488e231b13dc52c0da7bab42a" + resolved "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz" integrity sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA== "@humanwhocodes/retry@^0.4.2": version "0.4.2" - resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.4.2.tgz#1860473de7dfa1546767448f333db80cb0ff2161" + resolved "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.2.tgz" integrity sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ== "@iconify-json/simple-icons@^1.2.21": version "1.2.28" - resolved "https://registry.yarnpkg.com/@iconify-json/simple-icons/-/simple-icons-1.2.28.tgz#37eaedb106652f57128be9f681d994bbf6e1d2ff" + resolved "https://registry.npmjs.org/@iconify-json/simple-icons/-/simple-icons-1.2.28.tgz" integrity sha512-KoCuXgJ2AysGjzOAMUtNPrXeOvvC3zRR+REbYhei2mx5LGTSSrrlVJdaSBv4f8LH9hgfhG7E4Us3hH3XwreP+A== dependencies: "@iconify/types" "*" "@iconify/types@*": version "2.0.0" - resolved "https://registry.yarnpkg.com/@iconify/types/-/types-2.0.0.tgz#ab0e9ea681d6c8a1214f30cd741fe3a20cc57f57" + resolved "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz" integrity sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg== "@isaacs/cliui@^8.0.2": version "8.0.2" - resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" + resolved "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz" integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== dependencies: string-width "^5.1.2" @@ -435,25 +471,25 @@ "@jridgewell/sourcemap-codec@^1.5.0": version "1.5.0" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz" integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== "@nodelib/fs.scandir@2.1.5": version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== dependencies: "@nodelib/fs.stat" "2.0.5" run-parallel "^1.1.9" -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": +"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== "@nodelib/fs.walk@^1.2.3": version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== dependencies: "@nodelib/fs.scandir" "2.1.5" @@ -461,107 +497,107 @@ "@pkgjs/parseargs@^0.11.0": version "0.11.0" - resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" + resolved "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz" integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== "@rollup/rollup-android-arm-eabi@4.35.0": version "4.35.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.35.0.tgz#e1d7700735f7e8de561ef7d1fa0362082a180c43" + resolved "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.35.0.tgz" integrity sha512-uYQ2WfPaqz5QtVgMxfN6NpLD+no0MYHDBywl7itPYd3K5TjjSghNKmX8ic9S8NU8w81NVhJv/XojcHptRly7qQ== "@rollup/rollup-android-arm64@4.35.0": version "4.35.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.35.0.tgz#fa6cdfb1fc9e2c8e227a7f35d524d8f7f90cf4db" + resolved "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.35.0.tgz" integrity sha512-FtKddj9XZudurLhdJnBl9fl6BwCJ3ky8riCXjEw3/UIbjmIY58ppWwPEvU3fNu+W7FUsAsB1CdH+7EQE6CXAPA== "@rollup/rollup-darwin-arm64@4.35.0": version "4.35.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.35.0.tgz#6da5a1ddc4f11d4a7ae85ab443824cb6bf614e30" + resolved "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.35.0.tgz" integrity sha512-Uk+GjOJR6CY844/q6r5DR/6lkPFOw0hjfOIzVx22THJXMxktXG6CbejseJFznU8vHcEBLpiXKY3/6xc+cBm65Q== "@rollup/rollup-darwin-x64@4.35.0": version "4.35.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.35.0.tgz#25b74ce2d8d3f9ea8e119b01384d44a1c0a0d3ae" + resolved "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.35.0.tgz" integrity sha512-3IrHjfAS6Vkp+5bISNQnPogRAW5GAV1n+bNCrDwXmfMHbPl5EhTmWtfmwlJxFRUCBZ+tZ/OxDyU08aF6NI/N5Q== "@rollup/rollup-freebsd-arm64@4.35.0": version "4.35.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.35.0.tgz#be3d39e3441df5d6e187c83d158c60656c82e203" + resolved "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.35.0.tgz" integrity sha512-sxjoD/6F9cDLSELuLNnY0fOrM9WA0KrM0vWm57XhrIMf5FGiN8D0l7fn+bpUeBSU7dCgPV2oX4zHAsAXyHFGcQ== "@rollup/rollup-freebsd-x64@4.35.0": version "4.35.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.35.0.tgz#cd932d3ec679711efd65ca25821fb318e25b7ce4" + resolved "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.35.0.tgz" integrity sha512-2mpHCeRuD1u/2kruUiHSsnjWtHjqVbzhBkNVQ1aVD63CcexKVcQGwJ2g5VphOd84GvxfSvnnlEyBtQCE5hxVVw== "@rollup/rollup-linux-arm-gnueabihf@4.35.0": version "4.35.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.35.0.tgz#d300b74c6f805474225632f185daaeae760ac2bb" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.35.0.tgz" integrity sha512-mrA0v3QMy6ZSvEuLs0dMxcO2LnaCONs1Z73GUDBHWbY8tFFocM6yl7YyMu7rz4zS81NDSqhrUuolyZXGi8TEqg== "@rollup/rollup-linux-arm-musleabihf@4.35.0": version "4.35.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.35.0.tgz#2caac622380f314c41934ed1e68ceaf6cc380cc3" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.35.0.tgz" integrity sha512-DnYhhzcvTAKNexIql8pFajr0PiDGrIsBYPRvCKlA5ixSS3uwo/CWNZxB09jhIapEIg945KOzcYEAGGSmTSpk7A== "@rollup/rollup-linux-arm64-gnu@4.35.0": version "4.35.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.35.0.tgz#1ec841650b038cc15c194c26326483fd7ebff3e3" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.35.0.tgz" integrity sha512-uagpnH2M2g2b5iLsCTZ35CL1FgyuzzJQ8L9VtlJ+FckBXroTwNOaD0z0/UF+k5K3aNQjbm8LIVpxykUOQt1m/A== "@rollup/rollup-linux-arm64-musl@4.35.0": version "4.35.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.35.0.tgz#2fc70a446d986e27f6101ea74e81746987f69150" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.35.0.tgz" integrity sha512-XQxVOCd6VJeHQA/7YcqyV0/88N6ysSVzRjJ9I9UA/xXpEsjvAgDTgH3wQYz5bmr7SPtVK2TsP2fQ2N9L4ukoUg== "@rollup/rollup-linux-loongarch64-gnu@4.35.0": version "4.35.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.35.0.tgz#561bd045cd9ce9e08c95f42e7a8688af8c93d764" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.35.0.tgz" integrity sha512-5pMT5PzfgwcXEwOaSrqVsz/LvjDZt+vQ8RT/70yhPU06PTuq8WaHhfT1LW+cdD7mW6i/J5/XIkX/1tCAkh1W6g== "@rollup/rollup-linux-powerpc64le-gnu@4.35.0": version "4.35.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.35.0.tgz#45d849a0b33813f33fe5eba9f99e0ff15ab5caad" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.35.0.tgz" integrity sha512-c+zkcvbhbXF98f4CtEIP1EBA/lCic5xB0lToneZYvMeKu5Kamq3O8gqrxiYYLzlZH6E3Aq+TSW86E4ay8iD8EA== "@rollup/rollup-linux-riscv64-gnu@4.35.0": version "4.35.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.35.0.tgz#78dde3e6fcf5b5733a97d0a67482d768aa1e83a5" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.35.0.tgz" integrity sha512-s91fuAHdOwH/Tad2tzTtPX7UZyytHIRR6V4+2IGlV0Cej5rkG0R61SX4l4y9sh0JBibMiploZx3oHKPnQBKe4g== "@rollup/rollup-linux-s390x-gnu@4.35.0": version "4.35.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.35.0.tgz#2e34835020f9e03dfb411473a5c2a0e8a9c5037b" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.35.0.tgz" integrity sha512-hQRkPQPLYJZYGP+Hj4fR9dDBMIM7zrzJDWFEMPdTnTy95Ljnv0/4w/ixFw3pTBMEuuEuoqtBINYND4M7ujcuQw== "@rollup/rollup-linux-x64-gnu@4.35.0": version "4.35.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.35.0.tgz#4f9774beddc6f4274df57ac99862eb23040de461" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.35.0.tgz" integrity sha512-Pim1T8rXOri+0HmV4CdKSGrqcBWX0d1HoPnQ0uw0bdp1aP5SdQVNBy8LjYncvnLgu3fnnCt17xjWGd4cqh8/hA== "@rollup/rollup-linux-x64-musl@4.35.0": version "4.35.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.35.0.tgz#dfcff2c1aed518b3d23ccffb49afb349d74fb608" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.35.0.tgz" integrity sha512-QysqXzYiDvQWfUiTm8XmJNO2zm9yC9P/2Gkrwg2dH9cxotQzunBHYr6jk4SujCTqnfGxduOmQcI7c2ryuW8XVg== "@rollup/rollup-win32-arm64-msvc@4.35.0": version "4.35.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.35.0.tgz#b0b37e2d77041e3aa772f519291309abf4c03a84" + resolved "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.35.0.tgz" integrity sha512-OUOlGqPkVJCdJETKOCEf1mw848ZyJ5w50/rZ/3IBQVdLfR5jk/6Sr5m3iO2tdPgwo0x7VcncYuOvMhBWZq8ayg== "@rollup/rollup-win32-ia32-msvc@4.35.0": version "4.35.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.35.0.tgz#5b5a40e44a743ddc0e06b8e1b3982f856dc9ce0a" + resolved "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.35.0.tgz" integrity sha512-2/lsgejMrtwQe44glq7AFFHLfJBPafpsTa6JvP2NGef/ifOa4KBoglVf7AKN7EV9o32evBPRqfg96fEHzWo5kw== "@rollup/rollup-win32-x64-msvc@4.35.0": version "4.35.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.35.0.tgz#05f25dbc9981bee1ae6e713daab10397044a46ca" + resolved "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.35.0.tgz" integrity sha512-PIQeY5XDkrOysbQblSW7v3l1MDZzkTEzAfTPkj5VAu3FW8fS4ynyLg2sINp0fp3SjZ8xkRYpLqoKcYqAkhU1dw== -"@shikijs/core@2.5.0", "@shikijs/core@^2.1.0": +"@shikijs/core@^2.1.0", "@shikijs/core@2.5.0": version "2.5.0" - resolved "https://registry.yarnpkg.com/@shikijs/core/-/core-2.5.0.tgz#e14d33961dfa3141393d4a76fc8923d0d1c4b62f" + resolved "https://registry.npmjs.org/@shikijs/core/-/core-2.5.0.tgz" integrity sha512-uu/8RExTKtavlpH7XqnVYBrfBkUc20ngXiX9NSrBhOVZYv/7XQRKUyhtkeflY5QsxC0GbJThCerruZfsUaSldg== dependencies: "@shikijs/engine-javascript" "2.5.0" @@ -573,7 +609,7 @@ "@shikijs/engine-javascript@2.5.0": version "2.5.0" - resolved "https://registry.yarnpkg.com/@shikijs/engine-javascript/-/engine-javascript-2.5.0.tgz#e045c6ecfbda6c99137547b0a482e0b87f1053fc" + resolved "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-2.5.0.tgz" integrity sha512-VjnOpnQf8WuCEZtNUdjjwGUbtAVKuZkVQ/5cHy/tojVVRIRtlWMYVjyWhxOmIq05AlSOv72z7hRNRGVBgQOl0w== dependencies: "@shikijs/types" "2.5.0" @@ -582,7 +618,7 @@ "@shikijs/engine-oniguruma@2.5.0": version "2.5.0" - resolved "https://registry.yarnpkg.com/@shikijs/engine-oniguruma/-/engine-oniguruma-2.5.0.tgz#230de5693cc1da6c9d59c7ad83593c2027274817" + resolved "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-2.5.0.tgz" integrity sha512-pGd1wRATzbo/uatrCIILlAdFVKdxImWJGQ5rFiB5VZi2ve5xj3Ax9jny8QvkaV93btQEwR/rSz5ERFpC5mKNIw== dependencies: "@shikijs/types" "2.5.0" @@ -590,29 +626,29 @@ "@shikijs/langs@2.5.0": version "2.5.0" - resolved "https://registry.yarnpkg.com/@shikijs/langs/-/langs-2.5.0.tgz#97ab50c495922cc1ca06e192985b28dc73de5d50" + resolved "https://registry.npmjs.org/@shikijs/langs/-/langs-2.5.0.tgz" integrity sha512-Qfrrt5OsNH5R+5tJ/3uYBBZv3SuGmnRPejV9IlIbFH3HTGLDlkqgHymAlzklVmKBjAaVmkPkyikAV/sQ1wSL+w== dependencies: "@shikijs/types" "2.5.0" "@shikijs/themes@2.5.0": version "2.5.0" - resolved "https://registry.yarnpkg.com/@shikijs/themes/-/themes-2.5.0.tgz#8c6aecf73f5455681c8bec15797cf678162896cb" + resolved "https://registry.npmjs.org/@shikijs/themes/-/themes-2.5.0.tgz" integrity sha512-wGrk+R8tJnO0VMzmUExHR+QdSaPUl/NKs+a4cQQRWyoc3YFbUzuLEi/KWK1hj+8BfHRKm2jNhhJck1dfstJpiw== dependencies: "@shikijs/types" "2.5.0" "@shikijs/transformers@^2.1.0": version "2.5.0" - resolved "https://registry.yarnpkg.com/@shikijs/transformers/-/transformers-2.5.0.tgz#190c84786ff06c417580ab79177338a947168c55" + resolved "https://registry.npmjs.org/@shikijs/transformers/-/transformers-2.5.0.tgz" integrity sha512-SI494W5X60CaUwgi8u4q4m4s3YAFSxln3tzNjOSYqq54wlVgz0/NbbXEb3mdLbqMBztcmS7bVTaEd2w0qMmfeg== dependencies: "@shikijs/core" "2.5.0" "@shikijs/types" "2.5.0" -"@shikijs/types@2.5.0", "@shikijs/types@^2.1.0": +"@shikijs/types@^2.1.0", "@shikijs/types@2.5.0": version "2.5.0" - resolved "https://registry.yarnpkg.com/@shikijs/types/-/types-2.5.0.tgz#e949c7384802703a48b9d6425dd41673c164df69" + resolved "https://registry.npmjs.org/@shikijs/types/-/types-2.5.0.tgz" integrity sha512-ygl5yhxki9ZLNuNpPitBWvcy9fsSKKaRuO4BAlMyagszQidxcpLAr0qiW/q43DtSIDxO6hEbtYLiFZNXO/hdGw== dependencies: "@shikijs/vscode-textmate" "^10.0.2" @@ -620,46 +656,46 @@ "@shikijs/vscode-textmate@^10.0.2": version "10.0.2" - resolved "https://registry.yarnpkg.com/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz#a90ab31d0cc1dfb54c66a69e515bf624fa7b2224" + resolved "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz" integrity sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg== "@types/debug@^4.0.0": version "4.1.12" - resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.12.tgz#a155f21690871953410df4b6b6f53187f0500917" + resolved "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz" integrity sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ== dependencies: "@types/ms" "*" -"@types/estree@1.0.6", "@types/estree@^1.0.6": +"@types/estree@^1.0.6", "@types/estree@1.0.6": version "1.0.6" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50" + resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz" integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== "@types/hast@^3.0.0", "@types/hast@^3.0.4": version "3.0.4" - resolved "https://registry.yarnpkg.com/@types/hast/-/hast-3.0.4.tgz#1d6b39993b82cea6ad783945b0508c25903e15aa" + resolved "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz" integrity sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ== dependencies: "@types/unist" "*" "@types/json-schema@^7.0.15": version "7.0.15" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== "@types/katex@^0.16.0": version "0.16.7" - resolved "https://registry.yarnpkg.com/@types/katex/-/katex-0.16.7.tgz#03ab680ab4fa4fbc6cb46ecf987ecad5d8019868" + resolved "https://registry.npmjs.org/@types/katex/-/katex-0.16.7.tgz" integrity sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ== "@types/linkify-it@^5": version "5.0.0" - resolved "https://registry.yarnpkg.com/@types/linkify-it/-/linkify-it-5.0.0.tgz#21413001973106cda1c3a9b91eedd4ccd5469d76" + resolved "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz" integrity sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q== "@types/markdown-it@^14.1.2": version "14.1.2" - resolved "https://registry.yarnpkg.com/@types/markdown-it/-/markdown-it-14.1.2.tgz#57f2532a0800067d9b934f3521429a2e8bfb4c61" + resolved "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.2.tgz" integrity sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog== dependencies: "@types/linkify-it" "^5" @@ -667,39 +703,39 @@ "@types/mdast@^4.0.0": version "4.0.4" - resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-4.0.4.tgz#7ccf72edd2f1aa7dd3437e180c64373585804dd6" + resolved "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz" integrity sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA== dependencies: "@types/unist" "*" "@types/mdurl@^2": version "2.0.0" - resolved "https://registry.yarnpkg.com/@types/mdurl/-/mdurl-2.0.0.tgz#d43878b5b20222682163ae6f897b20447233bdfd" + resolved "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz" integrity sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg== "@types/ms@*": version "2.1.0" - resolved "https://registry.yarnpkg.com/@types/ms/-/ms-2.1.0.tgz#052aa67a48eccc4309d7f0191b7e41434b90bb78" + resolved "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz" integrity sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA== -"@types/unist@*", "@types/unist@^3.0.0": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/unist/-/unist-3.0.3.tgz#acaab0f919ce69cce629c2d4ed2eb4adc1b6c20c" - integrity sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q== - -"@types/unist@^2.0.0": +"@types/unist@*", "@types/unist@^2.0.0": version "2.0.11" - resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.11.tgz#11af57b127e32487774841f7a4e54eab166d03c4" + resolved "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz" integrity sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA== +"@types/unist@^3.0.0": + version "3.0.3" + resolved "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz" + integrity sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q== + "@types/web-bluetooth@^0.0.21": version "0.0.21" - resolved "https://registry.yarnpkg.com/@types/web-bluetooth/-/web-bluetooth-0.0.21.tgz#525433c784aed9b457aaa0ee3d92aeb71f346b63" + resolved "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.21.tgz" integrity sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA== -"@typescript-eslint/eslint-plugin@8.26.1", "@typescript-eslint/eslint-plugin@^8.26.1": +"@typescript-eslint/eslint-plugin@^8.26.1", "@typescript-eslint/eslint-plugin@8.26.1": version "8.26.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.26.1.tgz#3e48eb847924161843b092c87a9b65176b53782f" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.26.1.tgz" integrity sha512-2X3mwqsj9Bd3Ciz508ZUtoQQYpOhU/kWoUqIf49H8Z0+Vbh6UF/y0OEYp0Q0axOGzaBGs7QxRwq0knSQ8khQNA== dependencies: "@eslint-community/regexpp" "^4.10.0" @@ -712,9 +748,9 @@ natural-compare "^1.4.0" ts-api-utils "^2.0.1" -"@typescript-eslint/parser@8.26.1", "@typescript-eslint/parser@^8.26.1": +"@typescript-eslint/parser@^8.0.0 || ^8.0.0-alpha.0", "@typescript-eslint/parser@^8.26.1", "@typescript-eslint/parser@8.26.1": version "8.26.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.26.1.tgz#0e2f915a497519fc43f52cf2ecbfa607ff56f72e" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.26.1.tgz" integrity sha512-w6HZUV4NWxqd8BdeFf81t07d7/YV9s7TCWrQQbG5uhuvGUAW+fq1usZ1Hmz9UPNLniFnD8GLSsDpjP0hm1S4lQ== dependencies: "@typescript-eslint/scope-manager" "8.26.1" @@ -725,7 +761,7 @@ "@typescript-eslint/scope-manager@8.26.1": version "8.26.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.26.1.tgz#5e6ad0ac258ccf79462e91c3f43a3f1f7f31a6cc" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.26.1.tgz" integrity sha512-6EIvbE5cNER8sqBu6V7+KeMZIC1664d2Yjt+B9EWUXrsyWpxx4lEZrmvxgSKRC6gX+efDL/UY9OpPZ267io3mg== dependencies: "@typescript-eslint/types" "8.26.1" @@ -733,7 +769,7 @@ "@typescript-eslint/type-utils@8.26.1": version "8.26.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.26.1.tgz#462f0bae09de72ac6e8e1af2ebe588c23224d7f8" + resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.26.1.tgz" integrity sha512-Kcj/TagJLwoY/5w9JGEFV0dclQdyqw9+VMndxOJKtoFSjfZhLXhYjzsQEeyza03rwHx2vFEGvrJWJBXKleRvZg== dependencies: "@typescript-eslint/typescript-estree" "8.26.1" @@ -743,12 +779,12 @@ "@typescript-eslint/types@8.26.1": version "8.26.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.26.1.tgz#d5978721670cff263348d5062773389231a64132" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.26.1.tgz" integrity sha512-n4THUQW27VmQMx+3P+B0Yptl7ydfceUj4ON/AQILAASwgYdZ/2dhfymRMh5egRUrvK5lSmaOm77Ry+lmXPOgBQ== "@typescript-eslint/typescript-estree@8.26.1": version "8.26.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.26.1.tgz#eb0e4ce31753683d83be53441a409fd5f0b34afd" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.26.1.tgz" integrity sha512-yUwPpUHDgdrv1QJ7YQal3cMVBGWfnuCdKbXw1yyjArax3353rEJP1ZA+4F8nOlQ3RfS2hUN/wze3nlY+ZOhvoA== dependencies: "@typescript-eslint/types" "8.26.1" @@ -762,7 +798,7 @@ "@typescript-eslint/utils@8.26.1": version "8.26.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.26.1.tgz#54cc58469955f25577f659753b71a0e117a0539f" + resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.26.1.tgz" integrity sha512-V4Urxa/XtSUroUrnI7q6yUTD3hDtfJ2jzVfeT3VK0ciizfK2q/zGC0iDh1lFMUZR8cImRrep6/q0xd/1ZGPQpg== dependencies: "@eslint-community/eslint-utils" "^4.4.0" @@ -772,7 +808,7 @@ "@typescript-eslint/visitor-keys@8.26.1": version "8.26.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.26.1.tgz#c5267fcc82795cf10280363023837deacad2647c" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.26.1.tgz" integrity sha512-AjOC3zfnxd6S4Eiy3jwktJPclqhFHNyd8L6Gycf9WUPoKZpgM5PjkxY1X7uSy61xVpiJDhhk7XT2NVsN3ALTWg== dependencies: "@typescript-eslint/types" "8.26.1" @@ -780,17 +816,17 @@ "@ungap/structured-clone@^1.0.0": version "1.3.0" - resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.3.0.tgz#d06bbb384ebcf6c505fde1c3d0ed4ddffe0aaff8" + resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz" integrity sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g== "@vitejs/plugin-vue@^5.2.1": version "5.2.1" - resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-5.2.1.tgz#d1491f678ee3af899f7ae57d9c21dc52a65c7133" + resolved "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.2.1.tgz" integrity sha512-cxh314tzaWwOLqVes2gnnCtvBDcM1UMdn+iFR+UjAn411dPT3tOmqrJjbMd7koZpMAmBM/GqeV4n9ge7JSiJJQ== "@vue/compiler-core@3.5.13": version "3.5.13" - resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.5.13.tgz#b0ae6c4347f60c03e849a05d34e5bf747c9bda05" + resolved "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.13.tgz" integrity sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q== dependencies: "@babel/parser" "^7.25.3" @@ -801,15 +837,26 @@ "@vue/compiler-dom@3.5.13": version "3.5.13" - resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz#bb1b8758dbc542b3658dda973b98a1c9311a8a58" + resolved "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz" integrity sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA== dependencies: "@vue/compiler-core" "3.5.13" "@vue/shared" "3.5.13" +"@vue/compiler-sfc@2.7.16": + version "2.7.16" + resolved "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.16.tgz" + integrity sha512-KWhJ9k5nXuNtygPU7+t1rX6baZeqOYLEforUPjgNDBnLicfHCoi48H87Q8XyLZOrNNsmhuwKqtpDQWjEFe6Ekg== + dependencies: + "@babel/parser" "^7.23.5" + postcss "^8.4.14" + source-map "^0.6.1" + optionalDependencies: + prettier "^1.18.2 || ^2.0.0" + "@vue/compiler-sfc@3.5.13": version "3.5.13" - resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz#461f8bd343b5c06fac4189c4fef8af32dea82b46" + resolved "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz" integrity sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ== dependencies: "@babel/parser" "^7.25.3" @@ -824,7 +871,7 @@ "@vue/compiler-ssr@3.5.13": version "3.5.13" - resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz#e771adcca6d3d000f91a4277c972a996d07f43ba" + resolved "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz" integrity sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA== dependencies: "@vue/compiler-dom" "3.5.13" @@ -832,14 +879,14 @@ "@vue/devtools-api@^7.7.0": version "7.7.2" - resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-7.7.2.tgz#49837eae6f61fc43a09f5d6c2d3210f9f73a0d09" + resolved "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-7.7.2.tgz" integrity sha512-1syn558KhyN+chO5SjlZIwJ8bV/bQ1nOVTG66t2RbG66ZGekyiYNmRO7X9BJCXQqPsFHlnksqvPhce2qpzxFnA== dependencies: "@vue/devtools-kit" "^7.7.2" "@vue/devtools-kit@^7.7.2": version "7.7.2" - resolved "https://registry.yarnpkg.com/@vue/devtools-kit/-/devtools-kit-7.7.2.tgz#3315bd5b144f98c7b84c2f44270b445644ec8f10" + resolved "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-7.7.2.tgz" integrity sha512-CY0I1JH3Z8PECbn6k3TqM1Bk9ASWxeMtTCvZr7vb+CHi+X/QwQm5F1/fPagraamKMAHVfuuCbdcnNg1A4CYVWQ== dependencies: "@vue/devtools-shared" "^7.7.2" @@ -852,21 +899,21 @@ "@vue/devtools-shared@^7.7.2": version "7.7.2" - resolved "https://registry.yarnpkg.com/@vue/devtools-shared/-/devtools-shared-7.7.2.tgz#b11b143820130a32d8ce5737e264d06ab6d62f40" + resolved "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-7.7.2.tgz" integrity sha512-uBFxnp8gwW2vD6FrJB8JZLUzVb6PNRG0B0jBnHsOH8uKyva2qINY8PTF5Te4QlTbMDqU5K6qtJDr6cNsKWhbOA== dependencies: rfdc "^1.4.1" "@vue/reactivity@3.5.13": version "3.5.13" - resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.5.13.tgz#b41ff2bb865e093899a22219f5b25f97b6fe155f" + resolved "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.13.tgz" integrity sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg== dependencies: "@vue/shared" "3.5.13" "@vue/runtime-core@3.5.13": version "3.5.13" - resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.5.13.tgz#1fafa4bf0b97af0ebdd9dbfe98cd630da363a455" + resolved "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.13.tgz" integrity sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw== dependencies: "@vue/reactivity" "3.5.13" @@ -874,7 +921,7 @@ "@vue/runtime-dom@3.5.13": version "3.5.13" - resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.5.13.tgz#610fc795de9246300e8ae8865930d534e1246215" + resolved "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.13.tgz" integrity sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog== dependencies: "@vue/reactivity" "3.5.13" @@ -884,20 +931,20 @@ "@vue/server-renderer@3.5.13": version "3.5.13" - resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.5.13.tgz#429ead62ee51de789646c22efe908e489aad46f7" + resolved "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.13.tgz" integrity sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA== dependencies: "@vue/compiler-ssr" "3.5.13" "@vue/shared" "3.5.13" -"@vue/shared@3.5.13", "@vue/shared@^3.5.13": +"@vue/shared@^3.5.13", "@vue/shared@3.5.13": version "3.5.13" - resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.5.13.tgz#87b309a6379c22b926e696893237826f64339b6f" + resolved "https://registry.npmjs.org/@vue/shared/-/shared-3.5.13.tgz" integrity sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ== -"@vueuse/core@12.8.2", "@vueuse/core@^12.4.0": +"@vueuse/core@^12.4.0", "@vueuse/core@12.8.2": version "12.8.2" - resolved "https://registry.yarnpkg.com/@vueuse/core/-/core-12.8.2.tgz#007c6dd29a7d1f6933e916e7a2f8ef3c3f968eaa" + resolved "https://registry.npmjs.org/@vueuse/core/-/core-12.8.2.tgz" integrity sha512-HbvCmZdzAu3VGi/pWYm5Ut+Kd9mn1ZHnn4L5G8kOQTPs/IwIAmJoBrmYk2ckLArgMXZj0AW3n5CAejLUO+PhdQ== dependencies: "@types/web-bluetooth" "^0.0.21" @@ -907,7 +954,7 @@ "@vueuse/integrations@^12.4.0": version "12.8.2" - resolved "https://registry.yarnpkg.com/@vueuse/integrations/-/integrations-12.8.2.tgz#d04f33d86fe985c9a27c98addcfde9f30f2db1df" + resolved "https://registry.npmjs.org/@vueuse/integrations/-/integrations-12.8.2.tgz" integrity sha512-fbGYivgK5uBTRt7p5F3zy6VrETlV9RtZjBqd1/HxGdjdckBgBM4ugP8LHpjolqTj14TXTxSK1ZfgPbHYyGuH7g== dependencies: "@vueuse/core" "12.8.2" @@ -916,29 +963,29 @@ "@vueuse/metadata@12.8.2": version "12.8.2" - resolved "https://registry.yarnpkg.com/@vueuse/metadata/-/metadata-12.8.2.tgz#6cb3a4e97cdcf528329eebc1bda73cd7f64318d3" + resolved "https://registry.npmjs.org/@vueuse/metadata/-/metadata-12.8.2.tgz" integrity sha512-rAyLGEuoBJ/Il5AmFHiziCPdQzRt88VxR+Y/A/QhJ1EWtWqPBBAxTAFaSkviwEuOEZNtW8pvkPgoCZQ+HxqW1A== "@vueuse/shared@12.8.2": version "12.8.2" - resolved "https://registry.yarnpkg.com/@vueuse/shared/-/shared-12.8.2.tgz#b9e4611d0603629c8e151f982459da394e22f930" + resolved "https://registry.npmjs.org/@vueuse/shared/-/shared-12.8.2.tgz" integrity sha512-dznP38YzxZoNloI0qpEfpkms8knDtaoQ6Y/sfS0L7Yki4zh40LFHEhur0odJC6xTHG5dxWVPiUWBXn+wCG2s5w== dependencies: vue "^3.5.13" acorn-jsx@^5.3.2: version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn@^8.14.0: +"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8.14.0: version "8.14.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.1.tgz#721d5dc10f7d5b5609a891773d47731796935dfb" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz" integrity sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg== ajv@^6.12.4: version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== dependencies: fast-deep-equal "^3.1.1" @@ -946,9 +993,9 @@ ajv@^6.12.4: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -algoliasearch@^5.14.2: +algoliasearch@^5.14.2, "algoliasearch@>= 4.9.1 < 6": version "5.20.4" - resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-5.20.4.tgz#514a74569ccd58293d9c64e9f6a0fcdf81a24612" + resolved "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.20.4.tgz" integrity sha512-wjfzqruxovJyDqga8M6Xk5XtfuVg3igrWjhjgkRya87+WwfEa1kg+IluujBLzgAiMSd6rO6jqRb7czjgeeSYgQ== dependencies: "@algolia/client-abtesting" "5.20.4" @@ -967,61 +1014,71 @@ algoliasearch@^5.14.2: ansi-colors@^4.1.1: version "4.1.3" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz" integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== ansi-escapes@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-7.0.0.tgz#00fc19f491bbb18e1d481b97868204f92109bfe7" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz" integrity sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw== dependencies: environment "^1.0.0" ansi-regex@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== ansi-regex@^6.0.1: version "6.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.1.0.tgz#95ec409c69619d6cb1b8b34f14b660ef28ebd654" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz" integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA== ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: color-convert "^2.0.1" -ansi-styles@^6.0.0, ansi-styles@^6.1.0, ansi-styles@^6.2.1: +ansi-styles@^6.0.0: + version "6.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + +ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + +ansi-styles@^6.2.1: version "6.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz" integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== argparse@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== balanced-match@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== birpc@^0.2.19: version "0.2.19" - resolved "https://registry.yarnpkg.com/birpc/-/birpc-0.2.19.tgz#cdd183a4a70ba103127d49765b4a71349da5a0ca" + resolved "https://registry.npmjs.org/birpc/-/birpc-0.2.19.tgz" integrity sha512-5WeXXAvTmitV1RqJFppT5QtUiz2p1mRSYU000Jkft5ZUCLJIk4uQriYNO50HknxKwM6jd8utNc66K1qGIwwWBQ== boolbase@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz" integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== brace-expansion@^1.1.7: version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== dependencies: balanced-match "^1.0.0" @@ -1029,31 +1086,31 @@ brace-expansion@^1.1.7: brace-expansion@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz" integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== dependencies: balanced-match "^1.0.0" braces@^3.0.3: version "3.0.3" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + resolved "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz" integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== dependencies: fill-range "^7.1.1" callsites@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== ccount@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/ccount/-/ccount-2.0.1.tgz#17a3bf82302e0870d6da43a01311a8bc02a3ecf5" + resolved "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz" integrity sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg== chalk@^4.0.0: version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== dependencies: ansi-styles "^4.1.0" @@ -1061,32 +1118,32 @@ chalk@^4.0.0: chalk@^5.4.1: version "5.4.1" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.4.1.tgz#1b48bf0963ec158dce2aacf69c093ae2dd2092d8" + resolved "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz" integrity sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w== character-entities-html4@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-2.1.0.tgz#1f1adb940c971a4b22ba39ddca6b618dc6e56b2b" + resolved "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz" integrity sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA== character-entities-legacy@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz#76bc83a90738901d7bc223a9e93759fdd560125b" + resolved "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz" integrity sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ== character-entities@^2.0.0: version "2.0.2" - resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-2.0.2.tgz#2d09c2e72cd9523076ccb21157dff66ad43fcc22" + resolved "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz" integrity sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ== character-reference-invalid@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz#85c66b041e43b47210faf401278abf808ac45cb9" + resolved "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz" integrity sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw== cheerio-select@^1.5.0: version "1.6.0" - resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-1.6.0.tgz#489f36604112c722afa147dedd0d4609c09e1696" + resolved "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.6.0.tgz" integrity sha512-eq0GdBvxVFbqWgmCm7M3XGs1I8oLy/nExUnh6oLqmBditPO9AqQJrkslDpMun/hZ0yyTs8L0m85OHp4ho6Qm9g== dependencies: css-select "^4.3.0" @@ -1097,7 +1154,7 @@ cheerio-select@^1.5.0: cheerio@1.0.0-rc.10: version "1.0.0-rc.10" - resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.10.tgz#2ba3dcdfcc26e7956fc1f440e61d51c643379f3e" + resolved "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz" integrity sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw== dependencies: cheerio-select "^1.5.0" @@ -1110,14 +1167,14 @@ cheerio@1.0.0-rc.10: cli-cursor@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-5.0.0.tgz#24a4831ecf5a6b01ddeb32fb71a4b2088b0dce38" + resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz" integrity sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw== dependencies: restore-cursor "^5.0.0" cli-truncate@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-4.0.0.tgz#6cc28a2924fee9e25ce91e973db56c7066e6172a" + resolved "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz" integrity sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA== dependencies: slice-ansi "^5.0.0" @@ -1125,7 +1182,7 @@ cli-truncate@^4.0.0: clipboard@^2.0.0: version "2.0.11" - resolved "https://registry.yarnpkg.com/clipboard/-/clipboard-2.0.11.tgz#62180360b97dd668b6b3a84ec226975762a70be5" + resolved "https://registry.npmjs.org/clipboard/-/clipboard-2.0.11.tgz" integrity sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw== dependencies: good-listener "^1.2.2" @@ -1134,61 +1191,61 @@ clipboard@^2.0.0: color-convert@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== dependencies: color-name "~1.1.4" color-name@~1.1.4: version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== colorette@^2.0.20: version "2.0.20" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" + resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz" integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== comma-separated-tokens@^2.0.0: version "2.0.3" - resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz#4e89c9458acb61bc8fef19f4529973b2392839ee" + resolved "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz" integrity sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg== -commander@9.2.0: - version "9.2.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-9.2.0.tgz#6e21014b2ed90d8b7c9647230d8b7a94a4a419a9" - integrity sha512-e2i4wANQiSXgnrBlIatyHtP1odfUp0BbV5Y5nEGbxtIrStkEOAAzCUirvLBNXHLr7kwLvJl6V+4V3XV9x7Wd9w== - commander@^13.1.0, commander@~13.1.0: version "13.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-13.1.0.tgz#776167db68c78f38dcce1f9b8d7b8b9a488abf46" + resolved "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz" integrity sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw== commander@^6.1.0: version "6.2.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" + resolved "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz" integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== commander@^8.3.0: version "8.3.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" + resolved "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz" integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== +commander@9.2.0: + version "9.2.0" + resolved "https://registry.npmjs.org/commander/-/commander-9.2.0.tgz" + integrity sha512-e2i4wANQiSXgnrBlIatyHtP1odfUp0BbV5Y5nEGbxtIrStkEOAAzCUirvLBNXHLr7kwLvJl6V+4V3XV9x7Wd9w== + concat-map@0.0.1: version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== copy-anything@^3.0.2: version "3.0.5" - resolved "https://registry.yarnpkg.com/copy-anything/-/copy-anything-3.0.5.tgz#2d92dce8c498f790fa7ad16b01a1ae5a45b020a0" + resolved "https://registry.npmjs.org/copy-anything/-/copy-anything-3.0.5.tgz" integrity sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w== dependencies: is-what "^4.1.8" cross-spawn@^7.0.3, cross-spawn@^7.0.6: version "7.0.6" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz" integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== dependencies: path-key "^3.1.0" @@ -1197,7 +1254,7 @@ cross-spawn@^7.0.3, cross-spawn@^7.0.6: css-select@^4.3.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" + resolved "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz" integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== dependencies: boolbase "^1.0.0" @@ -1208,63 +1265,63 @@ css-select@^4.3.0: css-what@^6.0.1: version "6.1.0" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" + resolved "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz" integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== cssesc@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== -csstype@^3.1.3: +csstype@^3.1.0, csstype@^3.1.3: version "3.1.3" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" + resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz" integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== debug@^4.0.0, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.4.0: version "4.4.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a" + resolved "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz" integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA== dependencies: ms "^2.1.3" decode-named-character-reference@^1.0.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.1.0.tgz#5d6ce68792808901210dac42a8e9853511e2b8bf" + resolved "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.1.0.tgz" integrity sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w== dependencies: character-entities "^2.0.0" deep-extend@^0.6.0: version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + resolved "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== deep-is@^0.1.3: version "0.1.4" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== delegate@^3.1.2: version "3.2.0" - resolved "https://registry.yarnpkg.com/delegate/-/delegate-3.2.0.tgz#b66b71c3158522e8ab5744f720d8ca0c2af59166" + resolved "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz" integrity sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw== dequal@^2.0.0: version "2.0.3" - resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" + resolved "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz" integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== devlop@^1.0.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/devlop/-/devlop-1.1.0.tgz#4db7c2ca4dc6e0e834c30be70c94bbc976dc7018" + resolved "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz" integrity sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA== dependencies: dequal "^2.0.0" dom-serializer@^1.0.1, dom-serializer@^1.3.2: version "1.4.1" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" + resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz" integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== dependencies: domelementtype "^2.0.1" @@ -1273,26 +1330,26 @@ dom-serializer@^1.0.1, dom-serializer@^1.3.2: domelementtype@^2.0.1, domelementtype@^2.2.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz" integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== domhandler@^3.3.0: version "3.3.0" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-3.3.0.tgz#6db7ea46e4617eb15cf875df68b2b8524ce0037a" + resolved "https://registry.npmjs.org/domhandler/-/domhandler-3.3.0.tgz" integrity sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA== dependencies: domelementtype "^2.0.1" domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: version "4.3.1" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" + resolved "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz" integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== dependencies: domelementtype "^2.2.0" domutils@^2.4.2, domutils@^2.5.2, domutils@^2.8.0: version "2.8.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" + resolved "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz" integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== dependencies: dom-serializer "^1.0.1" @@ -1301,47 +1358,52 @@ domutils@^2.4.2, domutils@^2.5.2, domutils@^2.8.0: eastasianwidth@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz" integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== emoji-regex-xs@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex-xs/-/emoji-regex-xs-1.0.0.tgz#e8af22e5d9dbd7f7f22d280af3d19d2aab5b0724" + resolved "https://registry.npmjs.org/emoji-regex-xs/-/emoji-regex-xs-1.0.0.tgz" integrity sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg== emoji-regex@^10.3.0: version "10.4.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-10.4.0.tgz#03553afea80b3975749cfcb36f776ca268e413d4" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz" integrity sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw== emoji-regex@^8.0.0: version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== emoji-regex@^9.2.2: version "9.2.2" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== entities@^2.0.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + resolved "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz" integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== -entities@^4.4.0, entities@^4.5.0: +entities@^4.4.0: version "4.5.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" + resolved "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz" + integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== + +entities@^4.5.0: + version "4.5.0" + resolved "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz" integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== environment@^1.0.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/environment/-/environment-1.1.0.tgz#8e86c66b180f363c7ab311787e0259665f45a9f1" + resolved "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz" integrity sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q== esbuild@^0.21.3: version "0.21.5" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.21.5.tgz#9ca301b120922959b766360d8ac830da0d02997d" + resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz" integrity sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw== optionalDependencies: "@esbuild/aix-ppc64" "0.21.5" @@ -1370,17 +1432,17 @@ esbuild@^0.21.3: escape-goat@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-3.0.0.tgz#e8b5fb658553fe8a3c4959c316c6ebb8c842b19c" + resolved "https://registry.npmjs.org/escape-goat/-/escape-goat-3.0.0.tgz" integrity sha512-w3PwNZJwRxlp47QGzhuEBldEqVHHhh8/tIPcl6ecf2Bou99cdAt0knihBV0Ecc7CGxYduXVBDheH1K2oADRlvw== escape-string-regexp@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== eslint-plugin-vue@^10.0.0: version "10.0.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-10.0.0.tgz#42707bfb8c4490b0b1a4be6f11a416fb16c3d11c" + resolved "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-10.0.0.tgz" integrity sha512-XKckedtajqwmaX6u1VnECmZ6xJt+YvlmMzBPZd+/sI3ub2lpYZyFnsyWo7c3nMOQKJQudeyk1lw/JxdgeKT64w== dependencies: "@eslint-community/eslint-utils" "^4.4.0" @@ -1392,7 +1454,7 @@ eslint-plugin-vue@^10.0.0: eslint-scope@^8.2.0, eslint-scope@^8.3.0: version "8.3.0" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.3.0.tgz#10cd3a918ffdd722f5f3f7b5b83db9b23c87340d" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.3.0.tgz" integrity sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ== dependencies: esrecurse "^4.3.0" @@ -1400,17 +1462,17 @@ eslint-scope@^8.2.0, eslint-scope@^8.3.0: eslint-visitor-keys@^3.4.3: version "3.4.3" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== eslint-visitor-keys@^4.2.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz#687bacb2af884fcdda8a6e7d65c606f46a14cd45" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz" integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw== -eslint@^9.22.0: +"eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^8.57.0 || ^9.0.0", eslint@^9.22.0: version "9.22.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.22.0.tgz#0760043809fbf836f582140345233984d613c552" + resolved "https://registry.npmjs.org/eslint/-/eslint-9.22.0.tgz" integrity sha512-9V/QURhsRN40xuHXWjV64yvrzMjcz7ZyNoF2jJFmy9j/SLk0u1OLSZgXi28MrXjymnjEGSR80WCdab3RGMDveQ== dependencies: "@eslint-community/eslint-utils" "^4.2.0" @@ -1451,12 +1513,12 @@ eslint@^9.22.0: esm@^3.2.25: version "3.2.25" - resolved "https://registry.yarnpkg.com/esm/-/esm-3.2.25.tgz#342c18c29d56157688ba5ce31f8431fbb795cc10" + resolved "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz" integrity sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA== espree@^10.0.1, espree@^10.3.0: version "10.3.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-10.3.0.tgz#29267cf5b0cb98735b65e64ba07e0ed49d1eed8a" + resolved "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz" integrity sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg== dependencies: acorn "^8.14.0" @@ -1465,41 +1527,41 @@ espree@^10.0.1, espree@^10.3.0: esquery@^1.5.0, esquery@^1.6.0: version "1.6.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7" + resolved "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz" integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== dependencies: estraverse "^5.1.0" esrecurse@^4.3.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== dependencies: estraverse "^5.2.0" estraverse@^5.1.0, estraverse@^5.2.0: version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== estree-walker@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" + resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz" integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== esutils@^2.0.2: version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== eventemitter3@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4" + resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz" integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== execa@^8.0.1: version "8.0.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-8.0.1.tgz#51f6a5943b580f963c3ca9c6321796db8cc39b8c" + resolved "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz" integrity sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg== dependencies: cross-spawn "^7.0.3" @@ -1514,12 +1576,12 @@ execa@^8.0.1: fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== fast-glob@^3.3.2: version "3.3.3" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818" + resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz" integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== dependencies: "@nodelib/fs.stat" "^2.0.2" @@ -1530,38 +1592,38 @@ fast-glob@^3.3.2: fast-json-stable-stringify@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== fast-levenshtein@^2.0.6: version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== fastq@^1.6.0: version "1.19.1" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.19.1.tgz#d50eaba803c8846a883c16492821ebcd2cda55f5" + resolved "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz" integrity sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ== dependencies: reusify "^1.0.4" file-entry-cache@^8.0.0: version "8.0.0" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-8.0.0.tgz#7787bddcf1131bffb92636c69457bbc0edd6d81f" + resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz" integrity sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ== dependencies: flat-cache "^4.0.0" fill-range@^7.1.1: version "7.1.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz" integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== dependencies: to-regex-range "^5.0.1" find-up@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== dependencies: locate-path "^6.0.0" @@ -1569,7 +1631,7 @@ find-up@^5.0.0: flat-cache@^4.0.0: version "4.0.1" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-4.0.1.tgz#0ece39fcb14ee012f4b0410bd33dd9c1f011127c" + resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz" integrity sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw== dependencies: flatted "^3.2.9" @@ -1577,19 +1639,19 @@ flat-cache@^4.0.0: flatted@^3.2.9: version "3.3.3" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.3.tgz#67c8fad95454a7c7abebf74bb78ee74a44023358" + resolved "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz" integrity sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg== -focus-trap@^7.6.4: +focus-trap@^7, focus-trap@^7.6.4: version "7.6.4" - resolved "https://registry.yarnpkg.com/focus-trap/-/focus-trap-7.6.4.tgz#455ec5c51fee5ae99604ca15142409ffbbf84db9" + resolved "https://registry.npmjs.org/focus-trap/-/focus-trap-7.6.4.tgz" integrity sha512-xx560wGBk7seZ6y933idtjJQc1l+ck+pI3sKvhKozdBV1dRZoKhkW5xoCaFv9tQiX5RH1xfSxjuNu6g+lmN/gw== dependencies: tabbable "^6.2.0" foreground-child@^3.1.0: version "3.3.1" - resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.1.tgz#32e8e9ed1b68a3497befb9ac2b6adf92a638576f" + resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz" integrity sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw== dependencies: cross-spawn "^7.0.6" @@ -1597,36 +1659,36 @@ foreground-child@^3.1.0: fsevents@~2.3.2, fsevents@~2.3.3: version "2.3.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== get-east-asian-width@^1.0.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz#21b4071ee58ed04ee0db653371b55b4299875389" + resolved "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz" integrity sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ== get-stream@^8.0.1: version "8.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-8.0.1.tgz#def9dfd71742cd7754a7761ed43749a27d02eca2" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz" integrity sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA== glob-parent@^5.1.2: version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: is-glob "^4.0.1" glob-parent@^6.0.2: version "6.0.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== dependencies: is-glob "^4.0.3" glob@~10.4.5: version "10.4.5" - resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956" + resolved "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz" integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== dependencies: foreground-child "^3.1.0" @@ -1638,34 +1700,34 @@ glob@~10.4.5: globals@^14.0.0: version "14.0.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e" + resolved "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz" integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ== globals@^16.0.0: version "16.0.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-16.0.0.tgz#3d7684652c5c4fbd086ec82f9448214da49382d8" + resolved "https://registry.npmjs.org/globals/-/globals-16.0.0.tgz" integrity sha512-iInW14XItCXET01CQFqudPOWP2jYMl7T+QRQT+UNcR/iQncN/F0UNpgd76iFkBPgNQb4+X3LV9tLJYzwh+Gl3A== good-listener@^1.2.2: version "1.2.2" - resolved "https://registry.yarnpkg.com/good-listener/-/good-listener-1.2.2.tgz#d53b30cdf9313dffb7dc9a0d477096aa6d145c50" + resolved "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz" integrity sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw== dependencies: delegate "^3.1.2" graphemer@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + resolved "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz" integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== has-flag@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== hast-util-to-html@^9.0.4: version "9.0.5" - resolved "https://registry.yarnpkg.com/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz#ccc673a55bb8e85775b08ac28380f72d47167005" + resolved "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz" integrity sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw== dependencies: "@types/hast" "^3.0.0" @@ -1682,24 +1744,24 @@ hast-util-to-html@^9.0.4: hast-util-whitespace@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz#7778ed9d3c92dd9e8c5c8f648a49c21fc51cb621" + resolved "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz" integrity sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw== dependencies: "@types/hast" "^3.0.0" hookable@^5.5.3: version "5.5.3" - resolved "https://registry.yarnpkg.com/hookable/-/hookable-5.5.3.tgz#6cfc358984a1ef991e2518cb9ed4a778bbd3215d" + resolved "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz" integrity sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ== html-void-elements@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-3.0.0.tgz#fc9dbd84af9e747249034d4d62602def6517f1d7" + resolved "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz" integrity sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg== htmlparser2@^5.0.0: version "5.0.1" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-5.0.1.tgz#7daa6fc3e35d6107ac95a4fc08781f091664f6e7" + resolved "https://registry.npmjs.org/htmlparser2/-/htmlparser2-5.0.1.tgz" integrity sha512-vKZZra6CSe9qsJzh0BjBGXo8dvzNsq/oGvsjfRdOrrryfeD9UOBEEQdeoqCRmKZchF5h2zOBMQ6YuQ0uRUmdbQ== dependencies: domelementtype "^2.0.1" @@ -1709,7 +1771,7 @@ htmlparser2@^5.0.0: htmlparser2@^6.1.0: version "6.1.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" + resolved "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz" integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== dependencies: domelementtype "^2.0.1" @@ -1719,22 +1781,22 @@ htmlparser2@^6.1.0: human-signals@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-5.0.0.tgz#42665a284f9ae0dade3ba41ebc37eb4b852f3a28" + resolved "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz" integrity sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ== ignore@^5.2.0, ignore@^5.3.1: version "5.3.2" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" + resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz" integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== ignore@~7.0.3: version "7.0.3" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-7.0.3.tgz#397ef9315dfe0595671eefe8b633fec6943ab733" + resolved "https://registry.npmjs.org/ignore/-/ignore-7.0.3.tgz" integrity sha512-bAH5jbK/F3T3Jls4I0SO1hmPR0dKU0a7+SY6n1yzRtG54FLO8d6w/nxLFX2Nb7dBu6cCWXPaAME6cYqFUMmuCA== import-fresh@^3.2.1: version "3.3.1" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.1.tgz#9cecb56503c0ada1f2741dbbd6546e4b13b57ccf" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz" integrity sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ== dependencies: parent-module "^1.0.0" @@ -1742,22 +1804,22 @@ import-fresh@^3.2.1: imurmurhash@^0.1.4: version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== ini@~4.1.0: version "4.1.3" - resolved "https://registry.yarnpkg.com/ini/-/ini-4.1.3.tgz#4c359675a6071a46985eb39b14e4a2c0ec98a795" + resolved "https://registry.npmjs.org/ini/-/ini-4.1.3.tgz" integrity sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg== is-alphabetical@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-2.0.1.tgz#01072053ea7c1036df3c7d19a6daaec7f19e789b" + resolved "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz" integrity sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ== is-alphanumerical@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz#7c03fbe96e3e931113e57f964b0a368cc2dfd875" + resolved "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz" integrity sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw== dependencies: is-alphabetical "^2.0.0" @@ -1765,66 +1827,66 @@ is-alphanumerical@^2.0.0: is-decimal@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-2.0.1.tgz#9469d2dc190d0214fd87d78b78caecc0cc14eef7" + resolved "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz" integrity sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A== is-extglob@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== is-fullwidth-code-point@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== is-fullwidth-code-point@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz#fae3167c729e7463f8461ce512b080a49268aa88" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz" integrity sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ== is-fullwidth-code-point@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz#9609efced7c2f97da7b60145ef481c787c7ba704" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz" integrity sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA== dependencies: get-east-asian-width "^1.0.0" is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== dependencies: is-extglob "^2.1.1" is-hexadecimal@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz#86b5bf668fca307498d319dfc03289d781a90027" + resolved "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz" integrity sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg== is-number@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== is-stream@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz" integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== is-what@^4.1.8: version "4.1.16" - resolved "https://registry.yarnpkg.com/is-what/-/is-what-4.1.16.tgz#1ad860a19da8b4895ad5495da3182ce2acdd7a6f" + resolved "https://registry.npmjs.org/is-what/-/is-what-4.1.16.tgz" integrity sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A== isexe@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== jackspeak@^3.1.2: version "3.4.3" - resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a" + resolved "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz" integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== dependencies: "@isaacs/cliui" "^8.0.2" @@ -1833,39 +1895,39 @@ jackspeak@^3.1.2: js-yaml@^4.1.0, js-yaml@~4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== dependencies: argparse "^2.0.1" json-buffer@3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz" integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== json-schema-traverse@^0.4.1: version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== jsonc-parser@~3.3.1: version "3.3.1" - resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.3.1.tgz#f2a524b4f7fd11e3d791e559977ad60b98b798b4" + resolved "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz" integrity sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ== jsonpointer@~5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.1.tgz#2110e0af0900fd37467b5907ecd13a7884a1b559" + resolved "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz" integrity sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ== juice@^8.0.0: version "8.1.0" - resolved "https://registry.yarnpkg.com/juice/-/juice-8.1.0.tgz#4ea23362522fe06418229943237ee3751a4fca70" + resolved "https://registry.npmjs.org/juice/-/juice-8.1.0.tgz" integrity sha512-FLzurJrx5Iv1e7CfBSZH68dC04EEvXvvVvPYB7Vx1WAuhCp1ZPIMtqxc+WTWxVkpTIC2Ach/GAv0rQbtGf6YMA== dependencies: cheerio "1.0.0-rc.10" @@ -1876,21 +1938,21 @@ juice@^8.0.0: katex@^0.16.0: version "0.16.21" - resolved "https://registry.yarnpkg.com/katex/-/katex-0.16.21.tgz#8f63c659e931b210139691f2cc7bb35166b792a3" + resolved "https://registry.npmjs.org/katex/-/katex-0.16.21.tgz" integrity sha512-XvqR7FgOHtWupfMiigNzmh+MgUVmDGU2kXZm899ZkPfcuoPuFxyHmXsgATDpFZDAXCI8tvinaVcDo8PIIJSo4A== dependencies: commander "^8.3.0" keyv@^4.5.4: version "4.5.4" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + resolved "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz" integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== dependencies: json-buffer "3.0.1" levn@^0.4.1: version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== dependencies: prelude-ls "^1.2.1" @@ -1898,19 +1960,19 @@ levn@^0.4.1: lilconfig@^3.1.3: version "3.1.3" - resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.1.3.tgz#a1bcfd6257f9585bf5ae14ceeebb7b559025e4c4" + resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz" integrity sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw== linkify-it@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-5.0.0.tgz#9ef238bfa6dc70bd8e7f9572b52d369af569b421" + resolved "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz" integrity sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ== dependencies: uc.micro "^2.0.0" lint-staged@^15.4.3: version "15.4.3" - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-15.4.3.tgz#e73587cc857f580c99f907abefe9ac8d8d5e74c1" + resolved "https://registry.npmjs.org/lint-staged/-/lint-staged-15.4.3.tgz" integrity sha512-FoH1vOeouNh1pw+90S+cnuoFwRfUD9ijY2GKy5h7HS3OR7JVir2N2xrsa0+Twc1B7cW72L+88geG5cW4wIhn7g== dependencies: chalk "^5.4.1" @@ -1926,7 +1988,7 @@ lint-staged@^15.4.3: listr2@^8.2.5: version "8.2.5" - resolved "https://registry.yarnpkg.com/listr2/-/listr2-8.2.5.tgz#5c9db996e1afeb05db0448196d3d5f64fec2593d" + resolved "https://registry.npmjs.org/listr2/-/listr2-8.2.5.tgz" integrity sha512-iyAZCeyD+c1gPyE9qpFu8af0Y+MRtmKOncdGoA2S5EY8iFq99dmmvkNnHiWo+pj0s7yH7l3KPIgee77tKpXPWQ== dependencies: cli-truncate "^4.0.0" @@ -1938,24 +2000,24 @@ listr2@^8.2.5: locate-path@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== dependencies: p-locate "^5.0.0" lodash.merge@^4.6.2: version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== lodash@^4.17.21: version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== log-update@^6.1.0: version "6.1.0" - resolved "https://registry.yarnpkg.com/log-update/-/log-update-6.1.0.tgz#1a04ff38166f94647ae1af562f4bd6a15b1b7cd4" + resolved "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz" integrity sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w== dependencies: ansi-escapes "^7.0.0" @@ -1966,24 +2028,24 @@ log-update@^6.1.0: lru-cache@^10.2.0: version "10.4.3" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz" integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== magic-string@^0.30.11: version "0.30.17" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.17.tgz#450a449673d2460e5bbcfba9a61916a1714c7453" + resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz" integrity sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA== dependencies: "@jridgewell/sourcemap-codec" "^1.5.0" mark.js@8.11.1: version "8.11.1" - resolved "https://registry.yarnpkg.com/mark.js/-/mark.js-8.11.1.tgz#180f1f9ebef8b0e638e4166ad52db879beb2ffc5" + resolved "https://registry.npmjs.org/mark.js/-/mark.js-8.11.1.tgz" integrity sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ== -markdown-it-mathjax3@^4.3.2: +markdown-it-mathjax3@^4, markdown-it-mathjax3@^4.3.2: version "4.3.2" - resolved "https://registry.yarnpkg.com/markdown-it-mathjax3/-/markdown-it-mathjax3-4.3.2.tgz#1e34aa86f8560b283fd283008334adc2d6b05a37" + resolved "https://registry.npmjs.org/markdown-it-mathjax3/-/markdown-it-mathjax3-4.3.2.tgz" integrity sha512-TX3GW5NjmupgFtMJGRauioMbbkGsOXAAt1DZ/rzzYmTHqzkO1rNAdiMD4NiruurToPApn2kYy76x02QN26qr2w== dependencies: juice "^8.0.0" @@ -1991,7 +2053,7 @@ markdown-it-mathjax3@^4.3.2: markdown-it@14.1.0: version "14.1.0" - resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-14.1.0.tgz#3c3c5992883c633db4714ccb4d7b5935d98b7d45" + resolved "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz" integrity sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg== dependencies: argparse "^2.0.1" @@ -2003,7 +2065,7 @@ markdown-it@14.1.0: markdownlint-cli@^0.44.0: version "0.44.0" - resolved "https://registry.yarnpkg.com/markdownlint-cli/-/markdownlint-cli-0.44.0.tgz#02b24c8a20972c50d124a6cafdeca3beb085a1ce" + resolved "https://registry.npmjs.org/markdownlint-cli/-/markdownlint-cli-0.44.0.tgz" integrity sha512-ZJTAONlvF9NkrIBltCdW15DxN9UTbPiKMEqAh2EU2gwIFlrCMavyCEPPO121cqfYOrLUJWW8/XKWongstmmTeQ== dependencies: commander "~13.1.0" @@ -2019,7 +2081,7 @@ markdownlint-cli@^0.44.0: markdownlint@~0.37.4: version "0.37.4" - resolved "https://registry.yarnpkg.com/markdownlint/-/markdownlint-0.37.4.tgz#dd58c4a13b798d4702438e5f7fd587a219f753f6" + resolved "https://registry.npmjs.org/markdownlint/-/markdownlint-0.37.4.tgz" integrity sha512-u00joA/syf3VhWh6/ybVFkib5Zpj2e5KB/cfCei8fkSRuums6nyisTWGqjTWIOFoFwuXoTBQQiqlB4qFKp8ncQ== dependencies: markdown-it "14.1.0" @@ -2034,7 +2096,7 @@ markdownlint@~0.37.4: mathjax-full@^3.2.0: version "3.2.2" - resolved "https://registry.yarnpkg.com/mathjax-full/-/mathjax-full-3.2.2.tgz#43f02e55219db393030985d2b6537ceae82f1fa7" + resolved "https://registry.npmjs.org/mathjax-full/-/mathjax-full-3.2.2.tgz" integrity sha512-+LfG9Fik+OuI8SLwsiR02IVdjcnRCy5MufYLi0C3TdMT56L/pjB0alMVGgoWJF8pN9Rc7FESycZB9BMNWIid5w== dependencies: esm "^3.2.25" @@ -2044,7 +2106,7 @@ mathjax-full@^3.2.0: mdast-util-to-hast@^13.0.0: version "13.2.0" - resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz#5ca58e5b921cc0a3ded1bc02eed79a4fe4fe41f4" + resolved "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz" integrity sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA== dependencies: "@types/hast" "^3.0.0" @@ -2059,32 +2121,32 @@ mdast-util-to-hast@^13.0.0: mdurl@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-2.0.0.tgz#80676ec0433025dd3e17ee983d0fe8de5a2237e0" + resolved "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz" integrity sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w== mensch@^0.3.4: version "0.3.4" - resolved "https://registry.yarnpkg.com/mensch/-/mensch-0.3.4.tgz#770f91b46cb16ea5b204ee735768c3f0c491fecd" + resolved "https://registry.npmjs.org/mensch/-/mensch-0.3.4.tgz" integrity sha512-IAeFvcOnV9V0Yk+bFhYR07O3yNina9ANIN5MoXBKYJ/RLYPurd2d0yw14MDhpr9/momp0WofT1bPUh3hkzdi/g== merge-stream@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== merge2@^1.3.0: version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== mhchemparser@^4.1.0: version "4.2.1" - resolved "https://registry.yarnpkg.com/mhchemparser/-/mhchemparser-4.2.1.tgz#d73982e66bc06170a85b1985600ee9dabe157cb0" + resolved "https://registry.npmjs.org/mhchemparser/-/mhchemparser-4.2.1.tgz" integrity sha512-kYmyrCirqJf3zZ9t/0wGgRZ4/ZJw//VwaRVGA75C4nhE60vtnIzhl9J9ndkX/h6hxSN7pjg/cE0VxbnNM+bnDQ== -micromark-core-commonmark@2.0.2: +micromark-core-commonmark@^2.0.0, micromark-core-commonmark@2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/micromark-core-commonmark/-/micromark-core-commonmark-2.0.2.tgz#6a45bbb139e126b3f8b361a10711ccc7c6e15e93" + resolved "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.2.tgz" integrity sha512-FKjQKbxd1cibWMM1P9N+H8TwlgGgSkWZMmfuVucLCHaYqeSvJ0hFeHsIa65pA2nYbes0f8LDHPMrd9X7Ujxg9w== dependencies: decode-named-character-reference "^1.0.0" @@ -2104,31 +2166,9 @@ micromark-core-commonmark@2.0.2: micromark-util-symbol "^2.0.0" micromark-util-types "^2.0.0" -micromark-core-commonmark@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz#c691630e485021a68cf28dbc2b2ca27ebf678cd4" - integrity sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg== - dependencies: - decode-named-character-reference "^1.0.0" - devlop "^1.0.0" - micromark-factory-destination "^2.0.0" - micromark-factory-label "^2.0.0" - micromark-factory-space "^2.0.0" - micromark-factory-title "^2.0.0" - micromark-factory-whitespace "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-chunked "^2.0.0" - micromark-util-classify-character "^2.0.0" - 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-symbol "^2.0.0" - micromark-util-types "^2.0.0" - micromark-extension-directive@3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/micromark-extension-directive/-/micromark-extension-directive-3.0.2.tgz#2eb61985d1995a7c1ff7621676a4f32af29409e8" + resolved "https://registry.npmjs.org/micromark-extension-directive/-/micromark-extension-directive-3.0.2.tgz" integrity sha512-wjcXHgk+PPdmvR58Le9d7zQYWy+vKEU9Se44p2CrCDPiLr2FMyiT4Fyb5UFKFC66wGB3kPlgD7q3TnoqPS7SZA== dependencies: devlop "^1.0.0" @@ -2141,7 +2181,7 @@ micromark-extension-directive@3.0.2: micromark-extension-gfm-autolink-literal@2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz#6286aee9686c4462c1e3552a9d505feddceeb935" + resolved "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz" integrity sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw== dependencies: micromark-util-character "^2.0.0" @@ -2151,7 +2191,7 @@ micromark-extension-gfm-autolink-literal@2.1.0: micromark-extension-gfm-footnote@2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz#4dab56d4e398b9853f6fe4efac4fc9361f3e0750" + resolved "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz" integrity sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw== dependencies: devlop "^1.0.0" @@ -2165,7 +2205,7 @@ micromark-extension-gfm-footnote@2.1.0: micromark-extension-gfm-table@2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.0.tgz#5cadedfbb29fca7abf752447967003dc3b6583c9" + resolved "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.0.tgz" integrity sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g== dependencies: devlop "^1.0.0" @@ -2176,7 +2216,7 @@ micromark-extension-gfm-table@2.1.0: micromark-extension-math@3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/micromark-extension-math/-/micromark-extension-math-3.1.0.tgz#c42ee3b1dd5a9a03584e83dd8f08e3de510212c1" + resolved "https://registry.npmjs.org/micromark-extension-math/-/micromark-extension-math-3.1.0.tgz" integrity sha512-lvEqd+fHjATVs+2v/8kg9i5Q0AP2k85H0WUOwpIVvUML8BapsMvh1XAogmQjOCsLpoKRCVQqEkQBB3NhVBcsOg== dependencies: "@types/katex" "^0.16.0" @@ -2189,7 +2229,7 @@ micromark-extension-math@3.1.0: micromark-factory-destination@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz#8fef8e0f7081f0474fbdd92deb50c990a0264639" + resolved "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz" integrity sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA== dependencies: micromark-util-character "^2.0.0" @@ -2198,7 +2238,7 @@ micromark-factory-destination@^2.0.0: micromark-factory-label@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz#5267efa97f1e5254efc7f20b459a38cb21058ba1" + resolved "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz" integrity sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg== dependencies: devlop "^1.0.0" @@ -2208,7 +2248,7 @@ micromark-factory-label@^2.0.0: micromark-factory-space@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz#36d0212e962b2b3121f8525fc7a3c7c029f334fc" + resolved "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz" integrity sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg== dependencies: micromark-util-character "^2.0.0" @@ -2216,7 +2256,7 @@ micromark-factory-space@^2.0.0: micromark-factory-title@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz#237e4aa5d58a95863f01032d9ee9b090f1de6e94" + resolved "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz" integrity sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw== dependencies: micromark-factory-space "^2.0.0" @@ -2226,7 +2266,7 @@ micromark-factory-title@^2.0.0: micromark-factory-whitespace@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz#06b26b2983c4d27bfcc657b33e25134d4868b0b1" + resolved "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz" integrity sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ== dependencies: micromark-factory-space "^2.0.0" @@ -2236,7 +2276,7 @@ micromark-factory-whitespace@^2.0.0: micromark-util-character@^2.0.0: version "2.1.1" - resolved "https://registry.yarnpkg.com/micromark-util-character/-/micromark-util-character-2.1.1.tgz#2f987831a40d4c510ac261e89852c4e9703ccda6" + resolved "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz" integrity sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q== dependencies: micromark-util-symbol "^2.0.0" @@ -2244,14 +2284,14 @@ micromark-util-character@^2.0.0: micromark-util-chunked@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz#47fbcd93471a3fccab86cff03847fc3552db1051" + resolved "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz" integrity sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA== dependencies: micromark-util-symbol "^2.0.0" micromark-util-classify-character@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz#d399faf9c45ca14c8b4be98b1ea481bced87b629" + resolved "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz" integrity sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q== dependencies: micromark-util-character "^2.0.0" @@ -2260,7 +2300,7 @@ micromark-util-classify-character@^2.0.0: micromark-util-combine-extensions@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz#2a0f490ab08bff5cc2fd5eec6dd0ca04f89b30a9" + resolved "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz" integrity sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg== dependencies: micromark-util-chunked "^2.0.0" @@ -2268,38 +2308,38 @@ micromark-util-combine-extensions@^2.0.0: micromark-util-decode-numeric-character-reference@^2.0.0: version "2.0.2" - resolved "https://registry.yarnpkg.com/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz#fcf15b660979388e6f118cdb6bf7d79d73d26fe5" + resolved "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz" integrity sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw== dependencies: micromark-util-symbol "^2.0.0" micromark-util-encode@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz#0d51d1c095551cfaac368326963cf55f15f540b8" + resolved "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz" integrity sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw== micromark-util-html-tag-name@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz#e40403096481986b41c106627f98f72d4d10b825" + resolved "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz" integrity sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA== micromark-util-normalize-identifier@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz#c30d77b2e832acf6526f8bf1aa47bc9c9438c16d" + resolved "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz" integrity sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q== dependencies: micromark-util-symbol "^2.0.0" micromark-util-resolve-all@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz#e1a2d62cdd237230a2ae11839027b19381e31e8b" + resolved "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz" integrity sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg== dependencies: micromark-util-types "^2.0.0" micromark-util-sanitize-uri@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz#ab89789b818a58752b73d6b55238621b7faa8fd7" + resolved "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz" integrity sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ== dependencies: micromark-util-character "^2.0.0" @@ -2308,7 +2348,7 @@ micromark-util-sanitize-uri@^2.0.0: micromark-util-subtokenize@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz#d8ade5ba0f3197a1cf6a2999fbbfe6357a1a19ee" + resolved "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz" integrity sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA== dependencies: devlop "^1.0.0" @@ -2318,22 +2358,17 @@ micromark-util-subtokenize@^2.0.0: micromark-util-symbol@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz#e5da494e8eb2b071a0d08fb34f6cefec6c0a19b8" + resolved "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz" integrity sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q== -micromark-util-types@2.0.1: +micromark-util-types@^2.0.0, micromark-util-types@2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-util-types/-/micromark-util-types-2.0.1.tgz#a3edfda3022c6c6b55bfb049ef5b75d70af50709" + resolved "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.1.tgz" integrity sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ== -micromark-util-types@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/micromark-util-types/-/micromark-util-types-2.0.2.tgz#f00225f5f5a0ebc3254f96c36b6605c4b393908e" - integrity sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA== - micromark@4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/micromark/-/micromark-4.0.1.tgz#294c2f12364759e5f9e925a767ae3dfde72223ff" + resolved "https://registry.npmjs.org/micromark/-/micromark-4.0.1.tgz" integrity sha512-eBPdkcoCNvYcxQOAKAlceo5SNdzZWfF+FcSupREAzdAh9rRmE239CEQAiTwIgblwnoM8zzj35sZ5ZwvSEOF6Kw== dependencies: "@types/debug" "^4.0.0" @@ -2356,7 +2391,7 @@ micromark@4.0.1: micromatch@^4.0.8: version "4.0.8" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz" integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== dependencies: braces "^3.0.3" @@ -2364,111 +2399,111 @@ micromatch@^4.0.8: mime@^2.4.6: version "2.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" + resolved "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz" integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== mimic-fn@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz" integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== mimic-function@^5.0.0: version "5.0.1" - resolved "https://registry.yarnpkg.com/mimic-function/-/mimic-function-5.0.1.tgz#acbe2b3349f99b9deaca7fb70e48b83e94e67076" + resolved "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz" integrity sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA== minimatch@^3.1.2: version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" minimatch@^9.0.4, minimatch@~9.0.5: version "9.0.5" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz" integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== dependencies: brace-expansion "^2.0.1" minimist@^1.2.8: version "1.2.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== "minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: version "7.1.2" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" + resolved "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz" integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== minisearch@^7.1.1: version "7.1.2" - resolved "https://registry.yarnpkg.com/minisearch/-/minisearch-7.1.2.tgz#296ee8d1906cc378f7e57a3a71f07e5205a75df5" + resolved "https://registry.npmjs.org/minisearch/-/minisearch-7.1.2.tgz" integrity sha512-R1Pd9eF+MD5JYDDSPAp/q1ougKglm14uEkPMvQ/05RGmx6G9wvmLTrTI/Q5iPNJLYqNdsDQ7qTGIcNWR+FrHmA== mitt@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/mitt/-/mitt-3.0.1.tgz#ea36cf0cc30403601ae074c8f77b7092cdab36d1" + resolved "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz" integrity sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw== mj-context-menu@^0.6.1: version "0.6.1" - resolved "https://registry.yarnpkg.com/mj-context-menu/-/mj-context-menu-0.6.1.tgz#a043c5282bf7e1cf3821de07b13525ca6f85aa69" + resolved "https://registry.npmjs.org/mj-context-menu/-/mj-context-menu-0.6.1.tgz" integrity sha512-7NO5s6n10TIV96d4g2uDpG7ZDpIhMh0QNfGdJw/W47JswFcosz457wqz/b5sAKvl12sxINGFCn80NZHKwxQEXA== ms@^2.1.3: version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== nanoid@^3.3.8: version "3.3.9" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.9.tgz#e0097d8e026b3343ff053e9ccd407360a03f503a" + resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.9.tgz" integrity sha512-SppoicMGpZvbF1l3z4x7No3OlIjP7QJvC9XR7AhZr1kL133KHnKPztkKDc+Ir4aJ/1VhTySrtKhrsycmrMQfvg== natural-compare@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== node-fetch@^2.6.0: version "2.7.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz" integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== dependencies: whatwg-url "^5.0.0" npm-run-path@^5.1.0: version "5.3.0" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.3.0.tgz#e23353d0ebb9317f174e93417e4a4d82d0249e9f" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz" integrity sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ== dependencies: path-key "^4.0.0" nth-check@^2.0.1, nth-check@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" + resolved "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz" integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== dependencies: boolbase "^1.0.0" onetime@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4" + resolved "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz" integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== dependencies: mimic-fn "^4.0.0" onetime@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-7.0.0.tgz#9f16c92d8c9ef5120e3acd9dd9957cceecc1ab60" + resolved "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz" integrity sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ== dependencies: mimic-function "^5.0.0" oniguruma-to-es@^3.1.0: version "3.1.1" - resolved "https://registry.yarnpkg.com/oniguruma-to-es/-/oniguruma-to-es-3.1.1.tgz#480e4bac4d3bc9439ac0d2124f0725e7a0d76d17" + resolved "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-3.1.1.tgz" integrity sha512-bUH8SDvPkH3ho3dvwJwfonjlQ4R80vjyvrU8YpxuROddv55vAEJrTuCuCVUhhsHbtlD9tGGbaNApGQckXhS8iQ== dependencies: emoji-regex-xs "^1.0.0" @@ -2477,7 +2512,7 @@ oniguruma-to-es@^3.1.0: optionator@^0.9.3: version "0.9.4" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" + resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz" integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== dependencies: deep-is "^0.1.3" @@ -2489,33 +2524,33 @@ optionator@^0.9.3: p-limit@^3.0.2: version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== dependencies: yocto-queue "^0.1.0" p-locate@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== dependencies: p-limit "^3.0.2" package-json-from-dist@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" + resolved "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz" integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== parent-module@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== dependencies: callsites "^3.0.0" parse-entities@^4.0.0: version "4.0.2" - resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-4.0.2.tgz#61d46f5ed28e4ee62e9ddc43d6b010188443f159" + resolved "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz" integrity sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw== dependencies: "@types/unist" "^2.0.0" @@ -2528,34 +2563,34 @@ parse-entities@^4.0.0: parse5-htmlparser2-tree-adapter@^6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz#2cdf9ad823321140370d4dbf5d3e92c7c8ddc6e6" + resolved "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz" integrity sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA== dependencies: parse5 "^6.0.1" parse5@^6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" + resolved "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz" integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== path-exists@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== path-key@^3.1.0: version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== path-key@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" + resolved "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz" integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== path-scurry@^1.11.1: version "1.11.1" - resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" + resolved "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz" integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== dependencies: lru-cache "^10.2.0" @@ -2563,40 +2598,40 @@ path-scurry@^1.11.1: perfect-debounce@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/perfect-debounce/-/perfect-debounce-1.0.0.tgz#9c2e8bc30b169cc984a58b7d5b28049839591d2a" + resolved "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz" integrity sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA== picocolors@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" + resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz" integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== picomatch@^2.3.1: version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== pidtree@^0.6.0: version "0.6.0" - resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.6.0.tgz#90ad7b6d42d5841e69e0a2419ef38f8883aa057c" + resolved "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz" integrity sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g== popper.js@^1.16.1: version "1.16.1" - resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.16.1.tgz#2a223cb3dc7b6213d740e40372be40de43e65b1b" + resolved "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz" integrity sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ== postcss-selector-parser@^6.0.15: version "6.1.2" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz#27ecb41fb0e3b6ba7a1ec84fff347f734c7929de" + resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz" integrity sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg== dependencies: cssesc "^3.0.0" util-deprecate "^1.0.2" -postcss@^8.4.43, postcss@^8.4.48: +postcss@^8, postcss@^8.4.14, postcss@^8.4.43, postcss@^8.4.48: version "8.5.3" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.3.tgz#1463b6f1c7fb16fe258736cba29a2de35237eafb" + resolved "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz" integrity sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A== dependencies: nanoid "^3.3.8" @@ -2605,71 +2640,76 @@ postcss@^8.4.43, postcss@^8.4.48: preact@^10.0.0: version "10.26.4" - resolved "https://registry.yarnpkg.com/preact/-/preact-10.26.4.tgz#b514f4249453a4247c82ff6d1267d59b7d78f9f9" + resolved "https://registry.npmjs.org/preact/-/preact-10.26.4.tgz" integrity sha512-KJhO7LBFTjP71d83trW+Ilnjbo+ySsaAgCfXOXUlmGzJ4ygYPWmysm77yg4emwfmoz3b22yvH5IsVFHbhUaH5w== prelude-ls@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== +"prettier@^1.18.2 || ^2.0.0": + version "2.8.8" + resolved "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz" + integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== + prettier@^3.5.3: version "3.5.3" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.5.3.tgz#4fc2ce0d657e7a02e602549f053b239cb7dfe1b5" + resolved "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz" integrity sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw== property-information@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/property-information/-/property-information-7.0.0.tgz#3508a6d6b0b8eb3ca6eb2c6623b164d2ed2ab112" + resolved "https://registry.npmjs.org/property-information/-/property-information-7.0.0.tgz" integrity sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg== punycode.js@^2.3.1: version "2.3.1" - resolved "https://registry.yarnpkg.com/punycode.js/-/punycode.js-2.3.1.tgz#6b53e56ad75588234e79f4affa90972c7dd8cdb7" + resolved "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz" integrity sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA== punycode@^2.1.0: version "2.3.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz" integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== queue-microtask@^1.2.2: version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== regenerator-runtime@^0.14.0: version "0.14.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz" integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== regex-recursion@^6.0.2: version "6.0.2" - resolved "https://registry.yarnpkg.com/regex-recursion/-/regex-recursion-6.0.2.tgz#a0b1977a74c87f073377b938dbedfab2ea582b33" + resolved "https://registry.npmjs.org/regex-recursion/-/regex-recursion-6.0.2.tgz" integrity sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg== dependencies: regex-utilities "^2.3.0" regex-utilities@^2.3.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/regex-utilities/-/regex-utilities-2.3.0.tgz#87163512a15dce2908cf079c8960d5158ff43280" + resolved "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz" integrity sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng== regex@^6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/regex/-/regex-6.0.1.tgz#282fa4435d0c700b09c0eb0982b602e05ab6a34f" + resolved "https://registry.npmjs.org/regex/-/regex-6.0.1.tgz" integrity sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA== dependencies: regex-utilities "^2.3.0" resolve-from@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== restore-cursor@^5.0.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-5.1.0.tgz#0766d95699efacb14150993f55baf0953ea1ebe7" + resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz" integrity sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA== dependencies: onetime "^7.0.0" @@ -2677,17 +2717,17 @@ restore-cursor@^5.0.0: reusify@^1.0.4: version "1.1.0" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.1.0.tgz#0fe13b9522e1473f51b558ee796e08f11f9b489f" + resolved "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz" integrity sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw== rfdc@^1.4.1: version "1.4.1" - resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.4.1.tgz#778f76c4fb731d93414e8f925fbecf64cce7f6ca" + resolved "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz" integrity sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA== rollup@^4.20.0: version "4.35.0" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.35.0.tgz#76c95dba17a579df4c00c3955aed32aa5d4dc66d" + resolved "https://registry.npmjs.org/rollup/-/rollup-4.35.0.tgz" integrity sha512-kg6oI4g+vc41vePJyO6dHt/yl0Rz3Thv0kJeVQ3D1kS3E5XSuKbPc29G4IpT/Kv1KQwgHVcN+HtyS+HYLNSvQg== dependencies: "@types/estree" "1.0.6" @@ -2715,7 +2755,7 @@ rollup@^4.20.0: run-con@~1.3.2: version "1.3.2" - resolved "https://registry.yarnpkg.com/run-con/-/run-con-1.3.2.tgz#755860a10ce326a96b509485fcea50b4d03754e8" + resolved "https://registry.npmjs.org/run-con/-/run-con-1.3.2.tgz" integrity sha512-CcfE+mYiTcKEzg0IqS08+efdnH0oJ3zV0wSUFBNrMHMuxCtXvBCLzCJHatwuXDcu/RlhjTziTo/a1ruQik6/Yg== dependencies: deep-extend "^0.6.0" @@ -2725,36 +2765,41 @@ run-con@~1.3.2: run-parallel@^1.1.9: version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== dependencies: queue-microtask "^1.2.2" +"search-insights@>= 1 < 3": + version "2.17.3" + resolved "https://registry.npmjs.org/search-insights/-/search-insights-2.17.3.tgz" + integrity sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ== + select@^1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/select/-/select-1.1.2.tgz#0e7350acdec80b1108528786ec1d4418d11b396d" + resolved "https://registry.npmjs.org/select/-/select-1.1.2.tgz" integrity sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA== semver@^7.6.0, semver@^7.6.3: version "7.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.1.tgz#abd5098d82b18c6c81f6074ff2647fd3e7220c9f" + resolved "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz" integrity sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA== shebang-command@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== dependencies: shebang-regex "^3.0.0" shebang-regex@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== shiki@^2.1.0: version "2.5.0" - resolved "https://registry.yarnpkg.com/shiki/-/shiki-2.5.0.tgz#09d01ebf3b0b06580431ce3ddc023320442cf223" + resolved "https://registry.npmjs.org/shiki/-/shiki-2.5.0.tgz" integrity sha512-mI//trrsaiCIPsja5CNfsyNOqgAZUb6VpJA+340toL42UpzQlXpwRV9nch69X6gaUxrr9kaOOa6e3y3uAkGFxQ== dependencies: "@shikijs/core" "2.5.0" @@ -2768,12 +2813,12 @@ shiki@^2.1.0: signal-exit@^4.0.1, signal-exit@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz" integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== slice-ansi@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-5.0.0.tgz#b73063c57aa96f9cd881654b15294d95d285c42a" + resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz" integrity sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ== dependencies: ansi-styles "^6.0.0" @@ -2781,7 +2826,7 @@ slice-ansi@^5.0.0: slice-ansi@^7.1.0: version "7.1.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-7.1.0.tgz#cd6b4655e298a8d1bdeb04250a433094b347b9a9" + resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.0.tgz" integrity sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg== dependencies: ansi-styles "^6.2.1" @@ -2789,32 +2834,37 @@ slice-ansi@^7.1.0: slick@^1.12.2: version "1.12.2" - resolved "https://registry.yarnpkg.com/slick/-/slick-1.12.2.tgz#bd048ddb74de7d1ca6915faa4a57570b3550c2d7" + resolved "https://registry.npmjs.org/slick/-/slick-1.12.2.tgz" integrity sha512-4qdtOGcBjral6YIBCWJ0ljFSKNLz9KkhbWtuGvUyRowl1kxfuE1x/Z/aJcaiilpb3do9bl5K7/1h9XC5wWpY/A== smol-toml@~1.3.1: version "1.3.1" - resolved "https://registry.yarnpkg.com/smol-toml/-/smol-toml-1.3.1.tgz#d9084a9e212142e3cab27ef4e2b8e8ba620bfe15" + resolved "https://registry.npmjs.org/smol-toml/-/smol-toml-1.3.1.tgz" integrity sha512-tEYNll18pPKHroYSmLLrksq233j021G0giwW7P3D24jC54pQ5W5BXMsQ/Mvw1OJCmEYDgY+lrzT+3nNUtoNfXQ== source-map-js@^1.2.0, source-map-js@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" + resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz" integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== +source-map@^0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + space-separated-tokens@^2.0.0: version "2.0.2" - resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz#1ecd9d2350a3844572c3f4a312bceb018348859f" + resolved "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz" integrity sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q== speakingurl@^14.0.1: version "14.0.1" - resolved "https://registry.yarnpkg.com/speakingurl/-/speakingurl-14.0.1.tgz#f37ec8ddc4ab98e9600c1c9ec324a8c48d772a53" + resolved "https://registry.npmjs.org/speakingurl/-/speakingurl-14.0.1.tgz" integrity sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ== speech-rule-engine@^4.0.6: version "4.0.7" - resolved "https://registry.yarnpkg.com/speech-rule-engine/-/speech-rule-engine-4.0.7.tgz#b655dacbad3dae04acc0f7665e26ef258397dd09" + resolved "https://registry.npmjs.org/speech-rule-engine/-/speech-rule-engine-4.0.7.tgz" integrity sha512-sJrL3/wHzNwJRLBdf6CjJWIlxC04iYKkyXvYSVsWVOiC2DSkHmxsqOhEeMsBA9XK+CHuNcsdkbFDnoUfAsmp9g== dependencies: commander "9.2.0" @@ -2823,12 +2873,12 @@ speech-rule-engine@^4.0.6: string-argv@^0.3.2: version "0.3.2" - resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.2.tgz#2b6d0ef24b656274d957d54e0a4bbf6153dc02b6" + resolved "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz" integrity sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q== "string-width-cjs@npm:string-width@^4.2.0": version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== dependencies: emoji-regex "^8.0.0" @@ -2837,7 +2887,7 @@ string-argv@^0.3.2: string-width@^4.1.0: version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== dependencies: emoji-regex "^8.0.0" @@ -2846,7 +2896,7 @@ string-width@^4.1.0: string-width@^5.0.1, string-width@^5.1.2: version "5.1.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + resolved "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz" integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== dependencies: eastasianwidth "^0.2.0" @@ -2855,7 +2905,7 @@ string-width@^5.0.1, string-width@^5.1.2: string-width@^7.0.0: version "7.2.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-7.2.0.tgz#b5bb8e2165ce275d4d43476dd2700ad9091db6dc" + resolved "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz" integrity sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ== dependencies: emoji-regex "^10.3.0" @@ -2864,7 +2914,7 @@ string-width@^7.0.0: stringify-entities@^4.0.0: version "4.0.4" - resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-4.0.4.tgz#b3b79ef5f277cc4ac73caeb0236c5ba939b3a4f3" + resolved "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz" integrity sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg== dependencies: character-entities-html4 "^2.0.0" @@ -2872,136 +2922,136 @@ stringify-entities@^4.0.0: "strip-ansi-cjs@npm:strip-ansi@^6.0.1": version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: ansi-regex "^5.0.1" strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: ansi-regex "^5.0.1" strip-ansi@^7.0.1, strip-ansi@^7.1.0: version "7.1.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz" integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== dependencies: ansi-regex "^6.0.1" strip-final-newline@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" + resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz" integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== strip-json-comments@^3.1.1, strip-json-comments@~3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== superjson@^2.2.1: version "2.2.2" - resolved "https://registry.yarnpkg.com/superjson/-/superjson-2.2.2.tgz#9d52bf0bf6b5751a3c3472f1292e714782ba3173" + resolved "https://registry.npmjs.org/superjson/-/superjson-2.2.2.tgz" integrity sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q== dependencies: copy-anything "^3.0.2" supports-color@^7.1.0: version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: has-flag "^4.0.0" tabbable@^6.2.0: version "6.2.0" - resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-6.2.0.tgz#732fb62bc0175cfcec257330be187dcfba1f3b97" + resolved "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz" integrity sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew== tiny-emitter@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-2.1.0.tgz#1d1a56edfc51c43e863cbb5382a72330e3555423" + resolved "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz" integrity sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q== to-regex-range@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== dependencies: is-number "^7.0.0" tr46@~0.0.3: version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== trim-lines@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/trim-lines/-/trim-lines-3.0.1.tgz#d802e332a07df861c48802c04321017b1bd87338" + resolved "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz" integrity sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg== ts-api-utils@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-2.0.1.tgz#660729385b625b939aaa58054f45c058f33f10cd" + resolved "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.1.tgz" integrity sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w== tslib@^2.2.0: version "2.8.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz" integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== dependencies: prelude-ls "^1.2.1" typescript-eslint@^8.26.1: version "8.26.1" - resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.26.1.tgz#d17a638a7543bc535157b83cdf5876513c71493b" + resolved "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.26.1.tgz" integrity sha512-t/oIs9mYyrwZGRpDv3g+3K6nZ5uhKEMt2oNmAPwaY4/ye0+EH4nXIPYNtkYFS6QHm+1DFg34DbglYBz5P9Xysg== dependencies: "@typescript-eslint/eslint-plugin" "8.26.1" "@typescript-eslint/parser" "8.26.1" "@typescript-eslint/utils" "8.26.1" -typescript@^5.2.2: +typescript@*, typescript@^5.2.2, typescript@>=4.8.4, "typescript@>=4.8.4 <5.9.0": version "5.8.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.8.2.tgz#8170b3702f74b79db2e5a96207c15e65807999e4" + resolved "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz" integrity sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ== uc.micro@^2.0.0, uc.micro@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-2.1.0.tgz#f8d3f7d0ec4c3dea35a7e3c8efa4cb8b45c9e7ee" + resolved "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz" integrity sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A== unist-util-is@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-6.0.0.tgz#b775956486aff107a9ded971d996c173374be424" + resolved "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz" integrity sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw== dependencies: "@types/unist" "^3.0.0" unist-util-position@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-5.0.0.tgz#678f20ab5ca1207a97d7ea8a388373c9cf896be4" + resolved "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz" integrity sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA== dependencies: "@types/unist" "^3.0.0" unist-util-stringify-position@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz#449c6e21a880e0855bf5aabadeb3a740314abac2" + resolved "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz" integrity sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ== dependencies: "@types/unist" "^3.0.0" unist-util-visit-parents@^6.0.0: version "6.0.1" - resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz#4d5f85755c3b8f0dc69e21eca5d6d82d22162815" + resolved "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz" integrity sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw== dependencies: "@types/unist" "^3.0.0" @@ -3009,7 +3059,7 @@ unist-util-visit-parents@^6.0.0: unist-util-visit@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-5.0.0.tgz#a7de1f31f72ffd3519ea71814cccf5fd6a9217d6" + resolved "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz" integrity sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg== dependencies: "@types/unist" "^3.0.0" @@ -3018,19 +3068,19 @@ unist-util-visit@^5.0.0: uri-js@^4.2.2: version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== dependencies: punycode "^2.1.0" util-deprecate@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== v-tooltip@^2.1.3: version "2.1.3" - resolved "https://registry.yarnpkg.com/v-tooltip/-/v-tooltip-2.1.3.tgz#281c2015d1e73787f13c8956aa295b8c3a73f261" + resolved "https://registry.npmjs.org/v-tooltip/-/v-tooltip-2.1.3.tgz" integrity sha512-xXngyxLQTOx/yUEy50thb8te7Qo4XU6h4LZB6cvEfVd9mnysUxLEoYwGWDdqR+l69liKsy3IPkdYff3J1gAJ5w== dependencies: "@babel/runtime" "^7.13.10" @@ -3040,12 +3090,12 @@ v-tooltip@^2.1.3: valid-data-url@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/valid-data-url/-/valid-data-url-3.0.1.tgz#826c1744e71b5632e847dd15dbd45b9fb38aa34f" + resolved "https://registry.npmjs.org/valid-data-url/-/valid-data-url-3.0.1.tgz" integrity sha512-jOWVmzVceKlVVdwjNSenT4PbGghU0SBIizAev8ofZVgivk/TVHXSbNL8LP6M3spZvkR9/QolkyJavGSX5Cs0UA== vfile-message@^4.0.0: version "4.0.2" - resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-4.0.2.tgz#c883c9f677c72c166362fd635f21fc165a7d1181" + resolved "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz" integrity sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw== dependencies: "@types/unist" "^3.0.0" @@ -3053,15 +3103,15 @@ vfile-message@^4.0.0: vfile@^6.0.0: version "6.0.3" - resolved "https://registry.yarnpkg.com/vfile/-/vfile-6.0.3.tgz#3652ab1c496531852bf55a6bac57af981ebc38ab" + resolved "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz" integrity sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q== dependencies: "@types/unist" "^3.0.0" vfile-message "^4.0.0" -vite@^5.4.14: +"vite@^5.0.0 || ^6.0.0", vite@^5.4.14: version "5.4.14" - resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.14.tgz#ff8255edb02134df180dcfca1916c37a6abe8408" + resolved "https://registry.npmjs.org/vite/-/vite-5.4.14.tgz" integrity sha512-EK5cY7Q1D8JNhSaPKVK4pwBFvaTmZxEnoKXLG/U9gmdDcihQGNzFlgIvaxezFR4glP1LsuiedwMBqCXH3wZccA== dependencies: esbuild "^0.21.3" @@ -3072,7 +3122,7 @@ vite@^5.4.14: vitepress@^1.6.3: version "1.6.3" - resolved "https://registry.yarnpkg.com/vitepress/-/vitepress-1.6.3.tgz#4e4662ce2ad55ef64604ecf4f96231a8da2fe9ba" + resolved "https://registry.npmjs.org/vitepress/-/vitepress-1.6.3.tgz" integrity sha512-fCkfdOk8yRZT8GD9BFqusW3+GggWYZ/rYncOfmgcDtP3ualNHCAg+Robxp2/6xfH1WwPHtGpPwv7mbA3qomtBw== dependencies: "@docsearch/css" "3.8.2" @@ -3096,14 +3146,14 @@ vitepress@^1.6.3: vue-clipboard2@^0.3.3: version "0.3.3" - resolved "https://registry.yarnpkg.com/vue-clipboard2/-/vue-clipboard2-0.3.3.tgz#331fec85f9d4f175eb0d4feaef4d77338562af36" + resolved "https://registry.npmjs.org/vue-clipboard2/-/vue-clipboard2-0.3.3.tgz" integrity sha512-aNWXIL2DKgJyY/1OOeITwAQz1fHaCIGvUFHf9h8UcoQBG5a74MkdhS/xqoYe7DNZdQmZRL+TAdIbtUs9OyVjbw== dependencies: clipboard "^2.0.0" -vue-eslint-parser@^10.1.1: +vue-eslint-parser@^10.0.0, vue-eslint-parser@^10.1.1: version "10.1.1" - resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-10.1.1.tgz#0d56d17a8e64cda088c8601dcbfc2ea51548e3d2" + resolved "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-10.1.1.tgz" integrity sha512-bh2Z/Au5slro9QJ3neFYLanZtb1jH+W2bKqGHXAoYD4vZgNG3KeotL7JpPv5xzY4UXUXJl7TrIsnzECH63kd3Q== dependencies: debug "^4.4.0" @@ -3116,14 +3166,22 @@ vue-eslint-parser@^10.1.1: vue-resize@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/vue-resize/-/vue-resize-1.0.1.tgz#c120bed4e09938771d622614f57dbcf58a5147ee" + resolved "https://registry.npmjs.org/vue-resize/-/vue-resize-1.0.1.tgz" integrity sha512-z5M7lJs0QluJnaoMFTIeGx6dIkYxOwHThlZDeQnWZBizKblb99GSejPnK37ZbNE/rVwDcYcHY+Io+AxdpY952w== dependencies: "@babel/runtime" "^7.13.10" -vue@^3.5.13: +vue@^2.6.0: + version "2.7.16" + resolved "https://registry.npmjs.org/vue/-/vue-2.7.16.tgz" + integrity sha512-4gCtFXaAA3zYZdTp5s4Hl2sozuySsgz4jy1EnpBHNfpMa9dK1ZCG7viqBPCwXtmgc8nHqUsAu3G4gtmXkkY3Sw== + dependencies: + "@vue/compiler-sfc" "2.7.16" + csstype "^3.1.0" + +vue@^3.2.25, vue@^3.5.13, vue@3.5.13: version "3.5.13" - resolved "https://registry.yarnpkg.com/vue/-/vue-3.5.13.tgz#9f760a1a982b09c0c04a867903fc339c9f29ec0a" + resolved "https://registry.npmjs.org/vue/-/vue-3.5.13.tgz" integrity sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ== dependencies: "@vue/compiler-dom" "3.5.13" @@ -3134,7 +3192,7 @@ vue@^3.5.13: web-resource-inliner@^6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/web-resource-inliner/-/web-resource-inliner-6.0.1.tgz#df0822f0a12028805fe80719ed52ab6526886e02" + resolved "https://registry.npmjs.org/web-resource-inliner/-/web-resource-inliner-6.0.1.tgz" integrity sha512-kfqDxt5dTB1JhqsCUQVFDj0rmY+4HLwGQIsLPbyrsN9y9WV/1oFDSx3BQ4GfCv9X+jVeQ7rouTqwK53rA/7t8A== dependencies: ansi-colors "^4.1.1" @@ -3146,12 +3204,12 @@ web-resource-inliner@^6.0.1: webidl-conversions@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== whatwg-url@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== dependencies: tr46 "~0.0.3" @@ -3159,24 +3217,24 @@ whatwg-url@^5.0.0: which@^2.0.1: version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" wicked-good-xpath@1.3.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/wicked-good-xpath/-/wicked-good-xpath-1.3.0.tgz#81b0e95e8650e49c94b22298fff8686b5553cf6c" + resolved "https://registry.npmjs.org/wicked-good-xpath/-/wicked-good-xpath-1.3.0.tgz" integrity sha512-Gd9+TUn5nXdwj/hFsPVx5cuHHiF5Bwuc30jZ4+ronF1qHK5O7HD0sgmXWSEgwKquT3ClLoKPVbO6qGwVwLzvAw== word-wrap@^1.2.5: version "1.2.5" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" + resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz" integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== dependencies: ansi-styles "^4.0.0" @@ -3185,7 +3243,7 @@ word-wrap@^1.2.5: wrap-ansi@^8.1.0: version "8.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz" integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== dependencies: ansi-styles "^6.1.0" @@ -3194,7 +3252,7 @@ wrap-ansi@^8.1.0: wrap-ansi@^9.0.0: version "9.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-9.0.0.tgz#1a3dc8b70d85eeb8398ddfb1e4a02cd186e58b3e" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz" integrity sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q== dependencies: ansi-styles "^6.2.1" @@ -3203,25 +3261,25 @@ wrap-ansi@^9.0.0: xml-name-validator@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz#79a006e2e63149a8600f15430f0a4725d1524835" + resolved "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz" integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw== xmldom-sre@0.1.31: version "0.1.31" - resolved "https://registry.yarnpkg.com/xmldom-sre/-/xmldom-sre-0.1.31.tgz#10860d5bab2c603144597d04bf2c4980e98067f4" + resolved "https://registry.npmjs.org/xmldom-sre/-/xmldom-sre-0.1.31.tgz" integrity sha512-f9s+fUkX04BxQf+7mMWAp5zk61pciie+fFLC9hX9UVvCeJQfNHRHXpeo5MPcR0EUf57PYLdt+ZO4f3Ipk2oZUw== yaml@^2.7.0: version "2.7.0" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.7.0.tgz#aef9bb617a64c937a9a748803786ad8d3ffe1e98" + resolved "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz" integrity sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA== yocto-queue@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== zwitch@^2.0.4: version "2.0.4" - resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-2.0.4.tgz#c827d4b0acb76fc3e685a4c6ec2902d51070e9d7" + resolved "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz" integrity sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A== From fbbf757ca39db8fabb48322bb5bc2b6b7b28909a Mon Sep 17 00:00:00 2001 From: swarnabhasinha Date: Tue, 29 Jul 2025 17:37:23 +0530 Subject: [PATCH 02/18] fix: remove few things --- docs/learn/overview/p2p.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/learn/overview/p2p.md b/docs/learn/overview/p2p.md index c9756b6..b65d21a 100644 --- a/docs/learn/overview/p2p.md +++ b/docs/learn/overview/p2p.md @@ -23,9 +23,9 @@ The **Protocol Abstraction** layer provides a unified interface that allows seam The data flow diagram illustrates how OptimumP2P integrates with blockchain infrastructure to provide enhanced data propagation. The system operates through three main components: the Validator Node, the Optimum Service, and the Networks layer. -At the **Validator Node** level, the Optimum Agent interfaces directly with the blockchain client through IPC (Inter-Process Communication). Transaction data flows from the blockchain client to the Optimum Agent, which serves as the bridge between the blockchain infrastructure and the OptimumP2P network. +At the **Validator Node** level, OptimumP2P interfaces directly with the blockchain client to access transaction data. This integration serves as the bridge between the blockchain infrastructure and the OptimumP2P network. -The **Optimum Service** acts as the central processing unit where the core RLNC encoding and network coordination takes place. When transaction data arrives from the Optimum Agent, the service applies Random Linear Network Coding to create redundant, encoded shards that can be efficiently propagated across the network. +The **Optimum Service** acts as the central processing unit where the core RLNC encoding and network coordination takes place. When transaction data is received from the validator, the service applies Random Linear Network Coding to create redundant, encoded shards that can be efficiently propagated across the network. The **Networks** component demonstrates the dual-path approach for maximum reliability. The primary path uses Fast Sync through the Optimum Network for rapid propagation using RLNC-encoded data. This network injects encoded shards to global blockchain nodes and validator nodes, ensuring fast delivery of critical information. From ae7ca652435986393414c1e7dc7cd3be6d9b1fad Mon Sep 17 00:00:00 2001 From: swarnabhasinha Date: Wed, 30 Jul 2025 00:19:11 +0530 Subject: [PATCH 03/18] fix: improve docs --- docs/learn/overview/p2p.md | 103 +++++++++++++++++++++++++------------ static/img/img_1.png | Bin 0 -> 137802 bytes static/img/img_2.png | Bin 0 -> 121906 bytes static/img/rlnc.png | Bin 0 -> 407054 bytes 4 files changed, 70 insertions(+), 33 deletions(-) create mode 100644 static/img/img_1.png create mode 100644 static/img/img_2.png create mode 100644 static/img/rlnc.png diff --git a/docs/learn/overview/p2p.md b/docs/learn/overview/p2p.md index b65d21a..c337b80 100644 --- a/docs/learn/overview/p2p.md +++ b/docs/learn/overview/p2p.md @@ -1,66 +1,103 @@ -# OptimumP2P: High-Performance Network Coding for Decentralized Systems +# OptimumP2P -OptimumP2P is a performant message-passing protocol designed for fast, bandwidth-efficient data propagation in decentralized networks. It leverages Random Linear Network Coding (RLNC), a network coding technique developed at MIT, to address fundamental limitations of traditional gossip protocols in blockchain and distributed systems. +OptimumP2P is a chain-agnostic data propagation protocol that utilizes Random Linear Network Coding (RLNC) to improve the speed, efficiency, and reliability of data dissemination in blockchain networks. It is designed as an enhanced alternative to traditional gossip protocols like GossipSub, offering faster block propagation, reduced bandwidth consumption, and improved fault tolerance. -## Architecture Overview +## The Problem: Blockchain Data Propagation Bottlenecks -OptimumP2P operates through a distributed architecture consisting of several key components that work together to enable efficient data propagation. +In modern blockchain networks, data propagation represents a critical bottleneck affecting transaction throughput, block finality, and overall network performance. When a validator proposes a new block, that block must reach a supermajority of network participants before consensus can be achieved. -The **Gateway Layer** provides API access and message coordination through HTTP and WebSocket interfaces. The gateway manages client connections, topic registries, and node pool coordination while handling authentication and authorization for secure access to the network. +Traditional gossip protocols like GossipSub introduce several challenges: +- **High Latency**: Nodes must receive a full message before they can forward it to their peers, leading to cumulative delays across multi-hop paths. +- **Bandwidth Inefficiency**: The same message is often transmitted multiple times over redundant paths, consuming excess bandwidth and increasing operational costs for node operators. +- **Scalability Limits**: As network size and message frequency increase, these protocols can struggle to maintain performance, limiting the practical bounds of block size and block time. -The **P2P Node Network** implements the core networking protocol using libp2p infrastructure with optimized transport layers. Each node maintains peer connections through DHT-based discovery and supports both native OptimumP2P and fallback GossipSub protocols for maximum compatibility and reliability. +## How OptimumP2P Works: A Network Coding Approach -The **Protocol Abstraction** layer provides a unified interface that allows seamless switching between different P2P protocols based on network conditions and requirements. This enables dynamic protocol selection and fallback mechanisms to ensure consistent network operation under varying conditions. - -**Message Coordination** handles topic-based message routing with single-node-per-topic assignment to prevent duplicate processing and optimize bandwidth utilization across the network. - -## Data Flow and Propagation +OptimumP2P addresses these limitations through RLNC, a technique that enables optimal data propagation in distributed networks. Instead of forwarding entire messages, nodes transmit smaller, coded pieces (shards) of the original data.

OptimumP2P Data Flow OptimumP2P Data Flow
-The data flow diagram illustrates how OptimumP2P integrates with blockchain infrastructure to provide enhanced data propagation. The system operates through three main components: the Validator Node, the Optimum Service, and the Networks layer. +The data flow involves three main components: +1. **Validator Node Integration**: OptimumP2P interfaces directly with a blockchain client to access data, such as newly produced blocks or transactions. +2. **The Optimum Service**: This component is responsible for RLNC encoding. When it receives data, it applies network coding to generate redundant, coded shards. +3. **Network Propagation**: The coded shards are propagated through the OptimumP2P network. A fallback mechanism to standard gossip protocols can be maintained for reliability and interoperability. + +This model operates on a publish-subscribe (pub/sub) basis. Any node can publish data, and interested nodes across the globe can subscribe to receive it. This is well-suited for common Web3 communication patterns, from transaction broadcasting to block attestation. + +![OptimumP2P Network Topology](/static/img/img_1.png) + +### Random Linear Network Coding (RLNC) Fundamentals + +RLNC is the core technology that provides OptimumP2P its performance advantages. The process transforms a single large message into a set of smaller, mathematically-related pieces. + +![RLNC Coding and Composability](/static/img/rlnc.png) + +**Key Principles:** + +- **Encoding**: Original data is divided into `k` pieces. These pieces are then used to generate a larger set of `n` coded shards by creating random linear combinations of the original pieces. The coefficients for these combinations are chosen from a finite field. Any equation generated has a high probability (`1 - 1/q`, where `q` is the field size) of being linearly independent, ensuring its utility. +- **Early Forwarding & Composability**: A key feature of RLNC is that nodes do not need to wait to receive all `k` pieces to contribute to the network. As soon as a node receives a shard, it can be combined with other received shards to create and forward a *new, unique* coded shard (a process called recoding). This continuous "mixing" of information allows data to propagate fluidly and rapidly. +- **Decoding**: A receiver only needs to collect *any* `k` linearly independent shards to reconstruct the original message by solving a system of linear equations. This makes the system highly resilient to packet loss, as the specific shards that arrive do not matter, only the total number of unique shards. -At the **Validator Node** level, OptimumP2P interfaces directly with the blockchain client to access transaction data. This integration serves as the bridge between the blockchain infrastructure and the OptimumP2P network. +This approach offers several advantages: +- **Lower Latency**: Messages are broken into coded shards, which can be forwarded to the next node before the whole message is received. +- **Loss Tolerance**: Messages can be decoded with any combination of shards, as long as a sufficient number reach the destination. +- **Bandwidth Efficiency**: Sharding and recoding reduce the amount of redundant data transmission, lowering overall bandwidth usage. -The **Optimum Service** acts as the central processing unit where the core RLNC encoding and network coordination takes place. When transaction data is received from the validator, the service applies Random Linear Network Coding to create redundant, encoded shards that can be efficiently propagated across the network. +### High-Level Architecture -The **Networks** component demonstrates the dual-path approach for maximum reliability. The primary path uses Fast Sync through the Optimum Network for rapid propagation using RLNC-encoded data. This network injects encoded shards to global blockchain nodes and validator nodes, ensuring fast delivery of critical information. +OptimumP2P is composed of several components that work together: -A fallback mechanism ensures network reliability through the standard Blockchain Network using traditional gossip protocols. This dual approach guarantees that even if the OptimumP2P network experiences issues, data can still propagate through conventional means, maintaining network integrity and consensus. +- **Gateway Layer**: Provides a standardized API for blockchain clients to interact with the network via HTTP and WebSockets. It handles client connections, topic management, and authentication. +- **P2P Node Network**: Implements the core RLNC protocol using **[libp2p](https://docs.libp2p.io/)**. It manages peer connections, discovery (via DHT), and protocol negotiation. +- **Protocol Abstraction**: A layer that allows for dynamic protocol selection, enabling interoperability with nodes that may not be running OptimumP2P by falling back to standard GossipSub. -![Network Introduction](/static/img/intro.png) +### High-Level Integration Model -The network topology shows the hierarchical structure where OptimumP2P nodes operate in the upper layer, connecting to gateway nodes that interface with user clients. This architecture enables efficient data distribution from the P2P network down to individual client applications while maintaining scalability and performance. +OptimumP2P is designed to integrate with existing blockchain clients without requiring modifications to their core code. A common integration pattern is the **sidecar relay model**. -## How OptimumP2P Works +![OptimumP2P Validator Implementation](/static/img/img_2.png) -OptimumP2P integrates with networks at the validator level as a software component running on each validator's machine. Block data is read directly from the network client, then sharded and encoded using RLNC before being forwarded to other nodes on the network. The entire process from block data intake to full network propagation takes place in a few hundred milliseconds, maintaining this performance level as data size and frequency scales. +In this model, an **Optimum Relay** process runs alongside the validator's standard Consensus Layer (CL) client. +1. The relay peers directly with the local CL client. +2. When a proposer needs to publish a new block, its relay forwards the block to the interconnected OptimumP2P network. +3. Other validators on the network subscribe to block topics. Their local relays receive the block from the OptimumP2P network and deliver it to their own CL clients for attestation. -The system leverages RLNC to reduce the amount of redundant data that needs to be transmitted. Unlike traditional gossip protocols that require complete message reception before forwarding, OptimumP2P allows data forwarding to begin as soon as any shards are received. This approach saves both time and computational resources while improving overall network efficiency. +This architecture allows validators to tap into the high-performance OptimumP2P network for data propagation while maintaining their existing, unmodified client software for all core consensus duties. -## Random Linear Network Coding Implementation +## Beyond Just Validators: Ecosystem-Wide Benefits -The RLNC implementation in OptimumP2P provides the mathematical foundation for efficient data propagation. Data objects are systematically encoded into k-of-n coded elements using linear algebra over finite fields. This encoding process creates redundant information that allows complete reconstruction from any k received elements out of n transmitted elements. +OptimumP2P is designed as a foundational, general-purpose data propagation layer. Its benefits extend across the entire blockchain ecosystem and it can serve as an enhanced networking stack for any blockchain client, such as those used in Ethereum or as a potential alternative to specialized protocols like Solana's Turbine. -During the encoding process, original data is split into systematic chunks, and linear combinations are computed using randomly generated coefficients. This creates coded shards that contain both original data fragments and encoding vectors. Each shard carries its encoding coefficients, enabling recipients to perform Gaussian elimination for data reconstruction. -The system includes recoding capability, where intermediate nodes can generate new coded packets by linearly combining received packets. This improves network efficiency without requiring full data reconstruction at intermediate nodes, allowing for more flexible and resilient data propagation paths. -## Message Types and Protocol Handling +### For L1/L2 Chains and Node Operators +An efficient propagation layer can lead to several advantages for the core network and its operators. +* **Scalability Improvements**: By addressing propagation bottlenecks, networks can explore opportunities to increase block sizes or shorten block times without negatively impacting decentralization. +* **Operational Cost Reduction**: Lower bandwidth requirements can translate to reduced operational costs for node operators, particularly for those in bandwidth-constrained environments. This helps maintain network decentralization by keeping participation accessible. -OptimumP2P defines several message types for efficient network operation. Data messages carry encoded payload data with RLNC coefficients and metadata necessary for reconstruction. Control messages handle subscription management, peer discovery, and protocol negotiation between nodes. Trace events provide network monitoring capabilities by tracking shard propagation and performance metrics throughout the system. +### For Application Developers and End Users +The performance of the base-layer network directly impacts the applications built on top of it. +* **Enablement of Low-Latency dApps**: A network that supports lower-latency interactions can enable more responsive decentralized applications, including those in gaming or high-frequency DeFi. +* **Improved User Experience**: The goal is to improve the end-user experience through the potential for faster transaction confirmations and a more stable gas fee environment resulting from eased network congestion. +* **Enhanced Reliability**: A more predictable network can simplify dApp development by reducing the need for complex retry logic to handle network instability. -The protocol employs DHT-based peer discovery with configurable bootstrap nodes to establish and maintain network connectivity. Connection management includes adaptive connection pools that scale dynamically based on network conditions and message throughput, automated failure detection and recovery from node failures or network partitions, and capability-based selection between OptimumP2P and fallback protocols. +### Security Model -## Security Model +OptimumP2P's security model is built upon the robust foundations of **[libp2p](https://docs.libp2p.io/)**. As such, it inherits a comprehensive suite of security features designed for hostile peer-to-peer environments. For a full overview of these protections, refer to the [libp2p security considerations](https://docs.libp2p.io/concepts/security/security-considerations/). -OptimumP2P implements a comprehensive security model to protect against various attack vectors. The system uses Boneh-Lynn-Shacham (BLS) signatures to provide authentication and non-repudiation for all network communications. Cryptographic hashing ensures data integrity throughout the network, while distributed key management with on-chain registration and verification provides secure identity management. +Key inherited security features include: +- **Authenticated and Encrypted Channels**: All peer-to-peer communication is secured using Noise or TLS, preventing eavesdropping and tampering. +- **Sybil and Eclipse Attack Mitigation**: The protocol uses libp2p's peer discovery and management systems, which include defenses against an attacker flooding the network with malicious nodes to gain control or isolate honest peers. -The protocol includes protection against pollution attacks through coding-theoretic techniques that detect and mitigate data pollution attempts. Eclipse attacks are prevented through DHT-based discovery with multiple bootstrap nodes, preventing network isolation. Integration with blockchain identity systems provides resistance against Sybil attacks by leveraging existing trust infrastructure. +**Network Coding-Specific Security: Pollution Attacks** -## Summary +The primary security challenge unique to network coding is the risk of **pollution attacks**. In such an attack, a malicious actor injects corrupted or invalid coded shards into the network, with the goal of preventing honest nodes from successfully decoding the original message. -OptimumP2P is a high-performance, developer-friendly protocol for fast, reliable, and bandwidth-efficient data propagation in decentralized networks. By leveraging RLNC, it addresses the limitations of traditional gossip protocols, providing measurable improvements in latency, bandwidth usage, and fault tolerance. The protocol is designed for easy integration, broad compatibility, and robust security, making it suitable for validators, chains, and applications seeking to optimize network performance. +OptimumP2P mitigates this risk through a multi-layered approach centered on **source authentication**. +- The original message data is cryptographically hashed to create a unique identifier. +- This identifier, along with the publisher's signature, is bound to the data. +- When a node decodes a message from a set of shards, it can verify the reconstructed data against the publisher's original signature and hash. +If the verification fails, the node knows that at least one of the shards it received was polluted. While identifying the exact malicious shard can be complex, the system can identify the peers who sent the invalid shards and lower their reputation scores, eventually isolating them from the network. This ensures that even though recoding happens at intermediate nodes, the integrity of the data can be verified end-to-end. diff --git a/static/img/img_1.png b/static/img/img_1.png new file mode 100644 index 0000000000000000000000000000000000000000..5476197de40a3eab2b561dc10fd3296ba809efdd GIT binary patch literal 137802 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

FS4n9vB4txPq^+wt_$hmthi)<_hy~&LK2rK6p!m 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 literal 0 HcmV?d00001 diff --git a/static/img/img_2.png b/static/img/img_2.png new file mode 100644 index 0000000000000000000000000000000000000000..fda31da4c49f35d7472ee8ad4a78cce590200668 GIT binary patch literal 121906 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�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 z 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 literal 0 HcmV?d00001 From 684ee925ca212b5a468184bb98da41eeaf0457a4 Mon Sep 17 00:00:00 2001 From: swarnabhasinha Date: Wed, 30 Jul 2025 00:30:07 +0530 Subject: [PATCH 04/18] fix: lint --- docs/learn/overview/p2p.md | 51 ++++++++++++++++++++++---------------- 1 file changed, 30 insertions(+), 21 deletions(-) diff --git a/docs/learn/overview/p2p.md b/docs/learn/overview/p2p.md index c337b80..589bd2b 100644 --- a/docs/learn/overview/p2p.md +++ b/docs/learn/overview/p2p.md @@ -7,9 +7,10 @@ OptimumP2P is a chain-agnostic data propagation protocol that utilizes Random Li In modern blockchain networks, data propagation represents a critical bottleneck affecting transaction throughput, block finality, and overall network performance. When a validator proposes a new block, that block must reach a supermajority of network participants before consensus can be achieved. Traditional gossip protocols like GossipSub introduce several challenges: -- **High Latency**: Nodes must receive a full message before they can forward it to their peers, leading to cumulative delays across multi-hop paths. -- **Bandwidth Inefficiency**: The same message is often transmitted multiple times over redundant paths, consuming excess bandwidth and increasing operational costs for node operators. -- **Scalability Limits**: As network size and message frequency increase, these protocols can struggle to maintain performance, limiting the practical bounds of block size and block time. + +* **High Latency**: Nodes must receive a full message before they can forward it to their peers, leading to cumulative delays across multi-hop paths. +* **Bandwidth Inefficiency**: The same message is often transmitted multiple times over redundant paths, consuming excess bandwidth and increasing operational costs for node operators. +* **Scalability Limits**: As network size and message frequency increase, these protocols can struggle to maintain performance, limiting the practical bounds of block size and block time. ## How OptimumP2P Works: A Network Coding Approach @@ -21,6 +22,7 @@ OptimumP2P addresses these limitations through RLNC, a technique that enables op The data flow involves three main components: + 1. **Validator Node Integration**: OptimumP2P interfaces directly with a blockchain client to access data, such as newly produced blocks or transactions. 2. **The Optimum Service**: This component is responsible for RLNC encoding. When it receives data, it applies network coding to generate redundant, coded shards. 3. **Network Propagation**: The coded shards are propagated through the OptimumP2P network. A fallback mechanism to standard gossip protocols can be maintained for reliability and interoperability. @@ -37,22 +39,23 @@ RLNC is the core technology that provides OptimumP2P its performance advantages. **Key Principles:** -- **Encoding**: Original data is divided into `k` pieces. These pieces are then used to generate a larger set of `n` coded shards by creating random linear combinations of the original pieces. The coefficients for these combinations are chosen from a finite field. Any equation generated has a high probability (`1 - 1/q`, where `q` is the field size) of being linearly independent, ensuring its utility. -- **Early Forwarding & Composability**: A key feature of RLNC is that nodes do not need to wait to receive all `k` pieces to contribute to the network. As soon as a node receives a shard, it can be combined with other received shards to create and forward a *new, unique* coded shard (a process called recoding). This continuous "mixing" of information allows data to propagate fluidly and rapidly. -- **Decoding**: A receiver only needs to collect *any* `k` linearly independent shards to reconstruct the original message by solving a system of linear equations. This makes the system highly resilient to packet loss, as the specific shards that arrive do not matter, only the total number of unique shards. +* **Encoding**: Original data is divided into `k` pieces. These pieces are then used to generate a larger set of `n` coded shards by creating random linear combinations of the original pieces. The coefficients for these combinations are chosen from a finite field. Any equation generated has a high probability (`1 - 1/q`, where `q` is the field size) of being linearly independent, ensuring its utility. +* **Early Forwarding & Composability**: A key feature of RLNC is that nodes do not need to wait to receive all `k` pieces to contribute to the network. As soon as a node receives a shard, it can be combined with other received shards to create and forward a *new, unique* coded shard (a process called recoding). This continuous "mixing" of information allows data to propagate fluidly and rapidly. +* **Decoding**: A receiver only needs to collect *any* `k` linearly independent shards to reconstruct the original message by solving a system of linear equations. This makes the system highly resilient to packet loss, as the specific shards that arrive do not matter, only the total number of unique shards. This approach offers several advantages: -- **Lower Latency**: Messages are broken into coded shards, which can be forwarded to the next node before the whole message is received. -- **Loss Tolerance**: Messages can be decoded with any combination of shards, as long as a sufficient number reach the destination. -- **Bandwidth Efficiency**: Sharding and recoding reduce the amount of redundant data transmission, lowering overall bandwidth usage. + +* **Lower Latency**: Messages are broken into coded shards, which can be forwarded to the next node before the whole message is received. +* **Loss Tolerance**: Messages can be decoded with any combination of shards, as long as a sufficient number reach the destination. +* **Bandwidth Efficiency**: Sharding and recoding reduce the amount of redundant data transmission, lowering overall bandwidth usage. ### High-Level Architecture OptimumP2P is composed of several components that work together: -- **Gateway Layer**: Provides a standardized API for blockchain clients to interact with the network via HTTP and WebSockets. It handles client connections, topic management, and authentication. -- **P2P Node Network**: Implements the core RLNC protocol using **[libp2p](https://docs.libp2p.io/)**. It manages peer connections, discovery (via DHT), and protocol negotiation. -- **Protocol Abstraction**: A layer that allows for dynamic protocol selection, enabling interoperability with nodes that may not be running OptimumP2P by falling back to standard GossipSub. +* **Gateway Layer**: Provides a standardized API for blockchain clients to interact with the network via HTTP and WebSockets. It handles client connections, topic management, and authentication. +* **P2P Node Network**: Implements the core RLNC protocol using **[libp2p](https://docs.libp2p.io/)**. It manages peer connections, discovery (via DHT), and protocol negotiation. +* **Protocol Abstraction**: A layer that allows for dynamic protocol selection, enabling interoperability with nodes that may not be running OptimumP2P by falling back to standard GossipSub. ### High-Level Integration Model @@ -61,6 +64,7 @@ OptimumP2P is designed to integrate with existing blockchain clients without req ![OptimumP2P Validator Implementation](/static/img/img_2.png) In this model, an **Optimum Relay** process runs alongside the validator's standard Consensus Layer (CL) client. + 1. The relay peers directly with the local CL client. 2. When a proposer needs to publish a new block, its relay forwards the block to the interconnected OptimumP2P network. 3. Other validators on the network subscribe to block topics. Their local relays receive the block from the OptimumP2P network and deliver it to their own CL clients for attestation. @@ -71,33 +75,38 @@ This architecture allows validators to tap into the high-performance OptimumP2P OptimumP2P is designed as a foundational, general-purpose data propagation layer. Its benefits extend across the entire blockchain ecosystem and it can serve as an enhanced networking stack for any blockchain client, such as those used in Ethereum or as a potential alternative to specialized protocols like Solana's Turbine. - - ### For L1/L2 Chains and Node Operators + An efficient propagation layer can lead to several advantages for the core network and its operators. + * **Scalability Improvements**: By addressing propagation bottlenecks, networks can explore opportunities to increase block sizes or shorten block times without negatively impacting decentralization. * **Operational Cost Reduction**: Lower bandwidth requirements can translate to reduced operational costs for node operators, particularly for those in bandwidth-constrained environments. This helps maintain network decentralization by keeping participation accessible. ### For Application Developers and End Users + The performance of the base-layer network directly impacts the applications built on top of it. + * **Enablement of Low-Latency dApps**: A network that supports lower-latency interactions can enable more responsive decentralized applications, including those in gaming or high-frequency DeFi. * **Improved User Experience**: The goal is to improve the end-user experience through the potential for faster transaction confirmations and a more stable gas fee environment resulting from eased network congestion. * **Enhanced Reliability**: A more predictable network can simplify dApp development by reducing the need for complex retry logic to handle network instability. -### Security Model +## Security Model OptimumP2P's security model is built upon the robust foundations of **[libp2p](https://docs.libp2p.io/)**. As such, it inherits a comprehensive suite of security features designed for hostile peer-to-peer environments. For a full overview of these protections, refer to the [libp2p security considerations](https://docs.libp2p.io/concepts/security/security-considerations/). Key inherited security features include: -- **Authenticated and Encrypted Channels**: All peer-to-peer communication is secured using Noise or TLS, preventing eavesdropping and tampering. -- **Sybil and Eclipse Attack Mitigation**: The protocol uses libp2p's peer discovery and management systems, which include defenses against an attacker flooding the network with malicious nodes to gain control or isolate honest peers. -**Network Coding-Specific Security: Pollution Attacks** +* **Authenticated and Encrypted Channels**: All peer-to-peer communication is secured using Noise or TLS, preventing eavesdropping and tampering. +* **Sybil and Eclipse Attack Mitigation**: The protocol uses libp2p's peer discovery and management systems, which include defenses against an attacker flooding the network with malicious nodes to gain control or isolate honest peers. + +### Network Coding-Specific Security: Pollution Attacks The primary security challenge unique to network coding is the risk of **pollution attacks**. In such an attack, a malicious actor injects corrupted or invalid coded shards into the network, with the goal of preventing honest nodes from successfully decoding the original message. OptimumP2P mitigates this risk through a multi-layered approach centered on **source authentication**. -- The original message data is cryptographically hashed to create a unique identifier. -- This identifier, along with the publisher's signature, is bound to the data. -- When a node decodes a message from a set of shards, it can verify the reconstructed data against the publisher's original signature and hash. + +* The original message data is cryptographically hashed to create a unique identifier. +* This identifier, along with the publisher's signature, is bound to the data. +* When a node decodes a message from a set of shards, it can verify the reconstructed data against the publisher's original signature and hash. + If the verification fails, the node knows that at least one of the shards it received was polluted. While identifying the exact malicious shard can be complex, the system can identify the peers who sent the invalid shards and lower their reputation scores, eventually isolating them from the network. This ensures that even though recoding happens at intermediate nodes, the integrity of the data can be verified end-to-end. From 150f3ba967a4b4ff7c333c2961d20867d35244e0 Mon Sep 17 00:00:00 2001 From: swarnabhasinha Date: Wed, 30 Jul 2025 14:40:56 +0530 Subject: [PATCH 05/18] feat: add hackathon docs --- .vitepress/config.mts | 74 ++++ docs/hackathon/README.md | 37 ++ docs/hackathon/deployment/p2p-only.md | 182 ++++++++++ docs/hackathon/deployment/p2p-with-gateway.md | 340 ++++++++++++++++++ docs/hackathon/index.md | 44 +++ docs/hackathon/quick-start/first-message.md | 241 +++++++++++++ docs/hackathon/quick-start/installation.md | 137 +++++++ package-lock.json | 18 + package.json | 1 + yarn.lock | 12 + 10 files changed, 1086 insertions(+) create mode 100644 docs/hackathon/README.md create mode 100644 docs/hackathon/deployment/p2p-only.md create mode 100644 docs/hackathon/deployment/p2p-with-gateway.md create mode 100644 docs/hackathon/index.md create mode 100644 docs/hackathon/quick-start/first-message.md create mode 100644 docs/hackathon/quick-start/installation.md diff --git a/.vitepress/config.mts b/.vitepress/config.mts index 904cbad..7cfad3f 100644 --- a/.vitepress/config.mts +++ b/.vitepress/config.mts @@ -183,6 +183,80 @@ function nav() { function sidebarHome() { return [ + { + text: "Hackathon", + collapsed: false, + items: [ + { + text: "Overview", + link: "/docs/hackathon/", + }, + { + text: "Quick Start", + collapsed: true, + items: [ + { + text: "Installation & Setup", + link: "/docs/hackathon/quick-start/installation", + }, + { + text: "First Message Example", + link: "/docs/hackathon/quick-start/first-message", + }, + ], + }, + { + text: "Deployment Options", + collapsed: true, + items: [ + { + text: "P2P Network Only", + link: "/docs/hackathon/deployment/p2p-only", + }, + { + text: "P2P Network with Gateway", + link: "/docs/hackathon/deployment/p2p-with-gateway", + }, + ], + }, + { + text: "Client Development", + collapsed: true, + items: [ + { + text: "WebSocket Client", + link: "/docs/hackathon/clients/websocket", + }, + { + text: "gRPC Stream Client", + link: "/docs/hackathon/clients/grpc", + }, + { + text: "mump2p-cli", + link: "/docs/hackathon/clients/cli", + }, + ], + }, + { + text: "Configuration", + collapsed: true, + items: [ + { + text: "Network Parameters", + link: "/docs/hackathon/configuration/network-params", + }, + { + text: "Docker Environment Variables", + link: "/docs/hackathon/configuration/docker-vars", + }, + { + text: "Performance Tuning", + link: "/docs/hackathon/configuration/tuning", + }, + ], + }, + ], + }, { text: "Learn", collapsed: false, diff --git a/docs/hackathon/README.md b/docs/hackathon/README.md new file mode 100644 index 0000000..1abed42 --- /dev/null +++ b/docs/hackathon/README.md @@ -0,0 +1,37 @@ +# OptimumP2P Hackathon Documentation + +This documentation provides technical guidance for building applications on OptimumP2P, a high-performance peer-to-peer messaging protocol that uses Random Linear Network Coding (RLNC) for efficient message propagation. + +## Documentation Structure + +### Quick Start +- [Installation & Setup](./quick-start/installation.md) +- [First Message Example](./quick-start/first-message.md) + +### Deployment Options +- [P2P Network Only](./deployment/p2p-only.md) - Direct P2P mesh setup +- [P2P Network with Gateway](./deployment/p2p-with-gateway.md) - Gateway-enabled setup for client applications + +### Client Development +- [WebSocket Client](./clients/websocket.md) - Real-time applications using WebSocket API +- [gRPC Stream Client](./clients/grpc.md) - High-performance bidirectional streaming +- [mump2p-cli](./clients/cli.md) - Command-line interface usage + +### Configuration +- [Network Parameters](./configuration/network-params.md) - Mesh topology and RLNC settings +- [Docker Environment Variables](./configuration/docker-vars.md) - Complete environment variable reference +- [Performance Tuning](./configuration/tuning.md) - Optimization guidelines + +## Reference Documentation + +- [OptimumP2P Technical Overview](../learn/overview/p2p.md) +- [libp2p Specifications](https://github.com/libp2p/specs) +- [GossipSub Protocol](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/README.md) + + +## Support + +- [Troubleshooting Guide](./troubleshooting.md) +- [Frequently Asked Questions](./faq.md) + +Begin with the [Installation & Setup](./quick-start/installation.md) guide to start development. \ No newline at end of file diff --git a/docs/hackathon/deployment/p2p-only.md b/docs/hackathon/deployment/p2p-only.md new file mode 100644 index 0000000..4193ee6 --- /dev/null +++ b/docs/hackathon/deployment/p2p-only.md @@ -0,0 +1,182 @@ +# P2P Network Only Deployment + +This guide covers deploying a standalone OptimumP2P network without gateway intermediaries. In this configuration, clients connect directly to P2P nodes using gRPC sidecar connections, providing maximum performance and protocol flexibility. + + +### Network Topology + +The P2P network forms a mesh topology where each node maintains connections to a subset of peers based on the configured mesh parameters: + +- **Mesh Target (`OPTIMUM_MESH_TARGET`)**: Ideal number of peers per topic +- **Mesh Range (`OPTIMUM_MESH_MIN` to `OPTIMUM_MESH_MAX`)**: Acceptable peer count bounds +- **Bootstrap Nodes**: Initial discovery points for new nodes joining the network + + +## Deployment Configuration + +```yaml +services: + p2pnode-1: + image: 'getoptimum/p2pnode:latest' + platform: linux/amd64 + environment: + - LOG_LEVEL=debug + - CLUSTER_ID=p2pnode-1 + - NODE_MODE=optimum + - SIDECAR_PORT=33212 + - API_PORT=9090 + - IDENTITY_DIR=/identity + - OPTIMUM_PORT=7070 + - OPTIMUM_MAX_MSG_SIZE=1048576 + - OPTIMUM_MESH_TARGET=6 + - OPTIMUM_MESH_MIN=3 + - OPTIMUM_MESH_MAX=12 + - OPTIMUM_SHARD_FACTOR=4 + - OPTIMUM_SHARD_MULT=1.5 + - OPTIMUM_THRESHOLD=0.75 + - BOOTSTRAP_PEERS=/ip4/172.28.0.12/tcp/7070/p2p/${BOOTSTRAP_PEER_ID} + networks: + optimum-network: + ipv4_address: 172.28.0.12 + ports: + - "33221:33212" # gRPC sidecar + - "7071:7070" # OptimumP2P + - "9091:9090" # API + volumes: + - ./identity:/identity + + p2pnode-2: + image: 'getoptimum/p2pnode:latest' + platform: linux/amd64 + environment: + - LOG_LEVEL=debug + - CLUSTER_ID=p2pnode-2 + - NODE_MODE=optimum + - SIDECAR_PORT=33212 + - API_PORT=9090 + - IDENTITY_DIR=/identity + - OPTIMUM_PORT=7070 + - OPTIMUM_MAX_MSG_SIZE=1048576 + - OPTIMUM_MESH_TARGET=6 + - OPTIMUM_MESH_MIN=3 + - OPTIMUM_MESH_MAX=12 + - OPTIMUM_SHARD_FACTOR=4 + - OPTIMUM_SHARD_MULT=1.5 + - OPTIMUM_THRESHOLD=0.75 + - BOOTSTRAP_PEERS=/ip4/172.28.0.12/tcp/7070/p2p/${BOOTSTRAP_PEER_ID} + networks: + optimum-network: + ipv4_address: 172.28.0.13 + ports: + - "33222:33212" + - "7072:7070" + - "9092:9090" + +networks: + optimum-network: + driver: bridge + ipam: + config: + - subnet: 172.28.0.0/16 +``` + +## Environment Variables + +### Core Configuration +- `NODE_MODE`: Set to `optimum` for RLNC-enhanced protocol or `gossipsub` for standard GossipSub +- `CLUSTER_ID`: Unique identifier for the node +- `LOG_LEVEL`: Logging verbosity (`debug`, `info`, `warn`, `error`) + +### Port Configuration +- `SIDECAR_PORT`: gRPC sidecar port for client connections (default: 33212) +- `API_PORT`: HTTP API port for metrics and status (default: 9090) +- `OPTIMUM_PORT`: P2P protocol port (default: 7070) + +### RLNC Parameters +- `OPTIMUM_MAX_MSG_SIZE`: Maximum message size in bytes (default: 1048576 = 1MB) +- `OPTIMUM_SHARD_FACTOR`: Number of coded shards to generate (default: 4) +- `OPTIMUM_SHARD_MULT`: Redundancy multiplier for shards (default: 1.5) +- `OPTIMUM_THRESHOLD`: Decoding threshold as fraction (default: 0.75) + +### Mesh Topology +- `OPTIMUM_MESH_TARGET`: Target number of peers in mesh (default: 6) +- `OPTIMUM_MESH_MIN`: Minimum peers before grafting (default: 3) +- `OPTIMUM_MESH_MAX`: Maximum peers before pruning (default: 12) + +### Bootstrap Configuration +- `BOOTSTRAP_PEERS`: Comma-separated list of bootstrap peer addresses +- `IDENTITY_DIR`: Directory for storing peer identity keys + +## Starting the Network + +1. Generate peer identity (optional, will auto-generate if not present): +```bash +# Create identity directory +mkdir -p identity + +# Generate peer key +docker run --rm -v $(pwd)/identity:/identity getoptimum/p2pnode:latest generate-key +``` + +2. Set bootstrap peer ID: +```bash +export BOOTSTRAP_PEER_ID=$(docker run --rm -v $(pwd)/identity:/identity getoptimum/p2pnode:latest peer-id) +``` + +3. Start the network: +```bash +docker-compose up -d +``` + +4. Verify nodes are running: +```bash +docker-compose ps +docker-compose logs p2pnode-1 +``` + +## Client Connection + +Clients connect directly to P2P nodes via gRPC sidecar: + +```go +conn, err := grpc.Dial("localhost:33221", grpc.WithInsecure()) +if err != nil { + log.Fatal(err) +} +client := pb.NewP2PStreamClient(conn) +``` + +## Network Scaling + +To add more nodes, replicate the service definition with: +- Unique `CLUSTER_ID` +- Unique IP address in the network +- Unique port mappings +- Same `BOOTSTRAP_PEERS` configuration + +## Monitoring + +Access node metrics and status: +- Node 1: http://localhost:9091 +- Node 2: http://localhost:9092 + +## Troubleshooting + +### Peer Discovery Issues +Check bootstrap peer configuration and network connectivity: +```bash +docker-compose exec p2pnode-1 ping p2pnode-2 +docker-compose logs p2pnode-1 | grep "bootstrap" +``` + +### Mesh Formation +Verify peers are discovering each other: +```bash +curl http://localhost:9091/debug/peers +``` + +### Message Flow +Check message propagation in logs: +```bash +docker-compose logs -f | grep "message" +``` \ No newline at end of file diff --git a/docs/hackathon/deployment/p2p-with-gateway.md b/docs/hackathon/deployment/p2p-with-gateway.md new file mode 100644 index 0000000..04173c3 --- /dev/null +++ b/docs/hackathon/deployment/p2p-with-gateway.md @@ -0,0 +1,340 @@ +# P2P Network with Gateway Deployment + +This guide covers deploying OptimumP2P with gateway services that provide HTTP/WebSocket/gRPC APIs for client applications. The gateway acts as a bridge between traditional client-server applications and the OptimumP2P network. + + +### Component Responsibilities + +**Gateway Layer:** +- Protocol translation (HTTP/WebSocket/gRPC ↔ libp2p) +- Client session management +- Load balancing across P2P nodes +- Rate limiting and authentication +- API versioning and compatibility + +**P2P Network Layer:** +- RLNC message encoding/decoding +- Mesh topology maintenance +- Peer discovery and routing +- Message propagation via GossipSub +- Network resilience and fault tolerance + + +## Deployment Configuration + +Complete setup with gateways and P2P nodes: + +```yaml +services: + gateway-1: + image: 'getoptimum/gateway:latest' + platform: linux/amd64 + ports: + - "8081:8080" # HTTP/WebSocket + - "50051:50051" # gRPC + environment: + - GATEWAY_PORT=:8080 + - CLUSTER_ID=gateway-1 + - ENABLE_AUTH=false + - LOG_LEVEL=debug + - P2P_NODES=p2pnode-1:33212,p2pnode-2:33212,p2pnode-3:33212,p2pnode-4:33212 + networks: + optimum-network: + ipv4_address: 172.28.0.10 + depends_on: + - p2pnode-1 + - p2pnode-2 + - p2pnode-3 + - p2pnode-4 + + gateway-2: + image: 'getoptimum/gateway:latest' + platform: linux/amd64 + ports: + - "8082:8080" + - "50052:50051" + environment: + - GATEWAY_PORT=:8080 + - CLUSTER_ID=gateway-2 + - ENABLE_AUTH=false + - LOG_LEVEL=debug + - P2P_NODES=p2pnode-1:33212,p2pnode-2:33212,p2pnode-3:33212,p2pnode-4:33212 + networks: + optimum-network: + ipv4_address: 172.28.0.11 + depends_on: + - p2pnode-1 + - p2pnode-2 + - p2pnode-3 + - p2pnode-4 + + p2pnode-1: + image: 'getoptimum/p2pnode:latest' + platform: linux/amd64 + volumes: + - ./identity:/identity + environment: + - LOG_LEVEL=debug + - CLUSTER_ID=p2pnode-1 + - NODE_MODE=optimum + - SIDECAR_PORT=33212 + - API_PORT=9090 + - IDENTITY_DIR=/identity + - OPTIMUM_PORT=7070 + - OPTIMUM_MAX_MSG_SIZE=1048576 + - OPTIMUM_MESH_TARGET=6 + - OPTIMUM_MESH_MIN=3 + - OPTIMUM_MESH_MAX=12 + - OPTIMUM_SHARD_FACTOR=4 + - OPTIMUM_SHARD_MULT=1.5 + - OPTIMUM_THRESHOLD=0.75 + - BOOTSTRAP_PEERS=/ip4/172.28.0.12/tcp/7070/p2p/${BOOTSTRAP_PEER_ID} + networks: + optimum-network: + ipv4_address: 172.28.0.12 + ports: + - "33221:33212" + - "7071:7070" + - "9091:9090" + + p2pnode-2: + image: 'getoptimum/p2pnode:latest' + platform: linux/amd64 + environment: + - LOG_LEVEL=debug + - CLUSTER_ID=p2pnode-2 + - NODE_MODE=optimum + - SIDECAR_PORT=33212 + - API_PORT=9090 + - IDENTITY_DIR=/identity + - OPTIMUM_PORT=7070 + - OPTIMUM_MAX_MSG_SIZE=1048576 + - OPTIMUM_MESH_TARGET=6 + - OPTIMUM_MESH_MIN=3 + - OPTIMUM_MESH_MAX=12 + - OPTIMUM_SHARD_FACTOR=4 + - OPTIMUM_SHARD_MULT=1.5 + - OPTIMUM_THRESHOLD=0.75 + - BOOTSTRAP_PEERS=/ip4/172.28.0.12/tcp/7070/p2p/${BOOTSTRAP_PEER_ID} + networks: + optimum-network: + ipv4_address: 172.28.0.13 + ports: + - "33222:33212" + - "7072:7070" + - "9092:9090" + + p2pnode-3: + image: 'getoptimum/p2pnode:latest' + platform: linux/amd64 + environment: + - LOG_LEVEL=debug + - CLUSTER_ID=p2pnode-3 + - NODE_MODE=optimum + - SIDECAR_PORT=33212 + - API_PORT=9090 + - IDENTITY_DIR=/identity + - OPTIMUM_PORT=7070 + - OPTIMUM_MAX_MSG_SIZE=1048576 + - OPTIMUM_MESH_TARGET=6 + - OPTIMUM_MESH_MIN=3 + - OPTIMUM_MESH_MAX=12 + - OPTIMUM_SHARD_FACTOR=4 + - OPTIMUM_SHARD_MULT=1.5 + - OPTIMUM_THRESHOLD=0.75 + - BOOTSTRAP_PEERS=/ip4/172.28.0.12/tcp/7070/p2p/${BOOTSTRAP_PEER_ID} + networks: + optimum-network: + ipv4_address: 172.28.0.14 + ports: + - "33223:33212" + - "7073:7070" + - "9093:9090" + + p2pnode-4: + image: 'getoptimum/p2pnode:latest' + platform: linux/amd64 + environment: + - LOG_LEVEL=debug + - CLUSTER_ID=p2pnode-4 + - NODE_MODE=optimum + - SIDECAR_PORT=33212 + - API_PORT=9090 + - IDENTITY_DIR=/identity + - OPTIMUM_PORT=7070 + - OPTIMUM_MAX_MSG_SIZE=1048576 + - OPTIMUM_MESH_TARGET=6 + - OPTIMUM_MESH_MIN=3 + - OPTIMUM_MESH_MAX=12 + - OPTIMUM_SHARD_FACTOR=4 + - OPTIMUM_SHARD_MULT=1.5 + - OPTIMUM_THRESHOLD=0.75 + - BOOTSTRAP_PEERS=/ip4/172.28.0.12/tcp/7070/p2p/${BOOTSTRAP_PEER_ID} + networks: + optimum-network: + ipv4_address: 172.28.0.15 + ports: + - "33224:33212" + - "7074:7070" + - "9094:9090" + +networks: + optimum-network: + driver: bridge + ipam: + config: + - subnet: 172.28.0.0/16 +``` + +## Gateway Configuration + +### Environment Variables +- `GATEWAY_PORT`: HTTP/WebSocket server port (default: :8080) +- `CLUSTER_ID`: Unique gateway identifier +- `ENABLE_AUTH`: Enable Auth0 authentication (true/false) +- `P2P_NODES`: Comma-separated list of P2P node sidecar addresses +- `LOG_LEVEL`: Logging verbosity + +### Authentication (Optional) +For production deployments, enable authentication: +```yaml +environment: + - ENABLE_AUTH=true + - AUTH0_DOMAIN=your-domain.auth0.com + - AUTH0_AUDIENCE=your-api-audience +``` + +## API Endpoints + +### HTTP REST API +- `POST /publish` - Publish message to topic +- `GET /health` - Gateway health check +- `GET /metrics` - Prometheus metrics + +### WebSocket API +- `ws://localhost:8081/ws` - WebSocket connection for real-time messaging + +### gRPC API +- `localhost:50051` - Bidirectional streaming service + +## Starting the Network + +1. Generate peer identity: +```bash +mkdir -p identity +export BOOTSTRAP_PEER_ID=$(docker run --rm -v $(pwd)/identity:/identity getoptimum/p2pnode:latest generate-key --output-peer-id) +``` + +2. Start all services: +```bash +docker-compose up -d +``` + +3. Verify services: +```bash +docker-compose ps +curl http://localhost:8081/health +``` + +## Client Examples + +### HTTP REST +```bash +curl -X POST http://localhost:8081/publish \ + -H "Content-Type: application/json" \ + -d '{"topic": "test", "data": "Hello OptimumP2P"}' +``` + +### WebSocket (JavaScript) +```javascript +const ws = new WebSocket('ws://localhost:8081/ws'); +ws.onopen = () => { + ws.send(JSON.stringify({ + type: 'subscribe', + topic: 'test' + })); +}; +``` + +### gRPC (Go) +```go +conn, err := grpc.Dial("localhost:50051", grpc.WithInsecure()) +client := pb.NewGatewayStreamClient(conn) +stream, err := client.Stream(context.Background()) +``` + +## Load Balancing + +Deploy multiple gateways for high availability: +- Gateway 1: `localhost:8081` (HTTP), `localhost:50051` (gRPC) +- Gateway 2: `localhost:8082` (HTTP), `localhost:50052` (gRPC) + +Use a load balancer (nginx, HAProxy) to distribute traffic: +```nginx +upstream gateway_backend { + server localhost:8081; + server localhost:8082; +} + +server { + listen 80; + location / { + proxy_pass http://gateway_backend; + } +} +``` + +## Monitoring + +### Gateway Metrics +- Gateway 1: http://localhost:8081/metrics +- Gateway 2: http://localhost:8082/metrics + +### P2P Node Status +- Node 1: http://localhost:9091 +- Node 2: http://localhost:9092 +- Node 3: http://localhost:9093 +- Node 4: http://localhost:9094 + +## Scaling Considerations + +### Gateway Scaling +Gateways are stateless and can be scaled horizontally: +- Add more gateway instances +- Use connection pooling for P2P node connections +- Implement circuit breakers for fault tolerance + +### P2P Network Scaling +Scale the P2P network by adding more nodes: +- Maintain OPTIMUM_MESH_TARGET ratio to network size +- Consider network topology and latency +- Monitor mesh formation and message propagation + +## Troubleshooting + +### Gateway Connection Issues +```bash +# Check gateway logs +docker-compose logs gateway-1 + +# Test P2P node connectivity +docker-compose exec gateway-1 nc -zv p2pnode-1 33212 +``` + +### Message Delivery Issues +```bash +# Check message flow +docker-compose logs -f | grep -E "(publish|subscribe|message)" + +# Verify P2P mesh status +curl http://localhost:9091/debug/peers +``` + +### Performance Issues +```bash +# Monitor gateway metrics +curl http://localhost:8081/metrics + +# Check resource usage +docker stats +``` \ No newline at end of file diff --git a/docs/hackathon/index.md b/docs/hackathon/index.md new file mode 100644 index 0000000..81270da --- /dev/null +++ b/docs/hackathon/index.md @@ -0,0 +1,44 @@ +# OptimumP2P Hackathon Documentation + +This documentation provides technical guidance for building applications on OptimumP2P, a high-performance peer-to-peer messaging protocol that uses Random Linear Network Coding (RLNC) for efficient message propagation. + +## Documentation Structure + +### Quick Start +- [Installation & Setup](./quick-start/installation.md) +- [First Message Example](./quick-start/first-message.md) + +### Deployment Options +- [P2P Network Only](./deployment/p2p-only.md) - Direct P2P mesh setup +- [P2P Network with Gateway](./deployment/p2p-with-gateway.md) - Gateway-enabled setup for client applications + +### Client Development +- [WebSocket Client](./clients/websocket.md) - Real-time applications using WebSocket API +- [gRPC Stream Client](./clients/grpc.md) - High-performance bidirectional streaming +- [mump2p-cli](./clients/cli.md) - Command-line interface usage + +### Configuration +- [Network Parameters](./configuration/network-params.md) - Mesh topology and RLNC settings +- [Docker Environment Variables](./configuration/docker-vars.md) - Complete environment variable reference +- [Performance Tuning](./configuration/tuning.md) - Optimization guidelines + +## Technical Features + +- RLNC-enhanced message propagation with reduced bandwidth usage +- libp2p-based networking with built-in security and peer discovery +- Dual access modes: direct P2P and gateway-mediated +- Multiple client interfaces: WebSocket, gRPC, CLI +- Configurable network parameters for different deployment scenarios + +## Reference Documentation + +- [libp2p Specifications](https://github.com/libp2p/specs) +- [GossipSub Protocol](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/README.md) +- [OptimumP2P Technical Overview](../learn/overview/p2p.md) + +## Support + +- [Troubleshooting Guide](./troubleshooting.md) +- [Frequently Asked Questions](./faq.md) + +Begin with the [Installation & Setup](./quick-start/installation.md) guide to start development. \ No newline at end of file diff --git a/docs/hackathon/quick-start/first-message.md b/docs/hackathon/quick-start/first-message.md new file mode 100644 index 0000000..dde4cbf --- /dev/null +++ b/docs/hackathon/quick-start/first-message.md @@ -0,0 +1,241 @@ +# Your First Message + +This tutorial demonstrates how to send your first message through OptimumP2P using the gateway setup. We'll use the actual configuration and scripts from the development setup guide. + +## Prerequisites + +- Docker and Docker Compose installed +- Basic familiarity with terminal/command line +- Text editor for creating configuration files + +## Step 1: Set Up the Network + +Create a working directory and use the provided docker-compose configuration: + +```bash +mkdir optimump2p-test +cd optimump2p-test +``` + +Download the complete setup: +```bash +# Clone the development setup repository +git clone https://github.com/getoptimum/optimum-dev-setup-guide.git +cd optimum-dev-setup-guide +``` + +Or create your own `docker-compose.yml` using the configuration from the [P2P Network with Gateway](../deployment/p2p-with-gateway.md) guide. + +## Step 2: Start the Network + +Generate the required peer identity: + +```bash +# Create identity directory if using local setup +mkdir -p identity + +# Set the bootstrap peer ID environment variable +export BOOTSTRAP_PEER_ID=12D3KooWExample # This will be generated automatically +``` + +Start all services: + +```bash +docker-compose up -d +``` + +Verify the services are running: + +```bash +docker-compose ps +``` + +You should see containers for: +- gateway-1 (port 8081) +- gateway-2 (port 8082) +- p2pnode-1, p2pnode-2, p2pnode-3, p2pnode-4 + +## Step 3: Test Gateway Connectivity + +The gateway provides REST API endpoints for publishing and subscribing. Test connectivity: + +```bash +# Test gateway-1 +curl -I http://localhost:8081 + +# Test gateway-2 +curl -I http://localhost:8082 +``` + +## Step 4: Build the Gateway Client + +The repository includes a Go client for interacting with the gateway: + +```bash +cd grpc_gateway_client +go build -o gateway-client ./gateway_client.go +``` + +## Step 5: Subscribe to Messages + +In one terminal window, start a subscriber: + +```bash +# Subscribe to topic "demo" with threshold 0.7 +./script/gateway_client.sh subscribe demo 0.7 +``` + +The subscriber will: +1. Register with the gateway via REST API (`/api/subscribe`) +2. Open a gRPC stream to receive messages +3. Display received messages in the format: `[RECEIVED] Topic: | Message: ` + +## Step 6: Publish Messages + +In another terminal window, publish messages: + +```bash +# Publish 5 messages to topic "demo" with threshold 0.5 +./script/gateway_client.sh publish demo 0.5 5 +``` + +The publisher will: +1. Send messages via REST API (`/api/publish`) +2. Display each published message in the format: `[PUBLISH] Message: ` + +## Step 7: Alternative REST API Usage + +You can also interact directly with the REST API using curl: + +### Subscribe via REST (requires separate gRPC stream for receiving) +```bash +curl -X POST http://localhost:8081/api/subscribe \ + -H "Content-Type: application/json" \ + -d '{ + "client_id": "test_client_001", + "topic": "demo", + "threshold": 0.7 + }' +``` + +### Publish via REST +```bash +curl -X POST http://localhost:8081/api/publish \ + -H "Content-Type: application/json" \ + -d '{ + "client_id": "test_client_001", + "topic": "demo", + "message": "Hello from REST API" + }' +``` + +## Step 8: Multiple Topics + +Test topic isolation by using different topic names: + +```bash +# Terminal 1: Subscribe to "weather" +./script/gateway_client.sh subscribe weather 0.7 + +# Terminal 2: Subscribe to "news" +./script/gateway_client.sh subscribe news 0.7 + +# Terminal 3: Publish to "weather" +./script/gateway_client.sh publish weather 0.5 3 + +# Terminal 4: Publish to "news" +./script/gateway_client.sh publish news 0.5 3 +``` + +Each subscriber will only receive messages from their subscribed topic. + +## Step 9: Load Testing + +Test network performance with higher message volumes: + +```bash +# High-frequency publishing (100 messages with 100ms delay) +./gateway-client -topic=performance -threshold=0.5 -count=100 -delay=100ms + +# Stress test (1000 messages) +./gateway-client -topic=stress -threshold=0.5 -count=1000 -delay=10ms +``` + +## Understanding the Parameters + +### Threshold +The threshold parameter (0.0 to 1.0) controls RLNC decoding: +- Lower values: Messages decoded with fewer shards (faster, less reliable) +- Higher values: Messages require more shards (slower, more reliable) +- Typical range: 0.5 to 0.8 + +### Client ID +Each client needs a unique identifier for the gateway to track subscriptions and route messages correctly. + +### Topic Names +- Case-sensitive strings +- No special characters recommended +- Use descriptive names (e.g., "chat", "alerts", "data-feed") + +## Monitoring and Debugging + +### View logs +```bash +# Gateway logs +docker-compose logs -f gateway-1 + +# P2P node logs +docker-compose logs -f p2pnode-1 + +# All logs +docker-compose logs -f +``` + +### Check network connectivity +```bash +# Test P2P node connectivity +docker-compose exec gateway-1 nc -zv p2pnode-1 33212 + +# View container network +docker network inspect optimum-dev-setup-guide_optimum-network +``` + +## Cleanup + +Stop and remove all containers: + +```bash +docker-compose down + +# Remove volumes and images (optional) +docker-compose down -v --rmi all +``` + +## Next Steps + +Now that you've successfully sent messages through OptimumP2P: + +1. **Build custom clients**: Explore the [Client Development](../clients/) guides +2. **Optimize configuration**: Learn about [Network Parameters](../configuration/network-params.md) +3. **Deploy to production**: Review [Performance Tuning](../configuration/tuning.md) + +## Troubleshooting + +### Build failures +- Ensure Go is installed: `go version` +- Check module dependencies: `go mod tidy` + +### Connection issues +- Verify Docker containers are running: `docker-compose ps` +- Check port availability: `netstat -an | grep 8081` +- Review firewall settings + +### Message delivery issues +- Verify topic names match exactly +- Check threshold values are between 0.0 and 1.0 +- Review gateway and P2P node logs for errors + +### Performance issues +- Monitor container resources: `docker stats` +- Adjust message delay parameters +- Check network bandwidth and latency \ No newline at end of file diff --git a/docs/hackathon/quick-start/installation.md b/docs/hackathon/quick-start/installation.md new file mode 100644 index 0000000..95b0d07 --- /dev/null +++ b/docs/hackathon/quick-start/installation.md @@ -0,0 +1,137 @@ +# Installation & Setup + +This guide will help you install and set up OptimumP2P on your computer. We'll explain each step clearly, so don't worry if you're new to some of these tools. + +## What You'll Need + +Before we start, you need these programs on your computer: + +### 1. Docker +Docker is like a virtual container that runs applications in an isolated environment. Think of it as a box where we put our OptimumP2P network so it doesn't interfere with other programs on your computer. + +**Install Docker:** +- **Windows/Mac**: Download Docker Desktop from [docker.com](https://www.docker.com/products/docker-desktop/) +- **Linux**: Follow the instructions for your distribution on [docs.docker.com](https://docs.docker.com/engine/install/) + +**How to check if Docker is installed:** +Open your terminal (Command Prompt on Windows, Terminal on Mac/Linux) and type: +```bash +docker --version +``` +You should see something like `Docker version 20.10.x` + +### 2. Docker Compose +Docker Compose helps us run multiple Docker containers together. It usually comes with Docker Desktop, but let's verify: + +```bash +docker-compose --version +``` +You should see something like `docker-compose version 1.29.x` + +### 3. Git (Optional but recommended) +Git helps you download and manage code. Most computers have it pre-installed. + +```bash +git --version +``` + +## Getting the Code + +You have two options to get the OptimumP2P setup files: + +### Option 1: Download from this documentation +Create a new folder on your computer and save the docker-compose.yml files from the [Deployment Options](../deployment/) section. + +### Option 2: Clone the development setup repository +```bash +git clone https://github.com/getoptimum/optimum-dev-setup-guide.git +cd optimum-dev-setup-guide +``` + +## Choose Your Setup + +OptimumP2P can run in two ways: + +1. **P2P Network Only** - Direct peer-to-peer communication (more advanced) +2. **P2P Network with Gateway** - Includes a web-friendly layer (recommended for beginners) + +For your first time, we recommend starting with the **Gateway setup** because: +- It's easier to test and see results +- You can use simple web tools to send messages +- It includes helpful monitoring tools + +## Quick Test + +Let's do a simple test to make sure everything works: + +1. Create a new folder called `optimum-test`: +```bash +mkdir optimum-test +cd optimum-test +``` + +2. Create a simple test file: +```bash +echo "version: '3.8' +services: + test: + image: hello-world" > docker-compose.yml +``` + +3. Run the test: +```bash +docker-compose up +``` + +If you see "Hello from Docker!" message, everything is working correctly. + +4. Clean up: +```bash +docker-compose down +``` + +## What's Next? + +Now that you have everything installed: + +1. **Learn the basics**: Read [Core Concepts](./concepts.md) to understand how OptimumP2P works +2. **Try it out**: Follow [First Message Example](./first-message.md) to send your first message +3. **Build something**: Check out [Client Development](../clients/) to create your own application + +## Troubleshooting + +### "Docker command not found" +- Make sure Docker is installed and running +- On Windows/Mac, start Docker Desktop application +- You might need to restart your terminal after installation + +### "Permission denied" on Linux +Add your user to the docker group: +```bash +sudo usermod -aG docker $USER +``` +Then log out and log back in. + +### "Port already in use" +If you see port conflicts, either: +- Stop other programs using those ports +- Change the port numbers in the docker-compose.yml file + +### Still having issues? +- Check Docker's own troubleshooting guide +- Make sure you have enough disk space (at least 2GB free) +- Restart your computer and try again + +## System Requirements + +**Minimum:** +- 4GB RAM +- 2GB free disk space +- Internet connection for downloading Docker images + +**Recommended:** +- 8GB RAM +- 5GB free disk space +- Stable internet connection + +You're now ready to start your OptimumP2P journey! \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index e798920..8b10eab 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,7 @@ }, "devDependencies": { "@eslint/js": "^9.22.0", + "@types/node": "^24.1.0", "@typescript-eslint/eslint-plugin": "^8.26.1", "@typescript-eslint/parser": "^8.26.1", "eslint": "^9.22.0", @@ -2000,6 +2001,16 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/node": { + "version": "24.1.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.1.0.tgz", + "integrity": "sha512-ut5FthK5moxFKH2T1CUOC6ctR67rQRvvHdFLCD2Ql6KXmMuCrjsSsRI9UsLCm9M18BMwClv4pn327UvB7eeO1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~7.8.0" + } + }, "node_modules/@types/unist": { "version": "2.0.11", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", @@ -6533,6 +6544,13 @@ "dev": true, "license": "MIT" }, + "node_modules/undici-types": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.8.0.tgz", + "integrity": "sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==", + "dev": true, + "license": "MIT" + }, "node_modules/unist-util-is": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", diff --git a/package.json b/package.json index f2211cb..f66540c 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,7 @@ }, "devDependencies": { "@eslint/js": "^9.22.0", + "@types/node": "^24.1.0", "@typescript-eslint/eslint-plugin": "^8.26.1", "@typescript-eslint/parser": "^8.26.1", "eslint": "^9.22.0", diff --git a/yarn.lock b/yarn.lock index fc4f605..28ddef9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -718,6 +718,13 @@ resolved "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz" integrity sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA== +"@types/node@^18.0.0 || >=20.0.0", "@types/node@^24.1.0": + version "24.1.0" + resolved "https://registry.npmjs.org/@types/node/-/node-24.1.0.tgz" + integrity sha512-ut5FthK5moxFKH2T1CUOC6ctR67rQRvvHdFLCD2Ql6KXmMuCrjsSsRI9UsLCm9M18BMwClv4pn327UvB7eeO1w== + dependencies: + undici-types "~7.8.0" + "@types/unist@*", "@types/unist@^2.0.0": version "2.0.11" resolved "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz" @@ -3028,6 +3035,11 @@ uc.micro@^2.0.0, uc.micro@^2.1.0: resolved "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz" integrity sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A== +undici-types@~7.8.0: + version "7.8.0" + resolved "https://registry.npmjs.org/undici-types/-/undici-types-7.8.0.tgz" + integrity sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw== + unist-util-is@^6.0.0: version "6.0.0" resolved "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz" From 6f43b48c6100cb758cc415df33a047d99e494897 Mon Sep 17 00:00:00 2001 From: swarnabhasinha Date: Wed, 30 Jul 2025 14:46:16 +0530 Subject: [PATCH 06/18] fix: link: --- .vitepress/config.mts | 2 +- docs/hackathon/overview.md | 44 ++++++++++++++++++++++++++++++++++++++ index.md | 16 +++++++------- 3 files changed, 53 insertions(+), 9 deletions(-) create mode 100644 docs/hackathon/overview.md diff --git a/.vitepress/config.mts b/.vitepress/config.mts index 7cfad3f..c0eeef1 100644 --- a/.vitepress/config.mts +++ b/.vitepress/config.mts @@ -189,7 +189,7 @@ function sidebarHome() { items: [ { text: "Overview", - link: "/docs/hackathon/", + link: "/docs/hackathon/overview", }, { text: "Quick Start", diff --git a/docs/hackathon/overview.md b/docs/hackathon/overview.md new file mode 100644 index 0000000..81270da --- /dev/null +++ b/docs/hackathon/overview.md @@ -0,0 +1,44 @@ +# OptimumP2P Hackathon Documentation + +This documentation provides technical guidance for building applications on OptimumP2P, a high-performance peer-to-peer messaging protocol that uses Random Linear Network Coding (RLNC) for efficient message propagation. + +## Documentation Structure + +### Quick Start +- [Installation & Setup](./quick-start/installation.md) +- [First Message Example](./quick-start/first-message.md) + +### Deployment Options +- [P2P Network Only](./deployment/p2p-only.md) - Direct P2P mesh setup +- [P2P Network with Gateway](./deployment/p2p-with-gateway.md) - Gateway-enabled setup for client applications + +### Client Development +- [WebSocket Client](./clients/websocket.md) - Real-time applications using WebSocket API +- [gRPC Stream Client](./clients/grpc.md) - High-performance bidirectional streaming +- [mump2p-cli](./clients/cli.md) - Command-line interface usage + +### Configuration +- [Network Parameters](./configuration/network-params.md) - Mesh topology and RLNC settings +- [Docker Environment Variables](./configuration/docker-vars.md) - Complete environment variable reference +- [Performance Tuning](./configuration/tuning.md) - Optimization guidelines + +## Technical Features + +- RLNC-enhanced message propagation with reduced bandwidth usage +- libp2p-based networking with built-in security and peer discovery +- Dual access modes: direct P2P and gateway-mediated +- Multiple client interfaces: WebSocket, gRPC, CLI +- Configurable network parameters for different deployment scenarios + +## Reference Documentation + +- [libp2p Specifications](https://github.com/libp2p/specs) +- [GossipSub Protocol](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/README.md) +- [OptimumP2P Technical Overview](../learn/overview/p2p.md) + +## Support + +- [Troubleshooting Guide](./troubleshooting.md) +- [Frequently Asked Questions](./faq.md) + +Begin with the [Installation & Setup](./quick-start/installation.md) guide to start development. \ No newline at end of file diff --git a/index.md b/index.md index ba25200..7c26c88 100644 --- a/index.md +++ b/index.md @@ -12,21 +12,21 @@ hero: alt: Optimum actions: - theme: brand - text: Get Started - link: /docs/how-to-guides/overview + text: Hackathon Docs + link: /docs/hackathon/overview - theme: alt - text: Introduction + text: Get Started link: /docs/learn/overview/intro features: - - title: Overview + - title: Hackathon Documentation + details: Complete guide for building applications on OptimumP2P with deployment options, client examples, and configuration. + link: /docs/hackathon/overview + icon: 🚀 + - title: Learn Optimum details: Learn more about Optimum, the various components involved, and how it could benefit your project. link: /docs/learn/overview/intro icon: 🎓 - - title: How-to Guides (Under Construction 🚧) - details: Explore step-by-step guides for running and integrating with various types of nodes, how to read and write data, and how to gossip. - # link: /docs/how-to-guides/overview - icon: ⚙️ - title: Research details: Access resources for understanding the inner workings of Optimum and the research behind the technology. link: /docs/research/overview From 5a082282273a76b04ee1d8461e3f55fd51bde07b Mon Sep 17 00:00:00 2001 From: swarnabhasinha Date: Wed, 30 Jul 2025 14:47:39 +0530 Subject: [PATCH 07/18] fix: minor change --- docs/hackathon/overview.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/hackathon/overview.md b/docs/hackathon/overview.md index 81270da..7ba77c4 100644 --- a/docs/hackathon/overview.md +++ b/docs/hackathon/overview.md @@ -32,9 +32,10 @@ This documentation provides technical guidance for building applications on Opti ## Reference Documentation +- [OptimumP2P Technical Overview](../learn/overview/p2p.md) - [libp2p Specifications](https://github.com/libp2p/specs) - [GossipSub Protocol](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/README.md) -- [OptimumP2P Technical Overview](../learn/overview/p2p.md) + ## Support From b20d2b0375e322532fc50e650ebdabcc1b11572a Mon Sep 17 00:00:00 2001 From: swarnabhasinha Date: Wed, 30 Jul 2025 15:58:23 +0530 Subject: [PATCH 08/18] fix: add more details --- docs/hackathon/deployment/p2p-only.md | 139 +++++++++++-- docs/hackathon/deployment/p2p-with-gateway.md | 193 ++++++++++++++---- 2 files changed, 271 insertions(+), 61 deletions(-) diff --git a/docs/hackathon/deployment/p2p-only.md b/docs/hackathon/deployment/p2p-only.md index 4193ee6..2aef29d 100644 --- a/docs/hackathon/deployment/p2p-only.md +++ b/docs/hackathon/deployment/p2p-only.md @@ -83,29 +83,130 @@ networks: ## Environment Variables ### Core Configuration -- `NODE_MODE`: Set to `optimum` for RLNC-enhanced protocol or `gossipsub` for standard GossipSub -- `CLUSTER_ID`: Unique identifier for the node -- `LOG_LEVEL`: Logging verbosity (`debug`, `info`, `warn`, `error`) + +- **`NODE_MODE`**: P2P protocol implementation mode + - Purpose: Selects the underlying pub/sub protocol + - Values: `optimum` (RLNC-enhanced) or `gossipsub` (standard libp2p) + - Default: `optimum` + - Usage: Use `optimum` for better performance with RLNC coding + - Note: All nodes in network should use same mode for compatibility + +- **`CLUSTER_ID`**: Unique identifier for each P2P node + - Purpose: Distinguishes nodes in logs, metrics, and network topology + - Usage: Should be unique across all P2P nodes in deployment + - Format: Alphanumeric string, typically `p2pnode-1`, `p2pnode-2`, etc. + - Required: Yes, no default value + +- **`LOG_LEVEL`**: Logging verbosity level + - Purpose: Controls the amount and detail of log output + - Values: `debug`, `info`, `warn`, `error` + - Default: `info` + - Usage Guide: + - `debug`: Most verbose, includes detailed P2P protocol events (development) + - `info`: Standard level with operational information + - `warn`: Only warnings and errors (quiet operation) + - `error`: Only error messages (minimal logging) ### Port Configuration -- `SIDECAR_PORT`: gRPC sidecar port for client connections (default: 33212) -- `API_PORT`: HTTP API port for metrics and status (default: 9090) -- `OPTIMUM_PORT`: P2P protocol port (default: 7070) + +- **`SIDECAR_PORT`**: gRPC bidirectional communication port + - Purpose: Port where clients connect directly to interact with P2P node + - Default: `33212` + - Range: Any available port + - Usage: Must be accessible from client applications for direct P2P access + - Network: Used for client-to-node gRPC communication + +- **`API_PORT`**: HTTP monitoring and management API port + - Purpose: Exposes REST endpoints for health checks, node state, and metrics + - Default: `9090` + - Range: Any available port + - Endpoints: `/api/v1/health`, `/api/v1/node-state`, `/api/v1/version` + - Usage: Used for operational monitoring and debugging + +- **`OPTIMUM_PORT`**: P2P protocol communication port + - Purpose: Port for peer-to-peer communication between nodes + - Default: `7070` + - Range: Any available port + - Usage: Must be accessible between all P2P nodes in the mesh + - Network: Used for inter-node OptimumP2P protocol communication ### RLNC Parameters -- `OPTIMUM_MAX_MSG_SIZE`: Maximum message size in bytes (default: 1048576 = 1MB) -- `OPTIMUM_SHARD_FACTOR`: Number of coded shards to generate (default: 4) -- `OPTIMUM_SHARD_MULT`: Redundancy multiplier for shards (default: 1.5) -- `OPTIMUM_THRESHOLD`: Decoding threshold as fraction (default: 0.75) - -### Mesh Topology -- `OPTIMUM_MESH_TARGET`: Target number of peers in mesh (default: 6) -- `OPTIMUM_MESH_MIN`: Minimum peers before grafting (default: 3) -- `OPTIMUM_MESH_MAX`: Maximum peers before pruning (default: 12) - -### Bootstrap Configuration -- `BOOTSTRAP_PEERS`: Comma-separated list of bootstrap peer addresses -- `IDENTITY_DIR`: Directory for storing peer identity keys + +- **`OPTIMUM_MAX_MSG_SIZE`**: Maximum message size in bytes + - Purpose: Limits individual message size to prevent memory issues + - Default: `1048576` (1MB) + - Usage: Larger values allow bigger payloads but use more memory/bandwidth + + +- **`OPTIMUM_SHARD_FACTOR`**: Number of coded shards per message + - Purpose: Controls how many pieces each message is split into for RLNC + - Default: `4` + - Impact: Higher values increase redundancy and fault tolerance but use more bandwidth + - Note: Must be non-zero to enable RLNC functionality + +- **`OPTIMUM_SHARD_MULT`**: Shard size redundancy multiplier + - Purpose: Controls redundancy factor for error recovery + - Default: `1.5` + - Impact: Higher values improve error recovery but increase bandwidth usage + - Note: Values >1.0 add redundancy (e.g., 1.5 = 50% redundancy) + + +- **`OPTIMUM_THRESHOLD`**: Forward/decode threshold ratio + - Purpose: Fraction of shards needed before forwarding or decoding message + - Default: `0.75` (75%) + - Validation: Must be between 0 and 1 (exclusive of 0, inclusive of 1) + - Impact: Critical for network performance tuning + - Note: Lower values reduce latency but may reduce reliability; higher values improve reliability but increase latency + +### Mesh Topology Configuration + +- **`OPTIMUM_MESH_TARGET`**: Target number of peer connections + - Purpose: Ideal number of peers each node connects to in the mesh + - Default: `6` + - Range: 3-50 (typically 4-12 for most deployments) + - Impact: Higher values increase redundancy and fault tolerance but use more resources + + +- **`OPTIMUM_MESH_MIN`**: Minimum mesh peer connections + - Purpose: Minimum connections before attempting to add more peers + - Default: `4` + - Note: Should be less than MESH_TARGET + - Impact: Lower values reduce fault tolerance, higher values increase resource usage + - Usage: Prevents network partitioning by maintaining minimum connectivity + +- **`OPTIMUM_MESH_MAX`**: Maximum mesh peer connections + - Purpose: Maximum connections before pruning excess peers + - Default: `12` + - Note: Should be greater than MESH_TARGET + - Impact: Prevents resource exhaustion while maintaining network connectivity + - Usage: Sets upper bound to control memory and bandwidth usage + +### Bootstrap and Identity Configuration + +- **`BOOTSTRAP_PEERS`**: Initial peer discovery addresses + - Purpose: List of known peers for joining the mesh network + - Format: `/ip4//tcp//p2p/` + - Example: `/ip4/172.28.0.12/tcp/7070/p2p/12D3KooW...` + - Usage: New nodes use these to discover and join the network + - Multiple: Can specify multiple peers separated by commas + - Note: At least one bootstrap peer must be accessible for network joining + +- **`IDENTITY_DIR`**: Node cryptographic identity directory + - Purpose: Directory containing node's P2P identity key (p2p.key) + - Default: `/identity` + - Usage: Only needed for bootstrap nodes, other nodes auto-generate identity + - Security: Contains private key material, should be properly secured + - Permissions: Ensure proper file permissions (600) for security + +### Configuration Notes + +All parameter values can be adjusted based on specific use case requirements. TWhen modifying parameters: + +- Higher OPTIMUM_THRESHOLD values improve reliability but increase latency +- Higher OPTIMUM_MESH_TARGET values improve fault tolerance but use more resources +- Higher OPTIMUM_SHARD_FACTOR values improve redundancy but increase bandwidth usage +- OPTIMUM_MESH_MIN should be less than OPTIMUM_MESH_TARGET +- OPTIMUM_MESH_MAX should be greater than OPTIMUM_MESH_TARGET ## Starting the Network diff --git a/docs/hackathon/deployment/p2p-with-gateway.md b/docs/hackathon/deployment/p2p-with-gateway.md index 04173c3..be10a2c 100644 --- a/docs/hackathon/deployment/p2p-with-gateway.md +++ b/docs/hackathon/deployment/p2p-with-gateway.md @@ -186,14 +186,160 @@ networks: - subnet: 172.28.0.0/16 ``` +## P2P Node Environment Variables + +### Core P2P Configuration + +- **`CLUSTER_ID`**: Unique identifier for each P2P node + - Purpose: Distinguishes nodes in logs, metrics, and network topology + - Usage: Should be unique across all P2P nodes in deployment + - Format: Alphanumeric string, typically `p2pnode-1`, `p2pnode-2`, etc. + - Required: Yes, no default value + +- **`NODE_MODE`**: P2P protocol implementation mode + - Purpose: Selects the underlying pub/sub protocol + - Values: `optimum` (RLNC-enhanced) or `gossipsub` (standard libp2p) + - Default: `optimum` + - Usage: Use `optimum` for better performance with RLNC coding + - Note: All nodes in network should use same mode for compatibility + +- **`SIDECAR_PORT`**: gRPC bidirectional communication port + - Purpose: Port where gateways and clients connect to interact with P2P node + - Default: `33212` + - Range: Any available port (1024-65535) + - Usage: Must be accessible from gateway containers for internal communication + - Network: Used for internal container-to-container communication + +- **`API_PORT`**: HTTP monitoring and management API port + - Purpose: Exposes REST endpoints for health checks, node state, and metrics + - Default: `8081` for gateway, `9090` for P2P nodes (varies by component) + - Endpoints: `/api/v1/health`, `/api/v1/node-state`, `/api/v1/version` + - Usage: Used for operational monitoring and debugging + +### Network Discovery Configuration + +- **`IDENTITY_DIR`**: Node cryptographic identity directory + - Purpose: Directory containing node's P2P identity key (p2p.key) + - Default: `/identity` + - Usage: Only needed for bootstrap nodes, other nodes auto-generate identity + - Security: Contains private key material, should be properly secured + +- **`BOOTSTRAP_PEERS`**: Initial peer discovery addresses + - Purpose: List of known peers for joining the mesh network + - Format: `/ip4//tcp//p2p/` + - Example: `/ip4/172.28.0.12/tcp/7070/p2p/12D3KooW...` + - Usage: New nodes use these to discover and join the network + - Multiple: Can specify multiple peers separated by commas + +### OptimumP2P Protocol Configuration + +- **`OPTIMUM_PORT`**: P2P protocol communication port + - Purpose: Port for peer-to-peer communication between nodes + - Default: `7070` + - Range: Any available port, commonly 7070-7080 + - Usage: Must be accessible between all P2P nodes in the mesh + - Network: Used for inter-node OptimumP2P protocol communication + +- **`OPTIMUM_MAX_MSG_SIZE`**: Maximum message size in bytes + - Purpose: Limits individual message size to prevent memory issues + - Default: `1048576` (1MB) + - Usage: Larger values allow bigger payloads but use more memory/bandwidth + +### RLNC (Random Linear Network Coding) Configuration + +- **`OPTIMUM_SHARD_FACTOR`**: Number of coded shards per message + - Purpose: Controls how many pieces each message is split into for RLNC + - Default: `4` + - Impact: Higher values increase redundancy and fault tolerance but use more bandwidth + - Note: Must be non-zero to enable RLNC functionality + +- **`OPTIMUM_SHARD_MULT`**: Shard size redundancy multiplier + - Purpose: Controls redundancy factor for error recovery + - Default: `1.5` + - Impact: Higher values improve error recovery but increase bandwidth usage + - Note: Values >1.0 add redundancy (e.g., 1.5 = 50% redundancy) + +- **`OPTIMUM_THRESHOLD`**: Forward/decode threshold ratio + - Purpose: Fraction of shards needed before forwarding or decoding message + - Default: `0.75` (75%) + - Validation: Must be between 0 and 1 (exclusive of 0, inclusive of 1) + - Impact: Critical for network performance tuning + - Note: Lower values reduce latency but may reduce reliability; higher values improve reliability but increase latency + +### Mesh Topology Configuration + +- **`OPTIMUM_MESH_TARGET`**: Target number of peer connections + - Purpose: Ideal number of peers each node connects to in the mesh + - Default: `6` + - Impact: Higher values increase redundancy and fault tolerance but use more resources + - Scaling: Adjust based on network size and reliability requirements + +- **`OPTIMUM_MESH_MIN`**: Minimum mesh peer connections + - Purpose: Minimum connections before attempting to add more peers + - Default: `4` + - Note: Should be less than `MESH_TARGET` + - Impact: Lower values reduce fault tolerance, higher values increase resource usage + - Usage: Prevents network partitioning by maintaining minimum connectivity + +- **`OPTIMUM_MESH_MAX`**: Maximum mesh peer connections + - Purpose: Maximum connections before pruning excess peers + - Default: `12` + - Note: Should be greater than `MESH_TARGET` + - Impact: Prevents resource exhaustion while maintaining network connectivity + - Usage: Sets upper bound to control memory and bandwidth usage + +### Configuration Notes + +All parameter values can be adjusted based on specific use case requirements. When modifying parameters: + +- Higher OPTIMUM_THRESHOLD values improve reliability but increase latency +- Higher OPTIMUM_MESH_TARGET values improve fault tolerance but use more resources +- Higher OPTIMUM_SHARD_FACTOR values improve redundancy but increase bandwidth usage +- OPTIMUM_MESH_MIN should be less than OPTIMUM_MESH_TARGET +- OPTIMUM_MESH_MAX should be greater than OPTIMUM_MESH_TARGET + ## Gateway Configuration ### Environment Variables -- `GATEWAY_PORT`: HTTP/WebSocket server port (default: :8080) -- `CLUSTER_ID`: Unique gateway identifier -- `ENABLE_AUTH`: Enable Auth0 authentication (true/false) -- `P2P_NODES`: Comma-separated list of P2P node sidecar addresses -- `LOG_LEVEL`: Logging verbosity + +- **`GATEWAY_PORT`**: HTTP/WebSocket server port (default: `:8080`) + - Purpose: Defines the port where the gateway listens for client connections + - Usage: Internal container port for REST API and WebSocket connections + - Example: `:8080`, `:3000`, `:8081` + - Note: External port mapping is configured separately in docker-compose ports section + +- **`CLUSTER_ID`**: Unique gateway identifier + - Purpose: Distinguishes between multiple gateway instances in logs, metrics, and monitoring + - Usage: Should be unique across all gateway instances in your deployment + - Format: Alphanumeric string, no spaces + - Example: `gateway-1`, `gateway-primary`, `gateway-us-east` + - Required: Yes, no default value + +- **`ENABLE_AUTH`**: Enable Auth0 JWT authentication (true/false) + - Purpose: Controls whether API requests require JWT authentication + - Usage: Set to `false` for development/testing, `true` for production + - Values: `true` (requires valid JWT tokens) or `false` (open access) + - Default: `false` + - Note: When `true`, requires additional Auth0 configuration (AUTH0_DOMAIN, AUTH0_AUDIENCE) + +- **`P2P_NODES`**: Comma-separated list of P2P node gRPC sidecar addresses + - Purpose: Defines which P2P nodes the gateway can connect to for message routing + - Format: `hostname:port,hostname:port,...` + - Usage: Gateway load-balances requests across these nodes for high availability + - Port: Should match SIDECAR_PORT of P2P nodes (typically 33212) + - Example: `p2pnode-1:33212,p2pnode-2:33212,p2pnode-3:33212` + - Behavior: Gateway attempts to connect to all listed nodes and routes to healthy ones + +- **`LOG_LEVEL`**: Logging verbosity level + - Purpose: Controls the amount and detail of log output + - Values: `debug`, `info`, `warn`, `error` + - Default: `info` + - Usage Guide: + - `debug`: Most verbose, includes request/response details, connection events (development) + - `info`: Standard production level with operational information + - `warn`: Only warnings and errors (quiet production) + - `error`: Only error messages (minimal logging) + - Performance: Higher verbosity may impact performance and storage ### Authentication (Optional) For production deployments, enable authentication: @@ -263,27 +409,6 @@ client := pb.NewGatewayStreamClient(conn) stream, err := client.Stream(context.Background()) ``` -## Load Balancing - -Deploy multiple gateways for high availability: -- Gateway 1: `localhost:8081` (HTTP), `localhost:50051` (gRPC) -- Gateway 2: `localhost:8082` (HTTP), `localhost:50052` (gRPC) - -Use a load balancer (nginx, HAProxy) to distribute traffic: -```nginx -upstream gateway_backend { - server localhost:8081; - server localhost:8082; -} - -server { - listen 80; - location / { - proxy_pass http://gateway_backend; - } -} -``` - ## Monitoring ### Gateway Metrics @@ -298,13 +423,6 @@ server { ## Scaling Considerations -### Gateway Scaling -Gateways are stateless and can be scaled horizontally: -- Add more gateway instances -- Use connection pooling for P2P node connections -- Implement circuit breakers for fault tolerance - -### P2P Network Scaling Scale the P2P network by adding more nodes: - Maintain OPTIMUM_MESH_TARGET ratio to network size - Consider network topology and latency @@ -329,12 +447,3 @@ docker-compose logs -f | grep -E "(publish|subscribe|message)" # Verify P2P mesh status curl http://localhost:9091/debug/peers ``` - -### Performance Issues -```bash -# Monitor gateway metrics -curl http://localhost:8081/metrics - -# Check resource usage -docker stats -``` \ No newline at end of file From 8dd859cf53fffda5788704eb6ce76d00585d5698 Mon Sep 17 00:00:00 2001 From: swarnabhasinha Date: Wed, 30 Jul 2025 16:13:01 +0530 Subject: [PATCH 09/18] Add GossipSub configuration documentation --- .vitepress/config.mts | 4 + docs/hackathon/configuration/gossipsub.md | 124 ++++++++++++++++++ docs/hackathon/deployment/p2p-only.md | 8 +- docs/hackathon/deployment/p2p-with-gateway.md | 6 + docs/hackathon/overview.md | 4 +- 5 files changed, 144 insertions(+), 2 deletions(-) create mode 100644 docs/hackathon/configuration/gossipsub.md diff --git a/.vitepress/config.mts b/.vitepress/config.mts index c0eeef1..0a0adc3 100644 --- a/.vitepress/config.mts +++ b/.vitepress/config.mts @@ -241,6 +241,10 @@ function sidebarHome() { text: "Configuration", collapsed: true, items: [ + { + text: "GossipSub Configuration", + link: "/docs/hackathon/configuration/gossipsub", + }, { text: "Network Parameters", link: "/docs/hackathon/configuration/network-params", diff --git a/docs/hackathon/configuration/gossipsub.md b/docs/hackathon/configuration/gossipsub.md new file mode 100644 index 0000000..8363e85 --- /dev/null +++ b/docs/hackathon/configuration/gossipsub.md @@ -0,0 +1,124 @@ +# GossipSub Configuration + +Understanding GossipSub configuration is essential for optimizing your P2P network performance. This page explains the core GossipSub parameters and how to configure them in Optimum P2P. + +## What is GossipSub? + +GossipSub is a pubsub protocol designed for decentralized networks that builds on the concept of a "mesh" - a subset of peers that directly exchange messages, plus "gossip" to peers outside the mesh about available messages. + +### Key Concepts + +- **Mesh**: Direct connections between peers for message forwarding +- **Gossip**: Metadata exchange about available messages with non-mesh peers +- **Fanout**: Temporary connections for publishing when not subscribed to a topic +- **Degree**: The number of peer connections each node maintains + +## Core GossipSub Parameters + +Based on the [libp2p GossipSub v1.0 specification](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/gossipsub-v1.0.md#parameters), here are the fundamental parameters: + +### Network Topology Parameters + +| Parameter | Purpose | Default | Description | +|-----------|---------|---------|-------------| +| `D` | Desired mesh degree | 6 | Target number of peers in topic mesh | +| `D_low` | Lower bound for mesh degree | 4 | Minimum connections before adding peers | +| `D_high` | Upper bound for mesh degree | 12 | Maximum connections before pruning peers | +| `D_lazy` | Gossip emission degree | 6 | Number of peers for gossip emission | + +### Timing Parameters + +| Parameter | Purpose | Default | Description | +|-----------|---------|---------|-------------| +| `heartbeat_interval` | Mesh maintenance frequency | 1 second | How often to run maintenance | +| `fanout_ttl` | Fanout topic lifetime | 60 seconds | TTL for non-subscribed topic state | +| `seen_ttl` | Message deduplication cache | 2 minutes | How long to remember seen messages | + +### Message Cache Parameters + +| Parameter | Purpose | Default | Description | +|-----------|---------|---------|-------------| +| `mcache_len` | Message history windows | 5 | Number of history windows to keep | +| `mcache_gossip` | Gossip history windows | 3 | Windows to use for gossip emission | + +## Optimum P2P GossipSub Configuration + +Optimum P2P implements GossipSub with configurable parameters through environment variables: + +### Environment Variables + +- **`GOSSIPSUB_PORT`**: Port for GossipSub protocol communication + - Purpose: Network port for GossipSub peer-to-peer communication + - Default: `6060` + - Usage: Internal P2P networking, separate from API ports + - Example: `GOSSIPSUB_PORT=6060` + +- **`GOSSIPSUB_MAX_MSG_SIZE`**: Maximum message size in bytes + - Purpose: Limits individual message size to prevent memory issues + - Default: `1048576` (1MB) + - Usage: Larger values allow bigger payloads but use more memory + - Example: `GOSSIPSUB_MAX_MSG_SIZE=1048576` + +- **`GOSSIPSUB_MESH_TARGET`**: Target number of mesh connections + - Purpose: Ideal number of direct peer connections (corresponds to `D`) + - Default: `6` + - Impact: Higher values increase redundancy but use more bandwidth + - Example: `GOSSIPSUB_MESH_TARGET=6` + +- **`GOSSIPSUB_MESH_MIN`**: Minimum mesh connections + - Purpose: Lower threshold before attempting to add peers (corresponds to `D_low`) + - Default: `4` + - Note: Should be less than `GOSSIPSUB_MESH_TARGET` + - Example: `GOSSIPSUB_MESH_MIN=4` + +- **`GOSSIPSUB_MESH_MAX`**: Maximum mesh connections + - Purpose: Upper threshold before pruning excess peers (corresponds to `D_high`) + - Default: `12` + - Note: Should be greater than `GOSSIPSUB_MESH_TARGET` + - Example: `GOSSIPSUB_MESH_MAX=12` + +### Configuration Example + +```yaml +# docker-compose.yml +services: + p2pnode-1: + environment: + - GOSSIPSUB_PORT=6060 + - GOSSIPSUB_MAX_MSG_SIZE=1048576 + - GOSSIPSUB_MESH_TARGET=6 + - GOSSIPSUB_MESH_MIN=4 + - GOSSIPSUB_MESH_MAX=12 +``` + +## GossipSub vs Optimum Protocol + +Optimum P2P runs two protocols simultaneously: + +1. **Standard GossipSub**: For baseline pub/sub functionality +2. **Optimum Protocol**: Enhanced with RLNC (Random Linear Network Coding) + +Both protocols have their own configuration parameters: + +| Aspect | GossipSub | Optimum | +|--------|-----------|---------| +| Purpose | Standard pub/sub mesh | RLNC-enhanced messaging | +| Port | `GOSSIPSUB_PORT` | `OPTIMUM_PORT` | +| Mesh Target | `GOSSIPSUB_MESH_TARGET` | `OPTIMUM_MESH_TARGET` | +| Message Size | `GOSSIPSUB_MAX_MSG_SIZE` | `OPTIMUM_MAX_MSG_SIZE` | + +### Control Messages + +GossipSub uses four types of control messages: + +- **GRAFT**: Add peer to mesh (invite to join topic mesh) +- **PRUNE**: Remove peer from mesh (remove from topic mesh) +- **IHAVE**: Announce available messages (gossip metadata) +- **IWANT**: Request specific messages (response to IHAVE) + + +## References + +- [libp2p GossipSub v1.0 Specification](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/gossipsub-v1.0.md) +- [libp2p PubSub Interface](https://github.com/libp2p/specs/blob/master/pubsub/README.md) +- [Optimum P2P Configuration Guide](/docs/hackathon/deployment/p2p-with-gateway.md#p2p-node-configuration) \ No newline at end of file diff --git a/docs/hackathon/deployment/p2p-only.md b/docs/hackathon/deployment/p2p-only.md index 2aef29d..f506a1b 100644 --- a/docs/hackathon/deployment/p2p-only.md +++ b/docs/hackathon/deployment/p2p-only.md @@ -280,4 +280,10 @@ curl http://localhost:9091/debug/peers Check message propagation in logs: ```bash docker-compose logs -f | grep "message" -``` \ No newline at end of file +``` + +## See Also + +- [GossipSub Configuration Guide](/docs/hackathon/configuration/gossipsub.md) - Detailed explanation of underlying pub/sub protocol parameters +- [P2P with Gateway Deployment](/docs/hackathon/deployment/p2p-with-gateway.md) - Alternative deployment with gateway layer +- [First Message Tutorial](/docs/hackathon/quick-start/first-message.md) - Step-by-step getting started guide \ No newline at end of file diff --git a/docs/hackathon/deployment/p2p-with-gateway.md b/docs/hackathon/deployment/p2p-with-gateway.md index be10a2c..69de61b 100644 --- a/docs/hackathon/deployment/p2p-with-gateway.md +++ b/docs/hackathon/deployment/p2p-with-gateway.md @@ -447,3 +447,9 @@ docker-compose logs -f | grep -E "(publish|subscribe|message)" # Verify P2P mesh status curl http://localhost:9091/debug/peers ``` + +## See Also + +- [GossipSub Configuration Guide](/docs/hackathon/configuration/gossipsub.md) - Detailed explanation of underlying pub/sub protocol parameters +- [P2P-Only Deployment](/docs/hackathon/deployment/p2p-only.md) - Alternative deployment without gateways +- [First Message Tutorial](/docs/hackathon/quick-start/first-message.md) - Step-by-step getting started guide diff --git a/docs/hackathon/overview.md b/docs/hackathon/overview.md index 7ba77c4..7e66e63 100644 --- a/docs/hackathon/overview.md +++ b/docs/hackathon/overview.md @@ -18,6 +18,7 @@ This documentation provides technical guidance for building applications on Opti - [mump2p-cli](./clients/cli.md) - Command-line interface usage ### Configuration +- [GossipSub Configuration](./configuration/gossipsub.md) - Understanding and configuring the underlying pub/sub protocol - [Network Parameters](./configuration/network-params.md) - Mesh topology and RLNC settings - [Docker Environment Variables](./configuration/docker-vars.md) - Complete environment variable reference - [Performance Tuning](./configuration/tuning.md) - Optimization guidelines @@ -34,7 +35,8 @@ This documentation provides technical guidance for building applications on Opti - [OptimumP2P Technical Overview](../learn/overview/p2p.md) - [libp2p Specifications](https://github.com/libp2p/specs) -- [GossipSub Protocol](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/README.md) +- [GossipSub v1.0 Specification](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/gossipsub-v1.0.md) +- [libp2p PubSub Interface](https://github.com/libp2p/specs/blob/master/pubsub/README.md) ## Support From a5c097ba3cbff24f18f48a4e9f2d0083f11e8731 Mon Sep 17 00:00:00 2001 From: swarnabhasinha Date: Wed, 30 Jul 2025 17:34:40 +0530 Subject: [PATCH 10/18] fix: docker version --- docs/hackathon/quick-start/installation.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/hackathon/quick-start/installation.md b/docs/hackathon/quick-start/installation.md index 95b0d07..363c6f6 100644 --- a/docs/hackathon/quick-start/installation.md +++ b/docs/hackathon/quick-start/installation.md @@ -18,7 +18,7 @@ Open your terminal (Command Prompt on Windows, Terminal on Mac/Linux) and type: ```bash docker --version ``` -You should see something like `Docker version 20.10.x` + ### 2. Docker Compose Docker Compose helps us run multiple Docker containers together. It usually comes with Docker Desktop, but let's verify: @@ -26,7 +26,7 @@ Docker Compose helps us run multiple Docker containers together. It usually come ```bash docker-compose --version ``` -You should see something like `docker-compose version 1.29.x` + ### 3. Git (Optional but recommended) Git helps you download and manage code. Most computers have it pre-installed. From db37b9a4e7136aa3cb99ff89241ad4ec7a744d28 Mon Sep 17 00:00:00 2001 From: swarnabhasinha Date: Fri, 1 Aug 2025 15:54:41 +0530 Subject: [PATCH 11/18] docs: Improve hackathon documentation structure and content --- .vitepress/config.mts | 16 +- docs/hackathon/README.md | 37 --- docs/hackathon/configuration/optimump2p.md | 246 ++++++++++++++++++++ docs/hackathon/index.md | 44 ---- docs/hackathon/overview.md | 86 ++++--- docs/hackathon/quick-start/first-message.md | 4 +- docs/hackathon/quick-start/installation.md | 42 ---- 7 files changed, 305 insertions(+), 170 deletions(-) delete mode 100644 docs/hackathon/README.md create mode 100644 docs/hackathon/configuration/optimump2p.md delete mode 100644 docs/hackathon/index.md diff --git a/.vitepress/config.mts b/.vitepress/config.mts index 0a0adc3..5963ddd 100644 --- a/.vitepress/config.mts +++ b/.vitepress/config.mts @@ -242,20 +242,12 @@ function sidebarHome() { collapsed: true, items: [ { - text: "GossipSub Configuration", - link: "/docs/hackathon/configuration/gossipsub", - }, - { - text: "Network Parameters", - link: "/docs/hackathon/configuration/network-params", + text: "OptimumP2P Configuration", + link: "/docs/hackathon/configuration/optimump2p", }, { - text: "Docker Environment Variables", - link: "/docs/hackathon/configuration/docker-vars", - }, - { - text: "Performance Tuning", - link: "/docs/hackathon/configuration/tuning", + text: "GossipSub Configuration", + link: "/docs/hackathon/configuration/gossipsub", }, ], }, diff --git a/docs/hackathon/README.md b/docs/hackathon/README.md deleted file mode 100644 index 1abed42..0000000 --- a/docs/hackathon/README.md +++ /dev/null @@ -1,37 +0,0 @@ -# OptimumP2P Hackathon Documentation - -This documentation provides technical guidance for building applications on OptimumP2P, a high-performance peer-to-peer messaging protocol that uses Random Linear Network Coding (RLNC) for efficient message propagation. - -## Documentation Structure - -### Quick Start -- [Installation & Setup](./quick-start/installation.md) -- [First Message Example](./quick-start/first-message.md) - -### Deployment Options -- [P2P Network Only](./deployment/p2p-only.md) - Direct P2P mesh setup -- [P2P Network with Gateway](./deployment/p2p-with-gateway.md) - Gateway-enabled setup for client applications - -### Client Development -- [WebSocket Client](./clients/websocket.md) - Real-time applications using WebSocket API -- [gRPC Stream Client](./clients/grpc.md) - High-performance bidirectional streaming -- [mump2p-cli](./clients/cli.md) - Command-line interface usage - -### Configuration -- [Network Parameters](./configuration/network-params.md) - Mesh topology and RLNC settings -- [Docker Environment Variables](./configuration/docker-vars.md) - Complete environment variable reference -- [Performance Tuning](./configuration/tuning.md) - Optimization guidelines - -## Reference Documentation - -- [OptimumP2P Technical Overview](../learn/overview/p2p.md) -- [libp2p Specifications](https://github.com/libp2p/specs) -- [GossipSub Protocol](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/README.md) - - -## Support - -- [Troubleshooting Guide](./troubleshooting.md) -- [Frequently Asked Questions](./faq.md) - -Begin with the [Installation & Setup](./quick-start/installation.md) guide to start development. \ No newline at end of file diff --git a/docs/hackathon/configuration/optimump2p.md b/docs/hackathon/configuration/optimump2p.md new file mode 100644 index 0000000..0400543 --- /dev/null +++ b/docs/hackathon/configuration/optimump2p.md @@ -0,0 +1,246 @@ +# OptimumP2P Configuration + +This page covers all OptimumP2P-specific configuration parameters, their impact on network performance, and how to configure them for different deployment scenarios. + +## Configuration Mapping + +OptimumP2P configuration can be set via YAML config files or Docker environment variables. The following tables map the configuration fields to their corresponding Docker environment variables: + +### RLNC Core Parameters + +| Config Field | Environment Variable | Default | Description | +|--------------|---------------------|---------|-------------| +| `rlnc_shard_factor` | `OPTIMUM_SHARD_FACTOR` | `4` | Number of coded shards per message | +| `publisher_shard_multiplier` | `OPTIMUM_SHARD_MULT` | `1.5` | Coded shard multiplier for publishing | +| `forward_shard_threshold` | `OPTIMUM_THRESHOLD` | `0.75` | Fraction needed before forwarding | + +### Mesh Topology Parameters + +| Config Field | Environment Variable | Default | Description | +|--------------|---------------------|---------|-------------| +| `mesh_degree_target` | `OPTIMUM_MESH_TARGET` | `6` | Target peer connections | +| `mesh_degree_min` | `OPTIMUM_MESH_MIN` | `3` | Min before grafting | +| `mesh_degree_max` | `OPTIMUM_MESH_MAX` | `12` | Max before pruning | + +### Protocol Selection + +| Config Field | Environment Variable | Default | Description | +|--------------|---------------------|---------|-------------| +| `enable_optimum_p2p` | `NODE_MODE=optimum` | `true` | Enable RLNC protocol | +| `enable_gossipsub` | `NODE_MODE=gossipsub` | `false` | Enable GossipSub baseline | + +### Message and Network Settings + +| Config Field | Environment Variable | Default | Description | +|--------------|---------------------|---------|-------------| +| `random_message_size_bytes` | `OPTIMUM_MAX_MSG_SIZE` | `1048576` | Max message size (1MB) | +| `app_port` | `API_PORT` | `9090` | HTTP API port | + +## RLNC Parameter Details + +### Shard Factor (coded shards) + +**Parameter**: `OPTIMUM_SHARD_FACTOR` +**Config Field**: `rlnc_shard_factor` +**Default**: `4` + +Controls how many coded shards each message is divided into for network coding. This is the fundamental parameter that determines RLNC granularity. + +**Technical Impact**: +- **Higher values**: More coded shards provide better redundancy and fault tolerance but increase computational overhead +- **Lower values**: Fewer coded shards reduce processing time and bandwidth usage but may reduce fault tolerance +- **Network effect**: Directly affects the minimum number of coded shards needed for message reconstruction + +### Publisher Shard Multiplier + +**Parameter**: `OPTIMUM_SHARD_MULT` +**Config Field**: `publisher_shard_multiplier` +**Default**: `1.5` + +Controls redundancy when publishing messages. Total coded shards created = `rlnc_shard_factor × publisher_shard_multiplier`. + +**Technical Impact**: +- **Higher values**: More initial coded shards improve delivery guarantees but increase bandwidth usage +- **Lower values**: Fewer coded shards reduce network load but may impact reliability in lossy networks + +### Forward Shard Threshold + +**Parameter**: `OPTIMUM_THRESHOLD` +**Config Field**: `forward_shard_threshold` +**Default**: `0.75` + +Determines when nodes forward received coded shards. Nodes forward when they have more than `rlnc_shard_factor × threshold` coded shards. + +**Technical Impact**: +- **Higher values** (0.8-0.9): More reliable forwarding, increased latency +- **Lower values** (0.5-0.6): Faster propagation, reduced latency, potential reliability trade-offs + +## Docker Configuration Examples + +### OptimumP2P Mode (Enhanced) +```yaml +environment: + - NODE_MODE=optimum + - OPTIMUM_SHARD_FACTOR=4 + - OPTIMUM_SHARD_MULT=1.5 + - OPTIMUM_THRESHOLD=0.75 + - OPTIMUM_MESH_TARGET=6 + - OPTIMUM_MESH_MIN=3 + - OPTIMUM_MESH_MAX=12 +``` + +### GossipSub Mode (Baseline) +```yaml +environment: + - NODE_MODE=gossipsub + - GOSSIPSUB_MESH_TARGET=6 + - GOSSIPSUB_MESH_MIN=4 + - GOSSIPSUB_MESH_MAX=12 +``` + +## Performance Tuning + +### High Throughput Setup +Optimized for maximum message throughput: +```yaml +- OPTIMUM_SHARD_FACTOR=8 +- OPTIMUM_SHARD_MULT=2.0 +- OPTIMUM_THRESHOLD=0.5 +- OPTIMUM_MESH_TARGET=8 +``` + +### Low Latency Setup +Optimized for minimum delivery latency: +```yaml +- OPTIMUM_SHARD_FACTOR=4 +- OPTIMUM_SHARD_MULT=1.2 +- OPTIMUM_THRESHOLD=0.6 +- OPTIMUM_MESH_TARGET=6 +``` + +### High Reliability Setup +Optimized for maximum fault tolerance: +```yaml +- OPTIMUM_SHARD_FACTOR=16 +- OPTIMUM_SHARD_MULT=2.5 +- OPTIMUM_THRESHOLD=0.8 +- OPTIMUM_MESH_TARGET=10 +``` + +## Configuration File Format + +Sample YAML configuration matching the actual config structure: + +```yaml +# === General App Settings === +app_port: 23422 +cluster_id: "production_cluster" +file_storage_directory: /tmp +silent_mode_enabled: false + +# === Protocol Settings === +enable_gossipsub: false +enable_optimum_p2p: true + +# === PubSub Mesh Settings === +mesh_degree_target: 6 +mesh_degree_min: 5 +mesh_degree_max: 12 +rlnc_shard_factor: 32 # number of coded shards each message is divided into + +# === Message Generation === +random_message_size_bytes: 3145728 # 3MB +publisher_shard_multiplier: 1.5 # coded shards multiplier for publishing +forward_shard_threshold: 0.75 # forward threshold for coded shards + +# === Bootstrap Nodes === +bootstrap_nodes_optimum_p2p: + - /ip4/127.0.0.1/tcp/10000/p2p/12D3KooWExample + +bootstrap_nodes_gossipsub: + - /ip4/127.0.0.1/tcp/10000/p2p/12D3KooWExample +``` + +## Protocol Mode Switching + +OptimumP2P supports running both protocols for comparison: + +**OptimumP2P Mode** (`NODE_MODE=optimum`): +- Uses RLNC with coded shards for enhanced propagation +- Provides early forwarding capabilities +- Better bandwidth efficiency through network coding +- Enhanced fault tolerance via coded shard redundancy + +**GossipSub Mode** (`NODE_MODE=gossipsub`): +- Standard libp2p GossipSub implementation +- Direct message forwarding without coding +- Lower computational overhead +- Baseline for performance comparison + +## Monitoring Configuration + +Verify your configuration is applied correctly: + +```bash +# Check applied configuration +curl http://localhost:9090/config + +# Monitor mesh formation and peer connections +curl http://localhost:9090/debug/peers + +# Check protocol mode in logs +docker logs p2pnode-1 | grep -E "(optimum|gossipsub|coded.*shard)" + +# Monitor coded shard processing +docker logs p2pnode-1 | grep -E "(shard|forward|decode)" +``` + +## Configuration Constraints + +**Enforced by code**: +- `mesh_degree_min <= mesh_degree_target <= mesh_degree_max` +- `random_message_size_bytes > 0` +- `cluster_id` must not be empty or "sample_cluster" + +**Recommended best practices**: +- `forward_shard_threshold` between 0.0 and 1.0 (values outside this range may cause unexpected behavior) +- `rlnc_shard_factor > 0` (value of 0 disables RLNC functionality) +- `publisher_shard_multiplier >= 1.0` (values < 1.0 reduce redundancy) + +## Complete Docker Compose Example + +```yaml +services: + p2pnode-1: + image: getoptimum/p2pnode:latest + environment: + # Protocol selection + - NODE_MODE=optimum + - CLUSTER_ID=p2pnode-1 + + # RLNC coded shard parameters + - OPTIMUM_SHARD_FACTOR=4 + - OPTIMUM_SHARD_MULT=1.5 + - OPTIMUM_THRESHOLD=0.75 + + # Mesh topology + - OPTIMUM_MESH_TARGET=6 + - OPTIMUM_MESH_MIN=3 + - OPTIMUM_MESH_MAX=12 + + # Network settings + - OPTIMUM_PORT=7070 + - OPTIMUM_MAX_MSG_SIZE=1048576 + - SIDECAR_PORT=33212 + - API_PORT=9090 + + # Bootstrap configuration + - BOOTSTRAP_PEERS=/ip4/172.28.0.12/tcp/7070/p2p/${BOOTSTRAP_PEER_ID} +``` + +## See Also + +- **[GossipSub Configuration](./gossipsub.md)** - Standard protocol parameters for comparison +- **[P2P-Only Deployment](../deployment/p2p-only.md)** - Complete setup with configuration +- **[Gateway + P2P Deployment](../deployment/p2p-with-gateway.md)** - Full stack configuration +- **[OptimumP2P Technical Overview](../../learn/overview/p2p.md)** - Protocol fundamentals and RLNC details \ No newline at end of file diff --git a/docs/hackathon/index.md b/docs/hackathon/index.md deleted file mode 100644 index 81270da..0000000 --- a/docs/hackathon/index.md +++ /dev/null @@ -1,44 +0,0 @@ -# OptimumP2P Hackathon Documentation - -This documentation provides technical guidance for building applications on OptimumP2P, a high-performance peer-to-peer messaging protocol that uses Random Linear Network Coding (RLNC) for efficient message propagation. - -## Documentation Structure - -### Quick Start -- [Installation & Setup](./quick-start/installation.md) -- [First Message Example](./quick-start/first-message.md) - -### Deployment Options -- [P2P Network Only](./deployment/p2p-only.md) - Direct P2P mesh setup -- [P2P Network with Gateway](./deployment/p2p-with-gateway.md) - Gateway-enabled setup for client applications - -### Client Development -- [WebSocket Client](./clients/websocket.md) - Real-time applications using WebSocket API -- [gRPC Stream Client](./clients/grpc.md) - High-performance bidirectional streaming -- [mump2p-cli](./clients/cli.md) - Command-line interface usage - -### Configuration -- [Network Parameters](./configuration/network-params.md) - Mesh topology and RLNC settings -- [Docker Environment Variables](./configuration/docker-vars.md) - Complete environment variable reference -- [Performance Tuning](./configuration/tuning.md) - Optimization guidelines - -## Technical Features - -- RLNC-enhanced message propagation with reduced bandwidth usage -- libp2p-based networking with built-in security and peer discovery -- Dual access modes: direct P2P and gateway-mediated -- Multiple client interfaces: WebSocket, gRPC, CLI -- Configurable network parameters for different deployment scenarios - -## Reference Documentation - -- [libp2p Specifications](https://github.com/libp2p/specs) -- [GossipSub Protocol](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/README.md) -- [OptimumP2P Technical Overview](../learn/overview/p2p.md) - -## Support - -- [Troubleshooting Guide](./troubleshooting.md) -- [Frequently Asked Questions](./faq.md) - -Begin with the [Installation & Setup](./quick-start/installation.md) guide to start development. \ No newline at end of file diff --git a/docs/hackathon/overview.md b/docs/hackathon/overview.md index 7e66e63..8e00202 100644 --- a/docs/hackathon/overview.md +++ b/docs/hackathon/overview.md @@ -1,47 +1,67 @@ -# OptimumP2P Hackathon Documentation +# OptimumP2P Hackathon Guide -This documentation provides technical guidance for building applications on OptimumP2P, a high-performance peer-to-peer messaging protocol that uses Random Linear Network Coding (RLNC) for efficient message propagation. +Welcome to the OptimumP2P hackathon documentation. This guide provides everything you need to deploy, configure, and integrate OptimumP2P - a novel RLNC-enhanced gossip algorithm for high-performance peer-to-peer networks. -## Documentation Structure +## What is OptimumP2P? -### Quick Start -- [Installation & Setup](./quick-start/installation.md) -- [First Message Example](./quick-start/first-message.md) +OptimumP2P is a novel gossip algorithm that uses [Random Linear Network Coding (RLNC)](https://x.com/get_optimum/status/1891520664726802439) to enhance traditional gossip protocols like [GossipSub](https://github.com/libp2p/specs/tree/master/pubsub/gossipsub). For a comprehensive technical overview, see **[OptimumP2P Technical Overview](../learn/overview/p2p.md)**. -### Deployment Options -- [P2P Network Only](./deployment/p2p-only.md) - Direct P2P mesh setup -- [P2P Network with Gateway](./deployment/p2p-with-gateway.md) - Gateway-enabled setup for client applications +## Quick Start -### Client Development -- [WebSocket Client](./clients/websocket.md) - Real-time applications using WebSocket API -- [gRPC Stream Client](./clients/grpc.md) - High-performance bidirectional streaming -- [mump2p-cli](./clients/cli.md) - Command-line interface usage +Get OptimumP2P running in under 5 minutes: -### Configuration -- [GossipSub Configuration](./configuration/gossipsub.md) - Understanding and configuring the underlying pub/sub protocol -- [Network Parameters](./configuration/network-params.md) - Mesh topology and RLNC settings -- [Docker Environment Variables](./configuration/docker-vars.md) - Complete environment variable reference -- [Performance Tuning](./configuration/tuning.md) - Optimization guidelines +1. **[Installation](./quick-start/installation.md)** - Set up Docker and dependencies +2. **[First Message](./quick-start/first-message.md)** - Publish and receive your first message -## Technical Features +## Deployment Options -- RLNC-enhanced message propagation with reduced bandwidth usage -- libp2p-based networking with built-in security and peer discovery -- Dual access modes: direct P2P and gateway-mediated -- Multiple client interfaces: WebSocket, gRPC, CLI -- Configurable network parameters for different deployment scenarios +Choose your deployment strategy: -## Reference Documentation +### P2P Network Only +- **[P2P-Only Deployment](./deployment/p2p-only.md)** - Deploy just the P2P nodes for direct integration -- [OptimumP2P Technical Overview](../learn/overview/p2p.md) -- [libp2p Specifications](https://github.com/libp2p/specs) -- [GossipSub v1.0 Specification](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/gossipsub-v1.0.md) -- [libp2p PubSub Interface](https://github.com/libp2p/specs/blob/master/pubsub/README.md) +### Gateway + P2P Network +- **[Gateway + P2P Deployment](./deployment/p2p-with-gateway.md)** - Full stack with REST/WebSocket APIs +## Client Integration -## Support +Connect to OptimumP2P using various client methods: -- [Troubleshooting Guide](./troubleshooting.md) -- [Frequently Asked Questions](./faq.md) +- **[mump2p-cli](./clients/)** - Command-line client for testing and automation +- **[gRPC Clients](./clients/)** - Direct gRPC integration examples +- **[REST/WebSocket APIs](./clients/)** - Gateway-based client integration -Begin with the [Installation & Setup](./quick-start/installation.md) guide to start development. \ No newline at end of file +## Configuration + +Fine-tune OptimumP2P for your use case: + +- **[OptimumP2P Configuration](./configuration/optimump2p.md)** - RLNC parameters, mesh topology, and performance tuning +- **[GossipSub Configuration](./configuration/gossipsub.md)** - Standard GossipSub parameters for comparison + +## Performance & Comparison + +Benchmark and compare OptimumP2P: + +- **[Metrics Collection](./clients/)** - Understanding performance metrics +- **[OptimumP2P vs GossipSub](./clients/)** - Performance comparison methodology + +## Docker Images Used + +The hackathon uses these pre-built Docker images: + +- **`getoptimum/p2pnode:latest`** - Core P2P node with OptimumP2P protocol +- **`getoptimum/gateway:latest`** - Gateway service for client APIs + +Both images support protocol switching: +- `NODE_MODE=optimum` - RLNC-enhanced OptimumP2P (recommended) +- `NODE_MODE=gossipsub` - Standard GossipSub for comparison + +## Architecture Deep Dive + +For developers and integrators: + +- **[OptimumP2P Technical Overview](../learn/overview/p2p.md)** - Complete technical specification + +--- + +**Ready to get started?** Begin with **[Installation](./quick-start/installation.md)** or dive into the **[Technical Overview](../learn/overview/p2p.md)**. \ No newline at end of file diff --git a/docs/hackathon/quick-start/first-message.md b/docs/hackathon/quick-start/first-message.md index dde4cbf..e7974ea 100644 --- a/docs/hackathon/quick-start/first-message.md +++ b/docs/hackathon/quick-start/first-message.md @@ -216,8 +216,8 @@ docker-compose down -v --rmi all Now that you've successfully sent messages through OptimumP2P: 1. **Build custom clients**: Explore the [Client Development](../clients/) guides -2. **Optimize configuration**: Learn about [Network Parameters](../configuration/network-params.md) -3. **Deploy to production**: Review [Performance Tuning](../configuration/tuning.md) +2. **Optimize configuration**: Learn about [OptimumP2P Configuration](../configuration/optimump2p.md) +3. **Compare protocols**: Review [GossipSub Configuration](../configuration/gossipsub.md) ## Troubleshooting diff --git a/docs/hackathon/quick-start/installation.md b/docs/hackathon/quick-start/installation.md index 363c6f6..181978f 100644 --- a/docs/hackathon/quick-start/installation.md +++ b/docs/hackathon/quick-start/installation.md @@ -48,48 +48,6 @@ git clone https://github.com/getoptimum/optimum-dev-setup-guide.git cd optimum-dev-setup-guide ``` -## Choose Your Setup - -OptimumP2P can run in two ways: - -1. **P2P Network Only** - Direct peer-to-peer communication (more advanced) -2. **P2P Network with Gateway** - Includes a web-friendly layer (recommended for beginners) - -For your first time, we recommend starting with the **Gateway setup** because: -- It's easier to test and see results -- You can use simple web tools to send messages -- It includes helpful monitoring tools - -## Quick Test - -Let's do a simple test to make sure everything works: - -1. Create a new folder called `optimum-test`: -```bash -mkdir optimum-test -cd optimum-test -``` - -2. Create a simple test file: -```bash -echo "version: '3.8' -services: - test: - image: hello-world" > docker-compose.yml -``` - -3. Run the test: -```bash -docker-compose up -``` - -If you see "Hello from Docker!" message, everything is working correctly. - -4. Clean up: -```bash -docker-compose down -``` - ## What's Next? Now that you have everything installed: From a3c62e8dde9523ccbbd65e52db2e4776c0dfca41 Mon Sep 17 00:00:00 2001 From: swarnabhasinha Date: Fri, 1 Aug 2025 16:04:21 +0530 Subject: [PATCH 12/18] fix:lint --- docs/hackathon/configuration/gossipsub.md | 127 ++- docs/hackathon/configuration/optimump2p.md | 225 +++-- docs/hackathon/deployment/p2p-only.md | 466 +++++++---- docs/hackathon/deployment/p2p-with-gateway.md | 776 ++++++++++++------ docs/hackathon/overview.md | 41 +- docs/hackathon/quick-start/first-message.md | 138 +++- docs/hackathon/quick-start/installation.md | 75 +- 7 files changed, 1271 insertions(+), 577 deletions(-) diff --git a/docs/hackathon/configuration/gossipsub.md b/docs/hackathon/configuration/gossipsub.md index 8363e85..94c73ff 100644 --- a/docs/hackathon/configuration/gossipsub.md +++ b/docs/hackathon/configuration/gossipsub.md @@ -8,10 +8,13 @@ GossipSub is a pubsub protocol designed for decentralized networks that builds o ### Key Concepts -- **Mesh**: Direct connections between peers for message forwarding -- **Gossip**: Metadata exchange about available messages with non-mesh peers -- **Fanout**: Temporary connections for publishing when not subscribed to a topic -- **Degree**: The number of peer connections each node maintains +* **Mesh**: Direct connections between peers for message forwarding + +* **Gossip**: Metadata exchange about available messages with non-mesh peers + +* **Fanout**: Temporary connections for publishing when not subscribed to a topic + +* **Degree**: The number of peer connections each node maintains ## Core GossipSub Parameters @@ -47,48 +50,76 @@ Optimum P2P implements GossipSub with configurable parameters through environmen ### Environment Variables -- **`GOSSIPSUB_PORT`**: Port for GossipSub protocol communication - - Purpose: Network port for GossipSub peer-to-peer communication - - Default: `6060` - - Usage: Internal P2P networking, separate from API ports - - Example: `GOSSIPSUB_PORT=6060` - -- **`GOSSIPSUB_MAX_MSG_SIZE`**: Maximum message size in bytes - - Purpose: Limits individual message size to prevent memory issues - - Default: `1048576` (1MB) - - Usage: Larger values allow bigger payloads but use more memory - - Example: `GOSSIPSUB_MAX_MSG_SIZE=1048576` - -- **`GOSSIPSUB_MESH_TARGET`**: Target number of mesh connections - - Purpose: Ideal number of direct peer connections (corresponds to `D`) - - Default: `6` - - Impact: Higher values increase redundancy but use more bandwidth - - Example: `GOSSIPSUB_MESH_TARGET=6` - -- **`GOSSIPSUB_MESH_MIN`**: Minimum mesh connections - - Purpose: Lower threshold before attempting to add peers (corresponds to `D_low`) - - Default: `4` - - Note: Should be less than `GOSSIPSUB_MESH_TARGET` - - Example: `GOSSIPSUB_MESH_MIN=4` - -- **`GOSSIPSUB_MESH_MAX`**: Maximum mesh connections - - Purpose: Upper threshold before pruning excess peers (corresponds to `D_high`) - - Default: `12` - - Note: Should be greater than `GOSSIPSUB_MESH_TARGET` - - Example: `GOSSIPSUB_MESH_MAX=12` +* **`GOSSIPSUB_PORT`**: Port for GossipSub protocol communication + + * Purpose: Network port for GossipSub peer-to-peer communication + + * Default: `6060` + + * Usage: Internal P2P networking, separate from API ports + + * Example: `GOSSIPSUB_PORT=6060` + +* **`GOSSIPSUB_MAX_MSG_SIZE`**: Maximum message size in bytes + + * Purpose: Limits individual message size to prevent memory issues + + * Default: `1048576` (1MB) + + * Usage: Larger values allow bigger payloads but use more memory + + * Example: `GOSSIPSUB_MAX_MSG_SIZE=1048576` + +* **`GOSSIPSUB_MESH_TARGET`**: Target number of mesh connections + + * Purpose: Ideal number of direct peer connections (corresponds to `D`) + + * Default: `6` + + * Impact: Higher values increase redundancy but use more bandwidth + + * Example: `GOSSIPSUB_MESH_TARGET=6` + +* **`GOSSIPSUB_MESH_MIN`**: Minimum mesh connections + + * Purpose: Lower threshold before attempting to add peers (corresponds to `D_low`) + + * Default: `4` + + * Note: Should be less than `GOSSIPSUB_MESH_TARGET` + + * Example: `GOSSIPSUB_MESH_MIN=4` + +* **`GOSSIPSUB_MESH_MAX`**: Maximum mesh connections + + * Purpose: Upper threshold before pruning excess peers (corresponds to `D_high`) + + * Default: `12` + + * Note: Should be greater than `GOSSIPSUB_MESH_TARGET` + + * Example: `GOSSIPSUB_MESH_MAX=12` ### Configuration Example ```yaml + # docker-compose.yml + services: p2pnode-1: environment: - - GOSSIPSUB_PORT=6060 - - GOSSIPSUB_MAX_MSG_SIZE=1048576 - - GOSSIPSUB_MESH_TARGET=6 - - GOSSIPSUB_MESH_MIN=4 - - GOSSIPSUB_MESH_MAX=12 + +* GOSSIPSUB_PORT=6060 + + * GOSSIPSUB_MAX_MSG_SIZE=1048576 + + * GOSSIPSUB_MESH_TARGET=6 + + * GOSSIPSUB_MESH_MIN=4 + + * GOSSIPSUB_MESH_MAX=12 + ``` ## GossipSub vs Optimum Protocol @@ -96,6 +127,7 @@ services: Optimum P2P runs two protocols simultaneously: 1. **Standard GossipSub**: For baseline pub/sub functionality + 2. **Optimum Protocol**: Enhanced with RLNC (Random Linear Network Coding) Both protocols have their own configuration parameters: @@ -111,14 +143,19 @@ Both protocols have their own configuration parameters: GossipSub uses four types of control messages: -- **GRAFT**: Add peer to mesh (invite to join topic mesh) -- **PRUNE**: Remove peer from mesh (remove from topic mesh) -- **IHAVE**: Announce available messages (gossip metadata) -- **IWANT**: Request specific messages (response to IHAVE) +* **GRAFT**: Add peer to mesh (invite to join topic mesh) +* **PRUNE**: Remove peer from mesh (remove from topic mesh) + +* **IHAVE**: Announce available messages (gossip metadata) + +* **IWANT**: Request specific messages (response to IHAVE) ## References -- [libp2p GossipSub v1.0 Specification](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/gossipsub-v1.0.md) -- [libp2p PubSub Interface](https://github.com/libp2p/specs/blob/master/pubsub/README.md) -- [Optimum P2P Configuration Guide](/docs/hackathon/deployment/p2p-with-gateway.md#p2p-node-configuration) \ No newline at end of file +* [libp2p GossipSub v1.0 Specification](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/gossipsub-v1.0.md) + +* [libp2p PubSub Interface](https://github.com/libp2p/specs/blob/master/pubsub/README.md) + +* [Optimum P2P Configuration Guide](/docs/hackathon/deployment/p2p-with-gateway.md#p2p-node-configuration) + diff --git a/docs/hackathon/configuration/optimump2p.md b/docs/hackathon/configuration/optimump2p.md index 0400543..a3f2970 100644 --- a/docs/hackathon/configuration/optimump2p.md +++ b/docs/hackathon/configuration/optimump2p.md @@ -47,9 +47,12 @@ OptimumP2P configuration can be set via YAML config files or Docker environment Controls how many coded shards each message is divided into for network coding. This is the fundamental parameter that determines RLNC granularity. **Technical Impact**: -- **Higher values**: More coded shards provide better redundancy and fault tolerance but increase computational overhead -- **Lower values**: Fewer coded shards reduce processing time and bandwidth usage but may reduce fault tolerance -- **Network effect**: Directly affects the minimum number of coded shards needed for message reconstruction + +* **Higher values**: More coded shards provide better redundancy and fault tolerance but increase computational overhead + +* **Lower values**: Fewer coded shards reduce processing time and bandwidth usage but may reduce fault tolerance + +* **Network effect**: Directly affects the minimum number of coded shards needed for message reconstruction ### Publisher Shard Multiplier @@ -60,8 +63,10 @@ Controls how many coded shards each message is divided into for network coding. Controls redundancy when publishing messages. Total coded shards created = `rlnc_shard_factor × publisher_shard_multiplier`. **Technical Impact**: -- **Higher values**: More initial coded shards improve delivery guarantees but increase bandwidth usage -- **Lower values**: Fewer coded shards reduce network load but may impact reliability in lossy networks + +* **Higher values**: More initial coded shards improve delivery guarantees but increase bandwidth usage + +* **Lower values**: Fewer coded shards reduce network load but may impact reliability in lossy networks ### Forward Shard Threshold @@ -72,59 +77,99 @@ Controls redundancy when publishing messages. Total coded shards created = `rlnc Determines when nodes forward received coded shards. Nodes forward when they have more than `rlnc_shard_factor × threshold` coded shards. **Technical Impact**: -- **Higher values** (0.8-0.9): More reliable forwarding, increased latency -- **Lower values** (0.5-0.6): Faster propagation, reduced latency, potential reliability trade-offs + +* **Higher values** (0.8-0.9): More reliable forwarding, increased latency + +* **Lower values** (0.5-0.6): Faster propagation, reduced latency, potential reliability trade-offs ## Docker Configuration Examples ### OptimumP2P Mode (Enhanced) + ```yaml + environment: - - NODE_MODE=optimum - - OPTIMUM_SHARD_FACTOR=4 - - OPTIMUM_SHARD_MULT=1.5 - - OPTIMUM_THRESHOLD=0.75 - - OPTIMUM_MESH_TARGET=6 - - OPTIMUM_MESH_MIN=3 - - OPTIMUM_MESH_MAX=12 + +* NODE_MODE=optimum + + * OPTIMUM_SHARD_FACTOR=4 + + * OPTIMUM_SHARD_MULT=1.5 + + * OPTIMUM_THRESHOLD=0.75 + + * OPTIMUM_MESH_TARGET=6 + + * OPTIMUM_MESH_MIN=3 + + * OPTIMUM_MESH_MAX=12 + ``` ### GossipSub Mode (Baseline) + ```yaml + environment: - - NODE_MODE=gossipsub - - GOSSIPSUB_MESH_TARGET=6 - - GOSSIPSUB_MESH_MIN=4 - - GOSSIPSUB_MESH_MAX=12 + +* NODE_MODE=gossipsub + + * GOSSIPSUB_MESH_TARGET=6 + + * GOSSIPSUB_MESH_MIN=4 + + * GOSSIPSUB_MESH_MAX=12 + ``` ## Performance Tuning ### High Throughput Setup + Optimized for maximum message throughput: + ```yaml -- OPTIMUM_SHARD_FACTOR=8 -- OPTIMUM_SHARD_MULT=2.0 -- OPTIMUM_THRESHOLD=0.5 -- OPTIMUM_MESH_TARGET=8 + +* OPTIMUM_SHARD_FACTOR=8 + +* OPTIMUM_SHARD_MULT=2.0 + +* OPTIMUM_THRESHOLD=0.5 + +* OPTIMUM_MESH_TARGET=8 + ``` ### Low Latency Setup + Optimized for minimum delivery latency: + ```yaml -- OPTIMUM_SHARD_FACTOR=4 -- OPTIMUM_SHARD_MULT=1.2 -- OPTIMUM_THRESHOLD=0.6 -- OPTIMUM_MESH_TARGET=6 + +* OPTIMUM_SHARD_FACTOR=4 + +* OPTIMUM_SHARD_MULT=1.2 + +* OPTIMUM_THRESHOLD=0.6 + +* OPTIMUM_MESH_TARGET=6 + ``` ### High Reliability Setup + Optimized for maximum fault tolerance: + ```yaml -- OPTIMUM_SHARD_FACTOR=16 -- OPTIMUM_SHARD_MULT=2.5 -- OPTIMUM_THRESHOLD=0.8 -- OPTIMUM_MESH_TARGET=10 + +* OPTIMUM_SHARD_FACTOR=16 + +* OPTIMUM_SHARD_MULT=2.5 + +* OPTIMUM_THRESHOLD=0.8 + +* OPTIMUM_MESH_TARGET=10 + ``` ## Configuration File Format @@ -132,33 +177,44 @@ Optimized for maximum fault tolerance: Sample YAML configuration matching the actual config structure: ```yaml + # === General App Settings === + app_port: 23422 cluster_id: "production_cluster" file_storage_directory: /tmp silent_mode_enabled: false # === Protocol Settings === + enable_gossipsub: false enable_optimum_p2p: true # === PubSub Mesh Settings === + mesh_degree_target: 6 mesh_degree_min: 5 mesh_degree_max: 12 rlnc_shard_factor: 32 # number of coded shards each message is divided into # === Message Generation === + random_message_size_bytes: 3145728 # 3MB + publisher_shard_multiplier: 1.5 # coded shards multiplier for publishing + forward_shard_threshold: 0.75 # forward threshold for coded shards # === Bootstrap Nodes === + bootstrap_nodes_optimum_p2p: - - /ip4/127.0.0.1/tcp/10000/p2p/12D3KooWExample + +* /ip4/127.0.0.1/tcp/10000/p2p/12D3KooWExample bootstrap_nodes_gossipsub: - - /ip4/127.0.0.1/tcp/10000/p2p/12D3KooWExample + +* /ip4/127.0.0.1/tcp/10000/p2p/12D3KooWExample + ``` ## Protocol Mode Switching @@ -166,81 +222,124 @@ bootstrap_nodes_gossipsub: OptimumP2P supports running both protocols for comparison: **OptimumP2P Mode** (`NODE_MODE=optimum`): -- Uses RLNC with coded shards for enhanced propagation -- Provides early forwarding capabilities -- Better bandwidth efficiency through network coding -- Enhanced fault tolerance via coded shard redundancy + +* Uses RLNC with coded shards for enhanced propagation + +* Provides early forwarding capabilities + +* Better bandwidth efficiency through network coding + +* Enhanced fault tolerance via coded shard redundancy **GossipSub Mode** (`NODE_MODE=gossipsub`): -- Standard libp2p GossipSub implementation -- Direct message forwarding without coding -- Lower computational overhead -- Baseline for performance comparison + +* Standard libp2p GossipSub implementation + +* Direct message forwarding without coding + +* Lower computational overhead + +* Baseline for performance comparison ## Monitoring Configuration Verify your configuration is applied correctly: ```bash + # Check applied configuration + curl http://localhost:9090/config # Monitor mesh formation and peer connections + curl http://localhost:9090/debug/peers # Check protocol mode in logs + docker logs p2pnode-1 | grep -E "(optimum|gossipsub|coded.*shard)" # Monitor coded shard processing + docker logs p2pnode-1 | grep -E "(shard|forward|decode)" + ``` ## Configuration Constraints **Enforced by code**: -- `mesh_degree_min <= mesh_degree_target <= mesh_degree_max` -- `random_message_size_bytes > 0` -- `cluster_id` must not be empty or "sample_cluster" + +* `mesh_degree_min <= mesh_degree_target <= mesh_degree_max` + +* `random_message_size_bytes > 0` + +* `cluster_id` must not be empty or "sample_cluster" **Recommended best practices**: -- `forward_shard_threshold` between 0.0 and 1.0 (values outside this range may cause unexpected behavior) -- `rlnc_shard_factor > 0` (value of 0 disables RLNC functionality) -- `publisher_shard_multiplier >= 1.0` (values < 1.0 reduce redundancy) + +* `forward_shard_threshold` between 0.0 and 1.0 (values outside this range may cause unexpected behavior) + +* `rlnc_shard_factor > 0` (value of 0 disables RLNC functionality) + +* `publisher_shard_multiplier >= 1.0` (values < 1.0 reduce redundancy) ## Complete Docker Compose Example ```yaml + services: p2pnode-1: image: getoptimum/p2pnode:latest environment: # Protocol selection - - NODE_MODE=optimum - - CLUSTER_ID=p2pnode-1 + +* NODE_MODE=optimum + + * CLUSTER_ID=p2pnode-1 + # RLNC coded shard parameters - - OPTIMUM_SHARD_FACTOR=4 - - OPTIMUM_SHARD_MULT=1.5 - - OPTIMUM_THRESHOLD=0.75 + +* OPTIMUM_SHARD_FACTOR=4 + + * OPTIMUM_SHARD_MULT=1.5 + + * OPTIMUM_THRESHOLD=0.75 + # Mesh topology - - OPTIMUM_MESH_TARGET=6 - - OPTIMUM_MESH_MIN=3 - - OPTIMUM_MESH_MAX=12 + +* OPTIMUM_MESH_TARGET=6 + + * OPTIMUM_MESH_MIN=3 + + * OPTIMUM_MESH_MAX=12 + # Network settings - - OPTIMUM_PORT=7070 - - OPTIMUM_MAX_MSG_SIZE=1048576 - - SIDECAR_PORT=33212 - - API_PORT=9090 + +* OPTIMUM_PORT=7070 + + * OPTIMUM_MAX_MSG_SIZE=1048576 + + * SIDECAR_PORT=33212 + + * API_PORT=9090 + # Bootstrap configuration - - BOOTSTRAP_PEERS=/ip4/172.28.0.12/tcp/7070/p2p/${BOOTSTRAP_PEER_ID} + +* BOOTSTRAP_PEERS=/ip4/172.28.0.12/tcp/7070/p2p/${BOOTSTRAP_PEER_ID} + ``` ## See Also -- **[GossipSub Configuration](./gossipsub.md)** - Standard protocol parameters for comparison -- **[P2P-Only Deployment](../deployment/p2p-only.md)** - Complete setup with configuration -- **[Gateway + P2P Deployment](../deployment/p2p-with-gateway.md)** - Full stack configuration -- **[OptimumP2P Technical Overview](../../learn/overview/p2p.md)** - Protocol fundamentals and RLNC details \ No newline at end of file +* **[GossipSub Configuration](./gossipsub.md)** - Standard protocol parameters for comparison + +* **[P2P-Only Deployment](../deployment/p2p-only.md)** - Complete setup with configuration + +* **[Gateway + P2P Deployment](../deployment/p2p-with-gateway.md)** - Full stack configuration + +* **[OptimumP2P Technical Overview](../../learn/overview/p2p.md)** - Protocol fundamentals and RLNC details + diff --git a/docs/hackathon/deployment/p2p-only.md b/docs/hackathon/deployment/p2p-only.md index f506a1b..888325a 100644 --- a/docs/hackathon/deployment/p2p-only.md +++ b/docs/hackathon/deployment/p2p-only.md @@ -2,237 +2,372 @@ This guide covers deploying a standalone OptimumP2P network without gateway intermediaries. In this configuration, clients connect directly to P2P nodes using gRPC sidecar connections, providing maximum performance and protocol flexibility. - -### Network Topology +## Network Topology The P2P network forms a mesh topology where each node maintains connections to a subset of peers based on the configured mesh parameters: -- **Mesh Target (`OPTIMUM_MESH_TARGET`)**: Ideal number of peers per topic -- **Mesh Range (`OPTIMUM_MESH_MIN` to `OPTIMUM_MESH_MAX`)**: Acceptable peer count bounds -- **Bootstrap Nodes**: Initial discovery points for new nodes joining the network +* **Mesh Target (`OPTIMUM_MESH_TARGET`)**: Ideal number of peers per topic + +* **Mesh Range (`OPTIMUM_MESH_MIN` to `OPTIMUM_MESH_MAX`)**: Acceptable peer count bounds +* **Bootstrap Nodes**: Initial discovery points for new nodes joining the network ## Deployment Configuration ```yaml + services: p2pnode-1: image: 'getoptimum/p2pnode:latest' platform: linux/amd64 environment: - - LOG_LEVEL=debug - - CLUSTER_ID=p2pnode-1 - - NODE_MODE=optimum - - SIDECAR_PORT=33212 - - API_PORT=9090 - - IDENTITY_DIR=/identity - - OPTIMUM_PORT=7070 - - OPTIMUM_MAX_MSG_SIZE=1048576 - - OPTIMUM_MESH_TARGET=6 - - OPTIMUM_MESH_MIN=3 - - OPTIMUM_MESH_MAX=12 - - OPTIMUM_SHARD_FACTOR=4 - - OPTIMUM_SHARD_MULT=1.5 - - OPTIMUM_THRESHOLD=0.75 - - BOOTSTRAP_PEERS=/ip4/172.28.0.12/tcp/7070/p2p/${BOOTSTRAP_PEER_ID} + +* LOG_LEVEL=debug + + * CLUSTER_ID=p2pnode-1 + + * NODE_MODE=optimum + + * SIDECAR_PORT=33212 + + * API_PORT=9090 + + * IDENTITY_DIR=/identity + + * OPTIMUM_PORT=7070 + + * OPTIMUM_MAX_MSG_SIZE=1048576 + + * OPTIMUM_MESH_TARGET=6 + + * OPTIMUM_MESH_MIN=3 + + * OPTIMUM_MESH_MAX=12 + + * OPTIMUM_SHARD_FACTOR=4 + + * OPTIMUM_SHARD_MULT=1.5 + + * OPTIMUM_THRESHOLD=0.75 + + * BOOTSTRAP_PEERS=/ip4/172.28.0.12/tcp/7070/p2p/${BOOTSTRAP_PEER_ID} + networks: optimum-network: ipv4_address: 172.28.0.12 ports: - - "33221:33212" # gRPC sidecar - - "7071:7070" # OptimumP2P - - "9091:9090" # API + +* "33221:33212" # gRPC sidecar + + * "7071:7070" # OptimumP2P + + * "9091:9090" # API + volumes: - - ./identity:/identity + +* ./identity:/identity p2pnode-2: image: 'getoptimum/p2pnode:latest' platform: linux/amd64 environment: - - LOG_LEVEL=debug - - CLUSTER_ID=p2pnode-2 - - NODE_MODE=optimum - - SIDECAR_PORT=33212 - - API_PORT=9090 - - IDENTITY_DIR=/identity - - OPTIMUM_PORT=7070 - - OPTIMUM_MAX_MSG_SIZE=1048576 - - OPTIMUM_MESH_TARGET=6 - - OPTIMUM_MESH_MIN=3 - - OPTIMUM_MESH_MAX=12 - - OPTIMUM_SHARD_FACTOR=4 - - OPTIMUM_SHARD_MULT=1.5 - - OPTIMUM_THRESHOLD=0.75 - - BOOTSTRAP_PEERS=/ip4/172.28.0.12/tcp/7070/p2p/${BOOTSTRAP_PEER_ID} + +* LOG_LEVEL=debug + + * CLUSTER_ID=p2pnode-2 + + * NODE_MODE=optimum + + * SIDECAR_PORT=33212 + + * API_PORT=9090 + + * IDENTITY_DIR=/identity + + * OPTIMUM_PORT=7070 + + * OPTIMUM_MAX_MSG_SIZE=1048576 + + * OPTIMUM_MESH_TARGET=6 + + * OPTIMUM_MESH_MIN=3 + + * OPTIMUM_MESH_MAX=12 + + * OPTIMUM_SHARD_FACTOR=4 + + * OPTIMUM_SHARD_MULT=1.5 + + * OPTIMUM_THRESHOLD=0.75 + + * BOOTSTRAP_PEERS=/ip4/172.28.0.12/tcp/7070/p2p/${BOOTSTRAP_PEER_ID} + networks: optimum-network: ipv4_address: 172.28.0.13 ports: - - "33222:33212" - - "7072:7070" - - "9092:9090" + +* "33222:33212" + + * "7072:7070" + + * "9092:9090" networks: optimum-network: driver: bridge ipam: config: - - subnet: 172.28.0.0/16 + +* subnet: 172.28.0.0/16 + ``` ## Environment Variables ### Core Configuration -- **`NODE_MODE`**: P2P protocol implementation mode - - Purpose: Selects the underlying pub/sub protocol - - Values: `optimum` (RLNC-enhanced) or `gossipsub` (standard libp2p) - - Default: `optimum` - - Usage: Use `optimum` for better performance with RLNC coding - - Note: All nodes in network should use same mode for compatibility - -- **`CLUSTER_ID`**: Unique identifier for each P2P node - - Purpose: Distinguishes nodes in logs, metrics, and network topology - - Usage: Should be unique across all P2P nodes in deployment - - Format: Alphanumeric string, typically `p2pnode-1`, `p2pnode-2`, etc. - - Required: Yes, no default value - -- **`LOG_LEVEL`**: Logging verbosity level - - Purpose: Controls the amount and detail of log output - - Values: `debug`, `info`, `warn`, `error` - - Default: `info` - - Usage Guide: - - `debug`: Most verbose, includes detailed P2P protocol events (development) - - `info`: Standard level with operational information - - `warn`: Only warnings and errors (quiet operation) - - `error`: Only error messages (minimal logging) +* **`NODE_MODE`**: P2P protocol implementation mode + + * Purpose: Selects the underlying pub/sub protocol + + * Values: `optimum` (RLNC-enhanced) or `gossipsub` (standard libp2p) + + * Default: `optimum` + + * Usage: Use `optimum` for better performance with RLNC coding + + * Note: All nodes in network should use same mode for compatibility + +* **`CLUSTER_ID`**: Unique identifier for each P2P node + + * Purpose: Distinguishes nodes in logs, metrics, and network topology + + * Usage: Should be unique across all P2P nodes in deployment + + * Format: Alphanumeric string, typically `p2pnode-1`, `p2pnode-2`, etc. + + * Required: Yes, no default value + +* **`LOG_LEVEL`**: Logging verbosity level + + * Purpose: Controls the amount and detail of log output + + * Values: `debug`, `info`, `warn`, `error` + + * Default: `info` + + * Usage Guide: + + * `debug`: Most verbose, includes detailed P2P protocol events (development) + + * `info`: Standard level with operational information + + * `warn`: Only warnings and errors (quiet operation) + + * `error`: Only error messages (minimal logging) ### Port Configuration -- **`SIDECAR_PORT`**: gRPC bidirectional communication port - - Purpose: Port where clients connect directly to interact with P2P node - - Default: `33212` - - Range: Any available port - - Usage: Must be accessible from client applications for direct P2P access - - Network: Used for client-to-node gRPC communication - -- **`API_PORT`**: HTTP monitoring and management API port - - Purpose: Exposes REST endpoints for health checks, node state, and metrics - - Default: `9090` - - Range: Any available port - - Endpoints: `/api/v1/health`, `/api/v1/node-state`, `/api/v1/version` - - Usage: Used for operational monitoring and debugging - -- **`OPTIMUM_PORT`**: P2P protocol communication port - - Purpose: Port for peer-to-peer communication between nodes - - Default: `7070` - - Range: Any available port - - Usage: Must be accessible between all P2P nodes in the mesh - - Network: Used for inter-node OptimumP2P protocol communication +* **`SIDECAR_PORT`**: gRPC bidirectional communication port + + * Purpose: Port where clients connect directly to interact with P2P node + + * Default: `33212` + + * Range: Any available port + + * Usage: Must be accessible from client applications for direct P2P access + + * Network: Used for client-to-node gRPC communication + +* **`API_PORT`**: HTTP monitoring and management API port + + * Purpose: Exposes REST endpoints for health checks, node state, and metrics + + * Default: `9090` + + * Range: Any available port + + * Endpoints: `/api/v1/health`, `/api/v1/node-state`, `/api/v1/version` + + * Usage: Used for operational monitoring and debugging + +* **`OPTIMUM_PORT`**: P2P protocol communication port + + * Purpose: Port for peer-to-peer communication between nodes + + * Default: `7070` + + * Range: Any available port + + * Usage: Must be accessible between all P2P nodes in the mesh + + * Network: Used for inter-node OptimumP2P protocol communication ### RLNC Parameters -- **`OPTIMUM_MAX_MSG_SIZE`**: Maximum message size in bytes - - Purpose: Limits individual message size to prevent memory issues - - Default: `1048576` (1MB) - - Usage: Larger values allow bigger payloads but use more memory/bandwidth +* **`OPTIMUM_MAX_MSG_SIZE`**: Maximum message size in bytes + + * Purpose: Limits individual message size to prevent memory issues + + * Default: `1048576` (1MB) + + * Usage: Larger values allow bigger payloads but use more memory/bandwidth + -- **`OPTIMUM_SHARD_FACTOR`**: Number of coded shards per message - - Purpose: Controls how many pieces each message is split into for RLNC - - Default: `4` - - Impact: Higher values increase redundancy and fault tolerance but use more bandwidth - - Note: Must be non-zero to enable RLNC functionality - -- **`OPTIMUM_SHARD_MULT`**: Shard size redundancy multiplier - - Purpose: Controls redundancy factor for error recovery - - Default: `1.5` - - Impact: Higher values improve error recovery but increase bandwidth usage - - Note: Values >1.0 add redundancy (e.g., 1.5 = 50% redundancy) +* **`OPTIMUM_SHARD_FACTOR`**: Number of coded shards per message + + * Purpose: Controls how many pieces each message is split into for RLNC + + * Default: `4` + + * Impact: Higher values increase redundancy and fault tolerance but use more bandwidth + + * Note: Must be non-zero to enable RLNC functionality + +* **`OPTIMUM_SHARD_MULT`**: Shard size redundancy multiplier + + * Purpose: Controls redundancy factor for error recovery + + * Default: `1.5` + + * Impact: Higher values improve error recovery but increase bandwidth usage + + * Note: Values >1.0 add redundancy (e.g., 1.5 = 50% redundancy) + -- **`OPTIMUM_THRESHOLD`**: Forward/decode threshold ratio - - Purpose: Fraction of shards needed before forwarding or decoding message - - Default: `0.75` (75%) - - Validation: Must be between 0 and 1 (exclusive of 0, inclusive of 1) - - Impact: Critical for network performance tuning - - Note: Lower values reduce latency but may reduce reliability; higher values improve reliability but increase latency +* **`OPTIMUM_THRESHOLD`**: Forward/decode threshold ratio + + * Purpose: Fraction of shards needed before forwarding or decoding message + + * Default: `0.75` (75%) + + * Validation: Must be between 0 and 1 (exclusive of 0, inclusive of 1) + + * Impact: Critical for network performance tuning + + * Note: Lower values reduce latency but may reduce reliability; higher values improve reliability but increase latency ### Mesh Topology Configuration -- **`OPTIMUM_MESH_TARGET`**: Target number of peer connections - - Purpose: Ideal number of peers each node connects to in the mesh - - Default: `6` - - Range: 3-50 (typically 4-12 for most deployments) - - Impact: Higher values increase redundancy and fault tolerance but use more resources +* **`OPTIMUM_MESH_TARGET`**: Target number of peer connections + + * Purpose: Ideal number of peers each node connects to in the mesh + + * Default: `6` + + * Range: 3-50 (typically 4-12 for most deployments) + + * Impact: Higher values increase redundancy and fault tolerance but use more resources +* **`OPTIMUM_MESH_MIN`**: Minimum mesh peer connections -- **`OPTIMUM_MESH_MIN`**: Minimum mesh peer connections - - Purpose: Minimum connections before attempting to add more peers - - Default: `4` - - Note: Should be less than MESH_TARGET - - Impact: Lower values reduce fault tolerance, higher values increase resource usage - - Usage: Prevents network partitioning by maintaining minimum connectivity + * Purpose: Minimum connections before attempting to add more peers -- **`OPTIMUM_MESH_MAX`**: Maximum mesh peer connections - - Purpose: Maximum connections before pruning excess peers - - Default: `12` - - Note: Should be greater than MESH_TARGET - - Impact: Prevents resource exhaustion while maintaining network connectivity - - Usage: Sets upper bound to control memory and bandwidth usage + * Default: `4` + + * Note: Should be less than MESH_TARGET + + * Impact: Lower values reduce fault tolerance, higher values increase resource usage + + * Usage: Prevents network partitioning by maintaining minimum connectivity + +* **`OPTIMUM_MESH_MAX`**: Maximum mesh peer connections + + * Purpose: Maximum connections before pruning excess peers + + * Default: `12` + + * Note: Should be greater than MESH_TARGET + + * Impact: Prevents resource exhaustion while maintaining network connectivity + + * Usage: Sets upper bound to control memory and bandwidth usage ### Bootstrap and Identity Configuration -- **`BOOTSTRAP_PEERS`**: Initial peer discovery addresses - - Purpose: List of known peers for joining the mesh network - - Format: `/ip4//tcp//p2p/` - - Example: `/ip4/172.28.0.12/tcp/7070/p2p/12D3KooW...` - - Usage: New nodes use these to discover and join the network - - Multiple: Can specify multiple peers separated by commas - - Note: At least one bootstrap peer must be accessible for network joining - -- **`IDENTITY_DIR`**: Node cryptographic identity directory - - Purpose: Directory containing node's P2P identity key (p2p.key) - - Default: `/identity` - - Usage: Only needed for bootstrap nodes, other nodes auto-generate identity - - Security: Contains private key material, should be properly secured - - Permissions: Ensure proper file permissions (600) for security +* **`BOOTSTRAP_PEERS`**: Initial peer discovery addresses + + * Purpose: List of known peers for joining the mesh network + + * Format: `/ip4//tcp//p2p/` + + * Example: `/ip4/172.28.0.12/tcp/7070/p2p/12D3KooW...` + + * Usage: New nodes use these to discover and join the network + + * Multiple: Can specify multiple peers separated by commas + + * Note: At least one bootstrap peer must be accessible for network joining + +* **`IDENTITY_DIR`**: Node cryptographic identity directory + + * Purpose: Directory containing node's P2P identity key (p2p.key) + + * Default: `/identity` + + * Usage: Only needed for bootstrap nodes, other nodes auto-generate identity + + * Security: Contains private key material, should be properly secured + + * Permissions: Ensure proper file permissions (600) for security ### Configuration Notes All parameter values can be adjusted based on specific use case requirements. TWhen modifying parameters: -- Higher OPTIMUM_THRESHOLD values improve reliability but increase latency -- Higher OPTIMUM_MESH_TARGET values improve fault tolerance but use more resources -- Higher OPTIMUM_SHARD_FACTOR values improve redundancy but increase bandwidth usage -- OPTIMUM_MESH_MIN should be less than OPTIMUM_MESH_TARGET -- OPTIMUM_MESH_MAX should be greater than OPTIMUM_MESH_TARGET +* Higher OPTIMUM_THRESHOLD values improve reliability but increase latency + +* Higher OPTIMUM_MESH_TARGET values improve fault tolerance but use more resources + +* Higher OPTIMUM_SHARD_FACTOR values improve redundancy but increase bandwidth usage + +* OPTIMUM_MESH_MIN should be less than OPTIMUM_MESH_TARGET + +* OPTIMUM_MESH_MAX should be greater than OPTIMUM_MESH_TARGET ## Starting the Network 1. Generate peer identity (optional, will auto-generate if not present): + ```bash + # Create identity directory + mkdir -p identity # Generate peer key + docker run --rm -v $(pwd)/identity:/identity getoptimum/p2pnode:latest generate-key + ``` -2. Set bootstrap peer ID: +1. Set bootstrap peer ID: + ```bash + export BOOTSTRAP_PEER_ID=$(docker run --rm -v $(pwd)/identity:/identity getoptimum/p2pnode:latest peer-id) + ``` -3. Start the network: +1. Start the network: + ```bash + docker-compose up -d + ``` -4. Verify nodes are running: +1. Verify nodes are running: + ```bash + docker-compose ps docker-compose logs p2pnode-1 + ``` ## Client Connection @@ -240,50 +375,73 @@ docker-compose logs p2pnode-1 Clients connect directly to P2P nodes via gRPC sidecar: ```go + conn, err := grpc.Dial("localhost:33221", grpc.WithInsecure()) if err != nil { log.Fatal(err) } client := pb.NewP2PStreamClient(conn) + ``` ## Network Scaling To add more nodes, replicate the service definition with: -- Unique `CLUSTER_ID` -- Unique IP address in the network -- Unique port mappings -- Same `BOOTSTRAP_PEERS` configuration + +* Unique `CLUSTER_ID` + +* Unique IP address in the network + +* Unique port mappings + +* Same `BOOTSTRAP_PEERS` configuration ## Monitoring Access node metrics and status: -- Node 1: http://localhost:9091 -- Node 2: http://localhost:9092 + +* Node 1: http://localhost:9091 + +* Node 2: http://localhost:9092 ## Troubleshooting ### Peer Discovery Issues + Check bootstrap peer configuration and network connectivity: + ```bash + docker-compose exec p2pnode-1 ping p2pnode-2 docker-compose logs p2pnode-1 | grep "bootstrap" + ``` ### Mesh Formation + Verify peers are discovering each other: + ```bash + curl http://localhost:9091/debug/peers + ``` ### Message Flow + Check message propagation in logs: + ```bash + docker-compose logs -f | grep "message" + ``` ## See Also -- [GossipSub Configuration Guide](/docs/hackathon/configuration/gossipsub.md) - Detailed explanation of underlying pub/sub protocol parameters -- [P2P with Gateway Deployment](/docs/hackathon/deployment/p2p-with-gateway.md) - Alternative deployment with gateway layer -- [First Message Tutorial](/docs/hackathon/quick-start/first-message.md) - Step-by-step getting started guide \ No newline at end of file +* [GossipSub Configuration Guide](/docs/hackathon/configuration/gossipsub.md) - Detailed explanation of underlying pub/sub protocol parameters + +* [P2P with Gateway Deployment](/docs/hackathon/deployment/p2p-with-gateway.md) - Alternative deployment with gateway layer + +* [First Message Tutorial](/docs/hackathon/quick-start/first-message.md) - Step-by-step getting started guide + diff --git a/docs/hackathon/deployment/p2p-with-gateway.md b/docs/hackathon/deployment/p2p-with-gateway.md index 69de61b..df33331 100644 --- a/docs/hackathon/deployment/p2p-with-gateway.md +++ b/docs/hackathon/deployment/p2p-with-gateway.md @@ -2,397 +2,633 @@ This guide covers deploying OptimumP2P with gateway services that provide HTTP/WebSocket/gRPC APIs for client applications. The gateway acts as a bridge between traditional client-server applications and the OptimumP2P network. - -### Component Responsibilities +## Component Responsibilities **Gateway Layer:** -- Protocol translation (HTTP/WebSocket/gRPC ↔ libp2p) -- Client session management -- Load balancing across P2P nodes -- Rate limiting and authentication -- API versioning and compatibility + +* Protocol translation (HTTP/WebSocket/gRPC ↔ libp2p) + +* Client session management + +* Load balancing across P2P nodes + +* Rate limiting and authentication + +* API versioning and compatibility **P2P Network Layer:** -- RLNC message encoding/decoding -- Mesh topology maintenance -- Peer discovery and routing -- Message propagation via GossipSub -- Network resilience and fault tolerance +* RLNC message encoding/decoding + +* Mesh topology maintenance + +* Peer discovery and routing + +* Message propagation via GossipSub + +* Network resilience and fault tolerance ## Deployment Configuration Complete setup with gateways and P2P nodes: ```yaml + services: gateway-1: image: 'getoptimum/gateway:latest' platform: linux/amd64 ports: - - "8081:8080" # HTTP/WebSocket - - "50051:50051" # gRPC + +* "8081:8080" # HTTP/WebSocket + + * "50051:50051" # gRPC + environment: - - GATEWAY_PORT=:8080 - - CLUSTER_ID=gateway-1 - - ENABLE_AUTH=false - - LOG_LEVEL=debug - - P2P_NODES=p2pnode-1:33212,p2pnode-2:33212,p2pnode-3:33212,p2pnode-4:33212 + +* GATEWAY_PORT=:8080 + + * CLUSTER_ID=gateway-1 + + * ENABLE_AUTH=false + + * LOG_LEVEL=debug + + * P2P_NODES=p2pnode-1:33212,p2pnode-2:33212,p2pnode-3:33212,p2pnode-4:33212 + networks: optimum-network: ipv4_address: 172.28.0.10 depends_on: - - p2pnode-1 - - p2pnode-2 - - p2pnode-3 - - p2pnode-4 + +* p2pnode-1 + + * p2pnode-2 + + * p2pnode-3 + + * p2pnode-4 gateway-2: image: 'getoptimum/gateway:latest' platform: linux/amd64 ports: - - "8082:8080" - - "50052:50051" + +* "8082:8080" + + * "50052:50051" + environment: - - GATEWAY_PORT=:8080 - - CLUSTER_ID=gateway-2 - - ENABLE_AUTH=false - - LOG_LEVEL=debug - - P2P_NODES=p2pnode-1:33212,p2pnode-2:33212,p2pnode-3:33212,p2pnode-4:33212 + +* GATEWAY_PORT=:8080 + + * CLUSTER_ID=gateway-2 + + * ENABLE_AUTH=false + + * LOG_LEVEL=debug + + * P2P_NODES=p2pnode-1:33212,p2pnode-2:33212,p2pnode-3:33212,p2pnode-4:33212 + networks: optimum-network: ipv4_address: 172.28.0.11 depends_on: - - p2pnode-1 - - p2pnode-2 - - p2pnode-3 - - p2pnode-4 + +* p2pnode-1 + + * p2pnode-2 + + * p2pnode-3 + + * p2pnode-4 p2pnode-1: image: 'getoptimum/p2pnode:latest' platform: linux/amd64 volumes: - - ./identity:/identity + +* ./identity:/identity + environment: - - LOG_LEVEL=debug - - CLUSTER_ID=p2pnode-1 - - NODE_MODE=optimum - - SIDECAR_PORT=33212 - - API_PORT=9090 - - IDENTITY_DIR=/identity - - OPTIMUM_PORT=7070 - - OPTIMUM_MAX_MSG_SIZE=1048576 - - OPTIMUM_MESH_TARGET=6 - - OPTIMUM_MESH_MIN=3 - - OPTIMUM_MESH_MAX=12 - - OPTIMUM_SHARD_FACTOR=4 - - OPTIMUM_SHARD_MULT=1.5 - - OPTIMUM_THRESHOLD=0.75 - - BOOTSTRAP_PEERS=/ip4/172.28.0.12/tcp/7070/p2p/${BOOTSTRAP_PEER_ID} + +* LOG_LEVEL=debug + + * CLUSTER_ID=p2pnode-1 + + * NODE_MODE=optimum + + * SIDECAR_PORT=33212 + + * API_PORT=9090 + + * IDENTITY_DIR=/identity + + * OPTIMUM_PORT=7070 + + * OPTIMUM_MAX_MSG_SIZE=1048576 + + * OPTIMUM_MESH_TARGET=6 + + * OPTIMUM_MESH_MIN=3 + + * OPTIMUM_MESH_MAX=12 + + * OPTIMUM_SHARD_FACTOR=4 + + * OPTIMUM_SHARD_MULT=1.5 + + * OPTIMUM_THRESHOLD=0.75 + + * BOOTSTRAP_PEERS=/ip4/172.28.0.12/tcp/7070/p2p/${BOOTSTRAP_PEER_ID} + networks: optimum-network: ipv4_address: 172.28.0.12 ports: - - "33221:33212" - - "7071:7070" - - "9091:9090" + +* "33221:33212" + + * "7071:7070" + + * "9091:9090" p2pnode-2: image: 'getoptimum/p2pnode:latest' platform: linux/amd64 environment: - - LOG_LEVEL=debug - - CLUSTER_ID=p2pnode-2 - - NODE_MODE=optimum - - SIDECAR_PORT=33212 - - API_PORT=9090 - - IDENTITY_DIR=/identity - - OPTIMUM_PORT=7070 - - OPTIMUM_MAX_MSG_SIZE=1048576 - - OPTIMUM_MESH_TARGET=6 - - OPTIMUM_MESH_MIN=3 - - OPTIMUM_MESH_MAX=12 - - OPTIMUM_SHARD_FACTOR=4 - - OPTIMUM_SHARD_MULT=1.5 - - OPTIMUM_THRESHOLD=0.75 - - BOOTSTRAP_PEERS=/ip4/172.28.0.12/tcp/7070/p2p/${BOOTSTRAP_PEER_ID} + +* LOG_LEVEL=debug + + * CLUSTER_ID=p2pnode-2 + + * NODE_MODE=optimum + + * SIDECAR_PORT=33212 + + * API_PORT=9090 + + * IDENTITY_DIR=/identity + + * OPTIMUM_PORT=7070 + + * OPTIMUM_MAX_MSG_SIZE=1048576 + + * OPTIMUM_MESH_TARGET=6 + + * OPTIMUM_MESH_MIN=3 + + * OPTIMUM_MESH_MAX=12 + + * OPTIMUM_SHARD_FACTOR=4 + + * OPTIMUM_SHARD_MULT=1.5 + + * OPTIMUM_THRESHOLD=0.75 + + * BOOTSTRAP_PEERS=/ip4/172.28.0.12/tcp/7070/p2p/${BOOTSTRAP_PEER_ID} + networks: optimum-network: ipv4_address: 172.28.0.13 ports: - - "33222:33212" - - "7072:7070" - - "9092:9090" + +* "33222:33212" + + * "7072:7070" + + * "9092:9090" p2pnode-3: image: 'getoptimum/p2pnode:latest' platform: linux/amd64 environment: - - LOG_LEVEL=debug - - CLUSTER_ID=p2pnode-3 - - NODE_MODE=optimum - - SIDECAR_PORT=33212 - - API_PORT=9090 - - IDENTITY_DIR=/identity - - OPTIMUM_PORT=7070 - - OPTIMUM_MAX_MSG_SIZE=1048576 - - OPTIMUM_MESH_TARGET=6 - - OPTIMUM_MESH_MIN=3 - - OPTIMUM_MESH_MAX=12 - - OPTIMUM_SHARD_FACTOR=4 - - OPTIMUM_SHARD_MULT=1.5 - - OPTIMUM_THRESHOLD=0.75 - - BOOTSTRAP_PEERS=/ip4/172.28.0.12/tcp/7070/p2p/${BOOTSTRAP_PEER_ID} + +* LOG_LEVEL=debug + + * CLUSTER_ID=p2pnode-3 + + * NODE_MODE=optimum + + * SIDECAR_PORT=33212 + + * API_PORT=9090 + + * IDENTITY_DIR=/identity + + * OPTIMUM_PORT=7070 + + * OPTIMUM_MAX_MSG_SIZE=1048576 + + * OPTIMUM_MESH_TARGET=6 + + * OPTIMUM_MESH_MIN=3 + + * OPTIMUM_MESH_MAX=12 + + * OPTIMUM_SHARD_FACTOR=4 + + * OPTIMUM_SHARD_MULT=1.5 + + * OPTIMUM_THRESHOLD=0.75 + + * BOOTSTRAP_PEERS=/ip4/172.28.0.12/tcp/7070/p2p/${BOOTSTRAP_PEER_ID} + networks: optimum-network: ipv4_address: 172.28.0.14 ports: - - "33223:33212" - - "7073:7070" - - "9093:9090" + +* "33223:33212" + + * "7073:7070" + + * "9093:9090" p2pnode-4: image: 'getoptimum/p2pnode:latest' platform: linux/amd64 environment: - - LOG_LEVEL=debug - - CLUSTER_ID=p2pnode-4 - - NODE_MODE=optimum - - SIDECAR_PORT=33212 - - API_PORT=9090 - - IDENTITY_DIR=/identity - - OPTIMUM_PORT=7070 - - OPTIMUM_MAX_MSG_SIZE=1048576 - - OPTIMUM_MESH_TARGET=6 - - OPTIMUM_MESH_MIN=3 - - OPTIMUM_MESH_MAX=12 - - OPTIMUM_SHARD_FACTOR=4 - - OPTIMUM_SHARD_MULT=1.5 - - OPTIMUM_THRESHOLD=0.75 - - BOOTSTRAP_PEERS=/ip4/172.28.0.12/tcp/7070/p2p/${BOOTSTRAP_PEER_ID} + +* LOG_LEVEL=debug + + * CLUSTER_ID=p2pnode-4 + + * NODE_MODE=optimum + + * SIDECAR_PORT=33212 + + * API_PORT=9090 + + * IDENTITY_DIR=/identity + + * OPTIMUM_PORT=7070 + + * OPTIMUM_MAX_MSG_SIZE=1048576 + + * OPTIMUM_MESH_TARGET=6 + + * OPTIMUM_MESH_MIN=3 + + * OPTIMUM_MESH_MAX=12 + + * OPTIMUM_SHARD_FACTOR=4 + + * OPTIMUM_SHARD_MULT=1.5 + + * OPTIMUM_THRESHOLD=0.75 + + * BOOTSTRAP_PEERS=/ip4/172.28.0.12/tcp/7070/p2p/${BOOTSTRAP_PEER_ID} + networks: optimum-network: ipv4_address: 172.28.0.15 ports: - - "33224:33212" - - "7074:7070" - - "9094:9090" + +* "33224:33212" + + * "7074:7070" + + * "9094:9090" networks: optimum-network: driver: bridge ipam: config: - - subnet: 172.28.0.0/16 + +* subnet: 172.28.0.0/16 + ``` ## P2P Node Environment Variables ### Core P2P Configuration -- **`CLUSTER_ID`**: Unique identifier for each P2P node - - Purpose: Distinguishes nodes in logs, metrics, and network topology - - Usage: Should be unique across all P2P nodes in deployment - - Format: Alphanumeric string, typically `p2pnode-1`, `p2pnode-2`, etc. - - Required: Yes, no default value - -- **`NODE_MODE`**: P2P protocol implementation mode - - Purpose: Selects the underlying pub/sub protocol - - Values: `optimum` (RLNC-enhanced) or `gossipsub` (standard libp2p) - - Default: `optimum` - - Usage: Use `optimum` for better performance with RLNC coding - - Note: All nodes in network should use same mode for compatibility - -- **`SIDECAR_PORT`**: gRPC bidirectional communication port - - Purpose: Port where gateways and clients connect to interact with P2P node - - Default: `33212` - - Range: Any available port (1024-65535) - - Usage: Must be accessible from gateway containers for internal communication - - Network: Used for internal container-to-container communication - -- **`API_PORT`**: HTTP monitoring and management API port - - Purpose: Exposes REST endpoints for health checks, node state, and metrics - - Default: `8081` for gateway, `9090` for P2P nodes (varies by component) - - Endpoints: `/api/v1/health`, `/api/v1/node-state`, `/api/v1/version` - - Usage: Used for operational monitoring and debugging +* **`CLUSTER_ID`**: Unique identifier for each P2P node + + * Purpose: Distinguishes nodes in logs, metrics, and network topology + + * Usage: Should be unique across all P2P nodes in deployment + + * Format: Alphanumeric string, typically `p2pnode-1`, `p2pnode-2`, etc. + + * Required: Yes, no default value + +* **`NODE_MODE`**: P2P protocol implementation mode + + * Purpose: Selects the underlying pub/sub protocol + + * Values: `optimum` (RLNC-enhanced) or `gossipsub` (standard libp2p) + + * Default: `optimum` + + * Usage: Use `optimum` for better performance with RLNC coding + + * Note: All nodes in network should use same mode for compatibility + +* **`SIDECAR_PORT`**: gRPC bidirectional communication port + + * Purpose: Port where gateways and clients connect to interact with P2P node + + * Default: `33212` + + * Range: Any available port (1024-65535) + + * Usage: Must be accessible from gateway containers for internal communication + + * Network: Used for internal container-to-container communication + +* **`API_PORT`**: HTTP monitoring and management API port + + * Purpose: Exposes REST endpoints for health checks, node state, and metrics + + * Default: `8081` for gateway, `9090` for P2P nodes (varies by component) + + * Endpoints: `/api/v1/health`, `/api/v1/node-state`, `/api/v1/version` + + * Usage: Used for operational monitoring and debugging ### Network Discovery Configuration -- **`IDENTITY_DIR`**: Node cryptographic identity directory - - Purpose: Directory containing node's P2P identity key (p2p.key) - - Default: `/identity` - - Usage: Only needed for bootstrap nodes, other nodes auto-generate identity - - Security: Contains private key material, should be properly secured +* **`IDENTITY_DIR`**: Node cryptographic identity directory -- **`BOOTSTRAP_PEERS`**: Initial peer discovery addresses - - Purpose: List of known peers for joining the mesh network - - Format: `/ip4//tcp//p2p/` - - Example: `/ip4/172.28.0.12/tcp/7070/p2p/12D3KooW...` - - Usage: New nodes use these to discover and join the network - - Multiple: Can specify multiple peers separated by commas + * Purpose: Directory containing node's P2P identity key (p2p.key) + + * Default: `/identity` + + * Usage: Only needed for bootstrap nodes, other nodes auto-generate identity + + * Security: Contains private key material, should be properly secured + +* **`BOOTSTRAP_PEERS`**: Initial peer discovery addresses + + * Purpose: List of known peers for joining the mesh network + + * Format: `/ip4//tcp//p2p/` + + * Example: `/ip4/172.28.0.12/tcp/7070/p2p/12D3KooW...` + + * Usage: New nodes use these to discover and join the network + + * Multiple: Can specify multiple peers separated by commas ### OptimumP2P Protocol Configuration -- **`OPTIMUM_PORT`**: P2P protocol communication port - - Purpose: Port for peer-to-peer communication between nodes - - Default: `7070` - - Range: Any available port, commonly 7070-7080 - - Usage: Must be accessible between all P2P nodes in the mesh - - Network: Used for inter-node OptimumP2P protocol communication +* **`OPTIMUM_PORT`**: P2P protocol communication port -- **`OPTIMUM_MAX_MSG_SIZE`**: Maximum message size in bytes - - Purpose: Limits individual message size to prevent memory issues - - Default: `1048576` (1MB) - - Usage: Larger values allow bigger payloads but use more memory/bandwidth + * Purpose: Port for peer-to-peer communication between nodes + + * Default: `7070` + + * Range: Any available port, commonly 7070-7080 + + * Usage: Must be accessible between all P2P nodes in the mesh + + * Network: Used for inter-node OptimumP2P protocol communication + +* **`OPTIMUM_MAX_MSG_SIZE`**: Maximum message size in bytes + + * Purpose: Limits individual message size to prevent memory issues + + * Default: `1048576` (1MB) + + * Usage: Larger values allow bigger payloads but use more memory/bandwidth ### RLNC (Random Linear Network Coding) Configuration -- **`OPTIMUM_SHARD_FACTOR`**: Number of coded shards per message - - Purpose: Controls how many pieces each message is split into for RLNC - - Default: `4` - - Impact: Higher values increase redundancy and fault tolerance but use more bandwidth - - Note: Must be non-zero to enable RLNC functionality - -- **`OPTIMUM_SHARD_MULT`**: Shard size redundancy multiplier - - Purpose: Controls redundancy factor for error recovery - - Default: `1.5` - - Impact: Higher values improve error recovery but increase bandwidth usage - - Note: Values >1.0 add redundancy (e.g., 1.5 = 50% redundancy) - -- **`OPTIMUM_THRESHOLD`**: Forward/decode threshold ratio - - Purpose: Fraction of shards needed before forwarding or decoding message - - Default: `0.75` (75%) - - Validation: Must be between 0 and 1 (exclusive of 0, inclusive of 1) - - Impact: Critical for network performance tuning - - Note: Lower values reduce latency but may reduce reliability; higher values improve reliability but increase latency +* **`OPTIMUM_SHARD_FACTOR`**: Number of coded shards per message + + * Purpose: Controls how many pieces each message is split into for RLNC + + * Default: `4` + + * Impact: Higher values increase redundancy and fault tolerance but use more bandwidth + + * Note: Must be non-zero to enable RLNC functionality + +* **`OPTIMUM_SHARD_MULT`**: Shard size redundancy multiplier + + * Purpose: Controls redundancy factor for error recovery + + * Default: `1.5` + + * Impact: Higher values improve error recovery but increase bandwidth usage + + * Note: Values >1.0 add redundancy (e.g., 1.5 = 50% redundancy) + +* **`OPTIMUM_THRESHOLD`**: Forward/decode threshold ratio + + * Purpose: Fraction of shards needed before forwarding or decoding message + + * Default: `0.75` (75%) + + * Validation: Must be between 0 and 1 (exclusive of 0, inclusive of 1) + + * Impact: Critical for network performance tuning + + * Note: Lower values reduce latency but may reduce reliability; higher values improve reliability but increase latency ### Mesh Topology Configuration -- **`OPTIMUM_MESH_TARGET`**: Target number of peer connections - - Purpose: Ideal number of peers each node connects to in the mesh - - Default: `6` - - Impact: Higher values increase redundancy and fault tolerance but use more resources - - Scaling: Adjust based on network size and reliability requirements - -- **`OPTIMUM_MESH_MIN`**: Minimum mesh peer connections - - Purpose: Minimum connections before attempting to add more peers - - Default: `4` - - Note: Should be less than `MESH_TARGET` - - Impact: Lower values reduce fault tolerance, higher values increase resource usage - - Usage: Prevents network partitioning by maintaining minimum connectivity - -- **`OPTIMUM_MESH_MAX`**: Maximum mesh peer connections - - Purpose: Maximum connections before pruning excess peers - - Default: `12` - - Note: Should be greater than `MESH_TARGET` - - Impact: Prevents resource exhaustion while maintaining network connectivity - - Usage: Sets upper bound to control memory and bandwidth usage +* **`OPTIMUM_MESH_TARGET`**: Target number of peer connections + + * Purpose: Ideal number of peers each node connects to in the mesh + + * Default: `6` + + * Impact: Higher values increase redundancy and fault tolerance but use more resources + + * Scaling: Adjust based on network size and reliability requirements + +* **`OPTIMUM_MESH_MIN`**: Minimum mesh peer connections + + * Purpose: Minimum connections before attempting to add more peers + + * Default: `4` + + * Note: Should be less than `MESH_TARGET` + + * Impact: Lower values reduce fault tolerance, higher values increase resource usage + + * Usage: Prevents network partitioning by maintaining minimum connectivity + +* **`OPTIMUM_MESH_MAX`**: Maximum mesh peer connections + + * Purpose: Maximum connections before pruning excess peers + + * Default: `12` + + * Note: Should be greater than `MESH_TARGET` + + * Impact: Prevents resource exhaustion while maintaining network connectivity + + * Usage: Sets upper bound to control memory and bandwidth usage ### Configuration Notes All parameter values can be adjusted based on specific use case requirements. When modifying parameters: -- Higher OPTIMUM_THRESHOLD values improve reliability but increase latency -- Higher OPTIMUM_MESH_TARGET values improve fault tolerance but use more resources -- Higher OPTIMUM_SHARD_FACTOR values improve redundancy but increase bandwidth usage -- OPTIMUM_MESH_MIN should be less than OPTIMUM_MESH_TARGET -- OPTIMUM_MESH_MAX should be greater than OPTIMUM_MESH_TARGET +* Higher OPTIMUM_THRESHOLD values improve reliability but increase latency + +* Higher OPTIMUM_MESH_TARGET values improve fault tolerance but use more resources + +* Higher OPTIMUM_SHARD_FACTOR values improve redundancy but increase bandwidth usage + +* OPTIMUM_MESH_MIN should be less than OPTIMUM_MESH_TARGET + +* OPTIMUM_MESH_MAX should be greater than OPTIMUM_MESH_TARGET ## Gateway Configuration ### Environment Variables -- **`GATEWAY_PORT`**: HTTP/WebSocket server port (default: `:8080`) - - Purpose: Defines the port where the gateway listens for client connections - - Usage: Internal container port for REST API and WebSocket connections - - Example: `:8080`, `:3000`, `:8081` - - Note: External port mapping is configured separately in docker-compose ports section - -- **`CLUSTER_ID`**: Unique gateway identifier - - Purpose: Distinguishes between multiple gateway instances in logs, metrics, and monitoring - - Usage: Should be unique across all gateway instances in your deployment - - Format: Alphanumeric string, no spaces - - Example: `gateway-1`, `gateway-primary`, `gateway-us-east` - - Required: Yes, no default value - -- **`ENABLE_AUTH`**: Enable Auth0 JWT authentication (true/false) - - Purpose: Controls whether API requests require JWT authentication - - Usage: Set to `false` for development/testing, `true` for production - - Values: `true` (requires valid JWT tokens) or `false` (open access) - - Default: `false` - - Note: When `true`, requires additional Auth0 configuration (AUTH0_DOMAIN, AUTH0_AUDIENCE) - -- **`P2P_NODES`**: Comma-separated list of P2P node gRPC sidecar addresses - - Purpose: Defines which P2P nodes the gateway can connect to for message routing - - Format: `hostname:port,hostname:port,...` - - Usage: Gateway load-balances requests across these nodes for high availability - - Port: Should match SIDECAR_PORT of P2P nodes (typically 33212) - - Example: `p2pnode-1:33212,p2pnode-2:33212,p2pnode-3:33212` - - Behavior: Gateway attempts to connect to all listed nodes and routes to healthy ones - -- **`LOG_LEVEL`**: Logging verbosity level - - Purpose: Controls the amount and detail of log output - - Values: `debug`, `info`, `warn`, `error` - - Default: `info` - - Usage Guide: - - `debug`: Most verbose, includes request/response details, connection events (development) - - `info`: Standard production level with operational information - - `warn`: Only warnings and errors (quiet production) - - `error`: Only error messages (minimal logging) - - Performance: Higher verbosity may impact performance and storage +* **`GATEWAY_PORT`**: HTTP/WebSocket server port (default: `:8080`) + + * Purpose: Defines the port where the gateway listens for client connections + + * Usage: Internal container port for REST API and WebSocket connections + + * Example: `:8080`, `:3000`, `:8081` + + * Note: External port mapping is configured separately in docker-compose ports section + +* **`CLUSTER_ID`**: Unique gateway identifier + + * Purpose: Distinguishes between multiple gateway instances in logs, metrics, and monitoring + + * Usage: Should be unique across all gateway instances in your deployment + + * Format: Alphanumeric string, no spaces + + * Example: `gateway-1`, `gateway-primary`, `gateway-us-east` + + * Required: Yes, no default value + +* **`ENABLE_AUTH`**: Enable Auth0 JWT authentication (true/false) + + * Purpose: Controls whether API requests require JWT authentication + + * Usage: Set to `false` for development/testing, `true` for production + + * Values: `true` (requires valid JWT tokens) or `false` (open access) + + * Default: `false` + + * Note: When `true`, requires additional Auth0 configuration (AUTH0_DOMAIN, AUTH0_AUDIENCE) + +* **`P2P_NODES`**: Comma-separated list of P2P node gRPC sidecar addresses + + * Purpose: Defines which P2P nodes the gateway can connect to for message routing + + * Format: `hostname:port,hostname:port,...` + + * Usage: Gateway load-balances requests across these nodes for high availability + + * Port: Should match SIDECAR_PORT of P2P nodes (typically 33212) + + * Example: `p2pnode-1:33212,p2pnode-2:33212,p2pnode-3:33212` + + * Behavior: Gateway attempts to connect to all listed nodes and routes to healthy ones + +* **`LOG_LEVEL`**: Logging verbosity level + + * Purpose: Controls the amount and detail of log output + + * Values: `debug`, `info`, `warn`, `error` + + * Default: `info` + + * Usage Guide: + + * `debug`: Most verbose, includes request/response details, connection events (development) + + * `info`: Standard production level with operational information + + * `warn`: Only warnings and errors (quiet production) + + * `error`: Only error messages (minimal logging) + + * Performance: Higher verbosity may impact performance and storage ### Authentication (Optional) + For production deployments, enable authentication: + ```yaml + environment: - - ENABLE_AUTH=true - - AUTH0_DOMAIN=your-domain.auth0.com - - AUTH0_AUDIENCE=your-api-audience + +* ENABLE_AUTH=true + + * AUTH0_DOMAIN=your-domain.auth0.com + + * AUTH0_AUDIENCE=your-api-audience + ``` ## API Endpoints ### HTTP REST API -- `POST /publish` - Publish message to topic -- `GET /health` - Gateway health check -- `GET /metrics` - Prometheus metrics + +* `POST /publish` - Publish message to topic + +* `GET /health` - Gateway health check + +* `GET /metrics` - Prometheus metrics ### WebSocket API -- `ws://localhost:8081/ws` - WebSocket connection for real-time messaging + +* `ws://localhost:8081/ws` - WebSocket connection for real-time messaging ### gRPC API -- `localhost:50051` - Bidirectional streaming service + +* `localhost:50051` - Bidirectional streaming service ## Starting the Network 1. Generate peer identity: + ```bash + mkdir -p identity export BOOTSTRAP_PEER_ID=$(docker run --rm -v $(pwd)/identity:/identity getoptimum/p2pnode:latest generate-key --output-peer-id) + ``` -2. Start all services: +1. Start all services: + ```bash + docker-compose up -d + ``` -3. Verify services: +1. Verify services: + ```bash + docker-compose ps curl http://localhost:8081/health + ``` ## Client Examples ### HTTP REST + ```bash + curl -X POST http://localhost:8081/publish \ -H "Content-Type: application/json" \ -d '{"topic": "test", "data": "Hello OptimumP2P"}' + ``` ### WebSocket (JavaScript) + ```javascript + const ws = new WebSocket('ws://localhost:8081/ws'); ws.onopen = () => { ws.send(JSON.stringify({ @@ -400,56 +636,82 @@ ws.onopen = () => { topic: 'test' })); }; + ``` ### gRPC (Go) + ```go + conn, err := grpc.Dial("localhost:50051", grpc.WithInsecure()) client := pb.NewGatewayStreamClient(conn) stream, err := client.Stream(context.Background()) + ``` ## Monitoring ### Gateway Metrics -- Gateway 1: http://localhost:8081/metrics -- Gateway 2: http://localhost:8082/metrics + +* Gateway 1: http://localhost:8081/metrics + +* Gateway 2: http://localhost:8082/metrics ### P2P Node Status -- Node 1: http://localhost:9091 -- Node 2: http://localhost:9092 -- Node 3: http://localhost:9093 -- Node 4: http://localhost:9094 + +* Node 1: http://localhost:9091 + +* Node 2: http://localhost:9092 + +* Node 3: http://localhost:9093 + +* Node 4: http://localhost:9094 ## Scaling Considerations Scale the P2P network by adding more nodes: -- Maintain OPTIMUM_MESH_TARGET ratio to network size -- Consider network topology and latency -- Monitor mesh formation and message propagation + +* Maintain OPTIMUM_MESH_TARGET ratio to network size + +* Consider network topology and latency + +* Monitor mesh formation and message propagation ## Troubleshooting ### Gateway Connection Issues + ```bash + # Check gateway logs + docker-compose logs gateway-1 # Test P2P node connectivity + docker-compose exec gateway-1 nc -zv p2pnode-1 33212 + ``` -### Message Delivery Issues +## Message Delivery Issues + ```bash + # Check message flow + docker-compose logs -f | grep -E "(publish|subscribe|message)" # Verify P2P mesh status + curl http://localhost:9091/debug/peers + ``` ## See Also -- [GossipSub Configuration Guide](/docs/hackathon/configuration/gossipsub.md) - Detailed explanation of underlying pub/sub protocol parameters -- [P2P-Only Deployment](/docs/hackathon/deployment/p2p-only.md) - Alternative deployment without gateways -- [First Message Tutorial](/docs/hackathon/quick-start/first-message.md) - Step-by-step getting started guide +* [GossipSub Configuration Guide](/docs/hackathon/configuration/gossipsub.md) - Detailed explanation of underlying pub/sub protocol parameters + +* [P2P-Only Deployment](/docs/hackathon/deployment/p2p-only.md) - Alternative deployment without gateways + +* [First Message Tutorial](/docs/hackathon/quick-start/first-message.md) - Step-by-step getting started guide + diff --git a/docs/hackathon/overview.md b/docs/hackathon/overview.md index 8e00202..f9c8641 100644 --- a/docs/hackathon/overview.md +++ b/docs/hackathon/overview.md @@ -11,6 +11,7 @@ OptimumP2P is a novel gossip algorithm that uses [Random Linear Network Coding ( Get OptimumP2P running in under 5 minutes: 1. **[Installation](./quick-start/installation.md)** - Set up Docker and dependencies + 2. **[First Message](./quick-start/first-message.md)** - Publish and receive your first message ## Deployment Options @@ -18,50 +19,60 @@ Get OptimumP2P running in under 5 minutes: Choose your deployment strategy: ### P2P Network Only -- **[P2P-Only Deployment](./deployment/p2p-only.md)** - Deploy just the P2P nodes for direct integration + +* **[P2P-Only Deployment](./deployment/p2p-only.md)** - Deploy just the P2P nodes for direct integration ### Gateway + P2P Network -- **[Gateway + P2P Deployment](./deployment/p2p-with-gateway.md)** - Full stack with REST/WebSocket APIs + +* **[Gateway + P2P Deployment](./deployment/p2p-with-gateway.md)** - Full stack with REST/WebSocket APIs ## Client Integration Connect to OptimumP2P using various client methods: -- **[mump2p-cli](./clients/)** - Command-line client for testing and automation -- **[gRPC Clients](./clients/)** - Direct gRPC integration examples -- **[REST/WebSocket APIs](./clients/)** - Gateway-based client integration +* **[mump2p-cli](./clients/)** - Command-line client for testing and automation + +* **[gRPC Clients](./clients/)** - Direct gRPC integration examples + +* **[REST/WebSocket APIs](./clients/)** - Gateway-based client integration ## Configuration Fine-tune OptimumP2P for your use case: -- **[OptimumP2P Configuration](./configuration/optimump2p.md)** - RLNC parameters, mesh topology, and performance tuning -- **[GossipSub Configuration](./configuration/gossipsub.md)** - Standard GossipSub parameters for comparison +* **[OptimumP2P Configuration](./configuration/optimump2p.md)** - RLNC parameters, mesh topology, and performance tuning + +* **[GossipSub Configuration](./configuration/gossipsub.md)** - Standard GossipSub parameters for comparison ## Performance & Comparison Benchmark and compare OptimumP2P: -- **[Metrics Collection](./clients/)** - Understanding performance metrics -- **[OptimumP2P vs GossipSub](./clients/)** - Performance comparison methodology +* **[Metrics Collection](./clients/)** - Understanding performance metrics + +* **[OptimumP2P vs GossipSub](./clients/)** - Performance comparison methodology ## Docker Images Used The hackathon uses these pre-built Docker images: -- **`getoptimum/p2pnode:latest`** - Core P2P node with OptimumP2P protocol -- **`getoptimum/gateway:latest`** - Gateway service for client APIs +* **`getoptimum/p2pnode:latest`** - Core P2P node with OptimumP2P protocol + +* **`getoptimum/gateway:latest`** - Gateway service for client APIs Both images support protocol switching: -- `NODE_MODE=optimum` - RLNC-enhanced OptimumP2P (recommended) -- `NODE_MODE=gossipsub` - Standard GossipSub for comparison + +* `NODE_MODE=optimum` - RLNC-enhanced OptimumP2P (recommended) + +* `NODE_MODE=gossipsub` - Standard GossipSub for comparison ## Architecture Deep Dive For developers and integrators: -- **[OptimumP2P Technical Overview](../learn/overview/p2p.md)** - Complete technical specification +* **[OptimumP2P Technical Overview](../learn/overview/p2p.md)** - Complete technical specification --- -**Ready to get started?** Begin with **[Installation](./quick-start/installation.md)** or dive into the **[Technical Overview](../learn/overview/p2p.md)**. \ No newline at end of file +**Ready to get started?** Begin with **[Installation](./quick-start/installation.md)** or dive into the **[Technical Overview](../learn/overview/p2p.md)**. + diff --git a/docs/hackathon/quick-start/first-message.md b/docs/hackathon/quick-start/first-message.md index e7974ea..0f97968 100644 --- a/docs/hackathon/quick-start/first-message.md +++ b/docs/hackathon/quick-start/first-message.md @@ -4,24 +4,32 @@ This tutorial demonstrates how to send your first message through OptimumP2P usi ## Prerequisites -- Docker and Docker Compose installed -- Basic familiarity with terminal/command line -- Text editor for creating configuration files +* Docker and Docker Compose installed + +* Basic familiarity with terminal/command line + +* Text editor for creating configuration files ## Step 1: Set Up the Network Create a working directory and use the provided docker-compose configuration: ```bash + mkdir optimump2p-test cd optimump2p-test + ``` Download the complete setup: + ```bash + # Clone the development setup repository + git clone https://github.com/getoptimum/optimum-dev-setup-guide.git cd optimum-dev-setup-guide + ``` Or create your own `docker-compose.yml` using the configuration from the [P2P Network with Gateway](../deployment/p2p-with-gateway.md) guide. @@ -31,40 +39,55 @@ Or create your own `docker-compose.yml` using the configuration from the [P2P Ne Generate the required peer identity: ```bash + # Create identity directory if using local setup + mkdir -p identity # Set the bootstrap peer ID environment variable + export BOOTSTRAP_PEER_ID=12D3KooWExample # This will be generated automatically + ``` Start all services: ```bash + docker-compose up -d + ``` Verify the services are running: ```bash + docker-compose ps + ``` You should see containers for: -- gateway-1 (port 8081) -- gateway-2 (port 8082) -- p2pnode-1, p2pnode-2, p2pnode-3, p2pnode-4 + +* gateway-1 (port 8081) + +* gateway-2 (port 8082) + +* p2pnode-1, p2pnode-2, p2pnode-3, p2pnode-4 ## Step 3: Test Gateway Connectivity The gateway provides REST API endpoints for publishing and subscribing. Test connectivity: ```bash + # Test gateway-1 + curl -I http://localhost:8081 # Test gateway-2 + curl -I http://localhost:8082 + ``` ## Step 4: Build the Gateway Client @@ -72,8 +95,10 @@ curl -I http://localhost:8082 The repository includes a Go client for interacting with the gateway: ```bash + cd grpc_gateway_client go build -o gateway-client ./gateway_client.go + ``` ## Step 5: Subscribe to Messages @@ -81,13 +106,19 @@ go build -o gateway-client ./gateway_client.go In one terminal window, start a subscriber: ```bash + # Subscribe to topic "demo" with threshold 0.7 + ./script/gateway_client.sh subscribe demo 0.7 + ``` The subscriber will: + 1. Register with the gateway via REST API (`/api/subscribe`) + 2. Open a gRPC stream to receive messages + 3. Display received messages in the format: `[RECEIVED] Topic: | Message: ` ## Step 6: Publish Messages @@ -95,12 +126,17 @@ The subscriber will: In another terminal window, publish messages: ```bash + # Publish 5 messages to topic "demo" with threshold 0.5 + ./script/gateway_client.sh publish demo 0.5 5 + ``` The publisher will: + 1. Send messages via REST API (`/api/publish`) + 2. Display each published message in the format: `[PUBLISH] Message: ` ## Step 7: Alternative REST API Usage @@ -108,25 +144,33 @@ The publisher will: You can also interact directly with the REST API using curl: ### Subscribe via REST (requires separate gRPC stream for receiving) + ```bash + curl -X POST http://localhost:8081/api/subscribe \ -H "Content-Type: application/json" \ -d '{ + "client_id": "test_client_001", "topic": "demo", "threshold": 0.7 }' + ``` ### Publish via REST + ```bash + curl -X POST http://localhost:8081/api/publish \ -H "Content-Type: application/json" \ -d '{ + "client_id": "test_client_001", "topic": "demo", "message": "Hello from REST API" }' + ``` ## Step 8: Multiple Topics @@ -134,17 +178,23 @@ curl -X POST http://localhost:8081/api/publish \ Test topic isolation by using different topic names: ```bash + # Terminal 1: Subscribe to "weather" + ./script/gateway_client.sh subscribe weather 0.7 # Terminal 2: Subscribe to "news" + ./script/gateway_client.sh subscribe news 0.7 # Terminal 3: Publish to "weather" + ./script/gateway_client.sh publish weather 0.5 3 # Terminal 4: Publish to "news" + ./script/gateway_client.sh publish news 0.5 3 + ``` Each subscriber will only receive messages from their subscribed topic. @@ -154,50 +204,73 @@ Each subscriber will only receive messages from their subscribed topic. Test network performance with higher message volumes: ```bash + # High-frequency publishing (100 messages with 100ms delay) + ./gateway-client -topic=performance -threshold=0.5 -count=100 -delay=100ms # Stress test (1000 messages) + ./gateway-client -topic=stress -threshold=0.5 -count=1000 -delay=10ms + ``` ## Understanding the Parameters ### Threshold + The threshold parameter (0.0 to 1.0) controls RLNC decoding: -- Lower values: Messages decoded with fewer shards (faster, less reliable) -- Higher values: Messages require more shards (slower, more reliable) -- Typical range: 0.5 to 0.8 + +* Lower values: Messages decoded with fewer shards (faster, less reliable) + +* Higher values: Messages require more shards (slower, more reliable) + +* Typical range: 0.5 to 0.8 ### Client ID + Each client needs a unique identifier for the gateway to track subscriptions and route messages correctly. ### Topic Names -- Case-sensitive strings -- No special characters recommended -- Use descriptive names (e.g., "chat", "alerts", "data-feed") + +* Case-sensitive strings + +* No special characters recommended + +* Use descriptive names (e.g., "chat", "alerts", "data-feed") ## Monitoring and Debugging ### View logs + ```bash + # Gateway logs + docker-compose logs -f gateway-1 # P2P node logs + docker-compose logs -f p2pnode-1 # All logs + docker-compose logs -f + ``` -### Check network connectivity +## Check network connectivity + ```bash + # Test P2P node connectivity + docker-compose exec gateway-1 nc -zv p2pnode-1 33212 # View container network + docker network inspect optimum-dev-setup-guide_optimum-network + ``` ## Cleanup @@ -205,10 +278,13 @@ docker network inspect optimum-dev-setup-guide_optimum-network Stop and remove all containers: ```bash + docker-compose down # Remove volumes and images (optional) + docker-compose down -v --rmi all + ``` ## Next Steps @@ -216,26 +292,40 @@ docker-compose down -v --rmi all Now that you've successfully sent messages through OptimumP2P: 1. **Build custom clients**: Explore the [Client Development](../clients/) guides + 2. **Optimize configuration**: Learn about [OptimumP2P Configuration](../configuration/optimump2p.md) + 3. **Compare protocols**: Review [GossipSub Configuration](../configuration/gossipsub.md) ## Troubleshooting ### Build failures -- Ensure Go is installed: `go version` -- Check module dependencies: `go mod tidy` + +* Ensure Go is installed: `go version` + +* Check module dependencies: `go mod tidy` ### Connection issues -- Verify Docker containers are running: `docker-compose ps` -- Check port availability: `netstat -an | grep 8081` -- Review firewall settings + +* Verify Docker containers are running: `docker-compose ps` + +* Check port availability: `netstat -an | grep 8081` + +* Review firewall settings ### Message delivery issues -- Verify topic names match exactly -- Check threshold values are between 0.0 and 1.0 -- Review gateway and P2P node logs for errors + +* Verify topic names match exactly + +* Check threshold values are between 0.0 and 1.0 + +* Review gateway and P2P node logs for errors ### Performance issues -- Monitor container resources: `docker stats` -- Adjust message delay parameters -- Check network bandwidth and latency \ No newline at end of file + +* Monitor container resources: `docker stats` + +* Adjust message delay parameters + +* Check network bandwidth and latency + diff --git a/docs/hackathon/quick-start/installation.md b/docs/hackathon/quick-start/installation.md index 181978f..cde2da3 100644 --- a/docs/hackathon/quick-start/installation.md +++ b/docs/hackathon/quick-start/installation.md @@ -7,32 +7,43 @@ This guide will help you install and set up OptimumP2P on your computer. We'll e Before we start, you need these programs on your computer: ### 1. Docker + Docker is like a virtual container that runs applications in an isolated environment. Think of it as a box where we put our OptimumP2P network so it doesn't interfere with other programs on your computer. **Install Docker:** -- **Windows/Mac**: Download Docker Desktop from [docker.com](https://www.docker.com/products/docker-desktop/) -- **Linux**: Follow the instructions for your distribution on [docs.docker.com](https://docs.docker.com/engine/install/) + +* **Windows/Mac**: Download Docker Desktop from [docker.com](https://www.docker.com/products/docker-desktop/) + +* **Linux**: Follow the instructions for your distribution on [docs.docker.com](https://docs.docker.com/engine/install/) **How to check if Docker is installed:** + Open your terminal (Command Prompt on Windows, Terminal on Mac/Linux) and type: + ```bash + docker --version -``` +``` ### 2. Docker Compose + Docker Compose helps us run multiple Docker containers together. It usually comes with Docker Desktop, but let's verify: ```bash + docker-compose --version -``` +``` ### 3. Git (Optional but recommended) + Git helps you download and manage code. Most computers have it pre-installed. ```bash + git --version + ``` ## Getting the Code @@ -40,12 +51,16 @@ git --version You have two options to get the OptimumP2P setup files: ### Option 1: Download from this documentation + Create a new folder on your computer and save the docker-compose.yml files from the [Deployment Options](../deployment/) section. ### Option 2: Clone the development setup repository + ```bash + git clone https://github.com/getoptimum/optimum-dev-setup-guide.git cd optimum-dev-setup-guide + ``` ## What's Next? @@ -53,43 +68,65 @@ cd optimum-dev-setup-guide Now that you have everything installed: 1. **Learn the basics**: Read [Core Concepts](./concepts.md) to understand how OptimumP2P works + 2. **Try it out**: Follow [First Message Example](./first-message.md) to send your first message + 3. **Build something**: Check out [Client Development](../clients/) to create your own application ## Troubleshooting ### "Docker command not found" -- Make sure Docker is installed and running -- On Windows/Mac, start Docker Desktop application -- You might need to restart your terminal after installation + +* Make sure Docker is installed and running + +* On Windows/Mac, start Docker Desktop application + +* You might need to restart your terminal after installation ### "Permission denied" on Linux + Add your user to the docker group: + ```bash + sudo usermod -aG docker $USER + ``` + Then log out and log back in. ### "Port already in use" + If you see port conflicts, either: -- Stop other programs using those ports -- Change the port numbers in the docker-compose.yml file + +* Stop other programs using those ports + +* Change the port numbers in the docker-compose.yml file ### Still having issues? -- Check Docker's own troubleshooting guide -- Make sure you have enough disk space (at least 2GB free) -- Restart your computer and try again + +* Check Docker's own troubleshooting guide + +* Make sure you have enough disk space (at least 2GB free) + +* Restart your computer and try again ## System Requirements **Minimum:** -- 4GB RAM -- 2GB free disk space -- Internet connection for downloading Docker images + +* 4GB RAM + +* 2GB free disk space + +* Internet connection for downloading Docker images **Recommended:** -- 8GB RAM -- 5GB free disk space -- Stable internet connection -You're now ready to start your OptimumP2P journey! \ No newline at end of file +* 8GB RAM + +* 5GB free disk space + +* Stable internet connection + +You're now ready to start your OptimumP2P journey! From 512d3c98a89994ca380ca64826a73352be45bd93 Mon Sep 17 00:00:00 2001 From: swarnabhasinha Date: Fri, 1 Aug 2025 16:26:20 +0530 Subject: [PATCH 13/18] Revert "fix:lint" This reverts commit a3c62e8dde9523ccbbd65e52db2e4776c0dfca41. --- docs/hackathon/configuration/gossipsub.md | 127 +-- docs/hackathon/configuration/optimump2p.md | 225 ++--- docs/hackathon/deployment/p2p-only.md | 466 ++++------- docs/hackathon/deployment/p2p-with-gateway.md | 776 ++++++------------ docs/hackathon/overview.md | 41 +- docs/hackathon/quick-start/first-message.md | 138 +--- docs/hackathon/quick-start/installation.md | 75 +- 7 files changed, 577 insertions(+), 1271 deletions(-) diff --git a/docs/hackathon/configuration/gossipsub.md b/docs/hackathon/configuration/gossipsub.md index 94c73ff..8363e85 100644 --- a/docs/hackathon/configuration/gossipsub.md +++ b/docs/hackathon/configuration/gossipsub.md @@ -8,13 +8,10 @@ GossipSub is a pubsub protocol designed for decentralized networks that builds o ### Key Concepts -* **Mesh**: Direct connections between peers for message forwarding - -* **Gossip**: Metadata exchange about available messages with non-mesh peers - -* **Fanout**: Temporary connections for publishing when not subscribed to a topic - -* **Degree**: The number of peer connections each node maintains +- **Mesh**: Direct connections between peers for message forwarding +- **Gossip**: Metadata exchange about available messages with non-mesh peers +- **Fanout**: Temporary connections for publishing when not subscribed to a topic +- **Degree**: The number of peer connections each node maintains ## Core GossipSub Parameters @@ -50,76 +47,48 @@ Optimum P2P implements GossipSub with configurable parameters through environmen ### Environment Variables -* **`GOSSIPSUB_PORT`**: Port for GossipSub protocol communication - - * Purpose: Network port for GossipSub peer-to-peer communication - - * Default: `6060` - - * Usage: Internal P2P networking, separate from API ports - - * Example: `GOSSIPSUB_PORT=6060` - -* **`GOSSIPSUB_MAX_MSG_SIZE`**: Maximum message size in bytes - - * Purpose: Limits individual message size to prevent memory issues - - * Default: `1048576` (1MB) - - * Usage: Larger values allow bigger payloads but use more memory - - * Example: `GOSSIPSUB_MAX_MSG_SIZE=1048576` - -* **`GOSSIPSUB_MESH_TARGET`**: Target number of mesh connections - - * Purpose: Ideal number of direct peer connections (corresponds to `D`) - - * Default: `6` - - * Impact: Higher values increase redundancy but use more bandwidth - - * Example: `GOSSIPSUB_MESH_TARGET=6` - -* **`GOSSIPSUB_MESH_MIN`**: Minimum mesh connections - - * Purpose: Lower threshold before attempting to add peers (corresponds to `D_low`) - - * Default: `4` - - * Note: Should be less than `GOSSIPSUB_MESH_TARGET` - - * Example: `GOSSIPSUB_MESH_MIN=4` - -* **`GOSSIPSUB_MESH_MAX`**: Maximum mesh connections - - * Purpose: Upper threshold before pruning excess peers (corresponds to `D_high`) - - * Default: `12` - - * Note: Should be greater than `GOSSIPSUB_MESH_TARGET` - - * Example: `GOSSIPSUB_MESH_MAX=12` +- **`GOSSIPSUB_PORT`**: Port for GossipSub protocol communication + - Purpose: Network port for GossipSub peer-to-peer communication + - Default: `6060` + - Usage: Internal P2P networking, separate from API ports + - Example: `GOSSIPSUB_PORT=6060` + +- **`GOSSIPSUB_MAX_MSG_SIZE`**: Maximum message size in bytes + - Purpose: Limits individual message size to prevent memory issues + - Default: `1048576` (1MB) + - Usage: Larger values allow bigger payloads but use more memory + - Example: `GOSSIPSUB_MAX_MSG_SIZE=1048576` + +- **`GOSSIPSUB_MESH_TARGET`**: Target number of mesh connections + - Purpose: Ideal number of direct peer connections (corresponds to `D`) + - Default: `6` + - Impact: Higher values increase redundancy but use more bandwidth + - Example: `GOSSIPSUB_MESH_TARGET=6` + +- **`GOSSIPSUB_MESH_MIN`**: Minimum mesh connections + - Purpose: Lower threshold before attempting to add peers (corresponds to `D_low`) + - Default: `4` + - Note: Should be less than `GOSSIPSUB_MESH_TARGET` + - Example: `GOSSIPSUB_MESH_MIN=4` + +- **`GOSSIPSUB_MESH_MAX`**: Maximum mesh connections + - Purpose: Upper threshold before pruning excess peers (corresponds to `D_high`) + - Default: `12` + - Note: Should be greater than `GOSSIPSUB_MESH_TARGET` + - Example: `GOSSIPSUB_MESH_MAX=12` ### Configuration Example ```yaml - # docker-compose.yml - services: p2pnode-1: environment: - -* GOSSIPSUB_PORT=6060 - - * GOSSIPSUB_MAX_MSG_SIZE=1048576 - - * GOSSIPSUB_MESH_TARGET=6 - - * GOSSIPSUB_MESH_MIN=4 - - * GOSSIPSUB_MESH_MAX=12 - + - GOSSIPSUB_PORT=6060 + - GOSSIPSUB_MAX_MSG_SIZE=1048576 + - GOSSIPSUB_MESH_TARGET=6 + - GOSSIPSUB_MESH_MIN=4 + - GOSSIPSUB_MESH_MAX=12 ``` ## GossipSub vs Optimum Protocol @@ -127,7 +96,6 @@ services: Optimum P2P runs two protocols simultaneously: 1. **Standard GossipSub**: For baseline pub/sub functionality - 2. **Optimum Protocol**: Enhanced with RLNC (Random Linear Network Coding) Both protocols have their own configuration parameters: @@ -143,19 +111,14 @@ Both protocols have their own configuration parameters: GossipSub uses four types of control messages: -* **GRAFT**: Add peer to mesh (invite to join topic mesh) +- **GRAFT**: Add peer to mesh (invite to join topic mesh) +- **PRUNE**: Remove peer from mesh (remove from topic mesh) +- **IHAVE**: Announce available messages (gossip metadata) +- **IWANT**: Request specific messages (response to IHAVE) -* **PRUNE**: Remove peer from mesh (remove from topic mesh) - -* **IHAVE**: Announce available messages (gossip metadata) - -* **IWANT**: Request specific messages (response to IHAVE) ## References -* [libp2p GossipSub v1.0 Specification](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/gossipsub-v1.0.md) - -* [libp2p PubSub Interface](https://github.com/libp2p/specs/blob/master/pubsub/README.md) - -* [Optimum P2P Configuration Guide](/docs/hackathon/deployment/p2p-with-gateway.md#p2p-node-configuration) - +- [libp2p GossipSub v1.0 Specification](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/gossipsub-v1.0.md) +- [libp2p PubSub Interface](https://github.com/libp2p/specs/blob/master/pubsub/README.md) +- [Optimum P2P Configuration Guide](/docs/hackathon/deployment/p2p-with-gateway.md#p2p-node-configuration) \ No newline at end of file diff --git a/docs/hackathon/configuration/optimump2p.md b/docs/hackathon/configuration/optimump2p.md index a3f2970..0400543 100644 --- a/docs/hackathon/configuration/optimump2p.md +++ b/docs/hackathon/configuration/optimump2p.md @@ -47,12 +47,9 @@ OptimumP2P configuration can be set via YAML config files or Docker environment Controls how many coded shards each message is divided into for network coding. This is the fundamental parameter that determines RLNC granularity. **Technical Impact**: - -* **Higher values**: More coded shards provide better redundancy and fault tolerance but increase computational overhead - -* **Lower values**: Fewer coded shards reduce processing time and bandwidth usage but may reduce fault tolerance - -* **Network effect**: Directly affects the minimum number of coded shards needed for message reconstruction +- **Higher values**: More coded shards provide better redundancy and fault tolerance but increase computational overhead +- **Lower values**: Fewer coded shards reduce processing time and bandwidth usage but may reduce fault tolerance +- **Network effect**: Directly affects the minimum number of coded shards needed for message reconstruction ### Publisher Shard Multiplier @@ -63,10 +60,8 @@ Controls how many coded shards each message is divided into for network coding. Controls redundancy when publishing messages. Total coded shards created = `rlnc_shard_factor × publisher_shard_multiplier`. **Technical Impact**: - -* **Higher values**: More initial coded shards improve delivery guarantees but increase bandwidth usage - -* **Lower values**: Fewer coded shards reduce network load but may impact reliability in lossy networks +- **Higher values**: More initial coded shards improve delivery guarantees but increase bandwidth usage +- **Lower values**: Fewer coded shards reduce network load but may impact reliability in lossy networks ### Forward Shard Threshold @@ -77,99 +72,59 @@ Controls redundancy when publishing messages. Total coded shards created = `rlnc Determines when nodes forward received coded shards. Nodes forward when they have more than `rlnc_shard_factor × threshold` coded shards. **Technical Impact**: - -* **Higher values** (0.8-0.9): More reliable forwarding, increased latency - -* **Lower values** (0.5-0.6): Faster propagation, reduced latency, potential reliability trade-offs +- **Higher values** (0.8-0.9): More reliable forwarding, increased latency +- **Lower values** (0.5-0.6): Faster propagation, reduced latency, potential reliability trade-offs ## Docker Configuration Examples ### OptimumP2P Mode (Enhanced) - ```yaml - environment: - -* NODE_MODE=optimum - - * OPTIMUM_SHARD_FACTOR=4 - - * OPTIMUM_SHARD_MULT=1.5 - - * OPTIMUM_THRESHOLD=0.75 - - * OPTIMUM_MESH_TARGET=6 - - * OPTIMUM_MESH_MIN=3 - - * OPTIMUM_MESH_MAX=12 - + - NODE_MODE=optimum + - OPTIMUM_SHARD_FACTOR=4 + - OPTIMUM_SHARD_MULT=1.5 + - OPTIMUM_THRESHOLD=0.75 + - OPTIMUM_MESH_TARGET=6 + - OPTIMUM_MESH_MIN=3 + - OPTIMUM_MESH_MAX=12 ``` ### GossipSub Mode (Baseline) - ```yaml - environment: - -* NODE_MODE=gossipsub - - * GOSSIPSUB_MESH_TARGET=6 - - * GOSSIPSUB_MESH_MIN=4 - - * GOSSIPSUB_MESH_MAX=12 - + - NODE_MODE=gossipsub + - GOSSIPSUB_MESH_TARGET=6 + - GOSSIPSUB_MESH_MIN=4 + - GOSSIPSUB_MESH_MAX=12 ``` ## Performance Tuning ### High Throughput Setup - Optimized for maximum message throughput: - ```yaml - -* OPTIMUM_SHARD_FACTOR=8 - -* OPTIMUM_SHARD_MULT=2.0 - -* OPTIMUM_THRESHOLD=0.5 - -* OPTIMUM_MESH_TARGET=8 - +- OPTIMUM_SHARD_FACTOR=8 +- OPTIMUM_SHARD_MULT=2.0 +- OPTIMUM_THRESHOLD=0.5 +- OPTIMUM_MESH_TARGET=8 ``` ### Low Latency Setup - Optimized for minimum delivery latency: - ```yaml - -* OPTIMUM_SHARD_FACTOR=4 - -* OPTIMUM_SHARD_MULT=1.2 - -* OPTIMUM_THRESHOLD=0.6 - -* OPTIMUM_MESH_TARGET=6 - +- OPTIMUM_SHARD_FACTOR=4 +- OPTIMUM_SHARD_MULT=1.2 +- OPTIMUM_THRESHOLD=0.6 +- OPTIMUM_MESH_TARGET=6 ``` ### High Reliability Setup - Optimized for maximum fault tolerance: - ```yaml - -* OPTIMUM_SHARD_FACTOR=16 - -* OPTIMUM_SHARD_MULT=2.5 - -* OPTIMUM_THRESHOLD=0.8 - -* OPTIMUM_MESH_TARGET=10 - +- OPTIMUM_SHARD_FACTOR=16 +- OPTIMUM_SHARD_MULT=2.5 +- OPTIMUM_THRESHOLD=0.8 +- OPTIMUM_MESH_TARGET=10 ``` ## Configuration File Format @@ -177,44 +132,33 @@ Optimized for maximum fault tolerance: Sample YAML configuration matching the actual config structure: ```yaml - # === General App Settings === - app_port: 23422 cluster_id: "production_cluster" file_storage_directory: /tmp silent_mode_enabled: false # === Protocol Settings === - enable_gossipsub: false enable_optimum_p2p: true # === PubSub Mesh Settings === - mesh_degree_target: 6 mesh_degree_min: 5 mesh_degree_max: 12 rlnc_shard_factor: 32 # number of coded shards each message is divided into # === Message Generation === - random_message_size_bytes: 3145728 # 3MB - publisher_shard_multiplier: 1.5 # coded shards multiplier for publishing - forward_shard_threshold: 0.75 # forward threshold for coded shards # === Bootstrap Nodes === - bootstrap_nodes_optimum_p2p: - -* /ip4/127.0.0.1/tcp/10000/p2p/12D3KooWExample + - /ip4/127.0.0.1/tcp/10000/p2p/12D3KooWExample bootstrap_nodes_gossipsub: - -* /ip4/127.0.0.1/tcp/10000/p2p/12D3KooWExample - + - /ip4/127.0.0.1/tcp/10000/p2p/12D3KooWExample ``` ## Protocol Mode Switching @@ -222,124 +166,81 @@ bootstrap_nodes_gossipsub: OptimumP2P supports running both protocols for comparison: **OptimumP2P Mode** (`NODE_MODE=optimum`): - -* Uses RLNC with coded shards for enhanced propagation - -* Provides early forwarding capabilities - -* Better bandwidth efficiency through network coding - -* Enhanced fault tolerance via coded shard redundancy +- Uses RLNC with coded shards for enhanced propagation +- Provides early forwarding capabilities +- Better bandwidth efficiency through network coding +- Enhanced fault tolerance via coded shard redundancy **GossipSub Mode** (`NODE_MODE=gossipsub`): - -* Standard libp2p GossipSub implementation - -* Direct message forwarding without coding - -* Lower computational overhead - -* Baseline for performance comparison +- Standard libp2p GossipSub implementation +- Direct message forwarding without coding +- Lower computational overhead +- Baseline for performance comparison ## Monitoring Configuration Verify your configuration is applied correctly: ```bash - # Check applied configuration - curl http://localhost:9090/config # Monitor mesh formation and peer connections - curl http://localhost:9090/debug/peers # Check protocol mode in logs - docker logs p2pnode-1 | grep -E "(optimum|gossipsub|coded.*shard)" # Monitor coded shard processing - docker logs p2pnode-1 | grep -E "(shard|forward|decode)" - ``` ## Configuration Constraints **Enforced by code**: - -* `mesh_degree_min <= mesh_degree_target <= mesh_degree_max` - -* `random_message_size_bytes > 0` - -* `cluster_id` must not be empty or "sample_cluster" +- `mesh_degree_min <= mesh_degree_target <= mesh_degree_max` +- `random_message_size_bytes > 0` +- `cluster_id` must not be empty or "sample_cluster" **Recommended best practices**: - -* `forward_shard_threshold` between 0.0 and 1.0 (values outside this range may cause unexpected behavior) - -* `rlnc_shard_factor > 0` (value of 0 disables RLNC functionality) - -* `publisher_shard_multiplier >= 1.0` (values < 1.0 reduce redundancy) +- `forward_shard_threshold` between 0.0 and 1.0 (values outside this range may cause unexpected behavior) +- `rlnc_shard_factor > 0` (value of 0 disables RLNC functionality) +- `publisher_shard_multiplier >= 1.0` (values < 1.0 reduce redundancy) ## Complete Docker Compose Example ```yaml - services: p2pnode-1: image: getoptimum/p2pnode:latest environment: # Protocol selection - -* NODE_MODE=optimum - - * CLUSTER_ID=p2pnode-1 - + - NODE_MODE=optimum + - CLUSTER_ID=p2pnode-1 # RLNC coded shard parameters - -* OPTIMUM_SHARD_FACTOR=4 - - * OPTIMUM_SHARD_MULT=1.5 - - * OPTIMUM_THRESHOLD=0.75 - + - OPTIMUM_SHARD_FACTOR=4 + - OPTIMUM_SHARD_MULT=1.5 + - OPTIMUM_THRESHOLD=0.75 # Mesh topology - -* OPTIMUM_MESH_TARGET=6 - - * OPTIMUM_MESH_MIN=3 - - * OPTIMUM_MESH_MAX=12 - + - OPTIMUM_MESH_TARGET=6 + - OPTIMUM_MESH_MIN=3 + - OPTIMUM_MESH_MAX=12 # Network settings - -* OPTIMUM_PORT=7070 - - * OPTIMUM_MAX_MSG_SIZE=1048576 - - * SIDECAR_PORT=33212 - - * API_PORT=9090 - + - OPTIMUM_PORT=7070 + - OPTIMUM_MAX_MSG_SIZE=1048576 + - SIDECAR_PORT=33212 + - API_PORT=9090 # Bootstrap configuration - -* BOOTSTRAP_PEERS=/ip4/172.28.0.12/tcp/7070/p2p/${BOOTSTRAP_PEER_ID} - + - BOOTSTRAP_PEERS=/ip4/172.28.0.12/tcp/7070/p2p/${BOOTSTRAP_PEER_ID} ``` ## See Also -* **[GossipSub Configuration](./gossipsub.md)** - Standard protocol parameters for comparison - -* **[P2P-Only Deployment](../deployment/p2p-only.md)** - Complete setup with configuration - -* **[Gateway + P2P Deployment](../deployment/p2p-with-gateway.md)** - Full stack configuration - -* **[OptimumP2P Technical Overview](../../learn/overview/p2p.md)** - Protocol fundamentals and RLNC details - +- **[GossipSub Configuration](./gossipsub.md)** - Standard protocol parameters for comparison +- **[P2P-Only Deployment](../deployment/p2p-only.md)** - Complete setup with configuration +- **[Gateway + P2P Deployment](../deployment/p2p-with-gateway.md)** - Full stack configuration +- **[OptimumP2P Technical Overview](../../learn/overview/p2p.md)** - Protocol fundamentals and RLNC details \ No newline at end of file diff --git a/docs/hackathon/deployment/p2p-only.md b/docs/hackathon/deployment/p2p-only.md index 888325a..f506a1b 100644 --- a/docs/hackathon/deployment/p2p-only.md +++ b/docs/hackathon/deployment/p2p-only.md @@ -2,372 +2,237 @@ This guide covers deploying a standalone OptimumP2P network without gateway intermediaries. In this configuration, clients connect directly to P2P nodes using gRPC sidecar connections, providing maximum performance and protocol flexibility. -## Network Topology -The P2P network forms a mesh topology where each node maintains connections to a subset of peers based on the configured mesh parameters: +### Network Topology -* **Mesh Target (`OPTIMUM_MESH_TARGET`)**: Ideal number of peers per topic +The P2P network forms a mesh topology where each node maintains connections to a subset of peers based on the configured mesh parameters: -* **Mesh Range (`OPTIMUM_MESH_MIN` to `OPTIMUM_MESH_MAX`)**: Acceptable peer count bounds +- **Mesh Target (`OPTIMUM_MESH_TARGET`)**: Ideal number of peers per topic +- **Mesh Range (`OPTIMUM_MESH_MIN` to `OPTIMUM_MESH_MAX`)**: Acceptable peer count bounds +- **Bootstrap Nodes**: Initial discovery points for new nodes joining the network -* **Bootstrap Nodes**: Initial discovery points for new nodes joining the network ## Deployment Configuration ```yaml - services: p2pnode-1: image: 'getoptimum/p2pnode:latest' platform: linux/amd64 environment: - -* LOG_LEVEL=debug - - * CLUSTER_ID=p2pnode-1 - - * NODE_MODE=optimum - - * SIDECAR_PORT=33212 - - * API_PORT=9090 - - * IDENTITY_DIR=/identity - - * OPTIMUM_PORT=7070 - - * OPTIMUM_MAX_MSG_SIZE=1048576 - - * OPTIMUM_MESH_TARGET=6 - - * OPTIMUM_MESH_MIN=3 - - * OPTIMUM_MESH_MAX=12 - - * OPTIMUM_SHARD_FACTOR=4 - - * OPTIMUM_SHARD_MULT=1.5 - - * OPTIMUM_THRESHOLD=0.75 - - * BOOTSTRAP_PEERS=/ip4/172.28.0.12/tcp/7070/p2p/${BOOTSTRAP_PEER_ID} - + - LOG_LEVEL=debug + - CLUSTER_ID=p2pnode-1 + - NODE_MODE=optimum + - SIDECAR_PORT=33212 + - API_PORT=9090 + - IDENTITY_DIR=/identity + - OPTIMUM_PORT=7070 + - OPTIMUM_MAX_MSG_SIZE=1048576 + - OPTIMUM_MESH_TARGET=6 + - OPTIMUM_MESH_MIN=3 + - OPTIMUM_MESH_MAX=12 + - OPTIMUM_SHARD_FACTOR=4 + - OPTIMUM_SHARD_MULT=1.5 + - OPTIMUM_THRESHOLD=0.75 + - BOOTSTRAP_PEERS=/ip4/172.28.0.12/tcp/7070/p2p/${BOOTSTRAP_PEER_ID} networks: optimum-network: ipv4_address: 172.28.0.12 ports: - -* "33221:33212" # gRPC sidecar - - * "7071:7070" # OptimumP2P - - * "9091:9090" # API - + - "33221:33212" # gRPC sidecar + - "7071:7070" # OptimumP2P + - "9091:9090" # API volumes: - -* ./identity:/identity + - ./identity:/identity p2pnode-2: image: 'getoptimum/p2pnode:latest' platform: linux/amd64 environment: - -* LOG_LEVEL=debug - - * CLUSTER_ID=p2pnode-2 - - * NODE_MODE=optimum - - * SIDECAR_PORT=33212 - - * API_PORT=9090 - - * IDENTITY_DIR=/identity - - * OPTIMUM_PORT=7070 - - * OPTIMUM_MAX_MSG_SIZE=1048576 - - * OPTIMUM_MESH_TARGET=6 - - * OPTIMUM_MESH_MIN=3 - - * OPTIMUM_MESH_MAX=12 - - * OPTIMUM_SHARD_FACTOR=4 - - * OPTIMUM_SHARD_MULT=1.5 - - * OPTIMUM_THRESHOLD=0.75 - - * BOOTSTRAP_PEERS=/ip4/172.28.0.12/tcp/7070/p2p/${BOOTSTRAP_PEER_ID} - + - LOG_LEVEL=debug + - CLUSTER_ID=p2pnode-2 + - NODE_MODE=optimum + - SIDECAR_PORT=33212 + - API_PORT=9090 + - IDENTITY_DIR=/identity + - OPTIMUM_PORT=7070 + - OPTIMUM_MAX_MSG_SIZE=1048576 + - OPTIMUM_MESH_TARGET=6 + - OPTIMUM_MESH_MIN=3 + - OPTIMUM_MESH_MAX=12 + - OPTIMUM_SHARD_FACTOR=4 + - OPTIMUM_SHARD_MULT=1.5 + - OPTIMUM_THRESHOLD=0.75 + - BOOTSTRAP_PEERS=/ip4/172.28.0.12/tcp/7070/p2p/${BOOTSTRAP_PEER_ID} networks: optimum-network: ipv4_address: 172.28.0.13 ports: - -* "33222:33212" - - * "7072:7070" - - * "9092:9090" + - "33222:33212" + - "7072:7070" + - "9092:9090" networks: optimum-network: driver: bridge ipam: config: - -* subnet: 172.28.0.0/16 - + - subnet: 172.28.0.0/16 ``` ## Environment Variables ### Core Configuration -* **`NODE_MODE`**: P2P protocol implementation mode - - * Purpose: Selects the underlying pub/sub protocol - - * Values: `optimum` (RLNC-enhanced) or `gossipsub` (standard libp2p) - - * Default: `optimum` - - * Usage: Use `optimum` for better performance with RLNC coding - - * Note: All nodes in network should use same mode for compatibility - -* **`CLUSTER_ID`**: Unique identifier for each P2P node - - * Purpose: Distinguishes nodes in logs, metrics, and network topology - - * Usage: Should be unique across all P2P nodes in deployment - - * Format: Alphanumeric string, typically `p2pnode-1`, `p2pnode-2`, etc. - - * Required: Yes, no default value - -* **`LOG_LEVEL`**: Logging verbosity level - - * Purpose: Controls the amount and detail of log output - - * Values: `debug`, `info`, `warn`, `error` - - * Default: `info` - - * Usage Guide: - - * `debug`: Most verbose, includes detailed P2P protocol events (development) - - * `info`: Standard level with operational information - - * `warn`: Only warnings and errors (quiet operation) - - * `error`: Only error messages (minimal logging) +- **`NODE_MODE`**: P2P protocol implementation mode + - Purpose: Selects the underlying pub/sub protocol + - Values: `optimum` (RLNC-enhanced) or `gossipsub` (standard libp2p) + - Default: `optimum` + - Usage: Use `optimum` for better performance with RLNC coding + - Note: All nodes in network should use same mode for compatibility + +- **`CLUSTER_ID`**: Unique identifier for each P2P node + - Purpose: Distinguishes nodes in logs, metrics, and network topology + - Usage: Should be unique across all P2P nodes in deployment + - Format: Alphanumeric string, typically `p2pnode-1`, `p2pnode-2`, etc. + - Required: Yes, no default value + +- **`LOG_LEVEL`**: Logging verbosity level + - Purpose: Controls the amount and detail of log output + - Values: `debug`, `info`, `warn`, `error` + - Default: `info` + - Usage Guide: + - `debug`: Most verbose, includes detailed P2P protocol events (development) + - `info`: Standard level with operational information + - `warn`: Only warnings and errors (quiet operation) + - `error`: Only error messages (minimal logging) ### Port Configuration -* **`SIDECAR_PORT`**: gRPC bidirectional communication port - - * Purpose: Port where clients connect directly to interact with P2P node - - * Default: `33212` - - * Range: Any available port - - * Usage: Must be accessible from client applications for direct P2P access - - * Network: Used for client-to-node gRPC communication - -* **`API_PORT`**: HTTP monitoring and management API port - - * Purpose: Exposes REST endpoints for health checks, node state, and metrics - - * Default: `9090` - - * Range: Any available port - - * Endpoints: `/api/v1/health`, `/api/v1/node-state`, `/api/v1/version` - - * Usage: Used for operational monitoring and debugging - -* **`OPTIMUM_PORT`**: P2P protocol communication port - - * Purpose: Port for peer-to-peer communication between nodes - - * Default: `7070` - - * Range: Any available port - - * Usage: Must be accessible between all P2P nodes in the mesh - - * Network: Used for inter-node OptimumP2P protocol communication +- **`SIDECAR_PORT`**: gRPC bidirectional communication port + - Purpose: Port where clients connect directly to interact with P2P node + - Default: `33212` + - Range: Any available port + - Usage: Must be accessible from client applications for direct P2P access + - Network: Used for client-to-node gRPC communication + +- **`API_PORT`**: HTTP monitoring and management API port + - Purpose: Exposes REST endpoints for health checks, node state, and metrics + - Default: `9090` + - Range: Any available port + - Endpoints: `/api/v1/health`, `/api/v1/node-state`, `/api/v1/version` + - Usage: Used for operational monitoring and debugging + +- **`OPTIMUM_PORT`**: P2P protocol communication port + - Purpose: Port for peer-to-peer communication between nodes + - Default: `7070` + - Range: Any available port + - Usage: Must be accessible between all P2P nodes in the mesh + - Network: Used for inter-node OptimumP2P protocol communication ### RLNC Parameters -* **`OPTIMUM_MAX_MSG_SIZE`**: Maximum message size in bytes - - * Purpose: Limits individual message size to prevent memory issues - - * Default: `1048576` (1MB) - - * Usage: Larger values allow bigger payloads but use more memory/bandwidth - +- **`OPTIMUM_MAX_MSG_SIZE`**: Maximum message size in bytes + - Purpose: Limits individual message size to prevent memory issues + - Default: `1048576` (1MB) + - Usage: Larger values allow bigger payloads but use more memory/bandwidth -* **`OPTIMUM_SHARD_FACTOR`**: Number of coded shards per message - - * Purpose: Controls how many pieces each message is split into for RLNC - - * Default: `4` - - * Impact: Higher values increase redundancy and fault tolerance but use more bandwidth - - * Note: Must be non-zero to enable RLNC functionality - -* **`OPTIMUM_SHARD_MULT`**: Shard size redundancy multiplier - - * Purpose: Controls redundancy factor for error recovery - - * Default: `1.5` - - * Impact: Higher values improve error recovery but increase bandwidth usage - - * Note: Values >1.0 add redundancy (e.g., 1.5 = 50% redundancy) - +- **`OPTIMUM_SHARD_FACTOR`**: Number of coded shards per message + - Purpose: Controls how many pieces each message is split into for RLNC + - Default: `4` + - Impact: Higher values increase redundancy and fault tolerance but use more bandwidth + - Note: Must be non-zero to enable RLNC functionality + +- **`OPTIMUM_SHARD_MULT`**: Shard size redundancy multiplier + - Purpose: Controls redundancy factor for error recovery + - Default: `1.5` + - Impact: Higher values improve error recovery but increase bandwidth usage + - Note: Values >1.0 add redundancy (e.g., 1.5 = 50% redundancy) -* **`OPTIMUM_THRESHOLD`**: Forward/decode threshold ratio - - * Purpose: Fraction of shards needed before forwarding or decoding message - - * Default: `0.75` (75%) - - * Validation: Must be between 0 and 1 (exclusive of 0, inclusive of 1) - - * Impact: Critical for network performance tuning - - * Note: Lower values reduce latency but may reduce reliability; higher values improve reliability but increase latency +- **`OPTIMUM_THRESHOLD`**: Forward/decode threshold ratio + - Purpose: Fraction of shards needed before forwarding or decoding message + - Default: `0.75` (75%) + - Validation: Must be between 0 and 1 (exclusive of 0, inclusive of 1) + - Impact: Critical for network performance tuning + - Note: Lower values reduce latency but may reduce reliability; higher values improve reliability but increase latency ### Mesh Topology Configuration -* **`OPTIMUM_MESH_TARGET`**: Target number of peer connections - - * Purpose: Ideal number of peers each node connects to in the mesh - - * Default: `6` - - * Range: 3-50 (typically 4-12 for most deployments) - - * Impact: Higher values increase redundancy and fault tolerance but use more resources +- **`OPTIMUM_MESH_TARGET`**: Target number of peer connections + - Purpose: Ideal number of peers each node connects to in the mesh + - Default: `6` + - Range: 3-50 (typically 4-12 for most deployments) + - Impact: Higher values increase redundancy and fault tolerance but use more resources -* **`OPTIMUM_MESH_MIN`**: Minimum mesh peer connections - * Purpose: Minimum connections before attempting to add more peers +- **`OPTIMUM_MESH_MIN`**: Minimum mesh peer connections + - Purpose: Minimum connections before attempting to add more peers + - Default: `4` + - Note: Should be less than MESH_TARGET + - Impact: Lower values reduce fault tolerance, higher values increase resource usage + - Usage: Prevents network partitioning by maintaining minimum connectivity - * Default: `4` - - * Note: Should be less than MESH_TARGET - - * Impact: Lower values reduce fault tolerance, higher values increase resource usage - - * Usage: Prevents network partitioning by maintaining minimum connectivity - -* **`OPTIMUM_MESH_MAX`**: Maximum mesh peer connections - - * Purpose: Maximum connections before pruning excess peers - - * Default: `12` - - * Note: Should be greater than MESH_TARGET - - * Impact: Prevents resource exhaustion while maintaining network connectivity - - * Usage: Sets upper bound to control memory and bandwidth usage +- **`OPTIMUM_MESH_MAX`**: Maximum mesh peer connections + - Purpose: Maximum connections before pruning excess peers + - Default: `12` + - Note: Should be greater than MESH_TARGET + - Impact: Prevents resource exhaustion while maintaining network connectivity + - Usage: Sets upper bound to control memory and bandwidth usage ### Bootstrap and Identity Configuration -* **`BOOTSTRAP_PEERS`**: Initial peer discovery addresses - - * Purpose: List of known peers for joining the mesh network - - * Format: `/ip4//tcp//p2p/` - - * Example: `/ip4/172.28.0.12/tcp/7070/p2p/12D3KooW...` - - * Usage: New nodes use these to discover and join the network - - * Multiple: Can specify multiple peers separated by commas - - * Note: At least one bootstrap peer must be accessible for network joining - -* **`IDENTITY_DIR`**: Node cryptographic identity directory - - * Purpose: Directory containing node's P2P identity key (p2p.key) - - * Default: `/identity` - - * Usage: Only needed for bootstrap nodes, other nodes auto-generate identity - - * Security: Contains private key material, should be properly secured - - * Permissions: Ensure proper file permissions (600) for security +- **`BOOTSTRAP_PEERS`**: Initial peer discovery addresses + - Purpose: List of known peers for joining the mesh network + - Format: `/ip4//tcp//p2p/` + - Example: `/ip4/172.28.0.12/tcp/7070/p2p/12D3KooW...` + - Usage: New nodes use these to discover and join the network + - Multiple: Can specify multiple peers separated by commas + - Note: At least one bootstrap peer must be accessible for network joining + +- **`IDENTITY_DIR`**: Node cryptographic identity directory + - Purpose: Directory containing node's P2P identity key (p2p.key) + - Default: `/identity` + - Usage: Only needed for bootstrap nodes, other nodes auto-generate identity + - Security: Contains private key material, should be properly secured + - Permissions: Ensure proper file permissions (600) for security ### Configuration Notes All parameter values can be adjusted based on specific use case requirements. TWhen modifying parameters: -* Higher OPTIMUM_THRESHOLD values improve reliability but increase latency - -* Higher OPTIMUM_MESH_TARGET values improve fault tolerance but use more resources - -* Higher OPTIMUM_SHARD_FACTOR values improve redundancy but increase bandwidth usage - -* OPTIMUM_MESH_MIN should be less than OPTIMUM_MESH_TARGET - -* OPTIMUM_MESH_MAX should be greater than OPTIMUM_MESH_TARGET +- Higher OPTIMUM_THRESHOLD values improve reliability but increase latency +- Higher OPTIMUM_MESH_TARGET values improve fault tolerance but use more resources +- Higher OPTIMUM_SHARD_FACTOR values improve redundancy but increase bandwidth usage +- OPTIMUM_MESH_MIN should be less than OPTIMUM_MESH_TARGET +- OPTIMUM_MESH_MAX should be greater than OPTIMUM_MESH_TARGET ## Starting the Network 1. Generate peer identity (optional, will auto-generate if not present): - ```bash - # Create identity directory - mkdir -p identity # Generate peer key - docker run --rm -v $(pwd)/identity:/identity getoptimum/p2pnode:latest generate-key - ``` -1. Set bootstrap peer ID: - +2. Set bootstrap peer ID: ```bash - export BOOTSTRAP_PEER_ID=$(docker run --rm -v $(pwd)/identity:/identity getoptimum/p2pnode:latest peer-id) - ``` -1. Start the network: - +3. Start the network: ```bash - docker-compose up -d - ``` -1. Verify nodes are running: - +4. Verify nodes are running: ```bash - docker-compose ps docker-compose logs p2pnode-1 - ``` ## Client Connection @@ -375,73 +240,50 @@ docker-compose logs p2pnode-1 Clients connect directly to P2P nodes via gRPC sidecar: ```go - conn, err := grpc.Dial("localhost:33221", grpc.WithInsecure()) if err != nil { log.Fatal(err) } client := pb.NewP2PStreamClient(conn) - ``` ## Network Scaling To add more nodes, replicate the service definition with: - -* Unique `CLUSTER_ID` - -* Unique IP address in the network - -* Unique port mappings - -* Same `BOOTSTRAP_PEERS` configuration +- Unique `CLUSTER_ID` +- Unique IP address in the network +- Unique port mappings +- Same `BOOTSTRAP_PEERS` configuration ## Monitoring Access node metrics and status: - -* Node 1: http://localhost:9091 - -* Node 2: http://localhost:9092 +- Node 1: http://localhost:9091 +- Node 2: http://localhost:9092 ## Troubleshooting ### Peer Discovery Issues - Check bootstrap peer configuration and network connectivity: - ```bash - docker-compose exec p2pnode-1 ping p2pnode-2 docker-compose logs p2pnode-1 | grep "bootstrap" - ``` ### Mesh Formation - Verify peers are discovering each other: - ```bash - curl http://localhost:9091/debug/peers - ``` ### Message Flow - Check message propagation in logs: - ```bash - docker-compose logs -f | grep "message" - ``` ## See Also -* [GossipSub Configuration Guide](/docs/hackathon/configuration/gossipsub.md) - Detailed explanation of underlying pub/sub protocol parameters - -* [P2P with Gateway Deployment](/docs/hackathon/deployment/p2p-with-gateway.md) - Alternative deployment with gateway layer - -* [First Message Tutorial](/docs/hackathon/quick-start/first-message.md) - Step-by-step getting started guide - +- [GossipSub Configuration Guide](/docs/hackathon/configuration/gossipsub.md) - Detailed explanation of underlying pub/sub protocol parameters +- [P2P with Gateway Deployment](/docs/hackathon/deployment/p2p-with-gateway.md) - Alternative deployment with gateway layer +- [First Message Tutorial](/docs/hackathon/quick-start/first-message.md) - Step-by-step getting started guide \ No newline at end of file diff --git a/docs/hackathon/deployment/p2p-with-gateway.md b/docs/hackathon/deployment/p2p-with-gateway.md index df33331..69de61b 100644 --- a/docs/hackathon/deployment/p2p-with-gateway.md +++ b/docs/hackathon/deployment/p2p-with-gateway.md @@ -2,633 +2,397 @@ This guide covers deploying OptimumP2P with gateway services that provide HTTP/WebSocket/gRPC APIs for client applications. The gateway acts as a bridge between traditional client-server applications and the OptimumP2P network. -## Component Responsibilities -**Gateway Layer:** - -* Protocol translation (HTTP/WebSocket/gRPC ↔ libp2p) - -* Client session management - -* Load balancing across P2P nodes - -* Rate limiting and authentication +### Component Responsibilities -* API versioning and compatibility +**Gateway Layer:** +- Protocol translation (HTTP/WebSocket/gRPC ↔ libp2p) +- Client session management +- Load balancing across P2P nodes +- Rate limiting and authentication +- API versioning and compatibility **P2P Network Layer:** +- RLNC message encoding/decoding +- Mesh topology maintenance +- Peer discovery and routing +- Message propagation via GossipSub +- Network resilience and fault tolerance -* RLNC message encoding/decoding - -* Mesh topology maintenance - -* Peer discovery and routing - -* Message propagation via GossipSub - -* Network resilience and fault tolerance ## Deployment Configuration Complete setup with gateways and P2P nodes: ```yaml - services: gateway-1: image: 'getoptimum/gateway:latest' platform: linux/amd64 ports: - -* "8081:8080" # HTTP/WebSocket - - * "50051:50051" # gRPC - + - "8081:8080" # HTTP/WebSocket + - "50051:50051" # gRPC environment: - -* GATEWAY_PORT=:8080 - - * CLUSTER_ID=gateway-1 - - * ENABLE_AUTH=false - - * LOG_LEVEL=debug - - * P2P_NODES=p2pnode-1:33212,p2pnode-2:33212,p2pnode-3:33212,p2pnode-4:33212 - + - GATEWAY_PORT=:8080 + - CLUSTER_ID=gateway-1 + - ENABLE_AUTH=false + - LOG_LEVEL=debug + - P2P_NODES=p2pnode-1:33212,p2pnode-2:33212,p2pnode-3:33212,p2pnode-4:33212 networks: optimum-network: ipv4_address: 172.28.0.10 depends_on: - -* p2pnode-1 - - * p2pnode-2 - - * p2pnode-3 - - * p2pnode-4 + - p2pnode-1 + - p2pnode-2 + - p2pnode-3 + - p2pnode-4 gateway-2: image: 'getoptimum/gateway:latest' platform: linux/amd64 ports: - -* "8082:8080" - - * "50052:50051" - + - "8082:8080" + - "50052:50051" environment: - -* GATEWAY_PORT=:8080 - - * CLUSTER_ID=gateway-2 - - * ENABLE_AUTH=false - - * LOG_LEVEL=debug - - * P2P_NODES=p2pnode-1:33212,p2pnode-2:33212,p2pnode-3:33212,p2pnode-4:33212 - + - GATEWAY_PORT=:8080 + - CLUSTER_ID=gateway-2 + - ENABLE_AUTH=false + - LOG_LEVEL=debug + - P2P_NODES=p2pnode-1:33212,p2pnode-2:33212,p2pnode-3:33212,p2pnode-4:33212 networks: optimum-network: ipv4_address: 172.28.0.11 depends_on: - -* p2pnode-1 - - * p2pnode-2 - - * p2pnode-3 - - * p2pnode-4 + - p2pnode-1 + - p2pnode-2 + - p2pnode-3 + - p2pnode-4 p2pnode-1: image: 'getoptimum/p2pnode:latest' platform: linux/amd64 volumes: - -* ./identity:/identity - + - ./identity:/identity environment: - -* LOG_LEVEL=debug - - * CLUSTER_ID=p2pnode-1 - - * NODE_MODE=optimum - - * SIDECAR_PORT=33212 - - * API_PORT=9090 - - * IDENTITY_DIR=/identity - - * OPTIMUM_PORT=7070 - - * OPTIMUM_MAX_MSG_SIZE=1048576 - - * OPTIMUM_MESH_TARGET=6 - - * OPTIMUM_MESH_MIN=3 - - * OPTIMUM_MESH_MAX=12 - - * OPTIMUM_SHARD_FACTOR=4 - - * OPTIMUM_SHARD_MULT=1.5 - - * OPTIMUM_THRESHOLD=0.75 - - * BOOTSTRAP_PEERS=/ip4/172.28.0.12/tcp/7070/p2p/${BOOTSTRAP_PEER_ID} - + - LOG_LEVEL=debug + - CLUSTER_ID=p2pnode-1 + - NODE_MODE=optimum + - SIDECAR_PORT=33212 + - API_PORT=9090 + - IDENTITY_DIR=/identity + - OPTIMUM_PORT=7070 + - OPTIMUM_MAX_MSG_SIZE=1048576 + - OPTIMUM_MESH_TARGET=6 + - OPTIMUM_MESH_MIN=3 + - OPTIMUM_MESH_MAX=12 + - OPTIMUM_SHARD_FACTOR=4 + - OPTIMUM_SHARD_MULT=1.5 + - OPTIMUM_THRESHOLD=0.75 + - BOOTSTRAP_PEERS=/ip4/172.28.0.12/tcp/7070/p2p/${BOOTSTRAP_PEER_ID} networks: optimum-network: ipv4_address: 172.28.0.12 ports: - -* "33221:33212" - - * "7071:7070" - - * "9091:9090" + - "33221:33212" + - "7071:7070" + - "9091:9090" p2pnode-2: image: 'getoptimum/p2pnode:latest' platform: linux/amd64 environment: - -* LOG_LEVEL=debug - - * CLUSTER_ID=p2pnode-2 - - * NODE_MODE=optimum - - * SIDECAR_PORT=33212 - - * API_PORT=9090 - - * IDENTITY_DIR=/identity - - * OPTIMUM_PORT=7070 - - * OPTIMUM_MAX_MSG_SIZE=1048576 - - * OPTIMUM_MESH_TARGET=6 - - * OPTIMUM_MESH_MIN=3 - - * OPTIMUM_MESH_MAX=12 - - * OPTIMUM_SHARD_FACTOR=4 - - * OPTIMUM_SHARD_MULT=1.5 - - * OPTIMUM_THRESHOLD=0.75 - - * BOOTSTRAP_PEERS=/ip4/172.28.0.12/tcp/7070/p2p/${BOOTSTRAP_PEER_ID} - + - LOG_LEVEL=debug + - CLUSTER_ID=p2pnode-2 + - NODE_MODE=optimum + - SIDECAR_PORT=33212 + - API_PORT=9090 + - IDENTITY_DIR=/identity + - OPTIMUM_PORT=7070 + - OPTIMUM_MAX_MSG_SIZE=1048576 + - OPTIMUM_MESH_TARGET=6 + - OPTIMUM_MESH_MIN=3 + - OPTIMUM_MESH_MAX=12 + - OPTIMUM_SHARD_FACTOR=4 + - OPTIMUM_SHARD_MULT=1.5 + - OPTIMUM_THRESHOLD=0.75 + - BOOTSTRAP_PEERS=/ip4/172.28.0.12/tcp/7070/p2p/${BOOTSTRAP_PEER_ID} networks: optimum-network: ipv4_address: 172.28.0.13 ports: - -* "33222:33212" - - * "7072:7070" - - * "9092:9090" + - "33222:33212" + - "7072:7070" + - "9092:9090" p2pnode-3: image: 'getoptimum/p2pnode:latest' platform: linux/amd64 environment: - -* LOG_LEVEL=debug - - * CLUSTER_ID=p2pnode-3 - - * NODE_MODE=optimum - - * SIDECAR_PORT=33212 - - * API_PORT=9090 - - * IDENTITY_DIR=/identity - - * OPTIMUM_PORT=7070 - - * OPTIMUM_MAX_MSG_SIZE=1048576 - - * OPTIMUM_MESH_TARGET=6 - - * OPTIMUM_MESH_MIN=3 - - * OPTIMUM_MESH_MAX=12 - - * OPTIMUM_SHARD_FACTOR=4 - - * OPTIMUM_SHARD_MULT=1.5 - - * OPTIMUM_THRESHOLD=0.75 - - * BOOTSTRAP_PEERS=/ip4/172.28.0.12/tcp/7070/p2p/${BOOTSTRAP_PEER_ID} - + - LOG_LEVEL=debug + - CLUSTER_ID=p2pnode-3 + - NODE_MODE=optimum + - SIDECAR_PORT=33212 + - API_PORT=9090 + - IDENTITY_DIR=/identity + - OPTIMUM_PORT=7070 + - OPTIMUM_MAX_MSG_SIZE=1048576 + - OPTIMUM_MESH_TARGET=6 + - OPTIMUM_MESH_MIN=3 + - OPTIMUM_MESH_MAX=12 + - OPTIMUM_SHARD_FACTOR=4 + - OPTIMUM_SHARD_MULT=1.5 + - OPTIMUM_THRESHOLD=0.75 + - BOOTSTRAP_PEERS=/ip4/172.28.0.12/tcp/7070/p2p/${BOOTSTRAP_PEER_ID} networks: optimum-network: ipv4_address: 172.28.0.14 ports: - -* "33223:33212" - - * "7073:7070" - - * "9093:9090" + - "33223:33212" + - "7073:7070" + - "9093:9090" p2pnode-4: image: 'getoptimum/p2pnode:latest' platform: linux/amd64 environment: - -* LOG_LEVEL=debug - - * CLUSTER_ID=p2pnode-4 - - * NODE_MODE=optimum - - * SIDECAR_PORT=33212 - - * API_PORT=9090 - - * IDENTITY_DIR=/identity - - * OPTIMUM_PORT=7070 - - * OPTIMUM_MAX_MSG_SIZE=1048576 - - * OPTIMUM_MESH_TARGET=6 - - * OPTIMUM_MESH_MIN=3 - - * OPTIMUM_MESH_MAX=12 - - * OPTIMUM_SHARD_FACTOR=4 - - * OPTIMUM_SHARD_MULT=1.5 - - * OPTIMUM_THRESHOLD=0.75 - - * BOOTSTRAP_PEERS=/ip4/172.28.0.12/tcp/7070/p2p/${BOOTSTRAP_PEER_ID} - + - LOG_LEVEL=debug + - CLUSTER_ID=p2pnode-4 + - NODE_MODE=optimum + - SIDECAR_PORT=33212 + - API_PORT=9090 + - IDENTITY_DIR=/identity + - OPTIMUM_PORT=7070 + - OPTIMUM_MAX_MSG_SIZE=1048576 + - OPTIMUM_MESH_TARGET=6 + - OPTIMUM_MESH_MIN=3 + - OPTIMUM_MESH_MAX=12 + - OPTIMUM_SHARD_FACTOR=4 + - OPTIMUM_SHARD_MULT=1.5 + - OPTIMUM_THRESHOLD=0.75 + - BOOTSTRAP_PEERS=/ip4/172.28.0.12/tcp/7070/p2p/${BOOTSTRAP_PEER_ID} networks: optimum-network: ipv4_address: 172.28.0.15 ports: - -* "33224:33212" - - * "7074:7070" - - * "9094:9090" + - "33224:33212" + - "7074:7070" + - "9094:9090" networks: optimum-network: driver: bridge ipam: config: - -* subnet: 172.28.0.0/16 - + - subnet: 172.28.0.0/16 ``` ## P2P Node Environment Variables ### Core P2P Configuration -* **`CLUSTER_ID`**: Unique identifier for each P2P node - - * Purpose: Distinguishes nodes in logs, metrics, and network topology - - * Usage: Should be unique across all P2P nodes in deployment - - * Format: Alphanumeric string, typically `p2pnode-1`, `p2pnode-2`, etc. - - * Required: Yes, no default value - -* **`NODE_MODE`**: P2P protocol implementation mode - - * Purpose: Selects the underlying pub/sub protocol - - * Values: `optimum` (RLNC-enhanced) or `gossipsub` (standard libp2p) - - * Default: `optimum` - - * Usage: Use `optimum` for better performance with RLNC coding - - * Note: All nodes in network should use same mode for compatibility - -* **`SIDECAR_PORT`**: gRPC bidirectional communication port - - * Purpose: Port where gateways and clients connect to interact with P2P node - - * Default: `33212` - - * Range: Any available port (1024-65535) - - * Usage: Must be accessible from gateway containers for internal communication - - * Network: Used for internal container-to-container communication - -* **`API_PORT`**: HTTP monitoring and management API port - - * Purpose: Exposes REST endpoints for health checks, node state, and metrics - - * Default: `8081` for gateway, `9090` for P2P nodes (varies by component) - - * Endpoints: `/api/v1/health`, `/api/v1/node-state`, `/api/v1/version` - - * Usage: Used for operational monitoring and debugging +- **`CLUSTER_ID`**: Unique identifier for each P2P node + - Purpose: Distinguishes nodes in logs, metrics, and network topology + - Usage: Should be unique across all P2P nodes in deployment + - Format: Alphanumeric string, typically `p2pnode-1`, `p2pnode-2`, etc. + - Required: Yes, no default value + +- **`NODE_MODE`**: P2P protocol implementation mode + - Purpose: Selects the underlying pub/sub protocol + - Values: `optimum` (RLNC-enhanced) or `gossipsub` (standard libp2p) + - Default: `optimum` + - Usage: Use `optimum` for better performance with RLNC coding + - Note: All nodes in network should use same mode for compatibility + +- **`SIDECAR_PORT`**: gRPC bidirectional communication port + - Purpose: Port where gateways and clients connect to interact with P2P node + - Default: `33212` + - Range: Any available port (1024-65535) + - Usage: Must be accessible from gateway containers for internal communication + - Network: Used for internal container-to-container communication + +- **`API_PORT`**: HTTP monitoring and management API port + - Purpose: Exposes REST endpoints for health checks, node state, and metrics + - Default: `8081` for gateway, `9090` for P2P nodes (varies by component) + - Endpoints: `/api/v1/health`, `/api/v1/node-state`, `/api/v1/version` + - Usage: Used for operational monitoring and debugging ### Network Discovery Configuration -* **`IDENTITY_DIR`**: Node cryptographic identity directory +- **`IDENTITY_DIR`**: Node cryptographic identity directory + - Purpose: Directory containing node's P2P identity key (p2p.key) + - Default: `/identity` + - Usage: Only needed for bootstrap nodes, other nodes auto-generate identity + - Security: Contains private key material, should be properly secured - * Purpose: Directory containing node's P2P identity key (p2p.key) - - * Default: `/identity` - - * Usage: Only needed for bootstrap nodes, other nodes auto-generate identity - - * Security: Contains private key material, should be properly secured - -* **`BOOTSTRAP_PEERS`**: Initial peer discovery addresses - - * Purpose: List of known peers for joining the mesh network - - * Format: `/ip4//tcp//p2p/` - - * Example: `/ip4/172.28.0.12/tcp/7070/p2p/12D3KooW...` - - * Usage: New nodes use these to discover and join the network - - * Multiple: Can specify multiple peers separated by commas +- **`BOOTSTRAP_PEERS`**: Initial peer discovery addresses + - Purpose: List of known peers for joining the mesh network + - Format: `/ip4//tcp//p2p/` + - Example: `/ip4/172.28.0.12/tcp/7070/p2p/12D3KooW...` + - Usage: New nodes use these to discover and join the network + - Multiple: Can specify multiple peers separated by commas ### OptimumP2P Protocol Configuration -* **`OPTIMUM_PORT`**: P2P protocol communication port +- **`OPTIMUM_PORT`**: P2P protocol communication port + - Purpose: Port for peer-to-peer communication between nodes + - Default: `7070` + - Range: Any available port, commonly 7070-7080 + - Usage: Must be accessible between all P2P nodes in the mesh + - Network: Used for inter-node OptimumP2P protocol communication - * Purpose: Port for peer-to-peer communication between nodes - - * Default: `7070` - - * Range: Any available port, commonly 7070-7080 - - * Usage: Must be accessible between all P2P nodes in the mesh - - * Network: Used for inter-node OptimumP2P protocol communication - -* **`OPTIMUM_MAX_MSG_SIZE`**: Maximum message size in bytes - - * Purpose: Limits individual message size to prevent memory issues - - * Default: `1048576` (1MB) - - * Usage: Larger values allow bigger payloads but use more memory/bandwidth +- **`OPTIMUM_MAX_MSG_SIZE`**: Maximum message size in bytes + - Purpose: Limits individual message size to prevent memory issues + - Default: `1048576` (1MB) + - Usage: Larger values allow bigger payloads but use more memory/bandwidth ### RLNC (Random Linear Network Coding) Configuration -* **`OPTIMUM_SHARD_FACTOR`**: Number of coded shards per message - - * Purpose: Controls how many pieces each message is split into for RLNC - - * Default: `4` - - * Impact: Higher values increase redundancy and fault tolerance but use more bandwidth - - * Note: Must be non-zero to enable RLNC functionality - -* **`OPTIMUM_SHARD_MULT`**: Shard size redundancy multiplier - - * Purpose: Controls redundancy factor for error recovery - - * Default: `1.5` - - * Impact: Higher values improve error recovery but increase bandwidth usage - - * Note: Values >1.0 add redundancy (e.g., 1.5 = 50% redundancy) - -* **`OPTIMUM_THRESHOLD`**: Forward/decode threshold ratio - - * Purpose: Fraction of shards needed before forwarding or decoding message - - * Default: `0.75` (75%) - - * Validation: Must be between 0 and 1 (exclusive of 0, inclusive of 1) - - * Impact: Critical for network performance tuning - - * Note: Lower values reduce latency but may reduce reliability; higher values improve reliability but increase latency +- **`OPTIMUM_SHARD_FACTOR`**: Number of coded shards per message + - Purpose: Controls how many pieces each message is split into for RLNC + - Default: `4` + - Impact: Higher values increase redundancy and fault tolerance but use more bandwidth + - Note: Must be non-zero to enable RLNC functionality + +- **`OPTIMUM_SHARD_MULT`**: Shard size redundancy multiplier + - Purpose: Controls redundancy factor for error recovery + - Default: `1.5` + - Impact: Higher values improve error recovery but increase bandwidth usage + - Note: Values >1.0 add redundancy (e.g., 1.5 = 50% redundancy) + +- **`OPTIMUM_THRESHOLD`**: Forward/decode threshold ratio + - Purpose: Fraction of shards needed before forwarding or decoding message + - Default: `0.75` (75%) + - Validation: Must be between 0 and 1 (exclusive of 0, inclusive of 1) + - Impact: Critical for network performance tuning + - Note: Lower values reduce latency but may reduce reliability; higher values improve reliability but increase latency ### Mesh Topology Configuration -* **`OPTIMUM_MESH_TARGET`**: Target number of peer connections - - * Purpose: Ideal number of peers each node connects to in the mesh - - * Default: `6` - - * Impact: Higher values increase redundancy and fault tolerance but use more resources - - * Scaling: Adjust based on network size and reliability requirements - -* **`OPTIMUM_MESH_MIN`**: Minimum mesh peer connections - - * Purpose: Minimum connections before attempting to add more peers - - * Default: `4` - - * Note: Should be less than `MESH_TARGET` - - * Impact: Lower values reduce fault tolerance, higher values increase resource usage - - * Usage: Prevents network partitioning by maintaining minimum connectivity - -* **`OPTIMUM_MESH_MAX`**: Maximum mesh peer connections - - * Purpose: Maximum connections before pruning excess peers - - * Default: `12` - - * Note: Should be greater than `MESH_TARGET` - - * Impact: Prevents resource exhaustion while maintaining network connectivity - - * Usage: Sets upper bound to control memory and bandwidth usage +- **`OPTIMUM_MESH_TARGET`**: Target number of peer connections + - Purpose: Ideal number of peers each node connects to in the mesh + - Default: `6` + - Impact: Higher values increase redundancy and fault tolerance but use more resources + - Scaling: Adjust based on network size and reliability requirements + +- **`OPTIMUM_MESH_MIN`**: Minimum mesh peer connections + - Purpose: Minimum connections before attempting to add more peers + - Default: `4` + - Note: Should be less than `MESH_TARGET` + - Impact: Lower values reduce fault tolerance, higher values increase resource usage + - Usage: Prevents network partitioning by maintaining minimum connectivity + +- **`OPTIMUM_MESH_MAX`**: Maximum mesh peer connections + - Purpose: Maximum connections before pruning excess peers + - Default: `12` + - Note: Should be greater than `MESH_TARGET` + - Impact: Prevents resource exhaustion while maintaining network connectivity + - Usage: Sets upper bound to control memory and bandwidth usage ### Configuration Notes All parameter values can be adjusted based on specific use case requirements. When modifying parameters: -* Higher OPTIMUM_THRESHOLD values improve reliability but increase latency - -* Higher OPTIMUM_MESH_TARGET values improve fault tolerance but use more resources - -* Higher OPTIMUM_SHARD_FACTOR values improve redundancy but increase bandwidth usage - -* OPTIMUM_MESH_MIN should be less than OPTIMUM_MESH_TARGET - -* OPTIMUM_MESH_MAX should be greater than OPTIMUM_MESH_TARGET +- Higher OPTIMUM_THRESHOLD values improve reliability but increase latency +- Higher OPTIMUM_MESH_TARGET values improve fault tolerance but use more resources +- Higher OPTIMUM_SHARD_FACTOR values improve redundancy but increase bandwidth usage +- OPTIMUM_MESH_MIN should be less than OPTIMUM_MESH_TARGET +- OPTIMUM_MESH_MAX should be greater than OPTIMUM_MESH_TARGET ## Gateway Configuration ### Environment Variables -* **`GATEWAY_PORT`**: HTTP/WebSocket server port (default: `:8080`) - - * Purpose: Defines the port where the gateway listens for client connections - - * Usage: Internal container port for REST API and WebSocket connections - - * Example: `:8080`, `:3000`, `:8081` - - * Note: External port mapping is configured separately in docker-compose ports section - -* **`CLUSTER_ID`**: Unique gateway identifier - - * Purpose: Distinguishes between multiple gateway instances in logs, metrics, and monitoring - - * Usage: Should be unique across all gateway instances in your deployment - - * Format: Alphanumeric string, no spaces - - * Example: `gateway-1`, `gateway-primary`, `gateway-us-east` - - * Required: Yes, no default value - -* **`ENABLE_AUTH`**: Enable Auth0 JWT authentication (true/false) - - * Purpose: Controls whether API requests require JWT authentication - - * Usage: Set to `false` for development/testing, `true` for production - - * Values: `true` (requires valid JWT tokens) or `false` (open access) - - * Default: `false` - - * Note: When `true`, requires additional Auth0 configuration (AUTH0_DOMAIN, AUTH0_AUDIENCE) - -* **`P2P_NODES`**: Comma-separated list of P2P node gRPC sidecar addresses - - * Purpose: Defines which P2P nodes the gateway can connect to for message routing - - * Format: `hostname:port,hostname:port,...` - - * Usage: Gateway load-balances requests across these nodes for high availability - - * Port: Should match SIDECAR_PORT of P2P nodes (typically 33212) - - * Example: `p2pnode-1:33212,p2pnode-2:33212,p2pnode-3:33212` - - * Behavior: Gateway attempts to connect to all listed nodes and routes to healthy ones - -* **`LOG_LEVEL`**: Logging verbosity level - - * Purpose: Controls the amount and detail of log output - - * Values: `debug`, `info`, `warn`, `error` - - * Default: `info` - - * Usage Guide: - - * `debug`: Most verbose, includes request/response details, connection events (development) - - * `info`: Standard production level with operational information - - * `warn`: Only warnings and errors (quiet production) - - * `error`: Only error messages (minimal logging) - - * Performance: Higher verbosity may impact performance and storage +- **`GATEWAY_PORT`**: HTTP/WebSocket server port (default: `:8080`) + - Purpose: Defines the port where the gateway listens for client connections + - Usage: Internal container port for REST API and WebSocket connections + - Example: `:8080`, `:3000`, `:8081` + - Note: External port mapping is configured separately in docker-compose ports section + +- **`CLUSTER_ID`**: Unique gateway identifier + - Purpose: Distinguishes between multiple gateway instances in logs, metrics, and monitoring + - Usage: Should be unique across all gateway instances in your deployment + - Format: Alphanumeric string, no spaces + - Example: `gateway-1`, `gateway-primary`, `gateway-us-east` + - Required: Yes, no default value + +- **`ENABLE_AUTH`**: Enable Auth0 JWT authentication (true/false) + - Purpose: Controls whether API requests require JWT authentication + - Usage: Set to `false` for development/testing, `true` for production + - Values: `true` (requires valid JWT tokens) or `false` (open access) + - Default: `false` + - Note: When `true`, requires additional Auth0 configuration (AUTH0_DOMAIN, AUTH0_AUDIENCE) + +- **`P2P_NODES`**: Comma-separated list of P2P node gRPC sidecar addresses + - Purpose: Defines which P2P nodes the gateway can connect to for message routing + - Format: `hostname:port,hostname:port,...` + - Usage: Gateway load-balances requests across these nodes for high availability + - Port: Should match SIDECAR_PORT of P2P nodes (typically 33212) + - Example: `p2pnode-1:33212,p2pnode-2:33212,p2pnode-3:33212` + - Behavior: Gateway attempts to connect to all listed nodes and routes to healthy ones + +- **`LOG_LEVEL`**: Logging verbosity level + - Purpose: Controls the amount and detail of log output + - Values: `debug`, `info`, `warn`, `error` + - Default: `info` + - Usage Guide: + - `debug`: Most verbose, includes request/response details, connection events (development) + - `info`: Standard production level with operational information + - `warn`: Only warnings and errors (quiet production) + - `error`: Only error messages (minimal logging) + - Performance: Higher verbosity may impact performance and storage ### Authentication (Optional) - For production deployments, enable authentication: - ```yaml - environment: - -* ENABLE_AUTH=true - - * AUTH0_DOMAIN=your-domain.auth0.com - - * AUTH0_AUDIENCE=your-api-audience - + - ENABLE_AUTH=true + - AUTH0_DOMAIN=your-domain.auth0.com + - AUTH0_AUDIENCE=your-api-audience ``` ## API Endpoints ### HTTP REST API - -* `POST /publish` - Publish message to topic - -* `GET /health` - Gateway health check - -* `GET /metrics` - Prometheus metrics +- `POST /publish` - Publish message to topic +- `GET /health` - Gateway health check +- `GET /metrics` - Prometheus metrics ### WebSocket API - -* `ws://localhost:8081/ws` - WebSocket connection for real-time messaging +- `ws://localhost:8081/ws` - WebSocket connection for real-time messaging ### gRPC API - -* `localhost:50051` - Bidirectional streaming service +- `localhost:50051` - Bidirectional streaming service ## Starting the Network 1. Generate peer identity: - ```bash - mkdir -p identity export BOOTSTRAP_PEER_ID=$(docker run --rm -v $(pwd)/identity:/identity getoptimum/p2pnode:latest generate-key --output-peer-id) - ``` -1. Start all services: - +2. Start all services: ```bash - docker-compose up -d - ``` -1. Verify services: - +3. Verify services: ```bash - docker-compose ps curl http://localhost:8081/health - ``` ## Client Examples ### HTTP REST - ```bash - curl -X POST http://localhost:8081/publish \ -H "Content-Type: application/json" \ -d '{"topic": "test", "data": "Hello OptimumP2P"}' - ``` ### WebSocket (JavaScript) - ```javascript - const ws = new WebSocket('ws://localhost:8081/ws'); ws.onopen = () => { ws.send(JSON.stringify({ @@ -636,82 +400,56 @@ ws.onopen = () => { topic: 'test' })); }; - ``` ### gRPC (Go) - ```go - conn, err := grpc.Dial("localhost:50051", grpc.WithInsecure()) client := pb.NewGatewayStreamClient(conn) stream, err := client.Stream(context.Background()) - ``` ## Monitoring ### Gateway Metrics - -* Gateway 1: http://localhost:8081/metrics - -* Gateway 2: http://localhost:8082/metrics +- Gateway 1: http://localhost:8081/metrics +- Gateway 2: http://localhost:8082/metrics ### P2P Node Status - -* Node 1: http://localhost:9091 - -* Node 2: http://localhost:9092 - -* Node 3: http://localhost:9093 - -* Node 4: http://localhost:9094 +- Node 1: http://localhost:9091 +- Node 2: http://localhost:9092 +- Node 3: http://localhost:9093 +- Node 4: http://localhost:9094 ## Scaling Considerations Scale the P2P network by adding more nodes: - -* Maintain OPTIMUM_MESH_TARGET ratio to network size - -* Consider network topology and latency - -* Monitor mesh formation and message propagation +- Maintain OPTIMUM_MESH_TARGET ratio to network size +- Consider network topology and latency +- Monitor mesh formation and message propagation ## Troubleshooting ### Gateway Connection Issues - ```bash - # Check gateway logs - docker-compose logs gateway-1 # Test P2P node connectivity - docker-compose exec gateway-1 nc -zv p2pnode-1 33212 - ``` -## Message Delivery Issues - +### Message Delivery Issues ```bash - # Check message flow - docker-compose logs -f | grep -E "(publish|subscribe|message)" # Verify P2P mesh status - curl http://localhost:9091/debug/peers - ``` ## See Also -* [GossipSub Configuration Guide](/docs/hackathon/configuration/gossipsub.md) - Detailed explanation of underlying pub/sub protocol parameters - -* [P2P-Only Deployment](/docs/hackathon/deployment/p2p-only.md) - Alternative deployment without gateways - -* [First Message Tutorial](/docs/hackathon/quick-start/first-message.md) - Step-by-step getting started guide - +- [GossipSub Configuration Guide](/docs/hackathon/configuration/gossipsub.md) - Detailed explanation of underlying pub/sub protocol parameters +- [P2P-Only Deployment](/docs/hackathon/deployment/p2p-only.md) - Alternative deployment without gateways +- [First Message Tutorial](/docs/hackathon/quick-start/first-message.md) - Step-by-step getting started guide diff --git a/docs/hackathon/overview.md b/docs/hackathon/overview.md index f9c8641..8e00202 100644 --- a/docs/hackathon/overview.md +++ b/docs/hackathon/overview.md @@ -11,7 +11,6 @@ OptimumP2P is a novel gossip algorithm that uses [Random Linear Network Coding ( Get OptimumP2P running in under 5 minutes: 1. **[Installation](./quick-start/installation.md)** - Set up Docker and dependencies - 2. **[First Message](./quick-start/first-message.md)** - Publish and receive your first message ## Deployment Options @@ -19,60 +18,50 @@ Get OptimumP2P running in under 5 minutes: Choose your deployment strategy: ### P2P Network Only - -* **[P2P-Only Deployment](./deployment/p2p-only.md)** - Deploy just the P2P nodes for direct integration +- **[P2P-Only Deployment](./deployment/p2p-only.md)** - Deploy just the P2P nodes for direct integration ### Gateway + P2P Network - -* **[Gateway + P2P Deployment](./deployment/p2p-with-gateway.md)** - Full stack with REST/WebSocket APIs +- **[Gateway + P2P Deployment](./deployment/p2p-with-gateway.md)** - Full stack with REST/WebSocket APIs ## Client Integration Connect to OptimumP2P using various client methods: -* **[mump2p-cli](./clients/)** - Command-line client for testing and automation - -* **[gRPC Clients](./clients/)** - Direct gRPC integration examples - -* **[REST/WebSocket APIs](./clients/)** - Gateway-based client integration +- **[mump2p-cli](./clients/)** - Command-line client for testing and automation +- **[gRPC Clients](./clients/)** - Direct gRPC integration examples +- **[REST/WebSocket APIs](./clients/)** - Gateway-based client integration ## Configuration Fine-tune OptimumP2P for your use case: -* **[OptimumP2P Configuration](./configuration/optimump2p.md)** - RLNC parameters, mesh topology, and performance tuning - -* **[GossipSub Configuration](./configuration/gossipsub.md)** - Standard GossipSub parameters for comparison +- **[OptimumP2P Configuration](./configuration/optimump2p.md)** - RLNC parameters, mesh topology, and performance tuning +- **[GossipSub Configuration](./configuration/gossipsub.md)** - Standard GossipSub parameters for comparison ## Performance & Comparison Benchmark and compare OptimumP2P: -* **[Metrics Collection](./clients/)** - Understanding performance metrics - -* **[OptimumP2P vs GossipSub](./clients/)** - Performance comparison methodology +- **[Metrics Collection](./clients/)** - Understanding performance metrics +- **[OptimumP2P vs GossipSub](./clients/)** - Performance comparison methodology ## Docker Images Used The hackathon uses these pre-built Docker images: -* **`getoptimum/p2pnode:latest`** - Core P2P node with OptimumP2P protocol - -* **`getoptimum/gateway:latest`** - Gateway service for client APIs +- **`getoptimum/p2pnode:latest`** - Core P2P node with OptimumP2P protocol +- **`getoptimum/gateway:latest`** - Gateway service for client APIs Both images support protocol switching: - -* `NODE_MODE=optimum` - RLNC-enhanced OptimumP2P (recommended) - -* `NODE_MODE=gossipsub` - Standard GossipSub for comparison +- `NODE_MODE=optimum` - RLNC-enhanced OptimumP2P (recommended) +- `NODE_MODE=gossipsub` - Standard GossipSub for comparison ## Architecture Deep Dive For developers and integrators: -* **[OptimumP2P Technical Overview](../learn/overview/p2p.md)** - Complete technical specification +- **[OptimumP2P Technical Overview](../learn/overview/p2p.md)** - Complete technical specification --- -**Ready to get started?** Begin with **[Installation](./quick-start/installation.md)** or dive into the **[Technical Overview](../learn/overview/p2p.md)**. - +**Ready to get started?** Begin with **[Installation](./quick-start/installation.md)** or dive into the **[Technical Overview](../learn/overview/p2p.md)**. \ No newline at end of file diff --git a/docs/hackathon/quick-start/first-message.md b/docs/hackathon/quick-start/first-message.md index 0f97968..e7974ea 100644 --- a/docs/hackathon/quick-start/first-message.md +++ b/docs/hackathon/quick-start/first-message.md @@ -4,32 +4,24 @@ This tutorial demonstrates how to send your first message through OptimumP2P usi ## Prerequisites -* Docker and Docker Compose installed - -* Basic familiarity with terminal/command line - -* Text editor for creating configuration files +- Docker and Docker Compose installed +- Basic familiarity with terminal/command line +- Text editor for creating configuration files ## Step 1: Set Up the Network Create a working directory and use the provided docker-compose configuration: ```bash - mkdir optimump2p-test cd optimump2p-test - ``` Download the complete setup: - ```bash - # Clone the development setup repository - git clone https://github.com/getoptimum/optimum-dev-setup-guide.git cd optimum-dev-setup-guide - ``` Or create your own `docker-compose.yml` using the configuration from the [P2P Network with Gateway](../deployment/p2p-with-gateway.md) guide. @@ -39,55 +31,40 @@ Or create your own `docker-compose.yml` using the configuration from the [P2P Ne Generate the required peer identity: ```bash - # Create identity directory if using local setup - mkdir -p identity # Set the bootstrap peer ID environment variable - export BOOTSTRAP_PEER_ID=12D3KooWExample # This will be generated automatically - ``` Start all services: ```bash - docker-compose up -d - ``` Verify the services are running: ```bash - docker-compose ps - ``` You should see containers for: - -* gateway-1 (port 8081) - -* gateway-2 (port 8082) - -* p2pnode-1, p2pnode-2, p2pnode-3, p2pnode-4 +- gateway-1 (port 8081) +- gateway-2 (port 8082) +- p2pnode-1, p2pnode-2, p2pnode-3, p2pnode-4 ## Step 3: Test Gateway Connectivity The gateway provides REST API endpoints for publishing and subscribing. Test connectivity: ```bash - # Test gateway-1 - curl -I http://localhost:8081 # Test gateway-2 - curl -I http://localhost:8082 - ``` ## Step 4: Build the Gateway Client @@ -95,10 +72,8 @@ curl -I http://localhost:8082 The repository includes a Go client for interacting with the gateway: ```bash - cd grpc_gateway_client go build -o gateway-client ./gateway_client.go - ``` ## Step 5: Subscribe to Messages @@ -106,19 +81,13 @@ go build -o gateway-client ./gateway_client.go In one terminal window, start a subscriber: ```bash - # Subscribe to topic "demo" with threshold 0.7 - ./script/gateway_client.sh subscribe demo 0.7 - ``` The subscriber will: - 1. Register with the gateway via REST API (`/api/subscribe`) - 2. Open a gRPC stream to receive messages - 3. Display received messages in the format: `[RECEIVED] Topic: | Message: ` ## Step 6: Publish Messages @@ -126,17 +95,12 @@ The subscriber will: In another terminal window, publish messages: ```bash - # Publish 5 messages to topic "demo" with threshold 0.5 - ./script/gateway_client.sh publish demo 0.5 5 - ``` The publisher will: - 1. Send messages via REST API (`/api/publish`) - 2. Display each published message in the format: `[PUBLISH] Message: ` ## Step 7: Alternative REST API Usage @@ -144,33 +108,25 @@ The publisher will: You can also interact directly with the REST API using curl: ### Subscribe via REST (requires separate gRPC stream for receiving) - ```bash - curl -X POST http://localhost:8081/api/subscribe \ -H "Content-Type: application/json" \ -d '{ - "client_id": "test_client_001", "topic": "demo", "threshold": 0.7 }' - ``` ### Publish via REST - ```bash - curl -X POST http://localhost:8081/api/publish \ -H "Content-Type: application/json" \ -d '{ - "client_id": "test_client_001", "topic": "demo", "message": "Hello from REST API" }' - ``` ## Step 8: Multiple Topics @@ -178,23 +134,17 @@ curl -X POST http://localhost:8081/api/publish \ Test topic isolation by using different topic names: ```bash - # Terminal 1: Subscribe to "weather" - ./script/gateway_client.sh subscribe weather 0.7 # Terminal 2: Subscribe to "news" - ./script/gateway_client.sh subscribe news 0.7 # Terminal 3: Publish to "weather" - ./script/gateway_client.sh publish weather 0.5 3 # Terminal 4: Publish to "news" - ./script/gateway_client.sh publish news 0.5 3 - ``` Each subscriber will only receive messages from their subscribed topic. @@ -204,73 +154,50 @@ Each subscriber will only receive messages from their subscribed topic. Test network performance with higher message volumes: ```bash - # High-frequency publishing (100 messages with 100ms delay) - ./gateway-client -topic=performance -threshold=0.5 -count=100 -delay=100ms # Stress test (1000 messages) - ./gateway-client -topic=stress -threshold=0.5 -count=1000 -delay=10ms - ``` ## Understanding the Parameters ### Threshold - The threshold parameter (0.0 to 1.0) controls RLNC decoding: - -* Lower values: Messages decoded with fewer shards (faster, less reliable) - -* Higher values: Messages require more shards (slower, more reliable) - -* Typical range: 0.5 to 0.8 +- Lower values: Messages decoded with fewer shards (faster, less reliable) +- Higher values: Messages require more shards (slower, more reliable) +- Typical range: 0.5 to 0.8 ### Client ID - Each client needs a unique identifier for the gateway to track subscriptions and route messages correctly. ### Topic Names - -* Case-sensitive strings - -* No special characters recommended - -* Use descriptive names (e.g., "chat", "alerts", "data-feed") +- Case-sensitive strings +- No special characters recommended +- Use descriptive names (e.g., "chat", "alerts", "data-feed") ## Monitoring and Debugging ### View logs - ```bash - # Gateway logs - docker-compose logs -f gateway-1 # P2P node logs - docker-compose logs -f p2pnode-1 # All logs - docker-compose logs -f - ``` -## Check network connectivity - +### Check network connectivity ```bash - # Test P2P node connectivity - docker-compose exec gateway-1 nc -zv p2pnode-1 33212 # View container network - docker network inspect optimum-dev-setup-guide_optimum-network - ``` ## Cleanup @@ -278,13 +205,10 @@ docker network inspect optimum-dev-setup-guide_optimum-network Stop and remove all containers: ```bash - docker-compose down # Remove volumes and images (optional) - docker-compose down -v --rmi all - ``` ## Next Steps @@ -292,40 +216,26 @@ docker-compose down -v --rmi all Now that you've successfully sent messages through OptimumP2P: 1. **Build custom clients**: Explore the [Client Development](../clients/) guides - 2. **Optimize configuration**: Learn about [OptimumP2P Configuration](../configuration/optimump2p.md) - 3. **Compare protocols**: Review [GossipSub Configuration](../configuration/gossipsub.md) ## Troubleshooting ### Build failures - -* Ensure Go is installed: `go version` - -* Check module dependencies: `go mod tidy` +- Ensure Go is installed: `go version` +- Check module dependencies: `go mod tidy` ### Connection issues - -* Verify Docker containers are running: `docker-compose ps` - -* Check port availability: `netstat -an | grep 8081` - -* Review firewall settings +- Verify Docker containers are running: `docker-compose ps` +- Check port availability: `netstat -an | grep 8081` +- Review firewall settings ### Message delivery issues - -* Verify topic names match exactly - -* Check threshold values are between 0.0 and 1.0 - -* Review gateway and P2P node logs for errors +- Verify topic names match exactly +- Check threshold values are between 0.0 and 1.0 +- Review gateway and P2P node logs for errors ### Performance issues - -* Monitor container resources: `docker stats` - -* Adjust message delay parameters - -* Check network bandwidth and latency - +- Monitor container resources: `docker stats` +- Adjust message delay parameters +- Check network bandwidth and latency \ No newline at end of file diff --git a/docs/hackathon/quick-start/installation.md b/docs/hackathon/quick-start/installation.md index cde2da3..181978f 100644 --- a/docs/hackathon/quick-start/installation.md +++ b/docs/hackathon/quick-start/installation.md @@ -7,43 +7,32 @@ This guide will help you install and set up OptimumP2P on your computer. We'll e Before we start, you need these programs on your computer: ### 1. Docker - Docker is like a virtual container that runs applications in an isolated environment. Think of it as a box where we put our OptimumP2P network so it doesn't interfere with other programs on your computer. **Install Docker:** - -* **Windows/Mac**: Download Docker Desktop from [docker.com](https://www.docker.com/products/docker-desktop/) - -* **Linux**: Follow the instructions for your distribution on [docs.docker.com](https://docs.docker.com/engine/install/) +- **Windows/Mac**: Download Docker Desktop from [docker.com](https://www.docker.com/products/docker-desktop/) +- **Linux**: Follow the instructions for your distribution on [docs.docker.com](https://docs.docker.com/engine/install/) **How to check if Docker is installed:** - Open your terminal (Command Prompt on Windows, Terminal on Mac/Linux) and type: - ```bash - docker --version - ``` -### 2. Docker Compose +### 2. Docker Compose Docker Compose helps us run multiple Docker containers together. It usually comes with Docker Desktop, but let's verify: ```bash - docker-compose --version - ``` -### 3. Git (Optional but recommended) +### 3. Git (Optional but recommended) Git helps you download and manage code. Most computers have it pre-installed. ```bash - git --version - ``` ## Getting the Code @@ -51,16 +40,12 @@ git --version You have two options to get the OptimumP2P setup files: ### Option 1: Download from this documentation - Create a new folder on your computer and save the docker-compose.yml files from the [Deployment Options](../deployment/) section. ### Option 2: Clone the development setup repository - ```bash - git clone https://github.com/getoptimum/optimum-dev-setup-guide.git cd optimum-dev-setup-guide - ``` ## What's Next? @@ -68,65 +53,43 @@ cd optimum-dev-setup-guide Now that you have everything installed: 1. **Learn the basics**: Read [Core Concepts](./concepts.md) to understand how OptimumP2P works - 2. **Try it out**: Follow [First Message Example](./first-message.md) to send your first message - 3. **Build something**: Check out [Client Development](../clients/) to create your own application ## Troubleshooting ### "Docker command not found" - -* Make sure Docker is installed and running - -* On Windows/Mac, start Docker Desktop application - -* You might need to restart your terminal after installation +- Make sure Docker is installed and running +- On Windows/Mac, start Docker Desktop application +- You might need to restart your terminal after installation ### "Permission denied" on Linux - Add your user to the docker group: - ```bash - sudo usermod -aG docker $USER - ``` - Then log out and log back in. ### "Port already in use" - If you see port conflicts, either: - -* Stop other programs using those ports - -* Change the port numbers in the docker-compose.yml file +- Stop other programs using those ports +- Change the port numbers in the docker-compose.yml file ### Still having issues? - -* Check Docker's own troubleshooting guide - -* Make sure you have enough disk space (at least 2GB free) - -* Restart your computer and try again +- Check Docker's own troubleshooting guide +- Make sure you have enough disk space (at least 2GB free) +- Restart your computer and try again ## System Requirements **Minimum:** - -* 4GB RAM - -* 2GB free disk space - -* Internet connection for downloading Docker images +- 4GB RAM +- 2GB free disk space +- Internet connection for downloading Docker images **Recommended:** +- 8GB RAM +- 5GB free disk space +- Stable internet connection -* 8GB RAM - -* 5GB free disk space - -* Stable internet connection - -You're now ready to start your OptimumP2P journey! +You're now ready to start your OptimumP2P journey! \ No newline at end of file From 7ae62bff7e1358943b16423e5c1a4d2702977a16 Mon Sep 17 00:00:00 2001 From: swarnabhasinha Date: Fri, 1 Aug 2025 16:57:23 +0530 Subject: [PATCH 14/18] feat: Complete Task 3 client documentation and improve navigation --- .vitepress/config.mts | 107 +++--- docs/hackathon/clients/grpc-examples.md | 390 ++++++++++++++++++++ docs/hackathon/clients/mump2p-cli.md | 207 +++++++++++ docs/hackathon/overview.md | 5 +- docs/hackathon/quick-start/first-message.md | 2 +- 5 files changed, 649 insertions(+), 62 deletions(-) create mode 100644 docs/hackathon/clients/grpc-examples.md create mode 100644 docs/hackathon/clients/mump2p-cli.md diff --git a/.vitepress/config.mts b/.vitepress/config.mts index 5963ddd..1bf3d18 100644 --- a/.vitepress/config.mts +++ b/.vitepress/config.mts @@ -184,7 +184,51 @@ function nav() { function sidebarHome() { return [ { - text: "Hackathon", + text: "Learn", + collapsed: false, + items: [ + { + text: "Overview of Optimum", + collapsed: true, + items: [ + { + text: "Introduction", + link: "/docs/learn/overview/intro", + }, + { + text: "OptimumP2P", + link: "/docs/learn/overview/p2p.md", + }, + { + text: "Optimum DeRAM", + link: "/docs/learn/overview/deram.md", + }, + ], + }, + // { + // text: "OptimumP2P", + // collapsed: true, + // items: [ + // ], + // }, + // { + // text: "MUM", + // collapsed: true, + // items: [ + // { + // text: "Overview of MUM", + // link: "/docs/learn/mum", + // }, + // { + // text: "How to stake MUM", + // link: "/docs/learn/how-to-stake-mum", + // }, + // ], + // }, + ], + }, + { + text: "Hackathon Docs", collapsed: false, items: [ { @@ -224,16 +268,12 @@ function sidebarHome() { collapsed: true, items: [ { - text: "WebSocket Client", - link: "/docs/hackathon/clients/websocket", - }, - { - text: "gRPC Stream Client", - link: "/docs/hackathon/clients/grpc", + text: "mump2p-cli", + link: "/docs/hackathon/clients/mump2p-cli", }, { - text: "mump2p-cli", - link: "/docs/hackathon/clients/cli", + text: "gRPC Client Examples", + link: "/docs/hackathon/clients/grpc-examples", }, ], }, @@ -253,55 +293,6 @@ function sidebarHome() { }, ], }, - { - text: "Learn", - collapsed: false, - items: [ - { - text: "Overview of Optimum", - collapsed: true, - items: [ - { - text: "Introduction", - link: "/docs/learn/overview/intro", - }, - { - text: "OptimumP2P", - link: "/docs/learn/overview/p2p.md", - }, - { - text: "Optimum DeRAM", - link: "/docs/learn/overview/deram.md", - }, - ], - }, - // { - // text: "OptimumP2P", - // collapsed: true, - // items: [ - // ], - // }, - // { - // text: "MUM", - // collapsed: true, - // items: [ - // { - // text: "Overview of MUM", - // link: "/docs/learn/mum", - // }, - // { - // text: "How to stake MUM", - // link: "/docs/learn/how-to-stake-mum", - // }, - // ], - // }, - ], - }, - { - text: "How-to Guides (Under Construction 🚧)", - collapsed: true, - items: [], - }, { text: "Research", collapsed: false, diff --git a/docs/hackathon/clients/grpc-examples.md b/docs/hackathon/clients/grpc-examples.md new file mode 100644 index 0000000..69a1f5d --- /dev/null +++ b/docs/hackathon/clients/grpc-examples.md @@ -0,0 +1,390 @@ +# gRPC Client Examples + +This guide demonstrates how to build and use gRPC clients for direct integration with OptimumP2P networks, covering both P2P-only and Gateway deployment scenarios. + +## Overview + +OptimumP2P provides two gRPC client integration patterns: + +1. **P2P Direct Client** - Connect directly to P2P node sidecar (for P2P-only deployments) +2. **Gateway Client** - Connect through the Gateway service (for Gateway + P2P deployments) + +## P2P Direct Client + +The P2P direct client connects to individual P2P node sidecar gRPC endpoints for direct protocol interaction. + +### Source Code Location + +``` +optimum-dev-setup-guide/grpc_p2p_client/ +├── p2p_client.go # Main client implementation +├── proto/ # Protocol buffer definitions +├── grpc/ # Generated gRPC code +└── go.mod # Go module dependencies +``` + +### Client Features + +- Direct gRPC connection to P2P node sidecar +- Real-time message publishing and subscribing +- Message trace collection for both GossipSub and OptimumP2P protocols +- Graceful shutdown handling + +### Building the P2P Client + +```bash +cd optimum-dev-setup-guide/grpc_p2p_client +go build -o p2p-client ./p2p_client.go +``` + +### Usage Examples + +#### Subscribe to a Topic + +```bash +# Basic subscription +./p2p-client -mode=subscribe -topic=test-topic -addr=localhost:33212 +``` + +#### Publish Messages + +```bash +# Publish a single message +./p2p-client -mode=publish -topic=test-topic -msg="Hello World" -addr=localhost:33212 + +# Publish multiple random messages with delay +./p2p-client -mode=publish -topic=test-topic -addr=localhost:33212 \ + -count=100 -sleep=200ms +``` + +### Using the Convenience Script + +The repository includes a helper script for easier usage: + +```bash +cd optimum-dev-setup-guide + +# Subscribe to topic +./script/p2p_client.sh 127.0.0.1:33221 subscribe test-topic + +# Publish a message +./script/p2p_client.sh 127.0.0.1:33221 publish test-topic "Hello World" + +# Publish multiple random messages +./script/p2p_client.sh 127.0.0.1:33221 publish test-topic "random" -count=100 -sleep=200ms +``` + +### P2P Client Configuration + +| Parameter | Description | Default | Example | +|-----------|-------------|---------|---------| +| `-addr` | P2P node sidecar gRPC address | `localhost:33212` | `127.0.0.1:33221` | +| `-mode` | Operation mode | `subscribe` | `subscribe`, `publish` | +| `-topic` | Topic name for pub/sub | Required | `test-topic` | +| `-msg` | Message content (publish mode) | `""` | `"Hello World"` | +| `-count` | Number of messages to publish | `1` | `100` | +| `-sleep` | Delay between messages | `1s` | `200ms`, `2s` | + +### Message Structure + +The P2P client handles messages using this structure: + +```go +type P2PMessage struct { + MessageID string // Unique identifier for the message + Topic string // Topic name where the message was published + Message []byte // Actual message data + SourceNodeID string // ID of the node that sent the message +} +``` + +### Response Types + +The client receives different response types for metrics collection: + +- `ResponseType_Message` - Actual message content +- `ResponseType_MessageTraceGossipSub` - GossipSub protocol metrics +- `ResponseType_MessageTraceOptimumP2P` - OptimumP2P protocol metrics +- `ResponseType_Unknown` - Unknown response type + +## Gateway Client + +The Gateway client connects through the Gateway service, which provides REST API registration and gRPC streaming for message delivery. + +### Source Code Location + +``` +optimum-dev-setup-guide/grpc_gateway_client/ +├── gateway_client.go # Main client implementation +├── proto/ # Protocol buffer definitions +├── grpc/ # Generated gRPC code +└── go.mod # Go module dependencies +``` + +### Client Features + +- REST API registration with threshold-based subscription +- gRPC streaming for real-time message delivery +- Automatic message publishing with configurable rate +- Load balancing across multiple gateway instances + +### Building the Gateway Client + +```bash +cd optimum-dev-setup-guide/grpc_gateway_client +go build -o gateway-client ./gateway_client.go +``` + +### Usage Examples + +#### Subscribe Only Mode + +```bash +# Basic subscription with threshold +./gateway-client -topic=demo -threshold=0.7 -subscribeOnly=true +``` + +#### Publish and Subscribe Mode + +```bash +# Publish 10 messages with 2-second delay +./gateway-client -topic=demo -threshold=0.5 -count=10 -delay=2s + +# High-frequency publishing +./gateway-client -topic=performance -threshold=0.5 -count=1000 -delay=100ms +``` + +### Using the Convenience Script + +```bash +cd optimum-dev-setup-guide + +# Subscribe to topic with threshold +./script/gateway_client.sh subscribe demo 0.7 + +# Publish messages with threshold and count +./script/gateway_client.sh publish demo 0.5 10 +``` + +### Gateway Client Configuration + +| Parameter | Description | Default | Example | +|-----------|-------------|---------|---------| +| `-topic` | Topic name for pub/sub | `demo` | `test-topic` | +| `-threshold` | Delivery threshold (0.0 to 1.0) | `0.1` | `0.7` | +| `-subscribeOnly` | Only subscribe, no publishing | `false` | `true` | +| `-count` | Number of messages to publish | `5` | `100` | +| `-delay` | Delay between message publishing | `2s` | `100ms`, `5s` | + +### Gateway Endpoints + +The Gateway client uses these endpoints: + +- **REST API**: `http://localhost:8081` (Gateway 1) / `http://localhost:8082` (Gateway 2) +- **gRPC Stream**: `localhost:50051` (default) + +### REST API Integration + +The client first registers via REST API before establishing gRPC streaming: + +```bash +# Example REST API call for subscription +curl -X POST http://localhost:8081/api/subscribe \ + -H "Content-Type: application/json" \ + -d '{ + "client_id": "test_client_001", + "topic": "demo", + "threshold": 0.7 + }' +``` + +## Performance Comparison Usage + +Both clients support metrics collection for comparing GossipSub vs OptimumP2P performance: + +### P2P Direct Client Metrics + +The P2P client receives protocol-specific trace messages: + +```go +switch resp.GetCommand() { +case protobuf.ResponseType_MessageTraceGossipSub: + // GossipSub protocol metrics +case protobuf.ResponseType_MessageTraceOptimumP2P: + // OptimumP2P protocol metrics +} +``` + +### Gateway Client Metrics + +The Gateway client provides simpler message delivery metrics suitable for application-level performance testing. + +### Example Performance Test + +```bash +# Terminal 1: Start OptimumP2P subscriber +./script/p2p_client.sh 127.0.0.1:33221 subscribe perf-test + +# Terminal 2: Start GossipSub subscriber +./script/p2p_client.sh 127.0.0.1:33222 subscribe perf-test + +# Terminal 3: Publish test messages +./script/p2p_client.sh 127.0.0.1:33221 publish perf-test "random" -count=1000 -sleep=10ms +``` + +## Integration Examples + +### Go Application Integration + +```go +package main + +import ( + "context" + "log" + "math" + "google.golang.org/grpc" + "google.golang.org/grpc/credentials/insecure" + protobuf "p2p_client/grpc" +) + +func main() { + // Connect to P2P node + conn, err := grpc.NewClient("localhost:33212", + grpc.WithTransportCredentials(insecure.NewCredentials()), + grpc.WithDefaultCallOptions( + grpc.MaxCallRecvMsgSize(math.MaxInt), + grpc.MaxCallSendMsgSize(math.MaxInt), + )) + if err != nil { + log.Fatal(err) + } + defer conn.Close() + + client := protobuf.NewCommandStreamClient(conn) + stream, err := client.ListenCommands(context.Background()) + if err != nil { + log.Fatal(err) + } + + // Subscribe to topic + subReq := &protobuf.Request{ + Command: 2, // CommandSubscribeToTopic + Topic: "my-topic", + } + + if err := stream.Send(subReq); err != nil { + log.Fatal(err) + } + + // Listen for messages + for { + resp, err := stream.Recv() + if err != nil { + log.Fatal(err) + } + // Handle response... + } +} +``` + +### Protocol Buffer Definitions + +Both clients use Protocol Buffers for gRPC communication. The definitions are available in: + +- P2P Client: `optimum-dev-setup-guide/grpc_p2p_client/proto/p2p_stream.proto` +- Gateway Client: `optimum-dev-setup-guide/grpc_gateway_client/proto/gateway_stream.proto` + +## Troubleshooting + +### Connection Issues + +#### Error: `connection refused` + +``` +failed to connect to node dial tcp 127.0.0.1:33212: connect: connection refused +``` + +**Solutions:** +- Verify P2P nodes are running: `docker-compose ps` +- Check port mapping in docker-compose.yml +- Ensure correct sidecar port (typically 33212) + +### Message Delivery Issues + +#### No messages received + +**Troubleshooting:** +1. Verify topic names match exactly between publisher and subscriber +2. Check P2P node logs: `docker-compose logs p2pnode-1` +3. Ensure nodes are properly connected in mesh topology +4. Verify protocol mode consistency (all nodes using same protocol) + +#### Partial message delivery + +**For Gateway Client:** +- Adjust threshold parameter (lower values = faster delivery, less reliability) +- Check gateway connectivity to P2P nodes + +**For P2P Client:** +- Verify direct connection to healthy P2P node +- Check RLNC configuration parameters + +### Build Issues + +#### Proto generation errors + +```bash +# Regenerate gRPC code if needed +cd grpc_p2p_client +protoc --go_out=. --go-grpc_out=. proto/*.proto +``` + +#### Module dependency issues + +```bash +# Update Go modules +go mod tidy +go mod download +``` + +## Advanced Usage + +### Long-Running Subscriptions + +For production deployments, consider: + +1. **Connection monitoring**: Implement reconnection logic for network failures +2. **Message persistence**: Store received messages for reliability +3. **Load balancing**: Connect to multiple P2P nodes for redundancy +4. **Metrics collection**: Track message delivery rates and latency + +### Custom Message Formats + +Both clients support custom message formats. Modify the message structure in: + +- P2P Client: `P2PMessage` struct in `p2p_client.go` +- Gateway Client: Message handling in `gateway_client.go` + +### Integration with Other Languages + +The Protocol Buffer definitions can be used to generate client code for other languages: + +```bash +# Python +protoc --python_out=. --grpc_python_out=. proto/*.proto + +# JavaScript/Node.js +protoc --js_out=import_style=commonjs:. --grpc-web_out=import_style=commonjs,mode=grpcwebtext:. proto/*.proto + +# Java +protoc --java_out=. --grpc-java_out=. proto/*.proto +``` + +## See Also + +- [mump2p CLI Guide](./mump2p-cli.md) - Command-line client for OptimumP2P +- [P2P-Only Deployment](../deployment/p2p-only.md) - Setting up P2P nodes without gateway +- [Gateway + P2P Deployment](../deployment/p2p-with-gateway.md) - Full stack with gateway services +- [OptimumP2P Configuration](../configuration/optimump2p.md) - Protocol configuration parameters +- [GossipSub Configuration](../configuration/gossipsub.md) - Baseline protocol configuration \ No newline at end of file diff --git a/docs/hackathon/clients/mump2p-cli.md b/docs/hackathon/clients/mump2p-cli.md new file mode 100644 index 0000000..a2bf6d8 --- /dev/null +++ b/docs/hackathon/clients/mump2p-cli.md @@ -0,0 +1,207 @@ +# mump2p — OptimumP2P CLI Client + +**mump2p is the primary client entry point for interacting with OptimumP2P** — a high-performance RLNC-enhanced pubsub protocol. This command-line interface provides the easiest way to publish and subscribe to messages using the OptimumP2P protocol. + +**Source:** [https://github.com/getoptimum/mump2p-cli](https://github.com/getoptimum/mump2p-cli) + +## Installation + +Download the appropriate binary for your system from the [GitHub releases page](https://github.com/getoptimum/mump2p-cli/releases): + +- `mump2p-mac` for macOS +- `mump2p-linux` for Linux + +Make the binary executable (Mac/Linux): + +```sh +chmod +x mump2p-mac +# For convenience, you may want to rename and move to your PATH +mv mump2p-mac /usr/local/bin/mump2p +``` + +--- + +## Authentication + +### Login + +Before you can publish or subscribe to messages, you need to authenticate: + +```sh +./mump2p login +``` + +This will start the device authorization flow: + +1. A URL and a code will be displayed in your terminal +2. Open the URL in your browser +3. Enter the code when prompted +4. Complete the authentication process in the browser +5. The CLI will automatically receive and store your authentication token + +### Check Authentication Status + +To verify your current authentication status: + +```sh +./mump2p whoami +``` + +This will display: + +- Your client ID +- Token expiration time +- Token validity status +- Rate limits associated with your account + +**Important: After logging in, please share the email ID you used to sign up in the group, so we can activate your access.** + +### Refresh Token + +If your token is about to expire, you can refresh it: + +```sh +./mump2p refresh +``` + +### Logout + +To remove your stored authentication token: + +```sh +./mump2p logout +``` + +--- + +## Service URLs + +The CLI connects to different gateway servers around the world. By default, it uses the first available gateway, but you can specify a different one using the `--service-url` flag. + +For a complete list of available gateways and their locations, see: [Available Service URLs](https://github.com/getoptimum/mump2p-cli#available-service-urls) in the README. + +**Example using a specific gateway:** +```sh +./mump2p publish --topic=test --message="Hello" --service-url="http://35.221.118.95:8080" +./mump2p subscribe --topic=test --service-url="http://34.142.205.26:8080" +``` + +--- + +## Publishing Messages + +### Publish a Text Message + +To publish a simple text message to a topic: + +```sh +./mump2p publish --topic=your-topic-name --message="Your message content" +``` + +### Publish a File + +To publish the contents of a file: + +```sh +./mump2p publish --topic=your-topic-name --file=/path/to/your/file.json +``` + +Rate limits will be automatically applied based on your authentication token. + +## Subscribing to Messages + +### Basic Subscription + +To subscribe to a topic in real-time: + +```sh +./mump2p subscribe --topic=your-topic-name +``` + +This will open a WebSocket connection and display incoming messages in real-time. Press `Ctrl+C` to exit. + +### Save Messages to a File + +To persist messages to a local file while subscribing: + +```sh +./mump2p subscribe --topic=your-topic-name --persist=/path/to/save/ +``` + +If you provide just a directory path, messages will be saved to a file named `messages.log` in that directory. + +### Forward Messages to a Webhook + +To forward messages to an HTTP webhook: + +```sh +./mump2p subscribe --topic=your-topic-name --webhook=https://your-server.com/webhook +``` + +**Note: The webhook endpoint must be configured to accept POST requests.** + +#### Advanced Webhook Options + +For more control over webhook behavior: + +```sh +./mump2p subscribe --topic=your-topic-name \ + --webhook=https://your-server.com/webhook \ + --webhook-queue-size=200 \ + --webhook-timeout=5 + ``` + +Options: + +- `--webhook-queue-size`: Maximum number of messages to queue before dropping (default: `100`) +- `--webhook-timeout`: Timeout in seconds for each webhook POST request (default: `3`) + +### Combine Persistence and Webhook + +You can both save messages locally and forward them to a webhook: + +```sh +./mump2p subscribe --topic=your-topic-name \ + --persist=/path/to/messages.log \ + --webhook=https://your-server.com/webhook +``` + +--- + +## Checking Usage and Limits + +To see your current usage statistics and rate limits: + +```sh +./mump2p usage +``` + +This will display: + +- Number of publish operations (per hour and per second) +- Data usage (bytes, KB, or MB depending on amount) +- Quota limits +- Time until usage counters reset +- Timestamps of your last publish and subscribe operations + +## Tips for Effective Use + +1. **Topic Names:** Choose descriptive and unique topic names to avoid message conflicts +2. **Message Size:** Be aware of your maximum message size limit when publishing files +3. **Token Refresh:** For long-running operations, refresh your token before it expires +4. **Persistent Subscriptions:** Use the --persist option when you need a record of messages +5. **Webhook Reliability:** Increase the queue size for high-volume topics to prevent message drops + +## Troubleshooting + +- **Authentication Errors:** Run mump2p whoami to check token status, and mump2p login to re-authenticate +- **Rate Limit Errors:** Use mump2p usage to check your current usage against limits +- **Connection Issues:** Verify your internet connection and firewall settings +- **Webhook Failures:** Check that your webhook endpoint is accessible and properly configured to accept POST requests + +## See Also + +- [gRPC Client Examples](./grpc-examples.md) - Direct gRPC integration examples for advanced use cases +- [Gateway + P2P Deployment](../deployment/p2p-with-gateway.md) - Full stack deployment with REST/WebSocket APIs +- [P2P-Only Deployment](../deployment/p2p-only.md) - Direct P2P integration +- [OptimumP2P Configuration](../configuration/optimump2p.md) - Protocol configuration parameters \ No newline at end of file diff --git a/docs/hackathon/overview.md b/docs/hackathon/overview.md index 8e00202..989088b 100644 --- a/docs/hackathon/overview.md +++ b/docs/hackathon/overview.md @@ -27,9 +27,8 @@ Choose your deployment strategy: Connect to OptimumP2P using various client methods: -- **[mump2p-cli](./clients/)** - Command-line client for testing and automation -- **[gRPC Clients](./clients/)** - Direct gRPC integration examples -- **[REST/WebSocket APIs](./clients/)** - Gateway-based client integration +- **[mump2p-cli](./clients/mump2p-cli.md)** - Command-line client for testing and automation +- **[gRPC Client Examples](./clients/grpc-examples.md)** - Direct gRPC integration examples ## Configuration diff --git a/docs/hackathon/quick-start/first-message.md b/docs/hackathon/quick-start/first-message.md index e7974ea..cf694da 100644 --- a/docs/hackathon/quick-start/first-message.md +++ b/docs/hackathon/quick-start/first-message.md @@ -215,7 +215,7 @@ docker-compose down -v --rmi all Now that you've successfully sent messages through OptimumP2P: -1. **Build custom clients**: Explore the [Client Development](../clients/) guides +1. **Build custom clients**: Explore the [mump2p-cli](../clients/mump2p-cli.md) or [gRPC Client Examples](../clients/grpc-examples.md) 2. **Optimize configuration**: Learn about [OptimumP2P Configuration](../configuration/optimump2p.md) 3. **Compare protocols**: Review [GossipSub Configuration](../configuration/gossipsub.md) From d4ca6b38c7822965891d6cd200f17c8a5d4c4600 Mon Sep 17 00:00:00 2001 From: swarnabhasinha Date: Fri, 1 Aug 2025 17:04:29 +0530 Subject: [PATCH 15/18] fix: remove broken links --- docs/hackathon/quick-start/installation.md | 8 -------- 1 file changed, 8 deletions(-) diff --git a/docs/hackathon/quick-start/installation.md b/docs/hackathon/quick-start/installation.md index 181978f..bd51af4 100644 --- a/docs/hackathon/quick-start/installation.md +++ b/docs/hackathon/quick-start/installation.md @@ -48,14 +48,6 @@ git clone https://github.com/getoptimum/optimum-dev-setup-guide.git cd optimum-dev-setup-guide ``` -## What's Next? - -Now that you have everything installed: - -1. **Learn the basics**: Read [Core Concepts](./concepts.md) to understand how OptimumP2P works -2. **Try it out**: Follow [First Message Example](./first-message.md) to send your first message -3. **Build something**: Check out [Client Development](../clients/) to create your own application - ## Troubleshooting ### "Docker command not found" From e57c442b895c298430ee2758742f7b98a40071df Mon Sep 17 00:00:00 2001 From: swarnabhasinha Date: Sat, 2 Aug 2025 00:05:20 +0530 Subject: [PATCH 16/18] fix: gateway -> proxy --- .vitepress/config.mts | 4 +- docs/hackathon/clients/grpc-examples.md | 54 +++++++-------- docs/hackathon/clients/mump2p-cli.md | 8 +-- docs/hackathon/configuration/gossipsub.md | 2 +- docs/hackathon/configuration/optimump2p.md | 2 +- docs/hackathon/deployment/p2p-only.md | 4 +- ...{p2p-with-gateway.md => p2p-with-proxy.md} | 66 +++++++++---------- docs/hackathon/overview.md | 6 +- docs/hackathon/quick-start/first-message.md | 40 +++++------ 9 files changed, 93 insertions(+), 93 deletions(-) rename docs/hackathon/deployment/{p2p-with-gateway.md => p2p-with-proxy.md} (88%) diff --git a/.vitepress/config.mts b/.vitepress/config.mts index 1bf3d18..02f84d4 100644 --- a/.vitepress/config.mts +++ b/.vitepress/config.mts @@ -258,8 +258,8 @@ function sidebarHome() { link: "/docs/hackathon/deployment/p2p-only", }, { - text: "P2P Network with Gateway", - link: "/docs/hackathon/deployment/p2p-with-gateway", + text: "P2P Network with Proxy", + link: "/docs/hackathon/deployment/p2p-with-proxy", }, ], }, diff --git a/docs/hackathon/clients/grpc-examples.md b/docs/hackathon/clients/grpc-examples.md index 69a1f5d..cc94cde 100644 --- a/docs/hackathon/clients/grpc-examples.md +++ b/docs/hackathon/clients/grpc-examples.md @@ -1,13 +1,13 @@ # gRPC Client Examples -This guide demonstrates how to build and use gRPC clients for direct integration with OptimumP2P networks, covering both P2P-only and Gateway deployment scenarios. +This guide demonstrates how to build and use gRPC clients for direct integration with OptimumP2P networks, covering both P2P-only and Proxy deployment scenarios. ## Overview OptimumP2P provides two gRPC client integration patterns: 1. **P2P Direct Client** - Connect directly to P2P node sidecar (for P2P-only deployments) -2. **Gateway Client** - Connect through the Gateway service (for Gateway + P2P deployments) +2. **Proxy Client** - Connect through the Proxy service (for Proxy + P2P deployments) ## P2P Direct Client @@ -107,15 +107,15 @@ The client receives different response types for metrics collection: - `ResponseType_MessageTraceOptimumP2P` - OptimumP2P protocol metrics - `ResponseType_Unknown` - Unknown response type -## Gateway Client +## Proxy Client -The Gateway client connects through the Gateway service, which provides REST API registration and gRPC streaming for message delivery. +The Proxy client connects through the Proxy service, which provides REST API registration and gRPC streaming for message delivery. ### Source Code Location ``` -optimum-dev-setup-guide/grpc_gateway_client/ -├── gateway_client.go # Main client implementation +optimum-dev-setup-guide/grpc_proxy_client/ +├── proxy_client.go # Main client implementation ├── proto/ # Protocol buffer definitions ├── grpc/ # Generated gRPC code └── go.mod # Go module dependencies @@ -126,13 +126,13 @@ optimum-dev-setup-guide/grpc_gateway_client/ - REST API registration with threshold-based subscription - gRPC streaming for real-time message delivery - Automatic message publishing with configurable rate -- Load balancing across multiple gateway instances +- Load balancing across multiple proxy instances -### Building the Gateway Client +### Building the Proxy Client ```bash -cd optimum-dev-setup-guide/grpc_gateway_client -go build -o gateway-client ./gateway_client.go +cd optimum-dev-setup-guide/grpc_proxy_client +go build -o proxy-client ./proxy_client.go ``` ### Usage Examples @@ -141,17 +141,17 @@ go build -o gateway-client ./gateway_client.go ```bash # Basic subscription with threshold -./gateway-client -topic=demo -threshold=0.7 -subscribeOnly=true +./proxy-client -topic=demo -threshold=0.7 -subscribeOnly=true ``` #### Publish and Subscribe Mode ```bash # Publish 10 messages with 2-second delay -./gateway-client -topic=demo -threshold=0.5 -count=10 -delay=2s +./proxy-client -topic=demo -threshold=0.5 -count=10 -delay=2s # High-frequency publishing -./gateway-client -topic=performance -threshold=0.5 -count=1000 -delay=100ms +./proxy-client -topic=performance -threshold=0.5 -count=1000 -delay=100ms ``` ### Using the Convenience Script @@ -160,13 +160,13 @@ go build -o gateway-client ./gateway_client.go cd optimum-dev-setup-guide # Subscribe to topic with threshold -./script/gateway_client.sh subscribe demo 0.7 +./script/proxy_client.sh subscribe demo 0.7 # Publish messages with threshold and count -./script/gateway_client.sh publish demo 0.5 10 +./script/proxy_client.sh publish demo 0.5 10 ``` -### Gateway Client Configuration +### Proxy Client Configuration | Parameter | Description | Default | Example | |-----------|-------------|---------|---------| @@ -176,11 +176,11 @@ cd optimum-dev-setup-guide | `-count` | Number of messages to publish | `5` | `100` | | `-delay` | Delay between message publishing | `2s` | `100ms`, `5s` | -### Gateway Endpoints +### Proxy Endpoints -The Gateway client uses these endpoints: +The Proxy client uses these endpoints: -- **REST API**: `http://localhost:8081` (Gateway 1) / `http://localhost:8082` (Gateway 2) +- **REST API**: `http://localhost:8081` (Proxy 1) / `http://localhost:8082` (Proxy 2) - **gRPC Stream**: `localhost:50051` (default) ### REST API Integration @@ -215,9 +215,9 @@ case protobuf.ResponseType_MessageTraceOptimumP2P: } ``` -### Gateway Client Metrics +### Proxy Client Metrics -The Gateway client provides simpler message delivery metrics suitable for application-level performance testing. +The Proxy client provides simpler message delivery metrics suitable for application-level performance testing. ### Example Performance Test @@ -293,7 +293,7 @@ func main() { Both clients use Protocol Buffers for gRPC communication. The definitions are available in: - P2P Client: `optimum-dev-setup-guide/grpc_p2p_client/proto/p2p_stream.proto` -- Gateway Client: `optimum-dev-setup-guide/grpc_gateway_client/proto/gateway_stream.proto` +- Proxy Client: `optimum-dev-setup-guide/grpc_proxy_client/proto/proxy_stream.proto` ## Troubleshooting @@ -322,9 +322,9 @@ failed to connect to node dial tcp 127.0.0.1:33212: connect: connection refused #### Partial message delivery -**For Gateway Client:** +**For Proxy Client:** - Adjust threshold parameter (lower values = faster delivery, less reliability) -- Check gateway connectivity to P2P nodes +- Check proxy connectivity to P2P nodes **For P2P Client:** - Verify direct connection to healthy P2P node @@ -364,7 +364,7 @@ For production deployments, consider: Both clients support custom message formats. Modify the message structure in: - P2P Client: `P2PMessage` struct in `p2p_client.go` -- Gateway Client: Message handling in `gateway_client.go` +- Proxy Client: Message handling in `proxy_client.go` ### Integration with Other Languages @@ -384,7 +384,7 @@ protoc --java_out=. --grpc-java_out=. proto/*.proto ## See Also - [mump2p CLI Guide](./mump2p-cli.md) - Command-line client for OptimumP2P -- [P2P-Only Deployment](../deployment/p2p-only.md) - Setting up P2P nodes without gateway -- [Gateway + P2P Deployment](../deployment/p2p-with-gateway.md) - Full stack with gateway services +- [P2P-Only Deployment](../deployment/p2p-only.md) - Setting up P2P nodes without proxy +- [Proxy + P2P Deployment](../deployment/p2p-with-proxy.md) - Full stack with proxy services - [OptimumP2P Configuration](../configuration/optimump2p.md) - Protocol configuration parameters - [GossipSub Configuration](../configuration/gossipsub.md) - Baseline protocol configuration \ No newline at end of file diff --git a/docs/hackathon/clients/mump2p-cli.md b/docs/hackathon/clients/mump2p-cli.md index a2bf6d8..453a540 100644 --- a/docs/hackathon/clients/mump2p-cli.md +++ b/docs/hackathon/clients/mump2p-cli.md @@ -76,11 +76,11 @@ To remove your stored authentication token: ## Service URLs -The CLI connects to different gateway servers around the world. By default, it uses the first available gateway, but you can specify a different one using the `--service-url` flag. +The CLI connects to different proxy servers around the world. By default, it uses the first available proxy, but you can specify a different one using the `--service-url` flag. -For a complete list of available gateways and their locations, see: [Available Service URLs](https://github.com/getoptimum/mump2p-cli#available-service-urls) in the README. +For a complete list of available proxys and their locations, see: [Available Service URLs](https://github.com/getoptimum/mump2p-cli#available-service-urls) in the README. -**Example using a specific gateway:** +**Example using a specific proxy:** ```sh ./mump2p publish --topic=test --message="Hello" --service-url="http://35.221.118.95:8080" ./mump2p subscribe --topic=test --service-url="http://34.142.205.26:8080" @@ -202,6 +202,6 @@ This will display: ## See Also - [gRPC Client Examples](./grpc-examples.md) - Direct gRPC integration examples for advanced use cases -- [Gateway + P2P Deployment](../deployment/p2p-with-gateway.md) - Full stack deployment with REST/WebSocket APIs +- [Proxy + P2P Deployment](../deployment/p2p-with-proxy.md) - Full stack deployment with REST/WebSocket APIs - [P2P-Only Deployment](../deployment/p2p-only.md) - Direct P2P integration - [OptimumP2P Configuration](../configuration/optimump2p.md) - Protocol configuration parameters \ No newline at end of file diff --git a/docs/hackathon/configuration/gossipsub.md b/docs/hackathon/configuration/gossipsub.md index 8363e85..41b0e08 100644 --- a/docs/hackathon/configuration/gossipsub.md +++ b/docs/hackathon/configuration/gossipsub.md @@ -121,4 +121,4 @@ GossipSub uses four types of control messages: - [libp2p GossipSub v1.0 Specification](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/gossipsub-v1.0.md) - [libp2p PubSub Interface](https://github.com/libp2p/specs/blob/master/pubsub/README.md) -- [Optimum P2P Configuration Guide](/docs/hackathon/deployment/p2p-with-gateway.md#p2p-node-configuration) \ No newline at end of file +- [Optimum P2P Configuration Guide](/docs/hackathon/deployment/p2p-with-proxy.md#p2p-node-configuration) \ No newline at end of file diff --git a/docs/hackathon/configuration/optimump2p.md b/docs/hackathon/configuration/optimump2p.md index 0400543..c842de5 100644 --- a/docs/hackathon/configuration/optimump2p.md +++ b/docs/hackathon/configuration/optimump2p.md @@ -242,5 +242,5 @@ services: - **[GossipSub Configuration](./gossipsub.md)** - Standard protocol parameters for comparison - **[P2P-Only Deployment](../deployment/p2p-only.md)** - Complete setup with configuration -- **[Gateway + P2P Deployment](../deployment/p2p-with-gateway.md)** - Full stack configuration +- **[Proxy + P2P Deployment](../deployment/p2p-with-proxy.md)** - Full stack configuration - **[OptimumP2P Technical Overview](../../learn/overview/p2p.md)** - Protocol fundamentals and RLNC details \ No newline at end of file diff --git a/docs/hackathon/deployment/p2p-only.md b/docs/hackathon/deployment/p2p-only.md index f506a1b..c2c30b5 100644 --- a/docs/hackathon/deployment/p2p-only.md +++ b/docs/hackathon/deployment/p2p-only.md @@ -1,6 +1,6 @@ # P2P Network Only Deployment -This guide covers deploying a standalone OptimumP2P network without gateway intermediaries. In this configuration, clients connect directly to P2P nodes using gRPC sidecar connections, providing maximum performance and protocol flexibility. +This guide covers deploying a standalone OptimumP2P network without proxy intermediaries. In this configuration, clients connect directly to P2P nodes using gRPC sidecar connections, providing maximum performance and protocol flexibility. ### Network Topology @@ -285,5 +285,5 @@ docker-compose logs -f | grep "message" ## See Also - [GossipSub Configuration Guide](/docs/hackathon/configuration/gossipsub.md) - Detailed explanation of underlying pub/sub protocol parameters -- [P2P with Gateway Deployment](/docs/hackathon/deployment/p2p-with-gateway.md) - Alternative deployment with gateway layer +- [P2P with Proxy Deployment](/docs/hackathon/deployment/p2p-with-proxy.md) - Alternative deployment with proxy layer - [First Message Tutorial](/docs/hackathon/quick-start/first-message.md) - Step-by-step getting started guide \ No newline at end of file diff --git a/docs/hackathon/deployment/p2p-with-gateway.md b/docs/hackathon/deployment/p2p-with-proxy.md similarity index 88% rename from docs/hackathon/deployment/p2p-with-gateway.md rename to docs/hackathon/deployment/p2p-with-proxy.md index 69de61b..0759155 100644 --- a/docs/hackathon/deployment/p2p-with-gateway.md +++ b/docs/hackathon/deployment/p2p-with-proxy.md @@ -1,11 +1,11 @@ -# P2P Network with Gateway Deployment +# P2P Network with Proxy Deployment -This guide covers deploying OptimumP2P with gateway services that provide HTTP/WebSocket/gRPC APIs for client applications. The gateway acts as a bridge between traditional client-server applications and the OptimumP2P network. +This guide covers deploying OptimumP2P with proxy services that provide HTTP/WebSocket/gRPC APIs for client applications. The proxy acts as a bridge between traditional client-server applications and the OptimumP2P network. ### Component Responsibilities -**Gateway Layer:** +**Proxy Layer:** - Protocol translation (HTTP/WebSocket/gRPC ↔ libp2p) - Client session management - Load balancing across P2P nodes @@ -22,19 +22,19 @@ This guide covers deploying OptimumP2P with gateway services that provide HTTP/W ## Deployment Configuration -Complete setup with gateways and P2P nodes: +Complete setup with proxies and P2P nodes: ```yaml services: - gateway-1: + proxy-1: image: 'getoptimum/gateway:latest' platform: linux/amd64 ports: - "8081:8080" # HTTP/WebSocket - "50051:50051" # gRPC environment: - - GATEWAY_PORT=:8080 - - CLUSTER_ID=gateway-1 + - PROXY_PORT=:8080 + - CLUSTER_ID=proxy-1 - ENABLE_AUTH=false - LOG_LEVEL=debug - P2P_NODES=p2pnode-1:33212,p2pnode-2:33212,p2pnode-3:33212,p2pnode-4:33212 @@ -47,15 +47,15 @@ services: - p2pnode-3 - p2pnode-4 - gateway-2: + proxy-2: image: 'getoptimum/gateway:latest' platform: linux/amd64 ports: - "8082:8080" - "50052:50051" environment: - - GATEWAY_PORT=:8080 - - CLUSTER_ID=gateway-2 + - PROXY_PORT=:8080 + - CLUSTER_ID=proxy-2 - ENABLE_AUTH=false - LOG_LEVEL=debug - P2P_NODES=p2pnode-1:33212,p2pnode-2:33212,p2pnode-3:33212,p2pnode-4:33212 @@ -204,15 +204,15 @@ networks: - Note: All nodes in network should use same mode for compatibility - **`SIDECAR_PORT`**: gRPC bidirectional communication port - - Purpose: Port where gateways and clients connect to interact with P2P node + - Purpose: Port where proxys and clients connect to interact with P2P node - Default: `33212` - Range: Any available port (1024-65535) - - Usage: Must be accessible from gateway containers for internal communication + - Usage: Must be accessible from proxy containers for internal communication - Network: Used for internal container-to-container communication - **`API_PORT`**: HTTP monitoring and management API port - Purpose: Exposes REST endpoints for health checks, node state, and metrics - - Default: `8081` for gateway, `9090` for P2P nodes (varies by component) + - Default: `8081` for proxy, `9090` for P2P nodes (varies by component) - Endpoints: `/api/v1/health`, `/api/v1/node-state`, `/api/v1/version` - Usage: Used for operational monitoring and debugging @@ -298,21 +298,21 @@ All parameter values can be adjusted based on specific use case requirements. Wh - OPTIMUM_MESH_MIN should be less than OPTIMUM_MESH_TARGET - OPTIMUM_MESH_MAX should be greater than OPTIMUM_MESH_TARGET -## Gateway Configuration +## Proxy Configuration ### Environment Variables -- **`GATEWAY_PORT`**: HTTP/WebSocket server port (default: `:8080`) - - Purpose: Defines the port where the gateway listens for client connections +- **`PROXY_PORT`**: HTTP/WebSocket server port (default: `:8080`) + - Purpose: Defines the port where the proxy listens for client connections - Usage: Internal container port for REST API and WebSocket connections - Example: `:8080`, `:3000`, `:8081` - Note: External port mapping is configured separately in docker-compose ports section -- **`CLUSTER_ID`**: Unique gateway identifier - - Purpose: Distinguishes between multiple gateway instances in logs, metrics, and monitoring - - Usage: Should be unique across all gateway instances in your deployment +- **`CLUSTER_ID`**: Unique proxy identifier + - Purpose: Distinguishes between multiple proxy instances in logs, metrics, and monitoring + - Usage: Should be unique across all proxy instances in your deployment - Format: Alphanumeric string, no spaces - - Example: `gateway-1`, `gateway-primary`, `gateway-us-east` + - Example: `proxy-1`, `proxy-primary`, `proxy-us-east` - Required: Yes, no default value - **`ENABLE_AUTH`**: Enable Auth0 JWT authentication (true/false) @@ -323,12 +323,12 @@ All parameter values can be adjusted based on specific use case requirements. Wh - Note: When `true`, requires additional Auth0 configuration (AUTH0_DOMAIN, AUTH0_AUDIENCE) - **`P2P_NODES`**: Comma-separated list of P2P node gRPC sidecar addresses - - Purpose: Defines which P2P nodes the gateway can connect to for message routing + - Purpose: Defines which P2P nodes the proxy can connect to for message routing - Format: `hostname:port,hostname:port,...` - - Usage: Gateway load-balances requests across these nodes for high availability + - Usage: Proxy load-balances requests across these nodes for high availability - Port: Should match SIDECAR_PORT of P2P nodes (typically 33212) - Example: `p2pnode-1:33212,p2pnode-2:33212,p2pnode-3:33212` - - Behavior: Gateway attempts to connect to all listed nodes and routes to healthy ones + - Behavior: Proxy attempts to connect to all listed nodes and routes to healthy ones - **`LOG_LEVEL`**: Logging verbosity level - Purpose: Controls the amount and detail of log output @@ -354,7 +354,7 @@ environment: ### HTTP REST API - `POST /publish` - Publish message to topic -- `GET /health` - Gateway health check +- `GET /health` - Proxy health check - `GET /metrics` - Prometheus metrics ### WebSocket API @@ -405,15 +405,15 @@ ws.onopen = () => { ### gRPC (Go) ```go conn, err := grpc.Dial("localhost:50051", grpc.WithInsecure()) -client := pb.NewGatewayStreamClient(conn) +client := pb.NewProxyStreamClient(conn) stream, err := client.Stream(context.Background()) ``` ## Monitoring -### Gateway Metrics -- Gateway 1: http://localhost:8081/metrics -- Gateway 2: http://localhost:8082/metrics +### Proxy Metrics +- Proxy 1: http://localhost:8081/metrics +- Proxy 2: http://localhost:8082/metrics ### P2P Node Status - Node 1: http://localhost:9091 @@ -430,13 +430,13 @@ Scale the P2P network by adding more nodes: ## Troubleshooting -### Gateway Connection Issues +### Proxy Connection Issues ```bash -# Check gateway logs -docker-compose logs gateway-1 +# Check proxy logs +docker-compose logs proxy-1 # Test P2P node connectivity -docker-compose exec gateway-1 nc -zv p2pnode-1 33212 +docker-compose exec proxy-1 nc -zv p2pnode-1 33212 ``` ### Message Delivery Issues @@ -451,5 +451,5 @@ curl http://localhost:9091/debug/peers ## See Also - [GossipSub Configuration Guide](/docs/hackathon/configuration/gossipsub.md) - Detailed explanation of underlying pub/sub protocol parameters -- [P2P-Only Deployment](/docs/hackathon/deployment/p2p-only.md) - Alternative deployment without gateways +- [P2P-Only Deployment](/docs/hackathon/deployment/p2p-only.md) - Alternative deployment without proxys - [First Message Tutorial](/docs/hackathon/quick-start/first-message.md) - Step-by-step getting started guide diff --git a/docs/hackathon/overview.md b/docs/hackathon/overview.md index 989088b..6854ecf 100644 --- a/docs/hackathon/overview.md +++ b/docs/hackathon/overview.md @@ -20,8 +20,8 @@ Choose your deployment strategy: ### P2P Network Only - **[P2P-Only Deployment](./deployment/p2p-only.md)** - Deploy just the P2P nodes for direct integration -### Gateway + P2P Network -- **[Gateway + P2P Deployment](./deployment/p2p-with-gateway.md)** - Full stack with REST/WebSocket APIs +### Proxy + P2P Network +- **[Proxy + P2P Deployment](./deployment/p2p-with-proxy.md)** - Full stack with REST/WebSocket APIs ## Client Integration @@ -49,7 +49,7 @@ Benchmark and compare OptimumP2P: The hackathon uses these pre-built Docker images: - **`getoptimum/p2pnode:latest`** - Core P2P node with OptimumP2P protocol -- **`getoptimum/gateway:latest`** - Gateway service for client APIs +- **`getoptimum/proxy:latest`** - Proxy service for client APIs Both images support protocol switching: - `NODE_MODE=optimum` - RLNC-enhanced OptimumP2P (recommended) diff --git a/docs/hackathon/quick-start/first-message.md b/docs/hackathon/quick-start/first-message.md index cf694da..1759393 100644 --- a/docs/hackathon/quick-start/first-message.md +++ b/docs/hackathon/quick-start/first-message.md @@ -1,6 +1,6 @@ # Your First Message -This tutorial demonstrates how to send your first message through OptimumP2P using the gateway setup. We'll use the actual configuration and scripts from the development setup guide. +This tutorial demonstrates how to send your first message through OptimumP2P using the proxy setup. We'll use the actual configuration and scripts from the development setup guide. ## Prerequisites @@ -24,7 +24,7 @@ git clone https://github.com/getoptimum/optimum-dev-setup-guide.git cd optimum-dev-setup-guide ``` -Or create your own `docker-compose.yml` using the configuration from the [P2P Network with Gateway](../deployment/p2p-with-gateway.md) guide. +Or create your own `docker-compose.yml` using the configuration from the [P2P Network with Proxy](../deployment/p2p-with-proxy.md) guide. ## Step 2: Start the Network @@ -51,29 +51,29 @@ docker-compose ps ``` You should see containers for: -- gateway-1 (port 8081) -- gateway-2 (port 8082) +- proxy-1 (port 8081) +- proxy-2 (port 8082) - p2pnode-1, p2pnode-2, p2pnode-3, p2pnode-4 -## Step 3: Test Gateway Connectivity +## Step 3: Test Proxy Connectivity -The gateway provides REST API endpoints for publishing and subscribing. Test connectivity: +The proxy provides REST API endpoints for publishing and subscribing. Test connectivity: ```bash -# Test gateway-1 +# Test proxy-1 curl -I http://localhost:8081 -# Test gateway-2 +# Test proxy-2 curl -I http://localhost:8082 ``` -## Step 4: Build the Gateway Client +## Step 4: Build the Proxy Client -The repository includes a Go client for interacting with the gateway: +The repository includes a Go client for interacting with the proxy: ```bash -cd grpc_gateway_client -go build -o gateway-client ./gateway_client.go +cd grpc_proxy_client +go build -o proxy-client ./gateway_client.go ``` ## Step 5: Subscribe to Messages @@ -86,7 +86,7 @@ In one terminal window, start a subscriber: ``` The subscriber will: -1. Register with the gateway via REST API (`/api/subscribe`) +1. Register with the proxy via REST API (`/api/subscribe`) 2. Open a gRPC stream to receive messages 3. Display received messages in the format: `[RECEIVED] Topic: | Message: ` @@ -155,10 +155,10 @@ Test network performance with higher message volumes: ```bash # High-frequency publishing (100 messages with 100ms delay) -./gateway-client -topic=performance -threshold=0.5 -count=100 -delay=100ms +./proxy-client -topic=performance -threshold=0.5 -count=100 -delay=100ms # Stress test (1000 messages) -./gateway-client -topic=stress -threshold=0.5 -count=1000 -delay=10ms +./proxy-client -topic=stress -threshold=0.5 -count=1000 -delay=10ms ``` ## Understanding the Parameters @@ -170,7 +170,7 @@ The threshold parameter (0.0 to 1.0) controls RLNC decoding: - Typical range: 0.5 to 0.8 ### Client ID -Each client needs a unique identifier for the gateway to track subscriptions and route messages correctly. +Each client needs a unique identifier for the proxy to track subscriptions and route messages correctly. ### Topic Names - Case-sensitive strings @@ -181,8 +181,8 @@ Each client needs a unique identifier for the gateway to track subscriptions and ### View logs ```bash -# Gateway logs -docker-compose logs -f gateway-1 +# Proxy logs +docker-compose logs -f proxy-1 # P2P node logs docker-compose logs -f p2pnode-1 @@ -194,7 +194,7 @@ docker-compose logs -f ### Check network connectivity ```bash # Test P2P node connectivity -docker-compose exec gateway-1 nc -zv p2pnode-1 33212 +docker-compose exec proxy-1 nc -zv p2pnode-1 33212 # View container network docker network inspect optimum-dev-setup-guide_optimum-network @@ -233,7 +233,7 @@ Now that you've successfully sent messages through OptimumP2P: ### Message delivery issues - Verify topic names match exactly - Check threshold values are between 0.0 and 1.0 -- Review gateway and P2P node logs for errors +- Review proxy and P2P node logs for errors ### Performance issues - Monitor container resources: `docker stats` From 25884e440fa5c66dacd2c45b95924b8fa937611f Mon Sep 17 00:00:00 2001 From: swarnabhasinha Date: Sat, 2 Aug 2025 01:54:13 +0530 Subject: [PATCH 17/18] feat: add protocol selection --- .vitepress/config.mts | 4 + .../configuration/protocol-selection.md | 271 ++++++++++++++++++ docs/hackathon/deployment/p2p-with-proxy.md | 4 +- docs/hackathon/overview.md | 7 +- docs/hackathon/quick-start/first-message.md | 14 +- 5 files changed, 289 insertions(+), 11 deletions(-) create mode 100644 docs/hackathon/configuration/protocol-selection.md diff --git a/.vitepress/config.mts b/.vitepress/config.mts index 02f84d4..a870473 100644 --- a/.vitepress/config.mts +++ b/.vitepress/config.mts @@ -281,6 +281,10 @@ function sidebarHome() { text: "Configuration", collapsed: true, items: [ + { + text: "Protocol Selection", + link: "/docs/hackathon/configuration/protocol-selection", + }, { text: "OptimumP2P Configuration", link: "/docs/hackathon/configuration/optimump2p", diff --git a/docs/hackathon/configuration/protocol-selection.md b/docs/hackathon/configuration/protocol-selection.md new file mode 100644 index 0000000..2c21da3 --- /dev/null +++ b/docs/hackathon/configuration/protocol-selection.md @@ -0,0 +1,271 @@ +# Protocol Selection Guide + +The `getoptimum/p2pnode:latest` Docker image supports running two different gossip protocols: + +* **OptimumP2P** (`NODE_MODE=optimum`) - RLNC-enhanced gossip protocol (recommended) +* **GossipSub** (`NODE_MODE=gossipsub`) - Standard libp2p gossip protocol for comparison + +This guide explains how to configure and deploy each protocol mode. + +## Overview + +Both protocols use the same Docker image but operate with different: + +* **Network ports** - OptimumP2P uses port 7070, GossipSub uses port 6060 +* **Configuration parameters** - Each protocol has protocol-specific environment variables +* **Bootstrap peers** - Must match the protocol and port of target nodes +* **Performance characteristics** - OptimumP2P provides enhanced throughput and fault tolerance + +## OptimumP2P Mode (Recommended) + +### Basic Configuration + +```yaml +services: + p2pnode-optimum: + image: 'getoptimum/p2pnode:latest' + environment: + - NODE_MODE=optimum + - CLUSTER_ID=my-cluster + - OPTIMUM_PORT=7070 + - IDENTITY_DIR=/identity + # Bootstrap peer using OptimumP2P protocol and port + - BOOTSTRAP_PEERS=/ip4/172.28.0.10/tcp/7070/p2p/${BOOTSTRAP_PEER_ID} + ports: + - "7070:7070" # OptimumP2P protocol port + - "33212:33212" # gRPC sidecar port + - "9090:9090" # HTTP API port +``` + +### OptimumP2P Parameters + +| Parameter | Environment Variable | Default | Description | +|-----------|---------------------|---------|-------------| +| Listen Port | `OPTIMUM_PORT` | `7070` | P2P protocol listening port | +| Max Message Size | `OPTIMUM_MAX_MSG_SIZE` | `1048576` | Maximum message size (bytes) | +| Mesh Target | `OPTIMUM_MESH_TARGET` | `6` | Target number of mesh peers | +| Mesh Min | `OPTIMUM_MESH_MIN` | `3` | Minimum mesh peers before grafting | +| Mesh Max | `OPTIMUM_MESH_MAX` | `12` | Maximum mesh peers before pruning | +| Shard Factor | `OPTIMUM_SHARD_FACTOR` | `4` | Number of coded shards per message | +| Shard Multiplier | `OPTIMUM_SHARD_MULT` | `1.5` | Publisher shard creation multiplier | +| Forward Threshold | `OPTIMUM_THRESHOLD` | `0.75` | Threshold for forwarding recoded shards | + +### Performance Benefits + +OptimumP2P provides several advantages over standard GossipSub: + +* **Lower Latency** - Coded shards can be forwarded before complete message reception +* **Bandwidth Efficiency** - RLNC reduces redundant data transmission +* **Fault Tolerance** - Messages decode from any sufficient combination of shards +* **Loss Recovery** - Built-in redundancy handles packet loss gracefully + +## GossipSub Mode (Baseline) + +### Basic Configuration + +```yaml +services: + p2pnode-gossipsub: + image: 'getoptimum/p2pnode:latest' + environment: + - NODE_MODE=gossipsub + - CLUSTER_ID=my-cluster + - GOSSIPSUB_PORT=6060 + - IDENTITY_DIR=/identity + # Bootstrap peer using GossipSub protocol and port + - BOOTSTRAP_PEERS=/ip4/172.28.0.10/tcp/6060/p2p/${BOOTSTRAP_PEER_ID} + ports: + - "6060:6060" # GossipSub protocol port + - "33212:33212" # gRPC sidecar port + - "9090:9090" # HTTP API port +``` + +### GossipSub Parameters + +| Parameter | Environment Variable | Default | Description | +|-----------|---------------------|---------|-------------| +| Listen Port | `GOSSIPSUB_PORT` | `6060` | P2P protocol listening port | +| Max Message Size | `GOSSIPSUB_MAX_MSG_SIZE` | `1048576` | Maximum message size (bytes) | +| Mesh Target | `GOSSIPSUB_MESH_TARGET` | `6` | Target number of mesh peers | +| Mesh Min | `GOSSIPSUB_MESH_MIN` | `4` | Minimum mesh peers before grafting | +| Mesh Max | `GOSSIPSUB_MESH_MAX` | `12` | Maximum mesh peers before pruning | + +For detailed GossipSub configuration, see **[GossipSub Configuration](./gossipsub.md)**. + +## Multi-Protocol Deployment + +You can run both protocols simultaneously on the same network for comparison: + +```yaml +version: '3.8' +services: + # OptimumP2P bootstrap node + p2pnode-optimum-bootstrap: + image: 'getoptimum/p2pnode:latest' + environment: + - NODE_MODE=optimum + - CLUSTER_ID=comparison-test + - OPTIMUM_PORT=7070 + - IDENTITY_DIR=/identity + ports: + - "7070:7070" + - "33212:33212" + - "9090:9090" + networks: + test-network: + ipv4_address: 172.28.0.10 + + # GossipSub bootstrap node + p2pnode-gossipsub-bootstrap: + image: 'getoptimum/p2pnode:latest' + environment: + - NODE_MODE=gossipsub + - CLUSTER_ID=comparison-test + - GOSSIPSUB_PORT=6060 + - IDENTITY_DIR=/identity + ports: + - "6060:6060" + - "33213:33212" + - "9091:9090" + networks: + test-network: + ipv4_address: 172.28.0.11 + + # OptimumP2P peer + p2pnode-optimum-peer: + image: 'getoptimum/p2pnode:latest' + environment: + - NODE_MODE=optimum + - CLUSTER_ID=comparison-test + - OPTIMUM_PORT=7070 + - BOOTSTRAP_PEERS=/ip4/172.28.0.10/tcp/7070/p2p/${OPTIMUM_BOOTSTRAP_PEER_ID} + networks: + test-network: + ipv4_address: 172.28.0.12 + + # GossipSub peer + p2pnode-gossipsub-peer: + image: 'getoptimum/p2pnode:latest' + environment: + - NODE_MODE=gossipsub + - CLUSTER_ID=comparison-test + - GOSSIPSUB_PORT=6060 + - BOOTSTRAP_PEERS=/ip4/172.28.0.11/tcp/6060/p2p/${GOSSIPSUB_BOOTSTRAP_PEER_ID} + networks: + test-network: + ipv4_address: 172.28.0.13 + +networks: + test-network: + driver: bridge + ipam: + config: + - subnet: 172.28.0.0/16 +``` + +## Validation and Troubleshooting + +### Valid NODE_MODE Values + +The p2pnode validates `NODE_MODE` at startup. Valid values are: + +* `optimum` - Enables OptimumP2P with RLNC +* `gossipsub` - Enables standard GossipSub + +Invalid values will cause the container to exit with a fatal error. + +### Common Configuration Issues + +**Port Conflicts** +```bash +# Ensure correct port mapping for each protocol +# OptimumP2P: 7070 +# GossipSub: 6060 +``` + +**Bootstrap Peer Mismatches** +```bash +# OptimumP2P nodes must bootstrap to OptimumP2P peers on port 7070 +BOOTSTRAP_PEERS=/ip4/172.28.0.10/tcp/7070/p2p/${PEER_ID} + +# GossipSub nodes must bootstrap to GossipSub peers on port 6060 +BOOTSTRAP_PEERS=/ip4/172.28.0.10/tcp/6060/p2p/${PEER_ID} +``` + +**Protocol Isolation** +* OptimumP2P and GossipSub nodes cannot directly communicate +* Each protocol forms its own mesh network +* Use separate bootstrap nodes for each protocol + +### Health Checks + +Both protocols expose the same health check endpoints: + +```bash +# Check node status +curl http://localhost:9090/health + +# Check peer connections +curl http://localhost:9090/peers + +# Check protocol-specific metrics +curl http://localhost:9090/metrics +``` + +## Configuration Experimentation + +### OptimumP2P Parameter Testing + +OptimumP2P's RLNC implementation provides several parameters that significantly impact network behavior: + +**Shard Factor Experimentation** +```yaml +# Test different sharding approaches +OPTIMUM_SHARD_FACTOR=2 # Minimal sharding +OPTIMUM_SHARD_FACTOR=4 # Default configuration +OPTIMUM_SHARD_FACTOR=8 # High redundancy +``` + +**Forward Threshold Testing** +```yaml +# Test forwarding behavior +OPTIMUM_THRESHOLD=0.5 # Aggressive forwarding +OPTIMUM_THRESHOLD=0.75 # Default behavior +OPTIMUM_THRESHOLD=0.9 # Conservative forwarding +``` + +**Mesh Density Configuration** +```yaml +# Test network connectivity +OPTIMUM_MESH_TARGET=4 # Sparse mesh +OPTIMUM_MESH_TARGET=8 # Dense mesh +OPTIMUM_MESH_TARGET=12 # Maximum connectivity +``` + +### Protocol Comparison Setup + +To observe protocol differences, deploy both modes with identical network topology: + +```yaml +# OptimumP2P network +services: + optimum-network: + environment: + - NODE_MODE=optimum + - OPTIMUM_SHARD_FACTOR=4 + - OPTIMUM_MESH_TARGET=6 + +# GossipSub network + gossipsub-network: + environment: + - NODE_MODE=gossipsub + - GOSSIPSUB_MESH_TARGET=6 +``` + + +--- + +**Next Steps:** +* **[OptimumP2P Configuration](./optimump2p.md)** - Detailed RLNC parameter tuning +* **[GossipSub Configuration](./gossipsub.md)** - Standard gossip parameters +* **[Client Integration](../clients/)** - Connect applications to either protocol \ No newline at end of file diff --git a/docs/hackathon/deployment/p2p-with-proxy.md b/docs/hackathon/deployment/p2p-with-proxy.md index 0759155..3944368 100644 --- a/docs/hackathon/deployment/p2p-with-proxy.md +++ b/docs/hackathon/deployment/p2p-with-proxy.md @@ -27,7 +27,7 @@ Complete setup with proxies and P2P nodes: ```yaml services: proxy-1: - image: 'getoptimum/gateway:latest' + image: 'getoptimum/proxy:latest' platform: linux/amd64 ports: - "8081:8080" # HTTP/WebSocket @@ -48,7 +48,7 @@ services: - p2pnode-4 proxy-2: - image: 'getoptimum/gateway:latest' + image: 'getoptimum/proxy:latest' platform: linux/amd64 ports: - "8082:8080" diff --git a/docs/hackathon/overview.md b/docs/hackathon/overview.md index 6854ecf..2ff055c 100644 --- a/docs/hackathon/overview.md +++ b/docs/hackathon/overview.md @@ -1,6 +1,6 @@ -# OptimumP2P Hackathon Guide +# OptimumP2P Network Configuration Guide -Welcome to the OptimumP2P hackathon documentation. This guide provides everything you need to deploy, configure, and integrate OptimumP2P - a novel RLNC-enhanced gossip algorithm for high-performance peer-to-peer networks. +This guide provides everything you need to deploy, configure, and experiment with OptimumP2P. ## What is OptimumP2P? @@ -34,6 +34,7 @@ Connect to OptimumP2P using various client methods: Fine-tune OptimumP2P for your use case: +- **[Protocol Selection](./configuration/protocol-selection.md)** - Switch between OptimumP2P and GossipSub modes - **[OptimumP2P Configuration](./configuration/optimump2p.md)** - RLNC parameters, mesh topology, and performance tuning - **[GossipSub Configuration](./configuration/gossipsub.md)** - Standard GossipSub parameters for comparison @@ -55,6 +56,8 @@ Both images support protocol switching: - `NODE_MODE=optimum` - RLNC-enhanced OptimumP2P (recommended) - `NODE_MODE=gossipsub` - Standard GossipSub for comparison +See **[Protocol Selection](./configuration/protocol-selection.md)** for detailed configuration and deployment examples. + ## Architecture Deep Dive For developers and integrators: diff --git a/docs/hackathon/quick-start/first-message.md b/docs/hackathon/quick-start/first-message.md index 1759393..3d518d5 100644 --- a/docs/hackathon/quick-start/first-message.md +++ b/docs/hackathon/quick-start/first-message.md @@ -73,7 +73,7 @@ The repository includes a Go client for interacting with the proxy: ```bash cd grpc_proxy_client -go build -o proxy-client ./gateway_client.go +go build -o proxy-client ./proxy_client.go ``` ## Step 5: Subscribe to Messages @@ -82,7 +82,7 @@ In one terminal window, start a subscriber: ```bash # Subscribe to topic "demo" with threshold 0.7 -./script/gateway_client.sh subscribe demo 0.7 +./script/proxy_client.sh subscribe demo 0.7 ``` The subscriber will: @@ -96,7 +96,7 @@ In another terminal window, publish messages: ```bash # Publish 5 messages to topic "demo" with threshold 0.5 -./script/gateway_client.sh publish demo 0.5 5 +./script/proxy_client.sh publish demo 0.5 5 ``` The publisher will: @@ -135,16 +135,16 @@ Test topic isolation by using different topic names: ```bash # Terminal 1: Subscribe to "weather" -./script/gateway_client.sh subscribe weather 0.7 +./script/proxy_client.sh subscribe weather 0.7 # Terminal 2: Subscribe to "news" -./script/gateway_client.sh subscribe news 0.7 +./script/proxy_client.sh subscribe news 0.7 # Terminal 3: Publish to "weather" -./script/gateway_client.sh publish weather 0.5 3 +./script/proxy_client.sh publish weather 0.5 3 # Terminal 4: Publish to "news" -./script/gateway_client.sh publish news 0.5 3 +./script/proxy_client.sh publish news 0.5 3 ``` Each subscriber will only receive messages from their subscribed topic. From 7e633c9546c3fcebfa70fea938acf9b344ebad0f Mon Sep 17 00:00:00 2001 From: swarnabhasinha Date: Thu, 7 Aug 2025 13:55:20 -0700 Subject: [PATCH 18/18] fix: remove dev setup ref and break the steps --- docs/hackathon/clients/grpc-examples.md | 391 +++++++++++- docs/hackathon/quick-start/first-message.md | 650 ++++++++++++++++++-- docs/hackathon/quick-start/installation.md | 11 +- 3 files changed, 970 insertions(+), 82 deletions(-) diff --git a/docs/hackathon/clients/grpc-examples.md b/docs/hackathon/clients/grpc-examples.md index cc94cde..6151df1 100644 --- a/docs/hackathon/clients/grpc-examples.md +++ b/docs/hackathon/clients/grpc-examples.md @@ -13,10 +13,12 @@ OptimumP2P provides two gRPC client integration patterns: The P2P direct client connects to individual P2P node sidecar gRPC endpoints for direct protocol interaction. -### Source Code Location +### Creating the P2P Client + +The P2P client code is provided below. Create the following directory structure: ``` -optimum-dev-setup-guide/grpc_p2p_client/ +grpc_p2p_client/ ├── p2p_client.go # Main client implementation ├── proto/ # Protocol buffer definitions ├── grpc/ # Generated gRPC code @@ -32,8 +34,301 @@ optimum-dev-setup-guide/grpc_p2p_client/ ### Building the P2P Client +#### Step 1: Create the directory and initialize Go module + +```bash +mkdir grpc_p2p_client +cd grpc_p2p_client +go mod init p2p_client +``` + +#### Step 2: Add dependencies + +```bash +go get google.golang.org/grpc +go get google.golang.org/protobuf +``` + +#### Step 3: Create protobuf definition + +Create `proto/p2p_stream.proto`: + +```bash +mkdir proto +``` + +Create `proto/p2p_stream.proto` with this content: + +```protobuf +syntax = "proto3"; + +package proto; + +option go_package = "optimum-gateway/proto;proto"; + +service CommandStream { + rpc ListenCommands (stream Request) returns (stream Response) {} + rpc Health (Void) returns (HealthResponse) {} + rpc ListTopics(Void) returns (TopicList) {} +} + +message Void {} + +message HealthResponse { + bool status = 1; + string nodeMode = 2; + float memoryUsed = 3; + float cpuUsed = 4; + float diskUsed = 5; +} + +enum ResponseType { + Unknown = 0; + Message = 1; + MessageTraceOptimumP2P = 2; + MessageTraceGossipSub = 3; +} + +message Request { + int32 command = 1; + bytes data = 2; + string topic = 3; +} + +message Response { + ResponseType command = 1; + bytes data = 2; + bytes metadata = 3; +} + +message TopicList { + repeated string topics = 1; +} +``` + +#### Step 4: Generate protobuf code + +```bash +mkdir grpc +protoc --go_out=grpc --go-grpc_out=grpc proto/p2p_stream.proto +``` + +#### Step 5: Create the client code + +Create `p2p_client.go` with this content: + +```go +package main + +import ( + "context" + "crypto/rand" + "encoding/hex" + "encoding/json" + "flag" + "fmt" + "io" + "log" + "math" + "os" + "os/signal" + "strings" + "sync/atomic" + "syscall" + "time" + + "google.golang.org/grpc" + "google.golang.org/grpc/credentials/insecure" + "google.golang.org/grpc/keepalive" + "google.golang.org/grpc/status" + + protobuf "p2p_client/grpc" +) + +type P2PMessage struct { + MessageID string + Topic string + Message []byte + SourceNodeID string +} + +type Command int32 + +const ( + CommandUnknown Command = iota + CommandPublishData + CommandSubscribeToTopic + CommandUnSubscribeToTopic +) + +var ( + addr = flag.String("addr", "localhost:33212", "sidecar gRPC address") + mode = flag.String("mode", "subscribe", "mode: subscribe | publish") + topic = flag.String("topic", "", "topic name") + message = flag.String("msg", "", "message data (for publish)") + + count = flag.Int("count", 1, "number of messages to publish (for publish mode)") + sleep = flag.Duration("sleep", 0, "optional delay between publishes (e.g., 1s, 500ms)") + + keepaliveTime = flag.Duration("keepalive-interval", 2*time.Minute, "gRPC keepalive ping interval") + keepaliveTimeout = flag.Duration("keepalive-timeout", 20*time.Second, "gRPC keepalive ping timeout") +) + +func main() { + flag.Parse() + if *topic == "" { + log.Fatalf("−topic is required") + } + + conn, err := grpc.NewClient(*addr, + grpc.WithTransportCredentials(insecure.NewCredentials()), + grpc.WithInitialWindowSize(1024*1024*1024), + grpc.WithInitialConnWindowSize(1024*1024*1024), + grpc.WithDefaultCallOptions( + grpc.MaxCallRecvMsgSize(math.MaxInt), + grpc.MaxCallSendMsgSize(math.MaxInt), + ), + grpc.WithKeepaliveParams(keepalive.ClientParameters{ + Time: *keepaliveTime, + Timeout: *keepaliveTimeout, + PermitWithoutStream: false, + })) + if err != nil { + log.Fatalf("failed to connect to node %v", err) + } + defer conn.Close() + + client := protobuf.NewCommandStreamClient(conn) + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + stream, err := client.ListenCommands(ctx) + if err != nil { + log.Fatalf("ListenCommands: %v", err) + } + + c := make(chan os.Signal, 1) + signal.Notify(c, os.Interrupt, syscall.SIGTERM) + go func() { + <-c + fmt.Println("\nshutting down…") + cancel() + os.Exit(0) + }() + + switch *mode { + case "subscribe": + subReq := &protobuf.Request{ + Command: int32(CommandSubscribeToTopic), + Topic: *topic, + } + if err := stream.Send(subReq); err != nil { + log.Fatalf("send subscribe: %v", err) + } + fmt.Printf("Subscribed to topic %q, waiting for messages…\n", *topic) + + var receivedCount int32 + msgChan := make(chan *protobuf.Response, 10000) + + go func() { + for { + resp, err := stream.Recv() + if err == io.EOF { + close(msgChan) + return + } + if err != nil { + if st, ok := status.FromError(err); ok { + msg := st.Message() + if strings.Contains(msg, "ENHANCE_YOUR_CALM") || strings.Contains(msg, "too_many_pings") { + log.Printf("Connection closed due to keepalive ping limit.") + close(msgChan) + return + } + } + log.Printf("recv error: %v", err) + close(msgChan) + return + } + msgChan <- resp + } + }() + + for { + select { + case <-ctx.Done(): + log.Printf("Context canceled. Total messages received: %d", atomic.LoadInt32(&receivedCount)) + return + case resp, ok := <-msgChan: + if !ok { + log.Printf("Stream closed. Total messages received: %d", atomic.LoadInt32(&receivedCount)) + return + } + go func(resp *protobuf.Response) { + handleResponse(resp, &receivedCount) + }(resp) + } + } + + case "publish": + if *message == "" && *count == 1 { + log.Fatalf("−msg is required in publish mode") + } + for i := 0; i < *count; i++ { + var data []byte + if *count == 1 { + data = []byte(*message) + } else { + randomBytes := make([]byte, 4) + if _, err := rand.Read(randomBytes); err != nil { + log.Fatalf("failed to generate random bytes: %v", err) + } + randomSuffix := hex.EncodeToString(randomBytes) + data = []byte(fmt.Sprintf("P2P message %d - %s", i+1, randomSuffix)) + } + + pubReq := &protobuf.Request{ + Command: int32(CommandPublishData), + Topic: *topic, + Data: data, + } + if err := stream.Send(pubReq); err != nil { + log.Fatalf("send publish: %v", err) + } + fmt.Printf("Published %q to %q\n", string(data), *topic) + + if *sleep > 0 { + time.Sleep(*sleep) + } + } + + default: + log.Fatalf("unknown mode %q", *mode) + } +} + +func handleResponse(resp *protobuf.Response, counter *int32) { + switch resp.GetCommand() { + case protobuf.ResponseType_Message: + var p2pMessage P2PMessage + if err := json.Unmarshal(resp.GetData(), &p2pMessage); err != nil { + log.Printf("Error unmarshalling message: %v", err) + return + } + n := atomic.AddInt32(counter, 1) + fmt.Printf("[%d] Received message: %q\n", n, string(p2pMessage.Message)) + case protobuf.ResponseType_MessageTraceGossipSub: + case protobuf.ResponseType_MessageTraceOptimumP2P: + case protobuf.ResponseType_Unknown: + default: + log.Println("Unknown response command:", resp.GetCommand()) + } +} +``` + +#### Step 6: Build the client + ```bash -cd optimum-dev-setup-guide/grpc_p2p_client go build -o p2p-client ./p2p_client.go ``` @@ -57,21 +352,62 @@ go build -o p2p-client ./p2p_client.go -count=100 -sleep=200ms ``` -### Using the Convenience Script +### Using a Convenience Script (Optional) -The repository includes a helper script for easier usage: +You can create a helper script `p2p_client.sh` for easier usage: ```bash -cd optimum-dev-setup-guide +#!/usr/bin/env bash +set -e + +P2P_CLIENT_DIR="./grpc_p2p_client" + +cd "$P2P_CLIENT_DIR" + +go build -o p2p-client ./p2p_client.go + +if [ -z "${1:-}" ]; then + echo "Usage: $0 (subscribe )|(publish [options])" >&2 + exit 1 +fi + +ADDR="$1" +shift + +case "${1:-}" in + subscribe) + TOPIC="$2" + shift 2 + ./p2p-client -mode=subscribe -topic="$TOPIC" --addr="$ADDR" "$@" + ;; + publish) + TOPIC="$2" + MESSAGE="$3" + shift 3 + if [[ "$MESSAGE" == "random" ]]; then + ./p2p-client -mode=publish -topic="$TOPIC" --addr="$ADDR" "$@" + else + ./p2p-client -mode=publish -topic="$TOPIC" -msg="$MESSAGE" --addr="$ADDR" "$@" + fi + ;; + *) + echo "Usage: $0 (subscribe )|(publish [options])" >&2 + exit 1 + ;; +esac +``` + +Then use it like: +```bash # Subscribe to topic -./script/p2p_client.sh 127.0.0.1:33221 subscribe test-topic +./p2p_client.sh 127.0.0.1:33221 subscribe test-topic # Publish a message -./script/p2p_client.sh 127.0.0.1:33221 publish test-topic "Hello World" +./p2p_client.sh 127.0.0.1:33221 publish test-topic "Hello World" # Publish multiple random messages -./script/p2p_client.sh 127.0.0.1:33221 publish test-topic "random" -count=100 -sleep=200ms +./p2p_client.sh 127.0.0.1:33221 publish test-topic "random" -count=100 -sleep=200ms ``` ### P2P Client Configuration @@ -111,15 +447,9 @@ The client receives different response types for metrics collection: The Proxy client connects through the Proxy service, which provides REST API registration and gRPC streaming for message delivery. -### Source Code Location +### Creating the Proxy Client -``` -optimum-dev-setup-guide/grpc_proxy_client/ -├── proxy_client.go # Main client implementation -├── proto/ # Protocol buffer definitions -├── grpc/ # Generated gRPC code -└── go.mod # Go module dependencies -``` +The Proxy client code is provided in the [Quick Start Guide](../quick-start/first-message.md#step-4-create-the-proxy-client). Follow those steps to create the complete proxy client with all necessary files. ### Client Features @@ -130,10 +460,7 @@ optimum-dev-setup-guide/grpc_proxy_client/ ### Building the Proxy Client -```bash -cd optimum-dev-setup-guide/grpc_proxy_client -go build -o proxy-client ./proxy_client.go -``` +Refer to the [Quick Start Guide Steps 4a-4g](../quick-start/first-message.md#step-4-create-the-proxy-client) for complete build instructions. ### Usage Examples @@ -156,14 +483,14 @@ go build -o proxy-client ./proxy_client.go ### Using the Convenience Script -```bash -cd optimum-dev-setup-guide +Refer to the [Quick Start Guide](../quick-start/first-message.md) for examples of using the proxy client directly with command-line flags like: +```bash # Subscribe to topic with threshold -./script/proxy_client.sh subscribe demo 0.7 +./proxy-client -topic=demo -threshold=0.7 -subscribeOnly # Publish messages with threshold and count -./script/proxy_client.sh publish demo 0.5 10 +./proxy-client -topic=demo -threshold=0.5 -count=10 ``` ### Proxy Client Configuration @@ -223,13 +550,13 @@ The Proxy client provides simpler message delivery metrics suitable for applicat ```bash # Terminal 1: Start OptimumP2P subscriber -./script/p2p_client.sh 127.0.0.1:33221 subscribe perf-test +./p2p-client -addr=127.0.0.1:33221 -mode=subscribe -topic=perf-test # Terminal 2: Start GossipSub subscriber -./script/p2p_client.sh 127.0.0.1:33222 subscribe perf-test +./p2p-client -addr=127.0.0.1:33222 -mode=subscribe -topic=perf-test # Terminal 3: Publish test messages -./script/p2p_client.sh 127.0.0.1:33221 publish perf-test "random" -count=1000 -sleep=10ms +./p2p-client -addr=127.0.0.1:33221 -mode=publish -topic=perf-test -count=1000 -sleep=10ms ``` ## Integration Examples @@ -290,10 +617,10 @@ func main() { ### Protocol Buffer Definitions -Both clients use Protocol Buffers for gRPC communication. The definitions are available in: +Both clients use Protocol Buffers for gRPC communication. The definitions are provided in the code sections above: -- P2P Client: `optimum-dev-setup-guide/grpc_p2p_client/proto/p2p_stream.proto` -- Proxy Client: `optimum-dev-setup-guide/grpc_proxy_client/proto/proxy_stream.proto` +- P2P Client: See the protobuf definition in the "Building the P2P Client" section +- Proxy Client: See the [Quick Start Guide](../quick-start/first-message.md#step-4d-create-protobuf-definition) ## Troubleshooting @@ -337,7 +664,7 @@ failed to connect to node dial tcp 127.0.0.1:33212: connect: connection refused ```bash # Regenerate gRPC code if needed cd grpc_p2p_client -protoc --go_out=. --go-grpc_out=. proto/*.proto +protoc --go_out=grpc --go-grpc_out=grpc proto/*.proto ``` #### Module dependency issues diff --git a/docs/hackathon/quick-start/first-message.md b/docs/hackathon/quick-start/first-message.md index 3d518d5..9bc0da0 100644 --- a/docs/hackathon/quick-start/first-message.md +++ b/docs/hackathon/quick-start/first-message.md @@ -1,6 +1,6 @@ # Your First Message -This tutorial demonstrates how to send your first message through OptimumP2P using the proxy setup. We'll use the actual configuration and scripts from the development setup guide. +This tutorial demonstrates how to send your first message through OptimumP2P using the proxy setup. We'll provide all the necessary configuration and code directly in this guide. ## Prerequisites @@ -10,41 +10,211 @@ This tutorial demonstrates how to send your first message through OptimumP2P usi ## Step 1: Set Up the Network -Create a working directory and use the provided docker-compose configuration: +### Step 1a: Create working directory ```bash mkdir optimump2p-test -cd optimump2p-test ``` -Download the complete setup: +### Step 1b: Navigate to directory + ```bash -# Clone the development setup repository -git clone https://github.com/getoptimum/optimum-dev-setup-guide.git -cd optimum-dev-setup-guide +cd optimump2p-test ``` -Or create your own `docker-compose.yml` using the configuration from the [P2P Network with Proxy](../deployment/p2p-with-proxy.md) guide. +### Step 1c: Create docker-compose.yml + +Create a `docker-compose.yml` file with the following content: + +```yaml +services: + proxy-1: + image: 'getoptimum/proxy:latest' + platform: linux/amd64 + ports: + - "8081:8080" # HTTP Port for the proxy + - "50051:50051" # gRPC Port for the proxy + environment: + - PROXY_PORT=:8080 + - CLUSTER_ID=proxy-1 + - ENABLE_AUTH=false + - LOG_LEVEL=debug + - P2P_NODES=p2pnode-1:33212,p2pnode-2:33212,p2pnode-3:33212,p2pnode-4:33212 + networks: + optimum-network: + ipv4_address: 172.28.0.10 + depends_on: + - p2pnode-1 + - p2pnode-2 + - p2pnode-3 + - p2pnode-4 + + proxy-2: + image: 'getoptimum/proxy:latest' + platform: linux/amd64 + ports: + - "8082:8080" # HTTP Port for the proxy + - "50052:50051" # gRPC Port for the proxy + environment: + - PROXY_PORT=:8080 + - CLUSTER_ID=proxy-2 + - ENABLE_AUTH=false + - LOG_LEVEL=debug + - P2P_NODES=p2pnode-1:33212,p2pnode-2:33212,p2pnode-3:33212,p2pnode-4:33212 + networks: + optimum-network: + ipv4_address: 172.28.0.11 + depends_on: + - p2pnode-1 + - p2pnode-2 + - p2pnode-3 + - p2pnode-4 + + p2pnode-1: + image: 'getoptimum/p2pnode:latest' + platform: linux/amd64 + volumes: + - ./identity:/identity + environment: + - LOG_LEVEL=debug + - CLUSTER_ID=p2pnode-1 + - NODE_MODE=optimum + - SIDECAR_PORT=33212 + - API_PORT=9090 + - IDENTITY_DIR=/identity + - BOOTSTRAP_PEERS=/ip4/172.28.0.12/tcp/7070/p2p/${BOOTSTRAP_PEER_ID} + - OPTIMUM_PORT=7070 + - OPTIMUM_MAX_MSG_SIZE=1048576 + - OPTIMUM_MESH_TARGET=6 + - OPTIMUM_MESH_MIN=3 + - OPTIMUM_MESH_MAX=12 + - OPTIMUM_SHARD_FACTOR=4 + - OPTIMUM_SHARD_MULT=1.5 + - OPTIMUM_THRESHOLD=0.75 + networks: + optimum-network: + ipv4_address: 172.28.0.12 + ports: + - "33221:33212" + - "7071:7070" + - "6061:6060" + - "9091:9090" + + p2pnode-2: + image: 'getoptimum/p2pnode:latest' + platform: linux/amd64 + environment: + - LOG_LEVEL=debug + - CLUSTER_ID=p2pnode-1 + - NODE_MODE=optimum + - SIDECAR_PORT=33212 + - API_PORT=9090 + - IDENTITY_DIR=/identity + - BOOTSTRAP_PEERS=/ip4/172.28.0.12/tcp/7070/p2p/${BOOTSTRAP_PEER_ID} + - OPTIMUM_PORT=7070 + - OPTIMUM_MAX_MSG_SIZE=1048576 + - OPTIMUM_MESH_TARGET=6 + - OPTIMUM_MESH_MIN=3 + - OPTIMUM_MESH_MAX=12 + - OPTIMUM_SHARD_FACTOR=4 + - OPTIMUM_SHARD_MULT=1.5 + - OPTIMUM_THRESHOLD=0.75 + networks: + optimum-network: + ipv4_address: 172.28.0.13 + ports: + - "33222:33212" + - "7072:7070" + - "6062:6060" + - "9092:9090" + + p2pnode-3: + image: 'getoptimum/p2pnode:latest' + platform: linux/amd64 + environment: + - LOG_LEVEL=debug + - CLUSTER_ID=p2pnode-1 + - NODE_MODE=optimum + - SIDECAR_PORT=33212 + - API_PORT=9090 + - IDENTITY_DIR=/identity + - OPTIMUM_PORT=7070 + - OPTIMUM_MAX_MSG_SIZE=1048576 + - OPTIMUM_MESH_TARGET=6 + - OPTIMUM_MESH_MIN=3 + - OPTIMUM_MESH_MAX=12 + - OPTIMUM_SHARD_FACTOR=4 + - OPTIMUM_SHARD_MULT=1.5 + - OPTIMUM_THRESHOLD=0.75 + - BOOTSTRAP_PEERS=/ip4/172.28.0.12/tcp/7070/p2p/${BOOTSTRAP_PEER_ID} + networks: + optimum-network: + ipv4_address: 172.28.0.14 + ports: + - "33223:33212" + - "7073:7070" + - "6063:6060" + - "9093:9090" + + p2pnode-4: + image: 'getoptimum/p2pnode:latest' + platform: linux/amd64 + environment: + - LOG_LEVEL=debug + - CLUSTER_ID=p2pnode-1 + - NODE_MODE=optimum + - SIDECAR_PORT=33212 + - API_PORT=9090 + - IDENTITY_DIR=/identity + - OPTIMUM_PORT=7070 + - OPTIMUM_MAX_MSG_SIZE=1048576 + - OPTIMUM_MESH_TARGET=6 + - OPTIMUM_MESH_MIN=3 + - OPTIMUM_MESH_MAX=12 + - OPTIMUM_SHARD_FACTOR=4 + - OPTIMUM_SHARD_MULT=1.5 + - OPTIMUM_THRESHOLD=0.75 + - BOOTSTRAP_PEERS=/ip4/172.28.0.12/tcp/7070/p2p/${BOOTSTRAP_PEER_ID} + networks: + optimum-network: + ipv4_address: 172.28.0.15 + ports: + - "33224:33212" + - "7074:7070" + - "6064:6060" + - "9094:9090" + +networks: + optimum-network: + driver: bridge + ipam: + config: + - subnet: 172.28.0.0/16 +``` ## Step 2: Start the Network -Generate the required peer identity: +### Step 2a: Generate peer identity ```bash # Create identity directory if using local setup mkdir -p identity +``` + +### Step 2b: Set environment variable +```bash # Set the bootstrap peer ID environment variable export BOOTSTRAP_PEER_ID=12D3KooWExample # This will be generated automatically ``` -Start all services: +### Step 2c: Start all services ```bash docker-compose up -d ``` -Verify the services are running: +### Step 2d: Verify services are running ```bash docker-compose ps @@ -57,57 +227,357 @@ You should see containers for: ## Step 3: Test Proxy Connectivity -The proxy provides REST API endpoints for publishing and subscribing. Test connectivity: +Before we start sending messages, let's make sure the proxy services are working correctly. The proxy provides REST API endpoints for publishing and subscribing to messages. + +### Step 3a: Test First Proxy + +Test the connection to proxy-1: ```bash -# Test proxy-1 +# Test proxy-1 (should return HTTP headers if working) curl -I http://localhost:8081 +``` + +**Expected output:** You should see HTTP response headers starting with `HTTP/1.1 200 OK` or similar. + +### Step 3b: Test Second Proxy -# Test proxy-2 +Test the connection to proxy-2: + +```bash +# Test proxy-2 (should return HTTP headers if working) curl -I http://localhost:8082 ``` -## Step 4: Build the Proxy Client +**Expected output:** Similar HTTP response headers, confirming both proxies are running. + +**Troubleshooting:** If you get "connection refused" errors, check that your Docker containers are running with `docker-compose ps`. + +## Step 4: Create the Proxy Client -The repository includes a Go client for interacting with the proxy: +Let's create a Go client application that makes it easy to interact with the proxy. + +### Step 4a: Create client directory ```bash +mkdir grpc_proxy_client cd grpc_proxy_client +``` + +### Step 4b: Initialize Go module + +```bash +go mod init proxy_client +``` + +### Step 4c: Add dependencies + +```bash +go get google.golang.org/grpc +go get google.golang.org/protobuf +``` + +### Step 4d: Create protobuf definition + +Create a `proto/proxy_stream.proto` file: + +```bash +mkdir proto +``` + +Create `proto/proxy_stream.proto` with this content: + +```protobuf +syntax = "proto3"; + +package proto; + +option go_package = "optimum-proxy/proto;proto"; + +service ProxyStream { + rpc ClientStream (stream ProxyMessage) returns (stream ProxyMessage); +} + +message ProxyMessage { + string client_id = 1; + bytes message = 2; + string topic = 3; + string message_id = 4; + string type = 5; +} +``` + +### Step 4e: Generate protobuf code + +```bash +mkdir grpc +protoc --go_out=grpc --go-grpc_out=grpc proto/proxy_stream.proto +``` + +### Step 4f: Create the client code + +Create `proxy_client.go` with this content: + +```go +package main + +import ( + "bytes" + "context" + crand "crypto/rand" + "encoding/hex" + "encoding/json" + "flag" + "fmt" + "io" + "log" + "math" + "math/rand" + "net/http" + "os" + "os/signal" + "time" + + protobuf "proxy_client/grpc" + + "google.golang.org/grpc" + "google.golang.org/grpc/credentials/insecure" + "google.golang.org/grpc/keepalive" +) + +const ( + proxyREST = "http://localhost:8081" + proxyGRPC = "localhost:50051" + defaultTopic = "demo" + defaultThreshold = 0.1 + defaultMsgCount = 5 + defaultDelay = 2 * time.Second +) + +var ( + topic = flag.String("topic", defaultTopic, "topic name") + threshold = flag.Float64("threshold", defaultThreshold, "delivery threshold (0.0 to 1.0)") + subscribeOnly = flag.Bool("subscribeOnly", false, "only subscribe and receive messages (no publishing)") + messageCount = flag.Int("count", defaultMsgCount, "number of messages to publish") + messageDelay = flag.Duration("delay", defaultDelay, "delay between message publishing") + + keepaliveTime = flag.Duration("keepalive-interval", 2*time.Minute, "gRPC keepalive interval") + keepaliveTimeout = flag.Duration("keepalive-timeout", 20*time.Second, "gRPC keepalive timeout") + + words = []string{"hello", "ping", "update", "broadcast", "status", "message", "event", "data", "note"} +) + +func main() { + flag.Parse() + + clientID := generateClientID() + log.Printf("[INFO] Client ID: %s | Topic: %s | Threshold: %.2f", clientID, *topic, *threshold) + + if err := subscribe(clientID, *topic, *threshold); err != nil { + log.Fatalf("subscribe error: %v", err) + } + + conn, err := grpc.NewClient(proxyGRPC, + grpc.WithTransportCredentials(insecure.NewCredentials()), + grpc.WithInitialWindowSize(1024*1024*1024), + grpc.WithInitialConnWindowSize(1024*1024*1024), + grpc.WithDefaultCallOptions( + grpc.MaxCallRecvMsgSize(math.MaxInt), + grpc.MaxCallSendMsgSize(math.MaxInt), + ), + grpc.WithKeepaliveParams(keepalive.ClientParameters{ + Time: *keepaliveTime, + Timeout: *keepaliveTimeout, + PermitWithoutStream: false, + }), + ) + if err != nil { + log.Fatalf("gRPC connection failed: %v", err) + } + defer conn.Close() + + client := protobuf.NewProxyStreamClient(conn) + stream, err := client.ClientStream(context.Background()) + if err != nil { + log.Fatalf("stream open failed: %v", err) + } + + if err := stream.Send(&protobuf.ProxyMessage{ClientId: clientID}); err != nil { + log.Fatalf("client ID send failed: %v", err) + } + + go func() { + for { + resp, err := stream.Recv() + if err == io.EOF { + log.Println("[CLOSED] gRPC stream closed by server") + return + } + if err != nil { + log.Printf("[ERROR] stream receive: %v", err) + return + } + log.Printf("[RECEIVED] Topic: %s | Message: %s", resp.Topic, string(resp.Message)) + } + }() + + c := make(chan os.Signal, 1) + signal.Notify(c, os.Interrupt) + go func() { + <-c + log.Println("[INTERRUPTED] shutting down...") + os.Exit(0) + }() + + if *subscribeOnly { + select {} + } + + for i := 0; i < *messageCount; i++ { + msg := generateRandomMessage() + log.Printf("[PUBLISH] Message: %s", msg) + if err := publishMessage(clientID, *topic, msg); err != nil { + log.Printf("[ERROR] publish failed: %v", err) + } + time.Sleep(*messageDelay) + } + + time.Sleep(3 * time.Second) +} + +func subscribe(clientID, topic string, threshold float64) error { + body := map[string]interface{}{ + "client_id": clientID, + "topic": topic, + "threshold": threshold, + } + data, _ := json.Marshal(body) + resp, err := http.Post(proxyREST+"/api/subscribe", "application/json", bytes.NewReader(data)) + if err != nil { + return err + } + defer resp.Body.Close() + io.Copy(io.Discard, resp.Body) + return nil +} + +func publishMessage(clientID, topic, msg string) error { + body := map[string]interface{}{ + "client_id": clientID, + "topic": topic, + "message": msg, + } + data, _ := json.Marshal(body) + resp, err := http.Post(proxyREST+"/api/publish", "application/json", bytes.NewReader(data)) + if err != nil { + return err + } + defer resp.Body.Close() + io.Copy(io.Discard, resp.Body) + return nil +} + +func generateClientID() string { + b := make([]byte, 4) + _, _ = crand.Read(b) + return "client_" + hex.EncodeToString(b) +} + +func generateRandomMessage() string { + return fmt.Sprintf("%s @ %s", words[rand.Intn(len(words))], time.Now().Format("15:04:05")) +} +``` + +### Step 4g: Build the client + +```bash go build -o proxy-client ./proxy_client.go ``` ## Step 5: Subscribe to Messages -In one terminal window, start a subscriber: +Now we'll set up a message subscriber. This is like tuning into a radio station - once subscribed, you'll receive all messages published to that topic. + +### Step 5a: Open a New Terminal + +Open a **new terminal window** and navigate to your project directory: + +```bash +# Make sure you're in the right directory +cd optimump2p-test +``` + +### Step 5b: Start the Subscriber + +In this terminal, start listening for messages: ```bash # Subscribe to topic "demo" with threshold 0.7 -./script/proxy_client.sh subscribe demo 0.7 +./proxy-client -topic=demo -threshold=0.7 -subscribeOnly ``` +**What this command does:** +- `subscribe`: Tells the client to listen for messages +- `demo`: The topic name we're subscribing to +- `0.7`: The threshold value (higher = more reliable message reconstruction) + +### Step 5c: Understand the Subscriber Output + The subscriber will: -1. Register with the proxy via REST API (`/api/subscribe`) -2. Open a gRPC stream to receive messages -3. Display received messages in the format: `[RECEIVED] Topic: | Message: ` +1. **Register** with the proxy via REST API (`/api/subscribe`) +2. **Open** a gRPC stream to receive messages in real-time +3. **Display** received messages in the format: `[RECEIVED] Topic: | Message: ` + +**Keep this terminal open** - it will show incoming messages as they arrive. ## Step 6: Publish Messages -In another terminal window, publish messages: +Now let's send some messages! We'll use a second terminal to publish messages while watching them appear in the subscriber terminal. + +### Step 6a: Open Another Terminal + +Open a **second new terminal window** and navigate to your project directory: + +```bash +# Navigate to the project directory +cd optimump2p-test +``` + +### Step 6b: Send Messages + +Publish messages to the same topic: ```bash # Publish 5 messages to topic "demo" with threshold 0.5 -./script/proxy_client.sh publish demo 0.5 5 +./proxy-client -topic=demo -threshold=0.5 -count=5 ``` +**What this command does:** +- `publish`: Tells the client to send messages +- `demo`: The topic name (must match the subscriber's topic) +- `0.5`: The threshold for message encoding +- `5`: Number of messages to send + +### Step 6c: Watch the Results + The publisher will: -1. Send messages via REST API (`/api/publish`) -2. Display each published message in the format: `[PUBLISH] Message: ` +1. **Send** messages via REST API (`/api/publish`) +2. **Display** each published message in the format: `[PUBLISH] Message: ` + +**In your subscriber terminal** (from Step 5), you should see the messages being received in real-time. + +### Step 6d: Verify Message Flow + +Check that: +- The **publisher terminal** shows: `[PUBLISH] Message: Message 1`, `[PUBLISH] Message: 2`, etc. +- The **subscriber terminal** shows: `[RECEIVED] Topic: demo | Message: Message 1`, etc. + +This confirms that messages are flowing correctly through the OptimumP2P network! ## Step 7: Alternative REST API Usage You can also interact directly with the REST API using curl: -### Subscribe via REST (requires separate gRPC stream for receiving) ```bash curl -X POST http://localhost:8081/api/subscribe \ -H "Content-Type: application/json" \ @@ -118,7 +588,18 @@ curl -X POST http://localhost:8081/api/subscribe \ }' ``` -### Publish via REST +**What this does:** +- **POST request** to the subscription endpoint +- **client_id**: Unique identifier for your client +- **topic**: The topic you want to subscribe to +- **threshold**: Message reliability setting + +**Important note:** This only registers the subscription. To actually receive messages, you'd need to separately open a gRPC stream (which the script handles automatically). + +### Step 7c: Publish via REST API + +Send a message using a direct HTTP request: + ```bash curl -X POST http://localhost:8081/api/publish \ -H "Content-Type: application/json" \ @@ -129,38 +610,125 @@ curl -X POST http://localhost:8081/api/publish \ }' ``` +**What this does:** +- **POST request** to the publish endpoint +- **client_id**: Same client ID as used for subscription +- **topic**: Must match your subscription topic +- **message**: The actual message content to send + +### Step 7d: Test the REST API + +To see this working: + +1. **Keep your subscriber running** from Step 5 (if still open) +2. **Run the publish curl command** from Step 7c +3. **Check your subscriber terminal** - you should see: `[RECEIVED] Topic: demo | Message: Hello from REST API` + +This demonstrates that REST API publishing works with script-based subscribing (and vice versa). + ## Step 8: Multiple Topics -Test topic isolation by using different topic names: +OptimumP2P supports multiple topics running simultaneously. This means different applications or message types can be isolated from each other. Let's test this feature by setting up multiple subscribers and publishers. + +### Step 8a: Open Multiple Terminal Windows + +You'll need **4 separate terminal windows** for this test. Each terminal should be in your project directory: ```bash -# Terminal 1: Subscribe to "weather" -./script/proxy_client.sh subscribe weather 0.7 +# In each new terminal, navigate to your project directory +cd optimump2p-test +``` -# Terminal 2: Subscribe to "news" -./script/proxy_client.sh subscribe news 0.7 +### Step 8b: Set Up First Topic Subscriber -# Terminal 3: Publish to "weather" -./script/proxy_client.sh publish weather 0.5 3 +In **Terminal 1**, subscribe to the "weather" topic: -# Terminal 4: Publish to "news" -./script/proxy_client.sh publish news 0.5 3 +```bash +# This will listen for weather-related messages +./proxy-client -topic=weather -threshold=0.7 -subscribeOnly +``` + +**What this does:** Creates a subscriber that will only receive messages published to the "weather" topic. + +### Step 8c: Set Up Second Topic Subscriber + +In **Terminal 2**, subscribe to the "news" topic: + +```bash +# This will listen for news-related messages +./proxy-client -topic=news -threshold=0.7 -subscribeOnly ``` -Each subscriber will only receive messages from their subscribed topic. +**What this does:** Creates a second subscriber for a completely different topic. This subscriber won't see weather messages. + +### Step 8d: Publish to Weather Topic + +In **Terminal 3**, publish messages to the weather topic: + +```bash +# Send 3 weather messages +./proxy-client -topic=weather -threshold=0.5 -count=3 +``` + +**Expected result:** Only Terminal 1 (weather subscriber) should show these messages. Terminal 2 (news subscriber) should remain quiet. + +### Step 8e: Publish to News Topic + +In **Terminal 4**, publish messages to the news topic: + +```bash +# Send 3 news messages +./proxy-client -topic=news -threshold=0.5 -count=3 +``` + +**Expected result:** Only Terminal 2 (news subscriber) should show these messages. Terminal 1 (weather subscriber) should not see them. + +### Step 8f: Verify Topic Isolation + +Check that each subscriber only received messages from their subscribed topic: + +- **Terminal 1** should show: `[RECEIVED] Topic: weather | Message: ...` +- **Terminal 2** should show: `[RECEIVED] Topic: news | Message: ...` + +This demonstrates that topics are completely isolated from each other. ## Step 9: Load Testing -Test network performance with higher message volumes: +Now let's test how the network handles high message volumes. This helps you understand the performance characteristics of OptimumP2P. + +### Step 9a: Prepare for Load Testing + +First, make sure you have a subscriber running to see the messages: + +```bash +# In a new terminal, subscribe to the performance topic +./proxy-client -topic=performance -threshold=0.7 -subscribeOnly +``` + +### Step 9b: Medium Load Test + +Start with a moderate load test: ```bash -# High-frequency publishing (100 messages with 100ms delay) +# Send 100 messages with 100ms delay between each ./proxy-client -topic=performance -threshold=0.5 -count=100 -delay=100ms +``` + +**What this does:** Sends 100 messages over about 10 seconds (100ms × 100 = 10 seconds). + +### Step 9c: High Load Test + +For a more intensive test: -# Stress test (1000 messages) +```bash +# Send 1000 messages with 10ms delay (very fast) ./proxy-client -topic=stress -threshold=0.5 -count=1000 -delay=10ms ``` +**What this does:** Sends 1000 messages over about 10 seconds (10ms × 1000 = 10 seconds). + +**Note:** Make sure to set up a subscriber for the "stress" topic if you want to see these messages being received. + ## Understanding the Parameters ### Threshold @@ -197,7 +765,7 @@ docker-compose logs -f docker-compose exec proxy-1 nc -zv p2pnode-1 33212 # View container network -docker network inspect optimum-dev-setup-guide_optimum-network +docker network inspect optimump2p-test_optimum-network ``` ## Cleanup diff --git a/docs/hackathon/quick-start/installation.md b/docs/hackathon/quick-start/installation.md index bd51af4..858601c 100644 --- a/docs/hackathon/quick-start/installation.md +++ b/docs/hackathon/quick-start/installation.md @@ -37,16 +37,9 @@ git --version ## Getting the Code -You have two options to get the OptimumP2P setup files: +The OptimumP2P setup files are provided directly in this documentation. You'll create the necessary configuration files as part of the tutorial steps. -### Option 1: Download from this documentation -Create a new folder on your computer and save the docker-compose.yml files from the [Deployment Options](../deployment/) section. - -### Option 2: Clone the development setup repository -```bash -git clone https://github.com/getoptimum/optimum-dev-setup-guide.git -cd optimum-dev-setup-guide -``` +All required configurations and code snippets are included in the [Quick Start Guide](./first-message.md) - no external repositories needed! ## Troubleshooting