From 9283271b483e319d164578ee5442235f602bb1aa Mon Sep 17 00:00:00 2001 From: EchoZenith Date: Mon, 27 Apr 2026 23:58:12 +0800 Subject: [PATCH] feat: initial commit - GitHub Stars Manager --- .gitignore | 44 + App.js | 111 + README.md | 110 + app.json | 36 + assets/adaptive-icon.png | Bin 0 -> 98557 bytes assets/favicon.png | Bin 0 -> 888 bytes assets/icon.png | Bin 0 -> 109604 bytes assets/splash-icon.png | Bin 0 -> 86746 bytes components/RepoItem.js | 134 + components/TokenInput.js | 294 + index.js | 8 + package-lock.json | 9438 +++++++++++++++++++++++++++++++ package.json | 27 + screens/CategoryManageScreen.js | 380 ++ screens/HomeScreen.js | 405 ++ screens/RepoDetailScreen.js | 659 +++ screens/SettingsScreen.js | 455 ++ services/categorizer.js | 127 + services/database.js | 399 ++ services/github.js | 154 + 20 files changed, 12781 insertions(+) create mode 100644 .gitignore create mode 100644 App.js create mode 100644 README.md create mode 100644 app.json create mode 100644 assets/adaptive-icon.png create mode 100644 assets/favicon.png create mode 100644 assets/icon.png create mode 100644 assets/splash-icon.png create mode 100644 components/RepoItem.js create mode 100644 components/TokenInput.js create mode 100644 index.js create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 screens/CategoryManageScreen.js create mode 100644 screens/HomeScreen.js create mode 100644 screens/RepoDetailScreen.js create mode 100644 screens/SettingsScreen.js create mode 100644 services/categorizer.js create mode 100644 services/database.js create mode 100644 services/github.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d0b8754 --- /dev/null +++ b/.gitignore @@ -0,0 +1,44 @@ +# Learn more https://docs.github.com/en/get-started/getting-started-with-git/ignoring-files + +# dependencies +node_modules/ + +# Expo +.expo/ +dist/ +web-build/ +expo-env.d.ts + +# Native +.kotlin/ +*.orig.* +*.jks +*.p8 +*.p12 +*.key +*.mobileprovision + +# Metro +.metro-health-check* + +# debug +npm-debug.* +yarn-debug.* +yarn-error.* + +# macOS +.DS_Store + +# environment variables +.env +*.pem + +# local env files +.env*.local + +# typescript +*.tsbuildinfo + +# generated native folders +/ios +/android diff --git a/App.js b/App.js new file mode 100644 index 0000000..6c5a38e --- /dev/null +++ b/App.js @@ -0,0 +1,111 @@ +import { useState, useEffect } from 'react'; +import { View, ActivityIndicator, Text, StyleSheet } from 'react-native'; +import { initDatabase, getGitHubToken } from './services/database'; +import TokenInput from './components/TokenInput'; +import HomeScreen from './screens/HomeScreen'; +import SettingsScreen from './screens/SettingsScreen'; +import RepoDetailScreen from './screens/RepoDetailScreen'; +import CategoryManageScreen from './screens/CategoryManageScreen'; + +export default function App() { + // 当前显示的页面:loading / token_input / home / settings / repo_detail / category_manage + const [screen, setScreen] = useState('loading'); + const [selectedRepo, setSelectedRepo] = useState(null); + + // 启动时检查是否已存在 Token,决定进入首页或 Token 输入页 + useEffect(() => { + checkToken(); + }, []); + + const checkToken = async () => { + try { + await initDatabase(); + const token = await getGitHubToken(); + setScreen(token ? 'home' : 'token_input'); + } catch (e) { + console.error('初始化失败:', e); + setScreen('token_input'); + } + }; + + const handleTokenSaved = () => { + setScreen('home'); + }; + + const handleTokenExpired = () => { + setScreen('token_input'); + }; + + const handleOpenRepoDetail = (repo) => { + setSelectedRepo(repo); + setScreen('repo_detail'); + }; + + const handleCloseRepoDetail = () => { + setSelectedRepo(null); + setScreen('home'); + }; + + // 根据 screen 状态渲染对应页面 + if (screen === 'loading') { + return ( + + + 启动中... + + ); + } + + if (screen === 'token_input') { + return ; + } + + if (screen === 'settings') { + return ( + setScreen('home')} + onTokenExpired={handleTokenExpired} + /> + ); + } + + if (screen === 'repo_detail' && selectedRepo) { + return ( + + ); + } + + if (screen === 'category_manage') { + return ( + setScreen('home')} + /> + ); + } + + return ( + setScreen('settings')} + onOpenRepoDetail={handleOpenRepoDetail} + onOpenCategoryManage={() => setScreen('category_manage')} + /> + ); +} + +const styles = StyleSheet.create({ + center: { + flex: 1, + justifyContent: 'center', + alignItems: 'center', + backgroundColor: '#f5f5f5', + }, + loadingText: { + marginTop: 10, + color: '#888', + fontSize: 14, + }, +}); diff --git a/README.md b/README.md new file mode 100644 index 0000000..0eacbdf --- /dev/null +++ b/README.md @@ -0,0 +1,110 @@ +# GithubStarsManager + +一个使用 React Native (Expo) 构建的移动端应用,用于管理和浏览你在 GitHub 上星标的仓库。 + +## 功能 + +- **同步星标仓库** — 通过 GitHub API 一键同步你所有星标的仓库 +- **智能分类** — 自动根据仓库的语言、描述等特征对仓库进行分类 +- **分类管理** — 手动调整仓库分类,支持拖拽排序 +- **搜索筛选** — 按分类快速筛选仓库 +- **数据本地存储** — 所有数据保存在本地 SQLite 数据库中,无需担心隐私问题 + +## 技术栈 + +| 技术 | 用途 | +|------|------| +| [React Native](https://reactnative.dev/) 0.81 | 跨平台移动框架 | +| [Expo](https://expo.dev/) SDK 54 | 开发工具链与原生模块管理 | +| [expo-sqlite](https://docs.expo.dev/versions/latest/sdk/sqlite/) | 本地数据持久化 | +| [react-native-markdown-display](https://github.com/iamacup/react-native-markdown-display) | Markdown 渲染 | +| [react-native-syntax-highlighter](https://github.com/conorhastings/react-native-syntax-highlighter) | 代码语法高亮 | +| [@expo/vector-icons](https://docs.expo.dev/guides/icons/) | UI 图标系统 | + +## 快速开始 + +### 前置条件 + +- Node.js >= 18 +- npm 或 yarn +- GitHub 个人访问令牌(Personal Access Token) + +### 获取 GitHub Token + +1. 访问 [GitHub Settings > Developer settings > Personal access tokens](https://github.com/settings/tokens) +2. 点击 **Generate new token (classic)** +3. 勾选 `repo` `user` 权限范围 +4. 生成并复制 Token + +### 安装与运行 + +```bash +# 克隆仓库 +git clone https://github.com/EchoZenith/GithubStarsManager-Android.git +cd GithubStarsManager-Android + +# 安装依赖 +npm install + +# 启动开发服务器 +npx expo start + +# 或在 Android 设备/模拟器上直接运行 +npx expo run:android +``` + +首次启动时会提示输入 GitHub Token,粘贴后即可开始同步仓库。 + +## 项目结构 + +``` +GithubStarsManager/ +├── assets/ # 应用图标与静态资源 +│ ├── icon.png # 主图标 +│ ├── adaptive-icon.png # Android 自适应图标 +│ ├── splash-icon.png # 启动页图标 +│ └── favicon.png # Web 图标 +├── components/ # 可复用组件 +│ ├── RepoItem.js # 仓库列表项 +│ └── TokenInput.js # Token 输入组件 +├── screens/ # 页面 +│ ├── HomeScreen.js # 首页:仓库列表与分类浏览 +│ ├── RepoDetailScreen.js # 仓库详情与 README 展示 +│ ├── CategoryManageScreen.js # 分类管理 +│ └── SettingsScreen.js # 设置页 +├── services/ # 业务逻辑 +│ ├── github.js # GitHub API 封装 +│ ├── database.js # SQLite 数据库操作 +│ └── categorizer.js # 自动分类引擎 +├── App.js # 应用入口与路由 +├── app.json # Expo 配置 +└── package.json # 依赖管理 +``` + +## 自动分类 + +应用内置了基于语言和关键词的自动分类引擎,支持 13 个分类: + +| 分类 | 匹配逻辑 | +|------|---------| +| Web 应用 | HTML/CSS/JS/TS + 相关关键词 | +| 移动应用 | Java/Kotlin/Dart/Swift + 相关关键词 | +| 桌面应用 | C++/C#/Go/Rust/Zig + 相关关键词 | +| AI/机器学习 | Python + 机器学习相关关键词 | +| 数据库 | SQL + 数据库相关关键词 | +| 开发工具 | Shell/Dockerfile + 工具类关键词 | +| 安全工具 | 安全相关关键词 | +| 游戏 | 游戏开发相关关键词 | +| 设计工具 | UI/UX 相关关键词 | +| 效率工具 | 效率工具类关键词 | +| 教育学习 | Awesome/教程/文档类关键词 | +| 社交网络 | 社交/通讯类关键词 | +| 数据分析 | R/Julia + 数据分析类关键词 | + +## 致谢 + +感谢 [AmintaCCCP/GithubStarsManager](https://github.com/AmintaCCCP/GithubStarsManager) 仓库提供的灵感与参考。 + +## 许可证 + +[MIT](LICENSE) diff --git a/app.json b/app.json new file mode 100644 index 0000000..51843c5 --- /dev/null +++ b/app.json @@ -0,0 +1,36 @@ +{ + "expo": { + "name": "GithubStarsManager", + "slug": "github-stars-manager", + "version": "1.0.0", + "orientation": "portrait", + "icon": "./assets/icon.png", + "userInterfaceStyle": "light", + "newArchEnabled": true, + "splash": { + "image": "./assets/splash-icon.png", + "resizeMode": "contain", + "backgroundColor": "#ffffff" + }, + "ios": { + "supportsTablet": true + }, + "android": { + "adaptiveIcon": { + "foregroundImage": "./assets/adaptive-icon.png", + "backgroundColor": "#ffffff" + }, + "edgeToEdgeEnabled": true, + "package": "com.echozenith.githubstarsmanager" + }, + "web": { + "favicon": "./assets/favicon.png" + }, + "plugins": [ + "expo-sqlite" + ], + "extra": { + "appRepo": "EchoZenith/GithubStarsManager-Android" + } + } +} \ No newline at end of file diff --git a/assets/adaptive-icon.png b/assets/adaptive-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..6147edbbf90a04bcebae973dbf8b4d2287ffcd5d GIT binary patch literal 98557 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ΜD$U(SLk%tGHT0$qNzSi?MiOi1Qq*?7 z8@Y9VB^G&uTe-_O+MUSyRN~N7$QYbwb`;D1QX$%#$c5Ve^rpyw6+$IZ-e#Y$SZYXq zpsYxQ*yKQSP7e078QZ5KhwZ3xKURTtCR0*hXQJ2F^+2}I z=31Cq|MafyvvOBvUD_9_-lP_%c8L+H-5EDkur6&#ojcv9&NaBf?X`BpK4hl`CCBTx zdG|;4YTg%t7YDfgiurLY$znvabaD5^uaWi=9P(Mr+?{h|)z}L%XIc4-reSYx`oRK$ zp;E;a`73)Zd4bL0SZvW7Vcy3M@vao>e>Vt>bvvEQ5|BK9c5B7S4Fx0T_IRw$K`eS& zwEe7;2-xmdJj3Rh=odv}Dch!~G7{_$HUXJ%T|T)`+!MrE&AN(tI9A&kZhdZ`N3Ftf zL5_h&y{{~%`p(b`!&YC9LhM)|LuCGLJPE5FmYy=&*!z_COdH!EjJD&kDkulA(7>Zp z9Ujh`lc4FMq{&@FzI8NJq!7-@;LBT#c~}08vmHjlvZYQK*|3yRpPFJ|-;pcCIZ{3qVnt&{ zu{BGvPa8$Q>=tba7ci4>a?j^&e?z@yL8=x;?Xn-Ano3z1&AFLNr91yD5v`(QB_0)h z`#kv0wkRc?6_S;9%sA^XEOz@X-hj{ihvu&{HojBXU~6|n>Hg@B`BFo%5*Y(Z9*#cC zoon@13hIZA)9?FE^?kuzr7;;2Mbk+iC*+oOdMLM!I30S<*!gUMFgurU*BosffV)<;J6EDN`qF^yNaQ;K zfoHiMO53pM#(kWTyR|dEYv(#uIb8)KB56aEg}!b*={nnzlZ==r`v`Q)YKol~XIyuz*PJm589A;U~%`;qf^f zG+<$%gciMtSXaj4ZgTjaP}?gZH+xANhdqy*wLcrGl*VC8$AzE6!EwUM-594!l`L=}pZ;V>?n_fvE4PcX<)n0!eQZCTs|+&wvmfX@z3u$pP{aUwE9 zA*bw4(@MqI33*ed@ca>Kr!Rq1jWT!i^~#(Nt&zRkxh;Vi7Rj71T1@(|c}C?BW^_AR zW;6rA%rf_$bO(gxhjoGUV(Z2-mLuuUcxDba8}5LwrJP(&MkFlANM&`Hx`mSVHLeRE z7BY2{r?74h$Jb~MyIOY9G1*FPxM1S_72i(5nb3i>fv%_}xe*wY#on@6|20_Y5?B}BM zhuygvvS48}pC!lL7EL;)4B44&I-mIotzLT9EDAf`eHWYWC;tr0YbLU4Qsi0oqPy5VmEXjo9@3a~ zSv(U?@)w;CRq$ zE)W56d|^jv@V|fm?E9U*x5=n?L0Omu$@G4R>g9P~gEp#=QqbUe?Bp$8h|g+n?;Q=U zir=pZ53dH3ZO#`)8!HWtk|$~gsufI$o_)GAyV728APnm^^m zY4dI$9qqhf#cWOO>}w9yVcV1(D6tjZbLR8lQDOOxkB+N`@IznbX_R#fpJ<+^m zQ8EyA_kT zGuPq8_Xq0MGnaB4P-fPX&QD>WAizZzEdQ8ws;?7_-WpMR`=Go5s5XW)OdGT=yMJSTyN<%%Pw9;`wLB)#LpbU$NGFkJFOdbBr!Q zBCS!D5c~d|d#cOb@g=WDNf9ArRDs$YR#U=E738Yt^EO!WxWW0nfWTiCeSroOHl+-n zVce%%n`bn?w0>hShkckw*uF~h64#3Fx`G&Er6FTcuUXkzC3v^pWL>z~zGU}`lQ;UM zYF=lwpX_Nryo{tcCQXaA;v3zZ=@OmzT!yDt!yOMOV`|T(ToxLQ%{}?hG)}(nq=&?7 zol)g5-jX#-qBVVTWsbi;S&Mxv`laQ=M=?uv`Mh-A+l`m)&OK=`?JvkVB~>w3sG&a6 zlrofZ%RqWDymymO3(~9Hs?PIvSf}$n$49!YD&}_Uv=iMFBmT*Ve(8;#UzEQjB&Y3d zL85cY7Hz8c^&qd#4{aQuhC)WM64vk(d&9BBQcgeIwCuTl?qIu2U*PmH(sMG}nJiaY z3DrI+Z8tB38k4%jatVy$1V+*)j(7BUca+=wGBnh?o0DaN@iwHo@Q=1ORoUR@9cau4 z#-G#!xGF^2>I8p>1ZLT&&5g&;+~>>`r87!KOzt9R*Y)3%*0`pZnoOvb-@%k`ToF27 zVXbVj^7F=N#^+LhYxj@ARc=?=Gv)OyG2=BF++K3Z+(;vCv~r|~-9|0DKT>`z!hjK^_j+vJZKAQS@JeQG zc#<&cLe+^_2(|l~GE(Em)KXmpu=&r|v6ypJ%pX}yhcyH2k<;m&`SN`kyITH_s4EYI zs{h`1W;B+pAzOB-@Mhm*Y#|b*Qcg;LRkib zG28uJ@ACcq$zS)*{d~@Op65L097hTI{!d?S`v};EG2|D6Ov5}G*G*@k;C!#M6Lk%1 zyLtb`mTAR^A8z0M*3)D}_olt7%Qe}ouw7S%>k^ONjvAbWrUAb7`>4YF28}1xHeBns zTLAaGPO-FA>S^1Z+*H|?UDk)cx;zPLQqgwU=(33QPt_H54_tY1-m=##EIN{_p|?-t2-y+f9{kWC@q%(K!oYu5*|#Q;c5y zwJ)lxj8`4zMWcIW@KN24%fbFILhL}D7zDmmrJo7j6tZzbKtbSTAykoi(f`^W2^RbC^?^Q7dsb%>`^m5zbno;xLZDORsLkD<2XusKI=0BF;fD8-D!?+w753wLS(^0%ky(9Gc5zVj+p-s z<6f&X*K)~uKi_t5Uu{l%MEsTU;*Hy}|YcE)Y)ATzc94=3SOeb8hhG zV+vGPJ*OKb{ETOk05~V+`nH?x(uyU1%tq~J_L~!)q(N7E4w?aAfnpses8IR~77h>{ ziFk2f=3K;|ZpO<^>C}%WNs3RcUfp3>h*3Dc@6aG9AW#VQwyvI>nVEb+tgKX%@7FC}g%3)_lEGwwk9Gvt60y~Dr zsr^3VpdGF0!gAd%c0~W?Y!2pDA+{^*27dhk$rldZJ09fGN3HX-7=BwNeR6aZr||o- zyBgATV39CLV4RnsHPmKLQdfC}H!0b0n^CyM%gdy63!+t3RO+!k-oDwniOkKoq ztG)A_`U~j`-UC>+1s&U>`v*cvCHzb^NdU_@y1=#5(+8gA1A5olD(A5U`@yT9Sy^7p zOm9Y4RGd+S+i$;50u*6%B%^{hM(|6Gbg!77MNj-@?S0qP;Zo+u5H- zuQuDMN1d8J0fF161qj*G7Z5>HX>Y2o6PEP~7)>ER@X~W^QkchtbRj*q8j4xFE5P$# z_ek)CYu}`J4*~;xY~>mBH6Xj29(i4D3%!daW0!+*?buk#+l9GRgsu&3wtAxapBJD- zT^zGuZ0>%aaCc$@)>t*a5B&1eA6OzuSd~*=_q?bI^Y5f!8t^#MaqBwJF!G zlt}{pCZi1kY?lmHof=F3+kCQq?vlO$>usxS5lIuuYYxATLhVW&WFZSK7IIVW)T!9J zZCy^aLjMzEpo)`k!RlfuRt}>P#G=;14E5v-a&}v3Ehk{hZPC2(^hd{ z;GKOPZQ3mBEe+4A)E5FG&*fiKTk%01!oznU$~r_qdNT2$j|+T~ca!NkuM=%I;ymH= z1rU#U>>$Yu5nA|0q}1JFkVFp$ z%Q)|&)quD%U0}Sj_R*zH-?SRA{tq; z`7MU`DxKGIkYl|`~d44GVUOl?-0nD`r&&;4-Qt|9Jpi@dB z;dY6+wAMygnazB8J$nbr|5XP#=>rc#SppR?V8bGz2N-bO>|dwP;J<|Qq5HQn2r^+I zhb=4uLDiE2PwKhA)#KOv-few*+&o{fck9lJI!-TtzKR$~7P~-3EY@a;A9BSzAbhA0 zD9$_De#lOlSassRLkja3=gWrLrHcH)&Mqj?PBrT2notRwxfFmI7 zDXb6)cJl%(FVGHQrq5JY-FDFgLJQW%#=i;_k#dwV)^=NlXb#D#;vTGm>jh)#muc^> zhqPe6XW6n3wSyd>BZ?E*0Zwgy8pOUHuFFP}R}&V{>GntUI7{v&eRXKk-rKQD>pY#n z!`82&qPh3G99N(~GQ!Q*7H>TH_9nUeC&MToguf``Bt5`kUI1%Wx~Ic?05~_e=-3N5 zabk~++OxOL5(%kl1nnHmOU+t;{G2`yOPjWpP&8=xnRy^Y)U^of+{o;6Pc1k9JAiS@LBQJbi|wGSvv zqmA@4r{xQ=KOMxIhyYiv4lw+rBa>YB1t4c-u-2iBrp?E$F2t5aZ+>Rz^U=L2E6IIi zl=HK;dl%O(9-VLUB4xEk5eTiJH-79g{JRWG?_)Uf0VfW30U85S zBn8?^HV$*0OfsF%`oSlI-*%ky3%nEMt@$M&0vmj#Xf0$r^{B`@KeGqx8XBi}G@k~{ z-k!zdkr}~!S8|5@ji6;l!E>D``#E+^GE@8JGPafqwzz5!$MF38u4{mes40d`xdZb{ zbi#{O5~QV8L#JqBKiJrVYVrXp3O1nB6RNZ2ihYa^nR;#dt`MDuN;_h-PBM<;=sN9j zoAC4fV^mu1(w5yCEl^W^O8y{_Y*Y8>z%Swx##%-pjnHrwNO+$V9@CKV`52gpfFig)ZqvJ(-9(<4_ zH{t^b(jehp{5P{s19*(z9&@Fm0)T^`Sq@J&AfkNk zKUrg5Ep~0jll}2Fn^EPP?_ZCF95R+m_=iVAtvhld?#X!{QdW&#Ke;6iSSc|GI_Wb* zA<#{9ztQs;LQWgd?OjjKsI*k{Z5)N7Yry1v9-J)Z=WDpx`XT|EReEKhW|7{%;731@ zt;!nn0~QxF0cr+Ik@^kJO6$~5i&8zdfDJtJb8_#kl_r%TisQsw>ZPMQQ3S*1vkv_# z3Y5#YR(3yHKkDUixjpcTOCiSL#%RMTyq$(&yg{qYPywM*tN!+305@|;7kc7!-6{wBekUjtxBut&IMDE1249Y9bEUr?MSEOw#8+!3zgIO z=zSKNN2IQbG41!jHGM*pj^o_k>?+^fHD?EkeYTqlUnYewV5|4w&`|+q(odc8-XH^- z!+)L?2i|tDE5(7`Wc66AF2W2F?_Z{Yx-npt7B=@M>ww#Z>AEuK$V;7Bt~L}>4o>jy zl`_&VmbBrD`qIk%4Vev=GSv0>XHo_BvmXQei9-7_9B!{B*%Z2j*KK6v*aEpJTsl0A<>( z*(On8F-Av%54Zm!l(0yJu)>IG64?;zfy7<-B>K&P>0?Py z>XVAO5UKP5TR9ppoeTk|nCJpWJ$l`Q%!hBcZvT#S$atw+*bA-ZyiequV5z^fT?<<3<_Y7GsvBkc1nW#f3a@JatExzG5p+n13 zwKJ005;zJClm2E8UL&H)IoUOj+1>vyQ`gt-%6fb0PJTtNW6 z>FFwoSwT>|O})v~hcsUVHVzYV9`mw~mFj8EfqfeOHtr{jf7u~?DAMOGUNQ1rx&b{v z(dvJ^ZM+e=N?onUjw+3XtZ3{kNkH|pa_q@dPxNEXf`Y-HjPfUD7m}EbtCIvpMbMMt zDEE_r_j5{A&Uo)fnfS8o^Mf{OukW7^qpZ0YSKEMpi324<)gQ}s*c z8&NKc5+xhJ;MCM3Kh%^oVJf{c;WRnuAPJmpB|sX|tqeAn_Db!hy9M+n{}UpQJTy~N zAT}nyC4M!;!kRaVU0?M926xyVw5{qGkO$#jv<>Oe5OK*_4VQ!9&mF?yd310YdbFqC z&Y5sM7IQ2z%52fpk&LIdtkRyo_ICBy#2#c?4D3M-h$v3K_=aWJwG%{ ze`rBaN?XWE+Pl}!DJ}2#u*XUa z-BnzK9B`v#L9KX|#l>|9YrM4wouTxyb~?*Qt>|H0D=O-}aV*A=QoT^t{hjhI#N*f4 zcCYNE_nOEZav`M$oNWbF5boQZsD2)V*)6rMG#J?s(lNh5&D_RRdqu`~D67k+em*n9 zajOvBeMz(t%$X(7_Sx-{%4o@x7SeYTRUcwvXj^lPPfDBeMM|x6_SK zvKhq~l5$F6g_Ag`cq~*xorbE-kR)FjyXS8MVi!NN>*8(kraOZCK_M5e!;h@CrtKc3 z3rirXwvH^P)<^HWUXEeSCqGpt8>mQASnd46`3WPVySLiYZ zWcFD!8s9N9D8l~0E6%aU53&gBZ=?HVT3I(MLh&%#^$=DoNAsj-$I4^I|anI#4 zv@pa0V#J4yJc3A2(fcx*>-+TON0Fxq*=7dIOvlaO*QjYV>wf~@4!m4M$J$nDFj6w| z5N@-EwEq3k#GvMyaqRXRumAyT_%s3SCSl8$H0&3=jJ333U&~~NRl#VVwi1WsxnD}s z8IKB8sC7dsmhMA5t#wZ>6G&}R>MhZ2e8BW;nB2T3a72|4I68~EacmaVUv&diA**Wx zk1e25F=@PZjeRCE!3VM$Ej*ET_9u3kz_$4QOyZZn zxe9Du)5)UnTd&ZHk@{K@shhe*i)h3|Go)E?MRn@0AGPUQJ|-)o)iO8Sl1108zXC*2 zj`NrX>v{PtfDN_a9Te||p5Y#in6m-AsaBGs=jnBZYsq7`mq~sQ%uQuX2JVfDECgE{ zB`QRj)kSD~WG@anhjF9g>lgN(eK|G8V@Ei3DzE^|TTq=5{;o z^^@#Bzj|5JbA*}RJ3qVii`>06Coi#X$OER`GJ%(@dku2Py@%Z&Q4TjC`O?rf3xt_k zu)P5sL+=SWs!wwm`7>u7h~Z)VY+ex;EN}3Hi)$cwB-EL+`jNw9mi7Thu$9LUWStE^ z5X=66L71&#vLyi~6fFirLu=OwqdA}l1wBOxIFkiweEPn?>s_=*W~jl+XjxDD-tlR< zixnPSs81$#5Km&M**%ikFcJRz=D*~g7#)HRx6m+UJWp9`x$gJ7c$8XqhUYHDF?9Bm zri~q#b(1Av{e56QsZjg6p!j{|nl^%EDR@>2%xo~FjRkB~#t!OPVh=TOv8+AIB?3nl z?uK7~0c~>$V3U2fB!L)3TG(fRJjaVWGmhy8GM641|1%_|)-sU}##u2$~!8(Q!vs+w8^6bQQ3pN*!1cK4DD4_RxF} zK%1O8FVs@-nO&{R`ZgEkRH0)fT&R5{F6s@Ekw5mm6LmwE36oT2dCS=d&rlsXVI&b7Gzu7erggssp>w@H zj(yCFyPk-tR8KkbCI2t|%bf3eoJr+9boG>94@#9c{+JuSL;e$!X~cj{`+(%#2lxHD z9>mO&0AvX!+S))1)9lis)5_@uuqqWhbBwR2eD*T~@E z7@xdCRQl-{4EzqiB=AVZCae+0d~q-65XhEUV5)sg1BJ(nw%-K>gln zdN0tZ9TN!eVAPj*)*5|FPUYtHOtxm^I`!549iL+aSht#Kwjnv^-<)6331lDK@N010 zEmdX6YCRLQi)sJ%ipVYMB;iRaHXqv2ctJR#m^(C4xMDa@js}0+05)51lB%m$@$5x# z40WlL-y*MYti?F)fNT}9H|vx9ULpUOsBe#853GsKShu20v{~h8Zi7o*>b#D zS@*8&$-A$jNFvE(RxYiK?O=y_vi(sLQi2cYl%am_alo#aUl09?s^)c&S z+-+g77L`!%kl(-4db1jdPd=bR>0rf{|s;A#It{7?3_22g=yNY)2+w!Qo zX^T>p6&{Pf(Er~ljwM`FN2Q6Tn3|Os3eG)pA}E*7;OB?T!w)fq3*Kv;D5aunW(mVI zb&-1(jo*y5;0Yd`q7R7NccLGGybyY&INA+ksUvzff#3)1g}i9mTH@!?LK4Bv7o}L5 zROqxyI;jIUjfi|q@3%^xj#xlKb?LgBB3p@)Oj%U-Zwg8qh~tA)gitW-5VbpxdCVDO zic2pHC^xQ?|5Y^m_2C12z|ay_ z0=jkdm}jrA-7KL(fBX^Oo}0Pd>AC(CHX!R*_(j%CC0$6L+~*C+!^Ay>QOwx=zbS2R zF`KK4f4+XuOK^1gtEMFlF%pPN2lK-^^W<(c~LJIWVHS zKA=N}OoPWs(mV*9_g7%RsQu;alXYfwOBjbt_0o)g+&)eC^VIxEJFrXUA%rPL3I7G- zJzrbIW|G21$l)9g3eII1hZ7&bE))J1O3Wlg&FS9hX9x6X`p)#a(G9c_V?_X2H0p1T zJ(AEG&f9y7(_*mV>MW|2`W3ab2=XT9Z0QB{uP7^_X00O{X2$0r8Cv-ESWl$W`Hgij?!vq*-C56)XEP z4u1t^x>mnMJ7keiXRUMII9Bz6pjZli=OT`bV_&vo2hZ_NOv&)J3!fZ`Krmy7YeQJ$ z22ceF8M_kks9yGwt((8g(JOt0q+Vh`xkTX@*Xx-yapv-5Hoe~oO5c>)5laLL+Ud{1&M>RO*%a6ey(U{ZcQ@ZQMj1SM#^)4Sh__1k7(w+N_{Q-^C_hL(a7K7*iLwrL1E8R{lMRMA)$Gm_gzXnluIg)71 zub4|wKO`fRkJ{QXV|O{`F@YZJ#G327Pj!d+KRW$%!p4^mS65O$;<`=uRw3Gc{(y#nwm3(pHArgU936AZU$g#0A|PmCzf0hTAd z)d+`0E}L?C4MMZ6IV!|~`h(XFju)}lM}|YhTCpv`35TG<0$6H@AijIHisyhLr`e!i z994Eu3nQ>IHV87}QAZ@77zBWPD))$SSQ6JOq=C-%cPT|Ht#Ahsqv4w=M`iuyODNlc76n>zQ_`zS!jY*Yk;( z$QvB$(WQS`V9O-~Ip_u5i}omj7s@r$Lq;zTmhcc~C`@MQmsWzzjla!;oxuD=08nv@ zjjA#|r4Rg?_E?{T%uH;1zSEgVoNouVW)-8#3+yd|STjZSwDEmzlWC_r^qY`Y0F$Uw zb9{EULoe{JrvK@;rE%)}g9TF7!1E~JR8_ls<;;h62L$`xjb^1XV}|Xr0P6DMW^2J<8cGj%oJ4Qz0t#6s z=|5Hzg?tD1`@^y9;AwATYF_`^AC6mf+$S{<56>bzoi7DtC@ewC=^>tUNEm{~X6F6C zIW4;5)>o7vGXT;A`Z+}(g?IT}g0o9jWtaRc$1{!#<*CkgqMGqZ%Y2_-L+q0`N@LaI z0ABOiL05axiv_F$g3Q}yWf-u{N4satIe}tSOf;4 zcwHP60%t#+3?CB>dOiEwpczcyn8e!eVb8x3iCTOmayrBmF^;{7aEGzy`dN(d&bdYn zalXq@275>RN9FhM{ni7lYvdqb|DZM0R?rQne&eN`^&I7W-YDtr3wJZT=kG<})}|*C zf(tnTNgyezdy|HPGe7mQ7oL92$l46s3yqb#vXHhmNgzefW}fV;f$bRBV+4#_D35h( z<)QV(lew$|7biBJFtXZEgZRmu7}vVHto1>|9JrpbDE+A?q!Rymn#q7B-U5`XXl#IFD=U6fV@k3=FPt~1-|tFQV#)y4V?X> zcIk=1j3k0sTnu-|zEcHk+fkWyhivFV6w=lyu;uBqI@rRP9Le}iQIVGKdq1gz!AO6m;u~+6_0K=>szTgYCMKd*!6p%?;-g&mIC;7X(i|!YYkR0L)b9f=$I+=c^x;*!x+D<%RSc^>PQsEC;%MHQ!#nP6EI)fB z7lei%-W~)}RN#^|MjvP8&p45AggNkiyUQj6*w*`skopCGrmiJ6^H_oJAnQmcpZ8bvS!VC<53jCPi+*ElKcB7FJ1A-Ak)UV>xu z0fYc4Gsea=CH}y2e?Rr7*U+8F*m3YS4S%f_7{Id*fcfGgr>^=>0~-0PvCBZXODHH1 z&vdF4xvV4cfkqWqF7Fsv){#qn*hgNz=(2x`j};W7MU~>j*vp|nZLxhi9R3wtT=UP6 zJ|ZkgsYd+X+S_e`z`f@IOa+Cdh+X!q*_^bm0i0VG^BPwaB8%jED6`1H#wi} z0Zc?;di%HyBG2U0quU!W2{u5s2GCij%8@b4w7r^*Lp?~p>9ncG@+i8p=hL#}e*)!B zVO2|ftqj-YHnK^Y{dkyDY|FxC9K%T_LFCc*7uc%kZ1x2R*HAyJC34DicLBJh3cAF< zIn2~mOY2UL8ki&kaD^Vrzi&xNH>&IpUyvckM595x5mLJzS zP53hz?!fgR5gkB}z==bp?P(;e@l!n6#(G=d+)|78t(9Rt`>h}fxmXMPpK;~Wrexgg z`J*0rPDlQ9t_bt+1ok@|^Ppf+HAC3wagZ~>!9s(mIzy^lBqXhYXOK80EG|(U^Sn=) ziZU@sU{h4)=f(gQy_?Ys5H1!5JUHb3nM)%?$^9j_S(UL~k$kBzeOw4CK=QqUhM$zW0}QNt*e3cX6VkkKI?l|$EQ`l5P++&sZW5&x z+`$wR9TA%j(B#F3(7rufCMtbInOO4vyyBrjAkcdkF-BhrBi8i>v+(ZRvyG1`zy!%} zm~PBAJ}G@~qWND%YX`SX)+67nts3eFtKrsdq#5ry>VU9I>4j)|fC2;j`rgoBivPYx z-Ci;&aFf&sfF~q@_!k0yo7gqh9Z8FAS*X*O;xN1SvrdF9>%&=PxcsbZ^!{+f1)A-x!-Vv}F#6y(i1>l%B!OkZ)9oSFu8Re`;)-~RI z2574woir*yeA&Tp>^J$R2>M_*+6`I>9-LHvZl%{WLN_sY$~I5?>5csWp4Fz7_Xs@Q z07BPVRQ>`V8w$Qz;y}b_@FpJ2GMDUX#>{EotlHm`JdM87-66!atNbTf4}Y+N|Og;`&W=sN?pp*P4voP{JC1ikmkT$n*yf6X|r##rD`F1J|{ z+$}7K7ZaAWbWQZnP&Fu;2TWWBQtb5MG^h@H@)!Ou-I#Tc9Prie;TD&kP1SZ5xBTz1 z_~5aB$^MQdVc8YYAe82PlxO5HM4$J?Vvj{Kj<|(g=8(Z_!ybMh7$V&3sbD=LIPmg; zl1~5eG!_~f?bMMvP8w`?jYUu>Q%8m93vd)XWV|{3JClKEO{D@QiXT`|1=mX8Y1r=gdd7mB$aVEq3L|{|FUO8va%Lzhc3g5WYC~ zsCuEK_y*g*pe)gW*v=4O(>8Tp4nb5TYI*tDxy(Ww=rs-^X2+otJ27yZzz>ZcPpnD; zxxV(W|=T1?*5-+L6x*LgD8t+eJfiZWdY zh6Gjr<6_wP)?2l(Lzx-LAG$Jflf1zFv@EN>`)Lo?vX*;m^%uF%YL`cKl~;EYGv zu#$ehr4^O?1-jV;$G{#%7XDt||GLALFU7j6RqMd+^Ldl8eLzaaLk79c+xd?KW6Mlt zxmlTChV3(3)d4&|%MPf6$t6BN+a*AF4$D=V4{$l_y_tTGYgkG&dtVZna!2#{UH(L; zfV1*BNwFxo?6~MKbHaJ@*4Kl@gr@U~W@D*9-f`T!+NQCdV5q<6L_WOm29Pf|%YbXz zrYB$uxOE~*f|s0*bQJWQCC)x_0+XJ8bw#Y&-t`XPO*Wm4>G62OHsz>J`PI_vy55g+E}Bv&7{ za@Q6qHzv3*KztYhQ}+zHHXnLH!_ef(H62N_muC~K6n^u}hpjQ$b~u-J=!bXlSr})c zf1_Ei@6PkrVJCBD)out%0-pmu+`AZDi&BAOYE152T?te^HMAs9{yZIO=HhH3qAK}| zq8$!y{UfgKJo5EAZn;E|q|FUB@{y7_Z(waEFKmJ_Bc9H!D}wM<{FTbL_>1d+Jgn^$~RG*l6c6+)+h$ z2W2xN!3ThdA#GegV)$}?LZ_|OGk`*b$;O>~3%nc^%w>7ZtB)nyF}Dl}%bK`~B{xJ6 zwb)->*gmTQE$pj3iql)U?0#^^Ej5v^d)LeEzQBR)lnV)sDme6%{!^t2)%17{r? z>Z!wWu$<4hB5X_Sq1NEH9l+C9k$kq_EmF4~#h_#18!`&~r#9!~vy95QUdfi@&>r`@zj}J|X)0wX_91erov{ zw_NKnoxOVxAgMMc;<8EJzc-AXRK(YH6Oq)ccPFarKN)ujQ7((Z#wRg3`dir zV~{|5JFC5 zBa-F77`9_5)(eW=)nU$Wihb!h_{^ZZl zWSA8K*fQQtL0`K(j+z$p)8r7^(c_~itFiOLCV~apu(eD*$hYs`&raw2CAQL4`2iHx z^8|nX1k+%YoOfCZKU@!iO})T?2JG;B!i*S6s;3ZtT3xN6_r?PucU}r#!B6}LJA-|= zDAV0Fw{}~nucqFW2sGFWp07=bcT(!)rT&4l_ZPMVG(OCRRUZeEKTQL#T;M%9fOoC! zjuCaK*9YFo_#o)$RW#|N+Q3|5%V+rhbyq1QkjN?Wt4>J=2vqm*#0CeGc5nOI)Z5%s zT019kXG;k3On(!iJ)gDt(iJJUum7{@^F*hrt;=)70KZK_?t0#5HujU%HbH4^MdtzL z49!Iwnh`4rSHa=m7lT>TwF(wsWdb z3+E>_Y@~(|XxG4ww?io0<6R7zE_DC~0iwyn!RW3^gsh04$u4H%mGg1f=B($?HoZu= zY&bLAC|ZD{_`J^vKH#Zc2*7Y7K3+r(ZipT2%>w})cv;h8qRwSXijpuPFNI)->ypO>7?;R=XNS-rV zhRH+w2*VVhHn+neH74*rsaKx>T5(wU@m8>S%X4NktbJycvqu6*p2~_f!!d%FYi>OLCB*Z@D){v8Qbk~ryY#fPkGZiQb>_pCw^{wS4 ztS>~r^tKqnR^LKP>LVVXseRVQp)n>B_?7p5@8N5fZ`0|9ZKA*>tl*x7eHm2_^VE)k z{R5~o)u_GTZM7U>V@93?;w};qyyR;iHa3^xhcJ3a{C^@ z4sbm#BB?Fr!FJMJfi*GIUrtz=IC&DsxY6sBNWBiRXK<6#GUd28H00I%oqpW35B%a& z`9b;9Qqs1+c*p{u+_!N0N05Th=W5IzkEO(9zXnstglP%HT(UfKmi6LQaZ^xx%v+y~<6nEUyYt9r$oeEB|87O5_Kyr=%_Xox#l5WFhill%QcfVXQl88~ zHRfYLRrL4PxIPb6`o zB=$fK02!6LGGKwpC5A@(h~6PE8MvSeW~0U!ZEp;IuqAB#U2Pg>NtvM<)wZ} zh*r&nbyvX_bzseUIl#IN4DyUL(`#gIo(pS)k=Ge=PmWu(oW67Qopz)iz1U;qn{=mW zx8S|~F~ZC;D9^)ik;2BCa`*g?4ldSB?jy=9n8*Ej;P?F3f8PmxhqlM931;@9aV6fO zv_=EgP->JvIm;&j;NNQ3s4_rW^m#}e-J_qWz*N@+IMy5S|9lMYXgn@rUsBsD>C*L;ea_d8=~*Ewv#U*^Nf zQ~Sw{()6$mU+gyM{h3$eG+*H@CHG@!pjsIhUxo`nJtY2_)2ovu`jMn3ZUEuYm+o3A zLS>Uew@R~jW5UUwJF7h-+BAnOsHNF{^QBB@RrHF2s1yCLWD9-$kOcjZfXsj;4#I>%GwIq zC(s(maVlqDhTqM3YI2``fAz?cW#xrLD`n2sK#?Q)W0H$2-wq0w;cD;WyhZ@EY#@XM zm@?S#o9^DdfLyW8?CQZEJm)KPeFy$*iG0yknm?d??&Y)~!zb>;WeTOaR1QlvMg+$aVAzG19Aa@I-41%#vt#6n9>j z*b@YV*uXNB&33wL9bZ&fzAKYwguF%JlY&y(F$yQVtPCiGj_$*o%i1Q>cN@N7S6;mCAih65o%mt}w&N7~8(;V6YFq&X zmJ94eV=l_wEqTCfi=*m8?${V)(t87;Yt zFe7OKqJcx>ypETlYl$c$l%M?C6!nC3d45b~1)6xl^`kr_UeVcI!}P{OWoK`Vn21Ks z?JJ^t4xReTEJ=`KGyt-1!5^PNeD#H^Rom6q%bM-@*D(Rl2a#q6=i@yU;BTTNRWkR4 zzWqzwF+s!BBw@AaRPid;M1fw$=cBfz>4N;bL{}tKJ)kUJ2%1dq-JZ*3rPhKw(+2u? z-F)$1Y1{pKch@l*)D$2{oI{+fxY>T+7w1z|;R^_wfgc!+RY;<+zz=dkxuU{+zkZsQ zA7Cpv45yTbdGF-~o`z0V_X89kDWF4{7);THf2q2PyI4k?tn=okO#v+H{x6Z?f=u(f zADvVBGNG}t=8f9fkB;WKRO{b?EQI4x5?Ai&&|*(gxG-MhFU-fGLGUu%=SIbdRow0& z&crRZ^b-E%TMH0=vnWc5i74inx*=?xF2C=I%!6DvjfAdi$ArZn(g*xUirfxa7^TMr zDsh>r2Xu>@LHG-0?%{ZBQ(`dmSSmDWFd>l4Cm;3Qq^swjNV_Ac zv%Qdj(89E;9%n`lL@ogXwC7d8E!yZU02PKECHI`HQ(;1l`_TA};H9OIfl4HK2G!HU zi|c1!Mj9k*B8a}CxIsH$;`_cknC*yKIA&r1rLJp$5{!aUwcO*L`-SMLrlMmHV_IiU zy<~VYC9j!&jSH<+V>cDq!kc66o-=tKNzBtn9H%1B-JU$^y&vcPl|y4%Ku%PQd;qfQ zAezsx>Q<5qrw>}zXUCjYQF*c+c7<0Cin3_;YyGxbOwVU{$W12kchAZ7gKn|g|AyHt zk(QGDJJ?1f?%Xn=``%BGgYD|98!3GEqxMr6r6_DaWdE7cSNe2<*-gg2gb{PJpvIsS zK3xgKK?o|?nU%u|>v+hW90N$N3HJb-1k&|^fU+2TE${mY)@vJfq>OF@(3IdEI1r#vo+MTZTZNqNP3M zhkO+{C3*4K2yX*z*j<&EMn^E9CX*C;?KH=2$eCFTldHVA*;c+{*ETiQu>pOzB$&7k z%qI_K-N=}j+m=Yg>^_e%A)@M>RbMpr$J%h+L5U>VD(voZ<6bK@%J94H6N;?ngO6** zp2hM$+61b4lYB&e*z2x_TPUO_o>M@~grC}XeSUWwPM8@;Tvbix=*a_Qc$9HZiUHYo zCN|RFp~}_rT=7=JL?km#DYNW(6-h8Npm&iGN5Z(&!n&5rci%iZN*I-a$=*Fl&=aX` zt%}6SEI_jfI9i@l;y*RO%=B(W%E*dT7v#VK+l-MEwCROd^(hzJNyUR~<7zUx8~9q^ z3dpTR+T zZZQ^>9OF^2p*QP6;|H$w@x2G}tRFDu3TvUWET1kBx=k{Wv*sUJE&KoVy&* z>JGroWob+}jRohhH06qiKmA}e16a+?_(ZA&a&JvhxE>&Ov_!pmSfIu^wN^+GHcL|%N#w*5cBQvlt_J+|VEKD32-3s=*~L6fM5ylWBXV2n0{LXbv=p=_f+NPA!(!&3)pzc@`_lv+ zOXYLAER^#S-CDS|Pf6U*R5|UdTQMT_wCa)aX{o<_UKtPgJB%!wm5;@rAm}>>3?#CB z!b{9$BUp#2NaqdXfrVG)zUEEe?wozcU2|*JwgCC!g07EFl~Z+A(WyfgZ!*MGVQcX^ zKh};JF#6!k<$T6*92jo`P`HR?zFA`CXnyuapLlZ-2g}cLMpFDWr=aDIh!HchyXOY2 zsT*)Io;&9LWPMkm+ltKAF7bU9rGvXpaJ}sZ2DF9DK5?A8g~>fccJZW%X|p(8(-xZe zHp3h`uPPEdGk~Qh!1~s!)h=Ly1w2efMlC|U-Gw#?AQB)?Ka7o*=lT@kX!yNuI@TnK zm4+4Qw=_&F=DG&%JGaMV2%00v4LKV>v;3adE)qU)eVvuhtcD`~CRy;pd+v|Ux8=+} z#lilMs;`cVy6N7Y4Z2q81_Kb05Ts)T#R388Mnt+4DT!S$KoG$|1tkPU8U&GMR{=qk z66x4gM7q0n-@*HSp6B;|KK#31X3m*8ah>a&amZlAmhU5W$|2RoE^MWs!vnPm;T^rI zBaRarvC;<}Sj2$KN3`q^hwrKhWHgHK?IR}^eaO+N-M70f|Ku&uOCw!v|Gl%UNZrZS z;O|5GR-Yh^rAZ{_K|D5ftIX{yD$qXdw%xI2Vp+O{CF=IS?Vs1FeECPWi^RU8(mVNu z-SmbT|HB2~1zjRn9O0Dh2_3)IE*@hS(26{6&%ZBmmJ!}bAm(9=(v+62Tz z`Mxz4USt42;=^;mC5CFo_e{AGPac%eKH*i|n`f_~Q^^2t(+@)Ziv!;~WX#>#6L$=V z!sm<$inUd98QIFOvdtU_mk?!jC(+ww zE&f#|;L-!#SCH4E*PlO&AX&?Qo$t{jOfK)NM39pAVe8R`IcUrcA-axW4&vKU2_mG} z8PkQp2!)xfINRA=NwIQK?;Rr?44}RZ^SaqxMCWoaX8DLPB!j;zrKL~*r|oKN?gT{Q z&&rlIom5C-k4H4e;X^ACkej{_<-j{*aUAiK2a(kZqRN6&){xY!lUn*@B_CRW-OBsV zLA9AaC_B%^xCgI z*9`)k!J!O0NJn#YVfkNcthG0=_(o}u2fsrvXDfs-vZr_QYKw4`lR!r{vO|@TtjLb# zp2-7nKu8!-$qC&DoA7hc%CfG=z5zCD6hnf3@K0eveS%<8q zLqeS5K7%Zs?(}i=(_Om@5v03PT9#@0Usj5kdJMj~*>;1c`T&m4P#$6<$DBjkX(?r} zZsx6ccp{@Yfi%0@AMW-iPb{e;Zr6UNsqyW8p-Kr11^S(b6W1Cz(!;zY0($=SV~~?n z)<}yt-AH>tVk7xo#6U4-Eq?rj#{&70kn_Gp&ox4k# zl%jq(NoC-_O4vtEU~ss49DgSqI&fs@6dThIQDGLKjx0X%YsX0Ls|+3P5)E;L5W}rS@MO zUS`y67}Otsq%QVeQ*aG+lSvbc-h!kwN6&iv|7V%m1b96%cZ|CiQ3O_b{9$%%-jVdgOkgLUi5TBPysVWxDY(|XvQ>Ho zHuu*Zkt7Mh!JyS=`o@q6N0qosDE*h%16YUD#0(Y~7jo8x0(a7Sn|ut63A!BC|EH(^ z`aEBsEoJ^aLgb5Z%*ldbb3R0^+@UU-zTt6wUXY~^*mYsLgg@L7h**(NntaQ!qiBLw zc0@{5zvbRSxC+x)oY8{eqwAfIjBrSX17+(S5=M(wA-4^sm{!}IUe#;CCkjKTj;DWn zQg_P_J^Q598PyH}zU}dbTu6bd;M~|S0gJ1g(2SOjR+U_Wbof!*2+MZ><83RS8$g6X%lIfTYj27 z{oqtHeKTk7uZM_CTD%cEKKLN<(9FRV`Gn!X4*FsRL1IJ}ep-kn=%kWVYPHKBdSd0M z5X`~wXMn5XCi|Iff404F$^R#j|M-drLnQD?J0-%ykv;GKTXopTXG^K5y70m!f*D-L zUxvir`nfG?V2ld;=N*-n!&o!!F~1MVOoC9TC!46ig@Q)3;R$4q8+~&)!5^vRywyEF zUEVM9R1b)Yq59PL668ZU$o1t{`{jX2A%8p|@5B4g&@_nQ3SJ?1rc>n5S1h{-bC7Yo zu(2B)MAl&@;{n^rxn|cHdNW3{aKSB z)6FRcjNWu2>_r@#fvg8|;yC&n4_cC%(mic_Cp^WY^urRxb`1_LKx}{DN5WcMw?3j^ z6;-?~ft79k7${t59EHmuK`_3|Ll*@PiugK0NR)Z={F&M>X-z(py_%IxADhAHVyLB*4moREE&(b*@zAAd}oBYiEDg7aFm$|5=l(&X};mr06<3HU<2KL-{%J$UyF zTQa~%?T+ub$F#_Gc(_fev z?G4RX@a10l2wzV$Jw^73$FVyMSQD=sMB!*2O)g?2Z!y>s!{Z9ZHz6;C4{3wjz3uhYK@mIsD0kesm3^F!rCWd7XuONRNq(^tvOe_u_GOJjBUhYp z?bmzQ;)mZBO_FMw=i|0L{?V}~d2ii?ilE0CDR57Z#`QfNj5O3>LtYN;ON{JQbbd=@ z33|({bm#pmQrXz9ZrVHJ6+JNc0(o4W&vyhpVS<9RJ~o*2bG1`55whFfKg;damfL8a zrY^7F>DBu4KmjN){z|J>J4y-s^8DTBhzLAL3$yRx*kM0$0a4Smz^j7-w}xRgj|E@$ zkq`^f5;=q?V5FD?WHui1x(@qvCov!%VPyIl9dTRp&c2GP^W zhSlU1dA#zey{^-`8i9GqkIH7Hy6#!j#`#UyntUJ!a*|I~p1&}Iz=pJo_RbRyUgqsM z9JaHjVB^n&AW*Y&BW}!>kM^=e)%@sXXzbzp-yFaXueS-eXz{6koXjKSEAd{{$u7%}*6DkF>1_@RoPx==d- z7KK&$E+f!>vOwMrP(#a5+9JAPgjZq@AZe}on=p+byW842h5vCCKa2ahh3_h25srZ@ z3EKa3jkSb%5MLr3iW!M|hl$tO9roSd{m5gIoI-Ojy;D$IJ@J-CJdx}7G(K$CGW^?$ zJku_R9w^@n$Y$t7ln|PWBRf_sctb;jH5e2sfCqJ>5oh^w3w|OuxTiI)4GGVN-F>Q> zh%cbU50@Md17%4bSOz%7=f~a@pMe7?GKU&1z6*L1SYo#-Etgd-?&O8zdG8LR!Vf1{ zM+V0h`|xhSIY4~haP1kc&%t0Ho5Q9PK64VFo72KxL&C!YgcIw|Ic{q3g3O7n0~^(D z+MiN-`vN(LbMD9ik6VsDED3w5?4An?^Kjs!C=r3IJ2F}qdkC=_VBbj3qkY^MuW`|r zb;bWv-5b9h#rSEz+#0IaedjG$%D8$E!n?#zMj-x6IN*v$=I5gq{0xu6LDFyOJme6c zL@jBE-)FRnWEG1U$ZJowVA0uhp-6!);|O+}uQmEfKd$Xlw&vSYh4TGWn9+0kmA5hdnc_Jhi1zNfh1ly0nvi4nQIgTS>8%&QJN`$XR7C808|K1m( z*&4mvBx3F@jny(L{7$Qh$qbL1eoQx4eWxH3#E(3_rB-+mTg&r2oZwotFXj)QNc7%} z9&I9bMrR0d|4vaJBk|WYkgSV`HdXtLoC{hYXJ88E{rk?)CvUCxvcS`;=T&7Phfs7; zNS9+5!H~&nX*nwHfJd5Yo(G;=v#TSC56&`ZO%B-SumAW+7((x*)~aq20!uL+`uscH zD>>`VKL?mHG0cq6h@OTC{y$TmPUB_jVYuh4ODwDx!`C~5Nkqailk{%kJrg=d|9$g# zPz}PJIB)V)Sbn#S@OVZR^jt;GB+DW^g;`uP84Q~@$Z3S`@?j8t8ctU_uruumAVuLZ z{{2@Pkz{FYXif1HXV~Xpk{^@oN z7hGALSPmQ~e;bo)ejECum*xMojK|B=m8}Ddw+v)}o>oN89H+~o7AUBsf1ikXjC^o| zz90wk$lwdceHs`Wqk;IO@Mi*a>HTaDwwZ{66_l(SGIS0_6A}+FC?cF$*YR-oZ5TSe zdr~K}+q5orrS5_mPl(if*u@z}$0S_Ni21Q)nG-kp2RliujhS|^#mQ5M#v%&_#s|%0 z=#fJE`b_>aOXdd`KbV$92(&~Fx-(96?97XA)WfQCdiRTO%-~$>2>qqsL3qrm3DS}t zVZM3YyY=~8i&V0zvC{61jj8YS^6 z<##Bd*fehU+jOqZhj^q^*Om40pQ-$hJ95zE-_pDOr~1ojZ@9s0B)#zSGq->#%0WMI zZ&BZ#)0*MpP;G4Y^bmY0KO^^HO$z-RawAg0Mr`(u4?h7>lF5jTXTYvX5UsWmzE%2o zv%`R}GeXQd2=*G~mvA!Hv{*6wNOSvL;e|57&V@b|jAA?J8~ezAUTXG_{rr8=2UjU~ zdsiW|RJgiT@C?E%j=g5_5f22ew$_idEb)op_pX-VXl$J6o=JvP1|paI<+Lb61%@$Q z^UL7u74$hO-t!gXh=U3LmY0>!aOQ@u6Y0+jFeuAs7|)P?{Sdj$h6RrcUp3umZW0>cfei>V2OS_j@$|{&`nzwWUwnk+8&6al2H(IoijNhX`_qmM ztV_2H@pZh>V7^~Tq~o=B{=tGjkqo5F(S3*ESm(-1f>y835Ptv>cm30Pk-i5|)j~xD z#Q2W+xxg=qFu^;{*8#m$9Us|)%@kH@rEcL8wbZ;&Wc+$NGv3@jjMKYf^S%cQ-gw(? z-_*0X1&jy{&kV`d(-N~@fKwqa4bWllB(cswV4d+fw(tkQNrK3hC4R4L8REdsK~KNXzkW5RzN%~MM+$Gn+9wG#s!zFtCF3vl`j<)U!_wmg zl-<#?U@GA3G&7-zKhmTS88>H9W{!p9VuPx{b`8lNii~ji3}Q%uuOpX1_5?Codge5F z)um~TAJ{=oy8sFfODd{?4_idrg)Y)zVzO3hpF!@9qYl9d&anFUsC1XTlSAYWnDyBb zbDPHp?)Kv{xBBMazA_^kCFC<9{vGiQ!*Kp9pyCHccJTfDk5ur{l`*FKL+(E8DGI?? z3RO*~d7E-9{6o?#9dW>wXbNc@2Z>GfP2TNEir_3~gxMM_a*=sYfVMOk8%vQO{8L2!1z3{*GG2gvcSeQ&3+&ledBRqUoPOkwBVLyGS~A(XOb z6mh<3hG2c_+1|q)dxVAS<9r>^B)cJBItVU#x%LGTX(-gSHuU*Nxoy2P6ZAJunVvGc zddhir8@^Oy*L{@n`wa5H+0wrJNcscH_>M@4m=cy|F=PpS>o0Ji^+3nWugAW~ ze^lzO2`o--=#pL_R_pvSt8zWQ96m08+~?Gv^^|2TRpx-Jq^-HQ9qO;oETZ#UU#qF_ zBJr>8nP%kSPW@2$z#uPWAo}Mb?p5o2XefusV{?=ziA>8Z{3Xq)617w(->C&~1pHqYzS<G z4^ym+QFbKhF2Cj`B4e=iOq`OJT7T!#YMIeuYdg($19err?4Ci98zwW%G~=6@R@RgCD_A-x z)^lyz&sM8%3(ZG zmv$xaMeV2sDRi`LZ|dMx+d zy`;m;w}LO)fcqpi%lF(P90grFk!9>S}L|#%kmHWgR@< zOic0b^N$m3Becu!ZpyWnE=k~dUz($`LWHnYqQu|d-4~amp1N>=1`ofY|TND@S{2?}|5UU6A3HAuQ$g)s4RW zwL_>qyBT`y_15ojmKOf)Aph2W!R543wj5!Z^RqnJvugn2MZ^q9yS&Ec^7R@>cwgDP z+~Qs@Jj%2(RFZKb{*^KUBn+c zNwhpuUd0HkUSv!T@5XcQEqt5?1YAVo+fx@+%;D7^y=XBm3CZ*xDJOD5CWD6VlH9iF z#7~8J#FqwqsWh}37I~n#hJN=mA}S>dmnDRA9GxNPT*WazWidPIvvj5VbebFIZc5?- zlg}T*{~+M|-8^Cv+|!}-fblSW^Uc!vjLCTOH)e0Ly zlNzeZCXxx|ds7HMh!Hu7@ohJMCdLN%Y|+5z83KEsu)Om}s~kaO5HIu-1fD4aVowWp zCNj$Ml{xl3Y@zM!8#uUiSA0})XGw%mNRe}SW?T_k_39aQkTY+c-P|@TrLX3yyWOaa z$KaY^8`XYQ;Mfy)pF)gz*hpFwr9kcdxy=njiU8_Os}NE9pA$lM1LVu}2?m$(Y5bI+ zz#gYB^~G7`KUl@o)i0!G9kWj~wIxZPAIn5)E+k7PEQ6Zx6Ap}`*zY0^CwWBX=X@&t z)Gvb$F*bzW+s*h@Ml3f1s~m+OK0G5hs|xz+u0#cecQIvD)>=O~op(xKXK=+@U)Q{C z?rd`5=5)dkMW$D(GN5(Cjx;2CQDs(de2(%d3+HXSlUP*Z{o8f+{?jv!<_2EoBNI(| zWpqmeX9{1v8-9bLvHy5#j0smq3r;d2ulLNj;g_pp3$IU%RkV1-TQLdCEd zg=$^>RC?>c#my_sp^FmuG-xMO(a()Np7!3u-8@7I2D3~^(A!FYZ}Bb;QyURjOIYMV zv8pzh!lx0by`&(Wn$4cUU-!h*_Os`$#crN`lppbMtj)^UviCrYPN!uPG{n`b9|lv@ zw(s%bEDbbQ??;<;A5D94$ME|znL;n4k>BFEnQM(S-KiU8KLVg7HvGpDk0Y>LIza0V zQpIP5Q(^bs%ZG#RV{2ByF##E}4gp8KJ<5xZR_6U`3NDgDFMP>E_z5Cy0&c#|1H|r+ zI3~$eKy0%F#qMeGjm#jxlO!6x)s+^bG!kT7v${6;Dl4pd@_N=rQgsp2?Y`&Cw@+h#^RB7YORD!90OVhojah?u*WYOMA z9pWS4N*~+;MJQxOIqep32)f~@2>KSg z1b?me+H?EVZDs|Hrvx@u&tH7jwIf3hMuOK}eqG?UnW>38C1jx*sPS0ntJ?Y!mawg; z{`^vxma#qcbGgN>>+k=}C>gy-yt}*9HPEm~rxe3<(RKBA`yh@N0eZ*!SdV%^6Z7fR zn|lja0r?h2r1DUP+)EqQ;*|#y>%Zm*@kp>qDsV01d0}&8D0%QF5DpOfR|m=<4<>8NU~&Ough=FS7RVZ}MquT4~7et@xyLOSh@!_PhPC<~tftX#Bx7SBBd> zWI^66e*eWTa}2-&hm8GTLlKDZG+Wjel|XB>6k9cvdsG;a5RW{>h;j~~zp)mlOs!M* zORu=m>sM=n&}2;bx(w7=5s&U5JlH&~1ikj+y#r zysEUlvBnzn@!gnXkYnOTU-GTS>XJnW5+Lw9?MkF4EY#_X^@QvX^OzTkwGv{_<_~HH z_HZ|hYK=@x^;4Yui67G(Y`=UQu(IXkG=G^&d4=mu?K;w?RcIAWd^HX*ff+cK)4 zuw5BE7s&q1R9Gn|XgD~Fkiy?P?}w=X=^cS|LF!M#-M82i)n9t_jv~K4rbS+-JLy8o zc6FWI*EywYbjhr6XFkE_&6W{J97j~BaCG?7Cmf=WHdV6kzt zzPsKWCD{yphOdOfc~LCmNvw{oNlno7geU0ey!7zW^87h~8C}I)JjT;I`R+lq>(#Ps z4^K`n+b~CmAe;Nr)`xXd?&2=bG6Lw7Pg$E2x@NwPQ-^D4WnUnOOfq$crjk{kv{%>2 z)L%~yG9TR1DtEBP(Q1{~R(|R~k>CwFy6keoXC&+&L`;RVISA#7qd8~f&i3j3DKQ}> zu0t;y>b~_jk+%>tc0xbnT|rZ@6SnR&u~izu%lQ7ridr=jJMMM?D@a)Ql=Zp@@$EG5-4KsAs_Ws@{?fHFdZNEqs;|fX z5!{ICY7Tr%_(MdGn4NvzfFOZuR(yl8n>~_ojb}p)(7W@br~hn!o26y+B``$IgU+0zL{cf*DM7Z>INk7bKBgVjJYj^t5rBNnj&5K?2T)3vANa)cgNAJt`LvI% z!_*1{@ntpj;S!^fHA%#3Q0??QF`XyLLi+R5f*bCko9E@kzHSo6>A=!O9O=7U=l9No zxzov~a%}6C17Ys5-N0@j!3Ml*X9LFk3NY>!Lq^XI$fe;Iy^QFYn&wq8%4;J?1!hnL!n z`P5c-*@!f7P}2RyY0D=~bo&cXn`;tS)hOg=Cd7er+Q9rI@nx<=d^8 z$0KiZ)bPnZ#t=_q5~P@YmkIHKOSr41cd~t4F+d`p&%YJBdW^K0 zb`*NoO!lu0#E#;LiK%OFkPfW*E%OmA5X6Ov+Z92(<_!>?$dCdRyAP^g3ZBXx=T01y zOYp&L47knNpOg@`PMGE(h}*=C0YQlkMlMONTu6vSgMOc_r277}`YhAQn)AhlZw7-y zu_K#-{>|jbQkvgCZ!Zzj;SI5fY7FRE|*3FNT5P55)lGYK*p-Ea^y!`8dKt=ni1` zFcPv4ZDOK(I!q_U)yrd_t%hv|ZW7NUB)ISK(Wm#uj+!fvDQv%!)Lqt6lsmFT7j?=d zFy7VMjq^mA|AGDYRB@!BB5G{+PBjbA{+VsD+8Nf^-D`7D(I?#N!=kw$$XDCEF}8f~ zk{az>p}9FDd{Iiz=Xpl^QPsaG@0XUw6WscE84?%yv7Qz2vzJvbR0 zY!bTs?RPxVrlc^D#1j75AN$uBi5=zcvQa|c5kgk5>iWtTeI`mA4g9e4wSc;`4{S@CgUy6bvzDAJU>w z8z0kh-N@Mb7#|=1sS6&l6EjmBVPRp8ljL+B-pB2uGO@!$MdwFW+J7{_P4V&W3q$Q@ zWab$wlz)gG*itpJGZLcyrt%=L`R1U_tS<~0+L<2J4F1vitGYbQ-1EhNhC1rI)2e_)783_hRs(zZtc9g1gv4xPskgsMB7(ozCdO%yIWAt0~GqMUlZ>rx55NvR#%$^FQb}@i}2h+_H z6%{ijUmGsS)K-*!N!veIuD^L4D39j*Jt<;(691W4++dmJevt>f4AU#!YCpFbz-+P} z0+#ne|4)3kLRk^6Yu($4@rTPrzGm47X-n9f_jL@6D$E}j@of{}v7NL%iy0+A zeBo142R7BnkTftlb3DO?)1koeI7hmz|yK$C{Dn<$C>MnUAYGXKR5VG|I;B{R3j#Qtdjs2W4(PV~u&EbI{Sr zQ~UlgYiTjFd|&tLSx<|euiJ!ut6wt{lL@vU^=(w}@Ck8+?e1n&S6ja?FTaHFuxq+W|xiGJH`>(~xH9taKk0mfO z{CO}V?S)JkpZW%A~@mqu52x6=Dk+LS3?9Qw!i3snD4zwfIT<>2I_n^%3v{GxTsnSTiYw(+mhM#+|Qsp^4eXmrnom=~X z?|NF9>WEdfbFl3Ya2S3SXEW*>1wbU?aUxU7dAdJ}O*ywgKO@a?265MwqzmDsbC{C6 z+nfddk;veL^dTdW_JgkO)0_pi7f!p7irIOTh&^Ij~-uOTfX9HVww2hnNY2vB7U%IOKC^?O-1QH5=%=&FZ!&2Cj zcFPvr6+?lN#?7X(&&;4ls3U!6*@z;D>fRM1szX2|M(+7Eo|`48kSXe#vb~@L>*I(;Uv$aQvNf9tGZMrE0;fnEs$@;&5Tn$rl%UOH5G93&sCdy zl0IC$*y^)0I=s7n1&B;<>dQoDeefRhOIRZDC@4LN&1<*YksvF+%+*OG5tj8a-=%Dh?A+Rskhx)^uA1CJpKG}# zAKa?kv+`9{0eJc~t)U=E} zTA>ZVNBozTXTbtQ1pMO^wX=i4*Ki6btwu<#pM)dFP?zX=hZL!cNc?H|;8N-7GcNHK z)oaSvTD#3-_1m?S2%BtYq3EAH(#o7GEhWOp7SbJ%UAm%>gQ~$`01oX6eW_25* zfRzkbvj@J6_QGV218I>ogFbr<9nDEEwKJd7b7PsXQF{318c83>mcs}dMjza7!`4dw z@lfHj-9$7n9{dm+AGRaXbFSyhX;y(!T)iidl{1VxsQm9XxN(2C5fK@}A)-s4Fqa8< zqW~{0oJ`o3#y>7!S+zZX9LRE;ysxp!A91l?Y+SB8G*>;ZDR)?y`?=dj`Q}lOu)1`# zD5h}aWY77YmSEPiR2j9aTSkx@*%nJ=gL|R>-(EPJ=*d5W!AAx}et+_2u=hNri3yzV zq6f~OgPeyv_>&t&qlBcTYiII)-4mwv1w!!kjBv=1%JWC7k5;c2qENP`7x&W3d;Aq2 zS^r8&+DRFYf`5_%^h=q*k_l15hpzCT7&C%TZfM~5xi8vO^ul}p8?gpO8g@4Rt0x@0 zvc|*q!9xU5x>MIAJ|%xiR%ws$k5Y(vn#EW{gy7!)Cwx}GD26V!xeF{A;PIi@4ebW< z10Dt>zLIdTRO-OpGvW>G{7RB+z$qnUgeE^JKWSM2wr*$CsK;;zo&4vh{8z@|9K=zW zVXz>EXc6*7Qy1pb2@1(n7&X-pLOy|Xg;n5?HCMImZI1>etQtEKJ^DTRP(8h@*)ywv z>*MdMh^D57nOQ*OFRP_wauYdJSc$$0%}TC1J9G4is88OR}0DstF|C3 zFdi8sgbd)+nM_9)N|nGqf-(yeAnMa&)~uId?Ze?F2e7%Zco=?2JY~t! zh%1NdtNHx2!0+{2+rkTnm@9UsNhX?s5}yIx&Mf|u8JmL~#2^}Z;AMh;8)JW=#%5)7 zbEh}nx2hGFVNR`N2H#=fY5JvK`vo=7w?NeSBoQ}v-Q%rKxBszUL>*S{X_;CZ_01ph zZc(5~i15JwzCSaaFa96jM#E3%3+Q}_2CV2Ub-V&At=?h!g##EUyO7lx!ZQTX&E;j1 z87TIjR_xSL{u5Lx3oI;JXElCJTrt4(;>MlF)Au0!rv=82{VnlF($x0ENx6ZweM^Ty z!EDfxdGGUpE)o{l-fQDc0#Jt-kV9zXA~i79VA~*Y8kcWQg{7fGTPXs8zp7wrT-vVU z)APa!K^&4S%WH^%sFbF(>|va9B!&zvzA^$i%{$Etr2&f(d|XGkj{I{P2r8J@Fpj<{ zAksYyq;G*hPQs#r%QP+nILz@J#_ihw0_5h*2j^7aY=DPNr*cg9HdUPK{=!9=JLuP! zw~luKzfh0`4BcAB*`U1f1OdaoDTI_RjDX>J*|V1sSO^_9rhscY_~#M$*>j_5u=F-D z2jTSeL+5}m@nh5*4xr~XDE3+0ymk5TV<0jzirgzx1TDUK=AwhoE2>RB5qE;+uk3eX zy$6J4&sk<)`zxLu0pKK$KD%lJ+5?eJd}t|V8m_x2X-eQ#UIl8-&@Mz@4!KdT7Hmy~ zAE5!p?I0=Xc8{iTEGVn7Vd(4JMHKl|#qH$|QWy!@jT3}jW`4f%uO#V>Df+ZsJC1rC=_ zOHNy~TeL$JIu~BSy{4hDf0fiT|2$pl`#;tz+#kD|2~ux^b3$~!)%?V-vgzM${ULP^ z8t8GkaJlR$O=9K@;yWxu#r2|`<LyMl%NvPLFctFKhR7Z{!9YNTy57nP#+IKtGBXY%T8pU>6bSNoTlnOq^6cG? zJ-H<)jU!$!DC1=!@xI>4)IJ1$Oci>g0gs|a7T6iTnAJ$|L4qE$9y0;MS^VYNocH}G zi)ilwwI>G5d&=G08~sc$;Jpow%+OkJpq=>WUw3YZ4{iycf3q3L3pm&w!A69Zs)NP_NHow^ znvLrIKO5|UZZTNE!R1ZYOK~RJ^@UPw;mDgs zT+Cm@iHZ?~n?sZh3lWhw>g!DZx2gz*I+L+O=(7P>+ZkKHI|oVUN?1k7$A3tA z9XoHYuiN+NE0K=N0Oi&9@-J~00dec&2{c{kH2yN_)Zg_L6dg_buM#mGXAlr`8>$nN zWvWJemwcAiIXsLzIts{B9)&4h6yYH9$$gBF4=`MU!u#LxU}DVR+4z#bnLF$XcIH*UH9ut9u zTPV?K&jEu4&YSnbBA4!+gs1oK(c)D$loiFY2GG1-QhB6Az4rNFV=uLJM@V{W>F`Cc zaL2DbZPx`2@&#?Qe2KlRJU`3+S4Am3rTjG!3D*2qyJ-7YFMi7X-)+VJ4H?wwk$-5AM{Xl0DKGD& z1ul}lEbYt@q=F|%zn8j~DZFaHLd{a`8eGlonah8Zla=pFTx0(`n@hiqK({DXT5|KR zRiPQRHzt)#r0oO60lvFLgqE72jez&-z5hQw_9j=H_CNkINDypjp`YhC&>;G~DeN@h zT@1jN-I}Ij-RO^a^k}~hgm8)zhW+Jt(sIS={_`vJFC)OFgSS12rv{=c`q#9K?czC}%Et=S zBSX6~=YGywJ_!5(Mx;%CO@$t%C-Y+Oh$!|b z3P{+{)n!(-qoVIQTX1hUL>k^l>;(~I?8hkZE)Z1_qAv1SR%9fNdtQa=d4ifV14ojO zrRYPQQKEl%_v};xicX%|pxbsJg z4#q4r>ERbI-9IU+Y-q#ByQjyJKub%LRrFq@_K)XHqf2PS5Ld4tQq7a&aLKJ&2;c#F z5dzKPbPC6;vi5e_V5z(s4 zUJn1=k)Z?vU!;TQh{XS>$FE3=x8j=XtEn@;pjy9f;Ruy>2MHa@px}!(Rs>!9llE$4>kzBI1#F zc{Hu803M~5ac<}?t56}yW2U*=YIvuaEZ#L?69caQ9OC9`K%B;4{W0W^w$y$ga!2kE zaPT5;;ZY}jvGTK|uOl(=K*T%u$>gQV{@0zA%D5q57*30L1(c}$eOtogb6WABxX{<@ zW5ke(gV&|uUPOhq(hR?)fTh4cArIr12$4JB+%3H4ZG?2V^Eog_VF%f19voK;m02x% zyTY|aI_@`5PKh)B_hQa><0o$eOBUpD2HHy-etw-h?4VezMC=zfL7?N?!jar3ap0g&uEL`}UKdf<-DZd&ewaO6<%UZS|Nh?_ zg18NYU?pW*gc#d?4tjylTX#{xGsNvq*Bd_FVS;!Mg|6hKj}3eOq`4y^!SqO*^0a`F zK#c6uZ{h+H=@=2~%h-FL{*b029?p=@04;O>b*y}Tud9Zrp=*}^vDgE#2Uvecp_E8B zUu?ALmq(wynzGccEk_&74xEmnWoy|G-x<&)tIP6k6bA64on=ou<-Pm12XnVo@J}op z2hJS-X!-k^h?amw;L@by_Jg#TDBMQ0>+Fm%CD{4=+3Oov~p6__s+d#h>)*aRTXOanHeA`aL0qd=0wnlTQEd0_K5fgVc=rGPDoFRDT(5Pz-(H=nJvIte z6v2!Lcsli2(=CZ{&n@(v=s6)^I0L^Z-U*MarK81gt~h2dgHU4qq4*)zYcQ~Z8Ic<1 z{rI^>oq^fsn?a$Kej5(?X@mXp&GXMxgm~z7_>dbX=ohBubwT<_7*urxM-lg{v(;0Y ztRl7nz53G{Vj4_Zd*@}5@0w+i*NCKM@QPJ?_|wq$;?~%avCaeQ#fBw@dpln!=e842 z0?%_+pV_4@`fXl$oY#;UuaUYi9=c@QBq_`mBX_nN(Tl);!eGx~67CRmKK%8F8Xj7# zPF;vpY7{Y(|K}A;2}_B+BiZLdKs}-bC36+a-Y~j;w3Oy!{^K4Kp+ttJR_W7i;zwQkGKJ zL^fFWuyr$>k|^=BcpBHP4txz|CTz|2U~16P5p&$y8~fd=rFSp})w&D%S&_$CQP&qX zONQZ5l3ll?UK5FB-LdTbdcjRgbU{k4pg`)W)KldIVb-DWCfmZ~l_a%Q57w!F9@*vT#;K$SmN`DZ0{*n9&m3*0yQRRbLKo7r{x%%(L zA+N}5rd=wPCJBhJEgxk)&9!T}J%=j}nwm^|y)v$`G!g$K9?{4Xw0v471c7}O1^Qig z7{K%O{9WY)FFJ+#s^@F$OUPm7_;;=)u6yc{Rj!hHb2lst<^^2)a`OEs%)y$(?%o|+ zD_mREV*_(dT8=B2Czx~$w57v)=53^OZ4~L&`f=Y*CT5z`u* zjQ#@#&HOj&s|#Kp?oK173c)YncGOP`QgO&QuXpHqbw0Q+(p??x)9 zvPUgEaqQaSU{5_QOt(}Y0Z-P+b3nviCwpuDq8x3VGDpH0hlW4N;0a7#h*KXyC^Zaum)z>nG#}$C`Hq-cW^%csWT2v(~B2obTdUgFU zFq~7~TQxHs^EBQ2)P!fQubTJi-QNVHWq5w$K8GH2lF;ti#Y$D zJak!`&6hM*R}4yoK=c1=@53+%gR{ zQH@y?iWc2lNs6IDmI!UOu_qEGLkhzs#gvIKwwd4g@+j*5{rl_j$GpBTuk-z!&pGF_ zzTbz*oFQ^qwE(CwnH^I+)TJ zkraIv)_mpI^A`7KGbQEwDi#iHua*&sP$Amt+n`-OL~oU1InO{D4ChcksvnK$Ux@L2 zLUG&BJyYg_*QVr-^~yTAI=Q6q-55dWTA$X4`mlT6@2=_#UFUX6r3cULS`c@58F`Hq zN+u@igIiuPoQsU5rzbeN-p!UsSzn|$3=X+(fbB;iDZQG3IeWp%I5pR+dec~wg1$j( zaM!AM<YL8jI&(uzH{-UBtuD(>K$mBXS)lCNh2$OTkJyKdL3nF zJu3ME8eWq~^giroS*xxbO~uZ5?;AOKsqur{NRif?l<3qIJW#8 zq-OXEfoCN}iSW0tutE#1Uvp$9bc+=y@(Z;RZk@AFSs~L2E}_%=-6r&xQ$0&}rg3HX z`p0V(x>e`P=_-?yoH3RreS)kg+SA4BzgYT@p8M1^(^bt<6D_CWo2UlC$nv{r!3^r) z3yI*wOwn@$%-&y#Dn4mHur?`b1%PdI>kbFHBi%>i2^L=SH_zE(0<#is>_mnaA&qjq z>DJ0jVk-o){f;kt(G;l>HJW@spK|7L?9W=bK6Q^F1pi0d+zD@f2|Y}6Mp5BPZal(F5{TH7v|N67!?TT#U|3L~poUr((* z5WIY&nZ<2*A!nEIrn&n#MeGfVQl6ucekpk*&I?qrm}X;96`ho$16tx#cuRF&LkJYE z{eF(P>g!hIAKBHdjixdg;=o!5&WB9qSyCj`H;@&S18b5-mV=htD!kI9WjaVa zK8ZaxARqr`RMP&oGstGwOMhY~RioZ*d!L>xpJVc2Htcdmr7(DM?_{S*$x63U9crsG zS`wqPCZezqhTbPwknb-JI!`>RfU#q&w|K3G`H#H$@KEGF1R@~6R84PQzG6k)&cU64 zz5aI(9i9%4q_iEAf4ubSeKdHwkKEsR7YU^}Y0)Zq&ewzDKbSrRF<6Jr#4iazD#-iY zw)T6GUCRiFx=C1iTlsC5)shzOi0fz(0Wa&R#L-rwjy6Wke77>R%ex< zIth}0fm`6|z-qy^f64gUO>Ec^nHPPK)YU(NVQt;M%F!Y=Acg-qCt6dv{9AS0C;J{W zqG4eF>nw(i-5b$wb>4Hy?w4mS2$RPxz{^IXan8rK6ajvBi|AT!wK<$FJRAMilkYVe z8TP^qUyg(D$l5J53H-NY#wjYiYC9_rB+kCUH$cCGUw!xYa^s5Yf22`0tni$-_7Xz` z8x^u4fOJvdVyABf*qikQ=qpy9$V*r7=@o}cA&s&sO7bkG;jESD4D2|8pJ<#41{mKS z@&lD-D_V`rI7ej9PiW(_P@S_9}A?oPQiIfSmiZ5Lqv<|Huv*8pYZXlwC_shftzh~prHxxj>lk6k!$ zL8n=#nWQ9-iDrCo{0gtj*oh6Mj+TR4oPDiKQ6uEchS5S)#UM{+bln1akU25sz z7us9>9hZgcR@0MkHKAX5iGlBVO5-7i62}ss0tps>yd(i$e$SjfTE)=a0rN_P(%e8y z!8nvVmirX6VCRM`sxU#UcAO7H0%;d4`UY#@u>Cz$QXHga9BLeECJ>eh<_&&kbinqM z>ylCO$WsjF-VPE}r#ECaOmOr+Bvqjn=kB7lph2x5K5BrdBhnH5_pl~UExKh)UvNRs z6&UYLvrgPVsoYa|uyBIcojf7D@Fl7{FK_F%%AJFTARVMGp(}^23tKl1vrQ_^XC3sD zm|kA&nG5Kl9!@R$eic(b`jk2Hd)=4 zT6+0zwimZLusZP4q@7Ku9v+PD!G#F^Qx~8Bo@^wh5Hf#V{~ez}iO~WA%l$zPB{=3^ zR5EXUBe5_uGdqw@x*+Q`pFW@d-9RTEa3SI`r+n9&WpWxE9jyoUUGZb6 zf6+b;eiP~9jO{du6i|U?chphfDER5*+KdN}G#q^Gk7~!{cm>l;{zc094-(fp1v%h< zmL8G-S*8d4O#V+t`@)B>@a|DW4IS04lI_a76FI=m{B;ykxwo}ZZ+98XfQ&N~2h6AV zG5cRur|F3iC(YX(g6L!bbDQ9_%v7gCY>s?+BIyxOtoP|r9!`&s7PbbSo^~QZoh%QB z$FKZRbLXq`AP8O;hLEn`?E^unbyd@&S7`q!Sy)#k3)-(+Yuf2pjqNY&hzpx0Nrn&U zF&A6gy){sn=BXfUZCbI|tpc}rN{m8`ldZExGLW{N=#-i*0ig8Cm5oT3xL8gX=Q8c| z%1w~p@9-&Cvu*MNEUOxeQx_PqJXif{-S4azi{)N zb+e~=O*jrax|5hnOB#^}Laox^fMCV>+CS@dUN!xtO_Lj7Rlkz&-k?izrhfNb(Q$iV>17Mt2OCDGD2$P~@fvoN+&-ehvU&IL0pqLgHJG-o$t`8^>Sgn@5rzPp6 z4boVBj{xxD?AuW$H!<;}X;Rb-P_BNwR(?eLm!07+!=x;H(x(U<*AqYY)e(HBq=#|0 z&EDg({v8@P1}U+^6x>Ktx8%)Q*hG|Otpnk6^oaBu@PPKTcD7CTdIK6i?c{_06OFKM z)p9Bq!;s7LDC~^;X_ODY8d7LR-ikmown4rp8N%TX!lxgnxe$5R<57tX%+_9~09k9B zeDZE$idzQ%=&NbLkF7(30GqbfIc&`UU=bRY&rO2XgOM}F!7Ct>85TYWGlm{F>s5I^ z?CKc-pbtq2tBZ$M{W`AwrKC3A>srlmz;YW3ho|=Il=9I-`l&th=FJOm=#MxBSa&=( zi57LvTk0%&B5a+sRK&5!+K3&d$axw74eO8bd7B_4^x)?ep!AoGy<^sdLKK5}2?NZ- zka$38Jd*zNK=zrCvApD~n|6B{0*wZ{U0?1-@>F$1&hTF8I7Kw^sqx{K$H7CJ!30EqABJY8uZSt(u{heFk=6+tXc2a87)XGy(ea1LHN#r zSwY&zh@-i~W)V|TJ~R4PW0J~%iO3yxd{fPtoniout$OR$xUnoeux{ASUCMXTCDA`kJ=5~d zuow_CNO+zd^YaWKRB(DgON2>xXC8USw73CbVTT?V%G0}g-U5)nPQ#igNO z3z0?Ih9m79698}s4E4vVoq5#ha>!dRaJ|MXiK%~g#MZ% z+d5S@;W;$3PGRK3>({oo2x9=K-HvSaY07F57Vfp0B%zU=hNZcn#*`krH9E01nbIIh5(h#C;fEdatuQHrH_Nyg zzJz=#8c5?|mM%AQfv$OvTQE&oQ6X&U#E&VB-KMeD54w7iq2M5U%%9NP;U${X;XsHR z{gBHkhwZ981gtpFFf?VMvie1bXvHVPxATZt97V zynRUo^J$B6%=t(17o`DH(ZfjM(xm`Pu_0&4`{c-hK^nxf!U%2!KV)hMv7@C=pU=q% z*~zSy1|TK_A}vc5Prp*=jtQW)PRm>7$f6jru$k^Pyw%ln6#ymt@rX;9kHHVwE-3m} ze&w>sf)A4BqD)GI)gkB&&{WiI$Cl0pKcD~O04jT07P@ZmraG(s=wo#N zG72f%wx-nerT};uryxQxpZ=rLAX5;QwqGG>tG7 zjKyx5(6XP86LU-xG<-!Shp_6iWtDtP+f7yXMv2RqOym>?%B4Y~m-%MkP5sk_U0{{#xJ8bvX zcLfKqJQ|qE3wZ(XU1%!mJDIaiy6yW_NPOJoO4A^P95N|H3h=(jSr1+E;z9@4y9qLeENN z)^6|iGYaGkZ(A_AIzcY+NTWnIt*W;EV`TTk+~bw}md1>}c_qD#jLf5{5%u&FpCejO z?S81dlr0Q>>#;HDGXMMe-wynL?|?0}q7KffzGdTjyMLcMlwKymV9z~{?OYshiVWFe MX1VeH2KT`K1FA!!?EnA( literal 0 HcmV?d00001 diff --git a/assets/favicon.png b/assets/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..48b5e6c6a95e5c97a74f67a29dd492cdf12a5647 GIT binary patch literal 888 zcmV-;1Bd*HP)@&u+FBq<^8i3op-2ny`jX~7xoiib?3W7+gPjm%Gs0s=^O*8kr%mGJHS6)R z*0iv3^T=bHnXrTtB5cTMQ+Tx^>|tuQanpi@6)NeWJg8yHFT21D{EZM{J(`i{CEm2M zya>W&McMg3!ry3^@M&4*^H>4Ay1f;u!+~tgz?3F)hrMy80;XOxXAJ;Tp3r2OKeV&d zFfSAhWeotN0F;&#!l%J{H34!choS46P4hxkp(6PJ(NF*`oG6Ey$m&M#-0`5rykh{E za_Bo9F$}!FyA7_M3PVGU4w$lx{p+GSe0|!K1|U+YBLI1<048qLTFiVHs5fD9Qu_J| zeFo@4zu3#Y=I@H2gKHoX48Z5%hO|)?`ZzE*GflO{aHqR!(fnu|#K#V}0{~MFUF{of z0c3&bZ5yA#0gx5jvUynW8-WQPe8A3tbZ z6N-)PH~Ze}sWLXUeC~4&AU(^p!t`W^Y4}g20xamua3kEmQVmDjHW-UuI)KpGV`Yn> zG_ofnfPga~Mt0k-m2b}*;n~eCaI$j~=(=AXfJmK>uPyGh!enNM1syTMD`uqDmL*|I z)))QBsBBd^niJ<8?$>uS|e!3X%M7O%#z;Eis|o zf-<8{CW^?)jXvcMQp>EmC|#;!p8cfM7qAw(y{uK8LN{-=t=1#5Zab#=KU_TWGig2h+l4sV0iZq7Ex^?fhmZ`*Ry{&)0~si)Oa5X}@^{iZV*FlISZVGAeuBr6Mab zGf!m4$yw*d=l?$S>)Y_}ao_6k?elq$*LXgkuh;v1ZtLl2@vRhI2|*Cwv7?7iLl7tU zD<{N*0)OB|Wdgt-E1ZvBaD^b`2>U-op3iA}2$Fz~9X@c@^U>F`6%S+$yoN839wGa! z&i-?@EaZKrf_-*PO{a`KIpOUp)YjXgmYeULzabgrZ>?ngibOacx+nj_jn@*vqOUCK zqy#uhS2>PU&UtnYOxl*%6xUxuFAjC54YuCD5P9NouShs?-!T5lny=JPtwX#*d_7(1!d(Pc*+cwSXNY=W; z3ZFgU3)NS<;fK!M_+$He;hasn0!jpg(9cg=w13a=v3XPXgkAHG6`3|4dWLmpW$ij9 z#nWxhz#GqLWOPmrsKtL_wkkgNjyl(nTbz(lR9IMuF1$6_(K@*5(YU+ZiG7oKU=5ZX zlia(y=wn&8=O_CGm56EP5X$U-pMO6P#J7B!G`*NVuUb3T``Ed3ShDzxfjcgFxTK^+ z9fyf@b#Zawa(~wH>Q&c8?R}FGYr^PKwZ~YukDtQnz6}y4LFk{KnAZevWp`qXbGJ&m zjdiQWJ)KlasO0DVeuc&2r>W8rBW`$A^AfoiS15Pagv}#szxh4EpZ=%ie`{ecO5!w{ zvE{QTS@+Xq=2(Z?$3abP4f}Dw-r@d!JMy^L@TP3bj%w*NeJNt*G5GN9G{k?ild#t| z=9J;Pjg`lH6Qcy&+}yg23wHGN_um;fx4nDZDB9;)0=9F~W=;M)Y?}bB{>|Q(El@3r zUKMki$&Wua;JgG|6iXbtNblaQ|9HZosi5EhnR{*iJO-!h{QHhcq#fu_lXqLK1AIjI z!p7&;8W|Z$nHF_R+8MCQL}|98!-BFzvtJFqrH(ZD@n&yV>ocT=hDMZQ$?JFTl4)aO zHR}2W^M_m2fVXtrbWi^=4VH&J&DwnWv5Z=JWLDPhiv|3^u67>>_vu7;mdbrD6ff8` zPmVF8N%A7)q5nP(???@;rxAlI9;lFlTwLBw)C}$h_TRjs%15`t9dAi`8t|J9A@pS% z3ECO>U1Iz-j#|#b!hd~xPEMd6=9JCTM6O>>F#0`A35cZV75jR9fXTXQPK+okg8eHQ z4I8zeu?aBDryF!iuRhH8GuW0Kd=D2^%@R{8enSA-|+uq zF>h^%5bi!!ORGx5ElzBAR(`pxOmjp|kD%11c?vpa(;utxk5K?=Mm+gxlJ^1k$BBT# z!p^a=v8&u5W-D(@urelZL#L4cB^k)J%LSpxviWV^O%}zzs|5|7XJ=*2lnP(*lL?#i zzx&5xa`zyKdeS`G9({S}nDF-9`qc5sF&<3qT)7=dLhH9E27%nigIrNnc1Be4)5nkB zh@;B7Mn2>D|X zBy0}|h50!(j(w_x;EWoaO6ypHb16l>TA{k)ms|u%dH6A+i6X zbi8Y~ldX8-AK?X|IU7i(0-VlyOeBQH$4PCuFSM%C& z$8>coUzQbQBq`?dAN<435X!KMWE?f&*XYvZ)l(i4EYmF$U9#=7XTyn4y|CqdtNS;9 zK|8i13{Y$G>04{RnRK4o-pwmgv%bXMBLFiWSj;W_FY4Ej27gbHzn9a4|D?W$5Xw>X zFTSTlM%6;K*T9Wm_OE5sSxL~6UGvqGyNE6>O74SKqtl``)VjbYVY7pO`i$g>V)eZ2 zi95f6wEmflc>)=rxDN^~@z`w6C-QK=~U&MMvUGcv5OE2;zs7rcl6>vY6$&3ssH@qk4GRk^u?Q&QDESai?Y=SLYpCA$R~(W^tJ!gIOqu7) z$}eMM#~Y+Uq6=AS=l&4^@@7&cb@oTJwzo z&5gWu=Z2Nsbio#1Ll%F=AHo0fo_lOBeYqNK7Ett|boc0oA+Qp@p2jVI?jAyh-h!%~ zJaAsV=gqRx4JvdTE&v;&6{HM*PZ{7-HRL4R+%eJ1&0B}-AImKp2No^zJNi5Ouxa0) zAha-lBjVc54Kem`aonJ%oYi&n>;AuI3Bli!jc_XNfZRkyx<9bp3G{@XO32@q#Ezh^ zZI9O>Uo7AoY;u-dGfIt`@QplBdH8pR0EV4-jjeDex_rQCXnTqn$H!McxiR2ts&Z|a zF@q05RZR1Lr8QEzqOa!lskIMI08wMQoQFV+fPYF@>u$Gpt=K^A)l%*Y`Si6tIh+4B zXYt0Pti5cmFVG!a`B`n)^KQ;2iVa$!Cjk8iUK0=&LJJrERmVw6?LT6WI-#i_4_}6i z{$45J0-Di1HupHKtKce^v*f1v9e`mfptL`No^4*mjfJ%@dqm_vuPz5+YJ|l81q={s z3kjIW^m$j+RV6SO#jE)9fxjbdOC@2V_r{95jaESRr=^s5dmj^gfKh-A* zkt6Z9Emm7&agi1keB~cHdYf^FuK$Vu5c=(P|B^NCW46V&xN`bH$>bdi|_LnY@(3)2*|$-DikD$#9)BUnWDtO0zwX;{!>^#fXQqP642)84G3W}T-*ahKfP#DB=~Q`kO;V36zm6Vx0#ct@9HDB z-mCZF&;ykc0e@sVLP$Q`|Hc4oK5KXOU4g{d486j3)hcGxWZdtn_dDkkaE3f)CFHLo zLdDXXu>sLmCB#|@i+iuX|LZTmAHI(0@=-@%k$|rf{$&m=la2Cv+(5hduGx&$aAK8| zNdmS1z`qjv_X2}9AgdGH=bmohLD&_32X$5eEAG~EyEee{U73fqx1BzAkkFi6B6(## z0;=4G{L794RsjF!Z3kUeAky<#9>pqS<;VVZ8-zZOXi03I%aVrDS{5mups2#vVJ#B> z-tSwmUuLyxSNs;veOLK;CW4n71cJxQ-na5Jel5`e72dm+m|X$L~O zSW1}tWN(E=z^|`5z3o>^OWeo;e{lX%Npq0Rr^hsMG7mvG+3Qw5@cU&w^7bL3i=OJ5 zHIB<22fz`SOXgf|v`16+>_}Db{C3<;TF&O)p7+1$>ZKVwZ~GrkrPqp1xT%IUTXpop z$t6?E8ZYy?{{+**z#zKk2tCd$v z@hXX=<<=jBP+I6vt&0B|)MceQ8O^tS_i{OVNt^EqB|}tH)MGrT7Wd(sSaMm~a-;1V zYL)mHUs}3#!xE&pz&aiWmRnm6`uTwh7ram~9|CBdH9hYR|4jjAB!xoMiY^~Ntq0jB zic4Ot=wcf5-2DF^q?<<1%vh@Z>kUYytT;I6Zv&GE>-~iRk;aRjDt+$g(ZP;4L4m)) zk>DRBKNbAJ(dorjI|G1=j@WO@Mfp9R);<~0Q^f$pa}fU=T4o0lSJ7^2)pXq9FU1!D zhBg|@FBgvgz6Y>PIon(OW=7^?(gb7}NFeUv6(fT*!QS`w@4WO0B zzxWq`E>?Tv!tuZr1{KG$MD)h5M{z}CM7jeMgHTL=c$L=@C9 zJwRlQvz{!MUYE5{Y9&4NTv-V0Qn?2szno_rstFT*Ig&&0qj7I`%Ye@RSAonn#zlob zR#%bhV-ar%h=EcU<%?XF^#?Rcz|<> z^uXn^8A9zp_GwtiOY=_MGHgje==$)j3G+CyeTbNvTJ@4$ui&xE1%(;uOfBU1 z#jCf7ge2&6`O0!xFT>;{f{ixc2i4xK9Q+WFMSFTMLd#i9zE3pkwS)gdcye-52hilf z@Qs)MW;OY~*fYp3=I!aP{#;O0eDQHQ|IKBr0ioZ26J{q62YaLRWB<=a8{P_E+a^FI zw?=x%RxwqOet(zHY>FVMngo2&6|EYzV@==-JorEv^h-Mr_;KmuIn+kd(R@OKNT55% zF(ckK0xyn3VVEy?@qXVEC!JO#cbid9Q_AOyZy?e-rD_a;Xg= zuj=!ul|;-t?1PT(n~d9`faLqHW%`rc_74C?E^Aj=4S8Z3naJfw>g`a<>7giDvUZI# z?GW4T)lB+ z-7?acfRKBsv~SpRtqlrd%kE;#_T^(=$td7PMCs($SvYK-dtI#mFTy?39DuyiZTjn& z8%xqVXKW=@I^QAy72>(i6S)3UrrsfbW&N6a^uM=ppVuHrc+FOZX;X6qLagtX0{zuV z%oE7s!Jd`uSM~Xn3g>Cm(J?1jy~h-_4SW5kzV{!A@jZyBlo?ph4yxyNAV5shg&{xz zr~43M|3z(3`DdGIXduP~%^q+?m+v=Q1jzx*vF*R~ZS-z-I(I6Mcu0V>&*~Ao|3|>- z1EC#|dIcI`LO}$c|Kj%g9;SZqKL(IR^oykqK-)*C&u4u-aoB4ZR4ZH{+5YpJXZRlG zfm?`fk4jDU|9l(fpWp!+Bag1Yl({JM!mnNM%T^M1tP>;%UIAXnrTy$w8UcM9gUhf- z0(vj@r^0UxLm!^qh5zJFn56&UO3(WC#M+YL)6kUEom%K;eQ{X@)%k8gMHn?wj`^%Xi3SC>~KKxxvuAc=7}6z<$v}=-^Tm9 z`*w*R7D%M`{*WmqTY(#&xp6@6p8nTed|?GO>#7hOQA;_KGt<(S#a67`2$E`*4C2=T zBN27@oF1r{BK>Y)DhbBNxWye?FS%#=r)f0%sw80|Q{Vyo}(-a7_)U{ZZfTdT@A8D7Mk*`q` zw58TAVt$oUuOH%T&#Ky_b&@|ai#pa4_SEd>L&{5>$~vGHU+$r05Urj_5BLQ!1s;6U zjd7d`xaV-|)4F>uwcX(9zJF3s`SCm5+(3othX1w1y1o*+WWUJAhvY#BmDG{JdQG<3 zHMT}R9?yByg8cp2EjBFNL%)Cuhy$wJO;rIIB6wTa&0U((W!_O;HO`Xw#Rx)9ELn-fe9y|(#AX-qW^)`UM1OzOo`n-xFJ7y{g_y|v)wFs6w5o+T zQI5tHqJ5vefcJ>ojKRDcQuFnWQ-4hyUtsnYV*z93J&Bx zGJk!Nr>Z0%Xm9}0u#80(fWPy%uJ-li#?LJ-q3Aw3@?VxNhP^ z&J{`mf$tL=M6hy5e$Od6SAL;DhX%qkVAZ0#-U4PH@KUDq#feJ^4VU5l zKgMVy&9P45AO>$DVu|QREc&Lk_8&2!FRD1RhpERl4-xA_@o5LJAtjK>w{!zKg3wg6 z7&h0i)DR@BAEFpmF)3q0Bs|yN?>bQf{bl8w>6>zX$9ktPIt`1-uj-2OPpQLHVi*Dv zDaKH>+iN_PC=Tr(sI;+%wZE_A39EdTWe_;%i9!AxCQSt%drgg}6yNkA?YnXUrL6!L zlRHIv_ypeUCTM9ce&Zf89W|!-WzT(E(*1<>c6{CVGYBa0dmJ{BNLKUssn-F+;(k+i z3%NtydH)xm+|heCL1qk#wHzatviGS(ra zdn^Q*X)Az85*Av>GsO>v2YzV4f7UJJ4|$h=37blzTyc$E$1&1RxzIr4m#!l=QB4=t zOjvwxY0A76J}YVB{lB{a0uUq=0T>M%yzxA_`0Lxa)NC?~ZxU(o!a<0{(Av+*Ojo&i?#gmI|cOklc#v@y4WOcrZ!x}Q?Cq$&1O)At5&}*A4GL3_hRYMj0;J<~UtdzM(^BhX;fM|@ z#uFQ$ZpJMYgZRKmF~7m2yt`|^&wbAhSiwkJ9#~=5CA0j}Egsj#Kcw@=Gv7!~at-Wh zL+36|5FITSkst|E@(9|7+GDG_LC3#F*`3yLO^o|p-ZzBh)*t=<( z#oz5cc4&Cv%l`T6--IrrdLIz%L4m&~|&xjFy+(A51C1`XFnWaXTk<%I6OuuL?r!y9<4wRbAE_Q)#|zj{DtedJ52UF2`=)C^H( zfm|68pKGcVCg#zqq=a#PN!=@3>7aQhnAUE~z`1datb)#}M0q3OFXN9V1GD(OKCQpn z!4&%<*KnFjb#^(fKzm&rrgM%uli){_QEI3%Wz`s{K5QkZvbkZ3BO8H$kiq^ykLvmR zb8CM2%<^i?+rK@1j&;12Yw=bkGw{8k_&#y^4e6_FSC~sQ4dE%FC5}niiaeM9;c+(P zCXtSg)`gy#kG6ldD)X){BZ5UXaDCzJ1B+z)Wx|y(JDXVDjO&6-!+O_mGiYC1XhmqguJ4rQt5NARyes~d{$4#8c8tzpnw|IlyR!>Bv^gc*N z)PH>=(6WXgmffCkLL@dYpfOOBajJ+G>J)C!GZQ!6A6?!}Sv)OLY%=@SelYy5Unw~@ z$F&1#>E+Nx(H7d6FsHuuk)=L;;k%+sKaEs_2mvcNz>)eol%wC9xQlZ+w2X#pt3Vuo z@^gZ5B5+XYMEgg+M0My>yOOS7I!G8NdtMIVkD}z_X49)vw=t|-#zzP7sEe#V=5(D6 zMs8}Y^%Cvnj6Da|ZIpKbRR5@g5H}jpr8yHGwO?KnzA5+FL|$xb1J<$*uN{K_bO0Lz z`r&aWt_c0e)2Q3etaxU>Uig8fr}=mwLhuR{SSlJ-DP=w0xj+5XGkpWk z8&zqFW~H>d&%W`?aLP+UX*Q-%#M7wj&yvh=cTfCo>a=)7UKd`*P>)|+C3p5XIccbmmMMg??y){~>+YG($1F zH7tj{C!Lr-ZqAexXhAjV979VoH})sO0CL+t;IF3egflkQtmC zrBXVYX*krQ>o?Z?5=33@-9z7TSD4K{vf4smbUyi<+f59l{VTGZh^Jcmr9K|Jt`T*2`)_5i#T#I}i8SuUo6~Wj-XKGeq1R(c4Ve zBFu54l}lh-oGWj}^aSOa$`nl>=WC3A^Xd~JvM7pNz?R_%1OcIf000vtg={GN*3lV4 zRO9O#lQynOIfHU;3`?g?;A6&FI3f5*h#v{mYyuK15d<}5rI1w_)v;U?7W_*zkx|X2 ziPdXY0HQ^rwYBAPukk~;?npydwTmX7AMbIjSApI4))CzY$Yw%~Zaj_Y5XsgTn(87_ zOZ*#%Y;on+F6heNfChHge+ztIMmovnjDO!@Z9IU2rt>q6p)k-rE_ki+ zYjE0Jg5arueX;O+Ay_zopdZK{!!FeCJoTmF+`DVuM$n@QS(I zb#df{4ers(eVR#axhxTLAphw>Hz9q}W^5yZB&|t%);MI-N_*E$V*EW!nma?D%)rci zzT3!B++t^zPE)C0Q0J?8D$pl!{`LVV$9I%@C_bUJ>AJSxJ=OcFYk)NU*9gf0Assn@ zrV!vmvB~9$rqND~MHk|~%;Cc=q_j3Tv7U%}BYs>+K##}y%l3cxYN6|B$d8J1;_(gh zBL(1N{~pRr6KQAhOb$Po@dRU}Iog?O3tw2RBwxW$>6jLO@Qwe?4EF{UrzppbqID8q zAZ%G|_Pk}3uJ6z*wmf~7g{K1iezfecY^fdS$cp@Ac^ob~ax0g`ZN)mI!tC8_%fqqv zCX~Vj=@u?lD>b}gt3T$}b3NJ#;*;eRe$06)k@=|#Q@!c+{uN6#;?LlekMoxiqkSq4 zWf+t%DtT3B6AwOyE23LwDJ|r7CUuKlP6M_i7Vgyc6Ii*Ahev{wr;Hb@x(`{adkNFr>99qC~x|aFTwcfR3(g1IgBi* zu@J-OZEL<6ko~Q*y}f+*>|l23F?vHt+JP_i#21ys7xIbW0;IxZXfq0O4YpTu=u7Qg z6n`9dcN`?qFkJSke1lJ(yw$>!Iu?04WuCnvn8jgedL=r z(=0Ix>YG&|exId26TbDF?lhB$?@NIhd$@!+bN6xvoreMHEliMU z#uFG7JBsk-i}U2ZI5J)?oI#waaRrQitH z>CbnsJs;bjS#An4lzx7xu}-o}1hyo+`N9TxE3MJvC5P}c776#pA1|V-=kK-|tK?12 zT=ejxw?KUw6kqZAfIYU_P@^4{+!zOwl;?RrPPL1oMtBipe2|(FH^fhz{_lD$>bpub$Tdy%XfZH%_$f@)_1i zd=JRV9jPctd~r%E5B{3wYu~6jM5Glkdic`HB_s+35+`>Pc(@=U-G`#45SX3>ojWSh zBI1ox2v$?-TQFkgjyttzntX2t38w+6&?oN&81d|Rq_-zPC8_O4b=U=-0UxBvjBRki z2t`aZFOmtg?1DiI&j2~7gI|iLaV^JTNl35cn|N<7rKf=5{~)Et|86J{MXRsUC&>F1 z3}BWz`HfM%(Ncp12$CPjEFXxNZ5v6KHj!D|%=^TbKTj;Lv#5D&0o$X5oiGUSjDsuN zX1N^}$5$e+uS6KGgWT*^LXOwwTs=y19bxN4C#H-os2}i*(S}WRt>n^y52QEd-^p$R zn@<{Jt^hvSE3YRcTVsQnzj-H)w_=-i{zL!5SolaNK0_PNJb(>8MBw3sYQEyf6cc7u zbk4;+&%g8t6sxQ_m`O9l1@AFcG<^e3<5y?=T=!*NR8)IDv*2jeA*grfC{bnNX_PoE zwTmHQ&9LW1JlwZMJ_SMQAB!@gy|2oeWG5grNRLp^uZB5N5F@&@O4-8>@CD>&Tt6p{m&weOPk@Io^gthe@S2&i!+lk@+ zKEEh?ejzD7Fn>Mz)3D<72ales0+8(UD_3=eqMs-V@Kc>8hy0#!A$F}q@IVVa@Arc~ zZQr|>KS2dTO*50GV;lT>`JsHdGK@CqaBUs_1P9?r9UQw0_U>Jr-!9ppzpxowcmlC% za-%3zS5;R9h;U6RU{xXKwM!aR4_&t_s~Uv$A+ebg(Qi1la|>t~C1@%=4o(ckzjS{i z?k=InjKOA43J@RyS+(v37{R3LzuX{^G?xlEL-+h66K4XBURi8^58kcAL)MrO`NYN3 zgrxM@^Q4FB(DgBnpwD8^_p)d8f00P=e}i6!3YJH#ohX^aR93=4Za2ZD{JQMAY%o{T z2Vg1rKB@n8^8}QU;g^|Cc{HcI(d-t!dwUf*6Ojbf+vF4Mg~|R0Prxr`68b~rJ>3iu zGe+En4SFYd%*0PcAh4me(0LBh{z{4hyRWwJi#6D_$T>(riz;q4Abym`*&5PQ<-9zq z34KM7_BZV32mB!gg8PRC0J%!S%GBYvKvZ$daXgM{O4os1!{hgMY$o^`@-)7;CMextZ{Lcc3Hnu2A^(XfusVW&zC9E3 zj?smPh4o{YITZxMgM>;BLK)jTUeR8HfZ03Q?UL^j5tsm6s=CCo_okDttH4i$@bhS{ zO{f-8j+R`snQkZwvT;KIePL8dQDoa<pY0D3oG>u zpd1m7mZr=D5Q*`YvK_oCr~JE{8aE6POTOj9iS3Jl){FLNDy@hQ?o4H7=3}6 zmfJ=p-}?q)0VB!7V}~IWt8iYCg7!&rf|+&?%x`3OIo*EB`K1%T-1cHvsve)@#EjcJ zQLQln!*9wbT?$uL zCT!yB1l#Y0XUk{#J7-ijadPIYOFVt=YMV8|7`NoB{qHC{*#@8feL?{zDkc8|BhZ#n zX0cL@hsSIOwhTdfw-gsKUP9nF)Gpw6?*=)I<9W#pZgWQ2@v9kWEUZM1fCLFhfM#d} zGJD+bu^yO0koLz*cW6#2vluj$ock@ib}Avcvw|RxBupLwxKj*$;=Jb-=Ox0Hm*;WNWji*v-fz39a1$FlK;&UllV=lAQFBVQ> zJgM2_g?15+8%|RpH+AXa@3x+3Tog~IWlyyc9g`m0Ve4-|I8Mms z7No=p9gszut$FpQilc6xSiQ<$rAAzH~l!1V7<_wUv>a{ z=mbJ|-&u^ghAhHge40cb?qsNZ zT%;tph`-f=eJU|L)P&Q=DYg{63UzjDB~U|a?m<|1-_pHx($5tzg%2}B%Wpp+O#0kO z^Z($rO<#+pWWnm0s)zkQW*guFp}@0BoclVt8m~ak`hpM$HCIL!n~gfNzH`gE9^tpi z$(WU|!4RQo2R7B?Q~k$T<9Mnm@tf1983VmTo3W5Fbbu2&cL<7tJjCYyCH(-#Tc)+i%NbG4S?M+S~0^@k`@ytU4>fmQ}CF(mF_R z8!(3aIU$@Q>L^4itt?#yh$!zI-w0cjBwlWTlEizkSQXICZBa0g7Sk0(z(dS{~x6J6aR|a=bkqj<3(6^S3Zm z%$k~?Ew&UdQ2;2o*=bv<$8MJQU2=Z+no-cyrzO8BQIX){*kmN$wH1D-44b?e!e}>} z?%_!r@KG*bm&jU0C@uzc(5NZ+-DQ^2};JZXQmdd8ruK-IkecQw0}$ zEIL&#q}sR7T`K<^Mrc;%dcFfn+rS|JO))BrfaxIQDg-1Tzxpi(YIJC^5L%hz1i4BN z5xuD3bP_&8X88EW!qy?grYSQ+O}K3^2`{F{)2H0bRJ>jufEe%lZF9}sebC>z2X zOKDDCP+}J$Zf6Bl>B>1gQ}~?jftF{tZQTYI%LE&$=QVRq(TMFYwnMB=+3WuDr z{O8oJud5pCRhrZja%YQS`FcDy1#ikvY#=b0S_QhC&=|2*m}4()3lLnc>#0g?M&9=s z02~2P3EATy0hb8z8=aB@66nihn&hMwiz|QB^!*U#OzQEi7ih08Du>13lZn^h#c*P~ zHjmyeXi69jrSAe_3=8l7-Yd5<`+@MG90X;>#c+NU59q~Kr|lHZgflg#vvEU2sW%C# z=~vn!=7}$_RWJ-zLLbl^I;!hQ>KVL=r=h<1)zDcUPPN{__w2xfdZHs$ zjBb|rk2!RLt6%9Z_+o*_t+Gktvo?HQY|k;O=^iM}>J{-w9e&7-NihgD*b5)We=84N zL=sTN(1(=}P{L+wu@kQB?i+-RI`BQ66O}#bWR8IJuBQd(57y~n{e zv9JJ0iVs&0_$_?SOh=Fs-~)q@MDyEcP~<_v8K5|dfgZ}ei~kOhJU@z*OJb1O0z0rT z*Q&lXqEc>pe<6>KvvkQba*a{2wuA79ZmmJD%QxVD1YwcR$1Xflxl`RVM-xie<>60& zvTl*si6BfCOrARZpagkdN?=0uX=EmBElv~6qB*@?u(>d1`*xQKEo85Z;0vHi(*XRW0ON%5$sMQlS&PiLP;Ln4#<5ozYI((vZH)j~r$^u9U-9hq zh_gGzLscmSC2!Vx3eY{lyeSAMw65(1!6RrhO`a}rzt!iG%+|@lZLu}M(W4P(DFn-v zhwhJygfmEKGyHdJN$+oPcUkCvm-eWFyCQ{ZLtgbp9OR1GnC@I|SdP4A=NyojL zt(nMOS&r4yi(D6aKXo+U+-lg-KJ-tf*vBy0Y^Um`;zhL*L&L6nHzSoygEQ=37QU3C z2FoZE6mD}JzH;f7)o-S{X(CscgA3-DYLoGyJHO@34Xm24J{Kv}i+KabN zDC||Y#UH3>_#71Tequ@=KF~tC^8+;AhX}{GF%rV9iHK(#zF;d5 z$b%en=*x1r64h@C%=;4};T3%l&U*fTcL55~8&a*Vyp&!0s#f7u&Tgtq*UKFD&)8s_ z(R3Z=bR>7OKJwU zMawNX&CpROOS8+L@XeV0%2F2ZTs9`eJZNfpKwdAej*)YvTE&{4zxOVA{RKng$jDix z3*_$oJctMR4|ZQkX!($TMZAq`{q8I8I~UVsGi7TS6_4ubbgJJTK6OMZ(9$_acje7T zmam?z9fJKYGN%i~d+fGDX+j(=#hcAE5ZHh!#7j;r+`U?9hhnDTC=MTH_$B2u>muHY z6?uH?$A#`7;q$iuy0fKzU7G(61mW2&V#ZAcjZG5hpe(hLGffd=>*Z9o7x}e1Vm2Ro zw{eG#T+J6odfhIEnu^Y3rIG6o3_L6yy-uXm+WX1Nm)rDlYe^@|@7-PIo8)Ie7+bY3 zVRF56?CrV~y#FSe!T3Y?fpmw_k?EVIGyHROC%RVE5zA|rjHFVft=t`t)bLVY=9X^H z7|(cFp11j;`b9q;yaLjR@u*f|ZDd_p=I%2`hM>4fD!F(5uJ-$*wjWeRl;Y^Eyb2|`pJ9>NHq$bu!7USC zjn?&vZ4{5$r(2!BB-nfj$Di|HWV@E(vsAV+eajT~ev-DZcys#U_C;f8@TTeolM4@K z>y9mPl5+8x>*SdrzfwVk(ht`{F7fG?NXZ3a4iaX7N@cs)YJ7&93+X6n-v zqrKj>6VvQcuRFJR3r_~O9|rH3Pb_WV-=7;0D5N<_K%|8N38A1v9$4tg5e>BSeN~rN z$ou2s5&j={kkfQOWKQM{C0v>`aJTd}HAOzXF4&_54FS# zJ1F>+H{d?f%T`Th0ys~Ue)w}kjrxFsoTfuZH%Or6mC<_SlCJUD`l8PBPHvY>QifW0 z�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 jUQ0)O#uc$Z0S;z literal 0 HcmV?d00001 diff --git a/assets/splash-icon.png b/assets/splash-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..8ff58afe974fe767b9a96d2d97e8624955c7067a GIT binary patch literal 86746 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νq$OQ!=#obMjcj7xwG0Gwj*2SnnNq zJ~@D#ilW*nggtxZEJewqRV8>O#v;zIl_9Y&?J0MzoVJ75e@h$N1mySsY>o4=0IwQq z?xWCjxX1s=jSx~UBGO(+V<)9CEg7&i27uKu$>92(Qs4ncS#+Pj9=L76o&Fk`RTFaE-u`|u|8YvoggKinWe?ip(UZhs!g8<83k{Fv<_|4{4FC@jxTdBl^}mG@5#;8fX15k$zg6+l^P^ft`TkyDLsi-q z&7kS7Q3Lsb#=WNy&F4o?799EPxPro(Pd%6{PUCLl{9-~liQlFBOpC^aI#hG-)(Ob- zJYU+1uFp!q@3*ufY7Pf23*e>}c(j7DNrHxDiLjFO09^#xa+_pXEW+X4E4-qE?*j~n zB<_st4rbQD>BfEWytj9rE@>@FNn_$VVKGe3$Dg=z3HCnGt#&-1SDwA8ia&{VnY=h9 z(1uCt7DDpfK}|hlSrVW*X9&1+mB+AP&ZMKwEh4pDs-PbJ_oM9LqQ?qOqsG2JSd(YR zZr>^Xc`l)+e}9wG?&+q}s6w{0Hic?m_fUb!k*6hz2&?iZ+_tg9_OhL;1UJ~V;q|^^ z4I+)ZZZ7kt+Wphdf>KlzS+kI0FN@myG1{4+_S!*$ia5xcQ?NR>ecAfa%Y>@eGj2?0 zs^Z8#FBD?Qbr?r^{tq2ky~^?Z?WQj#Gwa-Dw=I|qD4A1|^-RG*ZP;+}APT_b5@=X*t=^^x3EDFm%>4o5NZpj!dF?5 zScPVJWbnhGaHi2?`+NuD0cLyuSi+U!iHENro*YZn6oR}NR41Qgaw->{D!YqqW--fu z#Oh41zsNr0#I~qrLxH}!@p!~FW}6Hl%Fb98@D}02z1DM26R?MuF!00{{IUV^i*R#k z{JjorytT)rJ?rWAZdNO9uj)9Wd;2*c{7J~VYe;Qo=~HX17Sv`{;sp)JWIHDI%sJ~d zw<4YWHD!YZq0D`9*7?N8RUJpfU?q-Xp<;8L)I!)X;YosaA!3p^IJ|&z@P|6C3@{m? z9c`Ju35nazcPyi4^0P%^ko`EWM^&MsII`XaS7xvbxAgtFtUc>?d}dj-092*cbqgeF z#$4L{BZJWGl0YWw;y>M5_>5DLwdo^Z)E23NaqY+EY=ml(-TS@f6v$zFd-tghVL|fLA*wD#>)vvne z?F)v-1jog4;991?i5Qo07CYEyh%W{#MIsXx?w*_ALLh&eU{ABn0gg~#2&LM=N3=cUA)Dg7f}7sd3MlvNdJ_|o$y$b zlR{14Puh}uXMQ+%T-g2C)#Ij>N5U14N2@&2rF++iHeM3==RsJL=4+tc3=CE|_ETYa zwGBc)M4&$npYbqZ->yIZU9&YyGo-Cy`JR_z%JhdgWR;!h{7@#%sGWu zur>`T0EY0y$!@E@RW8abi9PaWAn10rj`2JSeQQNFSBH?&L7_vlwRg|f8GEw~$ z8f4;pr7gw(Ir~Zi|5$Y#zk6@twrL~fpWgvs2EuX%J7M%cj{&UJ#LOvMd{I#;2~q(I zC`mo12Y#y>`TmSJ<20PBkv!$Xd$+%9j|kzqxf?Fd$fS~}c@osAfF`Y(TLCliTKvcT zd-Hr7BSv3Xe1NuQ6b^}8d|LjmAqcWHNup#Ur565#s~#jvSm%7R2t99$xDI6<=s)=T z-U(r{YfweMcAg|Tbu4=uM~Vh{?TuwDD4R67|Ek9B^SB3hI2xwmzghqlIBPwt>(%!# zGTms~w9~Smu;PIBJo@R{zlMhkeO)Jw+fr(O-<9StfJ(u*b4Hy+@sO)b(?XNwA?>v# zqv`*q?X$1bNn{ES--2NThKk3qs9fm!a(3Z_-KQ$Hj8ABfUzNli5Jf$jj>eZ_-)Vz! zqT(Z8_=RKo-BWtwGgZmGliX*KDT9}SFWUvDLbLGp9m%mdG zCvQ?T1f4|iBDdxt+pm6i$N60jF1$Cd354XAKn=&kR6Hh+$*~vMgA-B6TR8PogqO z1Q9e0cD~*x9%>%2emCBvKGAgWA0BNrtM;)Vx<6>T{T~2lDB?$H4_3pTs^Z_jd|L(J z%xmp?Lg7J5deHl)9irB8Y&pa?A~$ADV)zT-j4$k8_`Eab_=~F&un5 z)3T#&_s=mo;VqQ|lb26&Q~IX|J`1|)uRjGC9aQM3e7sA**iY~IYh3XV)f-ZWY=MRy z;g-Gx)|&=Ci4#AtWiXjor%e5jL0UKR14o2*tllM;dG`#HBQ?L49uxW{NBIJOe5@e( zzw*P2u-O79xhJ$2!Q=`>mk9VpGhIfh%}qfz<)TZ=9FPc8T>q{uZoJ?3*V`Q|$@D{# zvu7mwx3$fjYZYCdd{T(81wo9`&_{^ruSA#Bo{TSWD+nBNQOIbnJ~^-oA1D2V2?>II z%>wa;G*F5RfT7Y*g0ZSW#FCDFNI~h13k!pGY0i8&b|6aAKID9#_3veLCRdVPOQaoK zdN^)&amefji`m{d{$nTe@0SMz<*Ipx=6?cXpi)1an|v(IJLQ0!LqV$z__$)snVSG@ zQ=^<4D9Yqmy5VV-oWUBSLe+Z*A8zPzf_r}XX76TyoYY;Y>HT3_S&hlX)lf2ug@*k5 zMFDSwc}xkn6EJf49b0_yqkAlA9=g=yrN?O*BBaH$oHIVy_~2vdn7I@cJFa&6Yv+~ zj89(ux2C{EUp`TVn^{=pr&5rI4v6Y?u{K{w0*N;1l-YT=CVqj8P|xZ_SfOSeT1IVd zR;664I1{~jJi9zS> z8H4(s?t!+r(5ZLf9pxX+jlY^#2Osea0U-n9<73B;{jP4$xvkcI{N0$(;8a}L$n3xm z7hY)R$rl|4hMgyk#+{ra_%JeQ|CMY)Vgm z?0@kKA7gUX(hj23`BQSqvtME^!sQs;{R*rM{>+KaJ8xyHOrRzPcj>+0siAc^P0PP} zwR?5;z67_DPlAzasGiyIG2kibvYo7@~42ldq+b}+X}A5CiTvCkGzHEK0)H<`@$jGg;Dk1xqA(}E9~@Y03tfvZDe3IsOUOx zGg6v4mLNzpq+U3Y#zEX{#FN0m-Q#;mwG}}?JO{m?C42KwKAbCfCHwSMrDBVq;$Gj9 zRW`HI!Ua$NiMy%P(&-hernJS_F+2HMFJ|Fpl99x$i(?0eW`cfPlTByB!vJ_8vU1bxAC~PeSMHtKG zgZAWkcEoJrwuyL4&IB zju7WLY>1}^QCN?pIR~<(+gDs}yKd|o6<+Fi3VD&6M<++Uu58QOdgo|7zt8sUocvP9 z>+GifV$YZfD4p}XPlBsg%9^hJ2Q2N8k6~b?HsGNuA`bzRFd~15MBlgO%b%=oWwOuA zh7?_SUH?stFB(6Q2!%wnVH;$3oF8Nx+%5 zkZ^d%5A)+H6P65=ICX2ny*$cb@Lu9W61>^4R|c>{426_%Q0oR4gP~@shLH3@g!wo_ zn$;PGD`f5MI5sL}pw!kAj-0&Ye1J&)Kt`9`#fkI^eo*qP_xh1s)5HlA?{3G*GKY6k zP4Nr-`p>DsYyDM7g3W}9V}G^UD+QhqIo^Qpc}Gw|5LG)QX;B*3<|L-)n|ZU#7Vmb- zYB)tQx;u|t_~*=vx}uYfpG67fc-U7C>rHLaQ>)IJw5ewbt7i3~t;V+nYYn`)_io|r zw?w%^vmxmq@N3Q7(k$mWEglrPK|Y~h~clzDObgptsZvZp13#u@iCW7-GyouGB-R=0hZ$aV0^S45OT-yQXZUu^Dfj;kV4BLJ4 zFVc$e6+z<+C3r{Gu$nKn_&-A@ve(|Dbl-OCNEe)CtvzE?IWzUGuU_}TSX)U9TXgO0 ztDxt0vpK?Gx@FfKWf$5yrz{pUQDJ$>THoxe%~?UItqKBY8X$X<^tvyIi8j64tm%8U zi^VIc*ZB~RkZ}CGC8uKGLD~3ara&!T;Puv1p!#f2u>bIDNq|XFG@OB$Yk^OHnv1*t ze&-uB6A4yj%m|2Z5=)Xm&9hPUn^$6Y9d23s?DxM(uV+JdRZ}EF3d6lDIX`L~l_hL0 z!r6nGjv{WBgX6;7SEY%?4>Bjlrd4SlaoieEd|4INc;syr( z+Xh^^BgAx=G6c`k!0zBtjmJ@%{=zpEr^~h-&?v>La2;Xd*3vLllT9Dnj-~d%rCZ$j z|0+ZaMQ`d1oY=QQ5Q_q5cR7;4<}?Rz!w15OJ5{cOyru*MrY{kd3DJvitsj+p~U3c;Up;CB@@+LqwVFbtAfuduVGC;Yc@2A{}S};P)AM6jll8Cni^iSMd={_6$)xo2;izC$P__capQq_ zBO*{=kC$vIkpvtn#U4l88qF}!*i7Fhka+z4-Cr=gxpf3QN`Tf0Vdio3+oStpGc|=i zz8k&Rbo;vT$YzIn4Sgo2M$1&!kzX@AqHt2wuloEYX?A(;tM!Q|{FlMWo@f#frLo#S z!{xjMut}#3WoV~B{ic01pl&7(>`8=yMo%v6hUp86)9R2Jc1<^4{Vh;M#WBx3$z3!>ofIVWsom8J(sr(3ej#~edpDo z&bsrVO&$Mc*d91tsoeV1%Mc1Fq(10O>^VMV2geGH2PdzUCB_TDkx|YKf$JC!Tum!S zc%M+f+91vAU@H-U#Z!4Wr;V!~K&mbPu%U)fO94NviI#G6jak#?d$0@_Fx`;>-H3gl zHmfEq1!Q<#or z42iNYXKe9F8Y?K^rK=h~Gy*E~P<2y$Zh+d6{U~3b(ekcDcR(+YNLF0k9rJae_hh63 z+}F|nF*#2)6e%;Ma}AJ=yUdiG)Ia_I{CVx1m>)U zKYUetW$;$V{V1g?Uip=*xb+o#^rhadeO79FSc)UK34W_^ws{R^fk>gax+5) zGi4X}I}1l*x6^8hGz5vh(H*9l6M{{X(L%sI65tPgg@HAWq%`WmX|fzO0X2vM1{y-+ zO{#*gBS19|UE{CB`+CMD#ulGrU|&_EUwy=t^o}x%dW{}y^6+by7UIaMRi8# zl-s^9`F-3#Xa^0rjGB6JLn^B98h|*Cu3&XucvrdqsN-xx2i%f4LP5) z+xv8vVSpe|P97q3af<+lPK1^tsI2>-EIge6L|s56r848Gus=;6mLcHEp)j!07SZ!l z!eUa8?kZ=od?J8>QA4psxrm`$Q6fdvgCvl9b%<#_cYgQn=YC)R5Z1&)ZONTnH7HyF zcYfD5Kw+X5U;$zr0yeJzOeZ23HN~x(5Zef#j6m7sxAV(Q34W`gMGj`=$fFf|#SYd4 zfn$4+ta+dLKbN$)tn?CzYGAgv_w-iBO-V&?O>%wWxAE(zYC3mo7(d?BA6l?zWIz`L zy6+Yw8)`7Y48g7*zqWKCN)79uXzLCJ(W1y?Bk7?j784H?5jYmdG9EHZ*8ax{#05|~ zd&Us|UV3RboqY6%AugE){xfbTTTaxk2uFO_AB7>p@RV9L8$a2h>m0IJ-YIyc1poam z>Mgzuic8sm-XqDp#`F{fsJ5Wd^NHX&jYR?W=S<=AQL;BxHS1E+u?3v{Ob&$>y_Y@5 zdH}H4mx``&Bv~d)u^#n|fMioJV@GHV2i)1WEeBS5QKR1LS9qrfj;RGe$Eb>qZ~ndz z?yDJUIiEKaER$HeKER39Jbh9e+*zXpE<}LiDE<&~NGS|n)s+eY*tH(;L}<)FH(x8d zrMuTYc_JX#PZ5w>%uz!KE^-<^7zw;{(YP?+1Rvh06QIPqv8`ydzA0f*v7T~;siauT z$q_o;vbOKC){KSUr?Ucbc4K_i*A^4wkj~XLMA)+g5$gc~219qT;JitMr$wZX&%#&) zcND}urGQZ(!Qf^vQQ7b)6Y^4`N~bix8WW=-$shzLm?U_-1{}6)c5p)tHVRR`%A6jr zi~O@70)d)--I|(4o#~mUZlO9e;U4-bM^-dRw1w;@bhV9%;2Lj_cxzJ_1R%3`V5*x5 z(|N5jqv#L($`pVRa{;d7D3-)G1P$XsKzR>xhd+Ny!b36C%1Fq0;>YZ0c~jzbtGtNxH(f8_|4+-w;=VdKX-RHe~6y&kpT2#^!CB^$ZrDP_aYmb6#|k~1Pfhj7a$-) zk(~ci9aIC3=LT?qoaz3$@P3%33OrCo@gG}+k|<=EBh5QA0=x^mmJV&uG8O-Mn4$K$ zhQ)ifnx5&Fn?1px>81vPq7`U*&j@5IM!~}OK3?|bF z5I~l6hY<(Ms8FT*LbBlI`x#D~rj90SOw2Zh$P z1oTSMGt&T7&%686nIq%}Y;T8-D<@a_)K2F~fD4C(Y7tW9xH4=nky81efXKQrdv)VEE5&MDM6}JB8vq zyL+SurVmE3J$#FVw^;D6KLm&!Njr>`TaQ&at^|UC;`>Eq!A8@YOzJZy*xM&74&3?f zHLJ;GE);-aWrXJ_4)pxhcr>`UX(L{I7`Fke755IM4A z(1iHWytqUGzWCPF761lEMO}fwc&8gLpy1gOfcX%CrM?$fqKb%z!`>f57KP_UCn6SB zG@@&~gfd)l0ZA#i{HQkkFTyE~$be&`Fw4Mf>IGSOuDq{c`hz{SqC?dEl;WDZVLriq z*on9CJNAyN-7;7{)4x0mPHU2YZ#K$;HD>Aph#AxnGQ#Vl2x68D_ab!P%n=~Nzy!z@ zEngsR|4fU8pyMb(J{d|nu+Zx5Nw$!+hY)X2za
k#7(O$34E{kLE<-{r*JRj0A2 z+(YeG%G0Mk>`1)&l`ZPF2pq0YEs%tAAN8^*ReY%spc>G8e^i6Fd4vl9*^n-*=(iEO zc?5PF-QoJXPf)OM_uD_`d#N!&sMc#J2rSuytkj>|5ER}adI0htVeV@N2On!nuI8r! zpwJ6I4t(#Wnka}^K+dO!+o3Wf@D`F-Eh3iVhj}(l1l1*gqfPEjXy>CK()RjYZ+r@+J>C1J3zdOGLJkoh+8IUNofr%0> zUp%&~eOLp`v?VnFmK>1^#SRL<9&TRGL9Ua)9u`JOLyfbA;TUPt$mwBN7(fGFr|_~# z6)&J+Ct)@0sfIyj^50q2@eaX)M&1MRyKM`fcgx-D;vNI6{Wc(zh{*6qn1I>G@eFkZ(R5fV#jYEMOv<)YfvFxG=O#hH48(d3+cF>uFq!vnY7J^as>vGr~&PJ=O5o8Gqb0m>rHrbn~0I0kR z-%58n_(QUrByo4!S8HiJrW;Ywd`EzTw~0|m>FN7O;+ny;Bd?&PDS-UZ=}BoIIufu~ zftPQK=aeGY7cW6tQU$(x!x9AbKs79^7kM3qFSbE8xZvJ!D<2%X?8z~>TljVk-_+(p zp2AlNzmkIFdG$O@4B^Xlh#nFUZAS8ekX
#y$yn?p}Zu^3DZcB0*HNB}E5lv`Yax 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 I74zu-0b>1vasU7T literal 0 HcmV?d00001 diff --git a/components/RepoItem.js b/components/RepoItem.js new file mode 100644 index 0000000..4f4d445 --- /dev/null +++ b/components/RepoItem.js @@ -0,0 +1,134 @@ +import { StyleSheet, Text, View, TouchableOpacity, Image } from 'react-native'; +import { Ionicons } from '@expo/vector-icons'; + +// 仓库列表项卡片组件:显示仓库头像、名称、描述、星标数、Fork 数、分类标签 +export default function RepoItem({ item, onPress, onLongPress, showCategory }) { + const categories = item.categories || []; + + return ( + onPress?.(item)} + onLongPress={() => onLongPress?.(item)} + > + + {item.owner_avatar_url ? ( + + ) : null} + + {item.full_name} + {item.language ? ( + {item.language} + ) : null} + + + + {item.description || '暂无描述'} + + + + + {item.stargazers_count} + + + + {item.forks_count} + + + {showCategory && categories.length > 0 ? ( + + {categories.map((cat) => ( + + {cat.name} + + ))} + + ) : null} + + ); +} + +const styles = StyleSheet.create({ + repoItem: { + backgroundColor: '#fff', + padding: 14, + marginVertical: 5, + marginHorizontal: 12, + borderRadius: 10, + elevation: 2, + shadowColor: '#000', + shadowOffset: { width: 0, height: 1 }, + shadowOpacity: 0.1, + shadowRadius: 3, + }, + header: { + flexDirection: 'row', + alignItems: 'center', + marginBottom: 6, + }, + avatar: { + width: 28, + height: 28, + borderRadius: 14, + marginRight: 8, + }, + headerText: { + flex: 1, + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'space-between', + }, + repoName: { + fontSize: 15, + fontWeight: '600', + color: '#0366d6', + flex: 1, + }, + language: { + fontSize: 12, + color: '#888', + marginLeft: 8, + }, + repoDesc: { + marginTop: 4, + color: '#666', + fontSize: 13, + lineHeight: 18, + }, + statsRow: { + flexDirection: 'row', + marginTop: 8, + }, + statItem: { + flexDirection: 'row', + alignItems: 'center', + marginRight: 16, + gap: 4, + }, + stat: { + fontSize: 13, + color: '#555', + }, + badgesRow: { + flexDirection: 'row', + flexWrap: 'wrap', + marginTop: 8, + gap: 6, + }, + categoryBadge: { + paddingHorizontal: 10, + paddingVertical: 3, + borderRadius: 12, + }, + categoryBadgeText: { + color: '#fff', + fontSize: 11, + fontWeight: '500', + }, +}); diff --git a/components/TokenInput.js b/components/TokenInput.js new file mode 100644 index 0000000..01a9510 --- /dev/null +++ b/components/TokenInput.js @@ -0,0 +1,294 @@ +import { useState, useEffect } from 'react'; +import { + View, Text, TextInput, TouchableOpacity, + StyleSheet, Alert, ActivityIndicator, Linking, + Platform, KeyboardAvoidingView, BackHandler +} from 'react-native'; +import { StatusBar } from 'expo-status-bar'; +import { Ionicons } from '@expo/vector-icons'; +import { setGitHubToken } from '../services/database'; +import { fetchStarredRepos } from '../services/github'; + +// Token 输入页:输入/验证 GitHub Personal Access Token +export default function TokenInput({ onTokenSaved, onBack }) { + const [token, setToken] = useState(''); + const [verifying, setVerifying] = useState(false); + const [visible, setVisible] = useState(false); + const [showHelp, setShowHelp] = useState(false); + + // Android 硬件返回按钮 + useEffect(() => { + const onBackPress = () => { + if (onBack) { + onBack(); + return true; + } + Alert.alert('退出应用', '确定要退出吗?', [ + { text: '取消', style: 'cancel' }, + { text: '退出', style: 'destructive', onPress: () => BackHandler.exitApp() }, + ]); + return true; + }; + const subscription = BackHandler.addEventListener('hardwareBackPress', onBackPress); + return () => subscription.remove(); + }, [onBack]); + + // 验证 Token:调用 GitHub API 确认有效后再保存 + const handleVerify = async () => { + const trimmed = token.trim(); + if (!trimmed) { + Alert.alert('提示', '请输入 GitHub Token'); + return; + } + setVerifying(true); + try { + await fetchStarredRepos(trimmed); + await setGitHubToken(trimmed); + onTokenSaved(); + } catch (e) { + Alert.alert('验证失败', e.message); + } finally { + setVerifying(false); + } + }; + + return ( + + + {onBack ? ( + + + + + 设置 Token + + + ) : null} + + + + + GitHub Stars + + 请输入你的 GitHub Personal Access Token 以同步星标仓库 + + + + + setVisible(!visible)} + > + + + + + + {verifying ? ( + + ) : ( + <> + + 验证并保存 + + )} + + + setShowHelp(!showHelp)} + > + + 如何创建 GitHub Token? + + + + {showHelp ? ( + + + 1. 访问 GitHub Settings → Developer settings → Personal access tokens + + + 2. 点击 "Generate new token (classic)" + + + 3. 选择权限范围:repo 和 user + + + 4. 复制生成的 token 并粘贴到上方输入框 + + Linking.openURL('https://github.com/settings/tokens')} + > + + 前往 GitHub 生成 Token + + + ) : null} + + + ); +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + backgroundColor: '#f5f5f5', + }, + topBar: { + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'space-between', + paddingTop: Platform.OS === 'ios' ? 50 : 40, + paddingBottom: 10, + paddingHorizontal: 16, + backgroundColor: '#fff', + borderBottomWidth: 1, + borderBottomColor: '#e8e8e8', + }, + topBarBack: { + width: 40, + height: 40, + justifyContent: 'center', + alignItems: 'center', + }, + topBarTitle: { + fontSize: 17, + fontWeight: '600', + color: '#1a1a1a', + }, + content: { + flex: 1, + justifyContent: 'center', + alignItems: 'center', + paddingHorizontal: 32, + }, + iconWrap: { + width: 100, + height: 100, + borderRadius: 50, + backgroundColor: '#f0f7ff', + justifyContent: 'center', + alignItems: 'center', + marginBottom: 20, + }, + title: { + fontSize: 26, + fontWeight: '700', + color: '#1a1a1a', + marginBottom: 10, + }, + subtitle: { + fontSize: 14, + color: '#888', + textAlign: 'center', + lineHeight: 20, + marginBottom: 28, + paddingHorizontal: 10, + }, + inputWrap: { + flexDirection: 'row', + alignItems: 'center', + width: '100%', + borderWidth: 1, + borderColor: '#ddd', + borderRadius: 12, + backgroundColor: '#fff', + marginBottom: 16, + }, + input: { + flex: 1, + padding: 14, + fontSize: 14, + color: '#333', + }, + eyeBtn: { + padding: 14, + }, + verifyBtn: { + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'center', + backgroundColor: '#0366d6', + padding: 16, + borderRadius: 12, + width: '100%', + gap: 8, + }, + verifyBtnDisabled: { + backgroundColor: '#99c9ff', + }, + verifyBtnText: { + color: '#fff', + fontSize: 16, + fontWeight: '600', + }, + helpBtn: { + flexDirection: 'row', + alignItems: 'center', + marginTop: 20, + gap: 4, + }, + helpBtnText: { + fontSize: 13, + color: '#0366d6', + }, + helpPanel: { + width: '100%', + backgroundColor: '#f0f7ff', + borderRadius: 12, + padding: 16, + marginTop: 12, + borderWidth: 1, + borderColor: '#d0e3ff', + }, + helpStep: { + fontSize: 13, + color: '#444', + lineHeight: 20, + marginBottom: 8, + paddingLeft: 4, + }, + helpLink: { + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'center', + marginTop: 8, + paddingVertical: 10, + backgroundColor: '#fff', + borderRadius: 8, + borderWidth: 1, + borderColor: '#0366d6', + gap: 6, + }, + helpLinkText: { + fontSize: 13, + color: '#0366d6', + fontWeight: '500', + }, +}); diff --git a/index.js b/index.js new file mode 100644 index 0000000..1d6e981 --- /dev/null +++ b/index.js @@ -0,0 +1,8 @@ +import { registerRootComponent } from 'expo'; + +import App from './App'; + +// registerRootComponent calls AppRegistry.registerComponent('main', () => App); +// It also ensures that whether you load the app in Expo Go or in a native build, +// the environment is set up appropriately +registerRootComponent(App); diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..4cc92b0 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,9438 @@ +{ + "name": "clwy-app", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "clwy-app", + "version": "1.0.0", + "dependencies": { + "@types/react": "~19.1.10", + "@types/react-native": "^0.72.8", + "expo": "~54.0.33", + "expo-constants": "~18.0.13", + "expo-dev-client": "~6.0.20", + "expo-sqlite": "~16.0.10", + "expo-status-bar": "~3.0.9", + "react": "19.1.0", + "react-native": "0.81.5", + "react-native-dotenv": "^3.4.11", + "react-native-markdown-display": "^7.0.2", + "react-native-syntax-highlighter": "^2.1.0", + "typescript": "~5.9.2" + } + }, + "node_modules/@0no-co/graphql.web": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@0no-co/graphql.web/-/graphql.web-1.2.0.tgz", + "integrity": "sha512-/1iHy9TTr63gE1YcR5idjx8UREz1s0kFhydf3bBLCXyqjhkIc6igAzTOx3zPifCwFR87tsh/4Pa9cNts6d2otw==", + "license": "MIT", + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0" + }, + "peerDependenciesMeta": { + "graphql": { + "optional": true + } + } + }, + "node_modules/@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", + "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", + "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helpers": "^7.28.6", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/@babel/code-frame": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", + "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", + "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.3" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.6.tgz", + "integrity": "sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-member-expression-to-functions": "^7.28.5", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/helper-replace-supers": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/traverse": "^7.28.6", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.28.5.tgz", + "integrity": "sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "regexpu-core": "^6.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.8.tgz", + "integrity": "sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA==", + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "debug": "^4.4.3", + "lodash.debounce": "^4.0.8", + "resolve": "^1.22.11" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz", + "integrity": "sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", + "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", + "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz", + "integrity": "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-wrap-function": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.28.6.tgz", + "integrity": "sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==", + "license": "MIT", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.28.5", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", + "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.28.6.tgz", + "integrity": "sha512-z+PwLziMNBeSQJonizz2AGnndLsP2DeGHIxDAn+wdHOGuo4Fo1x1HBPPXeE9TAOPHNNWQKCSlA2VZyYyyibDnQ==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz", + "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.25.9.tgz", + "integrity": "sha512-llL88JShoCsth8fF8R4SJnIn+WLvR6ccFxu1H3FlMhDontdcmZWf2HgIZ7AIqV3Xcck1idlohrN4EUBQz6klbw==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.25.9", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz", + "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-proposal-decorators": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.29.0.tgz", + "integrity": "sha512-CVBVv3VY/XRMxRYq5dwr2DS7/MvqPm23cOCjbwNnVrfOqcWlnefua1uUs0sjdKOGjvPUG633o07uWzJq4oI6dA==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-syntax-decorators": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-export-default-from": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.27.1.tgz", + "integrity": "sha512-hjlsMBl1aJc5lp8MoCDEZCiYzlgdRAShOjAfRw6X+GlpLpUPU7c3XNLsKFZbQk/1cRzBlJ7CXg3xJAJMrFa1Uw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-decorators": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.28.6.tgz", + "integrity": "sha512-71EYI0ONURHJBL4rSFXnITXqXrrY8q4P0q006DPfN+Rk+ASM+++IBXem/ruokgBZR8YNEWZ8R6B+rCb8VcUTqA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-default-from": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.28.6.tgz", + "integrity": "sha512-Svlx1fjJFnNz0LZeUaybRukSxZI3KkpApUmIRzEdXC5k8ErTOz0OD0kNrICi5Vc3GlpP5ZCeRyRO+mfWTSz+iQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-flow": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.28.6.tgz", + "integrity": "sha512-D+OrJumc9McXNEBI/JmFnc/0uCM2/Y3PEBG3gfV3QIYkKv5pvnpzFrl1kYCrcHJP8nOeFB/SHi1IHz29pNGuew==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz", + "integrity": "sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz", + "integrity": "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz", + "integrity": "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz", + "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.29.0.tgz", + "integrity": "sha512-va0VdWro4zlBr2JsXC+ofCPB2iG12wPtVGTWFx2WLDOM3nYQZZIGP82qku2eW/JR83sD+k2k+CsNtyEbUqhU6w==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-remap-async-to-generator": "^7.27.1", + "@babel/traverse": "^7.29.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.28.6.tgz", + "integrity": "sha512-ilTRcmbuXjsMmcZ3HASTe4caH5Tpo93PkTxF9oG2VZsSWsahydmcEHhix9Ik122RcTnZnUzPbmux4wh1swfv7g==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-remap-async-to-generator": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.6.tgz", + "integrity": "sha512-tt/7wOtBmwHPNMPu7ax4pdPz6shjFrmHDghvNC+FG9Qvj7D6mJcoRQIF5dy4njmxR941l6rgtvfSB2zX3VlUIw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.28.6.tgz", + "integrity": "sha512-dY2wS3I2G7D697VHndN91TJr8/AAfXQNt5ynCTI/MpxMsSzHp+52uNivYT5wCPax3whc47DR8Ba7cmlQMg24bw==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.6.tgz", + "integrity": "sha512-rfQ++ghVwTWTqQ7w8qyDxL1XGihjBss4CmTgGRCTAC9RIbhVpyp4fOeZtta0Lbf+dTNIVJer6ych2ibHwkZqsQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.6.tgz", + "integrity": "sha512-EF5KONAqC5zAqT783iMGuM2ZtmEBy+mJMOKl2BCvPZ2lVrwvXnB6o+OBWCS+CoeCCpVRF2sA2RBKUxvT8tQT5Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-globals": "^7.28.0", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-replace-supers": "^7.28.6", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.28.6.tgz", + "integrity": "sha512-bcc3k0ijhHbc2lEfpFHgx7eYw9KNXqOerKWfzbxEHUGKnS3sz9C4CNL9OiFN1297bDNfUiSO7DaLzbvHQQQ1BQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/template": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.5.tgz", + "integrity": "sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz", + "integrity": "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-flow-strip-types": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.27.1.tgz", + "integrity": "sha512-G5eDKsu50udECw7DL2AcsysXiQyB7Nfg521t2OAJ4tbfTJ27doHLeF/vlI1NZGlLdbb/v+ibvtL1YBQqYOwJGg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-syntax-flow": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz", + "integrity": "sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz", + "integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz", + "integrity": "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.6.tgz", + "integrity": "sha512-+anKKair6gpi8VsM/95kmomGNMD0eLz1NQ8+Pfw5sAwWH9fGYXT50E55ZpV0pHUHWf6IUTWPM+f/7AAff+wr9A==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.28.6.tgz", + "integrity": "sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.29.0.tgz", + "integrity": "sha512-1CZQA5KNAD6ZYQLPw7oi5ewtDNxH/2vuCh+6SmvgDfhumForvs8a1o9n0UrEoBD8HU4djO2yWngTQlXl1NDVEQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.28.6.tgz", + "integrity": "sha512-3wKbRgmzYbw24mDJXT7N+ADXw8BC/imU9yo9c9X9NKaLF1fW+e5H1U5QjMUBe4Qo4Ox/o++IyUkl1sVCLgevKg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.28.6.tgz", + "integrity": "sha512-SJR8hPynj8outz+SlStQSwvziMN4+Bq99it4tMIf5/Caq+3iOc0JtKyse8puvyXkk3eFRIA5ID/XfunGgO5i6w==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.6.tgz", + "integrity": "sha512-5rh+JR4JBC4pGkXLAcYdLHZjXudVxWMXbB6u6+E9lRL5TrGVbHt1TjxGbZ8CkmYw9zjkB7jutzOROArsqtncEA==", + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.28.6.tgz", + "integrity": "sha512-R8ja/Pyrv0OGAvAXQhSTmWyPJPml+0TMqXlO5w+AsMEiwb2fg3WkOvob7UxFSL3OIttFSGSRFKQsOhJ/X6HQdQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.6.tgz", + "integrity": "sha512-A4zobikRGJTsX9uqVFdafzGkqD30t26ck2LmOzAuLL8b2x6k3TIqRiT2xVvA9fNmFeTX484VpsdgmKNA0bS23w==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.27.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz", + "integrity": "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.28.6.tgz", + "integrity": "sha512-piiuapX9CRv7+0st8lmuUlRSmX6mBcVeNQ1b4AYzJxfCMuBfB0vBXDiGSmm03pKJw1v6cZ8KSeM+oUnM6yAExg==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.28.6.tgz", + "integrity": "sha512-b97jvNSOb5+ehyQmBpmhOCiUC5oVK4PMnpRvO7+ymFBoqYjeDHIU9jnrNUuwHOiL9RpGDoKBpSViarV+BU+eVA==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.28.0.tgz", + "integrity": "sha512-D6Eujc2zMxKjfa4Zxl4GHMsmhKKZ9VpcqIchJLvwTxad9zWIYulwYItBovpDOoNLISpcZSXoDJ5gaGbQUDqViA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.28.6.tgz", + "integrity": "sha512-61bxqhiRfAACulXSLd/GxqmAedUSrRZIu/cbaT18T1CetkTmtDN15it7i80ru4DVqRK1WMxQhXs+Lf9kajm5Ow==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-syntax-jsx": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.27.1.tgz", + "integrity": "sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q==", + "license": "MIT", + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", + "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", + "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-pure-annotations": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.27.1.tgz", + "integrity": "sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.0.tgz", + "integrity": "sha512-FijqlqMA7DmRdg/aINBSs04y8XNTYw/lr1gJ2WsmBnnaNw1iS43EPkJW+zK7z65auG3AWRFXWj+NcTQwYptUog==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.29.0.tgz", + "integrity": "sha512-jlaRT5dJtMaMCV6fAuLbsQMSwz/QkvaHOHOSXRitGGwSpR1blCY4KUKoyP2tYO8vJcqYe8cEj96cqSztv3uF9w==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "babel-plugin-polyfill-corejs2": "^0.4.14", + "babel-plugin-polyfill-corejs3": "^0.13.0", + "babel-plugin-polyfill-regenerator": "^0.6.5", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz", + "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.28.6.tgz", + "integrity": "sha512-9U4QObUC0FtJl05AsUcodau/RWDytrU6uKgkxu09mLR9HLDAtUMoPuuskm5huQsoktmsYpI+bGmq+iapDcriKA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz", + "integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.6.tgz", + "integrity": "sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-syntax-typescript": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz", + "integrity": "sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-react": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.28.5.tgz", + "integrity": "sha512-Z3J8vhRq7CeLjdC58jLv4lnZ5RKFUJWqH5emvxmv9Hv3BD1T9R/Im713R4MTKwvFaV74ejZ3sM01LyEKk4ugNQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-transform-react-display-name": "^7.28.0", + "@babel/plugin-transform-react-jsx": "^7.27.1", + "@babel/plugin-transform-react-jsx-development": "^7.27.1", + "@babel/plugin-transform-react-pure-annotations": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.28.5.tgz", + "integrity": "sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.27.1", + "@babel/plugin-transform-typescript": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.2.tgz", + "integrity": "sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template/node_modules/@babel/code-frame": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse--for-generate-function-map": { + "name": "@babel/traverse", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse--for-generate-function-map/node_modules/@babel/code-frame": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/@babel/code-frame": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@expo/code-signing-certificates": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@expo/code-signing-certificates/-/code-signing-certificates-0.0.6.tgz", + "integrity": "sha512-iNe0puxwBNEcuua9gmTGzq+SuMDa0iATai1FlFTMHJ/vUmKvN/V//drXoLJkVb5i5H3iE/n/qIJxyoBnXouD0w==", + "license": "MIT", + "dependencies": { + "node-forge": "^1.3.3" + } + }, + "node_modules/@expo/config": { + "version": "12.0.13", + "resolved": "https://registry.npmjs.org/@expo/config/-/config-12.0.13.tgz", + "integrity": "sha512-Cu52arBa4vSaupIWsF0h7F/Cg//N374nYb7HAxV0I4KceKA7x2UXpYaHOL7EEYYvp7tZdThBjvGpVmr8ScIvaQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "~7.10.4", + "@expo/config-plugins": "~54.0.4", + "@expo/config-types": "^54.0.10", + "@expo/json-file": "^10.0.8", + "deepmerge": "^4.3.1", + "getenv": "^2.0.0", + "glob": "^13.0.0", + "require-from-string": "^2.0.2", + "resolve-from": "^5.0.0", + "resolve-workspace-root": "^2.0.0", + "semver": "^7.6.0", + "slugify": "^1.3.4", + "sucrase": "~3.35.1" + } + }, + "node_modules/@expo/config-plugins": { + "version": "54.0.4", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-54.0.4.tgz", + "integrity": "sha512-g2yXGICdoOw5i3LkQSDxl2Q5AlQCrG7oniu0pCPPO+UxGb7He4AFqSvPSy8HpRUj55io17hT62FTjYRD+d6j3Q==", + "license": "MIT", + "dependencies": { + "@expo/config-types": "^54.0.10", + "@expo/json-file": "~10.0.8", + "@expo/plist": "^0.4.8", + "@expo/sdk-runtime-versions": "^1.0.0", + "chalk": "^4.1.2", + "debug": "^4.3.5", + "getenv": "^2.0.0", + "glob": "^13.0.0", + "resolve-from": "^5.0.0", + "semver": "^7.5.4", + "slash": "^3.0.0", + "slugify": "^1.6.6", + "xcode": "^3.0.1", + "xml2js": "0.6.0" + } + }, + "node_modules/@expo/config-plugins/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@expo/config-plugins/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@expo/config-plugins/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@expo/config-plugins/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/@expo/config-plugins/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/config-plugins/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/config-types": { + "version": "54.0.10", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-54.0.10.tgz", + "integrity": "sha512-/J16SC2an1LdtCZ67xhSkGXpALYUVUNyZws7v+PVsFZxClYehDSoKLqyRaGkpHlYrCc08bS0RF5E0JV6g50psA==", + "license": "MIT" + }, + "node_modules/@expo/devcert": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@expo/devcert/-/devcert-1.2.1.tgz", + "integrity": "sha512-qC4eaxmKMTmJC2ahwyui6ud8f3W60Ss7pMkpBq40Hu3zyiAaugPXnZ24145U7K36qO9UHdZUVxsCvIpz2RYYCA==", + "license": "MIT", + "dependencies": { + "@expo/sudo-prompt": "^9.3.1", + "debug": "^3.1.0" + } + }, + "node_modules/@expo/devcert/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/@expo/devtools": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/@expo/devtools/-/devtools-0.1.8.tgz", + "integrity": "sha512-SVLxbuanDjJPgc0sy3EfXUMLb/tXzp6XIHkhtPVmTWJAp+FOr6+5SeiCfJrCzZFet0Ifyke2vX3sFcKwEvCXwQ==", + "license": "MIT", + "dependencies": { + "chalk": "^4.1.2" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-native": { + "optional": true + } + } + }, + "node_modules/@expo/devtools/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@expo/devtools/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@expo/devtools/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@expo/devtools/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/@expo/devtools/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/devtools/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/env": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@expo/env/-/env-2.0.11.tgz", + "integrity": "sha512-xV+ps6YCW7XIPVUwFVCRN2nox09dnRwy8uIjwHWTODu0zFw4kp4omnVkl0OOjuu2XOe7tdgAHxikrkJt9xB/7Q==", + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "debug": "^4.3.4", + "dotenv": "~16.4.5", + "dotenv-expand": "~11.0.6", + "getenv": "^2.0.0" + } + }, + "node_modules/@expo/env/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@expo/env/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@expo/env/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@expo/env/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/@expo/env/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/env/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/fingerprint": { + "version": "0.15.4", + "resolved": "https://registry.npmjs.org/@expo/fingerprint/-/fingerprint-0.15.4.tgz", + "integrity": "sha512-eYlxcrGdR2/j2M6pEDXo9zU9KXXF1vhP+V+Tl+lyY+bU8lnzrN6c637mz6Ye3em2ANy8hhUR03Raf8VsT9Ogng==", + "license": "MIT", + "dependencies": { + "@expo/spawn-async": "^1.7.2", + "arg": "^5.0.2", + "chalk": "^4.1.2", + "debug": "^4.3.4", + "getenv": "^2.0.0", + "glob": "^13.0.0", + "ignore": "^5.3.1", + "minimatch": "^9.0.0", + "p-limit": "^3.1.0", + "resolve-from": "^5.0.0", + "semver": "^7.6.0" + }, + "bin": { + "fingerprint": "bin/cli.js" + } + }, + "node_modules/@expo/fingerprint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@expo/fingerprint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@expo/fingerprint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@expo/fingerprint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/@expo/fingerprint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/fingerprint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/image-utils": { + "version": "0.8.13", + "resolved": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.8.13.tgz", + "integrity": "sha512-1I//yBQeTY6p0u1ihqGNDAr35EbSG8uFEupFrIF0jd++h9EWH33521yZJU1yE+mwGlzCb61g3ehu78siMhXBlA==", + "license": "MIT", + "dependencies": { + "@expo/require-utils": "^55.0.4", + "@expo/spawn-async": "^1.7.2", + "chalk": "^4.0.0", + "getenv": "^2.0.0", + "jimp-compact": "0.16.1", + "parse-png": "^2.1.0", + "semver": "^7.6.0" + } + }, + "node_modules/@expo/image-utils/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@expo/image-utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@expo/image-utils/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@expo/image-utils/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/@expo/image-utils/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/image-utils/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/json-file": { + "version": "10.0.13", + "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-10.0.13.tgz", + "integrity": "sha512-pX/XjQn7tgNw6zuuV2ikmegmwe/S7uiwhrs2wXrANMkq7ozrA+JcZwgW9Q/8WZgciBzfAhNp5hnackHcrmapQA==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.20.0", + "json5": "^2.2.3" + } + }, + "node_modules/@expo/json-file/node_modules/@babel/code-frame": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@expo/metro": { + "version": "54.2.0", + "resolved": "https://registry.npmjs.org/@expo/metro/-/metro-54.2.0.tgz", + "integrity": "sha512-h68TNZPGsk6swMmLm9nRSnE2UXm48rWwgcbtAHVMikXvbxdS41NDHHeqg1rcQ9AbznDRp6SQVC2MVpDnsRKU1w==", + "license": "MIT", + "dependencies": { + "metro": "0.83.3", + "metro-babel-transformer": "0.83.3", + "metro-cache": "0.83.3", + "metro-cache-key": "0.83.3", + "metro-config": "0.83.3", + "metro-core": "0.83.3", + "metro-file-map": "0.83.3", + "metro-minify-terser": "0.83.3", + "metro-resolver": "0.83.3", + "metro-runtime": "0.83.3", + "metro-source-map": "0.83.3", + "metro-symbolicate": "0.83.3", + "metro-transform-plugins": "0.83.3", + "metro-transform-worker": "0.83.3" + } + }, + "node_modules/@expo/osascript": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@expo/osascript/-/osascript-2.4.2.tgz", + "integrity": "sha512-/XP7PSYF2hzOZzqfjgkoWtllyeTN8dW3aM4P6YgKcmmPikKL5FdoyQhti4eh6RK5a5VrUXJTOlTNIpIHsfB5Iw==", + "license": "MIT", + "dependencies": { + "@expo/spawn-async": "^1.7.2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@expo/package-manager": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@expo/package-manager/-/package-manager-1.10.4.tgz", + "integrity": "sha512-y9Mr4Kmpk4abAVZrNNPCdzOZr8nLLyi18p1SXr0RCVA8IfzqZX/eY4H+50a0HTmXqIsPZrQdcdb4I3ekMS9GvQ==", + "license": "MIT", + "dependencies": { + "@expo/json-file": "^10.0.13", + "@expo/spawn-async": "^1.7.2", + "chalk": "^4.0.0", + "npm-package-arg": "^11.0.0", + "ora": "^3.4.0", + "resolve-workspace-root": "^2.0.0" + } + }, + "node_modules/@expo/package-manager/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@expo/package-manager/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@expo/package-manager/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@expo/package-manager/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/@expo/package-manager/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/package-manager/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/plist": { + "version": "0.4.8", + "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.4.8.tgz", + "integrity": "sha512-pfNtErGGzzRwHP+5+RqswzPDKkZrx+Cli0mzjQaus1ZWFsog5ibL+nVT3NcporW51o8ggnt7x813vtRbPiyOrQ==", + "license": "MIT", + "dependencies": { + "@xmldom/xmldom": "^0.8.8", + "base64-js": "^1.2.3", + "xmlbuilder": "^15.1.1" + } + }, + "node_modules/@expo/require-utils": { + "version": "55.0.4", + "resolved": "https://registry.npmjs.org/@expo/require-utils/-/require-utils-55.0.4.tgz", + "integrity": "sha512-JAANvXqV7MOysWeVWgaiDzikoyDjJWOV/ulOW60Zb3kXJfrx2oZOtGtDXDFKD1mXuahQgoM5QOjuZhF7gFRNjA==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.20.0", + "@babel/core": "^7.25.2", + "@babel/plugin-transform-modules-commonjs": "^7.24.8" + }, + "peerDependencies": { + "typescript": "^5.0.0 || ^5.0.0-0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@expo/require-utils/node_modules/@babel/code-frame": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@expo/schema-utils": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/@expo/schema-utils/-/schema-utils-0.1.8.tgz", + "integrity": "sha512-9I6ZqvnAvKKDiO+ZF8BpQQFYWXOJvTAL5L/227RUbWG1OVZDInFifzCBiqAZ3b67NRfeAgpgvbA7rejsqhY62A==", + "license": "MIT" + }, + "node_modules/@expo/sdk-runtime-versions": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@expo/sdk-runtime-versions/-/sdk-runtime-versions-1.0.0.tgz", + "integrity": "sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ==", + "license": "MIT" + }, + "node_modules/@expo/spawn-async": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@expo/spawn-async/-/spawn-async-1.7.2.tgz", + "integrity": "sha512-QdWi16+CHB9JYP7gma19OVVg0BFkvU8zNj9GjWorYI8Iv8FUxjOCcYRuAmX4s/h91e4e7BPsskc8cSrZYho9Ew==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@expo/sudo-prompt": { + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/@expo/sudo-prompt/-/sudo-prompt-9.3.2.tgz", + "integrity": "sha512-HHQigo3rQWKMDzYDLkubN5WQOYXJJE2eNqIQC2axC2iO3mHdwnIR7FgZVvHWtBwAdzBgAP0ECp8KqS8TiMKvgw==", + "license": "MIT" + }, + "node_modules/@expo/ws-tunnel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@expo/ws-tunnel/-/ws-tunnel-1.0.6.tgz", + "integrity": "sha512-nDRbLmSrJar7abvUjp3smDwH8HcbZcoOEa5jVPUv9/9CajgmWw20JNRwTuBRzWIWIkEJDkz20GoNA+tSwUqk0Q==", + "license": "MIT" + }, + "node_modules/@expo/xcpretty": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@expo/xcpretty/-/xcpretty-4.4.3.tgz", + "integrity": "sha512-wC562eD3gS6vO2tWHToFhlFnmHKfKHgF1oyvojeSkLK/ZYop1bMU+7cOMiF9Sq70CzcsLy/EMRy/uRc76QmNRw==", + "license": "BSD-3-Clause", + "dependencies": { + "@babel/code-frame": "^7.20.0", + "chalk": "^4.1.0", + "js-yaml": "^4.1.0" + }, + "bin": { + "excpretty": "build/cli.js" + } + }, + "node_modules/@expo/xcpretty/node_modules/@babel/code-frame": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@expo/xcpretty/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@expo/xcpretty/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/@expo/xcpretty/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@expo/xcpretty/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@expo/xcpretty/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/@expo/xcpretty/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/xcpretty/node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@expo/xcpretty/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@isaacs/fs-minipass": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", + "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", + "license": "ISC", + "dependencies": { + "minipass": "^7.0.4" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@isaacs/ttlcache": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@isaacs/ttlcache/-/ttlcache-1.4.1.tgz", + "integrity": "sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "license": "ISC", + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.6.tgz", + "integrity": "sha512-+Sg6GCR/wy1oSmQDFq4LQDAhm3ETKnorxN+y5nbLULOR3P0c14f2Wurzj3/xqPXtasLFfHd5iRFQ7AJt4KH2cw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/create-cache-key-function": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-29.7.0.tgz", + "integrity": "sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "license": "MIT", + "dependencies": { + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/transform/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/transform/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/transform/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/@jest/transform/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/transform/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/types/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/types/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/types/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/@jest/types/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/types/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@react-native/assets-registry": { + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.81.5.tgz", + "integrity": "sha512-705B6x/5Kxm1RKRvSv0ADYWm5JOnoiQ1ufW7h8uu2E6G9Of/eE6hP/Ivw3U5jI16ERqZxiKQwk34VJbB0niX9w==", + "license": "MIT", + "engines": { + "node": ">= 20.19.4" + } + }, + "node_modules/@react-native/babel-plugin-codegen": { + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.81.5.tgz", + "integrity": "sha512-oF71cIH6je3fSLi6VPjjC3Sgyyn57JLHXs+mHWc9MoCiJJcM4nqsS5J38zv1XQ8d3zOW2JtHro+LF0tagj2bfQ==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.3", + "@react-native/codegen": "0.81.5" + }, + "engines": { + "node": ">= 20.19.4" + } + }, + "node_modules/@react-native/babel-preset": { + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.81.5.tgz", + "integrity": "sha512-UoI/x/5tCmi+pZ3c1+Ypr1DaRMDLI3y+Q70pVLLVgrnC3DHsHRIbHcCHIeG/IJvoeFqFM2sTdhSOLJrf8lOPrA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.2", + "@babel/plugin-proposal-export-default-from": "^7.24.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-default-from": "^7.24.7", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-transform-arrow-functions": "^7.24.7", + "@babel/plugin-transform-async-generator-functions": "^7.25.4", + "@babel/plugin-transform-async-to-generator": "^7.24.7", + "@babel/plugin-transform-block-scoping": "^7.25.0", + "@babel/plugin-transform-class-properties": "^7.25.4", + "@babel/plugin-transform-classes": "^7.25.4", + "@babel/plugin-transform-computed-properties": "^7.24.7", + "@babel/plugin-transform-destructuring": "^7.24.8", + "@babel/plugin-transform-flow-strip-types": "^7.25.2", + "@babel/plugin-transform-for-of": "^7.24.7", + "@babel/plugin-transform-function-name": "^7.25.1", + "@babel/plugin-transform-literals": "^7.25.2", + "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", + "@babel/plugin-transform-modules-commonjs": "^7.24.8", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", + "@babel/plugin-transform-numeric-separator": "^7.24.7", + "@babel/plugin-transform-object-rest-spread": "^7.24.7", + "@babel/plugin-transform-optional-catch-binding": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.8", + "@babel/plugin-transform-parameters": "^7.24.7", + "@babel/plugin-transform-private-methods": "^7.24.7", + "@babel/plugin-transform-private-property-in-object": "^7.24.7", + "@babel/plugin-transform-react-display-name": "^7.24.7", + "@babel/plugin-transform-react-jsx": "^7.25.2", + "@babel/plugin-transform-react-jsx-self": "^7.24.7", + "@babel/plugin-transform-react-jsx-source": "^7.24.7", + "@babel/plugin-transform-regenerator": "^7.24.7", + "@babel/plugin-transform-runtime": "^7.24.7", + "@babel/plugin-transform-shorthand-properties": "^7.24.7", + "@babel/plugin-transform-spread": "^7.24.7", + "@babel/plugin-transform-sticky-regex": "^7.24.7", + "@babel/plugin-transform-typescript": "^7.25.2", + "@babel/plugin-transform-unicode-regex": "^7.24.7", + "@babel/template": "^7.25.0", + "@react-native/babel-plugin-codegen": "0.81.5", + "babel-plugin-syntax-hermes-parser": "0.29.1", + "babel-plugin-transform-flow-enums": "^0.0.2", + "react-refresh": "^0.14.0" + }, + "engines": { + "node": ">= 20.19.4" + }, + "peerDependencies": { + "@babel/core": "*" + } + }, + "node_modules/@react-native/codegen": { + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.81.5.tgz", + "integrity": "sha512-a2TDA03Up8lpSa9sh5VRGCQDXgCTOyDOFH+aqyinxp1HChG8uk89/G+nkJ9FPd0rqgi25eCTR16TWdS3b+fA6g==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.2", + "@babel/parser": "^7.25.3", + "glob": "^7.1.1", + "hermes-parser": "0.29.1", + "invariant": "^2.2.4", + "nullthrows": "^1.1.1", + "yargs": "^17.6.2" + }, + "engines": { + "node": ">= 20.19.4" + }, + "peerDependencies": { + "@babel/core": "*" + } + }, + "node_modules/@react-native/codegen/node_modules/brace-expansion": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", + "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@react-native/codegen/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@react-native/codegen/node_modules/hermes-estree": { + "version": "0.29.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.29.1.tgz", + "integrity": "sha512-jl+x31n4/w+wEqm0I2r4CMimukLbLQEYpisys5oCre611CI5fc9TxhqkBBCJ1edDG4Kza0f7CgNz8xVMLZQOmQ==", + "license": "MIT" + }, + "node_modules/@react-native/codegen/node_modules/hermes-parser": { + "version": "0.29.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.29.1.tgz", + "integrity": "sha512-xBHWmUtRC5e/UL0tI7Ivt2riA/YBq9+SiYFU7C1oBa/j2jYGlIF9043oak1F47ihuDIxQ5nbsKueYJDRY02UgA==", + "license": "MIT", + "dependencies": { + "hermes-estree": "0.29.1" + } + }, + "node_modules/@react-native/codegen/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@react-native/community-cli-plugin": { + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.81.5.tgz", + "integrity": "sha512-yWRlmEOtcyvSZ4+OvqPabt+NS36vg0K/WADTQLhrYrm9qdZSuXmq8PmdJWz/68wAqKQ+4KTILiq2kjRQwnyhQw==", + "license": "MIT", + "dependencies": { + "@react-native/dev-middleware": "0.81.5", + "debug": "^4.4.0", + "invariant": "^2.2.4", + "metro": "^0.83.1", + "metro-config": "^0.83.1", + "metro-core": "^0.83.1", + "semver": "^7.1.3" + }, + "engines": { + "node": ">= 20.19.4" + }, + "peerDependencies": { + "@react-native-community/cli": "*", + "@react-native/metro-config": "*" + }, + "peerDependenciesMeta": { + "@react-native-community/cli": { + "optional": true + }, + "@react-native/metro-config": { + "optional": true + } + } + }, + "node_modules/@react-native/debugger-frontend": { + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.81.5.tgz", + "integrity": "sha512-bnd9FSdWKx2ncklOetCgrlwqSGhMHP2zOxObJbOWXoj7GHEmih4MKarBo5/a8gX8EfA1EwRATdfNBQ81DY+h+w==", + "license": "BSD-3-Clause", + "engines": { + "node": ">= 20.19.4" + } + }, + "node_modules/@react-native/dev-middleware": { + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.81.5.tgz", + "integrity": "sha512-WfPfZzboYgo/TUtysuD5xyANzzfka8Ebni6RIb2wDxhb56ERi7qDrE4xGhtPsjCL4pQBXSVxyIlCy0d8I6EgGA==", + "license": "MIT", + "dependencies": { + "@isaacs/ttlcache": "^1.4.1", + "@react-native/debugger-frontend": "0.81.5", + "chrome-launcher": "^0.15.2", + "chromium-edge-launcher": "^0.2.0", + "connect": "^3.6.5", + "debug": "^4.4.0", + "invariant": "^2.2.4", + "nullthrows": "^1.1.1", + "open": "^7.0.3", + "serve-static": "^1.16.2", + "ws": "^6.2.3" + }, + "engines": { + "node": ">= 20.19.4" + } + }, + "node_modules/@react-native/dev-middleware/node_modules/ws": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz", + "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==", + "license": "MIT", + "dependencies": { + "async-limiter": "~1.0.0" + } + }, + "node_modules/@react-native/gradle-plugin": { + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.81.5.tgz", + "integrity": "sha512-hORRlNBj+ReNMLo9jme3yQ6JQf4GZpVEBLxmTXGGlIL78MAezDZr5/uq9dwElSbcGmLEgeiax6e174Fie6qPLg==", + "license": "MIT", + "engines": { + "node": ">= 20.19.4" + } + }, + "node_modules/@react-native/js-polyfills": { + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.81.5.tgz", + "integrity": "sha512-fB7M1CMOCIUudTRuj7kzxIBTVw2KXnsgbQ6+4cbqSxo8NmRRhA0Ul4ZUzZj3rFd3VznTL4Brmocv1oiN0bWZ8w==", + "license": "MIT", + "engines": { + "node": ">= 20.19.4" + } + }, + "node_modules/@react-native/normalize-colors": { + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.81.5.tgz", + "integrity": "sha512-0HuJ8YtqlTVRXGZuGeBejLE04wSQsibpTI+RGOyVqxZvgtlLLC/Ssw0UmbHhT4lYMp2fhdtvKZSs5emWB1zR/g==", + "license": "MIT" + }, + "node_modules/@react-native/virtualized-lists": { + "version": "0.72.8", + "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.72.8.tgz", + "integrity": "sha512-J3Q4Bkuo99k7mu+jPS9gSUSgq+lLRSI/+ahXNwV92XgJ/8UgOTxu2LPwhJnBk/sQKxq7E8WkZBnBiozukQMqrw==", + "license": "MIT", + "dependencies": { + "invariant": "^2.2.4", + "nullthrows": "^1.1.1" + }, + "peerDependencies": { + "react-native": "*" + } + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.10", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", + "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", + "license": "MIT" + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "license": "BSD-3-Clause", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + } + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/node": { + "version": "25.6.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.6.0.tgz", + "integrity": "sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ==", + "license": "MIT", + "dependencies": { + "undici-types": "~7.19.0" + } + }, + "node_modules/@types/react": { + "version": "19.1.17", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.17.tgz", + "integrity": "sha512-Qec1E3mhALmaspIrhWt9jkQMNdw6bReVu64mjvhbhq2NFPftLPVr+l1SZgmw/66WwBNpDh7ao5AT6gF5v41PFA==", + "license": "MIT", + "dependencies": { + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-native": { + "version": "0.72.8", + "resolved": "https://registry.npmjs.org/@types/react-native/-/react-native-0.72.8.tgz", + "integrity": "sha512-St6xA7+EoHN5mEYfdWnfYt0e8u6k2FR0P9s2arYgakQGFgU1f9FlPrIEcj0X24pLCF5c5i3WVuLCUdiCYHmOoA==", + "license": "MIT", + "dependencies": { + "@react-native/virtualized-lists": "^0.72.4", + "@types/react": "*" + } + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "license": "MIT" + }, + "node_modules/@types/yargs": { + "version": "17.0.35", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", + "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "license": "MIT" + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "license": "ISC" + }, + "node_modules/@urql/core": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@urql/core/-/core-5.2.0.tgz", + "integrity": "sha512-/n0ieD0mvvDnVAXEQgX/7qJiVcvYvNkOHeBvkwtylfjydar123caCXcl58PXFY11oU1oquJocVXHxLAbtv4x1A==", + "license": "MIT", + "dependencies": { + "@0no-co/graphql.web": "^1.0.13", + "wonka": "^6.3.2" + } + }, + "node_modules/@urql/exchange-retry": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@urql/exchange-retry/-/exchange-retry-1.3.2.tgz", + "integrity": "sha512-TQMCz2pFJMfpNxmSfX1VSfTjwUIFx/mL+p1bnfM1xjjdla7Z+KnGMW/EhFbpckp3LyWAH4PgOsMwOMnIN+MBFg==", + "license": "MIT", + "dependencies": { + "@urql/core": "^5.1.2", + "wonka": "^6.3.2" + }, + "peerDependencies": { + "@urql/core": "^5.0.0" + } + }, + "node_modules/@xmldom/xmldom": { + "version": "0.8.13", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.13.tgz", + "integrity": "sha512-KRYzxepc14G/CEpEGc3Yn+JKaAeT63smlDr+vjB8jRfgTBBI9wRj/nkQEO+ucV8p8I9bfKLWp37uHgFrbntPvw==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "license": "MIT", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/ajv": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", + "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/anser": { + "version": "1.4.10", + "resolved": "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz", + "integrity": "sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==", + "license": "MIT" + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "license": "MIT" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "license": "MIT" + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "license": "MIT" + }, + "node_modules/async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "license": "MIT" + }, + "node_modules/await-lock": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/await-lock/-/await-lock-2.2.2.tgz", + "integrity": "sha512-aDczADvlvTGajTDjcjpJMqRkOF6Qdz3YbPZm/PyW6tKPkx2hlYBzxMhEywM/tU72HrVZjgl5VCdRuMlA7pZ8Gw==", + "license": "MIT" + }, + "node_modules/babel-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", + "license": "MIT", + "dependencies": { + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-jest/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/babel-jest/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/babel-jest/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/babel-jest/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/babel-jest/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-jest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "license": "BSD-3-Clause", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.17", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.17.tgz", + "integrity": "sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-define-polyfill-provider": "^0.6.8", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz", + "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==", + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.5", + "core-js-compat": "^3.43.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.8.tgz", + "integrity": "sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg==", + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.8" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-react-compiler": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-react-compiler/-/babel-plugin-react-compiler-1.0.0.tgz", + "integrity": "sha512-Ixm8tFfoKKIPYdCCKYTsqv+Fd4IJ0DQqMyEimo+pxUOMUR9cVPlwTrFt9Avu+3cb6Zp3mAzl+t1MrG2fxxKsxw==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.26.0" + } + }, + "node_modules/babel-plugin-react-native-web": { + "version": "0.21.2", + "resolved": "https://registry.npmjs.org/babel-plugin-react-native-web/-/babel-plugin-react-native-web-0.21.2.tgz", + "integrity": "sha512-SPD0J6qjJn8231i0HZhlAGH6NORe+QvRSQM2mwQEzJ2Fb3E4ruWTiiicPlHjmeWShDXLcvoorOCXjeR7k/lyWA==", + "license": "MIT" + }, + "node_modules/babel-plugin-syntax-hermes-parser": { + "version": "0.29.1", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.29.1.tgz", + "integrity": "sha512-2WFYnoWGdmih1I1J5eIqxATOeycOqRwYxAQBu3cUu/rhwInwHUg7k60AFNbuGjSDL8tje5GDrAnxzRLcu2pYcA==", + "license": "MIT", + "dependencies": { + "hermes-parser": "0.29.1" + } + }, + "node_modules/babel-plugin-syntax-hermes-parser/node_modules/hermes-estree": { + "version": "0.29.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.29.1.tgz", + "integrity": "sha512-jl+x31n4/w+wEqm0I2r4CMimukLbLQEYpisys5oCre611CI5fc9TxhqkBBCJ1edDG4Kza0f7CgNz8xVMLZQOmQ==", + "license": "MIT" + }, + "node_modules/babel-plugin-syntax-hermes-parser/node_modules/hermes-parser": { + "version": "0.29.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.29.1.tgz", + "integrity": "sha512-xBHWmUtRC5e/UL0tI7Ivt2riA/YBq9+SiYFU7C1oBa/j2jYGlIF9043oak1F47ihuDIxQ5nbsKueYJDRY02UgA==", + "license": "MIT", + "dependencies": { + "hermes-estree": "0.29.1" + } + }, + "node_modules/babel-plugin-transform-flow-enums": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-enums/-/babel-plugin-transform-flow-enums-0.0.2.tgz", + "integrity": "sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==", + "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-flow": "^7.12.1" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", + "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", + "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5" + }, + "peerDependencies": { + "@babel/core": "^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/babel-preset-jest": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", + "license": "MIT", + "dependencies": { + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==", + "license": "MIT", + "dependencies": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "node_modules/babel-runtime/node_modules/regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "license": "MIT" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.10.22", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.22.tgz", + "integrity": "sha512-6qruVrb5rse6WylFkU0FhBKKGuecWseqdpQfhkawn6ztyk2QlfwSRjsDxMCLJrkfmfN21qvhl9ABgaMeRkuwww==", + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/better-opn": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-3.0.2.tgz", + "integrity": "sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==", + "license": "MIT", + "dependencies": { + "open": "^8.0.4" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/better-opn/node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "license": "MIT", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/big-integer": { + "version": "1.6.52", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", + "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", + "license": "Unlicense", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/bplist-creator": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.1.0.tgz", + "integrity": "sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg==", + "license": "MIT", + "dependencies": { + "stream-buffers": "2.2.x" + } + }, + "node_modules/bplist-parser": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.1.tgz", + "integrity": "sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA==", + "license": "MIT", + "dependencies": { + "big-integer": "1.6.x" + }, + "engines": { + "node": ">= 5.10.0" + } + }, + "node_modules/brace-expansion": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz", + "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.28.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", + "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.10.12", + "caniuse-lite": "^1.0.30001782", + "electron-to-chromium": "^1.5.328", + "node-releases": "^2.0.36", + "update-browserslist-db": "^1.2.3" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "license": "Apache-2.0", + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "license": "MIT" + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/camelize": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz", + "integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001791", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001791.tgz", + "integrity": "sha512-yk0l/YSrOnFZk3UROpDLQD9+kC1l4meK/wed583AXrzoarMGJcbRi2Q4RaUYbKxYAsZ8sWmaSa/DsLmdBeI1vQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chownr": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/chrome-launcher": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.2.tgz", + "integrity": "sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==", + "license": "Apache-2.0", + "dependencies": { + "@types/node": "*", + "escape-string-regexp": "^4.0.0", + "is-wsl": "^2.2.0", + "lighthouse-logger": "^1.0.0" + }, + "bin": { + "print-chrome-path": "bin/print-chrome-path.js" + }, + "engines": { + "node": ">=12.13.0" + } + }, + "node_modules/chrome-launcher/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/chromium-edge-launcher": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/chromium-edge-launcher/-/chromium-edge-launcher-0.2.0.tgz", + "integrity": "sha512-JfJjUnq25y9yg4FABRRVPmBGWPZZi+AQXT4mxupb67766/0UlhG8PAZCz6xzEMXTbW3CsSoE8PcCWA49n35mKg==", + "license": "Apache-2.0", + "dependencies": { + "@types/node": "*", + "escape-string-regexp": "^4.0.0", + "is-wsl": "^2.2.0", + "lighthouse-logger": "^1.0.0", + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + } + }, + "node_modules/chromium-edge-launcher/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "license": "MIT" + }, + "node_modules/cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "license": "MIT", + "dependencies": { + "restore-cursor": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clipboard": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.11.tgz", + "integrity": "sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==", + "license": "MIT", + "optional": true, + "dependencies": { + "good-listener": "^1.2.2", + "select": "^1.1.2", + "tiny-emitter": "^2.0.0" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "license": "MIT" + }, + "node_modules/comma-separated-tokens": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz", + "integrity": "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "license": "MIT", + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz", + "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "compressible": "~2.0.18", + "debug": "2.6.9", + "negotiator": "~0.6.4", + "on-headers": "~1.1.0", + "safe-buffer": "5.2.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/compression/node_modules/negotiator": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", + "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "license": "MIT" + }, + "node_modules/connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/connect/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/connect/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "license": "MIT" + }, + "node_modules/core-js": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", + "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", + "hasInstallScript": true, + "license": "MIT" + }, + "node_modules/core-js-compat": { + "version": "3.49.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.49.0.tgz", + "integrity": "sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-color-keywords": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", + "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==", + "license": "ISC", + "engines": { + "node": ">=4" + } + }, + "node_modules/css-to-react-native": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz", + "integrity": "sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==", + "license": "MIT", + "dependencies": { + "camelize": "^1.0.0", + "css-color-keywords": "^1.0.0", + "postcss-value-parser": "^4.0.2" + } + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "license": "MIT", + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/delegate": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", + "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==", + "license": "MIT", + "optional": true + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/dotenv": { + "version": "16.4.7", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", + "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dotenv-expand": { + "version": "11.0.7", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-11.0.7.tgz", + "integrity": "sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==", + "license": "BSD-2-Clause", + "dependencies": { + "dotenv": "^16.4.5" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.344", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.344.tgz", + "integrity": "sha512-4MxfbmNDm+KPh066EZy+eUnkcDPcZ35wNmOWzFuh/ijvHsve6kbLTLURy88uCNK5FbpN+yk2nQY6BYh1GEt+wg==", + "license": "ISC" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/entities": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz", + "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==", + "license": "BSD-2-Clause" + }, + "node_modules/env-editor": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/env-editor/-/env-editor-0.4.2.tgz", + "integrity": "sha512-ObFo8v4rQJAE59M69QzwloxPZtd33TpYEIjtKD1rrFDcM1Gd7IkDxEBU+HriziN6HSHQnBJi8Dmy+JWkav5HKA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/error-stack-parser": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", + "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", + "license": "MIT", + "dependencies": { + "stackframe": "^1.3.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/expo": { + "version": "54.0.33", + "resolved": "https://registry.npmjs.org/expo/-/expo-54.0.33.tgz", + "integrity": "sha512-3yOEfAKqo+gqHcV8vKcnq0uA5zxlohnhA3fu4G43likN8ct5ZZ3LjAh9wDdKteEkoad3tFPvwxmXW711S5OHUw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.20.0", + "@expo/cli": "54.0.23", + "@expo/config": "~12.0.13", + "@expo/config-plugins": "~54.0.4", + "@expo/devtools": "0.1.8", + "@expo/fingerprint": "0.15.4", + "@expo/metro": "~54.2.0", + "@expo/metro-config": "54.0.14", + "@expo/vector-icons": "^15.0.3", + "@ungap/structured-clone": "^1.3.0", + "babel-preset-expo": "~54.0.10", + "expo-asset": "~12.0.12", + "expo-constants": "~18.0.13", + "expo-file-system": "~19.0.21", + "expo-font": "~14.0.11", + "expo-keep-awake": "~15.0.8", + "expo-modules-autolinking": "3.0.24", + "expo-modules-core": "3.0.29", + "pretty-format": "^29.7.0", + "react-refresh": "^0.14.2", + "whatwg-url-without-unicode": "8.0.0-3" + }, + "bin": { + "expo": "bin/cli", + "expo-modules-autolinking": "bin/autolinking", + "fingerprint": "bin/fingerprint" + }, + "peerDependencies": { + "@expo/dom-webview": "*", + "@expo/metro-runtime": "*", + "react": "*", + "react-native": "*", + "react-native-webview": "*" + }, + "peerDependenciesMeta": { + "@expo/dom-webview": { + "optional": true + }, + "@expo/metro-runtime": { + "optional": true + }, + "react-native-webview": { + "optional": true + } + } + }, + "node_modules/expo-constants": { + "version": "18.0.13", + "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-18.0.13.tgz", + "integrity": "sha512-FnZn12E1dRYKDHlAdIyNFhBurKTS3F9CrfrBDJI5m3D7U17KBHMQ6JEfYlSj7LG7t+Ulr+IKaj58L1k5gBwTcQ==", + "license": "MIT", + "dependencies": { + "@expo/config": "~12.0.13", + "@expo/env": "~2.0.8" + }, + "peerDependencies": { + "expo": "*", + "react-native": "*" + } + }, + "node_modules/expo-dev-client": { + "version": "6.0.20", + "resolved": "https://registry.npmjs.org/expo-dev-client/-/expo-dev-client-6.0.20.tgz", + "integrity": "sha512-5XjoVlj1OxakNxy55j/AUaGPrDOlQlB6XdHLLWAw61w5ffSpUDHDnuZzKzs9xY1eIaogOqTOQaAzZ2ddBkdXLA==", + "license": "MIT", + "dependencies": { + "expo-dev-launcher": "6.0.20", + "expo-dev-menu": "7.0.18", + "expo-dev-menu-interface": "2.0.0", + "expo-manifests": "~1.0.10", + "expo-updates-interface": "~2.0.0" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-dev-launcher": { + "version": "6.0.20", + "resolved": "https://registry.npmjs.org/expo-dev-launcher/-/expo-dev-launcher-6.0.20.tgz", + "integrity": "sha512-a04zHEeT9sB0L5EB38fz7sNnUKJ2Ar1pXpcyl60Ki8bXPNCs9rjY7NuYrDkP/irM8+1DklMBqHpyHiLyJ/R+EA==", + "license": "MIT", + "dependencies": { + "ajv": "^8.11.0", + "expo-dev-menu": "7.0.18", + "expo-manifests": "~1.0.10" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-dev-menu": { + "version": "7.0.18", + "resolved": "https://registry.npmjs.org/expo-dev-menu/-/expo-dev-menu-7.0.18.tgz", + "integrity": "sha512-4kTdlHrnZCAWCT6tZRQHSSjZ7vECFisL4T+nsG/GJDo/jcHNaOVGV5qPV9wzlTxyMk3YOPggRw4+g7Ownrg5eA==", + "license": "MIT", + "dependencies": { + "expo-dev-menu-interface": "2.0.0" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-dev-menu-interface": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/expo-dev-menu-interface/-/expo-dev-menu-interface-2.0.0.tgz", + "integrity": "sha512-BvAMPt6x+vyXpThsyjjOYyjwfjREV4OOpQkZ0tNl+nGpsPfcY9mc6DRACoWnH9KpLzyIt3BOgh3cuy/h/OxQjw==", + "license": "MIT", + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-json-utils": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/expo-json-utils/-/expo-json-utils-0.15.0.tgz", + "integrity": "sha512-duRT6oGl80IDzH2LD2yEFWNwGIC2WkozsB6HF3cDYNoNNdUvFk6uN3YiwsTsqVM/D0z6LEAQ01/SlYvN+Fw0JQ==", + "license": "MIT" + }, + "node_modules/expo-manifests": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/expo-manifests/-/expo-manifests-1.0.10.tgz", + "integrity": "sha512-oxDUnURPcL4ZsOBY6X1DGWGuoZgVAFzp6PISWV7lPP2J0r8u1/ucuChBgpK7u1eLGFp6sDIPwXyEUCkI386XSQ==", + "license": "MIT", + "dependencies": { + "@expo/config": "~12.0.11", + "expo-json-utils": "~0.15.0" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-modules-autolinking": { + "version": "3.0.24", + "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-3.0.24.tgz", + "integrity": "sha512-TP+6HTwhL7orDvsz2VzauyQlXJcAWyU3ANsZ7JGL4DQu8XaZv/A41ZchbtAYLfozNA2Ya1Hzmhx65hXryBMjaQ==", + "license": "MIT", + "dependencies": { + "@expo/spawn-async": "^1.7.2", + "chalk": "^4.1.0", + "commander": "^7.2.0", + "require-from-string": "^2.0.2", + "resolve-from": "^5.0.0" + }, + "bin": { + "expo-modules-autolinking": "bin/expo-modules-autolinking.js" + } + }, + "node_modules/expo-modules-autolinking/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/expo-modules-autolinking/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/expo-modules-autolinking/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/expo-modules-autolinking/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/expo-modules-autolinking/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/expo-modules-autolinking/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/expo-modules-core": { + "version": "3.0.29", + "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-3.0.29.tgz", + "integrity": "sha512-LzipcjGqk8gvkrOUf7O2mejNWugPkf3lmd9GkqL9WuNyeN2fRwU0Dn77e3ZUKI3k6sI+DNwjkq4Nu9fNN9WS7Q==", + "license": "MIT", + "dependencies": { + "invariant": "^2.2.4" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/expo-server": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/expo-server/-/expo-server-1.0.5.tgz", + "integrity": "sha512-IGR++flYH70rhLyeXF0Phle56/k4cee87WeQ4mamS+MkVAVP+dDlOHf2nN06Z9Y2KhU0Gp1k+y61KkghF7HdhA==", + "license": "MIT", + "engines": { + "node": ">=20.16.0" + } + }, + "node_modules/expo-sqlite": { + "version": "16.0.10", + "resolved": "https://registry.npmjs.org/expo-sqlite/-/expo-sqlite-16.0.10.tgz", + "integrity": "sha512-tUOKxE9TpfneRG3eOfbNfhN9236SJ7IiUnP8gCqU7umd9DtgDGB/5PhYVVfl+U7KskgolgNoB9v9OZ9iwXN8Eg==", + "license": "MIT", + "dependencies": { + "await-lock": "^2.2.2" + }, + "peerDependencies": { + "expo": "*", + "react": "*", + "react-native": "*" + } + }, + "node_modules/expo-status-bar": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/expo-status-bar/-/expo-status-bar-3.0.9.tgz", + "integrity": "sha512-xyYyVg6V1/SSOZWh4Ni3U129XHCnFHBTcUo0dhWtFDrZbNp/duw5AGsQfb2sVeU0gxWHXSY1+5F0jnKYC7WuOw==", + "license": "MIT", + "dependencies": { + "react-native-is-edge-to-edge": "^1.2.1" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/expo-updates-interface": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/expo-updates-interface/-/expo-updates-interface-2.0.0.tgz", + "integrity": "sha512-pTzAIufEZdVPKql6iMi5ylVSPqV1qbEopz9G6TSECQmnNde2nwq42PxdFBaUEd8IZJ/fdJLQnOT3m6+XJ5s7jg==", + "license": "MIT", + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo/node_modules/@babel/code-frame": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/expo/node_modules/@expo/cli": { + "version": "54.0.23", + "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-54.0.23.tgz", + "integrity": "sha512-km0h72SFfQCmVycH/JtPFTVy69w6Lx1cHNDmfLfQqgKFYeeHTjx7LVDP4POHCtNxFP2UeRazrygJhlh4zz498g==", + "license": "MIT", + "dependencies": { + "@0no-co/graphql.web": "^1.0.8", + "@expo/code-signing-certificates": "^0.0.6", + "@expo/config": "~12.0.13", + "@expo/config-plugins": "~54.0.4", + "@expo/devcert": "^1.2.1", + "@expo/env": "~2.0.8", + "@expo/image-utils": "^0.8.8", + "@expo/json-file": "^10.0.8", + "@expo/metro": "~54.2.0", + "@expo/metro-config": "~54.0.14", + "@expo/osascript": "^2.3.8", + "@expo/package-manager": "^1.9.10", + "@expo/plist": "^0.4.8", + "@expo/prebuild-config": "^54.0.8", + "@expo/schema-utils": "^0.1.8", + "@expo/spawn-async": "^1.7.2", + "@expo/ws-tunnel": "^1.0.1", + "@expo/xcpretty": "^4.3.0", + "@react-native/dev-middleware": "0.81.5", + "@urql/core": "^5.0.6", + "@urql/exchange-retry": "^1.3.0", + "accepts": "^1.3.8", + "arg": "^5.0.2", + "better-opn": "~3.0.2", + "bplist-creator": "0.1.0", + "bplist-parser": "^0.3.1", + "chalk": "^4.0.0", + "ci-info": "^3.3.0", + "compression": "^1.7.4", + "connect": "^3.7.0", + "debug": "^4.3.4", + "env-editor": "^0.4.1", + "expo-server": "^1.0.5", + "freeport-async": "^2.0.0", + "getenv": "^2.0.0", + "glob": "^13.0.0", + "lan-network": "^0.1.6", + "minimatch": "^9.0.0", + "node-forge": "^1.3.3", + "npm-package-arg": "^11.0.0", + "ora": "^3.4.0", + "picomatch": "^3.0.1", + "pretty-bytes": "^5.6.0", + "pretty-format": "^29.7.0", + "progress": "^2.0.3", + "prompts": "^2.3.2", + "qrcode-terminal": "0.11.0", + "require-from-string": "^2.0.2", + "requireg": "^0.2.2", + "resolve": "^1.22.2", + "resolve-from": "^5.0.0", + "resolve.exports": "^2.0.3", + "semver": "^7.6.0", + "send": "^0.19.0", + "slugify": "^1.3.4", + "source-map-support": "~0.5.21", + "stacktrace-parser": "^0.1.10", + "structured-headers": "^0.4.1", + "tar": "^7.5.2", + "terminal-link": "^2.1.1", + "undici": "^6.18.2", + "wrap-ansi": "^7.0.0", + "ws": "^8.12.1" + }, + "bin": { + "expo-internal": "build/bin/cli" + }, + "peerDependencies": { + "expo": "*", + "expo-router": "*", + "react-native": "*" + }, + "peerDependenciesMeta": { + "expo-router": { + "optional": true + }, + "react-native": { + "optional": true + } + } + }, + "node_modules/expo/node_modules/@expo/cli/node_modules/@expo/prebuild-config": { + "version": "54.0.8", + "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-54.0.8.tgz", + "integrity": "sha512-EA7N4dloty2t5Rde+HP0IEE+nkAQiu4A/+QGZGT9mFnZ5KKjPPkqSyYcRvP5bhQE10D+tvz6X0ngZpulbMdbsg==", + "license": "MIT", + "dependencies": { + "@expo/config": "~12.0.13", + "@expo/config-plugins": "~54.0.4", + "@expo/config-types": "^54.0.10", + "@expo/image-utils": "^0.8.8", + "@expo/json-file": "^10.0.8", + "@react-native/normalize-colors": "0.81.5", + "debug": "^4.3.1", + "resolve-from": "^5.0.0", + "semver": "^7.6.0", + "xml2js": "0.6.0" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo/node_modules/@expo/metro-config": { + "version": "54.0.14", + "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-54.0.14.tgz", + "integrity": "sha512-hxpLyDfOR4L23tJ9W1IbJJsG7k4lv2sotohBm/kTYyiG+pe1SYCAWsRmgk+H42o/wWf/HQjE5k45S5TomGLxNA==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.20.0", + "@babel/core": "^7.20.0", + "@babel/generator": "^7.20.5", + "@expo/config": "~12.0.13", + "@expo/env": "~2.0.8", + "@expo/json-file": "~10.0.8", + "@expo/metro": "~54.2.0", + "@expo/spawn-async": "^1.7.2", + "browserslist": "^4.25.0", + "chalk": "^4.1.0", + "debug": "^4.3.2", + "dotenv": "~16.4.5", + "dotenv-expand": "~11.0.6", + "getenv": "^2.0.0", + "glob": "^13.0.0", + "hermes-parser": "^0.29.1", + "jsc-safe-url": "^0.2.4", + "lightningcss": "^1.30.1", + "minimatch": "^9.0.0", + "postcss": "~8.4.32", + "resolve-from": "^5.0.0" + }, + "peerDependencies": { + "expo": "*" + }, + "peerDependenciesMeta": { + "expo": { + "optional": true + } + } + }, + "node_modules/expo/node_modules/@expo/vector-icons": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/@expo/vector-icons/-/vector-icons-15.1.1.tgz", + "integrity": "sha512-Iu2VkcoI5vygbtYngm7jb4ifxElNVXQYdDrYkT7UCEIiKLeWnQY0wf2ZhHZ+Wro6Sc5TaumpKUOqDRpLi5rkvw==", + "license": "MIT", + "peerDependencies": { + "expo-font": ">=14.0.4", + "react": "*", + "react-native": "*" + } + }, + "node_modules/expo/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/expo/node_modules/babel-preset-expo": { + "version": "54.0.10", + "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-54.0.10.tgz", + "integrity": "sha512-wTt7POavLFypLcPW/uC5v8y+mtQKDJiyGLzYCjqr9tx0Qc3vCXcDKk1iCFIj/++Iy5CWhhTflEa7VvVPNWeCfw==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.25.9", + "@babel/plugin-proposal-decorators": "^7.12.9", + "@babel/plugin-proposal-export-default-from": "^7.24.7", + "@babel/plugin-syntax-export-default-from": "^7.24.7", + "@babel/plugin-transform-class-static-block": "^7.27.1", + "@babel/plugin-transform-export-namespace-from": "^7.25.9", + "@babel/plugin-transform-flow-strip-types": "^7.25.2", + "@babel/plugin-transform-modules-commonjs": "^7.24.8", + "@babel/plugin-transform-object-rest-spread": "^7.24.7", + "@babel/plugin-transform-parameters": "^7.24.7", + "@babel/plugin-transform-private-methods": "^7.24.7", + "@babel/plugin-transform-private-property-in-object": "^7.24.7", + "@babel/plugin-transform-runtime": "^7.24.7", + "@babel/preset-react": "^7.22.15", + "@babel/preset-typescript": "^7.23.0", + "@react-native/babel-preset": "0.81.5", + "babel-plugin-react-compiler": "^1.0.0", + "babel-plugin-react-native-web": "~0.21.0", + "babel-plugin-syntax-hermes-parser": "^0.29.1", + "babel-plugin-transform-flow-enums": "^0.0.2", + "debug": "^4.3.4", + "resolve-from": "^5.0.0" + }, + "peerDependencies": { + "@babel/runtime": "^7.20.0", + "expo": "*", + "react-refresh": ">=0.14.0 <1.0.0" + }, + "peerDependenciesMeta": { + "@babel/runtime": { + "optional": true + }, + "expo": { + "optional": true + } + } + }, + "node_modules/expo/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/expo/node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/expo/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/expo/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/expo/node_modules/expo-asset": { + "version": "12.0.12", + "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-12.0.12.tgz", + "integrity": "sha512-CsXFCQbx2fElSMn0lyTdRIyKlSXOal6ilLJd+yeZ6xaC7I9AICQgscY5nj0QcwgA+KYYCCEQEBndMsmj7drOWQ==", + "license": "MIT", + "dependencies": { + "@expo/image-utils": "^0.8.8", + "expo-constants": "~18.0.12" + }, + "peerDependencies": { + "expo": "*", + "react": "*", + "react-native": "*" + } + }, + "node_modules/expo/node_modules/expo-file-system": { + "version": "19.0.21", + "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-19.0.21.tgz", + "integrity": "sha512-s3DlrDdiscBHtab/6W1osrjGL+C2bvoInPJD7sOwmxfJ5Woynv2oc+Fz1/xVXaE/V7HE/+xrHC/H45tu6lZzzg==", + "license": "MIT", + "peerDependencies": { + "expo": "*", + "react-native": "*" + } + }, + "node_modules/expo/node_modules/expo-font": { + "version": "14.0.11", + "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-14.0.11.tgz", + "integrity": "sha512-ga0q61ny4s/kr4k8JX9hVH69exVSIfcIc19+qZ7gt71Mqtm7xy2c6kwsPTCyhBW2Ro5yXTT8EaZOpuRi35rHbg==", + "license": "MIT", + "dependencies": { + "fontfaceobserver": "^2.1.0" + }, + "peerDependencies": { + "expo": "*", + "react": "*", + "react-native": "*" + } + }, + "node_modules/expo/node_modules/expo-keep-awake": { + "version": "15.0.8", + "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-15.0.8.tgz", + "integrity": "sha512-YK9M1VrnoH1vLJiQzChZgzDvVimVoriibiDIFLbQMpjYBnvyfUeHJcin/Gx1a+XgupNXy92EQJLgI/9ZuXajYQ==", + "license": "MIT", + "peerDependencies": { + "expo": "*", + "react": "*" + } + }, + "node_modules/expo/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/expo/node_modules/hermes-estree": { + "version": "0.29.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.29.1.tgz", + "integrity": "sha512-jl+x31n4/w+wEqm0I2r4CMimukLbLQEYpisys5oCre611CI5fc9TxhqkBBCJ1edDG4Kza0f7CgNz8xVMLZQOmQ==", + "license": "MIT" + }, + "node_modules/expo/node_modules/hermes-parser": { + "version": "0.29.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.29.1.tgz", + "integrity": "sha512-xBHWmUtRC5e/UL0tI7Ivt2riA/YBq9+SiYFU7C1oBa/j2jYGlIF9043oak1F47ihuDIxQ5nbsKueYJDRY02UgA==", + "license": "MIT", + "dependencies": { + "hermes-estree": "0.29.1" + } + }, + "node_modules/expo/node_modules/picomatch": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-3.0.2.tgz", + "integrity": "sha512-cfDHL6LStTEKlNilboNtobT/kEa30PtAf2Q1OgszfrG/rpVl1xaFWT9ktfkS306GmHgmnad1Sw4wabhlvFtsTw==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/expo/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/expo/node_modules/ws": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.20.0.tgz", + "integrity": "sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/exponential-backoff": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.3.tgz", + "integrity": "sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==", + "license": "Apache-2.0" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fault": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz", + "integrity": "sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==", + "license": "MIT", + "dependencies": { + "format": "^0.2.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "license": "Apache-2.0", + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flow-enums-runtime": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/flow-enums-runtime/-/flow-enums-runtime-0.0.6.tgz", + "integrity": "sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==", + "license": "MIT" + }, + "node_modules/fontfaceobserver": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/fontfaceobserver/-/fontfaceobserver-2.3.0.tgz", + "integrity": "sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg==", + "license": "BSD-2-Clause" + }, + "node_modules/format": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", + "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/freeport-async": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/freeport-async/-/freeport-async-2.0.0.tgz", + "integrity": "sha512-K7od3Uw45AJg00XUmy15+Hae2hOcgKcmN3/EF6Y7i01O0gaqiRx8sUSpsb9+BRNL8RPBrhzPsVfy8q9ADlJuWQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/getenv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/getenv/-/getenv-2.0.0.tgz", + "integrity": "sha512-VilgtJj/ALgGY77fiLam5iD336eSWi96Q15JSAG1zi8NRBysm3LXKdGnHb4m5cuyxvOLQQKWpBZAT6ni4FI2iQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/glob": { + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.5" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/good-listener": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", + "integrity": "sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==", + "license": "MIT", + "optional": true, + "dependencies": { + "delegate": "^3.1.2" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/hasown": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.3.tgz", + "integrity": "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hast-util-parse-selector": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz", + "integrity": "sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hastscript": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-5.1.2.tgz", + "integrity": "sha512-WlztFuK+Lrvi3EggsqOkQ52rKbxkXL3RwB6t5lwoa8QLMemoWfBuL43eDrwOamJyR7uKQKdmKYaBH1NZBiIRrQ==", + "license": "MIT", + "dependencies": { + "comma-separated-tokens": "^1.0.0", + "hast-util-parse-selector": "^2.0.0", + "property-information": "^5.0.0", + "space-separated-tokens": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hermes-estree": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.32.0.tgz", + "integrity": "sha512-KWn3BqnlDOl97Xe1Yviur6NbgIZ+IP+UVSpshlZWkq+EtoHg6/cwiDj/osP9PCEgFE15KBm1O55JRwbMEm5ejQ==", + "license": "MIT" + }, + "node_modules/hermes-parser": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.32.0.tgz", + "integrity": "sha512-g4nBOWFpuiTqjR3LZdRxKUkij9iyveWeuks7INEsMX741f3r9xxrOe8TeQfUxtda0eXmiIFiMQzoeSQEno33Hw==", + "license": "MIT", + "dependencies": { + "hermes-estree": "0.32.0" + } + }, + "node_modules/highlight.js": { + "version": "9.12.0", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.12.0.tgz", + "integrity": "sha512-qNnYpBDO/FQwYVur1+sQBQw7v0cxso1nOYLklqWh6af8ROwwTVoII5+kf/BVa8354WL4ad6rURHYGUXCbD9mMg==", + "deprecated": "Version no longer supported. Upgrade to @latest", + "license": "BSD-3-Clause", + "engines": { + "node": "*" + } + }, + "node_modules/hosted-git-info": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", + "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", + "license": "ISC", + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, + "node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/http-errors/node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/image-size": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.2.1.tgz", + "integrity": "sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==", + "license": "MIT", + "dependencies": { + "queue": "6.0.2" + }, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=16.x" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "license": "ISC" + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "license": "MIT", + "dependencies": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "license": "BSD-3-Clause", + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/jest-environment-node": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util/node_modules/@babel/code-frame": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/jest-message-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-message-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/jest-message-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-util/node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/jest-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-validate/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-validate/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-validate/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/jest-validate/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-validate/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jimp-compact": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/jimp-compact/-/jimp-compact-0.16.1.tgz", + "integrity": "sha512-dZ6Ra7u1G8c4Letq/B5EzAxj4tLFHL+cGtdpR+PVm4yzPDj+lCk+AbivWt1eOM+ikzkowtyV7qSqX6qr3t71Ww==", + "license": "MIT" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsc-safe-url": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/jsc-safe-url/-/jsc-safe-url-0.2.4.tgz", + "integrity": "sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==", + "license": "0BSD" + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/lan-network": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/lan-network/-/lan-network-0.1.7.tgz", + "integrity": "sha512-mnIlAEMu4OyEvUNdzco9xpuB9YVcPkQec+QsgycBCtPZvEqWPCDPfbAE4OJMdBBWpZWtpCn1xw9jJYlwjWI5zQ==", + "license": "MIT", + "bin": { + "lan-network": "dist/lan-network-cli.js" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/lighthouse-logger": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.4.2.tgz", + "integrity": "sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==", + "license": "Apache-2.0", + "dependencies": { + "debug": "^2.6.9", + "marky": "^1.2.2" + } + }, + "node_modules/lighthouse-logger/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/lighthouse-logger/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/lightningcss": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", + "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.32.0", + "lightningcss-darwin-arm64": "1.32.0", + "lightningcss-darwin-x64": "1.32.0", + "lightningcss-freebsd-x64": "1.32.0", + "lightningcss-linux-arm-gnueabihf": "1.32.0", + "lightningcss-linux-arm64-gnu": "1.32.0", + "lightningcss-linux-arm64-musl": "1.32.0", + "lightningcss-linux-x64-gnu": "1.32.0", + "lightningcss-linux-x64-musl": "1.32.0", + "lightningcss-win32-arm64-msvc": "1.32.0", + "lightningcss-win32-x64-msvc": "1.32.0" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", + "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", + "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", + "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", + "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", + "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", + "cpu": [ + "arm" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", + "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", + "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", + "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", + "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", + "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", + "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "license": "MIT" + }, + "node_modules/linkify-it": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz", + "integrity": "sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==", + "license": "MIT", + "dependencies": { + "uc.micro": "^1.0.1" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "license": "MIT" + }, + "node_modules/lodash.throttle": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", + "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==", + "license": "MIT" + }, + "node_modules/log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "license": "MIT", + "dependencies": { + "chalk": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lowlight": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/lowlight/-/lowlight-1.9.2.tgz", + "integrity": "sha512-Ek18ElVCf/wF/jEm1b92gTnigh94CtBNWiZ2ad+vTgW7cTmQxUY3I98BjHK68gZAJEWmybGBZgx9qv3QxLQB/Q==", + "license": "MIT", + "dependencies": { + "fault": "^1.0.2", + "highlight.js": "~9.12.0" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "license": "BSD-3-Clause", + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/markdown-it": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-10.0.0.tgz", + "integrity": "sha512-YWOP1j7UbDNz+TumYP1kpwnP0aEa711cJjrAQrzd0UXlbJfc5aAq0F/PZHjiioqDC1NKgvIMX+o+9Bk7yuM2dg==", + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "entities": "~2.0.0", + "linkify-it": "^2.0.0", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "bin": { + "markdown-it": "bin/markdown-it.js" + } + }, + "node_modules/marky": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/marky/-/marky-1.3.0.tgz", + "integrity": "sha512-ocnPZQLNpvbedwTy9kNrQEsknEfgvcLMvOtz3sFeWApDq1MXH1TqkCIx58xlpESsfwQOnuBO9beyQuNGzVvuhQ==", + "license": "Apache-2.0" + }, + "node_modules/mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", + "license": "MIT" + }, + "node_modules/memoize-one": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", + "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==", + "license": "MIT" + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "license": "MIT" + }, + "node_modules/metro": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro/-/metro-0.83.3.tgz", + "integrity": "sha512-+rP+/GieOzkt97hSJ0MrPOuAH/jpaS21ZDvL9DJ35QYRDlQcwzcvUlGUf79AnQxq/2NPiS/AULhhM4TKutIt8Q==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/core": "^7.25.2", + "@babel/generator": "^7.25.0", + "@babel/parser": "^7.25.3", + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.3", + "@babel/types": "^7.25.2", + "accepts": "^1.3.7", + "chalk": "^4.0.0", + "ci-info": "^2.0.0", + "connect": "^3.6.5", + "debug": "^4.4.0", + "error-stack-parser": "^2.0.6", + "flow-enums-runtime": "^0.0.6", + "graceful-fs": "^4.2.4", + "hermes-parser": "0.32.0", + "image-size": "^1.0.2", + "invariant": "^2.2.4", + "jest-worker": "^29.7.0", + "jsc-safe-url": "^0.2.2", + "lodash.throttle": "^4.1.1", + "metro-babel-transformer": "0.83.3", + "metro-cache": "0.83.3", + "metro-cache-key": "0.83.3", + "metro-config": "0.83.3", + "metro-core": "0.83.3", + "metro-file-map": "0.83.3", + "metro-resolver": "0.83.3", + "metro-runtime": "0.83.3", + "metro-source-map": "0.83.3", + "metro-symbolicate": "0.83.3", + "metro-transform-plugins": "0.83.3", + "metro-transform-worker": "0.83.3", + "mime-types": "^2.1.27", + "nullthrows": "^1.1.1", + "serialize-error": "^2.1.0", + "source-map": "^0.5.6", + "throat": "^5.0.0", + "ws": "^7.5.10", + "yargs": "^17.6.2" + }, + "bin": { + "metro": "src/cli.js" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-babel-transformer": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.83.3.tgz", + "integrity": "sha512-1vxlvj2yY24ES1O5RsSIvg4a4WeL7PFXgKOHvXTXiW0deLvQr28ExXj6LjwCCDZ4YZLhq6HddLpZnX4dEdSq5g==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.2", + "flow-enums-runtime": "^0.0.6", + "hermes-parser": "0.32.0", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-cache": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.83.3.tgz", + "integrity": "sha512-3jo65X515mQJvKqK3vWRblxDEcgY55Sk3w4xa6LlfEXgQ9g1WgMh9m4qVZVwgcHoLy0a2HENTPCCX4Pk6s8c8Q==", + "license": "MIT", + "dependencies": { + "exponential-backoff": "^3.1.1", + "flow-enums-runtime": "^0.0.6", + "https-proxy-agent": "^7.0.5", + "metro-core": "0.83.3" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-cache-key": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.83.3.tgz", + "integrity": "sha512-59ZO049jKzSmvBmG/B5bZ6/dztP0ilp0o988nc6dpaDsU05Cl1c/lRf+yx8m9WW/JVgbmfO5MziBU559XjI5Zw==", + "license": "MIT", + "dependencies": { + "flow-enums-runtime": "^0.0.6" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-config": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.83.3.tgz", + "integrity": "sha512-mTel7ipT0yNjKILIan04bkJkuCzUUkm2SeEaTads8VfEecCh+ltXchdq6DovXJqzQAXuR2P9cxZB47Lg4klriA==", + "license": "MIT", + "dependencies": { + "connect": "^3.6.5", + "flow-enums-runtime": "^0.0.6", + "jest-validate": "^29.7.0", + "metro": "0.83.3", + "metro-cache": "0.83.3", + "metro-core": "0.83.3", + "metro-runtime": "0.83.3", + "yaml": "^2.6.1" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-core": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.83.3.tgz", + "integrity": "sha512-M+X59lm7oBmJZamc96usuF1kusd5YimqG/q97g4Ac7slnJ3YiGglW5CsOlicTR5EWf8MQFxxjDoB6ytTqRe8Hw==", + "license": "MIT", + "dependencies": { + "flow-enums-runtime": "^0.0.6", + "lodash.throttle": "^4.1.1", + "metro-resolver": "0.83.3" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-file-map": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.83.3.tgz", + "integrity": "sha512-jg5AcyE0Q9Xbbu/4NAwwZkmQn7doJCKGW0SLeSJmzNB9Z24jBe0AL2PHNMy4eu0JiKtNWHz9IiONGZWq7hjVTA==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "fb-watchman": "^2.0.0", + "flow-enums-runtime": "^0.0.6", + "graceful-fs": "^4.2.4", + "invariant": "^2.2.4", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "nullthrows": "^1.1.1", + "walker": "^1.0.7" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-minify-terser": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.83.3.tgz", + "integrity": "sha512-O2BmfWj6FSfzBLrNCXt/rr2VYZdX5i6444QJU0fFoc7Ljg+Q+iqebwE3K0eTvkI6TRjELsXk1cjU+fXwAR4OjQ==", + "license": "MIT", + "dependencies": { + "flow-enums-runtime": "^0.0.6", + "terser": "^5.15.0" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-resolver": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.83.3.tgz", + "integrity": "sha512-0js+zwI5flFxb1ktmR///bxHYg7OLpRpWZlBBruYG8OKYxeMP7SV0xQ/o/hUelrEMdK4LJzqVtHAhBm25LVfAQ==", + "license": "MIT", + "dependencies": { + "flow-enums-runtime": "^0.0.6" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-runtime": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.83.3.tgz", + "integrity": "sha512-JHCJb9ebr9rfJ+LcssFYA2x1qPYuSD/bbePupIGhpMrsla7RCwC/VL3yJ9cSU+nUhU4c9Ixxy8tBta+JbDeZWw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.25.0", + "flow-enums-runtime": "^0.0.6" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-source-map": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.83.3.tgz", + "integrity": "sha512-xkC3qwUBh2psVZgVavo8+r2C9Igkk3DibiOXSAht1aYRRcztEZNFtAMtfSB7sdO2iFMx2Mlyu++cBxz/fhdzQg==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.3", + "@babel/traverse--for-generate-function-map": "npm:@babel/traverse@^7.25.3", + "@babel/types": "^7.25.2", + "flow-enums-runtime": "^0.0.6", + "invariant": "^2.2.4", + "metro-symbolicate": "0.83.3", + "nullthrows": "^1.1.1", + "ob1": "0.83.3", + "source-map": "^0.5.6", + "vlq": "^1.0.0" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-symbolicate": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.83.3.tgz", + "integrity": "sha512-F/YChgKd6KbFK3eUR5HdUsfBqVsanf5lNTwFd4Ca7uuxnHgBC3kR/Hba/RGkenR3pZaGNp5Bu9ZqqP52Wyhomw==", + "license": "MIT", + "dependencies": { + "flow-enums-runtime": "^0.0.6", + "invariant": "^2.2.4", + "metro-source-map": "0.83.3", + "nullthrows": "^1.1.1", + "source-map": "^0.5.6", + "vlq": "^1.0.0" + }, + "bin": { + "metro-symbolicate": "src/index.js" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-transform-plugins": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.83.3.tgz", + "integrity": "sha512-eRGoKJU6jmqOakBMH5kUB7VitEWiNrDzBHpYbkBXW7C5fUGeOd2CyqrosEzbMK5VMiZYyOcNFEphvxk3OXey2A==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.2", + "@babel/generator": "^7.25.0", + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.3", + "flow-enums-runtime": "^0.0.6", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-transform-worker": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.83.3.tgz", + "integrity": "sha512-Ztekew9t/gOIMZX1tvJOgX7KlSLL5kWykl0Iwu2cL2vKMKVALRl1hysyhUw0vjpAvLFx+Kfq9VLjnHIkW32fPA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.2", + "@babel/generator": "^7.25.0", + "@babel/parser": "^7.25.3", + "@babel/types": "^7.25.2", + "flow-enums-runtime": "^0.0.6", + "metro": "0.83.3", + "metro-babel-transformer": "0.83.3", + "metro-cache": "0.83.3", + "metro-cache-key": "0.83.3", + "metro-minify-terser": "0.83.3", + "metro-source-map": "0.83.3", + "metro-transform-plugins": "0.83.3", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro/node_modules/@babel/code-frame": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/metro/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/metro/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/metro/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/metro/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/metro/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/metro/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minizlib": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz", + "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==", + "license": "MIT", + "dependencies": { + "minipass": "^7.1.2" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/nested-error-stacks": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.0.1.tgz", + "integrity": "sha512-SrQrok4CATudVzBS7coSz26QRSmlK9TzzoFbeKfcPBUFPjcQM9Rqvr/DlJkOrwI/0KcgvMub1n1g5Jt9EgRn4A==", + "license": "MIT" + }, + "node_modules/node-forge": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.4.0.tgz", + "integrity": "sha512-LarFH0+6VfriEhqMMcLX2F7SwSXeWwnEAJEsYm5QKWchiVYVvJyV9v7UDvUv+w5HO23ZpQTXDv/GxdDdMyOuoQ==", + "license": "(BSD-3-Clause OR GPL-2.0)", + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.38", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.38.tgz", + "integrity": "sha512-3qT/88Y3FbH/Kx4szpQQ4HzUbVrHPKTLVpVocKiLfoYvw9XSGOX2FmD2d6DrXbVYyAQTF2HeF6My8jmzx7/CRw==", + "license": "MIT" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-package-arg": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.3.tgz", + "integrity": "sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw==", + "license": "ISC", + "dependencies": { + "hosted-git-info": "^7.0.0", + "proc-log": "^4.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/nullthrows": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", + "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==", + "license": "MIT" + }, + "node_modules/ob1": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.83.3.tgz", + "integrity": "sha512-egUxXCDwoWG06NGCS5s5AdcpnumHKJlfd3HH06P3m9TEMwwScfcY35wpQxbm9oHof+dM/lVH9Rfyu1elTVelSA==", + "license": "MIT", + "dependencies": { + "flow-enums-runtime": "^0.0.6" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz", + "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "license": "MIT", + "dependencies": { + "mimic-fn": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz", + "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==", + "license": "MIT", + "dependencies": { + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-spinners": "^2.0.0", + "log-symbols": "^2.2.0", + "strip-ansi": "^5.2.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ora/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ora/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-locate/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-entities": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.2.2.tgz", + "integrity": "sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg==", + "license": "MIT", + "dependencies": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + } + }, + "node_modules/parse-png": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/parse-png/-/parse-png-2.1.0.tgz", + "integrity": "sha512-Nt/a5SfCLiTnQAjx3fHlqp8hRgTL3z7kTQZzvIMS9uCAepnCyjpdEc6M/sz69WqMBdaDBw9sF1F1UaHROYzGkQ==", + "license": "MIT", + "dependencies": { + "pngjs": "^3.3.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "license": "MIT" + }, + "node_modules/path-scurry": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "11.3.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.3.5.tgz", + "integrity": "sha512-NxVFwLAnrd9i7KUBxC4DrUhmgjzOs+1Qm50D3oF1/oL+r1NpZ4gA7xvG0/zJ8evR7zIKn4vLf7qTNduWFtCrRw==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pirates": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/plist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.1.1.tgz", + "integrity": "sha512-ZIfcLJC+7E7FBFnDxm9MPmt7D+DidyQ26lewieO75AdhA2ayMtsJSES0iWzqJQbcVRSrTufQoy0DR94xHue0oA==", + "license": "MIT", + "dependencies": { + "@xmldom/xmldom": "^0.9.10", + "base64-js": "^1.5.1", + "xmlbuilder": "^15.1.1" + }, + "engines": { + "node": ">=10.4.0" + } + }, + "node_modules/plist/node_modules/@xmldom/xmldom": { + "version": "0.9.10", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.9.10.tgz", + "integrity": "sha512-A9gOqLdi6cV4ibazAjcQufGj0B1y/vDqYrcuP6d/6x8P27gRS8643Dj9o1dEKtB6O7fwxb2FgBmJS2mX7gpvdw==", + "license": "MIT", + "engines": { + "node": ">=14.6" + } + }, + "node_modules/pngjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/postcss": { + "version": "8.4.49", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", + "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "license": "MIT" + }, + "node_modules/pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/prismjs": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz", + "integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/proc-log": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", + "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/promise": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", + "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", + "license": "MIT", + "dependencies": { + "asap": "~2.0.6" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "license": "MIT", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, + "node_modules/property-information": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz", + "integrity": "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==", + "license": "MIT", + "dependencies": { + "xtend": "^4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/qrcode-terminal": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/qrcode-terminal/-/qrcode-terminal-0.11.0.tgz", + "integrity": "sha512-Uu7ii+FQy4Qf82G4xu7ShHhjhGahEpCWc3x8UavY3CTcWV+ufmmCtwkr7ZKsX42jdL0kr1B5FKUeqJvAn51jzQ==", + "bin": { + "qrcode-terminal": "bin/qrcode-terminal.js" + } + }, + "node_modules/queue": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", + "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", + "license": "MIT", + "dependencies": { + "inherits": "~2.0.3" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/react": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", + "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-devtools-core": { + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-6.1.5.tgz", + "integrity": "sha512-ePrwPfxAnB+7hgnEr8vpKxL9cmnp7F322t8oqcPshbIQQhDKgFDW4tjhF2wjVbdXF9O/nyuy3sQWd9JGpiLPvA==", + "license": "MIT", + "dependencies": { + "shell-quote": "^1.6.1", + "ws": "^7" + } + }, + "node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "license": "MIT" + }, + "node_modules/react-native": { + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.81.5.tgz", + "integrity": "sha512-1w+/oSjEXZjMqsIvmkCRsOc8UBYv163bTWKTI8+1mxztvQPhCRYGTvZ/PL1w16xXHneIj/SLGfxWg2GWN2uexw==", + "license": "MIT", + "dependencies": { + "@jest/create-cache-key-function": "^29.7.0", + "@react-native/assets-registry": "0.81.5", + "@react-native/codegen": "0.81.5", + "@react-native/community-cli-plugin": "0.81.5", + "@react-native/gradle-plugin": "0.81.5", + "@react-native/js-polyfills": "0.81.5", + "@react-native/normalize-colors": "0.81.5", + "@react-native/virtualized-lists": "0.81.5", + "abort-controller": "^3.0.0", + "anser": "^1.4.9", + "ansi-regex": "^5.0.0", + "babel-jest": "^29.7.0", + "babel-plugin-syntax-hermes-parser": "0.29.1", + "base64-js": "^1.5.1", + "commander": "^12.0.0", + "flow-enums-runtime": "^0.0.6", + "glob": "^7.1.1", + "invariant": "^2.2.4", + "jest-environment-node": "^29.7.0", + "memoize-one": "^5.0.0", + "metro-runtime": "^0.83.1", + "metro-source-map": "^0.83.1", + "nullthrows": "^1.1.1", + "pretty-format": "^29.7.0", + "promise": "^8.3.0", + "react-devtools-core": "^6.1.5", + "react-refresh": "^0.14.0", + "regenerator-runtime": "^0.13.2", + "scheduler": "0.26.0", + "semver": "^7.1.3", + "stacktrace-parser": "^0.1.10", + "whatwg-fetch": "^3.0.0", + "ws": "^6.2.3", + "yargs": "^17.6.2" + }, + "bin": { + "react-native": "cli.js" + }, + "engines": { + "node": ">= 20.19.4" + }, + "peerDependencies": { + "@types/react": "^19.1.0", + "react": "^19.1.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-native-dotenv": { + "version": "3.4.11", + "resolved": "https://registry.npmjs.org/react-native-dotenv/-/react-native-dotenv-3.4.11.tgz", + "integrity": "sha512-6vnIE+WHABSeHCaYP6l3O1BOEhWxKH6nHAdV7n/wKn/sciZ64zPPp2NUdEUf1m7g4uuzlLbjgr+6uDt89q2DOg==", + "license": "MIT", + "dependencies": { + "dotenv": "^16.4.5" + }, + "peerDependencies": { + "@babel/runtime": "^7.20.6" + } + }, + "node_modules/react-native-fit-image": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/react-native-fit-image/-/react-native-fit-image-1.5.5.tgz", + "integrity": "sha512-Wl3Vq2DQzxgsWKuW4USfck9zS7YzhvLNPpkwUUCF90bL32e1a0zOVQ3WsJILJOwzmPdHfzZmWasiiAUNBkhNkg==", + "license": "Beerware", + "dependencies": { + "prop-types": "^15.5.10" + } + }, + "node_modules/react-native-is-edge-to-edge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/react-native-is-edge-to-edge/-/react-native-is-edge-to-edge-1.3.1.tgz", + "integrity": "sha512-NIXU/iT5+ORyCc7p0z2nnlkouYKX425vuU1OEm6bMMtWWR9yvb+Xg5AZmImTKoF9abxCPqrKC3rOZsKzUYgYZA==", + "license": "MIT", + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-markdown-display": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/react-native-markdown-display/-/react-native-markdown-display-7.0.2.tgz", + "integrity": "sha512-Mn4wotMvMfLAwbX/huMLt202W5DsdpMO/kblk+6eUs55S57VVNni1gzZCh5qpznYLjIQELNh50VIozEfY6fvaQ==", + "license": "MIT", + "dependencies": { + "css-to-react-native": "^3.0.0", + "markdown-it": "^10.0.0", + "prop-types": "^15.7.2", + "react-native-fit-image": "^1.5.5" + }, + "peerDependencies": { + "react": ">=16.2.0", + "react-native": ">=0.50.4" + } + }, + "node_modules/react-native-syntax-highlighter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/react-native-syntax-highlighter/-/react-native-syntax-highlighter-2.1.0.tgz", + "integrity": "sha512-upu8gpKT2ZeslXn2d763KwtzzhM9OUHGgJjIKKIUw1JnFAzVwQmKCaFGoI6PkQa7T1LVggBW5k5VoaLFhZDb+g==", + "license": "MIT", + "dependencies": { + "react-syntax-highlighter": "^6.0.4" + }, + "peerDependencies": { + "react-syntax-highlighter": "^6.0.4" + } + }, + "node_modules/react-native-webview": { + "version": "13.15.0", + "resolved": "https://registry.npmjs.org/react-native-webview/-/react-native-webview-13.15.0.tgz", + "integrity": "sha512-Vzjgy8mmxa/JO6l5KZrsTC7YemSdq+qB01diA0FqjUTaWGAGwuykpJ73MDj3+mzBSlaDxAEugHzTtkUQkQEQeQ==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "escape-string-regexp": "^4.0.0", + "invariant": "2.2.4" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-webview/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "license": "MIT", + "optional": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/react-native/node_modules/@react-native/virtualized-lists": { + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.81.5.tgz", + "integrity": "sha512-UVXgV/db25OPIvwZySeToXD/9sKKhOdkcWmmf4Jh8iBZuyfML+/5CasaZ1E7Lqg6g3uqVQq75NqIwkYmORJMPw==", + "license": "MIT", + "dependencies": { + "invariant": "^2.2.4", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 20.19.4" + }, + "peerDependencies": { + "@types/react": "^19.1.0", + "react": "*", + "react-native": "*" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-native/node_modules/brace-expansion": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", + "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/react-native/node_modules/commander": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/react-native/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/react-native/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/react-native/node_modules/ws": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz", + "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==", + "license": "MIT", + "dependencies": { + "async-limiter": "~1.0.0" + } + }, + "node_modules/react-refresh": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", + "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-syntax-highlighter": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-6.1.2.tgz", + "integrity": "sha512-ahNwcZ0FhUd8U5TQYcmAqC/pec6Q308mUAATKMcLFmNYkvGhN9wfmoqxzjACcccGb2e85d5ZnGpOiCIIzGO3yA==", + "license": "MIT", + "dependencies": { + "babel-runtime": "^6.18.0", + "highlight.js": "~9.12.0", + "lowlight": "~1.9.1", + "prismjs": "^1.8.4", + "refractor": "^2.0.0" + }, + "peerDependencies": { + "react": ">= 0.14.0" + } + }, + "node_modules/refractor": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/refractor/-/refractor-2.10.1.tgz", + "integrity": "sha512-Xh9o7hQiQlDbxo5/XkOX6H+x/q8rmlmZKr97Ie1Q8ZM32IRRd3B/UxuA/yXDW79DBSXGWxm2yRTbcTVmAciJRw==", + "license": "MIT", + "dependencies": { + "hastscript": "^5.0.0", + "parse-entities": "^1.1.2", + "prismjs": "~1.17.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/refractor/node_modules/prismjs": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.17.1.tgz", + "integrity": "sha512-PrEDJAFdUGbOP6xK/UsfkC5ghJsPJviKgnQOoxaDbBjwc8op68Quupwt1DeAFoG8GImPhiKXAvvsH7wDSLsu1Q==", + "license": "MIT", + "optionalDependencies": { + "clipboard": "^2.0.0" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "license": "MIT" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz", + "integrity": "sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==", + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "license": "MIT" + }, + "node_modules/regexpu-core": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz", + "integrity": "sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==", + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.2.2", + "regjsgen": "^0.8.0", + "regjsparser": "^0.13.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.2.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", + "license": "MIT" + }, + "node_modules/regjsparser": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.1.tgz", + "integrity": "sha512-dLsljMd9sqwRkby8zhO1gSg3PnJIBFid8f4CQj/sXx+7cKx+E7u0PKhZ+U4wmhx7EfmtvnA318oVaIkAB1lRJw==", + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~3.1.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requireg": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/requireg/-/requireg-0.2.2.tgz", + "integrity": "sha512-nYzyjnFcPNGR3lx9lwPPPnuQxv6JWEZd2Ci0u9opN7N5zUEPIhY/GbL3vMGOr2UXwEg9WwSyV9X9Y/kLFgPsOg==", + "dependencies": { + "nested-error-stacks": "~2.0.1", + "rc": "~1.2.7", + "resolve": "~1.7.1" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/requireg/node_modules/resolve": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", + "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", + "license": "MIT", + "dependencies": { + "path-parse": "^1.0.5" + } + }, + "node_modules/resolve": { + "version": "1.22.12", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.12.tgz", + "integrity": "sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "is-core-module": "^2.16.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-workspace-root": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/resolve-workspace-root/-/resolve-workspace-root-2.0.1.tgz", + "integrity": "sha512-nR23LHAvaI6aHtMg6RWoaHpdR4D881Nydkzi2CixINyg9T00KgaJdJI6Vwty+Ps8WLxZHuxsS0BseWjxSA4C+w==", + "license": "MIT" + }, + "node_modules/resolve.exports": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz", + "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + "license": "MIT", + "dependencies": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/brace-expansion": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", + "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/sax": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.6.0.tgz", + "integrity": "sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=11.0.0" + } + }, + "node_modules/scheduler": { + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", + "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==", + "license": "MIT" + }, + "node_modules/select": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", + "integrity": "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==", + "license": "MIT", + "optional": true + }, + "node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", + "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.4.1", + "range-parser": "~1.2.1", + "statuses": "~2.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/send/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/send/node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/send/node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serialize-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz", + "integrity": "sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/serve-static": { + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", + "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "~0.19.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-static/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", + "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" + }, + "node_modules/simple-plist": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/simple-plist/-/simple-plist-1.3.1.tgz", + "integrity": "sha512-iMSw5i0XseMnrhtIzRb7XpQEXepa9xhWxGUojHBL43SIpQuDQkh3Wpy67ZbDzZVr6EKxvwVChnVpdl8hEVLDiw==", + "license": "MIT", + "dependencies": { + "bplist-creator": "0.1.0", + "bplist-parser": "0.3.1", + "plist": "^3.0.5" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "license": "MIT" + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/slugify": { + "version": "1.6.9", + "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.9.tgz", + "integrity": "sha512-vZ7rfeehZui7wQs438JXBckYLkIIdfHOXsaVEUMyS5fHo1483l1bMdo0EDSWYclY0yZKFOipDy4KHuKs6ssvdg==", + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/space-separated-tokens": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz", + "integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "license": "BSD-3-Clause" + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/stackframe": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", + "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", + "license": "MIT" + }, + "node_modules/stacktrace-parser": { + "version": "0.1.11", + "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.11.tgz", + "integrity": "sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg==", + "license": "MIT", + "dependencies": { + "type-fest": "^0.7.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/stream-buffers": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz", + "integrity": "sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg==", + "license": "Unlicense", + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/structured-headers": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/structured-headers/-/structured-headers-0.4.1.tgz", + "integrity": "sha512-0MP/Cxx5SzeeZ10p/bZI0S6MpgD+yxAhi1BOQ34jgnMXsCq3j1t6tQnZu+KdlL7dvJTLT3g9xN8tl10TqgFMcg==", + "license": "MIT" + }, + "node_modules/sucrase": { + "version": "3.35.1", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.1.tgz", + "integrity": "sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "tinyglobby": "^0.2.11", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/sucrase/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-hyperlinks": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tar": { + "version": "7.5.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.13.tgz", + "integrity": "sha512-tOG/7GyXpFevhXVh8jOPJrmtRpOTsYqUIkVdVooZYJS/z8WhfQUX8RJILmeuJNinGAMSu1veBr4asSHFt5/hng==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.1.0", + "yallist": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/tar/node_modules/yallist": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "license": "MIT", + "dependencies": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terser": { + "version": "5.46.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.46.2.tgz", + "integrity": "sha512-uxfo9fPcSgLDYob/w1FuL0c99MWiJDnv+5qXSQc5+Ki5NjVNsYi66INnMFBjf6uFz6OnX12piJQPF4IpjJTNTw==", + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.15.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "license": "MIT" + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "license": "ISC", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/test-exclude/node_modules/brace-expansion": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", + "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/test-exclude/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/test-exclude/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "license": "MIT", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/throat": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", + "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", + "license": "MIT" + }, + "node_modules/tiny-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", + "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==", + "license": "MIT", + "optional": true + }, + "node_modules/tinyglobby": { + "version": "0.2.16", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz", + "integrity": "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==", + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "license": "BSD-3-Clause" + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "license": "Apache-2.0" + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", + "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", + "license": "MIT" + }, + "node_modules/undici": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.25.0.tgz", + "integrity": "sha512-ZgpWDC5gmNiuY9CnLVXEH8rl50xhRCuLNA97fAUnKi8RRuV4E6KG31pDTsLVUKnohJE0I3XDrTeEydAXRw47xg==", + "license": "MIT", + "engines": { + "node": ">=18.17" + } + }, + "node_modules/undici-types": { + "version": "7.19.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.19.2.tgz", + "integrity": "sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg==", + "license": "MIT" + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "license": "MIT", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz", + "integrity": "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz", + "integrity": "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz", + "integrity": "sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==", + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/validate-npm-package-name": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz", + "integrity": "sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==", + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vlq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz", + "integrity": "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==", + "license": "MIT" + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "license": "Apache-2.0", + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/whatwg-fetch": { + "version": "3.6.20", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz", + "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==", + "license": "MIT" + }, + "node_modules/whatwg-url-without-unicode": { + "version": "8.0.0-3", + "resolved": "https://registry.npmjs.org/whatwg-url-without-unicode/-/whatwg-url-without-unicode-8.0.0-3.tgz", + "integrity": "sha512-HoKuzZrUlgpz35YO27XgD28uh/WJH4B0+3ttFqRo//lmq+9T/mIOJ6kqmINI9HpUpz1imRC/nR/lxKpJiv0uig==", + "license": "MIT", + "dependencies": { + "buffer": "^5.4.3", + "punycode": "^2.1.1", + "webidl-conversions": "^5.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wonka": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/wonka/-/wonka-6.3.6.tgz", + "integrity": "sha512-MXH+6mDHAZ2GuMpgKS055FR6v0xVP3XwquxIMYXgiW+FejHQlMGlvVRZT4qMCxR+bEo/FCtIdKxwej9WV3YQag==", + "license": "MIT" + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "license": "MIT", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xcode": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/xcode/-/xcode-3.0.1.tgz", + "integrity": "sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==", + "license": "Apache-2.0", + "dependencies": { + "simple-plist": "^1.1.0", + "uuid": "^7.0.3" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/xml2js": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.0.tgz", + "integrity": "sha512-eLTh0kA8uHceqesPqSE+VvO1CDDJWMwlQfB6LuN6T8w6MaDJ8Txm8P7s5cHD0miF0V+GGTZrDQfxPZQVsur33w==", + "license": "MIT", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xml2js/node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "license": "MIT", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/xmlbuilder": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", + "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", + "license": "MIT", + "engines": { + "node": ">=8.0" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "license": "MIT", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "license": "ISC" + }, + "node_modules/yaml": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.3.tgz", + "integrity": "sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==", + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..e10c30a --- /dev/null +++ b/package.json @@ -0,0 +1,27 @@ +{ + "name": "clwy-app", + "version": "1.0.0", + "main": "index.js", + "scripts": { + "start": "expo start", + "android": "expo run:android", + "ios": "expo run:ios", + "web": "expo start --web" + }, + "dependencies": { + "@types/react": "~19.1.10", + "@types/react-native": "^0.72.8", + "expo": "~54.0.33", + "expo-constants": "~18.0.13", + "expo-dev-client": "~6.0.20", + "expo-sqlite": "~16.0.10", + "expo-status-bar": "~3.0.9", + "react": "19.1.0", + "react-native": "0.81.5", + "react-native-dotenv": "^3.4.11", + "react-native-markdown-display": "^7.0.2", + "react-native-syntax-highlighter": "^2.1.0", + "typescript": "~5.9.2" + }, + "private": true +} diff --git a/screens/CategoryManageScreen.js b/screens/CategoryManageScreen.js new file mode 100644 index 0000000..535dabb --- /dev/null +++ b/screens/CategoryManageScreen.js @@ -0,0 +1,380 @@ +import { useState, useEffect, useRef } from 'react'; +import { + View, Text, StyleSheet, TouchableOpacity, ScrollView, + TextInput, Alert, ActivityIndicator, Platform, BackHandler +} from 'react-native'; +import { StatusBar } from 'expo-status-bar'; +import { Ionicons } from '@expo/vector-icons'; +import { + getAllCategories, addCategory, updateCategory, deleteCategory, + getUncategorizedRepos, batchSetRepoCategories, getRepoCountByCategory +} from '../services/database'; +import { runAutoCategorize } from '../services/categorizer'; + +// 可选的颜色列表(给分类标签选择用) +const CAT_COLORS = ['#0366d6', '#28a745', '#d73a4a', '#6f42c1', '#e36209', '#19b5a0', '#f0ad4e', '#8b5cf6', '#1abc9c', '#3498db', '#9b59b6', '#e67e22', '#2c3e50']; + +// 分类管理页:查看/新增/编辑/删除分类 +export default function CategoryManageScreen({ onGoBack }) { + const [categories, setCategories] = useState([]); + const [stats, setStats] = useState({}); + const [loading, setLoading] = useState(true); + const goBackRef = useRef(onGoBack); + goBackRef.current = onGoBack; + + // 表单状态 + const [showForm, setShowForm] = useState(false); + const [editingCat, setEditingCat] = useState(null); + const [formName, setFormName] = useState(''); + const [formColor, setFormColor] = useState(CAT_COLORS[0]); + + // 加载分类列表及各分类的仓库数量 + const loadData = async () => { + const cats = await getAllCategories(); + setCategories(cats); + const counts = await getRepoCountByCategory(); + const statsMap = {}; + for (const c of counts) { + statsMap[c.id] = c.repo_count; + } + setStats(statsMap); + setLoading(false); + }; + + useEffect(() => { + loadData(); + }, []); + + // Android 硬件返回按钮 + useEffect(() => { + const onBackPress = () => { + goBackRef.current(); + return true; + }; + const subscription = BackHandler.addEventListener('hardwareBackPress', onBackPress); + return () => subscription.remove(); + }, []); + + const openAddForm = () => { + setEditingCat(null); + setFormName(''); + setFormColor(CAT_COLORS[0]); + setShowForm(true); + }; + + const openEditForm = (cat) => { + setEditingCat(cat); + setFormName(cat.name); + setFormColor(cat.color); + setShowForm(true); + }; + + const closeForm = () => { + setShowForm(false); + setEditingCat(null); + setFormName(''); + }; + + // 保存分类:新增时自动触发未分类仓库的自动归类 + const handleSave = async () => { + const trimmed = formName.trim(); + if (!trimmed) { + Alert.alert('提示', '分类名称不能为空'); + return; + } + try { + if (editingCat) { + await updateCategory(editingCat.id, trimmed, formColor); + } else { + await addCategory(trimmed, formColor); + // 新增分类后自动将未分类仓库匹配到新分类 + const cats = await getAllCategories(); + await runAutoCategorize(cats, getUncategorizedRepos, batchSetRepoCategories); + } + closeForm(); + await loadData(); + } catch (e) { + Alert.alert('错误', e.message || '保存失败'); + } + }; + + // 删除分类(该分类下的仓库变为未分类) + const handleDelete = (cat) => { + Alert.alert( + '删除分类', + `确定要删除「${cat.name}」吗?该分类下的仓库将变为未分类状态。`, + [ + { text: '取消', style: 'cancel' }, + { + text: '删除', + style: 'destructive', + onPress: async () => { + await deleteCategory(cat.id); + await loadData(); + }, + }, + ] + ); + }; + + if (loading) { + return ( + + + + ); + } + + return ( + + + + + + + 分类管理 + + + + + + + + {showForm ? ( + + + {editingCat ? '编辑分类' : '新建分类'} + + 名称 + + 颜色 + + {CAT_COLORS.map((color) => ( + setFormColor(color)} + style={[ + styles.colorOption, + { backgroundColor: color }, + formColor === color && styles.colorOptionSelected, + ]} + /> + ))} + + + + 取消 + + + + {editingCat ? '更新' : '创建'} + + + + + ) : null} + + {categories.map((cat) => ( + + + + + {cat.name} + + {stats[cat.id] || 0} 个仓库 + + + + + openEditForm(cat)} + > + + + handleDelete(cat)} + > + + + + + ))} + + + + + ); +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + backgroundColor: '#f5f5f5', + }, + center: { + flex: 1, + justifyContent: 'center', + alignItems: 'center', + }, + header: { + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'space-between', + backgroundColor: '#fff', + paddingTop: Platform.OS === 'ios' ? 50 : 40, + paddingBottom: 10, + paddingHorizontal: 8, + borderBottomWidth: 1, + borderBottomColor: '#e8e8e8', + }, + headerBtn: { + width: 40, + height: 40, + justifyContent: 'center', + alignItems: 'center', + }, + headerTitle: { + fontSize: 17, + fontWeight: '600', + color: '#1a1a1a', + }, + scroll: { + flex: 1, + paddingHorizontal: 16, + paddingTop: 12, + }, + formCard: { + backgroundColor: '#fff', + borderRadius: 12, + padding: 16, + marginBottom: 12, + elevation: 2, + shadowColor: '#000', + shadowOffset: { width: 0, height: 1 }, + shadowOpacity: 0.1, + shadowRadius: 3, + }, + formTitle: { + fontSize: 16, + fontWeight: '600', + color: '#1a1a1a', + marginBottom: 12, + }, + fieldLabel: { + fontSize: 13, + fontWeight: '600', + color: '#666', + marginBottom: 6, + marginTop: 8, + }, + input: { + borderWidth: 1, + borderColor: '#ddd', + borderRadius: 10, + padding: 12, + fontSize: 15, + color: '#333', + backgroundColor: '#fafafa', + }, + colorPicker: { + flexDirection: 'row', + gap: 10, + marginBottom: 8, + flexWrap: 'wrap', + }, + colorOption: { + width: 36, + height: 36, + borderRadius: 18, + borderWidth: 3, + borderColor: 'transparent', + }, + colorOptionSelected: { + borderColor: '#333', + }, + formActions: { + flexDirection: 'row', + gap: 10, + marginTop: 12, + }, + cancelBtn: { + flex: 1, + padding: 14, + borderRadius: 10, + alignItems: 'center', + borderWidth: 1, + borderColor: '#ddd', + }, + cancelBtnText: { + fontSize: 15, + color: '#666', + fontWeight: '500', + }, + saveBtn: { + flex: 1, + padding: 14, + borderRadius: 10, + alignItems: 'center', + backgroundColor: '#0366d6', + }, + saveBtnText: { + fontSize: 15, + color: '#fff', + fontWeight: '600', + }, + catItem: { + flexDirection: 'row', + justifyContent: 'space-between', + alignItems: 'center', + backgroundColor: '#fff', + borderRadius: 12, + padding: 14, + marginBottom: 8, + elevation: 1, + shadowColor: '#000', + shadowOffset: { width: 0, height: 1 }, + shadowOpacity: 0.05, + shadowRadius: 2, + }, + catItemLeft: { + flexDirection: 'row', + alignItems: 'center', + flex: 1, + }, + catDot: { + width: 14, + height: 14, + borderRadius: 7, + marginRight: 12, + }, + catItemInfo: { + flex: 1, + }, + catItemName: { + fontSize: 15, + fontWeight: '500', + color: '#333', + }, + catItemCount: { + fontSize: 12, + color: '#999', + marginTop: 2, + }, + catItemActions: { + flexDirection: 'row', + gap: 8, + }, + catActionBtn: { + padding: 6, + }, + +}); diff --git a/screens/HomeScreen.js b/screens/HomeScreen.js new file mode 100644 index 0000000..5c77504 --- /dev/null +++ b/screens/HomeScreen.js @@ -0,0 +1,405 @@ +import { useState, useEffect, useCallback } from 'react'; +import { + View, Text, FlatList, StyleSheet, TouchableOpacity, + Alert, ActivityIndicator, RefreshControl, + ScrollView, Platform, BackHandler +} from 'react-native'; +import { StatusBar } from 'expo-status-bar'; +import { Ionicons } from '@expo/vector-icons'; +import RepoItem from '../components/RepoItem'; +import { fetchStarredRepos, TokenExpiredError } from '../services/github'; +import { + initDatabase, getAllCategories, saveRepos, getAllRepos, getReposByCategory, + getUncategorizedRepos, getGitHubToken, batchSetRepoCategories +} from '../services/database'; +import { runAutoCategorize } from '../services/categorizer'; + +// 首页:仓库列表、分类标签栏、同步入口 +export default function HomeScreen({ onTokenExpired, onOpenSettings, onOpenRepoDetail, onOpenCategoryManage }) { + const [categories, setCategories] = useState([]); + // selectedCategory: null=全部, 0=未分类, >0=具体分类 ID + const [selectedCategory, setSelectedCategory] = useState(null); + const [repos, setRepos] = useState([]); + const [loading, setLoading] = useState(true); + const [refreshing, setRefreshing] = useState(false); + const [syncing, setSyncing] = useState(false); + const [syncInfo, setSyncInfo] = useState(''); + + // 按分类加载仓库列表 + const loadRepos = useCallback(async (catId) => { + if (catId === null || catId === undefined) { + const allRepos = await getAllRepos(); + setRepos(allRepos); + } else if (catId === 0) { + const uncatRepos = await getUncategorizedRepos(); + setRepos(uncatRepos); + } else { + const catRepos = await getReposByCategory(catId); + setRepos(catRepos); + } + }, []); + + // 加载所有数据:分类 + 仓库列表 + const loadData = useCallback(async () => { + try { + await initDatabase(); + const cats = await getAllCategories(); + setCategories(cats); + await loadRepos(selectedCategory); + } catch (e) { + console.error('加载数据失败:', e); + } finally { + setLoading(false); + } + }, [selectedCategory, loadRepos]); + + useEffect(() => { + loadData(); + }, [loadData]); + + // Android 硬件返回按钮退出应用 + useEffect(() => { + const onBackPress = () => { + Alert.alert('退出应用', '确定要退出吗?', [ + { text: '取消', style: 'cancel' }, + { text: '退出', style: 'destructive', onPress: () => BackHandler.exitApp() }, + ]); + return true; + }; + const subscription = BackHandler.addEventListener('hardwareBackPress', onBackPress); + return () => subscription.remove(); + }, []); + + const onSelectCategory = async (catId) => { + setSelectedCategory(catId); + await loadRepos(catId); + }; + + // 从 GitHub 同步星标仓库,保存到本地后执行自动分类 + const handleSync = async () => { + const token = await getGitHubToken(); + if (!token) { + onTokenExpired(); + return; + } + setSyncing(true); + setSyncInfo('正在从 GitHub 获取星标仓库...'); + try { + const reposData = await fetchStarredRepos(token); + const count = await saveRepos(reposData); + const cats = await getAllCategories(); + await runAutoCategorize(cats, getUncategorizedRepos, batchSetRepoCategories); + setSyncInfo(`同步完成,新增 ${count} 个仓库(共 ${reposData.length} 个)`); + setCategories(cats); + await loadRepos(selectedCategory); + setTimeout(() => setSyncInfo(''), 3000); + } catch (e) { + if (e instanceof TokenExpiredError) { + onTokenExpired(); + } else { + Alert.alert('同步失败', e.message); + } + } finally { + setSyncing(false); + } + }; + + const handleRefresh = async () => { + setRefreshing(true); + try { + await handleSync(); + } finally { + setRefreshing(false); + } + }; + + // 长按仓库时提示去分类管理页操作 + const handleRepoLongPress = () => { + Alert.alert('管理分类', '请前往分类管理页面设置仓库分类', [ + { text: '取消', style: 'cancel' }, + { text: '前往', onPress: onOpenCategoryManage }, + ]); + }; + + const currentCategoryName = selectedCategory === null + ? '全部仓库' + : selectedCategory === 0 + ? '未分类' + : categories.find(c => c.id === selectedCategory)?.name || '全部仓库'; + + if (loading) { + return ( + + + 加载中... + + ); + } + + return ( + + + + + + GitHub Stars + + + + + + + + + + + + + {syncInfo ? ( + {syncInfo} + ) : null} + + + + + onSelectCategory(null)} + > + + 全部 + + + onSelectCategory(0)} + > + + 未分类 + + + {categories.map((cat) => ( + onSelectCategory(cat.id)} + > + + + {cat.name} + + + ))} + + + + + {currentCategoryName} + {repos.length} 个仓库 + + + {syncing ? ( + + + 同步中... + + ) : null} + + ( + + )} + keyExtractor={(item) => String(item.id)} + refreshControl={ + + } + ListEmptyComponent={ + + + + {selectedCategory === 0 + ? '没有未分类的仓库' + : '暂无仓库数据\n点击右上角 ☁️ 按钮从 GitHub 同步'} + + + } + contentContainerStyle={repos.length === 0 ? styles.emptyContainer : styles.listContent} + /> + + ); +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + backgroundColor: '#f5f5f5', + }, + center: { + flex: 1, + justifyContent: 'center', + alignItems: 'center', + }, + loadingText: { + marginTop: 10, + color: '#888', + fontSize: 14, + }, + header: { + backgroundColor: '#fff', + paddingTop: Platform.OS === 'ios' ? 50 : 40, + paddingBottom: 8, + paddingHorizontal: 16, + borderBottomWidth: 1, + borderBottomColor: '#e8e8e8', + }, + headerTop: { + flexDirection: 'row', + justifyContent: 'space-between', + alignItems: 'center', + }, + headerTitle: { + fontSize: 24, + fontWeight: '700', + color: '#1a1a1a', + }, + headerActions: { + flexDirection: 'row', + gap: 8, + }, + headerBtn: { + padding: 8, + borderRadius: 8, + backgroundColor: '#f0f7ff', + }, + syncInfo: { + marginTop: 6, + fontSize: 12, + color: '#28a745', + }, + categoryTabs: { + backgroundColor: '#fff', + paddingVertical: 10, + paddingLeft: 12, + borderBottomWidth: 1, + borderBottomColor: '#eee', + }, + categoryTab: { + flexDirection: 'row', + alignItems: 'center', + paddingHorizontal: 14, + paddingVertical: 7, + marginRight: 8, + borderRadius: 20, + backgroundColor: '#f0f0f0', + }, + categoryTabActive: { + backgroundColor: '#0366d6', + }, + categoryTabText: { + fontSize: 13, + color: '#666', + fontWeight: '500', + }, + categoryTabTextActive: { + color: '#fff', + }, + categoryDot: { + width: 8, + height: 8, + borderRadius: 4, + marginRight: 5, + }, + sectionHeader: { + flexDirection: 'row', + justifyContent: 'space-between', + alignItems: 'center', + paddingHorizontal: 16, + paddingVertical: 10, + }, + sectionTitle: { + fontSize: 16, + fontWeight: '600', + color: '#333', + }, + sectionCount: { + fontSize: 13, + color: '#999', + }, + syncingBar: { + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'center', + backgroundColor: '#0366d6', + paddingVertical: 6, + gap: 8, + }, + syncingText: { + color: '#fff', + fontSize: 13, + }, + listContent: { + paddingBottom: 20, + }, + emptyContainer: { + flexGrow: 1, + justifyContent: 'center', + alignItems: 'center', + }, + empty: { + alignItems: 'center', + paddingVertical: 40, + }, + emptyText: { + marginTop: 12, + fontSize: 14, + color: '#999', + textAlign: 'center', + lineHeight: 20, + }, +}); diff --git a/screens/RepoDetailScreen.js b/screens/RepoDetailScreen.js new file mode 100644 index 0000000..35e9feb --- /dev/null +++ b/screens/RepoDetailScreen.js @@ -0,0 +1,659 @@ +import { useState, useEffect, useRef } from 'react'; +import { + View, Text, StyleSheet, TouchableOpacity, ScrollView, + ActivityIndicator, Image, Linking, Platform, BackHandler, InteractionManager, Dimensions +} from 'react-native'; +import { StatusBar } from 'expo-status-bar'; +import { Ionicons } from '@expo/vector-icons'; +import Markdown from 'react-native-markdown-display'; +import SyntaxHighlighter from 'react-native-syntax-highlighter'; +import { vs2015 } from 'react-syntax-highlighter/styles/hljs'; +import { fetchReadme, TokenExpiredError } from '../services/github'; +import { getGitHubToken } from '../services/database'; + +const SCREEN_WIDTH = Dimensions.get('window').width; + +// 检测是否为 SVG 图片链接(React Native Image 组件不支持 SVG) +function isSvgUrl(url) { + return /\.svg(\?|#|$)/i.test(url) || /\/svg(\?|#|$)/i.test(url); +} + +// SVG 图片占位组件:点击后在系统浏览器中打开原始 SVG 文件 +function SvgImage({ uri, alt }) { + return ( + Linking.openURL(uri)} + activeOpacity={0.7} + > + + + + {alt || 'SVG 图片'} + + + + 浏览器查看 + + + + ); +} + +const svgStyles = StyleSheet.create({ + container: { + width: '100%', + marginBottom: 12, + borderRadius: 8, + overflow: 'hidden', + borderWidth: 1, + borderColor: '#e1e4e8', + }, + placeholder: { + height: 80, + justifyContent: 'center', + alignItems: 'center', + backgroundColor: '#f6f8fa', + gap: 4, + }, + placeholderText: { + fontSize: 13, + color: '#666', + }, + badge: { + flexDirection: 'row', + alignItems: 'center', + backgroundColor: '#0366d6', + paddingHorizontal: 8, + paddingVertical: 3, + borderRadius: 10, + gap: 3, + }, + badgeText: { + fontSize: 11, + color: '#fff', + }, +}); + +// 根据图片设备像素自动计算合适的高度,避免固定宽高比导致 SVG 徽章变形 +function ReadmeImage({ src, alt }) { + const [dimensions, setDimensions] = useState(null); + const isSvg = isSvgUrl(src); + + if (isSvg) { + return ; + } + + return ( + { + const { width, height } = e.nativeEvent.source; + if (width && height) { + const maxWidth = SCREEN_WIDTH - 56; + const ratio = Math.min(maxWidth / width, 1); + setDimensions({ width: maxWidth, height: height * ratio }); + } + }} + /> + ); +} + +const readmeImageStyles = StyleSheet.create({ + image: { + maxWidth: '100%', + borderRadius: 6, + marginBottom: 12, + }, +}); + +function preprocessMarkdown(markdown, repoFullName, defaultBranch) { + if (!markdown) return markdown; + + const [owner, repo] = repoFullName.split('/'); + const branch = defaultBranch || 'main'; + const rawBaseUrl = `https://raw.githubusercontent.com/${owner}/${repo}/${branch}`; + const githubBaseUrl = `https://github.com/${owner}/${repo}/blob/${branch}`; + + let processed = markdown; + + // Remove and tags, keep their content + processed = processed.replace(/]*>/gi, ''); + processed = processed.replace(/<\/picture>/gi, ''); + processed = processed.replace(/]*\/?>/gi, ''); + + // Convert ... to markdown link-wrapped image first + processed = processed.replace( + /]*href=["']([^"']*)["'][^>]*>\s*(]*>)\s*<\/a>/gi, + (match, href, imgTag) => { + const srcMatch = imgTag.match(/src\s*=\s*["']([^"']*)["']/i); + const altMatch = imgTag.match(/alt\s*=\s*["']([^"']*)["']/i); + const src = srcMatch ? srcMatch[1] : ''; + const alt = altMatch ? altMatch[1] : 'image'; + return `[![${alt}](${src})](${href})`; + } + ); + + // Convert remaining standalone HTML tags to markdown image syntax + processed = processed.replace( + /]*src\s*=\s*["']([^"']*)["'][^>]*\/?>/gi, + (match, src) => { + const altMatch = match.match(/alt\s*=\s*["']([^"']*)["']/i); + const alt = altMatch ? altMatch[1] : 'image'; + return `![${alt}](${src})`; + } + ); + + // Convert remaining HTML tags to markdown link syntax + processed = processed.replace( + /]*href\s*=\s*["']([^"']*)["'][^>]*>([^<]*)<\/a>/gi, + (match, href, text) => `[${text.trim()}](${href})` + ); + + // Strip remaining HTML tags + processed = processed.replace(/<[^>]*>/g, ''); + + // Resolve relative URLs in markdown images (![alt](url)) and links ([text](url)) + processed = processed.replace( + /(!)?\[([^\]]*)\]\(([^)]+)\)/g, + (match, isImage, text, url) => { + if (url.startsWith('http://') || url.startsWith('https://') || url.startsWith('mailto:')) { + return match; + } + const baseUrl = isImage ? rawBaseUrl : githubBaseUrl; + const cleanUrl = url.replace(/^(\.\/|\/)/, ''); + const resolvedUrl = `${baseUrl}/${cleanUrl}`; + return `${isImage || ''}[${text}](${resolvedUrl})`; + } + ); + + return processed; +} + +function detectLanguage(content) { + const firstLine = content.split('\n')[0].trim(); + const knownLanguages = { + js: 'javascript', jsx: 'javascript', mjs: 'javascript', + ts: 'typescript', tsx: 'typescript', + py: 'python', rb: 'ruby', rs: 'rust', go: 'go', + java: 'java', kt: 'kotlin', swift: 'swift', + c: 'c', cpp: 'cpp', cs: 'csharp', + html: 'xml', htm: 'xml', xml: 'xml', + css: 'css', scss: 'css', less: 'css', + sh: 'bash', bash: 'bash', zsh: 'bash', powershell: 'powershell', + json: 'json', yml: 'yaml', yaml: 'yaml', + sql: 'sql', php: 'php', r: 'r', dart: 'dart', + diff: 'diff', dockerfile: 'dockerfile', graphql: 'graphql', + }; + const ext = firstLine.replace('```', '').toLowerCase(); + return knownLanguages[ext] || ext || 'bash'; +} + +const markdownStyles = { + body: { + color: '#24292e', + fontSize: 15, + lineHeight: 24, + padding: 16, + }, + heading1: { + fontSize: 22, + fontWeight: '700', + marginTop: 20, + marginBottom: 10, + paddingBottom: 8, + borderBottomWidth: 1, + borderBottomColor: '#e1e4e8', + }, + heading2: { + fontSize: 18, + fontWeight: '600', + marginTop: 18, + marginBottom: 8, + paddingBottom: 6, + borderBottomWidth: 1, + borderBottomColor: '#e1e4e8', + }, + heading3: { + fontSize: 16, + fontWeight: '600', + marginTop: 16, + marginBottom: 6, + }, + heading4: { + fontSize: 15, + fontWeight: '600', + marginTop: 14, + marginBottom: 4, + }, + paragraph: { + marginBottom: 12, + }, + list_item: { + marginBottom: 4, + }, + bullet_list: { + paddingLeft: 24, + marginBottom: 12, + }, + ordered_list: { + paddingLeft: 24, + marginBottom: 12, + }, + code_inline: { + backgroundColor: 'rgba(27,31,35,0.05)', + paddingHorizontal: 5, + paddingVertical: 2, + borderRadius: 3, + fontFamily: Platform.OS === 'ios' ? 'Menlo' : 'monospace', + fontSize: 13, + color: '#d73a4a', + }, + code_block: { + backgroundColor: '#f6f8fa', + padding: 12, + borderRadius: 6, + marginBottom: 12, + fontFamily: Platform.OS === 'ios' ? 'Menlo' : 'monospace', + fontSize: 13, + }, + fence: { + backgroundColor: '#f6f8fa', + padding: 12, + borderRadius: 6, + marginBottom: 12, + fontFamily: Platform.OS === 'ios' ? 'Menlo' : 'monospace', + fontSize: 13, + }, + blockquote: { + paddingLeft: 12, + color: '#6a737d', + borderLeftWidth: 4, + borderLeftColor: '#dfe2e5', + marginBottom: 12, + }, + link: { + color: '#0366d6', + textDecorationLine: 'underline', + }, + table: { + borderWidth: 1, + borderColor: '#dfe2e5', + borderRadius: 4, + marginBottom: 12, + }, + thead: { + backgroundColor: '#f6f8fa', + }, + th: { + padding: 6, + borderWidth: 1, + borderColor: '#dfe2e5', + fontWeight: '600', + }, + td: { + padding: 6, + borderWidth: 1, + borderColor: '#dfe2e5', + }, + hr: { + backgroundColor: '#e1e4e8', + height: 1, + marginVertical: 20, + }, + image: { + maxWidth: '100%', + height: undefined, + borderRadius: 6, + marginBottom: 12, + }, +}; + +// 重写 react-native-markdown-display 的默认渲染规则 +const renderRules = { + // 自定义图片渲染:支持 SVG 占位,普通图片自动计算尺寸 + image: (node, children, parent, styles) => { + const { src, alt } = node.attributes; + return ( + + ); + }, + link: (node, children, parent, styles) => { + const { href } = node.attributes; + const childrenArr = Array.isArray(children) ? children : [children]; + const hasOnlyText = childrenArr.every( + child => typeof child === 'string' || typeof child === 'number' || child === null + ); + if (hasOnlyText) { + return ( + Linking.openURL(href)}> + {children} + + ); + } + return ( + Linking.openURL(href)}> + {children} + + ); + }, + fence: (node, children, parent, styles) => { + const lang = node.sourceInfo ? node.sourceInfo.split(/\s+/)[0] : ''; + const code = node.content; + const language = detectLanguage(lang || code); + return ( + + {lang ? ( + + {lang} + + ) : null} + + {code} + + + ); + }, +}; + +const codeBlockStyles = StyleSheet.create({ + wrapper: { + marginHorizontal: 12, + marginBottom: 12, + borderRadius: 8, + overflow: 'hidden', + }, + langBar: { + backgroundColor: '#2d2d2d', + paddingHorizontal: 12, + paddingVertical: 4, + borderTopLeftRadius: 8, + borderTopRightRadius: 8, + }, + langText: { + color: '#999', + fontSize: 11, + fontFamily: Platform.OS === 'ios' ? 'Menlo' : 'monospace', + }, +}); + +export default function RepoDetailScreen({ repo, onGoBack }) { + const [readme, setReadme] = useState(null); + const [loading, setLoading] = useState(true); + const [error, setError] = useState(null); + const goBackRef = useRef(onGoBack); + goBackRef.current = onGoBack; + + useEffect(() => { + const onBackPress = () => { + goBackRef.current(); + return true; + }; + const subscription = BackHandler.addEventListener('hardwareBackPress', onBackPress); + return () => subscription.remove(); + }, []); + + useEffect(() => { + InteractionManager.runAfterInteractions(() => { + loadReadme(); + }); + }, []); + + const loadReadme = async () => { + try { + const token = await getGitHubToken(); + const markdown = await fetchReadme(token, repo.full_name); + const cleaned = markdown ? preprocessMarkdown(markdown, repo.full_name, repo.default_branch) : null; + setReadme(cleaned); + } catch (e) { + if (e instanceof TokenExpiredError) { + setError('Token 已过期,请返回设置页面重新输入'); + } else { + setError(e.message || '加载 README 失败'); + } + } finally { + setLoading(false); + } + }; + + const openInBrowser = () => { + if (repo.html_url) { + Linking.openURL(repo.html_url); + } + }; + + return ( + + + + + + + + {repo.full_name} + + + + + + + + + {repo.owner_avatar_url ? ( + + ) : null} + + {repo.full_name} + + {repo.description || '暂无描述'} + + + + + + {repo.stargazers_count} + Stars + + + {repo.forks_count} + Forks + + {repo.language ? ( + + {repo.language} + Language + + ) : null} + + {repo.owner_login} + Owner + + + + + + + README.md + + + {loading ? ( + + + 正在加载 README... + + ) : error ? ( + + + {error} + + ) : readme === null ? ( + + + 该仓库没有 README 文件 + + ) : ( + + + {readme} + + + )} + + ); +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + backgroundColor: '#f5f5f5', + }, + header: { + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'space-between', + backgroundColor: '#fff', + paddingTop: Platform.OS === 'ios' ? 50 : 40, + paddingBottom: 10, + paddingHorizontal: 8, + borderBottomWidth: 1, + borderBottomColor: '#e8e8e8', + }, + headerBtn: { + width: 40, + height: 40, + justifyContent: 'center', + alignItems: 'center', + }, + headerTitle: { + flex: 1, + fontSize: 16, + fontWeight: '600', + color: '#1a1a1a', + textAlign: 'center', + }, + infoCard: { + backgroundColor: '#fff', + margin: 12, + marginBottom: 0, + borderRadius: 12, + padding: 16, + elevation: 2, + shadowColor: '#000', + shadowOffset: { width: 0, height: 1 }, + shadowOpacity: 0.1, + shadowRadius: 3, + }, + infoRow: { + flexDirection: 'row', + alignItems: 'center', + }, + ownerAvatar: { + width: 44, + height: 44, + borderRadius: 22, + marginRight: 12, + }, + infoText: { + flex: 1, + }, + repoName: { + fontSize: 16, + fontWeight: '600', + color: '#0366d6', + marginBottom: 4, + }, + repoDesc: { + fontSize: 13, + color: '#666', + lineHeight: 18, + }, + statsRow: { + flexDirection: 'row', + marginTop: 14, + paddingTop: 12, + borderTopWidth: 1, + borderTopColor: '#f0f0f0', + justifyContent: 'space-around', + }, + statItem: { + alignItems: 'center', + }, + statValue: { + fontSize: 14, + fontWeight: '600', + color: '#333', + }, + statLabel: { + fontSize: 11, + color: '#999', + marginTop: 2, + }, + readmeHeader: { + flexDirection: 'row', + alignItems: 'center', + paddingHorizontal: 16, + paddingVertical: 8, + gap: 6, + }, + readmeTitle: { + fontSize: 14, + fontWeight: '600', + color: '#555', + }, + loadingContainer: { + flex: 1, + justifyContent: 'center', + alignItems: 'center', + padding: 20, + }, + loadingText: { + marginTop: 10, + color: '#888', + fontSize: 14, + }, + errorText: { + marginTop: 10, + color: '#d73a4a', + fontSize: 14, + textAlign: 'center', + }, + emptyText: { + marginTop: 10, + color: '#999', + fontSize: 14, + }, + markdownScroll: { + flex: 1, + backgroundColor: '#fff', + marginHorizontal: 12, + marginBottom: 12, + borderRadius: 12, + }, +}); diff --git a/screens/SettingsScreen.js b/screens/SettingsScreen.js new file mode 100644 index 0000000..162e95e --- /dev/null +++ b/screens/SettingsScreen.js @@ -0,0 +1,455 @@ +import { useState, useEffect, useRef } from 'react'; +import { + View, Text, StyleSheet, TouchableOpacity, + Alert, ActivityIndicator, ScrollView, Platform, Linking, BackHandler +} from 'react-native'; +import { StatusBar } from 'expo-status-bar'; +import { Ionicons } from '@expo/vector-icons'; +import { + getGitHubToken, clearGitHubToken, getAllCategories, + getTotalRepoCount, setGitHubToken +} from '../services/database'; +import { fetchStarredRepos, checkUpdate } from '../services/github'; +import TokenInput from '../components/TokenInput'; + +// 设置页:Token 管理、数据统计、版本更新检查 +export default function SettingsScreen({ onGoBack, onTokenExpired }) { + const [token, setToken] = useState(null); + const [stats, setStats] = useState({ repos: 0, categories: 0 }); + const [showTokenInput, setShowTokenInput] = useState(false); + const [verifying, setVerifying] = useState(false); + const [checkingUpdate, setCheckingUpdate] = useState(false); + const [updateInfo, setUpdateInfo] = useState(null); + const goBackRef = useRef(onGoBack); + goBackRef.current = onGoBack; + + // 加载已保存的 Token 和数据统计 + const loadSettings = async () => { + const savedToken = await getGitHubToken(); + setToken(savedToken); + const cats = await getAllCategories(); + const total = await getTotalRepoCount(); + setStats({ repos: total, categories: cats.length }); + }; + + useEffect(() => { + loadSettings(); + }, []); + + // Android 硬件返回按钮 + useEffect(() => { + const onBackPress = () => { + goBackRef.current(); + return true; + }; + const subscription = BackHandler.addEventListener('hardwareBackPress', onBackPress); + return () => subscription.remove(); + }, []); + + const handleChangeToken = () => { + setShowTokenInput(true); + }; + + // 验证当前 Token 是否仍然有效 + const handleVerifyToken = async () => { + setVerifying(true); + try { + await fetchStarredRepos(token); + Alert.alert('验证成功', 'Token 有效'); + } catch (e) { + Alert.alert('验证失败', e.message); + } finally { + setVerifying(false); + } + }; + + // 清除 Token(需用户确认) + const handleClearToken = () => { + Alert.alert( + '清除 Token', + '确定要清除 GitHub Token 吗?清除后需要重新输入才能同步数据。', + [ + { text: '取消', style: 'cancel' }, + { + text: '清除', + style: 'destructive', + onPress: async () => { + await clearGitHubToken(); + onTokenExpired(); + }, + }, + ] + ); + }; + + const handleTokenSaved = async () => { + setShowTokenInput(false); + await loadSettings(); + }; + + // 检查 GitHub Releases 是否有新版本 + const handleCheckUpdate = async () => { + setCheckingUpdate(true); + setUpdateInfo(null); + const savedToken = await getGitHubToken(); + const result = await checkUpdate(savedToken); + setUpdateInfo(result); + setCheckingUpdate(false); + + if (result.error) { + Alert.alert('检查更新', result.error); + } else if (result.hasUpdate) { + Alert.alert( + '发现新版本', + `当前版本:v${result.currentVersion}\n最新版本:v${result.latestVersion}\n\n${result.releaseName || ''}\n\n${result.releaseBody ? result.releaseBody : ''}`, + [ + { text: '取消', style: 'cancel' }, + { + text: '前往下载', + onPress: () => { + if (result.releaseUrl) { + Linking.openURL(result.releaseUrl); + } + }, + }, + ] + ); + } else { + Alert.alert('检查更新', result.message || '已是最新版本'); + } + }; + + if (showTokenInput) { + return setShowTokenInput(false)} />; + } + + const maskedToken = token + ? token.slice(0, 8) + '••••••••' + token.slice(-4) + : ''; + + return ( + + + + + + + 设置 + + + + + + GitHub 账号 + + + + 访问令牌 + + + {token ? maskedToken : '未设置'} + + + + + + {token ? '修改' : '设置'} + + + {token ? ( + <> + + {verifying ? ( + + ) : ( + <> + + 验证 + + )} + + + + 清除 + + + ) : null} + + + + + + 数据统计 + + + + {stats.repos} + 星标仓库 + + + + {stats.categories} + 分类 + + + + + + AI 分析(即将推出) + + + + + + 智能分析你的星标仓库 + + 自动分类、代码质量评估、技术趋势分析等强大功能即将上线 + + + 即将推出 + + + + + + + 关于 + + + + + 版本 + + + {checkingUpdate ? ( + + ) : updateInfo && updateInfo.hasUpdate ? ( + + 有新版本 + + ) : null} + 1.0.0 + + + + + + + + + + ); +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + backgroundColor: '#f5f5f5', + }, + header: { + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'space-between', + backgroundColor: '#fff', + paddingTop: Platform.OS === 'ios' ? 50 : 40, + paddingBottom: 12, + paddingHorizontal: 16, + borderBottomWidth: 1, + borderBottomColor: '#e8e8e8', + }, + backBtn: { + width: 40, + height: 40, + justifyContent: 'center', + alignItems: 'center', + }, + headerTitle: { + fontSize: 18, + fontWeight: '600', + color: '#1a1a1a', + }, + scroll: { + flex: 1, + }, + section: { + marginTop: 20, + paddingHorizontal: 16, + }, + sectionTitle: { + fontSize: 13, + fontWeight: '600', + color: '#888', + marginBottom: 8, + marginLeft: 4, + textTransform: 'uppercase', + }, + card: { + backgroundColor: '#fff', + borderRadius: 12, + padding: 16, + elevation: 1, + shadowColor: '#000', + shadowOffset: { width: 0, height: 1 }, + shadowOpacity: 0.05, + shadowRadius: 2, + }, + row: { + flexDirection: 'row', + alignItems: 'center', + gap: 8, + marginBottom: 8, + }, + rowLabel: { + fontSize: 15, + fontWeight: '500', + color: '#333', + }, + tokenText: { + fontSize: 13, + color: '#888', + fontFamily: Platform.OS === 'ios' ? 'Menlo' : 'monospace', + marginBottom: 12, + }, + tokenActions: { + flexDirection: 'row', + gap: 10, + }, + tokenBtn: { + flexDirection: 'row', + alignItems: 'center', + backgroundColor: '#0366d6', + paddingHorizontal: 14, + paddingVertical: 8, + borderRadius: 8, + gap: 4, + }, + tokenBtnOutline: { + backgroundColor: 'transparent', + borderWidth: 1, + borderColor: '#0366d6', + }, + tokenBtnDanger: { + backgroundColor: '#d73a4a', + }, + tokenBtnText: { + color: '#fff', + fontSize: 13, + fontWeight: '500', + }, + tokenBtnTextOutline: { + color: '#0366d6', + }, + statsRow: { + flexDirection: 'row', + gap: 12, + }, + statCard: { + flex: 1, + backgroundColor: '#fff', + borderRadius: 12, + padding: 20, + alignItems: 'center', + elevation: 1, + shadowColor: '#000', + shadowOffset: { width: 0, height: 1 }, + shadowOpacity: 0.05, + shadowRadius: 2, + }, + statNumber: { + fontSize: 28, + fontWeight: '700', + color: '#1a1a1a', + marginTop: 8, + }, + statLabel: { + fontSize: 13, + color: '#888', + marginTop: 4, + }, + aiPlaceholder: { + alignItems: 'center', + paddingVertical: 10, + }, + aiIconWrap: { + width: 60, + height: 60, + borderRadius: 30, + backgroundColor: '#f5f0ff', + justifyContent: 'center', + alignItems: 'center', + marginBottom: 12, + }, + aiTitle: { + fontSize: 16, + fontWeight: '600', + color: '#333', + marginBottom: 6, + }, + aiDesc: { + fontSize: 13, + color: '#999', + textAlign: 'center', + lineHeight: 18, + marginBottom: 12, + }, + comingBadge: { + backgroundColor: '#f5f0ff', + paddingHorizontal: 14, + paddingVertical: 4, + borderRadius: 12, + }, + comingBadgeText: { + fontSize: 12, + color: '#8b5cf6', + fontWeight: '500', + }, + aboutRow: { + flexDirection: 'row', + justifyContent: 'space-between', + alignItems: 'center', + }, + aboutLeft: { + flexDirection: 'row', + alignItems: 'center', + gap: 8, + }, + aboutRight: { + flexDirection: 'row', + alignItems: 'center', + gap: 8, + }, + aboutLabel: { + fontSize: 15, + color: '#333', + }, + aboutValue: { + fontSize: 15, + color: '#888', + }, + updateBadge: { + backgroundColor: '#fff3cd', + paddingHorizontal: 8, + paddingVertical: 2, + borderRadius: 8, + }, + updateBadgeText: { + fontSize: 11, + color: '#856404', + fontWeight: '500', + }, +}); diff --git a/services/categorizer.js b/services/categorizer.js new file mode 100644 index 0000000..cb725ba --- /dev/null +++ b/services/categorizer.js @@ -0,0 +1,127 @@ +// 语言 → 分类 的映射表 +// 根据仓库主要编程语言直接映射到对应的分类 +const languageCategoryMap = { + 'HTML': 'Web应用', 'CSS': 'Web应用', 'JavaScript': 'Web应用', + 'TypeScript': 'Web应用', 'Vue': 'Web应用', 'Svelte': 'Web应用', + 'PHP': 'Web应用', 'Ruby': 'Web应用', 'Elixir': 'Web应用', + 'Python': 'AI/机器学习', 'Jupyter Notebook': 'AI/机器学习', + 'R': '数据分析', 'Julia': '数据分析', + 'Java': '移动应用', 'Kotlin': '移动应用', 'Dart': '移动应用', + 'Swift': '移动应用', 'Objective-C': '移动应用', + 'C++': '桌面应用', 'C#': '桌面应用', 'Go': '桌面应用', + 'Rust': '桌面应用', 'C': '桌面应用', 'Zig': '桌面应用', + 'SQL': '数据库', 'PLpgSQL': '数据库', + 'Shell': '开发工具', 'Dockerfile': '开发工具', 'Makefile': '开发工具', + 'CMake': '开发工具', 'PowerShell': '开发工具', +}; + +// 关键词规则:每个分类关联一组关键词,与仓库名称/描述匹配 +// 关键词越长代表越精确,匹配时按关键词长度加权 +const keywordRules = [ + { category: 'AI/机器学习', keywords: ['ai', 'artificial intelligence', 'machine learning', 'deep learning', 'neural', 'llm', 'gpt', 'transformer', 'pytorch', 'tensorflow', 'keras', 'openai', 'langchain', 'rag', 'embedding', 'stable diffusion', 'huggingface', 'nlp', 'computer vision', 'reinforcement learning', 'generative'] }, + { category: 'Web应用', keywords: ['web', 'website', 'api', 'rest', 'graphql', 'frontend', 'backend', 'fullstack', 'react', 'next.js', 'nuxt', 'express', 'django', 'flask', 'spring', 'laravel', 'rails', 'http', 'server', 'middleware', 'cors', 'websocket'] }, + { category: '移动应用', keywords: ['mobile', 'android', 'ios', 'flutter', 'react native', 'swiftui', 'jetpack', 'compose', 'app', 'pwa'] }, + { category: '桌面应用', keywords: ['desktop', 'electron', 'tauri', 'qt', 'gtk', 'winui', 'wpf', 'cli', 'terminal', 'tui'] }, + { category: '数据库', keywords: ['database', 'sql', 'nosql', 'redis', 'postgresql', 'mysql', 'mongodb', 'sqlite', 'cassandra', 'dynamodb', 'elasticsearch', 'orm', 'prisma', 'sequelize'] }, + { category: '开发工具', keywords: ['devtool', 'developer tool', 'ide', 'editor', 'vscode', 'plugin', 'extension', 'compiler', 'linter', 'formatter', 'debugger', 'docker', 'kubernetes', 'k8s', 'ci/cd', 'github action', 'automation', 'scaffold', 'boilerplate', 'template', 'sdk', 'library', 'framework', 'package'] }, + { category: '安全工具', keywords: ['security', 'hack', 'penetration', 'vulnerability', 'exploit', 'encrypt', 'decrypt', 'auth', 'oauth', 'jwt', 'firewall', 'malware', 'ransomware', 'cve', 'bug bounty', 'sast', 'dast'] }, + { category: '游戏', keywords: ['game', 'gaming', 'unity', 'unreal', 'godot', 'sprite', 'animation', 'physics engine', '3d', 'webgl', 'opengl', 'vulkan', 'shader'] }, + { category: '设计工具', keywords: ['design', 'ui', 'ux', 'figma', 'sketch', 'svg', 'icon', 'font', 'typography', 'color', 'theme', 'animation', 'css', 'tailwind', 'bootstrap', 'material'] }, + { category: '效率工具', keywords: ['productivity', 'utility', 'tool', 'workflow', 'automation', 'clipboard', 'note', 'todo', 'calendar', 'password', 'manager', 'sync'] }, + { category: '教育学习', keywords: ['tutorial', 'course', 'learn', 'education', 'documentation', 'book', 'cheatsheet', 'roadmap', 'example', 'demo', 'guide', 'awesome', 'awesome-'] }, + { category: '社交网络', keywords: ['social', 'chat', 'messaging', 'forum', 'community', 'blog', 'feed', 'timeline', 'notification', 'follower', 'friend'] }, + { category: '数据分析', keywords: ['data', 'analytics', 'visualization', 'dashboard', 'chart', 'statistics', 'etl', 'big data', 'spark', 'hadoop', 'pandas', 'numpy', 'scipy', 'tableau', 'metabase', 'superset'] }, +]; + +// 文本标准化:转小写 + 去除首尾空格 +function normalize(text) { + return (text || '').toLowerCase().trim(); +} + +// 关键词评分:遍历关键词列表,匹配到的每个关键词按长度累加得分 +function scoreByKeywords(text, keywords) { + const normalized = normalize(text); + let score = 0; + for (const kw of keywords) { + if (normalized.includes(kw)) { + score += kw.length; + } + } + return score; +} + +// 对单个仓库进行自动分类(返回最多 3 个最匹配的分类) +export function autoCategorize(repo, categories) { + const lang = repo.language || ''; + const name = repo.full_name || ''; + const desc = repo.description || ''; + + const results = []; + + // 遍历所有关键词规则进行评分 + for (const rule of keywordRules) { + let score = 0; + // 仓库名称权重 2 倍,描述权重 1 倍 + score += scoreByKeywords(name, rule.keywords) * 2; + score += scoreByKeywords(desc, rule.keywords); + + // 如果编程语言直接匹配当前分类,加基础分 + const langMatch = languageCategoryMap[lang]; + if (langMatch === rule.category) { + score += 5; + } + + if (score > 0) { + const matched = categories.find(c => c.name === rule.category); + if (matched) { + results.push({ category: matched, score }); + } + } + } + + // 关键词没匹配到:回退到仅按语言映射分类 + if (results.length === 0) { + const langCategory = languageCategoryMap[lang]; + if (langCategory) { + const matched = categories.find(c => c.name === langCategory); + if (matched) return [matched]; + } + return []; + } + + // 按得分排序,取最高分的 60% 以上的分类(最多 3 个) + results.sort((a, b) => b.score - a.score); + const maxScore = results[0].score; + return results + .filter(r => r.score >= maxScore * 0.6) + .map(r => r.category) + .slice(0, 3); +} + +// 批量处理多个仓库的自动分类 +export function autoCategorizeAll(repos, categories) { + const results = []; + for (const repo of repos) { + const matchedCategories = autoCategorize(repo, categories); + results.push({ + repoId: repo.id, + repoName: repo.full_name, + categoryIds: matchedCategories.map(c => c.id), + categoryNames: matchedCategories.map(c => c.name), + }); + } + return results; +} + +// 执行自动分类的完整流程:获取未分类仓库 → 分类匹配 → 批量保存 +export async function runAutoCategorize(categories, getUncategorizedRepos, batchSetRepoCategories) { + const uncategorized = await getUncategorizedRepos(); + if (uncategorized.length === 0) return 0; + const results = autoCategorizeAll(uncategorized, categories); + const assignments = results.filter(r => r.categoryIds.length > 0).map(r => ({ + repoId: r.repoId, + categoryIds: r.categoryIds, + })); + if (assignments.length === 0) return 0; + return await batchSetRepoCategories(assignments); +} diff --git a/services/database.js b/services/database.js new file mode 100644 index 0000000..e824f39 --- /dev/null +++ b/services/database.js @@ -0,0 +1,399 @@ +import * as SQLite from 'expo-sqlite'; + +let db = null; +let initPromise = null; + +// 初始化数据库:建表 + 首次运行时插入默认分类 +export async function initDatabase() { + if (initPromise) return initPromise; + initPromise = (async () => { + db = await SQLite.openDatabaseAsync('github_stars.db'); + + // 分类表 + await db.execAsync( + `CREATE TABLE IF NOT EXISTS categories ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + name TEXT NOT NULL UNIQUE, + color TEXT NOT NULL DEFAULT '#0366d6', + sort_order INTEGER DEFAULT 0, + created_at TEXT DEFAULT CURRENT_TIMESTAMP + );` + ); + + // 星标仓库表 + await db.execAsync( + `CREATE TABLE IF NOT EXISTS starred_repos ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + repo_id INTEGER UNIQUE NOT NULL, + full_name TEXT NOT NULL, + description TEXT, + html_url TEXT NOT NULL, + language TEXT, + stargazers_count INTEGER DEFAULT 0, + forks_count INTEGER DEFAULT 0, + owner_avatar_url TEXT, + owner_login TEXT, + default_branch TEXT DEFAULT 'main', + created_at TEXT DEFAULT CURRENT_TIMESTAMP + );` + ); + + // 兼容旧数据库:给已有表添加 default_branch 列(如已存在则静默忽略) + try { + await db.execAsync('ALTER TABLE starred_repos ADD COLUMN default_branch TEXT DEFAULT \'main\''); + } catch (e) { + // Column already exists, ignore + } + + // 仓库-分类 多对多关联表 + await db.execAsync( + `CREATE TABLE IF NOT EXISTS repo_categories ( + repo_id INTEGER NOT NULL, + category_id INTEGER NOT NULL, + PRIMARY KEY (repo_id, category_id), + FOREIGN KEY (repo_id) REFERENCES starred_repos(id) ON DELETE CASCADE, + FOREIGN KEY (category_id) REFERENCES categories(id) ON DELETE CASCADE + );` + ); + + // 应用设置 KV 表 + await db.execAsync( + `CREATE TABLE IF NOT EXISTS app_settings ( + key TEXT PRIMARY KEY, + value TEXT + );` + ); + + // 首次运行时插入 13 个默认分类 + const existingCount = await db.getFirstAsync('SELECT COUNT(*) AS count FROM categories'); + if (existingCount.count === 0) { + const defaultCategories = [ + ['Web应用', '#0366d6'], + ['移动应用', '#28a745'], + ['桌面应用', '#d73a4a'], + ['数据库', '#6f42c1'], + ['AI/机器学习', '#e36209'], + ['开发工具', '#19b5a0'], + ['安全工具', '#f0ad4e'], + ['游戏', '#8b5cf6'], + ['设计工具', '#1abc9c'], + ['效率工具', '#3498db'], + ['教育学习', '#9b59b6'], + ['社交网络', '#e67e22'], + ['数据分析', '#2c3e50'], + ]; + for (let i = 0; i < defaultCategories.length; i++) { + await db.runAsync( + 'INSERT OR IGNORE INTO categories (name, color, sort_order) VALUES (?, ?, ?)', + defaultCategories[i][0], + defaultCategories[i][1], + i + ); + } + } + })(); + return initPromise; +} + +// 安全的字符串转换,防止 null/undefined 存入 DB +function safeStr(value) { + if (value == null) return null; + if (typeof value === 'string') return value; + return String(value); +} + +// 安全的整数转换 +function safeInt(value) { + if (value == null) return 0; + const n = Number(value); + return Number.isFinite(n) ? Math.floor(n) : 0; +} + +// === 通用设置(KV 存储) === +export async function getSetting(key) { + await initDatabase(); + const row = await db.getFirstAsync( + 'SELECT value FROM app_settings WHERE key = ?', + safeStr(key) + ); + return row?.value ?? null; +} + +export async function setSetting(key, value) { + await initDatabase(); + await db.runAsync( + 'INSERT OR REPLACE INTO app_settings (key, value) VALUES (?, ?)', + safeStr(key), + safeStr(value) + ); +} + +export async function deleteSetting(key) { + await initDatabase(); + await db.runAsync('DELETE FROM app_settings WHERE key = ?', safeStr(key)); +} + +// === Token 相关 === +export async function getGitHubToken() { + return await getSetting('github_token'); +} + +export async function setGitHubToken(token) { + await setSetting('github_token', token); +} + +export async function clearGitHubToken() { + await deleteSetting('github_token'); +} + +// === 分类 CRUD === +export async function getAllCategories() { + await initDatabase(); + return await db.getAllAsync( + 'SELECT * FROM categories ORDER BY sort_order ASC, created_at ASC' + ); +} + +export async function addCategory(name, color = '#0366d6') { + await initDatabase(); + const maxOrder = await db.getFirstAsync( + 'SELECT COALESCE(MAX(sort_order), -1) + 1 AS next_order FROM categories' + ); + const result = await db.runAsync( + 'INSERT INTO categories (name, color, sort_order) VALUES (?, ?, ?)', + safeStr(name), + safeStr(color), + safeInt(maxOrder?.next_order ?? 0) + ); + return result.lastInsertRowId; +} + +export async function updateCategory(id, name, color) { + await initDatabase(); + await db.runAsync( + 'UPDATE categories SET name = ?, color = ? WHERE id = ?', + safeStr(name), + safeStr(color), + safeInt(id) + ); +} + +export async function deleteCategory(id) { + await initDatabase(); + await db.runAsync('DELETE FROM repo_categories WHERE category_id = ?', safeInt(id)); + await db.runAsync('DELETE FROM categories WHERE id = ?', safeInt(id)); +} + +// === 仓库数据同步 === +// 将 GitHub API 返回的仓库列表保存到本地,已存在则跳过(INSERT OR IGNORE) +// 并更新 default_branch 字段以保持最新 +export async function saveRepos(repos) { + await initDatabase(); + let insertedCount = 0; + const errors = []; + for (const repo of repos) { + try { + await db.runAsync( + `INSERT OR IGNORE INTO starred_repos + (repo_id, full_name, description, html_url, language, stargazers_count, forks_count, owner_avatar_url, owner_login, default_branch) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, + safeInt(repo?.id), + safeStr(repo?.full_name), + safeStr(repo?.description), + safeStr(repo?.html_url), + safeStr(repo?.language), + safeInt(repo?.stargazers_count), + safeInt(repo?.forks_count), + safeStr(repo?.owner?.avatar_url), + safeStr(repo?.owner?.login), + safeStr(repo?.default_branch || 'main') + ); + + // 更新已有记录的 default_branch(之前同步的可能没有此字段) + await db.runAsync( + `UPDATE starred_repos SET default_branch = ? WHERE repo_id = ? AND default_branch != ?`, + safeStr(repo?.default_branch || 'main'), + safeInt(repo?.id), + safeStr(repo?.default_branch || 'main') + ); + + insertedCount++; + } catch (e) { + errors.push({ repo: repo?.full_name, error: e.message }); + } + } + if (errors.length > 0) { + console.warn('saveRepos errors:', errors.slice(0, 5)); + } + return insertedCount; +} + +// === 仓库查询(含分类关联) === +// 通过 LEFT JOIN 将仓库与其所属分类合并成一条结果 +// 最终用 formatRepoRows 按 repo_id 聚合多个分类 + +// 将单行中的分类信息(cat_id:::cat_name:::cat_color)解析为对象 +function formatRepoRow(row) { + if (!row) return row; + const categories = row.categories_raw + ? row.categories_raw.split('|||').filter(Boolean).map(part => { + const [id, name, color] = part.split(':::'); + return { id: Number(id), name, color }; + }) + : []; + return { + ...row, + categories, + category_name: categories.length > 0 ? categories[0].name : null, + category_color: categories.length > 0 ? categories[0].color : null, + }; +} + +// 将 LEFT JOIN 产生的多行合并,同一仓库的多个分类拼接到一个字段中 +function formatRepoRows(rows) { + const map = new Map(); + for (const row of rows) { + const key = row.repo_id; + if (!map.has(key)) { + map.set(key, { ...row, categories_raw: '' }); + } + if (row.cat_id) { + const existing = map.get(key); + existing.categories_raw += `${row.cat_id}:::${row.cat_name || ''}:::${row.cat_color || ''}|||`; + } + } + return Array.from(map.values()).map(formatRepoRow); +} + +// 基础 SELECT 语句,包含仓库字段 + 关联的分类字段 +const REPO_SELECT = + `SELECT r.id, r.repo_id, r.full_name, r.description, r.html_url, + r.language, r.stargazers_count, r.forks_count, + r.owner_avatar_url, r.owner_login, r.default_branch, r.created_at, + rc.category_id AS cat_id, c.name AS cat_name, c.color AS cat_color`; + +export async function getAllRepos() { + await initDatabase(); + const rows = await db.getAllAsync( + `${REPO_SELECT} + FROM starred_repos r + LEFT JOIN repo_categories rc ON r.id = rc.repo_id + LEFT JOIN categories c ON rc.category_id = c.id + ORDER BY r.created_at DESC` + ); + return formatRepoRows(rows); +} + +export async function getReposByCategory(categoryId) { + await initDatabase(); + const rows = await db.getAllAsync( + `${REPO_SELECT} + FROM starred_repos r + INNER JOIN repo_categories rc ON r.id = rc.repo_id + LEFT JOIN categories c ON rc.category_id = c.id + WHERE rc.category_id = ? + ORDER BY r.created_at DESC`, + safeInt(categoryId) + ); + return formatRepoRows(rows); +} + +export async function getUncategorizedRepos() { + await initDatabase(); + const rows = await db.getAllAsync( + `${REPO_SELECT} + FROM starred_repos r + LEFT JOIN repo_categories rc ON r.id = rc.repo_id + LEFT JOIN categories c ON rc.category_id = c.id + WHERE rc.repo_id IS NULL + ORDER BY r.created_at DESC` + ); + return formatRepoRows(rows); +} + +// === 仓库-分类 关联操作 === +export async function getRepoCategories(repoId) { + await initDatabase(); + return await db.getAllAsync( + `SELECT c.id, c.name, c.color + FROM repo_categories rc + JOIN categories c ON rc.category_id = c.id + WHERE rc.repo_id = ? + ORDER BY c.sort_order ASC`, + safeInt(repoId) + ); +} + +// 先删后插:清除旧关联后重新设置(用于手动调整分类) +export async function setRepoCategories(repoId, categoryIds) { + await initDatabase(); + await db.runAsync('DELETE FROM repo_categories WHERE repo_id = ?', safeInt(repoId)); + for (const catId of categoryIds) { + if (catId == null) continue; + await db.runAsync( + 'INSERT OR IGNORE INTO repo_categories (repo_id, category_id) VALUES (?, ?)', + safeInt(repoId), + safeInt(catId) + ); + } +} + +export async function addRepoCategory(repoId, categoryId) { + await initDatabase(); + await db.runAsync( + 'INSERT OR IGNORE INTO repo_categories (repo_id, category_id) VALUES (?, ?)', + safeInt(repoId), + safeInt(categoryId) + ); +} + +export async function removeRepoCategory(repoId, categoryId) { + await initDatabase(); + await db.runAsync( + 'DELETE FROM repo_categories WHERE repo_id = ? AND category_id = ?', + safeInt(repoId), + safeInt(categoryId) + ); +} + +// 批量设置仓库分类(用于自动分类引擎) +export async function batchSetRepoCategories(assignments) { + await initDatabase(); + let count = 0; + for (const { repoId, categoryIds } of assignments) { + if (!categoryIds || categoryIds.length === 0) continue; + try { + for (const catId of categoryIds) { + await db.runAsync( + 'INSERT OR IGNORE INTO repo_categories (repo_id, category_id) VALUES (?, ?)', + safeInt(repoId), + safeInt(catId) + ); + } + count++; + } catch (e) { + console.warn('batchSetRepoCategories error:', repoId, e.message); + } + } + return count; +} + +// === 统计查询 === +export async function getRepoCountByCategory() { + await initDatabase(); + return await db.getAllAsync( + `SELECT c.id, c.name, c.color, COUNT(rc.repo_id) AS repo_count + FROM categories c + LEFT JOIN repo_categories rc ON c.id = rc.category_id + GROUP BY c.id + ORDER BY c.sort_order ASC` + ); +} + +export async function getTotalRepoCount() { + await initDatabase(); + const result = await db.getFirstAsync( + 'SELECT COUNT(*) AS count FROM starred_repos' + ); + return result?.count ?? 0; +} diff --git a/services/github.js b/services/github.js new file mode 100644 index 0000000..1d797b8 --- /dev/null +++ b/services/github.js @@ -0,0 +1,154 @@ +import Constants from 'expo-constants'; + +const GITHUB_API_URL = 'https://api.github.com'; +// 用于检查更新的仓库地址,从 app.json extra 中读取 +const APP_REPO = Constants.expoConfig?.extra?.appRepo || 'EchoZenith/GithubStarsManager-Android'; +// 当前版本号从 app.json 中读取(version 字段) +const CURRENT_VERSION = Constants.expoConfig?.version || '1.0.0'; + +// 自定义错误类型:Token 过期或无效时抛出,供上层 UI 捕获后跳转 Token 输入页 +class TokenExpiredError extends Error { + constructor(message) { + super(message); + this.name = 'TokenExpiredError'; + } +} + +export { TokenExpiredError }; + +// 构建 GitHub API 请求头 +function buildHeaders(token) { + return { + Authorization: `Bearer ${token}`, + Accept: 'application/vnd.github.v3+json', + }; +} + +// 分页获取用户所有星标仓库(每页 100 条,自动翻页直到取完) +export async function fetchStarredRepos(token) { + if (!token) { + throw new TokenExpiredError('请先输入 GitHub Token'); + } + + let allRepos = []; + let page = 1; + let hasMore = true; + + while (hasMore) { + const response = await fetch( + `${GITHUB_API_URL}/user/starred?per_page=100&page=${page}`, + { + method: 'GET', + headers: buildHeaders(token), + } + ); + + if (response.status === 401) { + throw new TokenExpiredError('GitHub Token 已过期或无效,请重新输入'); + } + + if (!response.ok) { + throw new Error(`GitHub API 错误!状态码: ${response.status}`); + } + + const data = await response.json(); + if (data.length === 0) { + hasMore = false; + } else { + allRepos = allRepos.concat(data); + page++; + } + } + + return allRepos; +} + +// 获取仓库的 README 原始内容(raw 格式直接返回 markdown 文本) +export async function fetchReadme(token, fullName) { + if (!token) { + throw new TokenExpiredError('请先输入 GitHub Token'); + } + + const response = await fetch( + `${GITHUB_API_URL}/repos/${fullName}/readme`, + { + method: 'GET', + headers: { + ...buildHeaders(token), + Accept: 'application/vnd.github.raw', + }, + } + ); + + if (response.status === 401) { + throw new TokenExpiredError('GitHub Token 已过期或无效,请重新输入'); + } + + if (response.status === 404) { + return null; + } + + if (!response.ok) { + throw new Error(`获取 README 失败!状态码: ${response.status}`); + } + + return await response.text(); +} + +// 检查应用更新:对比当前版本与 GitHub Releases 最新版本号 +export async function checkUpdate(token) { + try { + const headers = { + Accept: 'application/vnd.github.v3+json', + }; + if (token) { + headers.Authorization = `Bearer ${token}`; + } + + const response = await fetch( + `${GITHUB_API_URL}/repos/${APP_REPO}/releases/latest`, + { + method: 'GET', + headers, + } + ); + + if (response.status === 404) { + return { hasUpdate: false, error: null, message: '未找到发布版本' }; + } + + if (!response.ok) { + return { hasUpdate: false, error: '检查更新失败', message: null }; + } + + const data = await response.json(); + const latestVersion = data.tag_name.replace(/^v/, ''); + const currentParts = CURRENT_VERSION.split('.').map(Number); + const latestParts = latestVersion.split('.').map(Number); + + // 逐段比较版本号(major.minor.patch) + let hasUpdate = false; + for (let i = 0; i < Math.max(currentParts.length, latestParts.length); i++) { + const cur = currentParts[i] || 0; + const lat = latestParts[i] || 0; + if (lat > cur) { hasUpdate = true; break; } + if (lat < cur) break; + } + + return { + hasUpdate, + currentVersion: CURRENT_VERSION, + latestVersion, + releaseUrl: data.html_url, + releaseName: data.name || data.tag_name, + releaseBody: data.body ? data.body.split('\n').slice(0, 5).join('\n') : '', + publishedAt: data.published_at, + error: null, + message: hasUpdate + ? `发现新版本 v${latestVersion}` + : '已是最新版本', + }; + } catch (e) { + return { hasUpdate: false, error: e.message || '网络错误', message: null }; + } +}