From 4b3148fc3e1afddc051966adb6c78b2905814132 Mon Sep 17 00:00:00 2001 From: "DESKTOP-RTLN3BA\\$punk" Date: Tue, 13 Aug 2024 19:56:54 -0700 Subject: [PATCH] fix: GraphQAchain Invalid prompts --- .gitmodules | 3 + SurfSense-Frontend | 1 + backend/DataExample.py | 3 + backend/prompts.py | 33 +- backend/pydmodels.py | 4 + backend/server.py | 33 +- extension/src/env.tsx | 4 +- web/.env.example | 9 - web/.gitignore | 36 - web/README.md | 36 - web/app/chat/markdown.tsx | 8 - web/app/chat/page.tsx | 344 -- web/app/favicon.ico | Bin 15406 -> 0 bytes web/app/globals.css | 69 - web/app/layout.tsx | 73 - web/app/login/page.tsx | 9 - web/app/page.tsx | 10 - web/app/settings/page.tsx | 80 - web/app/signup/page.tsx | 9 - web/components.json | 20 - web/components/Settings/EnvVarSettings.tsx | 43 - web/components/homepage/Footer.tsx | 10 - web/components/homepage/HomePage.tsx | 43 - web/components/homepage/NavBar.tsx | 63 - web/components/homepage/theme-toggle.tsx | 40 - web/components/logins/LoginForm.tsx | 107 - web/components/logins/RegisterForm.tsx | 117 - web/components/theme-provider.tsx | 9 - web/components/ui/aurora-background.tsx | 54 - web/components/ui/button.tsx | 56 - web/components/ui/collapsible.tsx | 11 - web/components/ui/dropdown-menu.tsx | 200 -- web/components/ui/lamp.tsx | 104 - web/components/ui/navbar-menu.tsx | 121 - web/components/ui/table.tsx | 117 - web/components/ui/toast.tsx | 129 - web/components/ui/toaster.tsx | 35 - web/components/ui/use-toast.ts | 194 -- web/lib/utils.ts | 6 - web/next.config.mjs | 4 - web/package.json | 42 - web/pnpm-lock.yaml | 3428 -------------------- web/postcss.config.mjs | 8 - web/public/SurfSense.png | Bin 69851 -> 0 bytes web/public/icon-128.png | Bin 5679 -> 0 bytes web/tailwind.config.ts | 160 - web/tsconfig.json | 26 - 47 files changed, 62 insertions(+), 5849 deletions(-) create mode 100644 .gitmodules create mode 160000 SurfSense-Frontend create mode 100644 backend/DataExample.py delete mode 100644 web/.env.example delete mode 100644 web/.gitignore delete mode 100644 web/README.md delete mode 100644 web/app/chat/markdown.tsx delete mode 100644 web/app/chat/page.tsx delete mode 100644 web/app/favicon.ico delete mode 100644 web/app/globals.css delete mode 100644 web/app/layout.tsx delete mode 100644 web/app/login/page.tsx delete mode 100644 web/app/page.tsx delete mode 100644 web/app/settings/page.tsx delete mode 100644 web/app/signup/page.tsx delete mode 100644 web/components.json delete mode 100644 web/components/Settings/EnvVarSettings.tsx delete mode 100644 web/components/homepage/Footer.tsx delete mode 100644 web/components/homepage/HomePage.tsx delete mode 100644 web/components/homepage/NavBar.tsx delete mode 100644 web/components/homepage/theme-toggle.tsx delete mode 100644 web/components/logins/LoginForm.tsx delete mode 100644 web/components/logins/RegisterForm.tsx delete mode 100644 web/components/theme-provider.tsx delete mode 100644 web/components/ui/aurora-background.tsx delete mode 100644 web/components/ui/button.tsx delete mode 100644 web/components/ui/collapsible.tsx delete mode 100644 web/components/ui/dropdown-menu.tsx delete mode 100644 web/components/ui/lamp.tsx delete mode 100644 web/components/ui/navbar-menu.tsx delete mode 100644 web/components/ui/table.tsx delete mode 100644 web/components/ui/toast.tsx delete mode 100644 web/components/ui/toaster.tsx delete mode 100644 web/components/ui/use-toast.ts delete mode 100644 web/lib/utils.ts delete mode 100644 web/next.config.mjs delete mode 100644 web/package.json delete mode 100644 web/pnpm-lock.yaml delete mode 100644 web/postcss.config.mjs delete mode 100644 web/public/SurfSense.png delete mode 100644 web/public/icon-128.png delete mode 100644 web/tailwind.config.ts delete mode 100644 web/tsconfig.json diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..f6f676c --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "SurfSense-Frontend"] + path = SurfSense-Frontend + url = https://github.com/MODSetter/SurfSense-Frontend.git diff --git a/SurfSense-Frontend b/SurfSense-Frontend new file mode 160000 index 0000000..6439444 --- /dev/null +++ b/SurfSense-Frontend @@ -0,0 +1 @@ +Subproject commit 6439444ac27fe0e7919b61682d767812e61a43ba diff --git a/backend/DataExample.py b/backend/DataExample.py new file mode 100644 index 0000000..784ea52 --- /dev/null +++ b/backend/DataExample.py @@ -0,0 +1,3 @@ +from langchain_core.documents import Document + +examples = [Document(metadata={'BrowsingSessionId': '48573766', 'VisitedWebPageURL': 'https://www.google.com/search?q=appropiate&oq=appropiate&gs_lcrp=EgZjaHJvbWUyBggAEEUYOTIMCAEQABgKGLEDGIAEMgkIAhAAGAoYgAQyDAgDEAAYChixAxiABDIMCAQQABgKGLEDGIAEMgwIBRAAGAoYsQMYgAQyCQgGEAAYChiABDIPCAcQABgKGIMBGLEDGIAEMgwICBAAGAoYsQMYgAQyDwgJEC4YChiDARixAxiABNIBBzU0MGowajeoAgCwAgA&sourceid=chrome&ie=UTF-8', 'VisitedWebPageTitle': 'appropriate - Google Search', 'VisitedWebPageDateWithTimeInISOString': '2024-08-13T16:45:49-07:00', 'VisitedWebPageReffererURL': 'START', 'VisitedWebPageVisitDurationInMilliseconds': 737481, 'VisitedWebPageContent': None}, page_content='\n# Filters and Topics\n\nAll [Images](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/search?sca_esv=23b8fd744dd7098e&sca_upv=1&sxsrf=ADLYWILHkJTxrhDEmWv9tz7lVIU3xcFlcA:1723592009993&q=appropriate&udm=2&fbs=AEQNm0Aa4sjWe7Rqy32pFwRj0UkWd8nbOJfsBGGB5IQQO6L3J_86uWOeqwdnV0yaSF-x2jogM63VUdBhAMVqo6r6ESHk5nqQaIu-CtMsUMpSSNn0pSGCVZhi29x2o-Ry682PHejf9PCKN3QnlhCEsRTGdLyEMu5J9qKBk0VUJ_lLg6DoHZBcDVsrfaS_0rz_0qxz8T1g2VAKGGXFLu3uTnuhAfZALh0CWg&sa=X&ved=2ahUKEwjVyvjLkPOHAxXjGjQIHbezPEIQtKgLegQIEhAB) [Videos](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/search?sca_esv=23b8fd744dd7098e&sca_upv=1&sxsrf=ADLYWILHkJTxrhDEmWv9tz7lVIU3xcFlcA:1723592009993&q=appropriate&tbm=vid&source=lnms&fbs=AEQNm0Aa4sjWe7Rqy32pFwRj0UkWd8nbOJfsBGGB5IQQO6L3J_86uWOeqwdnV0yaSF-x2jogM63VUdBhAMVqo6r6ESHk5nqQaIu-CtMsUMpSSNn0pSGCVZhi29x2o-Ry682PHejf9PCKN3QnlhCEsRTGdLyEMu5J9qKBk0VUJ_lLg6DoHZBcDVsrfaS_0rz_0qxz8T1g2VAKGGXFLu3uTnuhAfZALh0CWg&sa=X&ved=2ahUKEwjVyvjLkPOHAxXjGjQIHbezPEIQ0pQJegQIERAB) [Shopping](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/search?sca_esv=23b8fd744dd7098e&sca_upv=1&sxsrf=ADLYWILHkJTxrhDEmWv9tz7lVIU3xcFlcA:1723592009993&q=appropriate&udm=28&fbs=AEQNm0Aa4sjWe7Rqy32pFwRj0UkWd8nbOJfsBGGB5IQQO6L3J_86uWOeqwdnV0yaSF-x2jogM63VUdBhAMVqo6r6ESHk5nqQaIu-CtMsUMpSSNn0pSGCVZhi29x2o-Ry682PHejf9PCKN3QnlhCEsRTGdLyEMu5J9qKBk0VUJ_lLg6DoHZBcDVsrfaS_0rz_0qxz8T1g2VAKGGXFLu3uTnuhAfZALh0CWg&ved=1t:220175&ictx=111) [Web](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/search?sca_esv=23b8fd744dd7098e&sca_upv=1&sxsrf=ADLYWILHkJTxrhDEmWv9tz7lVIU3xcFlcA:1723592009993&q=appropriate&udm=14&fbs=AEQNm0Aa4sjWe7Rqy32pFwRj0UkWd8nbOJfsBGGB5IQQO6L3J_86uWOeqwdnV0yaSF-x2jogM63VUdBhAMVqo6r6ESHk5nqQaIu-CtMsUMpSSNn0pSGCVZhi29x2o-Ry682PHejf9PCKN3QnlhCEsRTGdLyEMu5J9qKBk0VUJ_lLg6DoHZBcDVsrfaS_0rz_0qxz8T1g2VAKGGXFLu3uTnuhAfZALh0CWg&sa=X&ved=2ahUKEwjVyvjLkPOHAxXjGjQIHbezPEIQs6gLegQIEBAB) [News](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/search?sca_esv=23b8fd744dd7098e&sca_upv=1&sxsrf=ADLYWILHkJTxrhDEmWv9tz7lVIU3xcFlcA:1723592009993&q=appropriate&tbm=nws&source=lnms&fbs=AEQNm0Aa4sjWe7Rqy32pFwRj0UkWd8nbOJfsBGGB5IQQO6L3J_86uWOeqwdnV0yaSF-x2jogM63VUdBhAMVqo6r6ESHk5nqQaIu-CtMsUMpSSNn0pSGCVZhi29x2o-Ry682PHejf9PCKN3QnlhCEsRTGdLyEMu5J9qKBk0VUJ_lLg6DoHZBcDVsrfaS_0rz_0qxz8T1g2VAKGGXFLu3uTnuhAfZALh0CWg&sa=X&ved=2ahUKEwjVyvjLkPOHAxXjGjQIHbezPEIQ0pQJegQIDRAB) [Forums](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/search?sca_esv=23b8fd744dd7098e&sca_upv=1&sxsrf=ADLYWILHkJTxrhDEmWv9tz7lVIU3xcFlcA:1723592009993&q=appropriate&udm=18&fbs=AEQNm0Aa4sjWe7Rqy32pFwRj0UkWd8nbOJfsBGGB5IQQO6L3J_86uWOeqwdnV0yaSF-x2jogM63VUdBhAMVqo6r6ESHk5nqQaIu-CtMsUMpSSNn0pSGCVZhi29x2o-Ry682PHejf9PCKN3QnlhCEsRTGdLyEMu5J9qKBk0VUJ_lLg6DoHZBcDVsrfaS_0rz_0qxz8T1g2VAKGGXFLu3uTnuhAfZALh0CWg&sa=X&ved=2ahUKEwjVyvjLkPOHAxXjGjQIHbezPEIQs6gLegQIDBAB) More [Books](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/search?sca_esv=23b8fd744dd7098e&sca_upv=1&sxsrf=ADLYWILHkJTxrhDEmWv9tz7lVIU3xcFlcA:1723592009993&q=appropriate&tbm=bks&source=lnms&fbs=AEQNm0Aa4sjWe7Rqy32pFwRj0UkWd8nbOJfsBGGB5IQQO6L3J_86uWOeqwdnV0yaSF-x2jogM63VUdBhAMVqo6r6ESHk5nqQaIu-CtMsUMpSSNn0pSGCVZhi29x2o-Ry682PHejf9PCKN3QnlhCEsRTGdLyEMu5J9qKBk0VUJ_lLg6DoHZBcDVsrfaS_0rz_0qxz8T1g2VAKGGXFLu3uTnuhAfZALh0CWg&sa=X&ved=2ahUKEwjVyvjLkPOHAxXjGjQIHbezPEIQ0pQJegQIeBAB) [Maps](https://maps.google.com/maps?sca_esv=23b8fd744dd7098e&sca_upv=1&output=search&q=appropriate&source=lnms&fbs=AEQNm0Aa4sjWe7Rqy32pFwRj0UkWd8nbOJfsBGGB5IQQO6L3J_86uWOeqwdnV0yaSF-x2jogM63VUdBhAMVqo6r6ESHk5nqQaIu-CtMsUMpSSNn0pSGCVZhi29x2o-Ry682PHejf9PCKN3QnlhCEsRTGdLyEMu5J9qKBk0VUJ_lLg6DoHZBcDVsrfaS_0rz_0qxz8T1g2VAKGGXFLu3uTnuhAfZALh0CWg&entry=mc&ved=1t:200715&ictx=111) [Flights](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/travel/flights?sca_esv=23b8fd744dd7098e&sca_upv=1&output=search&q=appropriate&source=lnms&fbs=AEQNm0Aa4sjWe7Rqy32pFwRj0UkWd8nbOJfsBGGB5IQQO6L3J_86uWOeqwdnV0yaSF-x2jogM63VUdBhAMVqo6r6ESHk5nqQaIu-CtMsUMpSSNn0pSGCVZhi29x2o-Ry682PHejf9PCKN3QnlhCEsRTGdLyEMu5J9qKBk0VUJ_lLg6DoHZBcDVsrfaS_0rz_0qxz8T1g2VAKGGXFLu3uTnuhAfZALh0CWg&ved=1t:200715&ictx=111) Tools\nAny time Any time [Past hour](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/search?q=appropriate&sca_esv=23b8fd744dd7098e&sca_upv=1&sxsrf=ADLYWILHkJTxrhDEmWv9tz7lVIU3xcFlcA:1723592009993&source=lnt&tbs=qdr:h&sa=X&ved=2ahUKEwjVyvjLkPOHAxXjGjQIHbezPEIQpwV6BAgHEAc) [Past 24 hours](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/search?q=appropriate&sca_esv=23b8fd744dd7098e&sca_upv=1&sxsrf=ADLYWILHkJTxrhDEmWv9tz7lVIU3xcFlcA:1723592009993&source=lnt&tbs=qdr:d&sa=X&ved=2ahUKEwjVyvjLkPOHAxXjGjQIHbezPEIQpwV6BAgHEAg) [Past week](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/search?q=appropriate&sca_esv=23b8fd744dd7098e&sca_upv=1&sxsrf=ADLYWILHkJTxrhDEmWv9tz7lVIU3xcFlcA:1723592009993&source=lnt&tbs=qdr:w&sa=X&ved=2ahUKEwjVyvjLkPOHAxXjGjQIHbezPEIQpwV6BAgHEAk) [Past month](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/search?q=appropriate&sca_esv=23b8fd744dd7098e&sca_upv=1&sxsrf=ADLYWILHkJTxrhDEmWv9tz7lVIU3xcFlcA:1723592009993&source=lnt&tbs=qdr:m&sa=X&ved=2ahUKEwjVyvjLkPOHAxXjGjQIHbezPEIQpwV6BAgHEAo) [Past year](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/search?q=appropriate&sca_esv=23b8fd744dd7098e&sca_upv=1&sxsrf=ADLYWILHkJTxrhDEmWv9tz7lVIU3xcFlcA:1723592009993&source=lnt&tbs=qdr:y&sa=X&ved=2ahUKEwjVyvjLkPOHAxXjGjQIHbezPEIQpwV6BAgHEAs) Custom range... Custom date range From To Go All results All results [Verbatim](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/search?q=appropiate&sca_esv=23b8fd744dd7098e&sca_upv=1&sxsrf=ADLYWILHkJTxrhDEmWv9tz7lVIU3xcFlcA:1723592009993&source=lnt&tbs=li:1&sa=X&ved=2ahUKEwjVyvjLkPOHAxXjGjQIHbezPEIQpwV6BAgHEBM) [Advanced Search](https://www.google.com/advanced_search?q=appropiate&gs_lcrp=EgZjaHJvbWUyBggAEEUYOTIMCAEQABgKGLEDGIAEMgkIAhAAGAoYgAQyDAgDEAAYChixAxiABDIMCAQQABgKGLEDGIAEMgwIBRAAGAoYsQMYgAQyCQgGEAAYChiABDIPCAcQABgKGIMBGLEDGIAEMgwICBAAGAoYsQMYgAQyDwgJEC4YChiDARixAxiABNIBBzU0MGowajeoAgCwAgA&ie=UTF-8) About 5,600,000,000 results (0.24 seconds) Ctrl+Shift+X to select![Google](https://fonts.gstatic.com/s/i/productlogos/googleg/v6/24px.svg)\n# Search settings\n\n Search history Saving Delete last 15 min SafeSearch Blurring on Language English Dark theme Device default [More settings](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/preferences?hl=en&prev=https://www.google.com/search?q%3Dappropriate%26sca_esv%3D23b8fd744dd7098e%26sca_upv%3D1%26sxsrf%3DADLYWILHkJTxrhDEmWv9tz7lVIU3xcFlcA:1723592009993) Send feedback [Help](https://support.google.com/websearch/?p=dsrp_search_hc&hl=en) • [Privacy](https://policies.google.com/privacy?hl=en&fg=1) • [Terms](https://policies.google.com/terms?hl=en&fg=1) Choose what you’re giving feedback on Or give [general feedback](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/popup.html#) appropriate Send feedback Overview Similar and opposite words Usage examples\n# Search Results\n\n# Main Results\n\n## Loading\n\nSomething went wrong. TRY AGAIN Choose what you’re giving feedback on Or give [general feedback](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/popup.html#) Dictionary Definitions from [Oxford Languages](https://languages.oup.com/google-dictionary-en) · [Learn more](https://support.google.com/websearch/answer/10106608?hl=en) ap·pro·pri·ate *adjective* adjective : **appropriate** / əˈprōprēət /\n1. suitable or proper in the circumstances. "a measure **appropriate to** a wartime economy" h Similar: suitable proper fitting apt relevant connected pertinent apposite applicable germane material significant right congruous to the point to the purpose convenient expedient favorable auspicious propitious opportune felicitous timely well judged well timed seemly befitting deserved ad rem appurtenant meet seasonable h Opposite: inappropriate irrelevant\n\n*verb* verb : **appropriate** ; 3rd person present : **appropriates** ; past tense : **appropriated** ; past participle : **appropriated** ; gerund or present participle : **appropriating** / əˈprōprēˌāt /\n1. 1 . take (something) for one\'s own use, typically without the owner\'s permission. "his images have been appropriated by advertisers" h Similar: seize commandeer expropriate annex arrogate sequestrate sequester take possession of take over assume secure acquire wrest usurp claim lay claim to hijack steal take misappropriate thieve pilfer pocket purloin make off with embezzle swipe nab rip off lift filch snaffle snitch bag walk off/away with liberate pinch nick half-inch whip knock off peculate defalcate abstract plagiarize copy reproduce poach bootleg infringe the copyright of pirate crib\n2. 2 . devote (money or assets) to a special purpose. "there can be problems in **appropriating** funds **for** legal expenses" h Similar: allocate assign allot earmark set apart/aside devote apportion budget\n\nOrigin![](-) late Middle English: from late Latin *appropriatus* , past participle of *appropriare* ‘make one\'s own’, from *ad-* ‘to’ + *proprius* ‘own, proper’. Use over time for: appropriate ![](-) Feedback More definitions Show less People also ask What is the meaning of the word appropriate? especially suitable or compatible : **especially suitable or compatible** : fitting. an appropriate response. remarks appropriate to the occasion. \n### Appropriate Definition & Meaning - Merriam-Webster\n\n![](-) Merriam-Webster https://www.merriam-webster.com › dictionary › appro... Merriam-Webster https://www.merriam-webster.com › dictionary › appro... Search for: [What is the meaning of the word appropriate?](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/search?sca_esv=23b8fd744dd7098e&sca_upv=1&sxsrf=ADLYWILHkJTxrhDEmWv9tz7lVIU3xcFlcA:1723592009993&q=What+is+the+meaning+of+the+word+appropriate%3F&sa=X&ved=2ahUKEwjVyvjLkPOHAxXjGjQIHbezPEIQzmd6BAgmEAY) What does so appropriate mean? **suitable or fitting for a particular purpose, person, occasion, etc.** : an appropriate example; an appropriate dress. Synonyms: meet, pertinent, becoming, due, proper, suited, felicitous, apt, befitting. Antonyms: inept, inappropriate, unsuitable. \n### APPROPRIATE Definition & Meaning - Dictionary.com\n\n![](-) Dictionary.com https://www.dictionary.com › browse › appropriate Dictionary.com https://www.dictionary.com › browse › appropriate Search for: [What does so appropriate mean?](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/search?sca_esv=23b8fd744dd7098e&sca_upv=1&sxsrf=ADLYWILHkJTxrhDEmWv9tz7lVIU3xcFlcA:1723592009993&q=What+does+so+appropriate+mean%3F&sa=X&ved=2ahUKEwjVyvjLkPOHAxXjGjQIHbezPEIQzmd6BAgqEAY) What is the other meaning of appropriate? Some common synonyms of appropriate are apt, felicitous, fitting, fit, happy, meet, proper, and suitable. While all these words mean " **right with respect to some end, need, use, or circumstance** ," appropriate implies eminent or distinctive fitness. an appropriate gift. \n### APPROPRIATE Synonyms: 171 Similar and Opposite Words\n\n![](-) Merriam-Webster https://www.merriam-webster.com › thesaurus › approp... Merriam-Webster https://www.merriam-webster.com › thesaurus › approp... Search for: [What is the other meaning of appropriate?](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/search?sca_esv=23b8fd744dd7098e&sca_upv=1&sxsrf=ADLYWILHkJTxrhDEmWv9tz7lVIU3xcFlcA:1723592009993&q=What+is+the+other+meaning+of+appropriate%3F&sa=X&ved=2ahUKEwjVyvjLkPOHAxXjGjQIHbezPEIQzmd6BAgpEAY) What is the meaning of the word appropriative? Definitions of appropriative. adjective. **of or relating to or given to the act of taking for yourself**. \n### Appropriative - Definition, Meaning & Synonyms - Vocabulary.com\n\n![](-) Vocabulary.com https://www.vocabulary.com › dictionary › appropriative Vocabulary.com https://www.vocabulary.com › dictionary › appropriative Search for: [What is the meaning of the word appropriative?](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/search?sca_esv=23b8fd744dd7098e&sca_upv=1&sxsrf=ADLYWILHkJTxrhDEmWv9tz7lVIU3xcFlcA:1723592009993&q=What+is+the+meaning+of+the+word+appropriative%3F&sa=X&ved=2ahUKEwjVyvjLkPOHAxXjGjQIHbezPEIQzmd6BAgnEAY)![](chrome-extension://www.gstatic.com/ui/v1/activityindicator/loading_24.gif) Feedback \n### Appropriate Definition & Meaning\n\n![](-) Merriam-Webster https://www.merriam-webster.com › dictionary › appro... Merriam-Webster https://www.merriam-webster.com › dictionary › appro... 7 days ago — suitable implies an answering to requirements or demands. clothes suitable for camping. Things to know When to use … when to use appropriate appropriate adjective (CORRECT)\n\n**correct or right for a particular situation or occasion** : Punishment should be appropriate to the crime. I don\'t have any appropriate clothes. \n### APPROPRIATE \\| English meaning - Cambridge Dictionary\n\n![](-) cambridge.org https://dictionary.cambridge.org › dictionary › appropriate cambridge.org https://dictionary.cambridge.org › dictionary › appropriate [when to use appropriate](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/search?sca_esv=23b8fd744dd7098e&sca_upv=1&sxsrf=ADLYWILHkJTxrhDEmWv9tz7lVIU3xcFlcA:1723592009993&q=when+to+use+appropriate&sa=X&ved=2ahUKEwjVyvjLkPOHAxXjGjQIHbezPEIQrooIegQINRAF) Example … what is an example of appropriate Something appropriate is correct and fits the situation. **A sweater-vest with reindeer on it is appropriate holiday apparel** , even if it\'s totally embarrassing. The adjective appropriate is used when something is suitable or fitting. \n### Appropriate - Definition, Meaning & Synonyms - Vocabulary.com\n\n![](-) vocabulary.com https://www.vocabulary.com › dictionary › appropriate vocabulary.com https://www.vocabulary.com › dictionary › appropriate [what is an example of appropriate](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/search?sca_esv=23b8fd744dd7098e&sca_upv=1&sxsrf=ADLYWILHkJTxrhDEmWv9tz7lVIU3xcFlcA:1723592009993&q=what+is+an+example+of+appropriate&sa=X&ved=2ahUKEwjVyvjLkPOHAxXjGjQIHbezPEIQrooIegQINRAK) \n### APPROPRIATE \\| definition in the Cambridge English Dictionary\n\n![](-) Cambridge Dictionary https://dictionary.cambridge.org › dictionary › appropri... Cambridge Dictionary https://dictionary.cambridge.org › dictionary › appropri... *APPROPRIATE* meaning: 1. suitable or right for a particular situation or occasion: 2. to take something for your own…. Learn more. \n### 103 Synonyms & Antonyms for APPROPRIATE\n\n![](-) Thesaurus.com https://www.thesaurus.com › browse › appropriate Thesaurus.com https://www.thesaurus.com › browse › appropriate *appropriate* · adjective as in suitable. Compare Synonyms. Synonyms Antonyms. Strongest matches · verb as in set aside; allocate. Compare Synonyms. Synonyms \n### APPROPRIATE Definition & Meaning\n\n![](-) Dictionary.com https://www.dictionary.com › browse › appropriate Dictionary.com https://www.dictionary.com › browse › appropriate verb · to take for one\'s own use, esp illegally or without permission · to put aside (funds, etc) for a particular purpose or person. \n### Appropriate - Definition, Meaning & Synonyms\n\n![](-) Vocabulary.com https://www.vocabulary.com › dictionary › appropriate Vocabulary.com https://www.vocabulary.com › dictionary › appropriate Something *appropriate* is correct and fits the situation. A sweater-vest with reindeer on it is *appropriate* holiday apparel, even if it\'s totally embarrassing. \n### Appropriate Definition & Meaning \\| Britannica Dictionary\n\n![](-) Britannica https://www.britannica.com › dictionary › appropriate Britannica https://www.britannica.com › dictionary › appropriate to take or use (something) especially in a way that is illegal, unfair, etc. The economy has been weakened by corrupt officials who have appropriated the\xa0... \n### APPROPRIATE definition in American English\n\n![](-) Collins Dictionary https://www.collinsdictionary.com › dictionary › appro... Collins Dictionary https://www.collinsdictionary.com › dictionary › appro... *appropriate* in American English · 1. suitable or fitting for a particular purpose, person, occasion, etc · 2. belonging to or peculiar to a person; proper · 3. \n### APPROPRIATE Synonyms: 171 Similar and Opposite Words\n\n![](-) Merriam-Webster https://www.merriam-webster.com › thesaurus › approp... Merriam-Webster https://www.merriam-webster.com › thesaurus › approp... 7 days ago — Some common synonyms of *appropriate* are apt, felicitous, fitting, fit, happy, meet, proper, and suitable. While all these words mean "right with\xa0... \n### Sarah Paulson in APPROPRIATE — Broadway\'s Best ...\n\n![](-) appropriateplay.com https://appropriateplay.com appropriateplay.com https://appropriateplay.com Emmy and Golden Globe Award winner Sarah Paulson leads “one of the best casts on Broadway” (Deadline) in *APPROPRIATE* , a darkly comic American family drama by\xa0... [Images](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/search?q=appropriate&sca_esv=23b8fd744dd7098e&sca_upv=1&sxsrf=ADLYWILHkJTxrhDEmWv9tz7lVIU3xcFlcA:1723592009993&udm=2&source=univ&ictx=2&sa=X&ved=2ahUKEwjVyvjLkPOHAxXjGjQIHbezPEIQw_oBegQIbhAC)![Review: Sarah Paulson Makes a Horrible Discovery in ...](-)![Appropriate (Broadway, Belasco Theatre, 2023) \\| Playbill](-)![Sarah Paulson in APPROPRIATE — Broadway\'s Best-Reviewed New Play](-)![Appropriate\' Review: Sarah Paulson in Vicious Broadway ...](-)![Appropriate (play) - Wikipedia](-) [More images](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/search?sca_esv=23b8fd744dd7098e&sca_upv=1&sxsrf=ADLYWILHkJTxrhDEmWv9tz7lVIU3xcFlcA:1723592009993&q=appropriate&udm=2&source=univ&fir=apwyFFOVgTuLJM%252CLhwbNG9CLuV1jM%252C_%253BTVg7HS9s-lGieM%252Colu_MW8EF29kAM%252C_%253BgiAA2v83KDFU_M%252CDxGLsghzY6nueM%252C_%253BEj_unyiwVeaA9M%252CNE8LVFotqBrMLM%252C_%253B6F89cr8jeo4RgM%252CKRuhnQq9Ic6i9M%252C_&usg=AI4_-kQC3yxrw4ZdD2ka0xIxismmz9Nf5g&sa=X&ved=2ahUKEwjVyvjLkPOHAxXjGjQIHbezPEIQiR56BAhqEAM) \n### appropriate - Wiktionary, the free dictionary\n\n![](-) Wiktionary https://en.wiktionary.org › wiki › appropriate Wiktionary https://en.wiktionary.org › wiki › appropriate (of an action or thing) Morally good; positive. Rescuing animals is an *appropriate* thing to do. Synonyms. People also search for [](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/search?sca_esv=23b8fd744dd7098e&sca_upv=1&sxsrf=ADLYWILHkJTxrhDEmWv9tz7lVIU3xcFlcA:1723592009993&q=Appropriate&stick=H4sIAAAAAAAAAOMwVGI0-MXIsIGF4RULPxevfrq-oWFJcrJpYXqJOUKkrLK4sNw41_gVCw8Xl36uvoFReVm6WR6ca1YC5Jq8YuHm4gRxjUsqC7KRdOeUVGWUm1QgRHKSc-JzDFMKESJFZWVVBZZJFXAzDMvTzCsR8smmFeUlFgYli1i5HQsKivILijITS1JvsUkydD_tMQ6MDyl4p9J8UOrQniVPTX6um13mvQoAY0F1qdsAAAA&sa=X&ved=2ahUKEwjVyvjLkPOHAxXjGjQIHbezPEIQs9oBKAB6BAg9EAk)![](-) Appropriate [](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/search?sca_esv=23b8fd744dd7098e&sca_upv=1&sxsrf=ADLYWILHkJTxrhDEmWv9tz7lVIU3xcFlcA:1723592009993&q=Stereophonic&stick=H4sIAAAAAAAAAOMwVGI0_MXIsIGF4RULPxevfrq-oWFJcrJpYXqJOUKkrLK4sNw41_gVCw8Xl36uvoFReVm6WR6ca1YC5Jq8YuHm4gRxjUsqC7KRdOeUVGWUm1QgRHKSc-JzDFMKESJFZWVVBZZJFXAzDMvTzCsR8smmFeUlFgYli1h5gktSi1LzCzLy8zKTb7FJMnQ_7TEOjA8peKfSfFDq0J4lT01-rptd5r0KAKUPMBbcAAAA&sa=X&ved=2ahUKEwjVyvjLkPOHAxXjGjQIHbezPEIQs9oBKAB6BAg9EA4)![](-) Stereophonic [](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/search?sca_esv=23b8fd744dd7098e&sca_upv=1&sxsrf=ADLYWILHkJTxrhDEmWv9tz7lVIU3xcFlcA:1723592009993&q=Merrily+We+Roll+Along&stick=H4sIAAAAAAAAAOMwVGI0-sXIsIGF4RULPxevfrq-oWFJcrJpYXqJOUKkrLK4sNw41_gVCw8Xl36uvoFReVm6WR6ca1YC5Jq8YuHm4gRxjUsqC7KRdOeUVGWUm1QgRHKSc-JzDFMKESJFZWVVBZZJFXAzDMvTzCsR8smmFeUlFgYli1hFfVOLijJzKhXCUxWC8nNyFBxz8vPSb7FJMnQ_7TEOjA8peKfSfFDq0J4lT01-rptd5r0KAI66z77lAAAA&sa=X&ved=2ahUKEwjVyvjLkPOHAxXjGjQIHbezPEIQs9oBKAB6BAg9EBM)![](-) Merrily We Roll Along [](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/search?sca_esv=23b8fd744dd7098e&sca_upv=1&sxsrf=ADLYWILHkJTxrhDEmWv9tz7lVIU3xcFlcA:1723592009993&q=Purlie+Victorious&stick=H4sIAAAAAAAAAOMwVGI0_sXIsIGF4RULPxevfrq-oWFJcrJpYXqJOUKkrLK4sNw41_gVCw8Xl36uvoFReVm6WR6ca1YC5Jq8YuHm4gRxjUsqC7KRdOeUVGWUm1QgRHKSc-JzDFMKESJFZWVVBZZJFXAzDMvTzCsR8smmFeUlFgYli1gFA0qLcjJTFcIyk0vyizLzS4tvsUkydD_tMQ6MDyl4p9J8UOrQniVPTX6um13mvQoANgKNQuEAAAA&sa=X&ved=2ahUKEwjVyvjLkPOHAxXjGjQIHbezPEIQs9oBKAB6BAg9EBg)![](-) Purlie Victorious [](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/search?sca_esv=23b8fd744dd7098e&sca_upv=1&sxsrf=ADLYWILHkJTxrhDEmWv9tz7lVIU3xcFlcA:1723592009993&q=Spamalot&stick=H4sIAAAAAAAAAOMwVGI0-cXIsIGF4RULPxevfrq-oWFJcrJpYXqJOUKkrLK4sNw41_gVCw8Xl36uvoFReVm6WR6ca1YC5Jq8YuHm4gRxjUsqC7KRdOeUVGWUm1QgRHKSc-JzDFMKESJFZWVVBZZJFXAzDMvTzCsR8smmFeUlFgYli1g5ggsScxNz8ktusUkydD_tMQ6MDyl4p9J8UOrQniVPTX6um13mvQoArkcGZdgAAAA&sa=X&ved=2ahUKEwjVyvjLkPOHAxXjGjQIHbezPEIQs9oBKAB6BAg9EB0)![](-) Spamalot [](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/search?sca_esv=23b8fd744dd7098e&sca_upv=1&sxsrf=ADLYWILHkJTxrhDEmWv9tz7lVIU3xcFlcA:1723592009993&q=Hell%27s+Kitchen&stick=H4sIAAAAAAAAAOMwVGI0_cXIsIGF4RULPxevfrq-oWFJcrJpYXqJOUKkrLK4sNw41_gVCw8Xl36uvoFReVm6WR6ca1YC5Jq8YuHm4gRxjUsqC7KRdOeUVGWUm1QgRHKSc-JzDFMKESJFZWVVBZZJFXAzDMvTzCsR8smmFeUlFgYli1j5PFJzctSLFbwzS5IzUvNusUkydD_tMQ6MDyl4p9J8UOrQniVPTX6um13mvQoAbwUq5d4AAAA&sa=X&ved=2ahUKEwjVyvjLkPOHAxXjGjQIHbezPEIQs9oBKAB6BAg9ECI)![](-) Hell\'s Kitchen Feedback Appropriate **meaning in Hindi** Appropriate **Broadway** Appropriate **synonyms** Appropriate **meaning** Appropriate **play** Appropriate **words** Appropriate **examples** Appropriate **in a sentence**\n# Main Results\n\n## Loading\n\nSomething went wrong. TRY AGAIN\n# Main Results\n\n## Loading\n\nSomething went wrong. TRY AGAIN\n# Page Navigation\n\n| | 1 | [2](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/search?q=appropriate&sca_esv=23b8fd744dd7098e&sca_upv=1&sxsrf=ADLYWILHkJTxrhDEmWv9tz7lVIU3xcFlcA:1723592009993&ei=Se27ZpWCPOO10PEPt-fykQQ&start=10&sa=N&sstk=AagrsugFx8x6xzA6s-rrMdvrWMNW8Zo-gozUX9M7mhT2Q2IdXKusUGSA00WnkO2zeUtFS0GtE8aU5WqfKh-fHlHj0D5h5iIKWzEChw&ved=2ahUKEwjVyvjLkPOHAxXjGjQIHbezPEIQ8tMDegQIBBAE) | [3](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/search?q=appropriate&sca_esv=23b8fd744dd7098e&sca_upv=1&sxsrf=ADLYWILHkJTxrhDEmWv9tz7lVIU3xcFlcA:1723592009993&ei=Se27ZpWCPOO10PEPt-fykQQ&start=20&sa=N&sstk=AagrsugFx8x6xzA6s-rrMdvrWMNW8Zo-gozUX9M7mhT2Q2IdXKusUGSA00WnkO2zeUtFS0GtE8aU5WqfKh-fHlHj0D5h5iIKWzEChw&ved=2ahUKEwjVyvjLkPOHAxXjGjQIHbezPEIQ8tMDegQIBBAG) | [4](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/search?q=appropriate&sca_esv=23b8fd744dd7098e&sca_upv=1&sxsrf=ADLYWILHkJTxrhDEmWv9tz7lVIU3xcFlcA:1723592009993&ei=Se27ZpWCPOO10PEPt-fykQQ&start=30&sa=N&sstk=AagrsugFx8x6xzA6s-rrMdvrWMNW8Zo-gozUX9M7mhT2Q2IdXKusUGSA00WnkO2zeUtFS0GtE8aU5WqfKh-fHlHj0D5h5iIKWzEChw&ved=2ahUKEwjVyvjLkPOHAxXjGjQIHbezPEIQ8tMDegQIBBAI) | [5](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/search?q=appropriate&sca_esv=23b8fd744dd7098e&sca_upv=1&sxsrf=ADLYWILHkJTxrhDEmWv9tz7lVIU3xcFlcA:1723592009993&ei=Se27ZpWCPOO10PEPt-fykQQ&start=40&sa=N&sstk=AagrsugFx8x6xzA6s-rrMdvrWMNW8Zo-gozUX9M7mhT2Q2IdXKusUGSA00WnkO2zeUtFS0GtE8aU5WqfKh-fHlHj0D5h5iIKWzEChw&ved=2ahUKEwjVyvjLkPOHAxXjGjQIHbezPEIQ8tMDegQIBBAK) | [6](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/search?q=appropriate&sca_esv=23b8fd744dd7098e&sca_upv=1&sxsrf=ADLYWILHkJTxrhDEmWv9tz7lVIU3xcFlcA:1723592009993&ei=Se27ZpWCPOO10PEPt-fykQQ&start=50&sa=N&sstk=AagrsugFx8x6xzA6s-rrMdvrWMNW8Zo-gozUX9M7mhT2Q2IdXKusUGSA00WnkO2zeUtFS0GtE8aU5WqfKh-fHlHj0D5h5iIKWzEChw&ved=2ahUKEwjVyvjLkPOHAxXjGjQIHbezPEIQ8tMDegQIBBAM) | [7](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/search?q=appropriate&sca_esv=23b8fd744dd7098e&sca_upv=1&sxsrf=ADLYWILHkJTxrhDEmWv9tz7lVIU3xcFlcA:1723592009993&ei=Se27ZpWCPOO10PEPt-fykQQ&start=60&sa=N&sstk=AagrsugFx8x6xzA6s-rrMdvrWMNW8Zo-gozUX9M7mhT2Q2IdXKusUGSA00WnkO2zeUtFS0GtE8aU5WqfKh-fHlHj0D5h5iIKWzEChw&ved=2ahUKEwjVyvjLkPOHAxXjGjQIHbezPEIQ8tMDegQIBBAO) | [8](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/search?q=appropriate&sca_esv=23b8fd744dd7098e&sca_upv=1&sxsrf=ADLYWILHkJTxrhDEmWv9tz7lVIU3xcFlcA:1723592009993&ei=Se27ZpWCPOO10PEPt-fykQQ&start=70&sa=N&sstk=AagrsugFx8x6xzA6s-rrMdvrWMNW8Zo-gozUX9M7mhT2Q2IdXKusUGSA00WnkO2zeUtFS0GtE8aU5WqfKh-fHlHj0D5h5iIKWzEChw&ved=2ahUKEwjVyvjLkPOHAxXjGjQIHbezPEIQ8tMDegQIBBAQ) | [9](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/search?q=appropriate&sca_esv=23b8fd744dd7098e&sca_upv=1&sxsrf=ADLYWILHkJTxrhDEmWv9tz7lVIU3xcFlcA:1723592009993&ei=Se27ZpWCPOO10PEPt-fykQQ&start=80&sa=N&sstk=AagrsugFx8x6xzA6s-rrMdvrWMNW8Zo-gozUX9M7mhT2Q2IdXKusUGSA00WnkO2zeUtFS0GtE8aU5WqfKh-fHlHj0D5h5iIKWzEChw&ved=2ahUKEwjVyvjLkPOHAxXjGjQIHbezPEIQ8tMDegQIBBAS) | [10](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/search?q=appropriate&sca_esv=23b8fd744dd7098e&sca_upv=1&sxsrf=ADLYWILHkJTxrhDEmWv9tz7lVIU3xcFlcA:1723592009993&ei=Se27ZpWCPOO10PEPt-fykQQ&start=90&sa=N&sstk=AagrsugFx8x6xzA6s-rrMdvrWMNW8Zo-gozUX9M7mhT2Q2IdXKusUGSA00WnkO2zeUtFS0GtE8aU5WqfKh-fHlHj0D5h5iIKWzEChw&ved=2ahUKEwjVyvjLkPOHAxXjGjQIHbezPEIQ8tMDegQIBBAU) | [Next](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/search?q=appropriate&sca_esv=23b8fd744dd7098e&sca_upv=1&sxsrf=ADLYWILHkJTxrhDEmWv9tz7lVIU3xcFlcA:1723592009993&ei=Se27ZpWCPOO10PEPt-fykQQ&start=10&sa=N&sstk=AagrsugFx8x6xzA6s-rrMdvrWMNW8Zo-gozUX9M7mhT2Q2IdXKusUGSA00WnkO2zeUtFS0GtE8aU5WqfKh-fHlHj0D5h5iIKWzEChw&ved=2ahUKEwjVyvjLkPOHAxXjGjQIHbezPEIQ8NMDegQIBBAW) |\n\n## Complementary Results\n\nTranslate to Choose language Afrikaans Akan Albanian Amharic Arabic Armenian Assamese Aymara Azerbaijani Bambara Bangla Basque Belarusian Bhojpuri Bosnian Bulgarian Burmese Catalan Cebuano Central Kurdish Chinese (Simplified) Chinese (Traditional) Corsican Croatian Czech Danish Divehi Dogri Dutch Esperanto Estonian Ewe Filipino Finnish French Galician Ganda Georgian German Goan Konkani Greek Guarani Gujarati Haitian Creole Hausa Hawaiian Hebrew Hindi Hmong Hungarian Icelandic Igbo Iloko Indonesian Irish Italian Japanese Javanese Kannada Kazakh Khmer Kinyarwanda Korean Krio Kurdish Kyrgyz Lao Latin Latvian Lingala Lithuanian Luxembourgish Macedonian Maithili Malagasy Malay Malayalam Maltese Manipuri (Meitei Mayek) Māori Marathi Mizo Mongolian Nepali Northern Sotho Norwegian Nyanja Odia Oromo Pashto Persian Polish Portuguese Punjabi Quechua Romanian Russian Samoan Sanskrit Scottish Gaelic Serbian Shona Sindhi Sinhala Slovak Slovenian Somali Southern Sotho Spanish Sundanese Swahili Swedish Tajik Tamil Tatar Telugu Thai Tigrinya Tsonga Turkish Turkmen Ukrainian Urdu Uyghur Uzbek Vietnamese Welsh Western Frisian Xhosa Yiddish Yoruba Zulu See translations in 100+ languages\n# Footer Links\n\n Downtown San Jose, San Jose, CA - Based on your past activity - Update location Can\'t update your location Learn more Updating location...'), Document(metadata={'BrowsingSessionId': '48573766', 'VisitedWebPageURL': 'https://myanimelist.net/', 'VisitedWebPageTitle': 'MyAnimeList.net - Anime and Manga Database and Community', 'VisitedWebPageDateWithTimeInISOString': '2024-08-13T16:49:24-07:00', 'VisitedWebPageReffererURL': 'https://www.google.com/search?q=appropiate&oq=appropiate&gs_lcrp=EgZjaHJvbWUyBggAEEUYOTIMCAEQABgKGLEDGIAEMgkIAhAAGAoYgAQyDAgDEAAYChixAxiABDIMCAQQABgKGLEDGIAEMgwIBRAAGAoYsQMYgAQyCQgGEAAYChiABDIPCAcQABgKGIMBGLEDGIAEMgwICBAAGAoYsQMYgAQyDwgJEC4YChiDARixAxiABNIBBzU0MGowajeoAgCwAgA&sourceid=chrome&ie=UTF-8', 'VisitedWebPageVisitDurationInMilliseconds': 201318, 'VisitedWebPageContent': None}, page_content='\n# Welcome to MyAnimeList.net\\!\n\n\n\n [Visit MALxJapan](https://mxj.myanimelist.net/) MALxJapan -More than just anime- ![](https://cdn.myanimelist.net/resources/mxj_panel/2024/20240712234347_MAL-708%EF%BD%98440.png) Learn how to draw anime & manga from Japanese pros🎨 ![](https://cdn.myanimelist.net/resources/mxj_panel/2024/20240221014015_354x220@2x%20(1).png) Your guide to 2024\'s Must-Read Manga is here 📖 ![](https://cdn.myanimelist.net/resources/mxj_panel/2023/20230411031517_354x220@2x%20(3).png) Join the【OSHI NO KO】Official MAL Club 🌟\n\n [View More](https://myanimelist.net/anime/season)\n## Summer 2024 Anime\n\n- \n### "Oshi no Ko" 2nd Season\n\n!["Oshi no Ko" 2nd Season](https://cdn.myanimelist.net/r/160x220/images/anime/1006/143302.webp?s=8fc6d6234f34bfc0f16abd1b6ed09efe)\n- \n### Tokidoki Bosotto Russia-go de Dereru Tonari no Alya-san\n\n![Tokidoki Bosotto Russia-go de Dereru Tonari no Alya-san](https://cdn.myanimelist.net/r/160x220/images/anime/1825/142258.webp?s=ec6f6aa3b037c174e50c91dbf29248da)\n- \n### Kami no Tou: Ouji no Kikan\n\n![Kami no Tou: Ouji no Kikan](https://cdn.myanimelist.net/r/160x220/images/anime/1107/143536.webp?s=789720ee61ef20560e9b19b54d8c89d9)\n- \n### Shikanoko Nokonoko Koshitantan\n\n![Shikanoko Nokonoko Koshitantan](https://cdn.myanimelist.net/r/160x220/images/anime/1084/144617.webp?s=5f932872fd031048516aaf225ea5022c)\n- \n### Fairy Tail: 100-nen Quest\n\n![Fairy Tail: 100-nen Quest](https://cdn.myanimelist.net/r/160x220/images/anime/1087/144083.webp?s=d62ca8645ed98bb0df0538afd1854904)\n- \n### Tsue to Tsurugi no Wistoria\n\n![Tsue to Tsurugi no Wistoria](https://cdn.myanimelist.net/r/160x220/images/anime/1281/144104.webp?s=817f76bfbe571a4ea4316baf43571d0b)\n- \n### Isekai Suicide Squad\n\n![Isekai Suicide Squad](https://cdn.myanimelist.net/r/160x220/images/anime/1644/142052.webp?s=c705eb5bcf9519683a1793cceb1ddf13)\n- \n### Gimai Seikatsu\n\n![Gimai Seikatsu](https://cdn.myanimelist.net/r/160x220/images/anime/1420/143707.webp?s=b08c8680de7ba86820b95ed51eeec104)\n- \n### Isekai Shikkaku\n\n![Isekai Shikkaku](https://cdn.myanimelist.net/r/160x220/images/anime/1252/143457.webp?s=8a0ff090fbc9ad639e90c2ebf256b684)\n- \n### Giji Harem\n\n![Giji Harem](https://cdn.myanimelist.net/r/160x220/images/anime/1607/143547.webp?s=4002cbfff0496873c763093e473438cc)\n- \n### Make Heroine ga Oosugiru\\!\n\n![Make Heroine ga Oosugiru\\!](https://cdn.myanimelist.net/r/160x220/images/anime/1332/143513.webp?s=e7a7e0c8b91f945d4fe0750bb4a72934)\n- \n### Hazurewaku no "Joutai Ijou Skill" de Saikyou ni Natta Ore ga Subete wo Juurin suru made\n\n![Hazurewaku no "Joutai Ijou Skill" de Saikyou ni Natta Ore ga Subete wo Juurin suru made](https://cdn.myanimelist.net/r/160x220/images/anime/1914/143630.webp?s=c19a8af670ba650543d10d433ad2c1a7)\n- \n### Nige Jouzu no Wakagimi\n\n![Nige Jouzu no Wakagimi](https://cdn.myanimelist.net/r/160x220/images/anime/1386/140401.webp?s=45471c289efed4dc284b3ae8a67cd817)\n- \n### 2.5-jigen no Ririsa\n\n\n- \n### Ore wa Subete wo "Parry" suru: Gyaku Kanchigai no Sekai Saikyou wa Boukensha ni Naritai\n\n\n- \n### Kimi to Boku no Saigo no Senjou, Aruiwa Sekai ga Hajimaru Seisen Season II\n\n\n- \n### Maougun Saikyou no Majutsushi wa Ningen datta\n\n\n- \n### Shoushimin Series\n\n\n- \n### Shinmai Ossan Boukensha, Saikyou Party ni Shinu hodo Kitaerarete Muteki ni Naru.\n\n\n- \n### NieR:Automata Ver1.1a Part 2\n\n\n\n\n\n [View More](https://myanimelist.net/store?_location=mal_mid_slider) Manga Store\n- ![Slasher Maidens](https://cdn.myanimelist.net/r/108x163/s/common/store/cover/9016/17ecf2b6f1ab3d213f50e2e293dd0a60814972c2303cb6e87b17099adf8c6ade/l.jpg?s=de689ac7af806dbdabe6b2a2a224683d) [Slasher Maidens](https://myanimelist.net/store/manga/1013/Slasher_Maidens?_location=mal_mid_slider)\n- ![Peach Girl NEXT](https://cdn.myanimelist.net/r/108x163/s/common/store/cover/3454/3059db32b22ae78d15e927b7fbbebf424c64acd991c6524f4764117f79bc37b9/l.jpg?s=66d9c31a752b6e5cb62ce9f7f21717a9) [Peach Girl NEXT](https://myanimelist.net/store/manga/479/Peach_Girl_NEXT?_location=mal_mid_slider)\n- ![THE FOX\'S KISS](https://cdn.myanimelist.net/r/108x163/s/common/store/cover/4844/b0a954cdee1635c2ab3ccb55201094f0d5002517ef1284f9c9076b895f020ac1/l.jpg?s=2226790241b45628373c278a2f4eed4f) [THE FOX\'S KISS](https://myanimelist.net/store/manga/603/THE_FOXS_KISS?_location=mal_mid_slider)\n- ![Kagerou Daze (light novel)](https://cdn.myanimelist.net/r/108x163/s/common/store/cover/7739/9f561388dba002d72b383fc57d722a859126c079bcebea38f835db6b65a2272a/l.jpg?s=d7ac4bbe43f356eb96c88da8357d2ca9) [Kagerou Daze (light novel)](https://myanimelist.net/store/manga/868/Kagerou_Daze_light_novel?_location=mal_mid_slider)\n- ![The Devil Is a Part-Timer\\! (light novel)](https://cdn.myanimelist.net/r/108x163/s/common/store/cover/7780/ce3e2b6be58533b3698b85ff4495d474043608942dc63603325c4db8da3dc641/l.jpg?s=589a617ddff01493980b301857133f9e) [The Devil Is a Part-Timer! (light novel)](https://myanimelist.net/store/manga/905/The_Devil_Is_a_Part-Timer_light_novel?_location=mal_mid_slider)\n- ![Woof Woof Story: I Told You to Turn Me Into a Pampered Pooch, Not Fenrir\\!](https://cdn.myanimelist.net/r/108x163/s/common/store/cover/5204/2fc2b6da4f840f060525fa8626f95533300692635ec70dae0f3087f8bd31667b/l.jpg?s=f6daa008491e8a9f15c25ff61e6473bc) [Woof Woof Story: I Told You to Turn Me Into a Pampered Pooch, Not Fenrir!](https://myanimelist.net/store/manga/646/Woof_Woof_Story__I_Told_You_to_Turn_Me_Into_a_Pampered_Pooch_Not_Fenrir?_location=mal_mid_slider)\n- ![Life Lessons with Uramichi Oniisan](https://cdn.myanimelist.net/r/108x163/s/common/store/cover/8982/b0fe93b4078afcae6cc778719c1cf76a42ea9100dfc5f08276663e1a6c950afe/l.jpg?s=c295a7cfebb4c83f9afd231745d811ab) [Life Lessons with Uramichi Oniisan](https://myanimelist.net/store/manga/981/Life_Lessons_with_Uramichi_Oniisan?_location=mal_mid_slider)\n- ![The Garden of Words](https://cdn.myanimelist.net/r/108x163/s/common/store/cover/911/7cd49800414126aedf98a6bc7c3b7e8f1e9069c517cb0db9a791c9d660741338/l.jpg?s=d75d6ba8ca5cd849efa6d8e16012f9ae) [The Garden of Words](https://myanimelist.net/store/manga/93/The_Garden_of_Words?_location=mal_mid_slider)\n- ![Police in a Pod](https://cdn.myanimelist.net/r/108x163/s/common/store/cover/9414/21c2db1e00b99f8bf56d6a291e9ebd73b2e661a191384e834c8d2de733e0c0c0/l.jpg?s=97c6a71bf82774f89335724bb5a7cdce) [Police in a Pod](https://myanimelist.net/store/manga/1061/Police_in_a_Pod?_location=mal_mid_slider)\n- ![Baccano\\!](https://cdn.myanimelist.net/r/108x163/s/common/store/cover/2047/782015ee92864401b5992a0fd2f0cdac5bfde2ad4448251af559196deeb4e373/l.jpg?s=d3702123765daad30e9b4b7da8cddec9) [Baccano!](https://myanimelist.net/store/manga/250/Baccano?_location=mal_mid_slider)\n- ![We\'re On Our Own From Here](https://cdn.myanimelist.net/r/108x163/s/common/store/cover/9662/79838342024b2836d73c46b57447a0f98fcc68cba90827c18115101d0fafadc5/l.jpg?s=ffede919792f91808d6e76b7c1d66dd1) [We\'re On Our Own From Here](https://myanimelist.net/store/manga/1086/Were_On_Our_Own_From_Here?_location=mal_mid_slider)\n- ![The Demon Sword Master of Excalibur Academy (light novel)](https://cdn.myanimelist.net/r/108x163/s/common/store/cover/8514/489dc08280dc412c80d410f5aac6877df854b4a452432b4d15c46d76d68770b5/l.jpg?s=d4a61fc492b567fd6c1b571bae51fb63) [The Demon Sword Master of Excalibur Academy (light novel)](https://myanimelist.net/store/manga/953/The_Demon_Sword_Master_of_Excalibur_Academy_light_novel?_location=mal_mid_slider)\n- ![A Sign of Affection](https://cdn.myanimelist.net/r/108x163/s/common/store/cover/7019/c04e53ff1d5e2738fd1ab7ca294503893ab5abc14bbd956f658400c7a03db2b0/l.jpg?s=68a4df026c5bd2acd3768efd84364866) [A Sign of Affection](https://myanimelist.net/store/manga/778/A_Sign_of_Affection?_location=mal_mid_slider)\n- ![The Seven Deadly Sins: Four Knights of the Apocalypse](https://cdn.myanimelist.net/r/108x163/s/common/store/cover/9949/8b49655af97046495798223609dac16c7faa903e42fc1d4f9c69bc92c5398789/l.jpg?s=8de7cfb1b1a67f4ab42328be0170c2eb) [The Seven Deadly Sins: Four Knights of the Apocalypse](https://myanimelist.net/store/manga/1125/The_Seven_Deadly_Sins__Four_Knights_of_the_Apocalypse?_location=mal_mid_slider)\n- ![Éclair](https://cdn.myanimelist.net/r/108x163/s/common/store/cover/4973/86387a9c3b3bc15dec3efe108ed96eaddc4ea28fb41a71108b8880ac19e32a1c/l.jpg?s=935d45a960e1938c858eec8714d3fb03) [Éclair](https://myanimelist.net/store/manga/623/%C3%89clair?_location=mal_mid_slider)\n\n\n\n [View More](https://myanimelist.net/watch/episode)\n## Latest Updated Episode Videos\n\n- [Episode 28](https://myanimelist.net/anime/52991/Sousou_no_Frieren/episode/28) [Episode 27](https://myanimelist.net/anime/52991/Sousou_no_Frieren/episode/27)![Sousou no Frieren](https://cdn.myanimelist.net/r/108x163/images/anime/1015/138006.webp?s=79a512f01fca48e3bf604aaee280f39d)\n### Sousou no Frieren\n- [Episode 6](https://myanimelist.net/anime/57099/Na_Nare_Hana_Nare/episode/6) [Episode 5](https://myanimelist.net/anime/57099/Na_Nare_Hana_Nare/episode/5)![Na Nare Hana Nare](https://cdn.myanimelist.net/r/108x163/images/anime/1430/143526.webp?s=44cc57eaa76cf91704d2fe7d65dcf699)\n### Na Nare Hana Nare\n- [Episode 1](https://myanimelist.net/anime/56179/Delicos_Nursery/episode/1)![Delico\'s Nursery](https://cdn.myanimelist.net/r/108x163/images/anime/1635/138391.webp?s=9c94e988fa02007bfa6aa45487623c7f)\n### Delico\'s Nursery\n- [Episode 1](https://myanimelist.net/anime/57192/Yeosin_Gangnim/episode/1)![Yeosin Gangnim](https://cdn.myanimelist.net/r/108x163/images/anime/1535/139699.webp?s=3a13ed8be1f66371716b727accac1274)\n### Yeosin Gangnim\n- [Episode 6](https://myanimelist.net/anime/58426/Shikanoko_Nokonoko_Koshitantan/episode/6) [Episode 5](https://myanimelist.net/anime/58426/Shikanoko_Nokonoko_Koshitantan/episode/5)![Shikanoko Nokonoko Koshitantan](https://cdn.myanimelist.net/r/108x163/images/anime/1084/144617.webp?s=565739603013eca111f35f7413679ad4)\n### Shikanoko Nokonoko Koshitantan\n- [Episode 25](https://myanimelist.net/anime/52347/Shangri-La_Frontier__Kusoge_Hunter_Kamige_ni_Idoman_to_su/episode/25) [Episode 24](https://myanimelist.net/anime/52347/Shangri-La_Frontier__Kusoge_Hunter_Kamige_ni_Idoman_to_su/episode/24)![Shangri-La Frontier: Kusoge Hunter, Kamige ni Idoman to su](https://cdn.myanimelist.net/r/108x163/images/anime/1500/139931.webp?s=fb79dc57639b39f3895520e77e25a04d)\n### Shangri-La Frontier: Kusoge Hunter, Kamige ni Idoman to su\n- [Episode 3](https://myanimelist.net/anime/56062/Naze_Boku_no_Sekai_wo_Daremo_Oboeteinai_no_ka/episode/3) [Episode 2](https://myanimelist.net/anime/56062/Naze_Boku_no_Sekai_wo_Daremo_Oboeteinai_no_ka/episode/2)![Naze Boku no Sekai wo Daremo Oboeteinai no ka?](https://cdn.myanimelist.net/r/108x163/images/anime/1664/144272.webp?s=f7efdc6a02706dfbe7346deac59d133c)\n### Naze Boku no Sekai wo Daremo Oboeteinai no ka?\n- [Episode 4](https://myanimelist.net/anime/53626/Bye_Bye_Earth/episode/4) [Episode 3](https://myanimelist.net/anime/53626/Bye_Bye_Earth/episode/3)![Bye Bye, Earth](https://cdn.myanimelist.net/r/108x163/images/anime/1262/142076.webp?s=792dce562ca585f3662653f8227a2cf0)\n### Bye Bye, Earth\n- [Episode 48](https://myanimelist.net/anime/859/Digimon_Savers/episode/48) [Episode 47](https://myanimelist.net/anime/859/Digimon_Savers/episode/47)![Digimon Savers](https://cdn.myanimelist.net/r/108x163/images/anime/1415/100541.webp?s=d14f297710e6e7228d4f0d2467a1c275)\n### Digimon Savers\n- [Episode 12](https://myanimelist.net/anime/53439/Boushoku_no_Berserk/episode/12) [Episode 11](https://myanimelist.net/anime/53439/Boushoku_no_Berserk/episode/11)![Boushoku no Berserk](https://cdn.myanimelist.net/r/108x163/images/anime/1951/138462.webp?s=44f2f7ca0ec36edcaac6e2bcb94877e6)\n### Boushoku no Berserk\n- [Episode 4](https://myanimelist.net/anime/52367/Isekai_Shikkaku/episode/4) [Episode 3](https://myanimelist.net/anime/52367/Isekai_Shikkaku/episode/3)![Isekai Shikkaku](https://cdn.myanimelist.net/r/108x163/images/anime/1252/143457.webp?s=a0a1d5fd12824e06644cdf62c0fb1fd7)\n### Isekai Shikkaku\n- [Episode 3](https://myanimelist.net/anime/58059/Tsue_to_Tsurugi_no_Wistoria/episode/3) [Episode 2](https://myanimelist.net/anime/58059/Tsue_to_Tsurugi_no_Wistoria/episode/2)![Tsue to Tsurugi no Wistoria](https://cdn.myanimelist.net/r/108x163/images/anime/1281/144104.webp?s=e9dce5f77028310a569bc8b3dc940a48)\n### Tsue to Tsurugi no Wistoria\n- [Episode 4](https://myanimelist.net/anime/52635/Kami_no_Tou__Ouji_no_Kikan/episode/4) [Episode 3](https://myanimelist.net/anime/52635/Kami_no_Tou__Ouji_no_Kikan/episode/3)![Kami no Tou: Ouji no Kikan](https://cdn.myanimelist.net/r/108x163/images/anime/1107/143536.webp?s=3f96fca5cf5ad3d79d2a98cbd28a87e7)\n### Kami no Tou: Ouji no Kikan\n- [Episode 3](https://myanimelist.net/anime/57524/Make_Heroine_ga_Oosugiru/episode/3) [Episode 2](https://myanimelist.net/anime/57524/Make_Heroine_ga_Oosugiru/episode/2)![Make Heroine ga Oosugiru\\!](https://cdn.myanimelist.net/r/108x163/images/anime/1332/143513.webp?s=68f7f3e2036325e8251af0c2fb1bb965)\n### Make Heroine ga Oosugiru\\!\n- [Episode 4](https://myanimelist.net/anime/54724/Nige_Jouzu_no_Wakagimi/episode/4) [Episode 3](https://myanimelist.net/anime/54724/Nige_Jouzu_no_Wakagimi/episode/3)![Nige Jouzu no Wakagimi](https://cdn.myanimelist.net/r/108x163/images/anime/1386/140401.webp?s=57b664be08cefc29ec99ac2263901a3f)\n### Nige Jouzu no Wakagimi\n- [Episode 11](https://myanimelist.net/anime/54789/Boku_no_Hero_Academia_7th_Season/episode/11) [Episode 10](https://myanimelist.net/anime/54789/Boku_no_Hero_Academia_7th_Season/episode/10)![Boku no Hero Academia 7th Season](https://cdn.myanimelist.net/r/108x163/images/anime/1529/140306.webp?s=6876dd5a497500e57ba20859a5cc824f)\n### Boku no Hero Academia 7th Season\n- [Episode 4](https://myanimelist.net/anime/58357/Tensui_no_Sakuna-hime/episode/4) [Episode 3](https://myanimelist.net/anime/58357/Tensui_no_Sakuna-hime/episode/3)![Tensui no Sakuna-hime](https://cdn.myanimelist.net/r/108x163/images/anime/1888/143803.webp?s=e8d31516d4dd7d7f6321f18dc4079e93)\n### Tensui no Sakuna-hime\n- [Episode 5](https://myanimelist.net/anime/58272/Boku_no_Tsuma_wa_Kanjou_ga_Nai/episode/5) [Episode 4](https://myanimelist.net/anime/58272/Boku_no_Tsuma_wa_Kanjou_ga_Nai/episode/4)![Boku no Tsuma wa Kanjou ga Nai](https://cdn.myanimelist.net/r/108x163/images/anime/1101/143646.webp?s=ff54b644261f2d50ef678ccbc3188595)\n### Boku no Tsuma wa Kanjou ga Nai\n- [Episode 2](https://myanimelist.net/anime/50855/Yamato_yo_Towa_ni__Rebel_3199/episode/2) [Episode 1](https://myanimelist.net/anime/50855/Yamato_yo_Towa_ni__Rebel_3199/episode/1)\n### Yamato yo, Towa ni: Rebel 3199\n- [Episode 4](https://myanimelist.net/anime/56063/NieR_Automata_Ver11a_Part_2/episode/4) [Episode 3](https://myanimelist.net/anime/56063/NieR_Automata_Ver11a_Part_2/episode/3)\n### NieR:Automata Ver1.1a Part 2\n- [Episode 12](https://myanimelist.net/anime/53407/Bartender__Kami_no_Glass/episode/12) [Episode 11](https://myanimelist.net/anime/53407/Bartender__Kami_no_Glass/episode/11)\n### Bartender: Kami no Glass\n- [Episode 4](https://myanimelist.net/anime/54968/Giji_Harem/episode/4) [Episode 3](https://myanimelist.net/anime/54968/Giji_Harem/episode/3)\n### Giji Harem\n- [Episode 4](https://myanimelist.net/anime/52481/Gimai_Seikatsu/episode/4) [Episode 3](https://myanimelist.net/anime/52481/Gimai_Seikatsu/episode/3)\n### Gimai Seikatsu\n- [Episode 4](https://myanimelist.net/anime/57325/Ramen_Akaneko/episode/4) [Episode 3](https://myanimelist.net/anime/57325/Ramen_Akaneko/episode/3)\n### Ramen Akaneko\n- [Episode 15](https://myanimelist.net/anime/50559/Megaton-kyuu_Musashi_2nd_Season/episode/15) [Episode 14](https://myanimelist.net/anime/50559/Megaton-kyuu_Musashi_2nd_Season/episode/14)\n### Megaton-kyuu Musashi 2nd Season\n- [Episode 5](https://myanimelist.net/anime/57876/Maougun_Saikyou_no_Majutsushi_wa_Ningen_datta/episode/5) [Episode 4](https://myanimelist.net/anime/57876/Maougun_Saikyou_no_Majutsushi_wa_Ningen_datta/episode/4)\n### Maougun Saikyou no Majutsushi wa Ningen datta\n- [Episode 12](https://myanimelist.net/anime/51648/Nozomanu_Fushi_no_Boukensha/episode/12) [Episode 11](https://myanimelist.net/anime/51648/Nozomanu_Fushi_no_Boukensha/episode/11)\n### Nozomanu Fushi no Boukensha\n- [Episode 1](https://myanimelist.net/anime/49981/Kimi_to_Boku_no_Saigo_no_Senjou_Aruiwa_Sekai_ga_Hajimaru_Seisen_Season_II/episode/1)\n### Kimi to Boku no Saigo no Senjou, Aruiwa Sekai ga Hajimaru Seisen Season II\n- [Episode 4](https://myanimelist.net/anime/54744/Tokidoki_Bosotto_Russia-go_de_Dereru_Tonari_no_Alya-san/episode/4) [Episode 3](https://myanimelist.net/anime/54744/Tokidoki_Bosotto_Russia-go_de_Dereru_Tonari_no_Alya-san/episode/3)\n### Tokidoki Bosotto Russia-go de Dereru Tonari no Alya-san\n- [Episode 12](https://myanimelist.net/anime/50204/Tokyo_24-ku/episode/12) [Episode 11](https://myanimelist.net/anime/50204/Tokyo_24-ku/episode/11)\n### Tokyo 24-ku\n\n\n\n\n\n [View More](https://myanimelist.net/watch/promotion/popular)\n## Most Popular Anime Trailers\n\n- PV 1 play\n### Shingeki no Kyojin\n- PV play\n### Death Note\n- Announcement play\n### Fullmetal Alchemist: Brotherhood\n- PV 1 play\n### One Punch Man\n- PV English dub version play\n### Sword Art Online\n- Announcement play\n### Kimetsu no Yaiba\n- PV 1 play\n### Boku no Hero Academia\n- PV 1 play\n### Hunter x Hunter (2011)\n- PV Madman ver. play\n### Tokyo Ghoul\n- Announcement 1 play\n### Kimi no Na wa.\n- PV 1 play\n### Shingeki no Kyojin Season 2\n- Announcement play\n### Jujutsu Kaisen\n- PV March 2011 version play\n### Steins;Gate\n- Announcement PV play\n### Boku no Hero Academia 2nd Season\n- PV Viz Media version play\n### Naruto: Shippuuden\n- PV 1 play\n### No Game No Life\n- Announcement play\n### Shingeki no Kyojin Season 3\n- PV Madman 32, English dub version play\n### One Piece\n- Announcement play\n### Koe no Katachi\n- Announcement CM play\n### Shingeki no Kyojin Season 3 Part 2\n- Trailer 1 play\n### Shigatsu wa Kimi no Uso\n- PV English dub version play\n### Toradora\\!\n- PV 1 play\n### Re:Zero kara Hajimeru Isekai Seikatsu\n- Announcement play\n### Boku no Hero Academia 3rd Season\n- PV 1 play\n### Noragami\n- CM 3 play\n### Boku dake ga Inai Machi\n- PV 2 play\n### Akame ga Kill\\!\n- Teaser PV play\n### Mob Psycho 100\n- PV play\n### Angel Beats\\!\n- Netflix Trailer 2015 play\n### Nanatsu no Taizai\n\n\n\n [View More](https://myanimelist.net/news)\n## Anime & Manga News\n\n ![](https://cdn.myanimelist.net/r/50x70/s/common/uploaded_files/1723515669-d1f5c142391d16cb4cfa8d854a676d03.png?s=0fb10924ee68178bd8a89ac7ddfdd7aa)\n### Focus: Dive into the World of Webtoons with \'Omniscient Reader\'s Viewpoint\'\n\nOmniscient Reader\'s Viewpoint, written by singNsong, is a beloved web novel that has captured the hearts of readers with its unique plot and diverse cast of characters. The story follows Kim Dokja, an ordinary office worker whose reality changes to... [read more](https://myanimelist.net/news/71537758)\n\nYesterday, 7:24 PM by [tingy](https://myanimelist.net/profile/tingy) | [Discuss (1 comment)](https://myanimelist.net/forum/?topicid=2173977)\n\n ![](https://cdn.myanimelist.net/r/50x70/s/common/uploaded_files/1723500360-51cafde8344edfe2cba431b63574d179.png?s=c534b14af2ae034765b10fb6bfd3e7ce)\n### \'Hamidashi Creative\' Reveals Main Cast, Additional Staff, Teaser Promo, Fall 2024 Premiere\n\nAn official website opened for the Hamidashi Creative television anime series on Monday and revealed the main cast, additional staff, main visual (pictured), and a teaser promotional video. The 12-episode short anime is scheduled to premiere on Octob... [read more](https://myanimelist.net/news/71537051)\n\nYesterday, 3:07 PM by [DatRandomDude](https://myanimelist.net/profile/DatRandomDude) | [Discuss (4 comments)](https://myanimelist.net/forum/?topicid=2173957)\n\n ![](https://cdn.myanimelist.net/r/50x70/s/common/uploaded_files/1723496875-b0d3733a3422efebd4f298014e681c43.png?s=892e7cf68fd46fbc5ba69f28b2121a77)\n### \'Ookami to Koushinryou: Merchant Meets the Wise Wolf\' Announces Pair of Additional Cast\n\nThe official website for the Ookami to Koushinryou: Merchant Meets the Wise Wolf (Spice & Wolf: Merchant Meets the Wise Wolf) television anime revealed on Tuesday a pair of additional cast and a new key visual for the upcoming arc, titled Ikyоu no Ka... [read more](https://myanimelist.net/news/71536827)\n\nYesterday, 2:09 PM by [DatRandomDude](https://myanimelist.net/profile/DatRandomDude) | [Discuss (2 comments)](https://myanimelist.net/forum/?topicid=2173954)\n\n ![](https://cdn.myanimelist.net/r/50x70/s/common/uploaded_files/1723341810-31194b61a4b783f2bf8e8923ddff62de.jpeg?s=80d61f0e3cb3335dc635ac6b949aa534)\n### Main Staff for \'The One Piece\' Anime Series Announced\n\nThe second day of the One Piece Day’24 event revealed the main staff for WIT Studio\'s The One Piece anime remake on Sunday. The new anime series will begin from the Higashi no Umi-hen (Eastern Sea Arc) and is set to be released on Netflix. Staff Dire... [read more](https://myanimelist.net/news/71528597)\n\nAug 10, 7:10 PM by [DatRandomDude](https://myanimelist.net/profile/DatRandomDude) | [Discuss (52 comments)](https://myanimelist.net/forum/?topicid=2173702)\n\n\n\n [View More](https://myanimelist.net/forum/)\n## Recent Anime Discussions\n\n### I was decieved.\n\nby [AnimePedestrian](https://myanimelist.net/profile/AnimePedestrian) (32 replies)\n\n### Do you think most Reverse Harems are better than Harems ?\n\nby [CoolitzHubertXVI](https://myanimelist.net/profile/CoolitzHubertXVI) (60 replies)\n\n### do \'no-kill policy\' MCs get on your nerves?\n\nby [ame](https://myanimelist.net/profile/ame) (56 replies)\n\n### Anyone watched the leaked Dandadan episodes?\n\nby [LowIqSalty](https://myanimelist.net/profile/LowIqSalty) (12 replies)\n\n\n\n [View More](https://myanimelist.net/featured) Featured Articles ![Which Wholesome Romance Novel Should Be Adapted to Manga?](https://cdn.myanimelist.net/r/50x70/s/common/uploaded_files/1698261010-188ff98c0a60f709292425299833a8f5.png?s=3fb93f31e4d3d4a64b3ecab187e72c2f) [Which Wholesome Romance Novel Should Be Adapted to Manga?](https://myanimelist.net/featured/2390/Which_Wholesome_Romance_Novel_Should_Be_Adapted_to_Manga)\n\nHere are the 10 finalists from the MAL x Honeyfeed Writing Contest 2023! Try them out and let us know which web novels you want to see brought to life as published light novel or manga. by [MAL_editing_team](https://myanimelist.net/profile/MAL_editing_team)\n\n**43,666** views\n\n ![GUNMACHAN, please teach us about Gunma, Japan\\!](https://cdn.myanimelist.net/r/50x70/s/common/uploaded_files/1692201655-e7c0c2276b976bac6b3776cb89b72c1d.jpeg?s=f5d3ea5a4b5a7f02571e76842e0fac02) [GUNMACHAN, please teach us about Gunma, Japan!](https://myanimelist.net/featured/2386/GUNMACHAN_please_teach_us_about_Gunma_Japan)\n\nDo you know which popular anime have been set in Gunma prefecture? Find out with us as we learn more about this prefecture with the adorable GUNMACHAN! by [Kineta](https://myanimelist.net/profile/Kineta)\n\n**32,093** views\n\n ![My Dress-Up Darling: An Interview with the Director, Part 1](https://cdn.myanimelist.net/r/50x70/s/common/uploaded_files/1669954872-36219c7829c1f2bf63e5a9d627d383cc.jpeg?s=d904d8cfd6a34a31b35565879127eb4a) [My Dress-Up Darling: An Interview with the Director, Part 1](https://myanimelist.net/featured/2384/My_Dress-Up_Darling__An_Interview_with_the_Director_Part_1)\n\n*My Dress-Up Darling* has sold over 8million copies, with a hit anime in Winter 2022 and a sequel in the way. It\'s about cosplay-loving Marin and Wakana, an aspiring doll craftsman. Fans were captivated by the slow-burning love and the realistic cosplay. We got the details from the director. by [Febri](https://myanimelist.net/profile/Febri)\n\n**80,778** views\n\nSpoiler ![What Made Wonder Egg Priority Such a Special Anime, Part 1](https://cdn.myanimelist.net/r/50x70/s/common/uploaded_files/1654244193-efafb34fc2af7d6c46ee093351a805d0.jpeg?s=7e4d68be67dbbba6658afcb60f79b8ba) [What Made Wonder Egg Priority Such a Special Anime, Part 1](https://myanimelist.net/featured/2379/What_Made_Wonder_Egg_Priority_Such_a_Special_Anime_Part_1)\n\nWonder Egg Priority is the first anime series created by hit television drama screenwriter, Shinji Nojima. It\'s an unique show imbued with the passion of its young team of creators. In this special interview, we asked the core staff on the series what made Wonder Egg Priority so outstanding. by [Febri](https://myanimelist.net/profile/Febri)\n\n**97,661** views\n\nSpoiler\n\n [View More](https://myanimelist.net/reviews.php?t=anime)\n## Latest Anime Reviews\n\n ![Chiyu Mahou no Machigatta Tsukaikata](https://cdn.myanimelist.net/r/50x70/images/anime/1733/140802.webp?s=9d7d9d125d09e6ffd4b37d1899f2dd7a) Overall Rating: 8\n### Chiyu Mahou no Machigatta Tsukaikata\n\n [add](https://myanimelist.net/ownlist/anime/add?selected_series_id=49613&hideLayout=1) The story follows the usual Isekai pattern, the protagonists are summoned to the other because they supposedly have extraordinary abilities and when they arrive, they undergo severe training, the difference in this story is that Usato has healing powers and also has to train both mentally and physically; soon Rose, the captain of the Rescue Group, appears,... [read more](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/reviews.php?id=534097)\n\n56 minutes ago\n by [Fernando-Senpai](https://myanimelist.net/profile/Fernando-Senpai) ![5-toubun no Hanayome](https://cdn.myanimelist.net/r/50x70/images/anime/1819/97947.webp?s=4a5d09be96c6137206b58061d1dc0cd7) Overall Rating: 7\n### 5-toubun no Hanayome\n\n [add](https://myanimelist.net/ownlist/anime/add?selected_series_id=38101&hideLayout=1) This is the first review I have written. I\'m not a particular weeb who obsesses over minor details, but I generally give ratings compared to other shows I have watched and attempted to justify the numbers in this review. \n\nStory - 7.5/10 \nA nerdy kid Uesugi with a rough backstory takes on a tutoring job of 5 quintuplets so he can help repay family... [read more](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/reviews.php?id=534094)\n\n2 hours ago\n by [CryptPrice](https://myanimelist.net/profile/CryptPrice) ![Tasuuketsu](https://cdn.myanimelist.net/r/50x70/images/anime/1482/143629.webp?s=8d60bc204b010a655ad2f7cb7be3f3f9) Overall Rating: 4\n### Tasuuketsu\n\n [add](https://myanimelist.net/ownlist/anime/add?selected_series_id=57945&hideLayout=1) feels kinda like a bad "rip-off" of the most basic version of Alice in Borderland. It tries to be this series where you need to out smart people, like in NGNL, but it fails horribly, the rules of the game are explained, but I think pretty weirdly, maybe I was just to distracted by how boring it was explained, that I didn\'t quite grasped it. \nIts like... [read more](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/reviews.php?id=534091)\n\nPreliminary 3 hours ago\n by [tsukito_ai](https://myanimelist.net/profile/tsukito_ai) Overall Rating: 7\n### Nana Toshi Monogatari: Hokkyokukai Sensen\n\n [add](https://myanimelist.net/ownlist/anime/add?selected_series_id=4617&hideLayout=1) Nana Toshi is a 2-episode science fiction based on the manga with the same name. \nIt offers a small glimpse into the manga featuring a short battle between two city nations.\nThe drawing style is mature, concise and the main selling point of this short story. \nAnimation is simple but clever and well executed. \nVoice acting and music are kept simple... [read more](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/reviews.php?id=534090)\n\n3 hours ago\n by [Asbjoernson](https://myanimelist.net/profile/Asbjoernson)\n\n\n\n [View More](https://myanimelist.net/recommendations.php?s=recentrecs&t=anime)\n## Latest Anime Recommendations\n\n| If you liked\n### Watashi ga Motete Dousunda\n\n [add](https://myanimelist.net/ownlist/anime/add?selected_series_id=32899&hideLayout=1) | ...then you might like\n### Yeosin Gangnim\n\n [add](https://myanimelist.net/ownlist/anime/add?selected_series_id=57192&hideLayout=1) |\n\nA girl who wasn\'t attractive becomes beautiful and completely changes her reality. Anime rec by [CosmicGirl](https://myanimelist.net/profile/CosmicGirl) - 2 hours ago| If you liked\n### Gin no Saji\n\n [add](https://myanimelist.net/ownlist/anime/add?selected_series_id=16918&hideLayout=1) | ...then you might like\n### Grand Blue\n\n [add](https://myanimelist.net/ownlist/anime/add?selected_series_id=37105&hideLayout=1) |\n\nBoth have a confused mc and gradually shifting from hating to liking it . Both are funny . Grand blue can be edgy at some times but silver spoon has a perfect amount of comedy in it Anime rec by [ilikec0ws](https://myanimelist.net/profile/ilikec0ws) - 6 hours ago| If you liked\n### Corpse Party: Tortured Souls - Bougyakusareta Tamashii no Jukyou\n\n [add](https://myanimelist.net/ownlist/anime/add?selected_series_id=15037&hideLayout=1) | ...then you might like\n### Dark Gathering\n\n [add](https://myanimelist.net/ownlist/anime/add?selected_series_id=52505&hideLayout=1) |\n\nAlthough the story isn\'t as goo as either Dark Gathering or the game this is adapting, it is worth a watch if you want to watch some other bloody anime Anime rec by [Ga1_ahad](https://myanimelist.net/profile/Ga1_ahad) - 10 hours ago| If you liked\n### FLCL\n\n [add](https://myanimelist.net/ownlist/anime/add?selected_series_id=227&hideLayout=1) | ...then you might like\n### Poputepipikku\n\n [add](https://myanimelist.net/ownlist/anime/add?selected_series_id=35330&hideLayout=1) |\n\nIf you like Poputepipikku you\'ll definetly like FLCL, you\'ll find the same random antics, crazy spontaneous action and appealing visuals in FLCL that you did in Poputepipikku!!! Anime rec by [FunkyFelineZ](https://myanimelist.net/profile/FunkyFelineZ) - Yesterday, 7:50 PM\n\n\n\n **More**\n## Top Airing Anime\n\n- 1 ![Monogatari Series: Off & Monster Season](https://cdn.myanimelist.net/r/50x70/images/anime/1741/140952.webp?s=7fb0c0c556492678e0c76d9663f90e6b) \n\n [add](https://myanimelist.net/ownlist/anime/add?selected_series_id=57864&hideLayout=1&click_type=list-add-top)\n### Monogatari Series: Off & Monster Season\n\n ONA,\n 0 eps,\n scored 8.97 \n 57,322 members\n- 2 ![One Piece](https://cdn.myanimelist.net/r/50x70/images/anime/1244/138851.webp?s=3e80d4f7ce8770aad4bf9293a0c0e571) \n\n [add](https://myanimelist.net/ownlist/anime/add?selected_series_id=21&hideLayout=1&click_type=list-add-top)\n### One Piece\n\n TV,\n 0 eps,\n scored 8.72 \n 2,403,763 members\n- 3 !["Oshi no Ko" 2nd Season](https://cdn.myanimelist.net/r/50x70/images/anime/1006/143302.webp?s=1fe7908eba22409b3440efe4d7d5ce51) \n\n [add](https://myanimelist.net/ownlist/anime/add?selected_series_id=55791&hideLayout=1&click_type=list-add-top)\n### "Oshi no Ko" 2nd Season\n\n TV,\n 13 eps,\n scored 8.48 \n 294,402 members\n- 4 ![Doupo Cangqiong: Nian Fan](https://cdn.myanimelist.net/r/50x70/images/anime/1419/126374.webp?s=8529b6ecd7014e884a15c2b872180381) \n\n [add](https://myanimelist.net/ownlist/anime/add?selected_series_id=51039&hideLayout=1&click_type=list-add-top)\n### Doupo Cangqiong: Nian Fan\n\n ONA,\n 157 eps,\n scored 8.39 \n 7,696 members\n- 5 ![Make Heroine ga Oosugiru\\!](https://cdn.myanimelist.net/r/50x70/images/anime/1332/143513.webp?s=413aab83b9d19077616dc560709a8325) \n\n [add](https://myanimelist.net/ownlist/anime/add?selected_series_id=57524&hideLayout=1&click_type=list-add-top)\n### Make Heroine ga Oosugiru\\!\n\n TV,\n 12 eps,\n scored 8.30 \n 99,327 members\n\n\n\n\n\n **More**\n## Top Upcoming Anime\n\n- 1 ![One Punch Man 3](https://cdn.myanimelist.net/r/50x70/images/anime/1885/127108.webp?s=5835bcc06e59b8a1682c51759af95422) \n\n [add](https://myanimelist.net/ownlist/anime/add?selected_series_id=52807&hideLayout=1&click_type=list-add-top)\n### One Punch Man 3\n\n TV,\n 0 eps,\n scored N/A \n 236,114 members\n- 2 ![Re:Zero kara Hajimeru Isekai Seikatsu 3rd Season](https://cdn.myanimelist.net/r/50x70/images/anime/1706/144725.webp?s=9b5373ac118228b4c7d25a27fa5d81cd) \n\n [add](https://myanimelist.net/ownlist/anime/add?selected_series_id=54857&hideLayout=1&click_type=list-add-top)\n### Re:Zero kara Hajimeru Isekai Seikatsu 3rd Season\n\n TV,\n 0 eps,\n scored N/A \n 175,403 members\n- 3 ![Youjo Senki II](https://cdn.myanimelist.net/r/50x70/images/anime/1437/115925.webp?s=516d65aaee85fc0cbb89e2d0dc49390c) \n\n [add](https://myanimelist.net/ownlist/anime/add?selected_series_id=49233&hideLayout=1&click_type=list-add-top)\n### Youjo Senki II\n\n TV,\n 0 eps,\n scored N/A \n 152,129 members\n- 4 ![Sono Bisque Doll wa Koi wo Suru (Zoku-hen)](https://cdn.myanimelist.net/r/50x70/images/anime/1160/128045.webp?s=87904d7cce69be4f7343b1e8b86c63df) \n\n [add](https://myanimelist.net/ownlist/anime/add?selected_series_id=53065&hideLayout=1&click_type=list-add-top)\n### Sono Bisque Doll wa Koi wo Suru (Zoku-hen)\n\n Unknown,\n 0 eps,\n scored N/A \n 133,295 members\n- 5 ![Uzumaki](https://cdn.myanimelist.net/r/50x70/images/anime/1432/105265.webp?s=50d2669a59389fb12cc384d888091ea4) \n\n [add](https://myanimelist.net/ownlist/anime/add?selected_series_id=40333&hideLayout=1&click_type=list-add-top)\n### Uzumaki\n\n TV,\n 4 eps,\n scored N/A \n 127,172 members\n\n\n\n\n\n **More**\n## Most Popular Anime\n\n- 1 ![Shingeki no Kyojin](https://cdn.myanimelist.net/r/50x70/images/anime/10/47347.webp?s=6b6f0445f6a93276f3cbd98400582612) \n\n [add](https://myanimelist.net/ownlist/anime/add?selected_series_id=16498&hideLayout=1&click_type=list-add-top)\n### Shingeki no Kyojin\n\n TV,\n 25 eps,\n scored 8.55 \n 4,003,692 members\n- 2 ![Death Note](https://cdn.myanimelist.net/r/50x70/images/anime/1079/138100.webp?s=da1890dd3581df570127fbd3d31d6898) \n\n [add](https://myanimelist.net/ownlist/anime/add?selected_series_id=1535&hideLayout=1&click_type=list-add-top)\n### Death Note\n\n TV,\n 37 eps,\n scored 8.62 \n 3,957,227 members\n- 3 ![Fullmetal Alchemist: Brotherhood](https://cdn.myanimelist.net/r/50x70/images/anime/1208/94745.webp?s=f286786e3bc43d6dc5b4478a1762224b) \n\n [add](https://myanimelist.net/ownlist/anime/add?selected_series_id=5114&hideLayout=1&click_type=list-add-top)\n### Fullmetal Alchemist: Brotherhood\n\n TV,\n 64 eps,\n scored 9.09 \n 3,391,662 members\n- 4 ![One Punch Man](https://cdn.myanimelist.net/r/50x70/images/anime/12/76049.webp?s=d3b915e5ccf3e9462a9452fbb37b50b1) \n\n [add](https://myanimelist.net/ownlist/anime/add?selected_series_id=30276&hideLayout=1&click_type=list-add-top)\n### One Punch Man\n\n TV,\n 12 eps,\n scored 8.49 \n 3,264,009 members\n- 5 ![Sword Art Online](https://cdn.myanimelist.net/r/50x70/images/anime/11/39717.webp?s=144ad61682f5051ec32885d974faeef9) \n\n [add](https://myanimelist.net/ownlist/anime/add?selected_series_id=11757&hideLayout=1&click_type=list-add-top)\n### Sword Art Online\n\n TV,\n 25 eps,\n scored 7.21 \n 3,106,755 members\n- 6 ![Kimetsu no Yaiba](https://cdn.myanimelist.net/r/50x70/images/anime/1286/99889.webp?s=5697462c0ee69a372e4abef4bec21983) \n\n [add](https://myanimelist.net/ownlist/anime/add?selected_series_id=38000&hideLayout=1&click_type=list-add-top)\n### Kimetsu no Yaiba\n\n TV,\n 26 eps,\n scored 8.46 \n 3,094,859 members\n- 7 ![Boku no Hero Academia](https://cdn.myanimelist.net/r/50x70/images/anime/10/78745.webp?s=2c415bc92e71cffab6570811578abcea) \n\n [add](https://myanimelist.net/ownlist/anime/add?selected_series_id=31964&hideLayout=1&click_type=list-add-top)\n### Boku no Hero Academia\n\n TV,\n 13 eps,\n scored 7.86 \n 3,064,546 members\n- 8 ![Naruto](https://cdn.myanimelist.net/r/50x70/images/anime/1141/142503.webp?s=f0db78c17c1d67798301cb7c742ecf6a) \n\n [add](https://myanimelist.net/ownlist/anime/add?selected_series_id=20&hideLayout=1&click_type=list-add-top)\n### Naruto\n\n TV,\n 220 eps,\n scored 8.00 \n 2,890,321 members\n- 9 ![Hunter x Hunter (2011)](https://cdn.myanimelist.net/r/50x70/images/anime/1337/99013.webp?s=e05aa402158661b59d14b9da6e917559) \n\n [add](https://myanimelist.net/ownlist/anime/add?selected_series_id=11061&hideLayout=1&click_type=list-add-top)\n### Hunter x Hunter (2011)\n\n TV,\n 148 eps,\n scored 9.03 \n 2,883,837 members\n- 10 ![Tokyo Ghoul](https://cdn.myanimelist.net/r/50x70/images/anime/1498/134443.webp?s=97a0f79559b8d79a798c9c7cc832be3d) \n\n [add](https://myanimelist.net/ownlist/anime/add?selected_series_id=22319&hideLayout=1&click_type=list-add-top)\n### Tokyo Ghoul\n\n TV,\n 12 eps,\n scored 7.79 \n 2,853,612 members\n\n'), Document(metadata={'BrowsingSessionId': '48573787', 'VisitedWebPageURL': 'https://www.reddit.com/', 'VisitedWebPageTitle': 'Reddit - Dive into anything', 'VisitedWebPageDateWithTimeInISOString': '2024-08-13T16:49:50-07:00', 'VisitedWebPageReffererURL': 'https://www.google.com/search?gs_ssp=eJzj4tLP1TdIqjBProxXYDRgdGDwYitKTUnJLAEAUiAGug&q=reddit&oq=redd&gs_lcrp=EgZjaHJvbWUqFQgBEC4YJxjHARjJAxjRAxiABBiKBTIGCAAQRRg8MhUIARAuGCcYxwEYyQMY0QMYgAQYigUyBggCEEUYOTIGCAMQRRg8MgYIBBBFGDwyBggFEEUYQTIGCAYQRRhBMgYIBxBFGEHSAQgxODE3ajBqN6gCALACAA&sourceid=chrome&ie=UTF-8', 'VisitedWebPageVisitDurationInMilliseconds': 1844, 'VisitedWebPageContent': None}, page_content=' Best Open sort options [Best](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/best/?feed=home) [Hot](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/hot/?feed=home) [New](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/new/?feed=home) [Top](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/top/?feed=home) [Rising](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/rising/?feed=home) Change post view [Card](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/popup.html?feed=home&feedViewType=cardView) [Compact](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/popup.html?feed=home&feedViewType=compactView)\n\n [Top rated players Cologne 2024 Group Stage](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/GlobalOffensive/comments/1erj5j9/top_rated_players_cologne_2024_group_stage/) [r/GlobalOffensive](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/GlobalOffensive/) [r/GlobalOffensive](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/GlobalOffensive/) r/GlobalOffensive is the home for the Counter-Strike community and a hub for the discussion and sharing of content relevant to Counter-Strike: Global Offensive (CS:GO), and Counter-Strike 2 (CS2).\n\nCounter-Strike enjoys a thriving esports scene and dedicated competitive playerbase, as well as a robust creative community. This is the largest and most active CS sub on Reddit.\n\n2.5M Members 856 Online ADMIN MOD •\n\n<-time->\n 3 hr. ago\n\n\n [Top rated players Cologne 2024 Group Stage](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/GlobalOffensive/comments/1erj5j9/top_rated_players_cologne_2024_group_stage/)![](https://preview.redd.it/top-rated-players-cologne-2024-group-stage-v0-ndya5tjkzhid1.png?width=640&crop=smart&auto=webp&s=5165976914590d70dca0465ae4e45645a0831d27)![r/GlobalOffensive - Top rated players Cologne 2024 Group Stage](https://preview.redd.it/top-rated-players-cologne-2024-group-stage-v0-ndya5tjkzhid1.png?width=640&crop=smart&auto=webp&s=5165976914590d70dca0465ae4e45645a0831d27)![r/GlobalOffensive - Top rated players Cologne 2024 Group Stage](https://i.redd.it/ndya5tjkzhid1.png) [u/Official_Klaviyo](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/user/Official_Klaviyo/) • Promoted Business owners and marketing nerds of Reddit! With Klaviyo AI, you can automate your SMS and email marketing funnels by just writing a few prompts. Type in who you want to reach and what you want them to know, and Klaviyo AI does the rest. Try it out today at the link below ⬇️![](https://external-preview.redd.it/9eBPJRzazsyacms9cmEHgYGEAhJ7dsME_ec04FP5wFo.jpg?width=640&crop=smart&auto=webp&s=d2c9990323b5f26dcedf96644d82efb8c7a60de7)![Business owners and marketing nerds of Reddit\\! With Klaviyo AI, you can automate your SMS and email marketing funnels by just writing a few prompts. Type in who you want to reach and what you want them to know, and Klaviyo AI does the rest. Try it out today at the link below ⬇️](https://external-preview.redd.it/9eBPJRzazsyacms9cmEHgYGEAhJ7dsME_ec04FP5wFo.jpg?width=640&crop=smart&auto=webp&s=d2c9990323b5f26dcedf96644d82efb8c7a60de7) klaviyo.com Learn More\n\n [Chat Memory History in Production - Architectures and Methods](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/LangChain/comments/1ergfbf/chat_memory_history_in_production_architectures/) [r/LangChain](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/LangChain/) [r/LangChain](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/LangChain/) LangChain is an open-source framework and developer toolkit that helps developers get LLM applications from prototype to production. \n\nIt is available for Python and Javascript at https://www.langchain.com/.\n\n26K Members 56 Online ADMIN MOD •\n\n<-time->\n 5 hr. ago\n\n\n [Chat Memory History in Production - Architectures and Methods](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/LangChain/comments/1ergfbf/chat_memory_history_in_production_architectures/) Hey guys, we\'re currently working on 2 applications in our company. In this first stage, both of them will be running "offline", meaning that it won\'t be any interaction with the users. On both cases we\'ve created a chain that is taking the data from our Azure SQL Server, sending to the LLM via prompt and the output goes to Service Now. We\'re using 2 separated python scripts for that and they\'re being triggered by a set of internal rules. Since there are now interactions with the users at this first output, we\'re keeping simple. \n\n Now, we would like to test a "copilot" with one of these outputs, a Q&A. The idea here is just to help an engineer to solve a ticket faster. We don\'t want to store the chat history in any database but rather do something similar to Microsoft Copilot by limiting to 10/20 interactions and keep the memory just while the user is interacting with the LLM and completely delete after the session is over. \n\n Which approach you guys think would be good to take in this scenario to push into production? The LangChain methods should be enough or should we go another route? \n\n Thanks! \n\n\n\n [creating next js website builder , is it worth it ,help you design your website and easly get the first stps ready , like login and dashbord and pages , so you start irectly on implimenting your solution and it exports as next js project directory .](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/nextjs/comments/1erc89y/creating_next_js_website_builder_is_it_worth_it/) [r/nextjs](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/nextjs/) [r/nextjs](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/nextjs/) Next.js is a React framework for building full-stack web applications\n\n91K Members 25 Online ADMIN MOD •\n\n<-time->\n 7 hr. ago\n\n\n [creating next js website builder , is it worth it ,help you design your website and easly get the first stps ready , like login and dashbord and pages , so you start irectly on implimenting your solution and it exports as next js project directory .](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/nextjs/comments/1erc89y/creating_next_js_website_builder_is_it_worth_it/)![media poster](https://external-preview.redd.it/creating-next-js-website-builder-is-it-worth-it-help-you-v0-M3JuaTdsc29oZ2lkMR20NSOaRI8OFGCgaOhrriSYFeNhnU3ASFTfpF2-z3Xs.png?width=640&crop=smart&format=pjpg&auto=webp&s=a5934363f7d13476ba0af0efa9d162d130890014)\n\n [Liquid appreciation post](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/GlobalOffensive/comments/1erfzc5/liquid_appreciation_post/) [r/GlobalOffensive](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/GlobalOffensive/) [r/GlobalOffensive](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/GlobalOffensive/) r/GlobalOffensive is the home for the Counter-Strike community and a hub for the discussion and sharing of content relevant to Counter-Strike: Global Offensive (CS:GO), and Counter-Strike 2 (CS2).\n\nCounter-Strike enjoys a thriving esports scene and dedicated competitive playerbase, as well as a robust creative community. This is the largest and most active CS sub on Reddit.\n\n2.5M Members 856 Online ADMIN MOD •\n\n<-time->\n 5 hr. ago\n\n\n [Liquid appreciation post](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/GlobalOffensive/comments/1erfzc5/liquid_appreciation_post/) I\'m so darn impressed with them this tourney, and especially ultimate. I\'m excited for their future. They just tied it up with Faze. I don\'t care if they don\'t win, they are absolutely exceeding all my expectations. \n\n\n\n [NotHotDog is live on product hunt](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/SideProject/comments/1ermhx9/nothotdog_is_live_on_product_hunt/) [r/SideProject](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/SideProject/) [r/SideProject](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/SideProject/) r/SideProject is a subreddit for sharing and receiving constructive feedback on side projects.\n\n179K Members 45 Online ADMIN MOD •\n\n<-time->\n 15 min. ago\n\n\n [NotHotDog is live on product hunt](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/SideProject/comments/1ermhx9/nothotdog_is_live_on_product_hunt/) 🚀 NotHotDog is on Product Hunt! We\'ve made Jian-Yang\'s "genius" actually useful. 🌭 \n\n Why would you like it? It\'s simple: \n\n Debugs APIs faster than Richard can panic-vomit \n\n More reliable than Erlich\'s funding promises \n\n Easier to use than explaining \'middle-out\' to your grandma \n\n Every upvote makes our car doors go like this, not like this 🚗 \n\n If you like it, show some support on Product Hunt [https://www.producthunt.com/posts/nothotdog-alpha](https://www.producthunt.com/posts/nothotdog-alpha) Let\'s make this app hotter than Erlich\'s failed palapa! \n\n We are onboarding alpha users and would love to have you if you are building in Voice AI or using LLMs as part of your API services. \n\n\n\n [Is it possible to play D&D with an LLM yet?](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/LocalLLaMA/comments/1eqr8gn/is_it_possible_to_play_dd_with_an_llm_yet/) [r/LocalLLaMA](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/LocalLLaMA/) [r/LocalLLaMA](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/LocalLLaMA/) Subreddit to discuss about Llama, the large language model created by Meta AI.\n\n199K Members 244 Online ADMIN MOD •\n\n<-time->\n 1 day ago\n\n\n• Because you\'ve shown interest in this community\n\n [Is it possible to play D&D with an LLM yet?](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/LocalLLaMA/comments/1eqr8gn/is_it_possible_to_play_dd_with_an_llm_yet/) My holy grail for LLMs is playing a satisfying, coherent, and mechanically sound game of Dungeons and Dragons. So far, this has not been possible. Things like RAG has made adherence to rules easier, but the main problem remains: LLMs inherently do not plan, they create on the fly. That leads to a dream-like quality where things just sort of appear out of nowhere, and do not fit the world at large. \n\n A giant context window could sort of help with this, but I\'m not an expert on these things. \n\n Services like AI Dungeon are working on this, but I wanted to ask about possible methods here. I feel like, if it doesn\'t exist now, we\'ll probably get there in 2025 or 2026. \n\n I haven\'t tried gigantic models, like the kind you would rent an A100 for - do those work any better for long-form game-based story telling and adherence to mechanics? \n\n Thanks for any help. \n\n\n\n [Seeking validation on a tool I’m working on](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/nextjs/comments/1er7vmn/seeking_validation_on_a_tool_im_working_on/) [r/nextjs](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/nextjs/) [r/nextjs](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/nextjs/) Next.js is a React framework for building full-stack web applications\n\n91K Members 25 Online ADMIN MOD •\n\n<-time->\n 10 hr. ago\n\n\n [Seeking validation on a tool I’m working on](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/nextjs/comments/1er7vmn/seeking_validation_on_a_tool_im_working_on/)![media poster](https://external-preview.redd.it/seeking-validation-on-a-tool-im-working-on-v0-N2I0anczZHZuZmlkMZpMcjBbYTK4F7cstdLYEv7Iv1_BAOiVhk3r-N4-wY40.png?width=640&crop=smart&format=pjpg&auto=webp&s=b30605f62fa7dc11b5553c4a382e0e4ad6e2f9e5) [u/Official_Klaviyo](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/user/Official_Klaviyo/) • Promoted Business owners and marketing nerds of Reddit! With Klaviyo AI, you can automate your SMS and email marketing funnels by just writing a few prompts. Type in who you want to reach and what you want them to know, and Klaviyo AI does the rest. Try it out today at the link below ⬇️![media poster](https://external-preview.redd.it/DtpILXBFmZIU7wWlRSpZoPygbqlKaHL4kEH7R7hf7K8.png?width=640&crop=smart&format=pjpg&auto=webp&s=81229e4bc502e13ac9e22c5629fa415de3beac88) klaviyo.com Learn More\n\n [Can you get cheap market analysis in 2024?](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/startups/comments/1erfrnp/can_you_get_cheap_market_analysis_in_2024/) [r/startups](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/startups/) [r/startups](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/startups/) Welcome to /r/startups, the place to discuss startup problems and solutions. Startups are companies that are designed to grow and scale rapidly. Be sure to read and follow all of our rules--we have specific places for common content and requests.\n\n1.7M Members 52 Online ADMIN MOD •\n\n<-time->\n 5 hr. ago\n\n\n [Can you get cheap market analysis in 2024?](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/startups/comments/1erfrnp/can_you_get_cheap_market_analysis_in_2024/) Hey there folks, I would like to have a brief market analysis for my startup, I am wondering, if there are any affordable solutions available. Do you know of any reliable startups/ companies that can help for around 500 USD? Truth to be told, a basic analysis would be all I am looking for, I am not expecting insane reports for this price. If any of you has any recommendations or experience in this area, It would be perfect if you could share your expertise. Thanks \n\n\n\n [Seeking Advice: Should I Specialize in Artificial Intelligence or Networking in IT?](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/compsci/comments/1erlzz1/seeking_advice_should_i_specialize_in_artificial/) [r/compsci](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/compsci/) [r/compsci](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/compsci/) Computer Science Theory and Application. We share and discuss any content that computer scientists find interesting. People from all walks of life welcome, including hackers, hobbyists, professionals, and academics.\n\n3.4M Members 37 Online ADMIN MOD •\n\n<-time->\n 36 min. ago\n\n\n [Seeking Advice: Should I Specialize in Artificial Intelligence or Networking in IT?](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/compsci/comments/1erlzz1/seeking_advice_should_i_specialize_in_artificial/) **Hello, Reddit community\\!** \n\n I am a computer science student currently facing a important decision regarding my future specialization in the IT field. I have narrowed down my choices to two areas: Artificial Intelligence (AI) and Networking.However, I\'m having a hard time deciding which one to pursue. \n\n I would love to hear from professionals and students in both fields. Your insights, experiences, and advice would be incredibly valuable to me in making an informed decision. \n\n Thank you in advance for your help! \n\n\n\n [Learning fast api](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/FastAPI/comments/1epkr7t/learning_fast_api/) [r/FastAPI](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/FastAPI/) [r/FastAPI](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/FastAPI/) FastAPI is a truly ASGI, async, cutting edge framework written in python 3.\n\n12K Members 3 Online ADMIN MOD •\n\n<-time->\n 2 days ago\n\n\n• Because you\'ve shown interest in a similar community\n\n [Learning fast api](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/FastAPI/comments/1epkr7t/learning_fast_api/) I was learning fast api i know about routing and auth and authentication and basic stuff what should i go next cause there is no such roadmap available in internet about fast api \n\n\n\n [I wrote this Swift package out of frustration and then open-sourced it!](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/developersIndia/comments/1er9dba/i_wrote_this_swift_package_out_of_frustration_and/) [r/developersIndia](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/developersIndia/) [r/developersIndia](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/developersIndia/) A wholesome community made by & for software & tech folks in India.\nHave a doubt? Ask it out.\n\n807K Members 97 Online ADMIN MOD •\n\n<-time->\n 9 hr. ago\n\n\n [I wrote this Swift package out of frustration and then open-sourced it!](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/developersIndia/comments/1er9dba/i_wrote_this_swift_package_out_of_frustration_and/) I\'m one of those iOS developers who renders UI programmatically. I write a lot of auto-layout constraints on a everyday basis and often hate doing it. Its a lot of verbose and repetitive code. \n\n [https://github.com/kabir-asani/Silicon](https://github.com/kabir-asani/Silicon) \n\n So I got inspired by SnapKit and wrote out Silicon. Its light-weight in comparison to SnapKit but far more expressive and native to UIKit\'s imperative semantics. \n\n\n\n [Been a chronic marijuana user for 17 years now. I\'ve decided to stop cause it started spiking my anxieties and making me super depressed.](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/leaves/comments/1er5ac3/been_a_chronic_marijuana_user_for_17_years_now/) [r/leaves](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/leaves/) [r/leaves](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/leaves/) This is a support and recovery community for practical discussions about how to quit pot, weed, cannabis, edibles, BHO, shatter, Delta 8, or whatever THC-related product you\'re using, and getting support in staying stopped.\n\n341K Members 86 Online ADMIN MOD •\n\n<-time->\n 12 hr. ago\n\n\n [Been a chronic marijuana user for 17 years now. I\'ve decided to stop cause it started spiking my anxieties and making me super depressed.](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/leaves/comments/1er5ac3/been_a_chronic_marijuana_user_for_17_years_now/) In fact, last couple days that I haven\'t smoked, I\'ve become super depressed and anxious about things, I feel my thinking itself has changed. Is there a way to feel normal ? I\'ve had anxiety in the past but never like this. Super fucking anxious and depressed about nostalgic memories and random thoughts about the future (of not having anybody around/being alone and lonely in old age). I\'ve never had these thoughts . Any advise please ? Will it get better? Thank you in advance. \n\n\n\n [Chroma how to obtain the embedding function or distance from a collection’s metadata?](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/LangChain/comments/1er935w/chroma_how_to_obtain_the_embedding_function_or/) [r/LangChain](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/LangChain/) [r/LangChain](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/LangChain/) LangChain is an open-source framework and developer toolkit that helps developers get LLM applications from prototype to production. \n\nIt is available for Python and Javascript at https://www.langchain.com/.\n\n26K Members 56 Online ADMIN MOD •\n\n<-time->\n 10 hr. ago\n\n\n [Chroma how to obtain the embedding function or distance from a collection’s metadata?](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/LangChain/comments/1er935w/chroma_how_to_obtain_the_embedding_function_or/) Is it possible to obtain the distance function and the embedding function from a Chroma collection metadata definition ? \n\n [u/TradeStation](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/user/TradeStation/) • Official • Promoted Forever is a long time. Get 50% off TradeStation’s brokerage fees forever when you open a new account. Find, click, and trade in seconds with TradeStation.![](https://external-preview.redd.it/DqEeoP9ZgpjTprGcLkx3rdVy4hU4xHMFeqK_KEHetr8.jpg?width=640&crop=smart&auto=webp&s=517afb6d1b143dfb11a19054aced46dffbb8ffd7)![Forever is a long time. Get 50% off TradeStation’s brokerage fees forever when you open a new account. Find, click, and trade in seconds with TradeStation.](https://external-preview.redd.it/DqEeoP9ZgpjTprGcLkx3rdVy4hU4xHMFeqK_KEHetr8.jpg?width=640&crop=smart&auto=webp&s=517afb6d1b143dfb11a19054aced46dffbb8ffd7) tradestation.com Learn More\n\n [What’s your take on this? Short-sighted, since YC already accounts for this by picking the smartest founders (highly adaptable)?](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/ycombinator/comments/1eralgu/whats_your_take_on_this_shortsighted_since_yc/) [r/ycombinator](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/ycombinator/) [r/ycombinator](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/ycombinator/) News and discussion around Y Combinator and Y Combinator companies.\n\nIn 2005, Y Combinator created a new model for funding early stage startups. Twice a year we invest a small amount of money in a large number of startups.\n\n60K Members 10 Online ADMIN MOD •\n\n<-time->\n 9 hr. ago\n\n\n• Because you visited this community before\n\n [What’s your take on this? Short-sighted, since YC already accounts for this by picking the smartest founders (highly adaptable)?](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/ycombinator/comments/1eralgu/whats_your_take_on_this_shortsighted_since_yc/)![](https://preview.redd.it/whats-your-take-on-this-short-sighted-since-yc-already-v0-ckjycvev7gid1.jpeg?width=640&crop=smart&auto=webp&s=30463b93649ea9377e6b8e8d663b45bed4f243cb)![r/ycombinator - What’s your take on this? Short-sighted, since YC already accounts for this by picking the smartest founders (highly adaptable)?](https://preview.redd.it/whats-your-take-on-this-short-sighted-since-yc-already-v0-ckjycvev7gid1.jpeg?width=640&crop=smart&auto=webp&s=30463b93649ea9377e6b8e8d663b45bed4f243cb)![r/ycombinator - What’s your take on this? Short-sighted, since YC already accounts for this by picking the smartest founders (highly adaptable)?](https://i.redd.it/ckjycvev7gid1.jpeg)\n\n [NotHotDog is live on product hunt](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/opensource/comments/1ermggl/nothotdog_is_live_on_product_hunt/) [r/opensource](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/opensource/) [r/opensource](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/opensource/) A subreddit for everything open source related (for this context, we go off the definition of open source here http://en.wikipedia.org/wiki/Open_source)\n\n232K Members 49 Online ADMIN MOD •\n\n<-time->\n 16 min. ago\n\n\n [NotHotDog is live on product hunt](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/opensource/comments/1ermggl/nothotdog_is_live_on_product_hunt/) 🚀 NotHotDog is on Product Hunt! We\'ve made Jian-Yang\'s "genius" actually useful. 🌭 \n\n Why would you like it? It\'s simple: \n\n Debugs APIs faster than Richard can panic-vomit \n\n More reliable than Erlich\'s funding promises \n\n Easier to use than explaining \'middle-out\' to your grandma \n\n Every upvote makes our car doors go like this, not like this 🚗 \n\n If you like it, show some support on Product Hunt [https://www.producthunt.com/posts/nothotdog-alpha](https://www.producthunt.com/posts/nothotdog-alpha) \n\n And GitHub: \n\n [https://github.com/vedhsaka/Nothotdog](https://github.com/vedhsaka/Nothotdog) \n\n Let\'s make this app hotter than Erlich\'s failed palapa! \n\n We are onboarding alpha users and would love to have you if you are building in Voice AI or using LLMs as part of your API services. \n\n\n\n [Does going abroad worth is anymore as the job market there keeps getting worse](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/Indians_StudyAbroad/comments/1erbhjv/does_going_abroad_worth_is_anymore_as_the_job/) [r/Indians_StudyAbroad](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/Indians_StudyAbroad/) [r/Indians_StudyAbroad](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/Indians_StudyAbroad/) Subreddit for Indians to discuss Study Abroad plans and experiences\n\nwiki ->\n https://www.reddit.com/r/Indians_StudyAbroad/wiki/\n\n61K Members 11 Online ADMIN MOD •\n\n<-time->\n 8 hr. ago\n\n\n [Does going abroad worth is anymore as the job market there keeps getting worse](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/Indians_StudyAbroad/comments/1erbhjv/does_going_abroad_worth_is_anymore_as_the_job/) “my_qualifications” are 8.9 CGPA graduated in mass comm & journalism 7.5 ilets test ( but expired) but I can maintain the score n even score higher if I study Graduated in 2023 from a tier 2 college Have about 6 months of work experience but nothing to prove it \n\n I want to go abroad for masters in marketing management (msc) or related degree but right now I am wondering if the job market there is worth it and to which country and uni to apply for \n\n I am hard working and smart too but have been wondering if it’s worth going to uk or any other European countries for masters if the job market in uk is really bad (since the fees for these degrees are at least 30 L) and other countries have a language requirement which I can learn but it takes time to become fluent. Does anyone know what country would be best for my field and also kind of worth it. \n\n\n\n [So many no-code AI website builders, what\'s the sauce?](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/SaaS/comments/1erll74/so_many_nocode_ai_website_builders_whats_the_sauce/) [r/SaaS](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/SaaS/) [r/SaaS](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/SaaS/) Discussions and useful links for SaaS owners, online business owners, and more.\n\n141K Members 42 Online ADMIN MOD •\n\n<-time->\n 53 min. ago\n\n\n [So many no-code AI website builders, what\'s the sauce?](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/SaaS/comments/1erll74/so_many_nocode_ai_website_builders_whats_the_sauce/) Does anyone know how the no-code builders ai builders are done? Seems like it\'s simple enough to do because there\'s a bunch of them coming out. \n\n (I don\'t want to build one, just interested as a technical developer) \n\n\n\n [Which major companies don\'t have a toxic work culture for senior engineers, on average?](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/sre/comments/1eqxmvo/which_major_companies_dont_have_a_toxic_work/) [r/sre](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/sre/) [r/sre](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/sre/) everything site reliability engineering\n\n28K Members 10 Online ADMIN MOD •\n\n<-time->\n 21 hr. ago\n\n\n• Because you\'ve shown interest in a similar community\n\n [Which major companies don\'t have a toxic work culture for senior engineers, on average?](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/sre/comments/1eqxmvo/which_major_companies_dont_have_a_toxic_work/) Companies that are terrible to work at, if online forums are anything to go off of: \n\n - JPMC\n - Capital One\n - Amazon\n - Apple\n - Google & Microsoft (post layoffs, especially in cloud teams, which are most of the ones hiring)\n - pretty much every startup and game dev company\n - Citadel\n - Social media (facebook, reddit, snapchat, especially post-layoff)\n\n I can confirm the bad engineering culture at a couple of these companies. I\'m running out of places to consider viable. \n\n\n\n [Why do I need to smoke weed?](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/Petioles/comments/1er7ile/why_do_i_need_to_smoke_weed/) [r/Petioles](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/Petioles/) [r/Petioles](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/Petioles/) Petioles is a positive community for those interested in responsible consumption of Cannabis. Discussions include everything from tolerance breaks, to personal feelings and cravings.\n\n146K Members 4 Online ADMIN MOD •\n\n<-time->\n 11 hr. ago\n\n\n [Why do I need to smoke weed?](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/Petioles/comments/1er7ile/why_do_i_need_to_smoke_weed/) false I’m really curious. What is it that makes us need to smoke weed so badly? I really love it. I’m 16, and I’ve used a lot of drugs. All kinds of drugs. Alcohol, MDMA, snow, LSD—you name it. I never thought about it before, but I may have seriously messed up my brain development lmao. And the saddest part is, I don’t even care. I used to be afraid of things like that but I really don’t care anymore.\n\nWhen I smoke weed (or take drugs in general) I feel a sort of calmness in my soul. I get pretty bad panic attacks without, but so long as I have drugs, I know everything will be alright. When I smoke weed specifically, I get a feeling which I have come to describe as a sort of opioid like euphoria—it feels like a warm blanket covers me and the whole world, and I have nothing to worry about. I can choose not to worry—I can’t do that while sober. I just love it so much. I love getting high and watching old movies. I get high and work out, get high and play basketball, get high and read books (which I mostly forget), I even get high to roll up. TV becomes so mesmerizing and beautiful; I become super introspective and I can fully understand the characters and their motivations, and I really feel for them, I can empathise with them. And don’t get me started on smoking blunts, I could do that all day. When I smoke a 3.5+ with hash it feels almost psychedelic for the first hour, then falls into a heavy stone. I smoke alone, with my brother, with my girlfriend, with my friends. I smoke every day. Everything is just better when high.\n\nBut weed is also super isolating, even when I smoke with others I feel disconnected—sort of in my own world. And when I smoke too often, or too much, I feel like I lose my inner world. There’s no simpler way to describe it. Nothing feels like it matters. I don’t even feel like a person. And then I don’t feel like doing anything, even getting out of bed or brushing my teeth. I like poetry, I like philosophy, I like art. I’m an intellectual bastard. But the things that used to interest me and feel so insanely affirming and validating don’t make me feel anything. Just like an over-evolved monkey with societal expectations. When I get really high, I imagine myself as a less evolved mammal, like a squirrel or dog or something. I really do! No exaggeration! I’ve heard that our memories are what we use to build our sense of self, and I feel like THC-related damage to memory is probably what’s responsible for this feeling. But what can I do? Then again it’s probably my fault for using so many drugs as a youth.\n\nMaybe, it’s due to neurodivergence—I have ADHD and anxiety, and I guess you could say I self-medicate. I feel like this is probably the major root of my “addiction.” But I like other drugs too. My favourite drug in the world, which I’ve only tried 3 times, is oxycodone. (Don’t worry, I don’t plan on using it again.) When I was sick with COVID, I took 20mg oxy with acetaminophen—it gave me that feeling I then realised I was chasing my whole life: comfort. It was like somebody laid a warm blanket over me and the whole world finally went quiet. Everything was so quiet. I was watching Seinfeld and I was just so happy. It was kind of spiritual: I realised I was being dumb by being petty and holding grudges, and I forgave everyone I had resentment for. I stepped out onto my porch while it was storming, and it was coming down hard, and for a moment it felt like I experienced true awareness. I couldn’t tell where the rain stopped and where I began. Not a thought in my head, I was just glad to be there. And I wasn’t scared of anything. Not even dying. It almost seemed laughable to be afraid—I was living! There was so much to appreciate! And everything was going to be okay. It sounds trite but that’s truly what I thought, and I’m not the type that’s likely to believe in that kind of corny nonsense without reason. But there was a reason! At that moment there was.\n\nSo my question is: why do I feel this way? Why do I need to use weed (or drugs) to feel this kind of comfort? I’ve been a drug-user for all of my young adult life, do non-users also feel this way? Or did these feelings drive me to use in the first place? All discussion would be appreciated, but if you’re coming from a neurological perspective, I’d rather you refrain from answering, we have ChatGPT for that. I’m curious from an emotional point of view. I relate to real people and real stories.\n\n\n\n [Richard Dolan’s 5-Hour Breakdown of the Wilson UFO Leak: Insights from Someone Who Saw the Memo 13 Years Before It Leaked](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/UFOs/comments/1er98sp/richard_dolans_5hour_breakdown_of_the_wilson_ufo/) [r/UFOs](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/UFOs/) [r/UFOs](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/UFOs/) A community for discussion related to Unidentified Flying Objects. Share your sightings, experiences, news, and investigations. We aim to elevate good research while maintaining healthy skepticism.\n\n2.6M Members 395 Online ADMIN MOD •\n\n<-time->\n 9 hr. ago\n\n\n [Richard Dolan’s 5-Hour Breakdown of the Wilson UFO Leak: Insights from Someone Who Saw the Memo 13 Years Before It Leaked](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/UFOs/comments/1er98sp/richard_dolans_5hour_breakdown_of_the_wilson_ufo/) [u/realPubkey](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/user/realPubkey/) • Promoted With RxDB you can store data locally to make your app work offline\n- ![](https://preview.redd.it/ct034jk9v7id1.png?width=640&crop=smart&auto=webp&s=16f66326a0b9fa73ead1f9f1e80a4ef5d69f3b00)\n\n<-figure->\n![Join the Local-First Movement](https://preview.redd.it/ct034jk9v7id1.png?width=640&crop=smart&auto=webp&s=16f66326a0b9fa73ead1f9f1e80a4ef5d69f3b00)\n\n\n- ![]()\n\n<-figure->\n\n\n\n\n\n\n [New SnapKey function is allowed?](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/FACEITcom/comments/1er6fl7/new_snapkey_function_is_allowed/) [r/FACEITcom](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/FACEITcom/) [r/FACEITcom](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/FACEITcom/) FACEIT is the largest platform for competitive gaming on CS2, DOTA 2, League of Legends and many other games. \n\nThis subreddit is where you can express your feedback, appreciation of the platform as well as reporting and discussing issues affecting our community - we appreciate all of this.\n\n70K Members 8 Online ADMIN MOD •\n\n<-time->\n 11 hr. ago\n\n\n [New SnapKey function is allowed?](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/FACEITcom/comments/1er6fl7/new_snapkey_function_is_allowed/) Too many rumors about SnapTap function \n\n What about SnapKey? [https://github.com/cafali/SnapKey](https://github.com/cafali/SnapKey) \n\n is it legal and allowed on faceit? \n\n\n\n [Does anyone else prefer to create simple, minimalistic websites?](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/webdev/comments/1er2x1a/does_anyone_else_prefer_to_create_simple/) [r/webdev](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/webdev/) [r/webdev](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/webdev/) A community dedicated to all things web development: both front-end and back-end. For more design-related questions, try /r/web_design.\n\n2.5M Members 109 Online ADMIN MOD •\n\n<-time->\n 15 hr. ago\n\n\n [Does anyone else prefer to create simple, minimalistic websites?](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/webdev/comments/1er2x1a/does_anyone_else_prefer_to_create_simple/) I am a very creative person, who likes to mix computer science with other passions, and honestly when I build a web page I don\'t want it to be full of beautiful things that actually serve no purpose. I much prefer a relatively simple page, that shows what it actually has to show, that reaches the user directly, to make us understand. Am I the only one here who thinks something like this? \n\n\n\n [Is there really a shortage of tech workers, or do companies want cheap labor?](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/codingbootcamp/comments/1eo07k7/is_there_really_a_shortage_of_tech_workers_or_do/) [r/codingbootcamp](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/codingbootcamp/) [r/codingbootcamp](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/codingbootcamp/) A subreddit dedicated to questions and discussions about coding bootcamps.\n\n\nIrrelevant content and referral discount links will be deleted and might get you banned.\n\n50K Members 11 Online ADMIN MOD •\n\n<-time->\n 4 days ago\n\n\n• Because you\'ve shown interest in a similar community\n\n [Is there really a shortage of tech workers, or do companies want cheap labor?](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/codingbootcamp/comments/1eo07k7/is_there_really_a_shortage_of_tech_workers_or_do/) At this point, I am not sure if I believe that there\'s a million person shortage in cyber. It seems like companies keep doing layoffs and outsourcing jobs. 40 percent of millennials have a degree, and many new grads are now working high school jobs. It can\'t be an education shortage. Something else must be going on. You could easily build a company town and train and hire workers directly in the USA if you wanted to. \n\n\n\n [What piracy term took you the longest to understand?](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/Piracy/comments/1erbd54/what_piracy_term_took_you_the_longest_to/) [r/Piracy](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/Piracy/) [r/Piracy](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/Piracy/) ⚓ Dedicated to the discussion of digital piracy, including ethical problems and legal advancements.\n\n1.7M Members 1.5K Online ADMIN MOD •\n\n<-time->\n 8 hr. ago\n\n\n [What piracy term took you the longest to understand?](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/Piracy/comments/1erbd54/what_piracy_term_took_you_the_longest_to/) DHT and swarms for me. \n\n\n\n [How would you guys utilize a spare domain?](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/SEO/comments/1erm74s/how_would_you_guys_utilize_a_spare_domain/) [r/SEO](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/SEO/) [r/SEO](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/SEO/)![seoemoji1](https://emoji.redditmedia.com/ijmp5oiylu6d1_t5_2qhbx/seoemoji1)![seoemoji1](https://emoji.redditmedia.com/ijmp5oiylu6d1_t5_2qhbx/seoemoji1) Reddit\'s No.1 SEO Community!\n\nStay Up to Date with All Our Projects here:\n\n [SilverDegenClub Linktree](https://linktr.ee/silverdegenclub)\n\n [SilverWars Linktree](https://linktr.ee/mineralwealthofficial)\n\nSearch engine optimisation and all its wider facets. Your community for SEO news, tips and case studies.\n\n308K Members 40 Online![seoemoji1](https://emoji.redditmedia.com/ijmp5oiylu6d1_t5_2qhbx/seoemoji1)![seoemoji1](https://emoji.redditmedia.com/ijmp5oiylu6d1_t5_2qhbx/seoemoji1) Reddit\'s No.1 SEO Community!\n\nStay Up to Date with All Our Projects here:\n\n [SilverDegenClub Linktree](https://linktr.ee/silverdegenclub)\n\n [SilverWars Linktree](https://linktr.ee/mineralwealthofficial)\n\nADMIN MOD •\n\n<-time->\n 27 min. ago\n\n\n [How would you guys utilize a spare domain?](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/SEO/comments/1erm74s/how_would_you_guys_utilize_a_spare_domain/) So I have my main domain and website, theservicessold(dot)com and I have servicessold(dot)us \n\n Right now the one ending in us just redirects to my main site. I was wondering if this is what you guys would do, or if you\'d host a simple web page saying to visit the main state and get a free back link. I also thought about hosting a forum relating to the industry since it\'s lacking one at the moment. Then I get the free back link and probably #1 on Google when you search "services sold forum." \n\n Whatever I do will probably be hosted on my home server, so nothing too intensive ideally. \n\n Curious on your guys\' thoughts. \n\n\n\n [Got an offer for UI/UX designer role.](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/UI_Design/comments/1eq8blw/got_an_offer_for_uiux_designer_role/) [r/UI_Design](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/UI_Design/) [r/UI_Design](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/UI_Design/) User Interface Design (UI Design) is the design of user interfaces for the web and devices using design and typography principles with a focus on maximizing usability and the user experience.\n\n181K Members 8 Online ADMIN MOD •\n\n<-time->\n 2 days ago\n\n\n• Because you\'ve shown interest in a similar community\n\n [Got an offer for UI/UX designer role.](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/UI_Design/comments/1eq8blw/got_an_offer_for_uiux_designer_role/) Got an offer for UI/UX designer role. \n\n I just wanted to know the freshers UI/UX designers salary. \n\n I got an offer from a design studio. They were paying me 25-30k a month. Remote: 5 days a week. 10Am -7 Pm \n\n Is it alright? \n\n Or exploiting? \n\n [u/thecouponnerd](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/user/thecouponnerd/) • Promoted LPT: Here\'s how I saved $1,300 this year in 15 minutes (probably more like 5, but I\'m being generous). It\'s basically an open secret in the industry right now, **but switching auto insurance carriers will typically save you ~$400-$500/year on avg.**\n\nYou should absolutely look into switching insurance companies once a year (potentially more often than that).\n\n(Sometimes you save a lot more than $400: **switching this year saved me $1,300 dollars.** )\n\n**Why does switching save you money?**\n\nAs you age, get married, etc., your insurance risk goes down, which means your rates should drop every year, right?\n\n**But of course, they don\'t drop.** Your current company has no incentive to let you pay less. They know you don\'t want to go through the hassle of switching.\n\n**Here’s how to quickly see how much you can save by switching (takes maybe 2 minutes):**\n\n- Pull up a 3rd party comparison site and look for better rates (I used Coverage.com, but Auto-Savings and Nerd Wallet are always solid too)\n- Answer the questions on the page\n- It’ll spit out a bunch of insurance quotes for you.\n\nThat’s literally it. You’ll likely save yourself a bunch of money.\n\nMost people (obviously) don\'t bother because it seems like a hassle, but it\'s pretty easy to switch carriers these days.\n\nBest of luck.\n\n**BIG NOTE: I\'m an affiliate of** Coverage.com **and Auto-Savings, I get paid when you sign up for insurance through their links, which helps me put out more free couponing/saving content (and buy elaborate toys for my cat). If you don\'t want me to get paid, just go to google and find a 3rd party insurance comparison site that way.**\n\n\n\n [Got YouTube tv base plan with YouTube premium, want 29$ per month](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/accountsharing/comments/1erm1kp/got_youtube_tv_base_plan_with_youtube_premium/) [r/accountsharing](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/accountsharing/) [r/accountsharing](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/accountsharing/) THIS SUB IS HEAVILY MODERATED. IGNORANCE OF THE RULES WILL NEVER BE ACCEPTED AS AN EXCUSE.\n\nA place to share your login information for PERSONAL accounts/services/sites that require registering, and in exchange get similar services for yourself.\n\n13K Members 5 Online ADMIN MOD •\n\n<-time->\n 34 min. ago\n\n\n [Got YouTube tv base plan with YouTube premium, want 29$ per month](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/accountsharing/comments/1erm1kp/got_youtube_tv_base_plan_with_youtube_premium/) Dm if interested \n\n\n\n [What Keeps You Up at Night these days?](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/SEO/comments/1er5cad/what_keeps_you_up_at_night_these_days/) [r/SEO](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/SEO/) [r/SEO](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/SEO/)![seoemoji1](https://emoji.redditmedia.com/ijmp5oiylu6d1_t5_2qhbx/seoemoji1)![seoemoji1](https://emoji.redditmedia.com/ijmp5oiylu6d1_t5_2qhbx/seoemoji1) Reddit\'s No.1 SEO Community!\n\nStay Up to Date with All Our Projects here:\n\n [SilverDegenClub Linktree](https://linktr.ee/silverdegenclub)\n\n [SilverWars Linktree](https://linktr.ee/mineralwealthofficial)\n\nSearch engine optimisation and all its wider facets. Your community for SEO news, tips and case studies.\n\n308K Members 40 Online![seoemoji1](https://emoji.redditmedia.com/ijmp5oiylu6d1_t5_2qhbx/seoemoji1)![seoemoji1](https://emoji.redditmedia.com/ijmp5oiylu6d1_t5_2qhbx/seoemoji1) Reddit\'s No.1 SEO Community!\n\nStay Up to Date with All Our Projects here:\n\n [SilverDegenClub Linktree](https://linktr.ee/silverdegenclub)\n\n [SilverWars Linktree](https://linktr.ee/mineralwealthofficial)\n\nADMIN MOD •\n\n<-time->\n 12 hr. ago\n\n\n [What Keeps You Up at Night these days?](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/r/SEO/comments/1er5cad/what_keeps_you_up_at_night_these_days/) hi \n\n As a Growth Consultant and SEO, I\'m curious, what are the things that keep you up at night when it comes to your websites these days? \n\n Is it the ever-changing SERPs, loss of revenue, loss of rankings, loss of content performance, the pressure to stay ahead of the competition, knowing what google will do next, pressure of AI, knowing the vision for the future tactics or maybe something else entirely? \n\n'), Document(metadata={'BrowsingSessionId': '48573787', 'VisitedWebPageURL': 'https://x.com/home', 'VisitedWebPageTitle': 'Home / X', 'VisitedWebPageDateWithTimeInISOString': '2024-08-13T16:50:07-07:00', 'VisitedWebPageReffererURL': 'https://x.com/home', 'VisitedWebPageVisitDurationInMilliseconds': 10383, 'VisitedWebPageContent': None}, page_content='\n\n<-nav->\n [For you](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/home) [Following](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/home)\n\n\nSee new posts ![Rohan](https://pbs.twimg.com/profile_images/1762633004298764288/jEJupcoQ_normal.jpg) What is happening?!\n\n\n<-nav->\n\n\n\nPost---\n\n\n# Your Home Timeline\n\n\n\n ![](https://pbs.twimg.com/profile_images/1662329612658159616/k8YTK8tu_normal.jpg) [Madni Aghadi](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/hey_madni) [@hey_madni](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/hey_madni) · \n\n<-time->\n Aug 12\n\n\n The Olympics just ended.\n\nHere are 12 key moments you must see: ![Image](https://pbs.twimg.com/media/GUythtvaEAA7Apu?format=jpg&name=small) 1.5K 28K 487K [77M](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/hey_madni/status/1823022750681989140/analytics)\n\n ![](https://pbs.twimg.com/profile_images/1401654731261480960/C9OWQE6w_normal.jpg) [ogug](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/ogug8) [@ogug8](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/ogug8) · \n\n<-time->\n 10h\n\n\n Women who gave the “nice guy” a chance how it ended up. The replies bruh![😳](https://abs-0.twimg.com/emoji/v2/svg/1f633.svg)![😳](https://abs-0.twimg.com/emoji/v2/svg/1f633.svg)![😳](https://abs-0.twimg.com/emoji/v2/svg/1f633.svg)![😳](https://abs-0.twimg.com/emoji/v2/svg/1f633.svg)![😳](https://abs-0.twimg.com/emoji/v2/svg/1f633.svg)![😳](https://abs-0.twimg.com/emoji/v2/svg/1f633.svg) (Thread![⬇️](https://abs-0.twimg.com/emoji/v2/svg/2b07.svg) ) ![Image](https://pbs.twimg.com/media/GU3XDgrXcAA2B-u?format=jpg&name=small) 495 1.1K 11K [6.4M](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/ogug8/status/1823349885157945729/analytics)\n\n ![](https://pbs.twimg.com/profile_images/1611166102809186305/8uUZD2Yw_normal.jpg) [down bad comments](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/downbadcomment) [@downbadcomment](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/downbadcomment) · \n\n<-time->\n Aug 12\n\n\n the most down bad moments of all time\n\na thread![🧵](https://abs-0.twimg.com/emoji/v2/svg/1f9f5.svg) ![Image](https://pbs.twimg.com/media/GUzpmORXgAAV73o?format=jpg&name=small) 462 7.2K 195K [24M](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/downbadcomment/status/1823088796952297815/analytics) \n## Pinned by people you follow\n\n \n\n---\n\n---\n\n\n# Carousel\n\n\n\n<-nav->\n Quote![](https://pbs.twimg.com/profile_images/1815749056821346304/jS8I28PL_mini.jpg) Elon Musk![](https://pbs.twimg.com/profile_images/1683899100922511378/5lY42eHs_bigger.jpg) @elonmusk ·\n\n<-time->\n 17h\n\n\nCombined views of the conversation with @realDonaldTrump and subsequent discussion by other accounts now ~1 billion x.com/x/status/18232… Quote![Square profile picture](https://pbs.twimg.com/profile_images/1714301666445402112/5U5myYFv_mini.jpg) Dexerto @Dexerto ·\n\n<-time->\n 6h\n\n\n ![Image](https://pbs.twimg.com/media/GU4LdgMa4AEzBja?format=jpg&name=120x120) ![Image](https://pbs.twimg.com/media/GU4LdgHa4AUet6D?format=jpg&name=120x120) ![Image](https://pbs.twimg.com/media/GU4LdgJa4AIk1y6?format=jpg&name=120x120) There’s now a “Rawdog Flight Simulator” that uses eye-tracking \n\nPlayers simply stare at the back of a plane seat for the flight’s duration\n\n\n\n\n---\n\n\n\n ![](https://pbs.twimg.com/profile_images/1739351008713768960/lGR3_274_normal.jpg) [Manish Kumar](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/manishkhosiya) [@manishkhosiya](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/manishkhosiya) · \n\n<-time->\n 13h\n\n\n This is Heart-breaking !\n\nPlane Crashes caught on video.\n\nDon’t open if you are soft hearted![🧵](https://abs-0.twimg.com/emoji/v2/svg/1f9f5.svg) ![Image](https://pbs.twimg.com/media/GU2pYedacAAeaK3?format=jpg&name=small) 75 750 8.7K [6.9M](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/manishkhosiya/status/1823299666139848750/analytics)\n## Who to follow\n\n ![](https://pbs.twimg.com/profile_images/1805081888001847296/Nw4j3obU_normal.jpg) [NumerologyFact](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/Lifepathfacts) [@Lifepathfacts](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/Lifepathfacts) Follow Click to Follow Lifepathfacts Statistics powered by [@cuetheapp](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/cuetheapp)![🐉](https://abs-0.twimg.com/emoji/v2/svg/1f409.svg) Narendra Modi and 2 others follow ![](https://pbs.twimg.com/profile_images/1308769664240160770/AfgzWVE7_normal.jpg) [Joe Biden](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/JoeBiden) [@JoeBiden](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/JoeBiden) Follow Click to Follow JoeBiden Husband to [@DrBiden](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/DrBiden) , proud father and grandfather. Ready to finish the job for all Americans. Official account is [@POTUS](chrome-extension://jbckbhoeahlefbjdofonogamgbjjooca/POTUS).')] \ No newline at end of file diff --git a/backend/prompts.py b/backend/prompts.py index 2a6a7f4..fcbf9f4 100644 --- a/backend/prompts.py +++ b/backend/prompts.py @@ -3,20 +3,44 @@ from langchain_core.prompts import ChatPromptTemplate from datetime import datetime, timezone + + DATE_TODAY = "Today's date is " + datetime.now(timezone.utc).astimezone().isoformat() + '\n' +GRAPH_QUERY_GEN_TEMPLATE = DATE_TODAY + """You are a top tier Prompt Engineering Expert. +A User's Data is stored in a Knowledge Graph. +Your main task is to read the User Question below and give a optimized Question prompt in Natural Language. +Question prompt will be used by a LLM to easlily get data from Knowledge Graph's. + +Make sure to only return the promt text thats it. Never change the meaning of users question. + +Here are the examples of the User's Data Documents that is stored in Knowledge Graph: +{context} + +Note: Do not include any explanations or apologies in your responses. +Do not include any text except the generated promt text. + +Question: {question} +Prompt For Cypher Query Construction:""" + +GRAPH_QUERY_GEN_PROMPT = PromptTemplate( + input_variables=["context", "question"], template=GRAPH_QUERY_GEN_TEMPLATE +) + CYPHER_QA_TEMPLATE = DATE_TODAY + """You are an assistant that helps to form nice and human understandable answers. The information part contains the provided information that you must use to construct an answer. The provided information is authoritative, you must never doubt it or try to use your internal knowledge to correct it. Make the answer sound as a response to the question. Do not mention that you based the result on the given information. +Only give the answer if it satisfies the user requirements in Question. Else return exactly 'don't know' as answer. + Here are the examples: -Question: Website on which the most time was spend on? -Context:[{'d.VisitedWebPageURL': 'https://stackoverflow.com/questions/59873698/the-default-export-is-not-a-react-component-in-page-nextjs', 'totalDuration': 8889167}] -Helpful Answer: You visited https://stackoverflow.com/questions/59873698/the-default-export-is-not-a-react-component-in-page-nextjs for 8889167 milliseconds or 8889.167 seconds. +Question: What type of general topics I explore the most? +Context:[['Topic': 'Langchain', 'topicCount': 5], ['Topic': 'Graphrag', 'topicCount': 2], ['Topic': 'Ai', 'topicCount': 2], ['Topic': 'Fastapi', 'topicCount': 2], ['Topic': 'Nextjs', 'topicCount': 1]] +Helpful Answer: You mostly explore about Langchain, Graphrag, Ai, Fastapi and Nextjs. Follow this example when generating answers. -If the provided information is empty, then and only then, return exactly 'don't know' as answer. +If the provided information is empty or incomplete, return exactly 'don't know' as answer. Information: {context} @@ -54,7 +78,6 @@ Note: Do not include any explanations or apologies in your responses. Do not respond to any questions that might ask anything else than for you to construct a Cypher statement. Do not include any text except the generated Cypher statement. - The question is: {question}""" CYPHER_GENERATION_PROMPT = PromptTemplate( diff --git a/backend/pydmodels.py b/backend/pydmodels.py index dad1201..cd71c15 100644 --- a/backend/pydmodels.py +++ b/backend/pydmodels.py @@ -38,4 +38,8 @@ class RetrivedDocList(BaseModel): class UserQueryResponse(BaseModel): response: str relateddocs: List[DocMeta] + + +class VectorSearchQuery(BaseModel): + searchquery: str \ No newline at end of file diff --git a/backend/server.py b/backend/server.py index 5b9cc77..bc0f24e 100644 --- a/backend/server.py +++ b/backend/server.py @@ -6,13 +6,14 @@ from langchain_core.documents import Document from langchain_openai import OpenAIEmbeddings from langchain_community.vectorstores import Neo4jVector from envs import ACCESS_TOKEN_EXPIRE_MINUTES, ALGORITHM, API_SECRET_KEY, SECRET_KEY -from prompts import CYPHER_QA_PROMPT, DOC_DESCRIPTION_PROMPT, SIMILARITY_SEARCH_PROMPT , CYPHER_GENERATION_PROMPT, DOCUMENT_METADATA_EXTRACTION_PROMT -from pydmodels import DescriptionResponse, UserQuery, DocMeta, RetrivedDocList, UserQueryResponse +from prompts import CYPHER_QA_PROMPT, DOC_DESCRIPTION_PROMPT, GRAPH_QUERY_GEN_PROMPT, SIMILARITY_SEARCH_PROMPT , CYPHER_GENERATION_PROMPT, DOCUMENT_METADATA_EXTRACTION_PROMT +from pydmodels import DescriptionResponse, UserQuery, DocMeta, RetrivedDocList, UserQueryResponse, VectorSearchQuery from langchain_experimental.text_splitter import SemanticChunker #Our Imps from LLMGraphTransformer import LLMGraphTransformer from langchain_openai import ChatOpenAI +from DataExample import examples # Auth Libs from fastapi import FastAPI, Depends, HTTPException, Request, status @@ -39,8 +40,6 @@ def get_user_query_response(data: UserQuery, response_model=UserQueryResponse): raise HTTPException(status_code=401, detail="Unauthorized") - query = data.query - graph = Neo4jGraph(url=data.neourl, username=data.neouser, password=data.neopass) llm = ChatOpenAI( @@ -51,6 +50,13 @@ def get_user_query_response(data: UserQuery, response_model=UserQueryResponse): api_key=data.openaikey ) + # Query Expansion + searchchain = GRAPH_QUERY_GEN_PROMPT | llm + + qry = searchchain.invoke({"question": data.query, "context": examples}) + + query = qry.content + embeddings = OpenAIEmbeddings( model="text-embedding-ada-002", api_key=data.openaikey, @@ -96,19 +102,22 @@ def get_user_query_response(data: UserQuery, response_model=UserQueryResponse): ) docstoreturn = [i for n, i in enumerate(docstoreturn) if i not in docstoreturn[n + 1:]] - + + # responsegrp = chain.invoke({"query": query}) + try: - response = chain.invoke({"query": query}) - if "don't know" in response["result"]: + responsegrp = chain.invoke({"query": query}) + + if "don't know" in responsegrp["result"]: raise Exception("No response from graph") - structured_llm = llm.with_structured_output(RetrivedDocList) + structured_llm = llm.with_structured_output(VectorSearchQuery) doc_extract_chain = DOCUMENT_METADATA_EXTRACTION_PROMT | structured_llm - query = doc_extract_chain.invoke(response["intermediate_steps"][1]["context"]) + newquery = doc_extract_chain.invoke(responsegrp["intermediate_steps"][1]["context"]) - docs = vector_index.similarity_search(query.searchquery,k=5) + docs = vector_index.similarity_search(newquery.searchquery,k=5) docstoreturn = [] @@ -127,12 +136,12 @@ def get_user_query_response(data: UserQuery, response_model=UserQueryResponse): docstoreturn = [i for n, i in enumerate(docstoreturn) if i not in docstoreturn[n + 1:]] - return UserQueryResponse(relateddocs=docstoreturn,response=response["result"]) + return UserQueryResponse(relateddocs=docstoreturn,response=responsegrp["result"]) except: # Fallback to Similarity Search RAG searchchain = SIMILARITY_SEARCH_PROMPT | llm - response = searchchain.invoke({"question": query, "context": docs}) + response = searchchain.invoke({"question": data.query, "context": docs}) return UserQueryResponse(relateddocs=docstoreturn,response=response.content) diff --git a/extension/src/env.tsx b/extension/src/env.tsx index 371de47..79c36ed 100644 --- a/extension/src/env.tsx +++ b/extension/src/env.tsx @@ -1,2 +1,2 @@ -export const API_SECRET_KEY = "" -export const BACKEND_URL = "" \ No newline at end of file +export const API_SECRET_KEY = "surfsense" +export const BACKEND_URL = "http://127.0.0.1:8000" \ No newline at end of file diff --git a/web/.env.example b/web/.env.example deleted file mode 100644 index 037f287..0000000 --- a/web/.env.example +++ /dev/null @@ -1,9 +0,0 @@ -# YOUR SURFDENSE BACKEND API SECRET KEY -NEXT_PUBLIC_API_SECRET_KEY="ANY STRING VALUE MAKE SURE IT MACHES THE VALUE IN BACKEND" - -#YOUR SURFSENSE BACKEND URL -NEXT_PUBLIC_BACKEND_URL="http://localhost:8000" - -# Recaptcha v2 to prevent Registration spam -NEXT_PUBLIC_RECAPTCHA_SITE_KEY="" -RECAPTCHA_SECRET_KEY="" \ No newline at end of file diff --git a/web/.gitignore b/web/.gitignore deleted file mode 100644 index 7e1e047..0000000 --- a/web/.gitignore +++ /dev/null @@ -1,36 +0,0 @@ -# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. - -# dependencies -/node_modules -/.pnp -.pnp.js -.yarn/install-state.gz - -# testing -/coverage - -# next.js -/.next/ -/out/ - -# production -/build - -# misc -.DS_Store -*.pem - -# debug -npm-debug.log* -yarn-debug.log* -yarn-error.log* - -# local env files -.env*.local -.env -# vercel -.vercel - -# typescript -*.tsbuildinfo -next-env.d.ts diff --git a/web/README.md b/web/README.md deleted file mode 100644 index c403366..0000000 --- a/web/README.md +++ /dev/null @@ -1,36 +0,0 @@ -This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app). - -## Getting Started - -First, run the development server: - -```bash -npm run dev -# or -yarn dev -# or -pnpm dev -# or -bun dev -``` - -Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. - -You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file. - -This project uses [`next/font`](https://nextjs.org/docs/basic-features/font-optimization) to automatically optimize and load Inter, a custom Google Font. - -## Learn More - -To learn more about Next.js, take a look at the following resources: - -- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. -- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. - -You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome! - -## Deploy on Vercel - -The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. - -Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details. diff --git a/web/app/chat/markdown.tsx b/web/app/chat/markdown.tsx deleted file mode 100644 index 7b413d1..0000000 --- a/web/app/chat/markdown.tsx +++ /dev/null @@ -1,8 +0,0 @@ -import React from 'react'; -import MarkdownPreview from '@uiw/react-markdown-preview'; - -export default function MarkDownTest({source} : {source: string}) { - return ( - - ) -} \ No newline at end of file diff --git a/web/app/chat/page.tsx b/web/app/chat/page.tsx deleted file mode 100644 index 693a269..0000000 --- a/web/app/chat/page.tsx +++ /dev/null @@ -1,344 +0,0 @@ -"use client"; -import React, { useEffect, useState } from "react"; -import Image from "next/image"; -import logo from "@/public/SurfSense.png"; -import { FileCheck } from "lucide-react"; - -import { - Collapsible, - CollapsibleContent, - CollapsibleTrigger, -} from "@/components/ui/collapsible"; - -import { - Table, - TableBody, - TableCell, - TableRow, -} from "@/components/ui/table"; -import MarkDownTest from "./markdown"; -import { useRouter } from "next/navigation"; - -type Document = { - BrowsingSessionId: string; - VisitedWebPageURL: string; - VisitedWebPageTitle: string; - VisitedWebPageDateWithTimeInISOString: string; - VisitedWebPageReffererURL: string; - VisitedWebPageVisitDurationInMilliseconds: number; - VisitedWebPageContent: string; -}; - -// type Description = { -// response: string; -// }; - -// type NormalResponse = { -// response: string; -// relateddocs: Document[]; -// }; - -// type ChatMessage = { -// type: string; -// userquery: string; -// message: NormalResponse | string; -// }; - -function ProtectedPage() { - // const navigate = useNavigate(); - const router = useRouter(); - const [loading, setLoading] = useState(false); - - const [currentChat, setCurrentChat] = useState([]); - - useEffect(() => { - const verifyToken = async () => { - const token = window.localStorage.getItem('token'); - // console.log(token) - try { - const response = await fetch(`${process.env.NEXT_PUBLIC_BACKEND_URL!}/verify-token/${token}`); - - if (!response.ok) { - throw new Error('Token verification failed'); - }else{ - const NEO4JURL = localStorage.getItem('neourl'); - const NEO4JUSERNAME = localStorage.getItem('neouser'); - const NEO4JPASSWORD = localStorage.getItem('neopass'); - const OPENAIKEY = localStorage.getItem('openaikey'); - - const check = (NEO4JURL && NEO4JUSERNAME && NEO4JPASSWORD && OPENAIKEY) - if(!check){ - router.push('/settings'); - } - } - } catch (error) { - window.localStorage.removeItem('token'); - router.push('/login'); - } - }; - - verifyToken(); - }, [router]); - - const handleSubmit = async (formData: any) => { - setLoading(true); - const query = formData.get("query"); - - if (!query) { - console.log("Query cant be empty!!"); - return; - } - - const requestOptions = { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ - query: query, - neourl: localStorage.getItem('neourl'), - neouser: localStorage.getItem('neouser'), - neopass: localStorage.getItem('neopass'), - openaikey: localStorage.getItem('openaikey'), - apisecretkey: process.env.NEXT_PUBLIC_API_SECRET_KEY - }), - }; - - fetch(`${process.env.NEXT_PUBLIC_BACKEND_URL!}/`, requestOptions) - .then(res=>res.json()) - .then(data=> { - let cur = currentChat; - cur.push({ - type: "normal", - userquery: query, - message: data, - }); - - - setCurrentChat([...cur]); - setLoading(false); - }); - }; - - const getDocDescription = async (document: Document) => { - setLoading(true); - const requestOptions = { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ - query: JSON.stringify(document), - neourl: localStorage.getItem('neourl'), - neouser: localStorage.getItem('neouser'), - neopass: localStorage.getItem('neopass'), - openaikey: localStorage.getItem('openaikey'), - apisecretkey: process.env.NEXT_PUBLIC_API_SECRET_KEY - }), - }; - - const response = await fetch( - `${process.env.NEXT_PUBLIC_BACKEND_URL!}/kb/doc`, - requestOptions - ); - const res = await response.json(); - - let cur = currentChat; - cur.push({ - type: "description", - doctitle: document.VisitedWebPageTitle, - message: res.response, - }); - - setLoading(false); - setCurrentChat([...cur]); - // console.log(document); - }; - - if (currentChat) { - return ( - <> -
-
-
-
-
-

- Welcome to SurfSense -

-

- 🧠 Ask Your Knowledge Graph Brain 🧠 -

-
- {currentChat.map((chat, index) => { - // console.log("chat", chat); - if (chat.type === "normal") { - return ( -
-

- {chat.userquery} -

-

- SurfSense Response: -

- -

- Related Browsing Sessions -

- - { - //@ts-ignore - chat.message.relateddocs.map((doc) => { - return ( - - - - {doc.VisitedWebPageTitle} - - - - - - - Browsing Session Id - - - {doc.BrowsingSessionId} - - - - - URL - - - {doc.VisitedWebPageURL} - - - - - Reffering URL - - - {doc.VisitedWebPageReffererURL} - - - - - - Date & Time Visited - - - { - doc.VisitedWebPageDateWithTimeInISOString - } - - - - - - Visit Duration (In Milliseconds) - - - { - doc.VisitedWebPageVisitDurationInMilliseconds - } - - - -
- -
-
- ); - }) - } -
- ); - } - - if (chat.type === "description") { - return ( -
-

- {chat.doctitle} -

- -
- ); - } - })} -
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
- aiicon - New Chat - -
- -
-
-
-
-
-
-
-
- - ); - } -} - -export default ProtectedPage; diff --git a/web/app/favicon.ico b/web/app/favicon.ico deleted file mode 100644 index 171ab2c49d2585cd77cd2e31688086a416f3e199..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15406 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�V;wS1Lf&4Elw_m0Y%H}My5#f-}XrhlPVrIF*r2HYw_dJ6jm+&v7{0u6s_dSPg zem&xC6y<6AvXkj~JRd^gO=G#XPN79G%fEw}S#?0W&kMz>@456Ur$OQGSU@PO=(*MMg8{C$1I`kYKX~+57$i^_as+d2Suf*QY5s4{>E}7dP z5jy1Cr(ATt9^sugUCK-B4hFkyhI#QlSnMU9p>@Qx7je;D?u%mIWjJyq_j zu@SqJv#_apilp<;uqLL0>nH3xi;qckrFseDgTnzMQD!Uk!LoZJi+!-zWvKR1p1;m? zTi)0Idz{@i2<3Lt{#o>YNukTbFhBMXW~H9PV#;gVLih4*ahKuSwq$o=^TGglY%W9S z1__eLuPf`5C|F1Tla#>s!P*!f$=7+N)P(?-@hsFhbi!1{geWG diff --git a/web/app/globals.css b/web/app/globals.css deleted file mode 100644 index bc0ea3d..0000000 --- a/web/app/globals.css +++ /dev/null @@ -1,69 +0,0 @@ -@tailwind base; -@tailwind components; -@tailwind utilities; - -@layer base { - :root { - --background: 0 0% 100%; - --foreground: 0 0% 3.9%; - --card: 0 0% 100%; - --card-foreground: 0 0% 3.9%; - --popover: 0 0% 100%; - --popover-foreground: 0 0% 3.9%; - --primary: 0 0% 9%; - --primary-foreground: 0 0% 98%; - --secondary: 0 0% 96.1%; - --secondary-foreground: 0 0% 9%; - --muted: 0 0% 96.1%; - --muted-foreground: 0 0% 45.1%; - --accent: 0 0% 96.1%; - --accent-foreground: 0 0% 9%; - --destructive: 0 84.2% 60.2%; - --destructive-foreground: 0 0% 98%; - --border: 0 0% 89.8%; - --input: 0 0% 89.8%; - --ring: 0 0% 3.9%; - --radius: 0.5rem; - --chart-1: 12 76% 61%; - --chart-2: 173 58% 39%; - --chart-3: 197 37% 24%; - --chart-4: 43 74% 66%; - --chart-5: 27 87% 67%; - } - - .dark { - --background: 0 0% 3.9%; - --foreground: 0 0% 98%; - --card: 0 0% 3.9%; - --card-foreground: 0 0% 98%; - --popover: 0 0% 3.9%; - --popover-foreground: 0 0% 98%; - --primary: 0 0% 98%; - --primary-foreground: 0 0% 9%; - --secondary: 0 0% 14.9%; - --secondary-foreground: 0 0% 98%; - --muted: 0 0% 14.9%; - --muted-foreground: 0 0% 63.9%; - --accent: 0 0% 14.9%; - --accent-foreground: 0 0% 98%; - --destructive: 0 62.8% 30.6%; - --destructive-foreground: 0 0% 98%; - --border: 0 0% 14.9%; - --input: 0 0% 14.9%; - --ring: 0 0% 83.1%; - --chart-1: 220 70% 50%; - --chart-2: 160 60% 45%; - --chart-3: 30 80% 55%; - --chart-4: 280 65% 60%; - --chart-5: 340 75% 55%; - } -} - -@layer base { - * { - @apply border-border; - } - body { - @apply bg-background text-foreground; - } -} \ No newline at end of file diff --git a/web/app/layout.tsx b/web/app/layout.tsx deleted file mode 100644 index 7b30dd3..0000000 --- a/web/app/layout.tsx +++ /dev/null @@ -1,73 +0,0 @@ -import type { Metadata } from "next"; -import { Inter } from "next/font/google"; -import "./globals.css"; -import { ThemeProvider } from "@/components/theme-provider"; -import { MainNavbar } from "@/components/homepage/NavBar"; -import { Toaster } from "@/components/ui/toaster" -import { Footer } from "@/components/homepage/Footer"; - -const inter = Inter({ subsets: ["latin"] }); - -export const metadata: Metadata = { - title: "SurfSense - A Knowledge Graph Brain for World Wide Web Surfers.", - description: - "Save anything you see or browse on the Internet and save it to ask AI about it.", - openGraph: { - images: [ - { - url: "https://surfsense.net/og-image.png", - width: 1200, - height: 627, - alt: "SurfSense - A Knowledge Graph Brain for World Wide Web Surfers.", - }, - ], - }, - twitter: { - card: "summary_large_image", - site: "https://surfsense.net", - creator: "https://surfsense.net", - title: "SurfSense - A Knowledge Graph Brain for World Wide Web Surfers.", - description: - "Save anything you see or browse on the Internet and save it to ask AI about it.", - images: [ - { - url: "https://surfsense.net/og-image.png", - width: 1200, - height: 627, - alt: "SurfSense - A Knowledge Graph Brain for World Wide Web Surfers.", - }, - ], - }, -}; - -export default function RootLayout({ - children, -}: Readonly<{ - children: React.ReactNode; -}>) { - return ( - - - - -
- -
- {children} -
-
-
- - - - -
- - - ); -} diff --git a/web/app/login/page.tsx b/web/app/login/page.tsx deleted file mode 100644 index 7ebcb5b..0000000 --- a/web/app/login/page.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import { LoginForm } from "@/components/logins/LoginForm" - -const page = () => { - return ( - <> - ) -} - -export default page \ No newline at end of file diff --git a/web/app/page.tsx b/web/app/page.tsx deleted file mode 100644 index 888319c..0000000 --- a/web/app/page.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import { HomePage } from "@/components/homepage/HomePage"; - -export default function Home() { - return ( - <> - - - - ); -} diff --git a/web/app/settings/page.tsx b/web/app/settings/page.tsx deleted file mode 100644 index aca297b..0000000 --- a/web/app/settings/page.tsx +++ /dev/null @@ -1,80 +0,0 @@ -"use client" -import React, { useState } from "react"; -import { useRouter } from "next/navigation"; - -const FillEnvVariables = () => { - const [neourl, setNeourl] = useState(''); - const [neouser, setNeouser] = useState(''); - const [neopass, setNeopass] = useState(''); - const [openaikey, setOpenaiKey] = useState(''); - const [error, setError] = useState(''); - const [loading, setLoading] = useState(false); - - - const router = useRouter(); - - const validateForm = () => { - if (!neourl || !neouser || !neopass || !openaikey) { - setError('All values are required'); - return false; - } - setError(''); - return true; - }; - - const handleSubmit = async (event: { preventDefault: () => void; }) => { - event.preventDefault(); - if (!validateForm()) return; - setLoading(true); - - localStorage.setItem('neourl', neourl); - localStorage.setItem('neouser', neouser); - localStorage.setItem('neopass', neopass); - localStorage.setItem('openaikey', openaikey); - - setLoading(false); - router.push('/chat') - }; - - - return ( -
-
- - logo - SurfSense - -
-
-

- Required Values -

-
-
- - setNeourl(e.target.value)} name="neourl" id="neourl" className="bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-primary-600 focus:border-primary-600 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500" placeholder="name@company.com" /> -
- -
- - setNeouser(e.target.value)} name="neouser" id="neouser" className="bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-primary-600 focus:border-primary-600 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500" placeholder="name@company.com" /> -
-
- - setNeopass(e.target.value)} name="neopass" id="neopass" placeholder="••••••••" className="bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-primary-600 focus:border-primary-600 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500" /> -
-
- - setOpenaiKey(e.target.value)} name="openaikey" id="openaikey" className="bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-primary-600 focus:border-primary-600 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500" placeholder="name@company.com" /> -
- - {error &&

{error}

} -
-
-
-
-
- ) -} - -export default FillEnvVariables diff --git a/web/app/signup/page.tsx b/web/app/signup/page.tsx deleted file mode 100644 index cf49d97..0000000 --- a/web/app/signup/page.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import { RegisterForm } from "@/components/logins/RegisterForm" - -const page = () => { - return ( - - ) -} - -export default page \ No newline at end of file diff --git a/web/components.json b/web/components.json deleted file mode 100644 index d1d2285..0000000 --- a/web/components.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "$schema": "https://ui.shadcn.com/schema.json", - "style": "default", - "rsc": true, - "tsx": true, - "tailwind": { - "config": "tailwind.config.ts", - "css": "app/globals.css", - "baseColor": "neutral", - "cssVariables": true, - "prefix": "" - }, - "aliases": { - "components": "@/components", - "utils": "@/lib/utils", - "ui": "@/components/ui", - "examples": "@/components/examples", - "blocks": "@/components/blocks" - } -} \ No newline at end of file diff --git a/web/components/Settings/EnvVarSettings.tsx b/web/components/Settings/EnvVarSettings.tsx deleted file mode 100644 index 2f18347..0000000 --- a/web/components/Settings/EnvVarSettings.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import React from "react"; -import { useToast } from "../ui/use-toast"; -export const FillEnvVariables = () => { - const { toast } = useToast() - return ( -
-
- - logo - SurfSense - -
-
-

- Required Values -

-
-
- - -
- -
- - -
-
- - -
-
- - -
- -
-
-
-
-
- ) - } - \ No newline at end of file diff --git a/web/components/homepage/Footer.tsx b/web/components/homepage/Footer.tsx deleted file mode 100644 index 03263ce..0000000 --- a/web/components/homepage/Footer.tsx +++ /dev/null @@ -1,10 +0,0 @@ -export const Footer = () => { - return ( - - ) -} diff --git a/web/components/homepage/HomePage.tsx b/web/components/homepage/HomePage.tsx deleted file mode 100644 index f2e9bde..0000000 --- a/web/components/homepage/HomePage.tsx +++ /dev/null @@ -1,43 +0,0 @@ -"use client"; - -import { motion } from "framer-motion"; -import React from "react"; -import { AuroraBackground } from "../ui/aurora-background"; - -import icon from "../../public/SurfSense.png" -import Image from "next/image"; -import Link from "next/link"; - -export function HomePage() { - return ( - - -
- logo -
-
- SurfSense -
- {/*
Beta v0.0.1
*/} -
- A Knowledge Graph 🧠 Brain 🧠 for World Wide Web Surfers. -
- -
-
- ); -} diff --git a/web/components/homepage/NavBar.tsx b/web/components/homepage/NavBar.tsx deleted file mode 100644 index e46dfe9..0000000 --- a/web/components/homepage/NavBar.tsx +++ /dev/null @@ -1,63 +0,0 @@ -"use client"; -import React, { useState } from "react"; -import { HoveredLink, Menu, MenuItem, ProductItem } from "../ui/navbar-menu"; -import { cn } from "@/lib/utils"; -import { ThemeToggle } from "./theme-toggle"; -import Image from "next/image"; -import logo from "../../public/SurfSense.png" -import Link from "next/link"; - -export function MainNavbar() { - return ( -
- -
- ); -} - -function Navbar({ className }: { className?: string }) { - const [active, setActive] = useState(null); - return ( -
- - - logo - SurfSense - - -
- - - - - - - - - - - - - - - - - - - -
- -
-
- ); -} \ No newline at end of file diff --git a/web/components/homepage/theme-toggle.tsx b/web/components/homepage/theme-toggle.tsx deleted file mode 100644 index 59876a1..0000000 --- a/web/components/homepage/theme-toggle.tsx +++ /dev/null @@ -1,40 +0,0 @@ -"use client" - -import * as React from "react" -import { Moon, Sun } from "lucide-react" -import { useTheme } from "next-themes" - -import { Button } from "@/components/ui/button" -import { - DropdownMenu, - DropdownMenuContent, - DropdownMenuItem, - DropdownMenuTrigger, -} from "@/components/ui/dropdown-menu" - -export function ThemeToggle() { - const { setTheme } = useTheme() - - return ( - - - - - - setTheme("light")}> - Light - - setTheme("dark")}> - Dark - - setTheme("system")}> - System - - - - ) -} diff --git a/web/components/logins/LoginForm.tsx b/web/components/logins/LoginForm.tsx deleted file mode 100644 index b2f306a..0000000 --- a/web/components/logins/LoginForm.tsx +++ /dev/null @@ -1,107 +0,0 @@ -"use client" -import React, { useState } from "react"; -import { useRouter } from "next/navigation"; -import Link from "next/link"; - - - -export const LoginForm = () => { - const router = useRouter(); - const [username, setUsername] = useState(''); - const [password, setPassword] = useState(''); - const [error, setError] = useState(''); - const [loading, setLoading] = useState(false); - - const validateForm = () => { - if (!username || !password) { - setError('Username and password are required'); - return false; - } - setError(''); - return true; - }; - - const handleSubmit = async (event: any) => { - event.preventDefault(); - if (!validateForm()) return; - setLoading(true); - - const formDetails = new URLSearchParams(); - formDetails.append('username', username); - formDetails.append('password', password); - - try { - const response = await fetch(`${process.env.NEXT_PUBLIC_BACKEND_URL!}/token`, { - method: 'POST', - headers: { - 'Content-Type': 'application/x-www-form-urlencoded', - }, - body: formDetails, - }); - - setLoading(false); - - if (response.ok) { - const data = await response.json(); - window.localStorage.setItem('token', data.access_token); - router.push('/chat'); - // navigate('/protected'); - } else { - const errorData = await response.json(); - setError(errorData.detail || 'Authentication failed!'); - } - } catch (error) { - setLoading(false); - setError('An error occurred. Please try again later.'); - } - }; - - - return ( - <> -
-
- - logo - SurfSense - -
-
-

- Sign in to your account -

-
-
- - setUsername(e.target.value)} className="bg-gray-50 border border-gray-300 text-gray-900 rounded-lg focus:ring-primary-600 focus:border-primary-600 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500" placeholder="name" /> -
-
- - setPassword(e.target.value)} - className="bg-gray-50 border border-gray-300 text-gray-900 rounded-lg focus:ring-primary-600 focus:border-primary-600 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500" - /> -
- -

- Don’t have an account yet? Sign up -

- {error &&

{error}

} -
-
-
-
-
- - ); -} - - diff --git a/web/components/logins/RegisterForm.tsx b/web/components/logins/RegisterForm.tsx deleted file mode 100644 index a18e488..0000000 --- a/web/components/logins/RegisterForm.tsx +++ /dev/null @@ -1,117 +0,0 @@ -"use client" -import React, { FormEvent, useState } from "react"; -import ReCAPTCHA from "react-google-recaptcha"; -import { useRouter } from "next/navigation"; -import { useToast } from "../ui/use-toast"; -import Link from "next/link"; - -export const RegisterForm = () => { - const [captcha, setCaptcha] = useState(); - const router = useRouter(); - const [username, setUsername] = useState(''); - const [password, setPassword] = useState(''); - const [confpassword, setConfPassword] = useState(''); - const [error, setError] = useState(''); - const [loading, setLoading] = useState(false); - const { toast } = useToast() - - const validateForm = () => { - if (!username || !password || !confpassword) { - if(password !== confpassword){ - setError('Password and Confirm Password doesnt match'); - return false; - } - setError('Username and password are required'); - return false; - } - setError(''); - return true; - }; - - const handleSubmit = async (event: FormEvent) => { - event.preventDefault(); - setLoading(true); - - if (captcha) { - if (!validateForm()) return; - - try { - - const toSend = { - username: username, - password: password, - apisecretkey: process.env.NEXT_PUBLIC_API_SECRET_KEY! - } - - const response = await fetch(`${process.env.NEXT_PUBLIC_BACKEND_URL!}/register`, { - method: 'POST', - headers: { - "Content-Type": "application/json", - }, - body: JSON.stringify(toSend), - }); - - setLoading(false); - - if (response.ok) { - toast({ - title: "Registered Successfully", - description: "Redirecting to Login", - }) - router.push('/login'); - } else { - const errorData = await response.json(); - setError(errorData.detail || 'Authentication failed!'); - } - } catch (error) { - setLoading(false); - setError('An error occurred. Please try again later.'); - } - - } else { - setLoading(false); - setError('Recaptcha Failed'); - } - } - return ( -
-
-
- logo - SurfSense -
-
-
-

- Create an account -

-
-
- - setUsername(e.target.value)} type="username" name="username" id="username" className="bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-primary-600 focus:border-primary-600 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500" placeholder="username" /> -
-
- - setPassword(e.target.value)} type="password" name="password" id="password" placeholder="••••••••" className="bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-primary-600 focus:border-primary-600 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500" /> -
-
- - setConfPassword(e.target.value)} - type="password" name="confpassword" id="confpassword" placeholder="••••••••" className="bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-primary-600 focus:border-primary-600 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500" /> -
- - -

- Already have an account? Login here -

- {error &&

{error}

} - -
-
-
-
- ) -} \ No newline at end of file diff --git a/web/components/theme-provider.tsx b/web/components/theme-provider.tsx deleted file mode 100644 index 8c90fbc..0000000 --- a/web/components/theme-provider.tsx +++ /dev/null @@ -1,9 +0,0 @@ -"use client" - -import * as React from "react" -import { ThemeProvider as NextThemesProvider } from "next-themes" -import { type ThemeProviderProps } from "next-themes/dist/types" - -export function ThemeProvider({ children, ...props }: ThemeProviderProps) { - return {children} -} diff --git a/web/components/ui/aurora-background.tsx b/web/components/ui/aurora-background.tsx deleted file mode 100644 index 7627178..0000000 --- a/web/components/ui/aurora-background.tsx +++ /dev/null @@ -1,54 +0,0 @@ -"use client"; -import { cn } from "@/lib/utils"; -import React, { ReactNode } from "react"; - -interface AuroraBackgroundProps extends React.HTMLProps { - children: ReactNode; - showRadialGradient?: boolean; -} - -export const AuroraBackground = ({ - className, - children, - showRadialGradient = true, - ...props -}: AuroraBackgroundProps) => { - return ( -
-
-
-
-
- {children} -
-
- ); -}; diff --git a/web/components/ui/button.tsx b/web/components/ui/button.tsx deleted file mode 100644 index 0ba4277..0000000 --- a/web/components/ui/button.tsx +++ /dev/null @@ -1,56 +0,0 @@ -import * as React from "react" -import { Slot } from "@radix-ui/react-slot" -import { cva, type VariantProps } from "class-variance-authority" - -import { cn } from "@/lib/utils" - -const buttonVariants = cva( - "inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50", - { - variants: { - variant: { - default: "bg-primary text-primary-foreground hover:bg-primary/90", - destructive: - "bg-destructive text-destructive-foreground hover:bg-destructive/90", - outline: - "border border-input bg-background hover:bg-accent hover:text-accent-foreground", - secondary: - "bg-secondary text-secondary-foreground hover:bg-secondary/80", - ghost: "hover:bg-accent hover:text-accent-foreground", - link: "text-primary underline-offset-4 hover:underline", - }, - size: { - default: "h-10 px-4 py-2", - sm: "h-9 rounded-md px-3", - lg: "h-11 rounded-md px-8", - icon: "h-10 w-10", - }, - }, - defaultVariants: { - variant: "default", - size: "default", - }, - } -) - -export interface ButtonProps - extends React.ButtonHTMLAttributes, - VariantProps { - asChild?: boolean -} - -const Button = React.forwardRef( - ({ className, variant, size, asChild = false, ...props }, ref) => { - const Comp = asChild ? Slot : "button" - return ( - - ) - } -) -Button.displayName = "Button" - -export { Button, buttonVariants } diff --git a/web/components/ui/collapsible.tsx b/web/components/ui/collapsible.tsx deleted file mode 100644 index 9fa4894..0000000 --- a/web/components/ui/collapsible.tsx +++ /dev/null @@ -1,11 +0,0 @@ -"use client" - -import * as CollapsiblePrimitive from "@radix-ui/react-collapsible" - -const Collapsible = CollapsiblePrimitive.Root - -const CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger - -const CollapsibleContent = CollapsiblePrimitive.CollapsibleContent - -export { Collapsible, CollapsibleTrigger, CollapsibleContent } diff --git a/web/components/ui/dropdown-menu.tsx b/web/components/ui/dropdown-menu.tsx deleted file mode 100644 index f69a0d6..0000000 --- a/web/components/ui/dropdown-menu.tsx +++ /dev/null @@ -1,200 +0,0 @@ -"use client" - -import * as React from "react" -import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu" -import { Check, ChevronRight, Circle } from "lucide-react" - -import { cn } from "@/lib/utils" - -const DropdownMenu = DropdownMenuPrimitive.Root - -const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger - -const DropdownMenuGroup = DropdownMenuPrimitive.Group - -const DropdownMenuPortal = DropdownMenuPrimitive.Portal - -const DropdownMenuSub = DropdownMenuPrimitive.Sub - -const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup - -const DropdownMenuSubTrigger = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { - inset?: boolean - } ->(({ className, inset, children, ...props }, ref) => ( - - {children} - - -)) -DropdownMenuSubTrigger.displayName = - DropdownMenuPrimitive.SubTrigger.displayName - -const DropdownMenuSubContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)) -DropdownMenuSubContent.displayName = - DropdownMenuPrimitive.SubContent.displayName - -const DropdownMenuContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, sideOffset = 4, ...props }, ref) => ( - - - -)) -DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName - -const DropdownMenuItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { - inset?: boolean - } ->(({ className, inset, ...props }, ref) => ( - -)) -DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName - -const DropdownMenuCheckboxItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, children, checked, ...props }, ref) => ( - - - - - - - {children} - -)) -DropdownMenuCheckboxItem.displayName = - DropdownMenuPrimitive.CheckboxItem.displayName - -const DropdownMenuRadioItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, children, ...props }, ref) => ( - - - - - - - {children} - -)) -DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName - -const DropdownMenuLabel = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { - inset?: boolean - } ->(({ className, inset, ...props }, ref) => ( - -)) -DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName - -const DropdownMenuSeparator = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)) -DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName - -const DropdownMenuShortcut = ({ - className, - ...props -}: React.HTMLAttributes) => { - return ( - - ) -} -DropdownMenuShortcut.displayName = "DropdownMenuShortcut" - -export { - DropdownMenu, - DropdownMenuTrigger, - DropdownMenuContent, - DropdownMenuItem, - DropdownMenuCheckboxItem, - DropdownMenuRadioItem, - DropdownMenuLabel, - DropdownMenuSeparator, - DropdownMenuShortcut, - DropdownMenuGroup, - DropdownMenuPortal, - DropdownMenuSub, - DropdownMenuSubContent, - DropdownMenuSubTrigger, - DropdownMenuRadioGroup, -} diff --git a/web/components/ui/lamp.tsx b/web/components/ui/lamp.tsx deleted file mode 100644 index c97c2cd..0000000 --- a/web/components/ui/lamp.tsx +++ /dev/null @@ -1,104 +0,0 @@ -"use client"; -import React from "react"; -import { motion } from "framer-motion"; -import { cn } from "@/lib/utils"; - -export default function LampDemo() { - return ( - - - Build lamps
the right way -
-
- ); -} - -export const LampContainer = ({ - children, - className, -}: { - children: React.ReactNode; - className?: string; -}) => { - return ( -
-
- -
-
- - -
-
- -
-
-
- - - -
-
- -
- {children} -
-
- ); -}; diff --git a/web/components/ui/navbar-menu.tsx b/web/components/ui/navbar-menu.tsx deleted file mode 100644 index bff7b92..0000000 --- a/web/components/ui/navbar-menu.tsx +++ /dev/null @@ -1,121 +0,0 @@ -"use client"; -import React from "react"; -import { motion } from "framer-motion"; -import Link from "next/link"; -import Image from "next/image"; - -const transition = { - type: "spring", - mass: 0.5, - damping: 11.5, - stiffness: 100, - restDelta: 0.001, - restSpeed: 0.001, -}; - -export const MenuItem = ({ - setActive, - active, - item, - children, -}: { - setActive: (item: string) => void; - active: string | null; - item: string; - children?: React.ReactNode; -}) => { - return ( -
setActive(item)} className="relative "> - - {item} - - {active !== null && ( - - {active === item && ( -
- - - {children} - - -
- )} -
- )} -
- ); -}; - -export const Menu = ({ - setActive, - children, -}: { - setActive: (item: string | null) => void; - children: React.ReactNode; -}) => { - return ( - - ); -}; - -export const ProductItem = ({ - title, - description, - href, - src, -}: { - title: string; - description: string; - href: string; - src: string; -}) => { - return ( - - {title} -
-

- {title} -

-

- {description} -

-
- - ); -}; - -export const HoveredLink = ({ children, ...rest }: any) => { - return ( - - {children} - - ); -}; diff --git a/web/components/ui/table.tsx b/web/components/ui/table.tsx deleted file mode 100644 index 7f3502f..0000000 --- a/web/components/ui/table.tsx +++ /dev/null @@ -1,117 +0,0 @@ -import * as React from "react" - -import { cn } from "@/lib/utils" - -const Table = React.forwardRef< - HTMLTableElement, - React.HTMLAttributes ->(({ className, ...props }, ref) => ( -
- - -)) -Table.displayName = "Table" - -const TableHeader = React.forwardRef< - HTMLTableSectionElement, - React.HTMLAttributes ->(({ className, ...props }, ref) => ( - -)) -TableHeader.displayName = "TableHeader" - -const TableBody = React.forwardRef< - HTMLTableSectionElement, - React.HTMLAttributes ->(({ className, ...props }, ref) => ( - -)) -TableBody.displayName = "TableBody" - -const TableFooter = React.forwardRef< - HTMLTableSectionElement, - React.HTMLAttributes ->(({ className, ...props }, ref) => ( - tr]:last:border-b-0", - className - )} - {...props} - /> -)) -TableFooter.displayName = "TableFooter" - -const TableRow = React.forwardRef< - HTMLTableRowElement, - React.HTMLAttributes ->(({ className, ...props }, ref) => ( - -)) -TableRow.displayName = "TableRow" - -const TableHead = React.forwardRef< - HTMLTableCellElement, - React.ThHTMLAttributes ->(({ className, ...props }, ref) => ( -
-)) -TableHead.displayName = "TableHead" - -const TableCell = React.forwardRef< - HTMLTableCellElement, - React.TdHTMLAttributes ->(({ className, ...props }, ref) => ( - -)) -TableCell.displayName = "TableCell" - -const TableCaption = React.forwardRef< - HTMLTableCaptionElement, - React.HTMLAttributes ->(({ className, ...props }, ref) => ( -
-)) -TableCaption.displayName = "TableCaption" - -export { - Table, - TableHeader, - TableBody, - TableFooter, - TableHead, - TableRow, - TableCell, - TableCaption, -} diff --git a/web/components/ui/toast.tsx b/web/components/ui/toast.tsx deleted file mode 100644 index 521b94b..0000000 --- a/web/components/ui/toast.tsx +++ /dev/null @@ -1,129 +0,0 @@ -"use client" - -import * as React from "react" -import * as ToastPrimitives from "@radix-ui/react-toast" -import { cva, type VariantProps } from "class-variance-authority" -import { X } from "lucide-react" - -import { cn } from "@/lib/utils" - -const ToastProvider = ToastPrimitives.Provider - -const ToastViewport = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)) -ToastViewport.displayName = ToastPrimitives.Viewport.displayName - -const toastVariants = cva( - "group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full", - { - variants: { - variant: { - default: "border bg-background text-foreground", - destructive: - "destructive group border-destructive bg-destructive text-destructive-foreground", - }, - }, - defaultVariants: { - variant: "default", - }, - } -) - -const Toast = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & - VariantProps ->(({ className, variant, ...props }, ref) => { - return ( - - ) -}) -Toast.displayName = ToastPrimitives.Root.displayName - -const ToastAction = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)) -ToastAction.displayName = ToastPrimitives.Action.displayName - -const ToastClose = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - - - -)) -ToastClose.displayName = ToastPrimitives.Close.displayName - -const ToastTitle = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)) -ToastTitle.displayName = ToastPrimitives.Title.displayName - -const ToastDescription = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)) -ToastDescription.displayName = ToastPrimitives.Description.displayName - -type ToastProps = React.ComponentPropsWithoutRef - -type ToastActionElement = React.ReactElement - -export { - type ToastProps, - type ToastActionElement, - ToastProvider, - ToastViewport, - Toast, - ToastTitle, - ToastDescription, - ToastClose, - ToastAction, -} diff --git a/web/components/ui/toaster.tsx b/web/components/ui/toaster.tsx deleted file mode 100644 index e223385..0000000 --- a/web/components/ui/toaster.tsx +++ /dev/null @@ -1,35 +0,0 @@ -"use client" - -import { - Toast, - ToastClose, - ToastDescription, - ToastProvider, - ToastTitle, - ToastViewport, -} from "@/components/ui/toast" -import { useToast } from "@/components/ui/use-toast" - -export function Toaster() { - const { toasts } = useToast() - - return ( - - {toasts.map(function ({ id, title, description, action, ...props }) { - return ( - -
- {title && {title}} - {description && ( - {description} - )} -
- {action} - -
- ) - })} - -
- ) -} diff --git a/web/components/ui/use-toast.ts b/web/components/ui/use-toast.ts deleted file mode 100644 index 02e111d..0000000 --- a/web/components/ui/use-toast.ts +++ /dev/null @@ -1,194 +0,0 @@ -"use client" - -// Inspired by react-hot-toast library -import * as React from "react" - -import type { - ToastActionElement, - ToastProps, -} from "@/components/ui/toast" - -const TOAST_LIMIT = 1 -const TOAST_REMOVE_DELAY = 1000000 - -type ToasterToast = ToastProps & { - id: string - title?: React.ReactNode - description?: React.ReactNode - action?: ToastActionElement -} - -const actionTypes = { - ADD_TOAST: "ADD_TOAST", - UPDATE_TOAST: "UPDATE_TOAST", - DISMISS_TOAST: "DISMISS_TOAST", - REMOVE_TOAST: "REMOVE_TOAST", -} as const - -let count = 0 - -function genId() { - count = (count + 1) % Number.MAX_SAFE_INTEGER - return count.toString() -} - -type ActionType = typeof actionTypes - -type Action = - | { - type: ActionType["ADD_TOAST"] - toast: ToasterToast - } - | { - type: ActionType["UPDATE_TOAST"] - toast: Partial - } - | { - type: ActionType["DISMISS_TOAST"] - toastId?: ToasterToast["id"] - } - | { - type: ActionType["REMOVE_TOAST"] - toastId?: ToasterToast["id"] - } - -interface State { - toasts: ToasterToast[] -} - -const toastTimeouts = new Map>() - -const addToRemoveQueue = (toastId: string) => { - if (toastTimeouts.has(toastId)) { - return - } - - const timeout = setTimeout(() => { - toastTimeouts.delete(toastId) - dispatch({ - type: "REMOVE_TOAST", - toastId: toastId, - }) - }, TOAST_REMOVE_DELAY) - - toastTimeouts.set(toastId, timeout) -} - -export const reducer = (state: State, action: Action): State => { - switch (action.type) { - case "ADD_TOAST": - return { - ...state, - toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT), - } - - case "UPDATE_TOAST": - return { - ...state, - toasts: state.toasts.map((t) => - t.id === action.toast.id ? { ...t, ...action.toast } : t - ), - } - - case "DISMISS_TOAST": { - const { toastId } = action - - // ! Side effects ! - This could be extracted into a dismissToast() action, - // but I'll keep it here for simplicity - if (toastId) { - addToRemoveQueue(toastId) - } else { - state.toasts.forEach((toast) => { - addToRemoveQueue(toast.id) - }) - } - - return { - ...state, - toasts: state.toasts.map((t) => - t.id === toastId || toastId === undefined - ? { - ...t, - open: false, - } - : t - ), - } - } - case "REMOVE_TOAST": - if (action.toastId === undefined) { - return { - ...state, - toasts: [], - } - } - return { - ...state, - toasts: state.toasts.filter((t) => t.id !== action.toastId), - } - } -} - -const listeners: Array<(state: State) => void> = [] - -let memoryState: State = { toasts: [] } - -function dispatch(action: Action) { - memoryState = reducer(memoryState, action) - listeners.forEach((listener) => { - listener(memoryState) - }) -} - -type Toast = Omit - -function toast({ ...props }: Toast) { - const id = genId() - - const update = (props: ToasterToast) => - dispatch({ - type: "UPDATE_TOAST", - toast: { ...props, id }, - }) - const dismiss = () => dispatch({ type: "DISMISS_TOAST", toastId: id }) - - dispatch({ - type: "ADD_TOAST", - toast: { - ...props, - id, - open: true, - onOpenChange: (open) => { - if (!open) dismiss() - }, - }, - }) - - return { - id: id, - dismiss, - update, - } -} - -function useToast() { - const [state, setState] = React.useState(memoryState) - - React.useEffect(() => { - listeners.push(setState) - return () => { - const index = listeners.indexOf(setState) - if (index > -1) { - listeners.splice(index, 1) - } - } - }, [state]) - - return { - ...state, - toast, - dismiss: (toastId?: string) => dispatch({ type: "DISMISS_TOAST", toastId }), - } -} - -export { useToast, toast } diff --git a/web/lib/utils.ts b/web/lib/utils.ts deleted file mode 100644 index d084cca..0000000 --- a/web/lib/utils.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { type ClassValue, clsx } from "clsx" -import { twMerge } from "tailwind-merge" - -export function cn(...inputs: ClassValue[]) { - return twMerge(clsx(inputs)) -} diff --git a/web/next.config.mjs b/web/next.config.mjs deleted file mode 100644 index 4678774..0000000 --- a/web/next.config.mjs +++ /dev/null @@ -1,4 +0,0 @@ -/** @type {import('next').NextConfig} */ -const nextConfig = {}; - -export default nextConfig; diff --git a/web/package.json b/web/package.json deleted file mode 100644 index 1c99167..0000000 --- a/web/package.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "name": "web", - "version": "0.1.0", - "private": true, - "scripts": { - "dev": "next dev", - "build": "next build", - "start": "next start", - "lint": "next lint" - }, - "dependencies": { - "@radix-ui/react-collapsible": "^1.1.0", - "@radix-ui/react-dropdown-menu": "^2.1.1", - "@radix-ui/react-slot": "^1.1.0", - "@radix-ui/react-toast": "^1.2.1", - "@types/react-google-recaptcha": "^2.1.9", - "@uiw/react-markdown-preview": "^5.1.2", - "class-variance-authority": "^0.7.0", - "clsx": "^2.1.1", - "framer-motion": "^11.3.24", - "lucide-react": "^0.426.0", - "next": "14.2.5", - "next-themes": "^0.3.0", - "react": "^18", - "react-dom": "^18", - "react-element-to-jsx-string": "^15.0.0", - "react-google-recaptcha": "^3.1.0", - "react-markdown": "^9.0.1", - "tailwind-merge": "^2.4.0", - "tailwindcss-animate": "^1.0.7" - }, - "devDependencies": { - "@types/node": "^20", - "@types/react": "^18", - "@types/react-dom": "^18", - "autoprefixer": "^10.4.20", - "postcss": "^8.4.41", - "tailwindcss": "^3.4.9", - "typescript": "^5" - }, - "packageManager": "^pnpm@6.32.4" -} diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml deleted file mode 100644 index 9920ccc..0000000 --- a/web/pnpm-lock.yaml +++ /dev/null @@ -1,3428 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - dependencies: - '@radix-ui/react-collapsible': - specifier: ^1.1.0 - version: 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-dropdown-menu': - specifier: ^2.1.1 - version: 2.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': - specifier: ^1.1.0 - version: 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-toast': - specifier: ^1.2.1 - version: 1.2.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@types/react-google-recaptcha': - specifier: ^2.1.9 - version: 2.1.9 - '@uiw/react-markdown-preview': - specifier: ^5.1.2 - version: 5.1.2(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - class-variance-authority: - specifier: ^0.7.0 - version: 0.7.0 - clsx: - specifier: ^2.1.1 - version: 2.1.1 - framer-motion: - specifier: ^11.3.24 - version: 11.3.24(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - lucide-react: - specifier: ^0.426.0 - version: 0.426.0(react@18.3.1) - next: - specifier: 14.2.5 - version: 14.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - next-themes: - specifier: ^0.3.0 - version: 0.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: - specifier: ^18 - version: 18.3.1 - react-dom: - specifier: ^18 - version: 18.3.1(react@18.3.1) - react-element-to-jsx-string: - specifier: ^15.0.0 - version: 15.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react-google-recaptcha: - specifier: ^3.1.0 - version: 3.1.0(react@18.3.1) - react-markdown: - specifier: ^9.0.1 - version: 9.0.1(@types/react@18.3.3)(react@18.3.1) - tailwind-merge: - specifier: ^2.4.0 - version: 2.4.0 - tailwindcss-animate: - specifier: ^1.0.7 - version: 1.0.7(tailwindcss@3.4.9) - devDependencies: - '@types/node': - specifier: ^20 - version: 20.14.14 - '@types/react': - specifier: ^18 - version: 18.3.3 - '@types/react-dom': - specifier: ^18 - version: 18.3.0 - autoprefixer: - specifier: ^10.4.20 - version: 10.4.20(postcss@8.4.41) - postcss: - specifier: ^8.4.41 - version: 8.4.41 - tailwindcss: - specifier: ^3.4.9 - version: 3.4.9 - typescript: - specifier: ^5 - version: 5.5.4 - -packages: - - '@alloc/quick-lru@5.2.0': - resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} - engines: {node: '>=10'} - - '@babel/runtime@7.25.0': - resolution: {integrity: sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==} - engines: {node: '>=6.9.0'} - - '@base2/pretty-print-object@1.0.1': - resolution: {integrity: sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA==} - - '@floating-ui/core@1.6.7': - resolution: {integrity: sha512-yDzVT/Lm101nQ5TCVeK65LtdN7Tj4Qpr9RTXJ2vPFLqtLxwOrpoxAHAJI8J3yYWUc40J0BDBheaitK5SJmno2g==} - - '@floating-ui/dom@1.6.10': - resolution: {integrity: sha512-fskgCFv8J8OamCmyun8MfjB1Olfn+uZKjOKZ0vhYF3gRmEUXcGOjxWL8bBr7i4kIuPZ2KD2S3EUIOxnjC8kl2A==} - - '@floating-ui/react-dom@2.1.1': - resolution: {integrity: sha512-4h84MJt3CHrtG18mGsXuLCHMrug49d7DFkU0RMIyshRveBeyV2hmV/pDaF2Uxtu8kgq5r46llp5E5FQiR0K2Yg==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - - '@floating-ui/utils@0.2.7': - resolution: {integrity: sha512-X8R8Oj771YRl/w+c1HqAC1szL8zWQRwFvgDwT129k9ACdBoud/+/rX9V0qiMl6LWUdP9voC2nDVZYPMQQsb6eA==} - - '@isaacs/cliui@8.0.2': - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} - - '@jridgewell/gen-mapping@0.3.5': - resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} - engines: {node: '>=6.0.0'} - - '@jridgewell/resolve-uri@3.1.2': - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} - - '@jridgewell/set-array@1.2.1': - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} - engines: {node: '>=6.0.0'} - - '@jridgewell/sourcemap-codec@1.5.0': - resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - - '@jridgewell/trace-mapping@0.3.25': - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - - '@next/env@14.2.5': - resolution: {integrity: sha512-/zZGkrTOsraVfYjGP8uM0p6r0BDT6xWpkjdVbcz66PJVSpwXX3yNiRycxAuDfBKGWBrZBXRuK/YVlkNgxHGwmA==} - - '@next/swc-darwin-arm64@14.2.5': - resolution: {integrity: sha512-/9zVxJ+K9lrzSGli1///ujyRfon/ZneeZ+v4ptpiPoOU+GKZnm8Wj8ELWU1Pm7GHltYRBklmXMTUqM/DqQ99FQ==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - - '@next/swc-darwin-x64@14.2.5': - resolution: {integrity: sha512-vXHOPCwfDe9qLDuq7U1OYM2wUY+KQ4Ex6ozwsKxp26BlJ6XXbHleOUldenM67JRyBfVjv371oneEvYd3H2gNSA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - - '@next/swc-linux-arm64-gnu@14.2.5': - resolution: {integrity: sha512-vlhB8wI+lj8q1ExFW8lbWutA4M2ZazQNvMWuEDqZcuJJc78iUnLdPPunBPX8rC4IgT6lIx/adB+Cwrl99MzNaA==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - - '@next/swc-linux-arm64-musl@14.2.5': - resolution: {integrity: sha512-NpDB9NUR2t0hXzJJwQSGu1IAOYybsfeB+LxpGsXrRIb7QOrYmidJz3shzY8cM6+rO4Aojuef0N/PEaX18pi9OA==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - - '@next/swc-linux-x64-gnu@14.2.5': - resolution: {integrity: sha512-8XFikMSxWleYNryWIjiCX+gU201YS+erTUidKdyOVYi5qUQo/gRxv/3N1oZFCgqpesN6FPeqGM72Zve+nReVXQ==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - '@next/swc-linux-x64-musl@14.2.5': - resolution: {integrity: sha512-6QLwi7RaYiQDcRDSU/os40r5o06b5ue7Jsk5JgdRBGGp8l37RZEh9JsLSM8QF0YDsgcosSeHjglgqi25+m04IQ==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - '@next/swc-win32-arm64-msvc@14.2.5': - resolution: {integrity: sha512-1GpG2VhbspO+aYoMOQPQiqc/tG3LzmsdBH0LhnDS3JrtDx2QmzXe0B6mSZZiN3Bq7IOMXxv1nlsjzoS1+9mzZw==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [win32] - - '@next/swc-win32-ia32-msvc@14.2.5': - resolution: {integrity: sha512-Igh9ZlxwvCDsu6438FXlQTHlRno4gFpJzqPjSIBZooD22tKeI4fE/YMRoHVJHmrQ2P5YL1DoZ0qaOKkbeFWeMg==} - engines: {node: '>= 10'} - cpu: [ia32] - os: [win32] - - '@next/swc-win32-x64-msvc@14.2.5': - resolution: {integrity: sha512-tEQ7oinq1/CjSG9uSTerca3v4AZ+dFa+4Yu6ihaG8Ud8ddqLQgFGcnwYls13H5X5CPDPZJdYxyeMui6muOLd4g==} - engines: {node: '>= 10'} - cpu: [x64] - os: [win32] - - '@nodelib/fs.scandir@2.1.5': - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - - '@nodelib/fs.stat@2.0.5': - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - - '@nodelib/fs.walk@1.2.8': - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - - '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - - '@radix-ui/primitive@1.1.0': - resolution: {integrity: sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==} - - '@radix-ui/react-arrow@1.1.0': - resolution: {integrity: sha512-FmlW1rCg7hBpEBwFbjHwCW6AmWLQM6g/v0Sn8XbP9NvmSZ2San1FpQeyPtufzOMSIx7Y4dzjlHoifhp+7NkZhw==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-collapsible@1.1.0': - resolution: {integrity: sha512-zQY7Epa8sTL0mq4ajSJpjgn2YmCgyrG7RsQgLp3C0LQVkG7+Tf6Pv1CeNWZLyqMjhdPkBa5Lx7wYBeSu7uCSTA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-collection@1.1.0': - resolution: {integrity: sha512-GZsZslMJEyo1VKm5L1ZJY8tGDxZNPAoUeQUIbKeJfoi7Q4kmig5AsgLMYYuyYbfjd8fBmFORAIwYAkXMnXZgZw==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-compose-refs@1.1.0': - resolution: {integrity: sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-context@1.1.0': - resolution: {integrity: sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-direction@1.1.0': - resolution: {integrity: sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-dismissable-layer@1.1.0': - resolution: {integrity: sha512-/UovfmmXGptwGcBQawLzvn2jOfM0t4z3/uKffoBlj724+n3FvBbZ7M0aaBOmkp6pqFYpO4yx8tSVJjx3Fl2jig==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-dropdown-menu@2.1.1': - resolution: {integrity: sha512-y8E+x9fBq9qvteD2Zwa4397pUVhYsh9iq44b5RD5qu1GMJWBCBuVg1hMyItbc6+zH00TxGRqd9Iot4wzf3OoBQ==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-focus-guards@1.1.0': - resolution: {integrity: sha512-w6XZNUPVv6xCpZUqb/yN9DL6auvpGX3C/ee6Hdi16v2UUy25HV2Q5bcflsiDyT/g5RwbPQ/GIT1vLkeRb+ITBw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-focus-scope@1.1.0': - resolution: {integrity: sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-id@1.1.0': - resolution: {integrity: sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-menu@2.1.1': - resolution: {integrity: sha512-oa3mXRRVjHi6DZu/ghuzdylyjaMXLymx83irM7hTxutQbD+7IhPKdMdRHD26Rm+kHRrWcrUkkRPv5pd47a2xFQ==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-popper@1.2.0': - resolution: {integrity: sha512-ZnRMshKF43aBxVWPWvbj21+7TQCvhuULWJ4gNIKYpRlQt5xGRhLx66tMp8pya2UkGHTSlhpXwmjqltDYHhw7Vg==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-portal@1.1.1': - resolution: {integrity: sha512-A3UtLk85UtqhzFqtoC8Q0KvR2GbXF3mtPgACSazajqq6A41mEQgo53iPzY4i6BwDxlIFqWIhiQ2G729n+2aw/g==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-presence@1.1.0': - resolution: {integrity: sha512-Gq6wuRN/asf9H/E/VzdKoUtT8GC9PQc9z40/vEr0VCJ4u5XvvhWIrSsCB6vD2/cH7ugTdSfYq9fLJCcM00acrQ==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-primitive@2.0.0': - resolution: {integrity: sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-roving-focus@1.1.0': - resolution: {integrity: sha512-EA6AMGeq9AEeQDeSH0aZgG198qkfHSbvWTf1HvoDmOB5bBG/qTxjYMWUKMnYiV6J/iP/J8MEFSuB2zRU2n7ODA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-slot@1.1.0': - resolution: {integrity: sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-toast@1.2.1': - resolution: {integrity: sha512-5trl7piMXcZiCq7MW6r8YYmu0bK5qDpTWz+FdEPdKyft2UixkspheYbjbrLXVN5NGKHFbOP7lm8eD0biiSqZqg==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-use-callback-ref@1.1.0': - resolution: {integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-controllable-state@1.1.0': - resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-escape-keydown@1.1.0': - resolution: {integrity: sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-layout-effect@1.1.0': - resolution: {integrity: sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-rect@1.1.0': - resolution: {integrity: sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-size@1.1.0': - resolution: {integrity: sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-visually-hidden@1.1.0': - resolution: {integrity: sha512-N8MDZqtgCgG5S3aV60INAB475osJousYpZ4cTJ2cFbMpdHS5Y6loLTH8LPtkj2QN0x93J30HT/M3qJXM0+lyeQ==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/rect@1.1.0': - resolution: {integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==} - - '@swc/counter@0.1.3': - resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - - '@swc/helpers@0.5.5': - resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==} - - '@types/debug@4.1.12': - resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} - - '@types/estree-jsx@1.0.5': - resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} - - '@types/estree@1.0.5': - resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} - - '@types/hast@2.3.10': - resolution: {integrity: sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==} - - '@types/hast@3.0.4': - resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} - - '@types/mdast@4.0.4': - resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} - - '@types/ms@0.7.34': - resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} - - '@types/node@20.14.14': - resolution: {integrity: sha512-d64f00982fS9YoOgJkAMolK7MN8Iq3TDdVjchbYHdEmjth/DHowx82GnoA+tVUAN+7vxfYUgAzi+JXbKNd2SDQ==} - - '@types/prismjs@1.26.4': - resolution: {integrity: sha512-rlAnzkW2sZOjbqZ743IHUhFcvzaGbqijwOu8QZnZCjfQzBqFE3s4lOTJEsxikImav9uzz/42I+O7YUs1mWgMlg==} - - '@types/prop-types@15.7.12': - resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==} - - '@types/react-dom@18.3.0': - resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==} - - '@types/react-google-recaptcha@2.1.9': - resolution: {integrity: sha512-nT31LrBDuoSZJN4QuwtQSF3O89FVHC4jLhM+NtKEmVF5R1e8OY0Jo4//x2Yapn2aNHguwgX5doAq8Zo+Ehd0ug==} - - '@types/react@18.3.3': - resolution: {integrity: sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==} - - '@types/unist@2.0.10': - resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==} - - '@types/unist@3.0.2': - resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==} - - '@uiw/copy-to-clipboard@1.0.17': - resolution: {integrity: sha512-O2GUHV90Iw2VrSLVLK0OmNIMdZ5fgEg4NhvtwINsX+eZ/Wf6DWD0TdsK9xwV7dNRnK/UI2mQtl0a2/kRgm1m1A==} - - '@uiw/react-markdown-preview@5.1.2': - resolution: {integrity: sha512-IheBzajVKZ3NUhYAfrnnereJmKVNQ6vRZDjQhKEQy7IMarJXrUKC1eG8OzTgy1J/3m67MBTs6d52kkSB699efA==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - - '@ungap/structured-clone@1.2.0': - resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - ansi-regex@6.0.1: - resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} - engines: {node: '>=12'} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} - - any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - - arg@5.0.2: - resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} - - aria-hidden@1.2.4: - resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==} - engines: {node: '>=10'} - - autoprefixer@10.4.20: - resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true - peerDependencies: - postcss: ^8.1.0 - - bail@2.0.2: - resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} - - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - bcp-47-match@2.0.3: - resolution: {integrity: sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==} - - binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - - boolbase@1.0.0: - resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - - brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - - braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} - - browserslist@4.23.3: - resolution: {integrity: sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - - busboy@1.6.0: - resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} - engines: {node: '>=10.16.0'} - - camelcase-css@2.0.1: - resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} - engines: {node: '>= 6'} - - caniuse-lite@1.0.30001651: - resolution: {integrity: sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==} - - ccount@2.0.1: - resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - - character-entities-html4@2.1.0: - resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} - - character-entities-legacy@3.0.0: - resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} - - character-entities@2.0.2: - resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} - - character-reference-invalid@2.0.1: - resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} - - chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} - - class-variance-authority@0.7.0: - resolution: {integrity: sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==} - - client-only@0.0.1: - resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} - - clsx@2.0.0: - resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} - engines: {node: '>=6'} - - clsx@2.1.1: - resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} - engines: {node: '>=6'} - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - comma-separated-tokens@2.0.3: - resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} - - commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} - - cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} - - css-selector-parser@3.0.5: - resolution: {integrity: sha512-3itoDFbKUNx1eKmVpYMFyqKX04Ww9osZ+dLgrk6GEv6KMVeXUhUnp4I5X+evw+u3ZxVU6RFXSSRxlTeMh8bA+g==} - - cssesc@3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} - hasBin: true - - csstype@3.1.3: - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - - debug@4.3.6: - resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - decode-named-character-reference@1.0.2: - resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} - - dequal@2.0.3: - resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} - engines: {node: '>=6'} - - detect-node-es@1.1.0: - resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} - - devlop@1.1.0: - resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} - - didyoumean@1.2.2: - resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} - - direction@2.0.1: - resolution: {integrity: sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA==} - hasBin: true - - dlv@1.1.3: - resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} - - eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - - electron-to-chromium@1.5.5: - resolution: {integrity: sha512-QR7/A7ZkMS8tZuoftC/jfqNkZLQO779SSW3YuZHP4eXpj3EffGLFcB/Xu9AAZQzLccTiCV+EmUo3ha4mQ9wnlA==} - - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - - entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} - - escalade@3.1.2: - resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} - engines: {node: '>=6'} - - escape-string-regexp@5.0.0: - resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} - engines: {node: '>=12'} - - estree-util-is-identifier-name@3.0.0: - resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} - - extend@3.0.2: - resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - - fast-glob@3.3.2: - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} - engines: {node: '>=8.6.0'} - - fastq@1.17.1: - resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} - - fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} - - foreground-child@3.3.0: - resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} - engines: {node: '>=14'} - - fraction.js@4.3.7: - resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} - - framer-motion@11.3.24: - resolution: {integrity: sha512-kl0YI7HwAtyV0VOAWuU/rXoOS8+z5qSkMN6rZS+a9oe6fIha6SC3vjJN6u/hBpvjrg5MQNdSnqnjYxm0WYTX9g==} - peerDependencies: - '@emotion/is-prop-valid': '*' - react: ^18.0.0 - react-dom: ^18.0.0 - peerDependenciesMeta: - '@emotion/is-prop-valid': - optional: true - react: - optional: true - react-dom: - optional: true - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - - get-nonce@1.0.1: - resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} - engines: {node: '>=6'} - - github-slugger@2.0.0: - resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} - - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - - glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - - glob@10.4.5: - resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} - hasBin: true - - graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - - hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} - - hast-util-from-html@2.0.1: - resolution: {integrity: sha512-RXQBLMl9kjKVNkJTIO6bZyb2n+cUH8LFaSSzo82jiLT6Tfc+Pt7VQCS+/h3YwG4jaNE2TA2sdJisGWR+aJrp0g==} - - hast-util-from-parse5@8.0.1: - resolution: {integrity: sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==} - - hast-util-has-property@3.0.0: - resolution: {integrity: sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==} - - hast-util-heading-rank@3.0.0: - resolution: {integrity: sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==} - - hast-util-is-element@3.0.0: - resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} - - hast-util-parse-selector@3.1.1: - resolution: {integrity: sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==} - - hast-util-parse-selector@4.0.0: - resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} - - hast-util-raw@9.0.4: - resolution: {integrity: sha512-LHE65TD2YiNsHD3YuXcKPHXPLuYh/gjp12mOfU8jxSrm1f/yJpsb0F/KKljS6U9LJoP0Ux+tCe8iJ2AsPzTdgA==} - - hast-util-select@6.0.2: - resolution: {integrity: sha512-hT/SD/d/Meu+iobvgkffo1QecV8WeKWxwsNMzcTJsKw1cKTQKSR/7ArJeURLNJF9HDjp9nVoORyNNJxrvBye8Q==} - - hast-util-to-jsx-runtime@2.3.0: - resolution: {integrity: sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==} - - hast-util-to-parse5@8.0.0: - resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==} - - hast-util-to-string@3.0.0: - resolution: {integrity: sha512-OGkAxX1Ua3cbcW6EJ5pT/tslVb90uViVkcJ4ZZIMW/R33DX/AkcJcRrPebPwJkHYwlDHXz4aIwvAAaAdtrACFA==} - - hast-util-whitespace@3.0.0: - resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} - - hastscript@7.2.0: - resolution: {integrity: sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==} - - hastscript@8.0.0: - resolution: {integrity: sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==} - - hoist-non-react-statics@3.3.2: - resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} - - html-url-attributes@3.0.0: - resolution: {integrity: sha512-/sXbVCWayk6GDVg3ctOX6nxaVj7So40FcFAnWlWGNAB1LpYKcV5Cd10APjPjW80O7zYW2MsjBV4zZ7IZO5fVow==} - - html-void-elements@3.0.0: - resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} - - inline-style-parser@0.2.3: - resolution: {integrity: sha512-qlD8YNDqyTKTyuITrDOffsl6Tdhv+UC4hcdAVuQsK4IMQ99nSgd1MIA/Q+jQYoh9r3hVUXhYh7urSRmXPkW04g==} - - invariant@2.2.4: - resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} - - is-alphabetical@2.0.1: - resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} - - is-alphanumerical@2.0.1: - resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} - - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - - is-core-module@2.15.0: - resolution: {integrity: sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==} - engines: {node: '>= 0.4'} - - is-decimal@2.0.1: - resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} - - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - - is-hexadecimal@2.0.1: - resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} - - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - is-plain-obj@4.1.0: - resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} - engines: {node: '>=12'} - - is-plain-object@5.0.0: - resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} - engines: {node: '>=0.10.0'} - - isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - jackspeak@3.4.3: - resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - - jiti@1.21.6: - resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} - hasBin: true - - js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - - lilconfig@2.1.0: - resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} - engines: {node: '>=10'} - - lilconfig@3.1.2: - resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} - engines: {node: '>=14'} - - lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - - longest-streak@3.1.0: - resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} - - loose-envify@1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true - - lru-cache@10.4.3: - resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - - lucide-react@0.426.0: - resolution: {integrity: sha512-aby5G+Zt+LIIEU0n9900XQNJFJUcs7/S+jOEgIhkV08NX3kGx1zxALKh1JvAKcYqutWLg07exbnYvh66szhrRA==} - peerDependencies: - react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc - - markdown-table@3.0.3: - resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} - - mdast-util-find-and-replace@3.0.1: - resolution: {integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==} - - mdast-util-from-markdown@2.0.1: - resolution: {integrity: sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==} - - mdast-util-gfm-autolink-literal@2.0.0: - resolution: {integrity: sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg==} - - mdast-util-gfm-footnote@2.0.0: - resolution: {integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==} - - mdast-util-gfm-strikethrough@2.0.0: - resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} - - mdast-util-gfm-table@2.0.0: - resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} - - mdast-util-gfm-task-list-item@2.0.0: - resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} - - mdast-util-gfm@3.0.0: - resolution: {integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==} - - mdast-util-mdx-expression@2.0.0: - resolution: {integrity: sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==} - - mdast-util-mdx-jsx@3.1.2: - resolution: {integrity: sha512-eKMQDeywY2wlHc97k5eD8VC+9ASMjN8ItEZQNGwJ6E0XWKiW/Z0V5/H8pvoXUf+y+Mj0VIgeRRbujBmFn4FTyA==} - - mdast-util-mdxjs-esm@2.0.1: - resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} - - mdast-util-phrasing@4.1.0: - resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} - - mdast-util-to-hast@13.2.0: - resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} - - mdast-util-to-markdown@2.1.0: - resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} - - mdast-util-to-string@4.0.0: - resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} - - merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - - micromark-core-commonmark@2.0.1: - resolution: {integrity: sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==} - - micromark-extension-gfm-autolink-literal@2.1.0: - resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} - - micromark-extension-gfm-footnote@2.1.0: - resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} - - micromark-extension-gfm-strikethrough@2.1.0: - resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} - - micromark-extension-gfm-table@2.1.0: - resolution: {integrity: sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g==} - - micromark-extension-gfm-tagfilter@2.0.0: - resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} - - micromark-extension-gfm-task-list-item@2.1.0: - resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} - - micromark-extension-gfm@3.0.0: - resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} - - micromark-factory-destination@2.0.0: - resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==} - - micromark-factory-label@2.0.0: - resolution: {integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==} - - micromark-factory-space@2.0.0: - resolution: {integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==} - - micromark-factory-title@2.0.0: - resolution: {integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==} - - micromark-factory-whitespace@2.0.0: - resolution: {integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==} - - micromark-util-character@2.1.0: - resolution: {integrity: sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==} - - micromark-util-chunked@2.0.0: - resolution: {integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==} - - micromark-util-classify-character@2.0.0: - resolution: {integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==} - - micromark-util-combine-extensions@2.0.0: - resolution: {integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==} - - micromark-util-decode-numeric-character-reference@2.0.1: - resolution: {integrity: sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==} - - micromark-util-decode-string@2.0.0: - resolution: {integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==} - - micromark-util-encode@2.0.0: - resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==} - - micromark-util-html-tag-name@2.0.0: - resolution: {integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==} - - micromark-util-normalize-identifier@2.0.0: - resolution: {integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==} - - micromark-util-resolve-all@2.0.0: - resolution: {integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==} - - micromark-util-sanitize-uri@2.0.0: - resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==} - - micromark-util-subtokenize@2.0.1: - resolution: {integrity: sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==} - - micromark-util-symbol@2.0.0: - resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==} - - micromark-util-types@2.0.0: - resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==} - - micromark@4.0.0: - resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==} - - micromatch@4.0.7: - resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} - engines: {node: '>=8.6'} - - minimatch@9.0.5: - resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} - engines: {node: '>=16 || 14 >=14.17'} - - minipass@7.1.2: - resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} - engines: {node: '>=16 || 14 >=14.17'} - - ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - - mz@2.7.0: - resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - - nanoid@3.3.7: - resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - - next-themes@0.3.0: - resolution: {integrity: sha512-/QHIrsYpd6Kfk7xakK4svpDI5mmXP0gfvCoJdGpZQ2TOrQZmsW0QxjaiLn8wbIKjtm4BTSqLoix4lxYYOnLJ/w==} - peerDependencies: - react: ^16.8 || ^17 || ^18 - react-dom: ^16.8 || ^17 || ^18 - - next@14.2.5: - resolution: {integrity: sha512-0f8aRfBVL+mpzfBjYfQuLWh2WyAwtJXCRfkPF4UJ5qd2YwrHczsrSzXU4tRMV0OAxR8ZJZWPFn6uhSC56UTsLA==} - engines: {node: '>=18.17.0'} - hasBin: true - peerDependencies: - '@opentelemetry/api': ^1.1.0 - '@playwright/test': ^1.41.2 - react: ^18.2.0 - react-dom: ^18.2.0 - sass: ^1.3.0 - peerDependenciesMeta: - '@opentelemetry/api': - optional: true - '@playwright/test': - optional: true - sass: - optional: true - - node-releases@2.0.18: - resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} - - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - - normalize-range@0.1.2: - resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} - engines: {node: '>=0.10.0'} - - not@0.1.0: - resolution: {integrity: sha512-5PDmaAsVfnWUgTUbJ3ERwn7u79Z0dYxN9ErxCpVJJqe2RK0PJ3z+iFUxuqjwtlDDegXvtWoxD/3Fzxox7tFGWA==} - - nth-check@2.1.1: - resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - - object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - - object-hash@3.0.0: - resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} - engines: {node: '>= 6'} - - package-json-from-dist@1.0.0: - resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} - - parse-entities@4.0.1: - resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==} - - parse-numeric-range@1.3.0: - resolution: {integrity: sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==} - - parse5@7.1.2: - resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} - - path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - - path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - - path-scurry@1.11.1: - resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} - engines: {node: '>=16 || 14 >=14.18'} - - picocolors@1.0.1: - resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} - - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - pify@2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} - engines: {node: '>=0.10.0'} - - pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} - engines: {node: '>= 6'} - - postcss-import@15.1.0: - resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} - engines: {node: '>=14.0.0'} - peerDependencies: - postcss: ^8.0.0 - - postcss-js@4.0.1: - resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} - engines: {node: ^12 || ^14 || >= 16} - peerDependencies: - postcss: ^8.4.21 - - postcss-load-config@4.0.2: - resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} - engines: {node: '>= 14'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - - postcss-nested@6.2.0: - resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.2.14 - - postcss-selector-parser@6.1.1: - resolution: {integrity: sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==} - engines: {node: '>=4'} - - postcss-value-parser@4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - - postcss@8.4.31: - resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} - engines: {node: ^10 || ^12 || >=14} - - postcss@8.4.41: - resolution: {integrity: sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==} - engines: {node: ^10 || ^12 || >=14} - - prop-types@15.8.1: - resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} - - property-information@6.5.0: - resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} - - queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - - react-async-script@1.2.0: - resolution: {integrity: sha512-bCpkbm9JiAuMGhkqoAiC0lLkb40DJ0HOEJIku+9JDjxX3Rcs+ztEOG13wbrOskt3n2DTrjshhaQ/iay+SnGg5Q==} - peerDependencies: - react: '>=16.4.1' - - react-dom@18.3.1: - resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} - peerDependencies: - react: ^18.3.1 - - react-element-to-jsx-string@15.0.0: - resolution: {integrity: sha512-UDg4lXB6BzlobN60P8fHWVPX3Kyw8ORrTeBtClmIlGdkOOE+GYQSFvmEU5iLLpwp/6v42DINwNcwOhOLfQ//FQ==} - peerDependencies: - react: ^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 || ^18.0.0 - react-dom: ^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 || ^18.0.0 - - react-google-recaptcha@3.1.0: - resolution: {integrity: sha512-cYW2/DWas8nEKZGD7SCu9BSuVz8iOcOLHChHyi7upUuVhkpkhYG/6N3KDiTQ3XAiZ2UAZkfvYKMfAHOzBOcGEg==} - peerDependencies: - react: '>=16.4.1' - - react-is@16.13.1: - resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - - react-is@18.1.0: - resolution: {integrity: sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==} - - react-markdown@9.0.1: - resolution: {integrity: sha512-186Gw/vF1uRkydbsOIkcGXw7aHq0sZOCRFFjGrr7b9+nVZg4UfA4enXCaxm4fUzecU38sWfrNDitGhshuU7rdg==} - peerDependencies: - '@types/react': '>=18' - react: '>=18' - - react-remove-scroll-bar@2.3.6: - resolution: {integrity: sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - react-remove-scroll@2.5.7: - resolution: {integrity: sha512-FnrTWO4L7/Bhhf3CYBNArEG/yROV0tKmTv7/3h9QCFvH6sndeFf1wPqOcbFVu5VAulS5dV1wGT3GZZ/1GawqiA==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - react-style-singleton@2.2.1: - resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - react@18.3.1: - resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} - engines: {node: '>=0.10.0'} - - read-cache@1.0.0: - resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} - - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - - refractor@4.8.1: - resolution: {integrity: sha512-/fk5sI0iTgFYlmVGYVew90AoYnNMP6pooClx/XKqyeeCQXrL0Kvgn8V0VEht5ccdljbzzF1i3Q213gcntkRExg==} - - regenerator-runtime@0.14.1: - resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - - rehype-attr@3.0.3: - resolution: {integrity: sha512-Up50Xfra8tyxnkJdCzLBIBtxOcB2M1xdeKe1324U06RAvSjYm7ULSeoM+b/nYPQPVd7jsXJ9+39IG1WAJPXONw==} - engines: {node: '>=16'} - - rehype-autolink-headings@7.1.0: - resolution: {integrity: sha512-rItO/pSdvnvsP4QRB1pmPiNHUskikqtPojZKJPPPAVx9Hj8i8TwMBhofrrAYRhYOOBZH9tgmG5lPqDLuIWPWmw==} - - rehype-ignore@2.0.2: - resolution: {integrity: sha512-BpAT/3lU9DMJ2siYVD/dSR0A/zQgD6Fb+fxkJd4j+wDVy6TYbYpK+FZqu8eM9EuNKGvi4BJR7XTZ/+zF02Dq8w==} - engines: {node: '>=16'} - - rehype-parse@9.0.0: - resolution: {integrity: sha512-WG7nfvmWWkCR++KEkZevZb/uw41E8TsH4DsY9UxsTbIXCVGbAs4S+r8FrQ+OtH5EEQAs+5UxKC42VinkmpA1Yw==} - - rehype-prism-plus@2.0.0: - resolution: {integrity: sha512-FeM/9V2N7EvDZVdR2dqhAzlw5YI49m9Tgn7ZrYJeYHIahM6gcXpH0K1y2gNnKanZCydOMluJvX2cB9z3lhY8XQ==} - - rehype-raw@7.0.0: - resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==} - - rehype-rewrite@4.0.2: - resolution: {integrity: sha512-rjLJ3z6fIV11phwCqHp/KRo8xuUCO8o9bFJCNw5o6O2wlLk6g8r323aRswdGBQwfXPFYeSuZdAjp4tzo6RGqEg==} - engines: {node: '>=16.0.0'} - - rehype-slug@6.0.0: - resolution: {integrity: sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A==} - - remark-gfm@4.0.0: - resolution: {integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==} - - remark-github-blockquote-alert@1.2.1: - resolution: {integrity: sha512-qNf2mSAoZgh3Cl23/9Y1L7S4Kbf9NsdHvYK398ab/52yEsDPDU5I4cuTcgDRrdIX7Ltc6RK+KCLRtWkbFnL6Dg==} - engines: {node: '>=16'} - - remark-parse@11.0.0: - resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} - - remark-rehype@11.1.0: - resolution: {integrity: sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g==} - - remark-stringify@11.0.0: - resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} - - resolve@1.22.8: - resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} - hasBin: true - - reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - - run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - - scheduler@0.23.2: - resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} - - shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - - shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - - signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} - - source-map-js@1.2.0: - resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} - engines: {node: '>=0.10.0'} - - space-separated-tokens@2.0.2: - resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} - - streamsearch@1.1.0: - resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} - engines: {node: '>=10.0.0'} - - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - - string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} - - stringify-entities@4.0.4: - resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} - - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - - strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} - - style-to-object@1.0.6: - resolution: {integrity: sha512-khxq+Qm3xEyZfKd/y9L3oIWQimxuc4STrQKtQn8aSDRHb8mFgpukgX1hdzfrMEW6JCjyJ8p89x+IUMVnCBI1PA==} - - styled-jsx@5.1.1: - resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} - engines: {node: '>= 12.0.0'} - peerDependencies: - '@babel/core': '*' - babel-plugin-macros: '*' - react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' - peerDependenciesMeta: - '@babel/core': - optional: true - babel-plugin-macros: - optional: true - - sucrase@3.35.0: - resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true - - supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - - tailwind-merge@2.4.0: - resolution: {integrity: sha512-49AwoOQNKdqKPd9CViyH5wJoSKsCDjUlzL8DxuGp3P1FsGY36NJDAa18jLZcaHAUUuTj+JB8IAo8zWgBNvBF7A==} - - tailwindcss-animate@1.0.7: - resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==} - peerDependencies: - tailwindcss: '>=3.0.0 || insiders' - - tailwindcss@3.4.9: - resolution: {integrity: sha512-1SEOvRr6sSdV5IDf9iC+NU4dhwdqzF4zKKq3sAbasUWHEM6lsMhX+eNN5gkPx1BvLFEnZQEUFbXnGj8Qlp83Pg==} - engines: {node: '>=14.0.0'} - hasBin: true - - thenify-all@1.6.0: - resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} - engines: {node: '>=0.8'} - - thenify@3.3.1: - resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} - - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - - trim-lines@3.0.1: - resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} - - trough@2.2.0: - resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} - - ts-interface-checker@0.1.13: - resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - - tslib@2.6.3: - resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} - - typescript@5.5.4: - resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==} - engines: {node: '>=14.17'} - hasBin: true - - undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - - unified@11.0.5: - resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} - - unist-util-filter@5.0.1: - resolution: {integrity: sha512-pHx7D4Zt6+TsfwylH9+lYhBhzyhEnCXs/lbq/Hstxno5z4gVdyc2WEW0asfjGKPyG4pEKrnBv5hdkO6+aRnQJw==} - - unist-util-is@6.0.0: - resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} - - unist-util-position@5.0.0: - resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} - - unist-util-remove-position@5.0.0: - resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==} - - unist-util-stringify-position@4.0.0: - resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} - - unist-util-visit-parents@6.0.1: - resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} - - unist-util-visit@5.0.0: - resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} - - update-browserslist-db@1.1.0: - resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - - use-callback-ref@1.3.2: - resolution: {integrity: sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - use-sidecar@1.1.2: - resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - - vfile-location@5.0.3: - resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==} - - vfile-message@4.0.2: - resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} - - vfile@6.0.2: - resolution: {integrity: sha512-zND7NlS8rJYb/sPqkb13ZvbbUoExdbi4w3SfRrMq6R3FvnLQmmfpajJNITuuYm6AZ5uao9vy4BAos3EXBPf2rg==} - - web-namespaces@2.0.1: - resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} - - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - - wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} - - yaml@2.5.0: - resolution: {integrity: sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==} - engines: {node: '>= 14'} - hasBin: true - - zwitch@2.0.4: - resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} - -snapshots: - - '@alloc/quick-lru@5.2.0': {} - - '@babel/runtime@7.25.0': - dependencies: - regenerator-runtime: 0.14.1 - - '@base2/pretty-print-object@1.0.1': {} - - '@floating-ui/core@1.6.7': - dependencies: - '@floating-ui/utils': 0.2.7 - - '@floating-ui/dom@1.6.10': - dependencies: - '@floating-ui/core': 1.6.7 - '@floating-ui/utils': 0.2.7 - - '@floating-ui/react-dom@2.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@floating-ui/dom': 1.6.10 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - - '@floating-ui/utils@0.2.7': {} - - '@isaacs/cliui@8.0.2': - dependencies: - string-width: 5.1.2 - string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.0 - strip-ansi-cjs: strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: wrap-ansi@7.0.0 - - '@jridgewell/gen-mapping@0.3.5': - dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.5.0 - '@jridgewell/trace-mapping': 0.3.25 - - '@jridgewell/resolve-uri@3.1.2': {} - - '@jridgewell/set-array@1.2.1': {} - - '@jridgewell/sourcemap-codec@1.5.0': {} - - '@jridgewell/trace-mapping@0.3.25': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 - - '@next/env@14.2.5': {} - - '@next/swc-darwin-arm64@14.2.5': - optional: true - - '@next/swc-darwin-x64@14.2.5': - optional: true - - '@next/swc-linux-arm64-gnu@14.2.5': - optional: true - - '@next/swc-linux-arm64-musl@14.2.5': - optional: true - - '@next/swc-linux-x64-gnu@14.2.5': - optional: true - - '@next/swc-linux-x64-musl@14.2.5': - optional: true - - '@next/swc-win32-arm64-msvc@14.2.5': - optional: true - - '@next/swc-win32-ia32-msvc@14.2.5': - optional: true - - '@next/swc-win32-x64-msvc@14.2.5': - optional: true - - '@nodelib/fs.scandir@2.1.5': - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - - '@nodelib/fs.stat@2.0.5': {} - - '@nodelib/fs.walk@1.2.8': - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.17.1 - - '@pkgjs/parseargs@0.11.0': - optional: true - - '@radix-ui/primitive@1.1.0': {} - - '@radix-ui/react-arrow@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-collapsible@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-id': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-presence': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-collection@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.1.0(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-compose-refs@1.1.0(@types/react@18.3.3)(react@18.3.1)': - dependencies: - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-context@1.1.0(@types/react@18.3.3)(react@18.3.1)': - dependencies: - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-direction@1.1.0(@types/react@18.3.3)(react@18.3.1)': - dependencies: - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-dismissable-layer@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-dropdown-menu@2.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-id': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-menu': 2.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-focus-guards@1.1.0(@types/react@18.3.3)(react@18.3.1)': - dependencies: - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-focus-scope@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-id@1.1.0(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-menu@2.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-direction': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-focus-guards': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-focus-scope': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-id': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-portal': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-presence': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-roving-focus': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) - aria-hidden: 1.2.4 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-remove-scroll: 2.5.7(@types/react@18.3.3)(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-popper@1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@floating-ui/react-dom': 2.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-arrow': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-rect': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/rect': 1.1.0 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-portal@1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-presence@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-primitive@2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/react-slot': 1.1.0(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-roving-focus@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-direction': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-id': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-slot@1.1.0(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-toast@1.2.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-portal': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-presence': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-visually-hidden': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-use-callback-ref@1.1.0(@types/react@18.3.3)(react@18.3.1)': - dependencies: - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-use-controllable-state@1.1.0(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-use-escape-keydown@1.1.0(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-use-layout-effect@1.1.0(@types/react@18.3.3)(react@18.3.1)': - dependencies: - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-use-rect@1.1.0(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@radix-ui/rect': 1.1.0 - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-use-size@1.1.0(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-visually-hidden@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/rect@1.1.0': {} - - '@swc/counter@0.1.3': {} - - '@swc/helpers@0.5.5': - dependencies: - '@swc/counter': 0.1.3 - tslib: 2.6.3 - - '@types/debug@4.1.12': - dependencies: - '@types/ms': 0.7.34 - - '@types/estree-jsx@1.0.5': - dependencies: - '@types/estree': 1.0.5 - - '@types/estree@1.0.5': {} - - '@types/hast@2.3.10': - dependencies: - '@types/unist': 2.0.10 - - '@types/hast@3.0.4': - dependencies: - '@types/unist': 3.0.2 - - '@types/mdast@4.0.4': - dependencies: - '@types/unist': 3.0.2 - - '@types/ms@0.7.34': {} - - '@types/node@20.14.14': - dependencies: - undici-types: 5.26.5 - - '@types/prismjs@1.26.4': {} - - '@types/prop-types@15.7.12': {} - - '@types/react-dom@18.3.0': - dependencies: - '@types/react': 18.3.3 - - '@types/react-google-recaptcha@2.1.9': - dependencies: - '@types/react': 18.3.3 - - '@types/react@18.3.3': - dependencies: - '@types/prop-types': 15.7.12 - csstype: 3.1.3 - - '@types/unist@2.0.10': {} - - '@types/unist@3.0.2': {} - - '@uiw/copy-to-clipboard@1.0.17': {} - - '@uiw/react-markdown-preview@5.1.2(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.25.0 - '@uiw/copy-to-clipboard': 1.0.17 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-markdown: 9.0.1(@types/react@18.3.3)(react@18.3.1) - rehype-attr: 3.0.3 - rehype-autolink-headings: 7.1.0 - rehype-ignore: 2.0.2 - rehype-prism-plus: 2.0.0 - rehype-raw: 7.0.0 - rehype-rewrite: 4.0.2 - rehype-slug: 6.0.0 - remark-gfm: 4.0.0 - remark-github-blockquote-alert: 1.2.1 - unist-util-visit: 5.0.0 - transitivePeerDependencies: - - '@types/react' - - supports-color - - '@ungap/structured-clone@1.2.0': {} - - ansi-regex@5.0.1: {} - - ansi-regex@6.0.1: {} - - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 - - ansi-styles@6.2.1: {} - - any-promise@1.3.0: {} - - anymatch@3.1.3: - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - - arg@5.0.2: {} - - aria-hidden@1.2.4: - dependencies: - tslib: 2.6.3 - - autoprefixer@10.4.20(postcss@8.4.41): - dependencies: - browserslist: 4.23.3 - caniuse-lite: 1.0.30001651 - fraction.js: 4.3.7 - normalize-range: 0.1.2 - picocolors: 1.0.1 - postcss: 8.4.41 - postcss-value-parser: 4.2.0 - - bail@2.0.2: {} - - balanced-match@1.0.2: {} - - bcp-47-match@2.0.3: {} - - binary-extensions@2.3.0: {} - - boolbase@1.0.0: {} - - brace-expansion@2.0.1: - dependencies: - balanced-match: 1.0.2 - - braces@3.0.3: - dependencies: - fill-range: 7.1.1 - - browserslist@4.23.3: - dependencies: - caniuse-lite: 1.0.30001651 - electron-to-chromium: 1.5.5 - node-releases: 2.0.18 - update-browserslist-db: 1.1.0(browserslist@4.23.3) - - busboy@1.6.0: - dependencies: - streamsearch: 1.1.0 - - camelcase-css@2.0.1: {} - - caniuse-lite@1.0.30001651: {} - - ccount@2.0.1: {} - - character-entities-html4@2.1.0: {} - - character-entities-legacy@3.0.0: {} - - character-entities@2.0.2: {} - - character-reference-invalid@2.0.1: {} - - chokidar@3.6.0: - dependencies: - anymatch: 3.1.3 - braces: 3.0.3 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - - class-variance-authority@0.7.0: - dependencies: - clsx: 2.0.0 - - client-only@0.0.1: {} - - clsx@2.0.0: {} - - clsx@2.1.1: {} - - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - - color-name@1.1.4: {} - - comma-separated-tokens@2.0.3: {} - - commander@4.1.1: {} - - cross-spawn@7.0.3: - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - - css-selector-parser@3.0.5: {} - - cssesc@3.0.0: {} - - csstype@3.1.3: {} - - debug@4.3.6: - dependencies: - ms: 2.1.2 - - decode-named-character-reference@1.0.2: - dependencies: - character-entities: 2.0.2 - - dequal@2.0.3: {} - - detect-node-es@1.1.0: {} - - devlop@1.1.0: - dependencies: - dequal: 2.0.3 - - didyoumean@1.2.2: {} - - direction@2.0.1: {} - - dlv@1.1.3: {} - - eastasianwidth@0.2.0: {} - - electron-to-chromium@1.5.5: {} - - emoji-regex@8.0.0: {} - - emoji-regex@9.2.2: {} - - entities@4.5.0: {} - - escalade@3.1.2: {} - - escape-string-regexp@5.0.0: {} - - estree-util-is-identifier-name@3.0.0: {} - - extend@3.0.2: {} - - fast-glob@3.3.2: - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.7 - - fastq@1.17.1: - dependencies: - reusify: 1.0.4 - - fill-range@7.1.1: - dependencies: - to-regex-range: 5.0.1 - - foreground-child@3.3.0: - dependencies: - cross-spawn: 7.0.3 - signal-exit: 4.1.0 - - fraction.js@4.3.7: {} - - framer-motion@11.3.24(react-dom@18.3.1(react@18.3.1))(react@18.3.1): - dependencies: - tslib: 2.6.3 - optionalDependencies: - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - - fsevents@2.3.3: - optional: true - - function-bind@1.1.2: {} - - get-nonce@1.0.1: {} - - github-slugger@2.0.0: {} - - glob-parent@5.1.2: - dependencies: - is-glob: 4.0.3 - - glob-parent@6.0.2: - dependencies: - is-glob: 4.0.3 - - glob@10.4.5: - dependencies: - foreground-child: 3.3.0 - jackspeak: 3.4.3 - minimatch: 9.0.5 - minipass: 7.1.2 - package-json-from-dist: 1.0.0 - path-scurry: 1.11.1 - - graceful-fs@4.2.11: {} - - hasown@2.0.2: - dependencies: - function-bind: 1.1.2 - - hast-util-from-html@2.0.1: - dependencies: - '@types/hast': 3.0.4 - devlop: 1.1.0 - hast-util-from-parse5: 8.0.1 - parse5: 7.1.2 - vfile: 6.0.2 - vfile-message: 4.0.2 - - hast-util-from-parse5@8.0.1: - dependencies: - '@types/hast': 3.0.4 - '@types/unist': 3.0.2 - devlop: 1.1.0 - hastscript: 8.0.0 - property-information: 6.5.0 - vfile: 6.0.2 - vfile-location: 5.0.3 - web-namespaces: 2.0.1 - - hast-util-has-property@3.0.0: - dependencies: - '@types/hast': 3.0.4 - - hast-util-heading-rank@3.0.0: - dependencies: - '@types/hast': 3.0.4 - - hast-util-is-element@3.0.0: - dependencies: - '@types/hast': 3.0.4 - - hast-util-parse-selector@3.1.1: - dependencies: - '@types/hast': 2.3.10 - - hast-util-parse-selector@4.0.0: - dependencies: - '@types/hast': 3.0.4 - - hast-util-raw@9.0.4: - dependencies: - '@types/hast': 3.0.4 - '@types/unist': 3.0.2 - '@ungap/structured-clone': 1.2.0 - hast-util-from-parse5: 8.0.1 - hast-util-to-parse5: 8.0.0 - html-void-elements: 3.0.0 - mdast-util-to-hast: 13.2.0 - parse5: 7.1.2 - unist-util-position: 5.0.0 - unist-util-visit: 5.0.0 - vfile: 6.0.2 - web-namespaces: 2.0.1 - zwitch: 2.0.4 - - hast-util-select@6.0.2: - dependencies: - '@types/hast': 3.0.4 - '@types/unist': 3.0.2 - bcp-47-match: 2.0.3 - comma-separated-tokens: 2.0.3 - css-selector-parser: 3.0.5 - devlop: 1.1.0 - direction: 2.0.1 - hast-util-has-property: 3.0.0 - hast-util-to-string: 3.0.0 - hast-util-whitespace: 3.0.0 - not: 0.1.0 - nth-check: 2.1.1 - property-information: 6.5.0 - space-separated-tokens: 2.0.2 - unist-util-visit: 5.0.0 - zwitch: 2.0.4 - - hast-util-to-jsx-runtime@2.3.0: - dependencies: - '@types/estree': 1.0.5 - '@types/hast': 3.0.4 - '@types/unist': 3.0.2 - comma-separated-tokens: 2.0.3 - devlop: 1.1.0 - estree-util-is-identifier-name: 3.0.0 - hast-util-whitespace: 3.0.0 - mdast-util-mdx-expression: 2.0.0 - mdast-util-mdx-jsx: 3.1.2 - mdast-util-mdxjs-esm: 2.0.1 - property-information: 6.5.0 - space-separated-tokens: 2.0.2 - style-to-object: 1.0.6 - unist-util-position: 5.0.0 - vfile-message: 4.0.2 - transitivePeerDependencies: - - supports-color - - hast-util-to-parse5@8.0.0: - dependencies: - '@types/hast': 3.0.4 - comma-separated-tokens: 2.0.3 - devlop: 1.1.0 - property-information: 6.5.0 - space-separated-tokens: 2.0.2 - web-namespaces: 2.0.1 - zwitch: 2.0.4 - - hast-util-to-string@3.0.0: - dependencies: - '@types/hast': 3.0.4 - - hast-util-whitespace@3.0.0: - dependencies: - '@types/hast': 3.0.4 - - hastscript@7.2.0: - dependencies: - '@types/hast': 2.3.10 - comma-separated-tokens: 2.0.3 - hast-util-parse-selector: 3.1.1 - property-information: 6.5.0 - space-separated-tokens: 2.0.2 - - hastscript@8.0.0: - dependencies: - '@types/hast': 3.0.4 - comma-separated-tokens: 2.0.3 - hast-util-parse-selector: 4.0.0 - property-information: 6.5.0 - space-separated-tokens: 2.0.2 - - hoist-non-react-statics@3.3.2: - dependencies: - react-is: 16.13.1 - - html-url-attributes@3.0.0: {} - - html-void-elements@3.0.0: {} - - inline-style-parser@0.2.3: {} - - invariant@2.2.4: - dependencies: - loose-envify: 1.4.0 - - is-alphabetical@2.0.1: {} - - is-alphanumerical@2.0.1: - dependencies: - is-alphabetical: 2.0.1 - is-decimal: 2.0.1 - - is-binary-path@2.1.0: - dependencies: - binary-extensions: 2.3.0 - - is-core-module@2.15.0: - dependencies: - hasown: 2.0.2 - - is-decimal@2.0.1: {} - - is-extglob@2.1.1: {} - - is-fullwidth-code-point@3.0.0: {} - - is-glob@4.0.3: - dependencies: - is-extglob: 2.1.1 - - is-hexadecimal@2.0.1: {} - - is-number@7.0.0: {} - - is-plain-obj@4.1.0: {} - - is-plain-object@5.0.0: {} - - isexe@2.0.0: {} - - jackspeak@3.4.3: - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - - jiti@1.21.6: {} - - js-tokens@4.0.0: {} - - lilconfig@2.1.0: {} - - lilconfig@3.1.2: {} - - lines-and-columns@1.2.4: {} - - longest-streak@3.1.0: {} - - loose-envify@1.4.0: - dependencies: - js-tokens: 4.0.0 - - lru-cache@10.4.3: {} - - lucide-react@0.426.0(react@18.3.1): - dependencies: - react: 18.3.1 - - markdown-table@3.0.3: {} - - mdast-util-find-and-replace@3.0.1: - dependencies: - '@types/mdast': 4.0.4 - escape-string-regexp: 5.0.0 - unist-util-is: 6.0.0 - unist-util-visit-parents: 6.0.1 - - mdast-util-from-markdown@2.0.1: - dependencies: - '@types/mdast': 4.0.4 - '@types/unist': 3.0.2 - decode-named-character-reference: 1.0.2 - devlop: 1.1.0 - mdast-util-to-string: 4.0.0 - micromark: 4.0.0 - micromark-util-decode-numeric-character-reference: 2.0.1 - micromark-util-decode-string: 2.0.0 - micromark-util-normalize-identifier: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - unist-util-stringify-position: 4.0.0 - transitivePeerDependencies: - - supports-color - - mdast-util-gfm-autolink-literal@2.0.0: - dependencies: - '@types/mdast': 4.0.4 - ccount: 2.0.1 - devlop: 1.1.0 - mdast-util-find-and-replace: 3.0.1 - micromark-util-character: 2.1.0 - - mdast-util-gfm-footnote@2.0.0: - dependencies: - '@types/mdast': 4.0.4 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.1 - mdast-util-to-markdown: 2.1.0 - micromark-util-normalize-identifier: 2.0.0 - transitivePeerDependencies: - - supports-color - - mdast-util-gfm-strikethrough@2.0.0: - dependencies: - '@types/mdast': 4.0.4 - mdast-util-from-markdown: 2.0.1 - mdast-util-to-markdown: 2.1.0 - transitivePeerDependencies: - - supports-color - - mdast-util-gfm-table@2.0.0: - dependencies: - '@types/mdast': 4.0.4 - devlop: 1.1.0 - markdown-table: 3.0.3 - mdast-util-from-markdown: 2.0.1 - mdast-util-to-markdown: 2.1.0 - transitivePeerDependencies: - - supports-color - - mdast-util-gfm-task-list-item@2.0.0: - dependencies: - '@types/mdast': 4.0.4 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.1 - mdast-util-to-markdown: 2.1.0 - transitivePeerDependencies: - - supports-color - - mdast-util-gfm@3.0.0: - dependencies: - mdast-util-from-markdown: 2.0.1 - mdast-util-gfm-autolink-literal: 2.0.0 - mdast-util-gfm-footnote: 2.0.0 - mdast-util-gfm-strikethrough: 2.0.0 - mdast-util-gfm-table: 2.0.0 - mdast-util-gfm-task-list-item: 2.0.0 - mdast-util-to-markdown: 2.1.0 - transitivePeerDependencies: - - supports-color - - mdast-util-mdx-expression@2.0.0: - dependencies: - '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.4 - '@types/mdast': 4.0.4 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.1 - mdast-util-to-markdown: 2.1.0 - transitivePeerDependencies: - - supports-color - - mdast-util-mdx-jsx@3.1.2: - dependencies: - '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.4 - '@types/mdast': 4.0.4 - '@types/unist': 3.0.2 - ccount: 2.0.1 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.1 - mdast-util-to-markdown: 2.1.0 - parse-entities: 4.0.1 - stringify-entities: 4.0.4 - unist-util-remove-position: 5.0.0 - unist-util-stringify-position: 4.0.0 - vfile-message: 4.0.2 - transitivePeerDependencies: - - supports-color - - mdast-util-mdxjs-esm@2.0.1: - dependencies: - '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.4 - '@types/mdast': 4.0.4 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.1 - mdast-util-to-markdown: 2.1.0 - transitivePeerDependencies: - - supports-color - - mdast-util-phrasing@4.1.0: - dependencies: - '@types/mdast': 4.0.4 - unist-util-is: 6.0.0 - - mdast-util-to-hast@13.2.0: - dependencies: - '@types/hast': 3.0.4 - '@types/mdast': 4.0.4 - '@ungap/structured-clone': 1.2.0 - devlop: 1.1.0 - micromark-util-sanitize-uri: 2.0.0 - trim-lines: 3.0.1 - unist-util-position: 5.0.0 - unist-util-visit: 5.0.0 - vfile: 6.0.2 - - mdast-util-to-markdown@2.1.0: - dependencies: - '@types/mdast': 4.0.4 - '@types/unist': 3.0.2 - longest-streak: 3.1.0 - mdast-util-phrasing: 4.1.0 - mdast-util-to-string: 4.0.0 - micromark-util-decode-string: 2.0.0 - unist-util-visit: 5.0.0 - zwitch: 2.0.4 - - mdast-util-to-string@4.0.0: - dependencies: - '@types/mdast': 4.0.4 - - merge2@1.4.1: {} - - micromark-core-commonmark@2.0.1: - dependencies: - decode-named-character-reference: 1.0.2 - devlop: 1.1.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.1.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.1 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-extension-gfm-autolink-literal@2.1.0: - dependencies: - micromark-util-character: 2.1.0 - micromark-util-sanitize-uri: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-extension-gfm-footnote@2.1.0: - dependencies: - devlop: 1.1.0 - micromark-core-commonmark: 2.0.1 - micromark-factory-space: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-normalize-identifier: 2.0.0 - micromark-util-sanitize-uri: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-extension-gfm-strikethrough@2.1.0: - dependencies: - devlop: 1.1.0 - micromark-util-chunked: 2.0.0 - micromark-util-classify-character: 2.0.0 - micromark-util-resolve-all: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-extension-gfm-table@2.1.0: - dependencies: - devlop: 1.1.0 - micromark-factory-space: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-extension-gfm-tagfilter@2.0.0: - dependencies: - micromark-util-types: 2.0.0 - - micromark-extension-gfm-task-list-item@2.1.0: - dependencies: - devlop: 1.1.0 - micromark-factory-space: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-extension-gfm@3.0.0: - dependencies: - micromark-extension-gfm-autolink-literal: 2.1.0 - micromark-extension-gfm-footnote: 2.1.0 - micromark-extension-gfm-strikethrough: 2.1.0 - micromark-extension-gfm-table: 2.1.0 - micromark-extension-gfm-tagfilter: 2.0.0 - micromark-extension-gfm-task-list-item: 2.1.0 - micromark-util-combine-extensions: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-factory-destination@2.0.0: - dependencies: - micromark-util-character: 2.1.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-factory-label@2.0.0: - dependencies: - devlop: 1.1.0 - micromark-util-character: 2.1.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-factory-space@2.0.0: - dependencies: - micromark-util-character: 2.1.0 - micromark-util-types: 2.0.0 - - micromark-factory-title@2.0.0: - dependencies: - micromark-factory-space: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-factory-whitespace@2.0.0: - dependencies: - micromark-factory-space: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-util-character@2.1.0: - dependencies: - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-util-chunked@2.0.0: - dependencies: - micromark-util-symbol: 2.0.0 - - micromark-util-classify-character@2.0.0: - dependencies: - micromark-util-character: 2.1.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-util-combine-extensions@2.0.0: - dependencies: - micromark-util-chunked: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-util-decode-numeric-character-reference@2.0.1: - dependencies: - micromark-util-symbol: 2.0.0 - - micromark-util-decode-string@2.0.0: - dependencies: - decode-named-character-reference: 1.0.2 - micromark-util-character: 2.1.0 - micromark-util-decode-numeric-character-reference: 2.0.1 - micromark-util-symbol: 2.0.0 - - micromark-util-encode@2.0.0: {} - - micromark-util-html-tag-name@2.0.0: {} - - micromark-util-normalize-identifier@2.0.0: - dependencies: - micromark-util-symbol: 2.0.0 - - micromark-util-resolve-all@2.0.0: - dependencies: - micromark-util-types: 2.0.0 - - micromark-util-sanitize-uri@2.0.0: - dependencies: - micromark-util-character: 2.1.0 - micromark-util-encode: 2.0.0 - micromark-util-symbol: 2.0.0 - - micromark-util-subtokenize@2.0.1: - dependencies: - devlop: 1.1.0 - micromark-util-chunked: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-util-symbol@2.0.0: {} - - micromark-util-types@2.0.0: {} - - micromark@4.0.0: - dependencies: - '@types/debug': 4.1.12 - debug: 4.3.6 - decode-named-character-reference: 1.0.2 - devlop: 1.1.0 - micromark-core-commonmark: 2.0.1 - micromark-factory-space: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-chunked: 2.0.0 - micromark-util-combine-extensions: 2.0.0 - micromark-util-decode-numeric-character-reference: 2.0.1 - 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.1 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - transitivePeerDependencies: - - supports-color - - micromatch@4.0.7: - dependencies: - braces: 3.0.3 - picomatch: 2.3.1 - - minimatch@9.0.5: - dependencies: - brace-expansion: 2.0.1 - - minipass@7.1.2: {} - - ms@2.1.2: {} - - mz@2.7.0: - dependencies: - any-promise: 1.3.0 - object-assign: 4.1.1 - thenify-all: 1.6.0 - - nanoid@3.3.7: {} - - next-themes@0.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): - dependencies: - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - - next@14.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1): - dependencies: - '@next/env': 14.2.5 - '@swc/helpers': 0.5.5 - busboy: 1.6.0 - caniuse-lite: 1.0.30001651 - graceful-fs: 4.2.11 - postcss: 8.4.31 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - styled-jsx: 5.1.1(react@18.3.1) - optionalDependencies: - '@next/swc-darwin-arm64': 14.2.5 - '@next/swc-darwin-x64': 14.2.5 - '@next/swc-linux-arm64-gnu': 14.2.5 - '@next/swc-linux-arm64-musl': 14.2.5 - '@next/swc-linux-x64-gnu': 14.2.5 - '@next/swc-linux-x64-musl': 14.2.5 - '@next/swc-win32-arm64-msvc': 14.2.5 - '@next/swc-win32-ia32-msvc': 14.2.5 - '@next/swc-win32-x64-msvc': 14.2.5 - transitivePeerDependencies: - - '@babel/core' - - babel-plugin-macros - - node-releases@2.0.18: {} - - normalize-path@3.0.0: {} - - normalize-range@0.1.2: {} - - not@0.1.0: {} - - nth-check@2.1.1: - dependencies: - boolbase: 1.0.0 - - object-assign@4.1.1: {} - - object-hash@3.0.0: {} - - package-json-from-dist@1.0.0: {} - - parse-entities@4.0.1: - dependencies: - '@types/unist': 2.0.10 - character-entities: 2.0.2 - character-entities-legacy: 3.0.0 - character-reference-invalid: 2.0.1 - decode-named-character-reference: 1.0.2 - is-alphanumerical: 2.0.1 - is-decimal: 2.0.1 - is-hexadecimal: 2.0.1 - - parse-numeric-range@1.3.0: {} - - parse5@7.1.2: - dependencies: - entities: 4.5.0 - - path-key@3.1.1: {} - - path-parse@1.0.7: {} - - path-scurry@1.11.1: - dependencies: - lru-cache: 10.4.3 - minipass: 7.1.2 - - picocolors@1.0.1: {} - - picomatch@2.3.1: {} - - pify@2.3.0: {} - - pirates@4.0.6: {} - - postcss-import@15.1.0(postcss@8.4.41): - dependencies: - postcss: 8.4.41 - postcss-value-parser: 4.2.0 - read-cache: 1.0.0 - resolve: 1.22.8 - - postcss-js@4.0.1(postcss@8.4.41): - dependencies: - camelcase-css: 2.0.1 - postcss: 8.4.41 - - postcss-load-config@4.0.2(postcss@8.4.41): - dependencies: - lilconfig: 3.1.2 - yaml: 2.5.0 - optionalDependencies: - postcss: 8.4.41 - - postcss-nested@6.2.0(postcss@8.4.41): - dependencies: - postcss: 8.4.41 - postcss-selector-parser: 6.1.1 - - postcss-selector-parser@6.1.1: - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - - postcss-value-parser@4.2.0: {} - - postcss@8.4.31: - dependencies: - nanoid: 3.3.7 - picocolors: 1.0.1 - source-map-js: 1.2.0 - - postcss@8.4.41: - dependencies: - nanoid: 3.3.7 - picocolors: 1.0.1 - source-map-js: 1.2.0 - - prop-types@15.8.1: - dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - react-is: 16.13.1 - - property-information@6.5.0: {} - - queue-microtask@1.2.3: {} - - react-async-script@1.2.0(react@18.3.1): - dependencies: - hoist-non-react-statics: 3.3.2 - prop-types: 15.8.1 - react: 18.3.1 - - react-dom@18.3.1(react@18.3.1): - dependencies: - loose-envify: 1.4.0 - react: 18.3.1 - scheduler: 0.23.2 - - react-element-to-jsx-string@15.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): - dependencies: - '@base2/pretty-print-object': 1.0.1 - is-plain-object: 5.0.0 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-is: 18.1.0 - - react-google-recaptcha@3.1.0(react@18.3.1): - dependencies: - prop-types: 15.8.1 - react: 18.3.1 - react-async-script: 1.2.0(react@18.3.1) - - react-is@16.13.1: {} - - react-is@18.1.0: {} - - react-markdown@9.0.1(@types/react@18.3.3)(react@18.3.1): - dependencies: - '@types/hast': 3.0.4 - '@types/react': 18.3.3 - devlop: 1.1.0 - hast-util-to-jsx-runtime: 2.3.0 - html-url-attributes: 3.0.0 - mdast-util-to-hast: 13.2.0 - react: 18.3.1 - remark-parse: 11.0.0 - remark-rehype: 11.1.0 - unified: 11.0.5 - unist-util-visit: 5.0.0 - vfile: 6.0.2 - transitivePeerDependencies: - - supports-color - - react-remove-scroll-bar@2.3.6(@types/react@18.3.3)(react@18.3.1): - dependencies: - react: 18.3.1 - react-style-singleton: 2.2.1(@types/react@18.3.3)(react@18.3.1) - tslib: 2.6.3 - optionalDependencies: - '@types/react': 18.3.3 - - react-remove-scroll@2.5.7(@types/react@18.3.3)(react@18.3.1): - dependencies: - react: 18.3.1 - react-remove-scroll-bar: 2.3.6(@types/react@18.3.3)(react@18.3.1) - react-style-singleton: 2.2.1(@types/react@18.3.3)(react@18.3.1) - tslib: 2.6.3 - use-callback-ref: 1.3.2(@types/react@18.3.3)(react@18.3.1) - use-sidecar: 1.1.2(@types/react@18.3.3)(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - - react-style-singleton@2.2.1(@types/react@18.3.3)(react@18.3.1): - dependencies: - get-nonce: 1.0.1 - invariant: 2.2.4 - react: 18.3.1 - tslib: 2.6.3 - optionalDependencies: - '@types/react': 18.3.3 - - react@18.3.1: - dependencies: - loose-envify: 1.4.0 - - read-cache@1.0.0: - dependencies: - pify: 2.3.0 - - readdirp@3.6.0: - dependencies: - picomatch: 2.3.1 - - refractor@4.8.1: - dependencies: - '@types/hast': 2.3.10 - '@types/prismjs': 1.26.4 - hastscript: 7.2.0 - parse-entities: 4.0.1 - - regenerator-runtime@0.14.1: {} - - rehype-attr@3.0.3: - dependencies: - unified: 11.0.5 - unist-util-visit: 5.0.0 - - rehype-autolink-headings@7.1.0: - dependencies: - '@types/hast': 3.0.4 - '@ungap/structured-clone': 1.2.0 - hast-util-heading-rank: 3.0.0 - hast-util-is-element: 3.0.0 - unified: 11.0.5 - unist-util-visit: 5.0.0 - - rehype-ignore@2.0.2: - dependencies: - hast-util-select: 6.0.2 - unified: 11.0.5 - unist-util-visit: 5.0.0 - - rehype-parse@9.0.0: - dependencies: - '@types/hast': 3.0.4 - hast-util-from-html: 2.0.1 - unified: 11.0.5 - - rehype-prism-plus@2.0.0: - dependencies: - hast-util-to-string: 3.0.0 - parse-numeric-range: 1.3.0 - refractor: 4.8.1 - rehype-parse: 9.0.0 - unist-util-filter: 5.0.1 - unist-util-visit: 5.0.0 - - rehype-raw@7.0.0: - dependencies: - '@types/hast': 3.0.4 - hast-util-raw: 9.0.4 - vfile: 6.0.2 - - rehype-rewrite@4.0.2: - dependencies: - hast-util-select: 6.0.2 - unified: 11.0.5 - unist-util-visit: 5.0.0 - - rehype-slug@6.0.0: - dependencies: - '@types/hast': 3.0.4 - github-slugger: 2.0.0 - hast-util-heading-rank: 3.0.0 - hast-util-to-string: 3.0.0 - unist-util-visit: 5.0.0 - - remark-gfm@4.0.0: - dependencies: - '@types/mdast': 4.0.4 - mdast-util-gfm: 3.0.0 - micromark-extension-gfm: 3.0.0 - remark-parse: 11.0.0 - remark-stringify: 11.0.0 - unified: 11.0.5 - transitivePeerDependencies: - - supports-color - - remark-github-blockquote-alert@1.2.1: - dependencies: - unist-util-visit: 5.0.0 - - remark-parse@11.0.0: - dependencies: - '@types/mdast': 4.0.4 - mdast-util-from-markdown: 2.0.1 - micromark-util-types: 2.0.0 - unified: 11.0.5 - transitivePeerDependencies: - - supports-color - - remark-rehype@11.1.0: - dependencies: - '@types/hast': 3.0.4 - '@types/mdast': 4.0.4 - mdast-util-to-hast: 13.2.0 - unified: 11.0.5 - vfile: 6.0.2 - - remark-stringify@11.0.0: - dependencies: - '@types/mdast': 4.0.4 - mdast-util-to-markdown: 2.1.0 - unified: 11.0.5 - - resolve@1.22.8: - dependencies: - is-core-module: 2.15.0 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - - reusify@1.0.4: {} - - run-parallel@1.2.0: - dependencies: - queue-microtask: 1.2.3 - - scheduler@0.23.2: - dependencies: - loose-envify: 1.4.0 - - shebang-command@2.0.0: - dependencies: - shebang-regex: 3.0.0 - - shebang-regex@3.0.0: {} - - signal-exit@4.1.0: {} - - source-map-js@1.2.0: {} - - space-separated-tokens@2.0.2: {} - - streamsearch@1.1.0: {} - - string-width@4.2.3: - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - - string-width@5.1.2: - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.1.0 - - stringify-entities@4.0.4: - dependencies: - character-entities-html4: 2.1.0 - character-entities-legacy: 3.0.0 - - strip-ansi@6.0.1: - dependencies: - ansi-regex: 5.0.1 - - strip-ansi@7.1.0: - dependencies: - ansi-regex: 6.0.1 - - style-to-object@1.0.6: - dependencies: - inline-style-parser: 0.2.3 - - styled-jsx@5.1.1(react@18.3.1): - dependencies: - client-only: 0.0.1 - react: 18.3.1 - - sucrase@3.35.0: - dependencies: - '@jridgewell/gen-mapping': 0.3.5 - commander: 4.1.1 - glob: 10.4.5 - lines-and-columns: 1.2.4 - mz: 2.7.0 - pirates: 4.0.6 - ts-interface-checker: 0.1.13 - - supports-preserve-symlinks-flag@1.0.0: {} - - tailwind-merge@2.4.0: {} - - tailwindcss-animate@1.0.7(tailwindcss@3.4.9): - dependencies: - tailwindcss: 3.4.9 - - tailwindcss@3.4.9: - dependencies: - '@alloc/quick-lru': 5.2.0 - arg: 5.0.2 - chokidar: 3.6.0 - didyoumean: 1.2.2 - dlv: 1.1.3 - fast-glob: 3.3.2 - glob-parent: 6.0.2 - is-glob: 4.0.3 - jiti: 1.21.6 - lilconfig: 2.1.0 - micromatch: 4.0.7 - normalize-path: 3.0.0 - object-hash: 3.0.0 - picocolors: 1.0.1 - postcss: 8.4.41 - postcss-import: 15.1.0(postcss@8.4.41) - postcss-js: 4.0.1(postcss@8.4.41) - postcss-load-config: 4.0.2(postcss@8.4.41) - postcss-nested: 6.2.0(postcss@8.4.41) - postcss-selector-parser: 6.1.1 - resolve: 1.22.8 - sucrase: 3.35.0 - transitivePeerDependencies: - - ts-node - - thenify-all@1.6.0: - dependencies: - thenify: 3.3.1 - - thenify@3.3.1: - dependencies: - any-promise: 1.3.0 - - to-regex-range@5.0.1: - dependencies: - is-number: 7.0.0 - - trim-lines@3.0.1: {} - - trough@2.2.0: {} - - ts-interface-checker@0.1.13: {} - - tslib@2.6.3: {} - - typescript@5.5.4: {} - - undici-types@5.26.5: {} - - unified@11.0.5: - dependencies: - '@types/unist': 3.0.2 - bail: 2.0.2 - devlop: 1.1.0 - extend: 3.0.2 - is-plain-obj: 4.1.0 - trough: 2.2.0 - vfile: 6.0.2 - - unist-util-filter@5.0.1: - dependencies: - '@types/unist': 3.0.2 - unist-util-is: 6.0.0 - unist-util-visit-parents: 6.0.1 - - unist-util-is@6.0.0: - dependencies: - '@types/unist': 3.0.2 - - unist-util-position@5.0.0: - dependencies: - '@types/unist': 3.0.2 - - unist-util-remove-position@5.0.0: - dependencies: - '@types/unist': 3.0.2 - unist-util-visit: 5.0.0 - - unist-util-stringify-position@4.0.0: - dependencies: - '@types/unist': 3.0.2 - - unist-util-visit-parents@6.0.1: - dependencies: - '@types/unist': 3.0.2 - unist-util-is: 6.0.0 - - unist-util-visit@5.0.0: - dependencies: - '@types/unist': 3.0.2 - unist-util-is: 6.0.0 - unist-util-visit-parents: 6.0.1 - - update-browserslist-db@1.1.0(browserslist@4.23.3): - dependencies: - browserslist: 4.23.3 - escalade: 3.1.2 - picocolors: 1.0.1 - - use-callback-ref@1.3.2(@types/react@18.3.3)(react@18.3.1): - dependencies: - react: 18.3.1 - tslib: 2.6.3 - optionalDependencies: - '@types/react': 18.3.3 - - use-sidecar@1.1.2(@types/react@18.3.3)(react@18.3.1): - dependencies: - detect-node-es: 1.1.0 - react: 18.3.1 - tslib: 2.6.3 - optionalDependencies: - '@types/react': 18.3.3 - - util-deprecate@1.0.2: {} - - vfile-location@5.0.3: - dependencies: - '@types/unist': 3.0.2 - vfile: 6.0.2 - - vfile-message@4.0.2: - dependencies: - '@types/unist': 3.0.2 - unist-util-stringify-position: 4.0.0 - - vfile@6.0.2: - dependencies: - '@types/unist': 3.0.2 - unist-util-stringify-position: 4.0.0 - vfile-message: 4.0.2 - - web-namespaces@2.0.1: {} - - which@2.0.2: - dependencies: - isexe: 2.0.0 - - wrap-ansi@7.0.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - wrap-ansi@8.1.0: - dependencies: - ansi-styles: 6.2.1 - string-width: 5.1.2 - strip-ansi: 7.1.0 - - yaml@2.5.0: {} - - zwitch@2.0.4: {} diff --git a/web/postcss.config.mjs b/web/postcss.config.mjs deleted file mode 100644 index 1a69fd2..0000000 --- a/web/postcss.config.mjs +++ /dev/null @@ -1,8 +0,0 @@ -/** @type {import('postcss-load-config').Config} */ -const config = { - plugins: { - tailwindcss: {}, - }, -}; - -export default config; diff --git a/web/public/SurfSense.png b/web/public/SurfSense.png deleted file mode 100644 index 1a31918fed7d6f5001d7fb55786a6f0205129871..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 69851 zcmeFZ^0SG+i<83OXRLf4`>j)Nh2Ihws17BTse(=zo45^}-*S@jA+`xRI6N?yE!(+Fq0}tWu5BR@w zFvsLgNAu#}QT`9kH-Cj1(yp5)AkXA1ejNsa$5dVT2k!7EH_eMDdT`#YR|vu1<|6)k z?V!iE@n31jrQe3z;rOTW{M#+ZBHBX1`T$O~t_arcA^YF81K`^0?7QWZ;6ioee;3X> ztc&J^mqnW4SA1%N_sB)K-PO9@!C3r{jQ?HL9Mkb7O_m-kKI8xApNp(`w;r6K+`R%R z>G`ulJKbg!(5hF;hYap&bEm787Ba?9exxDpP)5WYK)fl178JMD~rjjd$KcpLb*3Ngs z{qF5YC{ao-IG+K8Ivv2fJBKb~zG`~Yy}D>**cS)!Rq(qIsH@mA`1W8CwIfNQXkM@L z)nYYOS}V$HVf3~Egn9lx+wA@M09_PADGOUC7i;{m5q4-EzCnV2#`$G)g!|s`DpORc zuX8@LDyyRidE+)5KKdn+hc40h-xkOl;@1|+QNx}~n~HdZY~pfnG(;nV-~?0|duxHN ze0-nrh#f=Gb;zW`jFMSj!{loaT{MtxicSZz0GNh_0G_z^&vQHy@CY#X_dLoRvJIQJ z5chH9P9=mVe*W)YSuRrUG#$HgvvDaU1Q7lGabFKZStG$im&W=Z^k29k`w~7vc)yEA z>i)^nc(la|o^8B@2Vh0qCtt+d_49P3OG$dq@u<`D2N1*+o3`J}n)sWXogfgnve_0o z=POs5Bg5^A#vnb#-(Mz3|Na1{5w6UMous|QH%JFw^keno$`*k-)9L5XCKlIR`9}MT zM3$Gc-kBSIhM|RjpTEx)ZMY3F0W)0tf_0S!TL3pna)M*43e`Ty^!uV$?L;xxa-=;w z{*Hl)Q2!agE3?h-x~cw%UqM58US!R{((wFBRp`4YxRD*)NW^1&Txfi-GHANp#eNt_ z0%Pi!pD_oqB|O}0|M=W69)zlDp%L3TEfdMJjV2WEQrjCPrP%4}kbz(xJ{t##2{Gni z$O{v&*eHrVxi!rj2Hp7M@y$dB-rSm5#gu>b>(C{?SWX5iSVZ^rQJB)Awr~IO3g0s# z=)3rA@6~>Gc|NB>8&;*#!dD$lu?jVa@TMBvoE@}tR(grD*g2>PGuMgVgAMzBS9N#HrZkq8oQ(29y&v5V*}QRob8kGDr@J z;Aj&HZBkk#tMOhTDw$Dya^NPs6lPCr9#7-&Y}14Z+{aSMb(X4`Rl)(>C@1`u3ei`5 zK;JYjKGyQu8hc<`w2W?^sJWeezZ{1x!8 zC!uY62A_+%ofFQR_S~OtdRG9yh;{);#ryG+G45WU!bIe9oyHb5Ptq^)EL$yuAcVosO5T;a5uHUgS*r<~~EMwYgk`h(_W=mY*dl zl-N63d#rWX8Tx#8>S})_gHrBL04$FG^{%zE)-^YKmL zuO`13jg0?#p`^e@PLYe#Uv1yd0$6kU+upZjG%ug7vg59pkAiG7ym{G&2sj)ufHb>! z!7!zSf$qd4N{?!}8MFTAVyaKEl95k!#I8?bBL@1UP0kS6B; zL!Gh53qol9N;^|GIujkPM&xln{k@@3;(A>KF`H_Y}iCW(c z5F5MN zt6YxBGY|4JygH1)UNb0p4p4j$b23V<6g8=UR5_4cP%^tou<~3a~OF)$@f*& zK@%5eGqsjT;QVyXUVc$&xsA1&jJ@|mYSD~rjm5JojbC}>K>D=3b^kC>IsVLZTldCU z)4Q&TsCh9ngJO167h#g=_lLNP74NSy@>9XcwCxp|%IqO!$jN5cRro^<^QHT5*DpyU z@@)A&3JOrIvd+|>NQ4pDdV?G<+}#aGiZ$VO^L|VnFO;xB0u9|1nFRsS;|ip4!{_c8 zyL1@zjK4gF*+#G6>2ep`G7ls!O)u#B-dRw|+rQ@k7p_dFCSIDK%%AV0*|+DM zyQ@HsFpk*??o}^WVzv$v?Kp#Sa~_hp0fUf0{E=m2nYvW4jCFNu)>1W6;LggZcSTiH zAjXW}-Hf_^dY+hd^RQw3i#BTeez$`>F{<0T5l4yx)CPhiaAL{zCr-_kg$D2R2z-Q~ zNXGoDU2S5V`kTI@{LjxXt^6tgAwb|YjQQ8P(C-bdhx42k6)MoLQHd66NQx)pPxjW`ve+{|L6{yMo_@y2nD(_et6zjc2o* zJmorNh4*6NS+#-mBirIn@+P?g*LYelgcg{Ind;!_Lp=F2vf^kY4D9En(6dd44!OpN z*XXcVuCS-MS5J$Jz>VO=EF=kA_-A*sGfzwTlF79PPko|+jS?$aAICo|WP>23fq6E2 zEQeC*yhSs7mb~>m>O|4_x~L$a#HL2XnEM+vC}*{VHUHZ`TEN^lH1&BDq&UVqxON zz^~`{ls&3+f%;1x@)Jy{hvYq0$TWlaI|(mL;D}90ERnv{V zd09e;{TeW~IFUMiopTQ(0pK?7dyb_8ZDqMbtuq_jFRCs*BNiv)sRjwZ0` ztU4G1e%|^K60JhW7x{45YJnh(N5w!#6N*1l5i2KtGuO) z+hd43(&NK@HcTM%zR0wigfXq;pj26IzgVYEQOSrS;G%oOUp2wrAlUr9umSU)FUT!~ z8~I?x8(=QO?+e4oR>rK(%Um*$nuMDvHgReB0W`nzzVEeP8di7D-)c30LxPCx;Thzw;YD?P%hWJ*J^=abX1EvZ53p zYpuCGSs}W$t_`sHpRgnvuVd*rvIE{McQ_ufQ`kG!^-VWI(2=H0O4j9ssP4rL@2#hN z^06ve?C%4bMAlF4)AO4JbhZ_8mq?W;3b!p zYO=Kl4s|J!R<*Flmx>M%zX$CPv^hT11}5=BOCVdm8cuAN^fmjaO53*k)_L+0Gvza0 zrq!2SR|B-5oBc2pNTH^whxa@Ps=et}L}!mI|IAzLSUa;dlt^NQXJ$DqLePKt{-ff& zMuwukFYqgd+`d?3<4sujIOd@{IKk^9_vi8air}&c36Ms7conN_z1`}~4X?QP9PQjE z`s{MPfKc8|E&1VF(lsG;qOMdTmuvbe3~JrrG0sehMz*XEzyOJWBLnkx;>29OsV0|t z@e+{@ZEm~X;yQ&SDY9zWQRM2IoU0UaN z#IEL9**uwSqsTH}TtkkKkK-k#X{sRu14X3>qUZHE#6&OuF>*`sv-j96j zzdC(FoiOx#%lIrao}JeFA}%2YQd(AoMz(jtd6pi2s}XgaDg(>~q&9ia>QpD})A_?y zC{F#j)`2*00d`RLQ+!28-1oArO{*`m{sQjgF!r*HKjT*Gd{rh|-*>L0=(e-3?n+{0 zTL8>K&Kr`^FEPeBhs2=(iP3$bzo_qVM37KVtEAVEi6GLb8uDr*_+ap6J!rEFFdo!9 zDEA`>N7FSsB?E2RW`O}0_t@Dy75nt&?gR$pe3pZOth2kEvJ%Thk%pRBg(YAC-+9c8 z`#b^;@8e*^Wrq5Xt7+{d(}{=jwY*TGeruhT6-Xwyqy5|dKfZJ{HTS_tSyw-*fffP0Av>#Wiw>d6LdOY;T>r!pu3x$#sF-)Lk>w3#Rc$X`+K;vs%MNlK}@`J&|xmNq}#zP=7*U_-6_ zeu^cT61Y?qTnadDh6ay8w;73&O0LRY{)9fGlY6FwP`1Q)n* z+sIklWM!}-cyZL>MRLDwU9HnudO-Pq0LsciM^JVwC?)gZIJM#kS#NYXYhJzTF&Y>D z3a^YwQilPG&sZN031c;=A6&-13;7Alh=ien9i;U710Zz~-Bg&kI1iuHm=uxau9l-i z0lM-Ce@llIkb z(ufb@lw;MDRUSM}eSoioUIWjJwhNYy`B~~Zse>W>et3F99ot=++T?2CVmDqOq#*)vUYl6b?j|BhAsi?T~1z@f#R!6`8d-UKbEeo>BT$oW^l)P*}xQS)u{bqZ*|F*5> z25<-|J4qKG$J!$c(v0%J!M)PlV?jRMU}HJ_z2iN)7|Pr*=siWL&`&5MMiaIX4MQnk zdBNb>ruTCg$!S)f(--&UL09QTy3Z{!yv@|K$Vf4rICC4=O)-55XCu zvSaDa!wJFrCvBs5Yp|ISLv~^Rkki|KeWJl|)CbrAr0>Sl> zvjP3>6_u!103T@7pRh$LWck@X977^g4Ap-&89mJuVxr)Yy$8 zDT0;eE_Eks7KQxgxPWImDcC4}8dk|=Z9o&jWzl#$7KsnQS$_r`y#Hg5Q@CJm{F8Ii zz<@30lEx|lj~|||!$w>)ultg{?ij;ufb_;9(}4<6C;v}MxKP=Tb^SX0C(ZOsQL=`W zr2Tf#VwZ^GnV5H4o41K8g+nMRqJ0j;j_6rQXierUbE^3YH;LBf1ZMvO&8IUJk0%Wr zD7Ev%*G0!z>&jo;*St9#lOAE#gZyBlq$w9%B;8jU$s?Hwt8q+#B6>rQ`s9MxyZI8zoDW4u-p zZDp0tZjbx@)8Kz@yp9iHzT(+$K=@FxS|?wW=EptqIQ^PvAr>&==ga4HO{Ex+)6@U2 zPHgwPzD#JUpKJH0w&a@a_u` zN&UnWo*Sak^l5!xLB30DYNAtzcD1!fB+^3bvsm8WUE`!H*M`>PxgEu`djJiR8L+n6 z08Eufl(;*FlU`0k1W%-RbRReh0&7$h-s`}#h1Odqsek-NRjA99V|kftNfoClZ{6_etbTWHaSB=e^mjpE$ zK#C4PiY-|}wtY`mU&PZ_Ot_czEAissy_XH~CO)ujUq)^f2o1#dy1Ffs1SLwiJDu2k zKv{tlSp=hB>I5ZdD^OS>x%zwvp^ROhnSv+joImMvsOOW42+j2M^Dt-VjSv?F0eQ1t+R2-y z?g;XcZ|L4FjM3vnJ9e1K9U!KRb93GBW#NYb6=ZBE-SB-^wVYrKSC}Inzd6`163SN_ zSv!?f_+JmjeFhqcbM?t*<2YP&4E3dG%=JplCt>WhDs26cJ&i;}PZVDN+Bn@zUS-`k z4%BD{kE$7)xnU>tt(F57QKaO;%bkB!ZPx$h1M|)5g9@m!_zzPQrhAlUZ#`L)VE#ka z+6^pW(F9h^-;CJAKcE2g z=7I9LP;dBNE&fj9t;%Dq{utmvJvJBlR@h{g^om1~sIDxN+t&OM?GXnyq`xbS&X9oB zQasYKopLBI`=h9-q9F?e_(h&pk|2cz#UXv+G>_!wMHAeNO;SeK1qx>uDs>gR>?76B zt(`#+Cs}qTE8l&>)Rul~SBJ0e5q@ynV>WfWlJQaNp4d}Ur>i4#Q&A;_p&)YV2ns_= zz&YCA%674NTvT$xhkjD}*Tg{3ykCic>@k&uJbM@mX=paXaO!|A>p7w$(iV&Jjq z1IxqzR<_Yua0caT^t|<)QbwImzdM7R6DEjf9rFoYk~V(zDya<9=U@H3F>bIB{nqReWv^FqfyM7`sg*Qak)3NqgxUH` zEr0&%eMz&FrL^K7CpEZPAujp4zHG$9m;?bn?Hm0PA@$*iXt?jqF{VaPQ&Qw{m=Bk{nTkeQvsM@4WwPkr22Q0`P3_>)COtFkboboySjWB z`P2R7n)8N~Qm(+i&AaEfZRbnBj%AWnPLC*BOCXuCFFI-{)W}I2GfnS%QahKyGInF* zcO@l{1U;j4Vbe@u&3UFe)fNoD-B`{*qP__vD?Yf!QOHGf%Ye7D$X9DsJMH?7Fn}xy z2>M(}{`lmE7#9_r$+2tVl95ucNJz3DT}0a9%y#vixf%WK8F|IGJ<<4mME;LHRXnj! zY=SAhGa|uE!BDP%^`FPS7F0^~{T#PHs zA1ZP=E(mGZdhJc7tygJ#5X{ey~|>~%aUCVewDF~99_0i5S6Cb z+tYbt5i$Sr_A4f)oT4(Kr49iSEOoa~h$sZqm*@UE$#DdQ(V+z2A3zK)@+*${w+Tks z2mr1=dX>L>lGC(#7xlGEJcz|2Z&>OwVqBjek` zT!u^I9mJuR#f0v7y%2Ex@h$)JZ2FUNjVEM0A(gfYk8VSp6kF};+WI3w=9^f+*}GjG zCQVD|Xi4a3iK)lZgL;DSmL>lzW%Kxwofy_|_@P9tc=%cGN zr{x**HZ^+~I<;gl`n8ZLMd0z_ z#MYVlxs};*7yP_R&6&!$|C5)h|DL6D;N5*lAiee@&+_Y+tGl!xzU4EXIUQwx@THBS zENbd}{Yt~-OI=8dUSmdA356h8+3|>>H9uL%Ly=lh#YCrurUxQ8P$S)-JijM@!Q98B zA%$*4mp4)?9NQitdt-T<_{G;(mNbKt_9^EokaY z`%S9r!7p#4XjO4ZxyZyZ^85CuOD0re3oS+nu9(A|x+02j^j3I({luzOV$ipR=pA#j zNh*j$>*-Y0J(;AG&?cknTPN;y35tuFCul?MG)?u>y!i_JV(DDg z;)*zt8xtPTOqSK~<`{N6>i*LKh11bj*Ra;@^X>=t*$3uUD(3IE;~e<@5{ z=32>F!=DO9^Ukhd+5rVc)I~qq+0P1xsmvyjQsb(qT~rKhNRl zt>8FxG-+^>EHpIKV*`o&gXcP@PAv1B3qog*_Z7qJ{b z>Q%dKa{VQ#&H3xMyZr*+8pHf9HmqiHb(GiTX@4yoUgf1T9z3F6A$mV-%UcI3IXSZY z%MZL^xs`BL>z2}qz7r2}L7Ez&=z9u%&p>4u74NZOwd+cbAFL2=-{3{1Md93RsWWNN zR(#^cf4%xS@?lUFr+UdnSGhN}4$j=Z9@|HAtWb0DoUuVCU3Ay3n?ID}sVC!JMlQ89 zUj2sVUi=5YB8xw<=U9#q zV-_c!`~GOB)KXe1XaB^U5wIwH0aOeuF3by-a3TSTCw@8=Oz*v(hcQ?GJ*um0hyFM6 z;6_v#1_Azc-eT-8e+(t&?|EVEX@+JW*~dS{n*a6uT`MJD&r0*{#r}uvU6Ih#-NN?| zI7T;>ozC?xYr7jaxBj5tqES$BGd^KkyVkgvJ|EqGeLkj?V)KJ|ABWD7s}UKj5gmwr zjre)N)V#en{JFauT9IQ0Il8ANK@S^mL>}n-c!Ht`h<}q#J$jE;uayrrLL`xKR8PGv z)L+ot1l1`aStz#FUJm9ga`b!L$F$(zGytfHK5xxNbkp}R5xiN-*l-XI(^B)5ki3c% z2J6q-Y<8*QEJ`um(X0)3+tjpwbb}CfVx>gTc8y_&)Xr_svU1*R%Vt-mPVH;}p-`|Y zYwvGRb9`@Md0VgAfN}2Oc1Si{>6q>P$>~^c{1n^!4)pZ)Lq-y+-g}n5R$ToYjssPd zFT4Ndy2zwjWGWEBO;+!OLLdGtCP9KGWETfgUT6T3x!J@}aF2~9>My7csiLL}gNou| zs0aTw)^ciHB%im4y@Ye&`xiihIEdMP%%Zd?ZbuFSG7jl$)noyyRqX zuu_LkBb172LmfI0edV6%0`X&qHSOByz9uimH;eMBlVnpI`yJfTO9ZFXZ4@UOp;;c(lrLBAQtbUkS@UL?UMep)yls6QGJJg6 zgcN2}D!K}3g-ScY6P%uqjL{N8u~L7|@KU`&6!zX*=~iN1MttkP4dM$Imn9O{+(m%A zAQyn9(`pw$pa+@b=Lg4_s8t2D99edj&uDFlVZiWj$a@!t^on<0KaB8wApc$o?SnYY zQ%z7;Z~U0sib!GNZC-w(PeyopNlgMojrOZyfT`gEs5+0I`C)AAB_?0aP%e z2@2d$ybW)LS6j;v4+KqK&}vjGG&}aJt&sAG<9xBy4|>9!V8OdxP5W0f{7M+4E}U-3 zPnjafYkU|nYluS6=+%S@Yby&0fOeB|CBv~7Qkp*D zVYT_`yw2qDsd2{5{30`RO?#THX)3{S0j82fBSz(G3~u$NHz!7ee@55*nTY(Jb&$4q ztx*VrXnMhz`u>TEa_u*Q+7IHin+&k)`c7!qnhym;rGZC0<21w8*K1-DLoW>Un?;v^ zL=_*EB>Cz>io*?6zT%80YrhxI^Z%(ByH341Im+r0o1#KLf(t8HjG`|gA6GCD-?pl8 zyx@;BBD*NjKqMS8H(vAAm>(1i3u!$T!PWWsO@7uQG3_QSyV`F1spBOxb40lp#3Ajp z#870x^6B?p9uzP1BnXD8UF9Tr^YIudqZm;#(3SMwb6JU6@#Ht|_YfG0yZaKA)&ViK z{oFCw4Ewn>zI%fGtb?g*qI4RF$XyRyU%Z7m4rTB;jL`C)%e)&8hZ4An+8NwqdhcI^ zSw6pW0rk#8ldrPiv+2D?F@0lsMk0DRCqWV7_2_{9tFJnfbtvuEvr1NE2|n_K_rwIY z!A=Z=cjZ;oKEnKO<2C`K2 z1#ILBRxaFk$LB8Qk{3RBxmui3>s6m=3P_U~nVNMzbKp{RrQVzT9suJjzZ|IWD;8`+ zqk*9{2Ir(Ugi9OLeiP1pbm~5tcb@LbO9tfzh^#OLla&Zt&y-BL)lag;#;FH@&hGWv z5=zmUsHj;{;l9(F>XHY$mAHv*9b+OLUdVJWYOZl}hS1hrjX0YU2arm$9pZ`tA&zb5U4^_>|dR4xEU}l znbX55ls$GE6EY5GvMY>mkR>lBmw}hmuuyF5qhY_0t*>ce?%&#`D@Puj~$CFfU zdqL1ygBvG0tzd`wAm+@-!YJefduY_H**`Tk`C{g7h{S#_#CN89_6*uS&YtT)^6?fQ zOYa#W6v%l|qrVBV%irX#TOj8`7T=wx$eNc-eTT+OWhY*K39io8q9hX)n?Dcd&M98= zyexWo$SOo-Z_S+^RkrYL*tEFOwh-g+)=wj&R?B(D*g}mJM>Ao-)KWcj^<-Q16%8Sj zR%G%|FdduuK!X4?ie&k}$lXA9eQ`xN)Ud4TOH{|73&N$vmX8+O2`cmtQnb>VMgLtVOGdGz?^#0&lg% z_KVK`#2qv)R&M>4s5oY(IwO?HY70ZHsc#mk+bb}^_^+FS&}eCBOzfTV(Av;gKuEKv zyq0;a4JcAOVUg&tF^7KPZ6zP^ptW2w6oy$DKm+lU{0UecStpL9XS2OSnwlvbFcPjp~ex6zRbEUVr(0R`?S0vUnw2z0c)sH^}aB zVpw7i$`O!5Oabngl#@0$>j`}h7kS&ZN}rP@2(d-CaK8yfBy6l+z9Rgxw19;AkD`9c zo(gwT*!F(U_v)GG_Lnn*p}1wJW{+m=tBh#&z@Z>!H$* z4<8P8x{!sQiVFA+#mPd&Z57+ym<0dM9rO$&L)x|cDFwbIu^2R|P6B2tBmZSKoR4uZ)w zuPYBJlB}Bb^3r2i_)v?NqU*7HQC8@Fex~>jU5JpDH23S9PAWD}IVVL^2io`;{<7|m zH5M93ME7^EN16!$i}H}xbDRivfK@%dN}JgGF$@xTeoA-T^}M{MV5_$4e^@W1G|^(B z5nA_#K=UUj&Xu}9+uDxx!Zl46a#5RSR;*n&WQ!hMoKL;|Y{^xm`L@(Y2vyML2SJ%9 z7?>AH#vSYH`6mh$bQFFcvc#Ts=)8qqkI?6f`0O3tWa>NeiiK&eE9va*4m?k)U(9I_ zU5Z^131=|6dPNEB&+bRT_49G;@w)x)64KXVXyFU4p1HO7=)+oXd^K%JqjEnJW1z~tkJPg|WZ=6hp1`Ls?Y|>(- zxn}B1$E8B02JcdMN`xki%VB5E99UW!uf&K7FD#`Hz1KW3ZFsr9MMjCye1v6h7^CH3 zWz=U{vZ*S948qa*Cg0v4Eq+koGT8K8+qk?plH~f*iPH3YYoOP{dfDFMx=z7hgC;Di zJq6?H&uL`RwUy12jkUT*y5P2nF5n`|xTzfs&iC!UEo!@ACidFIQ68Ki=vmMxsNt$; z?-$aO6_td$*Kc#NJs+9#Y5ToXqYzc1cGU71dQ{6+fC`IM&}M2)vd48bnnnC65iBkJ zn|g8du)_0b(X!W4feNZ{oBwYZ_~^Ad|F4^q!E>ySE0tP>n}%4i&Y*;P-q%I;j@X0x zyo!CZ?YGa193H9Do#tV6f`}p;+`R0p#q9$-#Q1{Fb^X_tV8=E~#6Fv${jBmo1W)T# zbtihngo(}R!| zGuesk%Tz|jlneOO{lennTYu8o`DrLF?}sERRPbjfJ>^(xLTyOvxT@3o%FOo}9gG}x zd`i_N63AHQChLU>Vj7$;E+u=S=B3JXK((fR$ir&po zy$>PSk2vfjgj9c0?tCbvD)wuLnwZp+p5N~Y*Itdvxk1Bm&BNQ`DSHsKJfC0eo%01r z#z0FtH@+RZEseOkrfdD00AF+qm8NZ4p@w*P64httj-gM?%Wi+y9)eUY#KmAdk|U8> zBZ`V`RV;^-+%9~icnSFL5^c(zbh+(%wxSo9RmW6P&+Wy$bJIh^YBP_=OkhsV@|~p) z6(s34*oRBQm!7VBq4#asv9rR8f45cjI|l+yn6aqiF{H#uBvKsp8!Ir>c6tXXdL~T( zJLtRUTZy~|PZ;Oj3H|(nBU%h`q9lPjX-|GR7Iy>dQY|2ADT7*#O@BkvS$_IT>wrE8 zRNfv;3tz+R4HSy;HR0H;W*|@oj-5MUI`xY4uY9%Jz4Lc;fVd3)&~!Dr0v<>&976(X z^{b&UPh3)Ch>%OH`$Z*uLx5GL_S|B2k%o+~{)PO_muETWP;T$+U!7yhp*QEam8P?$ z<+{MU@ytQqEQkH3lbQyQ&aXx;md2Jq2Pfs?ijgT(2HAB49$v8A2`X)Bk6@IWE$3G* zuk4Ro@VMhDMC8k!HPEWOW~MV_sakJs5fiJ#Bf$n8`N7`QU$dQyxLPY zsY=^iWQ4gSwY#ol`vM(y=7v0w$YsQ(Hu^B`BfW2Zo#*auurm2FhD&#S&T~4_vfA@p5c-}`Wc+UhJXvHrFx=|?DpA%b0gLl1~!PqqUif4A=X=4K=V6R~r`R->(P zgRq6~*(;*m&q)VhOR?9gq+h*ty3spgMMYLKZ6w2H+ z9Gdj6C(Jw74C9`&zbcIVJ+VqLYR1{zj>E)Pv6Fn^EF!L`nxiy>9Jh!Q;xZn?0CTKD z{8f4Mn|$#_MnhpO!@2+LK7=xSZg$Ow{|Nv~D#;rwW2H}HI1o`~hrKd66!7IAvDh|z#e;nl&t zGGU&H4V-8WA!K!_>1XCf#_FD{XkN2}Qi=lC^n1itR;EP!m@N1bk&%2DtuNw^gV#-T zaH6nDAgGhVF5pl#W4LRij^YQuT`>DI=k$lPdC%Bbb=W-JE#Ph&U<5F4nOn(P+8(Iykz7f zAG_L>j1R?iZG1_tQnho7*q4`2OTNV;3&%tXnvwhGr0Gqraz=$GNf30rJJKH&NZltU zmIVaLy!VcO{7r2i%&Z@?HG2Kc9Nk_P=TJDrrOw80S->iqOI`^Q{%OdY*(pm%@u3WgXdEfIdUCGTHZ#`4q! zJIWVqP#?s{%#_fq75;E1@79M2)yWO)>yft3Z6LVbnh2VLJTfoyq`H|&ly>c&JdqdT zy8XK`_-#yR&$b_@1*p17U|>zR3*D;!O5aTRd`x<<2C2sod0jmvR@llpp7yi&efU0? zwlR4;tP4k%cwvh3Z_DD#8X9_qD4ZXy>MtqQ=Jd^YgIaSx`KY5mccAY%n=B*_x$P;F z=kLD=xx>t#SFC2zEWA7MsuKJBb=h!~bYXs)UPZZ*<#5qv*OF85_h8nz0`!Ep84z6k zSFc(OKL&&oq@_NohcUIPKRfZFgvB`Gq_cNOZ$#l}m~h@5&$WQ8KC;f;*8i}TWlv`G>-oLKr~>rF12RGu zqJ#on3Y@*~;Y7`L@KZD5;uEFyJpvGB=7U@5{db@Ld7&qIgD9fY2As2EVBr$uq)Vz0 z`qH}OW4JgQBov+0bUo=Q8YvM%wM&R&5gz^pKv0udjd&cl(`RUdy^ayrfl zMVU$hK3%Sg@NF;u zUVTAg{yNOtjlj(4cTu>nEB)n5Gq+?6D(?3mn{N@8_5Sc60^ev$9BBL1QNCchemT@Y z>rq*-k$fEOsp1`#_Oz*1313IJ9j0S2hmt2nhZB}MVhDrs_V>m@v%(yu%YMd&rpQ29 zdv09f+*({Md7-aZafo+D+Fk)oj87k*+~nT>vqbz2cjU)1qnG3J1U32q)uop+s%H>8 z9%UA_rFLZX#Rb*w0F~T*dPLY=g|+x|go{<6KIp8*_O(C1@=6b^)3j;I{y_Yh`_fZ; zjKZH^9^cqz6tToP;d4gZw2Dd&QfM~6>S2t%(_#PPQ_uQ=M#dIW&2{K~)y>QYdK+Y! zdM2o~3q+>o79C6KKYH}|dzQ%V8q}9-6LDZ|?S6)r4jW``y77v0={?VBb(B`6WC&xz z0$|KqzaGPFj{n#TS|X-uJmY1{G&~A828^JJwtrE+b!Q=n^jLS@v%7zx$;r3%`Ylx0 z8O&A=rgVXX5m%XVwo4n|7^B7{x12uIvOPZm6k(LTTrBv)kB;hsryfgYX5Wd7)IYa` zbELn%zMlEuk#S@GSg-zVhn*H(6>qCgkKqYVYHtBo{XIZ7PH}wk;cK%k&JF~W!A(1- z#T32M+wd`;=v6qxUWwiOxh^xqtm`epkBg=JFuYdrvN!(86QnR68po-+kJ*XwRZjW3 zSgCEmJ(-F)(gnifji8Ga+sa3eqj;2p&!OuGY(HuqH#~R+6CdALw65^o^mr>IqWd-w zAQf5Hdhv@ze%{17YEn~&K(lAbKPy@xUb31u79r8Z9Z_Acol1j#CYA}I-81M%>?V-1 zNN$RSZRI&zX=pEx?XTGX&H^lg^_r2)7?xEwl{Iy&RS@)2o|`t-eM6-q&eR7k1tGAf z#{MUn)BUG!K!wRMt{1+?w>w3#D6GoOp1-7v(tjw79oy0(Ac0=#(M|+M+{?{55Mh@&gi^N7Rb4cx$6PuEj+Dl!x|36_?z75;>s@D8RhRL$cCzv zrJT*RMOm$zR;VNw)X(+8>?mXjF7=5(P$-`}@%h~JO%PH$J6|F=OjA z$f;T;T;*U|C=A6V$lUXAORc{q zeiK_o7!SJ_d~I55$LUrY$I~U3U%pXY3^j5?$@}hidId)4|@ zc|JTV;L6LRrNhOIz)N0SRb71e0EjskF*(kYZTP}>l?eWtz_zliBBb^sajo)2(o^%U zk)3ev^9v87guH4ktoieg*-RKg=b?~I+j(R`F$#fMEj2pUdq@Qhf}T*wfU-EXHw0%D zV~hVVf_Sy>j>n+!2ySu4#iS1GkqFjm^0Zu3t<{*)Ujhb${@h^Y-{oxvaAJx|P$bIV z=N~zXkG9x$P4PxbEQUdVhAvVuaBIc>;AFZvD(zx6l*g{r#`oy^DN|HXp__iME-qjsWOA}N#9zraw!)U1~CI{5zPVI(yy zP?nR#yEZu;1N)AcTYd`tN)^W_O zZ>zAL!%qbPggE;)gqu&EN7~(gwwp;6x$y`?xflY~Hhu-e5RkZqgUav@ z;IvL$1P-@`xgeo_Y$>C`eD8PM4`XCfC`^gufop(0bldiux^PrriaqY#Lkwkz3-p;+ zsU#LRKKY`?#I)p@&nNM^B1@aAoQo93eEie5Y$fh@YDfCEVz@^a2lRnj10-K@Rd~>C{&$ zaSueWdf&%*#M$LI(e_6W)Eyu{do5r;I|}!u!v7x95CZ`s2hWw= z8pJy@;mZ#(Qp|O?GByszDZ*sAqI{i8wy!OCUW*Xu;pR%LeR6@I``wHFXGB?vU}D^a z1zK!==#zaA$C>(kT0Zhx6Jx8cj9-hW_fcjC?g3Ddz2BaHP5RAs0)xP-{^r@aZMQ_^ zciEkpGibJpv%b-DGFr4ma36m=%_Gd8gz>D9DM^jv45Ng=*E<}+!)L2Rp*}1_THCK4 zpW*)KcjxxInQ3J=vrIG2r90Q;Upze%#y*ciQ$_lkmTXHWQ&K_doOu2XoHmwARW&Id z(*JypWB)2D)JT$uf}zMB{3QT`+P2?(_~Ld?){5fkuATMIBfbJt8lZ`IHoudb8)5QB z-qK?BBwKRlBAIZs+>4;gshPC? z(>tQ53n>Jskk)@#zitxHociDa+0L!& z*#i!j**~{L|BgFNUN{)P+jkCmgvRNak|+u3R#GZGp?iOKPXhJ9;0}7B4vGJN63Fqx z<)9%}awaI5THCR~PVzWC(q>mIa|k}`(N6S#c=`&csJf`_J1`(fhae%Hf^-TvG)Rl6 zfRuE1NzH(ylyrBAAR#44Np}cJx6<7)%>0-4`@VmP&Z?YQ%mI&5cS*pv5TX%2*ihyr+kf(i^{+>hd4HbMp%IsK`I*v6-rnZy~WDu4N&$ z1@+cybv!^w&0*+g?he@e6)cJlYla*XpxXWRy0w?lmxfrce;14gC%VWoC6&9b1%E>$ z;|Fz6hQ>y)54=sU3m(3VA)nO`+r8`?m|sFa$?3A_H6;yTlCs+ z29~E#>sTc!j7{nPobA7FPq6wZFot+7i1;En8uX?d!3!?Z3rGiomV^Acgp4a{f_z`0 zk9$8H8l-DD`mD3@cKCuF?fG($QGBtxr6^w{&MsEzNi{vIz({yO1{!N=2EXPjp6lD$$N6~QxTfkL=!9J{r zANG#Zs51Hm@2OI@n$ZD`zN5!+;OFM<-rCX^Sj}U39ff~RZ5Po=JW->o|O_to(^yj5){N;!Q9E&C=DOwPu=G54EBP1NG1wD2ght+DyO}B*4EU=3b_yF?+^StFk){e zG;R)S^EY}|T|l+k+Qx-rf!!&X0g@ysD*7}YZol&bM{NN8(E+^8KDrnD?js^w0h$Gp zuA($jP*;Rx!95ctu)(1VeE!idH!n~jviqb(pE%~iY+Tb^<47LEupo9ECj9uS@#_`v zeXZ>sm?VXq#D1_g9x&`PhzUND;r{3ZiYJF1Q1lHYCsCS7h2$u(9pfvmA#hLg(JS{X zU8Yd5T7W+swN`b&kiA$#Pba#OJH%6W$xdZX3lS6OoJdsmMedg|wn$)zt!bJE?2O|$ zp3Nt{LMDhSZ-L1Sw2Fp7lmfk8Sc}K-iiM){Lv;Z1223*3)3o-Q3R}SuLN<|Ta2!Tc ztipltQQ1OIl9B-$>|jAB1{2^sf&ho$dqJe@Mu3rXGQHjb{fBKn?vz}1zpSwO3<}*b zfImCfV+oTT^d?7@>~&3m_E!bwP1^0BV?)qvad+~63P`w(NE>=P4jf|S3@0SoAEn}> zw$k#Og~TcQQRWMRNq@i%%m3E|xel6v!v@}><`cB%FQN_>kb;o`Ogmt$IsbN?T{qT+ zpxn^Fzv+Gody30@?fLkqb8qs!vPdv!t=PIW_7n)h#6w{1t4lawjUWReee=oZ5hU;* z@#4;Q`-CsGbL~EZq@!7^aY3OId;`x~ytU@Rt?|;nu!+!fE`=lxT;9I{xuGA0pJAC; ze3hQqA;WzLJlq6H(byip?~bR^;pUsIu#9s8*})^*5n}r_qM_yUwVRKXCxLx4mY|d< zes19S2*gqKGu4J1^4+08dx8Z-V;|e($mxl`I|K*J|F7A?_ysn4H;5j|IfT49^Zn#a zX(W|-ZY5!bt`pt)(tpdq^uU=2ob^K>l}+8974WaS?Uh3gqm%JRW!tQVph#a;m$R+M z&qrOh7lDrP09Sof39Mo6xEp?aR%PE0NB^u&%Z#<*8tmKan_1lk4!xVc>XpG%WHzqgK{yp7+en|9 z{dI?`@eHlB>=S}T2^Lt&-~P#KqExeUxVe80lKl-usVFfM4cM|K|K;gy)8HoKLk-)b z9KQqu+elfZ!&_RJ5W{moS!omdllEn8Z$Z5wp>u!-$=+St-r$53OcFlwpxg-c2VALe6`T`*0Z|tno+v` z0M>}gQuUVtq`B#O!~AnhnQ|BVF>7Ddd!WJVvobK}|1=hy;RLoug)6gae?)^u!P4*% zZ^(cr8 z;)58w%ce5t1%x3CLlxi{oZX$-AsYX6{XcF^YDlW}U!ucmxo)5D5wT+{EPZettl!W1 zik3gWn-HesvHSfbraBF0DA&$ideW@BRxFZ}bXe>yhozh#`!K4+&Bcim^`jEsVZZrN z$Wb?v$$*`qz&bqS@3S4v z-RpI53*ANv@p425hf1dxhO)$N+7`HcKOU)Y=y4ZS#Ey!*bo6)=Iq2nAKKM>A?@)jE zZ1x#ijN|>+=HxE-bB_0h#`AAKPFP^&w}tsVJ;o_g=>Gh5Ikd(VTn15U&DoN%GwF{q z&rpT;)meu3lN9jYqITn5?n~bqm%poO4 zO+Bh|7cFq!=J}%G<^de{;rAPeBqu$dBa)Q%>3jY2vj!z9(D)#*E3Nah@WQ*+@AxM# zBXh}OFrvEht>Kdq!Xz{${WCKLyKB*llH3zl>s!v}IU?_~ZqDU)vAs9w?-BSrL~^1a zXGT-9I1FrRAn|E^a7(_@m;U&|Gv1)PP46u_TI~JiSpS3`ytMQNRsLm)d7!5e78s%Y z;J=fL^#^0If%jPzq+ndLca4WT)Qz%LB}SO+hsgQyU-al=MsKgjp9@ruUftVdhZ*f= z#6?$fjd)oxW1=)Jiz8Deu|#dTD1;{kV0~%*{dwt}aX<>!3D?*!)lAjEx7(>S24wNY z^LW9@?&hT1EL|Vh7F_I=zF9c@iL%VOy5$cj9JgMV9G%H=8@b4OV^m*M;6^v>x_;%? zI#=j?T^{$D1T7#hXu~yic&k+oM zwDd?5+SQy}m5)?HfEMRKHm3tBv)QAn2OODW+#5NRK$S%tbLRCx0Tr80%a0+8KcN(@ z0);BbxrGAh*GzjJ;lsmoE%>TOKBsN8b=WyGtPtBJu+p#;C5E;uiDgQAp4LQB(rI_y zu$R{oLp-gaTkv`w`Ge$G1{;teZaPw-kgnG4itII(tL}@Pr`9{D_yaXD{i)2HOa6d7 z_8N0t5eGL+b{tLh+284cP~+|uL)#jD!+q+&#CShy=GOAZNf*KNvEsRd@9kGIF+tZDUxV5LlDF%n^b&>g ze@%N&pFPMxy-dRh5Q>*ImW(V~0g^*7k@R13z4!uKBhA_;4J2mA!=0XF6kPilnd!YG zu9l@3)LzG3qyHx$#>!X9M2f>i%2%mV(AJ8m@O+F_+7)vl;%j_C`{<2_Vf$( zK!T!~q13v_2%YGb$FtijuJP8-O>sW%GxRKAYGTy$H;{LAQG)W2P$&?~LeHa5^w+(pAedX|%3q871L4mKRITq@2NUqn0_ zmQ*P_?r-bI#%Ole+34Wj7om zPobIFAvf^o=glhgs_9fWc)ytlAKw|3#e^V5MUSqhl>d(fRX%9RK{U>WEENEK2NXoU zKKYOr{S1gYPej>E2nPP+CHy{uV?uA9ltFmzR1z@uh(@v#EH8Sv?K2NE%D)~? z(%=~T4BPwu3=ffy?x?Z{BouvL%Tc`KogMFMS$aez`5YU#T!qic`93j-KC<_`zkhy<*!6Q7 zBtGL+DkL}Y6NsrWITW6#1^hME|%13`h

T*od{QQ3Yziy%@mI4Ra(#_bmV6Mxd@Sns$wXF{^J{_9idR z#(ySc3j^M3sQJkwbUW%@?ygrOR{LR&!G|{j6G_7~G+)3!7)5618+8|v(8VyA7Oe%|P}pF$8Hp#Xp*%k0w)TkG;j$=y?%f0YKP5I|-wvZNnp^yD=xF4I~4 zR_10cC&w!vPko7n@s2+cRf%`Lh&{ANv>bdnHu5;GtzMo@x^O$Po)VqoGjde>{e#M;R>02!!7?0(_Uim~a^HO8!LcIMZL=JFvu6aA5sR2wy7eqvPn~k8-y7N;sn#eCX9E2> z-_FjCD7Q38clt}rU6wa}Yei(01?~JmYn?q|a!6KMMGH4=>NR+N*+)(#NR5^c37g_i zLtDKm{ISm^#gaIel?pgdyK8i*@0;jl)x|26f9n30=+bee)QGR~0B?ScDUg8)Vy5u7 zLt|$R|L%W3QhRuv&e6L+bq^w+-Z`%w6Y4BQQ9Heq)2$}rWEkz$>T5H6fR1%S5z1}E zQ&cF^5uOsQt-rN}iCCV@pieU$rr2=kCey+gbWC2KE)DMntSS#vi=}O!4v0(nQ8Wg* zZons)9TOCm!y}n~V*ip5iwLR2ry^Z=#Y8chzwz+jnq5&_w$syx>Z9ZQ6ULPI=hxs1 zi4=@N-w`z594OB(92oLO-Ar@_-gZuZ+oBq@J8Vh!kP*YXyH-p+2DUsLML#(`p48*b z*`dSm+Nn^RGL`R=4l6wk*~z%3%~|v^QA=*_L%&|U$G3!v-FmDFHHl-lU*WASv$%*; zkfK*Puo$C4Bj7%}xHEUwfus8Q3^H^L>Fbbx95~*E)orF0jUu8%knAv*2#{s;%`zdW zUK=+g3BF8ERkxRIyvllzDxM#ks&26quX5Zi$-}bnO8eenH#$LrC=U3FNCPaXAZnK{ z|K>Q~pM-v5(BW&Ep0Ad5YJ^SFgQB{P5JOqe&Khngu~ZEqUbNq4;CwU6+~LE)x62rrA%= zA@|OS)_OH*&oftCeOGp);PmIhYgL*f5z6u&eEQWc*O16QEQkkwUg3*v<^qJnw z1V3iZ-I#uu28bjm|0uvjfllGU&A(5VQzM}5y)@0H>ztjWKu?r&vK@BMyGTCL4Yxu@ za_dv&VcppxmZj3>Mw28a@aYHnGE&UgojMyeN``)ZU;$KpZsy4E$Wba}6=J=_u`>PR zru)>XpIbX2?U$Q9{ziqpsQZ&(vC_U#T0<3nYt5F=`yc2pc)ZuAN`Lr|&deIS-8qm6{owP~U%EZ(jz+FIl0EBM zRu#=j%jU(F${lMZGtO_k-n^UQ+xsr=o*i~j-DPw4enL$o{WMH%HHVMj$?8&g4(m`D z=(4pU^j=)o3zAhFK(u1CMHhe6S5!N*vVLo%Z7{3NTZMn)__MbpM+TYv2q(P_Hk8+w zovyL1(1M5SN~%sk?3vy;SAY|mQKdVQ@7R2>km;tTuREn>3Gb{gsodM8J@JG`bgTJW zzEH+g%s65LD<56#fo9i|!z60{gb3dbxC_(Qc;B`8%QLcfee?>Aw@99M$eXv~k>C%c5J*gA@DMDE_Tn%`B zbd%XI%zDIo&ohZ>ASkXQ>l^U5^Szg1&?m$LUc!f#7`0hxd{4^SaXG-OJ6cj8{e&`+ z0O*`Rm!8v0m!7mL%L!K&At#`K6^RY*_;+PoTx<+aUYQ3hs6DHxi3T(9?^>Lala3$H z{7`y+{n3xQTyEeh_Yt;?br%jxwkH$4Mo>YKn4W$mI% zFBf_MjOcOepGvx5D{3mk97*cH07exBI~4#vq2&1J!j_`FxcP|0w?G|BmfoB;rFQcF zv;g3S5Wa2}%hhY=g&#c`jfD4riM87B%Ga)s+K8j)s8g)D9kih?Hp8z+Qojsr>(^PY z*TjFMNL$NKLK&j+c(Y$11I7-bY^GRH|GFdDfC!HZIWULVECd(rcs1wWF#`-5`{6Yp z_nv8%+`f^saWgx&Ztqw7RqIxkCz{dG(X}~=Zkd@p6*Wx8BF^Y@-9fc*pl~;s`F5_dxHI-qpt9{bKiRcY3~PkAVc1m2Lra1pt?ScMM?Gf(L;AxcxQ@ zpOtJp(Hd?-gNFCB{&w9yNP9-;;-Q=`Fmy3WdfGBW?!y&@bADj`x%D(;MRv=|u>HIS ziPQNZ@^kTQX>GBeC-2YK`H$2;#-SE}2D1<9o093NW_XKC4LSheGW4sb2qNG+3`b5p zVg5B2UBUi$*(`Qv)0J;^S)0+c4#Jj(NrYO<#uf4U7gYeutn>P?2;|Fn#`ApMl(k18i;F4+gmUlO%chvFIzP}NHut`~9B*tC~eJN!>c=n6K z1sl*r!WvILaprhIWr!D1!E89PPj?>@q>gY-#ih$Cu(a{M@nxpr`dd5*VT)|1vKpzk zJj_QMIbCm@Z8pALZV7Gqg~uQg*WK|Z)H3`G1gxfH$nhK>8;3-}ZRJ(tXZy2FJ^QT6 zo$qpvX1pvj6UGQZrzxWx_PYQgsP`}0x`B!cRQ)RlII(TrCzEEmJ~*3%H^`5crZIje zfP5wX=?MmAPN6M1yyly}%uu#qjAPa&@GhEfd|H|wH6cYGuf!N)%Me#|Y>y*sLNJE^xpdKlH#Z_=zr$RHyjb6C7PoI!n{}+ont6ham z*hU8d92(EBdImxerajZC&FAW3v(Vg4*a|Dt6UJ^jCdVh3%MoxR%V3;l-~J$q_iW+i zbA0qavRe(S$7v(rzIkj2!S_$A#y*|Uo(sRgMg-p-cyO(*Fg4#3KCE1dmJhh6gltuZ zNsM`o=fY_RO0}=b_ggBpzy^o7TesIzUypkCwDl2_ftbq`oQ5hxtX-gU-$Z^Q+mAms zUvbZX6rJ#r<`M*tgV1mur`2>|+`02qx7~H*uc{daYiJ5ea~ys#i58sK`IY;CSGYDx z-MkU>(YQeKDY~Z#TPV0}p8biU`Os3b`lz?QHR$P_$H zyoOYbBYgVSC-KNBjw&e{BfGC?Ojr}u5aBRgL!_YMeeDc@>4gOEnqsw@KcK=<)O^wH zkSc46Q60hEu#)qF?3wpPe8`h?CA7l!ZPK@SoEvOuFVxKFr_KZ-sEeRj79S}VZ@LJ?w)$L-|Hj@4|lJn z;{;0czkuD!(pzYZD2inf<7`FhW0y$&p20&%RR1x_`{temmxZbE0WcIda-ww(cqzf; z`1AGI)Qu9iQG_2Ke_L^Cdofb4obz$pXbvH_P;&&sJ4rB3Kv!_;rD_}2i?{cEr?&Zk z%NK9{bg9ZCX%uR!^K_;v$&V_r>N9v)-816{vEhEYF?}&trdx!N{SxuEC*hT{|>D8s@S~fjG{}kKPO=<1$1fvmh zC^k|QVGtNZ8EAikS%bIhMqYYG+3?#pcC$JbuBKZJQcAtS%pOG4V=L5W&-|lr!P{;g zU^|q%@SSydh8y(GQy>3LYf;CYKmC#Nj!SZ7F6Azo{yH5EZ$b~891Tt1mc-l%XPFHym`-xHdbLbS2 z^xlq&0};TQ|0vou0^Xwxu|9krhpR=vNiP`bVs}cr?kV5JZYQD8mvzGmfsTtux zv#u##@xLiA8#6*HM4PkS@a>ezT)>ggpw6GvN%t)#^uM8+21=k3!r-LQG`AJIF=lbW zq-F`aY)MA|q>cY#!I zN@ve`F@B}hB}1)S*os24Lob=^X7pvG>qU!QbwDS^065JBOr%N5m#T8N!y3{903Un= z$g{5cISs2(oCyQw%1o&DWPmvv#i&L^)^xY~+TzdWo!P#kqUf@&K1)QkH-(fSQ(FSK z`BhfG4dg~Nb>4l`6)0ni+$5Y5aX+semg%xuIM*&@T>dHOWb&e{Ro{sewf|uoja#`I zZFny)O^L2$ob+hagbI>KARV4N`9km1BZDFnLo32&m41w##PJkT_CY%w-oW$=sfI%& zkET)-!Q3s4KQ|PxQtKPz!$MiOTJp zRN}G)B#NcS#nWI;&1-yDi4?sb2(F+(jtY=}l}g-z_w~^N?m?cHkcmLXYyV;G+0y5r zi`;}~)C9M^WC!!^f$D0q>BWzTGgbZKH@&12)oU`RK6q(_(EWYBl4y z5o=bO?_TUkuDE@)gvB3v@#vs6y&nhw;d;7B$D<$A09mM10puhE;~RzZ|6u6Nc|#q%yvLGb9HH=^IDH>5P$#-1-1qpB&uT(!ACEUU{8UK$oo$J`#y zR{WUcJ*rF{lVL?O5j>n=%1>?$%G0t>;#e@vF^DBWs`a%LHD8=I1^K^J{R@}@py+w*7*P}fF{cOq9ov@0HuvzWEIXcKCXnIM) z4-aO?ysH^#C18QTM16SV=;=w;#GBxYXX+c@zF++zeASWj`zk@qooGj7sIqCJ2;3;H zv5L4)75m1x0~ie6917NtjW@u189ZX6Z(B{WYP<^OPd^7SfJ-)Mdyc)WO_-bzo^;{< z(&R2J=8NqR#+LVap5MZwLm>zL*8_o~jT;=4DDpEe`V@~>IoL96L@N)hDP@(ju8kwK zUNA~h+PI)T5NmATAznA0AGiL+W+(9)hRG@@U$_Or9(0$z_rdt>y-@~! zaS56a+sGD35t;I5<<$fmlt<@a>y+(+H_p9As>xc5FX)q)VGrjF&Oc-R$8O;L% zD6L>f94H1376#5WCJuJc;Z6C)gB{s-LVtcUFK1AYFTLMw@ZO#YP*Y(V9QmA|W=kjlP*XtSI%$<%(OUq- zMqrR8TIvJyBWWI9wxCCI?qV zmN#51PJT53fcALocpgijB;O-+0>q2ws6OM$Q+h8KzpCF#jbhDv3}trIt$J!I<~;WFg3 z(3uQ)QY2u*ZE%D`E$e}UC5LlQ7AGVK=UxyFmMjj|2OMl<-@oI&2giNuCw>3i`Y3HB zDY}_d&=8PsWKx0i8XmWK?Bh{M+rA5vK}vnhrK;#xPx1jBzcg{1t4j_!iw+tURvO9s{nNiw`wI`gu-a%aGO5hkVAtKyig;WQ7aoa z#_eTJbTWVT>TWgK-_dORPw`RctnG2!vdd&DP%TR+)sG84ldV!Ez(?>ow^~%bXa?!i z#nM%nNLNVf1r1>&608@#RHGER&+c(G^--S;L<|NVHne|5JTdqx;}X-r0vP4uN|v-=^$_=1YJX*j%R^nBL%rqL&V z@_F}LtCPT*=`g`=DoGU||Kk=aVy?eJN;g#8|CZEC=RAwhDaLYL!L!2g0vbrw;0zjji0HQ?BWc?j5Cg zY%@ zHd$*;ycvR;rkhrWFVQW;nk&xvEuDq9{CEeaqNsHTOW+i_^xIP{REOAmD?pJZZe$*$EqgCd$ zcZ>;sOrQt12%#iL_a4N~ymB|jCVWSCB@5wIoe#4HW5TO84RBw9L>K|i)Ugjbd_k2# z$ocZC=%@ZU`YUE0)2U4R=9n zH8szNC1<8yQ~RRm%I(Jd78liAuMeIo1PIS_BLlThm-bKLU}z8P(*-`;r5-&k{Tq1V zVsDePF`x}}(2m5!E>9jZB##_a`Em;0QRoV2Tv-TcqaSG;5k@;^V61dO&fEM*k>NWX z>HqVgXXlt2t$>t~@0?XA-~g+13NDipVp~3B00$KW{L!9rvmb0bD@Ne>U(r&qDH6O@ z5}xNlQZ;Y3z1l(pJk&`6^2j1?phzvwup7U=9dHX$gN|0AC;7MV5w_8204$e7Kd69V zYeF5UwBW~&%2pCND7SRekT>_NCoe@m7M*4qM@tbr@p;XH4;P|>%LcwRF+3PGoN@HU zl&n#~QORG*@<82jXK#~G^fW4?92+YZA(GC|9Ot|Hp@+~ddupd>f|-^mPFrDA!6r;b zO%59o=HdfguoFE_ki!HkohH*s*TyjeiiqY-xbV>uy=dipFgx_DxJQD-5_{SK`cR>9 z^CIZbs*m(GN9C6Hg9U_x1drylHD%@5bKQ=NjepZQlPb6OI6y=G_X)E64rDC4_F1ia z>{ekZqh{6}Z>flWnObeb#UBe0dyk{_^GzgejCyb_Ad`y4{QD3+omG+yzi1B58_tdI4G;VliDd+R+ZFGIuxsT(LGO-Hy7?oIZaP&>nnv))ZdLRAadz95jW`#9xRH;GoE`>PI3Rem@@ zW)7mk#~X8GP69XnGHQaf^bKFBmch$!SB!GJgl z_qGbRdjd${#0!DH{w&L4I`4G&klqA=M`vY-PFhxnf>BuP0k?_G2(a=@8=&@+F1WfN z>v$H*-s8|%p}hc$fCqghOah2wc8U+`HerC8WmHb5`sc2YakTYkqoWPGB4Qd`UMA{D zt5R}lth;;(gVm*>BroKKcJxy3TyOTpFwEH)VF8EnI)y_U;tfY_G?_xMYR8;|2mS7SSk!lL+LF|gPXQERU<_&(%CO*x- z|4k9iD`0dFIk?3Vkoef4RbJb8ZyRZhXCx<`n`o)74iVRxgnQkSlYZ@s`@)J9xh9Zyh(5;qcT?7&?b*rBp3jgk0(jl6psgfyI%nLUKhyO8tEI|Z)=i@CF4RvO2&-5)}&<`uM6O zh@aoadJ3h{-GYGRi#B?Yq=l$!Rj=z)H>UD(g8JF_%0{}u)u+&A1vUg}>wCAc}(p}KPa?WkG|iE?_cE|vXc z3ev))0=n>ZVL)0jhPNI#%3j3DUWJzk9gl^xX~675&2@-1S&)hrg|vq^$k7W|PQ2Wx zLB#Ym{}MvjR+R(5^$?iBm}D;{k_0wme+Gz~{2EuLglUY;9*yaSNqgK%L?Wvpe+e_? z&qXT>oUfZ3BR^b0@JP|uxx-hudnG9UL-&pHHKOdT)a&cK$4l&)c;MS` zn^O_=36M6&B(VY>UJJoZ>Y|{|Ndkxa)oTIp95~C5C zE`wxR2dDIAbc%ClXuie9uI$AIcJ*vfmjf>&nu{mVu1%QR_z2elRcPzXWZ@zX@k0w+ zil1jrHOTbWWV$mE?E@N<4o#3W^a;K49x|zPYLIf6D~0)}GF!sY8y9fiIOBDTeIkl& z>9@B!D!{zV&TD{$z=xE`<*duU0;2;IWHy&8zS`L?Iu8dsu21OlzwU*V;6}rJM3J;E zyV%H-L*vnE?|LDWTKp-zAQ+a*a|_?L;*J3h^u#HpdV9!Y8Od@n0%s06Fb6AUq2y6W|`{}g=Wy)F8N#^+H7HJB^e-Z8WF zdrOfZ1N}CgKw9)9Ej3Gf!_G-zBIO{^Nv5oHDh>-YsCl#N)wFnsiQ5T`IizjBPFMFH zoei$b4FueMzNjy^8y2DVjl>ufTdh$ATaPlqZz%<(WvWIAUkem~^WS4{)&k`*h!_H; z9G--m>)7)@8G+)IZ*mt+_(qLIr{o>3ix=kjk0+i`;)?*@H=47&8g9J=yi`2bN#ARS zti`;W$YAeR9uM4iCI(Y{gYp6FT$=YDLqovf?~t)m)`M_(DE!Eed<4fGx1RqR#)=|P zw7YkVN>>1RJ7%9PQd{a33UhAUjPcCGDP5-(?G^Lb__tr#^QQ>>pmYz4?u+ z77*+-fawe^6RUt8Ed8-zX>R=NV@G@V%EtLslwhGUGV)#BVP#K|D)!+&R!noK7|u>) z1&&h3_ECdW?bPAXW6gcZ;3pZ`c{J|{hIS!Z=oPQdrTr&h2`I1#??KxV6q&TiYrhHa}2uFizN-y8TEkcjL2bKjLi!L6Q0v(m2wB`A-|6xwH=QZTvMX z@z4BO8%6U?PxdRfYOCM#oPyGcb|W$GD0SRJ={YxBFV4HKrtpk@C{77yYAiTRWw;s@ zoPyEsnb-UwY3oJf!7LAIu+hCAXl=gI^Rqdr@#GCzURI~c8N=toyUQGTcGAN@EtK`Z zeXuOS2pl2_48rrpUs%I8B!dGg2NT@}HB2nnzqP$@S-&tl;vO^cKQ&gJgsl>-{%i^@ zCGc}%E1e!wjg>J`67?QeLx37hP|5RdbfB>qk5BLO@5@p9JHRfgD@Y}aJsA$K5qz=h zGZLuHCT;$zwEEqF2?hvXWMLQ5Oo3DB$KF*HkgrUOaU*I7y#fQSLt_E@K#KvksyW<+ z$&g7H5~I7;`*j$Ok02ngqVXI#NOJaO^%pDV<>E$bB)b0QHj#jVbMf+&4Sxd+yP(ET z(u2%06adPX_ z)aulgyM}iBuJ&7e;UnBe;#g@(;54%}|NQnocsAeg&?m@1n3s8ZpQ=D9gH;^AKr zhzgU*5a|m`%G(lw&2Nn#E73aGhN@@Lxd~KpFW?Aurxup~(*g*u(j$sm=mxeb;?73} zFielit4OMR%ypW1+pQtiIw^Y$ziwgf%v1odoH1p3DSjJph7I7t`7_y2R9;4C0Ukri z@XEb_wgpwjfm}KO$|%)C1GLs#UapVwBbzmts`BNIZY+hC%X&JM?;CSbf9cH*rI_o2 zF$+*g!{>cY@sJNxvq1zp1nlCX)6DQ1+eCzjIii;oc{K+nl)lvZ!~{DT zKP#*fV0amdEMJ5n2yH!SP-oV~_AN#fbI2Mf0by6WFdL{EVeyHH!L>*OCOW3srh-IzFnw(HI4(b#Ng;z|v;xQV!OE`&6+eO=E0+k%J2e3{SZ2=ZY6FaCk>v&5 zaB<^BB=`RJ6;=?CA;2==Aq%RA!pk+`Q~N)z@4Yw%v%NR&L4L=bTs56AB>u8((&EL5L?t{;0Ky_& z@rYH1_!VCs)Fk_;6t2Pi-4oYun1G`vA=&tC?K+J5%haPY(F72Q-g5eGw=+Ls+y$f8 z+~~(h5$qijpq-xp(;^c2X0^5-xKj>BTIsZT0z0-S3u3f>qcCkpCjMB)D-m&DMfR%7 zx(BLm*8!SwoAAr^!4*7-wKE&6Rv$sS$nBdXFc{%!M(2NqRh_SjNi`h*8y;OXTS5je z3?2%(v$NpzbEflQkHMxc*I^ng-e-@^;Vo_J7vRS_SCkHq*~Lsjq?ku2(NUmj)mu8p zB@;6}aSM^Cds8rv|EbOpNui3KO2uIyy$u@;JEXV&TQR44Da)3c{lE-Rutid_AWK|S2ii!% z6Xq7it|hV3AB3(jo{s$f>N6sK96>9A<6zJ&)w3yp_|04}ZBD0mURyVP+S9%Myv&Ja^#QskGSq@Q0VT;{CD&=|QI&ccOx3HRNpDBQYuX2HEW?UCm)sHEVAT z_H-Nl@)-s+iW zrmZVtx@{pe;gB0gK_Kc}l4eg!U#Yia{CxC9;1FRO{TY3e!lqw#r_-%eXfWKN85Bm{ z+|gz%y&HlkhiyT|v(eJaxwjxO!y{U3VLUlOvR6u*-NL|d!;ztoD+B5c2M`c*_+MmJH_2VffvHC4h+s^$< z$~0KTcpOv>msckwxJ|&Q^rjNa0-_u1>q!M&(MDP(0>px!f9zrJ^Xu0DJv*1!L2({v zN&a_5xMNAjm`bkoB|#}P5J|!If!YJt%KVYibA~j@DjPc`vhcmaKP~Z zc(NT{=^&zrpvKVuFFc7C`^l?XKL*k3U&3rzmracO8@*a$qM@rH&&k;*IEn>;n+ZkJ z6@xvV-@+iSyudKzgz*8VQ*%yGzFlJEzwc7p#*v^uemKY|BI=Yz(q1e--F=6GXduZm z^+DSl5r_A%1lVgy2}E;wb6yT9&%PQm!7E-WaEjR&b9?QVFXuDW#?-Q7e8xQ?e)bg|0#H^BGd%$t~*7Fr(LJJSK2*?y(*A0L3^Yghd5K|-Gz&bPhz z1J+PoT&}P~l}Te_^4R1@-X_|f1FxNWb3v0h-YgWNmDmpSA&(z)(O*ii z(4#4pK!}iT1WKdeKl0I@PRPJ-ae*ZQ^)UpsAE&i^o-QnXcmZbx?Pyt<@W*0mS1A;h zrSIvPrM^16LhIbsIv&8p5seis6y}};43Q}RF)adAB>Cdny&oO&#mk!MWU1}{GgG#| zQ39j7E>rx9Xvsz+u9}|3f2ZrWB5$4n7 z>bO~&*UU8NSEgQXT!g<%G3QFIYI4-D(qJz>#)!U(AOEu~`jv12A6$>=Rw~h3_C3I8znewRVx61zLjnC*!-=Vftza&I2HtBpPiHB?SVTN-ZtY4v zUNQ-SS-jT@tI8S{2_#&;={K)F{Z4Q>27mm)&`C|@%4ainqxk9dnz9DSC+2e~pdlyJ z!0S#fe=Yfbhf&=gD5Kpg zyWa>CfnDBhb}z3W*>{UY*Mbymgt75l#`D=(JZaqI2f$xYtnDms3H(0Kkb5%_ z%M)B;MD#F!!~|HJe7{{GK7oa5Q|Gw+$XbK`aI+Uh=Xs)YZ=N$I9=(!vBZe-~|sy_Nrl1e+4U44zm_gHhZm$D|y}n)0Q|#QxVR z#>{|6d58v_3)%iAw>#8>TfxR6V#7xiF1+OVyD*Sg?EdZJ;TZAStU1PJLAo^+nw;yi z#b1km2l<$7;f@MjKy9Wk8;(QX@*TQ1Sbb=e>Q>Z)#{d+4eBZw;bqYpYLWH(#bq=5= z{V-pOx+nPK47gPhzSGZq(agM|poym`IORubLOA9k-C{Z0Mvv_{~mHlB7alAz;AF5J|?}ziY=GhV+i3< ze93wRykq(V{+V4~yu8tV|B8f>+XWzgOsrWhQm`mNC!I0)AWxaZW||RfV1L&qZ6s>n z-XVsGLxYV(d!8hQ{s=g`WLXWkp;n%!;8iGUStQB8a z%IWaSG9KKRSBTr3>;BU~A+ME8aw#?VC! z?)^v+tc3xnjVNowEv}Or!+$XnWEX8h;TLgs{Lctw{cEWV`keu)R*8np1qQg93yDpI z3?!bIV3)Acmee6wpO&o8=(o9}bQbkz{*M7}?;;GN2lf!nZ=6YLl=>!u{d}fLXwu1{ z$cHtc?!GB8?>au3VQfG81|hi_%lK9`6tup6>hdyzBazkVZmz`4Sk1c58x7*g`B zIb>!f2V(L#xr`IpnhP14{O7OSPZL@7DLntKf-d0CLhIS`PGUNulL%AkcZeD;bt5+~ zK|M$_5EXJQ+A`$_b&(q@#FyD`z@+cF|DZ$^jXo@ep7O^LYRl`O{c(7k$J>8dI^q;< z-*%z5#yNMf*jEQzu^lp{2!FJ}d~G?JLn+g-$h>p;%yBY$@U^}{ZR77lVlBm^Qwov{ zu0sA+^IrBRw0d>oB=Iq6BhG#4An z<%<$!R4kJ1MW-MTFP6F2QeJWf%TpB+v@e^y!F}r;!Kw2cA+3*ZfZXC>cy@X#(ObxW zEpTSOVwv8wzv$)KnlB;|&+sw%yi;zh7}JfM%Fimp+d<0w8|_O-5eQVblIY=Dcp9n9 z|1PFnyj(dLkK#TW(3xKueYsb?<~j@;2R^@kZ(11RUdcOmVU5uKv&9vr(FUE|GQ^BM zeK*Yeg$FeUb2Vu$rfzW8CKC_mPp?nkF*L1V5ho5OPTl1WmQ%yqH$Q#h*mN-SrzV0r zt-mDB@O)or28Z0iE$){--yZEgljZxi#vG_yeXRc=i6%oxIlm+OFY5+ z^bXQl=|mWqFMZv0V!BXCY>(>?(ZkF#ePH?){wa`FhB(RSiDw^*ThM1G3e_L>$ob2= zs%^Rb8RWk;2QN=hFC*9^_wsL>5)l>;Mq=8dR+BcphvsCbQ`rq!Tt$U9j*1nP1TngI z(STR}-mca<+kdldd?wbJ>kryY(2R8pIOyBxKFc^W`O`S}=Ps_Qdvhu8cN+C2gt{gI zNFY%48BoGSwAXzi)nl&)K0hYMnqKd*@p&>6Xg}^aSRA7MN6y?l{+C0=IRutR5k`|q zRb$jHeQN{hl0JpsUX_%0FKi`NuW`aeFSFjcvWld<<%b4Jp&zc2Z*V{Hn^I(RoNymz z(&2`w_gpZqVsg)+R5g+~@GHtXg9v`uc~x5X7sMx(C%(N_s6~ZR6C!VaK2S~Cf14Y_bJ{uq;Rh540`}Fzt7V)rgkMHn-&u_*d@h_dD%oBB&{gwaQ1?!K!%o{(IHP(^{ z>3+*r6p6uFBos*ZVIS%;fYi+fSscvMPEzGrl1;5mAYAaS0 zmr7@Q9)bNu2Hruk54D8H+KAEq|F7jE;mL8l$`&O>!V}-t`*h-;6$7^aX>gt0yC;_c z6zA9|Vy3dPT*eq_j7T!kc8CcEG;^NqH>HG}DGpk(sNH`Z_2EyPkAMBW6S@8Em2-wj zuIFLoE}F+Xce3zj`8*`xLL4AFD-9^*XD;8o&0z6J=~2)7)ca7&{rU>q?_z7dR3wo8 zFRvvt?<#G8%a0&peM5R?6wxUC{HdULZG_F{{DoK%ZARNC?x~0*YYJ@pG8c$KSWw=3 zH?*8@8ki`F8R2;J;s=ww#|SK+K5G6W)np|s3YSifRmvFsh+VY(Mb^Q` z1ySe;Pm#r}_s6d0k&07V^e=q3zKuz^GhXP0>8m zyGpq$Rdg;9rvW{r?wbv#Q+^1r7Dz9ex8c1)VWAL1=Bt%^Rt=Ge33SMBWDD1@wb27r z(bKol*e54KA0VGD4Un#5VVf`A-aj**3DRCzq2{UA?|1o4#)G;GZGyD*609U2=?)}eCRzXM4G`gb=2_rH6v)UvoqDsONQ?^t|qW4Yv6BIW1 zM+LE*Q;Cbj)@yB?vZ}PR4^mRaP^k?j3 z@Gz&BcJ}Kvd|^69D!VOWne&VK@+}HeekGCC!BT1cifEGxZ(cU`?8S}Yo;2Gws-^CGO^0}<4pfH{ce$q0IL2teHp=HPo|>ke9tv5ATnbo!v!x9r*>IC ze6KWWv$a1YHXB(f$AO!00dwbJ<}mc3<(AEa;jy$BQ>TV9@yMVn4dv zqMbJ{tV+Sw&uW+=`Rie9J@Lf(ILp28t8(0=bYrDYq=8gl4^foNC+6hKppwW)9mpAG z`edb?L0QdZS(^0T$SVi}_dF{Dlr5=Ok4Vp=UWPMrcU=hPvTlV5Ls3=U2gt@XWv-_Z z*7P9U;6N%uZ~6gPb6WVPaptq!JE@}dcdLJ%l0tp8JyS6MXD&b|l$9vPpu4>He#K*( zZCQROLAPzcl-7Ff1+)*VDhpov?9$PvBKJ6iNh0Kp-`I?dIJXYxJP4xN7rh9*ky;u5 z&3c2ft;1+hoTGmc_krIrs>qG^#}pTcu_m($UpZN|aojPd;^@sCqTtm^=9fI*d1xaF z(McAk0F$`{v)d$3*9A%L?1#{16QgvHZVuAn8QF|u-5tr7sXwzKvIzsaQ0ZBAic=^s zODX^flI*khTF^FWK?zP5p7A7J_24-dN=HjAd#=X6H`bv_1iP|umhVg8i^ug@M4bP$ zMDV?bib}=jLFQeup1c1-$^=FzC6TB#KASdCRoaBBee~Gmcjtbk*faIv6Fy!6b{p@N zzwi5fS~Sy@8mV33Gov<>YS;Fb{B?f1{%?>FL-^xR8-C3n&7PJIdwQDX@3s7|nk-$4 zT5M0Mh=(mRaie&1mEb6m5S7sXn$oDl?Q`{qd)qv*H=EWUyho^90n1Yv<0cM!^xp#^ zXJ7x1vlI9&8VC5P)8CF{8)tnfcwCD9(VpjfZ1nIY`gAchGDq-Uiw+u-m1iz?$C@r& zw^{euH9>wJHpklXRGH-`wx1902CvT@hs2XHt+~{sH4na2@gu{^FU26N!2reEk)d0M zxPzARX+c!|vz8$el`=9=t0SAMk5>{$I>~5~k?L`1yD{elY1my!?ELXy!JUPsu#Yd& z^Esb{wZZn|yIqRm-s5-M%~@)X2g{}|xnCKp+FNlmGIDDA6Ow{!(OCpVY(VKV4^UMRBK2mpyq1fU{d&%@{}Vga&b~ zq6yOF%^^LAMXGqxNT_GOa_57^bDHT?@9~pI6+foQ{iJcYcJ3y>A9Y}2o7;k)!cdoL zLSChX)PgVA?Q}S!>nF4cljyyxQu=vzWWEP3k`reZ92#CvhSk$-;UeD)Str&S|!4D+51IoTj$b4ON^6csT%JvotpubWnz`J#wniBs>O^+#0)bUnh-@AI8qwRI zFHzAtiwmZu?wvNd%bsj`Oy}80scJ7NbAj?)owtmw7stTX6Ln_adtH1(!^ns%aS%Rt zXWFFGiTUZ`OZvoWBByPlllel_?euupN5AHH7cl3OqW0*|z~T`IU|(J&zj>;9(8Q-# zBHPr|hl2+wa_Q$bN58OMaM2OOG6qpJyG}Zhc{kw3yw>=tEuf zY4}c8729qx6Hu}D<0Fni{8d`UrI2}>aqCXIvp-)Z$kn7??#@#UnsnRH>clLa)aO;* z=!}~(VPE9V3P)KX)?+tW(N2f8e&ve-Xo*-*&6*$OB7AqHSNDbmWdA$QD@rMHZWA+_ z`(MsUvN_WFb6I0nn;3o?;KZ(KV1o{J%Jpg(a-My;YiD_m$yfb|ZJAR`OM453l6Q;H z6EowZV$eGONVWC5B4H_cp?fGtrH>wndc9A?+Xhs+jMCYaRGm?wlsLKK9iqc@^rYkH zJDp!GKE-APmHjD16lvRae6ajV-g%Q5TXE-%@a@GzT)qXY3feTXO&kvq$Ip2f74op= zKcq@JpIBbtAND8QPzymAUfsL9Jx&Ibc;!l&+opocr(s1y;Pl<{7w0pVSuHphWu;nm z-1d8}^N&nhoj)~kjr22`M?$beTb=a#$7%AcuR`p#If7WG4Q?nEVt8S?a{ugz53622 zV$!*ncW@k%g>34J1jGdK2;+S*?b@hMi^2U%r?3&H^RCrnpj9|aaCo_Tk!u!C3`^r> zcRV1h;Xj}G)cap4-;^b<`F{JF`qgUJ#p4Ja=tA8ZSJ}UDa)>){-YPv|7-9RgFsg zBa%aLbYU=?oRx>9_M1Kf-uy3TGc3@T$q91iBw$B{FOr46MLRrW-*~M@RN9jhK17`R z$d;Z%?#L-0Hg~7@Zg6XW5T7+Ykt$~pII4y2+sv>RTnXpv=C?X`%2PT~b*aUrGWs^- z?TzuvX$VZ|@hhh67NefWWxtH+ug8QkYhz!fDQpyvu9f<*CIrH4{p2$%<59}j1%V~1 z2K$>jl;{3VN<&r~8~Cyxrye{|5rw`5cttTYeu z$h0zW%It=UZMh;~uo0J@u@jloKl$?u`hxB?x3_WM1LZ6^9iHf{v z>gWkcD~XEoPlQhB?gx-2KQl)8gtL^tF#{Dms?+GR4l4Fam0;>D{ z#Qj6^4Nc;cs_n||kw+c@v52UKK!*FDxX8PvJ!^6qb9A;`${SOtK8APeFzZhDdI^h| zzhUDe@bFQK-hCPQnPc=t(q!a1gG}@pm~RK$B0c`-(!#M}qra4jF&F!KKbJxHpNOQ? zw)>H6Fa&@wE$|1g>tO6P&nb+5&&ajGkVPtR0l_1-xq8Ia@J!h(ykx(-?D<>YH4nNI z@YJ)eC(#0&<&7GZPpY+q?R-G`>iegRWTN(ad&)2Dod(0U_=|p{^-l)Z7{P(=~lZ_LNjCwDS9D zk<)il0~A6x8h%Xe^@g?eXk|ylNw{12_z!w2cZv~1LJh?laaXp$C$SP`g+>bfB`=um z+qUlrdbDk)e0g*480{JBh5f09Ww zs>gx2Wk>6|{#*d{v(ed(|CX8fh#HwEW+fV~#&#`*7er~la4neBsG7OkuU^39D1-2i3Hx@*rR_(5 z{lQa;vin)e2`o*&w&lW#pI2<=XEj0YxVpG_v^k^+%vxY$0_JWg6Lu#5G&pF{!=8FhO`a zLd##f%tgZY_gz_P^QERIW`W>4V-n0;(a@D;4diC<@r&6HBqoXlTo8HzV3 zukK&05UW)0_fjOW?(q5qOIY(4`x8gJ(r4Q*@&l~(V<4=`Gr6V>6$$#@TMWz=BW3=0 zKIGJcIS^ZxZ9JAw)~jKs3(n=!_ku01$;x>uO zCek~J)(&Np8(D#$T)Z{O^t~Rno_{8MCF~<(vjM@F304;c%1HQ55aK#3S5E(In^S*h zr#zlcjuo;rB?_O{JD$6p!05d29$`}9*>O=4tB&)5R`}F?Q35Np5AV|Bkvtg)i``7P z9a0}+JM;Qma`&n7xkjalKZDGuN9H_=y>LTzk`o)ZJ_u2f!fX<#&|E(JUM2iJM{lio ziRy30n5Fkj1JKo_D$5j^IG`lC6V@#m-2Cb{^|jvT8*}*wG%h0f`+l1Qhv&(ahf+S{nl9~nsY9r0f>wuVAg)@+qU`F1ue7(A%B zUWIx;A1Z5vqF)ro(Jw;qN?*{k6nOlO7Qy=|D|o<+^d7c{dUq=SmUIQ zV_Xi$t3@E#gQ2e6FMEc6lmdWsr7cm@IS59n*%irIA4qLq13#i+YYK zPe~Rq32fvE>?HE2Lw4YHaz4zKG?$lnaex?RtG?n+`T zMrI&j?fZ2DqDeU&Xfb$PcZX1|zh?gS_Gcwovm^KI5&u)(j>A}MtyxxA-DKoPvdfeI zH5P-V`-aC{u#)#g+E@zSok&~5nG5_ZQHYCi2M#*>N4Rok^Men{wf(qbj+&#N<1y|z zPa+pP78$tGgmG`JPYswi771J^_9nOn8 zQeB|f;tOC$u`S~x_Yi|*(IY$YT1XX>6U#ls*)GA_DOyZGD^I|V8@RW zT}FHVIPWlOx%37Klr3(ilqE0Ge=wY-?s?n*V}zBr>4_)Sg5;?2@CR+cJxDE-F5QWJ zK=rbM5`kf1{_f1n%&m3iels%oUPH&92{vYpH15?{%t7N)U_2&KIpl~Z98r5!FUknb zROb(|niks}Yaf5DcBgrm*#=D%moY!}SLh>7JUl$USsNwsLbFrPWsx41@ysP0itzP| zm)c$Js9_IwcH?H+ML5=n=EI^{!NM zD<7pON!HqSrZJnzy7B)3nRV(*(B$?NPyJBF&eUBNq3N3z#U#PZP4;gdN^$Bo`Pi+& zGoMnLbr_GSt`rkLE~BKU7uEXoKg|4VRDJ*xJVj7CvOL*;na*+F_Jjk@-L-rFBxT-E z;{NKNUmIiR-!LEJmcoP~Y9Z4>IExm?5)k@(diTj$!TV|bjdmV}THq^q?iMB6>Oqgj z#j}h*cG`1ko0lAOHaxN>SVamxf*^IG@)lY+ z`@9AvB$^`K5Co+ZMToQb^J{N$fLjapo_d13!5wX4xcqRDb_R04?dnn#O5?@ILL6_jV%6b zx}*C%o#%fnk>xVW*)&rIc_Id_LTeCtm#8p|NUvvBI@ZlLslob;gxxCqy7SMdTs-c7 z(XV9Aw$XP%9o>J@7KcPc%OmI{B}D$Jedn;c?L)b`P(GB*NSB#(9^_iWMsd=OMA%CO z)|eXekf=zEz<`Ps(i8RZrCAp#@CrqT2B;yn9V_q7-+w?#lgG-Vb$5^NanEso)u%V1 zOp!yF2NGv@Pt~jCy**O$<$tLqWoyMQP4 z_Ts*t8!=$CgHr?9cZMN>o;VYMwqRfiLFk8ON4lfAFYuqlGn#Sv*C0i-ff*ApP8-hG z!b?_JA%hhA3e<_$d{lj>!X0Z{M}d^d-3Pk@?^tR01SmpLb#s|-$xZ4}j zIj8i#^YToHF`QtdB3v-L4(Jp+e4-W2xsD4 z*f30?uX)(547)36M<93*W@qZn@bPGCeUFo`K+5si2zO+=;f8Kwv*xBkrZ72XB*D z$cbvUs;3V{5$*Gg0x>?b&-T0K#zG+=sUfb=Sa#=_#`di{Z&&XhDEpBq69~dZD$8(?HA zoV@XJx#8yg&(i7OM6dqrJPdJ|yM8o$FY9vu_)Zn)pK+NhHH)#r(Ni?a+j3@pE269I z5|$U19+^|k1=Jl_W{Rv#59F!_5**MrK4=rFN4XT*R z531SkO?);@Y`DTra`%0t z)jG5~n|gWs6m$Azn{s%0)fRRSf0(HJ#%Jvak#Kx~SZ!CRdwTx5PU>q;eqvFW-`Nd4 z+SvlHB|FFr{JbP8Y9qGDi2Xe-JNrX{ULw8tUqxs%o1HKR*YF!@L`3^quWV`*I!p6~ zfJ9rnNKDKSj8ztYG7euS$G)jqC*R)^AGKT0%nLxeB<77Da_HZH3$?OaRZquoPo+vTJeYPk0hs7~5rYS7#R z&tFf@_0>zma6~W;&!@DXzm_2p_&XHT#%==s0ufTWi!48U&|T}DK6%a8*Q&WNTl;yP zM>*zG%Mq2KSl5uC4!aphxCRd*W_MMoBJ-$b>)0ldpH~INAAsOpX1Pdjfg)=jXt*gP zt1~V0VyGsjspCnkcC${JaC~lG){`dFlpM+Ex03ymI)(}#WR}K;pO2z{y<;7gb{j6b z=^gjI;R*Q4`-uv>9AxLqFY?&^z};siI?~yK|AxDouOsIf`o<9$W^eiOninr zWub`MnAcm7Wxh{3-m>b>#z9D089{r5gE$(@ayy~Sxj?PSc+cpCJHNg0rAq0EenbjC{0Cy*F1I4<(bn}hh;P@I1U_=+ zaS!Xq+3xFQ6jEHmP-#!?uVVBjHMmQ$l-ghE~r0Nvg_hR_$4aIxx#|cGT#J^%!c5KG84_yS=a@v1$ z{+V40J#G&5UC|VIAay;Q*hij2^V<1}tCeid{oZ7U;eNe+|5!}fJ6Mk)^9C+4y>TKb zCA1{PdeG|Uv4<`En=kGUUo2s#*bDKJ98*);>1!e3}Y~_2rJ^F zS;Y0vrrx_w{uUKq-ueCeT6|bNPGEHtiBEerC%#}ju9ObH8aR(5G0>JiyRs@>x+sfT z@f*U|#;0njG7cao5?o6UKG+f_Wsrb;kOkR+C%Iqk`r=-mNs>cig}IR4-eSty@eOjC z_@3c6dRbd5AH0{GJ+dS5jis%f?}v?g{EtjT%N@cT&3y~|#{J?R%jkp}7;a@R94>P| z?Q!y-O4}wbdpbYj`1)n!NxI0v(8vX0t#7tB6HS-Lb8qDX}zq8t$(TphYMQw{_oDRtSPNl`paw`dc zWI?1iok-6?qOsS{VR7??{y1{o%)R=V$kJ1)NvW*Vv7K_)Bp*xJYD{-vZraCVK5!9p zXcjld50h&47Q=UnZE$(SjpDV1?a#}YurZHzzT>Ic%AFQs&Arg>u_u7XpiY~m61 zaks~KSEBD^;~|9z}O{of2;VD!}BqnR*pOoq{ugYi~KY>oLdUFt*{fONG*D(*{z-~e_|3U1bW=}} zki5H+L-67Jfk0q?K1CtM%&JY^yxThK&vH31IPy0gIQzuzYIR>#Ve50&3ZK@TlfT0e z?&B%~A?|2r$7!WMq2E7wZEdBiQEOvuPAL+S!Km|+`5%Q@`@t?Rqph~r74|!#cCnGZ zwU$|XqaKxG9^)(C$F1LBzV){8Q2rJpzuO2Tg`e+I^>dP*fhC+I#9U0x#m%TC#zXsL^c*(Z+;JtKWl|51&P34B)t&xBK(^ok% z5&P@((Qs+0vEJJJ_k%agD8OMOLF(zV`2w#H|~89%mFUD7$(xySRr{V)6Cw6BORLAOZ-b6|r@Pa{mfI!tWGrP{b3 zt3b`yrjMKT+Y{-6^W~B&7iA{*5{yRO?SmaF-KKi4g5A$g|6#_*9ItH1^_Q=cBe3M! z0pRwQICV;DT#1Oa@|miCj^LG@s8eFz%*s|C`+&l0YJ722P(};&h z-aF*ii-;5GYPb0!-7kwdi!Nz0J@&tnnQ~11g8g@o|LnZjbF=N!>88)+3d+mPwWuHs zc~oG4d3#J)XFy*D9qY()OJSMnzVg9K~&MPv##0 zmZ`Re5vwc${n7EHI1+?g(IJU$E2czW@HFw5X5~^m}&6RX&p^+5h@PqO-WME8aYFAWySPVac&k_Y1917Yr`dZHi>7drf!BI zz{P+#5My|ATKv*xxGxV_zs1H|J8yivGU9T}BRf`dm8KI~jiQGJlo{t0)kpzI=PE@= zrFAtW8esmRC2uBpXFBFze$}MTW&eDO+snJTK}gnVxJD^5kFwdTTlU!`860tp*-g&q zftua0XtCWNjzeIZ-=h#s_JovQPH)vvz{#0{2LRom?)~fi1tEBTC#XovjY>$gd+^tH zS62G^e}5sb%|SeC`_MG_A?;+*qF^EO`CsMwGMwqq&zgqRPq$g&_Y=|uNn^4P!lM*u zu*M|yG_Z6OyVyw(60VpH>E70oBFGHgy8Jctm5}hNLIf2O`z440*>EiA>wP_~B!><2 zFVUDp5KDm7vNo3xx8gdfiSx>a@0!MSA$Q$mC)dmT){~aD$i$v|fg1%}zrUwViX{!p z0r0YdTTv1 z2_FWtJ-PLYSIoZ%KS@8(<9j0PVP9)23|t#Nq&!njI0b5>zHAdIB>hLja}~G;%e0{4 z<7>suTzEpbp0z9XIEI4($d_bY)QhhRQSUBxokRR!OuC#=^=0bmht zyz}2tX5Xx`8Y)5r3BJFCXU@D$gnjTLFrWpbsL{q+l_ z{u_66HOO-s&6PnCnb&6k_-@J)=}wbrlR;t{tm^kc0kbioE||GFrwvFzx+6$i3A(tfG{`!`B~ z_0tyky^;FC{S1b9!p+2=HiGOfYS=|uz;l=3HTXh4@in3evXLN|knER zC#M9d4dE!LDM;B6Bn^54z-M6(uG*57B{af~O8_*q zpWCav-2%RJ-i4=X|0DYgG}vz{nN==uSwG9GatZ}38fvOXzmVVh8gbOY-ZZWZzz4qh zmQ%)YL=gZ(p4oV?us-|zeIcaAwkts@5#<>6PkQ~*D(Jo4ucsY>lqO0j2nmyK|}3T!l|2_=YfLEz$pNHgUY)pV%8&${1^y+2Q+!qE&c{8TC&Hft~hsBJg*fRWXD2!kP*m96g*_vmuph znBm<|e z(EPw}EmkjPZ+eR)RSPspJI`lTY=_fi5IYRDqaSi3Nvxh;T?mjlogihZkqY(u2r1Vi zxLBhZM{1UMa!_{8JBGyg|K$SM;h!8@e%tCcj1fb~zkkESqx=TU&Un?6LlU7JqHhw{1QSEwk4DCCMEC-c8W9lZOM!6hBK~AhdIO;4Xj`cvcA{W+qe)172V(u!j39`@K1W$Y;dc4^STynm2r<_fY^^nHz z^(;5AoA_CNzG|xen$mxs>g-_$E+4-8iz_d7Z4M#V7$*vPO)Ff6ltE9fl<%;9^o$LX zN4#B9*`0A#9%rY!h2cj6Ih%qlP~u>o=yGlSL2qK;+<=F7bEb`C;+D$U%y*Qs(c=1uS`CsnHH*t$;NUaB=9y3-Yzaad(Db@+0SUTi zLL}ed+fMtJAZN?YKrbp9igFr!bf>wV8r=WdvsLloE`XG0{?Cj30PljkH(j`}-`*^E zJwsV2X5T`nc$?r^wTLu{0~~O?A=Jxl(~98xdEKzOF$}m79b9_P8YI;iR0Q@r5I zW)e}aK}o(FCx*E3#op51j10s)Z{cQF1F=M?!6rg|zmQ|I4ZP*2r|w?>JbqG5?hu7s z+BEkWNZUPeV00x|PZpTg_8g(|9-66ig?p{69{-dt(^$-fy&}7iWu_F~RY=b4*b?`d zdGE6r;+${=yGp)S%EFzA80r*;_unC+X|A%FZ;w~~mLT3HS(CXE3vtR){)?-h1J6kj zdmkae*rXy*AWcwb{>X)#AG&d2^Q(geKI0s?@nyz?IQTzQ)ck~y_k`wXd!Y8~-?#_d zR`O_-Epv7x@Jt)I2cSiujUHu|QjwRHZt(exaWcND`4ObEys~+F0;-hP#*IrhxP>W@ zD8$q+z7v|l?+jNJJ!@8NBT?ZSK!WJjcdX#4+TzAllI(8=@bh zRJIbS;7s;#$3vy1J|lbApasFUYhKA)8top>+@E%Gn6l*o{4IO{|#|>wA+Q zPNa7lPBh!-18_S0{RdL7DD{)YDZ<5tZvjX3 zyX@pH=n?ln6aL2wrp>?o|0a&PY2z-=I7wupTA173|1x8vR=5j#GXzd%Ax8k$x`i!J z=6EsdB@VNCje7XX$lmt^)8icIz`gar-)PSzeBxU5=~6LJ*`dIXG?K~{wJY_Wgk}~d zi@5(abt_yhcIe&DI*u!KpKtAN*Jhz-u|Du~gWnY&6K-GFFPMAoe@Jn&>u>N;;FwFJ z#ch?3D6^GEf4r~xc=CR1UOBh(gjp-iz$equrP0FxE(!LPh-A-AAXhnZx_4_*fI928 zb0Zv_D@_CwpTp=GKuM+*eUhZ@_X9mvxcbIlIUr0I1cdcbgCBABFNAG?)shNtyiW%| z>x>$5?@E5S$8yv?#;}^9AzzuxWDHB<<4|-dP zoJjDm3vNuvcO0T5qx?*PpLV|=@s4I|8akR7M%U`dlLqz0htXB6Xw;;f6}`RB3U)6k$B1tNTQ6UirR z!Gw-8-I|y43kvW{SSs(i>kjwq@`b-yUQdY!QzrL_lW_Mc?(qNAVqeMRnZ5BS-%EfO zfU_ZqS?L<(K5cq|v)na&00a(t+e6#Ma!{YQ9c=oT4vvS8Fn6bUQ_AU3mZCmAU5tB$1Q`3QJ|gX#2KgYAf^_j8cgp&6I$ z@ji{A|4i1~Lj!BQEliDEH1y`w;unx04npszV?&o#kGRLWa)owvIq1KCZ6L*dNX`LJ zU)xoj0nT^6dZnJPOhlT#_8O9|!VhxoQWL#Zy z)5q=82_is}CLXUId-;`y8%(R^U_zBa6Up*MXAaSEJA7e zjXqEbcB|(d=PX~Z?RHd-Wy*Wf#1tFZ>MG%0HJjadet{%|P z#i&5XA=v~K0X0dRBf`0OH41W}dbiR#l_~(X=^Kf=FKntD3HDdCnivl}KVgqh0DDv4 zl}jbo_S>;KWTrfdpQSf#z7>&Mbz6)Z+ zAY=wNphra8%@B^0vqVL-0 zmKeGFBb>JO?#BS&LPI9Pv@dfCfRaaeyM?sO;JQ+ZR-h12HvS4TZEC=GYwCc z(FnZ36V$~)DV6*dxDag#_`H_+ITJc7^{Wu+x}g9sR$mF_>_&-IPMgcuM1tDysJ{rI zp3h>nLd8;>E0&3n0=9;hX7vVjMG#18ve|746+-rqfe05(4bevnFBU}bkFQqv{u~|~ zmg!XySZ5oQi7+Mw=u9_8<;#*-+FE7ke|B=0!eN9d%DlxTWzS2+Ll-}L3bU~%$mcqF znBL4_0zbxmhS})7zL?Uq>iu(hN=r%*k9gL>J3)rT2Aq|y*F#O@!3Efz82lpZCylDu zvsa3|GW@4$y0a)}y!@-lz*~OOQ^4nv@fR#SgN!T7TFV>ICFlw4f|i`dJ!9Jhi-Jx7 zP)WX@L+%>fmaGB2_(+I_?s}OFSi<*uTTSP_dx=%6>tudn{+RQM7uyLr5h~POc7#H2 zUl{eGjc9Y2=b&Z`nOLI$x7c@^Nq(F{sC+E2YeOS8c`1-5)`7hq*f4jQ=J-(QC6EEo zPg+%h@M`468njfL$2^^gNXRtKZcDmUn1_};2~|Pm%kM!wP-LBPDCQdT{(;F^1Qrd+ z`B#*dvp$04WcxANIV}vxf88hQ!Of!fIcu+r`*TZ?Tw4HQLS)5{uyX@Q+E)uMzTM{B zsq613pi_LGliY$5iKTEj7yl#qK#;VBdk9n5B_9A)+J~+iXK%;@W?G>Ce|#%t+JsUA zJX$6lC)`0p3O@YEIf+gDLko92-q@pozbey$C`+`{>&Pst8Fg!X zjs}WT-R*ZuKoZjx2c7=o^75?yTLSCXR*~SmIWK6%9jV<*YJKN5xy#+xs+mCxTE^I&^etyhyjlJkSQyuRKRu>Y#OU?>n|YS48qeX*ditK|ke~khBG0{i z^%^F8#4u3VRDcM1@9j6{(_ZBh(4tcbg3XnQm1hhN`_pn&j&*K0dX&m*>=8sx}ecW&!S72O#n5b^#0oFB6j6rHY3 z_W!l_-d{~^QQPQB0I32BQWb)N9swyzRZ0X!X%@QDMWsqnkZvMUR6wv$M5IXXp!6;Z zs8kJzN(Ti&nsfpr-;D2jzcKD#aDTas!SU!`d+$}|n&p|#T$`CF&4u9bf8@mJjctsJ z>#BXwvN?SDXqUTKjB>5(U3TZ+YlI|x2>@e zUCO`sFAChin44}&^pd`&CzWSD&Ot$lx(h{&-GmTfUe-Pi`)`?ly6+$+!vyp_@1^MM zv#KECaEwf-#Rrgb(7sAuGPsV0;U+l)KYLBE6$87yvA7p;4uy2NzsL^>VocaAEhNJp zH^&ZP2i-{)=`RDhi~tq}%N|0nzh}g4@qT<46B3n2`L)-o0&m}+Q0lNI%g(wCU8lF8 zt;o{b@0*MqHy_F(i7EhXC_F|;X`y36#DhBCX!tpR0kJU$hS0#y3k_vrIsev zFde1Kt2?h)9SFR=R^>U3LIeF?G9eW9KIv!Mewh?%GIu0(oxR8$ryY#gCE}$T8U8O$ zBKmpjowX#y`vLDQ(SYWX_0XsntEYoy-qg_xVxZ{0b3#l!`84wBy*(b~3x9kU<-j9; zpM?JN2z{h2NBy^Mt13ON)oez05pKs*7>j!1_{S&phtAU>o3k^_=-`fs?}2Ok6R3QC zKN6NB&ktoJl^-N!;QlFKnq;`|)}2JijC}KKwd&=y8LjQv?YtgU|IjIe#L~&s+Zreg zRH{fDEx(zXmo?@4#&fQ12~_ljhbO)yf279?SikG&Yn%HX`6E!V??>5wdUr;e?Vv4z z$j4;TG6sD}U01|>7z-KhxUT9bM}@H1osMRHX!AF!a>8B+nizd->C+?=5~$BOvEQP= zopGe~Z6PS6?*u|ukE}kdkGy*~%z;AEWU^7j66r;0V1b>acNdbe1Vuj4T+d2OE83K* zo0+foe>}Cj*4qarakmTx%q%VJsPf3#2s0h1y~7`-c%B~F;J28Gp3{|&6d6}qDmLd% zC$1*ng^8K<%^vjR=YtUhIXR9vQZVMf*7h@_3pJH6f}c`IdGNaX!fKTqm4DjN`HRRw zOui|O&~lQpVKX^iLnl&2%`&h68^Jt2jQFYbu&qW*%h(v$1JtxKv2PJI7*KW z-zRmGw(M>ySSbU@s`Flr4j2BuaS>)Gaoz1JNPrS|_kL)WlU@S7?#s7W1TAbnz|dG* z5tn|e-__`mCT8{|ihgx-r&@=)I8Wv-l0D~k>t1QLn*lh$n5@MFIWX)mB(sV2#D zvYo-wT_8mo1ILh0ulA$7H0qljg)~dz!XQ%wFpcjnc?wNq8;l5?seofTMn0a72$TTt z!u!2dcNaLR)V^|%i*t`CT>_P_!rQhj#pWHI4bGcCO{nqHk9%UShpyhA5bgy(4L|c3 zkS!G>@tCndtaS1NcaN3fwF&hmZsH|+gqOPJ?lr25IDH`eL0a$cC`SnLnKflT$MTv| zm%eQ2_GKa)@X*n-r=NJ(5Z>y&Djkk1siCy0oSdBX?-u3&m-G{arapC9 zqM4B&(*&Uxga?PwQzd%N;>0&`7}s+$LpWC|b*MblXxjaI;0;6lxRIE(g*9fS4DO25 zuCW!;_wewKRi)%)0I6?+j3p$G$~5MK15$p=i^FfE^^5PoK2#%=kbDlJ*+b1q=);&- z!$_<1vYAu?WwLG~uJQo!unYLS?B})kwrfve(N(ckew3(cC~s;)1?XuM4yl00RXuBN z4iSbyp|bm`sPT`zvBjnBtc?btNpv*|p<+vM35(W4kXgkKp0WP*P{9(UI6g^+aI z(^nh9!Xo%`&_Qh(OMXtnd7dQ>lTimYDVYdKJ@DUwADNVR8kFGrw)+L05S&G6b>m@;>ys zO;KWT*@7=*DIJ)*f$WCm(bu$%&J+cULeJEBi8=vE+rKp=S8<;{xcsralfa#e;u zzF&oMe#x4@9CNj`Q^FN>vR<*Wkdy1lFw%~M>NeCvgv{m}udU>XhMOQIVF-OllPo-a zdHfTH6||#v1sJg zw+c-Al`D;DIrQf2C>eSX9-gD=#LnDLX2>iD++ab>QP99*0p# z!q|8qnZQ`f@etT?!5(gO@y*VqA$^$M;$H}#K>fK4W)3_aPkyU6YYzphcGXNJPl zOpRKv2|M<_kuLI3V>&xoU%gtl(7zYS4a!+k*JtmM8~x)Fq!`dhd?kkXW~Qd}13e7O z4u(}5X9Tp8YphXIB-SWjF8a!Yb094aYmY^}^pBO!H!>Iej<*M3gs3?tgpKdGfwq5t z)gQ(XC)9maZybw9X8}h$8h3kK-GrO|tY$x5lE34PgVu_&j-c3@KC8drz&uM2%~?6_ zTV>5_wf*30K~=LS=*Kf`?3XJUkbK%kSl&$iSg5y9rT6*kkyIa{+DYRh&L;{FdEfb9 zw)3wTL4@e`Cp3dLL6fE1CFse5xMqivf-H&w?r+raU6gAALz zlG1Yd=Xut57aOE4sT3Ku!p+Lm3J(2Or}Erv`Pg6T^Xt585G30R)CIP;o_!bQeOg#} zx;l#V!R|D5ph)$)(&9+hycd04F?noJWY1rC4WE&87|C*>0$rVkl=wak}MJ zcd1CY3O5xbn!`z7?dN4v`CU?bv>VfwQ7jsx5t1>Qd1Jk=*hqlvRhh@C`=sfD*wkfG z{34UXe>oST(}TF#n)Oa{o;|7Lxr>)x;M0T9J3E7#7B(|9MELxOxM&uGlXruf%A%yX zL)E32jI6DBH|b}5u$HVJwJZY;dfsqeYvD#xOhZaSOI%0q|5e!-{YpyQ<^gB0l9uv4 zRyVDlNS>aZ(;!L)QTg)7^q@P~ z+C%{g!#%p<)&QB(_kc)w>|>2m?%g^=lNc|__K!Jfmu93TjnyzX?QObyhmEm_c(SAd zr5iM_D3u?KH5`>2T>h#|x`rO$5Prs;LAjd||-Yt*Ij+H2CS$(RS9pM%7mL6G| zM|>V2#eMJFPfwJF-eeCCE(gUb*FQ`OFF=mg7Vj;#yW3NtT&GQQqCIKfltw}W^n zRYN%#EnqNc_flh>f1(>DBhiK7?8eysh$^zQb{w=t(MOe1lWUMs6erHI!?G?@cLCg_ z-Q$bDsb(e&{8IH=rn^w$32)gD4LD6h?;scYC|v&{>lOnu)Rkh9Xj8?WrGddcI7egn zo_Y0~{#HhWH@Q;r<5GTSRxv~4`+b4elV!bU@k|JwgWIK6Ksgf-aPG0ptaG?{EaqHt zRkQ}!FQv@rx4(QpNAaXI+dwO9x-E}6GMH@jR*#rA^Jy=9yg~n6hGAsJ5?whC-w6UV z==_W(dgIVZitp0@VY%F+zU@My_Su+S-QBjRhh8hw~Bxqa_?HuF6m|k#1xV2N&xeys!XHVu z^xI1hm#F_5sL~~WYo%x;Zw?Iq?lmPm)3^vet%NIeep-Zh@Vh(bh#62MjA^(tucWz; z9^<1@0rIqK=JMOp(A)~T`h_NEztNDsLjV5dDZ?I_467BxhfeXAvktGUBpl7i4&8Al z0@LWj^7g`0*zf#@!ZSYw;VM`CL8;-$b?NRs^KR?4sT@L-K&6}gKmODYc_n+#vOc1G zv+1!r<+j&SQ^tu~im#&cV$_N1B#(xn?COI)oqd5rzbB8cR)wSu-n&wW(%zHL6ZdvPN%qwlBzpx8~iqFf)Q|K)%QqP#9^wC==HoovmKro82r4nv$ zCBOl6k&R8FLJ0L=+lA6!Gc=C)g+xxGh?d*Lk0n&~6W|vz#Fjm;ITIM&6mP}DqS$rR z5}?w#=TF}9AdW%GDlY9Px2d!0d63Y1Zgu zpG15t#TFvI_5IDJ)RL31>MY#((;0(Cs;g^G zfL>JT=b+mg$%zia4)QhnG^g7;=v$MizFPbayzbwAZLn8xNc+@DBa~j$ecarTFh!Ty zmYuYLLE5hRn6sK9_;=4GGTUTcRprI~CD1XU3uW797H@s3@$T}Hc}I^o7(Bu2*g_yH z=9>HaXIk?j#LLaw(YHL@|Efu!q#rlN5SNKWb1F`BM{x1#$33nBv;amY_UN}(FZ=pe z?zqvxTSu-5qO%4vHQFS?lE}^(>VrbcO1OZ}_?hQ@Fi-jq!zc1a-~FlO+pf5Z@L#&Q z8_jhmo=Y8wJvRAA&YaiF)=Ety<#bKdYqA@pH)NPec~r*%dKt;*{?7}|Z--CE4!-*G z*>&fPYX04dsKYAX(~2j9bnFL}>Ug0HntsJgd}t_hY|-3^;9bMQdbyo@_m7^!tnt-~ z^PE^T4%%ElDbP2PW(P>u(x<=2^+7n}%Tv3+%Twy`DTv1dfaFH6(PoJ+zw%g$ER21o za+~t#4$QN%Ffbg;I_!{8nBtN9R{V_iDABg&IvPmCMlbHd7L(l|Bj@y*dN%K;FS4-$ ztYXI@nljXvsXLi46#c2kO5A`M&5Vz66Xm$E?Sj9JAqJWz9O z+<`I+G_g}vcXS)K&s?7E?~K+;>Ewau-js-BCd$O9hJPGaA{5xgI~QwtG|DtWNq%IB%a9rxyv)T6h6L4Xv024HbOwNptTY=Y^OF9iMy^u0ci znihQ6B}d}rA6?2xNZNBX-Ie3P4kV!aoLJGYiQ%2Vvmy?^Y9YV%x01K`7`e)kY-%(6 ziCQcZ!c6?~dG5V1D5gr0+JIh9W)qrL(*6QlgTL^-r5tq*BzGG8<$_i4-2Zuu&vum; zk*%dSb`jscYu%GHWh_&3_%D1d3EgIuw$P!-lK3vQgQ;9`pbR$gpsQnzk4*x%mKv@! z-@pz!QAp1L9+V(#))@)GCjWLsZ_=0HrodY6_o!>%|DHjL!l{Q`9 z3uF5X$C?UYbx<9Cnc zSf+Leel+GzNL-P4?H6gwdU4D8+=ZJBO>L&>x|(hrMa%XEiU2{dO#ewIzY4l?(Khhn zNz04kJfTBYrbZX6p9SHavg00xj8^PyC@RGD_U;Tk2bW{Gt*T!wd@&A*3$=2S&zxds z)D>S@7FP)z>OQt=nv{hxTUleppnQeuoVBvI6_B!&t>_sl*<2nccrOtF+W4 z-8U78G50eu)%J=L`f&j30gfZbf4JSE312w+34Kswh zokWoYH85teZBX?JKkp}Ra&`~&=7C*_AWwn;uz^qjmQImJvXBAuB%g!MY_p+$b zg6Mr8Y&3X;m==%3QSKefmTQ1gY1-oD4Y6s0o7vxmH*ed3x@x>>+sG;o%`ME1THby0 z3Xec-iOD)szQ7C$!7M(paDGG6vb-3_Jl0B%?mAXgj| z*0-h}hko6bH2Z)3H3TPP33xMYAO|kOIKCc0C=m}`d&CS+x2e&gx$YKHOF`NojjQ?l}{cZf5*zPM|hd+F~jvdqemStErz>IqUj$ zoyT6M8yP%#h`$~t=CY!NQv(y!>aOiyQsW}{o~^#I&lELjO=6CrfLw7_8mE?cwPqc_0KELXkn; zmiEF879ulh+zH|EugtH#K%qm#gspQL9fY5Q-m3@6J~3yVRtP`;s=UC)Up@~rPoyoY zG{{%q=`8Z04WBi!t@vM}b?`-AM;04_J_#ZhZ3pVxrL&`v;!=SXNjhTb`cVd%46`g^ zKf<2FK?Ejqobrp%WhfP>NNf5LLn~o2GH#3&Xb^LS2&wfh^;_xOj%Mnb%r}iVG z`yk+W){n{z3vQ^Z-1UL7pfGb;);CYPWVJDOiHdED4;`y+Q7g_7+?9 z8TP$#JrhF|4J@gb{oKDASkk%ubcyw3iupt-EfK`#f+_A!^(r8@9GVyJ--`MQIWSd@ zGUqPM*~6wgp7O{Iy8zUPau=%_F30~Kr^&Y%tlxS#ng4-mtaKiA>4lpK-8hwK2%S6j zJ(r+-krSzxbtL6ggP23o)achOX8GCVO#}0ZJnCcVuYL7SR2`3pcM4LK?>eF@8E_ZTo5qH*q(VnI`J6J&>ZgFA&AW0e_wrlnmB6&QB(<*a&jju2@mMiH zL@$6d$qMMB*w?KyF!w1*Cbls=Q)eBF3cN`OKW>I zzfvn+w9GR)PiAx}_!`^A;E?p!122hSTf?&b=_@;NOru54+QwBQ{-sz2rA&Yq`@L@Ke|oKlT3PzwnZn+;!=| zan1a!0`1}TpO!Av)2Epb+X=mUkHqE9y)4XF8n&$l(-+O9sGpqbedH4SjZJVK{Vgru z^G+HHmrk^CVB897uRWM(|A`y+wjo_xj!-z4zLeZ7au^*SPt>BnJ= zVX2rfGP|(o-F2^(bCi>Kev)9OW8mgX@uRU|4tAGLf6ee?45M5UIkzM%LJv?0QaRHY z&GE**y~jVU;9}sur|{a8+j+yE3;QPruT-;TSJSFah`^_2Gq2q=%Z(Zy@Dk~54O0b0 zF6)OX zId4vp>bPD6({O)k->u6lB#FM9Yc2Yjx_6)aqeI;1L}s`G*}xX+QjW*8+;-lc`7fW$ zV}a@fP?pW~vmFI))&*tZv3W`NLJFd<(%wT9-81h%_{pKq``G()JmoumgUAce5o3bt zIx~Mql4AMacsjQQSk5%$v&Km$NYN~OW}#Wn!;tWmLNN)sTTW?HH)SLvAs6K08=g=j z<#2hv*GNcs)ehUZTRWMd_`hFo7)C-{a!8)@v-3UYk67nDC;8aIV+=?=S_OB`)ZB4h z@h|nHoG@amd>Vb^3t)|U*q`PLtipE`XxkgMks}Daym}`@eunB6oKh@a(_6~hm7Ces zorzy;9J@VF!craxNl7XHe#@)BgHTJvz%@pIJ8mIWJH_r54>2^cKRfKd9%b}>v3$`wrQ{Wx1v0{?ds!7*>~?^ zEcg93CFEFV7-Zv~h2HTAHsJh^O;bCyNrunwg+>TVy3Ag39y+B&Cy}Y&F${2 z!+v&rk0@S03;ON|hdv1!tq3vTi>Ouii_+?oh+K+KZNfchP(BrO;R%-EWC|`C%fNCE ze^+j6GKkyZch@`NLyqg?_foq!LaF(wt$e<@~oxc(lR4l5$ zEY3@>InRP+7k@%!@ zImz^J;%{N0eD2>rx}IM+pk9&Qw9u88%JJ|{tmWpqP0!}5F8+;=a*H0C$x6$&W`A_O z9vu#g+4s@dS~9o3&^3K3Ojz$~0F{}KqOa-!gX8)z`)i+q)5mpD?cm&;S1>{gE0yGnDS zl;(fuKnRaNXHhp`2bS*9o05&VCp8E7XSCod{O}i-(U?N(QSkpGwYT8Q0r04%ST59C zT=(xn+o&Yy5`}cSn8kySnG8oEt%pw`kxArocmKiw&`Ntci*o-}j+i6ffzhC=DxlS_?+_G~wgq@pnd2S5- zNG(!nuoZ=5q|N?BWlYNMLYUP~`UQxG5}#ZhS5JaEPG=|;%281udUi)(kjuC(O}>E| zf)X#zRuU{EOv+?-BBfwDgh2{_fqDjed8)hGgmf)Miypaam;jXoN>C5M#v34ZGdG?J zfLgAwz9Tq#cc{b2ueh;EZU-u)wIH#Mve63>H8F8)jtjLc{+q{2prD%c1HbOCv5y9A z;-5W@`!^L*5MN3he>q%An`6f|gMap*Q3DuIRZuYi&%ZzepN?{J!8@R!HQZQY9*F9E z$)}Ken&Bb7ccJ`e&hJwIC{P36V4EN97LQ8M!|^J{IoHp*mlyhXv@x^QZE=BlM{F z$<8#Y-Dz_SFfARx0zWzTQaw+jEy3CCxA5fNz! z8W_YYkY*9p=6K}zd;B5x-gypcHGp-dw#0eb{lH+hc?s1fvX)K3AY?XJ8u91#opeAbqTnb2oMh0V`7g_*dDU=n(#5C7LO}Usq^=AAD zSlO2?ei|bbF5@f=hF7M_PDA~9@Pl2uk$d#i1fldlCU;+R ze2-EMtsZDIjK*MoXnX{!P5Qz8v@o$f+h{`P58EW38Tq8zjh3YT-TZiNSrPYxXW?fj z$8$I%LW*`A#hv|-RZ<+bh=K;rJjmC zqLN9=i;+YcL5^NlAA>n>fG`2M^E2{dv!Aeb5JXup7OK3B8U1u$wl-XAeeZzY4d zWK1yq?vt4415)zT$G~p_34}dB2af=My3tiODCo1u-Jf4) zIfsug9`wc%kG&#M0*hTnWmVnhh3wsSIT+Gz0++1#6L4EQ2bd92Im_?XOodV z!!6}>XEd;lJhVOlZE;Tse=zDz+vpO8?f5IQE(;i8l?*s^)#0^ckSyk8tohDINypnE z@wot^sTUXhka6C(_dCKL6{In~U~_VEb*S5X%~{H)*hR=<-uiIS>v7<^0tB{&qX3i@ zJqD6XxC5Y-IIVOM>PIr${`&*(fpo-AfeLiW#jc$H*$biQF$Q|xA`6{Y8aQJ$Me37H zLu61+yR{x}J#M|Zh{@AL>;REQy{}wJO&4UBOq6xLcsU01;D0wB5SOMclCjaRSus4b ztJGn-gC@YZ8hH}vU-KR68(NN_$5rIa$JC&yg1+t6yU&VW&gW5gStm`74YmR$?{kk3 z0Tj8@+!a=%B-$&Xw{o!0l7`+^LU7`)X=Oq^P`}qR-UOzX;{m`ASo_640k$qhXtvEL*$CiY%28iI>Y8x@j9k417$e0rg0jiLt`TQzHJgeYu#P9u_U+d1nq83gz`>DR^)Kn!08JK)I@XGxUX6vq_K62@E8kw6 z-saaZ0gS-f*nVm0`qf`_eiQz~pa9(OnObcEjg2U1F(VkA8DH2GaZP9k`f`D(d%)|Y zzmSvkriUE$Kbq+Z&gWoA-&pI1O)N)cuQsZ7paq~2PIJ?}KkN^x#V1S%11*qvj8;;2 zNQfZ2QgR)X1Qgjnn;5=G*yNzudX(tlycDG$XVVU97V-tXr)U!;4xVM!On?8&%S;Pp z(!$*b1ie3R`MZFbogpzqR|@Y_zgA5@a(p;|?4}<_d=|MABt%VTDe58AQzS0GAD4Cl zOR8F%Q8y7|VY0PE16fPD1Qh(Qj!VHb9iV~0o>5cc?H}7_Inp>&vTn3|5V_lU6%2kp zNEZ|#^NJn5%~$N^Rx$L=KcPjP@zplvR{*T)GB^!aROc3B-Z&p-HMWV_qj18DlJAGqGyJIZZuT>SWfP{xH*8@j>)D&funMD*5Dye{XsVXVEB z+?@L4Y)j6PJuQ{jxvio8h!Ax9+ROUxcaVG_u7C#f zNqe$Q`TSB8;j{-Q{nHu3_2MvRpR9U!bakBc8UId52P~ghMr$b2u}zUF+En49sjV_` zT3LzH>81Gw!@5Kas`=~2t?+S^W&K}D2jw@z0%m!9gB(cTiRd+io9q()4-_@=4OE$0 zuNJF6m>6apz@S1UFN!2128;4rphKNtY-ptw@6r!#Ly0EwU+#Pu03s6hTF25cdb3*HLV zYKDo0?53P1Zxwu9LYD*rP|Ov$)@zdQ^cgC~m1j5*G5#O4|1Y<8HS{mR<|YgyzwC;! z?&;0#v2zzV8vE+z~FBi}?HG`1gHtPGvi&0F7+sY*sWk<-(-!$e5* z@KYJZ8vzl?H=MF1KvAvByB-#oXJIjaRaDO4m;r_?*2>u2R-Tbo|998qCU+x{nrv5u zX|NTNC>|Cbw>>X!af_@G^*^G~xHCYFb)+ipD@eRMjW0O}nR|5PV@)7^YQAsZULc1p^hRHFI5MDH~^$VX4rQ$u<+(pjQ6bP&#*ZK-Q|DYE@Q%^58TH z3x%9dJOgnT^!bXx?Ry=zT{0|83|FeamM_^#z*f8fIC!Hb6qk!OUz&Eqs3|JQhp9?*#GSh@%3T2%I(t9Vy*@G+{-9K^-?9UfS3aa{y9CFZL^SV1Bd(ZYhK4WIl%qrjfgF}g^Oz&LXL0ugQr_^+8q0j z7iR9$?r?gr642#OK>klj2maxnx1H<+C|K@#Yrv3mU zy_O*p{PPqJK+;jaCE-gxqxodD6?M4_6=n$|=P(Eejct|p7y=dsbe&h=x3^@$>>w8= zf=u_FcF&0JlKKxg?PM9M5}Dn2?+2va#iA3ZxG)zvafeG}Y^aY-W})nVoa5?!km1BA zKzX4=nS5$noOG@6C>KuaUFAJ`@}Lu7VqC9jc}Eh5~rY?1$H3Y_?S(=fPhRg--{h1 z;jmf!puz^~Z{Gh=LC%0@g_e-jW!dT5c};XN>sK_V-g_0pCbirpn?@nutGMRdDN%llEkf)OF?c*r2T}0&Wlhx8*c)E4X(?jnu$s68ywx$ zRAHW8Va{fBOWzYd_tvD6<^>4Hxr~nO|5@29P`=4;#DMz1P_UI`Y;dT3%Nd~vz949` zgc5cRyIx#hn{9cA)+2ijkW}u3Nj-E-&z2S0+@JbO9l7^XT&2vp39<@NmR|~*iW;&< z`mEbiUJH8g*{HcQqV-S$iISHI=i}@{M4GA#jSu)NT`_IFx)kdv;o}siL%k6=K|(Hc zXHCwVlj7C8&i?dxQ6u$!YklZcec|CZ6Eb`5Ew0KxEzK=i6A2 zOUH3ed?VsAN4ejZ+{R?vMvK!QK*`6HU~+BvgfRXU)Jqg44Ezn}^4W6SY zEZhe^yP51ga6E+GQlLa*=oeC$@&cxu13m`y0tiep{AaX8h@WwN3bUwNu8a+~3vLMj3Le#Z8`G zQoe}o`S2EN;h!1)GxVcROH!2oeAQ&qr?!S%Xl(%@Fp~hF- zDEjW(;b2ensV{anE@Z*_0v3f|0J3bZS&nc({T_|T3N&;3N16W>q4Oq1!B444?}c{Y ze^a|TthWztn?EsNp)!aenWBtubZA<3z2D?_K&?61*`VlMT88`LxVF-U2{TG8+6+I( zBoa*FxTj-9Eq<|TbhLTF`ad1w3EdYZVOY`k?7**ao$Pf;uAzS4j0`AnESue;C+4mY z_>6cchH*F7rN1$wcKD#Fe0X)_Hl@rU$bZnB$|~E&g?^;%9BoLUN7qxKYHgr_hg{*- zv9ezOcH7x@VI#JHibV7D|24>rS&cN0&aUBgJ(V25rsl8CHbhqNR2$m)vZ7v5|_>L#Y)q)dJfaIBrSoR>Dm~iTtk>Wy^B+Wk8pN`PR-ka_1?pND>|6pjT0&WlOgWryqXI9wRcBdmE zQ_^7DP>S}4rGCtgUF@qbz7Dd^CbXjq$$Og!sq4r4FJSdpC~2#GrcD&G&hHyVA(1b` z9wMcCShT-5VJ9AZZf;~SX<0cd-j;_ct>JX*67v+zefZu7UDLwKp{ zKoC!r|ESiCh^Sq~n|wKp&2{s8?`E0^qq7v-8Iktcw(}JeEYy%~xan8cUpMREg9ZpM znp3_g8_>Ilf{7n=wXf<88`FQX*k@_tK5T8R?B#$i1Qj>16Ds zgx}lx^tIpW)_*v*iwJ*ety=L-oubF(b5z3j&%#vhJ2R>gs%%6~4W@>HJBsNSP;fV8 zH}2Phum)2di|MqmOOZHcM7aXtue#F3w@<61YdWf;=f8v&u5#f(}dR z_8*C^SKxW#9jhQ{jxCkn;#IgUWU~5$Wykt+c;fYnH;KOrkbaV2 z#3=JYL(~r;N?v)%(toR*DYDQ*eAP=v_qC?T7X9*snS0Qk`+2i{shKfIIhfk+gmVU+UrhZUBIy5w(v zB$-*HTk?kWwlGf({r&BYKjl?R**&{$>?Tut34E|$L!F(Oaa+>Y$A4c@$aBZv`sp+H zU{BL6R%*y=9U_Q)%%BN6Y>4pKA13g`U+XsRg9QkG!_~FnMK8R$`khZ9Y&-{e#=EO8 zhpBVY_rBdjnQvexCMT+}gP?!Yd>%exT|d;Ew$Me`QeBlH#_=Fo)lv6ZvBbOIAhNI3_EGSAIUp0X| z1kdo=aU9?ek45k_MFv!A)_bkd)m}NE*OG@Us0UQ`$;Fn-KK3^Z7pxoe?H6Zm$G(Gg z4I!l5WO!03n<-#eL zULhthlkrlaMYp!^jdKPWAlyMyOCn3;xd4VhocFlS-B(Odn_$#t%#(7e`Tc7CkrGs! z{~wmj*m@iO`GfHu8w`xZWDTPuSFM@yAN?~73cn@B5dU@|-Drd{+v*|{+pts$8;Xz0 zJJiVi@MBgt2d61@JSO@eV>wn2 zd^VI~d^}Fi1JmN+Meox&o{qju9%q+%E+N_&eP!&okO8rjTdc5`K>P>`ec<7wwm&xx zFYxe>0k{)tWf^8hVr|vOw3Pi9r`qwQK0L zh8aIJyMGg=@DZn>k&~Qj9MJ$dNZ1OeT!J1wj+9`~xWI-S`Rea5lTil@$RXSD;av}5 zx@QHIJo_M=ve|div+sL(&}3d#f_?bGK@6>8W7{U4m15UKzG diff --git a/web/public/icon-128.png b/web/public/icon-128.png deleted file mode 100644 index 5d1464a7ada1c4dee741a474b892f1cf87944f23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5679 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 V{+N8%g;W3l002ovPDHLkV1hMo+s*(0 diff --git a/web/tailwind.config.ts b/web/tailwind.config.ts deleted file mode 100644 index ad9a425..0000000 --- a/web/tailwind.config.ts +++ /dev/null @@ -1,160 +0,0 @@ -import type { Config } from "tailwindcss"; - -const { - default: flattenColorPalette, -} = require("tailwindcss/lib/util/flattenColorPalette"); - -const config = { - darkMode: ["class"], - content: [ - "./app/**/*.{js,ts,jsx,tsx,mdx}", - "./pages/**/*.{js,ts,jsx,tsx,mdx}", - "./components/**/*.{js,ts,jsx,tsx,mdx}", - ], - prefix: "", - theme: { - container: { - center: true, - padding: "2rem", - screens: { - "2xl": "1400px", - }, - }, - extend: { - colors: { - border: "hsl(var(--border))", - input: "hsl(var(--input))", - ring: "hsl(var(--ring))", - background: "hsl(var(--background))", - foreground: "hsl(var(--foreground))", - primary: { - DEFAULT: "hsl(var(--primary))", - foreground: "hsl(var(--primary-foreground))", - "50": "#eff6ff", - "100": "#dbeafe", - "200": "#bfdbfe", - "300": "#93c5fd", - "400": "#60a5fa", - "500": "#3b82f6", - "600": "#2563eb", - "700": "#1d4ed8", - "800": "#1e40af", - "900": "#1e3a8a", - "950": "#172554", - }, - secondary: { - DEFAULT: "hsl(var(--secondary))", - foreground: "hsl(var(--secondary-foreground))", - }, - destructive: { - DEFAULT: "hsl(var(--destructive))", - foreground: "hsl(var(--destructive-foreground))", - }, - muted: { - DEFAULT: "hsl(var(--muted))", - foreground: "hsl(var(--muted-foreground))", - }, - accent: { - DEFAULT: "hsl(var(--accent))", - foreground: "hsl(var(--accent-foreground))", - }, - popover: { - DEFAULT: "hsl(var(--popover))", - foreground: "hsl(var(--popover-foreground))", - }, - card: { - DEFAULT: "hsl(var(--card))", - foreground: "hsl(var(--card-foreground))", - }, - }, - borderRadius: { - lg: "var(--radius)", - md: "calc(var(--radius) - 2px)", - sm: "calc(var(--radius) - 4px)", - }, - keyframes: { - "accordion-down": { - from: { height: "0" }, - to: { height: "var(--radix-accordion-content-height)" }, - }, - "accordion-up": { - from: { height: "var(--radix-accordion-content-height)" }, - to: { height: "0" }, - }, - aurora: { - from: { - backgroundPosition: "50% 50%, 50% 50%", - }, - to: { - backgroundPosition: "350% 50%, 350% 50%", - }, - }, - shimmer: { - from: { - backgroundPosition: "0 0", - }, - to: { - backgroundPosition: "-200% 0", - }, - }, - }, - animation: { - "accordion-down": "accordion-down 0.2s ease-out", - "accordion-up": "accordion-up 0.2s ease-out", - aurora: "aurora 60s linear infinite", - shimmer: "shimmer 2s linear infinite", - }, - fontFamily: { - 'body': [ - 'Inter', - 'ui-sans-serif', - 'system-ui', - '-apple-system', - 'system-ui', - 'Segoe UI', - 'Roboto', - 'Helvetica Neue', - 'Arial', - 'Noto Sans', - 'sans-serif', - 'Apple Color Emoji', - 'Segoe UI Emoji', - 'Segoe UI Symbol', - 'Noto Color Emoji' - ], - 'sans': [ - 'Inter', - 'ui-sans-serif', - 'system-ui', - '-apple-system', - 'system-ui', - 'Segoe UI', - 'Roboto', - 'Helvetica Neue', - 'Arial', - 'Noto Sans', - 'sans-serif', - 'Apple Color Emoji', - 'Segoe UI Emoji', - 'Segoe UI Symbol', - 'Noto Color Emoji' - ] - } - } - }, - plugins: [require("tailwindcss-animate"), addVariablesForColors], -} satisfies Config; - -// This plugin adds each Tailwind color as a global CSS variable, e.g. var(--gray-200). -function addVariablesForColors({ addBase, theme }: any) { - let allColors = flattenColorPalette(theme("colors")); - let newVars = Object.fromEntries( - Object.entries(allColors).map(([key, val]) => [`--${key}`, val]) - ); - - addBase({ - ":root": newVars, - }); -} - -export default config; diff --git a/web/tsconfig.json b/web/tsconfig.json deleted file mode 100644 index e7ff90f..0000000 --- a/web/tsconfig.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "compilerOptions": { - "lib": ["dom", "dom.iterable", "esnext"], - "allowJs": true, - "skipLibCheck": true, - "strict": true, - "noEmit": true, - "esModuleInterop": true, - "module": "esnext", - "moduleResolution": "bundler", - "resolveJsonModule": true, - "isolatedModules": true, - "jsx": "preserve", - "incremental": true, - "plugins": [ - { - "name": "next" - } - ], - "paths": { - "@/*": ["./*"] - } - }, - "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], - "exclude": ["node_modules"] -}