diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/2/index.html b/2/index.html new file mode 100644 index 0000000..f2d5a33 --- /dev/null +++ b/2/index.html @@ -0,0 +1 @@ +平淡生活 - 退休前的牛马生活
从memos的webhook开始
2024-06-18
这篇文章介绍了如何利用memos的webhook功能从v0.18版本开始,通过复制Typecho主题icefox的CSS布局,创建一个基于memos的单页面,类微信朋友圈。文章详细说明了使用BASH、宝塔WEBHOOK和PHP获取memos的JSON数据的方法,并展示了如何部署webhook镜像和配置webhook以实现自动更新memos.json文件。此外,还提供了演示链接供参考。
779 字
|
4 分钟
利用 Github Actions 自动部署 Hexo 博客
这篇文章介绍了如何使用Github Actions实现CI/CD工作流,包括自动化测试、打包和部署等操作。文章详细说明了在已有hexo博客、github账户和项目的基础上,如何创建.github/workflows/main.yml文件,并设置Personal access tokens以实现hexo项目main分支更新时自动更新gh-pages分支的功能。
331 字
|
2 分钟
在fly.io部署Alist
2024-01-27
这篇文章介绍了如何在Windows系统上安装FLYCTL工具,并详细说明了初始化、创建应用、设置参数、编辑配置文件、部署应用以及获取管理员密码的步骤。文章通过图文结合的方式,展示了每一步的操作流程,并提供了一个演示链接以供参考。
188 字
|
1 分钟
使用Docker快速部署mastodon实例
2023-10-30
这篇文章介绍了如何使用Docker快速部署Mastodon实例的详细步骤,包括创建目录、拉取镜像、修改Docker Compose配置文件、初始化PostgreSQL数据库、配置Mastodon、运行引导、写入配置文件、启动Mastodon、文件夹赋权和创建管理员账户等。
272 字
|
1 分钟
快速部署misskey实例
2023-10-11
这篇文章介绍了如何在纯净的Ubuntu系统上使用一键脚本安装和更新Misskey,推荐配置为双核心四线程。文章详细说明了更新脚本的步骤,以及如何使用Docker Compose进行部署,包括环境准备、Git克隆仓库、编辑配置文件、构建镜像、启动容器和设置反向代理的步骤。
308 字
|
2 分钟
Mariadb创建数据库、用户及授权
2023-10-06
这篇文章介绍了在测试SForum程序中涉及的数据库操作流程,包括安装MARIADB服务器、初始化数据库、连接数据库、创建数据库和本地访问账户、创建用户并设置参数(如用户名、访问方式和密码)、分配权限(包括所有权限和部分权限)以及授权操作权限。
245 字
|
1 分钟
测试xiuno2Sforum中遇到的各种问题
2023-10-06
这篇文章介绍了如何将XiunoBBS数据转换为SForum的过程,使用的是SForum v2.2.2版本。文章详细描述了测试环境配置,包括Ubuntu 22.0.4、PHP8.0、MariaDB10.6、Composer、Redis和Nginx或Apache的安装与配置。此外,还涉及了PHP扩展ZIPARCHIVE的安装问题解决,以及通过Composer安装Medoo类库,创建和导入MariaDB数据库,安装Redis和Nginx,最后完成SForum v2.2.2的安装步骤。
392 字
|
2 分钟
centos在yum时出现Determining fastest mirrors
2023-10-05
这篇文章介绍了两个关于Yum使用中的问题及其解决方法。第一个问题是yum makecache时卡在Determining fastest mirrors,解决方法是禁用fastestmirror插件,通过修改/etc/yum/pluginconf.d/fastestmirror.conf和/etc/yum.conf文件实现。第二个问题是无法访问ELRepo镜像列表,解决方法是更新ELRepo软件仓库镜像,通过替换/etc/yum.repos.d/elrepo.repo文件中的mirrorlist地址来实现。
183 字
|
1 分钟
\ No newline at end of file diff --git a/3/index.html b/3/index.html new file mode 100644 index 0000000..4702e34 --- /dev/null +++ b/3/index.html @@ -0,0 +1 @@ +平淡生活 - 退休前的牛马生活
Docker部署Activity-Relay服务
2023-10-03
这篇文章介绍了在CentOS 7.9环境下部署一个项目的过程,包括安装必要的软件(如git、openssl、nginx、docker和docker-compose),从仓库拉取代码,编辑配置文件,生成RSA证书,构建并运行Docker镜像,查看容器状态,以及停止服务的步骤。同时还提到了Ubuntu和CentOS在生成证书时的不同命令,以及权限设置和Nginx配置的相关参考。
250 字
|
1 分钟
NEC M700黑苹果OC0.9.4引导
2023-10-01
这篇文章介绍了如何在NEC M700笔记本上安装黑苹果,使用OpenCore 0.9.4引导。文章详细列出了笔记本的硬件配置,包括CPU、主板、内存、硬盘、无线网卡、有线网卡和声卡。此外,还提到了安装前的准备工作,如使用U盘、解锁CFG LOCK工具、ami BIOS提取工具和OCAT。具体步骤包括在Windows系统下提取BIOS文件,并通过UEFI TOOL打开并查找cfg lock项。
106 字
|
1 分钟
在fly.io部署Gotosocial
这篇文章介绍了如何安装和配置GoToSocial,一个轻量级的ActivityPub联邦社交网络程序。文章详细说明了注册Fly.io和Cloudflare账户的步骤,安装FLYCTL的方法,以及如何在不同操作系统上进行操作。此外,还涵盖了创建应用、储存卷、编辑配置文件、部署应用、创建用户和管理员账户的具体步骤,并提供了演示链接和下载数据库的方法。
490 字
|
2 分钟
在fly.io部署artalk评论系统
2023-08-15
这篇文章介绍了如何在Fly.io平台上使用其提供的免费服务,包括安装flyctl命令行工具、创建应用、分配1G硬盘空间以及编辑FLY.TOML文件来设置管理员账号和重启服务的步骤。Fly.io提供三个256MB内存的服务器和总3G硬盘空间,但需要绑定信用卡以防止滥用。
191 字
|
1 分钟
如何在Fly.io部署Memos
2023-08-15
这篇文章介绍了如何在FLY.IO上部署memos应用,并使用Backblaze B2云存储进行数据库备份。文章详细说明了注册FLY.IO和Backblaze B2的步骤,安装flyctl工具,创建和配置FLY.TOML文件,添加持久卷和密钥,最后进行应用部署。此外,还提供了演示地址和绑定域名的示例。
263 字
|
1 分钟
使用 Docker 构建 Pleroma 实例
这篇文章介绍了如何使用Docker构建Pleroma实例,Pleroma是一个基于ActivityPub协议的去中心化社区程序。文章详细说明了在宝塔面板中安装Docker、获取DOCKER-COMPOSE.YML模板、修改配置文件、启动容器、添加反向代理、创建管理员账户以及修改文件夹权限的步骤。此外,还提到了如果使用S3协议的对象存储则无需修改文件夹权限,并提供了一个演示地址。
459 字
|
2 分钟
用Memos API实现hexo博客的动态说说页面
2023-06-13
这篇文章介绍了如何修改Memos/index.md文件的内容,并提到代码来源于网络。
121 字
|
1 分钟
2023国内注册ChatGPT的方法
这篇文章介绍了国内用户如何注册和使用ChatGPT的方法。首先,用户需要有一个非中国大陆的网络环境和一个可以接收短信验证码的手机号码。接着,通过OpenAI官网进行账号注册,包括邮箱验证和手机号码验证。文章还提到了如果无法直接注册,可以通过搭建梯子或使用第三方接码平台来解决。最后,注册完成后,用户可以登录ChatGPT官网开始使用。
1192 字
|
6 分钟
\ No newline at end of file diff --git a/4/index.html b/4/index.html new file mode 100644 index 0000000..40fd76e --- /dev/null +++ b/4/index.html @@ -0,0 +1 @@ +平淡生活 - 退休前的牛马生活
Qv2ray客户端及内核下载
2023-04-07
这篇文章介绍了Qv2ray,一个第三方图形化桌面客户端,基于V2ray官方内核,支持多种代理协议如vmess、SS、SSR、Trojan等,并可通过插件扩展功能。文章还提供了Qv2ray客户端和V2ray内核的下载链接。
154 字
|
1 分钟
42个虚拟信用卡开卡渠道
这篇文章介绍了如何通过调整饮食习惯来改善睡眠质量。文章首先指出睡眠问题在现代社会中的普遍性,然后详细讨论了食物对睡眠的影响,包括哪些食物有助于促进睡眠,如富含色氨酸的食物和全谷物,以及应避免的食物,如含咖啡因和糖分高的食品。此外,文章还提到了饮食时间的重要性,建议晚餐不宜过晚或过饱。整体上,文章提供了实用的饮食建议,帮助读者通过调整饮食来获得更好的睡眠。
1871 字
|
9 分钟
centos7安装后没有网络
2022-11-29
这篇文章介绍了如何以root账号登录系统,使用ip addr命令查看网络参数,并打开eth0网卡的配置文件。文章还指导了如何将NOBOOT参数从no修改为yes,以及通过重启网络或服务器来应用这些更改。
51 字
|
1 分钟
macOS与Windows双系统时间不同步的解决办法
2022-11-15
这篇文章介绍了在Windows系统中,通过右键点击开始菜单并选择“终端(管理员)”来执行某些操作的方法,并建议重启电脑以应用更改。
35 字
|
1 分钟
VK23黑苹果OpenCore0.8.5引导macOS12.6.1
2022-11-08
这篇文章介绍了将网卡更换为DW1560的过程,并提供了相关的截图链接。文章还列出了更换网卡后设备正常工作的各项功能,包括显卡、声卡、有线网卡、无线网卡、摄像头、读卡器、蓝牙和隔空投送。
53 字
|
1 分钟
华硕b150m-et m2+rx560黑苹果oc0.8.5引导
2022-10-21
这篇文章介绍了作者的电脑配置,包括CPU、主板、内存、硬盘、显卡、网卡、电源和机箱等硬件信息。文章还提到了机箱的散热问题,以及通过BIOS设置优化系统性能的具体步骤,如关闭CSM兼容性、VT-D等。此外,文章还分享了已成功驱动的硬件列表,如声卡、网卡、显卡等,并提供了引导下载的链接。
133 字
|
1 分钟
office2016 Mac 版本下载安装及破解激活
2022-10-14
这篇文章提供了Microsoft Office 2016 for Mac的安装包下载地址和一个激活工具的百度网盘链接及密码。安装包地址为http://officecdn.microsoft.com/sg/C1297A47-86C4-4C1F-97FA-950631F94777/OfficeMac/Microsoft_Office_2016_15.29.16120900_Installer.pkg,激活工具链接为https://pan.baidu.com/s/1ragcr1M,密码是rcb2。
22 字
|
1 分钟
Typecho插件CommentsByQQ修改版
这篇文章介绍了作者基于Typecho插件CommentsByQQ的修改版本,旨在通过QQ机器人接收评论通知。由于原插件的QQ机器人已失效,作者自行搭建了一个基于go-http的QQ机器人,并提供了使用方法和下载地址。
113 字
|
1 分钟
\ No newline at end of file diff --git a/5/index.html b/5/index.html new file mode 100644 index 0000000..30aa6d3 --- /dev/null +++ b/5/index.html @@ -0,0 +1 @@ +平淡生活 - 退休前的牛马生活
centos7 ssh连接慢的解决方法
2022-08-12
这篇文章介绍了在Linux系统中修改SSH配置文件的步骤,包括取消注释并修改UseDNS选项为no,以及将GSSAPIAuthentication选项也改为no,最后保存并退出编辑器,重启系统以应用更改。
35 字
|
1 分钟
Linux下本地安装包命令
2022-07-27
这篇文章介绍了在CENTOS系统下如何安装RPM安装包,以及在UBUNTU系统下如何安装DEB安装包。文章可能详细说明了安装步骤和命令,帮助用户在不同Linux发行版上进行软件包的安装。
28 字
|
1 分钟
黑苹果固态避坑指南
这篇文章介绍了多个型号的固态硬盘(SSD)与macOS的兼容性问题,包括三星、镁光、爱国者等品牌的特定型号在安装和运行macOS时可能遇到的问题。文章还提到了一些型号需要升级固件或使用特定的kext文件来解决兼容性问题,以及关于TRIM支持的详细信息,包括哪些型号完全支持或不完全支持TRIM功能。此外,文章还列出了一些能够正常安装和运行macOS的SSD型号。
636 字
|
3 分钟
2023年黑苹果amd免驱显卡购买推荐
这篇文章介绍了不同系列的AMD显卡及其在各个macOS版本中的支持情况。包括NAVI 20系列、NAVI 10系列、VEGA 20系列、VEGA 10系列、Polaris架构系列、R7/R9系列、HD 8000系列和HD 7000系列显卡,以及它们在特定操作系统版本下的兼容性和可能需要的特殊启动参数。
332 字
|
2 分钟
NEC VK22 黑苹果opencore引导
这篇文章介绍了如何在安装黑苹果前解锁CFGLock,以及使用NVME固态硬盘的优化方法。通过将U盘格式化为FAT32并复制OC引导文件,设置U盘为第一启动项,可以提升读写速度且不需修改BIOS。文章还提到了笔记本黑苹果安装中的难点,如注入EDID,并分享了已驱动的硬件列表和EFI文件下载链接。
192 字
|
1 分钟
记一次亿储SSD固态掉盘修复(重新开卡)
这篇文章介绍了老孙在闲鱼购买了一块二手SSD并尝试安装黑苹果系统,但遇到硬盘识别问题。通过拆解硬盘、短接主控、使用开卡软件等步骤,最终成功修复了固态硬盘的问题。文章还提供了所需物料清单、操作步骤和相关教程链接。
378 字
|
2 分钟
Cloud Torrent for centos一键安装
这篇文章介绍了如何安装和使用Cloud Torrent,一个支持BT和磁力链接下载、离线下载及边下边播的工具。文章详细说明了系统需求、脚本版本、特点、安装步骤、使用说明以及注意事项。Cloud Torrent通过Web UI提供可视化界面,支持搜索磁力链接,但主要针对国外资源。文章还提到了使用该工具时可能遇到的网络问题和版权风险。
863 字
|
4 分钟
Vi编辑器的基本使用方法
2016-11-16
这篇文章介绍了如何通过优化网站内容和结构来提高搜索引擎排名,包括关键词研究、内容创作、内部链接策略和外部链接建设等方法。文章还提到了SEO工具的使用和持续监控网站表现的重要性,以确保长期的成功。
2295 字
|
11 分钟
\ No newline at end of file diff --git a/6/index.html b/6/index.html new file mode 100644 index 0000000..4d6de0e --- /dev/null +++ b/6/index.html @@ -0,0 +1 @@ +平淡生活 - 退休前的牛马生活
阿里悟空服务下线
这篇文章介绍了阿里悟空服务在2016年10月31日下线的情况,以及基于该服务的phpwind移动版也随之结束。文章提到phpwind和discuz这两大社区论坛程序已经停止更新维护,暗示了社区论坛可能的衰落趋势。同时,文章探讨了个人草根站长未来可能不复存在的可能性,主要是因为网站开发和维护成本对非IT人员来说过高。
188 字
|
1 分钟
CentOS系统时间和时区查看以及修改的方法
2016-11-14
这篇文章介绍了如何在CentOS系统中修改时间和时区。首先,文章说明了如何查看当前系统时间,并提供了具体的命令来设置新的日期和时间(例如,将日期设定为2013年3月4日,时间设定为上午10:38)。接着,文章讲解了如何查看和修改系统的时区,特别是如何将时区设置为亚洲/上海,并确认覆盖操作。最后,文章指导用户如何验证新的时区和时间设置是否正确。
120 字
|
1 分钟
\ No newline at end of file diff --git a/_astro/DisplaySettings.ockvyvRj.js b/_astro/DisplaySettings.ockvyvRj.js new file mode 100644 index 0000000..9664955 --- /dev/null +++ b/_astro/DisplaySettings.ockvyvRj.js @@ -0,0 +1 @@ +import{S as L,i as M,s as Q,a as K,c as W,e as _,t as O,b as C,d as v,f as m,g as P,h as T,j as p,k as s,l as H,m as X,n as Y,o as i,p as R,q,u as Z,r as ee,v as te,w as se,x as ae,y as le,z as re,A as oe}from"./translation.Cj0Okkzk.js";import{I as F}from"./zh_TW.Cn8XYgkS.js";import{g as ne,a as G,s as ie}from"./setting-utils.H_x_02w0.js";const ue=e=>({}),J=e=>({});function ce(e){let a,t,l,r,o,c,n,d,b,f,u,h,g,k,x,$,y,w=K(F.themeColor)+"";const I=e[4]["restore-icon"],D=W(I,e,e[3],J);return{c(){a=_("div"),t=_("div"),l=_("div"),r=O(w),o=C(),c=_("button"),n=_("div"),D&&D.c(),d=C(),b=_("div"),f=_("div"),u=O(e[0]),h=C(),g=_("div"),k=_("input"),this.h()},l(s){a=v(s,"DIV",{id:!0,class:!0});var i=m(a);t=v(i,"DIV",{class:!0});var x=m(t);l=v(x,"DIV",{class:!0});var _=m(l);r=P(_,w),o=T(_),c=v(_,"BUTTON",{"aria-label":!0,class:!0});var $=m(c);n=v($,"DIV",{class:!0});var y=m(n);D&&D.l(y),y.forEach(p),$.forEach(p),_.forEach(p),d=T(x),b=v(x,"DIV",{class:!0});var I=m(b);f=v(I,"DIV",{id:!0,class:!0});var C=m(f);u=P(C,e[0]),C.forEach(p),I.forEach(p),x.forEach(p),h=T(i),g=v(i,"DIV",{class:!0});var E=m(g);k=v(E,"INPUT",{"aria-label":!0,type:!0,min:!0,max:!0,class:!0,id:!0,step:!0,style:!0}),E.forEach(p),i.forEach(p),this.h()},h(){s(n,"class","text-[var(--btn-content)] svelte-3akcb9"),s(c,"aria-label","Reset to Default"),s(c,"class","btn-regular w-7 h-7 rounded-md active:scale-90 svelte-3akcb9"),H(c,"opacity-0",e[0]===e[1]),H(c,"pointer-events-none",e[0]===e[1]),s(l,"class","flex gap-2 font-bold text-lg text-neutral-900 dark:text-neutral-100 transition relative ml-3 before:w-1 before:h-4 before:rounded-md before:bg-[var(--primary)] before:absolute before:-left-3 before:top-[0.33rem] svelte-3akcb9"),s(f,"id","hueValue"),s(f,"class","transition bg-[var(--btn-regular-bg)] w-10 h-7 rounded-md flex justify-center font-bold text-sm items-center text-[var(--btn-content)] svelte-3akcb9"),s(b,"class","flex gap-1 svelte-3akcb9"),s(t,"class","flex flex-row gap-2 mb-3 items-center justify-between svelte-3akcb9"),s(k,"aria-label",K(F.themeColor)),s(k,"type","range"),s(k,"min","0"),s(k,"max","360"),s(k,"class","slider svelte-3akcb9"),s(k,"id","colorSlider"),s(k,"step","5"),X(k,"width","100%"),s(g,"class","w-full h-6 px-1 bg-[oklch(0.80_0.10_0)] dark:bg-[oklch(0.70_0.10_0)] rounded select-none svelte-3akcb9"),s(a,"id","display-setting"),s(a,"class","float-panel float-panel-closed absolute transition-all w-80 right-4 px-4 py-4 svelte-3akcb9")},m(s,v){Y(s,a,v),i(a,t),i(t,l),i(l,r),i(l,o),i(l,c),i(c,n),D&&D.m(n,null),i(t,d),i(t,b),i(b,f),i(f,u),i(a,h),i(a,g),i(g,k),R(k,e[0]),x=!0,$||(y=[q(c,"click",e[2]),q(k,"change",e[5]),q(k,"input",e[5])],$=!0)},p(e,[s]){D&&D.p&&(!x||8&s)&&Z(D,I,e,e[3],x?te(I,e[3],s,ue):ee(e[3]),J),(!x||3&s)&&H(c,"opacity-0",e[0]===e[1]),(!x||3&s)&&H(c,"pointer-events-none",e[0]===e[1]),(!x||1&s)&&se(u,e[0]),1&s&&R(k,e[0])},i(e){x||(ae(D,e),x=!0)},o(e){le(D,e),x=!1},d(e){e&&p(a),D&&D.d(e),$=!1,re(y)}}}function de(e,s,a){let{$$slots:t={},$$scope:l}=s,r=ne();const i=G();return e.$$set=e=>{"$$scope"in e&&a(3,l=e.$$scope)},e.$$.update=()=>{1&e.$$.dirty&&(r||0===r)&&ie(r)},[r,i,function(){a(0,r=G())},l,t,function(){r=oe(this.value),a(0,r)}]}class be extends L{constructor(e){super(),M(this,e,de,ce,Q,{})}}export{be as default}; \ No newline at end of file diff --git a/_astro/LightDarkSwitch.DMWixe3q.js b/_astro/LightDarkSwitch.DMWixe3q.js new file mode 100644 index 0000000..d1446e1 --- /dev/null +++ b/_astro/LightDarkSwitch.DMWixe3q.js @@ -0,0 +1 @@ +import{S as lt,i as at,s as ft,G as ue,n as re,I as He,j as S,D as ut,J as Ct,K as de,L as Qe,e as M,d as L,f as j,M as Ge,N as Ot,H as jt,O as Pt,E as Mt,P as Ke,Q as Lt,a as ve,R as z,b as A,t as xe,T as H,h as N,g as _e,k as I,l as O,o as x,U as Q,q as G,x as K,y as J,V as W,z as Dt}from"./translation.Cj0Okkzk.js";import{L as Y,D as Z,A as B,b as $t,c as Ft,d as At}from"./setting-utils.H_x_02w0.js";import{I as ke}from"./zh_TW.Cn8XYgkS.js";function dt(t,e){const n={},o={},r={$$scope:1};let i=t.length;for(;i--;){const s=t[i],c=e[i];if(c){for(const t in s)t in c||(o[t]=1);for(const t in c)r[t]||(n[t]=c[t],r[t]=1);t[i]=c}else for(const t in s)r[t]=1}for(const t in o)t in n||(n[t]=void 0);return n}const te=/^[a-z0-9]+(-[a-z0-9]+)*$/,pe=(t,e,n,o="")=>{const r=t.split(":");if("@"===t.slice(0,1)){if(r.length<2||r.length>3)return null;o=r.shift().slice(1)}if(r.length>3||!r.length)return null;if(r.length>1){const t=r.pop(),n=r.pop(),i={provider:r.length>0?r[0]:o,prefix:n,name:t};return e&&!ae(i)?null:i}const i=r[0],s=i.split("-");if(s.length>1){const t={provider:o,prefix:s.shift(),name:s.join("-")};return e&&!ae(t)?null:t}if(n&&""===o){const t={provider:o,prefix:"",name:i};return e&&!ae(t,n)?null:t}return null},ae=(t,e)=>!!t&&!(""!==t.provider&&!t.provider.match(te)||!(e&&""===t.prefix||t.prefix.match(te))||!t.name.match(te)),ht=Object.freeze({left:0,top:0,width:16,height:16}),he=Object.freeze({rotate:0,vFlip:!1,hFlip:!1}),me=Object.freeze({...ht,...he}),Te=Object.freeze({...me,body:"",hidden:!1});function Nt(t,e){const n={};!t.hFlip!=!e.hFlip&&(n.hFlip=!0),!t.vFlip!=!e.vFlip&&(n.vFlip=!0);const o=((t.rotate||0)+(e.rotate||0))%4;return o&&(n.rotate=o),n}function Je(t,e){const n=Nt(t,e);for(const o in Te)o in he?o in t&&!(o in n)&&(n[o]=he[o]):o in e?n[o]=e[o]:o in t&&(n[o]=t[o]);return n}function Vt(t,e){const n=t.icons,o=t.aliases||Object.create(null),r=Object.create(null);return Object.keys(n).concat(Object.keys(o)).forEach((function t(e){if(n[e])return r[e]=[];if(!(e in r)){r[e]=null;const n=o[e]&&o[e].parent,i=n&&t(n);i&&(r[e]=[n].concat(i))}return r[e]})),r}function Bt(t,e,n){const o=t.icons,r=t.aliases||Object.create(null);let i={};function s(t){i=Je(o[t]||r[t],i)}return s(e),n.forEach(s),Je(t,i)}function pt(t,e){const n=[];if("object"!=typeof t||"object"!=typeof t.icons)return n;t.not_found instanceof Array&&t.not_found.forEach((t=>{e(t,null),n.push(t)}));const o=Vt(t);for(const r in o){const i=o[r];i&&(e(r,Bt(t,r,i)),n.push(r))}return n}const Rt={provider:"",aliases:{},not_found:{},...ht};function Se(t,e){for(const n in e)if(n in t&&typeof t[n]!=typeof e[n])return!1;return!0}function mt(t){if("object"!=typeof t||null===t)return null;const e=t;if("string"!=typeof e.prefix||!t.icons||"object"!=typeof t.icons||!Se(t,Rt))return null;const n=e.icons;for(const t in n){const e=n[t];if(!t.match(te)||"string"!=typeof e.body||!Se(e,Te))return null}const o=e.aliases||Object.create(null);for(const t in o){const e=o[t],r=e.parent;if(!t.match(te)||"string"!=typeof r||!n[r]&&!o[r]||!Se(e,Te))return null}return e}const We=Object.create(null);function Ut(t,e){return{provider:t,prefix:e,icons:Object.create(null),missing:new Set}}function R(t,e){const n=We[t]||(We[t]=Object.create(null));return n[e]||(n[e]=Ut(t,e))}function Le(t,e){return mt(e)?pt(e,((e,n)=>{n?t.icons[e]=n:t.missing.add(e)})):[]}function qt(t,e,n){try{if("string"==typeof n.body)return t.icons[e]={...n},!0}catch{}return!1}let ne=!1;function gt(t){return"boolean"==typeof t&&(ne=t),ne}function zt(t){const e="string"==typeof t?pe(t,!0,ne):t;if(e){const t=R(e.provider,e.prefix),n=e.name;return t.icons[n]||(t.missing.has(n)?null:void 0)}}function Ht(t,e){const n=pe(t,!0,ne);if(!n)return!1;return qt(R(n.provider,n.prefix),n.name,e)}function Qt(t,e){if("object"!=typeof t)return!1;if("string"!=typeof e&&(e=t.provider||""),ne&&!e&&!t.prefix){let e=!1;return mt(t)&&(t.prefix="",pt(t,((t,n)=>{n&&Ht(t,n)&&(e=!0)}))),e}const n=t.prefix;if(!ae({provider:e,prefix:n,name:"a"}))return!1;return!!Le(R(e,n),t)}const bt=Object.freeze({width:null,height:null}),yt=Object.freeze({...bt,...he}),Gt=/(-?[0-9.]*[0-9]+[0-9.]*)/g,Kt=/^-?[0-9.]*[0-9]+[0-9.]*$/g;function Xe(t,e,n){if(1===e)return t;if(n=n||100,"number"==typeof t)return Math.ceil(t*e*n)/n;if("string"!=typeof t)return t;const o=t.split(Gt);if(null===o||!o.length)return t;const r=[];let i=o.shift(),s=Kt.test(i);for(;;){if(s){const t=parseFloat(i);isNaN(t)?r.push(i):r.push(Math.ceil(t*e*n)/n)}else r.push(i);if(i=o.shift(),void 0===i)return r.join("");s=!s}}function Jt(t,e="defs"){let n="";const o=t.indexOf("<"+e);for(;o>=0;){const r=t.indexOf(">",o),i=t.indexOf("",i);if(-1===s)break;n+=t.slice(r+1,i).trim(),t=t.slice(0,o).trim()+t.slice(s+1)}return{defs:n,content:t}}function Wt(t,e){return t?""+t+""+e:e}function Xt(t,e,n){const o=Jt(t);return Wt(o.defs,e+o.content+n)}const Yt=t=>"unset"===t||"undefined"===t||"none"===t;function Zt(t,e){const n={...me,...t},o={...yt,...e},r={left:n.left,top:n.top,width:n.width,height:n.height};let i=n.body;[n,o].forEach((t=>{const e=[],n=t.hFlip,o=t.vFlip;let s,c=t.rotate;switch(n?o?c+=2:(e.push("translate("+(r.width+r.left).toString()+" "+(0-r.top).toString()+")"),e.push("scale(-1 1)"),r.top=r.left=0):o&&(e.push("translate("+(0-r.left).toString()+" "+(r.height+r.top).toString()+")"),e.push("scale(1 -1)"),r.top=r.left=0),c<0&&(c-=4*Math.floor(c/4)),c%=4,c){case 1:s=r.height/2+r.top,e.unshift("rotate(90 "+s.toString()+" "+s.toString()+")");break;case 2:e.unshift("rotate(180 "+(r.width/2+r.left).toString()+" "+(r.height/2+r.top).toString()+")");break;case 3:s=r.width/2+r.left,e.unshift("rotate(-90 "+s.toString()+" "+s.toString()+")")}c%2==1&&(r.left!==r.top&&(s=r.left,r.left=r.top,r.top=s),r.width!==r.height&&(s=r.width,r.width=r.height,r.height=s)),e.length&&(i=Xt(i,'',""))}));const s=o.width,c=o.height,a=r.width,l=r.height;let f,u;null===s?(u=null===c?"1em":"auto"===c?l:c,f=Xe(u,a/l)):(f="auto"===s?a:s,u=null===c?Xe(f,l/a):"auto"===c?l:c);const d={},p=(t,e)=>{Yt(e)||(d[t]=e.toString())};p("width",f),p("height",u);const h=[r.left,r.top,a,l];return d.viewBox=h.join(" "),{attributes:d,viewBox:h,body:i}}const en=/\sid="(\S+)"/g,tn="IconifyId"+Date.now().toString(16)+(16777216*Math.random()|0).toString(16);let nn=0;function on(t,e=tn){const n=[];let o;for(;o=en.exec(t);)n.push(o[1]);if(!n.length)return t;const r="suffix"+(16777216*Math.random()|Date.now()).toString(16);return n.forEach((n=>{const o="function"==typeof e?e(n):e+(nn++).toString(),i=n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");t=t.replace(new RegExp('([#;"])('+i+')([")]|\\.[a-z])',"g"),"$1"+o+r+"$3")})),t=t.replace(new RegExp(r,"g"),"")}const Ee=Object.create(null);function rn(t,e){Ee[t]=e}function Ce(t){return Ee[t]||Ee[""]}function De(t){let e;if("string"==typeof t.resources)e=[t.resources];else if(e=t.resources,!(e instanceof Array&&e.length))return null;return{resources:e,path:t.path||"/",maxURL:t.maxURL||500,rotate:t.rotate||750,timeout:t.timeout||5e3,random:!0===t.random,index:t.index||0,dataAfterTimeout:!1!==t.dataAfterTimeout}}const $e=Object.create(null),ee=["https://api.simplesvg.com","https://api.unisvg.com"],fe=[];for(;ee.length>0;)1===ee.length||Math.random()>.5?fe.push(ee.shift()):fe.push(ee.pop());function sn(t,e){const n=De(e);return null!==n&&($e[t]=n,!0)}function Fe(t){return $e[t]}$e[""]=De({resources:["https://api.iconify.design"].concat(fe)});const cn=()=>{let t;try{if(t=fetch,"function"==typeof t)return t}catch{}};let Ye=cn();function ln(t,e){const n=Fe(t);if(!n)return 0;let o;if(n.maxURL){let t=0;n.resources.forEach((e=>{t=Math.max(t,e.length)}));const r=e+".json?icons=";o=n.maxURL-t-n.path.length-r.length}else o=0;return o}function an(t){return 404===t}const fn=(t,e,n)=>{const o=[],r=ln(t,e),i="icons";let s={type:i,provider:t,prefix:e,icons:[]},c=0;return n.forEach(((n,a)=>{c+=n.length+1,c>=r&&a>0&&(o.push(s),s={type:i,provider:t,prefix:e,icons:[]},c=n.length),s.icons.push(n)})),o.push(s),o};function un(t){if("string"==typeof t){const e=Fe(t);if(e)return e.path}return"/"}const dn=(t,e,n)=>{if(!Ye)return void n("abort",424);let o=un(e.provider);switch(e.type){case"icons":{const t=e.prefix,n=e.icons.join(",");o+=t+".json?"+new URLSearchParams({icons:n}).toString();break}case"custom":{const t=e.uri;o+="/"===t.slice(0,1)?t.slice(1):t;break}default:return void n("abort",400)}let r=503;Ye(t+o).then((t=>{const e=t.status;if(200===e)return r=501,t.json();setTimeout((()=>{n(an(e)?"abort":"next",e)}))})).then((t=>{"object"==typeof t&&null!==t?setTimeout((()=>{n("success",t)})):setTimeout((()=>{404===t?n("abort",t):n("next",r)}))})).catch((()=>{n("next",r)}))},hn={prepare:fn,send:dn};function pn(t){const e={loaded:[],missing:[],pending:[]},n=Object.create(null);t.sort(((t,e)=>t.provider!==e.provider?t.provider.localeCompare(e.provider):t.prefix!==e.prefix?t.prefix.localeCompare(e.prefix):t.name.localeCompare(e.name)));let o={provider:"",prefix:"",name:""};return t.forEach((t=>{if(o.name===t.name&&o.prefix===t.prefix&&o.provider===t.provider)return;o=t;const r=t.provider,i=t.prefix,s=t.name,c=n[r]||(n[r]=Object.create(null)),a=c[i]||(c[i]=R(r,i));let l;l=s in a.icons?e.loaded:""===i||a.missing.has(s)?e.missing:e.pending;const f={provider:r,prefix:i,name:s};l.push(f)})),e}function wt(t,e){t.forEach((t=>{const n=t.loaderCallbacks;n&&(t.loaderCallbacks=n.filter((t=>t.id!==e)))}))}function mn(t){t.pendingCallbacksFlag||(t.pendingCallbacksFlag=!0,setTimeout((()=>{t.pendingCallbacksFlag=!1;const e=t.loaderCallbacks?t.loaderCallbacks.slice(0):[];if(!e.length)return;let n=!1;const o=t.provider,r=t.prefix;e.forEach((e=>{const i=e.icons,s=i.pending.length;i.pending=i.pending.filter((e=>{if(e.prefix!==r)return!0;const s=e.name;if(t.icons[s])i.loaded.push({provider:o,prefix:r,name:s});else{if(!t.missing.has(s))return n=!0,!0;i.missing.push({provider:o,prefix:r,name:s})}return!1})),i.pending.length!==s&&(n||wt([t],e.id),e.callback(i.loaded.slice(0),i.missing.slice(0),i.pending.slice(0),e.abort))}))})))}let gn=0;function bn(t,e,n){const o=gn++,r=wt.bind(null,n,o);if(!e.pending.length)return r;const i={id:o,icons:e,callback:t,abort:r};return n.forEach((t=>{(t.loaderCallbacks||(t.loaderCallbacks=[])).push(i)})),r}function yn(t,e=!0,n=!1){const o=[];return t.forEach((t=>{const r="string"==typeof t?pe(t,e,n):t;r&&o.push(r)})),o}var wn={resources:[],index:0,timeout:2e3,rotate:750,random:!1,dataAfterTimeout:!1};function vn(t,e,n,o){const r=t.resources.length,i=t.random?Math.floor(Math.random()*r):t.index;let s;if(t.random){let e=t.resources.slice(0);for(s=[];e.length>1;){const t=Math.floor(Math.random()*e.length);s.push(e[t]),e=e.slice(0,t).concat(e.slice(t+1))}s=s.concat(e)}else s=t.resources.slice(i).concat(t.resources.slice(0,i));const c=Date.now();let a,l="pending",f=0,u=null,d=[],p=[];function h(){u&&(clearTimeout(u),u=null)}function g(){"pending"===l&&(l="aborted"),h(),d.forEach((t=>{"pending"===t.status&&(t.status="aborted")})),d=[]}function m(t,e){e&&(p=[]),"function"==typeof t&&p.push(t)}function b(){l="failed",p.forEach((t=>{t(void 0,a)}))}function y(){d.forEach((t=>{"pending"===t.status&&(t.status="aborted")})),d=[]}function x(){if("pending"!==l)return;h();const o=s.shift();if(void 0===o)return d.length?void(u=setTimeout((()=>{h(),"pending"===l&&(y(),b())}),t.timeout)):void b();const r={status:"pending",resource:o,callback:(e,n)=>{!function(e,n,o){const r="success"!==n;switch(d=d.filter((t=>t!==e)),l){case"pending":break;case"failed":if(r||!t.dataAfterTimeout)return;break;default:return}if("abort"===n)return a=o,void b();if(r)return a=o,void(d.length||(s.length?x():b()));if(h(),y(),!t.random){const n=t.resources.indexOf(e.resource);-1!==n&&n!==t.index&&(t.index=n)}l="completed",p.forEach((t=>{t(o)}))}(r,e,n)}};d.push(r),f++,u=setTimeout(x,t.rotate),n(o,e,r.callback)}return"function"==typeof o&&p.push(o),setTimeout(x),function(){return{startTime:c,payload:e,status:l,queriesSent:f,queriesPending:d.length,subscribe:m,abort:g}}}function vt(t){const e={...wn,...t};let n=[];function o(){n=n.filter((t=>"pending"===t().status))}return{query:function(t,r,i){const s=vn(e,t,r,((t,e)=>{o(),i&&i(t,e)}));return n.push(s),s},find:function(t){return n.find((e=>t(e)))||null},setIndex:t=>{e.index=t},getIndex:()=>e.index,cleanup:o}}function Ze(){}const Ie=Object.create(null);function xn(t){if(!Ie[t]){const e=Fe(t);if(!e)return;const n={config:e,redundancy:vt(e)};Ie[t]=n}return Ie[t]}function _n(t,e,n){let o,r;if("string"==typeof t){const e=Ce(t);if(!e)return n(void 0,424),Ze;r=e.send;const i=xn(t);i&&(o=i.redundancy)}else{const e=De(t);if(e){o=vt(e);const n=Ce(t.resources?t.resources[0]:"");n&&(r=n.send)}}return o&&r?o.query(e,r,n)().abort:(n(void 0,424),Ze)}const et="iconify2",oe="iconify",xt=oe+"-count",tt=oe+"-version",_t=36e5,kn=168,Sn=50;function Oe(t,e){try{return t.getItem(e)}catch{}}function Ae(t,e,n){try{return t.setItem(e,n),!0}catch{}}function nt(t,e){try{t.removeItem(e)}catch{}}function je(t,e){return Ae(t,xt,e.toString())}function Pe(t){return parseInt(Oe(t,xt))||0}const ge={local:!0,session:!0},kt={local:new Set,session:new Set};let Ne=!1;function In(t){Ne=t}let le=typeof window>"u"?{}:window;function St(t){const e=t+"Storage";try{if(le&&le[e]&&"number"==typeof le[e].length)return le[e]}catch{}ge[t]=!1}function It(t,e){const n=St(t);if(!n)return;const o=Oe(n,tt);if(o!==et){if(o){const t=Pe(n);for(let e=0;e{const o=oe+t.toString(),i=Oe(n,o);if("string"==typeof i){try{const n=JSON.parse(i);if("object"==typeof n&&"number"==typeof n.cached&&n.cached>r&&"string"==typeof n.provider&&"object"==typeof n.data&&"string"==typeof n.data.prefix&&e(n,t))return!0}catch{}nt(n,o)}};let s=Pe(n);for(let e=s-1;e>=0;e--)i(e)||(e===s-1?(s--,je(n,s)):kt[t].add(e))}function Tt(){if(!Ne){In(!0);for(const t in ge)It(t,(t=>{const e=t.data,n=R(t.provider,e.prefix);if(!Le(n,e).length)return!1;const o=e.lastModified||-1;return n.lastModifiedCached=n.lastModifiedCached?Math.min(n.lastModifiedCached,o):o,!0}))}}function Tn(t,e){const n=t.lastModifiedCached;if(n&&n>=e)return n===e;if(t.lastModifiedCached=e,n)for(const n in ge)It(n,(n=>{const o=n.data;return n.provider!==t.provider||o.prefix!==t.prefix||o.lastModified===e}));return!0}function En(t,e){function n(n){let o;if(!ge[n]||!(o=St(n)))return;const r=kt[n];let i;if(r.size)r.delete(i=Array.from(r).shift());else if(i=Pe(o),i>=Sn||!je(o,i+1))return;const s={cached:Math.floor(Date.now()/_t),provider:t.provider,data:e};return Ae(o,oe+i.toString(),JSON.stringify(s))}Ne||Tt(),e.lastModified&&!Tn(t,e.lastModified)||Object.keys(e.icons).length&&(e.not_found&&delete(e=Object.assign({},e)).not_found,n("local")||n("session"))}function ot(){}function Cn(t){t.iconsLoaderFlag||(t.iconsLoaderFlag=!0,setTimeout((()=>{t.iconsLoaderFlag=!1,mn(t)})))}function On(t,e){t.iconsToLoad?t.iconsToLoad=t.iconsToLoad.concat(e).sort():t.iconsToLoad=e,t.iconsQueueFlag||(t.iconsQueueFlag=!0,setTimeout((()=>{t.iconsQueueFlag=!1;const{provider:e,prefix:n}=t,o=t.iconsToLoad;let r;delete t.iconsToLoad,o&&(r=Ce(e))&&r.prepare(e,n,o).forEach((n=>{_n(e,n,(e=>{if("object"!=typeof e)n.icons.forEach((e=>{t.missing.add(e)}));else try{const n=Le(t,e);if(!n.length)return;const o=t.pendingIcons;o&&n.forEach((t=>{o.delete(t)})),En(t,e)}catch(t){console.error(t)}Cn(t)}))}))})))}const jn=(t,e)=>{const n=pn(yn(t,!0,gt()));if(!n.pending.length){let t=!0;return e&&setTimeout((()=>{t&&e(n.loaded,n.missing,n.pending,ot)})),()=>{t=!1}}const o=Object.create(null),r=[];let i,s;return n.pending.forEach((t=>{const{provider:e,prefix:n}=t;if(n===s&&e===i)return;i=e,s=n,r.push(R(e,n));const c=o[e]||(o[e]=Object.create(null));c[n]||(c[n]=[])})),n.pending.forEach((t=>{const{provider:e,prefix:n,name:r}=t,i=R(e,n),s=i.pendingIcons||(i.pendingIcons=new Set);s.has(r)||(s.add(r),o[e][n].push(r))})),r.forEach((t=>{const{provider:e,prefix:n}=t;o[e][n].length&&On(t,o[e][n])})),e?bn(e,n,r):ot};function Pn(t,e){const n={...t};for(const t in e){const o=e[t],r=typeof o;t in bt?(null===o||o&&("string"===r||"number"===r))&&(n[t]=o):r===typeof n[t]&&(n[t]="rotate"===t?o%4:o)}return n}const Mn=/[\s,]+/;function Ln(t,e){e.split(Mn).forEach((e=>{switch(e.trim()){case"horizontal":t.hFlip=!0;break;case"vertical":t.vFlip=!0}}))}function Dn(t,e=0){const n=t.replace(/^-?[0-9.]*/,"");function o(t){for(;t<0;)t+=4;return t%4}if(""===n){const e=parseInt(t);return isNaN(e)?0:o(e)}if(n!==t){let e=0;switch(n){case"%":e=25;break;case"deg":e=90}if(e){let r=parseFloat(t.slice(0,t.length-n.length));return isNaN(r)?0:(r/=e,r%1==0?o(r):0)}}return e}function $n(t,e){let n=-1===t.indexOf("xlink:")?"":' xmlns:xlink="http://www.w3.org/1999/xlink"';for(const t in e)n+=" "+t+'="'+e[t]+'"';return'"+t+""}function Fn(t){return t.replace(/"/g,"'").replace(/%/g,"%25").replace(/#/g,"%23").replace(//g,"%3E").replace(/\s+/g," ")}function An(t){return"data:image/svg+xml,"+Fn(t)}function Nn(t){return'url("'+An(t)+'")'}const rt={...yt,inline:!1},Vn={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink","aria-hidden":!0,role:"img"},Bn={display:"inline-block"},Me={"background-color":"currentColor"},Et={"background-color":"transparent"},st={image:"var(--svg)",repeat:"no-repeat",size:"100% 100%"},it={"-webkit-mask":Me,mask:Me,background:Et};for(const t in it){const e=it[t];for(const n in st)e[t+"-"+n]=st[n]}function Rn(t){return t+(t.match(/^[-0-9.]+$/)?"px":"")}function Un(t,e){const n=Pn(rt,e),o=e.mode||"svg",r="svg"===o?{...Vn}:{};-1===t.body.indexOf("xlink:")&&delete r["xmlns:xlink"];let i="string"==typeof e.style?e.style:"";for(let t in e){const o=e[t];if(void 0!==o)switch(t){case"icon":case"style":case"onLoad":case"mode":break;case"inline":case"hFlip":case"vFlip":n[t]=!0===o||"true"===o||1===o;break;case"flip":"string"==typeof o&&Ln(n,o);break;case"color":i=i+(i.length>0&&";"!==i.trim().slice(-1)?";":"")+"color: "+o+"; ";break;case"rotate":"string"==typeof o?n[t]=Dn(o):"number"==typeof o&&(n[t]=o);break;case"ariaHidden":case"aria-hidden":!0!==o&&"true"!==o&&delete r["aria-hidden"];break;default:if("on:"===t.slice(0,3))break;void 0===rt[t]&&(r[t]=o)}}const s=Zt(t,n),c=s.attributes;if(n.inline&&(i="vertical-align: -0.125em; "+i),"svg"===o){Object.assign(r,c),""!==i&&(r.style=i);let t=0,n=e.id;return"string"==typeof n&&(n=n.replace(/-/g,"_")),{svg:!0,attributes:r,body:on(s.body,n?()=>n+"ID"+t++:"iconifySvelte")}}const{body:a,width:l,height:f}=t,u="mask"===o||"bg"!==o&&-1!==a.indexOf("currentColor"),d={"--svg":Nn($n(a,{...c,width:l+"",height:f+""}))},p=t=>{const e=c[t];e&&(d[t]=Rn(e))};p("width"),p("height"),Object.assign(d,Bn,u?Me:Et);let h="";for(const t in d)h+=t+": "+d[t]+";";return r.style=h+i,{svg:!1,attributes:r}}if(gt(!0),rn("",hn),typeof document<"u"&&typeof window<"u"){Tt();const t=window;if(void 0!==t.IconifyPreload){const e=t.IconifyPreload,n="Invalid IconifyPreload syntax.";"object"==typeof e&&null!==e&&(e instanceof Array?e:[e]).forEach((t=>{try{("object"!=typeof t||null===t||t instanceof Array||"object"!=typeof t.icons||"string"!=typeof t.prefix||!Qt(t))&&console.error(n)}catch{console.error(n)}}))}if(void 0!==t.IconifyProviders){const e=t.IconifyProviders;if("object"==typeof e&&null!==e)for(let t in e){const n="IconifyProviders["+t+"] is invalid.";try{const o=e[t];if("object"!=typeof o||!o||void 0===o.resources)continue;sn(t,o)||console.error(n)}catch{console.error(n)}}}}function qn(t,e,n,o,r){function i(){e.loading&&(e.loading.abort(),e.loading=null)}if("object"==typeof t&&null!==t&&"string"==typeof t.body)return e.name="",i(),{data:{...me,...t}};let s;if("string"!=typeof t||null===(s=pe(t,!1,!0)))return i(),null;const c=zt(s);if(!c)return n&&(!e.loading||e.loading.name!==t)&&(i(),e.name="",e.loading={name:t,abort:jn([s],o)}),null;i(),e.name!==t&&(e.name=t,r&&!e.destroyed&&r(t));const a=["iconify"];return""!==s.prefix&&a.push("iconify--"+s.prefix),""!==s.provider&&a.push("iconify--"+s.provider),{data:c,classes:a}}function zn(t,e){return t?Un({...me,...t},e):null}function ct(t){let e;function n(t,e){return t[0].svg?Qn:Hn}let o=n(t),r=o(t);return{c(){r.c(),e=ue()},l(t){r.l(t),e=ue()},m(t,n){r.m(t,n),re(t,e,n)},p(t,i){o===(o=n(t))&&r?r.p(t,i):(r.d(1),r=o(t),r&&(r.c(),r.m(e.parentNode,e)))},d(t){t&&S(e),r.d(t)}}}function Hn(t){let e,n=[t[0].attributes],o={};for(let t=0;t{"function"==typeof e.onLoad&&e.onLoad(t),Lt()("load",{icon:t})};function a(){n(3,s++,s)}return ut((()=>{n(2,i=!0)})),Ct((()=>{n(1,o.destroyed=!0,o),o.loading&&(o.loading.abort(),n(1,o.loading=null,o))})),t.$$set=t=>{n(6,e=de(de({},e),Qe(t)))},t.$$.update=()=>{{const t=qn(e.icon,o,i,a,c);n(0,r=t?zn(t.data,e):null),r&&t.classes&&n(0,r.attributes.class=("string"==typeof e.class?e.class+" ":"")+t.classes.join(" "),r)}},e=Qe(e),[r,o,i,s]}class X extends lt{constructor(t){super(),at(this,t,Kn,Gn,ft,{})}}function Jn(t){let e,n,o,r,i,s,c,a,l,f,u,d,p,h,g,m,b,y,v,w,k,$,E,T,F,C,D,R,P,_,U=ve(ke.lightMode)+"",q=ve(ke.darkMode)+"",V=ve(ke.systemMode)+"";return r=new X({props:{icon:"material-symbols:wb-sunny-outline-rounded",class:"text-[1.25rem]"}}),c=new X({props:{icon:"material-symbols:dark-mode-outline-rounded",class:"text-[1.25rem]"}}),f=new X({props:{icon:"material-symbols:radio-button-partial-outline",class:"text-[1.25rem]"}}),g=new X({props:{icon:"material-symbols:wb-sunny-outline-rounded",class:"text-[1.25rem] mr-3"}}),w=new X({props:{icon:"material-symbols:dark-mode-outline-rounded",class:"text-[1.25rem] mr-3"}}),F=new X({props:{icon:"material-symbols:radio-button-partial-outline",class:"text-[1.25rem] mr-3"}}),{c(){e=M("div"),n=M("button"),o=M("div"),z(r.$$.fragment),i=A(),s=M("div"),z(c.$$.fragment),a=A(),l=M("div"),z(f.$$.fragment),u=A(),d=M("div"),p=M("div"),h=M("button"),z(g.$$.fragment),m=A(),b=xe(U),y=A(),v=M("button"),z(w.$$.fragment),k=A(),$=xe(q),E=A(),T=M("button"),z(F.$$.fragment),C=A(),D=xe(V),this.h()},l(t){e=L(t,"DIV",{class:!0,role:!0,tabindex:!0});var x=j(e);n=L(x,"BUTTON",{"aria-label":!0,role:!0,class:!0,id:!0});var O=j(n);o=L(O,"DIV",{class:!0});var I=j(o);H(r.$$.fragment,I),I.forEach(S),i=N(O),s=L(O,"DIV",{class:!0});var M=j(s);H(c.$$.fragment,M),M.forEach(S),a=N(O),l=L(O,"DIV",{class:!0});var A=j(l);H(f.$$.fragment,A),A.forEach(S),O.forEach(S),u=N(x),d=L(x,"DIV",{id:!0,class:!0});var z=j(d);p=L(z,"DIV",{class:!0});var R=j(p);h=L(R,"BUTTON",{class:!0});var B=j(h);H(g.$$.fragment,B),m=N(B),b=_e(B,U),B.forEach(S),y=N(R),v=L(R,"BUTTON",{class:!0});var P=j(v);H(w.$$.fragment,P),k=N(P),$=_e(P,q),P.forEach(S),E=N(R),T=L(R,"BUTTON",{class:!0});var Q=j(T);H(F.$$.fragment,Q),C=N(Q),D=_e(Q,V),Q.forEach(S),R.forEach(S),z.forEach(S),x.forEach(S),this.h()},h(){I(o,"class","absolute"),O(o,"opacity-0",t[0]!==Y),I(s,"class","absolute"),O(s,"opacity-0",t[0]!==Z),I(l,"class","absolute"),O(l,"opacity-0",t[0]!==B),I(n,"aria-label","Light/Dark Mode"),I(n,"role","menuitem"),I(n,"class","relative btn-plain scale-animation rounded-lg h-11 w-11 active:scale-90"),I(n,"id","scheme-switch"),I(h,"class","flex transition whitespace-nowrap items-center justify-start w-full btn-plain scale-animation rounded-lg h-9 px-3 font-medium active:scale-95 mb-0.5"),O(h,"current-theme-btn",t[0]===Y),I(v,"class","flex transition whitespace-nowrap items-center justify-start w-full btn-plain scale-animation rounded-lg h-9 px-3 font-medium active:scale-95 mb-0.5"),O(v,"current-theme-btn",t[0]===Z),I(T,"class","flex transition whitespace-nowrap items-center justify-start w-full btn-plain scale-animation rounded-lg h-9 px-3 font-medium active:scale-95"),O(T,"current-theme-btn",t[0]===B),I(p,"class","card-base float-panel p-2"),I(d,"id","light-dark-panel"),I(d,"class","hidden lg:block absolute transition float-panel-closed top-11 -right-2 pt-5"),I(e,"class","relative z-50"),I(e,"role","menu"),I(e,"tabindex","-1")},m(j,O){re(j,e,O),x(e,n),x(n,o),Q(r,o,null),x(n,i),x(n,s),Q(c,s,null),x(n,a),x(n,l),Q(f,l,null),x(e,u),x(e,d),x(d,p),x(p,h),Q(g,h,null),x(h,m),x(h,b),x(p,y),x(p,v),Q(w,v,null),x(v,k),x(v,$),x(p,E),x(p,T),Q(F,T,null),x(T,C),x(T,D),R=!0,P||(_=[G(n,"click",t[2]),G(n,"mouseenter",Wn),G(h,"click",t[3]),G(v,"click",t[4]),G(T,"click",t[5]),G(e,"mouseleave",Xn)],P=!0)},p(t,[e]){(!R||1&e)&&O(o,"opacity-0",t[0]!==Y),(!R||1&e)&&O(s,"opacity-0",t[0]!==Z),(!R||1&e)&&O(l,"opacity-0",t[0]!==B),(!R||1&e)&&O(h,"current-theme-btn",t[0]===Y),(!R||1&e)&&O(v,"current-theme-btn",t[0]===Z),(!R||1&e)&&O(T,"current-theme-btn",t[0]===B)},i(t){R||(K(r.$$.fragment,t),K(c.$$.fragment,t),K(f.$$.fragment,t),K(g.$$.fragment,t),K(w.$$.fragment,t),K(F.$$.fragment,t),R=!0)},o(t){J(r.$$.fragment,t),J(c.$$.fragment,t),J(f.$$.fragment,t),J(g.$$.fragment,t),J(w.$$.fragment,t),J(F.$$.fragment,t),R=!1},d(t){t&&S(e),W(r),W(c),W(f),W(g),W(w),W(F),P=!1,Dt(_)}}}function Wn(){document.querySelector("#light-dark-panel").classList.remove("float-panel-closed")}function Xn(){document.querySelector("#light-dark-panel").classList.add("float-panel-closed")}function Yn(t,e,n){const o=[Y,Z,B];let r=B;function i(t){n(0,r=t),Ft(t)}return ut((()=>{n(0,r=$t());const t=window.matchMedia("(prefers-color-scheme: dark)"),e=t=>{At(r)};return t.addEventListener("change",e),()=>{t.removeEventListener("change",e)}})),[r,i,function(){let t=0;for(;ti(Y),()=>i(Z),()=>i(B)]}class no extends lt{constructor(t){super(),at(this,t,Yn,Jn,ft,{})}}export{no as default}; \ No newline at end of file diff --git a/_astro/Search.C_Tpva2X.js b/_astro/Search.C_Tpva2X.js new file mode 100644 index 0000000..dfc330e --- /dev/null +++ b/_astro/Search.C_Tpva2X.js @@ -0,0 +1 @@ +import{S as te,i as ae,s as le,c as j,e as S,b as H,d as B,f as U,h as N,j as I,k as p,a as se,n as q,o as E,p as F,q as M,u as z,r as K,v as O,x as P,B as ne,y as A,C as re,z as ie,D as oe,t as ce,H as ue,g as he,E as fe,w as _e,F as de}from"./translation.Cj0Okkzk.js";import{u as Y}from"./url-utils.Co0GbPFH.js";import{I as pe}from"./zh_TW.Cn8XYgkS.js";function G(e){return void 0!==e?.length?e:Array.from(e)}function J(e,t,a){const l=e.slice();return l[11]=t[a],l}const me=e=>({}),Q=e=>({}),ge=e=>({}),X=e=>({}),ve=e=>({}),Z=e=>({}),be=e=>({}),$=e=>({});function x(e){let t,a,l,s,r,n,i,c,o,h=e[11].meta.title+"",d=e[11].excerpt+"";const u=e[6]["arrow-icon"],f=j(u,e,e[5],Q);return{c(){t=S("a"),a=S("div"),l=ce(h),f&&f.c(),s=H(),r=S("div"),n=new ue(!1),i=H(),this.h()},l(e){t=B(e,"A",{href:!0,class:!0});var c=U(t);a=B(c,"DIV",{class:!0});var o=U(a);l=he(o,h),f&&f.l(o),o.forEach(I),s=N(c),r=B(c,"DIV",{class:!0});var d=U(r);n=fe(d,!1),d.forEach(I),i=N(c),c.forEach(I),this.h()},h(){p(a,"class","transition text-90 inline-flex font-bold group-hover:text-[var(--primary)]"),n.a=null,p(r,"class","transition text-sm text-50"),p(t,"href",c=e[11].url),p(t,"class","transition first-of-type:mt-2 lg:first-of-type:mt-0 group block rounded-xl text-lg px-3 py-2 hover:bg-[var(--btn-plain-bg-hover)] active:bg-[var(--btn-plain-bg-active)]")},m(e,c){q(e,t,c),E(t,a),E(a,l),f&&f.m(a,null),E(t,s),E(t,r),n.m(d,r),E(t,i),o=!0},p(e,a){(!o||8&a)&&h!==(h=e[11].meta.title+"")&&_e(l,h),f&&f.p&&(!o||32&a)&&z(f,u,e,e[5],o?O(u,e[5],a,me):K(e[5]),Q),(!o||8&a)&&d!==(d=e[11].excerpt+"")&&n.p(d),(!o||8&a&&c!==(c=e[11].url))&&p(t,"href",c)},i(e){o||(P(f,e),o=!0)},o(e){A(f,e),o=!1},d(e){e&&I(t),f&&f.d(e)}}}function we(e){let t,a,l,s,r,n,i,c,o,h,d,u,f,g;const b=e[6]["search-icon"],m=j(b,e,e[5],$),v=e[6]["search-switch"],w=j(v,e,e[5],Z),k=e[6]["search-icon"],y=j(k,e,e[5],X);let T=G(e[3]),D=[];for(let t=0;tA(D[e],1,1,(()=>{D[e]=null}));return{c(){t=S("div"),m&&m.c(),a=H(),l=S("input"),s=H(),r=S("button"),w&&w.c(),n=H(),i=S("div"),c=S("div"),y&&y.c(),o=H(),h=S("input"),d=H();for(let e=0;e{};oe((()=>{a(2,c=async(e,t)=>{let l=document.getElementById("search-panel");if(!l)return;if(!e&&t)return void l.classList.add("float-panel-closed");let s=[];{const t=await pagefind.search(e);for(const e of t.results)s.push(await e.data())}s.length||!t?(t&&l.classList.remove("float-panel-closed"),a(3,i=s)):l.classList.add("float-panel-closed")})}));return e.$$set=e=>{"$$scope"in e&&a(5,s=e.$$scope)},e.$$.update=()=>{5&e.$$.dirty&&c(r,!0),6&e.$$.dirty&&c(n,!1)},[r,n,c,i,()=>{document.getElementById("search-panel")?.classList.toggle("float-panel-closed")},s,l,function(){r=this.value,a(0,r)},()=>c(r,!0),function(){n=this.value,a(1,n)}]}class Te extends te{constructor(e){super(),ae(this,e,ke,we,le,{})}}export{Te as default}; \ No newline at end of file diff --git a/_astro/Swup.ytUFgklH.js b/_astro/Swup.ytUFgklH.js new file mode 100644 index 0000000..296c35c --- /dev/null +++ b/_astro/Swup.ytUFgklH.js @@ -0,0 +1 @@ +const $=new WeakMap;function x(t,e,i,s){if(!t&&!$.has(e))return!1;const n=$.get(e)??new WeakMap;$.set(e,n);const o=n.get(i)??new Set;n.set(i,o);const a=o.has(s);return t?o.add(s):o.delete(s),a&&t}function N(t,e){let i=t.target;if(i instanceof Text&&(i=i.parentElement),i instanceof Element&&t.currentTarget instanceof Element){const s=i.closest(e);if(s&&t.currentTarget.contains(s))return s}}function D(t,e,i,s={}){const{signal:n,base:o=document}=s;if(n?.aborted)return;const{once:a,...r}=s,l=o instanceof Document?o.documentElement:o,c=!!("object"==typeof s?s.capture:s),h=s=>{const n=N(s,String(t));if(n){const t=Object.assign(s,{delegateTarget:n});i.call(l,t),a&&(l.removeEventListener(e,h,r),x(!1,l,i,u))}},u=JSON.stringify({selector:t,type:e,capture:c});x(!0,l,i,u)||l.addEventListener(e,h,r),n?.addEventListener("abort",(()=>{x(!1,l,i,u)}))}function p(){return p=Object.assign?Object.assign.bind():function(t){for(var e=1;eString(t).toLowerCase().replace(/[\s/_.]+/g,"-").replace(/[^\w-]+/g,"").replace(/--+/g,"-").replace(/^-+|-+$/g,"")||e||"",b=({hash:t}={})=>window.location.pathname+window.location.search+(t?window.location.hash:""),W=(t,e={})=>{const i=p({url:t=t||b({hash:!0}),random:Math.random(),source:"swup"},e);window.history.pushState(i,"",t)},k=(t=null,e={})=>{t=t||b({hash:!0});const i=p({},window.history.state||{},{url:t,random:Math.random(),source:"swup"},e);window.history.replaceState(i,"",t)},j=(t,e,i,s)=>{const n=new AbortController;return D(t,e,i,s=p({},s,{signal:n.signal})),{destroy:()=>n.abort()}};let w=class t extends URL{constructor(e,i=document.baseURI){super(e.toString(),i),Object.setPrototypeOf(this,t.prototype)}get url(){return this.pathname+this.search}static fromElement(e){const i=e.getAttribute("href")||e.getAttribute("xlink:href")||"";return new t(i)}static fromUrl(e){return new t(e)}};class E extends Error{constructor(t,e){super(t),this.url=void 0,this.status=void 0,this.aborted=void 0,this.timedOut=void 0,this.name="FetchError",this.url=e.url,this.status=e.status,this.aborted=e.aborted||!1,this.timedOut=e.timedOut||!1}}async function B(t,e={}){var i;t=w.fromUrl(t).url;const{visit:s=this.visit}=e,n=p({},this.options.requestHeaders,e.headers),o=null!=(i=e.timeout)?i:this.options.timeout,a=new AbortController,{signal:r}=a;e=p({},e,{headers:n,signal:r});let l,c=!1,h=null;o&&o>0&&(h=setTimeout((()=>{c=!0,a.abort("timeout")}),o));try{l=await this.hooks.call("fetch:request",s,{url:t,options:e},((t,{url:e,options:i})=>fetch(e,i))),h&&clearTimeout(h)}catch(e){throw c?(this.hooks.call("fetch:timeout",s,{url:t}),new E(`Request timed out: ${t}`,{url:t,timedOut:c})):"AbortError"===e?.name||r.aborted?new E(`Request aborted: ${t}`,{url:t,aborted:!0}):e}const{status:u,url:d}=l,m=await l.text();if(500===u)throw this.hooks.call("fetch:error",s,{status:u,response:l,url:d}),new E(`Server error: ${d}`,{status:u,url:d});if(!m)throw new E(`Empty response: ${d}`,{status:u,url:d});const{url:f}=w.fromUrl(d),g={url:f,html:m};return!s.cache.write||e.method&&"GET"!==e.method||t!==f||this.cache.set(g.url,g),g}class _{constructor(t){this.swup=void 0,this.pages=new Map,this.swup=t}get size(){return this.pages.size}get all(){const t=new Map;return this.pages.forEach(((e,i)=>{t.set(i,p({},e))})),t}has(t){return this.pages.has(this.resolve(t))}get(t){const e=this.pages.get(this.resolve(t));return e&&p({},e)}set(t,e){e=p({},e,{url:t=this.resolve(t)}),this.pages.set(t,e),this.swup.hooks.callSync("cache:set",void 0,{page:e})}update(t,e){t=this.resolve(t);const i=p({},this.get(t),e,{url:t});this.pages.set(t,i)}delete(t){this.pages.delete(this.resolve(t))}clear(){this.pages.clear(),this.swup.hooks.callSync("cache:clear",void 0,void 0)}prune(t){this.pages.forEach(((e,i)=>{t(i,e)&&this.delete(i)}))}resolve(t){const{url:e}=w.fromUrl(t);return this.swup.resolveUrl(e)}}const L=(t,e=document)=>e.querySelector(t),H=(t,e=document)=>Array.from(e.querySelectorAll(t)),q=()=>new Promise((t=>{requestAnimationFrame((()=>{requestAnimationFrame((()=>{t()}))}))}));function M(t){return!!t&&("object"==typeof t||"function"==typeof t)&&"function"==typeof t.then}function F(t,e=[]){return new Promise(((i,s)=>{const n=t(...e);M(n)?n.then(i,s):i(n)}))}function T(t,e){const i=t?.closest(`[${e}]`);return null!=i&&i.hasAttribute(e)?i?.getAttribute(e)||!0:void 0}class z{constructor(t){this.swup=void 0,this.swupClasses=["to-","is-changing","is-rendering","is-popstate","is-animating","is-leaving"],this.swup=t}get selectors(){const{scope:t}=this.swup.visit.animation;return"containers"===t?this.swup.visit.containers:"html"===t?["html"]:Array.isArray(t)?t:[]}get selector(){return this.selectors.join(",")}get targets(){return this.selector.trim()?H(this.selector):[]}add(...t){this.targets.forEach((e=>e.classList.add(...t)))}remove(...t){this.targets.forEach((e=>e.classList.remove(...t)))}clear(){this.targets.forEach((t=>{const e=t.className.split(" ").filter((t=>this.isSwupClass(t)));t.classList.remove(...e)}))}isSwupClass(t){return this.swupClasses.some((e=>t.startsWith(e)))}}class R{constructor(t,e){this.id=void 0,this.state=void 0,this.from=void 0,this.to=void 0,this.containers=void 0,this.animation=void 0,this.trigger=void 0,this.cache=void 0,this.history=void 0,this.scroll=void 0;const{to:i,from:s,hash:n,el:o,event:a}=e;this.id=Math.random(),this.state=1,this.from={url:s??t.location.url,hash:t.location.hash},this.to={url:i,hash:n},this.containers=t.options.containers,this.animation={animate:!0,wait:!1,name:void 0,native:t.options.native,scope:t.options.animationScope,selector:t.options.animationSelector},this.trigger={el:o,event:a},this.cache={read:t.options.cache,write:t.options.cache},this.history={action:"push",popstate:!1,direction:void 0},this.scroll={reset:!0,target:void 0}}advance(t){this.state=7}}function K(t){return new R(this,t)}class G{constructor(t){this.swup=void 0,this.registry=new Map,this.hooks=["animation:out:start","animation:out:await","animation:out:end","animation:in:start","animation:in:await","animation:in:end","animation:skip","cache:clear","cache:set","content:replace","content:scroll","enable","disable","fetch:request","fetch:error","fetch:timeout","history:popstate","link:click","link:self","link:anchor","link:newtab","page:load","page:view","scroll:top","scroll:anchor","visit:start","visit:transition","visit:abort","visit:end"],this.swup=t,this.init()}init(){this.hooks.forEach((t=>this.create(t)))}create(t){this.registry.has(t)||this.registry.set(t,new Map)}exists(t){return this.registry.has(t)}get(t){const e=this.registry.get(t);if(e)return e;console.error(`Unknown hook '${t}'`)}clear(){this.registry.forEach((t=>t.clear()))}on(t,e,i={}){const s=this.get(t);if(!s)return console.warn(`Hook '${t}' not found.`),()=>{};const n=p({},i,{id:s.size+1,hook:t,handler:e});return s.set(e,n),()=>this.off(t,e)}before(t,e,i={}){return this.on(t,e,p({},i,{before:!0}))}replace(t,e,i={}){return this.on(t,e,p({},i,{replace:!0}))}once(t,e,i={}){return this.on(t,e,p({},i,{once:!0}))}off(t,e){const i=this.get(t);i&&e?i.delete(e)||console.warn(`Handler for hook '${t}' not found.`):i&&i.clear()}async call(t,e,i,s){const[n,o,a]=this.parseCallArgs(t,e,i,s),{before:r,handler:l,after:c}=this.getHandlers(t,a);await this.run(r,n,o);const[h]=await this.run(l,n,o,!0);return await this.run(c,n,o),this.dispatchDomEvent(t,n,o),h}callSync(t,e,i,s){const[n,o,a]=this.parseCallArgs(t,e,i,s),{before:r,handler:l,after:c}=this.getHandlers(t,a);this.runSync(r,n,o);const[h]=this.runSync(l,n,o,!0);return this.runSync(c,n,o),this.dispatchDomEvent(t,n,o),h}parseCallArgs(t,e,i,s){return e instanceof R||"object"!=typeof e&&"function"!=typeof i?[e,i,s]:[void 0,e,i]}async run(t,e=this.swup.visit,i,s=!1){const n=[];for(const{hook:o,handler:a,defaultHandler:r,once:l}of t)if(null==e||!e.done){l&&this.off(o,a);try{const t=await F(a,[e,i,r]);n.push(t)}catch(t){if(s)throw t;console.error(`Error in hook '${o}':`,t)}}return n}runSync(t,e=this.swup.visit,i,s=!1){const n=[];for(const{hook:o,handler:a,defaultHandler:r,once:l}of t)if(null==e||!e.done){l&&this.off(o,a);try{const t=a(e,i,r);n.push(t),M(t)&&console.warn(`Swup will not await Promises in handler for synchronous hook '${o}'.`)}catch(t){if(s)throw t;console.error(`Error in hook '${o}':`,t)}}return n}getHandlers(t,e){const i=this.get(t);if(!i)return{found:!1,before:[],handler:[],after:[],replaced:!1};const s=Array.from(i.values()),n=this.sortRegistrations,o=s.filter((({before:t,replace:e})=>t&&!e)).sort(n),a=s.filter((({replace:t})=>t)).filter((t=>!0)).sort(n),r=s.filter((({before:t,replace:e})=>!t&&!e)).sort(n),l=a.length>0;let c=[];if(e&&(c=[{id:0,hook:t,handler:e}],l)){const i=a.length-1,s=t=>{const i=a[t-1];return i?(e,n)=>i.handler(e,n,s(t-1)):e};c=[{id:0,hook:t,handler:a[i].handler,defaultHandler:s(i)}]}return{found:!0,before:o,handler:c,after:r,replaced:l}}sortRegistrations(t,e){var i,s;return(null!=(i=t.priority)?i:0)-(null!=(s=e.priority)?s:0)||t.id-e.id||0}dispatchDomEvent(t,e,i){if(null!=e&&e.done)return;const s={hook:t,args:i,visit:e||this.swup.visit};document.dispatchEvent(new CustomEvent("swup:any",{detail:s,bubbles:!0})),document.dispatchEvent(new CustomEvent(`swup:${t}`,{detail:s,bubbles:!0}))}}const J=t=>{if(t&&"#"===t.charAt(0)&&(t=t.substring(1)),!t)return null;const e=decodeURIComponent(t);let i=document.getElementById(t)||document.getElementById(e)||L(`a[name='${CSS.escape(t)}']`)||L(`a[name='${CSS.escape(e)}']`);return i||"top"!==t||(i=document.body),i},C="transition",A="animation";async function X({selector:t,elements:e}){if(!1===t&&!e)return;let i=[];if(e)i=Array.from(e);else if(t&&(i=H(t,document.body),!i.length))return void console.warn(`[swup] No elements found matching animationSelector \`${t}\``);const s=i.map((t=>function(t){const{type:e,timeout:i,propCount:s}=function(t){const e=window.getComputedStyle(t),i=U(e,`${C}Delay`),s=U(e,`${C}Duration`),n=O(i,s),o=U(e,`${A}Delay`),a=U(e,`${A}Duration`),r=O(o,a),l=Math.max(n,r),c=l>0?n>r?C:A:null;return{type:c,timeout:l,propCount:c?c===C?s.length:a.length:0}}(t);return!(!e||!i)&&new Promise((n=>{const o=`${e}end`,a=performance.now();let r=0;const l=()=>{t.removeEventListener(o,c),n()},c=e=>{e.target===t&&((performance.now()-a)/1e3=s&&l())};setTimeout((()=>{r0?await Promise.all(s):t&&console.warn(`[swup] No CSS animation duration defined on elements matching \`${t}\``)}function U(t,e){return(t[e]||"").split(", ")}function O(t,e){for(;t.lengthV(e)+V(t[i]))))}function V(t){return 1e3*parseFloat(t)}function Q(t,e={},i={}){if("string"!=typeof t)throw new Error("swup.navigate() requires a URL parameter");if(this.shouldIgnoreVisit(t,{el:i.el,event:i.event}))return void window.location.assign(t);const{url:s,hash:n}=w.fromUrl(t),o=this.createVisit(p({},i,{to:s,hash:n}));this.performNavigation(o,e)}async function Y(t,e={}){if(this.navigating){if(this.visit.state>=6)return t.state=2,void(this.onVisitEnd=()=>this.performNavigation(t,e));await this.hooks.call("visit:abort",this.visit,void 0),delete this.visit.to.document,this.visit.state=8}this.navigating=!0,this.visit=t;const{el:i}=t.trigger;e.referrer=e.referrer||this.location.url,!1===e.animate&&(t.animation.animate=!1),t.animation.animate||this.classes.clear();const s=e.history||T(i,"data-swup-history");"string"==typeof s&&["push","replace"].includes(s)&&(t.history.action=s);const n=e.animation||T(i,"data-swup-animation");var o,a;"string"==typeof n&&(t.animation.name=n),"object"==typeof e.cache?(t.cache.read=null!=(o=e.cache.read)?o:t.cache.read,t.cache.write=null!=(a=e.cache.write)?a:t.cache.write):void 0!==e.cache&&(t.cache={read:!!e.cache,write:!!e.cache}),delete e.cache;try{await this.hooks.call("visit:start",t,void 0),t.state=3;const i=this.hooks.call("page:load",t,{options:e},(async(t,e)=>{let i;return t.cache.read&&(i=this.cache.get(t.to.url)),e.page=i||await this.fetchPage(t.to.url,e.options),e.cache=!!i,e.page}));i.then((({html:e})=>{t.advance(5),t.to.html=e,t.to.document=(new DOMParser).parseFromString(e,"text/html")}));const s=t.to.url+t.to.hash;if(t.history.popstate||("replace"===t.history.action||t.to.url===this.location.url?k(s):(this.currentHistoryIndex++,W(s,{index:this.currentHistoryIndex}))),this.location=w.fromUrl(s),t.history.popstate&&this.classes.add("is-popstate"),t.animation.name&&this.classes.add(`to-${I(t.animation.name)}`),t.animation.wait&&await i,t.done||(await this.hooks.call("visit:transition",t,void 0,(async()=>{if(!t.animation.animate)return await this.hooks.call("animation:skip",void 0),void await this.renderPage(t,await i);t.advance(4),await this.animatePageOut(t),t.animation.native&&document.startViewTransition?await document.startViewTransition((async()=>await this.renderPage(t,await i))).finished:await this.renderPage(t,await i),await this.animatePageIn(t)})),t.done))return;await this.hooks.call("visit:end",t,void 0,(()=>this.classes.clear())),t.state=7,this.navigating=!1,this.onVisitEnd&&(this.onVisitEnd(),this.onVisitEnd=void 0)}catch(e){if(!e||null!=e&&e.aborted)return void(t.state=8);t.state=9,console.error(e),this.options.skipPopStateHandling=()=>(window.location.assign(t.to.url+t.to.hash),!0),window.history.back()}finally{delete t.to.document}}const Z=async function(t){await this.hooks.call("animation:out:start",t,void 0,(()=>{this.classes.add("is-changing","is-animating","is-leaving")})),await this.hooks.call("animation:out:await",t,{skip:!1},((t,{skip:e})=>{if(!e)return this.awaitAnimations({selector:t.animation.selector})})),await this.hooks.call("animation:out:end",t,void 0)},tt=function(t){var e;const i=t.to.document;if(!i)return!1;const s=(null==(e=i.querySelector("title"))?void 0:e.innerText)||"";document.title=s;const n=H('[data-swup-persist]:not([data-swup-persist=""])'),o=t.containers.map((t=>{const e=document.querySelector(t),s=i.querySelector(t);return e&&s?(e.replaceWith(s.cloneNode(!0)),!0):(e||console.warn(`[swup] Container missing in current document: ${t}`),s||console.warn(`[swup] Container missing in incoming document: ${t}`),!1)})).filter(Boolean);return n.forEach((t=>{const e=t.getAttribute("data-swup-persist"),i=L(`[data-swup-persist="${e}"]`);i&&i!==t&&i.replaceWith(t)})),o.length===t.containers.length},et=function(t){const e={behavior:"auto"},{target:i,reset:s}=t.scroll,n=i??t.to.hash;let o=!1;return n&&(o=this.hooks.callSync("scroll:anchor",t,{hash:n,options:e},((t,{hash:e,options:i})=>{const s=this.getAnchorElement(e);return s&&s.scrollIntoView(i),!!s}))),s&&!o&&(o=this.hooks.callSync("scroll:top",t,{options:e},((t,{options:e})=>(window.scrollTo(p({top:0,left:0},e)),!0)))),o},it=async function(t){if(t.done)return;const e=this.hooks.call("animation:in:await",t,{skip:!1},((t,{skip:e})=>{if(!e)return this.awaitAnimations({selector:t.animation.selector})}));await q(),await this.hooks.call("animation:in:start",t,void 0,(()=>{this.classes.remove("is-animating")})),await e,await this.hooks.call("animation:in:end",t,void 0)},st=async function(t,e){if(t.done)return;t.advance(6);const{url:i}=e;this.isSameResolvedUrl(b(),i)||(k(i),this.location=w.fromUrl(i),t.to.url=this.location.url,t.to.hash=this.location.hash),await this.hooks.call("content:replace",t,{page:e},((t,{})=>{if(this.classes.remove("is-leaving"),t.animation.animate&&this.classes.add("is-rendering"),!this.replaceContent(t))throw new Error("[swup] Container mismatch, aborting");t.animation.animate&&(this.classes.add("is-changing","is-animating","is-rendering"),t.animation.name&&this.classes.add(`to-${I(t.animation.name)}`))})),await this.hooks.call("content:scroll",t,void 0,(()=>this.scrollToContent(t))),await this.hooks.call("page:view",t,{url:this.location.url,title:document.title})},nt=function(t){var e;if(e=t,e?.isSwupPlugin){if(t.swup=this,!t._checkRequirements||t._checkRequirements())return t._beforeMount&&t._beforeMount(),t.mount(),this.plugins.push(t),this.plugins}else console.error("Not a swup plugin instance",t)};function ot(t){const e=this.findPlugin(t);if(e)return e.unmount(),e._afterUnmount&&e._afterUnmount(),this.plugins=this.plugins.filter((t=>t!==e)),this.plugins;console.error("No such plugin",e)}function rt(t){return this.plugins.find((e=>e===t||e.name===t||e.name===`Swup${String(t)}`))}function at(t){if("function"!=typeof this.options.resolveUrl)return console.warn("[swup] options.resolveUrl expects a callback function."),t;const e=this.options.resolveUrl(t);return e&&"string"==typeof e?e.startsWith("//")||e.startsWith("http")?(console.warn("[swup] options.resolveUrl needs to return a relative url"),t):e:(console.warn("[swup] options.resolveUrl needs to return a url"),t)}function lt(t,e){return this.resolveUrl(t)===this.resolveUrl(e)}const ht={animateHistoryBrowsing:!1,animationSelector:'[class*="transition-"]',animationScope:"html",cache:!0,containers:["#swup"],ignoreVisit:(t,{el:e}={})=>!(null==e||!e.closest("[data-no-swup]")),linkSelector:"a[href]",linkToSelf:"scroll",native:!1,plugins:[],resolveUrl:t=>t,requestHeaders:{"X-Requested-With":"swup",Accept:"text/html, application/xhtml+xml"},skipPopStateHandling:t=>{var e;return"swup"!==(null==(e=t.state)?void 0:e.source)},timeout:0};class ct{get currentPageUrl(){return this.location.url}constructor(t={}){var e,i;this.version="4.7.0",this.options=void 0,this.defaults=ht,this.plugins=[],this.visit=void 0,this.cache=void 0,this.hooks=void 0,this.classes=void 0,this.location=w.fromUrl(window.location.href),this.currentHistoryIndex=void 0,this.clickDelegate=void 0,this.navigating=!1,this.onVisitEnd=void 0,this.use=nt,this.unuse=ot,this.findPlugin=rt,this.log=()=>{},this.navigate=Q,this.performNavigation=Y,this.createVisit=K,this.delegateEvent=j,this.fetchPage=B,this.awaitAnimations=X,this.renderPage=st,this.replaceContent=tt,this.animatePageIn=it,this.animatePageOut=Z,this.scrollToContent=et,this.getAnchorElement=J,this.getCurrentUrl=b,this.resolveUrl=at,this.isSameResolvedUrl=lt,this.options=p({},this.defaults,t),this.handleLinkClick=this.handleLinkClick.bind(this),this.handlePopState=this.handlePopState.bind(this),this.cache=new _(this),this.classes=new z(this),this.hooks=new G(this),this.visit=this.createVisit({to:""}),this.currentHistoryIndex=null!=(e=null==(i=window.history.state)?void 0:i.index)?e:1,this.enable()}async enable(){var t;const{linkSelector:e}=this.options;this.clickDelegate=this.delegateEvent(e,"click",this.handleLinkClick),window.addEventListener("popstate",this.handlePopState),this.options.animateHistoryBrowsing&&(window.history.scrollRestoration="manual"),this.options.native=this.options.native&&!!document.startViewTransition,this.options.plugins.forEach((t=>this.use(t))),"swup"!==(null==(t=window.history.state)?void 0:t.source)&&k(null,{index:this.currentHistoryIndex}),await q(),await this.hooks.call("enable",void 0,void 0,(()=>{const t=document.documentElement;t.classList.add("swup-enabled"),t.classList.toggle("swup-native",this.options.native)}))}async destroy(){this.clickDelegate.destroy(),window.removeEventListener("popstate",this.handlePopState),this.cache.clear(),this.options.plugins.forEach((t=>this.unuse(t))),await this.hooks.call("disable",void 0,void 0,(()=>{const t=document.documentElement;t.classList.remove("swup-enabled"),t.classList.remove("swup-native")})),this.hooks.clear()}shouldIgnoreVisit(t,{el:e,event:i}={}){const{origin:s,url:n,hash:o}=w.fromUrl(t);return s!==window.location.origin||!(!e||!this.triggerWillOpenNewWindow(e))||!!this.options.ignoreVisit(n+o,{el:e,event:i})}handleLinkClick(t){const e=t.delegateTarget,{href:i,url:s,hash:n}=w.fromElement(e);if(this.shouldIgnoreVisit(i,{el:e,event:t}))return;if(this.navigating&&s===this.visit.to.url)return void t.preventDefault();const o=this.createVisit({to:s,hash:n,el:e,event:t});t.metaKey||t.ctrlKey||t.shiftKey||t.altKey?this.hooks.callSync("link:newtab",o,{href:i}):0===t.button&&this.hooks.callSync("link:click",o,{el:e,event:t},(()=>{var e;const i=null!=(e=o.from.url)?e:"";t.preventDefault(),s&&s!==i?this.isSameResolvedUrl(s,i)||this.performNavigation(o):n?this.hooks.callSync("link:anchor",o,{hash:n},(()=>{k(s+n),this.scrollToContent(o)})):this.hooks.callSync("link:self",o,void 0,(()=>{"navigate"===this.options.linkToSelf?this.performNavigation(o):(k(s),this.scrollToContent(o))}))}))}handlePopState(t){var e,i,s,n;const o=null!=(e=null==(i=t.state)?void 0:i.url)?e:window.location.href;if(this.options.skipPopStateHandling(t)||this.isSameResolvedUrl(b(),this.location.url))return;const{url:a,hash:r}=w.fromUrl(o),l=this.createVisit({to:a,hash:r,event:t});l.history.popstate=!0;const c=null!=(s=null==(n=t.state)?void 0:n.index)?s:0;c&&c!==this.currentHistoryIndex&&(l.history.direction=c-this.currentHistoryIndex>0?"forwards":"backwards",this.currentHistoryIndex=c),l.animation.animate=!1,l.scroll.reset=!1,l.scroll.target=!1,this.options.animateHistoryBrowsing&&(l.animation.animate=!0,l.scroll.reset=!0),this.hooks.callSync("history:popstate",l,{event:t},(()=>{this.performNavigation(l)}))}triggerWillOpenNewWindow(t){return!!t.matches('[download], [target="_blank"]')}}const ut=Object.freeze(Object.defineProperty({__proto__:null,default:ct},Symbol.toStringTag,{value:"Module"}));export{ut as S,w as l,H as m,b as n,q as w}; \ No newline at end of file diff --git a/_astro/SwupA11yPlugin.CbqqmqBu.js b/_astro/SwupA11yPlugin.CbqqmqBu.js new file mode 100644 index 0000000..c9e2f52 --- /dev/null +++ b/_astro/SwupA11yPlugin.CbqqmqBu.js @@ -0,0 +1 @@ +import{l as f,w as m}from"./Swup.ytUFgklH.js";import{e as v}from"./index.modern.CkIAsQri.js";function g(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var d={exports:{}};!function(t){!function(){function e(t){for(var e in t=t||{},this.settings={level:"polite",parent:"body",idPrefix:"live-region-",delay:0},t)t.hasOwnProperty(e)&&(this.settings[e]=t[e]);this.settings.parent=document.querySelector(this.settings.parent)}e.prototype.say=function(t,e){var n=this.settings.parent.querySelector('[id^="'+this.settings.idPrefix+'"]')||!1;n&&this.settings.parent.removeChild(n),e=e||this.settings.delay,this.currentRegion=document.createElement("span"),this.currentRegion.id=this.settings.idPrefix+Math.floor(1e4*Math.random());var i="assertive"!==this.settings.level?"status":"alert";return this.currentRegion.setAttribute("aria-live",this.settings.level),this.currentRegion.setAttribute("role",i),this.currentRegion.setAttribute("style","clip: rect(1px, 1px, 1px, 1px); height: 1px; overflow: hidden; position: absolute; white-space: nowrap; width: 1px"),this.settings.parent.appendChild(this.currentRegion),window.setTimeout(function(){this.currentRegion.textContent=t}.bind(this),e),this},t.exports=e}()}(d);var y=d.exports;const b=g(y);function l(){return l=Object.assign?Object.assign.bind():function(t){for(var e=1;e"u"||typeof document>"u"||typeof HTMLElement>"u")){var t=!1;try{var e=document.createElement("div");e.addEventListener("focus",(function(t){t.preventDefault(),t.stopPropagation()}),!0),e.focus(Object.defineProperty({},"preventScroll",{get:function(){if(navigator&&typeof navigator.userAgent<"u"&&navigator.userAgent&&navigator.userAgent.match(/Edge\/1[7-8]/))return t=!1;t=!0}}))}catch{}if(void 0===HTMLElement.prototype.nativeFocus&&!t){HTMLElement.prototype.nativeFocus=HTMLElement.prototype.focus;var n=function(t){for(var e=0;e=4"},this.defaults={contentSelector:"main",headingSelector:"h1, h2, [role=heading]",respectReducedMotion:!1,autofocus:!1,announcements:{visit:"Navigated to: {title}",url:"New page at {url}"}},this.options=void 0,this.liveRegion=void 0,this.announce=t=>{this.liveRegion.say(t)},t.announcements=l({},this.defaults.announcements,{visit:null!=(e=t.announcementTemplate)?e:String(this.defaults.announcements.visit),url:null!=(n=t.urlTemplate)?n:String(this.defaults.announcements.url)},t.announcements),this.options=l({},this.defaults,t),this.liveRegion=new b}mount(){this.swup.hooks.create("content:announce"),this.swup.hooks.create("content:focus"),this.before("visit:start",this.prepareVisit),this.on("visit:start",this.markAsBusy),this.on("visit:end",this.unmarkAsBusy),this.on("content:replace",this.prepareAnnouncement),this.on("content:replace",this.handleNewPageContent),this.options.respectReducedMotion&&(this.before("visit:start",this.disableTransitionAnimations),this.before("visit:start",this.disableScrollAnimations),this.before("link:self",this.disableScrollAnimations),this.before("link:anchor",this.disableScrollAnimations)),this.swup.announce=this.announce}unmount(){this.swup.announce=void 0}markAsBusy(){document.documentElement.setAttribute("aria-busy","true")}unmarkAsBusy(){document.documentElement.removeAttribute("aria-busy")}prepareVisit(t){t.a11y={announce:void 0,focus:this.options.contentSelector}}prepareAnnouncement(t){if(void 0!==t.a11y.announce)return;const{contentSelector:e,headingSelector:n,announcements:i}=this.options,{href:o,url:s,pathname:r}=f.fromUrl(window.location.href),a=i[document.documentElement.lang||"*"]||i["*"]||i;if("object"!=typeof a)return;const u=document.querySelector(`${e} ${n}`);let c=u?.getAttribute("aria-label")||u?.textContent;c=c||document.title||this.parseTemplate(a.url,{href:o,url:s,path:r});const l=this.parseTemplate(a.visit,{title:c,href:o,url:s,path:r});t.a11y.announce=l}parseTemplate(t,e){return Object.keys(e).reduce(((t,n)=>t.replace(`{${n}}`,e[n]||"")),t||"")}handleNewPageContent(){var t=this;m().then((async function(){t.swup.hooks.call("content:announce",void 0,void 0,(e=>{t.announcePageName(e)})),t.swup.hooks.call("content:focus",void 0,void 0,(e=>{t.focusPageContent(e)}))}))}announcePageName(t){t.a11y.announce&&this.liveRegion.say(t.a11y.announce)}async focusPageContent(t){if(!t.a11y.focus)return;if(this.options.autofocus){const e=this.getAutofocusElement();if(e&&e!==document.activeElement)return void this.swup.hooks.once("visit:end",(n=>{n.id===t.id&&e.focus()}))}const e=document.querySelector(t.a11y.focus);e instanceof HTMLElement&&(this.needsTabindex(e)&&e.setAttribute("tabindex","-1"),e.focus({preventScroll:!0}))}getAutofocusElement(){const t=document.querySelector("body [autofocus]");if(t&&!t.closest('inert, [aria-disabled], [aria-hidden="true"]'))return t}disableTransitionAnimations(t){t.animation.animate=t.animation.animate&&this.shouldAnimate()}disableScrollAnimations(t){t.scroll.animate=t.scroll.animate&&this.shouldAnimate()}shouldAnimate(){return!window.matchMedia("(prefers-reduced-motion: reduce)").matches}needsTabindex(t){return!t.matches("a, button, input, textarea, select, details, [tabindex]")}}export{T as default}; \ No newline at end of file diff --git a/_astro/SwupHeadPlugin.FjGODCox.js b/_astro/SwupHeadPlugin.FjGODCox.js new file mode 100644 index 0000000..39c0d82 --- /dev/null +++ b/_astro/SwupHeadPlugin.FjGODCox.js @@ -0,0 +1 @@ +import{e as E}from"./index.modern.CkIAsQri.js";function y(){return y=Object.assign?Object.assign.bind():function(e){for(var t=1;t=4.6"},this.defaults={persistTags:!1,persistAssets:!1,awaitAssets:!1,timeout:3e3},this.options=void 0,this.updateHead=async function(e,{page:{}}){const s=e.to.document,{removed:n,added:r}=function(e,t,{shouldPersist:s=()=>!1}={}){const n=Array.from(e.children),r=Array.from(t.children),o=(i=n,r.reduce(((e,t,s)=>(i.some((e=>b(t,e)))||e.push({el:t,index:s}),e)),[]));var i;const a=(l=r,n.reduce(((e,t)=>(l.some((e=>b(t,e)))||e.push({el:t}),e)),[]));var l;return a.reverse().filter((({el:e})=>A(e))).filter((({el:e})=>!s(e))).forEach((({el:t})=>e.removeChild(t))),o.filter((({el:e})=>A(e))).forEach((({el:t,index:s=0})=>{e.insertBefore(t.cloneNode(!0),e.children[s+1]||null)})),{removed:a.map((({el:e})=>e)),added:o.map((({el:e})=>e))}}(document.head,s.head,{shouldPersist:e=>t.isPersistentTag(e)});t.swup.log(`Removed ${n.length} / added ${r.length} tags in head`);const o=(i=document.documentElement).lang!==(a=s.documentElement).lang?(i.lang=a.lang,i.lang):null;var i,a;if(o&&t.swup.log(`Updated lang attribute: ${o}`),t.options.awaitAssets){const e=function(e,t=0){return e.filter(O).map((e=>function(e,t=0){const s=t=>{(({href:e})=>Array.from(document.styleSheets).map((({href:e})=>e)).includes(e))(e)?t():setTimeout((()=>s(t)),10)};return new Promise((e=>{s(e),t>0&&setTimeout(e,t)}))}(e,t)))}(r,t.options.timeout);e.length&&(t.swup.log(`Waiting for ${e.length} assets to load`),await Promise.all(e))}},this.options=y({},this.defaults,e),this.options.persistAssets&&!this.options.persistTags&&(this.options.persistTags="link[rel=stylesheet], script[src], style")}mount(){this.before("content:replace",this.updateHead)}isPersistentTag(e){const{persistTags:t}=this.options;return"function"==typeof t?t(e):"string"==typeof t?e.matches(t):!!t}}export{j as default}; \ No newline at end of file diff --git a/_astro/SwupPreloadPlugin.CIXicyY9.js b/_astro/SwupPreloadPlugin.CIXicyY9.js new file mode 100644 index 0000000..3b18035 --- /dev/null +++ b/_astro/SwupPreloadPlugin.CIXicyY9.js @@ -0,0 +1 @@ +import{e as V}from"./index.modern.CkIAsQri.js";import{l as c,n as P}from"./Swup.ytUFgklH.js";function k(){return k=Object.assign?Object.assign.bind():function(e){for(var t=1;tsetTimeout(e,1)),O=["preloadVisibleLinks"];class A extends V{constructor(e={}){var t;super(),t=this,this.name="SwupPreloadPlugin",this.requires={swup:">=4.5"},this.defaults={throttle:5,preloadInitialPage:!0,preloadHoveredLinks:!0,preloadVisibleLinks:{enabled:!1,threshold:.2,delay:500,containers:["body"],ignore:()=>!1}},this.options=void 0,this.queue=void 0,this.preloadObserver=void 0,this.preloadPromises=new Map,this.mouseEnterDelegate=void 0,this.touchStartDelegate=void 0,this.focusDelegate=void 0,this.onPageLoad=(e,t,s)=>{const{url:r}=e.to;return r&&this.preloadPromises.has(r)?this.preloadPromises.get(r):s(e,t)},this.onMouseEnter=async function(e){if(e.target!==e.delegateTarget||!L())return;const s=e.delegateTarget;if(!b(s))return;const{url:r,hash:o}=c.fromElement(s),i=t.swup.createVisit({to:r,hash:o,el:s,event:e});t.swup.hooks.callSync("link:hover",i,{el:s,event:e}),t.preload(s,{priority:!0})},this.onTouchStart=e=>{if(L())return;const t=e.delegateTarget;b(t)&&this.preload(t,{priority:!0})},this.onFocus=e=>{const t=e.delegateTarget;b(t)&&this.preload(t,{priority:!0})};const{preloadVisibleLinks:s}=e,r=function(e,t){if(null==e)return{};var s,r,o={},i=Object.keys(e);for(r=0;r=0||(o[s]=e[s]);return o}(e,O);this.options=k({},this.defaults,r),"object"==typeof s?this.options.preloadVisibleLinks=k({},this.options.preloadVisibleLinks,{enabled:!0},s):this.options.preloadVisibleLinks.enabled=!!s,this.preload=this.preload.bind(this),this.queue=function(e=1){const t=[],s=[];let r=0,o=0;function i(){o0&&((s.shift()||t.shift()||(()=>{}))(),r--,o++)}return{add:function(e,o=!1){if(e.__queued){if(!o)return;{const s=t.indexOf(e);if(s>=0){const e=t.splice(s,1);r-=e.length}}}e.__queued=!0,(o?s:t).push(e),r++,r<=1&&i()},next:function(){o--,i()}}}(this.options.throttle)}mount(){const e=this.swup;e.options.cache?(e.hooks.create("page:preload"),e.hooks.create("link:hover"),e.preload=this.preload,e.preloadLinks=this.preloadLinks,this.replace("page:load",this.onPageLoad),this.preloadLinks(),this.on("page:view",(()=>this.preloadLinks())),this.options.preloadVisibleLinks.enabled&&(this.preloadVisibleLinks(),this.on("page:view",(()=>this.preloadVisibleLinks()))),this.options.preloadHoveredLinks&&this.preloadLinksOnAttention(),this.options.preloadInitialPage&&this.preload(P())):console.warn("SwupPreloadPlugin: swup cache needs to be enabled for preloading")}unmount(){var e,t,s;this.swup.preload=void 0,this.swup.preloadLinks=void 0,this.preloadPromises.clear(),null==(e=this.mouseEnterDelegate)||e.destroy(),null==(t=this.touchStartDelegate)||t.destroy(),null==(s=this.focusDelegate)||s.destroy(),this.stopPreloadingVisibleLinks()}async preload(e,t={}){var s;let r,o;const i=null!=(s=t.priority)&&s;if(Array.isArray(e))return Promise.all(e.map((e=>this.preload(e))));if(b(e))o=e,({href:r}=c.fromElement(e));else{if("string"!=typeof e)return;r=e}if(!r)return;if(this.preloadPromises.has(r))return this.preloadPromises.get(r);if(!this.shouldPreload(r,{el:o}))return;const n=new Promise((e=>{this.queue.add((()=>{this.performPreload(r).catch((()=>{})).then((t=>e(t))).finally((()=>{this.queue.next(),this.preloadPromises.delete(r)}))}),i)}));return this.preloadPromises.set(r,n),n}preloadLinks(){E((()=>{Array.from(document.querySelectorAll("a[data-swup-preload], [data-swup-preload-all] a")).forEach((e=>this.preload(e)))}))}preloadLinksOnAttention(){const{swup:e}=this,{linkSelector:t}=e.options,s={passive:!0,capture:!0};this.mouseEnterDelegate=e.delegateEvent(t,"mouseenter",this.onMouseEnter,s),this.touchStartDelegate=e.delegateEvent(t,"touchstart",this.onTouchStart,s),this.focusDelegate=e.delegateEvent(t,"focus",this.onFocus,s)}preloadVisibleLinks(){if(this.preloadObserver)return void this.preloadObserver.update();const{threshold:e,delay:t,containers:s}=this.options.preloadVisibleLinks;this.preloadObserver=function({threshold:e,delay:t,containers:s,callback:r,filter:o}){const i=new Map,n=new IntersectionObserver((e=>{e.forEach((e=>{e.isIntersecting?a(e.target):l(e.target)}))}),{threshold:e}),a=e=>{var s;const{href:o}=c.fromElement(e),a=null!=(s=i.get(o))?s:new Set;i.set(o,a),a.add(e),setTimeout((()=>{const t=i.get(o);null!=t&&t.size&&(r(e),n.unobserve(e),t.delete(e))}),t)},l=e=>{var t;const{href:s}=c.fromElement(e);null==(t=i.get(s))||t.delete(e)},h=()=>{E((()=>{const e=s.map((e=>`${e} a[*|href]`)).join(", ");Array.from(document.querySelectorAll(e)).filter((e=>o(e))).forEach((e=>n.observe(e)))}))};return{start:()=>h(),stop:()=>n.disconnect(),update:()=>(i.clear(),h())}}({threshold:e,delay:t,containers:s,callback:e=>this.preload(e),filter:e=>{if(this.options.preloadVisibleLinks.ignore(e)||!e.matches(this.swup.options.linkSelector))return!1;const{href:t}=c.fromElement(e);return this.shouldPreload(t,{el:e})}}),this.preloadObserver.start()}stopPreloadingVisibleLinks(){this.preloadObserver&&this.preloadObserver.stop()}shouldPreload(e,{el:t}={}){const{url:s,href:r}=c.fromUrl(e);return!(!function(){var e;if(navigator.connection&&(navigator.connection.saveData||null!=(e=navigator.connection.effectiveType)&&e.endsWith("2g")))return!1;return!0}()||this.swup.cache.has(s)||this.preloadPromises.has(s)||this.swup.shouldIgnoreVisit(r,{el:t})||t&&this.swup.resolveUrl(s)===this.swup.resolveUrl(P()))}async performPreload(e){var t=this;const{url:s}=c.fromUrl(e),r=this.swup.createVisit({to:s});return await this.swup.hooks.call("page:preload",r,{url:s},(async function(s,r){return r.page=await t.swup.fetchPage(e,{visit:s}),r.page}))}}export{A as default}; \ No newline at end of file diff --git a/_astro/SwupScriptsPlugin.o5PkFIdr.js b/_astro/SwupScriptsPlugin.o5PkFIdr.js new file mode 100644 index 0000000..33f4c87 --- /dev/null +++ b/_astro/SwupScriptsPlugin.o5PkFIdr.js @@ -0,0 +1 @@ +import{e as u}from"./index.modern.CkIAsQri.js";function o(){return o=Object.assign?Object.assign.bind():function(t){for(var e=1;e=4"},this.defaults={head:!0,body:!0,optin:!1},this.options=void 0,this.options=o({},this.defaults,t)}mount(){this.on("content:replace",this.runScripts)}runScripts(){const{head:t,body:e,optin:r}=this.options,o=this.getScope({head:t,body:e});if(!o)return;const s=Array.from(o.querySelectorAll(r?"script[data-swup-reload-script]":"script:not([data-swup-ignore-script])"));s.forEach((t=>this.runScript(t))),this.swup.log(`Executed ${s.length} scripts.`)}runScript(t){const e=document.createElement("script");for(const{name:r,value:o}of t.attributes)e.setAttribute(r,o);return e.textContent=t.textContent,t.replaceWith(e),e}getScope({head:t,body:e}){return t&&e?document:t?document.head:e?document.body:null}}export{p as default}; \ No newline at end of file diff --git a/_astro/SwupScrollPlugin.DbO9qDqe.js b/_astro/SwupScrollPlugin.DbO9qDqe.js new file mode 100644 index 0000000..f544e82 --- /dev/null +++ b/_astro/SwupScrollPlugin.DbO9qDqe.js @@ -0,0 +1 @@ +import{e as u}from"./index.modern.CkIAsQri.js";import{m as p}from"./Swup.ytUFgklH.js";function a(){return a=Object.assign?Object.assign.bind():function(t){for(var o=1;o{if(t&&t.nodeType)this._targetPositionY=Math.round(t.getBoundingClientRect().top+window.pageYOffset);else{if(parseInt(this._targetPositionY)!==this._targetPositionY)return void console.error("Argument must be a number or an element.");this._targetPositionY=Math.round(t)}this._targetPositionY>document.documentElement.scrollHeight-window.innerHeight&&(this._targetPositionY=document.documentElement.scrollHeight-window.innerHeight),this._positionY=document.body.scrollTop||document.documentElement.scrollTop,this._direction=this._positionY>this._targetPositionY?-1:1,this._targetPositionYWithOffset=this._targetPositionY+this._direction,this._velocityY=0,this._positionY!==this._targetPositionY?(this.options.onStart(),this._animate()):this.options.onAlreadyAtPositions()},this._animate=()=>{this._update(),this._render(),1===this._direction&&this._targetPositionY>this._positionY||-1===this._direction&&this._targetPositionY{const t=this._targetPositionYWithOffset-this._positionY;return this._velocityY+=t*this.options.acceleration,this._velocityY*=this.options.friction,this._positionY+=this._velocityY,Math.abs(t)},this._render=()=>{window.scrollTo(0,this._positionY)},this.options=a({},{onAlreadyAtPositions:()=>{},onCancel:()=>{},onEnd:()=>{},onStart:()=>{},onTick:()=>{},friction:.7,acceleration:.04},t),t&&t.friction&&(this.options.friction=1-t.friction),window.addEventListener("mousewheel",(t=>{this._raf&&(this.options.onCancel(),cancelAnimationFrame(this._raf),this._raf=null)}),{passive:!0})}}function c(){return c=Object.assign?Object.assign.bind():function(t){for(var o=1;o=4.2.0"},this.scrl=void 0,this.defaults={doScrollingRightAway:!1,animateScroll:{betweenPages:!0,samePageWithHash:!0,samePage:!0},scrollFriction:.3,scrollAcceleration:.04,getAnchorElement:void 0,offset:0,scrollContainers:"[data-swup-scroll-container]",shouldResetScrollPosition:()=>!0,markScrollTarget:!1},this.options=void 0,this.cachedScrollPositions={},this.previousScrollRestoration=void 0,this.currentCacheKey=void 0,this.getAnchorElement=(t="")=>"function"==typeof this.options.getAnchorElement?this.options.getAnchorElement(t):this.swup.getAnchorElement(t),this.getOffset=t=>t?"function"==typeof this.options.offset?parseInt(String(this.options.offset(t)),10):parseInt(String(this.options.offset),10):0,this.onBeforeLinkToSelf=t=>{t.scroll.animate=this.shouldAnimate("samePage")},this.handleScrollToTop=t=>{var o,i;return null==(o=(i=this.swup).scrollTo)||o.call(i,0,t.scroll.animate),!0},this.onBeforeLinkToAnchor=t=>{t.scroll.animate=this.shouldAnimate("samePageWithHash")},this.handleScrollToAnchor=(t,{hash:o})=>this.maybeScrollToAnchor(o,t.scroll.animate),this.onBeforeVisitStart=t=>{t.scroll.scrolledToContent=!1,t.scroll.animate=this.shouldAnimate("betweenPages")},this.onVisitStart=t=>{var o;this.cacheScrollPositions(t.from.url),this.maybeResetScrollPositions(t);const i=null!=(o=t.scroll.target)?o:t.to.hash;t.scroll.animate&&this.options.doScrollingRightAway&&!i&&this.doScrollingBetweenPages(t)},this.handleScrollToContent=t=>{t.scroll.scrolledToContent||this.doScrollingBetweenPages(t),this.restoreScrollContainers(t.to.url)},this.doScrollingBetweenPages=t=>{var o,i;if(t.history.popstate&&!t.animation.animate)return;const s=null!=(o=t.scroll.target)?o:t.to.hash;if(s&&this.maybeScrollToAnchor(s,t.scroll.animate)||!t.scroll.reset)return;const e=this.getCachedScrollPositions(t.to.url),n=(null==e||null==(i=e.window)?void 0:i.top)||0;requestAnimationFrame((()=>{var o,i;return null==(o=(i=this.swup).scrollTo)?void 0:o.call(i,n,t.scroll.animate)})),t.scroll.scrolledToContent=!0},this.maybeResetScrollPositions=t=>{const{popstate:o}=t.history,{url:i}=t.to,{el:s}=t.trigger;o||s&&!this.options.shouldResetScrollPosition(s)||this.resetScrollPositions(i)},this.options=c({},this.defaults,t)}mount(){const t=this.swup;t.hooks.create("scroll:start"),t.hooks.create("scroll:end");const o=this.swup.createVisit({to:this.swup.currentPageUrl});this.scrl=new g({onStart:()=>t.hooks.callSync("scroll:start",o,void 0),onEnd:()=>t.hooks.callSync("scroll:end",o,void 0),onCancel:()=>t.hooks.callSync("scroll:end",o,void 0),friction:this.options.scrollFriction,acceleration:this.options.scrollAcceleration}),t.scrollTo=(i,s=!0)=>{s?this.scrl.scrollTo(i):(t.hooks.callSync("scroll:start",o,void 0),window.scrollTo(0,i),t.hooks.callSync("scroll:end",o,void 0))},this.previousScrollRestoration=window.history.scrollRestoration,t.options.animateHistoryBrowsing&&(window.history.scrollRestoration="manual"),this.updateScrollTarget=this.updateScrollTarget.bind(this),this.options.markScrollTarget&&(window.addEventListener("popstate",this.updateScrollTarget),window.addEventListener("hashchange",this.updateScrollTarget),this.on("page:view",this.updateScrollTarget),this.on("link:anchor",this.updateScrollTarget),this.on("link:self",this.updateScrollTarget),this.updateScrollTarget()),this.before("visit:start",this.onBeforeVisitStart,{priority:-1}),this.on("visit:start",this.onVisitStart,{priority:1}),this.replace("content:scroll",this.handleScrollToContent),this.before("link:self",this.onBeforeLinkToSelf,{priority:-1}),this.replace("scroll:top",this.handleScrollToTop),this.before("link:anchor",this.onBeforeLinkToAnchor,{priority:-1}),this.replace("scroll:anchor",this.handleScrollToAnchor)}unmount(){super.unmount(),this.previousScrollRestoration&&(window.history.scrollRestoration=this.previousScrollRestoration),window.removeEventListener("popstate",this.updateScrollTarget),window.removeEventListener("hashchange",this.updateScrollTarget),this.cachedScrollPositions={},delete this.swup.scrollTo,delete this.scrl}shouldAnimate(t){return"boolean"==typeof this.options.animateScroll?this.options.animateScroll:this.options.animateScroll[t]}maybeScrollToAnchor(t,o=!1){var i,s;if(!t)return!1;const e=this.getAnchorElement(t);if(!e)return console.warn(`Anchor target ${t} not found`),!1;if(!(e instanceof Element))return console.warn(`Anchor target ${t} is not a DOM node`),!1;const{top:n}=e.getBoundingClientRect(),r=n+window.scrollY-this.getOffset(e);return null==(i=(s=this.swup).scrollTo)||i.call(s,r,o),!0}cacheScrollPositions(t){const o=this.swup.resolveUrl(t),i=p(this.options.scrollContainers).map((t=>({top:t.scrollTop,left:t.scrollLeft}))),s={window:{top:window.scrollY,left:window.scrollX},containers:i};this.cachedScrollPositions[o]=s}resetScrollPositions(t){const o=this.swup.resolveUrl(t);delete this.cachedScrollPositions[o]}getCachedScrollPositions(t){const o=this.swup.resolveUrl(t);return this.cachedScrollPositions[o]}restoreScrollContainers(t){const o=this.getCachedScrollPositions(t);o&&0!==o.containers.length&&p(this.options.scrollContainers).forEach(((t,i)=>{const s=o.containers[i];null!=s&&(t.scrollTop=s.top,t.scrollLeft=s.left)}))}updateScrollTarget(){var t;const{hash:o}=window.location,i=document.querySelector("[data-swup-scroll-target]");let s=this.getAnchorElement(o);s instanceof HTMLBodyElement&&(s=null),i!==s&&(i?.removeAttribute("data-swup-scroll-target"),null==(t=s)||t.setAttribute("data-swup-scroll-target",""))}}export{S as default}; \ No newline at end of file diff --git a/_astro/_category_.BKswP8cm.css b/_astro/_category_.BKswP8cm.css new file mode 100644 index 0000000..5d5d78c --- /dev/null +++ b/_astro/_category_.BKswP8cm.css @@ -0,0 +1 @@ +.container[data-astro-cid-up4uz3l3]{width:100%}@media (min-width: 640px){.container[data-astro-cid-up4uz3l3]{max-width:640px}}@media (min-width: 768px){.container[data-astro-cid-up4uz3l3]{max-width:768px}}@media (min-width: 1024px){.container[data-astro-cid-up4uz3l3]{max-width:1024px}}@media (min-width: 1280px){.container[data-astro-cid-up4uz3l3]{max-width:1280px}}@media (min-width: 1536px){.container[data-astro-cid-up4uz3l3]{max-width:1536px}}.prose[data-astro-cid-up4uz3l3]{color:var(--tw-prose-body);max-width:65ch}.prose[data-astro-cid-up4uz3l3] :where(p):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{margin-top:1.25em;margin-bottom:1.25em}.prose[data-astro-cid-up4uz3l3] :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose[data-astro-cid-up4uz3l3] :where(a):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.prose[data-astro-cid-up4uz3l3] :where(strong):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{color:var(--tw-prose-bold);font-weight:600}.prose[data-astro-cid-up4uz3l3] :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{color:inherit}.prose[data-astro-cid-up4uz3l3] :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{color:inherit}.prose[data-astro-cid-up4uz3l3] :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{color:inherit}.prose[data-astro-cid-up4uz3l3] :where(ol):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose[data-astro-cid-up4uz3l3] :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{list-style-type:upper-alpha}.prose[data-astro-cid-up4uz3l3] :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{list-style-type:lower-alpha}.prose[data-astro-cid-up4uz3l3] :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{list-style-type:upper-alpha}.prose[data-astro-cid-up4uz3l3] :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{list-style-type:lower-alpha}.prose[data-astro-cid-up4uz3l3] :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{list-style-type:upper-roman}.prose[data-astro-cid-up4uz3l3] :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{list-style-type:lower-roman}.prose[data-astro-cid-up4uz3l3] :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{list-style-type:upper-roman}.prose[data-astro-cid-up4uz3l3] :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{list-style-type:lower-roman}.prose[data-astro-cid-up4uz3l3] :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{list-style-type:decimal}.prose[data-astro-cid-up4uz3l3] :where(ul):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose[data-astro-cid-up4uz3l3] :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker [data-astro-cid-up4uz3l3]{font-weight:400;color:var(--tw-prose-counters)}.prose[data-astro-cid-up4uz3l3] :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker [data-astro-cid-up4uz3l3]{color:var(--tw-prose-bullets)}.prose[data-astro-cid-up4uz3l3] :where(dt):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose[data-astro-cid-up4uz3l3] :where(hr):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose[data-astro-cid-up4uz3l3] :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"“""”""‘""’";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em}.prose[data-astro-cid-up4uz3l3] :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before [data-astro-cid-up4uz3l3]{content:open-quote}.prose[data-astro-cid-up4uz3l3] :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after [data-astro-cid-up4uz3l3]{content:close-quote}.prose[data-astro-cid-up4uz3l3] :where(h1):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose[data-astro-cid-up4uz3l3] :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{font-weight:900;color:inherit}.prose[data-astro-cid-up4uz3l3] :where(h2):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose[data-astro-cid-up4uz3l3] :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{font-weight:800;color:inherit}.prose[data-astro-cid-up4uz3l3] :where(h3):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose[data-astro-cid-up4uz3l3] :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{font-weight:700;color:inherit}.prose[data-astro-cid-up4uz3l3] :where(h4):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose[data-astro-cid-up4uz3l3] :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{font-weight:700;color:inherit}.prose[data-astro-cid-up4uz3l3] :where(img):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{margin-top:2em;margin-bottom:2em}.prose[data-astro-cid-up4uz3l3] :where(picture):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{display:block;margin-top:2em;margin-bottom:2em}.prose[data-astro-cid-up4uz3l3] :where(video):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{margin-top:2em;margin-bottom:2em}.prose[data-astro-cid-up4uz3l3] :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{font-weight:500;font-family:inherit;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px rgb(var(--tw-prose-kbd-shadows) / 10%),0 3px rgb(var(--tw-prose-kbd-shadows) / 10%);font-size:.875em;border-radius:.3125rem;padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;padding-inline-start:.375em}.prose[data-astro-cid-up4uz3l3] :where(code):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose[data-astro-cid-up4uz3l3] :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before [data-astro-cid-up4uz3l3]{content:"`"}.prose[data-astro-cid-up4uz3l3] :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after [data-astro-cid-up4uz3l3]{content:"`"}.prose[data-astro-cid-up4uz3l3] :where(a code):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{color:inherit}.prose[data-astro-cid-up4uz3l3] :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{color:inherit}.prose[data-astro-cid-up4uz3l3] :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{color:inherit;font-size:.875em}.prose[data-astro-cid-up4uz3l3] :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{color:inherit;font-size:.9em}.prose[data-astro-cid-up4uz3l3] :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{color:inherit}.prose[data-astro-cid-up4uz3l3] :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{color:inherit}.prose[data-astro-cid-up4uz3l3] :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{color:inherit}.prose[data-astro-cid-up4uz3l3] :where(pre):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding-top:.8571429em;padding-inline-end:1.1428571em;padding-bottom:.8571429em;padding-inline-start:1.1428571em}.prose[data-astro-cid-up4uz3l3] :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose[data-astro-cid-up4uz3l3] :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before [data-astro-cid-up4uz3l3]{content:none}.prose[data-astro-cid-up4uz3l3] :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after [data-astro-cid-up4uz3l3]{content:none}.prose[data-astro-cid-up4uz3l3] :where(table):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{width:100%;table-layout:auto;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose[data-astro-cid-up4uz3l3] :where(thead):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose[data-astro-cid-up4uz3l3] :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose[data-astro-cid-up4uz3l3] :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose[data-astro-cid-up4uz3l3] :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{border-bottom-width:0}.prose[data-astro-cid-up4uz3l3] :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{vertical-align:baseline}.prose[data-astro-cid-up4uz3l3] :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose[data-astro-cid-up4uz3l3] :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{vertical-align:top}.prose[data-astro-cid-up4uz3l3] :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{text-align:start}.prose[data-astro-cid-up4uz3l3] :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{margin-top:0;margin-bottom:0}.prose[data-astro-cid-up4uz3l3] :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose[data-astro-cid-up4uz3l3]{--tw-prose-body: #374151;--tw-prose-headings: #111827;--tw-prose-lead: #4b5563;--tw-prose-links: #111827;--tw-prose-bold: #111827;--tw-prose-counters: #6b7280;--tw-prose-bullets: #d1d5db;--tw-prose-hr: #e5e7eb;--tw-prose-quotes: #111827;--tw-prose-quote-borders: #e5e7eb;--tw-prose-captions: #6b7280;--tw-prose-kbd: #111827;--tw-prose-kbd-shadows: 17 24 39;--tw-prose-code: #111827;--tw-prose-pre-code: #e5e7eb;--tw-prose-pre-bg: #1f2937;--tw-prose-th-borders: #d1d5db;--tw-prose-td-borders: #e5e7eb;--tw-prose-invert-body: #d1d5db;--tw-prose-invert-headings: #fff;--tw-prose-invert-lead: #9ca3af;--tw-prose-invert-links: #fff;--tw-prose-invert-bold: #fff;--tw-prose-invert-counters: #9ca3af;--tw-prose-invert-bullets: #4b5563;--tw-prose-invert-hr: #374151;--tw-prose-invert-quotes: #f3f4f6;--tw-prose-invert-quote-borders: #374151;--tw-prose-invert-captions: #9ca3af;--tw-prose-invert-kbd: #fff;--tw-prose-invert-kbd-shadows: 255 255 255;--tw-prose-invert-code: #fff;--tw-prose-invert-pre-code: #d1d5db;--tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);--tw-prose-invert-th-borders: #4b5563;--tw-prose-invert-td-borders: #374151;font-size:1rem;line-height:1.75}.prose[data-astro-cid-up4uz3l3] :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{margin-top:0;margin-bottom:0}.prose[data-astro-cid-up4uz3l3] :where(li):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{margin-top:.5em;margin-bottom:.5em}.prose[data-astro-cid-up4uz3l3] :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{padding-inline-start:.375em}.prose[data-astro-cid-up4uz3l3] :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{padding-inline-start:.375em}.prose[data-astro-cid-up4uz3l3] :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{margin-top:.75em;margin-bottom:.75em}.prose[data-astro-cid-up4uz3l3] :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{margin-top:1.25em}.prose[data-astro-cid-up4uz3l3] :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{margin-bottom:1.25em}.prose[data-astro-cid-up4uz3l3] :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{margin-top:1.25em}.prose[data-astro-cid-up4uz3l3] :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{margin-bottom:1.25em}.prose[data-astro-cid-up4uz3l3] :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{margin-top:.75em;margin-bottom:.75em}.prose[data-astro-cid-up4uz3l3] :where(dl):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{margin-top:1.25em;margin-bottom:1.25em}.prose[data-astro-cid-up4uz3l3] :where(dd):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{margin-top:.5em;padding-inline-start:1.625em}.prose[data-astro-cid-up4uz3l3] :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{margin-top:0}.prose[data-astro-cid-up4uz3l3] :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{margin-top:0}.prose[data-astro-cid-up4uz3l3] :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{margin-top:0}.prose[data-astro-cid-up4uz3l3] :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{margin-top:0}.prose[data-astro-cid-up4uz3l3] :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{padding-inline-start:0}.prose[data-astro-cid-up4uz3l3] :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{padding-inline-end:0}.prose[data-astro-cid-up4uz3l3] :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{padding-top:.5714286em;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose[data-astro-cid-up4uz3l3] :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{padding-inline-start:0}.prose[data-astro-cid-up4uz3l3] :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{padding-inline-end:0}.prose[data-astro-cid-up4uz3l3] :where(figure):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{margin-top:2em;margin-bottom:2em}.prose[data-astro-cid-up4uz3l3] :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{margin-top:0}.prose[data-astro-cid-up4uz3l3] :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{margin-bottom:0}.prose-base[data-astro-cid-up4uz3l3]{font-size:1rem;line-height:1.75}.prose-base[data-astro-cid-up4uz3l3] :where(p):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{margin-top:1.25em;margin-bottom:1.25em}.prose-base[data-astro-cid-up4uz3l3] :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose-base[data-astro-cid-up4uz3l3] :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em}.prose-base[data-astro-cid-up4uz3l3] :where(h1):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose-base[data-astro-cid-up4uz3l3] :where(h2):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose-base[data-astro-cid-up4uz3l3] :where(h3):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose-base[data-astro-cid-up4uz3l3] :where(h4):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose-base[data-astro-cid-up4uz3l3] :where(img):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{margin-top:2em;margin-bottom:2em}.prose-base[data-astro-cid-up4uz3l3] :where(picture):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{margin-top:2em;margin-bottom:2em}.prose-base[data-astro-cid-up4uz3l3] :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{margin-top:0;margin-bottom:0}.prose-base[data-astro-cid-up4uz3l3] :where(video):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{margin-top:2em;margin-bottom:2em}.prose-base[data-astro-cid-up4uz3l3] :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{font-size:.875em;border-radius:.3125rem;padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;padding-inline-start:.375em}.prose-base[data-astro-cid-up4uz3l3] :where(code):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{font-size:.875em}.prose-base[data-astro-cid-up4uz3l3] :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{font-size:.875em}.prose-base[data-astro-cid-up4uz3l3] :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{font-size:.9em}.prose-base[data-astro-cid-up4uz3l3] :where(pre):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding-top:.8571429em;padding-inline-end:1.1428571em;padding-bottom:.8571429em;padding-inline-start:1.1428571em}.prose-base[data-astro-cid-up4uz3l3] :where(ol):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose-base[data-astro-cid-up4uz3l3] :where(ul):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose-base[data-astro-cid-up4uz3l3] :where(li):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{margin-top:.5em;margin-bottom:.5em}.prose-base[data-astro-cid-up4uz3l3] :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{padding-inline-start:.375em}.prose-base[data-astro-cid-up4uz3l3] :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{padding-inline-start:.375em}.prose-base[data-astro-cid-up4uz3l3] :where(.prose-base>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{margin-top:.75em;margin-bottom:.75em}.prose-base[data-astro-cid-up4uz3l3] :where(.prose-base>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{margin-top:1.25em}.prose-base[data-astro-cid-up4uz3l3] :where(.prose-base>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{margin-bottom:1.25em}.prose-base[data-astro-cid-up4uz3l3] :where(.prose-base>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{margin-top:1.25em}.prose-base[data-astro-cid-up4uz3l3] :where(.prose-base>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{margin-bottom:1.25em}.prose-base[data-astro-cid-up4uz3l3] :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{margin-top:.75em;margin-bottom:.75em}.prose-base[data-astro-cid-up4uz3l3] :where(dl):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{margin-top:1.25em;margin-bottom:1.25em}.prose-base[data-astro-cid-up4uz3l3] :where(dt):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{margin-top:1.25em}.prose-base[data-astro-cid-up4uz3l3] :where(dd):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{margin-top:.5em;padding-inline-start:1.625em}.prose-base[data-astro-cid-up4uz3l3] :where(hr):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{margin-top:3em;margin-bottom:3em}.prose-base[data-astro-cid-up4uz3l3] :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{margin-top:0}.prose-base[data-astro-cid-up4uz3l3] :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{margin-top:0}.prose-base[data-astro-cid-up4uz3l3] :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{margin-top:0}.prose-base[data-astro-cid-up4uz3l3] :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{margin-top:0}.prose-base[data-astro-cid-up4uz3l3] :where(table):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{font-size:.875em;line-height:1.7142857}.prose-base[data-astro-cid-up4uz3l3] :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose-base[data-astro-cid-up4uz3l3] :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{padding-inline-start:0}.prose-base[data-astro-cid-up4uz3l3] :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{padding-inline-end:0}.prose-base[data-astro-cid-up4uz3l3] :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{padding-top:.5714286em;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose-base[data-astro-cid-up4uz3l3] :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{padding-inline-start:0}.prose-base[data-astro-cid-up4uz3l3] :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{padding-inline-end:0}.prose-base[data-astro-cid-up4uz3l3] :where(figure):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{margin-top:2em;margin-bottom:2em}.prose-base[data-astro-cid-up4uz3l3] :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{margin-top:0;margin-bottom:0}.prose-base[data-astro-cid-up4uz3l3] :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose-base[data-astro-cid-up4uz3l3] :where(.prose-base>:first-child):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{margin-top:0}.prose-base[data-astro-cid-up4uz3l3] :where(.prose-base>:last-child):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-up4uz3l3]{margin-bottom:0}.dash-line[data-astro-cid-up4uz3l3]:before{content:"";pointer-events:none;position:absolute;left:calc(50% - 1px);top:-50%;height:100%;width:10%;border-left-width:2px;border-style:dashed;border-color:var(--line-color);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.pointer-events-none[data-astro-cid-up4uz3l3]{pointer-events:none}.pointer-events-auto[data-astro-cid-up4uz3l3]{pointer-events:auto}.visible[data-astro-cid-up4uz3l3]{visibility:visible}.fixed[data-astro-cid-up4uz3l3]{position:fixed}.absolute[data-astro-cid-up4uz3l3]{position:absolute}.relative[data-astro-cid-up4uz3l3]{position:relative}.sticky[data-astro-cid-up4uz3l3]{position:sticky}.inset-0[data-astro-cid-up4uz3l3]{inset:0}.-right-2[data-astro-cid-up4uz3l3]{right:-.5rem}.-top-1\/2[data-astro-cid-up4uz3l3]{top:-50%}.-top-8[data-astro-cid-up4uz3l3]{top:-2rem}.-top-\[3\.25rem\][data-astro-cid-up4uz3l3]{top:-3.25rem}.-top-\[30vh\][data-astro-cid-up4uz3l3]{top:-30vh}.-top-\[50\%\][data-astro-cid-up4uz3l3]{top:-50%}.bottom-3[data-astro-cid-up4uz3l3]{bottom:.75rem}.left-0[data-astro-cid-up4uz3l3]{left:0}.left-1\/2[data-astro-cid-up4uz3l3]{left:50%}.left-4[data-astro-cid-up4uz3l3]{left:1rem}.left-\[calc\(50\%_-_1px\)\][data-astro-cid-up4uz3l3]{left:calc(50% - 1px)}.right-0[data-astro-cid-up4uz3l3]{right:0}.right-2[data-astro-cid-up4uz3l3]{right:.5rem}.right-3[data-astro-cid-up4uz3l3]{right:.75rem}.right-4[data-astro-cid-up4uz3l3]{right:1rem}.right-6[data-astro-cid-up4uz3l3]{right:1.5rem}.top-0[data-astro-cid-up4uz3l3]{top:0}.top-1\/2[data-astro-cid-up4uz3l3]{top:50%}.top-11[data-astro-cid-up4uz3l3]{top:2.75rem}.top-2[data-astro-cid-up4uz3l3]{top:.5rem}.top-20[data-astro-cid-up4uz3l3]{top:5rem}.top-3[data-astro-cid-up4uz3l3]{top:.75rem}.top-4[data-astro-cid-up4uz3l3]{top:1rem}.top-\[30vh\][data-astro-cid-up4uz3l3]{top:30vh}.top-\[5\.25rem\][data-astro-cid-up4uz3l3]{top:5.25rem}.top-\[5\.5rem\][data-astro-cid-up4uz3l3]{top:5.5rem}.top-\[calc\(-30vh_\+_1rem\)\][data-astro-cid-up4uz3l3]{top:calc(-30vh + 1rem)}.z-0[data-astro-cid-up4uz3l3]{z-index:0}.z-10[data-astro-cid-up4uz3l3]{z-index:10}.z-20[data-astro-cid-up4uz3l3]{z-index:20}.z-50[data-astro-cid-up4uz3l3]{z-index:50}.col-span-2[data-astro-cid-up4uz3l3]{grid-column:span 2 / span 2}.row-start-2[data-astro-cid-up4uz3l3]{grid-row-start:2}.row-end-3[data-astro-cid-up4uz3l3]{grid-row-end:3}.-m-1[data-astro-cid-up4uz3l3]{margin:-.25rem}.-m-1\.5[data-astro-cid-up4uz3l3]{margin:-.375rem}.mx-1[data-astro-cid-up4uz3l3]{margin-left:.25rem;margin-right:.25rem}.mx-1\.5[data-astro-cid-up4uz3l3]{margin-left:.375rem;margin-right:.375rem}.mx-16[data-astro-cid-up4uz3l3]{margin-left:4rem;margin-right:4rem}.mx-32[data-astro-cid-up4uz3l3]{margin-left:8rem;margin-right:8rem}.mx-4[data-astro-cid-up4uz3l3]{margin-left:1rem;margin-right:1rem}.mx-6[data-astro-cid-up4uz3l3]{margin-left:1.5rem;margin-right:1.5rem}.mx-auto[data-astro-cid-up4uz3l3]{margin-left:auto;margin-right:auto}.my-10[data-astro-cid-up4uz3l3]{margin-top:2.5rem;margin-bottom:2.5rem}.my-auto[data-astro-cid-up4uz3l3]{margin-top:auto;margin-bottom:auto}.-mb-2[data-astro-cid-up4uz3l3]{margin-bottom:-.5rem}.mb-0\.5[data-astro-cid-up4uz3l3]{margin-bottom:.125rem}.mb-1[data-astro-cid-up4uz3l3]{margin-bottom:.25rem}.mb-12[data-astro-cid-up4uz3l3]{margin-bottom:3rem}.mb-2[data-astro-cid-up4uz3l3]{margin-bottom:.5rem}.mb-2\.5[data-astro-cid-up4uz3l3]{margin-bottom:.625rem}.mb-3[data-astro-cid-up4uz3l3]{margin-bottom:.75rem}.mb-3\.5[data-astro-cid-up4uz3l3]{margin-bottom:.875rem}.mb-4[data-astro-cid-up4uz3l3]{margin-bottom:1rem}.mb-5[data-astro-cid-up4uz3l3]{margin-bottom:1.25rem}.mb-6[data-astro-cid-up4uz3l3]{margin-bottom:1.5rem}.mb-8[data-astro-cid-up4uz3l3]{margin-bottom:2rem}.ml-1[data-astro-cid-up4uz3l3]{margin-left:.25rem}.ml-3[data-astro-cid-up4uz3l3]{margin-left:.75rem}.ml-4[data-astro-cid-up4uz3l3]{margin-left:1rem}.ml-8[data-astro-cid-up4uz3l3]{margin-left:2rem}.mr-0[data-astro-cid-up4uz3l3]{margin-right:0}.mr-1[data-astro-cid-up4uz3l3]{margin-right:.25rem}.mr-2[data-astro-cid-up4uz3l3]{margin-right:.5rem}.mr-2\.5[data-astro-cid-up4uz3l3]{margin-right:.625rem}.mr-3[data-astro-cid-up4uz3l3]{margin-right:.75rem}.mr-4[data-astro-cid-up4uz3l3]{margin-right:1rem}.mt-1[data-astro-cid-up4uz3l3]{margin-top:.25rem}.mt-2[data-astro-cid-up4uz3l3]{margin-top:.5rem}.mt-4[data-astro-cid-up4uz3l3]{margin-top:1rem}.line-clamp-1[data-astro-cid-up4uz3l3]{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.line-clamp-2[data-astro-cid-up4uz3l3]{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block[data-astro-cid-up4uz3l3]{display:block}.inline-block[data-astro-cid-up4uz3l3]{display:inline-block}.inline[data-astro-cid-up4uz3l3]{display:inline}.flex[data-astro-cid-up4uz3l3]{display:flex}.inline-flex[data-astro-cid-up4uz3l3]{display:inline-flex}.table[data-astro-cid-up4uz3l3]{display:table}.grid[data-astro-cid-up4uz3l3]{display:grid}.hidden[data-astro-cid-up4uz3l3]{display:none}.h-1[data-astro-cid-up4uz3l3]{height:.25rem}.h-10[data-astro-cid-up4uz3l3]{height:2.5rem}.h-11[data-astro-cid-up4uz3l3]{height:2.75rem}.h-12[data-astro-cid-up4uz3l3]{height:3rem}.h-3[data-astro-cid-up4uz3l3]{height:.75rem}.h-6[data-astro-cid-up4uz3l3]{height:1.5rem}.h-7[data-astro-cid-up4uz3l3]{height:1.75rem}.h-8[data-astro-cid-up4uz3l3]{height:2rem}.h-9[data-astro-cid-up4uz3l3]{height:2.25rem}.h-\[3\.25rem\][data-astro-cid-up4uz3l3]{height:3.25rem}.h-\[3\.75rem\][data-astro-cid-up4uz3l3]{height:3.75rem}.h-\[300vh\][data-astro-cid-up4uz3l3]{height:300vh}.h-\[4\.5rem\][data-astro-cid-up4uz3l3]{height:4.5rem}.h-\[calc\(var\(--banner-height-home\)_-_4\.5rem\)\][data-astro-cid-up4uz3l3]{height:calc(var(--banner-height-home) - 4.5rem)}.h-\[var\(--banner-height-home\)\][data-astro-cid-up4uz3l3]{height:var(--banner-height-home)}.h-full[data-astro-cid-up4uz3l3]{height:100%}.max-h-\[20vh\][data-astro-cid-up4uz3l3]{max-height:20vh}.min-h-32[data-astro-cid-up4uz3l3]{min-height:8rem}.min-h-screen[data-astro-cid-up4uz3l3]{min-height:100vh}.w-1[data-astro-cid-up4uz3l3]{width:.25rem}.w-10[data-astro-cid-up4uz3l3]{width:2.5rem}.w-11[data-astro-cid-up4uz3l3]{width:2.75rem}.w-12[data-astro-cid-up4uz3l3]{width:3rem}.w-3[data-astro-cid-up4uz3l3]{width:.75rem}.w-40[data-astro-cid-up4uz3l3]{width:10rem}.w-5[data-astro-cid-up4uz3l3]{width:1.25rem}.w-6[data-astro-cid-up4uz3l3]{width:1.5rem}.w-7[data-astro-cid-up4uz3l3]{width:1.75rem}.w-8[data-astro-cid-up4uz3l3]{width:2rem}.w-80[data-astro-cid-up4uz3l3]{width:20rem}.w-\[10\%\][data-astro-cid-up4uz3l3]{width:10%}.w-\[15\%\][data-astro-cid-up4uz3l3]{width:15%}.w-\[3\.25rem\][data-astro-cid-up4uz3l3]{width:3.25rem}.w-\[3\.75rem\][data-astro-cid-up4uz3l3]{width:3.75rem}.w-\[70\%\][data-astro-cid-up4uz3l3]{width:70%}.w-full[data-astro-cid-up4uz3l3]{width:100%}.min-w-\[2rem\][data-astro-cid-up4uz3l3]{min-width:2rem}.max-w-\[240px\][data-astro-cid-up4uz3l3]{max-width:240px}.max-w-\[calc\(100\%_-_3rem\)\][data-astro-cid-up4uz3l3]{max-width:calc(100% - 3rem)}.max-w-\[var\(\&\#45\;\&\#45\;page-width\)\][data-astro-cid-up4uz3l3]{max-width:var(--page-width)}.max-w-\[var\(--page-width\)\][data-astro-cid-up4uz3l3]{max-width:var(--page-width)}.max-w-full[data-astro-cid-up4uz3l3]{max-width:100%}.max-w-none[data-astro-cid-up4uz3l3]{max-width:none}.-translate-x-1[data-astro-cid-up4uz3l3]{--tw-translate-x: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-1\/2[data-astro-cid-up4uz3l3]{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-2[data-astro-cid-up4uz3l3]{--tw-translate-x: -.5rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1[data-astro-cid-up4uz3l3]{--tw-translate-y: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2[data-astro-cid-up4uz3l3]{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-16[data-astro-cid-up4uz3l3]{--tw-translate-y: -4rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-\[1px\][data-astro-cid-up4uz3l3]{--tw-translate-y: -1px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0\.5[data-astro-cid-up4uz3l3]{--tw-translate-x: .125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-0[data-astro-cid-up4uz3l3]{--tw-translate-y: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-0\.5[data-astro-cid-up4uz3l3]{--tw-translate-y: .125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-4[data-astro-cid-up4uz3l3]{--tw-translate-y: 1rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[30vh\][data-astro-cid-up4uz3l3]{--tw-translate-y: 30vh;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[var\(--bannerOffset\)\][data-astro-cid-up4uz3l3]{--tw-translate-y: var(--bannerOffset);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-105[data-astro-cid-up4uz3l3]{--tw-scale-x: 1.05;--tw-scale-y: 1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-50[data-astro-cid-up4uz3l3]{--tw-scale-x: .5;--tw-scale-y: .5;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-90[data-astro-cid-up4uz3l3]{--tw-scale-x: .9;--tw-scale-y: .9;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform[data-astro-cid-up4uz3l3]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-zoom-in[data-astro-cid-up4uz3l3]{cursor:zoom-in}.select-none[data-astro-cid-up4uz3l3]{-webkit-user-select:none;-moz-user-select:none;user-select:none}.grid-cols-\[17\.5rem_auto\][data-astro-cid-up4uz3l3]{grid-template-columns:17.5rem auto}.grid-rows-\[auto_1fr_auto\][data-astro-cid-up4uz3l3]{grid-template-rows:auto 1fr auto}.flex-row[data-astro-cid-up4uz3l3]{flex-direction:row}.flex-col[data-astro-cid-up4uz3l3]{flex-direction:column}.flex-col-reverse[data-astro-cid-up4uz3l3]{flex-direction:column-reverse}.flex-wrap[data-astro-cid-up4uz3l3]{flex-wrap:wrap}.flex-nowrap[data-astro-cid-up4uz3l3]{flex-wrap:nowrap}.items-center[data-astro-cid-up4uz3l3]{align-items:center}.justify-start[data-astro-cid-up4uz3l3]{justify-content:flex-start}.justify-end[data-astro-cid-up4uz3l3]{justify-content:flex-end}.justify-center[data-astro-cid-up4uz3l3]{justify-content:center}.justify-between[data-astro-cid-up4uz3l3]{justify-content:space-between}.gap-1[data-astro-cid-up4uz3l3]{gap:.25rem}.gap-2[data-astro-cid-up4uz3l3]{gap:.5rem}.gap-3[data-astro-cid-up4uz3l3]{gap:.75rem}.gap-4[data-astro-cid-up4uz3l3]{gap:1rem}.gap-5[data-astro-cid-up4uz3l3]{gap:1.25rem}.gap-6[data-astro-cid-up4uz3l3]{gap:1.5rem}.gap-8[data-astro-cid-up4uz3l3]{gap:2rem}.gap-x-4[data-astro-cid-up4uz3l3]{-moz-column-gap:1rem;column-gap:1rem}.gap-y-2[data-astro-cid-up4uz3l3]{row-gap:.5rem}.space-x-2[data-astro-cid-up4uz3l3]>:not([hidden])[data-astro-cid-up4uz3l3]~:not([hidden])[data-astro-cid-up4uz3l3]{--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.overflow-hidden[data-astro-cid-up4uz3l3]{overflow:hidden}.overflow-visible[data-astro-cid-up4uz3l3]{overflow:visible}.overflow-ellipsis[data-astro-cid-up4uz3l3]{text-overflow:ellipsis}.whitespace-nowrap[data-astro-cid-up4uz3l3]{white-space:nowrap}.rounded[data-astro-cid-up4uz3l3]{border-radius:.25rem}.rounded-2xl[data-astro-cid-up4uz3l3]{border-radius:1rem}.rounded-\[var\(--radius-large\)\][data-astro-cid-up4uz3l3]{border-radius:var(--radius-large)}.rounded-full[data-astro-cid-up4uz3l3]{border-radius:9999px}.rounded-lg[data-astro-cid-up4uz3l3]{border-radius:.5rem}.rounded-md[data-astro-cid-up4uz3l3]{border-radius:.375rem}.rounded-xl[data-astro-cid-up4uz3l3]{border-radius:.75rem}.rounded-t-none[data-astro-cid-up4uz3l3]{border-top-left-radius:0;border-top-right-radius:0}.border[data-astro-cid-up4uz3l3]{border-width:1px}.border-b-\[1px\][data-astro-cid-up4uz3l3]{border-bottom-width:1px}.border-l-\[2px\][data-astro-cid-up4uz3l3]{border-left-width:2px}.border-t[data-astro-cid-up4uz3l3],.border-t-\[1px\][data-astro-cid-up4uz3l3]{border-top-width:1px}.border-dashed[data-astro-cid-up4uz3l3]{border-style:dashed}.border-\[oklch\(85\%_0\.01_var\(--hue\)\)\][data-astro-cid-up4uz3l3]{border-color:oklch(85% .01 var(--hue))}.border-\[var\(\&\#45\;\&\#45\;primary\)\][data-astro-cid-up4uz3l3]{border-color:var(--primary)}.border-\[var\(--line-color\)\][data-astro-cid-up4uz3l3]{border-color:var(--line-color)}.border-\[var\(--line-divider\)\][data-astro-cid-up4uz3l3]{border-color:var(--line-divider)}.border-black\/10[data-astro-cid-up4uz3l3]{border-color:#0000001a}.bg-\[oklch\(0\.45_0\.01_var\(--hue\)\)\][data-astro-cid-up4uz3l3]{background-color:oklch(.45 .01 var(--hue))}.bg-\[oklch\(0\.5_0\.05_var\(--hue\)\)\][data-astro-cid-up4uz3l3]{background-color:oklch(.5 .05 var(--hue))}.bg-\[oklch\(0\.75_0\.14_var\(--hue\)\)\][data-astro-cid-up4uz3l3]{background-color:oklch(.75 .14 var(--hue))}.bg-\[oklch\(0\.80_0\.10_0\)\][data-astro-cid-up4uz3l3]{background-color:#f3a3bb}.bg-\[oklch\(0\.95_0\.025_var\(--hue\)\)\][data-astro-cid-up4uz3l3]{background-color:oklch(.95 .025 var(--hue))}.bg-\[oklch\(92\%_0\.01_var\(\&\#45\;\&\#45\;hue\)\)\][data-astro-cid-up4uz3l3]{background-color:oklch(92% .01 var(--hue))}.bg-\[var\(--btn-content\)\][data-astro-cid-up4uz3l3]{background-color:var(--btn-content)}.bg-\[var\(--btn-regular-bg\)\][data-astro-cid-up4uz3l3]{background-color:var(--btn-regular-bg)}.bg-\[var\(--card-bg\)\][data-astro-cid-up4uz3l3]{background-color:var(--card-bg)}.bg-\[var\(--enter-btn-bg\)\][data-astro-cid-up4uz3l3]{background-color:var(--enter-btn-bg)}.bg-\[var\(--float-panel-bg\)\][data-astro-cid-up4uz3l3]{background-color:var(--float-panel-bg)}.bg-\[var\(--license-block-bg\)\][data-astro-cid-up4uz3l3]{background-color:var(--license-block-bg)}.bg-\[var\(--page-bg\)\][data-astro-cid-up4uz3l3]{background-color:var(--page-bg)}.bg-\[var\(--primary\)\][data-astro-cid-up4uz3l3]{background-color:var(--primary)}.bg-black\/40[data-astro-cid-up4uz3l3]{background-color:#0006}.bg-black\/5[data-astro-cid-up4uz3l3]{background-color:#0000000d}.bg-black\/60[data-astro-cid-up4uz3l3]{background-color:#0009}.bg-black\/80[data-astro-cid-up4uz3l3]{background-color:#000c}.bg-black\/\[0\.04\][data-astro-cid-up4uz3l3]{background-color:#0000000a}.bg-transparent[data-astro-cid-up4uz3l3]{background-color:transparent}.bg-opacity-50[data-astro-cid-up4uz3l3]{--tw-bg-opacity: .5}.bg-none[data-astro-cid-up4uz3l3]{background-image:none}.fill-\[var\(--deep-text\)\][data-astro-cid-up4uz3l3]{fill:var(--deep-text)}.fill-white[data-astro-cid-up4uz3l3]{fill:#fff}.object-cover[data-astro-cid-up4uz3l3]{-o-object-fit:cover;object-fit:cover}.p-1[data-astro-cid-up4uz3l3]{padding:.25rem}.p-1\.5[data-astro-cid-up4uz3l3]{padding:.375rem}.p-2[data-astro-cid-up4uz3l3]{padding:.5rem}.p-3[data-astro-cid-up4uz3l3]{padding:.75rem}.px-0[data-astro-cid-up4uz3l3]{padding-left:0;padding-right:0}.px-1[data-astro-cid-up4uz3l3]{padding-left:.25rem;padding-right:.25rem}.px-2[data-astro-cid-up4uz3l3]{padding-left:.5rem;padding-right:.5rem}.px-3[data-astro-cid-up4uz3l3]{padding-left:.75rem;padding-right:.75rem}.px-4[data-astro-cid-up4uz3l3]{padding-left:1rem;padding-right:1rem}.px-5[data-astro-cid-up4uz3l3]{padding-left:1.25rem;padding-right:1.25rem}.px-6[data-astro-cid-up4uz3l3]{padding-left:1.5rem;padding-right:1.5rem}.px-8[data-astro-cid-up4uz3l3]{padding-left:2rem;padding-right:2rem}.px-9[data-astro-cid-up4uz3l3]{padding-left:2.25rem;padding-right:2.25rem}.py-1[data-astro-cid-up4uz3l3]{padding-top:.25rem;padding-bottom:.25rem}.py-2[data-astro-cid-up4uz3l3]{padding-top:.5rem;padding-bottom:.5rem}.py-4[data-astro-cid-up4uz3l3]{padding-top:1rem;padding-bottom:1rem}.py-5[data-astro-cid-up4uz3l3]{padding-top:1.25rem;padding-bottom:1.25rem}.py-6[data-astro-cid-up4uz3l3]{padding-top:1.5rem;padding-bottom:1.5rem}.py-8[data-astro-cid-up4uz3l3]{padding-top:2rem;padding-bottom:2rem}.pb-4[data-astro-cid-up4uz3l3]{padding-bottom:1rem}.pb-6[data-astro-cid-up4uz3l3]{padding-bottom:1.5rem}.pl-10[data-astro-cid-up4uz3l3]{padding-left:2.5rem}.pl-2[data-astro-cid-up4uz3l3]{padding-left:.5rem}.pl-3[data-astro-cid-up4uz3l3]{padding-left:.75rem}.pl-6[data-astro-cid-up4uz3l3]{padding-left:1.5rem}.pr-1[data-astro-cid-up4uz3l3]{padding-right:.25rem}.pr-4[data-astro-cid-up4uz3l3]{padding-right:1rem}.pr-6[data-astro-cid-up4uz3l3]{padding-right:1.5rem}.pr-8[data-astro-cid-up4uz3l3]{padding-right:2rem}.pt-5[data-astro-cid-up4uz3l3]{padding-top:1.25rem}.pt-6[data-astro-cid-up4uz3l3]{padding-top:1.5rem}.text-left[data-astro-cid-up4uz3l3]{text-align:left}.text-center[data-astro-cid-up4uz3l3]{text-align:center}.text-right[data-astro-cid-up4uz3l3]{text-align:right}.text-2xl[data-astro-cid-up4uz3l3]{font-size:1.5rem;line-height:2rem}.text-3xl[data-astro-cid-up4uz3l3]{font-size:1.875rem;line-height:2.25rem}.text-4xl[data-astro-cid-up4uz3l3]{font-size:2.25rem;line-height:2.5rem}.text-5xl[data-astro-cid-up4uz3l3]{font-size:3rem;line-height:1}.text-\[0\.75rem\][data-astro-cid-up4uz3l3]{font-size:.75rem}.text-\[0\.875rem\][data-astro-cid-up4uz3l3]{font-size:.875rem}.text-\[1\.25rem\][data-astro-cid-up4uz3l3]{font-size:1.25rem}.text-\[1\.5rem\][data-astro-cid-up4uz3l3]{font-size:1.5rem}.text-\[1\.75rem\][data-astro-cid-up4uz3l3]{font-size:1.75rem}.text-\[14px\][data-astro-cid-up4uz3l3]{font-size:14px}.text-\[15rem\][data-astro-cid-up4uz3l3]{font-size:15rem}.text-\[2rem\][data-astro-cid-up4uz3l3]{font-size:2rem}.text-lg[data-astro-cid-up4uz3l3]{font-size:1.125rem;line-height:1.75rem}.text-sm[data-astro-cid-up4uz3l3]{font-size:.875rem;line-height:1.25rem}.text-xl[data-astro-cid-up4uz3l3]{font-size:1.25rem;line-height:1.75rem}.text-xs[data-astro-cid-up4uz3l3]{font-size:.75rem;line-height:1rem}.font-bold[data-astro-cid-up4uz3l3]{font-weight:700}.font-medium[data-astro-cid-up4uz3l3]{font-weight:500}.text-\[oklch\(0\.75_0\.14_var\(--hue\)\)\][data-astro-cid-up4uz3l3]{color:oklch(.75 .14 var(--hue))}.text-\[var\(\&\#45\;\&\#45\;primary\)\][data-astro-cid-up4uz3l3]{color:var(--primary)}.text-\[var\(--btn-content\)\][data-astro-cid-up4uz3l3]{color:var(--btn-content)}.text-\[var\(--meta-divider\)\][data-astro-cid-up4uz3l3]{color:var(--meta-divider)}.text-\[var\(--primary\)\][data-astro-cid-up4uz3l3]{color:var(--primary)}.text-black\/10[data-astro-cid-up4uz3l3]{color:#0000001a}.text-black\/25[data-astro-cid-up4uz3l3]{color:#00000040}.text-black\/30[data-astro-cid-up4uz3l3]{color:#0000004d}.text-black\/5[data-astro-cid-up4uz3l3]{color:#0000000d}.text-black\/50[data-astro-cid-up4uz3l3]{color:#00000080}.text-black\/75[data-astro-cid-up4uz3l3]{color:#000000bf}.text-black\/90[data-astro-cid-up4uz3l3]{color:#000000e6}.text-black\/\[0\.2\][data-astro-cid-up4uz3l3]{color:#0003}.text-gray-500[data-astro-cid-up4uz3l3]{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.text-neutral-400[data-astro-cid-up4uz3l3]{--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity))}.text-neutral-500[data-astro-cid-up4uz3l3]{--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity))}.text-neutral-700[data-astro-cid-up4uz3l3]{--tw-text-opacity: 1;color:rgb(64 64 64 / var(--tw-text-opacity))}.text-neutral-900[data-astro-cid-up4uz3l3]{--tw-text-opacity: 1;color:rgb(23 23 23 / var(--tw-text-opacity))}.text-white[data-astro-cid-up4uz3l3]{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.text-white\/75[data-astro-cid-up4uz3l3]{color:#ffffffbf}.underline[data-astro-cid-up4uz3l3]{text-decoration-line:underline}.decoration-\[var\(--link-underline\)\][data-astro-cid-up4uz3l3]{text-decoration-color:var(--link-underline)}.decoration-dashed[data-astro-cid-up4uz3l3]{text-decoration-style:dashed}.decoration-2[data-astro-cid-up4uz3l3]{text-decoration-thickness:2px}.underline-offset-\[0\.25rem\][data-astro-cid-up4uz3l3]{text-underline-offset:.25rem}.opacity-0[data-astro-cid-up4uz3l3]{opacity:0}.opacity-100[data-astro-cid-up4uz3l3]{opacity:1}.opacity-75[data-astro-cid-up4uz3l3]{opacity:.75}.shadow-2xl[data-astro-cid-up4uz3l3]{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl[data-astro-cid-up4uz3l3]{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline[data-astro-cid-up4uz3l3]{outline-style:solid}.outline-0[data-astro-cid-up4uz3l3]{outline-width:0px}.outline-4[data-astro-cid-up4uz3l3]{outline-width:4px}.-outline-offset-\[2px\][data-astro-cid-up4uz3l3]{outline-offset:-2px}.outline-\[var\(--card-bg\)\][data-astro-cid-up4uz3l3]{outline-color:var(--card-bg)}.outline-\[var\(--primary\)\][data-astro-cid-up4uz3l3]{outline-color:var(--primary)}.drop-shadow-\[0_2px_4px_rgba\(0\,0\,0\,0\.005\)\][data-astro-cid-up4uz3l3]{--tw-drop-shadow: drop-shadow(0 2px 4px rgba(0,0,0,.005));filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter[data-astro-cid-up4uz3l3]{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition[data-astro-cid-up4uz3l3]{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all[data-astro-cid-up4uz3l3]{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200[data-astro-cid-up4uz3l3]{transition-duration:.2s}.duration-300[data-astro-cid-up4uz3l3]{transition-duration:.3s}.duration-700[data-astro-cid-up4uz3l3]{transition-duration:.7s}.ease-in-out[data-astro-cid-up4uz3l3]{transition-timing-function:cubic-bezier(.4,0,.2,1)}.dark\:prose-invert[data-astro-cid-up4uz3l3]:is(.dark *){--tw-prose-body: var(--tw-prose-invert-body);--tw-prose-headings: var(--tw-prose-invert-headings);--tw-prose-lead: var(--tw-prose-invert-lead);--tw-prose-links: var(--tw-prose-invert-links);--tw-prose-bold: var(--tw-prose-invert-bold);--tw-prose-counters: var(--tw-prose-invert-counters);--tw-prose-bullets: var(--tw-prose-invert-bullets);--tw-prose-hr: var(--tw-prose-invert-hr);--tw-prose-quotes: var(--tw-prose-invert-quotes);--tw-prose-quote-borders: var(--tw-prose-invert-quote-borders);--tw-prose-captions: var(--tw-prose-invert-captions);--tw-prose-kbd: var(--tw-prose-invert-kbd);--tw-prose-kbd-shadows: var(--tw-prose-invert-kbd-shadows);--tw-prose-code: var(--tw-prose-invert-code);--tw-prose-pre-code: var(--tw-prose-invert-pre-code);--tw-prose-pre-bg: var(--tw-prose-invert-pre-bg);--tw-prose-th-borders: var(--tw-prose-invert-th-borders);--tw-prose-td-borders: var(--tw-prose-invert-td-borders)}.before\:absolute[data-astro-cid-up4uz3l3]:before{content:var(--tw-content);position:absolute}.before\:inset-0[data-astro-cid-up4uz3l3]:before{content:var(--tw-content);inset:0}.before\:-left-3[data-astro-cid-up4uz3l3]:before{content:var(--tw-content);left:-.75rem}.before\:left-\[-1\.125rem\][data-astro-cid-up4uz3l3]:before{content:var(--tw-content);left:-1.125rem}.before\:left-\[-16px\][data-astro-cid-up4uz3l3]:before{content:var(--tw-content);left:-16px}.before\:left-\[18px\][data-astro-cid-up4uz3l3]:before{content:var(--tw-content);left:18px}.before\:top-\[0\.33rem\][data-astro-cid-up4uz3l3]:before{content:var(--tw-content);top:.33rem}.before\:top-\[0\.75rem\][data-astro-cid-up4uz3l3]:before{content:var(--tw-content);top:.75rem}.before\:top-\[35px\][data-astro-cid-up4uz3l3]:before{content:var(--tw-content);top:35px}.before\:top-\[5\.5px\][data-astro-cid-up4uz3l3]:before{content:var(--tw-content);top:5.5px}.before\:-z-10[data-astro-cid-up4uz3l3]:before{content:var(--tw-content);z-index:-10}.before\:ml-1\.5[data-astro-cid-up4uz3l3]:before{content:var(--tw-content);margin-left:.375rem}.before\:mr-1\.5[data-astro-cid-up4uz3l3]:before{content:var(--tw-content);margin-right:.375rem}.before\:hidden[data-astro-cid-up4uz3l3]:before{content:var(--tw-content);display:none}.before\:h-4[data-astro-cid-up4uz3l3]:before{content:var(--tw-content);height:1rem}.before\:h-5[data-astro-cid-up4uz3l3]:before{content:var(--tw-content);height:1.25rem}.before\:w-1[data-astro-cid-up4uz3l3]:before{content:var(--tw-content);width:.25rem}.before\:scale-100[data-astro-cid-up4uz3l3]:before{content:var(--tw-content);--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.before\:scale-\[0\.85\][data-astro-cid-up4uz3l3]:before{content:var(--tw-content);--tw-scale-x: .85;--tw-scale-y: .85;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.before\:rounded-\[inherit\][data-astro-cid-up4uz3l3]:before{content:var(--tw-content);border-radius:inherit}.before\:rounded-md[data-astro-cid-up4uz3l3]:before{content:var(--tw-content);border-radius:.375rem}.before\:bg-\[var\(--btn-plain-bg-hover\)\][data-astro-cid-up4uz3l3]:before{content:var(--tw-content);background-color:var(--btn-plain-bg-hover)}.before\:bg-\[var\(--primary\)\][data-astro-cid-up4uz3l3]:before{content:var(--tw-content);background-color:var(--primary)}.before\:text-sm[data-astro-cid-up4uz3l3]:before{content:var(--tw-content);font-size:.875rem;line-height:1.25rem}.before\:font-medium[data-astro-cid-up4uz3l3]:before{content:var(--tw-content);font-weight:500}.before\:text-\[var\(--meta-divider\)\][data-astro-cid-up4uz3l3]:before{content:var(--tw-content);color:var(--meta-divider)}.before\:opacity-100[data-astro-cid-up4uz3l3]:before{content:var(--tw-content);opacity:1}.before\:transition[data-astro-cid-up4uz3l3]:before{content:var(--tw-content);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.before\:ease-out[data-astro-cid-up4uz3l3]:before{content:var(--tw-content);transition-timing-function:cubic-bezier(0,0,.2,1)}.before\:content-\[\'\/\'\][data-astro-cid-up4uz3l3]:before{--tw-content: "/";content:var(--tw-content)}.last\:border-t-0[data-astro-cid-up4uz3l3]:last-child{border-top-width:0px}.first-of-type\:mt-2[data-astro-cid-up4uz3l3]:first-of-type{margin-top:.5rem}.before\:first-of-type\:hidden[data-astro-cid-up4uz3l3]:first-of-type:before{content:var(--tw-content);display:none}.focus-within\:bg-black\/\[0\.06\][data-astro-cid-up4uz3l3]:focus-within{background-color:#0000000f}.hover\:bg-\[oklch\(0\.50_0\.01_var\(--hue\)\)\][data-astro-cid-up4uz3l3]:hover{background-color:oklch(.5 .01 var(--hue))}.hover\:bg-\[var\(--btn-card-bg-hover\)\][data-astro-cid-up4uz3l3]:hover{background-color:var(--btn-card-bg-hover)}.hover\:bg-\[var\(--btn-plain-bg-hover\)\][data-astro-cid-up4uz3l3]:hover{background-color:var(--btn-plain-bg-hover)}.hover\:bg-\[var\(--btn-regular-bg-hover\)\][data-astro-cid-up4uz3l3]:hover{background-color:var(--btn-regular-bg-hover)}.hover\:bg-\[var\(--enter-btn-bg-hover\)\][data-astro-cid-up4uz3l3]:hover{background-color:var(--enter-btn-bg-hover)}.hover\:bg-black\/50[data-astro-cid-up4uz3l3]:hover{background-color:#00000080}.hover\:bg-black\/70[data-astro-cid-up4uz3l3]:hover{background-color:#000000b3}.hover\:bg-black\/\[0\.06\][data-astro-cid-up4uz3l3]:hover{background-color:#0000000f}.hover\:pl-3[data-astro-cid-up4uz3l3]:hover{padding-left:.75rem}.hover\:pr-9[data-astro-cid-up4uz3l3]:hover{padding-right:2.25rem}.hover\:text-\[initial\][data-astro-cid-up4uz3l3]:hover{color:initial}.hover\:text-\[var\(--primary\)\][data-astro-cid-up4uz3l3]:hover{color:var(--primary)}.hover\:decoration-\[var\(--link-hover\)\][data-astro-cid-up4uz3l3]:hover{text-decoration-color:var(--link-hover)}.hover\:before\:scale-100[data-astro-cid-up4uz3l3]:hover:before{content:var(--tw-content);--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:before\:bg-\[var\(--btn-plain-bg-hover\)\][data-astro-cid-up4uz3l3]:hover:before{content:var(--tw-content);background-color:var(--btn-plain-bg-hover)}.focus\:w-60[data-astro-cid-up4uz3l3]:focus{width:15rem}.active\:w-60[data-astro-cid-up4uz3l3]:active{width:15rem}.active\:scale-90[data-astro-cid-up4uz3l3]:active{--tw-scale-x: .9;--tw-scale-y: .9;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.active\:scale-95[data-astro-cid-up4uz3l3]:active{--tw-scale-x: .95;--tw-scale-y: .95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.active\:scale-\[0\.85\][data-astro-cid-up4uz3l3]:active{--tw-scale-x: .85;--tw-scale-y: .85;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.active\:bg-\[oklch\(0\.55_0\.01_var\(--hue\)\)\][data-astro-cid-up4uz3l3]:active{background-color:oklch(.55 .01 var(--hue))}.active\:bg-\[var\(--btn-card-bg-active\)\][data-astro-cid-up4uz3l3]:active{background-color:var(--btn-card-bg-active)}.active\:bg-\[var\(--btn-plain-bg-active\)\][data-astro-cid-up4uz3l3]:active{background-color:var(--btn-plain-bg-active)}.active\:bg-\[var\(--btn-regular-bg-active\)\][data-astro-cid-up4uz3l3]:active{background-color:var(--btn-regular-bg-active)}.active\:bg-\[var\(--enter-btn-bg-active\)\][data-astro-cid-up4uz3l3]:active{background-color:var(--enter-btn-bg-active)}.active\:bg-black\/60[data-astro-cid-up4uz3l3]:active{background-color:#0009}.active\:bg-black\/80[data-astro-cid-up4uz3l3]:active{background-color:#000c}.active\:bg-none[data-astro-cid-up4uz3l3]:active{background-image:none}.active\:text-\[var\(--title-active\)\][data-astro-cid-up4uz3l3]:active{color:var(--title-active)}.active\:decoration-\[var\(--link-active\)\][data-astro-cid-up4uz3l3]:active{text-decoration-color:var(--link-active)}.active\:before\:bg-\[var\(--btn-plain-bg-active\)\][data-astro-cid-up4uz3l3]:active:before{content:var(--tw-content);background-color:var(--btn-plain-bg-active)}.group[data-astro-cid-up4uz3l3]:hover .group-hover\:h-5[data-astro-cid-up4uz3l3]{height:1.25rem}.group[data-astro-cid-up4uz3l3]:hover .group-hover\:translate-x-0[data-astro-cid-up4uz3l3]{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group[data-astro-cid-up4uz3l3]:hover .group-hover\:translate-x-1[data-astro-cid-up4uz3l3]{--tw-translate-x: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group[data-astro-cid-up4uz3l3]:hover .group-hover\:scale-100[data-astro-cid-up4uz3l3]{--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group[data-astro-cid-up4uz3l3]:hover .group-hover\:bg-\[var\(--primary\)\][data-astro-cid-up4uz3l3]{background-color:var(--primary)}.group[data-astro-cid-up4uz3l3]:hover .group-hover\:bg-black\/30[data-astro-cid-up4uz3l3]{background-color:#0000004d}.group[data-astro-cid-up4uz3l3]:hover .group-hover\:text-\[var\(--primary\)\][data-astro-cid-up4uz3l3]{color:var(--primary)}.group[data-astro-cid-up4uz3l3]:hover .group-hover\:opacity-100[data-astro-cid-up4uz3l3]{opacity:1}.group[data-astro-cid-up4uz3l3]:hover .group-hover\:outline-\[var\(--btn-plain-bg-hover\)\][data-astro-cid-up4uz3l3]{outline-color:var(--btn-plain-bg-hover)}.group[data-astro-cid-up4uz3l3]:active .group-active\:bg-black\/50[data-astro-cid-up4uz3l3]{background-color:#00000080}.group[data-astro-cid-up4uz3l3]:active .group-active\:text-\[var\(--primary\)\][data-astro-cid-up4uz3l3]{color:var(--primary)}.group[data-astro-cid-up4uz3l3]:active .group-active\:outline-\[var\(--btn-plain-bg-active\)\][data-astro-cid-up4uz3l3]{outline-color:var(--btn-plain-bg-active)}.dark\:border-white\/15[data-astro-cid-up4uz3l3]:is(.dark *){border-color:#ffffff26}.dark\:border-white\/\[0\.15\][data-astro-cid-up4uz3l3]:is(.dark *){border-color:#ffffff26}.dark\:bg-\[oklch\(0\.30_0\.02_var\(--hue\)\)\][data-astro-cid-up4uz3l3]:is(.dark *){background-color:oklch(.3 .02 var(--hue))}.dark\:bg-\[oklch\(0\.70_0\.10_0\)\][data-astro-cid-up4uz3l3]:is(.dark *){background-color:#d2849c}.dark\:bg-\[oklch\(0\.75_0\.14_var\(--hue\)\)\][data-astro-cid-up4uz3l3]:is(.dark *){background-color:oklch(.75 .14 var(--hue))}.dark\:bg-\[var\(--card-bg\)\][data-astro-cid-up4uz3l3]:is(.dark *){background-color:var(--card-bg)}.dark\:bg-\[var\(--primary\)\][data-astro-cid-up4uz3l3]:is(.dark *){background-color:var(--primary)}.dark\:bg-black[data-astro-cid-up4uz3l3]:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity))}.dark\:bg-black\/10[data-astro-cid-up4uz3l3]:is(.dark *){background-color:#0000001a}.dark\:bg-white\/10[data-astro-cid-up4uz3l3]:is(.dark *){background-color:#ffffff1a}.dark\:bg-white\/5[data-astro-cid-up4uz3l3]:is(.dark *){background-color:#ffffff0d}.dark\:fill-white\/75[data-astro-cid-up4uz3l3]:is(.dark *){fill:#ffffffbf}.dark\:text-\[var\(--deep-text\)\][data-astro-cid-up4uz3l3]:is(.dark *){color:var(--deep-text)}.dark\:text-black\/70[data-astro-cid-up4uz3l3]:is(.dark *){color:#000000b3}.dark\:text-neutral-100[data-astro-cid-up4uz3l3]:is(.dark *){--tw-text-opacity: 1;color:rgb(245 245 245 / var(--tw-text-opacity))}.dark\:text-neutral-300[data-astro-cid-up4uz3l3]:is(.dark *){--tw-text-opacity: 1;color:rgb(212 212 212 / var(--tw-text-opacity))}.dark\:text-neutral-400[data-astro-cid-up4uz3l3]:is(.dark *){--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity))}.dark\:text-neutral-50[data-astro-cid-up4uz3l3]:is(.dark *){--tw-text-opacity: 1;color:rgb(250 250 250 / var(--tw-text-opacity))}.dark\:text-white\/10[data-astro-cid-up4uz3l3]:is(.dark *){color:#ffffff1a}.dark\:text-white\/25[data-astro-cid-up4uz3l3]:is(.dark *){color:#ffffff40}.dark\:text-white\/30[data-astro-cid-up4uz3l3]:is(.dark *){color:#ffffff4d}.dark\:text-white\/5[data-astro-cid-up4uz3l3]:is(.dark *){color:#ffffff0d}.dark\:text-white\/50[data-astro-cid-up4uz3l3]:is(.dark *){color:#ffffff80}.dark\:text-white\/75[data-astro-cid-up4uz3l3]:is(.dark *){color:#ffffffbf}.dark\:text-white\/90[data-astro-cid-up4uz3l3]:is(.dark *){color:#ffffffe6}.dark\:text-white\/\[0\.2\][data-astro-cid-up4uz3l3]:is(.dark *){color:#fff3}.dark\:shadow-none[data-astro-cid-up4uz3l3]:is(.dark *){--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.dark\:focus-within\:bg-white\/10[data-astro-cid-up4uz3l3]:focus-within:is(.dark *){background-color:#ffffff1a}.dark\:hover\:bg-\[oklch\(0\.35_0\.03_var\(--hue\)\)\][data-astro-cid-up4uz3l3]:hover:is(.dark *){background-color:oklch(.35 .03 var(--hue))}.dark\:hover\:bg-white\/10[data-astro-cid-up4uz3l3]:hover:is(.dark *){background-color:#ffffff1a}.dark\:hover\:text-\[var\(--primary\)\][data-astro-cid-up4uz3l3]:hover:is(.dark *){color:var(--primary)}.dark\:active\:bg-\[oklch\(0\.40_0\.03_var\(--hue\)\)\][data-astro-cid-up4uz3l3]:active:is(.dark *){background-color:oklch(.4 .03 var(--hue))}.dark\:active\:text-\[var\(--title-active\)\][data-astro-cid-up4uz3l3]:active:is(.dark *){color:var(--title-active)}@media (min-width: 768px){.md\:absolute[data-astro-cid-up4uz3l3]{position:absolute}.md\:bottom-3[data-astro-cid-up4uz3l3]{bottom:.75rem}.md\:left-\[unset\][data-astro-cid-up4uz3l3]{left:unset}.md\:right-3[data-astro-cid-up4uz3l3]{right:.75rem}.md\:top-3[data-astro-cid-up4uz3l3]{top:.75rem}.md\:mx-0[data-astro-cid-up4uz3l3]{margin-left:0;margin-right:0}.md\:mb-0[data-astro-cid-up4uz3l3]{margin-bottom:0}.md\:mt-0[data-astro-cid-up4uz3l3]{margin-top:0}.md\:line-clamp-1[data-astro-cid-up4uz3l3]{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.md\:block[data-astro-cid-up4uz3l3]{display:block}.md\:inline[data-astro-cid-up4uz3l3]{display:inline}.md\:flex[data-astro-cid-up4uz3l3]{display:flex}.md\:hidden[data-astro-cid-up4uz3l3]{display:none}.md\:max-h-none[data-astro-cid-up4uz3l3]{max-height:none}.md\:w-\[10\%\][data-astro-cid-up4uz3l3]{width:10%}.md\:w-\[15\%\][data-astro-cid-up4uz3l3]{width:15%}.md\:w-\[30rem\][data-astro-cid-up4uz3l3]{width:30rem}.md\:w-\[65\%\][data-astro-cid-up4uz3l3]{width:65%}.md\:w-\[80\%\][data-astro-cid-up4uz3l3]{width:80%}.md\:w-\[calc\(100\%_-_52px_-_12px\)\][data-astro-cid-up4uz3l3]{width:calc(100% - 64px)}.md\:w-\[calc\(100\%_-_var\(--coverWidth\)_-_12px\)\][data-astro-cid-up4uz3l3]{width:calc(100% - var(--coverWidth) - 12px)}.md\:w-\[var\(--coverWidth\)\][data-astro-cid-up4uz3l3]{width:var(--coverWidth)}.md\:max-w-\[65\%\][data-astro-cid-up4uz3l3]{max-width:65%}.md\:flex-row[data-astro-cid-up4uz3l3]{flex-direction:row}.md\:flex-col[data-astro-cid-up4uz3l3]{flex-direction:column}.md\:gap-4[data-astro-cid-up4uz3l3]{gap:1rem}.md\:bg-transparent[data-astro-cid-up4uz3l3]{background-color:transparent}.md\:px-4[data-astro-cid-up4uz3l3]{padding-left:1rem;padding-right:1rem}.md\:px-9[data-astro-cid-up4uz3l3]{padding-left:2.25rem;padding-right:2.25rem}.md\:py-0[data-astro-cid-up4uz3l3]{padding-top:0;padding-bottom:0}.md\:pl-9[data-astro-cid-up4uz3l3]{padding-left:2.25rem}.md\:pr-2[data-astro-cid-up4uz3l3]{padding-right:.5rem}.md\:pt-7[data-astro-cid-up4uz3l3]{padding-top:1.75rem}.md\:text-\[16px\][data-astro-cid-up4uz3l3]{font-size:16px}.md\:text-\[2\.5rem\]\/\[2\.75rem\][data-astro-cid-up4uz3l3]{font-size:2.5rem;line-height:2.75rem}.md\:before\:block[data-astro-cid-up4uz3l3]:before{content:var(--tw-content);display:block}.md\:before\:w-1[data-astro-cid-up4uz3l3]:before{content:var(--tw-content);width:.25rem}}@media (min-width: 1024px){.lg\:col-span-1[data-astro-cid-up4uz3l3]{grid-column:span 1 / span 1}.lg\:row-start-1[data-astro-cid-up4uz3l3]{grid-row-start:1}.lg\:row-end-2[data-astro-cid-up4uz3l3]{grid-row-end:2}.lg\:mx-0[data-astro-cid-up4uz3l3]{margin-left:0;margin-right:0}.lg\:mt-0[data-astro-cid-up4uz3l3]{margin-top:0}.lg\:block[data-astro-cid-up4uz3l3]{display:block}.lg\:flex[data-astro-cid-up4uz3l3]{display:flex}.lg\:hidden[data-astro-cid-up4uz3l3]{display:none}.lg\:w-full[data-astro-cid-up4uz3l3]{width:100%}.lg\:max-w-\[17\.5rem\][data-astro-cid-up4uz3l3]{max-width:17.5rem}.lg\:max-w-none[data-astro-cid-up4uz3l3]{max-width:none}.lg\:grid-rows-\[auto\][data-astro-cid-up4uz3l3]{grid-template-rows:auto}.lg\:first-of-type\:mt-0[data-astro-cid-up4uz3l3]:first-of-type{margin-top:0}} diff --git a/_astro/_page_.DG06Tsis.css b/_astro/_page_.DG06Tsis.css new file mode 100644 index 0000000..099f582 --- /dev/null +++ b/_astro/_page_.DG06Tsis.css @@ -0,0 +1 @@ +@import"//cdn.imsun.org/lxgw-wenkai-screen-webfont/lxgwwenkaigbscreen.css";.back-to-top-wrapper[data-astro-cid-eymb5ayk]{width:3.75rem;height:3.75rem;position:absolute;right:0;top:0}.back-to-top-btn[data-astro-cid-eymb5ayk]{color:var(--primary);font-size:2.25rem;font-weight:700;border:none;position:fixed;bottom:15rem;opacity:1;cursor:pointer;transform:translate(5rem)}.back-to-top-btn[data-astro-cid-eymb5ayk] i[data-astro-cid-eymb5ayk]{font-size:1.75rem}.back-to-top-btn[data-astro-cid-eymb5ayk].hide{transform:translate(5rem) scale(.9);opacity:0;pointer-events:none}.back-to-top-btn[data-astro-cid-eymb5ayk]:active{transform:translate(5rem) scale(.9)}.collapsed[data-astro-cid-ucso7hve]{height:var(--collapsedHeight)}*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Roboto,sans-serif,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.card-base{overflow:hidden;border-radius:var(--radius-large);background-color:var(--card-bg);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}h1,h2,h3,h4,h5,h6,p,a,span,li,ul,ol,blockquote,code,pre,table,th,td,strong{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.card-shadow{--tw-drop-shadow: drop-shadow(0 2px 4px rgba(0,0,0,.005));filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.expand-animation{position:relative;z-index:0}.expand-animation:before{position:absolute;inset:0;z-index:-10;--tw-scale-x: .85;--tw-scale-y: .85;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));border-radius:inherit;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;content:var(--tw-content);transition-timing-function:cubic-bezier(0,0,.2,1)}.expand-animation:hover:before{--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));content:var(--tw-content);background-color:var(--btn-plain-bg-hover)}.expand-animation:active{background-image:none}.expand-animation:active:before{content:var(--tw-content);background-color:var(--btn-plain-bg-active)}.\!link{position:relative;z-index:0}.\!link:before{position:absolute;inset:0;z-index:-10;--tw-scale-x: .85;--tw-scale-y: .85;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));border-radius:inherit;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;content:var(--tw-content);transition-timing-function:cubic-bezier(0,0,.2,1)}.\!link:hover:before{--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));content:var(--tw-content);background-color:var(--btn-plain-bg-hover)}.\!link:active{background-image:none}.\!link:active:before{content:var(--tw-content);background-color:var(--btn-plain-bg-active)}.\!link{margin:-.25rem;border-radius:.375rem;padding:.25rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.link{position:relative;z-index:0}.link:before{position:absolute;inset:0;z-index:-10;--tw-scale-x: .85;--tw-scale-y: .85;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));border-radius:inherit;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;content:var(--tw-content);transition-timing-function:cubic-bezier(0,0,.2,1)}.link:hover:before{--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));content:var(--tw-content);background-color:var(--btn-plain-bg-hover)}.link:active{background-image:none}.link:active:before{content:var(--tw-content);background-color:var(--btn-plain-bg-active)}.link{margin:-.25rem;border-radius:.375rem;padding:.25rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.link-lg{position:relative;z-index:0}.link-lg:before{position:absolute;inset:0;z-index:-10;--tw-scale-x: .85;--tw-scale-y: .85;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));border-radius:inherit;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;content:var(--tw-content);transition-timing-function:cubic-bezier(0,0,.2,1)}.link-lg:hover:before{--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));content:var(--tw-content);background-color:var(--btn-plain-bg-hover)}.link-lg:active{background-image:none}.link-lg:active:before{content:var(--tw-content);background-color:var(--btn-plain-bg-active)}.link-lg{margin:-.375rem;border-radius:.375rem;padding:.375rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.float-panel{top:5.25rem;overflow:hidden;border-radius:var(--radius-large);background-color:var(--float-panel-bg);--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.float-panel:is(.dark *){--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.float-panel-closed{pointer-events:none;--tw-translate-y: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));opacity:0}.search-panel mark{background-color:transparent;color:var(--primary)}.btn-card{display:flex;align-items:center;justify-content:center;background-color:var(--card-bg);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.btn-card:hover{background-color:var(--btn-card-bg-hover)}.btn-card:active{background-color:var(--btn-card-bg-active)}.btn-card.disabled{pointer-events:none;color:#0000001a}.btn-card.disabled:is(.dark *){color:#ffffff1a}.btn-plain{position:relative;display:flex;align-items:center;justify-content:center;background-image:none;color:#000000bf;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.btn-plain:hover{color:var(--primary)}.btn-plain:is(.dark *){color:#ffffffbf}.btn-plain:hover:is(.dark *){color:var(--primary)}.btn-plain:not(.scale-animation):hover{background-color:var(--btn-plain-bg-hover)}.btn-plain:not(.scale-animation):active{background-color:var(--btn-plain-bg-active)}.btn-plain.scale-animation{position:relative;z-index:0}.btn-plain.scale-animation:before{position:absolute;inset:0;z-index:-10;--tw-scale-x: .85;--tw-scale-y: .85;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));border-radius:inherit;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;content:var(--tw-content);transition-timing-function:cubic-bezier(0,0,.2,1)}.btn-plain.scale-animation:hover:before{--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));content:var(--tw-content);background-color:var(--btn-plain-bg-hover)}.btn-plain.scale-animation:active{background-image:none}.btn-plain.scale-animation:active:before{content:var(--tw-content);background-color:var(--btn-plain-bg-active)}.btn-plain.scale-animation.current-theme-btn{color:var(--primary)}.btn-plain.scale-animation.current-theme-btn:before{--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));background-color:var(--btn-plain-bg-hover);content:var(--tw-content);opacity:1}.btn-regular{display:flex;align-items:center;justify-content:center;background-color:var(--btn-regular-bg);color:var(--btn-content);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.btn-regular:hover{background-color:var(--btn-regular-bg-hover)}.btn-regular:active{background-color:var(--btn-regular-bg-active)}.btn-regular:is(.dark *){color:#ffffffbf}.link-underline{text-decoration-line:underline;text-decoration-color:var(--link-underline);text-decoration-style:dashed;text-decoration-thickness:2px;text-underline-offset:.25rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.link-underline:hover{text-decoration-color:var(--link-hover)}.link-underline:active{text-decoration-color:var(--link-active)}.text-90{color:#000000e6}.text-90:is(.dark *){color:#ffffffe6}.text-75{color:#000000bf}.text-75:is(.dark *){color:#ffffffbf}.text-50{color:#00000080}.text-50:is(.dark *){color:#ffffff80}.text-30{color:#0000004d}.text-30:is(.dark *){color:#ffffff4d}.text-25{color:#00000040}.text-25:is(.dark *){color:#ffffff40}html.is-changing .transition-swup-fade{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s}html.is-animating .transition-swup-fade{--tw-translate-y: 1rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));opacity:0}.pswp__button{margin-right:0!important;display:flex!important;height:3rem!important;width:3rem!important;align-items:center!important;justify-content:center!important;background-color:#0006!important;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter!important;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter!important;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important;transition-duration:.15s!important}.pswp__button:hover{background-color:#00000080!important}.pswp__button:active{background-color:#0009!important}.pswp__button--zoom,.pswp__button--close{margin-top:1rem!important;border-radius:.75rem!important}.pswp__button--zoom:active,.pswp__button--close:active{--tw-scale-x: .9 !important;--tw-scale-y: .9 !important;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))!important}.pswp__button--zoom{margin-right:.625rem!important}.pswp__button--close{margin-right:1rem!important}.custom-md img,#post-cover img{cursor:zoom-in}@keyframes fade-in-up{0%{transform:translateY(2rem);opacity:0}to{transform:translateY(0);opacity:1}}.onload-animation{opacity:0;animation:.3s fade-in-up;animation-fill-mode:forwards}#navbar{animation-delay:0ms}#sidebar{animation-delay:.1s}#content-wrapper{animation-delay:var(--content-delay)}.footer{animation-delay:.25s}#banner-credit{animation-delay:.4s}body{font-family:LXGW WenKai Screen,sans-serif}:root{--radius-large: 1rem;--banner-height-home: 65vh;--banner-height: 35vh;--content-delay: .15s}@supports (color: oklch(0 0 0)){:root{--primary: oklch(.7 .14 var(--hue));--page-bg: oklch(.95 .01 var(--hue));--card-bg: white;--btn-content: oklch(.55 .12 var(--hue));--btn-regular-bg: oklch(.95 .025 var(--hue));--btn-regular-bg-hover: oklch(.9 .05 var(--hue));--btn-regular-bg-active: oklch(.85 .08 var(--hue));--btn-plain-bg-hover: oklch(.95 .025 var(--hue));--btn-plain-bg-active: oklch(.98 .01 var(--hue));--btn-card-bg-hover: oklch(.98 .005 var(--hue));--btn-card-bg-active: oklch(.9 .03 var(--hue));--enter-btn-bg: var(--btn-regular-bg);--enter-btn-bg-hover: var(--btn-regular-bg-hover);--enter-btn-bg-active: var(--btn-regular-bg-active);--deep-text: oklch(.25 .02 var(--hue));--title-active: oklch(.6 .1 var(--hue));--line-divider: rgba(0,0,0,.08);--line-color: rgba(0,0,0,.1);--meta-divider: rgba(0,0,0,.2);--inline-code-bg: var(--btn-regular-bg);--inline-code-color: var(--btn-content);--selection-bg: oklch(.9 .05 var(--hue));--codeblock-selection: oklch(.4 .08 var(--hue));--codeblock-bg: oklch(.2 .015 var(--hue));--license-block-bg: rgba(0,0,0,.03);--link-underline: oklch(.93 .04 var(--hue));--link-hover: oklch(.95 .025 var(--hue));--link-active: oklch(.9 .05 var(--hue));--float-panel-bg: white;--scrollbar-bg-light: rgba(0,0,0,.4);--scrollbar-bg-hover-light: rgba(0,0,0,.5);--scrollbar-bg-active-light: rgba(0,0,0,.6);--scrollbar-bg-dark: rgba(255,255,255,.4);--scrollbar-bg-hover-dark: rgba(255,255,255,.5);--scrollbar-bg-active-dark: rgba(255,255,255,.6);--scrollbar-bg: var(--scrollbar-bg-light);--scrollbar-bg-hover: var(--scrollbar-bg-hover-light);--scrollbar-bg-active: var(--scrollbar-bg-active-light);--color-selection-bar: linear-gradient(to right, oklch(.8 .1 0), oklch(.8 .1 30), oklch(.8 .1 60), oklch(.8 .1 90), oklch(.8 .1 120), oklch(.8 .1 150), oklch(.8 .1 180), oklch(.8 .1 210), oklch(.8 .1 240), oklch(.8 .1 270), oklch(.8 .1 300), oklch(.8 .1 330), oklch(.8 .1 360));--display-light-icon: 1;--display-dark-icon: 0;--admonitions-color-tip: oklch(.7 .14 180);--admonitions-color-note: oklch(.7 .14 250);--admonitions-color-important: oklch(.7 .14 310);--admonitions-color-warning: oklch(.7 .14 60);--admonitions-color-caution: oklch(.6 .2 25)}:root.dark{--primary: oklch(.75 .14 var(--hue));--page-bg: oklch(.16 .014 var(--hue));--card-bg: oklch(.23 .015 var(--hue));--btn-content: oklch(.75 .1 var(--hue));--btn-regular-bg: oklch(.33 .035 var(--hue));--btn-regular-bg-hover: oklch(.38 .04 var(--hue));--btn-regular-bg-active: oklch(.43 .045 var(--hue));--btn-plain-bg-hover: oklch(.3 .035 var(--hue));--btn-plain-bg-active: oklch(.27 .025 var(--hue));--btn-card-bg-hover: oklch(.3 .03 var(--hue));--btn-card-bg-active: oklch(.35 .035 var(--hue));--line-divider: rgba(255,255,255,.08);--line-color: rgba(255,255,255,.1);--meta-divider: rgba(255,255,255,.2);--selection-bg: oklch(.4 .08 var(--hue));--codeblock-bg: oklch(.17 .015 var(--hue));--license-block-bg: var(--codeblock-bg);--link-underline: oklch(.4 .08 var(--hue));--link-hover: oklch(.4 .08 var(--hue));--link-active: oklch(.35 .07 var(--hue));--float-panel-bg: oklch(.19 .015 var(--hue));--scrollbar-bg: var(--scrollbar-bg-dark);--scrollbar-bg-hover: var(--scrollbar-bg-hover-dark);--scrollbar-bg-active: var(--scrollbar-bg-active-dark);--color-selection-bar: linear-gradient(to right, oklch(.7 .1 0), oklch(.7 .1 30), oklch(.7 .1 60), oklch(.7 .1 90), oklch(.7 .1 120), oklch(.7 .1 150), oklch(.7 .1 180), oklch(.7 .1 210), oklch(.7 .1 240), oklch(.7 .1 270), oklch(.7 .1 300), oklch(.7 .1 330), oklch(.7 .1 360));--display-light-icon: 0;--display-dark-icon: 1;--admonitions-color-tip: oklch(.75 .14 180);--admonitions-color-note: oklch(.75 .14 250);--admonitions-color-important: oklch(.75 .14 310);--admonitions-color-warning: oklch(.75 .14 60);--admonitions-color-caution: oklch(.65 .2 25)}}@supports not (color: oklch(0 0 0)){:root{--primary: #53a3f2;--page-bg: #eaeff5;--card-bg: white;--btn-content: #3275b4;--btn-regular-bg: #e2f0ff;--btn-regular-bg-hover: #c6e1ff;--btn-regular-bg-active: #a6d2ff;--btn-plain-bg-hover: #e2f0ff;--btn-plain-bg-active: #f4f9ff;--btn-card-bg-hover: #f6f9fc;--btn-card-bg-active: #d0e0f2;--enter-btn-bg: var(--btn-regular-bg);--enter-btn-bg-hover: var(--btn-regular-bg-hover);--enter-btn-bg-active: var(--btn-regular-bg-active);--deep-text: #1a222b;--title-active: #4f84ba;--line-divider: rgba(0,0,0,.08);--line-color: rgba(0,0,0,.1);--meta-divider: rgba(0,0,0,.2);--inline-code-bg: var(--btn-regular-bg);--inline-code-color: var(--btn-content);--selection-bg: #c6e1ff;--codeblock-selection: #224a71;--codeblock-bg: #11171d;--license-block-bg: rgba(0,0,0,.03);--link-underline: #d4ebff;--link-hover: #e2f0ff;--link-active: #c6e1ff;--float-panel-bg: white;--scrollbar-bg-light: rgba(0,0,0,.4);--scrollbar-bg-hover-light: rgba(0,0,0,.5);--scrollbar-bg-active-light: rgba(0,0,0,.6);--scrollbar-bg-dark: rgba(255,255,255,.4);--scrollbar-bg-hover-dark: rgba(255,255,255,.5);--scrollbar-bg-active-dark: rgba(255,255,255,.6);--scrollbar-bg: var(--scrollbar-bg-light);--scrollbar-bg-hover: var(--scrollbar-bg-hover-light);--scrollbar-bg-active: var(--scrollbar-bg-active-light);--color-selection-bar: linear-gradient(to right, oklch(.8 .1 0), oklch(.8 .1 30), oklch(.8 .1 60), oklch(.8 .1 90), oklch(.8 .1 120), oklch(.8 .1 150), oklch(.8 .1 180), oklch(.8 .1 210), oklch(.8 .1 240), oklch(.8 .1 270), oklch(.8 .1 300), oklch(.8 .1 330), oklch(.8 .1 360));--display-light-icon: 1;--display-dark-icon: 0;--admonitions-color-tip: #53a3f2;--admonitions-color-note: #53a3f2;--admonitions-color-important: #53a3f2;--admonitions-color-warning: #53a3f2;--admonitions-color-caution: #0081f1}:root.dark{--primary: #63b3ff;--page-bg: #090e13;--card-bg: #181e24;--btn-content: #7cb3eb;--btn-regular-bg: #283747;--btn-regular-bg-hover: #324457;--btn-regular-bg-active: #3d5268;--btn-plain-bg-hover: #202f3f;--btn-plain-bg-active: #1d2732;--btn-card-bg-hover: #222f3c;--btn-card-bg-active: #2d3c4c;--line-divider: rgba(255,255,255,.08);--line-color: rgba(255,255,255,.1);--meta-divider: rgba(255,255,255,.2);--selection-bg: #224a71;--codeblock-bg: #0a1016;--license-block-bg: var(--codeblock-bg);--link-underline: #224a71;--link-hover: #224a71;--link-active: #1b3c5d;--float-panel-bg: #0f141a;--scrollbar-bg: var(--scrollbar-bg-dark);--scrollbar-bg-hover: var(--scrollbar-bg-hover-dark);--scrollbar-bg-active: var(--scrollbar-bg-active-dark);--color-selection-bar: linear-gradient(to right, oklch(.7 .1 0), oklch(.7 .1 30), oklch(.7 .1 60), oklch(.7 .1 90), oklch(.7 .1 120), oklch(.7 .1 150), oklch(.7 .1 180), oklch(.7 .1 210), oklch(.7 .1 240), oklch(.7 .1 270), oklch(.7 .1 300), oklch(.7 .1 330), oklch(.7 .1 360));--display-light-icon: 0;--display-dark-icon: 1;--admonitions-color-tip: #63b3ff;--admonitions-color-note: #63b3ff;--admonitions-color-important: #63b3ff;--admonitions-color-warning: #63b3ff;--admonitions-color-caution: #0091ff}}::-moz-selection{background-color:var(--selection-bg)}::selection{background-color:var(--selection-bg)}.scrollbar-base.os-scrollbar{transition:width .15s ease-in-out,height .15s ease-in-out,opacity .15s,visibility .15s,top .15s,right .15s,bottom .15s,left .15s;pointer-events:unset}.scrollbar-base.os-scrollbar.os-scrollbar-horizontal{padding-top:4px;padding-bottom:4px;height:16px}.scrollbar-base.os-scrollbar.os-scrollbar-horizontal .os-scrollbar-track .os-scrollbar-handle{height:4px;border-radius:4px}.scrollbar-base.os-scrollbar.os-scrollbar-horizontal:hover .os-scrollbar-track .os-scrollbar-handle{height:8px}.scrollbar-base.os-scrollbar.os-scrollbar-horizontal.px-2{padding-left:8px;padding-right:8px}.scrollbar-base.os-scrollbar.os-scrollbar-vertical{padding-left:4px;padding-right:4px;width:16px}.scrollbar-base.os-scrollbar.os-scrollbar-vertical .os-scrollbar-track .os-scrollbar-handle{width:4px;border-radius:4px}.scrollbar-base.os-scrollbar.os-scrollbar-vertical:hover .os-scrollbar-track .os-scrollbar-handle{width:8px}.scrollbar-base.os-scrollbar.os-scrollbar-vertical.py-1{padding-top:4px;padding-bottom:4px}.scrollbar-auto.os-scrollbar{--os-handle-bg: var(--scrollbar-bg);--os-handle-bg-hover: var(--scrollbar-bg-hover);--os-handle-bg-active: var(--scrollbar-bg-active)}.scrollbar-dark.os-scrollbar{--os-handle-bg: var(--scrollbar-bg-dark);--os-handle-bg-hover: var(--scrollbar-bg-hover-dark);--os-handle-bg-active: var(--scrollbar-bg-active-dark)}.scrollbar-light.os-scrollbar{--os-handle-bg: var(--scrollbar-bg-light);--os-handle-bg-hover: var(--scrollbar-bg-hover-light);--os-handle-bg-active: var(--scrollbar-bg-active-light)}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/roboto-cyrillic-ext-400-normal.D76n7Daw.woff2) format("woff2"),url(/_astro/roboto-cyrillic-ext-400-normal.b0JluIOJ.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/roboto-cyrillic-400-normal.BiRJyiea.woff2) format("woff2"),url(/_astro/roboto-cyrillic-400-normal.JN0iKxGs.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:400;src:url(data:font/woff2;base64,d09GMgABAAAAAAXYABIAAAAACgAAAAV8AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhQbHhw0BmAAXghUCYM8EQwKg2iDTgsUABIUATYCJAMkBCAFgnQHIAyCSRucCFFUkDIBfhzkZKcmnOCkolAQnoSyxYqFpYXieXb+xgO83X+ee8cPWukL624junMJs9RsoCpuxSopamF+Pi97f6xC6QrJFHRKpFCmII8L4C95A3y0rJouCIdkJgncD/oHj/4Ptd1Rm0IYXCtKb1yQDmO4797U2dlr/Om01LkOVpT2L12pLVa73QtgLIKxr2n9efiAIhiyAGBi25Coekds8qZninvglyCgAwhKQRDQspY1tF9oNA0iKTQN4IRtO0c8LdtzW2orwfLCWqaCzZfl11dfBsTdnaQ3h2kZ2eOZEwgbeF/yBVwQgZ2DvRwJfK0Dj4wLA3+w4XAB/M8FxYoIY9AzkO6S7TOGwEWk2ZbiCu/nOQToKUU5oq4x6zbE1HUGA3Rl83vzuil5fuJX+RchWrDatW53jdtwnlgZhpwlhXP0dtJr7vYxsPT/PLq40lhiT5ruQpdOGGT7LM3N6cMWw/ws9PIfIIcEwLJDUR3FYQgfiUJzxskPq2Qy1ggbiezOIJylETciLCiNZCMFSKaDJqeFHmOPg5ePsYC2syXS6aE6P7V6nJwhSOIdAc0Ke4n7Xb8SyWqkqXiaf5zcKrRPwvfqdPtrZBtL2slMnRuMa42LvcxYpRRZvA/n8T7tUCIaeZ2q3j7uEhVDkc8XZrrMEm9RfK85lv64HemnFa6lmfuYFI7x/oVR8InaSyj5acula+ve+LU96YKCxZUXd9MwGtXGUoutAUxK5q2NmLMD2mz+aZ2N4WzsRo9j+buXk1pEpRttzy1KfocMeUz6dmDs9k7cweWb9rsbsde9m5w+h/OOcb2wOG7o3RICJCrFpqEEFRhZH9oDuAjooYPPICPCo0jTpMlTRj1BOey1KZvbSstFFVnKclSBPKn7/nPJ6C8PU1DPT6+kYz8/gBNueLjm39PQ/QP9dT+ltmVK4aRWsRS+SabvokUfQ1Z/zGWygF8Mr9+/8b206dV6Ljp9GGVza+Jnt9+d8hVurXeJt93vjq6U3ZwJkOx4aa9k2z3+d04j7me6E29d13G+Vvxzc/2x9y4pOP96WSx98PKAi/qn3un2CdsyOa1xdLjn/jNOzIUF+AcAFPL/LuBa/t/+/00Wx7+LZarhcLSj7qhqn2s859Wt3etQ2/+kfRxqzc5ou8fJDwOT0QDzOKLLr2WqruDlpp0t2a9YhvLuvI6qnb1VNjpkZXJDl/FYKm5xTmMZ2tdaepL9fasvEPAi1srweZuqi+ubWBAA9duqOh3Aq2fXLZ48tfLYbwcI6FRFSox5GgsC4uTo+6gDX3L73r+JVpUAH39Qk4BvUOKXX+7fO5WxrANQiSBQXPZPRnXwL6t/kZURIvyq5E7nKYd/+oHsWlclBNZezqf/HAGhco/laHwB9IjiFIGA0gW4QlrhDPtsR9DxoiPqeXgx8S2mzZGZYXLk1qLzPbQCLlIvLSaeKN70nUj5TPIVKsUgsWqVoFQqU4hRrQ6jDiVahCAhYiUJsZwjklEiVgFWPdZyiRglGlTKVysFo1adMqxqRNRGB07ceCHMeI4bn835eBCWSYtaZUqUqmdxhRPCsFgl1zMIEaoVIhECVMoeIbGn6hD5JrKmH9WIUYTEBZpLoIi4tu4srS3CQRWXBjxE2jOODD23Tq8ZEC06EsK9yPGl5oa3Y1q4+6JJksQg5/nLSZoT4710FclcN06s6pO8JjvU0YoUM1dnec4lZWdJvIclqegQ1wVLSasxL8rVZtzuOy/2LOk8wKOF3qSrG3TEOel5b59dOyR9f+fF65a2B/EBlR2CR1LhYu2/fT32swx1OFfBLqCUehyHLE7hXvwPdkoD9sNc7GoobUO8bPge7JR6nItTeA3/g5/SgNk+RYQ6q0mgOgA=) format("woff2"),url(data:font/woff;base64,d09GRgABAAAAAATkAA4AAAAABXwAAQABAAAAAAAAAAAAAAAAAAAAAAAAAABHREVGAAABRAAAABQAAAAUAA8ACUdQT1MAAAFYAAAAHgAAAB5EdEx1R1NVQgAAAXgAAAAzAAAANJMNggJPUy8yAAABrAAAAEsAAABgdAng+GNtYXAAAAH4AAAAQAAAAF4+Y+J/Z2FzcAAAAjgAAAAMAAAADAAIABNnbHlmAAACRAAAARQAAAEUnMz0sGhlYWQAAANYAAAANgAAADb8atJ6aGhlYQAAA5AAAAAfAAAAJAq6BalobXR4AAADsAAAAB8AAAAkF+P/e2xvY2EAAAPQAAAAEwAAABQBMQGDbWF4cAAAA+QAAAAcAAAAIAArAOVuYW1lAAAEAAAAAM4AAAF0G504anBvc3QAAATQAAAAEwAAACD/bQBkAAEAAAAMAAAAAAAAAAEACAABAAEAAQAAAAoAHAAcAAFERkxUAAgABAAAAAD//wAAAAAAAHjaY2BkYGDgYjACQhYXN58QBrnkyqIcBqn0otRsBqmcxJI8BikGEGABEf//g0gA3Y0JHgB42iXFsRFAMAAAwE8ijCE76FQ6lbNFRlGr01jBKhZyCt+81B3hlMktT4TxPz1qRASwkABg3ffVwrj1XurQoiJc0M35VhTpA+O9Ck4AeNpjYGBgAmJmIBYBkoxgmoXBC0jzMXAA5djAKngZFBgWyPv+/w/kofBBOv5/+//kf/qD3WDdPAwIwAQA0KYN+QABAAIACAAC//8ADwAFAGQAAAMoBbAAAwAGAAkADAAPAAAhIREhAxEBAREBAyEBNQEhAyj9PALENv7u/roBDOQCA/7+AQL9/QWw+qQFB/19Anf7EQJ4/V4CXogCXgAAAgB2/+wFCQXEABEAHwAAARQCBCMiJAInNTQSJDMyBBIVJxACIyICBxUUEjMyEjcFCZD++LCs/vaTApIBC6yvAQuQv9C7ttED07m6zAMCqdb+waipATnOadIBQqup/r/VAgEDARX+6/Zr+/7hAQ/9AAIAbwRwAskF1gAFAA0AAAETMxUDIwEzFRYXByY1AZF0xN9Z/t6oA1BJsgSUAUIV/sMBUlt7VTtfu////jL/7AVPBdYAJgAFRgAABwAG/cMAAAABAAAAAiMSo8X+nl8PPPUAGQgAAAAAAMTwES4AAAAA1QFS9Pob/dUJMAhzAAAACQACAAAAAAAAeNpjYGRgYM/5x8PAwOn5S/qfF6cBUAQVcAIAb4cEcQB42mPuYUhhgALG3xDM2sBQxqzAkA9mH/tnBABopAdwAHjaY2Bg0ITDRIY6IOwCABGeArUAeNpjYGRgYOBk6GcQYwhhYAXzEICNgREAGIoBEXjaXY4BBgJRFEVPVSnSCkIgoKkKUSBJIqESIKp+05BpzFRpI62gBbTErvGNkes+977nfB8ocSJHJl8GtnxtzlDhY3OWKm+bc6l9PpULNAhsLlJjbXNVCc7cpIABLekZy2FHIB90NWpXQlxdL3jaGXwizUibOTPGTFiw0mzSxaHNUsRevslNNSP6LnpHyEYtFOvp5lOPiQ49+gzj1lbr/zHp98ZywEtbDxf9PqE6SlOukivOqM3wOeAojbhIdZYJFcXNEMkhD80jzg9HQTQoAAB42mNgZgCD/1kMKQxYAAAqHwHRAA==) format("woff");unicode-range:U+1F00-1FFF}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/roboto-greek-400-normal.LPh2sqOm.woff2) format("woff2"),url(/_astro/roboto-greek-400-normal.IIc_WWwF.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/roboto-vietnamese-400-normal.DhTUfTw_.woff2) format("woff2"),url(/_astro/roboto-vietnamese-400-normal.D5pJwT9g.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/roboto-latin-ext-400-normal.DgXbz5gU.woff2) format("woff2"),url(/_astro/roboto-latin-ext-400-normal.BSFkPfbf.woff) format("woff");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/roboto-latin-400-normal.DXyFPIdK.woff2) format("woff2"),url(/_astro/roboto-latin-400-normal.BVyCgWwA.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/roboto-cyrillic-ext-500-normal.BJvL3D7h.woff2) format("woff2"),url(/_astro/roboto-cyrillic-ext-500-normal.37WQE4S0.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/roboto-cyrillic-500-normal._hamcpv8.woff2) format("woff2"),url(/_astro/roboto-cyrillic-500-normal.YnJLGrUm.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:500;src:url(data:font/woff2;base64,d09GMgABAAAAAAXwABIAAAAACiQAAAWUAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhQbHhw0BmAAXghcCYM8EQwKg3CDVwsUABIUATYCJAMkBCAFgwAHIAyCUxvDCECO0yW2MxHcwQN9m/Zmd7GAt056LBXDUnN6hagTcSJGKmInrhNO9dPUA1Hd9gmGUIldvZjF5GpN7d6GXSYqHkE4sOrvQ/cXxAKTi9BxlRWyDoCEqmRbISus7GNs4WxzgFD/DgjABgAIzAgEAsgim2xELLe4GjMaQCYDwDcsZCHaXqd07tw0yNSeTcmBQT/YvmV4O4DU1ap2ifgNAxguMywC4RuWqS/T3YC1DIiaVIC3Iu+W5RGFr8TIGLrHZQo64moAbaVBoqOjKqHGnvGoCJ6vUQgcmFEwAgp2dK7xlZzVFgqIXTN/ZD7L9Hz0yD35VwEU5vMc53IV5/Idm6TZq1arUm2lcRvPAuPH2hivXI4rs4J97GI8qh+rtpLx2pm4DJLxxslMMD6JS2nEY9IwGD9AAEiCRdJSXj8qxFmJB0XmqIxNG7WorS0hKYK6Hu+LSdEWkkpQivn+kFSDeq5UZ+VW1s9I6KfppxV0nabn6r3tXVKbZSnrVcnTEhFdUpU+XVIdv4wmvNP0ZCKxMiQ1RTItc1oCinq/Clk/dVb/h6QhWLS3Oru8vqJeHoh5ZTRmJ/n9elw+SczIJ8MCfyIRksazpHuNvX2TzxdMo8b5IWnWwaoCi7peEu80vHOGXx4IA97TZiSGIE+2fFDgA6KdUp0Vj/kD5Tx2YMO9VhiEmEl4V3vEQtISLKqqj8dQtT8xmBWUwbgFKwktsgVH54gT+mkt9nooikbnN3OiGltMUP1qJOGVMzgLpH7iQRdU8To77UEZrYt1GjIaIrZ5EGKx8GwECmaUTAYnABYAPPvSmkB6iIPYBt7BwFvViQKSWU2dO90Ooznvvdu5Y3dvv3mgydkvBvC7HHjro6zTPnmnVhx899MzP367pvrgO/HLvFXNgbetp78pdjdaqV/dVl6vqX5DzH0Wg3xWTTZhMLkPxbf9aN3+6bWqaD4hmtVUxSfpN84/1XPHPaPj77hoHS9Vvn5RHH5yl+e2C6O89p/2y/3ilhseRHxT/dPDhptuuTfzR/6UxZek1r464fO1zYGq0VZlV1G8LO/uxOMzmI0hF0wY/78POABjJ/OdocvwZtrmcrs9K6TNJXlpKzPKLJfaX0ISj1Qi3lFFX5soBDWurrSmIFtIG3bkJpl5VGa9l7aR5PaDFJd0vJezIK359ABacrx6YlPaiEa0M6TNNTpeyKxAvf8t728Amp93ac4CpDUitZckFklemiKJTB60LmkCExPbrIg0+pogAJvFpIGiGDXFBAJQZnjuPl6+ttW5+nfzFDMAz/7kDgO8Liq/+2fm/6/PJvNmwIICgADT4JgNLAN89dj6FghmF4t6Bl0KYiyvMByjuwfpwd7nubFsBGDhbCZSyoAAwAEKSg5GBGCmm4rQLECLRzuTYCrXmRQcXNCscpo1MBmYzbBkBEW15Ni/HHptscWIlUSIsH35PWHajWjXqVdSmJRNekQY1KdT0rDNkjaLUKzABnGlqsSFWEiYHCqldEjZIiVEiaQufbYaUitpk836pAzTJaYvYBHLWIWryaFhqFJSj9k5qN0mfYH64RukjNhpkz491xLRQqOvTp6UlJ7XJukUGNYpjM56gwbpVMrxzTh3TeL5xbcd44/CqACQ6afLfK60BSQB0sKhBETaKbb3eMC5MmeW14U5wANieXjmVDcy/QGlNLpwxgRnp+avCvvHpzWqnSFnrm+iw87YWbEu5G0zRRdL25kbC1fOm2JnOdxVunKGXdb2juKl/l7rudubwM62ra1o6TQ7e3Bm9nibjWPDsoDPs4q0y2EKSH7t09MHxovNabmBct2W9IHsumzDWwH3Q0QAXgaYwrPxbsyAT7c1vQ5bcX/WqQuyFFCCuM9/BPCxLY3EDZ6NL2KGr2upiUznKVBH5gvU2nyxGQA=) format("woff2"),url(data:font/woff;base64,d09GRgABAAAAAATsAA4AAAAABYgAAQABAAAAAAAAAAAAAAAAAAAAAAAAAABHREVGAAABRAAAABQAAAAUAA8ACUdQT1MAAAFYAAAAHgAAAB5EdEx1R1NVQgAAAXgAAAAzAAAANJMNggJPUy8yAAABrAAAAE0AAABgdG3hCmNtYXAAAAH8AAAAQAAAAF4+Y+J/Z2FzcAAAAjwAAAAMAAAADAAIABNnbHlmAAACSAAAARAAAAESY99A82hlYWQAAANYAAAANgAAADb8n9JyaGhlYQAAA5AAAAAfAAAAJArvBcJobXR4AAADsAAAAB8AAAAkGAT/TWxvY2EAAAPQAAAAEwAAABQBLwGBbWF4cAAAA+QAAAAcAAAAIAArAN9uYW1lAAAEAAAAANYAAAGAHGI533Bvc3QAAATYAAAAEwAAACD/bQBkAAEAAAAMAAAAAAAAAAEACAABAAEAAQAAAAoAHAAcAAFERkxUAAgABAAAAAD//wAAAAAAAHjaY2BkYGDgYjACQhYXN58QBrnkyqIcBqn0otRsBqmcxJI8BikGEGABEf//g0gA3Y0JHgB42mNgZpnB+IWBlYGBdRarMQMDozyEZr7IkMbEwMAAxFDgABRkQALu/v7uIEF5XzaGfwwMaeyzmBgUGBjng+RYrFg3MCgAITMADeIKxAAAAHjaY2BgYAJiZiAWAZKMYJqFwQtI8zFwAOXYwCp4GRQYFsj7/v8P5KHwQTr+f/v/5H/6g91g3TwMCMAEANCmDfkAAQACAAgAAv//AA942g2PJVREURRF731/Hh93h3GtowUtuEvBHSIknE7GO+7uLn3h9IW7O/8N04/sDRRKATgdnQAO7MABnMENQC73kHMeiB7IydGMck4nhJIdC3tgS+h8RjjGkAgCnfjpobzQRGp+PUitkE/ym0k+AIFy6x2V0B1wBwkAehORUqEiWrPJUyUTefrxJqJUEN7H29No8DRTSRu7n55kt53YiV5Yil4dKMwP9CyS5b6BWTJ1zFZHRzFyL/0Io0eH2foRfUHCrLeZT+wH4cP2ViGqJMf0xGbiAoBeRh9OiUYfXz9eY8bWqoOLPHY4ySWmToi6MMKHbWJmQUN0bPaa1cqCbZyltqYGaDQAD3bCLMA/wjpXMwABAAAAAiMSEj1jSl8PPPUAGQgAAAAAAMTwES4AAAAA1QFS7Pok/dUJXAhzAAAACQACAAAAAAAAeNpjYGRgYM/5x8PAwJn9S+WfI2cMUAQVcAIAdi8EvwB42mPuYUhhgALGfxDM2saQxqzDkA5mn/knAwBo+QdjAHjaY2Bg0ITDBIZaIOwEABGOArEAeNpjYGRgYOBk6GcQY/BjYAXzEICNgREAGAwBC3jaTY+1dQNAEAXHzC7AkSJHZobEzEyZScyMfagC1aHiNIHoHc3fWwSmiTLGyPgM8EO7yyMs0eryKIs0uzw2ZB8f4gmWyXZ5UvtHlxcliFN25Tli3VXDxRr/5D0hfyOqHEVi/qZJaIuQpUTEs84Dt5xzyRPv3qts6b3BGzmCnrJnlUcihElQIcOXXKSkypElgP5sss0+x6jYYFN+I0JM/zT/FIez6TOc7VxLngZFdQwn6efYlK7JuWKkiahuyRJiTTol7Qrw1o8qocKJPEWqWIG1DvezNmIAAHjaY2BmAIP/WQwpDFgAACofAdEA) format("woff");unicode-range:U+1F00-1FFF}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/roboto-greek-500-normal.Bg8BLohm.woff2) format("woff2"),url(/_astro/roboto-greek-500-normal.CdRewbqV.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/roboto-vietnamese-500-normal.p0V0BAAE.woff2) format("woff2"),url(/_astro/roboto-vietnamese-500-normal.LvuCHq7y.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/roboto-latin-ext-500-normal.OQJhyaXd.woff2) format("woff2"),url(/_astro/roboto-latin-ext-500-normal.DvHxAkTn.woff) format("woff");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/roboto-latin-500-normal.C6iW8rdg.woff2) format("woff2"),url(/_astro/roboto-latin-500-normal.rpP1_v3s.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/roboto-cyrillic-ext-700-normal.CyZgh00P.woff2) format("woff2"),url(/_astro/roboto-cyrillic-ext-700-normal.DXzexxfu.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/roboto-cyrillic-700-normal.jruQITdB.woff2) format("woff2"),url(/_astro/roboto-cyrillic-700-normal.BJaAVvFw.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:700;src:url(data:font/woff2;base64,d09GMgABAAAAAAWwABIAAAAACcAAAAVTAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhQbHhw0BmAAXghICYM8EQwKg0iDMwsUABIUATYCJAMkBCAFgn4HIAyCKRtfCCCeBTkZ2iuxGWKJyeMZv66OCKiaZs+C2PYBKynriFkOIRw+g/RKasP0I2Tp7+2q9xfi7wUbK2iEHqhniZB3rvwq15s+McjkCIq28lPzNpOz6381+8JXa2p3NywTFUsoPFi19wHiAoKxcTWy7qYKLfvKspIVUta28e98NkNGfL1Saoy9g4AKICgIgoCSXWQgCxYNTUGIBJpgg22cCgGyrP3XF1yQdvCC6CzmIwxLnosAt/vj5LbogZT0yrQShPZyIH7ZQREGFZjjiOGtLF492gsUtK8M0uCg/JUR1JDrIJmWZmoo/ygYL3bjLzwPD7AMaFUQySHSouZS+8pjnYMgXNq8mgd/9PCX8m9BZJhfbtawij6MddmzXnMGDujW2EdCdJVa3Fd4Mk1Csl2nNNMt10tiuFXn3BNacx+KIDNiOYaO1X2E7Oh4gPxftmBXX9F/7704DGyNdtu7kOhHYsRmoaQvhzFb60H//EUTc7kKeljbsvSAQ7qI2gxmDMhnsfYk8VAxmqL1dTtFG+oMzulIrxsPVCgaOEwiqQKKhx1Uo44YKodIbn9HZim7XB4XrJkbn8O9BVWcs4DXMgztxidrMHiSZCqnQu6YYtrdtqccGPLFXEnKFoIU18+5s07p2HIIDHMZPEdmq1v6d5QwT4y9E+Ad0jZE//yFubK3ZjG5N6bTmQvnoiK9l3RxWGSXT851d9l7GQWHJTbrt5ChjP33VNg7B4dLalu2yO62CbD/AyFwyQZzLfSLvzqmI73y0i6klzzQCaxcdNjCZnM+e2uUdV+uruoi9E8ukAcDESmImrSBIuhipGYJHoqtWJm9W+ontE9EUxK3YefWXFHlp7edcrrNEXL4HtGHhcOBr3/Ou49KWz55Z1M4991Pt3/8tv3OfVPa8toGe6+Xt765+XRVuHrpoLLXN25480YY8ow0eyY+cA8IzHc+b+FJJ+WTP70hJnteQjTxmnWf73/zsvl9rt1/b/X2q+Z5vuTNKxf1uXpEz7Pf+8Zo3276/vLLbvrGJ4s/vOn3Ky+74TufLOl18aqjpr/s/vmsPbjJK1qby2snpvtz1PuaKhQIXATycv+Dc2j0bJ6ekL4ps7COfkLVF6XMUtgIepWjcoCfzl3q5ZTUeVVhCUuf7qpg6paropis9dOYsXKSXRNIqt1eio8R2goGYHINRsTc2S1kpdI68676G0FAUHXvmHLAspDln/WsECAMyzFZ+hRTYfWLAgioFPMJUZRLojwBUf8uteOfn9u7bcbvhd4F8MxPnUcB8HpY98Y/Y/5/vXhxYRFRFIFA/ohGheIW1TcmjhG0gGK8zQGqoaGH0otsitupzPd5rtETQdFOPYwIFEArkWicIAEFB/EXkiL2cu/lCCrucEQKbnXEejgbnDhSgzgcOT1MpVplHhxiqbN4NRBUq/M8Ay//bhMbEU+ywErgYmci8lgkWiQY0q9TtxGTunEq8MpMkBhJlkg4HSQuZjNECxbZSTzo9s3lKtVqBKCM5by7lsan5zekOumw17oFdtarxAKJbKR6PSVWLuJT+nmY8Kh2Li7UhGN6EUi7knLEP7VCZMbzB5oxa6/MKqWZ4eQQHg13O5QPyU6KUhh+f9Q1jaVxRiGGvZJzJ+/RkOuVruwzWJPplctvT4kN98p3TCrJivMqNIzOSYnuFWtGkFdJtbyhJNWj/Nvrj1t4hFwJzw/P/A3vk8taw/F3YacRxkwn3LUH3tGJd7V247SOaBcE0wl3jZJEZ+ga/Yds4aQQ6Wi3FJ3imZRIIIqRPiHIbp9wl47pDD2l/+nWrQahT1oivVBjuF0jxwMAAA==) format("woff2"),url(data:font/woff;base64,d09GRgABAAAAAATsAA4AAAAABYgAAQABAAAAAAAAAAAAAAAAAAAAAAAAAABHREVGAAABRAAAABQAAAAUAA8ACUdQT1MAAAFYAAAAHgAAAB5EdEx1R1NVQgAAAXgAAAAzAAAANJMNggJPUy8yAAABrAAAAE4AAABgdTXg+WNtYXAAAAH8AAAAQAAAAF4+Y+J/Z2FzcAAAAjwAAAAMAAAADAAIABNnbHlmAAACSAAAARQAAAEUTyyJzmhlYWQAAANcAAAANgAAADb819JcaGhlYQAAA5QAAAAfAAAAJAsmBdVobXR4AAADtAAAAB8AAAAkF/f/LGxvY2EAAAPUAAAAEwAAABQBLwGDbWF4cAAAA+gAAAAcAAAAIAArAN9uYW1lAAAEBAAAANQAAAF+HF85GnBvc3QAAATYAAAAEwAAACD/bQBkAAEAAAAMAAAAAAAAAAEACAABAAEAAQAAAAoAHAAcAAFERkxUAAgABAAAAAD//wAAAAAAAHjaY2BkYGDgYjACQhYXN58QBrnkyqIcBqn0otRsBqmcxJI8BikGEGABEf//g0gA3Y0JHgB42k2HNwGEQAAE57IM8PDdV3Q0BBd4Ipe0CMAEgsh586J0JwcMmML8QHhnq5FMApIbASg+CNM0xAcvtsyQuUJuV7QA+m96/I1qBfuaCnwAAHjaY2BgYAJiZiAWAZKMYJqFwQtI8zFwAOXYwCp4GRQYFsj7/v8P5KHwQTr+f/v/5H/6g91g3TwMCMAEANCmDfkAAQACAAgAAv//AA8ABQBkAAADKAWwAAMABgAJAAwADwAAISERIQMRAQERAQMhATUBIQMo/TwCxDb+7v66AQzkAgP+/gEC/f0FsPqkBQf9fQJ3+xECeP1eAl6IAl4AAAIAVv/sBS4FxAAQAB4AAAEUAgQjIiQCJzU0EiQgBBIVJTQmIyIGBxUUFjMyNjcFLpj+5be1/uScAZsBGwFsARub/tCkmJekAaSal6IBArfX/rywrgFD0kjXAUevr/651gHl7uvjR9/27eMAAAIAWwRvAssF1wAFAA4AAAETMxUDIwEzFRYXByYmNQGJb9PmXP7SrQFMU0pdBJsBPBX+wQFUXnw4ViOJXQD///4X/+wFdAXXACYABUYAAAcABv28AAAAAQAAAAIjEjlU04RfDzz1ABkIAAAAAADE8BEuAAAAANUBUtb6MP3VCYcIcwABAAkAAgAAAAAAAHjaY2BkYGDP+cfDwMDZ9cvgnylnO1AEFXACAHx/BQkAeNpj7mFIYYACxn8QzNrGEMYszxANZp/5Jw4AZykHNQB42mNgYNCEw3iGOiDsAgARkAKzAHjaY2BkYGDgZOhnEGPwY2AF8xCAjYERABgMAQt42mJgYOBgSGNgZmBk4QSy4xh2QdmMDDwM66BsJqCaZRA2kBRjmABlsyCxWQFVjyUWQgEQRW8isoafSLhLwd0t4+7O7nk4nDfug4XZyzYp3nzZZlkw4SBsCOMQzg/Y6bIR95UdyluzY6zsgqliQ1bsJfeKFMmRIEWZhqQNN3ac1NXREx/ENuKSCwa01bNT11T+CuNR68JDgMjDc8oL/PUan96X/ssmxBuu7JgyRn98prhkZVgLY3UN5eVY0ccuK8ZCMKh/uvYPT/+Id5wkB9hvI3U1mnjaY2BmAIP/WQwpDFgAACofAdEA) format("woff");unicode-range:U+1F00-1FFF}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/roboto-greek-700-normal.Bs05n1ZH.woff2) format("woff2"),url(/_astro/roboto-greek-700-normal.1IZ-NEfb.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/roboto-vietnamese-700-normal.CBbheh0s.woff2) format("woff2"),url(/_astro/roboto-vietnamese-700-normal.B4Nagvlm.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/roboto-latin-ext-700-normal.DchBbzVz.woff2) format("woff2"),url(/_astro/roboto-latin-ext-700-normal.Ba-CAIIA.woff) format("woff");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/roboto-latin-700-normal.CbYYDfWS.woff2) format("woff2"),url(/_astro/roboto-latin-700-normal.BWcFiwQV.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}.container{width:100%}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"“""”""‘""’";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-top:2em;margin-bottom:2em}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-family:inherit;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px rgb(var(--tw-prose-kbd-shadows) / 10%),0 3px rgb(var(--tw-prose-kbd-shadows) / 10%);font-size:.875em;border-radius:.3125rem;padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;padding-inline-start:.375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding-top:.8571429em;padding-inline-end:1.1428571em;padding-bottom:.8571429em;padding-inline-start:1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){width:100%;table-layout:auto;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body: #374151;--tw-prose-headings: #111827;--tw-prose-lead: #4b5563;--tw-prose-links: #111827;--tw-prose-bold: #111827;--tw-prose-counters: #6b7280;--tw-prose-bullets: #d1d5db;--tw-prose-hr: #e5e7eb;--tw-prose-quotes: #111827;--tw-prose-quote-borders: #e5e7eb;--tw-prose-captions: #6b7280;--tw-prose-kbd: #111827;--tw-prose-kbd-shadows: 17 24 39;--tw-prose-code: #111827;--tw-prose-pre-code: #e5e7eb;--tw-prose-pre-bg: #1f2937;--tw-prose-th-borders: #d1d5db;--tw-prose-td-borders: #e5e7eb;--tw-prose-invert-body: #d1d5db;--tw-prose-invert-headings: #fff;--tw-prose-invert-lead: #9ca3af;--tw-prose-invert-links: #fff;--tw-prose-invert-bold: #fff;--tw-prose-invert-counters: #9ca3af;--tw-prose-invert-bullets: #4b5563;--tw-prose-invert-hr: #374151;--tw-prose-invert-quotes: #f3f4f6;--tw-prose-invert-quote-borders: #374151;--tw-prose-invert-captions: #9ca3af;--tw-prose-invert-kbd: #fff;--tw-prose-invert-kbd-shadows: 255 255 255;--tw-prose-invert-code: #fff;--tw-prose-invert-pre-code: #d1d5db;--tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);--tw-prose-invert-th-borders: #4b5563;--tw-prose-invert-td-borders: #374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.5714286em;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-base{font-size:1rem;line-height:1.75}.prose-base :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose-base :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose-base :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em}.prose-base :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose-base :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose-base :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose-base :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose-base :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose-base :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose-base :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose-base :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose-base :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em;border-radius:.3125rem;padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;padding-inline-start:.375em}.prose-base :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em}.prose-base :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em}.prose-base :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.9em}.prose-base :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding-top:.8571429em;padding-inline-end:1.1428571em;padding-bottom:.8571429em;padding-inline-start:1.1428571em}.prose-base :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose-base :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose-base :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose-base :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose-base :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose-base :where(.prose-base>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose-base :where(.prose-base>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose-base :where(.prose-base>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose-base :where(.prose-base>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose-base :where(.prose-base>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose-base :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose-base :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose-base :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose-base :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose-base :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:3em;margin-bottom:3em}.prose-base :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em;line-height:1.7142857}.prose-base :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose-base :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose-base :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose-base :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.5714286em;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose-base :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose-base :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose-base :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose-base :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose-base :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose-base :where(.prose-base>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(.prose-base>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.enable-banner.is-home #banner-wrapper{height:var(--banner-height-home);--tw-translate-y: 30vh;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.enable-banner #banner-wrapper{height:var(--banner-height-home)}.enable-banner.is-home #banner{height:var(--banner-height-home);--tw-translate-y: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.enable-banner #banner{height:var(--banner-height-home);--tw-translate-y: var(--bannerOffset);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.enable-banner.is-home #main-grid{--tw-translate-y: 30vh;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.enable-banner #top-row{height:calc(var(--banner-height-home) - 4.5rem);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}.enable-banner.is-home #sidebar-sticky{top:calc(-30vh + 1rem)}.navbar-hidden{--tw-translate-y: -4rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));opacity:0}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.-right-2{right:-.5rem}.-top-1\/2{top:-50%}.-top-8{top:-2rem}.-top-\[3\.25rem\]{top:-3.25rem}.-top-\[30vh\]{top:-30vh}.-top-\[50\%\]{top:-50%}.bottom-3{bottom:.75rem}.left-0{left:0}.left-1\/2{left:50%}.left-4{left:1rem}.left-\[calc\(50\%_-_1px\)\]{left:calc(50% - 1px)}.right-0{right:0}.right-2{right:.5rem}.right-3{right:.75rem}.right-4{right:1rem}.right-6{right:1.5rem}.top-0{top:0}.top-1\/2{top:50%}.top-11{top:2.75rem}.top-2{top:.5rem}.top-20{top:5rem}.top-3{top:.75rem}.top-4{top:1rem}.top-\[30vh\]{top:30vh}.top-\[5\.25rem\]{top:5.25rem}.top-\[5\.5rem\]{top:5.5rem}.top-\[calc\(-30vh_\+_1rem\)\]{top:calc(-30vh + 1rem)}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.col-span-2{grid-column:span 2 / span 2}.row-start-2{grid-row-start:2}.row-end-3{grid-row-end:3}.-m-1{margin:-.25rem}.-m-1\.5{margin:-.375rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-1\.5{margin-left:.375rem;margin-right:.375rem}.mx-16{margin-left:4rem;margin-right:4rem}.mx-32{margin-left:8rem;margin-right:8rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-6{margin-left:1.5rem;margin-right:1.5rem}.mx-auto{margin-left:auto;margin-right:auto}.my-10{margin-top:2.5rem;margin-bottom:2.5rem}.my-auto{margin-top:auto;margin-bottom:auto}.-mb-2{margin-bottom:-.5rem}.mb-0\.5{margin-bottom:.125rem}.mb-1{margin-bottom:.25rem}.mb-12{margin-bottom:3rem}.mb-2{margin-bottom:.5rem}.mb-2\.5{margin-bottom:.625rem}.mb-3{margin-bottom:.75rem}.mb-3\.5{margin-bottom:.875rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-8{margin-left:2rem}.mr-0{margin-right:0}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mr-2\.5{margin-right:.625rem}.mr-3{margin-right:.75rem}.mr-4{margin-right:1rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-4{margin-top:1rem}.line-clamp-1{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-1{height:.25rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-12{height:3rem}.h-3{height:.75rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[3\.25rem\]{height:3.25rem}.h-\[3\.75rem\]{height:3.75rem}.h-\[300vh\]{height:300vh}.h-\[4\.5rem\]{height:4.5rem}.h-\[calc\(var\(--banner-height-home\)_-_4\.5rem\)\]{height:calc(var(--banner-height-home) - 4.5rem)}.h-\[var\(--banner-height-home\)\]{height:var(--banner-height-home)}.h-full{height:100%}.max-h-\[20vh\]{max-height:20vh}.min-h-32{min-height:8rem}.min-h-screen{min-height:100vh}.w-1{width:.25rem}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-12{width:3rem}.w-3{width:.75rem}.w-40{width:10rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-80{width:20rem}.w-\[10\%\]{width:10%}.w-\[15\%\]{width:15%}.w-\[3\.25rem\]{width:3.25rem}.w-\[3\.75rem\]{width:3.75rem}.w-\[70\%\]{width:70%}.w-full{width:100%}.min-w-\[2rem\]{min-width:2rem}.max-w-\[240px\]{max-width:240px}.max-w-\[calc\(100\%_-_3rem\)\]{max-width:calc(100% - 3rem)}.max-w-\[var\(\&\#45\;\&\#45\;page-width\)\]{max-width:var(--page-width)}.max-w-\[var\(--page-width\)\]{max-width:var(--page-width)}.max-w-full{max-width:100%}.max-w-none{max-width:none}.-translate-x-1{--tw-translate-x: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-1\/2{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-2{--tw-translate-x: -.5rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1{--tw-translate-y: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-16{--tw-translate-y: -4rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-\[1px\]{--tw-translate-y: -1px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0\.5{--tw-translate-x: .125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-0{--tw-translate-y: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-0\.5{--tw-translate-y: .125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-4{--tw-translate-y: 1rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[30vh\]{--tw-translate-y: 30vh;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[var\(--bannerOffset\)\]{--tw-translate-y: var(--bannerOffset);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-105{--tw-scale-x: 1.05;--tw-scale-y: 1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-50{--tw-scale-x: .5;--tw-scale-y: .5;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-90{--tw-scale-x: .9;--tw-scale-y: .9;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-zoom-in{cursor:zoom-in}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.grid-cols-\[17\.5rem_auto\]{grid-template-columns:17.5rem auto}.grid-rows-\[auto_1fr_auto\]{grid-template-rows:auto 1fr auto}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-y-2{row-gap:.5rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-\[var\(--radius-large\)\]{border-radius:var(--radius-large)}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-t-none{border-top-left-radius:0;border-top-right-radius:0}.border{border-width:1px}.border-b-\[1px\]{border-bottom-width:1px}.border-l-\[2px\]{border-left-width:2px}.border-t,.border-t-\[1px\]{border-top-width:1px}.border-dashed{border-style:dashed}.border-\[oklch\(85\%_0\.01_var\(--hue\)\)\]{border-color:oklch(85% .01 var(--hue))}.border-\[var\(\&\#45\;\&\#45\;primary\)\]{border-color:var(--primary)}.border-\[var\(--line-color\)\]{border-color:var(--line-color)}.border-\[var\(--line-divider\)\]{border-color:var(--line-divider)}.border-black\/10{border-color:#0000001a}.bg-\[oklch\(0\.45_0\.01_var\(--hue\)\)\]{background-color:oklch(.45 .01 var(--hue))}.bg-\[oklch\(0\.5_0\.05_var\(--hue\)\)\]{background-color:oklch(.5 .05 var(--hue))}.bg-\[oklch\(0\.75_0\.14_var\(--hue\)\)\]{background-color:oklch(.75 .14 var(--hue))}.bg-\[oklch\(0\.80_0\.10_0\)\]{background-color:#f3a3bb}.bg-\[oklch\(0\.95_0\.025_var\(--hue\)\)\]{background-color:oklch(.95 .025 var(--hue))}.bg-\[oklch\(92\%_0\.01_var\(\&\#45\;\&\#45\;hue\)\)\]{background-color:oklch(92% .01 var(--hue))}.bg-\[var\(--btn-content\)\]{background-color:var(--btn-content)}.bg-\[var\(--btn-regular-bg\)\]{background-color:var(--btn-regular-bg)}.bg-\[var\(--card-bg\)\]{background-color:var(--card-bg)}.bg-\[var\(--enter-btn-bg\)\]{background-color:var(--enter-btn-bg)}.bg-\[var\(--float-panel-bg\)\]{background-color:var(--float-panel-bg)}.bg-\[var\(--license-block-bg\)\]{background-color:var(--license-block-bg)}.bg-\[var\(--page-bg\)\]{background-color:var(--page-bg)}.bg-\[var\(--primary\)\]{background-color:var(--primary)}.bg-black\/40{background-color:#0006}.bg-black\/5{background-color:#0000000d}.bg-black\/60{background-color:#0009}.bg-black\/80{background-color:#000c}.bg-black\/\[0\.04\]{background-color:#0000000a}.bg-transparent{background-color:transparent}.bg-opacity-50{--tw-bg-opacity: .5}.bg-none{background-image:none}.fill-\[var\(--deep-text\)\]{fill:var(--deep-text)}.fill-white{fill:#fff}.object-cover{-o-object-fit:cover;object-fit:cover}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.px-0{padding-left:0;padding-right:0}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.px-9{padding-left:2.25rem;padding-right:2.25rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-4{padding-bottom:1rem}.pb-6{padding-bottom:1.5rem}.pl-10{padding-left:2.5rem}.pl-2{padding-left:.5rem}.pl-3{padding-left:.75rem}.pl-6{padding-left:1.5rem}.pr-1{padding-right:.25rem}.pr-4{padding-right:1rem}.pr-6{padding-right:1.5rem}.pr-8{padding-right:2rem}.pt-5{padding-top:1.25rem}.pt-6{padding-top:1.5rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-5xl{font-size:3rem;line-height:1}.text-\[0\.75rem\]{font-size:.75rem}.text-\[0\.875rem\]{font-size:.875rem}.text-\[1\.25rem\]{font-size:1.25rem}.text-\[1\.5rem\]{font-size:1.5rem}.text-\[1\.75rem\]{font-size:1.75rem}.text-\[14px\]{font-size:14px}.text-\[15rem\]{font-size:15rem}.text-\[2rem\]{font-size:2rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.text-\[oklch\(0\.75_0\.14_var\(--hue\)\)\]{color:oklch(.75 .14 var(--hue))}.text-\[var\(\&\#45\;\&\#45\;primary\)\]{color:var(--primary)}.text-\[var\(--btn-content\)\]{color:var(--btn-content)}.text-\[var\(--meta-divider\)\]{color:var(--meta-divider)}.text-\[var\(--primary\)\]{color:var(--primary)}.text-black\/10{color:#0000001a}.text-black\/25{color:#00000040}.text-black\/30{color:#0000004d}.text-black\/5{color:#0000000d}.text-black\/50{color:#00000080}.text-black\/75{color:#000000bf}.text-black\/90{color:#000000e6}.text-black\/\[0\.2\]{color:#0003}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.text-neutral-400{--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity))}.text-neutral-500{--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity))}.text-neutral-700{--tw-text-opacity: 1;color:rgb(64 64 64 / var(--tw-text-opacity))}.text-neutral-900{--tw-text-opacity: 1;color:rgb(23 23 23 / var(--tw-text-opacity))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.text-white\/75{color:#ffffffbf}.underline{text-decoration-line:underline}.decoration-\[var\(--link-underline\)\]{text-decoration-color:var(--link-underline)}.decoration-dashed{text-decoration-style:dashed}.decoration-2{text-decoration-thickness:2px}.underline-offset-\[0\.25rem\]{text-underline-offset:.25rem}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-75{opacity:.75}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline{outline-style:solid}.outline-0{outline-width:0px}.outline-4{outline-width:4px}.-outline-offset-\[2px\]{outline-offset:-2px}.outline-\[var\(--card-bg\)\]{outline-color:var(--card-bg)}.outline-\[var\(--primary\)\]{outline-color:var(--primary)}.drop-shadow-\[0_2px_4px_rgba\(0\,0\,0\,0\.005\)\]{--tw-drop-shadow: drop-shadow(0 2px 4px rgba(0,0,0,.005));filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-700{transition-duration:.7s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.dark\:prose-invert:is(.dark *){--tw-prose-body: var(--tw-prose-invert-body);--tw-prose-headings: var(--tw-prose-invert-headings);--tw-prose-lead: var(--tw-prose-invert-lead);--tw-prose-links: var(--tw-prose-invert-links);--tw-prose-bold: var(--tw-prose-invert-bold);--tw-prose-counters: var(--tw-prose-invert-counters);--tw-prose-bullets: var(--tw-prose-invert-bullets);--tw-prose-hr: var(--tw-prose-invert-hr);--tw-prose-quotes: var(--tw-prose-invert-quotes);--tw-prose-quote-borders: var(--tw-prose-invert-quote-borders);--tw-prose-captions: var(--tw-prose-invert-captions);--tw-prose-kbd: var(--tw-prose-invert-kbd);--tw-prose-kbd-shadows: var(--tw-prose-invert-kbd-shadows);--tw-prose-code: var(--tw-prose-invert-code);--tw-prose-pre-code: var(--tw-prose-invert-pre-code);--tw-prose-pre-bg: var(--tw-prose-invert-pre-bg);--tw-prose-th-borders: var(--tw-prose-invert-th-borders);--tw-prose-td-borders: var(--tw-prose-invert-td-borders)}@media (min-width: 1024px){.lg\:is-home.enable-banner #banner-wrapper{height:var(--banner-height-home);--tw-translate-y: 30vh;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lg\:is-home.enable-banner #banner{height:var(--banner-height-home);--tw-translate-y: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lg\:is-home.enable-banner #main-grid{--tw-translate-y: 30vh;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lg\:is-home.enable-banner #sidebar-sticky{top:calc(-30vh + 1rem)}}.before\:absolute:before{content:var(--tw-content);position:absolute}.before\:inset-0:before{content:var(--tw-content);inset:0}.before\:-left-3:before{content:var(--tw-content);left:-.75rem}.before\:left-\[-1\.125rem\]:before{content:var(--tw-content);left:-1.125rem}.before\:left-\[-16px\]:before{content:var(--tw-content);left:-16px}.before\:left-\[18px\]:before{content:var(--tw-content);left:18px}.before\:top-\[0\.33rem\]:before{content:var(--tw-content);top:.33rem}.before\:top-\[0\.75rem\]:before{content:var(--tw-content);top:.75rem}.before\:top-\[35px\]:before{content:var(--tw-content);top:35px}.before\:top-\[5\.5px\]:before{content:var(--tw-content);top:5.5px}.before\:-z-10:before{content:var(--tw-content);z-index:-10}.before\:ml-1\.5:before{content:var(--tw-content);margin-left:.375rem}.before\:mr-1\.5:before{content:var(--tw-content);margin-right:.375rem}.before\:hidden:before{content:var(--tw-content);display:none}.before\:h-4:before{content:var(--tw-content);height:1rem}.before\:h-5:before{content:var(--tw-content);height:1.25rem}.before\:w-1:before{content:var(--tw-content);width:.25rem}.before\:scale-100:before{content:var(--tw-content);--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.before\:scale-\[0\.85\]:before{content:var(--tw-content);--tw-scale-x: .85;--tw-scale-y: .85;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.before\:rounded-\[inherit\]:before{content:var(--tw-content);border-radius:inherit}.before\:rounded-md:before{content:var(--tw-content);border-radius:.375rem}.before\:bg-\[var\(--btn-plain-bg-hover\)\]:before{content:var(--tw-content);background-color:var(--btn-plain-bg-hover)}.before\:bg-\[var\(--primary\)\]:before{content:var(--tw-content);background-color:var(--primary)}.before\:text-sm:before{content:var(--tw-content);font-size:.875rem;line-height:1.25rem}.before\:font-medium:before{content:var(--tw-content);font-weight:500}.before\:text-\[var\(--meta-divider\)\]:before{content:var(--tw-content);color:var(--meta-divider)}.before\:opacity-100:before{content:var(--tw-content);opacity:1}.before\:transition:before{content:var(--tw-content);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.before\:ease-out:before{content:var(--tw-content);transition-timing-function:cubic-bezier(0,0,.2,1)}.before\:content-\[\'\/\'\]:before{--tw-content: "/";content:var(--tw-content)}.last\:border-t-0:last-child{border-top-width:0px}.first-of-type\:mt-2:first-of-type{margin-top:.5rem}.before\:first-of-type\:hidden:first-of-type:before{content:var(--tw-content);display:none}.focus-within\:bg-black\/\[0\.06\]:focus-within{background-color:#0000000f}.hover\:bg-\[oklch\(0\.50_0\.01_var\(--hue\)\)\]:hover{background-color:oklch(.5 .01 var(--hue))}.hover\:bg-\[var\(--btn-card-bg-hover\)\]:hover{background-color:var(--btn-card-bg-hover)}.hover\:bg-\[var\(--btn-plain-bg-hover\)\]:hover{background-color:var(--btn-plain-bg-hover)}.hover\:bg-\[var\(--btn-regular-bg-hover\)\]:hover{background-color:var(--btn-regular-bg-hover)}.hover\:bg-\[var\(--enter-btn-bg-hover\)\]:hover{background-color:var(--enter-btn-bg-hover)}.hover\:bg-black\/50:hover{background-color:#00000080}.hover\:bg-black\/70:hover{background-color:#000000b3}.hover\:bg-black\/\[0\.06\]:hover{background-color:#0000000f}.hover\:pl-3:hover{padding-left:.75rem}.hover\:pr-9:hover{padding-right:2.25rem}.hover\:text-\[initial\]:hover{color:initial}.hover\:text-\[var\(--primary\)\]:hover{color:var(--primary)}.hover\:decoration-\[var\(--link-hover\)\]:hover{text-decoration-color:var(--link-hover)}.hover\:before\:scale-100:hover:before{content:var(--tw-content);--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:before\:bg-\[var\(--btn-plain-bg-hover\)\]:hover:before{content:var(--tw-content);background-color:var(--btn-plain-bg-hover)}.focus\:w-60:focus{width:15rem}.active\:w-60:active{width:15rem}.active\:scale-90:active{--tw-scale-x: .9;--tw-scale-y: .9;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.active\:scale-95:active{--tw-scale-x: .95;--tw-scale-y: .95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.active\:scale-\[0\.85\]:active{--tw-scale-x: .85;--tw-scale-y: .85;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.active\:bg-\[oklch\(0\.55_0\.01_var\(--hue\)\)\]:active{background-color:oklch(.55 .01 var(--hue))}.active\:bg-\[var\(--btn-card-bg-active\)\]:active{background-color:var(--btn-card-bg-active)}.active\:bg-\[var\(--btn-plain-bg-active\)\]:active{background-color:var(--btn-plain-bg-active)}.active\:bg-\[var\(--btn-regular-bg-active\)\]:active{background-color:var(--btn-regular-bg-active)}.active\:bg-\[var\(--enter-btn-bg-active\)\]:active{background-color:var(--enter-btn-bg-active)}.active\:bg-black\/60:active{background-color:#0009}.active\:bg-black\/80:active{background-color:#000c}.active\:bg-none:active{background-image:none}.active\:text-\[var\(--title-active\)\]:active{color:var(--title-active)}.active\:decoration-\[var\(--link-active\)\]:active{text-decoration-color:var(--link-active)}.active\:before\:bg-\[var\(--btn-plain-bg-active\)\]:active:before{content:var(--tw-content);background-color:var(--btn-plain-bg-active)}.group:hover .group-hover\:h-5{height:1.25rem}.group:hover .group-hover\:translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:translate-x-1{--tw-translate-x: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:scale-100{--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:bg-\[var\(--primary\)\]{background-color:var(--primary)}.group:hover .group-hover\:bg-black\/30{background-color:#0000004d}.group:hover .group-hover\:text-\[var\(--primary\)\]{color:var(--primary)}.group:hover .group-hover\:opacity-100{opacity:1}.group:hover .group-hover\:outline-\[var\(--btn-plain-bg-hover\)\]{outline-color:var(--btn-plain-bg-hover)}.group:active .group-active\:bg-black\/50{background-color:#00000080}.group:active .group-active\:text-\[var\(--primary\)\]{color:var(--primary)}.group:active .group-active\:outline-\[var\(--btn-plain-bg-active\)\]{outline-color:var(--btn-plain-bg-active)}.dark\:border-white\/15:is(.dark *){border-color:#ffffff26}.dark\:border-white\/\[0\.15\]:is(.dark *){border-color:#ffffff26}.dark\:bg-\[oklch\(0\.30_0\.02_var\(--hue\)\)\]:is(.dark *){background-color:oklch(.3 .02 var(--hue))}.dark\:bg-\[oklch\(0\.70_0\.10_0\)\]:is(.dark *){background-color:#d2849c}.dark\:bg-\[oklch\(0\.75_0\.14_var\(--hue\)\)\]:is(.dark *){background-color:oklch(.75 .14 var(--hue))}.dark\:bg-\[var\(--card-bg\)\]:is(.dark *){background-color:var(--card-bg)}.dark\:bg-\[var\(--primary\)\]:is(.dark *){background-color:var(--primary)}.dark\:bg-black:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity))}.dark\:bg-black\/10:is(.dark *){background-color:#0000001a}.dark\:bg-white\/10:is(.dark *){background-color:#ffffff1a}.dark\:bg-white\/5:is(.dark *){background-color:#ffffff0d}.dark\:fill-white\/75:is(.dark *){fill:#ffffffbf}.dark\:text-\[var\(--deep-text\)\]:is(.dark *){color:var(--deep-text)}.dark\:text-black\/70:is(.dark *){color:#000000b3}.dark\:text-neutral-100:is(.dark *){--tw-text-opacity: 1;color:rgb(245 245 245 / var(--tw-text-opacity))}.dark\:text-neutral-300:is(.dark *){--tw-text-opacity: 1;color:rgb(212 212 212 / var(--tw-text-opacity))}.dark\:text-neutral-400:is(.dark *){--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity))}.dark\:text-neutral-50:is(.dark *){--tw-text-opacity: 1;color:rgb(250 250 250 / var(--tw-text-opacity))}.dark\:text-white\/10:is(.dark *){color:#ffffff1a}.dark\:text-white\/25:is(.dark *){color:#ffffff40}.dark\:text-white\/30:is(.dark *){color:#ffffff4d}.dark\:text-white\/5:is(.dark *){color:#ffffff0d}.dark\:text-white\/50:is(.dark *){color:#ffffff80}.dark\:text-white\/75:is(.dark *){color:#ffffffbf}.dark\:text-white\/90:is(.dark *){color:#ffffffe6}.dark\:text-white\/\[0\.2\]:is(.dark *){color:#fff3}.dark\:shadow-none:is(.dark *){--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.dark\:focus-within\:bg-white\/10:focus-within:is(.dark *){background-color:#ffffff1a}.dark\:hover\:bg-\[oklch\(0\.35_0\.03_var\(--hue\)\)\]:hover:is(.dark *){background-color:oklch(.35 .03 var(--hue))}.dark\:hover\:bg-white\/10:hover:is(.dark *){background-color:#ffffff1a}.dark\:hover\:text-\[var\(--primary\)\]:hover:is(.dark *){color:var(--primary)}.dark\:active\:bg-\[oklch\(0\.40_0\.03_var\(--hue\)\)\]:active:is(.dark *){background-color:oklch(.4 .03 var(--hue))}.dark\:active\:text-\[var\(--title-active\)\]:active:is(.dark *){color:var(--title-active)}@media (min-width: 768px){.md\:absolute{position:absolute}.md\:bottom-3{bottom:.75rem}.md\:left-\[unset\]{left:unset}.md\:right-3{right:.75rem}.md\:top-3{top:.75rem}.md\:mx-0{margin-left:0;margin-right:0}.md\:mb-0{margin-bottom:0}.md\:mt-0{margin-top:0}.md\:line-clamp-1{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.md\:block{display:block}.md\:inline{display:inline}.md\:flex{display:flex}.md\:hidden{display:none}.md\:max-h-none{max-height:none}.md\:w-\[10\%\]{width:10%}.md\:w-\[15\%\]{width:15%}.md\:w-\[30rem\]{width:30rem}.md\:w-\[65\%\]{width:65%}.md\:w-\[80\%\]{width:80%}.md\:w-\[calc\(100\%_-_52px_-_12px\)\]{width:calc(100% - 64px)}.md\:w-\[calc\(100\%_-_var\(--coverWidth\)_-_12px\)\]{width:calc(100% - var(--coverWidth) - 12px)}.md\:w-\[var\(--coverWidth\)\]{width:var(--coverWidth)}.md\:max-w-\[65\%\]{max-width:65%}.md\:flex-row{flex-direction:row}.md\:flex-col{flex-direction:column}.md\:gap-4{gap:1rem}.md\:bg-transparent{background-color:transparent}.md\:px-4{padding-left:1rem;padding-right:1rem}.md\:px-9{padding-left:2.25rem;padding-right:2.25rem}.md\:py-0{padding-top:0;padding-bottom:0}.md\:pl-9{padding-left:2.25rem}.md\:pr-2{padding-right:.5rem}.md\:pt-7{padding-top:1.75rem}.md\:text-\[16px\]{font-size:16px}.md\:text-\[2\.5rem\]\/\[2\.75rem\]{font-size:2.5rem;line-height:2.75rem}.md\:before\:block:before{content:var(--tw-content);display:block}.md\:before\:w-1:before{content:var(--tw-content);width:.25rem}}@media (min-width: 1024px){.lg\:col-span-1{grid-column:span 1 / span 1}.lg\:row-start-1{grid-row-start:1}.lg\:row-end-2{grid-row-end:2}.lg\:mx-0{margin-left:0;margin-right:0}.lg\:mt-0{margin-top:0}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:w-full{width:100%}.lg\:max-w-\[17\.5rem\]{max-width:17.5rem}.lg\:max-w-none{max-width:none}.lg\:grid-rows-\[auto\]{grid-template-rows:auto}.lg\:first-of-type\:mt-0:first-of-type{margin-top:0}}:root{--hue: var(--configHue);--page-width: 75rem}.atk-copyright{display:none!important} diff --git a/_astro/_page_.iOHzKfWV.css b/_astro/_page_.iOHzKfWV.css new file mode 100644 index 0000000..ae21362 --- /dev/null +++ b/_astro/_page_.iOHzKfWV.css @@ -0,0 +1 @@ +*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Roboto,sans-serif,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.container{width:100%}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"“""”""‘""’";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-top:2em;margin-bottom:2em}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-family:inherit;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px rgb(var(--tw-prose-kbd-shadows) / 10%),0 3px rgb(var(--tw-prose-kbd-shadows) / 10%);font-size:.875em;border-radius:.3125rem;padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;padding-inline-start:.375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding-top:.8571429em;padding-inline-end:1.1428571em;padding-bottom:.8571429em;padding-inline-start:1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){width:100%;table-layout:auto;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body: #374151;--tw-prose-headings: #111827;--tw-prose-lead: #4b5563;--tw-prose-links: #111827;--tw-prose-bold: #111827;--tw-prose-counters: #6b7280;--tw-prose-bullets: #d1d5db;--tw-prose-hr: #e5e7eb;--tw-prose-quotes: #111827;--tw-prose-quote-borders: #e5e7eb;--tw-prose-captions: #6b7280;--tw-prose-kbd: #111827;--tw-prose-kbd-shadows: 17 24 39;--tw-prose-code: #111827;--tw-prose-pre-code: #e5e7eb;--tw-prose-pre-bg: #1f2937;--tw-prose-th-borders: #d1d5db;--tw-prose-td-borders: #e5e7eb;--tw-prose-invert-body: #d1d5db;--tw-prose-invert-headings: #fff;--tw-prose-invert-lead: #9ca3af;--tw-prose-invert-links: #fff;--tw-prose-invert-bold: #fff;--tw-prose-invert-counters: #9ca3af;--tw-prose-invert-bullets: #4b5563;--tw-prose-invert-hr: #374151;--tw-prose-invert-quotes: #f3f4f6;--tw-prose-invert-quote-borders: #374151;--tw-prose-invert-captions: #9ca3af;--tw-prose-invert-kbd: #fff;--tw-prose-invert-kbd-shadows: 255 255 255;--tw-prose-invert-code: #fff;--tw-prose-invert-pre-code: #d1d5db;--tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);--tw-prose-invert-th-borders: #4b5563;--tw-prose-invert-td-borders: #374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.5714286em;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-base{font-size:1rem;line-height:1.75}.prose-base :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose-base :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose-base :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em}.prose-base :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose-base :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose-base :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose-base :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose-base :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose-base :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose-base :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose-base :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose-base :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em;border-radius:.3125rem;padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;padding-inline-start:.375em}.prose-base :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em}.prose-base :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em}.prose-base :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.9em}.prose-base :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding-top:.8571429em;padding-inline-end:1.1428571em;padding-bottom:.8571429em;padding-inline-start:1.1428571em}.prose-base :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose-base :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose-base :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose-base :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose-base :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose-base :where(.prose-base>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose-base :where(.prose-base>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose-base :where(.prose-base>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose-base :where(.prose-base>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose-base :where(.prose-base>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose-base :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose-base :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose-base :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose-base :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose-base :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:3em;margin-bottom:3em}.prose-base :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em;line-height:1.7142857}.prose-base :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose-base :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose-base :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose-base :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.5714286em;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose-base :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose-base :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose-base :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose-base :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose-base :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose-base :where(.prose-base>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(.prose-base>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.-right-2{right:-.5rem}.-top-1\/2{top:-50%}.-top-8{top:-2rem}.-top-\[3\.25rem\]{top:-3.25rem}.-top-\[30vh\]{top:-30vh}.-top-\[50\%\]{top:-50%}.bottom-3{bottom:.75rem}.left-0{left:0}.left-1\/2{left:50%}.left-4{left:1rem}.left-\[calc\(50\%_-_1px\)\]{left:calc(50% - 1px)}.right-0{right:0}.right-2{right:.5rem}.right-3{right:.75rem}.right-4{right:1rem}.right-6{right:1.5rem}.top-0{top:0}.top-1\/2{top:50%}.top-11{top:2.75rem}.top-2{top:.5rem}.top-20{top:5rem}.top-3{top:.75rem}.top-4{top:1rem}.top-\[30vh\]{top:30vh}.top-\[5\.25rem\]{top:5.25rem}.top-\[5\.5rem\]{top:5.5rem}.top-\[calc\(-30vh_\+_1rem\)\]{top:calc(-30vh + 1rem)}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.col-span-2{grid-column:span 2 / span 2}.row-start-2{grid-row-start:2}.row-end-3{grid-row-end:3}.-m-1{margin:-.25rem}.-m-1\.5{margin:-.375rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-1\.5{margin-left:.375rem;margin-right:.375rem}.mx-16{margin-left:4rem;margin-right:4rem}.mx-32{margin-left:8rem;margin-right:8rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-6{margin-left:1.5rem;margin-right:1.5rem}.mx-auto{margin-left:auto;margin-right:auto}.my-10{margin-top:2.5rem;margin-bottom:2.5rem}.my-auto{margin-top:auto;margin-bottom:auto}.-mb-2{margin-bottom:-.5rem}.mb-0\.5{margin-bottom:.125rem}.mb-1{margin-bottom:.25rem}.mb-12{margin-bottom:3rem}.mb-2{margin-bottom:.5rem}.mb-2\.5{margin-bottom:.625rem}.mb-3{margin-bottom:.75rem}.mb-3\.5{margin-bottom:.875rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-8{margin-left:2rem}.mr-0{margin-right:0}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mr-2\.5{margin-right:.625rem}.mr-3{margin-right:.75rem}.mr-4{margin-right:1rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-4{margin-top:1rem}.line-clamp-1{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-1{height:.25rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-12{height:3rem}.h-3{height:.75rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[3\.25rem\]{height:3.25rem}.h-\[3\.75rem\]{height:3.75rem}.h-\[300vh\]{height:300vh}.h-\[4\.5rem\]{height:4.5rem}.h-\[calc\(var\(--banner-height-home\)_-_4\.5rem\)\]{height:calc(var(--banner-height-home) - 4.5rem)}.h-\[var\(--banner-height-home\)\]{height:var(--banner-height-home)}.h-full{height:100%}.max-h-\[20vh\]{max-height:20vh}.min-h-32{min-height:8rem}.min-h-screen{min-height:100vh}.w-1{width:.25rem}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-12{width:3rem}.w-3{width:.75rem}.w-40{width:10rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-80{width:20rem}.w-\[10\%\]{width:10%}.w-\[15\%\]{width:15%}.w-\[3\.25rem\]{width:3.25rem}.w-\[3\.75rem\]{width:3.75rem}.w-\[70\%\]{width:70%}.w-full{width:100%}.min-w-\[2rem\]{min-width:2rem}.max-w-\[240px\]{max-width:240px}.max-w-\[calc\(100\%_-_3rem\)\]{max-width:calc(100% - 3rem)}.max-w-\[var\(\&\#45\;\&\#45\;page-width\)\]{max-width:var(--page-width)}.max-w-\[var\(--page-width\)\]{max-width:var(--page-width)}.max-w-full{max-width:100%}.max-w-none{max-width:none}.-translate-x-1{--tw-translate-x: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-1\/2{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-2{--tw-translate-x: -.5rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1{--tw-translate-y: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-16{--tw-translate-y: -4rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-\[1px\]{--tw-translate-y: -1px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0\.5{--tw-translate-x: .125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-0{--tw-translate-y: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-0\.5{--tw-translate-y: .125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-4{--tw-translate-y: 1rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[30vh\]{--tw-translate-y: 30vh;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[var\(--bannerOffset\)\]{--tw-translate-y: var(--bannerOffset);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-105{--tw-scale-x: 1.05;--tw-scale-y: 1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-50{--tw-scale-x: .5;--tw-scale-y: .5;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-90{--tw-scale-x: .9;--tw-scale-y: .9;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-zoom-in{cursor:zoom-in}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.grid-cols-\[17\.5rem_auto\]{grid-template-columns:17.5rem auto}.grid-rows-\[auto_1fr_auto\]{grid-template-rows:auto 1fr auto}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-y-2{row-gap:.5rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-\[var\(--radius-large\)\]{border-radius:var(--radius-large)}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-t-none{border-top-left-radius:0;border-top-right-radius:0}.border{border-width:1px}.border-b-\[1px\]{border-bottom-width:1px}.border-l-\[2px\]{border-left-width:2px}.border-t,.border-t-\[1px\]{border-top-width:1px}.border-dashed{border-style:dashed}.border-\[oklch\(85\%_0\.01_var\(--hue\)\)\]{border-color:oklch(85% .01 var(--hue))}.border-\[var\(\&\#45\;\&\#45\;primary\)\]{border-color:var(--primary)}.border-\[var\(--line-color\)\]{border-color:var(--line-color)}.border-\[var\(--line-divider\)\]{border-color:var(--line-divider)}.border-black\/10{border-color:#0000001a}.bg-\[oklch\(0\.45_0\.01_var\(--hue\)\)\]{background-color:oklch(.45 .01 var(--hue))}.bg-\[oklch\(0\.5_0\.05_var\(--hue\)\)\]{background-color:oklch(.5 .05 var(--hue))}.bg-\[oklch\(0\.75_0\.14_var\(--hue\)\)\]{background-color:oklch(.75 .14 var(--hue))}.bg-\[oklch\(0\.80_0\.10_0\)\]{background-color:#f3a3bb}.bg-\[oklch\(0\.95_0\.025_var\(--hue\)\)\]{background-color:oklch(.95 .025 var(--hue))}.bg-\[oklch\(92\%_0\.01_var\(\&\#45\;\&\#45\;hue\)\)\]{background-color:oklch(92% .01 var(--hue))}.bg-\[var\(--btn-content\)\]{background-color:var(--btn-content)}.bg-\[var\(--btn-regular-bg\)\]{background-color:var(--btn-regular-bg)}.bg-\[var\(--card-bg\)\]{background-color:var(--card-bg)}.bg-\[var\(--enter-btn-bg\)\]{background-color:var(--enter-btn-bg)}.bg-\[var\(--float-panel-bg\)\]{background-color:var(--float-panel-bg)}.bg-\[var\(--license-block-bg\)\]{background-color:var(--license-block-bg)}.bg-\[var\(--page-bg\)\]{background-color:var(--page-bg)}.bg-\[var\(--primary\)\]{background-color:var(--primary)}.bg-black\/40{background-color:#0006}.bg-black\/5{background-color:#0000000d}.bg-black\/60{background-color:#0009}.bg-black\/80{background-color:#000c}.bg-black\/\[0\.04\]{background-color:#0000000a}.bg-transparent{background-color:transparent}.bg-opacity-50{--tw-bg-opacity: .5}.bg-none{background-image:none}.fill-\[var\(--deep-text\)\]{fill:var(--deep-text)}.fill-white{fill:#fff}.object-cover{-o-object-fit:cover;object-fit:cover}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.px-0{padding-left:0;padding-right:0}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.px-9{padding-left:2.25rem;padding-right:2.25rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-4{padding-bottom:1rem}.pb-6{padding-bottom:1.5rem}.pl-10{padding-left:2.5rem}.pl-2{padding-left:.5rem}.pl-3{padding-left:.75rem}.pl-6{padding-left:1.5rem}.pr-1{padding-right:.25rem}.pr-4{padding-right:1rem}.pr-6{padding-right:1.5rem}.pr-8{padding-right:2rem}.pt-5{padding-top:1.25rem}.pt-6{padding-top:1.5rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-5xl{font-size:3rem;line-height:1}.text-\[0\.75rem\]{font-size:.75rem}.text-\[0\.875rem\]{font-size:.875rem}.text-\[1\.25rem\]{font-size:1.25rem}.text-\[1\.5rem\]{font-size:1.5rem}.text-\[1\.75rem\]{font-size:1.75rem}.text-\[14px\]{font-size:14px}.text-\[15rem\]{font-size:15rem}.text-\[2rem\]{font-size:2rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.text-\[oklch\(0\.75_0\.14_var\(--hue\)\)\]{color:oklch(.75 .14 var(--hue))}.text-\[var\(\&\#45\;\&\#45\;primary\)\]{color:var(--primary)}.text-\[var\(--btn-content\)\]{color:var(--btn-content)}.text-\[var\(--meta-divider\)\]{color:var(--meta-divider)}.text-\[var\(--primary\)\]{color:var(--primary)}.text-black\/10{color:#0000001a}.text-black\/25{color:#00000040}.text-black\/30{color:#0000004d}.text-black\/5{color:#0000000d}.text-black\/50{color:#00000080}.text-black\/75{color:#000000bf}.text-black\/90{color:#000000e6}.text-black\/\[0\.2\]{color:#0003}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.text-neutral-400{--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity))}.text-neutral-500{--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity))}.text-neutral-700{--tw-text-opacity: 1;color:rgb(64 64 64 / var(--tw-text-opacity))}.text-neutral-900{--tw-text-opacity: 1;color:rgb(23 23 23 / var(--tw-text-opacity))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.text-white\/75{color:#ffffffbf}.underline{text-decoration-line:underline}.decoration-\[var\(--link-underline\)\]{text-decoration-color:var(--link-underline)}.decoration-dashed{text-decoration-style:dashed}.decoration-2{text-decoration-thickness:2px}.underline-offset-\[0\.25rem\]{text-underline-offset:.25rem}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-75{opacity:.75}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline{outline-style:solid}.outline-0{outline-width:0px}.outline-4{outline-width:4px}.-outline-offset-\[2px\]{outline-offset:-2px}.outline-\[var\(--card-bg\)\]{outline-color:var(--card-bg)}.outline-\[var\(--primary\)\]{outline-color:var(--primary)}.drop-shadow-\[0_2px_4px_rgba\(0\,0\,0\,0\.005\)\]{--tw-drop-shadow: drop-shadow(0 2px 4px rgba(0,0,0,.005));filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-700{transition-duration:.7s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.dark\:prose-invert:is(.dark *){--tw-prose-body: var(--tw-prose-invert-body);--tw-prose-headings: var(--tw-prose-invert-headings);--tw-prose-lead: var(--tw-prose-invert-lead);--tw-prose-links: var(--tw-prose-invert-links);--tw-prose-bold: var(--tw-prose-invert-bold);--tw-prose-counters: var(--tw-prose-invert-counters);--tw-prose-bullets: var(--tw-prose-invert-bullets);--tw-prose-hr: var(--tw-prose-invert-hr);--tw-prose-quotes: var(--tw-prose-invert-quotes);--tw-prose-quote-borders: var(--tw-prose-invert-quote-borders);--tw-prose-captions: var(--tw-prose-invert-captions);--tw-prose-kbd: var(--tw-prose-invert-kbd);--tw-prose-kbd-shadows: var(--tw-prose-invert-kbd-shadows);--tw-prose-code: var(--tw-prose-invert-code);--tw-prose-pre-code: var(--tw-prose-invert-pre-code);--tw-prose-pre-bg: var(--tw-prose-invert-pre-bg);--tw-prose-th-borders: var(--tw-prose-invert-th-borders);--tw-prose-td-borders: var(--tw-prose-invert-td-borders)}.before\:absolute:before{content:var(--tw-content);position:absolute}.before\:inset-0:before{content:var(--tw-content);inset:0}.before\:-left-3:before{content:var(--tw-content);left:-.75rem}.before\:left-\[-1\.125rem\]:before{content:var(--tw-content);left:-1.125rem}.before\:left-\[-16px\]:before{content:var(--tw-content);left:-16px}.before\:left-\[18px\]:before{content:var(--tw-content);left:18px}.before\:top-\[0\.33rem\]:before{content:var(--tw-content);top:.33rem}.before\:top-\[0\.75rem\]:before{content:var(--tw-content);top:.75rem}.before\:top-\[35px\]:before{content:var(--tw-content);top:35px}.before\:top-\[5\.5px\]:before{content:var(--tw-content);top:5.5px}.before\:-z-10:before{content:var(--tw-content);z-index:-10}.before\:ml-1\.5:before{content:var(--tw-content);margin-left:.375rem}.before\:mr-1\.5:before{content:var(--tw-content);margin-right:.375rem}.before\:hidden:before{content:var(--tw-content);display:none}.before\:h-4:before{content:var(--tw-content);height:1rem}.before\:h-5:before{content:var(--tw-content);height:1.25rem}.before\:w-1:before{content:var(--tw-content);width:.25rem}.before\:scale-100:before{content:var(--tw-content);--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.before\:scale-\[0\.85\]:before{content:var(--tw-content);--tw-scale-x: .85;--tw-scale-y: .85;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.before\:rounded-\[inherit\]:before{content:var(--tw-content);border-radius:inherit}.before\:rounded-md:before{content:var(--tw-content);border-radius:.375rem}.before\:bg-\[var\(--btn-plain-bg-hover\)\]:before{content:var(--tw-content);background-color:var(--btn-plain-bg-hover)}.before\:bg-\[var\(--primary\)\]:before{content:var(--tw-content);background-color:var(--primary)}.before\:text-sm:before{content:var(--tw-content);font-size:.875rem;line-height:1.25rem}.before\:font-medium:before{content:var(--tw-content);font-weight:500}.before\:text-\[var\(--meta-divider\)\]:before{content:var(--tw-content);color:var(--meta-divider)}.before\:opacity-100:before{content:var(--tw-content);opacity:1}.before\:transition:before{content:var(--tw-content);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.before\:ease-out:before{content:var(--tw-content);transition-timing-function:cubic-bezier(0,0,.2,1)}.before\:content-\[\'\/\'\]:before{--tw-content: "/";content:var(--tw-content)}.last\:border-t-0:last-child{border-top-width:0px}.first-of-type\:mt-2:first-of-type{margin-top:.5rem}.before\:first-of-type\:hidden:first-of-type:before{content:var(--tw-content);display:none}.focus-within\:bg-black\/\[0\.06\]:focus-within{background-color:#0000000f}.hover\:bg-\[oklch\(0\.50_0\.01_var\(--hue\)\)\]:hover{background-color:oklch(.5 .01 var(--hue))}.hover\:bg-\[var\(--btn-card-bg-hover\)\]:hover{background-color:var(--btn-card-bg-hover)}.hover\:bg-\[var\(--btn-plain-bg-hover\)\]:hover{background-color:var(--btn-plain-bg-hover)}.hover\:bg-\[var\(--btn-regular-bg-hover\)\]:hover{background-color:var(--btn-regular-bg-hover)}.hover\:bg-\[var\(--enter-btn-bg-hover\)\]:hover{background-color:var(--enter-btn-bg-hover)}.hover\:bg-black\/50:hover{background-color:#00000080}.hover\:bg-black\/70:hover{background-color:#000000b3}.hover\:bg-black\/\[0\.06\]:hover{background-color:#0000000f}.hover\:pl-3:hover{padding-left:.75rem}.hover\:pr-9:hover{padding-right:2.25rem}.hover\:text-\[initial\]:hover{color:initial}.hover\:text-\[var\(--primary\)\]:hover{color:var(--primary)}.hover\:decoration-\[var\(--link-hover\)\]:hover{text-decoration-color:var(--link-hover)}.hover\:before\:scale-100:hover:before{content:var(--tw-content);--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:before\:bg-\[var\(--btn-plain-bg-hover\)\]:hover:before{content:var(--tw-content);background-color:var(--btn-plain-bg-hover)}.focus\:w-60:focus{width:15rem}.active\:w-60:active{width:15rem}.active\:scale-90:active{--tw-scale-x: .9;--tw-scale-y: .9;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.active\:scale-95:active{--tw-scale-x: .95;--tw-scale-y: .95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.active\:scale-\[0\.85\]:active{--tw-scale-x: .85;--tw-scale-y: .85;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.active\:bg-\[oklch\(0\.55_0\.01_var\(--hue\)\)\]:active{background-color:oklch(.55 .01 var(--hue))}.active\:bg-\[var\(--btn-card-bg-active\)\]:active{background-color:var(--btn-card-bg-active)}.active\:bg-\[var\(--btn-plain-bg-active\)\]:active{background-color:var(--btn-plain-bg-active)}.active\:bg-\[var\(--btn-regular-bg-active\)\]:active{background-color:var(--btn-regular-bg-active)}.active\:bg-\[var\(--enter-btn-bg-active\)\]:active{background-color:var(--enter-btn-bg-active)}.active\:bg-black\/60:active{background-color:#0009}.active\:bg-black\/80:active{background-color:#000c}.active\:bg-none:active{background-image:none}.active\:text-\[var\(--title-active\)\]:active{color:var(--title-active)}.active\:decoration-\[var\(--link-active\)\]:active{text-decoration-color:var(--link-active)}.active\:before\:bg-\[var\(--btn-plain-bg-active\)\]:active:before{content:var(--tw-content);background-color:var(--btn-plain-bg-active)}.group:hover .group-hover\:h-5{height:1.25rem}.group:hover .group-hover\:translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:translate-x-1{--tw-translate-x: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:scale-100{--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:bg-\[var\(--primary\)\]{background-color:var(--primary)}.group:hover .group-hover\:bg-black\/30{background-color:#0000004d}.group:hover .group-hover\:text-\[var\(--primary\)\]{color:var(--primary)}.group:hover .group-hover\:opacity-100{opacity:1}.group:hover .group-hover\:outline-\[var\(--btn-plain-bg-hover\)\]{outline-color:var(--btn-plain-bg-hover)}.group:active .group-active\:bg-black\/50{background-color:#00000080}.group:active .group-active\:text-\[var\(--primary\)\]{color:var(--primary)}.group:active .group-active\:outline-\[var\(--btn-plain-bg-active\)\]{outline-color:var(--btn-plain-bg-active)}.dark\:border-white\/15:is(.dark *){border-color:#ffffff26}.dark\:border-white\/\[0\.15\]:is(.dark *){border-color:#ffffff26}.dark\:bg-\[oklch\(0\.30_0\.02_var\(--hue\)\)\]:is(.dark *){background-color:oklch(.3 .02 var(--hue))}.dark\:bg-\[oklch\(0\.70_0\.10_0\)\]:is(.dark *){background-color:#d2849c}.dark\:bg-\[oklch\(0\.75_0\.14_var\(--hue\)\)\]:is(.dark *){background-color:oklch(.75 .14 var(--hue))}.dark\:bg-\[var\(--card-bg\)\]:is(.dark *){background-color:var(--card-bg)}.dark\:bg-\[var\(--primary\)\]:is(.dark *){background-color:var(--primary)}.dark\:bg-black:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity))}.dark\:bg-black\/10:is(.dark *){background-color:#0000001a}.dark\:bg-white\/10:is(.dark *){background-color:#ffffff1a}.dark\:bg-white\/5:is(.dark *){background-color:#ffffff0d}.dark\:fill-white\/75:is(.dark *){fill:#ffffffbf}.dark\:text-\[var\(--deep-text\)\]:is(.dark *){color:var(--deep-text)}.dark\:text-black\/70:is(.dark *){color:#000000b3}.dark\:text-neutral-100:is(.dark *){--tw-text-opacity: 1;color:rgb(245 245 245 / var(--tw-text-opacity))}.dark\:text-neutral-300:is(.dark *){--tw-text-opacity: 1;color:rgb(212 212 212 / var(--tw-text-opacity))}.dark\:text-neutral-400:is(.dark *){--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity))}.dark\:text-neutral-50:is(.dark *){--tw-text-opacity: 1;color:rgb(250 250 250 / var(--tw-text-opacity))}.dark\:text-white\/10:is(.dark *){color:#ffffff1a}.dark\:text-white\/25:is(.dark *){color:#ffffff40}.dark\:text-white\/30:is(.dark *){color:#ffffff4d}.dark\:text-white\/5:is(.dark *){color:#ffffff0d}.dark\:text-white\/50:is(.dark *){color:#ffffff80}.dark\:text-white\/75:is(.dark *){color:#ffffffbf}.dark\:text-white\/90:is(.dark *){color:#ffffffe6}.dark\:text-white\/\[0\.2\]:is(.dark *){color:#fff3}.dark\:shadow-none:is(.dark *){--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.dark\:focus-within\:bg-white\/10:focus-within:is(.dark *){background-color:#ffffff1a}.dark\:hover\:bg-\[oklch\(0\.35_0\.03_var\(--hue\)\)\]:hover:is(.dark *){background-color:oklch(.35 .03 var(--hue))}.dark\:hover\:bg-white\/10:hover:is(.dark *){background-color:#ffffff1a}.dark\:hover\:text-\[var\(--primary\)\]:hover:is(.dark *){color:var(--primary)}.dark\:active\:bg-\[oklch\(0\.40_0\.03_var\(--hue\)\)\]:active:is(.dark *){background-color:oklch(.4 .03 var(--hue))}.dark\:active\:text-\[var\(--title-active\)\]:active:is(.dark *){color:var(--title-active)}@media (min-width: 768px){.md\:absolute{position:absolute}.md\:bottom-3{bottom:.75rem}.md\:left-\[unset\]{left:unset}.md\:right-3{right:.75rem}.md\:top-3{top:.75rem}.md\:mx-0{margin-left:0;margin-right:0}.md\:mb-0{margin-bottom:0}.md\:mt-0{margin-top:0}.md\:line-clamp-1{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.md\:block{display:block}.md\:inline{display:inline}.md\:flex{display:flex}.md\:hidden{display:none}.md\:max-h-none{max-height:none}.md\:w-\[10\%\]{width:10%}.md\:w-\[15\%\]{width:15%}.md\:w-\[30rem\]{width:30rem}.md\:w-\[65\%\]{width:65%}.md\:w-\[80\%\]{width:80%}.md\:w-\[calc\(100\%_-_52px_-_12px\)\]{width:calc(100% - 64px)}.md\:w-\[calc\(100\%_-_var\(--coverWidth\)_-_12px\)\]{width:calc(100% - var(--coverWidth) - 12px)}.md\:w-\[var\(--coverWidth\)\]{width:var(--coverWidth)}.md\:max-w-\[65\%\]{max-width:65%}.md\:flex-row{flex-direction:row}.md\:flex-col{flex-direction:column}.md\:gap-4{gap:1rem}.md\:bg-transparent{background-color:transparent}.md\:px-4{padding-left:1rem;padding-right:1rem}.md\:px-9{padding-left:2.25rem;padding-right:2.25rem}.md\:py-0{padding-top:0;padding-bottom:0}.md\:pl-9{padding-left:2.25rem}.md\:pr-2{padding-right:.5rem}.md\:pt-7{padding-top:1.75rem}.md\:text-\[16px\]{font-size:16px}.md\:text-\[2\.5rem\]\/\[2\.75rem\]{font-size:2.5rem;line-height:2.75rem}.md\:before\:block:before{content:var(--tw-content);display:block}.md\:before\:w-1:before{content:var(--tw-content);width:.25rem}}@media (min-width: 1024px){.lg\:col-span-1{grid-column:span 1 / span 1}.lg\:row-start-1{grid-row-start:1}.lg\:row-end-2{grid-row-end:2}.lg\:mx-0{margin-left:0;margin-right:0}.lg\:mt-0{margin-top:0}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:w-full{width:100%}.lg\:max-w-\[17\.5rem\]{max-width:17.5rem}.lg\:max-w-none{max-width:none}.lg\:grid-rows-\[auto\]{grid-template-rows:auto}.lg\:first-of-type\:mt-0:first-of-type{margin-top:0}}.container[data-astro-cid-qtyrxm4s]{width:100%}@media (min-width: 640px){.container[data-astro-cid-qtyrxm4s]{max-width:640px}}@media (min-width: 768px){.container[data-astro-cid-qtyrxm4s]{max-width:768px}}@media (min-width: 1024px){.container[data-astro-cid-qtyrxm4s]{max-width:1024px}}@media (min-width: 1280px){.container[data-astro-cid-qtyrxm4s]{max-width:1280px}}@media (min-width: 1536px){.container[data-astro-cid-qtyrxm4s]{max-width:1536px}}.prose[data-astro-cid-qtyrxm4s]{color:var(--tw-prose-body);max-width:65ch}.prose[data-astro-cid-qtyrxm4s] :where(p):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{margin-top:1.25em;margin-bottom:1.25em}.prose[data-astro-cid-qtyrxm4s] :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose[data-astro-cid-qtyrxm4s] :where(a):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.prose[data-astro-cid-qtyrxm4s] :where(strong):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{color:var(--tw-prose-bold);font-weight:600}.prose[data-astro-cid-qtyrxm4s] :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{color:inherit}.prose[data-astro-cid-qtyrxm4s] :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{color:inherit}.prose[data-astro-cid-qtyrxm4s] :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{color:inherit}.prose[data-astro-cid-qtyrxm4s] :where(ol):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose[data-astro-cid-qtyrxm4s] :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{list-style-type:upper-alpha}.prose[data-astro-cid-qtyrxm4s] :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{list-style-type:lower-alpha}.prose[data-astro-cid-qtyrxm4s] :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{list-style-type:upper-alpha}.prose[data-astro-cid-qtyrxm4s] :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{list-style-type:lower-alpha}.prose[data-astro-cid-qtyrxm4s] :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{list-style-type:upper-roman}.prose[data-astro-cid-qtyrxm4s] :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{list-style-type:lower-roman}.prose[data-astro-cid-qtyrxm4s] :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{list-style-type:upper-roman}.prose[data-astro-cid-qtyrxm4s] :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{list-style-type:lower-roman}.prose[data-astro-cid-qtyrxm4s] :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{list-style-type:decimal}.prose[data-astro-cid-qtyrxm4s] :where(ul):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose[data-astro-cid-qtyrxm4s] :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker [data-astro-cid-qtyrxm4s]{font-weight:400;color:var(--tw-prose-counters)}.prose[data-astro-cid-qtyrxm4s] :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker [data-astro-cid-qtyrxm4s]{color:var(--tw-prose-bullets)}.prose[data-astro-cid-qtyrxm4s] :where(dt):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose[data-astro-cid-qtyrxm4s] :where(hr):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose[data-astro-cid-qtyrxm4s] :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"“""”""‘""’";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em}.prose[data-astro-cid-qtyrxm4s] :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before [data-astro-cid-qtyrxm4s]{content:open-quote}.prose[data-astro-cid-qtyrxm4s] :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after [data-astro-cid-qtyrxm4s]{content:close-quote}.prose[data-astro-cid-qtyrxm4s] :where(h1):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose[data-astro-cid-qtyrxm4s] :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{font-weight:900;color:inherit}.prose[data-astro-cid-qtyrxm4s] :where(h2):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose[data-astro-cid-qtyrxm4s] :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{font-weight:800;color:inherit}.prose[data-astro-cid-qtyrxm4s] :where(h3):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose[data-astro-cid-qtyrxm4s] :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{font-weight:700;color:inherit}.prose[data-astro-cid-qtyrxm4s] :where(h4):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose[data-astro-cid-qtyrxm4s] :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{font-weight:700;color:inherit}.prose[data-astro-cid-qtyrxm4s] :where(img):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{margin-top:2em;margin-bottom:2em}.prose[data-astro-cid-qtyrxm4s] :where(picture):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{display:block;margin-top:2em;margin-bottom:2em}.prose[data-astro-cid-qtyrxm4s] :where(video):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{margin-top:2em;margin-bottom:2em}.prose[data-astro-cid-qtyrxm4s] :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{font-weight:500;font-family:inherit;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px rgb(var(--tw-prose-kbd-shadows) / 10%),0 3px rgb(var(--tw-prose-kbd-shadows) / 10%);font-size:.875em;border-radius:.3125rem;padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;padding-inline-start:.375em}.prose[data-astro-cid-qtyrxm4s] :where(code):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose[data-astro-cid-qtyrxm4s] :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before [data-astro-cid-qtyrxm4s]{content:"`"}.prose[data-astro-cid-qtyrxm4s] :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after [data-astro-cid-qtyrxm4s]{content:"`"}.prose[data-astro-cid-qtyrxm4s] :where(a code):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{color:inherit}.prose[data-astro-cid-qtyrxm4s] :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{color:inherit}.prose[data-astro-cid-qtyrxm4s] :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{color:inherit;font-size:.875em}.prose[data-astro-cid-qtyrxm4s] :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{color:inherit;font-size:.9em}.prose[data-astro-cid-qtyrxm4s] :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{color:inherit}.prose[data-astro-cid-qtyrxm4s] :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{color:inherit}.prose[data-astro-cid-qtyrxm4s] :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{color:inherit}.prose[data-astro-cid-qtyrxm4s] :where(pre):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding-top:.8571429em;padding-inline-end:1.1428571em;padding-bottom:.8571429em;padding-inline-start:1.1428571em}.prose[data-astro-cid-qtyrxm4s] :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose[data-astro-cid-qtyrxm4s] :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before [data-astro-cid-qtyrxm4s]{content:none}.prose[data-astro-cid-qtyrxm4s] :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after [data-astro-cid-qtyrxm4s]{content:none}.prose[data-astro-cid-qtyrxm4s] :where(table):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{width:100%;table-layout:auto;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose[data-astro-cid-qtyrxm4s] :where(thead):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose[data-astro-cid-qtyrxm4s] :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose[data-astro-cid-qtyrxm4s] :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose[data-astro-cid-qtyrxm4s] :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{border-bottom-width:0}.prose[data-astro-cid-qtyrxm4s] :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{vertical-align:baseline}.prose[data-astro-cid-qtyrxm4s] :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose[data-astro-cid-qtyrxm4s] :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{vertical-align:top}.prose[data-astro-cid-qtyrxm4s] :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{text-align:start}.prose[data-astro-cid-qtyrxm4s] :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{margin-top:0;margin-bottom:0}.prose[data-astro-cid-qtyrxm4s] :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose[data-astro-cid-qtyrxm4s]{--tw-prose-body: #374151;--tw-prose-headings: #111827;--tw-prose-lead: #4b5563;--tw-prose-links: #111827;--tw-prose-bold: #111827;--tw-prose-counters: #6b7280;--tw-prose-bullets: #d1d5db;--tw-prose-hr: #e5e7eb;--tw-prose-quotes: #111827;--tw-prose-quote-borders: #e5e7eb;--tw-prose-captions: #6b7280;--tw-prose-kbd: #111827;--tw-prose-kbd-shadows: 17 24 39;--tw-prose-code: #111827;--tw-prose-pre-code: #e5e7eb;--tw-prose-pre-bg: #1f2937;--tw-prose-th-borders: #d1d5db;--tw-prose-td-borders: #e5e7eb;--tw-prose-invert-body: #d1d5db;--tw-prose-invert-headings: #fff;--tw-prose-invert-lead: #9ca3af;--tw-prose-invert-links: #fff;--tw-prose-invert-bold: #fff;--tw-prose-invert-counters: #9ca3af;--tw-prose-invert-bullets: #4b5563;--tw-prose-invert-hr: #374151;--tw-prose-invert-quotes: #f3f4f6;--tw-prose-invert-quote-borders: #374151;--tw-prose-invert-captions: #9ca3af;--tw-prose-invert-kbd: #fff;--tw-prose-invert-kbd-shadows: 255 255 255;--tw-prose-invert-code: #fff;--tw-prose-invert-pre-code: #d1d5db;--tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);--tw-prose-invert-th-borders: #4b5563;--tw-prose-invert-td-borders: #374151;font-size:1rem;line-height:1.75}.prose[data-astro-cid-qtyrxm4s] :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{margin-top:0;margin-bottom:0}.prose[data-astro-cid-qtyrxm4s] :where(li):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{margin-top:.5em;margin-bottom:.5em}.prose[data-astro-cid-qtyrxm4s] :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{padding-inline-start:.375em}.prose[data-astro-cid-qtyrxm4s] :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{padding-inline-start:.375em}.prose[data-astro-cid-qtyrxm4s] :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{margin-top:.75em;margin-bottom:.75em}.prose[data-astro-cid-qtyrxm4s] :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{margin-top:1.25em}.prose[data-astro-cid-qtyrxm4s] :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{margin-bottom:1.25em}.prose[data-astro-cid-qtyrxm4s] :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{margin-top:1.25em}.prose[data-astro-cid-qtyrxm4s] :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{margin-bottom:1.25em}.prose[data-astro-cid-qtyrxm4s] :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{margin-top:.75em;margin-bottom:.75em}.prose[data-astro-cid-qtyrxm4s] :where(dl):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{margin-top:1.25em;margin-bottom:1.25em}.prose[data-astro-cid-qtyrxm4s] :where(dd):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{margin-top:.5em;padding-inline-start:1.625em}.prose[data-astro-cid-qtyrxm4s] :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{margin-top:0}.prose[data-astro-cid-qtyrxm4s] :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{margin-top:0}.prose[data-astro-cid-qtyrxm4s] :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{margin-top:0}.prose[data-astro-cid-qtyrxm4s] :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{margin-top:0}.prose[data-astro-cid-qtyrxm4s] :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{padding-inline-start:0}.prose[data-astro-cid-qtyrxm4s] :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{padding-inline-end:0}.prose[data-astro-cid-qtyrxm4s] :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{padding-top:.5714286em;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose[data-astro-cid-qtyrxm4s] :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{padding-inline-start:0}.prose[data-astro-cid-qtyrxm4s] :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{padding-inline-end:0}.prose[data-astro-cid-qtyrxm4s] :where(figure):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{margin-top:2em;margin-bottom:2em}.prose[data-astro-cid-qtyrxm4s] :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{margin-top:0}.prose[data-astro-cid-qtyrxm4s] :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{margin-bottom:0}.prose-base[data-astro-cid-qtyrxm4s]{font-size:1rem;line-height:1.75}.prose-base[data-astro-cid-qtyrxm4s] :where(p):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{margin-top:1.25em;margin-bottom:1.25em}.prose-base[data-astro-cid-qtyrxm4s] :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose-base[data-astro-cid-qtyrxm4s] :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em}.prose-base[data-astro-cid-qtyrxm4s] :where(h1):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose-base[data-astro-cid-qtyrxm4s] :where(h2):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose-base[data-astro-cid-qtyrxm4s] :where(h3):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose-base[data-astro-cid-qtyrxm4s] :where(h4):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose-base[data-astro-cid-qtyrxm4s] :where(img):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{margin-top:2em;margin-bottom:2em}.prose-base[data-astro-cid-qtyrxm4s] :where(picture):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{margin-top:2em;margin-bottom:2em}.prose-base[data-astro-cid-qtyrxm4s] :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{margin-top:0;margin-bottom:0}.prose-base[data-astro-cid-qtyrxm4s] :where(video):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{margin-top:2em;margin-bottom:2em}.prose-base[data-astro-cid-qtyrxm4s] :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{font-size:.875em;border-radius:.3125rem;padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;padding-inline-start:.375em}.prose-base[data-astro-cid-qtyrxm4s] :where(code):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{font-size:.875em}.prose-base[data-astro-cid-qtyrxm4s] :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{font-size:.875em}.prose-base[data-astro-cid-qtyrxm4s] :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{font-size:.9em}.prose-base[data-astro-cid-qtyrxm4s] :where(pre):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding-top:.8571429em;padding-inline-end:1.1428571em;padding-bottom:.8571429em;padding-inline-start:1.1428571em}.prose-base[data-astro-cid-qtyrxm4s] :where(ol):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose-base[data-astro-cid-qtyrxm4s] :where(ul):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose-base[data-astro-cid-qtyrxm4s] :where(li):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{margin-top:.5em;margin-bottom:.5em}.prose-base[data-astro-cid-qtyrxm4s] :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{padding-inline-start:.375em}.prose-base[data-astro-cid-qtyrxm4s] :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{padding-inline-start:.375em}.prose-base[data-astro-cid-qtyrxm4s] :where(.prose-base>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{margin-top:.75em;margin-bottom:.75em}.prose-base[data-astro-cid-qtyrxm4s] :where(.prose-base>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{margin-top:1.25em}.prose-base[data-astro-cid-qtyrxm4s] :where(.prose-base>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{margin-bottom:1.25em}.prose-base[data-astro-cid-qtyrxm4s] :where(.prose-base>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{margin-top:1.25em}.prose-base[data-astro-cid-qtyrxm4s] :where(.prose-base>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{margin-bottom:1.25em}.prose-base[data-astro-cid-qtyrxm4s] :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{margin-top:.75em;margin-bottom:.75em}.prose-base[data-astro-cid-qtyrxm4s] :where(dl):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{margin-top:1.25em;margin-bottom:1.25em}.prose-base[data-astro-cid-qtyrxm4s] :where(dt):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{margin-top:1.25em}.prose-base[data-astro-cid-qtyrxm4s] :where(dd):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{margin-top:.5em;padding-inline-start:1.625em}.prose-base[data-astro-cid-qtyrxm4s] :where(hr):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{margin-top:3em;margin-bottom:3em}.prose-base[data-astro-cid-qtyrxm4s] :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{margin-top:0}.prose-base[data-astro-cid-qtyrxm4s] :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{margin-top:0}.prose-base[data-astro-cid-qtyrxm4s] :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{margin-top:0}.prose-base[data-astro-cid-qtyrxm4s] :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{margin-top:0}.prose-base[data-astro-cid-qtyrxm4s] :where(table):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{font-size:.875em;line-height:1.7142857}.prose-base[data-astro-cid-qtyrxm4s] :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose-base[data-astro-cid-qtyrxm4s] :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{padding-inline-start:0}.prose-base[data-astro-cid-qtyrxm4s] :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{padding-inline-end:0}.prose-base[data-astro-cid-qtyrxm4s] :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{padding-top:.5714286em;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose-base[data-astro-cid-qtyrxm4s] :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{padding-inline-start:0}.prose-base[data-astro-cid-qtyrxm4s] :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{padding-inline-end:0}.prose-base[data-astro-cid-qtyrxm4s] :where(figure):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{margin-top:2em;margin-bottom:2em}.prose-base[data-astro-cid-qtyrxm4s] :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{margin-top:0;margin-bottom:0}.prose-base[data-astro-cid-qtyrxm4s] :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose-base[data-astro-cid-qtyrxm4s] :where(.prose-base>:first-child):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{margin-top:0}.prose-base[data-astro-cid-qtyrxm4s] :where(.prose-base>:last-child):not(:where([class~=not-prose],[class~=not-prose] *))[data-astro-cid-qtyrxm4s]{margin-bottom:0}.meta-icon[data-astro-cid-qtyrxm4s]{margin-right:.5rem;display:flex;height:2rem;width:2rem;align-items:center;justify-content:center;border-radius:.375rem;background-color:var(--btn-regular-bg);color:var(--btn-content);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.with-divider[data-astro-cid-qtyrxm4s]:before{margin-left:.375rem;margin-right:.375rem;font-size:.875rem;line-height:1.25rem;font-weight:500;color:var(--meta-divider);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;--tw-content: "/";content:var(--tw-content)}.with-divider[data-astro-cid-qtyrxm4s]:first-of-type:before{content:var(--tw-content);display:none}.dark\:prose-invert[data-astro-cid-qtyrxm4s]:is(.dark *){--tw-prose-body: var(--tw-prose-invert-body);--tw-prose-headings: var(--tw-prose-invert-headings);--tw-prose-lead: var(--tw-prose-invert-lead);--tw-prose-links: var(--tw-prose-invert-links);--tw-prose-bold: var(--tw-prose-invert-bold);--tw-prose-counters: var(--tw-prose-invert-counters);--tw-prose-bullets: var(--tw-prose-invert-bullets);--tw-prose-hr: var(--tw-prose-invert-hr);--tw-prose-quotes: var(--tw-prose-invert-quotes);--tw-prose-quote-borders: var(--tw-prose-invert-quote-borders);--tw-prose-captions: var(--tw-prose-invert-captions);--tw-prose-kbd: var(--tw-prose-invert-kbd);--tw-prose-kbd-shadows: var(--tw-prose-invert-kbd-shadows);--tw-prose-code: var(--tw-prose-invert-code);--tw-prose-pre-code: var(--tw-prose-invert-pre-code);--tw-prose-pre-bg: var(--tw-prose-invert-pre-bg);--tw-prose-th-borders: var(--tw-prose-invert-th-borders);--tw-prose-td-borders: var(--tw-prose-invert-td-borders)}#display-setting.svelte-3akcb9 input[type=range].svelte-3akcb9{-webkit-appearance:none;height:1.5rem;background-image:var(--color-selection-bar);transition:background-image .15s ease-in-out}#display-setting.svelte-3akcb9 .svelte-3akcb9::-webkit-slider-thumb{-webkit-appearance:none;height:1rem;width:.5rem;border-radius:.125rem;background:#ffffffb3;box-shadow:none}#display-setting.svelte-3akcb9 .svelte-3akcb9::-webkit-slider-thumb:hover{background:#fffc}#display-setting.svelte-3akcb9 .svelte-3akcb9::-webkit-slider-thumb:active{background:#fff9}#display-setting.svelte-3akcb9 .svelte-3akcb9::-moz-range-thumb{-webkit-appearance:none;height:1rem;width:.5rem;border-radius:.125rem;border-width:0;background:#ffffffb3;box-shadow:none}#display-setting.svelte-3akcb9 .svelte-3akcb9::-moz-range-thumb:hover{background:#fffc}#display-setting.svelte-3akcb9 .svelte-3akcb9::-moz-range-thumb:active{background:#fff9}#display-setting.svelte-3akcb9.svelte-3akcb9::-ms-thumb{-webkit-appearance:none;height:1rem;width:.5rem;border-radius:.125rem;background:#ffffffb3;box-shadow:none}#display-setting.svelte-3akcb9.svelte-3akcb9::-ms-thumb:hover{background:#fffc}#display-setting.svelte-3akcb9.svelte-3akcb9::-ms-thumb:active{background:#fff9} diff --git a/_astro/about.DGMVeBT_.css b/_astro/about.DGMVeBT_.css new file mode 100644 index 0000000..3ff5342 --- /dev/null +++ b/_astro/about.DGMVeBT_.css @@ -0,0 +1 @@ +@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(data:font/woff2;base64,d09GMgABAAAAAAewABQAAAAAD6gAAAdIAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGiIbHhwoP0hWQVIqBmA/U1RBVIFiJyYAXC9qEQgKhGSDegsaADCGAgE2AiQDLgQgBYlMB4EDDAcbwQ1RVJJeQfLjoBzTNUne6PP1Xi1YsKKMh70ywfP/36a/z53BpOY0KsRsiHpNIGElxGhT8tzlS2v+9dwHOWS3yUkpDnXpSTLqgYxJaijBRDSVp4yj3wqMc6by2I3YLjyRDI///9yv7qIPtaYXPHQJiZRJ+/vGw3Rjw1yjWCj46WKeOJxup1tolMRT1eKsRQaNUEwRzr779xpLIcBsMF8QLI2VwPWdLGUp0tjcOYgdHcA0AQROaaShfnr2RDgxhRdAOgfmgor1QazcuK8CulovV2EBdYlaC3TQ7WUzQTFAgQPnX9nYs33AW4T6lfbv/++gvoZcDCB3HtkDKk3tBwKnE+2oHYFjsxTUiSOjCQE+l3kB8SHMJo1KukWc4BLu4AkUgAjDGOEGBZ+o+IgL/xskTXJAks1AgRJdroJ4eUcqWeRXiFdrI8mqXoN49T1INi0AHB2BZimTcxEI9c8AK5Dn297iLXat2nfL149+/wOAnzlFBaRuNzAAyi5/LhpCn6PTCtzYUeiEvC1Kf1L/yjSBMX1C/7LIfMsMmSsdBgBW7IAF2+wgAfwohLnYcN5xJYYhV52iPIII8O7tooCP3DtEA8mRnKIryolLLHBTklusZ84Qj9isXkm8CGKa+ABwA7AQ8AHXAV8AKWMp0FAmylVBmnvzCILommZ3+HwOx2yHY47udVk8esRjGR53u7a4NjlXOwc3uFbfs3v+dTsDLm29a93Nt8+78c4lG1xrVfiS3aKdvcd16S7UWTt3rr50j4iTs3atd8nZu52X7MSLTRjhEjbxhc7qhFXZbBtx881c1K23WpfcyKl3DZ76eoq4zno9pZ9Mz75z/f779m8qzKmqM7Mrcwi+vu/k1/ZtyH/70LBGyPNS2VFz1qqlS5OI/3na48BHm67KfunzBQuOv3R59iam5iyyHZH4tkjbJDIeidjoDqHg5k1Bo7uqpsE4/+d9o7ahdu3PCaOmvqoKqKHgjc1BUUToel+yaXNNY1NR0UbjBqNIR4rqmNq10n9NN+oa6n779UQdE1lVmZ+R/5997p3UjSdOnPjQGSuhcOqlkcTEBvYuz+FpyIpdGp66lNnvprau6Qm1pJsZmb70llD1JVQaAlhxLn8QF6IVnZzmgBKAIKg07QUKyY1L1H6qzU61VL2NoIA83KjeMpBBIZVEjHuBN8Un5dIsowZvcZbCTQAhCXDNXpY6GuilUaujrTYMzPYK1SqMx9cveY536Rrz///m219b5knnd7LBrElBtHUcg6/y4/XRi6M3P5glYMB0HzvEgg/+XcqaVvk3z9dAJHFr3OuxAOSmFP2Nfv0ez9UEea8cRb2LaQ5YVOl7zXG8mKnb3ccr6/7j3TGme6vQPVQA3If7qYFLK2BHIR3bzxZALaYVyVuUVyHN7saaZMkpCU1Ceb6G79+7vFrl3e/9PtVOOPcaZYE7iuxGUHXsTQppl9EjFd3xKajuzOxsQssTHpp8Ui5KcPnymUar1ThzeZHvfX6Lk/rcY3slTzx4uqFpIIQRJgQJKJIQQW4PQyxWKsXFeAzUNNvImLwKCa0b6GtOEah804G1WJhSPfWg0+B41s3rZqAYQAw1cIhMLVKpUT4FJWOjs4mCoqbpMrRWWaLKBC5e3FYTKLl9kdL03zsU/6Vsj+QEgF+irmnV1lIVMd+4PYlNwtao12OMfu/Nhm0873DW+34ox/FPB8PGZFa0XsW+63rl3Lh77/YNKLh97871w1MTGUDenhjGaMgOSfTb32bL4BDb44Oi2J2B8zlIhcJ4vGCIkFDIxvhpsxAIkyVAGBOMAzFpaVnflhYLKFiwBgQA+Jpw5tnM/S2+O1whpMUV4MDnD9wCcGD/pz/nN//fqV+j/QusKAAE3pUR+lMC8t+V4yC4XJday/rRZ1A7GdaHVdM/BezkMgRwy0tMeQ6r4fU0FLBIgmiI7gBeU4fnKCxV76DCq55DjWp1EurkqE60sFgF0UqWsjt7KZXPvQm45QMU7PIGKubKI6jhlLt66GtHikWvfR1YtS9DG7PlFLSTJ53ooFJmo5MCjqOLYp5AN0FOYzxGdKOXcuajDzfO/+nHCfSLmxQ2pU1C2ISYIe2iEupNC4uZskOXuClxTflcmpwkIRPqxdVDMJx2pULoEk35mBm2K1TQT0fS+ZgQNt2YdYpN66jE+btWLQ4aFbRzg0ra+tTqFdpdVW2XvEaU50Y2db/NDpXkszR3yLQYSxMZzRuFmAkqxE2rVjOfHs0699/2ncJqOi3RjOUGCJI30sK0HZvwQOZHoKWSVmXTVa9qF62Zjq/cvEHcNiebviFuz1AgFhC4walEBfZOe6F83JioIYvyITMSRhtO3HfGrYsjYqLfmxGRx5C4SfkrDTT/3OmZKDCgZpQgIDzLDaTwsSiqRRNdLGIVm9jFYQ1F/lyjgW1mKlZQHGqi+k3lMk67+fsVlpHw5GTYGx6aSUR/7Ib7xpsgt4dYVFDaln1JzPOf0i8H) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-cyrillic-wght-normal.BptiBwAt.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-greek-wght-normal.BW1JPxja.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-vietnamese-wght-normal.By-yputv.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-latin-ext-wght-normal.Com2F4yK.woff2) format("woff2-variations");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-latin-wght-normal.Ajscav9D.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono Variable;font-style:italic;font-display:swap;font-weight:100 800;src:url(data:font/woff2;base64,d09GMgABAAAAAAgwABQAAAAAELAAAAfGAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGiIbHhwoP0hWQVIqBmA/U1RBVIFeJyYAXC9qEQgKhQiEEAsaADCGDgE2AiQDLgQgBYsmB4EDDAcbuQ5RlHLSh1D8LIwda5EDkWTsWrXb7n5f9POJLTIGp5/2yIjB8///m7bPfQ88KqslaiQVh1SdEBMiXjMd87RjKp91HXj6/saf3RdaYGmYaBJz3nz0P36n5rQIQfhkwIrIsVXNfXeVunIkpwpAX+JhcyK+eSt7iYsZQskXT8BU/n6t1XuIJfEMD/EQudBo8fgnIruY7IklVBtDxUMUi2KezCsREpXGW6kxl9mxrIjxBocE6bP/scZCgFAnmyAY9lECx7cSL56MGDVhBmZ0AL8foIlPlUr9dOhdO7eTQAD1KAgXeAZAouzYDwK6KpOdGEBtVl7/NSfZjn6pwhkXKLDQ5lYm1hx3AKu4t9Pr3v8/mdgdQ7IdyAP//goqVf0BHOujzChLYFksmVrQ1DxXgAdmbkB0hFCpBpqkznybHddDAUgQDUCwnyfkB/MZq7wDdIhkg16qwK4kVHaCUT5Q02FyDYzKG+hw9RYY1QWgIzQHENILrShJ4N0oYl7o9k0Lpve8x88zfz/cfWZwESBY2J5PyuPCBVCABoTTEHIdnTHAjhmFjtv7ovQT+unxgwvt0U855zfuqbUZABgxAwZMdCMBgimEcCasDhPfiGVac9BTAkJKsyjgs1CLaMGSTVtFT4kTmxiIT7RdjCsukwAxFdNIYH9tv18QAHYAokEQsA+cApKREzTUhy5AfLTHRBBE1zSzJSjYYgm1WML0QJshQK8LMDS02W1ttkqrxzqj3OZ5+BfZ+1O+rbzMVnroWMSBE3FCtQbvzM2/lJT/ekhm2/LzDO9P1T1bfk0qsc548GetZ8kjv1g3/+TQcXq/EtXPDpm3De1tjY/y2HprSqpyex06JKuOHMlf1TxjSYkNcTJw9qqjb+9M3/a2DY9Z9sej2cqC7EHD/FkDszEW/L5ozO/e4Pf/nvR+e8Br4f9N1mcGDO418zg/Zgbv/qy8JmvhalO/xFtvZ1Unf8YfiPuWusruoNrCMVa3q9JX4K6r6uLOZnEVV/mchZMGjRn+QPjaK9TaBwqHm7xXQuY84CwedDQVP0D83l0eZ2KVxRW51+pyVzY6Xa6ZhckVD0Tte2AMbSx0ssbO5bnmeaBoePT1a8U9V6pBA/kz9PDyG/9iW0rZkPZ+3lyBqZ/5iZ72ypgU6QyEXpkrtjSu3ULUP2XMuMkW1yjPjvSMFZ4x9BcNk1GpCGDE2msMskEZ0bHNAn0EGypDe2UPfaGt4TL1h6aZ0NHpX0xQQC47AE4AGZwGqdfuNe9LqAyWcdLp4j1WFjuJhETQHiPk6oAK1K0mZieUECZN2JtipnpcnAEFnF1B7J/X+Hyd3NPqk8XQNwvTLf2umZLg7Tf6Ff0rwrJgAYv489QuHjTQzhKg6OBvPp+WDZxC3UcwZOKG49WoliuoyjDxcIDOj44tCGOe0zFKUpax2uTlm0Zob2UfbbiOOHziATzDy6OHgEqiDPMzsBy3fjRbF0IxQrdZHzZoQQzQrdeFhnWbK7thserXB7hee3MMm/cK/b6H2oFPQXlMCFT1erncmptSSQKA94izHrRwTsS4QbsxXJmDOTRsKm5mi47qJ7GPgfPzA7LdJg/OaRpl/puBZBC0Cx8+H8U6DePe00fBdt40PWtbk6QF1GoMWzQvBNmGeo3Jfqz7RRxQc4jJfrWPwTgeN50qGugz6FOvVqtUuiuToGVJVRk3P6aVDRL0RbXRoDdaQ3+6P6OdCDmuNh29rwbpxOD0VHQPCymeetTYjO/0zeVthR3YmYOgKKy9nPfTCmsCatu5EUIQeq5oNuw0+x/OUCFCfOpl2SM5F0JIyelLB2Bh1eXx6f4G7PdPD9eRwuAE5/JWlh0NYcT6qugSVIByFgmYgN/MkmSYTwfxhvV4M4Kxtk3j9oUnDYYuLhhRIpqIMt04RUbcuYBiuLtKt0Xb+B8CqL56e+aO1uqgwdfNmnYK8OcPT76So//x3ZU55/+fbLu1exQjCgCBe6lKP6kJvp8w6pTjAmNTXspQTqN/GwyFJhjxZ02QFM4hgF1eo9NLjAhwPA0F9EonGqJbgLfWUgaF+FWDCrs2AzUGrljUyewlNBDbX9BIensSAunbhRkE7Kodhch6UJHYItSIbrxSr84BNBBbhUYicw5NOPIVmsnPUbQwODVoxZlctNHXLbRT5CMMIN9eDGSgMgzCzDQMJtxQDMFKEYYSSCqGYScWwzETetoIQsFIC801W61iXdo1EPNEvuF/WszTYRqfJvO0qzXbBC2aNJtbormw2QzNWnQax2euYg1hmTkm6iJMl7HmBnH72E+9HBudkt6pSS3W1TmJLdffOXuhJ53sRScXEPrehp89Hfq2pZbetJSb22m5a1atXTqhrVakwhK+JILmn6vbHAPlyTNHxczWortl5sg1Z0zZLleX2ZObZ7JRJvjSM2e0efjMLkQ0jINTLuqvQEEZpSOwOZon2gYZpxh3goXmTPurzj5cl26LzPaScspHUsduMD4O29mnmK1LKx+3COU2z2PiHtH3mc5vqkmLzjxP3U5cH/rpkFerTUFY3TODAv9NlNLHCYQdsN9Kss9FMTia6GIQo5jELBaju262b77PNK+zJb/IPZKEjOyfx/qP+v4AQ1NtR0dtYG39vLm+f9ohP7cjsS+hCvP7HrxfE/+6k/o2AAA=) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono Variable;font-style:italic;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-cyrillic-wght-italic.n46wCxo2.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:JetBrains Mono Variable;font-style:italic;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-greek-wght-italic.MM8eZ3ga.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:JetBrains Mono Variable;font-style:italic;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-vietnamese-wght-italic.BG2XwtC0.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono Variable;font-style:italic;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-latin-ext-wght-italic.BmpnCKuU.woff2) format("woff2-variations");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono Variable;font-style:italic;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-latin-wght-italic.Bxk8Slts.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}.custom-md h1{font-size:1.875rem;line-height:2.25rem}.custom-md h1 .anchor,.custom-md h2 .anchor,.custom-md h3 .anchor,.custom-md h4 .anchor,.custom-md h5 .anchor,.custom-md h6 .anchor{margin:-.125rem!important;margin-left:.2ch!important;padding:.125rem!important;-webkit-user-select:none!important;-moz-user-select:none!important;user-select:none!important;opacity:0!important;text-decoration:none!important;transition:opacity .15s ease-in-out,background .15s ease-in-out!important}.custom-md h1 .anchor .anchor-icon,.custom-md h2 .anchor .anchor-icon,.custom-md h3 .anchor .anchor-icon,.custom-md h4 .anchor .anchor-icon,.custom-md h5 .anchor .anchor-icon,.custom-md h6 .anchor .anchor-icon{margin-left:.45ch!important;margin-right:.45ch!important}.custom-md h1:hover .anchor,.custom-md h2:hover .anchor,.custom-md h3:hover .anchor,.custom-md h4:hover .anchor,.custom-md h5:hover .anchor,.custom-md h6:hover .anchor{opacity:1!important}.custom-md a:not(.no-styling){position:relative;background:none;margin:-.25rem;padding:.25rem;border-radius:.375rem;font-weight:500;color:var(--primary);text-decoration-line:underline;text-decoration-color:var(--link-underline);text-decoration-thickness:.125rem;text-decoration-style:dashed;text-underline-offset:.25rem}.custom-md a:not(.no-styling):hover{background:var(--link-hover);text-decoration-color:var(--link-hover)}.custom-md a:not(.no-styling):active{background:var(--link-active);text-decoration-color:var(--link-active)}.custom-md code{font-family:JetBrains Mono Variable,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;background:var(--inline-code-bg);color:var(--inline-code-color);padding:.125rem .25rem;border-radius:.25rem;overflow:hidden;counter-reset:line}.custom-md code:before{content:none}.custom-md code:after{content:none}.custom-md code span.line:before{content:counter(line);counter-increment:line;direction:rtl;display:inline-block;margin-right:1rem;width:1rem;color:#ffffff40}.custom-md code span.line:last-child:empty,.custom-md code span.line:last-child:has(>span:empty:only-child){display:none}.custom-md pre{background:var(--codeblock-bg)!important;border-radius:.75rem;padding-left:1.25rem;padding-right:1.25rem}.custom-md pre code{color:unset;font-size:.875rem;padding:0;background:none}.custom-md pre code ::-moz-selection{background:var(--codeblock-selection)}.custom-md pre code ::selection{background:var(--codeblock-selection)}.custom-md pre code span.br::-moz-selection{background:var(--codeblock-selection)}.custom-md pre code span.br::selection{background:var(--codeblock-selection)}.custom-md ul li::marker{color:var(--primary)}.custom-md ol li::marker{color:var(--primary)}.custom-md blockquote{font-style:normal;font-weight:inherit;border-left-color:#0000;position:relative}.custom-md blockquote:before{content:"";position:absolute;left:-.25rem;display:block;transition:background .15s ease-in-out;background:var(--btn-regular-bg);height:100%;width:.25rem;border-radius:1rem}.custom-md blockquote p:before{content:none}.custom-md blockquote p:after{content:none}.custom-md blockquote.admonition .bdm-title{display:flex;align-items:center;margin-bottom:-.9rem;font-weight:700}.custom-md blockquote.admonition .bdm-title:before{content:" ";display:inline-block;font-size:inherit;overflow:visible;margin-right:.6rem;height:1em;width:1em;vertical-align:-.126em;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;transform:translateY(-.0625rem)}.custom-md blockquote.admonition.bdm-tip .bdm-title{color:var(--admonitions-color-tip)}.custom-md blockquote.admonition.bdm-tip .bdm-title:before{background:var(--admonitions-color-tip);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' version='1.1' width='16' height='16' aria-hidden='true'%3E%3Cpath d='M8 1.5c-2.363 0-4 1.69-4 3.75 0 .984.424 1.625.984 2.304l.214.253c.223.264.47.556.673.848.284.411.537.896.621 1.49a.75.75 0 0 1-1.484.211c-.04-.282-.163-.547-.37-.847a8.456 8.456 0 0 0-.542-.68c-.084-.1-.173-.205-.268-.32C3.201 7.75 2.5 6.766 2.5 5.25 2.5 2.31 4.863 0 8 0s5.5 2.31 5.5 5.25c0 1.516-.701 2.5-1.328 3.259-.095.115-.184.22-.268.319-.207.245-.383.453-.541.681-.208.3-.33.565-.37.847a.751.751 0 0 1-1.485-.212c.084-.593.337-1.078.621-1.489.203-.292.45-.584.673-.848.075-.088.147-.173.213-.253.561-.679.985-1.32.985-2.304 0-2.06-1.637-3.75-4-3.75ZM5.75 12h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5ZM6 15.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 0 1.5h-2.5a.75.75 0 0 1-.75-.75Z'%3E%3C/path%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' version='1.1' width='16' height='16' aria-hidden='true'%3E%3Cpath d='M8 1.5c-2.363 0-4 1.69-4 3.75 0 .984.424 1.625.984 2.304l.214.253c.223.264.47.556.673.848.284.411.537.896.621 1.49a.75.75 0 0 1-1.484.211c-.04-.282-.163-.547-.37-.847a8.456 8.456 0 0 0-.542-.68c-.084-.1-.173-.205-.268-.32C3.201 7.75 2.5 6.766 2.5 5.25 2.5 2.31 4.863 0 8 0s5.5 2.31 5.5 5.25c0 1.516-.701 2.5-1.328 3.259-.095.115-.184.22-.268.319-.207.245-.383.453-.541.681-.208.3-.33.565-.37.847a.751.751 0 0 1-1.485-.212c.084-.593.337-1.078.621-1.489.203-.292.45-.584.673-.848.075-.088.147-.173.213-.253.561-.679.985-1.32.985-2.304 0-2.06-1.637-3.75-4-3.75ZM5.75 12h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5ZM6 15.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 0 1.5h-2.5a.75.75 0 0 1-.75-.75Z'%3E%3C/path%3E%3C/svg%3E")}.custom-md blockquote.admonition.bdm-tip:before{background:var(--admonitions-color-tip)}.custom-md blockquote.admonition.bdm-note .bdm-title{color:var(--admonitions-color-note)}.custom-md blockquote.admonition.bdm-note .bdm-title:before{background:var(--admonitions-color-note);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' version='1.1' width='16' height='16' aria-hidden='true'%3E%3Cpath fill='var(--admonitions-color-tip)' d='M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z'%3E%3C/path%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' version='1.1' width='16' height='16' aria-hidden='true'%3E%3Cpath fill='var(--admonitions-color-tip)' d='M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z'%3E%3C/path%3E%3C/svg%3E")}.custom-md blockquote.admonition.bdm-note:before{background:var(--admonitions-color-note)}.custom-md blockquote.admonition.bdm-important .bdm-title{color:var(--admonitions-color-important)}.custom-md blockquote.admonition.bdm-important .bdm-title:before{background:var(--admonitions-color-important);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' version='1.1' width='16' height='16' aria-hidden='true'%3E%3Cpath d='M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v9.5A1.75 1.75 0 0 1 14.25 13H8.06l-2.573 2.573A1.458 1.458 0 0 1 3 14.543V13H1.75A1.75 1.75 0 0 1 0 11.25Zm1.75-.25a.25.25 0 0 0-.25.25v9.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-9.5a.25.25 0 0 0-.25-.25Zm7 2.25v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 9a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z'%3E%3C/path%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' version='1.1' width='16' height='16' aria-hidden='true'%3E%3Cpath d='M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v9.5A1.75 1.75 0 0 1 14.25 13H8.06l-2.573 2.573A1.458 1.458 0 0 1 3 14.543V13H1.75A1.75 1.75 0 0 1 0 11.25Zm1.75-.25a.25.25 0 0 0-.25.25v9.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-9.5a.25.25 0 0 0-.25-.25Zm7 2.25v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 9a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z'%3E%3C/path%3E%3C/svg%3E")}.custom-md blockquote.admonition.bdm-important:before{background:var(--admonitions-color-important)}.custom-md blockquote.admonition.bdm-warning .bdm-title{color:var(--admonitions-color-warning)}.custom-md blockquote.admonition.bdm-warning .bdm-title:before{background:var(--admonitions-color-warning);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' version='1.1' width='16' height='16' aria-hidden='true'%3E%3Cpath d='M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z'%3E%3C/path%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' version='1.1' width='16' height='16' aria-hidden='true'%3E%3Cpath d='M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z'%3E%3C/path%3E%3C/svg%3E")}.custom-md blockquote.admonition.bdm-warning:before{background:var(--admonitions-color-warning)}.custom-md blockquote.admonition.bdm-caution .bdm-title{color:var(--admonitions-color-caution)}.custom-md blockquote.admonition.bdm-caution .bdm-title:before{background:var(--admonitions-color-caution);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' version='1.1' width='16' height='16' aria-hidden='true'%3E%3Cpath d='M4.47.22A.749.749 0 0 1 5 0h6c.199 0 .389.079.53.22l4.25 4.25c.141.14.22.331.22.53v6a.749.749 0 0 1-.22.53l-4.25 4.25A.749.749 0 0 1 11 16H5a.749.749 0 0 1-.53-.22L.22 11.53A.749.749 0 0 1 0 11V5c0-.199.079-.389.22-.53Zm.84 1.28L1.5 5.31v5.38l3.81 3.81h5.38l3.81-3.81V5.31L10.69 1.5ZM8 4a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0v-3.5A.75.75 0 0 1 8 4Zm0 8a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z'%3E%3C/path%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' version='1.1' width='16' height='16' aria-hidden='true'%3E%3Cpath d='M4.47.22A.749.749 0 0 1 5 0h6c.199 0 .389.079.53.22l4.25 4.25c.141.14.22.331.22.53v6a.749.749 0 0 1-.22.53l-4.25 4.25A.749.749 0 0 1 11 16H5a.749.749 0 0 1-.53-.22L.22 11.53A.749.749 0 0 1 0 11V5c0-.199.079-.389.22-.53Zm.84 1.28L1.5 5.31v5.38l3.81 3.81h5.38l3.81-3.81V5.31L10.69 1.5ZM8 4a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0v-3.5A.75.75 0 0 1 8 4Zm0 8a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z'%3E%3C/path%3E%3C/svg%3E")}.custom-md blockquote.admonition.bdm-caution:before{background:var(--admonitions-color-caution)}.custom-md img{border-radius:.75rem}.custom-md hr{border-color:var(--line-divider);border-style:dashed}.custom-md iframe{border-radius:.75rem;margin-left:auto;margin-right:auto;max-width:100%}a.card-github{display:block;background:var(--license-block-bg);position:relative;margin:.5rem 0;padding:1.1rem 1.5rem;color:var(--tw-prose-body);border-radius:var(--radius-large);text-decoration-thickness:0px;text-decoration-line:none}a.card-github:hover{background-color:var(--btn-regular-bg-hover)}a.card-github:hover .gc-titlebar{color:var(--btn-content)}a.card-github:hover .gc-stars,a.card-github:hover .gc-forks,a.card-github:hover .gc-license,a.card-github:hover .gc-description{color:var(--tw-prose-headings)}a.card-github:hover .gc-stars:before,a.card-github:hover .gc-forks:before,a.card-github:hover .gc-license:before,a.card-github:hover .gc-description:before{background-color:var(--tw-prose-headings)}a.card-github:active{scale:.98;background-color:var(--btn-regular-bg-active)}a.card-github .gc-titlebar{display:flex;align-items:center;justify-content:space-between;margin-bottom:.5rem;color:var(--tw-prose-headings);font-size:1.25rem;font-weight:500}a.card-github .gc-titlebar .gc-titlebar-left{display:flex;flex-flow:row nowrap;gap:.5rem}a.card-github .gc-titlebar .gc-repo{font-weight:700}a.card-github .gc-titlebar .gc-owner{font-weight:300;position:relative;display:flex;flex-flow:row nowrap;gap:.5rem;align-items:center}a.card-github .gc-titlebar .gc-avatar{display:block;overflow:hidden;width:1.5rem;height:1.5rem;margin-top:-.1rem;background-color:var(--primary);background-size:cover;border-radius:50%}a.card-github .gc-description{margin-bottom:.7rem;font-size:1rem;font-weight:300;line-height:1.5rem;color:var(--tw-prose-body)}a.card-github .gc-infobar{display:flex;flex-flow:row nowrap;gap:1.5rem;color:var(--tw-prose-body);width:-moz-fit-content;width:fit-content}a.card-github .gc-language{display:none}a.card-github .gc-stars,a.card-github .gc-forks,a.card-github .gc-license,a.card-github .github-logo{font-weight:500;font-size:.875rem;opacity:.9}a.card-github .gc-stars:before,a.card-github .gc-forks:before,a.card-github .gc-license:before,a.card-github .github-logo:before{content:" ";display:inline-block;height:1.3em;width:1.3em;margin-right:.4rem;vertical-align:-.24em;font-size:inherit;background-color:var(--tw-prose-body);overflow:visible;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;transition-property:background-color,background;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}a.card-github .gc-stars:before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' aria-hidden='true' height='16' viewBox='0 0 16 16' version='1.1' width='16'%3E%3Cpath d='M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z'%3E%3C/path%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' aria-hidden='true' height='16' viewBox='0 0 16 16' version='1.1' width='16'%3E%3Cpath d='M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z'%3E%3C/path%3E%3C/svg%3E")}a.card-github .gc-license:before{margin-right:.5rem;-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' aria-hidden='true' height='16' viewBox='0 0 16 16' version='1.1' width='16'%3E%3Cpath d='M8.75.75V2h.985c.304 0 .603.08.867.231l1.29.736c.038.022.08.033.124.033h2.234a.75.75 0 0 1 0 1.5h-.427l2.111 4.692a.75.75 0 0 1-.154.838l-.53-.53.529.531-.001.002-.002.002-.006.006-.006.005-.01.01-.045.04c-.21.176-.441.327-.686.45C14.556 10.78 13.88 11 13 11a4.498 4.498 0 0 1-2.023-.454 3.544 3.544 0 0 1-.686-.45l-.045-.04-.016-.015-.006-.006-.004-.004v-.001a.75.75 0 0 1-.154-.838L12.178 4.5h-.162c-.305 0-.604-.079-.868-.231l-1.29-.736a.245.245 0 0 0-.124-.033H8.75V13h2.5a.75.75 0 0 1 0 1.5h-6.5a.75.75 0 0 1 0-1.5h2.5V3.5h-.984a.245.245 0 0 0-.124.033l-1.289.737c-.265.15-.564.23-.869.23h-.162l2.112 4.692a.75.75 0 0 1-.154.838l-.53-.53.529.531-.001.002-.002.002-.006.006-.016.015-.045.04c-.21.176-.441.327-.686.45C4.556 10.78 3.88 11 3 11a4.498 4.498 0 0 1-2.023-.454 3.544 3.544 0 0 1-.686-.45l-.045-.04-.016-.015-.006-.006-.004-.004v-.001a.75.75 0 0 1-.154-.838L2.178 4.5H1.75a.75.75 0 0 1 0-1.5h2.234a.249.249 0 0 0 .125-.033l1.288-.737c.265-.15.564-.23.869-.23h.984V.75a.75.75 0 0 1 1.5 0Zm2.945 8.477c.285.135.718.273 1.305.273s1.02-.138 1.305-.273L13 6.327Zm-10 0c.285.135.718.273 1.305.273s1.02-.138 1.305-.273L3 6.327Z'%3E%3C/path%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' aria-hidden='true' height='16' viewBox='0 0 16 16' version='1.1' width='16'%3E%3Cpath d='M8.75.75V2h.985c.304 0 .603.08.867.231l1.29.736c.038.022.08.033.124.033h2.234a.75.75 0 0 1 0 1.5h-.427l2.111 4.692a.75.75 0 0 1-.154.838l-.53-.53.529.531-.001.002-.002.002-.006.006-.006.005-.01.01-.045.04c-.21.176-.441.327-.686.45C14.556 10.78 13.88 11 13 11a4.498 4.498 0 0 1-2.023-.454 3.544 3.544 0 0 1-.686-.45l-.045-.04-.016-.015-.006-.006-.004-.004v-.001a.75.75 0 0 1-.154-.838L12.178 4.5h-.162c-.305 0-.604-.079-.868-.231l-1.29-.736a.245.245 0 0 0-.124-.033H8.75V13h2.5a.75.75 0 0 1 0 1.5h-6.5a.75.75 0 0 1 0-1.5h2.5V3.5h-.984a.245.245 0 0 0-.124.033l-1.289.737c-.265.15-.564.23-.869.23h-.162l2.112 4.692a.75.75 0 0 1-.154.838l-.53-.53.529.531-.001.002-.002.002-.006.006-.016.015-.045.04c-.21.176-.441.327-.686.45C4.556 10.78 3.88 11 3 11a4.498 4.498 0 0 1-2.023-.454 3.544 3.544 0 0 1-.686-.45l-.045-.04-.016-.015-.006-.006-.004-.004v-.001a.75.75 0 0 1-.154-.838L2.178 4.5H1.75a.75.75 0 0 1 0-1.5h2.234a.249.249 0 0 0 .125-.033l1.288-.737c.265-.15.564-.23.869-.23h.984V.75a.75.75 0 0 1 1.5 0Zm2.945 8.477c.285.135.718.273 1.305.273s1.02-.138 1.305-.273L13 6.327Zm-10 0c.285.135.718.273 1.305.273s1.02-.138 1.305-.273L3 6.327Z'%3E%3C/path%3E%3C/svg%3E")}a.card-github .gc-forks:before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' aria-hidden='true' height='16' viewBox='0 0 16 16' version='1.1' width='16'%3E%3Cpath d='M5 5.372v.878c0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75v-.878a2.25 2.25 0 1 1 1.5 0v.878a2.25 2.25 0 0 1-2.25 2.25h-1.5v2.128a2.251 2.251 0 1 1-1.5 0V8.5h-1.5A2.25 2.25 0 0 1 3.5 6.25v-.878a2.25 2.25 0 1 1 1.5 0ZM5 3.25a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Zm6.75.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Zm-3 8.75a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Z'%3E%3C/path%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' aria-hidden='true' height='16' viewBox='0 0 16 16' version='1.1' width='16'%3E%3Cpath d='M5 5.372v.878c0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75v-.878a2.25 2.25 0 1 1 1.5 0v.878a2.25 2.25 0 0 1-2.25 2.25h-1.5v2.128a2.251 2.251 0 1 1-1.5 0V8.5h-1.5A2.25 2.25 0 0 1 3.5 6.25v-.878a2.25 2.25 0 1 1 1.5 0ZM5 3.25a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Zm6.75.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Zm-3 8.75a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Z'%3E%3C/path%3E%3C/svg%3E")}a.card-github .github-logo{font-size:1.25rem}a.card-github .github-logo:before{background-color:var(--tw-prose-headings);margin-right:0;-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='31' height='32' viewBox='0 0 496 512'%3E%3Cpath fill='%23a1f7cb' d='M165.9 397.4c0 2-2.3 3.6-5.2 3.6c-3.3.3-5.6-1.3-5.6-3.6c0-2 2.3-3.6 5.2-3.6c3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9c2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9c.3 2 2.9 3.3 5.9 2.6c2.9-.7 4.9-2.6 4.6-4.6c-.3-1.9-3-3.2-5.9-2.9M244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2c12.8 2.3 17.3-5.6 17.3-12.1c0-6.2-.3-40.4-.3-61.4c0 0-70 15-84.7-29.8c0 0-11.4-29.1-27.8-36.6c0 0-22.9-15.7 1.6-15.4c0 0 24.9 2 38.6 25.8c21.9 38.6 58.6 27.5 72.9 20.9c2.3-16 8.8-27.1 16-33.7c-55.9-6.2-112.3-14.3-112.3-110.5c0-27.5 7.6-41.3 23.6-58.9c-2.6-6.5-11.1-33.3 2.6-67.9c20.9-6.5 69 27 69 27c20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27c13.7 34.7 5.2 61.4 2.6 67.9c16 17.7 25.8 31.5 25.8 58.9c0 96.5-58.9 104.2-114.8 110.5c9.2 7.9 17 22.9 17 46.4c0 33.7-.3 75.4-.3 83.6c0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252C496 113.3 383.5 8 244.8 8M97.2 352.9c-1.3 1-1 3.3.7 5.2c1.6 1.6 3.9 2.3 5.2 1c1.3-1 1-3.3-.7-5.2c-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9c1.6 1 3.6.7 4.3-.7c.7-1.3-.3-2.9-2.3-3.9c-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2c2.3 2.3 5.2 2.6 6.5 1c1.3-1.3.7-4.3-1.3-6.2c-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9c1.6 2.3 4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2c-1.4-2.3-4-3.3-5.6-2'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='31' height='32' viewBox='0 0 496 512'%3E%3Cpath fill='%23a1f7cb' d='M165.9 397.4c0 2-2.3 3.6-5.2 3.6c-3.3.3-5.6-1.3-5.6-3.6c0-2 2.3-3.6 5.2-3.6c3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9c2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9c.3 2 2.9 3.3 5.9 2.6c2.9-.7 4.9-2.6 4.6-4.6c-.3-1.9-3-3.2-5.9-2.9M244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2c12.8 2.3 17.3-5.6 17.3-12.1c0-6.2-.3-40.4-.3-61.4c0 0-70 15-84.7-29.8c0 0-11.4-29.1-27.8-36.6c0 0-22.9-15.7 1.6-15.4c0 0 24.9 2 38.6 25.8c21.9 38.6 58.6 27.5 72.9 20.9c2.3-16 8.8-27.1 16-33.7c-55.9-6.2-112.3-14.3-112.3-110.5c0-27.5 7.6-41.3 23.6-58.9c-2.6-6.5-11.1-33.3 2.6-67.9c20.9-6.5 69 27 69 27c20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27c13.7 34.7 5.2 61.4 2.6 67.9c16 17.7 25.8 31.5 25.8 58.9c0 96.5-58.9 104.2-114.8 110.5c9.2 7.9 17 22.9 17 46.4c0 33.7-.3 75.4-.3 83.6c0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252C496 113.3 383.5 8 244.8 8M97.2 352.9c-1.3 1-1 3.3.7 5.2c1.6 1.6 3.9 2.3 5.2 1c1.3-1 1-3.3-.7-5.2c-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9c1.6 1 3.6.7 4.3-.7c.7-1.3-.3-2.9-2.3-3.9c-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2c2.3 2.3 5.2 2.6 6.5 1c1.3-1.3.7-4.3-1.3-6.2c-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9c1.6 2.3 4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2c-1.4-2.3-4-3.3-5.6-2'/%3E%3C/svg%3E")}a.card-github.fetch-waiting{pointer-events:none;opacity:.7;transition:opacity .15s ease-in-out}a.card-github.fetch-waiting .gc-description,a.card-github.fetch-waiting .gc-infobar,a.card-github.fetch-waiting .gc-avatar{background-color:var(--tw-prose-body);color:transparent;opacity:.5;animation:pulsate 2s infinite linear;-webkit-user-select:none;-moz-user-select:none;user-select:none}a.card-github.fetch-waiting .gc-description:before,a.card-github.fetch-waiting .gc-infobar:before,a.card-github.fetch-waiting .gc-avatar:before{background-color:transparent}a.card-github.fetch-waiting .gc-repo{margin-left:-.1rem}a.card-github.fetch-waiting .gc-description,a.card-github.fetch-waiting .gc-infobar{border-radius:.5rem}a.card-github.fetch-error{pointer-events:all;opacity:1}.card-github,.gc-description,.gc-titlebar,.gc-stars,.gc-forks,.gc-license,.gc-avatar,github-logo{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}@keyframes pulsate{0%{opacity:.15}50%{opacity:.25}to{opacity:.15}}*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Roboto,sans-serif,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.container{width:100%}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"“""”""‘""’";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-top:2em;margin-bottom:2em}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-family:inherit;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px rgb(var(--tw-prose-kbd-shadows) / 10%),0 3px rgb(var(--tw-prose-kbd-shadows) / 10%);font-size:.875em;border-radius:.3125rem;padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;padding-inline-start:.375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding-top:.8571429em;padding-inline-end:1.1428571em;padding-bottom:.8571429em;padding-inline-start:1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){width:100%;table-layout:auto;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body: #374151;--tw-prose-headings: #111827;--tw-prose-lead: #4b5563;--tw-prose-links: #111827;--tw-prose-bold: #111827;--tw-prose-counters: #6b7280;--tw-prose-bullets: #d1d5db;--tw-prose-hr: #e5e7eb;--tw-prose-quotes: #111827;--tw-prose-quote-borders: #e5e7eb;--tw-prose-captions: #6b7280;--tw-prose-kbd: #111827;--tw-prose-kbd-shadows: 17 24 39;--tw-prose-code: #111827;--tw-prose-pre-code: #e5e7eb;--tw-prose-pre-bg: #1f2937;--tw-prose-th-borders: #d1d5db;--tw-prose-td-borders: #e5e7eb;--tw-prose-invert-body: #d1d5db;--tw-prose-invert-headings: #fff;--tw-prose-invert-lead: #9ca3af;--tw-prose-invert-links: #fff;--tw-prose-invert-bold: #fff;--tw-prose-invert-counters: #9ca3af;--tw-prose-invert-bullets: #4b5563;--tw-prose-invert-hr: #374151;--tw-prose-invert-quotes: #f3f4f6;--tw-prose-invert-quote-borders: #374151;--tw-prose-invert-captions: #9ca3af;--tw-prose-invert-kbd: #fff;--tw-prose-invert-kbd-shadows: 255 255 255;--tw-prose-invert-code: #fff;--tw-prose-invert-pre-code: #d1d5db;--tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);--tw-prose-invert-th-borders: #4b5563;--tw-prose-invert-td-borders: #374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.5714286em;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-base{font-size:1rem;line-height:1.75}.prose-base :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose-base :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose-base :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em}.prose-base :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose-base :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose-base :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose-base :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose-base :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose-base :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose-base :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose-base :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose-base :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em;border-radius:.3125rem;padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;padding-inline-start:.375em}.prose-base :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em}.prose-base :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em}.prose-base :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.9em}.prose-base :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding-top:.8571429em;padding-inline-end:1.1428571em;padding-bottom:.8571429em;padding-inline-start:1.1428571em}.prose-base :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose-base :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose-base :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose-base :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose-base :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose-base :where(.prose-base>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose-base :where(.prose-base>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose-base :where(.prose-base>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose-base :where(.prose-base>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose-base :where(.prose-base>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose-base :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose-base :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose-base :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose-base :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose-base :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:3em;margin-bottom:3em}.prose-base :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em;line-height:1.7142857}.prose-base :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose-base :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose-base :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose-base :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.5714286em;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose-base :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose-base :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose-base :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose-base :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose-base :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose-base :where(.prose-base>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(.prose-base>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.btn-regular-dark{display:flex;align-items:center;justify-content:center;background-color:oklch(.45 .01 var(--hue))}.btn-regular-dark:hover{background-color:oklch(.5 .01 var(--hue))}.btn-regular-dark:active{background-color:oklch(.55 .01 var(--hue))}.btn-regular-dark:is(.dark *){background-color:oklch(.3 .02 var(--hue))}.btn-regular-dark:hover:is(.dark *){background-color:oklch(.35 .03 var(--hue))}.btn-regular-dark:active:is(.dark *){background-color:oklch(.4 .03 var(--hue))}.btn-regular-dark.success{background-color:oklch(.75 .14 var(--hue))}.btn-regular-dark.success:is(.dark *){background-color:oklch(.75 .14 var(--hue))}.copy-btn-icon{position:absolute;top:50%;left:50%;--tw-translate-x: -50%;--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.copy-btn .copy-icon{fill:#fff;opacity:1}.copy-btn .copy-icon:is(.dark *){fill:#ffffffbf}.copy-btn.success .copy-icon{fill:var(--deep-text);opacity:0}.copy-btn .success-icon{opacity:0}.copy-btn.success .success-icon{opacity:1}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.-right-2{right:-.5rem}.-top-1\/2{top:-50%}.-top-8{top:-2rem}.-top-\[3\.25rem\]{top:-3.25rem}.-top-\[30vh\]{top:-30vh}.-top-\[50\%\]{top:-50%}.bottom-3{bottom:.75rem}.left-0{left:0}.left-1\/2{left:50%}.left-4{left:1rem}.left-\[calc\(50\%_-_1px\)\]{left:calc(50% - 1px)}.right-0{right:0}.right-2{right:.5rem}.right-3{right:.75rem}.right-4{right:1rem}.right-6{right:1.5rem}.top-0{top:0}.top-1\/2{top:50%}.top-11{top:2.75rem}.top-2{top:.5rem}.top-20{top:5rem}.top-3{top:.75rem}.top-4{top:1rem}.top-\[30vh\]{top:30vh}.top-\[5\.25rem\]{top:5.25rem}.top-\[5\.5rem\]{top:5.5rem}.top-\[calc\(-30vh_\+_1rem\)\]{top:calc(-30vh + 1rem)}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.col-span-2{grid-column:span 2 / span 2}.row-start-2{grid-row-start:2}.row-end-3{grid-row-end:3}.-m-1{margin:-.25rem}.-m-1\.5{margin:-.375rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-1\.5{margin-left:.375rem;margin-right:.375rem}.mx-16{margin-left:4rem;margin-right:4rem}.mx-32{margin-left:8rem;margin-right:8rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-6{margin-left:1.5rem;margin-right:1.5rem}.mx-auto{margin-left:auto;margin-right:auto}.my-10{margin-top:2.5rem;margin-bottom:2.5rem}.my-auto{margin-top:auto;margin-bottom:auto}.-mb-2{margin-bottom:-.5rem}.mb-0\.5{margin-bottom:.125rem}.mb-1{margin-bottom:.25rem}.mb-12{margin-bottom:3rem}.mb-2{margin-bottom:.5rem}.mb-2\.5{margin-bottom:.625rem}.mb-3{margin-bottom:.75rem}.mb-3\.5{margin-bottom:.875rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-8{margin-left:2rem}.mr-0{margin-right:0}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mr-2\.5{margin-right:.625rem}.mr-3{margin-right:.75rem}.mr-4{margin-right:1rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-4{margin-top:1rem}.line-clamp-1{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-1{height:.25rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-12{height:3rem}.h-3{height:.75rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[3\.25rem\]{height:3.25rem}.h-\[3\.75rem\]{height:3.75rem}.h-\[300vh\]{height:300vh}.h-\[4\.5rem\]{height:4.5rem}.h-\[calc\(var\(--banner-height-home\)_-_4\.5rem\)\]{height:calc(var(--banner-height-home) - 4.5rem)}.h-\[var\(--banner-height-home\)\]{height:var(--banner-height-home)}.h-full{height:100%}.max-h-\[20vh\]{max-height:20vh}.min-h-32{min-height:8rem}.min-h-screen{min-height:100vh}.w-1{width:.25rem}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-12{width:3rem}.w-3{width:.75rem}.w-40{width:10rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-80{width:20rem}.w-\[10\%\]{width:10%}.w-\[15\%\]{width:15%}.w-\[3\.25rem\]{width:3.25rem}.w-\[3\.75rem\]{width:3.75rem}.w-\[70\%\]{width:70%}.w-full{width:100%}.min-w-\[2rem\]{min-width:2rem}.max-w-\[240px\]{max-width:240px}.max-w-\[calc\(100\%_-_3rem\)\]{max-width:calc(100% - 3rem)}.max-w-\[var\(\&\#45\;\&\#45\;page-width\)\]{max-width:var(--page-width)}.max-w-\[var\(--page-width\)\]{max-width:var(--page-width)}.max-w-full{max-width:100%}.max-w-none{max-width:none}.-translate-x-1{--tw-translate-x: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-1\/2{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-2{--tw-translate-x: -.5rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1{--tw-translate-y: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-16{--tw-translate-y: -4rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-\[1px\]{--tw-translate-y: -1px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0\.5{--tw-translate-x: .125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-0{--tw-translate-y: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-0\.5{--tw-translate-y: .125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-4{--tw-translate-y: 1rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[30vh\]{--tw-translate-y: 30vh;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[var\(--bannerOffset\)\]{--tw-translate-y: var(--bannerOffset);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-105{--tw-scale-x: 1.05;--tw-scale-y: 1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-50{--tw-scale-x: .5;--tw-scale-y: .5;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-90{--tw-scale-x: .9;--tw-scale-y: .9;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-zoom-in{cursor:zoom-in}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.grid-cols-\[17\.5rem_auto\]{grid-template-columns:17.5rem auto}.grid-rows-\[auto_1fr_auto\]{grid-template-rows:auto 1fr auto}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-y-2{row-gap:.5rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-\[var\(--radius-large\)\]{border-radius:var(--radius-large)}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-t-none{border-top-left-radius:0;border-top-right-radius:0}.border{border-width:1px}.border-b-\[1px\]{border-bottom-width:1px}.border-l-\[2px\]{border-left-width:2px}.border-t,.border-t-\[1px\]{border-top-width:1px}.border-dashed{border-style:dashed}.border-\[oklch\(85\%_0\.01_var\(--hue\)\)\]{border-color:oklch(85% .01 var(--hue))}.border-\[var\(\&\#45\;\&\#45\;primary\)\]{border-color:var(--primary)}.border-\[var\(--line-color\)\]{border-color:var(--line-color)}.border-\[var\(--line-divider\)\]{border-color:var(--line-divider)}.border-black\/10{border-color:#0000001a}.bg-\[oklch\(0\.45_0\.01_var\(--hue\)\)\]{background-color:oklch(.45 .01 var(--hue))}.bg-\[oklch\(0\.5_0\.05_var\(--hue\)\)\]{background-color:oklch(.5 .05 var(--hue))}.bg-\[oklch\(0\.75_0\.14_var\(--hue\)\)\]{background-color:oklch(.75 .14 var(--hue))}.bg-\[oklch\(0\.80_0\.10_0\)\]{background-color:#f3a3bb}.bg-\[oklch\(0\.95_0\.025_var\(--hue\)\)\]{background-color:oklch(.95 .025 var(--hue))}.bg-\[oklch\(92\%_0\.01_var\(\&\#45\;\&\#45\;hue\)\)\]{background-color:oklch(92% .01 var(--hue))}.bg-\[var\(--btn-content\)\]{background-color:var(--btn-content)}.bg-\[var\(--btn-regular-bg\)\]{background-color:var(--btn-regular-bg)}.bg-\[var\(--card-bg\)\]{background-color:var(--card-bg)}.bg-\[var\(--enter-btn-bg\)\]{background-color:var(--enter-btn-bg)}.bg-\[var\(--float-panel-bg\)\]{background-color:var(--float-panel-bg)}.bg-\[var\(--license-block-bg\)\]{background-color:var(--license-block-bg)}.bg-\[var\(--page-bg\)\]{background-color:var(--page-bg)}.bg-\[var\(--primary\)\]{background-color:var(--primary)}.bg-black\/40{background-color:#0006}.bg-black\/5{background-color:#0000000d}.bg-black\/60{background-color:#0009}.bg-black\/80{background-color:#000c}.bg-black\/\[0\.04\]{background-color:#0000000a}.bg-transparent{background-color:transparent}.bg-opacity-50{--tw-bg-opacity: .5}.bg-none{background-image:none}.fill-\[var\(--deep-text\)\]{fill:var(--deep-text)}.fill-white{fill:#fff}.object-cover{-o-object-fit:cover;object-fit:cover}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.px-0{padding-left:0;padding-right:0}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.px-9{padding-left:2.25rem;padding-right:2.25rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-4{padding-bottom:1rem}.pb-6{padding-bottom:1.5rem}.pl-10{padding-left:2.5rem}.pl-2{padding-left:.5rem}.pl-3{padding-left:.75rem}.pl-6{padding-left:1.5rem}.pr-1{padding-right:.25rem}.pr-4{padding-right:1rem}.pr-6{padding-right:1.5rem}.pr-8{padding-right:2rem}.pt-5{padding-top:1.25rem}.pt-6{padding-top:1.5rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-5xl{font-size:3rem;line-height:1}.text-\[0\.75rem\]{font-size:.75rem}.text-\[0\.875rem\]{font-size:.875rem}.text-\[1\.25rem\]{font-size:1.25rem}.text-\[1\.5rem\]{font-size:1.5rem}.text-\[1\.75rem\]{font-size:1.75rem}.text-\[14px\]{font-size:14px}.text-\[15rem\]{font-size:15rem}.text-\[2rem\]{font-size:2rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.text-\[oklch\(0\.75_0\.14_var\(--hue\)\)\]{color:oklch(.75 .14 var(--hue))}.text-\[var\(\&\#45\;\&\#45\;primary\)\]{color:var(--primary)}.text-\[var\(--btn-content\)\]{color:var(--btn-content)}.text-\[var\(--meta-divider\)\]{color:var(--meta-divider)}.text-\[var\(--primary\)\]{color:var(--primary)}.text-black\/10{color:#0000001a}.text-black\/25{color:#00000040}.text-black\/30{color:#0000004d}.text-black\/5{color:#0000000d}.text-black\/50{color:#00000080}.text-black\/75{color:#000000bf}.text-black\/90{color:#000000e6}.text-black\/\[0\.2\]{color:#0003}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.text-neutral-400{--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity))}.text-neutral-500{--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity))}.text-neutral-700{--tw-text-opacity: 1;color:rgb(64 64 64 / var(--tw-text-opacity))}.text-neutral-900{--tw-text-opacity: 1;color:rgb(23 23 23 / var(--tw-text-opacity))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.text-white\/75{color:#ffffffbf}.underline{text-decoration-line:underline}.decoration-\[var\(--link-underline\)\]{text-decoration-color:var(--link-underline)}.decoration-dashed{text-decoration-style:dashed}.decoration-2{text-decoration-thickness:2px}.underline-offset-\[0\.25rem\]{text-underline-offset:.25rem}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-75{opacity:.75}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline{outline-style:solid}.outline-0{outline-width:0px}.outline-4{outline-width:4px}.-outline-offset-\[2px\]{outline-offset:-2px}.outline-\[var\(--card-bg\)\]{outline-color:var(--card-bg)}.outline-\[var\(--primary\)\]{outline-color:var(--primary)}.drop-shadow-\[0_2px_4px_rgba\(0\,0\,0\,0\.005\)\]{--tw-drop-shadow: drop-shadow(0 2px 4px rgba(0,0,0,.005));filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-700{transition-duration:.7s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.dark\:prose-invert:is(.dark *){--tw-prose-body: var(--tw-prose-invert-body);--tw-prose-headings: var(--tw-prose-invert-headings);--tw-prose-lead: var(--tw-prose-invert-lead);--tw-prose-links: var(--tw-prose-invert-links);--tw-prose-bold: var(--tw-prose-invert-bold);--tw-prose-counters: var(--tw-prose-invert-counters);--tw-prose-bullets: var(--tw-prose-invert-bullets);--tw-prose-hr: var(--tw-prose-invert-hr);--tw-prose-quotes: var(--tw-prose-invert-quotes);--tw-prose-quote-borders: var(--tw-prose-invert-quote-borders);--tw-prose-captions: var(--tw-prose-invert-captions);--tw-prose-kbd: var(--tw-prose-invert-kbd);--tw-prose-kbd-shadows: var(--tw-prose-invert-kbd-shadows);--tw-prose-code: var(--tw-prose-invert-code);--tw-prose-pre-code: var(--tw-prose-invert-pre-code);--tw-prose-pre-bg: var(--tw-prose-invert-pre-bg);--tw-prose-th-borders: var(--tw-prose-invert-th-borders);--tw-prose-td-borders: var(--tw-prose-invert-td-borders)}.before\:absolute:before{content:var(--tw-content);position:absolute}.before\:inset-0:before{content:var(--tw-content);inset:0}.before\:-left-3:before{content:var(--tw-content);left:-.75rem}.before\:left-\[-1\.125rem\]:before{content:var(--tw-content);left:-1.125rem}.before\:left-\[-16px\]:before{content:var(--tw-content);left:-16px}.before\:left-\[18px\]:before{content:var(--tw-content);left:18px}.before\:top-\[0\.33rem\]:before{content:var(--tw-content);top:.33rem}.before\:top-\[0\.75rem\]:before{content:var(--tw-content);top:.75rem}.before\:top-\[35px\]:before{content:var(--tw-content);top:35px}.before\:top-\[5\.5px\]:before{content:var(--tw-content);top:5.5px}.before\:-z-10:before{content:var(--tw-content);z-index:-10}.before\:ml-1\.5:before{content:var(--tw-content);margin-left:.375rem}.before\:mr-1\.5:before{content:var(--tw-content);margin-right:.375rem}.before\:hidden:before{content:var(--tw-content);display:none}.before\:h-4:before{content:var(--tw-content);height:1rem}.before\:h-5:before{content:var(--tw-content);height:1.25rem}.before\:w-1:before{content:var(--tw-content);width:.25rem}.before\:scale-100:before{content:var(--tw-content);--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.before\:scale-\[0\.85\]:before{content:var(--tw-content);--tw-scale-x: .85;--tw-scale-y: .85;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.before\:rounded-\[inherit\]:before{content:var(--tw-content);border-radius:inherit}.before\:rounded-md:before{content:var(--tw-content);border-radius:.375rem}.before\:bg-\[var\(--btn-plain-bg-hover\)\]:before{content:var(--tw-content);background-color:var(--btn-plain-bg-hover)}.before\:bg-\[var\(--primary\)\]:before{content:var(--tw-content);background-color:var(--primary)}.before\:text-sm:before{content:var(--tw-content);font-size:.875rem;line-height:1.25rem}.before\:font-medium:before{content:var(--tw-content);font-weight:500}.before\:text-\[var\(--meta-divider\)\]:before{content:var(--tw-content);color:var(--meta-divider)}.before\:opacity-100:before{content:var(--tw-content);opacity:1}.before\:transition:before{content:var(--tw-content);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.before\:ease-out:before{content:var(--tw-content);transition-timing-function:cubic-bezier(0,0,.2,1)}.before\:content-\[\'\/\'\]:before{--tw-content: "/";content:var(--tw-content)}.last\:border-t-0:last-child{border-top-width:0px}.first-of-type\:mt-2:first-of-type{margin-top:.5rem}.before\:first-of-type\:hidden:first-of-type:before{content:var(--tw-content);display:none}.focus-within\:bg-black\/\[0\.06\]:focus-within{background-color:#0000000f}.hover\:bg-\[oklch\(0\.50_0\.01_var\(--hue\)\)\]:hover{background-color:oklch(.5 .01 var(--hue))}.hover\:bg-\[var\(--btn-card-bg-hover\)\]:hover{background-color:var(--btn-card-bg-hover)}.hover\:bg-\[var\(--btn-plain-bg-hover\)\]:hover{background-color:var(--btn-plain-bg-hover)}.hover\:bg-\[var\(--btn-regular-bg-hover\)\]:hover{background-color:var(--btn-regular-bg-hover)}.hover\:bg-\[var\(--enter-btn-bg-hover\)\]:hover{background-color:var(--enter-btn-bg-hover)}.hover\:bg-black\/50:hover{background-color:#00000080}.hover\:bg-black\/70:hover{background-color:#000000b3}.hover\:bg-black\/\[0\.06\]:hover{background-color:#0000000f}.hover\:pl-3:hover{padding-left:.75rem}.hover\:pr-9:hover{padding-right:2.25rem}.hover\:text-\[initial\]:hover{color:initial}.hover\:text-\[var\(--primary\)\]:hover{color:var(--primary)}.hover\:decoration-\[var\(--link-hover\)\]:hover{text-decoration-color:var(--link-hover)}.hover\:before\:scale-100:hover:before{content:var(--tw-content);--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:before\:bg-\[var\(--btn-plain-bg-hover\)\]:hover:before{content:var(--tw-content);background-color:var(--btn-plain-bg-hover)}.focus\:w-60:focus{width:15rem}.active\:w-60:active{width:15rem}.active\:scale-90:active{--tw-scale-x: .9;--tw-scale-y: .9;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.active\:scale-95:active{--tw-scale-x: .95;--tw-scale-y: .95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.active\:scale-\[0\.85\]:active{--tw-scale-x: .85;--tw-scale-y: .85;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.active\:bg-\[oklch\(0\.55_0\.01_var\(--hue\)\)\]:active{background-color:oklch(.55 .01 var(--hue))}.active\:bg-\[var\(--btn-card-bg-active\)\]:active{background-color:var(--btn-card-bg-active)}.active\:bg-\[var\(--btn-plain-bg-active\)\]:active{background-color:var(--btn-plain-bg-active)}.active\:bg-\[var\(--btn-regular-bg-active\)\]:active{background-color:var(--btn-regular-bg-active)}.active\:bg-\[var\(--enter-btn-bg-active\)\]:active{background-color:var(--enter-btn-bg-active)}.active\:bg-black\/60:active{background-color:#0009}.active\:bg-black\/80:active{background-color:#000c}.active\:bg-none:active{background-image:none}.active\:text-\[var\(--title-active\)\]:active{color:var(--title-active)}.active\:decoration-\[var\(--link-active\)\]:active{text-decoration-color:var(--link-active)}.active\:before\:bg-\[var\(--btn-plain-bg-active\)\]:active:before{content:var(--tw-content);background-color:var(--btn-plain-bg-active)}.group:hover .group-hover\:h-5{height:1.25rem}.group:hover .group-hover\:translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:translate-x-1{--tw-translate-x: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:scale-100{--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:bg-\[var\(--primary\)\]{background-color:var(--primary)}.group:hover .group-hover\:bg-black\/30{background-color:#0000004d}.group:hover .group-hover\:text-\[var\(--primary\)\]{color:var(--primary)}.group:hover .group-hover\:opacity-100{opacity:1}.group:hover .group-hover\:outline-\[var\(--btn-plain-bg-hover\)\]{outline-color:var(--btn-plain-bg-hover)}.group:active .group-active\:bg-black\/50{background-color:#00000080}.group:active .group-active\:text-\[var\(--primary\)\]{color:var(--primary)}.group:active .group-active\:outline-\[var\(--btn-plain-bg-active\)\]{outline-color:var(--btn-plain-bg-active)}.dark\:border-white\/15:is(.dark *){border-color:#ffffff26}.dark\:border-white\/\[0\.15\]:is(.dark *){border-color:#ffffff26}.dark\:bg-\[oklch\(0\.30_0\.02_var\(--hue\)\)\]:is(.dark *){background-color:oklch(.3 .02 var(--hue))}.dark\:bg-\[oklch\(0\.70_0\.10_0\)\]:is(.dark *){background-color:#d2849c}.dark\:bg-\[oklch\(0\.75_0\.14_var\(--hue\)\)\]:is(.dark *){background-color:oklch(.75 .14 var(--hue))}.dark\:bg-\[var\(--card-bg\)\]:is(.dark *){background-color:var(--card-bg)}.dark\:bg-\[var\(--primary\)\]:is(.dark *){background-color:var(--primary)}.dark\:bg-black:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity))}.dark\:bg-black\/10:is(.dark *){background-color:#0000001a}.dark\:bg-white\/10:is(.dark *){background-color:#ffffff1a}.dark\:bg-white\/5:is(.dark *){background-color:#ffffff0d}.dark\:fill-white\/75:is(.dark *){fill:#ffffffbf}.dark\:text-\[var\(--deep-text\)\]:is(.dark *){color:var(--deep-text)}.dark\:text-black\/70:is(.dark *){color:#000000b3}.dark\:text-neutral-100:is(.dark *){--tw-text-opacity: 1;color:rgb(245 245 245 / var(--tw-text-opacity))}.dark\:text-neutral-300:is(.dark *){--tw-text-opacity: 1;color:rgb(212 212 212 / var(--tw-text-opacity))}.dark\:text-neutral-400:is(.dark *){--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity))}.dark\:text-neutral-50:is(.dark *){--tw-text-opacity: 1;color:rgb(250 250 250 / var(--tw-text-opacity))}.dark\:text-white\/10:is(.dark *){color:#ffffff1a}.dark\:text-white\/25:is(.dark *){color:#ffffff40}.dark\:text-white\/30:is(.dark *){color:#ffffff4d}.dark\:text-white\/5:is(.dark *){color:#ffffff0d}.dark\:text-white\/50:is(.dark *){color:#ffffff80}.dark\:text-white\/75:is(.dark *){color:#ffffffbf}.dark\:text-white\/90:is(.dark *){color:#ffffffe6}.dark\:text-white\/\[0\.2\]:is(.dark *){color:#fff3}.dark\:shadow-none:is(.dark *){--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.dark\:focus-within\:bg-white\/10:focus-within:is(.dark *){background-color:#ffffff1a}.dark\:hover\:bg-\[oklch\(0\.35_0\.03_var\(--hue\)\)\]:hover:is(.dark *){background-color:oklch(.35 .03 var(--hue))}.dark\:hover\:bg-white\/10:hover:is(.dark *){background-color:#ffffff1a}.dark\:hover\:text-\[var\(--primary\)\]:hover:is(.dark *){color:var(--primary)}.dark\:active\:bg-\[oklch\(0\.40_0\.03_var\(--hue\)\)\]:active:is(.dark *){background-color:oklch(.4 .03 var(--hue))}.dark\:active\:text-\[var\(--title-active\)\]:active:is(.dark *){color:var(--title-active)}@media (min-width: 768px){.md\:absolute{position:absolute}.md\:bottom-3{bottom:.75rem}.md\:left-\[unset\]{left:unset}.md\:right-3{right:.75rem}.md\:top-3{top:.75rem}.md\:mx-0{margin-left:0;margin-right:0}.md\:mb-0{margin-bottom:0}.md\:mt-0{margin-top:0}.md\:line-clamp-1{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.md\:block{display:block}.md\:inline{display:inline}.md\:flex{display:flex}.md\:hidden{display:none}.md\:max-h-none{max-height:none}.md\:w-\[10\%\]{width:10%}.md\:w-\[15\%\]{width:15%}.md\:w-\[30rem\]{width:30rem}.md\:w-\[65\%\]{width:65%}.md\:w-\[80\%\]{width:80%}.md\:w-\[calc\(100\%_-_52px_-_12px\)\]{width:calc(100% - 64px)}.md\:w-\[calc\(100\%_-_var\(--coverWidth\)_-_12px\)\]{width:calc(100% - var(--coverWidth) - 12px)}.md\:w-\[var\(--coverWidth\)\]{width:var(--coverWidth)}.md\:max-w-\[65\%\]{max-width:65%}.md\:flex-row{flex-direction:row}.md\:flex-col{flex-direction:column}.md\:gap-4{gap:1rem}.md\:bg-transparent{background-color:transparent}.md\:px-4{padding-left:1rem;padding-right:1rem}.md\:px-9{padding-left:2.25rem;padding-right:2.25rem}.md\:py-0{padding-top:0;padding-bottom:0}.md\:pl-9{padding-left:2.25rem}.md\:pr-2{padding-right:.5rem}.md\:pt-7{padding-top:1.75rem}.md\:text-\[16px\]{font-size:16px}.md\:text-\[2\.5rem\]\/\[2\.75rem\]{font-size:2.5rem;line-height:2.75rem}.md\:before\:block:before{content:var(--tw-content);display:block}.md\:before\:w-1:before{content:var(--tw-content);width:.25rem}}@media (min-width: 1024px){.lg\:col-span-1{grid-column:span 1 / span 1}.lg\:row-start-1{grid-row-start:1}.lg\:row-end-2{grid-row-end:2}.lg\:mx-0{margin-left:0;margin-right:0}.lg\:mt-0{margin-top:0}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:w-full{width:100%}.lg\:max-w-\[17\.5rem\]{max-width:17.5rem}.lg\:max-w-none{max-width:none}.lg\:grid-rows-\[auto\]{grid-template-rows:auto}.lg\:first-of-type\:mt-0:first-of-type{margin-top:0}} diff --git a/_astro/client.Cx1FBVJX.js b/_astro/client.Cx1FBVJX.js new file mode 100644 index 0000000..3a0a67b --- /dev/null +++ b/_astro/client.Cx1FBVJX.js @@ -0,0 +1 @@ +const r=()=>{},f=t=>(e,r,n,{client:o})=>{if(!t.hasAttribute("ssr"))return;const s={};for(const[t,e]of Object.entries(n))s[t]=c(t,e);try{const n=new e({target:t,props:{...r,$$slots:s,$$scope:{ctx:[]}},hydrate:"only"!==o,$$inline:!0});t.addEventListener("astro:unmount",(()=>n.$destroy()),{once:!0})}finally{}};function c(t,e){let n;return[()=>({m(r){n=r,r.insertAdjacentHTML("beforeend",`${e}`)},c:r,l:r,d(){if(!n)return;const e=n.querySelector("astro-slot"+("default"===t?":not([name])":`[name="${t}"]`));e&&e.remove()}}),r,r]}export{f as default}; \ No newline at end of file diff --git a/_astro/demo-avatar.CxcI0ivM.png b/_astro/demo-avatar.CxcI0ivM.png new file mode 100644 index 0000000..84320d4 Binary files /dev/null and b/_astro/demo-avatar.CxcI0ivM.png differ diff --git a/_astro/demo-banner.WD4SMgz__nlqjd.webp b/_astro/demo-banner.WD4SMgz__nlqjd.webp new file mode 100644 index 0000000..7d0c1f0 Binary files /dev/null and b/_astro/demo-banner.WD4SMgz__nlqjd.webp differ diff --git a/_astro/hoisted.CCg3F84P.css b/_astro/hoisted.CCg3F84P.css new file mode 100644 index 0000000..da716c7 --- /dev/null +++ b/_astro/hoisted.CCg3F84P.css @@ -0,0 +1,9 @@ +/*! PhotoSwipe main CSS by Dmytro Semenov | photoswipe.com */.pswp{--pswp-bg: #000;--pswp-placeholder-bg: #222;--pswp-root-z-index: 100000;--pswp-preloader-color: rgba(79, 79, 79, .4);--pswp-preloader-color-secondary: rgba(255, 255, 255, .9);--pswp-icon-color: #fff;--pswp-icon-color-secondary: #4f4f4f;--pswp-icon-stroke-color: #4f4f4f;--pswp-icon-stroke-width: 2px;--pswp-error-text-color: var(--pswp-icon-color)}.pswp{position:fixed;top:0;left:0;width:100%;height:100%;z-index:var(--pswp-root-z-index);display:none;touch-action:none;outline:0;opacity:.003;contain:layout style size;-webkit-tap-highlight-color:rgba(0,0,0,0)}.pswp:focus{outline:0}.pswp *{box-sizing:border-box}.pswp img{max-width:none}.pswp--open{display:block}.pswp,.pswp__bg{transform:translateZ(0);will-change:opacity}.pswp__bg{opacity:.005;background:var(--pswp-bg)}.pswp,.pswp__scroll-wrap{overflow:hidden}.pswp__scroll-wrap,.pswp__bg,.pswp__container,.pswp__item,.pswp__content,.pswp__img,.pswp__zoom-wrap{position:absolute;top:0;left:0;width:100%;height:100%}.pswp__img,.pswp__zoom-wrap{width:auto;height:auto}.pswp--click-to-zoom.pswp--zoom-allowed .pswp__img{cursor:zoom-in}.pswp--click-to-zoom.pswp--zoomed-in .pswp__img{cursor:move;cursor:grab}.pswp--click-to-zoom.pswp--zoomed-in .pswp__img:active{cursor:grabbing}.pswp--no-mouse-drag.pswp--zoomed-in .pswp__img,.pswp--no-mouse-drag.pswp--zoomed-in .pswp__img:active,.pswp__img{cursor:zoom-out}.pswp__container,.pswp__img,.pswp__button,.pswp__counter{-webkit-user-select:none;-moz-user-select:none;user-select:none}.pswp__item{z-index:1;overflow:hidden}.pswp__hidden{display:none!important}.pswp__content{pointer-events:none}.pswp__content>*{pointer-events:auto}.pswp__error-msg-container{display:grid}.pswp__error-msg{margin:auto;font-size:1em;line-height:1;color:var(--pswp-error-text-color)}.pswp .pswp__hide-on-close{opacity:.005;will-change:opacity;transition:opacity var(--pswp-transition-duration) cubic-bezier(.4,0,.22,1);z-index:10;pointer-events:none}.pswp--ui-visible .pswp__hide-on-close{opacity:1;pointer-events:auto}.pswp__button{position:relative;display:block;width:50px;height:60px;padding:0;margin:0;overflow:hidden;cursor:pointer;background:none;border:0;box-shadow:none;opacity:.85;-webkit-appearance:none;-webkit-touch-callout:none}.pswp__button:hover,.pswp__button:active,.pswp__button:focus{transition:none;padding:0;background:none;border:0;box-shadow:none;opacity:1}.pswp__button:disabled{opacity:.3;cursor:auto}.pswp__icn{fill:var(--pswp-icon-color);color:var(--pswp-icon-color-secondary);position:absolute;top:14px;left:9px;width:32px;height:32px;overflow:hidden;pointer-events:none}.pswp__icn-shadow{stroke:var(--pswp-icon-stroke-color);stroke-width:var(--pswp-icon-stroke-width);fill:none}.pswp__icn:focus{outline:0}div.pswp__img--placeholder,.pswp__img--with-bg{background:var(--pswp-placeholder-bg)}.pswp__top-bar{position:absolute;left:0;top:0;width:100%;height:60px;display:flex;flex-direction:row;justify-content:flex-end;z-index:10;pointer-events:none!important}.pswp__top-bar>*{pointer-events:auto;will-change:opacity}.pswp__button--close{margin-right:6px}.pswp__button--arrow{position:absolute;width:75px;height:100px;top:50%;margin-top:-50px}.pswp__button--arrow:disabled{display:none;cursor:default}.pswp__button--arrow .pswp__icn{top:50%;margin-top:-30px;width:60px;height:60px;background:none;border-radius:0}.pswp--one-slide .pswp__button--arrow{display:none}.pswp--touch .pswp__button--arrow{visibility:hidden}.pswp--has_mouse .pswp__button--arrow{visibility:visible}.pswp__button--arrow--prev{right:auto;left:0}.pswp__button--arrow--next{right:0}.pswp__button--arrow--next .pswp__icn{left:auto;right:14px;transform:scaleX(-1)}.pswp__button--zoom{display:none}.pswp--zoom-allowed .pswp__button--zoom{display:block}.pswp--zoomed-in .pswp__zoom-icn-bar-v{display:none}.pswp__preloader{position:relative;overflow:hidden;width:50px;height:60px;margin-right:auto}.pswp__preloader .pswp__icn{opacity:0;transition:opacity .2s linear;animation:pswp-clockwise .6s linear infinite}.pswp__preloader--active .pswp__icn{opacity:.85}@keyframes pswp-clockwise{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.pswp__counter{height:30px;margin-top:15px;margin-inline-start:20px;font-size:14px;line-height:30px;color:var(--pswp-icon-color);text-shadow:1px 1px 3px var(--pswp-icon-color-secondary);opacity:.85}.pswp--one-slide .pswp__counter{display:none}/*! + * OverlayScrollbars + * Version: 2.10.0 + * + * Copyright (c) Rene Haas | KingSora. + * https://github.com/KingSora + * + * Released under the MIT license. + */.os-size-observer,.os-size-observer-listener{scroll-behavior:auto!important;direction:inherit;pointer-events:none;overflow:hidden;visibility:hidden;box-sizing:border-box}.os-size-observer,.os-size-observer-listener,.os-size-observer-listener-item,.os-size-observer-listener-item-final{writing-mode:horizontal-tb;position:absolute;left:0;top:0}.os-size-observer{z-index:-1;contain:strict;display:flex;flex-direction:row;flex-wrap:nowrap;padding:inherit;border:inherit;box-sizing:inherit;margin:-133px;inset:0;transform:scale(.1)}.os-size-observer:before{content:"";flex:none;box-sizing:inherit;padding:10px;width:10px;height:10px}.os-size-observer-appear{animation:os-size-observer-appear-animation 1ms forwards}.os-size-observer-listener{box-sizing:border-box;position:relative;flex:auto;padding:inherit;border:inherit;margin:-133px;transform:scale(10)}.os-size-observer-listener.ltr{margin-right:-266px;margin-left:0}.os-size-observer-listener.rtl{margin-left:-266px;margin-right:0}.os-size-observer-listener:empty:before{content:"";width:100%;height:100%}.os-size-observer-listener:empty:before,.os-size-observer-listener>.os-size-observer-listener-item{display:block;position:relative;padding:inherit;border:inherit;box-sizing:content-box;flex:auto}.os-size-observer-listener-scroll{box-sizing:border-box;display:flex}.os-size-observer-listener-item{right:0;bottom:0;overflow:hidden;direction:ltr;flex:none}.os-size-observer-listener-item-final{transition:none}@keyframes os-size-observer-appear-animation{0%{cursor:auto}to{cursor:none}}.os-trinsic-observer{flex:none;box-sizing:border-box;position:relative;max-width:0px;max-height:1px;padding:0;margin:0;border:none;overflow:hidden;z-index:-1;height:0;top:calc(100% + 1px);contain:strict}.os-trinsic-observer:not(:empty){height:calc(100% + 1px);top:-1px}.os-trinsic-observer:not(:empty)>.os-size-observer{width:1000%;height:1000%;min-height:1px;min-width:1px}[data-overlayscrollbars-initialize],[data-overlayscrollbars-viewport~=scrollbarHidden]{scrollbar-width:none!important}[data-overlayscrollbars-initialize]::-webkit-scrollbar,[data-overlayscrollbars-initialize]::-webkit-scrollbar-corner,[data-overlayscrollbars-viewport~=scrollbarHidden]::-webkit-scrollbar,[data-overlayscrollbars-viewport~=scrollbarHidden]::-webkit-scrollbar-corner{-webkit-appearance:none!important;appearance:none!important;display:none!important;width:0!important;height:0!important}[data-overlayscrollbars-initialize]:not([data-overlayscrollbars]):not(html):not(body){overflow:auto}html[data-overlayscrollbars-body]{overflow:hidden}html[data-overlayscrollbars-body],html[data-overlayscrollbars-body]>body{width:100%;height:100%;margin:0}html[data-overlayscrollbars-body]>body{overflow:visible;margin:0}[data-overlayscrollbars]{position:relative}[data-overlayscrollbars~=host],[data-overlayscrollbars-padding]{display:flex;align-items:stretch!important;flex-direction:row!important;flex-wrap:nowrap!important;scroll-behavior:auto!important}[data-overlayscrollbars-padding],[data-overlayscrollbars-viewport]:not([data-overlayscrollbars]){box-sizing:inherit;position:relative;flex:auto!important;height:auto;width:100%;min-width:0;padding:0;margin:0;border:none;z-index:0}[data-overlayscrollbars-viewport]:not([data-overlayscrollbars]){--os-vaw: 0;--os-vah: 0;outline:none}[data-overlayscrollbars-viewport]:not([data-overlayscrollbars]):focus{outline:none}[data-overlayscrollbars-viewport][data-overlayscrollbars-viewport~=arrange]:before{content:"";position:absolute;pointer-events:none;z-index:-1;min-width:1px;min-height:1px;width:var(--os-vaw);height:var(--os-vah)}[data-overlayscrollbars],[data-overlayscrollbars-padding],[data-overlayscrollbars-viewport]{overflow:hidden!important}[data-overlayscrollbars~=noClipping],[data-overlayscrollbars-padding~=noClipping]{overflow:visible!important}[data-overlayscrollbars-viewport~=measuring]{overflow:hidden!important;scroll-behavior:auto!important;scroll-snap-type:none!important}[data-overlayscrollbars-viewport~=overflowXVisible]:not([data-overlayscrollbars-viewport~=measuring]){overflow-x:visible!important}[data-overlayscrollbars-viewport~=overflowXHidden]{overflow-x:hidden!important}[data-overlayscrollbars-viewport~=overflowXScroll]{overflow-x:scroll!important}[data-overlayscrollbars-viewport~=overflowYVisible]:not([data-overlayscrollbars-viewport~=measuring]){overflow-y:visible!important}[data-overlayscrollbars-viewport~=overflowYHidden]{overflow-y:hidden!important}[data-overlayscrollbars-viewport~=overflowYScroll]{overflow-y:scroll!important}[data-overlayscrollbars-viewport~=noContent]:not(#osFakeId){font-size:0!important;line-height:0!important}[data-overlayscrollbars-viewport~=noContent]:not(#osFakeId):before,[data-overlayscrollbars-viewport~=noContent]:not(#osFakeId):after,[data-overlayscrollbars-viewport~=noContent]:not(#osFakeId)>*{display:none!important;position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border-width:0!important}[data-overlayscrollbars-viewport~=scrolling]{scroll-behavior:auto!important;scroll-snap-type:none!important}[data-overlayscrollbars-content]{box-sizing:inherit}[data-overlayscrollbars-contents]:not(#osFakeId):not([data-overlayscrollbars-padding]):not([data-overlayscrollbars-viewport]):not([data-overlayscrollbars-content]){display:contents}[data-overlayscrollbars-grid],[data-overlayscrollbars-grid] [data-overlayscrollbars-padding]{display:grid;grid-template:1fr/1fr}[data-overlayscrollbars-grid]>[data-overlayscrollbars-padding],[data-overlayscrollbars-grid]>[data-overlayscrollbars-viewport],[data-overlayscrollbars-grid]>[data-overlayscrollbars-padding]>[data-overlayscrollbars-viewport]{height:auto!important;width:auto!important}@property --os-scroll-percent{syntax: ""; inherits: true; initial-value: 0;}@property --os-viewport-percent{syntax: ""; inherits: true; initial-value: 0;}.os-scrollbar{--os-viewport-percent: 0;--os-scroll-percent: 0;--os-scroll-direction: 0;--os-scroll-percent-directional: calc( var(--os-scroll-percent) - (var(--os-scroll-percent) + (1 - var(--os-scroll-percent)) * -1) * var(--os-scroll-direction) );contain:size layout;contain:size layout style;transition:opacity .15s,visibility .15s,top .15s,right .15s,bottom .15s,left .15s;pointer-events:none;position:absolute;opacity:0;visibility:hidden}body>.os-scrollbar{position:fixed;z-index:99999}.os-scrollbar-transitionless{transition:none!important}.os-scrollbar-track{position:relative;padding:0!important;border:none!important}.os-scrollbar-handle{position:absolute}.os-scrollbar-track,.os-scrollbar-handle{pointer-events:none;width:100%;height:100%}.os-scrollbar.os-scrollbar-track-interactive .os-scrollbar-track,.os-scrollbar.os-scrollbar-handle-interactive .os-scrollbar-handle{pointer-events:auto;touch-action:none}.os-scrollbar-horizontal{bottom:0;left:0}.os-scrollbar-vertical{top:0;right:0}.os-scrollbar-rtl.os-scrollbar-horizontal{right:0}.os-scrollbar-rtl.os-scrollbar-vertical{right:auto;left:0}.os-scrollbar-visible{opacity:1;visibility:visible}.os-scrollbar-auto-hide.os-scrollbar-auto-hide-hidden{opacity:0;visibility:hidden}.os-scrollbar-interaction.os-scrollbar-visible{opacity:1;visibility:visible}.os-scrollbar-unusable,.os-scrollbar-unusable *,.os-scrollbar-wheel,.os-scrollbar-wheel *{pointer-events:none!important}.os-scrollbar-unusable .os-scrollbar-handle{opacity:0!important;transition:none!important}.os-scrollbar-horizontal .os-scrollbar-handle{bottom:0;left:calc(var(--os-scroll-percent-directional) * 100%);transform:translate(calc(var(--os-scroll-percent-directional) * -100%));width:calc(var(--os-viewport-percent) * 100%)}.os-scrollbar-vertical .os-scrollbar-handle{right:0;top:calc(var(--os-scroll-percent-directional) * 100%);transform:translateY(calc(var(--os-scroll-percent-directional) * -100%));height:calc(var(--os-viewport-percent) * 100%)}@supports (container-type: size){.os-scrollbar-track{container-type:size}.os-scrollbar-horizontal .os-scrollbar-handle{left:auto;transform:translate(calc(var(--os-scroll-percent-directional) * 100cqw + var(--os-scroll-percent-directional) * -100%))}.os-scrollbar-vertical .os-scrollbar-handle{top:auto;transform:translateY(calc(var(--os-scroll-percent-directional) * 100cqh + var(--os-scroll-percent-directional) * -100%))}.os-scrollbar-rtl.os-scrollbar-horizontal .os-scrollbar-handle{right:auto;left:0}}.os-scrollbar-rtl.os-scrollbar-vertical .os-scrollbar-handle{right:auto;left:0}.os-scrollbar.os-scrollbar-horizontal.os-scrollbar-cornerless,.os-scrollbar.os-scrollbar-horizontal.os-scrollbar-cornerless.os-scrollbar-rtl{left:0;right:0}.os-scrollbar.os-scrollbar-vertical.os-scrollbar-cornerless,.os-scrollbar.os-scrollbar-vertical.os-scrollbar-cornerless.os-scrollbar-rtl{top:0;bottom:0}@media print{.os-scrollbar{display:none}}.os-scrollbar{--os-size: 0;--os-padding-perpendicular: 0;--os-padding-axis: 0;--os-track-border-radius: 0;--os-track-bg: none;--os-track-bg-hover: none;--os-track-bg-active: none;--os-track-border: none;--os-track-border-hover: none;--os-track-border-active: none;--os-handle-border-radius: 0;--os-handle-bg: none;--os-handle-bg-hover: none;--os-handle-bg-active: none;--os-handle-border: none;--os-handle-border-hover: none;--os-handle-border-active: none;--os-handle-min-size: 33px;--os-handle-max-size: none;--os-handle-perpendicular-size: 100%;--os-handle-perpendicular-size-hover: 100%;--os-handle-perpendicular-size-active: 100%;--os-handle-interactive-area-offset: 0}.os-scrollbar-track{border:var(--os-track-border);border-radius:var(--os-track-border-radius);background:var(--os-track-bg);transition:opacity .15s,background-color .15s,border-color .15s}.os-scrollbar-track:hover{border:var(--os-track-border-hover);background:var(--os-track-bg-hover)}.os-scrollbar-track:active{border:var(--os-track-border-active);background:var(--os-track-bg-active)}.os-scrollbar-handle{border:var(--os-handle-border);border-radius:var(--os-handle-border-radius);background:var(--os-handle-bg)}.os-scrollbar-handle:hover{border:var(--os-handle-border-hover);background:var(--os-handle-bg-hover)}.os-scrollbar-handle:active{border:var(--os-handle-border-active);background:var(--os-handle-bg-active)}.os-scrollbar-track:before,.os-scrollbar-handle:before{content:"";position:absolute;inset:0;display:block}.os-scrollbar-horizontal{padding:var(--os-padding-perpendicular) var(--os-padding-axis);right:var(--os-size);height:var(--os-size)}.os-scrollbar-horizontal.os-scrollbar-rtl{left:var(--os-size);right:0}.os-scrollbar-horizontal .os-scrollbar-track:before{top:calc(var(--os-padding-perpendicular) * -1);bottom:calc(var(--os-padding-perpendicular) * -1)}.os-scrollbar-horizontal .os-scrollbar-handle{min-width:var(--os-handle-min-size);max-width:var(--os-handle-max-size);height:var(--os-handle-perpendicular-size);transition:opacity .15s,background-color .15s,border-color .15s,height .15s}.os-scrollbar-horizontal .os-scrollbar-handle:before{top:calc((var(--os-padding-perpendicular) + var(--os-handle-interactive-area-offset)) * -1);bottom:calc(var(--os-padding-perpendicular) * -1)}.os-scrollbar-horizontal:hover .os-scrollbar-handle{height:var(--os-handle-perpendicular-size-hover)}.os-scrollbar-horizontal:active .os-scrollbar-handle{height:var(--os-handle-perpendicular-size-active)}.os-scrollbar-vertical{padding:var(--os-padding-axis) var(--os-padding-perpendicular);bottom:var(--os-size);width:var(--os-size)}.os-scrollbar-vertical .os-scrollbar-track:before{left:calc(var(--os-padding-perpendicular) * -1);right:calc(var(--os-padding-perpendicular) * -1)}.os-scrollbar-vertical .os-scrollbar-handle{min-height:var(--os-handle-min-size);max-height:var(--os-handle-max-size);width:var(--os-handle-perpendicular-size);transition:opacity .15s,background-color .15s,border-color .15s,width .15s}.os-scrollbar-vertical .os-scrollbar-handle:before{left:calc((var(--os-padding-perpendicular) + var(--os-handle-interactive-area-offset)) * -1);right:calc(var(--os-padding-perpendicular) * -1)}.os-scrollbar-vertical.os-scrollbar-rtl .os-scrollbar-handle:before{right:calc((var(--os-padding-perpendicular) + var(--os-handle-interactive-area-offset)) * -1);left:calc(var(--os-padding-perpendicular) * -1)}.os-scrollbar-vertical:hover .os-scrollbar-handle{width:var(--os-handle-perpendicular-size-hover)}.os-scrollbar-vertical:active .os-scrollbar-handle{width:var(--os-handle-perpendicular-size-active)}[data-overlayscrollbars-viewport~=measuring]>.os-scrollbar,.os-theme-none.os-scrollbar{display:none!important}.os-theme-dark,.os-theme-light{box-sizing:border-box;--os-size: 10px;--os-padding-perpendicular: 2px;--os-padding-axis: 2px;--os-track-border-radius: 10px;--os-handle-interactive-area-offset: 4px;--os-handle-border-radius: 10px}.os-theme-dark{--os-handle-bg: rgba(0, 0, 0, .44);--os-handle-bg-hover: rgba(0, 0, 0, .55);--os-handle-bg-active: rgba(0, 0, 0, .66)}.os-theme-light{--os-handle-bg: rgba(255, 255, 255, .44);--os-handle-bg-hover: rgba(255, 255, 255, .55);--os-handle-bg-active: rgba(255, 255, 255, .66)} diff --git a/_astro/hoisted.DP8G5D0j.js b/_astro/hoisted.DP8G5D0j.js new file mode 100644 index 0000000..89de4a2 --- /dev/null +++ b/_astro/hoisted.DP8G5D0j.js @@ -0,0 +1 @@ +import{_ as Jn}from"./preload-helper.BiBI96sQ.js";import{b as Qn,c as to,s as eo,g as so}from"./setting-utils.H_x_02w0.js";import{p as no,u as oo}from"./url-utils.Co0GbPFH.js";import"https://artalk.loliko.cn/dist/Artalk.js";import"./zh_TW.Cn8XYgkS.js";const je=new MutationObserver(Js);function Js(){je.disconnect();let t=Array.from(document.querySelectorAll("pre"));for(let e of t){if("DIV"===e.parentElement?.nodeName&&e.parentElement?.classList.contains("code-block"))continue;let t=document.createElement("div");t.className="relative code-block";let n=document.createElement("button");n.className="copy-btn btn-regular-dark absolute active:scale-90 h-8 w-8 top-2 right-2 opacity-75 text-sm p-1.5 rounded-lg transition-all ease-in-out",e.setAttribute("tabindex","0"),e.parentNode&&e.parentNode.insertBefore(t,e);let s,i='',o='';n.innerHTML=`
${i} ${o}
\n `,t.appendChild(e),t.appendChild(n),n.addEventListener("click",(async()=>{s&&clearTimeout(s);let t=e?.querySelector("code")?.innerText;void 0!==t&&(await navigator.clipboard.writeText(t),n.classList.add("success"),s=setTimeout((()=>{n.classList.remove("success")}),1e3))}))}je.observe(document.body,{childList:!0,subtree:!0})}function Jt(t,e,n){const s=document.createElement(e);return t&&(s.className=t),n&&n.appendChild(s),s}function io(t,e,n){let s=`translate3d(${t}px,0px,0)`;return void 0!==n&&(s+=` scale3d(${n},${n},1)`),s}function Ke(t,e,n){t.style.width="number"==typeof e?`${e}px`:e,t.style.height="number"==typeof n?`${n}px`:n}je.observe(document.body,{childList:!0,subtree:!0}),document.addEventListener("DOMContentLoaded",Js),document.addEventListener("DOMContentLoaded",(function(){Artalk.init({el:"#Comments",server:"https://artalk.loliko.cn/",site:"ittst"}),typeof Swup<"u"&&Swup.on("contentReplaced",(function(){Artalk.init({el:"#Comments",server:"https://artalk.loliko.cn/",site:"ittst"})}))}));const vt={IDLE:"idle",LOADING:"loading",LOADED:"loaded",ERROR:"error"};function co(t){return"button"in t&&1===t.button||t.ctrlKey||t.metaKey||t.altKey||t.shiftKey}function Qt(t,e,n=document){let s=[];if(t instanceof Element)s=[t];else if(t instanceof NodeList||Array.isArray(t))s=Array.from(t);else{const i="string"==typeof t?t:e;i&&(s=Array.from(n.querySelectorAll(i)))}return s}function ro(t){return"function"==typeof t&&t.prototype&&t.prototype.goTo}function Is(){return!(!navigator.vendor||!navigator.vendor.match(/apple/i))}class lo{constructor(t,e){this.type=t,this.defaultPrevented=!1,e&&Object.assign(this,e)}preventDefault(){this.defaultPrevented=!0}}class ao{constructor(){this._listeners={},this._filters={},this.pswp=void 0,this.options=void 0}addFilter(t,e,n=100){var s,i,o;this._filters[t]||(this._filters[t]=[]),null===(s=this._filters[t])||void 0===s||s.push({fn:e,priority:n}),null===(i=this._filters[t])||void 0===i||i.sort(((t,e)=>t.priority-e.priority)),null===(o=this.pswp)||void 0===o||o.addFilter(t,e,n)}removeFilter(t,e){this._filters[t]&&(this._filters[t]=this._filters[t].filter((t=>t.fn!==e))),this.pswp&&this.pswp.removeFilter(t,e)}applyFilters(t,...e){var n;return null===(n=this._filters[t])||void 0===n||n.forEach((t=>{e[0]=t.fn.apply(this,e)})),e[0]}on(t,e){var n,s;this._listeners[t]||(this._listeners[t]=[]),null===(n=this._listeners[t])||void 0===n||n.push(e),null===(s=this.pswp)||void 0===s||s.on(t,e)}off(t,e){var n;this._listeners[t]&&(this._listeners[t]=this._listeners[t].filter((t=>e!==t))),null===(n=this.pswp)||void 0===n||n.off(t,e)}dispatch(t,e){var n;if(this.pswp)return this.pswp.dispatch(t,e);const s=new lo(t,e);return null===(n=this._listeners[t])||void 0===n||n.forEach((t=>{t.call(this,s)})),s}}class ho{constructor(t,e){if(this.element=Jt("pswp__img pswp__img--placeholder",t?"img":"div",e),t){const e=this.element;e.decoding="async",e.alt="",e.src=t,e.setAttribute("role","presentation")}this.element.setAttribute("aria-hidden","true")}setDisplayedSize(t,e){this.element&&("IMG"===this.element.tagName?(Ke(this.element,250,"auto"),this.element.style.transformOrigin="0 0",this.element.style.transform=io(0,0,t/250)):Ke(this.element,t,e))}destroy(){var t;null!==(t=this.element)&&void 0!==t&&t.parentNode&&this.element.remove(),this.element=null}}class uo{constructor(t,e,n){this.instance=e,this.data=t,this.index=n,this.element=void 0,this.placeholder=void 0,this.slide=void 0,this.displayedImageWidth=0,this.displayedImageHeight=0,this.width=Number(this.data.w)||Number(this.data.width)||0,this.height=Number(this.data.h)||Number(this.data.height)||0,this.isAttached=!1,this.hasSlide=!1,this.isDecoding=!1,this.state=vt.IDLE,this.data.type?this.type=this.data.type:this.data.src?this.type="image":this.type="html",this.instance.dispatch("contentInit",{content:this})}removePlaceholder(){this.placeholder&&!this.keepPlaceholder()&&setTimeout((()=>{this.placeholder&&(this.placeholder.destroy(),this.placeholder=void 0)}),1e3)}load(t,e){if(this.slide&&this.usePlaceholder())if(this.placeholder){const t=this.placeholder.element;t&&!t.parentElement&&this.slide.container.prepend(t)}else{const t=this.instance.applyFilters("placeholderSrc",!(!this.data.msrc||!this.slide.isFirstSlide)&&this.data.msrc,this);this.placeholder=new ho(t,this.slide.container)}this.element&&!e||this.instance.dispatch("contentLoad",{content:this,isLazy:t}).defaultPrevented||(this.isImageContent()?(this.element=Jt("pswp__img","img"),this.displayedImageWidth&&this.loadImage(t)):(this.element=Jt("pswp__content","div"),this.element.innerHTML=this.data.html||""),e&&this.slide&&this.slide.updateContentSize(!0))}loadImage(t){var e,n;if(!this.isImageContent()||!this.element||this.instance.dispatch("contentLoadImage",{content:this,isLazy:t}).defaultPrevented)return;const s=this.element;this.updateSrcsetSizes(),this.data.srcset&&(s.srcset=this.data.srcset),s.src=null!==(e=this.data.src)&&void 0!==e?e:"",s.alt=null!==(n=this.data.alt)&&void 0!==n?n:"",this.state=vt.LOADING,s.complete?this.onLoaded():(s.onload=()=>{this.onLoaded()},s.onerror=()=>{this.onError()})}setSlide(t){this.slide=t,this.hasSlide=!0,this.instance=t.pswp}onLoaded(){this.state=vt.LOADED,this.slide&&this.element&&(this.instance.dispatch("loadComplete",{slide:this.slide,content:this}),this.slide.isActive&&this.slide.heavyAppended&&!this.element.parentNode&&(this.append(),this.slide.updateContentSize(!0)),(this.state===vt.LOADED||this.state===vt.ERROR)&&this.removePlaceholder())}onError(){this.state=vt.ERROR,this.slide&&(this.displayError(),this.instance.dispatch("loadComplete",{slide:this.slide,isError:!0,content:this}),this.instance.dispatch("loadError",{slide:this.slide,content:this}))}isLoading(){return this.instance.applyFilters("isContentLoading",this.state===vt.LOADING,this)}isError(){return this.state===vt.ERROR}isImageContent(){return"image"===this.type}setDisplayedSize(t,e){if(this.element&&(this.placeholder&&this.placeholder.setDisplayedSize(t,e),!this.instance.dispatch("contentResize",{content:this,width:t,height:e}).defaultPrevented&&(Ke(this.element,t,e),this.isImageContent()&&!this.isError()))){const n=!this.displayedImageWidth&&t;this.displayedImageWidth=t,this.displayedImageHeight=e,n?this.loadImage(!1):this.updateSrcsetSizes(),this.slide&&this.instance.dispatch("imageSizeChange",{slide:this.slide,width:t,height:e,content:this})}}isZoomable(){return this.instance.applyFilters("isContentZoomable",this.isImageContent()&&this.state!==vt.ERROR,this)}updateSrcsetSizes(){if(!this.isImageContent()||!this.element||!this.data.srcset)return;const t=this.element,e=this.instance.applyFilters("srcsetSizesWidth",this.displayedImageWidth,this);(!t.dataset.largestUsedSize||e>parseInt(t.dataset.largestUsedSize,10))&&(t.sizes=e+"px",t.dataset.largestUsedSize=String(e))}usePlaceholder(){return this.instance.applyFilters("useContentPlaceholder",this.isImageContent(),this)}lazyLoad(){this.instance.dispatch("contentLazyLoad",{content:this}).defaultPrevented||this.load(!0)}keepPlaceholder(){return this.instance.applyFilters("isKeepingPlaceholder",this.isLoading(),this)}destroy(){this.hasSlide=!1,this.slide=void 0,!this.instance.dispatch("contentDestroy",{content:this}).defaultPrevented&&(this.remove(),this.placeholder&&(this.placeholder.destroy(),this.placeholder=void 0),this.isImageContent()&&this.element&&(this.element.onload=null,this.element.onerror=null,this.element=void 0))}displayError(){if(this.slide){var t,e;let n=Jt("pswp__error-msg","div");n.innerText=null!==(t=null===(e=this.instance.options)||void 0===e?void 0:e.errorMsg)&&void 0!==t?t:"",n=this.instance.applyFilters("contentErrorElement",n,this),this.element=Jt("pswp__content pswp__error-msg-container","div"),this.element.appendChild(n),this.slide.container.innerText="",this.slide.container.appendChild(this.element),this.slide.updateContentSize(!0),this.removePlaceholder()}}append(){if(this.isAttached||!this.element)return;if(this.isAttached=!0,this.state===vt.ERROR)return void this.displayError();if(this.instance.dispatch("contentAppend",{content:this}).defaultPrevented)return;const t="decode"in this.element;this.isImageContent()?t&&this.slide&&(!this.slide.isActive||Is())?(this.isDecoding=!0,this.element.decode().catch((()=>{})).finally((()=>{this.isDecoding=!1,this.appendImage()}))):this.appendImage():this.slide&&!this.element.parentNode&&this.slide.container.appendChild(this.element)}activate(){this.instance.dispatch("contentActivate",{content:this}).defaultPrevented||!this.slide||(this.isImageContent()&&this.isDecoding&&!Is()?this.appendImage():this.isError()&&this.load(!1,!0),this.slide.holderElement&&this.slide.holderElement.setAttribute("aria-hidden","false"))}deactivate(){this.instance.dispatch("contentDeactivate",{content:this}),this.slide&&this.slide.holderElement&&this.slide.holderElement.setAttribute("aria-hidden","true")}remove(){this.isAttached=!1,!this.instance.dispatch("contentRemove",{content:this}).defaultPrevented&&(this.element&&this.element.parentNode&&this.element.remove(),this.placeholder&&this.placeholder.element&&this.placeholder.element.remove())}appendImage(){this.isAttached&&(this.instance.dispatch("contentAppendImage",{content:this}).defaultPrevented||(this.slide&&this.element&&!this.element.parentNode&&this.slide.container.appendChild(this.element),(this.state===vt.LOADED||this.state===vt.ERROR)&&this.removePlaceholder()))}}function po(t,e){if(t.getViewportSizeFn){const n=t.getViewportSizeFn(t,e);if(n)return n}return{x:document.documentElement.clientWidth,y:window.innerHeight}}function fe(t,e,n,s,i){let o=0;if(e.paddingFn)o=e.paddingFn(n,s,i)[t];else if(e.padding)o=e.padding[t];else{const n="padding"+t[0].toUpperCase()+t.slice(1);e[n]&&(o=e[n])}return Number(o)||0}function fo(t,e,n,s){return{x:e.x-fe("left",t,e,n,s)-fe("right",t,e,n,s),y:e.y-fe("top",t,e,n,s)-fe("bottom",t,e,n,s)}}const Ts=4e3;class mo{constructor(t,e,n,s){this.pswp=s,this.options=t,this.itemData=e,this.index=n,this.panAreaSize=null,this.elementSize=null,this.fit=1,this.fill=1,this.vFill=1,this.initial=1,this.secondary=1,this.max=1,this.min=1}update(t,e,n){const s={x:t,y:e};this.elementSize=s,this.panAreaSize=n;const i=n.x/s.x,o=n.y/s.y;this.fit=Math.min(1,io?i:o),this.vFill=Math.min(1,o),this.initial=this._getInitial(),this.secondary=this._getSecondary(),this.max=Math.max(this.initial,this.secondary,this._getMax()),this.min=Math.min(this.fit,this.initial,this.secondary),this.pswp&&this.pswp.dispatch("zoomLevelsUpdate",{zoomLevels:this,slideData:this.itemData})}_parseZoomLevelOption(t){const e=t+"ZoomLevel",n=this.options[e];if(n)return"function"==typeof n?n(this):"fill"===n?this.fill:"fit"===n?this.fit:Number(n)}_getSecondary(){let t=this._parseZoomLevelOption("secondary");return t||(t=Math.min(1,3*this.fit),this.elementSize&&t*this.elementSize.x>Ts&&(t=Ts/this.elementSize.x),t)}_getInitial(){return this._parseZoomLevelOption("initial")||this.fit}_getMax(){return this._parseZoomLevelOption("max")||Math.max(1,4*this.fit)}}function Qs(t,e,n){const s=e.createContentFromData(t,n);let i;const{options:o}=e;if(o){let r;i=new mo(o,t,-1),r=e.pswp?e.pswp.viewportSize:po(o,e);const l=fo(o,r,t,n);i.update(s.width,s.height,l)}return s.lazyLoad(),i&&s.setDisplayedSize(Math.ceil(s.width*i.initial),Math.ceil(s.height*i.initial)),s}function go(t,e){const n=e.getItemData(t);if(!e.dispatch("lazyLoadSlide",{index:t,itemData:n}).defaultPrevented)return Qs(n,e,t)}class yo extends ao{getNumItems(){var t;let e=0;const n=null===(t=this.options)||void 0===t?void 0:t.dataSource;n&&"length"in n?e=n.length:n&&"gallery"in n&&(n.items||(n.items=this._getGalleryDOMElements(n.gallery)),n.items&&(e=n.items.length));const s=this.dispatch("numItems",{dataSource:n,numItems:e});return this.applyFilters("numItems",s.numItems,n)}createContentFromData(t,e){return new uo(t,this,e)}getItemData(t){var e;const n=null===(e=this.options)||void 0===e?void 0:e.dataSource;let s={};Array.isArray(n)?s=n[t]:n&&"gallery"in n&&(n.items||(n.items=this._getGalleryDOMElements(n.gallery)),s=n.items[t]);let i=s;i instanceof Element&&(i=this._domElementToItemData(i));const o=this.dispatch("itemData",{itemData:i||{},index:t});return this.applyFilters("itemData",o.itemData,t)}_getGalleryDOMElements(t){var e,n;return null!==(e=this.options)&&void 0!==e&&e.children||null!==(n=this.options)&&void 0!==n&&n.childSelector?Qt(this.options.children,this.options.childSelector,t)||[]:[t]}_domElementToItemData(t){const e={element:t},n="A"===t.tagName?t:t.querySelector("a");if(n){e.src=n.dataset.pswpSrc||n.href,n.dataset.pswpSrcset&&(e.srcset=n.dataset.pswpSrcset),e.width=n.dataset.pswpWidth?parseInt(n.dataset.pswpWidth,10):0,e.height=n.dataset.pswpHeight?parseInt(n.dataset.pswpHeight,10):0,e.w=e.width,e.h=e.height,n.dataset.pswpType&&(e.type=n.dataset.pswpType);const i=t.querySelector("img");var s;if(i)e.msrc=i.currentSrc||i.src,e.alt=null!==(s=i.getAttribute("alt"))&&void 0!==s?s:"";(n.dataset.pswpCropped||n.dataset.cropped)&&(e.thumbCropped=!0)}return this.applyFilters("domItemData",e,t,n)}lazyLoadData(t,e){return Qs(t,this,e)}}class vo extends yo{constructor(t){super(),this.options=t||{},this._uid=0,this.shouldOpen=!1,this._preloadedContent=void 0,this.onThumbnailsClick=this.onThumbnailsClick.bind(this)}init(){Qt(this.options.gallery,this.options.gallerySelector).forEach((t=>{t.addEventListener("click",this.onThumbnailsClick,!1)}))}onThumbnailsClick(t){if(co(t)||window.pswp)return;let e={x:t.clientX,y:t.clientY};!e.x&&!e.y&&(e=null);let n=this.getClickedIndex(t);n=this.applyFilters("clickedIndex",n,t,this);const s={gallery:t.currentTarget};n>=0&&(t.preventDefault(),this.loadAndOpen(n,s,e))}getClickedIndex(t){if(this.options.getClickedIndexFn)return this.options.getClickedIndexFn.call(this,t);const e=t.target,n=Qt(this.options.children,this.options.childSelector,t.currentTarget).findIndex((t=>t===e||t.contains(e)));return-1!==n?n:this.options.children||this.options.childSelector?-1:0}loadAndOpen(t,e,n){if(window.pswp||!this.options)return!1;if(!e&&this.options.gallery&&this.options.children){const t=Qt(this.options.gallery);t[0]&&(e={gallery:t[0]})}return this.options.index=t,this.options.initialPointerPos=n,this.shouldOpen=!0,this.preload(t,e),!0}preload(t,e){const{options:n}=this;e&&(n.dataSource=e);const s=[],i=typeof n.pswpModule;if(ro(n.pswpModule))s.push(Promise.resolve(n.pswpModule));else{if("string"===i)throw new Error("pswpModule as string is no longer supported");if("function"!==i)throw new Error("pswpModule is not valid");s.push(n.pswpModule())}"function"==typeof n.openPromise&&s.push(n.openPromise()),!1!==n.preloadFirstSlide&&t>=0&&(this._preloadedContent=go(t,this));const o=++this._uid;Promise.all(s).then((t=>{if(this.shouldOpen){const e=t[0];this._openPhotoswipe(e,o)}}))}_openPhotoswipe(t,e){if(e!==this._uid&&this.shouldOpen||(this.shouldOpen=!1,window.pswp))return;const n="object"==typeof t?new t.default(this.options):new t(this.options);this.pswp=n,window.pswp=n,Object.keys(this._listeners).forEach((t=>{var e;null===(e=this._listeners[t])||void 0===e||e.forEach((e=>{n.on(t,e)}))})),Object.keys(this._filters).forEach((t=>{var e;null===(e=this._filters[t])||void 0===e||e.forEach((e=>{n.addFilter(t,e.fn,e.priority)}))})),this._preloadedContent&&(n.contentLoader.addToCache(this._preloadedContent),this._preloadedContent=void 0),n.on("destroy",(()=>{this.pswp=void 0,delete window.pswp})),n.init()}destroy(){var t;null===(t=this.pswp)||void 0===t||t.destroy(),this.shouldOpen=!1,this._listeners={},Qt(this.options.gallery,this.options.gallerySelector).forEach((t=>{t.removeEventListener("click",this.onThumbnailsClick,!1)}))}}let te,wo=Jn((()=>import("./photoswipe.esm.CKijkUPa.js")),[]);function As(){te=new vo({gallery:".custom-md img, #post-cover img",pswpModule:()=>wo,closeSVG:'',zoomSVG:'',padding:{top:20,bottom:20,left:20,right:20},wheelToZoom:!0,arrowPrev:!1,arrowNext:!1,imageClickAction:"close",tapAction:"close",doubleTapAction:"zoom"}),te.addFilter("domItemData",((t,e)=>(e instanceof HTMLImageElement&&(t.src=e.src,t.w=Number(e.naturalWidth||window.innerWidth),t.h=Number(e.naturalHeight||window.innerHeight),t.msrc=e.src),t))),te.init()}const $s=()=>{te||As(),window.swup.hooks.on("page:view",(()=>{As()})),window.swup.hooks.on("content:replace",(()=>{te?.destroy?.()}),{before:!0})};window.swup?$s():document.addEventListener("swup:enable",$s);const pt=(t,e)=>{const{o:n,i:s,u:i}=t;let o,r=n;const l=(t,e)=>{const n=r,l=t,a=e||(s?!s(n,l):n!==l);return(a||i)&&(r=l,o=n),[r,a,o]};return[e?t=>l(e(r,o),t):l,t=>[r,!!t,o]]},bo=typeof window<"u"&&typeof HTMLElement<"u"&&!!window.document,ut=bo?window:{},tn=Math.max,So=Math.min,Ge=Math.round,Se=Math.abs,Ds=Math.sign,en=ut.cancelAnimationFrame,ds=ut.requestAnimationFrame,xe=ut.setTimeout,Xe=ut.clearTimeout,Te=t=>typeof ut[t]<"u"?ut[t]:void 0,xo=Te("MutationObserver"),ks=Te("IntersectionObserver"),Ee=Te("ResizeObserver"),ye=Te("ScrollTimeline"),hs=t=>void 0===t,Ae=t=>null===t,Ct=t=>"number"==typeof t,oe=t=>"string"==typeof t,us=t=>"boolean"==typeof t,wt=t=>"function"==typeof t,_t=t=>Array.isArray(t),Ce=t=>"object"==typeof t&&!_t(t)&&!Ae(t),ps=t=>{const e=!!t&&t.length,n=Ct(e)&&e>-1&&e%1==0;return!!(_t(t)||!wt(t)&&n)&&(!(e>0&&Ce(t))||e-1 in t)},_e=t=>!!t&&t.constructor===Object,Le=t=>t instanceof HTMLElement,$e=t=>t instanceof Element;function K(t,e){if(ps(t))for(let n=0;ne(t[n],n,t)));return t}const sn=(t,e)=>t.indexOf(e)>=0,ee=(t,e)=>t.concat(e),tt=(t,e,n)=>(!oe(e)&&ps(e)?Array.prototype.push.apply(t,e):t.push(e),t),Mt=t=>Array.from(t||[]),fs=t=>_t(t)?t:!oe(t)&&ps(t)?Mt(t):[t],Ye=t=>!!t&&!t.length,Je=t=>Mt(new Set(t)),gt=(t,e,n)=>{K(t,(t=>!t||t.apply(void 0,e||[]))),!n&&(t.length=0)},nn="paddingTop",on="paddingRight",cn="paddingLeft",rn="paddingBottom",ln="marginLeft",an="marginRight",dn="marginBottom",hn="overflowX",un="overflowY",De="width",ke="height",$t="visible",Ht="hidden",Zt="scroll",Eo=t=>{const e=String(t||"");return e?e[0].toUpperCase()+e.slice(1):""},Me=(t,e,n,s)=>{if(t&&e){let s=!0;return K(n,(n=>{t[n]!==e[n]&&(s=!1)})),s}return!1},pn=(t,e)=>Me(t,e,["w","h"]),ve=(t,e)=>Me(t,e,["x","y"]),Co=(t,e)=>Me(t,e,["t","r","b","l"]),zt=()=>{},A=(t,...e)=>t.bind(0,...e),Ft=t=>{let e;const n=t?xe:ds,s=t?Xe:en;return[i=>{s(e),e=n((()=>i()),wt(t)?t():t)},()=>s(e)]},Qe=(t,e)=>{const{_:n,v:s,p:i,S:o}=e||{};let r,l,a,c,d=zt;const h=function(e){d(),Xe(r),c=r=l=void 0,d=zt,t.apply(this,e)},p=t=>o&&l?o(l,t):t,u=()=>{d!==zt&&h(p(a)||a)},m=function(){const t=Mt(arguments),e=wt(n)?n():n;if(Ct(e)&&e>=0){const n=wt(s)?s():s,o=Ct(n)&&n>=0,m=e>0?xe:ds,y=e>0?Xe:en,f=p(t)||t,g=h.bind(0,f);let v;d(),i&&!c?(g(),c=!0,v=m((()=>c=void 0),e)):(v=m(g,e),o&&!r&&(r=xe(u,n))),d=()=>y(v),l=a=f}else h(t)};return m.m=u,m},fn=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),bt=t=>t?Object.keys(t):[],W=(t,e,n,s,i,o,r)=>{const l=[e,n,s,i,o,r];return("object"!=typeof t||Ae(t))&&!wt(t)&&(t={}),K(l,(e=>{K(e,((n,s)=>{const i=e[s];if(t===i)return!0;const o=_t(i);if(i&&_e(i)){const e=t[s];let n=e;o&&!_t(e)?n=[]:!o&&!_e(e)&&(n={}),t[s]=W(n,i)}else t[s]=o?i.slice():i}))})),t},mn=(t,e)=>K(W({},t),((t,e,n)=>{void 0===t?delete n[e]:t&&_e(t)&&(n[e]=mn(t))})),ms=t=>!bt(t).length,gn=(t,e,n)=>tn(t,So(e,n)),Rt=t=>Je((_t(t)?t:(t||"").split(" ")).filter((t=>t))),gs=(t,e)=>t&&t.getAttribute(e),Ms=(t,e)=>t&&t.hasAttribute(e),Ot=(t,e,n)=>{K(Rt(e),(e=>{t&&t.setAttribute(e,String(n||""))}))},xt=(t,e)=>{K(Rt(e),(e=>t&&t.removeAttribute(e)))},Pe=(t,e)=>{const n=Rt(gs(t,e)),s=A(Ot,t,e),i=(t,e)=>{const s=new Set(n);return K(Rt(t),(t=>{s[e](t)})),Mt(s).join(" ")};return{O:t=>s(i(t,"delete")),$:t=>s(i(t,"add")),C:t=>{const e=Rt(t);return e.reduce(((t,e)=>t&&n.includes(e)),e.length>0)}}},yn=(t,e,n)=>(Pe(t,e).O(n),A(ys,t,e,n)),ys=(t,e,n)=>(Pe(t,e).$(n),A(yn,t,e,n)),Oe=(t,e,n,s)=>(s?ys:yn)(t,e,n),vs=(t,e,n)=>Pe(t,e).C(n),vn=t=>Pe(t,"class"),wn=(t,e)=>{vn(t).O(e)},ws=(t,e)=>(vn(t).$(e),A(wn,t,e)),bn=(t,e)=>{const n=e?$e(e)&&e:document;return n?Mt(n.querySelectorAll(t)):[]},_o=(t,e)=>{const n=e?$e(e)&&e:document;return n&&n.querySelector(t)},ts=(t,e)=>$e(t)&&t.matches(e),Sn=t=>ts(t,"body"),es=t=>t?Mt(t.childNodes):[],se=t=>t&&t.parentElement,Nt=(t,e)=>$e(t)&&t.closest(e),ss=t=>document.activeElement,Lo=(t,e,n)=>{const s=Nt(t,e),i=t&&_o(n,s),o=Nt(i,e)===s;return!(!s||!i)&&(s===t||i===t||o&&Nt(Nt(t,n),e)!==s)},Wt=t=>{K(fs(t),(t=>{const e=se(t);t&&e&&e.removeChild(t)}))},ft=(t,e)=>A(Wt,t&&e&&K(fs(e),(e=>{e&&t.appendChild(e)}))),Bt=t=>{const e=document.createElement("div");return Ot(e,"class",t),e},xn=t=>{const e=Bt();return e.innerHTML=t.trim(),K(es(e),(t=>Wt(t)))},Ps=(t,e)=>t.getPropertyValue(e)||t[e]||"",En=t=>{const e=t||0;return isFinite(e)?e:0},me=t=>En(parseFloat(t||"")),ns=t=>Math.round(1e4*t)/1e4,Cn=t=>`${ns(En(t))}px`;function ne(t,e){t&&e&&K(e,((e,n)=>{try{const s=t.style,i=Ae(e)||us(e)?"":Ct(e)?Cn(e):e;0===n.indexOf("--")?s.setProperty(n,i):s[n]=i}catch{}}))}function Tt(t,e,n){const s=oe(e);let i=s?"":{};if(t){const o=ut.getComputedStyle(t,n)||t.style;i=s?Ps(o,e):Mt(e).reduce(((t,e)=>(t[e]=Ps(o,e),t)),i)}return i}const Hs=(t,e,n)=>{const s=e?`${e}-`:"",i=n?`-${n}`:"",o=`${s}top${i}`,r=`${s}right${i}`,l=`${s}bottom${i}`,a=`${s}left${i}`,c=Tt(t,[o,r,l,a]);return{t:me(c[o]),r:me(c[r]),b:me(c[l]),l:me(c[a])}},Oo=(t,e)=>"translate"+(Ce(t)?`(${t.x},${t.y})`:`Y(${t})`),Io=t=>!!(t.offsetWidth||t.offsetHeight||t.getClientRects().length),To={w:0,h:0},He=(t,e)=>e?{w:e[`${t}Width`],h:e[`${t}Height`]}:To,Ao=t=>He("inner",t||ut),Vt=A(He,"offset"),_n=A(He,"client"),Ie=A(He,"scroll"),bs=t=>{const e=parseFloat(Tt(t,De))||0,n=parseFloat(Tt(t,ke))||0;return{w:e-Ge(e),h:n-Ge(n)}},Be=t=>t.getBoundingClientRect(),$o=t=>!!t&&Io(t),os=t=>!(!t||!t[ke]&&!t[De]),Ln=(t,e)=>{const n=os(t);return!os(e)&&n},zs=(t,e,n,s)=>{K(Rt(e),(e=>{t&&t.removeEventListener(e,n,s)}))},Y=(t,e,n,s)=>{var i;const o=null==(i=s&&s.H)||i,r=s&&s.I||!1,l=s&&s.A||!1,a={passive:o,capture:r};return A(gt,Rt(e).map((e=>{const s=l?i=>{zs(t,e,s,r),n&&n(i)}:n;return t&&t.addEventListener(e,s,a),A(zs,t,e,s,r)})))},On=t=>t.stopPropagation(),is=t=>t.preventDefault(),In=t=>On(t)||is(t),Et=(t,e)=>{const{x:n,y:s}=Ct(e)?{x:e,y:e}:e||{};Ct(n)&&(t.scrollLeft=n),Ct(s)&&(t.scrollTop=s)},mt=t=>({x:t.scrollLeft,y:t.scrollTop}),Tn=()=>({D:{x:0,y:0},M:{x:0,y:0}}),Do=(t,e)=>{const{D:n,M:s}=t,{w:i,h:o}=e,r=(t,e,n)=>{let s=Ds(t)*n,i=Ds(e)*n;if(s===i){const n=Se(t),o=Se(e);i=n>o?0:i,s=n{const n=(t,e)=>0===t&&t<=e;return{x:n(t.x,e.x),y:n(t.y,e.y)}},qs=({D:t,M:e},n)=>{const s=(t,e,n)=>gn(0,1,(t-n)/(t-e)||0);return{x:s(t.x,e.x,n.x),y:s(t.y,e.y,n.y)}},cs=t=>{t&&t.focus&&t.focus({preventScroll:!0})},Fs=(t,e)=>{K(fs(e),t)},rs=t=>{const e=new Map,n=(t,n)=>{if(t){const s=e.get(t);Fs((t=>{s&&s[t?"delete":"clear"](t)}),n)}else e.forEach((t=>{t.clear()})),e.clear()},s=(t,i)=>{if(oe(t)){const s=e.get(t)||new Set;return e.set(t,s),Fs((t=>{wt(t)&&s.add(t)}),i),A(n,t,i)}us(i)&&i&&n();const o=bt(t),r=[];return K(o,(e=>{const n=t[e];n&&tt(r,s(e,n))})),A(gt,r)};return s(t||{}),[s,n,(t,n)=>{K(Mt(e.get(t)),(t=>{n&&!Ye(n)?t.apply(0,n):t()}))}]},Ns=t=>JSON.stringify(t,((t,e)=>{if(wt(e))throw 0;return e})),Bs=(t,e)=>t?`${e}`.split(".").reduce(((t,e)=>t&&fn(t,e)?t[e]:void 0),t):void 0,ko={paddingAbsolute:!1,showNativeOverlaidScrollbars:!1,update:{elementEvents:[["img","load"]],debounce:[0,33],attributes:null,ignoreMutation:null},overflow:{x:"scroll",y:"scroll"},scrollbars:{theme:"os-theme-dark",visibility:"auto",autoHide:"never",autoHideDelay:1300,autoHideSuspend:!1,dragScroll:!0,clickScroll:!1,pointers:["mouse","touch","pen"]}},An=(t,e)=>{const n={};return K(ee(bt(e),bt(t)),(s=>{const i=t[s],o=e[s];if(Ce(i)&&Ce(o))W(n[s]={},An(i,o)),ms(n[s])&&delete n[s];else if(fn(e,s)&&o!==i){let t=!0;if(_t(i)||_t(o))try{Ns(i)===Ns(o)&&(t=!1)}catch{}t&&(n[s]=o)}})),n},Vs=(t,e,n)=>s=>[Bs(t,s),n||void 0!==Bs(e,s)],jt="data-overlayscrollbars",we="os-environment",ge=`${we}-scrollbar-hidden`,Ve=`${jt}-initialize`,be="noClipping",Zs=`${jt}-body`,Dt=jt,Mo="host",It=`${jt}-viewport`,Po=hn,Ho=un,zo="arrange",$n="measuring",Ro="scrolling",Dn="scrollbarHidden",qo="noContent",ls=`${jt}-padding`,Ws=`${jt}-content`,Ss="os-size-observer",Fo=`${Ss}-appear`,No=`${Ss}-listener`,Bo="os-trinsic-observer",Vo="os-theme-none",yt="os-scrollbar",Zo=`${yt}-rtl`,Wo=`${yt}-horizontal`,Uo=`${yt}-vertical`,kn=`${yt}-track`,xs=`${yt}-handle`,jo=`${yt}-visible`,Ko=`${yt}-cornerless`,Us=`${yt}-interaction`,js=`${yt}-unusable`,as=`${yt}-auto-hide`,Ks=`${as}-hidden`,Gs=`${yt}-wheel`,Go=`${kn}-interactive`,Xo=`${xs}-interactive`;let Mn;const Yo=()=>Mn,Jo=t=>{Mn=t};let Ze;const Qo=()=>{const t=(t,e,n)=>{ft(document.body,t),ft(document.body,t);const s=_n(t),i=Vt(t),o=bs(e);return n&&Wt(t),{x:i.h-s.h+o.h,y:i.w-s.w+o.w}},e=xn(`
`)[0],n=e.firstChild,s=e.lastChild,i=Yo();i&&(s.nonce=i);const[o,,r]=rs(),[l,a]=pt({o:t(e,n),i:ve},A(t,e,n,!0)),[c]=a(),d=(t=>{let e=!1;const n=ws(t,ge);try{e="none"===Tt(t,"scrollbar-width")||"none"===Tt(t,"display","::-webkit-scrollbar")}catch{}return n(),e})(e),h={x:0===c.x,y:0===c.y},p={elements:{host:null,padding:!d,viewport:t=>d&&Sn(t)&&t,content:!1},scrollbars:{slot:!0},cancel:{nativeScrollbarsOverlaid:!1,body:null}},u=W({},ko),m=A(W,{},u),y=A(W,{},p),f={T:c,k:h,R:d,V:!!ye,L:A(o,"r"),U:y,P:t=>W(p,t)&&y(),N:m,q:t=>W(u,t)&&m(),B:W({},p),F:W({},u)};if(xt(e,"style"),Wt(e),Y(ut,"resize",(()=>{r("r",[])})),wt(ut.matchMedia)&&!d&&(!h.x||!h.y)){const t=e=>{const n=ut.matchMedia(`(resolution: ${ut.devicePixelRatio}dppx)`);Y(n,"change",(()=>{e(),t(e)}),{A:!0})};t((()=>{const[t,e]=l();W(f.T,t),r("r",[e])}))}return f},Lt=()=>(Ze||(Ze=Qo()),Ze),Pn=(t,e)=>wt(e)?e.apply(0,t):e,ti=(t,e,n,s)=>{const i=hs(s)?n:s;return Pn(t,i)||e.apply(0,t)},Hn=(t,e,n,s)=>{const i=hs(s)?n:s,o=Pn(t,i);return!!o&&(Le(o)?o:e.apply(0,t))},ei=(t,e)=>{const{nativeScrollbarsOverlaid:n,body:s}=e||{},{k:i,R:o,U:r}=Lt(),{nativeScrollbarsOverlaid:l,body:a}=r().cancel,c=n??l,d=hs(s)?a:s,h=(i.x||i.y)&&c,p=t&&(Ae(d)?!o:d);return!!h||!!p},Es=new WeakMap,si=(t,e)=>{Es.set(t,e)},ni=t=>{Es.delete(t)},zn=t=>Es.get(t),oi=(t,e,n)=>{let s=!1;const i=!!n&&new WeakMap,o=o=>{if(i&&n){K(n.map((e=>{const[n,s]=e||[];return[s&&n?(o||bn)(n,t):[],s]})),(n=>K(n[0],(o=>{const r=n[1],l=i.get(o)||[];if(t.contains(o)&&r){const t=Y(o,r,(n=>{s?(t(),i.delete(o)):e(n)}));i.set(o,tt(l,t))}else gt(l),i.delete(o)}))))}};return o(),[()=>{s=!0},o]},Xs=(t,e,n,s)=>{let i=!1;const{j:o,X:r,Y:l,W:a,J:c,G:d}=s||{},h=Qe((()=>i&&n(!0)),{_:33,v:99}),[p,u]=oi(t,h,l),m=r||[],y=ee(o||[],m),f=(i,o)=>{if(!Ye(o)){const r=c||zt,l=d||zt,h=[],p=[];let y=!1,f=!1;if(K(o,(n=>{const{attributeName:i,target:o,type:c,oldValue:d,addedNodes:u,removedNodes:g}=n,v="attributes"===c,w="childList"===c,b=t===o,x=v&&i,E=x&&gs(o,i||""),A=oe(E)?E:null,L=x&&d!==A,S=sn(m,i)&&L;if(e&&(w||!b)){const e=v&&L,c=e&&a&&ts(o,a),p=(c?!r(o,i,d,A):!v||e)&&!l(n,!!c,t,s);K(u,(t=>tt(h,t))),K(g,(t=>tt(h,t))),f=f||p}!e&&b&&L&&!r(o,i,d,A)&&(tt(p,i),y=y||S)})),u((t=>Je(h).reduce(((e,n)=>(tt(e,bn(t,n)),ts(n,t)?tt(e,n):e)),[]))),e)return!i&&f&&n(!1),[!1];if(!Ye(p)||y){const t=[Je(p),y];return!i&&n.apply(0,t),t}}},g=new xo(A(f,!1));return[()=>(g.observe(t,{attributes:!0,attributeOldValue:!0,attributeFilter:y,subtree:e,childList:e,characterData:e}),i=!0,()=>{i&&(p(),g.disconnect(),i=!1)}),()=>{if(i)return h.m(),f(!0,g.takeRecords())}]},Rn={},qn={},ii=t=>{K(t,(t=>K(t,((e,n)=>{Rn[n]=t[n]}))))},Fn=(t,e,n)=>bt(t).map((s=>{const{static:i,instance:o}=t[s],[r,l,a]=n||[],c=n?o:i;if(c){const t=n?c(r,l,e):c(e);return(a||qn)[s]=t}})),ie=t=>qn[t],ci="__osOptionsValidationPlugin",ri="__osSizeObserverPlugin",li=(t,e)=>{const{k:n}=e,[s,i]=t("showNativeOverlaidScrollbars");return[s&&n.x&&n.y,i]},Ut=t=>0===t.indexOf($t),ai=(t,e)=>{const n=(t,e,n,s)=>{const i=t===$t?Ht:t.replace(`${$t}-`,""),o=Ut(t),r=Ut(n);return e||s?o&&r?$t:o?e&&s?i:e?$t:Ht:e?i:r&&s?$t:Ht:Ht},s={x:n(e.x,t.x,e.y,t.y),y:n(e.y,t.y,e.x,t.x)};return{K:s,Z:{x:s.x===Zt,y:s.y===Zt}}},Nn="__osScrollbarsHidingPlugin",di="__osClickScrollPlugin",Bn=(t,e,n)=>{const{dt:s}=n||{},i=ie(ri),[o]=pt({o:!1,u:!0});return()=>{const n=[],r=xn(`
`)[0],l=r.firstChild,a=t=>{let n=!1,s=!1;if(t instanceof ResizeObserverEntry){const[e,,i]=o(t.contentRect),r=os(e);s=Ln(e,i),n=!s&&!r}else s=!0===t;n||e({ft:!0,dt:s})};if(Ee){const t=new Ee((t=>a(t.pop())));t.observe(l),tt(n,(()=>{t.disconnect()}))}else{if(!i)return zt;{const[t,e]=i(l,a,s);tt(n,ee([ws(r,Fo),Y(r,"animationstart",t)],e))}}return A(gt,tt(n,ft(t,r)))}},hi=(t,e)=>{let n;const s=Bt(Bo),[i]=pt({o:!1}),o=(t,n)=>{if(t){const s=i((t=>0===t.h||t.isIntersecting||t.intersectionRatio>0)(t)),[,o]=s;return o&&!n&&e(s)&&[s]}},r=(t,e)=>o(e.pop(),t);return[()=>{const e=[];if(ks)n=new ks(A(r,!1),{root:t}),n.observe(s),tt(e,(()=>{n.disconnect()}));else{const t=()=>{const t=Vt(s);o(t)};tt(e,Bn(s,t)()),t()}return A(gt,tt(e,ft(t,s)))},()=>n&&r(!0,n.takeRecords())]},ui=(t,e,n,s)=>{let i,o,r,l,a,c;const d=`[${Dt}]`,h=`[${It}]`,p=["id","class","style","open","wrap","cols","rows"],{vt:u,ht:m,ot:y,gt:f,bt:g,nt:v,wt:w,yt:b,St:x,Ot:E}=t,A=t=>"rtl"===Tt(t,"direction"),L={$t:!1,ct:A(u)},S=Lt(),I=ie(Nn),[C]=pt({i:pn,o:{w:0,h:0}},(()=>{const s=I&&I.tt(t,e,L,S,n).ut,i=!(w&&v)&&vs(m,Dt,be),o=!v&&b(zo),r=o&&mt(f),l=r&&E(),a=x($n,i),c=o&&s&&s()[0],d=Ie(y),h=bs(y);return c&&c(),Et(f,r),l&&l(),i&&a(),{w:d.w+h.w,h:d.h+h.h}})),_=Qe(s,{_:()=>i,v:()=>o,S(t,e){const[n]=t,[s]=e;return[ee(bt(n),bt(s)).reduce(((t,e)=>(t[e]=n[e]||s[e],t)),{})]}}),D=t=>{const e=A(u);W(t,{Ct:c!==e}),W(L,{ct:e}),c=e},k=(t,e)=>{const[n,i]=t,o={xt:i};return W(L,{$t:n}),!e&&s(o),o},T=({ft:t,dt:e})=>{const n=t&&!e||!S.R?s:_,i={ft:t||e,dt:e};D(i),n(i)},O=(t,e)=>{const[,n]=C(),i={Ht:n};return D(i),n&&!e&&(t?s:_)(i),i},$=(t,e,n)=>{const s={Et:e};return D(s),e&&!n&&_(s),s},[M,z]=g?hi(m,k):[],H=!v&&Bn(m,T,{dt:!0}),[R,P]=Xs(m,!1,$,{X:p,j:p}),q=v&&Ee&&new Ee((t=>{const e=t[t.length-1].contentRect;T({ft:!0,dt:Ln(e,a)}),a=e})),F=Qe((()=>{const[,t]=C();s({Ht:t})}),{_:222,p:!0});return[()=>{q&&q.observe(m);const t=H&&H(),e=M&&M(),n=R(),s=S.L((t=>{t?_({zt:t}):F()}));return()=>{q&&q.disconnect(),t&&t(),e&&e(),l&&l(),n(),s()}},({It:t,At:e,Dt:n})=>{const s={},[a]=t("update.ignoreMutation"),[c,u]=t("update.attributes"),[m,f]=t("update.elementEvents"),[w,b]=t("update.debounce"),x=e||n;if(f||u){r&&r(),l&&l();const[t,e]=Xs(g||y,!0,O,{j:ee(p,c||[]),Y:m,W:d,G:(t,e)=>{const{target:n,attributeName:s}=t;return!(e||!s||v)&&Lo(n,d,h)||!!Nt(n,`.${yt}`)||!!(t=>wt(a)&&a(t))(t)}});l=t(),r=e}if(b)if(_.m(),_t(w)){const t=w[0],e=w[1];i=Ct(t)&&t,o=Ct(e)&&e}else Ct(w)?(i=w,o=!1):(i=!1,o=!1);if(x){const t=P(),e=z&&z(),n=r&&r();t&&W(s,$(t[0],t[1],x)),e&&W(s,k(e[0],x)),n&&W(s,O(n[0],x))}return D(s),s},L]},pi=(t,e,n,s)=>{const i="--os-viewport-percent",o="--os-scroll-percent",r="--os-scroll-direction",{U:l}=Lt(),{scrollbars:a}=l(),{slot:c}=a,{vt:d,ht:h,ot:p,Mt:u,gt:m,wt:y,nt:f}=e,{scrollbars:g}=u?{}:t,{slot:v}=g||{},w=[],b=[],x=[],E=Hn([d,h,p],(()=>f&&y?d:h),c,v),L=t=>{if(ye){const e=new ye({source:m,axis:t});return{kt:t=>{const n=t.Tt.animate({clear:["left"],[o]:[0,1]},{timeline:e});return()=>n.cancel()}}}},S={x:L("x"),y:L("y")},I=(t,e,n)=>{const s=n?ws:wn;K(t,(t=>{s(t.Tt,e)}))},C=(t,e)=>{K(t,(t=>{const[n,s]=e(t);ne(n,s)}))},_=(t,e,n)=>{const s=us(n),i=!s||!n;(!s||n)&&I(b,t,e),i&&I(x,t,e)},D=t=>{const e=t?"x":"y",n=Bt(`${yt} ${t?Wo:Uo}`),i=Bt(kn),o=Bt(xs),r={Tt:n,Ut:i,Pt:o},l=S[e];return tt(t?b:x,r),tt(w,[ft(n,i),ft(i,o),A(Wt,n),l&&l.kt(r),s(r,_,t)]),r},k=A(D,!0),T=A(D,!1);return k(),T(),[{Nt:()=>{const t=(()=>{const{Rt:t,Vt:e}=n,s=(t,e)=>gn(0,1,t/(t+e)||0);return{x:s(e.x,t.x),y:s(e.y,t.y)}})(),e=t=>e=>[e.Tt,{[i]:ns(t)+""}];C(b,e(t.x)),C(x,e(t.y))},qt:()=>{if(!ye){const{Lt:t}=n,e=qs(t,mt(m)),s=t=>e=>[e.Tt,{[o]:ns(t)+""}];C(b,s(e.x)),C(x,s(e.y))}},Bt:()=>{const{Lt:t}=n,e=Rs(t),s=t=>e=>[e.Tt,{[r]:t?"0":"1"}];C(b,s(e.x)),C(x,s(e.y))},Ft:()=>{if(f&&!y){const{Rt:t,Lt:e}=n,s=Rs(e),i=qs(e,mt(m)),o=e=>{const{Tt:n}=e,o=se(n)===p&&n,r=(t,e,n)=>{const s=e*t;return Cn(n?s:-s)};return[o,o&&{transform:Oo({x:r(i.x,t.x,s.x),y:r(i.y,t.y,s.y)})}]};C(b,o),C(x,o)}},jt:_,Xt:{Yt:b,Wt:k,Jt:A(C,b)},Gt:{Yt:x,Wt:T,Jt:A(C,x)}},()=>(ft(E,b[0].Tt),ft(E,x[0].Tt),A(gt,w))]},fi=(t,e,n,s)=>(i,o,r)=>{const{ht:l,ot:a,nt:c,gt:d,Kt:h,Ot:p}=e,{Tt:u,Ut:m,Pt:y}=i,[f,g]=Ft(333),[v,w]=Ft(444),b=t=>{wt(d.scrollBy)&&d.scrollBy({behavior:"smooth",left:t.x,top:t.y})};let x=!0;return A(gt,[Y(y,"pointermove pointerleave",s),Y(u,"pointerenter",(()=>{o(Us,!0)})),Y(u,"pointerleave pointercancel",(()=>{o(Us,!1)})),!c&&Y(u,"mousedown",(()=>{const t=ss();(Ms(t,It)||Ms(t,Dt)||t===document.body)&&xe(A(cs,a),25)})),Y(u,"wheel",(t=>{const{deltaX:e,deltaY:n,deltaMode:s}=t;x&&0===s&&se(u)===l&&b({x:e,y:n}),x=!1,o(Gs,!0),f((()=>{x=!0,o(Gs)})),is(t)}),{H:!1,I:!0}),Y(u,"pointerdown",A(Y,h,"click",In,{A:!0,I:!0,H:!1}),{I:!0}),(()=>{const e="pointerup pointercancel lostpointercapture",s="client"+(r?"X":"Y"),i=r?De:ke,o=r?"left":"top",l=r?"w":"h",a=r?"x":"y",c=[];return Y(m,"pointerdown",(r=>{const u=Nt(r.target,`.${xs}`)===y,f=u?y:m,g=t.scrollbars,x=g[u?"dragScroll":"clickScroll"],{button:E,isPrimary:L,pointerType:S}=r,{pointers:I}=g;if(0===E&&L&&x&&(I||[]).includes(S)){gt(c),w();const t=!u&&(r.shiftKey||"instant"===x),g=A(Be,y),E=A(Be,m),L=(t,e)=>(t||g())[o]-(e||E())[o],S=Ge(Be(d)[i])/Vt(d)[l]||1,I=((t,e)=>s=>{const{Rt:i}=n,o=Vt(m)[l]-Vt(y)[l],r=e*s/o*i[a];Et(d,{[a]:t+r})})(mt(d)[a],1/S),C=r[s],_=g(),D=E(),k=_[i],T=L(_,D)+k/2,O=C-D[o],$=u?0:O-T,M=t=>{gt(H),f.releasePointerCapture(t.pointerId)},W=u||t,z=p(),H=[Y(h,e,M),Y(h,"selectstart",(t=>is(t)),{H:!1}),Y(m,e,M),W&&Y(m,"pointermove",(t=>I($+(t[s]-C)))),W&&(()=>{const t=mt(d);z();const e=mt(d),n={x:e.x-t.x,y:e.y-t.y};(Se(n.x)>3||Se(n.y)>3)&&(p(),Et(d,t),b(n),v(z))})];if(f.setPointerCapture(r.pointerId),t)I($);else if(!u){const t=ie(di);if(t){const e=t(I,$,k,(t=>{t?z():tt(H,z)}));tt(H,e),tt(c,A(e,!0))}}}}))})(),g,w])},mi=(t,e,n,s,i,o)=>{let r,l,a,c,d,h=zt,p=0;const u=t=>"mouse"===t.pointerType,[m,y]=Ft(),[f,g]=Ft(100),[v,w]=Ft(100),[b,x]=Ft((()=>p)),[E,L]=pi(t,i,s,fi(e,i,s,(t=>u(t)&&M()))),{ht:S,Qt:I,wt:C}=i,{jt:_,Nt:D,qt:k,Bt:T,Ft:O}=E,$=(t,e)=>{if(x(),t)_(Ks);else{const t=A(_,Ks,!0);p>0&&!e?b(t):t()}},M=()=>{(a?!r:!c)&&($(!0),f((()=>{$(!1)})))},W=t=>{_(as,t,!0),_(as,t,!1)},z=t=>{u(t)&&(r=a,a&&$(!0))},H=[x,g,w,y,()=>h(),Y(S,"pointerover",z,{A:!0}),Y(S,"pointerenter",z),Y(S,"pointerleave",(t=>{u(t)&&(r=!1,a&&$(!1))})),Y(S,"pointermove",(t=>{u(t)&&l&&M()})),Y(I,"scroll",(t=>{m((()=>{k(),M()})),o(t),O()}))];return[()=>A(gt,tt(H,L())),({It:t,Dt:e,Zt:i,tn:o})=>{const{nn:r,sn:u,en:m,cn:y}=o||{},{Ct:f,dt:g}=i||{},{ct:w}=n,{k:b}=Lt(),{K:x,rn:E}=s,[L,S]=t("showNativeOverlaidScrollbars"),[M,z]=t("scrollbars.theme"),[H,R]=t("scrollbars.visibility"),[P,q]=t("scrollbars.autoHide"),[F,N]=t("scrollbars.autoHideSuspend"),[K]=t("scrollbars.autoHideDelay"),[B,Z]=t("scrollbars.dragScroll"),[j,V]=t("scrollbars.clickScroll"),[U,G]=t("overflow"),Q=g&&!e,J=E.x||E.y,X=r||u||y||f||e,tt=m||R||G,et=L&&b.x&&b.y,nt=(t,e,n)=>{const s=t.includes(Zt)&&(H===$t||"auto"===H&&e===Zt);return _(jo,s,n),s};if(p=K,Q&&(F&&J?(W(!1),h(),v((()=>{h=Y(I,"scroll",A(W,!0),{A:!0})}))):W(!0)),S&&_(Vo,et),z&&(_(d),_(M,!0),d=M),N&&!F&&W(!0),q&&(l="move"===P,a="leave"===P,c="never"===P,$(c,!0)),Z&&_(Xo,B),V&&_(Go,!!j),tt){const t=nt(U.x,x.x,!0),e=nt(U.y,x.y,!1);_(Ko,!(t&&e))}X&&(k(),D(),O(),y&&T(),_(js,!E.x,!0),_(js,!E.y,!1),_(Zo,w&&!C))},{},E]},gi=t=>{const e=Lt(),{U:n,R:s}=e,{elements:i}=n(),{padding:o,viewport:r,content:l}=i,a=Le(t),c=a?{}:t,{elements:d}=c,{padding:h,viewport:p,content:u}=d||{},m=a?t:c.target,y=Sn(m),f=m.ownerDocument,g=f.documentElement,v=()=>f.defaultView||ut,w=A(ti,[m]),b=A(Hn,[m]),x=A(Bt,""),E=A(w,x,r),L=A(b,x,l),S=E(p),I=S===m,C=I&&y,_=!I&&L(u),D=!I&&S===_,k=C?g:S,T=C?k:m,O=!I&&b(x,o,h),$=!D&&_,M=[$,k,O,T].map((t=>Le(t)&&!se(t)&&t)),W=t=>t&&sn(M,t),z=!W(k)&&(t=>{const e=Vt(t),n=Ie(t),s=Tt(t,hn),i=Tt(t,un);return n.w-e.w>0&&!Ut(s)||n.h-e.h>0&&!Ut(i)})(k)?k:m,H=C?g:k,R={vt:m,ht:T,ot:k,ln:O,bt:$,gt:H,Qt:C?f:k,an:y?g:z,Kt:f,wt:y,Mt:a,nt:I,un:v,yt:t=>vs(k,It,t),St:(t,e)=>Oe(k,It,t,e),Ot:()=>Oe(H,It,Ro,!0)},{vt:P,ht:q,ln:F,ot:N,bt:K}=R,B=[()=>{xt(q,[Dt,Ve]),xt(P,Ve),y&&xt(g,[Ve,Dt])}];let Z=es([K,N,F,q,P].find((t=>t&&!W(t))));const j=C?P:K||N,V=A(gt,B);return[R,()=>{const t=v(),e=ss(),n=t=>{ft(se(t),es(t)),Wt(t)},i=t=>Y(t,"focusin focusout focus blur",In,{I:!0,H:!1}),o="tabindex",r=gs(N,o),l=i(e);return Ot(q,Dt,I?"":Mo),Ot(F,ls,""),Ot(N,It,""),Ot(K,Ws,""),I||(Ot(N,o,r||"-1"),y&&Ot(g,Zs,"")),ft(j,Z),ft(q,F),ft(F||q,!I&&N),ft(N,K),tt(B,[l,()=>{const t=ss(),e=W(N),s=e&&t===N?P:t,l=i(s);xt(F,ls),xt(K,Ws),xt(N,It),y&&xt(g,Zs),r?Ot(N,o,r):xt(N,o),W(K)&&n(K),e&&n(N),W(F)&&n(F),cs(s),l()}]),s&&!I&&(ys(N,It,Dn),tt(B,A(xt,N,It))),cs(!I&&y&&e===P&&t.top===t?N:e),l(),Z=0,V},V]},yi=({bt:t})=>({Zt:e,_n:n,Dt:s})=>{const{xt:i}=e||{},{$t:o}=n;t&&(i||s)&&ne(t,{[ke]:o&&"100%"})},vi=({ht:t,ln:e,ot:n,nt:s},i)=>{const[o,r]=pt({i:Co,o:Hs()},A(Hs,t,"padding",""));return({It:t,Zt:l,_n:a,Dt:c})=>{let[d,h]=r(c);const{R:p}=Lt(),{ft:u,Ht:m,Ct:y}=l||{},{ct:f}=a,[g,v]=t("paddingAbsolute");(u||h||c||m)&&([d,h]=o(c));const w=!s&&(v||y||h);if(w){const t=!g||!e&&!p,s=d.r+d.l,o=d.t+d.b,r={[an]:t&&!f?-s:0,[dn]:t?-o:0,[ln]:t&&f?-s:0,top:t?-d.t:0,right:t?f?-d.r:"auto":0,left:t?f?"auto":-d.l:0,[De]:t&&`calc(100% + ${s}px)`},l={[nn]:t?d.t:0,[on]:t?d.r:0,[rn]:t?d.b:0,[cn]:t?d.l:0};ne(e||n,r),ne(n,l),W(i,{ln:d,dn:!t,rt:e?l:W({},r,l)})}return{fn:w}}},wi=(t,e)=>{const n=Lt(),{ht:s,ln:i,ot:o,nt:r,Qt:l,gt:a,wt:c,St:d,un:h}=t,{R:p}=n,u=c&&r,m=A(tn,0),y={display:()=>!1,direction:t=>"ltr"!==t,flexDirection:t=>t.endsWith("-reverse"),writingMode:t=>"horizontal-tb"!==t},f=bt(y),g={i:pn,o:{w:0,h:0}},v={i:ve,o:{}},w=t=>{d($n,!u&&t)},[b,x]=pt(g,A(bs,o)),[E,L]=pt(g,A(Ie,o)),[S,I]=pt(g),[C]=pt(v),[_,D]=pt(g),[k]=pt(v),[T]=pt({i:(t,e)=>Me(t,e,f),o:{}},(()=>$o(o)?Tt(o,f):{})),[O,$]=pt({i:(t,e)=>ve(t.D,e.D)&&ve(t.M,e.M),o:Tn()}),M=ie(Nn),z=(t,e)=>`${e?Po:Ho}${Eo(t)}`;return({It:r,Zt:c,_n:g,Dt:v},{fn:A})=>{const{ft:H,Ht:R,Ct:P,dt:q,zt:F}=c||{},N=M&&M.tt(t,e,g,n,r),{it:K,ut:B,_t:Z}=N||{},[j,V]=li(r,n),[U,G]=r("overflow"),Q=Ut(U.x),J=Ut(U.y);let X=x(v),tt=L(v),et=I(v),nt=D(v);V&&p&&d(Dn,!j);{vs(s,Dt,be)&&w(!0);const[t]=B?B():[],[e]=X=b(v),[n]=tt=E(v),i=_n(o),r=u&&Ao(h()),l={w:m(n.w+e.w),h:m(n.h+e.h)},a={w:m((r?r.w:i.w+m(i.w-n.w))+e.w),h:m((r?r.h:i.h+m(i.h-n.h))+e.h)};t&&t(),nt=_(a),et=S(((t,e)=>{const n=ut.devicePixelRatio%1!=0?1:0,s={w:m(t.w-e.w),h:m(t.h-e.h)};return{w:s.w>n?s.w:0,h:s.h>n?s.h:0}})(l,a),v)}const[st,it]=nt,[ot,rt]=et,[lt,at]=tt,[ct,dt]=X,[ht,pt]=C({x:ot.w>0,y:ot.h>0}),yt=Q&&J&&(ht.x||ht.y)||Q&&ht.x&&!ht.y||J&&ht.y&&!ht.x,ft=A||P||F||dt||at||it||rt||G||V||!0,gt=ai(ht,U),[vt,wt]=k(gt.K),[xt,At]=T(v),Lt=P||q||At||pt||v,[St,It]=Lt?O((t=>{if(!f.some((e=>{const n=t[e];return n&&y[e](n)})))return{D:{x:0,y:0},M:{x:1,y:1}};w(!0);const e=mt(a),n=d(qo,!0),s=Y(l,Zt,(t=>{const n=mt(a);t.isTrusted&&n.x===e.x&&n.y===e.y&&On(t)}),{I:!0,A:!0});Et(a,{x:0,y:0}),n();const i=mt(a),o=Ie(a);Et(a,{x:o.w,y:o.h});const r=mt(a);Et(a,{x:r.x-i.x<1&&-o.w,y:r.y-i.y<1&&-o.h});const c=mt(a);return Et(a,e),ds((()=>s())),{D:i,M:c}})(xt),v):$();return ft&&(wt&&(t=>{const e=t=>[$t,Ht,Zt].map((e=>z(e,t))),n=e(!0).concat(e()).join(" ");d(n),d(bt(t).map((e=>z(t[e],"x"===e))).join(" "),!0)})(gt.K),Z&&K&&ne(o,Z(gt,g,K(gt,lt,ct)))),w(!1),Oe(s,Dt,be,yt),Oe(i,ls,be,yt),W(e,{K:vt,Vt:{x:st.w,y:st.h},Rt:{x:ot.w,y:ot.h},rn:ht,Lt:Do(St,ot)}),{en:wt,nn:it,sn:rt,cn:It||rt,vn:Lt}}},bi=t=>{const[e,n,s]=gi(t),i={ln:{t:0,r:0,b:0,l:0},dn:!1,rt:{[an]:0,[dn]:0,[ln]:0,[nn]:0,[on]:0,[rn]:0,[cn]:0},Vt:{x:0,y:0},Rt:{x:0,y:0},K:{x:Ht,y:Ht},rn:{x:!1,y:!1},Lt:Tn()},{vt:o,gt:r,nt:l,Ot:a}=e,{R:c,k:d}=Lt(),h=!c&&(d.x||d.y),p=[yi(e),vi(e,i),wi(e,i)];return[n,t=>{const e={},n=h&&mt(r),s=n&&a();return K(p,(n=>{W(e,n(t,e)||{})})),Et(r,n),s&&s(),!l&&Et(o,0),e},i,e,s]},Si=(t,e,n,s,i)=>{let o=!1;const r=Vs(e,{}),[l,a,c,d,h]=bi(t),[p,u,m]=ui(d,c,r,(t=>{w({},t)})),[y,f,,g]=mi(t,e,m,c,d,i),v=t=>bt(t).some((e=>!!t[e])),w=(t,i)=>{if(n())return!1;const{pn:r,Dt:l,At:c,hn:d}=t,h=r||{},p=!!l||!o,y={It:Vs(e,h,p),pn:h,Dt:p};if(d)return f(y),!1;const g=i||u(W({},y,{At:c})),w=a(W({},y,{_n:m,Zt:g}));f(W({},y,{Zt:g,tn:w}));const b=v(g),x=v(w),E=b||x||!ms(h)||p;return o=!0,E&&s(t,{Zt:g,tn:w}),E};return[()=>{const{an:t,gt:e,Ot:n}=d,s=mt(t),i=[p(),l(),y()],o=n();return Et(e,s),o(),A(gt,i)},w,()=>({gn:m,bn:c}),{wn:d,yn:g},h]},kt=(t,e,n)=>{const{N:s}=Lt(),i=Le(t),o=i?t:t.target,r=zn(o);if(e&&!r){let r=!1;const l=[],a={},c=t=>{const e=mn(t),n=ie(ci);return n?n(e,!0):e},d=W({},s(),c(e)),[h,p,u]=rs(),[m,y,f]=rs(n),g=(t,e)=>{f(t,e),u(t,e)},[v,w,b,x,E]=Si(t,d,(()=>r),(({pn:t,Dt:e},{Zt:n,tn:s})=>{const{ft:i,Ct:o,xt:r,Ht:l,Et:a,dt:c}=n,{nn:d,sn:h,en:p,cn:u}=s;g("updated",[S,{updateHints:{sizeChanged:!!i,directionChanged:!!o,heightIntrinsicChanged:!!r,overflowEdgeChanged:!!d,overflowAmountChanged:!!h,overflowStyleChanged:!!p,scrollCoordinatesChanged:!!u,contentMutation:!!l,hostMutation:!!a,appear:!!c},changedOptions:t||{},force:!!e}])}),(t=>g("scroll",[S,t]))),L=t=>{ni(o),gt(l),r=!0,g("destroyed",[S,t]),p(),y()},S={options(t,e){if(t){const n=e?s():{},i=An(d,W(n,c(t)));ms(i)||(W(d,i),w({pn:i}))}return W({},d)},on:m,off:(t,e)=>{t&&e&&y(t,e)},state(){const{gn:t,bn:e}=b(),{ct:n}=t,{Vt:s,Rt:i,K:o,rn:l,ln:a,dn:c,Lt:d}=e;return W({},{overflowEdge:s,overflowAmount:i,overflowStyle:o,hasOverflow:l,scrollCoordinates:{start:d.D,end:d.M},padding:a,paddingAbsolute:c,directionRTL:n,destroyed:r})},elements(){const{vt:t,ht:e,ln:n,ot:s,bt:i,gt:o,Qt:r}=x.wn,{Xt:l,Gt:a}=x.yn,c=t=>{const{Pt:e,Ut:n,Tt:s}=t;return{scrollbar:s,track:n,handle:e}},d=t=>{const{Yt:e,Wt:n}=t,s=c(e[0]);return W({},s,{clone:()=>{const t=c(n());return w({hn:!0}),t}})};return W({},{target:t,host:e,padding:n||s,viewport:s,content:i||s,scrollOffsetElement:o,scrollEventElement:r,scrollbarHorizontal:d(l),scrollbarVertical:d(a)})},update:t=>w({Dt:t,At:!0}),destroy:A(L,!1),plugin:t=>a[bt(t)[0]]};return tt(l,[E]),si(o,S),Fn(Rn,kt,[S,h,a]),ei(x.wn.wt,!i&&t.cancel)?(L(!0),S):(tt(l,v()),g("initialized",[S]),S.update(),S)}return r};kt.plugin=t=>{const e=_t(t),n=e?t:[t],s=n.map((t=>Fn(t,kt)[0]));return ii(n),e?s:s[0]},kt.valid=t=>{const e=t&&t.elements,n=wt(e)&&e();return _e(n)&&!!zn(n.target)},kt.env=()=>{const{T:t,k:e,R:n,V:s,B:i,F:o,U:r,P:l,N:a,q:c}=Lt();return W({},{scrollbarsSize:t,scrollbarsOverlaid:e,scrollbarsHiding:n,scrollTimeline:s,staticDefaultInitialization:i,staticDefaultOptions:o,getDefaultInitialization:r,setDefaultInitialization:l,getDefaultOptions:a,setDefaultOptions:c})},kt.nonce=Jo;const Vn=!!document.getElementById("banner-wrapper");function Cs(t,e){document.addEventListener("click",(n=>{let s=document.getElementById(t),i=n.target;if(i instanceof Node){for(let t of e){let e=document.getElementById(t);if(e==i||e?.contains(i))return}s.classList.add("float-panel-closed")}}))}function xi(){const t=Qn();to(t)}function Ei(){eo(so())}function Zn(){const t=document.querySelector("body");t&&(kt({target:t,cancel:{nativeScrollbarsOverlaid:!0}},{scrollbars:{theme:"scrollbar-base scrollbar-auto py-1",autoHide:"move",autoHideDelay:500,autoHideSuspend:!1}}),document.querySelectorAll("pre").forEach((t=>{kt(t,{scrollbars:{theme:"scrollbar-base scrollbar-dark px-2",autoHide:"leave",autoHideDelay:500,autoHideSuspend:!1}})})))}function Ci(){const t=document.getElementById("banner");t?t.classList.remove("opacity-0","scale-105"):console.error("Failed to find the banner element")}function Wn(){xi(),Ei(),Zn(),Ci()}Cs("display-setting",["display-setting","display-settings-switch"]),Cs("nav-menu-panel",["nav-menu-panel","nav-menu-switch"]),Cs("search-panel",["search-panel","search-bar","search-switch"]),Wn(),document.addEventListener("astro:after-swap",Wn);const Ys=()=>{window.swup.hooks.on("link:click",(()=>{if(document.documentElement.style.setProperty("--content-delay","0ms"),!Vn)return;let t=.3*window.innerHeight-72-16,e=document.getElementById("navbar-wrapper");!e||!document.body.classList.contains("lg:is-home")||(document.body.scrollTop>=t||document.documentElement.scrollTop>=t)&&e.classList.add("navbar-hidden")})),window.swup.hooks.on("content:replace",Zn),window.swup.hooks.on("visit:start",(t=>{const e=document.querySelector("body");no(t.to.url,oo("/"))?e.classList.add("lg:is-home"):e.classList.remove("lg:is-home");const n=document.getElementById("page-height-extend");n&&n.classList.remove("hidden")})),window.swup.hooks.on("page:view",(()=>{const t=document.getElementById("page-height-extend");t&&t.classList.remove("hidden")})),window.swup.hooks.on("visit:end",(t=>{const e=document.getElementById("page-height-extend");e&&e.classList.add("hidden")}))};window?.swup?.hooks?Ys():document.addEventListener("swup:enable",Ys);let We=document.getElementById("back-to-top-btn"),Ue=document.getElementById("navbar-wrapper");function _i(){if(We&&(document.body.scrollTop>600||document.documentElement.scrollTop>600?We.classList.remove("hide"):We.classList.add("hide")),Vn&&Ue){let t=.3*window.innerHeight-72-16;document.body.classList.contains("lg:is-home")&&window.innerWidth>=1024&&(t=.6*window.innerHeight-72-16),document.body.scrollTop>=t||document.documentElement.scrollTop>=t?Ue.classList.add("navbar-hidden"):Ue.classList.remove("navbar-hidden")}}function Li(){"dark"===localStorage.theme?(document.documentElement.classList.remove("dark"),localStorage.theme="light"):(document.documentElement.classList.add("dark"),localStorage.theme="dark")}function Un(){let t=document.getElementById("scheme-switch");t&&t.addEventListener("click",(function(){Li()}));let e=document.getElementById("display-settings-switch");e&&e.addEventListener("click",(function(){let t=document.getElementById("display-setting");t&&t.classList.toggle("float-panel-closed")}));let n=document.getElementById("nav-menu-switch");n&&n.addEventListener("click",(function(){let t=document.getElementById("nav-menu-panel");t&&t.classList.toggle("float-panel-closed")}))}window.onscroll=_i,Un(),document.addEventListener("astro:after-swap",(()=>{Un()}),{once:!1});class Oi extends HTMLElement{constructor(){if(super(),"true"!==this.dataset.isCollapsed)return;const t=this.dataset.id,e=this.querySelector(".expand-btn"),n=this.querySelector(`#${t}`);e.addEventListener("click",(()=>{n.classList.remove("collapsed"),e.classList.add("hidden")}))}}customElements.define("widget-layout",Oi); \ No newline at end of file diff --git a/_astro/index.modern.CkIAsQri.js b/_astro/index.modern.CkIAsQri.js new file mode 100644 index 0000000..f6d9dfe --- /dev/null +++ b/_astro/index.modern.CkIAsQri.js @@ -0,0 +1 @@ +function o(){return o=Object.assign?Object.assign.bind():function(r){for(var n=1;nString(r).split(".").map((r=>String(parseInt(r||"0",10)))).concat(["0","0"]).slice(0,3).join(".");class y{constructor(){this.isSwupPlugin=!0,this.swup=void 0,this.version=void 0,this.requires={},this.handlersToUnregister=[]}mount(){}unmount(){this.handlersToUnregister.forEach((r=>r())),this.handlersToUnregister=[]}_beforeMount(){if(!this.name)throw new Error("You must define a name of plugin when creating a class.")}_afterUnmount(){}_checkRequirements(){return"object"!=typeof this.requires||Object.entries(this.requires).forEach((([r,n])=>{if(!function(r,n,e){const t=function(r,n){var e;if("swup"===r)return null!=(e=n.version)?e:"";{var t;const e=n.findPlugin(r);return null!=(t=e?.version)?t:""}}(r,e);return!!t&&(o=t,n.every((r=>{const[,n,e]=r.match(/^([\D]+)?(.*)$/)||[];var t,s;return((r,n)=>{const e={"":r=>0===r,">":r=>r>0,">=":r=>r>=0,"<":r=>r<0,"<=":r=>r<=0};return(e[n]||e[""])(r)})((s=e,t=d(t=o),s=d(s),t.localeCompare(s,void 0,{numeric:!0})),n||">=")})));var o}(r,n=Array.isArray(n)?n:[n],this.swup)){const e=`${r} ${n.join(", ")}`;throw new Error(`Plugin version mismatch: ${this.name} requires ${e}`)}})),!0}on(r,n,e={}){var t;n=!(t=n).name.startsWith("bound ")||t.hasOwnProperty("prototype")?n.bind(this):n;const o=this.swup.hooks.on(r,n,e);return this.handlersToUnregister.push(o),o}once(r,n,e={}){return this.on(r,n,o({},e,{once:!0}))}before(r,n,e={}){return this.on(r,n,o({},e,{before:!0}))}replace(r,n,e={}){return this.on(r,n,o({},e,{replace:!0}))}off(r,n){return this.swup.hooks.off(r,n)}}export{y as e}; \ No newline at end of file diff --git a/_astro/jetbrains-mono-cyrillic-wght-italic.n46wCxo2.woff2 b/_astro/jetbrains-mono-cyrillic-wght-italic.n46wCxo2.woff2 new file mode 100644 index 0000000..d5a7da5 Binary files /dev/null and b/_astro/jetbrains-mono-cyrillic-wght-italic.n46wCxo2.woff2 differ diff --git a/_astro/jetbrains-mono-cyrillic-wght-normal.BptiBwAt.woff2 b/_astro/jetbrains-mono-cyrillic-wght-normal.BptiBwAt.woff2 new file mode 100644 index 0000000..9c5a157 Binary files /dev/null and b/_astro/jetbrains-mono-cyrillic-wght-normal.BptiBwAt.woff2 differ diff --git a/_astro/jetbrains-mono-greek-wght-italic.MM8eZ3ga.woff2 b/_astro/jetbrains-mono-greek-wght-italic.MM8eZ3ga.woff2 new file mode 100644 index 0000000..487e6fa Binary files /dev/null and b/_astro/jetbrains-mono-greek-wght-italic.MM8eZ3ga.woff2 differ diff --git a/_astro/jetbrains-mono-greek-wght-normal.BW1JPxja.woff2 b/_astro/jetbrains-mono-greek-wght-normal.BW1JPxja.woff2 new file mode 100644 index 0000000..75e9df4 Binary files /dev/null and b/_astro/jetbrains-mono-greek-wght-normal.BW1JPxja.woff2 differ diff --git a/_astro/jetbrains-mono-latin-ext-wght-italic.BmpnCKuU.woff2 b/_astro/jetbrains-mono-latin-ext-wght-italic.BmpnCKuU.woff2 new file mode 100644 index 0000000..0de9808 Binary files /dev/null and b/_astro/jetbrains-mono-latin-ext-wght-italic.BmpnCKuU.woff2 differ diff --git a/_astro/jetbrains-mono-latin-ext-wght-normal.Com2F4yK.woff2 b/_astro/jetbrains-mono-latin-ext-wght-normal.Com2F4yK.woff2 new file mode 100644 index 0000000..06b0c9e Binary files /dev/null and b/_astro/jetbrains-mono-latin-ext-wght-normal.Com2F4yK.woff2 differ diff --git a/_astro/jetbrains-mono-latin-wght-italic.Bxk8Slts.woff2 b/_astro/jetbrains-mono-latin-wght-italic.Bxk8Slts.woff2 new file mode 100644 index 0000000..b13c8f0 Binary files /dev/null and b/_astro/jetbrains-mono-latin-wght-italic.Bxk8Slts.woff2 differ diff --git a/_astro/jetbrains-mono-latin-wght-normal.Ajscav9D.woff2 b/_astro/jetbrains-mono-latin-wght-normal.Ajscav9D.woff2 new file mode 100644 index 0000000..9d41658 Binary files /dev/null and b/_astro/jetbrains-mono-latin-wght-normal.Ajscav9D.woff2 differ diff --git a/_astro/jetbrains-mono-vietnamese-wght-italic.BG2XwtC0.woff2 b/_astro/jetbrains-mono-vietnamese-wght-italic.BG2XwtC0.woff2 new file mode 100644 index 0000000..c22ef9a Binary files /dev/null and b/_astro/jetbrains-mono-vietnamese-wght-italic.BG2XwtC0.woff2 differ diff --git a/_astro/jetbrains-mono-vietnamese-wght-normal.By-yputv.woff2 b/_astro/jetbrains-mono-vietnamese-wght-normal.By-yputv.woff2 new file mode 100644 index 0000000..c8b0429 Binary files /dev/null and b/_astro/jetbrains-mono-vietnamese-wght-normal.By-yputv.woff2 differ diff --git a/_astro/page.Pi52Aj-6.js b/_astro/page.Pi52Aj-6.js new file mode 100644 index 0000000..d02407e --- /dev/null +++ b/_astro/page.Pi52Aj-6.js @@ -0,0 +1 @@ +const __vite__mapDeps=(e,t=__vite__mapDeps,i=t.f||(t.f=["_astro/SwupA11yPlugin.CbqqmqBu.js","_astro/Swup.ytUFgklH.js","_astro/index.modern.CkIAsQri.js","_astro/SwupPreloadPlugin.CIXicyY9.js","_astro/SwupScrollPlugin.DbO9qDqe.js","_astro/SwupHeadPlugin.FjGODCox.js","_astro/SwupScriptsPlugin.o5PkFIdr.js"]))=>e.map((e=>i[e]));import{_ as i}from"./preload-helper.BiBI96sQ.js";function r(e){return JSON.parse(e,w)}function w(e,t){if(Array.isArray(t)&&2===t.length&&"string"==typeof t[1]){const e=t[0];if(t=t[1],":regex:"===e){const e=t.match(/\/(.*?)\/([a-z]*)?$/i)||[];return new RegExp(e[1],e[2]||"")}if(":function:"===e)return new Function(`return (${t}).apply(this, arguments);`)}return t}function s(e,{timeoutFallback:t=1e3}={}){"requestIdleCallback"in window?window.requestIdleCallback((()=>e())):setTimeout((()=>e()),t)}function p(e){"complete"===document.readyState?setTimeout((()=>e()),0):window.addEventListener("load",(()=>e()))}function l(e,{delayAfterLoad:t=0}={}){p((()=>{t>0?setTimeout((()=>s(e)),t):s(e)}))}async function f(){const[e,t,n,s,a,o]=await Promise.all([i((()=>import("./Swup.ytUFgklH.js").then((e=>e.S))),[]).then((e=>e.default)),i((()=>import("./SwupA11yPlugin.CbqqmqBu.js")),__vite__mapDeps([0,1,2])).then((e=>e.default)),i((()=>import("./SwupPreloadPlugin.CIXicyY9.js")),__vite__mapDeps([3,2,1])).then((e=>e.default)),i((()=>import("./SwupScrollPlugin.DbO9qDqe.js")),__vite__mapDeps([4,2,1])).then((e=>e.default)),i((()=>import("./SwupHeadPlugin.FjGODCox.js")),__vite__mapDeps([5,2])).then((e=>e.default)),i((()=>import("./SwupScriptsPlugin.o5PkFIdr.js")),__vite__mapDeps([6,2])).then((e=>e.default))]),u=new e({animationSelector:'[class*="transition-swup-"]',containers:["main"],cache:!0,plugins:[new t(r("{}")),new n(r('{"preloadHoveredLinks":true,"preloadVisibleLinks":false}')),new s(r("{}")),new a(r('{"awaitAssets":true}')),new o(r("{}"))]});window.swup=u}l(f); \ No newline at end of file diff --git a/_astro/photoswipe.esm.CKijkUPa.js b/_astro/photoswipe.esm.CKijkUPa.js new file mode 100644 index 0000000..8b36806 --- /dev/null +++ b/_astro/photoswipe.esm.CKijkUPa.js @@ -0,0 +1 @@ +function f(t,i,e){const s=document.createElement(i);return t&&(s.className=t),e&&e.appendChild(s),s}function p(t,i){return t.x=i.x,t.y=i.y,void 0!==i.id&&(t.id=i.id),t}function M(t){t.x=Math.round(t.x),t.y=Math.round(t.y)}function A(t,i){const e=Math.abs(t.x-i.x),s=Math.abs(t.y-i.y);return Math.sqrt(e*e+s*s)}function x(t,i){return t.x===i.x&&t.y===i.y}function I(t,i,e){return Math.min(Math.max(t,i),e)}function b(t,i,e){let s=`translate3d(${t}px,${i||0}px,0)`;return void 0!==e&&(s+=` scale3d(${e},${e},1)`),s}function y(t,i,e,s){t.style.transform=b(i,e,s)}const $="cubic-bezier(.4,0,.22,1)";function R(t,i,e,s){t.style.transition=i?`${i} ${e}ms ${s||$}`:"none"}function L(t,i,e){t.style.width="number"==typeof i?`${i}px`:i,t.style.height="number"==typeof e?`${e}px`:e}function U(t){R(t)}function q(t){return"decode"in t?t.decode().catch((()=>{})):t.complete?Promise.resolve(t):new Promise(((i,e)=>{t.onload=()=>i(t),t.onerror=e}))}const _={IDLE:"idle",LOADING:"loading",LOADED:"loaded",ERROR:"error"};function G(t){return"button"in t&&1===t.button||t.ctrlKey||t.metaKey||t.altKey||t.shiftKey}function K(t,i,e=document){let s=[];if(t instanceof Element)s=[t];else if(t instanceof NodeList||Array.isArray(t))s=Array.from(t);else{const n="string"==typeof t?t:i;n&&(s=Array.from(e.querySelectorAll(n)))}return s}function C(){return!(!navigator.vendor||!navigator.vendor.match(/apple/i))}let F=!1;try{window.addEventListener("test",null,Object.defineProperty({},"passive",{get:()=>{F=!0}}))}catch{}class X{constructor(){this._pool=[]}add(t,i,e,s){this._toggleListener(t,i,e,s)}remove(t,i,e,s){this._toggleListener(t,i,e,s,!0)}removeAll(){this._pool.forEach((t=>{this._toggleListener(t.target,t.type,t.listener,t.passive,!0,!0)})),this._pool=[]}_toggleListener(t,i,e,s,n,o){if(!t)return;const a=n?"removeEventListener":"addEventListener";i.split(" ").forEach((i=>{if(i){o||(n?this._pool=this._pool.filter((s=>s.type!==i||s.listener!==e||s.target!==t)):this._pool.push({target:t,type:i,listener:e,passive:s}));const h=!!F&&{passive:s||!1};t[a](i,e,h)}}))}}function B(t,i){if(t.getViewportSizeFn){const e=t.getViewportSizeFn(t,i);if(e)return e}return{x:document.documentElement.clientWidth,y:window.innerHeight}}function S(t,i,e,s,n){let o=0;if(i.paddingFn)o=i.paddingFn(e,s,n)[t];else if(i.padding)o=i.padding[t];else{const e="padding"+t[0].toUpperCase()+t.slice(1);i[e]&&(o=i[e])}return Number(o)||0}function N(t,i,e,s){return{x:i.x-S("left",t,i,e,s)-S("right",t,i,e,s),y:i.y-S("top",t,i,e,s)-S("bottom",t,i,e,s)}}class Y{constructor(t){this.slide=t,this.currZoomLevel=1,this.center={x:0,y:0},this.max={x:0,y:0},this.min={x:0,y:0}}update(t){this.currZoomLevel=t,this.slide.width?(this._updateAxis("x"),this._updateAxis("y"),this.slide.pswp.dispatch("calcBounds",{slide:this.slide})):this.reset()}_updateAxis(t){const{pswp:i}=this.slide,e=this.slide["x"===t?"width":"height"]*this.currZoomLevel,s=S("x"===t?"left":"top",i.options,i.viewportSize,this.slide.data,this.slide.index),n=this.slide.panAreaSize[t];this.center[t]=Math.round((n-e)/2)+s,this.max[t]=e>n?Math.round(n-e)+s:this.center[t],this.min[t]=e>n?s:this.center[t]}reset(){this.center.x=0,this.center.y=0,this.max.x=0,this.max.y=0,this.min.x=0,this.min.y=0}correctPan(t,i){return I(i,this.max[t],this.min[t])}}const T=4e3;class H{constructor(t,i,e,s){this.pswp=s,this.options=t,this.itemData=i,this.index=e,this.panAreaSize=null,this.elementSize=null,this.fit=1,this.fill=1,this.vFill=1,this.initial=1,this.secondary=1,this.max=1,this.min=1}update(t,i,e){const s={x:t,y:i};this.elementSize=s,this.panAreaSize=e;const n=e.x/s.x,o=e.y/s.y;this.fit=Math.min(1,no?n:o),this.vFill=Math.min(1,o),this.initial=this._getInitial(),this.secondary=this._getSecondary(),this.max=Math.max(this.initial,this.secondary,this._getMax()),this.min=Math.min(this.fit,this.initial,this.secondary),this.pswp&&this.pswp.dispatch("zoomLevelsUpdate",{zoomLevels:this,slideData:this.itemData})}_parseZoomLevelOption(t){const i=t+"ZoomLevel",e=this.options[i];if(e)return"function"==typeof e?e(this):"fill"===e?this.fill:"fit"===e?this.fit:Number(e)}_getSecondary(){let t=this._parseZoomLevelOption("secondary");return t||(t=Math.min(1,3*this.fit),this.elementSize&&t*this.elementSize.x>T&&(t=T/this.elementSize.x),t)}_getInitial(){return this._parseZoomLevelOption("initial")||this.fit}_getMax(){return this._parseZoomLevelOption("max")||Math.max(1,4*this.fit)}}class j{constructor(t,i,e){this.data=t,this.index=i,this.pswp=e,this.isActive=i===e.currIndex,this.currentResolution=0,this.panAreaSize={x:0,y:0},this.pan={x:0,y:0},this.isFirstSlide=this.isActive&&!e.opener.isOpen,this.zoomLevels=new H(e.options,t,i,e),this.pswp.dispatch("gettingData",{slide:this,data:this.data,index:i}),this.content=this.pswp.contentLoader.getContentBySlide(this),this.container=f("pswp__zoom-wrap","div"),this.holderElement=null,this.currZoomLevel=1,this.width=this.content.width,this.height=this.content.height,this.heavyAppended=!1,this.bounds=new Y(this),this.prevDisplayedWidth=-1,this.prevDisplayedHeight=-1,this.pswp.dispatch("slideInit",{slide:this})}setIsActive(t){t&&!this.isActive?this.activate():!t&&this.isActive&&this.deactivate()}append(t){this.holderElement=t,this.container.style.transformOrigin="0 0",this.data&&(this.calculateSize(),this.load(),this.updateContentSize(),this.appendHeavy(),this.holderElement.appendChild(this.container),this.zoomAndPanToInitial(),this.pswp.dispatch("firstZoomPan",{slide:this}),this.applyCurrentZoomPan(),this.pswp.dispatch("afterSetContent",{slide:this}),this.isActive&&this.activate())}load(){this.content.load(!1),this.pswp.dispatch("slideLoad",{slide:this})}appendHeavy(){const{pswp:t}=this;this.heavyAppended||!t.opener.isOpen||t.mainScroll.isShifted()||(this.isActive,0)||this.pswp.dispatch("appendHeavy",{slide:this}).defaultPrevented||(this.heavyAppended=!0,this.content.append(),this.pswp.dispatch("appendHeavyContent",{slide:this}))}activate(){this.isActive=!0,this.appendHeavy(),this.content.activate(),this.pswp.dispatch("slideActivate",{slide:this})}deactivate(){this.isActive=!1,this.content.deactivate(),this.currZoomLevel!==this.zoomLevels.initial&&this.calculateSize(),this.currentResolution=0,this.zoomAndPanToInitial(),this.applyCurrentZoomPan(),this.updateContentSize(),this.pswp.dispatch("slideDeactivate",{slide:this})}destroy(){this.content.hasSlide=!1,this.content.remove(),this.container.remove(),this.pswp.dispatch("slideDestroy",{slide:this})}resize(){this.currZoomLevel!==this.zoomLevels.initial&&this.isActive?(this.calculateSize(),this.bounds.update(this.currZoomLevel),this.panTo(this.pan.x,this.pan.y)):(this.calculateSize(),this.currentResolution=0,this.zoomAndPanToInitial(),this.applyCurrentZoomPan(),this.updateContentSize())}updateContentSize(t){const i=this.currentResolution||this.zoomLevels.initial;if(!i)return;const e=Math.round(this.width*i)||this.pswp.viewportSize.x,s=Math.round(this.height*i)||this.pswp.viewportSize.y;!this.sizeChanged(e,s)&&!t||this.content.setDisplayedSize(e,s)}sizeChanged(t,i){return(t!==this.prevDisplayedWidth||i!==this.prevDisplayedHeight)&&(this.prevDisplayedWidth=t,this.prevDisplayedHeight=i,!0)}getPlaceholderElement(){var t;return null===(t=this.content.placeholder)||void 0===t?void 0:t.element}zoomTo(t,i,e,s){const{pswp:n}=this;if(!this.isZoomable()||n.mainScroll.isShifted())return;n.dispatch("beforeZoomTo",{destZoomLevel:t,centerPoint:i,transitionDuration:e}),n.animations.stopAllPan();const o=this.currZoomLevel;s||(t=I(t,this.zoomLevels.min,this.zoomLevels.max)),this.setZoomLevel(t),this.pan.x=this.calculateZoomToPanOffset("x",i,o),this.pan.y=this.calculateZoomToPanOffset("y",i,o),M(this.pan);const a=()=>{this._setResolution(t),this.applyCurrentZoomPan()};e?n.animations.startTransition({isPan:!0,name:"zoomTo",target:this.container,transform:this.getCurrentTransform(),onComplete:a,duration:e,easing:n.options.easing}):a()}toggleZoom(t){this.zoomTo(this.currZoomLevel===this.zoomLevels.initial?this.zoomLevels.secondary:this.zoomLevels.initial,t,this.pswp.options.zoomAnimationDuration)}setZoomLevel(t){this.currZoomLevel=t,this.bounds.update(this.currZoomLevel)}calculateZoomToPanOffset(t,i,e){if(this.bounds.max[t]-this.bounds.min[t]==0)return this.bounds.center[t];i||(i=this.pswp.getViewportCenterPoint()),e||(e=this.zoomLevels.initial);const s=this.currZoomLevel/e;return this.bounds.correctPan(t,(this.pan[t]-i[t])*s+i[t])}panTo(t,i){this.pan.x=this.bounds.correctPan("x",t),this.pan.y=this.bounds.correctPan("y",i),this.applyCurrentZoomPan()}isPannable(){return!!this.width&&this.currZoomLevel>this.zoomLevels.fit}isZoomable(){return!!this.width&&this.content.isZoomable()}applyCurrentZoomPan(){this._applyZoomTransform(this.pan.x,this.pan.y,this.currZoomLevel),this===this.pswp.currSlide&&this.pswp.dispatch("zoomPanUpdate",{slide:this})}zoomAndPanToInitial(){this.currZoomLevel=this.zoomLevels.initial,this.bounds.update(this.currZoomLevel),p(this.pan,this.bounds.center),this.pswp.dispatch("initialZoomPan",{slide:this})}_applyZoomTransform(t,i,e){e/=this.currentResolution||this.zoomLevels.initial,y(this.container,t,i,e)}calculateSize(){const{pswp:t}=this;p(this.panAreaSize,N(t.options,t.viewportSize,this.data,this.index)),this.zoomLevels.update(this.width,this.height,this.panAreaSize),t.dispatch("calcSlideSize",{slide:this})}getCurrentTransform(){const t=this.currZoomLevel/(this.currentResolution||this.zoomLevels.initial);return b(this.pan.x,this.pan.y,t)}_setResolution(t){t!==this.currentResolution&&(this.currentResolution=t,this.updateContentSize(),this.pswp.dispatch("resolutionChanged"))}}const Q=.35,J=.6,z=.4,E=.5;function tt(t,i){return t*i/(1-i)}class it{constructor(t){this.gestures=t,this.pswp=t.pswp,this.startPan={x:0,y:0}}start(){this.pswp.currSlide&&p(this.startPan,this.pswp.currSlide.pan),this.pswp.animations.stopAll()}change(){const{p1:t,prevP1:i,dragAxis:e}=this.gestures,{currSlide:s}=this.pswp;if("y"===e&&this.pswp.options.closeOnVerticalDrag&&s&&s.currZoomLevel<=s.zoomLevels.fit&&!this.gestures.isMultitouch){const e=s.pan.y+(t.y-i.y);if(!this.pswp.dispatch("verticalDrag",{panY:e}).defaultPrevented){this._setPanWithFriction("y",e,J);const t=1-Math.abs(this._getVerticalDragRatio(s.pan.y));this.pswp.applyBgOpacity(t),s.applyCurrentZoomPan()}}else this._panOrMoveMainScroll("x")||(this._panOrMoveMainScroll("y"),s&&(M(s.pan),s.applyCurrentZoomPan()))}end(){const{velocity:t}=this.gestures,{mainScroll:i,currSlide:e}=this.pswp;let s=0;if(this.pswp.animations.stopAll(),i.isShifted()){const e=(i.x-i.getCurrSlideX())/this.pswp.viewportSize.x;t.x<-E&&e<0||t.x<.1&&e<-.5?(s=1,t.x=Math.min(t.x,0)):(t.x>E&&e>0||t.x>-.1&&e>.5)&&(s=-1,t.x=Math.max(t.x,0)),i.moveIndexBy(s,!0,t.x)}e&&e.currZoomLevel>e.zoomLevels.max||this.gestures.isMultitouch?this.gestures.zoomLevels.correctZoomPan(!0):(this._finishPanGestureForAxis("x"),this._finishPanGestureForAxis("y"))}_finishPanGestureForAxis(t){const{velocity:i}=this.gestures,{currSlide:e}=this.pswp;if(!e)return;const{pan:s,bounds:n}=e,o=s[t],a=this.pswp.bgOpacity<1&&"y"===t,h=o+tt(i[t],.995);if(a){const t=this._getVerticalDragRatio(o),i=this._getVerticalDragRatio(h);if(t<0&&i<-z||t>0&&i>z)return void this.pswp.close()}const r=n.correctPan(t,h);if(o===r)return;const l=r===h?1:.82,p=this.pswp.bgOpacity,d=r-o;this.pswp.animations.startSpring({name:"panGesture"+t,isPan:!0,start:o,end:r,velocity:i[t],dampingRatio:l,onUpdate:i=>{if(a&&this.pswp.bgOpacity<1){const t=1-(r-i)/d;this.pswp.applyBgOpacity(I(p+(1-p)*t,0,1))}s[t]=Math.floor(i),e.applyCurrentZoomPan()}})}_panOrMoveMainScroll(t){const{p1:i,dragAxis:e,prevP1:s,isMultitouch:n}=this.gestures,{currSlide:o,mainScroll:a}=this.pswp,h=i[t]-s[t],r=a.x+h;if(!h||!o)return!1;if("x"===t&&!o.isPannable()&&!n)return a.moveTo(r,!0),!0;const{bounds:l}=o,p=o.pan[t]+h;if(this.pswp.options.allowPanToNext&&"x"===e&&"x"===t&&!n){const i=a.getCurrSlideX(),e=a.x-i,s=h>0,n=!s;if(p>l.min[t]&&s){if(l.min[t]<=this.startPan[t])return a.moveTo(r,!0),!0;this._setPanWithFriction(t,p)}else if(p0)return a.moveTo(Math.max(r,i),!0),!0;if(e<0)return a.moveTo(Math.min(r,i),!0),!0}else this._setPanWithFriction(t,p)}else"y"===t?!a.isShifted()&&l.min.y!==l.max.y&&this._setPanWithFriction(t,p):this._setPanWithFriction(t,p);return!1}_getVerticalDragRatio(t){var i,e;return(t-(null!==(i=null===(e=this.pswp.currSlide)||void 0===e?void 0:e.bounds.center.y)&&void 0!==i?i:0))/(this.pswp.viewportSize.y/3)}_setPanWithFriction(t,i,e){const{currSlide:s}=this.pswp;if(!s)return;const{pan:n,bounds:o}=s;if(o.correctPan(t,i)!==i||e){const s=Math.round(i-n[t]);n[t]+=s*(e||Q)}else n[t]=i}}const et=.05,st=.15;function O(t,i,e){return t.x=(i.x+e.x)/2,t.y=(i.y+e.y)/2,t}class nt{constructor(t){this.gestures=t,this._startPan={x:0,y:0},this._startZoomPoint={x:0,y:0},this._zoomPoint={x:0,y:0},this._wasOverFitZoomLevel=!1,this._startZoomLevel=1}start(){const{currSlide:t}=this.gestures.pswp;t&&(this._startZoomLevel=t.currZoomLevel,p(this._startPan,t.pan)),this.gestures.pswp.animations.stopAllPan(),this._wasOverFitZoomLevel=!1}change(){const{p1:t,startP1:i,p2:e,startP2:s,pswp:n}=this.gestures,{currSlide:o}=n;if(!o)return;const a=o.zoomLevels.min,h=o.zoomLevels.max;if(!o.isZoomable()||n.mainScroll.isShifted())return;O(this._startZoomPoint,i,s),O(this._zoomPoint,t,e);let r=1/A(i,s)*A(t,e)*this._startZoomLevel;if(r>o.zoomLevels.initial+o.zoomLevels.initial/15&&(this._wasOverFitZoomLevel=!0),rh&&(r=h+(r-h)*et);o.pan.x=this._calculatePanForZoomLevel("x",r),o.pan.y=this._calculatePanForZoomLevel("y",r),o.setZoomLevel(r),o.applyCurrentZoomPan()}end(){const{pswp:t}=this.gestures,{currSlide:i}=t;(!i||i.currZoomLevele.zoomLevels.max?n=e.zoomLevels.max:(o=!1,n=s);const a=i.bgOpacity,h=i.bgOpacity<1,r=p({x:0,y:0},e.pan);let l=p({x:0,y:0},r);t&&(this._zoomPoint.x=0,this._zoomPoint.y=0,this._startZoomPoint.x=0,this._startZoomPoint.y=0,this._startZoomLevel=s,p(this._startPan,r)),o&&(l={x:this._calculatePanForZoomLevel("x",n),y:this._calculatePanForZoomLevel("y",n)}),e.setZoomLevel(n),l={x:e.bounds.correctPan("x",l.x),y:e.bounds.correctPan("y",l.y)},e.setZoomLevel(s);const d=!x(l,r);if(!d&&!o&&!h)return e._setResolution(n),void e.applyCurrentZoomPan();i.animations.stopAllPan(),i.animations.startSpring({isPan:!0,start:0,end:1e3,velocity:0,dampingRatio:1,naturalFrequency:40,onUpdate:t=>{if(t/=1e3,d||o){if(d&&(e.pan.x=r.x+(l.x-r.x)*t,e.pan.y=r.y+(l.y-r.y)*t),o){const i=s+(n-s)*t;e.setZoomLevel(i)}e.applyCurrentZoomPan()}h&&i.bgOpacity<1&&i.applyBgOpacity(I(a+(1-a)*t,0,1))},onComplete:()=>{e._setResolution(n),e.applyCurrentZoomPan()}})}}function Z(t){return!!t.target.closest(".pswp__container")}class ot{constructor(t){this.gestures=t}click(t,i){const e=i.target.classList,s=e.contains("pswp__img"),n=e.contains("pswp__item")||e.contains("pswp__zoom-wrap");s?this._doClickOrTapAction("imageClick",t,i):n&&this._doClickOrTapAction("bgClick",t,i)}tap(t,i){Z(i)&&this._doClickOrTapAction("tap",t,i)}doubleTap(t,i){Z(i)&&this._doClickOrTapAction("doubleTap",t,i)}_doClickOrTapAction(t,i,e){var s;const{pswp:n}=this.gestures,{currSlide:o}=n,a=t+"Action",h=n.options[a];if(!n.dispatch(a,{point:i,originalEvent:e}).defaultPrevented){if("function"==typeof h)return void h.call(n,i,e);switch(h){case"close":case"next":n[h]();break;case"zoom":o?.toggleZoom(i);break;case"zoom-or-close":null!=o&&o.isZoomable()&&o.zoomLevels.secondary!==o.zoomLevels.initial?o.toggleZoom(i):n.options.clickToCloseNonZoomable&&n.close();break;case"toggle-controls":null===(s=this.gestures.pswp.element)||void 0===s||s.classList.toggle("pswp--ui-visible")}}}}const rt=10,at=300,ht=25;class lt{constructor(t){this.pswp=t,this.dragAxis=null,this.p1={x:0,y:0},this.p2={x:0,y:0},this.prevP1={x:0,y:0},this.prevP2={x:0,y:0},this.startP1={x:0,y:0},this.startP2={x:0,y:0},this.velocity={x:0,y:0},this._lastStartP1={x:0,y:0},this._intervalP1={x:0,y:0},this._numActivePoints=0,this._ongoingPointers=[],this._touchEventEnabled="ontouchstart"in window,this._pointerEventEnabled=!!window.PointerEvent,this.supportsTouch=this._touchEventEnabled||this._pointerEventEnabled&&navigator.maxTouchPoints>1,this._numActivePoints=0,this._intervalTime=0,this._velocityCalculated=!1,this.isMultitouch=!1,this.isDragging=!1,this.isZooming=!1,this.raf=null,this._tapTimer=null,this.supportsTouch||(t.options.allowPanToNext=!1),this.drag=new it(this),this.zoomLevels=new nt(this),this.tapHandler=new ot(this),t.on("bindEvents",(()=>{t.events.add(t.scrollWrap,"click",this._onClick.bind(this)),this._pointerEventEnabled?this._bindEvents("pointer","down","up","cancel"):this._touchEventEnabled?(this._bindEvents("touch","start","end","cancel"),t.scrollWrap&&(t.scrollWrap.ontouchmove=()=>{},t.scrollWrap.ontouchend=()=>{})):this._bindEvents("mouse","down","up")}))}_bindEvents(t,i,e,s){const{pswp:n}=this,{events:o}=n,a=s?t+s:"";o.add(n.scrollWrap,t+i,this.onPointerDown.bind(this)),o.add(window,t+"move",this.onPointerMove.bind(this)),o.add(window,t+e,this.onPointerUp.bind(this)),a&&o.add(n.scrollWrap,a,this.onPointerUp.bind(this))}onPointerDown(t){const i="mousedown"===t.type||"mouse"===t.pointerType;if(i&&t.button>0)return;const{pswp:e}=this;e.opener.isOpen?e.dispatch("pointerDown",{originalEvent:t}).defaultPrevented||(i&&(e.mouseDetected(),this._preventPointerEventBehaviour(t,"down")),e.animations.stopAll(),this._updatePoints(t,"down"),1===this._numActivePoints&&(this.dragAxis=null,p(this.startP1,this.p1)),this._numActivePoints>1?(this._clearTapTimer(),this.isMultitouch=!0):this.isMultitouch=!1):t.preventDefault()}onPointerMove(t){this._preventPointerEventBehaviour(t,"move"),this._numActivePoints&&(this._updatePoints(t,"move"),!this.pswp.dispatch("pointerMove",{originalEvent:t}).defaultPrevented&&(1!==this._numActivePoints||this.isDragging?this._numActivePoints>1&&!this.isZooming&&(this._finishDrag(),this.isZooming=!0,this._updateStartPoints(),this.zoomLevels.start(),this._rafStopLoop(),this._rafRenderLoop()):(this.dragAxis||this._calculateDragDirection(),this.dragAxis&&!this.isDragging&&(this.isZooming&&(this.isZooming=!1,this.zoomLevels.end()),this.isDragging=!0,this._clearTapTimer(),this._updateStartPoints(),this._intervalTime=Date.now(),this._velocityCalculated=!1,p(this._intervalP1,this.p1),this.velocity.x=0,this.velocity.y=0,this.drag.start(),this._rafStopLoop(),this._rafRenderLoop()))))}_finishDrag(){this.isDragging&&(this.isDragging=!1,this._velocityCalculated||this._updateVelocity(!0),this.drag.end(),this.dragAxis=null)}onPointerUp(t){this._numActivePoints&&(this._updatePoints(t,"up"),!this.pswp.dispatch("pointerUp",{originalEvent:t}).defaultPrevented&&(0===this._numActivePoints&&(this._rafStopLoop(),this.isDragging?this._finishDrag():!this.isZooming&&!this.isMultitouch&&this._finishTap(t)),this._numActivePoints<2&&this.isZooming&&(this.isZooming=!1,this.zoomLevels.end(),1===this._numActivePoints&&(this.dragAxis=null,this._updateStartPoints()))))}_rafRenderLoop(){(this.isDragging||this.isZooming)&&(this._updateVelocity(),this.isDragging?x(this.p1,this.prevP1)||this.drag.change():(!x(this.p1,this.prevP1)||!x(this.p2,this.prevP2))&&this.zoomLevels.change(),this._updatePrevPoints(),this.raf=requestAnimationFrame(this._rafRenderLoop.bind(this)))}_updateVelocity(t){const i=Date.now(),e=i-this._intervalTime;e<50&&!t||(this.velocity.x=this._getVelocity("x",e),this.velocity.y=this._getVelocity("y",e),this._intervalTime=i,p(this._intervalP1,this.p1),this._velocityCalculated=!0)}_finishTap(t){const{mainScroll:i}=this.pswp;if(i.isShifted())return void i.moveIndexBy(0,!0);if(t.type.indexOf("cancel")>0)return;if("mouseup"===t.type||"mouse"===t.pointerType)return void this.tapHandler.click(this.startP1,t);const e=this.pswp.options.doubleTapAction?at:0;this._tapTimer?(this._clearTapTimer(),A(this._lastStartP1,this.startP1)<25&&this.tapHandler.doubleTap(this.startP1,t)):(p(this._lastStartP1,this.startP1),this._tapTimer=setTimeout((()=>{this.tapHandler.tap(this.startP1,t),this._clearTapTimer()}),e))}_clearTapTimer(){this._tapTimer&&(clearTimeout(this._tapTimer),this._tapTimer=null)}_getVelocity(t,i){const e=this.p1[t]-this._intervalP1[t];return Math.abs(e)>1&&i>5?e/i:0}_rafStopLoop(){this.raf&&(cancelAnimationFrame(this.raf),this.raf=null)}_preventPointerEventBehaviour(t,i){this.pswp.applyFilters("preventPointerEvent",!0,t,i)&&t.preventDefault()}_updatePoints(t,i){if(this._pointerEventEnabled){const e=t,s=this._ongoingPointers.findIndex((t=>t.id===e.pointerId));"up"===i&&s>-1?this._ongoingPointers.splice(s,1):"down"===i&&-1===s?this._ongoingPointers.push(this._convertEventPosToPoint(e,{x:0,y:0})):s>-1&&this._convertEventPosToPoint(e,this._ongoingPointers[s]),this._numActivePoints=this._ongoingPointers.length,this._numActivePoints>0&&p(this.p1,this._ongoingPointers[0]),this._numActivePoints>1&&p(this.p2,this._ongoingPointers[1])}else{const e=t;this._numActivePoints=0,e.type.indexOf("touch")>-1?e.touches&&e.touches.length>0&&(this._convertEventPosToPoint(e.touches[0],this.p1),this._numActivePoints++,e.touches.length>1&&(this._convertEventPosToPoint(e.touches[1],this.p2),this._numActivePoints++)):(this._convertEventPosToPoint(t,this.p1),"up"===i?this._numActivePoints=0:this._numActivePoints++)}}_updatePrevPoints(){p(this.prevP1,this.p1),p(this.prevP2,this.p2)}_updateStartPoints(){p(this.startP1,this.p1),p(this.startP2,this.p2),this._updatePrevPoints()}_calculateDragDirection(){if(this.pswp.mainScroll.isShifted())this.dragAxis="x";else{const t=Math.abs(this.p1.x-this.startP1.x)-Math.abs(this.p1.y-this.startP1.y);if(0!==t){const i=t>0?"x":"y";Math.abs(this.p1[i]-this.startP1[i])>=10&&(this.dragAxis=i)}}}_convertEventPosToPoint(t,i){return i.x=t.pageX-this.pswp.offset.x,i.y=t.pageY-this.pswp.offset.y,"pointerId"in t?i.id=t.pointerId:void 0!==t.identifier&&(i.id=t.identifier),i}_onClick(t){this.pswp.mainScroll.isShifted()&&(t.preventDefault(),t.stopPropagation())}}const ct=.35;class dt{constructor(t){this.pswp=t,this.x=0,this.slideWidth=0,this._currPositionIndex=0,this._prevPositionIndex=0,this._containerShiftIndex=-1,this.itemHolders=[]}resize(t){const{pswp:i}=this,e=Math.round(i.viewportSize.x+i.viewportSize.x*i.options.spacing),s=e!==this.slideWidth;s&&(this.slideWidth=e,this.moveTo(this.getCurrSlideX())),this.itemHolders.forEach(((i,e)=>{s&&y(i.el,(e+this._containerShiftIndex)*this.slideWidth),t&&i.slide&&i.slide.resize()}))}resetPosition(){this._currPositionIndex=0,this._prevPositionIndex=0,this.slideWidth=0,this._containerShiftIndex=-1}appendHolders(){this.itemHolders=[];for(let t=0;t<3;t++){const i=f("pswp__item","div",this.pswp.container);i.setAttribute("role","group"),i.setAttribute("aria-roledescription","slide"),i.setAttribute("aria-hidden","true"),i.style.display=1===t?"block":"none",this.itemHolders.push({el:i})}}canBeSwiped(){return this.pswp.getNumItems()>1}moveIndexBy(t,i,e){const{pswp:s}=this;let n=s.potentialIndex+t;const o=s.getNumItems();if(s.canLoop()){n=s.getLoopedIndex(n);const i=(t+o)%o;t=i<=o/2?i:i-o}else n<0?n=0:n>=o&&(n=o-1),t=n-s.potentialIndex;s.potentialIndex=n,this._currPositionIndex-=t,s.animations.stopMainScroll();const a=this.getCurrSlideX();if(i){s.animations.startSpring({isMainScroll:!0,start:this.x,end:a,velocity:e||0,naturalFrequency:30,dampingRatio:1,onUpdate:t=>{this.moveTo(t)},onComplete:()=>{this.updateCurrItem(),s.appendHeavy()}});let t=s.potentialIndex-s.currIndex;if(s.canLoop()){const i=(t+o)%o;t=i<=o/2?i:i-o}Math.abs(t)>1&&this.updateCurrItem()}else this.moveTo(a),this.updateCurrItem();return!!t}getCurrSlideX(){return this.slideWidth*this._currPositionIndex}isShifted(){return this.x!==this.getCurrSlideX()}updateCurrItem(){var t;const{pswp:i}=this,e=this._prevPositionIndex-this._currPositionIndex;if(!e)return;this._prevPositionIndex=this._currPositionIndex,i.currIndex=i.potentialIndex;let s,n=Math.abs(e);n>=3&&(this._containerShiftIndex+=e+(e>0?-3:3),n=3,this.itemHolders.forEach((t=>{var i;null===(i=t.slide)||void 0===i||i.destroy(),t.slide=void 0})));for(let t=0;t0?(s=this.itemHolders.shift(),s&&(this.itemHolders[2]=s,this._containerShiftIndex++,y(s.el,(this._containerShiftIndex+2)*this.slideWidth),i.setContent(s,i.currIndex-n+t+2))):(s=this.itemHolders.pop(),s&&(this.itemHolders.unshift(s),this._containerShiftIndex--,y(s.el,this._containerShiftIndex*this.slideWidth),i.setContent(s,i.currIndex+n-t-2)));Math.abs(this._containerShiftIndex)>50&&!this.isShifted()&&(this.resetPosition(),this.resize()),i.animations.stopAllPan(),this.itemHolders.forEach(((t,i)=>{t.slide&&t.slide.setIsActive(1===i)})),i.currSlide=null===(t=this.itemHolders[1])||void 0===t?void 0:t.slide,i.contentLoader.updateLazy(e),i.currSlide&&i.currSlide.applyCurrentZoomPan(),i.dispatch("change")}moveTo(t,i){if(!this.pswp.canLoop()&&i){let i=(this.slideWidth*this._currPositionIndex-t)/this.slideWidth;i+=this.pswp.currIndex;const e=Math.round(t-this.x);(i<0&&e>0||i>=this.pswp.getNumItems()-1&&e<0)&&(t=this.x+e*ct)}this.x=t,this.pswp.container&&y(this.pswp.container,t),this.pswp.dispatch("moveMainScroll",{x:t,dragging:i??!1})}}const pt={Escape:27,z:90,ArrowLeft:37,ArrowUp:38,ArrowRight:39,ArrowDown:40,Tab:9},g=(t,i)=>i?t:pt[t];class ut{constructor(t){this.pswp=t,this._wasFocused=!1,t.on("bindEvents",(()=>{t.options.trapFocus&&(t.options.initialPointerPos||this._focusRoot(),t.events.add(document,"focusin",this._onFocusIn.bind(this))),t.events.add(document,"keydown",this._onKeyDown.bind(this))}));const i=document.activeElement;t.on("destroy",(()=>{t.options.returnFocus&&i&&this._wasFocused&&i.focus()}))}_focusRoot(){!this._wasFocused&&this.pswp.element&&(this.pswp.element.focus(),this._wasFocused=!0)}_onKeyDown(t){const{pswp:i}=this;if(i.dispatch("keydown",{originalEvent:t}).defaultPrevented||G(t))return;let e,s,n=!1;const o="key"in t;switch(o?t.key:t.keyCode){case g("Escape",o):i.options.escKey&&(e="close");break;case g("z",o):e="toggleZoom";break;case g("ArrowLeft",o):s="x";break;case g("ArrowUp",o):s="y";break;case g("ArrowRight",o):s="x",n=!0;break;case g("ArrowDown",o):n=!0,s="y";break;case g("Tab",o):this._focusRoot()}if(s){t.preventDefault();const{currSlide:o}=i;i.options.arrowKeys&&"x"===s&&i.getNumItems()>1?e=n?"next":"prev":o&&o.currZoomLevel>o.zoomLevels.fit&&(o.pan[s]+=n?-80:80,o.panTo(o.pan.x,o.pan.y))}e&&(t.preventDefault(),i[e]())}_onFocusIn(t){const{template:i}=this.pswp;i&&document!==t.target&&i!==t.target&&!i.contains(t.target)&&i.focus()}}const mt="cubic-bezier(.4,0,.22,1)";class ft{constructor(t){var i;this.props=t;const{target:e,onComplete:s,transform:n,onFinish:o=()=>{},duration:a=333,easing:h=mt}=t;this.onFinish=o;const r=n?"transform":"opacity",l=null!==(i=t[r])&&void 0!==i?i:"";this._target=e,this._onComplete=s,this._finished=!1,this._onTransitionEnd=this._onTransitionEnd.bind(this),this._helperTimeout=setTimeout((()=>{R(e,r,a,h),this._helperTimeout=setTimeout((()=>{e.addEventListener("transitionend",this._onTransitionEnd,!1),e.addEventListener("transitioncancel",this._onTransitionEnd,!1),this._helperTimeout=setTimeout((()=>{this._finalizeAnimation()}),a+500),e.style[r]=l}),30)}),0)}_onTransitionEnd(t){t.target===this._target&&this._finalizeAnimation()}_finalizeAnimation(){this._finished||(this._finished=!0,this.onFinish(),this._onComplete&&this._onComplete())}destroy(){this._helperTimeout&&clearTimeout(this._helperTimeout),U(this._target),this._target.removeEventListener("transitionend",this._onTransitionEnd,!1),this._target.removeEventListener("transitioncancel",this._onTransitionEnd,!1),this._finished||this._finalizeAnimation()}}const _t=12,vt=.75;class gt{constructor(t,i,e){this.velocity=1e3*t,this._dampingRatio=i||vt,this._naturalFrequency=e||12,this._dampedFrequency=this._naturalFrequency,this._dampingRatio<1&&(this._dampedFrequency*=Math.sqrt(1-this._dampingRatio*this._dampingRatio))}easeFrame(t,i){let e,s=0;i/=1e3;const n=Math.E**(-this._dampingRatio*this._naturalFrequency*i);if(1===this._dampingRatio)e=this.velocity+this._naturalFrequency*t,s=(t+e*i)*n,this.velocity=s*-this._naturalFrequency+e*n;else if(this._dampingRatio<1){e=1/this._dampedFrequency*(this._dampingRatio*this._naturalFrequency*t+this.velocity);const o=Math.cos(this._dampedFrequency*i),a=Math.sin(this._dampedFrequency*i);s=n*(t*o+e*a),this.velocity=s*-this._naturalFrequency*this._dampingRatio+n*(-this._dampedFrequency*t*a+this._dampedFrequency*e*o)}return s}}class yt{constructor(t){this.props=t,this._raf=0;const{start:i,end:e,velocity:s,onUpdate:n,onComplete:o,onFinish:a=()=>{},dampingRatio:h,naturalFrequency:r}=t;this.onFinish=a;const l=new gt(s,h,r);let p=Date.now(),d=i-e;const c=()=>{this._raf&&(d=l.easeFrame(d,Date.now()-p),Math.abs(d)<1&&Math.abs(l.velocity)<50?(n(e),o&&o(),this.onFinish()):(p=Date.now(),n(d+e),this._raf=requestAnimationFrame(c)))};this._raf=requestAnimationFrame(c)}destroy(){this._raf>=0&&cancelAnimationFrame(this._raf),this._raf=0}}class wt{constructor(){this.activeAnimations=[]}startSpring(t){this._start(t,!0)}startTransition(t){this._start(t)}_start(t,i){const e=i?new yt(t):new ft(t);return this.activeAnimations.push(e),e.onFinish=()=>this.stop(e),e}stop(t){t.destroy();const i=this.activeAnimations.indexOf(t);i>-1&&this.activeAnimations.splice(i,1)}stopAll(){this.activeAnimations.forEach((t=>{t.destroy()})),this.activeAnimations=[]}stopAllPan(){this.activeAnimations=this.activeAnimations.filter((t=>!t.props.isPan||(t.destroy(),!1)))}stopMainScroll(){this.activeAnimations=this.activeAnimations.filter((t=>!t.props.isMainScroll||(t.destroy(),!1)))}isPanRunning(){return this.activeAnimations.some((t=>t.props.isPan))}}class Pt{constructor(t){this.pswp=t,t.events.add(t.element,"wheel",this._onWheel.bind(this))}_onWheel(t){t.preventDefault();const{currSlide:i}=this.pswp;let{deltaX:e,deltaY:s}=t;if(i&&!this.pswp.dispatch("wheel",{originalEvent:t}).defaultPrevented)if(t.ctrlKey||this.pswp.options.wheelToZoom){if(i.isZoomable()){let e=-s;1===t.deltaMode?e*=.05:e*=t.deltaMode?1:.002,e=2**e;const n=i.currZoomLevel*e;i.zoomTo(n,{x:t.clientX,y:t.clientY})}}else i.isPannable()&&(1===t.deltaMode&&(e*=18,s*=18),i.panTo(i.pan.x-e,i.pan.y-s))}}function St(t){if("string"==typeof t)return t;if(!t||!t.isCustomSVG)return"";const i=t;let e='",e}class xt{constructor(t,i){var e;const s=i.name||i.className;let n=i.html;if(!1===t.options[s])return;"string"==typeof t.options[s+"SVG"]&&(n=t.options[s+"SVG"]),t.dispatch("uiElementCreate",{data:i});let o="";i.isButton?(o+="pswp__button ",o+=i.className||`pswp__button--${i.name}`):o+=i.className||`pswp__${i.name}`;let a=i.isButton?i.tagName||"button":i.tagName||"div";a=a.toLowerCase();const h=f(o,a);if(i.isButton){"button"===a&&(h.type="button");let{title:e}=i;const{ariaLabel:n}=i;"string"==typeof t.options[s+"Title"]&&(e=t.options[s+"Title"]),e&&(h.title=e);const o=n||e;o&&h.setAttribute("aria-label",o)}h.innerHTML=St(n),i.onInit&&i.onInit(h,t),i.onClick&&(h.onclick=e=>{"string"==typeof i.onClick?t[i.onClick]():"function"==typeof i.onClick&&i.onClick(e,h,t)});const r=i.appendTo||"bar";let l=t.element;"bar"===r?(t.topBar||(t.topBar=f("pswp__top-bar pswp__hide-on-close","div",t.scrollWrap)),l=t.topBar):(h.classList.add("pswp__hide-on-close"),"wrapper"===r&&(l=t.scrollWrap)),null===(e=l)||void 0===e||e.appendChild(t.applyFilters("uiElement",h,i))}}function k(t,i,e){t.classList.add("pswp__button--arrow"),t.setAttribute("aria-controls","pswp__items"),i.on("change",(()=>{i.options.loop||(t.disabled=e?!(i.currIndex0))}))}const bt={name:"arrowPrev",className:"pswp__button--arrow--prev",title:"Previous",order:10,isButton:!0,appendTo:"wrapper",html:{isCustomSVG:!0,size:60,inner:'',outlineID:"pswp__icn-arrow"},onClick:"prev",onInit:k},It={name:"arrowNext",className:"pswp__button--arrow--next",title:"Next",order:11,isButton:!0,appendTo:"wrapper",html:{isCustomSVG:!0,size:60,inner:'',outlineID:"pswp__icn-arrow"},onClick:"next",onInit:(t,i)=>{k(t,i,!0)}},At={name:"close",title:"Close",order:20,isButton:!0,html:{isCustomSVG:!0,inner:'',outlineID:"pswp__icn-close"},onClick:"close"},Lt={name:"zoom",title:"Zoom",order:10,isButton:!0,html:{isCustomSVG:!0,inner:'',outlineID:"pswp__icn-zoom"},onClick:"toggleZoom"},Ct={name:"preloader",appendTo:"bar",order:7,html:{isCustomSVG:!0,inner:'',outlineID:"pswp__icn-loading"},onInit:(t,i)=>{let e,s=null;const n=i=>{e!==i&&(e=i,((i,e)=>{t.classList.toggle("pswp__preloader--"+i,e)})("active",i))},o=()=>{var t;if(null===(t=i.currSlide)||void 0===t||!t.content.isLoading())return n(!1),void(s&&(clearTimeout(s),s=null));s||(s=setTimeout((()=>{var t;n(!(null===(t=i.currSlide)||void 0===t||!t.content.isLoading())),s=null}),i.options.preloaderDelay))};i.on("change",o),i.on("loadComplete",(t=>{i.currSlide===t.slide&&o()})),i.ui&&(i.ui.updatePreloaderVisibility=o)}},Tt={name:"counter",order:5,onInit:(t,i)=>{i.on("change",(()=>{t.innerText=i.currIndex+1+i.options.indexIndicatorSep+i.getNumItems()}))}};function D(t,i){t.classList.toggle("pswp--zoomed-in",i)}class zt{constructor(t){this.pswp=t,this.isRegistered=!1,this.uiElementsData=[],this.items=[],this.updatePreloaderVisibility=()=>{},this._lastUpdatedZoomLevel=void 0}init(){const{pswp:t}=this;this.isRegistered=!1,this.uiElementsData=[At,bt,It,Lt,Ct,Tt],t.dispatch("uiRegister"),this.uiElementsData.sort(((t,i)=>(t.order||0)-(i.order||0))),this.items=[],this.isRegistered=!0,this.uiElementsData.forEach((t=>{this.registerElement(t)})),t.on("change",(()=>{var i;null===(i=t.element)||void 0===i||i.classList.toggle("pswp--one-slide",1===t.getNumItems())})),t.on("zoomPanUpdate",(()=>this._onZoomPanUpdate()))}registerElement(t){this.isRegistered?this.items.push(new xt(this.pswp,t)):this.uiElementsData.push(t)}_onZoomPanUpdate(){const{template:t,currSlide:i,options:e}=this.pswp;if(this.pswp.opener.isClosing||!t||!i)return;let{currZoomLevel:s}=i;if(this.pswp.opener.isOpen||(s=i.zoomLevels.initial),s===this._lastUpdatedZoomLevel)return;this._lastUpdatedZoomLevel=s;const n=i.zoomLevels.initial-i.zoomLevels.secondary;if(Math.abs(n)<.01||!i.isZoomable())return D(t,!1),void t.classList.remove("pswp--zoom-allowed");t.classList.add("pswp--zoom-allowed");D(t,(s===i.zoomLevels.initial?i.zoomLevels.secondary:i.zoomLevels.initial)<=s),("zoom"===e.imageClickAction||"zoom-or-close"===e.imageClickAction)&&t.classList.add("pswp--click-to-zoom")}}function Et(t){const i=t.getBoundingClientRect();return{x:i.left,y:i.top,w:i.width}}function Ot(t,i,e){const s=t.getBoundingClientRect(),n=s.width/i,o=s.height/e,a=n>o?n:o,h=(s.width-i*a)/2,r=(s.height-e*a)/2,l={x:s.left+h,y:s.top+r,w:i*a};return l.innerRect={w:s.width,h:s.height,x:h,y:r},l}function Zt(t,i,e){const s=e.dispatch("thumbBounds",{index:t,itemData:i,instance:e});if(s.thumbBounds)return s.thumbBounds;const{element:n}=i;let o,a;if(n&&!1!==e.options.thumbSelector){const t=e.options.thumbSelector||"img";a=n.matches(t)?n:n.querySelector(t)}return a=e.applyFilters("thumbEl",a,i,t),a&&(o=i.thumbCropped?Ot(a,i.width||i.w||0,i.height||i.h||0):Et(a)),e.applyFilters("thumbBounds",o,i,t)}class Dt{constructor(t,i){this.type=t,this.defaultPrevented=!1,i&&Object.assign(this,i)}preventDefault(){this.defaultPrevented=!0}}class Mt{constructor(){this._listeners={},this._filters={},this.pswp=void 0,this.options=void 0}addFilter(t,i,e=100){var s,n,o;this._filters[t]||(this._filters[t]=[]),null===(s=this._filters[t])||void 0===s||s.push({fn:i,priority:e}),null===(n=this._filters[t])||void 0===n||n.sort(((t,i)=>t.priority-i.priority)),null===(o=this.pswp)||void 0===o||o.addFilter(t,i,e)}removeFilter(t,i){this._filters[t]&&(this._filters[t]=this._filters[t].filter((t=>t.fn!==i))),this.pswp&&this.pswp.removeFilter(t,i)}applyFilters(t,...i){var e;return null===(e=this._filters[t])||void 0===e||e.forEach((t=>{i[0]=t.fn.apply(this,i)})),i[0]}on(t,i){var e,s;this._listeners[t]||(this._listeners[t]=[]),null===(e=this._listeners[t])||void 0===e||e.push(i),null===(s=this.pswp)||void 0===s||s.on(t,i)}off(t,i){var e;this._listeners[t]&&(this._listeners[t]=this._listeners[t].filter((t=>i!==t))),null===(e=this.pswp)||void 0===e||e.off(t,i)}dispatch(t,i){var e;if(this.pswp)return this.pswp.dispatch(t,i);const s=new Dt(t,i);return null===(e=this._listeners[t])||void 0===e||e.forEach((t=>{t.call(this,s)})),s}}class Rt{constructor(t,i){if(this.element=f("pswp__img pswp__img--placeholder",t?"img":"div",i),t){const i=this.element;i.decoding="async",i.alt="",i.src=t,i.setAttribute("role","presentation")}this.element.setAttribute("aria-hidden","true")}setDisplayedSize(t,i){this.element&&("IMG"===this.element.tagName?(L(this.element,250,"auto"),this.element.style.transformOrigin="0 0",this.element.style.transform=b(0,0,t/250)):L(this.element,t,i))}destroy(){var t;null!==(t=this.element)&&void 0!==t&&t.parentNode&&this.element.remove(),this.element=null}}class Ft{constructor(t,i,e){this.instance=i,this.data=t,this.index=e,this.element=void 0,this.placeholder=void 0,this.slide=void 0,this.displayedImageWidth=0,this.displayedImageHeight=0,this.width=Number(this.data.w)||Number(this.data.width)||0,this.height=Number(this.data.h)||Number(this.data.height)||0,this.isAttached=!1,this.hasSlide=!1,this.isDecoding=!1,this.state=_.IDLE,this.data.type?this.type=this.data.type:this.data.src?this.type="image":this.type="html",this.instance.dispatch("contentInit",{content:this})}removePlaceholder(){this.placeholder&&!this.keepPlaceholder()&&setTimeout((()=>{this.placeholder&&(this.placeholder.destroy(),this.placeholder=void 0)}),1e3)}load(t,i){if(this.slide&&this.usePlaceholder())if(this.placeholder){const t=this.placeholder.element;t&&!t.parentElement&&this.slide.container.prepend(t)}else{const t=this.instance.applyFilters("placeholderSrc",!(!this.data.msrc||!this.slide.isFirstSlide)&&this.data.msrc,this);this.placeholder=new Rt(t,this.slide.container)}this.element&&!i||this.instance.dispatch("contentLoad",{content:this,isLazy:t}).defaultPrevented||(this.isImageContent()?(this.element=f("pswp__img","img"),this.displayedImageWidth&&this.loadImage(t)):(this.element=f("pswp__content","div"),this.element.innerHTML=this.data.html||""),i&&this.slide&&this.slide.updateContentSize(!0))}loadImage(t){var i,e;if(!this.isImageContent()||!this.element||this.instance.dispatch("contentLoadImage",{content:this,isLazy:t}).defaultPrevented)return;const s=this.element;this.updateSrcsetSizes(),this.data.srcset&&(s.srcset=this.data.srcset),s.src=null!==(i=this.data.src)&&void 0!==i?i:"",s.alt=null!==(e=this.data.alt)&&void 0!==e?e:"",this.state=_.LOADING,s.complete?this.onLoaded():(s.onload=()=>{this.onLoaded()},s.onerror=()=>{this.onError()})}setSlide(t){this.slide=t,this.hasSlide=!0,this.instance=t.pswp}onLoaded(){this.state=_.LOADED,this.slide&&this.element&&(this.instance.dispatch("loadComplete",{slide:this.slide,content:this}),this.slide.isActive&&this.slide.heavyAppended&&!this.element.parentNode&&(this.append(),this.slide.updateContentSize(!0)),(this.state===_.LOADED||this.state===_.ERROR)&&this.removePlaceholder())}onError(){this.state=_.ERROR,this.slide&&(this.displayError(),this.instance.dispatch("loadComplete",{slide:this.slide,isError:!0,content:this}),this.instance.dispatch("loadError",{slide:this.slide,content:this}))}isLoading(){return this.instance.applyFilters("isContentLoading",this.state===_.LOADING,this)}isError(){return this.state===_.ERROR}isImageContent(){return"image"===this.type}setDisplayedSize(t,i){if(this.element&&(this.placeholder&&this.placeholder.setDisplayedSize(t,i),!this.instance.dispatch("contentResize",{content:this,width:t,height:i}).defaultPrevented&&(L(this.element,t,i),this.isImageContent()&&!this.isError()))){const e=!this.displayedImageWidth&&t;this.displayedImageWidth=t,this.displayedImageHeight=i,e?this.loadImage(!1):this.updateSrcsetSizes(),this.slide&&this.instance.dispatch("imageSizeChange",{slide:this.slide,width:t,height:i,content:this})}}isZoomable(){return this.instance.applyFilters("isContentZoomable",this.isImageContent()&&this.state!==_.ERROR,this)}updateSrcsetSizes(){if(!this.isImageContent()||!this.element||!this.data.srcset)return;const t=this.element,i=this.instance.applyFilters("srcsetSizesWidth",this.displayedImageWidth,this);(!t.dataset.largestUsedSize||i>parseInt(t.dataset.largestUsedSize,10))&&(t.sizes=i+"px",t.dataset.largestUsedSize=String(i))}usePlaceholder(){return this.instance.applyFilters("useContentPlaceholder",this.isImageContent(),this)}lazyLoad(){this.instance.dispatch("contentLazyLoad",{content:this}).defaultPrevented||this.load(!0)}keepPlaceholder(){return this.instance.applyFilters("isKeepingPlaceholder",this.isLoading(),this)}destroy(){this.hasSlide=!1,this.slide=void 0,!this.instance.dispatch("contentDestroy",{content:this}).defaultPrevented&&(this.remove(),this.placeholder&&(this.placeholder.destroy(),this.placeholder=void 0),this.isImageContent()&&this.element&&(this.element.onload=null,this.element.onerror=null,this.element=void 0))}displayError(){if(this.slide){var t,i;let e=f("pswp__error-msg","div");e.innerText=null!==(t=null===(i=this.instance.options)||void 0===i?void 0:i.errorMsg)&&void 0!==t?t:"",e=this.instance.applyFilters("contentErrorElement",e,this),this.element=f("pswp__content pswp__error-msg-container","div"),this.element.appendChild(e),this.slide.container.innerText="",this.slide.container.appendChild(this.element),this.slide.updateContentSize(!0),this.removePlaceholder()}}append(){if(this.isAttached||!this.element)return;if(this.isAttached=!0,this.state===_.ERROR)return void this.displayError();if(this.instance.dispatch("contentAppend",{content:this}).defaultPrevented)return;const t="decode"in this.element;this.isImageContent()?t&&this.slide&&(!this.slide.isActive||C())?(this.isDecoding=!0,this.element.decode().catch((()=>{})).finally((()=>{this.isDecoding=!1,this.appendImage()}))):this.appendImage():this.slide&&!this.element.parentNode&&this.slide.container.appendChild(this.element)}activate(){this.instance.dispatch("contentActivate",{content:this}).defaultPrevented||!this.slide||(this.isImageContent()&&this.isDecoding&&!C()?this.appendImage():this.isError()&&this.load(!1,!0),this.slide.holderElement&&this.slide.holderElement.setAttribute("aria-hidden","false"))}deactivate(){this.instance.dispatch("contentDeactivate",{content:this}),this.slide&&this.slide.holderElement&&this.slide.holderElement.setAttribute("aria-hidden","true")}remove(){this.isAttached=!1,!this.instance.dispatch("contentRemove",{content:this}).defaultPrevented&&(this.element&&this.element.parentNode&&this.element.remove(),this.placeholder&&this.placeholder.element&&this.placeholder.element.remove())}appendImage(){this.isAttached&&(this.instance.dispatch("contentAppendImage",{content:this}).defaultPrevented||(this.slide&&this.element&&!this.element.parentNode&&this.slide.container.appendChild(this.element),(this.state===_.LOADED||this.state===_.ERROR)&&this.removePlaceholder()))}}const Bt=5;function W(t,i,e){const s=i.createContentFromData(t,e);let n;const{options:o}=i;if(o){let a;n=new H(o,t,-1),a=i.pswp?i.pswp.viewportSize:B(o,i);const h=N(o,a,t,e);n.update(s.width,s.height,h)}return s.lazyLoad(),n&&s.setDisplayedSize(Math.ceil(s.width*n.initial),Math.ceil(s.height*n.initial)),s}function Nt(t,i){const e=i.getItemData(t);if(!i.dispatch("lazyLoadSlide",{index:t,itemData:e}).defaultPrevented)return W(e,i,t)}class Ht{constructor(t){this.pswp=t,this.limit=Math.max(t.options.preload[0]+t.options.preload[1]+1,5),this._cachedItems=[]}updateLazy(t){const{pswp:i}=this;if(i.dispatch("lazyLoad").defaultPrevented)return;const{preload:e}=i.options,s=void 0===t||t>=0;let n;for(n=0;n<=e[1];n++)this.loadSlideByIndex(i.currIndex+(s?n:-n));for(n=1;n<=e[0];n++)this.loadSlideByIndex(i.currIndex+(s?-n:n))}loadSlideByIndex(t){const i=this.pswp.getLoopedIndex(t);let e=this.getContentByIndex(i);e||(e=Nt(i,this.pswp),e&&this.addToCache(e))}getContentBySlide(t){let i=this.getContentByIndex(t.index);return i||(i=this.pswp.createContentFromData(t.data,t.index),this.addToCache(i)),i.setSlide(t),i}addToCache(t){if(this.removeByIndex(t.index),this._cachedItems.push(t),this._cachedItems.length>this.limit){const t=this._cachedItems.findIndex((t=>!t.isAttached&&!t.hasSlide));-1!==t&&this._cachedItems.splice(t,1)[0].destroy()}}removeByIndex(t){const i=this._cachedItems.findIndex((i=>i.index===t));-1!==i&&this._cachedItems.splice(i,1)}getContentByIndex(t){return this._cachedItems.find((i=>i.index===t))}destroy(){this._cachedItems.forEach((t=>t.destroy())),this._cachedItems=[]}}class kt extends Mt{getNumItems(){var t;let i=0;const e=null===(t=this.options)||void 0===t?void 0:t.dataSource;e&&"length"in e?i=e.length:e&&"gallery"in e&&(e.items||(e.items=this._getGalleryDOMElements(e.gallery)),e.items&&(i=e.items.length));const s=this.dispatch("numItems",{dataSource:e,numItems:i});return this.applyFilters("numItems",s.numItems,e)}createContentFromData(t,i){return new Ft(t,this,i)}getItemData(t){var i;const e=null===(i=this.options)||void 0===i?void 0:i.dataSource;let s={};Array.isArray(e)?s=e[t]:e&&"gallery"in e&&(e.items||(e.items=this._getGalleryDOMElements(e.gallery)),s=e.items[t]);let n=s;n instanceof Element&&(n=this._domElementToItemData(n));const o=this.dispatch("itemData",{itemData:n||{},index:t});return this.applyFilters("itemData",o.itemData,t)}_getGalleryDOMElements(t){var i,e;return null!==(i=this.options)&&void 0!==i&&i.children||null!==(e=this.options)&&void 0!==e&&e.childSelector?K(this.options.children,this.options.childSelector,t)||[]:[t]}_domElementToItemData(t){const i={element:t},e="A"===t.tagName?t:t.querySelector("a");if(e){i.src=e.dataset.pswpSrc||e.href,e.dataset.pswpSrcset&&(i.srcset=e.dataset.pswpSrcset),i.width=e.dataset.pswpWidth?parseInt(e.dataset.pswpWidth,10):0,i.height=e.dataset.pswpHeight?parseInt(e.dataset.pswpHeight,10):0,i.w=i.width,i.h=i.height,e.dataset.pswpType&&(i.type=e.dataset.pswpType);const n=t.querySelector("img");var s;if(n)i.msrc=n.currentSrc||n.src,i.alt=null!==(s=n.getAttribute("alt"))&&void 0!==s?s:"";(e.dataset.pswpCropped||e.dataset.cropped)&&(i.thumbCropped=!0)}return this.applyFilters("domItemData",i,t,e)}lazyLoadData(t,i){return W(t,this,i)}}const P=.003;class Wt{constructor(t){this.pswp=t,this.isClosed=!0,this.isOpen=!1,this.isClosing=!1,this.isOpening=!1,this._duration=void 0,this._useAnimation=!1,this._croppedZoom=!1,this._animateRootOpacity=!1,this._animateBgOpacity=!1,this._placeholder=void 0,this._opacityElement=void 0,this._cropContainer1=void 0,this._cropContainer2=void 0,this._thumbBounds=void 0,this._prepareOpen=this._prepareOpen.bind(this),t.on("firstZoomPan",this._prepareOpen)}open(){this._prepareOpen(),this._start()}close(){if(this.isClosed||this.isClosing||this.isOpening)return;const t=this.pswp.currSlide;this.isOpen=!1,this.isOpening=!1,this.isClosing=!0,this._duration=this.pswp.options.hideAnimationDuration,t&&t.currZoomLevel*t.width>=this.pswp.options.maxWidthToAnimate&&(this._duration=0),this._applyStartProps(),setTimeout((()=>{this._start()}),this._croppedZoom?30:0)}_prepareOpen(){if(this.pswp.off("firstZoomPan",this._prepareOpen),!this.isOpening){const t=this.pswp.currSlide;this.isOpening=!0,this.isClosing=!1,this._duration=this.pswp.options.showAnimationDuration,t&&t.zoomLevels.initial*t.width>=this.pswp.options.maxWidthToAnimate&&(this._duration=0),this._applyStartProps()}}_applyStartProps(){const{pswp:t}=this,i=this.pswp.currSlide,{options:e}=t;var s,n;("fade"===e.showHideAnimationType?(e.showHideOpacity=!0,this._thumbBounds=void 0):"none"===e.showHideAnimationType?(e.showHideOpacity=!1,this._duration=0,this._thumbBounds=void 0):this.isOpening&&t._initialThumbBounds?this._thumbBounds=t._initialThumbBounds:this._thumbBounds=this.pswp.getThumbBounds(),this._placeholder=i?.getPlaceholderElement(),t.animations.stopAll(),this._useAnimation=!!(this._duration&&this._duration>50),this._animateZoom=!!this._thumbBounds&&i?.content.usePlaceholder()&&(!this.isClosing||!t.mainScroll.isShifted()),this._animateZoom)?this._animateRootOpacity=null!==(s=e.showHideOpacity)&&void 0!==s&&s:(this._animateRootOpacity=!0,this.isOpening&&i&&(i.zoomAndPanToInitial(),i.applyCurrentZoomPan()));if(this._animateBgOpacity=!this._animateRootOpacity&&this.pswp.options.bgOpacity>P,this._opacityElement=this._animateRootOpacity?t.element:t.bg,!this._useAnimation)return this._duration=0,this._animateZoom=!1,this._animateBgOpacity=!1,this._animateRootOpacity=!0,void(this.isOpening&&(t.element&&(t.element.style.opacity=String(P)),t.applyBgOpacity(1)));this._animateZoom&&this._thumbBounds&&this._thumbBounds.innerRect?(this._croppedZoom=!0,this._cropContainer1=this.pswp.container,this._cropContainer2=null===(n=this.pswp.currSlide)||void 0===n?void 0:n.holderElement,t.container&&(t.container.style.overflow="hidden",t.container.style.width=t.viewportSize.x+"px")):this._croppedZoom=!1;this.isOpening?(this._animateRootOpacity?(t.element&&(t.element.style.opacity=String(P)),t.applyBgOpacity(1)):(this._animateBgOpacity&&t.bg&&(t.bg.style.opacity=String(P)),t.element&&(t.element.style.opacity="1")),this._animateZoom&&(this._setClosedStateZoomPan(),this._placeholder&&(this._placeholder.style.willChange="transform",this._placeholder.style.opacity=String(P)))):this.isClosing&&(t.mainScroll.itemHolders[0]&&(t.mainScroll.itemHolders[0].el.style.display="none"),t.mainScroll.itemHolders[2]&&(t.mainScroll.itemHolders[2].el.style.display="none"),this._croppedZoom&&0!==t.mainScroll.x&&(t.mainScroll.resetPosition(),t.mainScroll.resize()))}_start(){this.isOpening&&this._useAnimation&&this._placeholder&&"IMG"===this._placeholder.tagName?new Promise((t=>{let i=!1,e=!0;q(this._placeholder).finally((()=>{i=!0,e||t(!0)})),setTimeout((()=>{e=!1,i&&t(!0)}),50),setTimeout(t,250)})).finally((()=>this._initiate())):this._initiate()}_initiate(){var t,i;null===(t=this.pswp.element)||void 0===t||t.style.setProperty("--pswp-transition-duration",this._duration+"ms"),this.pswp.dispatch(this.isOpening?"openingAnimationStart":"closingAnimationStart"),this.pswp.dispatch("initialZoom"+(this.isOpening?"In":"Out")),null===(i=this.pswp.element)||void 0===i||i.classList.toggle("pswp--ui-visible",this.isOpening),this.isOpening?(this._placeholder&&(this._placeholder.style.opacity="1"),this._animateToOpenState()):this.isClosing&&this._animateToClosedState(),this._useAnimation||this._onAnimationComplete()}_onAnimationComplete(){const{pswp:t}=this;if(this.isOpen=this.isOpening,this.isClosed=this.isClosing,this.isOpening=!1,this.isClosing=!1,t.dispatch(this.isOpen?"openingAnimationEnd":"closingAnimationEnd"),t.dispatch("initialZoom"+(this.isOpen?"InEnd":"OutEnd")),this.isClosed)t.destroy();else if(this.isOpen){var i;this._animateZoom&&t.container&&(t.container.style.overflow="visible",t.container.style.width="100%"),null===(i=t.currSlide)||void 0===i||i.applyCurrentZoomPan()}}_animateToOpenState(){const{pswp:t}=this;this._animateZoom&&(this._croppedZoom&&this._cropContainer1&&this._cropContainer2&&(this._animateTo(this._cropContainer1,"transform","translate3d(0,0,0)"),this._animateTo(this._cropContainer2,"transform","none")),t.currSlide&&(t.currSlide.zoomAndPanToInitial(),this._animateTo(t.currSlide.container,"transform",t.currSlide.getCurrentTransform()))),this._animateBgOpacity&&t.bg&&this._animateTo(t.bg,"opacity",String(t.options.bgOpacity)),this._animateRootOpacity&&t.element&&this._animateTo(t.element,"opacity","1")}_animateToClosedState(){const{pswp:t}=this;this._animateZoom&&this._setClosedStateZoomPan(!0),this._animateBgOpacity&&t.bgOpacity>.01&&t.bg&&this._animateTo(t.bg,"opacity","0"),this._animateRootOpacity&&t.element&&this._animateTo(t.element,"opacity","0")}_setClosedStateZoomPan(t){if(!this._thumbBounds)return;const{pswp:i}=this,{innerRect:e}=this._thumbBounds,{currSlide:s,viewportSize:n}=i;if(this._croppedZoom&&e&&this._cropContainer1&&this._cropContainer2){const i=-n.x+(this._thumbBounds.x-e.x)+e.w,s=-n.y+(this._thumbBounds.y-e.y)+e.h,o=n.x-e.w,a=n.y-e.h;t?(this._animateTo(this._cropContainer1,"transform",b(i,s)),this._animateTo(this._cropContainer2,"transform",b(o,a))):(y(this._cropContainer1,i,s),y(this._cropContainer2,o,a))}s&&(p(s.pan,e||this._thumbBounds),s.currZoomLevel=this._thumbBounds.w/s.width,t?this._animateTo(s.container,"transform",s.getCurrentTransform()):s.applyCurrentZoomPan())}_animateTo(t,i,e){if(!this._duration)return void(t.style[i]=e);const{animations:s}=this.pswp,n={duration:this._duration,easing:this.pswp.options.easing,onComplete:()=>{s.activeAnimations.length||this._onAnimationComplete()},target:t};n[i]=e,s.startTransition(n)}}const Vt={allowPanToNext:!0,spacing:.1,loop:!0,pinchToClose:!0,closeOnVerticalDrag:!0,hideAnimationDuration:333,showAnimationDuration:333,zoomAnimationDuration:333,escKey:!0,arrowKeys:!0,trapFocus:!0,returnFocus:!0,maxWidthToAnimate:4e3,clickToCloseNonZoomable:!0,imageClickAction:"zoom-or-close",bgClickAction:"close",tapAction:"toggle-controls",doubleTapAction:"zoom",indexIndicatorSep:" / ",preloaderDelay:2e3,bgOpacity:.8,index:0,errorMsg:"The image cannot be loaded",preload:[1,2],easing:"cubic-bezier(.4,0,.22,1)"};class $t extends kt{constructor(t){super(),this.options=this._prepareOptions(t||{}),this.offset={x:0,y:0},this._prevViewportSize={x:0,y:0},this.viewportSize={x:0,y:0},this.bgOpacity=1,this.currIndex=0,this.potentialIndex=0,this.isOpen=!1,this.isDestroying=!1,this.hasMouse=!1,this._initialItemData={},this._initialThumbBounds=void 0,this.topBar=void 0,this.element=void 0,this.template=void 0,this.container=void 0,this.scrollWrap=void 0,this.currSlide=void 0,this.events=new X,this.animations=new wt,this.mainScroll=new dt(this),this.gestures=new lt(this),this.opener=new Wt(this),this.keyboard=new ut(this),this.contentLoader=new Ht(this)}init(){if(this.isOpen||this.isDestroying)return!1;this.isOpen=!0,this.dispatch("init"),this.dispatch("beforeOpen"),this._createMainStructure();let t="pswp--open";return this.gestures.supportsTouch&&(t+=" pswp--touch"),this.options.mainClass&&(t+=" "+this.options.mainClass),this.element&&(this.element.className+=" "+t),this.currIndex=this.options.index||0,this.potentialIndex=this.currIndex,this.dispatch("firstUpdate"),this.scrollWheel=new Pt(this),(Number.isNaN(this.currIndex)||this.currIndex<0||this.currIndex>=this.getNumItems())&&(this.currIndex=0),this.gestures.supportsTouch||this.mouseDetected(),this.updateSize(),this.offset.y=window.pageYOffset,this._initialItemData=this.getItemData(this.currIndex),this.dispatch("gettingData",{index:this.currIndex,data:this._initialItemData,slide:void 0}),this._initialThumbBounds=this.getThumbBounds(),this.dispatch("initialLayout"),this.on("openingAnimationEnd",(()=>{const{itemHolders:t}=this.mainScroll;t[0]&&(t[0].el.style.display="block",this.setContent(t[0],this.currIndex-1)),t[2]&&(t[2].el.style.display="block",this.setContent(t[2],this.currIndex+1)),this.appendHeavy(),this.contentLoader.updateLazy(),this.events.add(window,"resize",this._handlePageResize.bind(this)),this.events.add(window,"scroll",this._updatePageScrollOffset.bind(this)),this.dispatch("bindEvents")})),this.mainScroll.itemHolders[1]&&this.setContent(this.mainScroll.itemHolders[1],this.currIndex),this.dispatch("change"),this.opener.open(),this.dispatch("afterInit"),!0}getLoopedIndex(t){const i=this.getNumItems();return this.options.loop&&(t>i-1&&(t-=i),t<0&&(t+=i)),I(t,0,i-1)}appendHeavy(){this.mainScroll.itemHolders.forEach((t=>{var i;null===(i=t.slide)||void 0===i||i.appendHeavy()}))}goTo(t){this.mainScroll.moveIndexBy(this.getLoopedIndex(t)-this.potentialIndex)}next(){this.goTo(this.potentialIndex+1)}prev(){this.goTo(this.potentialIndex-1)}zoomTo(...t){var i;null===(i=this.currSlide)||void 0===i||i.zoomTo(...t)}toggleZoom(){var t;null===(t=this.currSlide)||void 0===t||t.toggleZoom()}close(){!this.opener.isOpen||this.isDestroying||(this.isDestroying=!0,this.dispatch("close"),this.events.removeAll(),this.opener.close())}destroy(){var t;if(!this.isDestroying)return this.options.showHideAnimationType="none",void this.close();this.dispatch("destroy"),this._listeners={},this.scrollWrap&&(this.scrollWrap.ontouchmove=null,this.scrollWrap.ontouchend=null),null===(t=this.element)||void 0===t||t.remove(),this.mainScroll.itemHolders.forEach((t=>{var i;null===(i=t.slide)||void 0===i||i.destroy()})),this.contentLoader.destroy(),this.events.removeAll()}refreshSlideContent(t){this.contentLoader.removeByIndex(t),this.mainScroll.itemHolders.forEach(((i,e)=>{var s,n;let o=(null!==(s=null===(n=this.currSlide)||void 0===n?void 0:n.index)&&void 0!==s?s:0)-1+e;var a;(this.canLoop()&&(o=this.getLoopedIndex(o)),o===t&&(this.setContent(i,t,!0),1===e))&&(this.currSlide=i.slide,null===(a=i.slide)||void 0===a||a.setIsActive(!0))})),this.dispatch("change")}setContent(t,i,e){if(this.canLoop()&&(i=this.getLoopedIndex(i)),t.slide){if(t.slide.index===i&&!e)return;t.slide.destroy(),t.slide=void 0}if(!this.canLoop()&&(i<0||i>=this.getNumItems()))return;const s=this.getItemData(i);t.slide=new j(s,i,this),i===this.currIndex&&(this.currSlide=t.slide),t.slide.append(t.el)}getViewportCenterPoint(){return{x:this.viewportSize.x/2,y:this.viewportSize.y/2}}updateSize(t){if(this.isDestroying)return;const i=B(this.options,this);!t&&x(i,this._prevViewportSize)||(p(this._prevViewportSize,i),this.dispatch("beforeResize"),p(this.viewportSize,this._prevViewportSize),this._updatePageScrollOffset(),this.dispatch("viewportSize"),this.mainScroll.resize(this.opener.isOpen),!this.hasMouse&&window.matchMedia("(any-hover: hover)").matches&&this.mouseDetected(),this.dispatch("resize"))}applyBgOpacity(t){this.bgOpacity=Math.max(t,0),this.bg&&(this.bg.style.opacity=String(this.bgOpacity*this.options.bgOpacity))}mouseDetected(){var t;this.hasMouse||(this.hasMouse=!0,null===(t=this.element)||void 0===t||t.classList.add("pswp--has_mouse"))}_handlePageResize(){this.updateSize(),/iPhone|iPad|iPod/i.test(window.navigator.userAgent)&&setTimeout((()=>{this.updateSize()}),500)}_updatePageScrollOffset(){this.setScrollOffset(0,window.pageYOffset)}setScrollOffset(t,i){this.offset.x=t,this.offset.y=i,this.dispatch("updateScrollOffset")}_createMainStructure(){this.element=f("pswp","div"),this.element.setAttribute("tabindex","-1"),this.element.setAttribute("role","dialog"),this.template=this.element,this.bg=f("pswp__bg","div",this.element),this.scrollWrap=f("pswp__scroll-wrap","section",this.element),this.container=f("pswp__container","div",this.scrollWrap),this.scrollWrap.setAttribute("aria-roledescription","carousel"),this.container.setAttribute("aria-live","off"),this.container.setAttribute("id","pswp__items"),this.mainScroll.appendHolders(),this.ui=new zt(this),this.ui.init(),(this.options.appendToEl||document.body).appendChild(this.element)}getThumbBounds(){return Zt(this.currIndex,this.currSlide?this.currSlide.data:this._initialItemData,this)}canLoop(){return this.options.loop&&this.getNumItems()>2}_prepareOptions(t){return window.matchMedia("(prefers-reduced-motion), (update: slow)").matches&&(t.showHideAnimationType="none",t.zoomAnimationDuration=0),{...Vt,...t}}}export{$t as default}; \ No newline at end of file diff --git a/_astro/preload-helper.BiBI96sQ.js b/_astro/preload-helper.BiBI96sQ.js new file mode 100644 index 0000000..5375211 --- /dev/null +++ b/_astro/preload-helper.BiBI96sQ.js @@ -0,0 +1 @@ +const f="modulepreload",h=function(e){return"/"+e},l={},v=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){document.getElementsByTagName("link");const e=document.querySelector("meta[property=csp-nonce]"),n=e?.nonce||e?.getAttribute("nonce");r=Promise.all(t.map((e=>{if((e=h(e))in l)return;l[e]=!0;const t=e.endsWith(".css"),r=t?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${e}"]${r}`))return;const o=document.createElement("link");return o.rel=t?"stylesheet":f,t||(o.as="script",o.crossOrigin=""),o.href=e,n&&o.setAttribute("nonce",n),document.head.appendChild(o),t?new Promise(((t,n)=>{o.addEventListener("load",t),o.addEventListener("error",(()=>n(new Error(`Unable to preload CSS for ${e}`))))})):void 0})))}return r.then((()=>e())).catch((e=>{const t=new Event("vite:preloadError",{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}))};export{v as _}; \ No newline at end of file diff --git a/_astro/roboto-cyrillic-400-normal.BiRJyiea.woff2 b/_astro/roboto-cyrillic-400-normal.BiRJyiea.woff2 new file mode 100644 index 0000000..a4962e9 Binary files /dev/null and b/_astro/roboto-cyrillic-400-normal.BiRJyiea.woff2 differ diff --git a/_astro/roboto-cyrillic-400-normal.JN0iKxGs.woff b/_astro/roboto-cyrillic-400-normal.JN0iKxGs.woff new file mode 100644 index 0000000..44e012a Binary files /dev/null and b/_astro/roboto-cyrillic-400-normal.JN0iKxGs.woff differ diff --git a/_astro/roboto-cyrillic-500-normal.YnJLGrUm.woff b/_astro/roboto-cyrillic-500-normal.YnJLGrUm.woff new file mode 100644 index 0000000..281affc Binary files /dev/null and b/_astro/roboto-cyrillic-500-normal.YnJLGrUm.woff differ diff --git a/_astro/roboto-cyrillic-500-normal._hamcpv8.woff2 b/_astro/roboto-cyrillic-500-normal._hamcpv8.woff2 new file mode 100644 index 0000000..26c8c8c Binary files /dev/null and b/_astro/roboto-cyrillic-500-normal._hamcpv8.woff2 differ diff --git a/_astro/roboto-cyrillic-700-normal.BJaAVvFw.woff b/_astro/roboto-cyrillic-700-normal.BJaAVvFw.woff new file mode 100644 index 0000000..1ebc045 Binary files /dev/null and b/_astro/roboto-cyrillic-700-normal.BJaAVvFw.woff differ diff --git a/_astro/roboto-cyrillic-700-normal.jruQITdB.woff2 b/_astro/roboto-cyrillic-700-normal.jruQITdB.woff2 new file mode 100644 index 0000000..41637e5 Binary files /dev/null and b/_astro/roboto-cyrillic-700-normal.jruQITdB.woff2 differ diff --git a/_astro/roboto-cyrillic-ext-400-normal.D76n7Daw.woff2 b/_astro/roboto-cyrillic-ext-400-normal.D76n7Daw.woff2 new file mode 100644 index 0000000..e3d708f Binary files /dev/null and b/_astro/roboto-cyrillic-ext-400-normal.D76n7Daw.woff2 differ diff --git a/_astro/roboto-cyrillic-ext-400-normal.b0JluIOJ.woff b/_astro/roboto-cyrillic-ext-400-normal.b0JluIOJ.woff new file mode 100644 index 0000000..6994a4d Binary files /dev/null and b/_astro/roboto-cyrillic-ext-400-normal.b0JluIOJ.woff differ diff --git a/_astro/roboto-cyrillic-ext-500-normal.37WQE4S0.woff b/_astro/roboto-cyrillic-ext-500-normal.37WQE4S0.woff new file mode 100644 index 0000000..76b4607 Binary files /dev/null and b/_astro/roboto-cyrillic-ext-500-normal.37WQE4S0.woff differ diff --git a/_astro/roboto-cyrillic-ext-500-normal.BJvL3D7h.woff2 b/_astro/roboto-cyrillic-ext-500-normal.BJvL3D7h.woff2 new file mode 100644 index 0000000..70865a5 Binary files /dev/null and b/_astro/roboto-cyrillic-ext-500-normal.BJvL3D7h.woff2 differ diff --git a/_astro/roboto-cyrillic-ext-700-normal.CyZgh00P.woff2 b/_astro/roboto-cyrillic-ext-700-normal.CyZgh00P.woff2 new file mode 100644 index 0000000..660850e Binary files /dev/null and b/_astro/roboto-cyrillic-ext-700-normal.CyZgh00P.woff2 differ diff --git a/_astro/roboto-cyrillic-ext-700-normal.DXzexxfu.woff b/_astro/roboto-cyrillic-ext-700-normal.DXzexxfu.woff new file mode 100644 index 0000000..1994356 Binary files /dev/null and b/_astro/roboto-cyrillic-ext-700-normal.DXzexxfu.woff differ diff --git a/_astro/roboto-greek-400-normal.IIc_WWwF.woff b/_astro/roboto-greek-400-normal.IIc_WWwF.woff new file mode 100644 index 0000000..f8226bb Binary files /dev/null and b/_astro/roboto-greek-400-normal.IIc_WWwF.woff differ diff --git a/_astro/roboto-greek-400-normal.LPh2sqOm.woff2 b/_astro/roboto-greek-400-normal.LPh2sqOm.woff2 new file mode 100644 index 0000000..a7f32b6 Binary files /dev/null and b/_astro/roboto-greek-400-normal.LPh2sqOm.woff2 differ diff --git a/_astro/roboto-greek-500-normal.Bg8BLohm.woff2 b/_astro/roboto-greek-500-normal.Bg8BLohm.woff2 new file mode 100644 index 0000000..ae4de2f Binary files /dev/null and b/_astro/roboto-greek-500-normal.Bg8BLohm.woff2 differ diff --git a/_astro/roboto-greek-500-normal.CdRewbqV.woff b/_astro/roboto-greek-500-normal.CdRewbqV.woff new file mode 100644 index 0000000..a6edbba Binary files /dev/null and b/_astro/roboto-greek-500-normal.CdRewbqV.woff differ diff --git a/_astro/roboto-greek-700-normal.1IZ-NEfb.woff b/_astro/roboto-greek-700-normal.1IZ-NEfb.woff new file mode 100644 index 0000000..26c5994 Binary files /dev/null and b/_astro/roboto-greek-700-normal.1IZ-NEfb.woff differ diff --git a/_astro/roboto-greek-700-normal.Bs05n1ZH.woff2 b/_astro/roboto-greek-700-normal.Bs05n1ZH.woff2 new file mode 100644 index 0000000..19fc4b1 Binary files /dev/null and b/_astro/roboto-greek-700-normal.Bs05n1ZH.woff2 differ diff --git a/_astro/roboto-latin-400-normal.BVyCgWwA.woff b/_astro/roboto-latin-400-normal.BVyCgWwA.woff new file mode 100644 index 0000000..4333e5a Binary files /dev/null and b/_astro/roboto-latin-400-normal.BVyCgWwA.woff differ diff --git a/_astro/roboto-latin-400-normal.DXyFPIdK.woff2 b/_astro/roboto-latin-400-normal.DXyFPIdK.woff2 new file mode 100644 index 0000000..2d7b215 Binary files /dev/null and b/_astro/roboto-latin-400-normal.DXyFPIdK.woff2 differ diff --git a/_astro/roboto-latin-500-normal.C6iW8rdg.woff2 b/_astro/roboto-latin-500-normal.C6iW8rdg.woff2 new file mode 100644 index 0000000..88c1773 Binary files /dev/null and b/_astro/roboto-latin-500-normal.C6iW8rdg.woff2 differ diff --git a/_astro/roboto-latin-500-normal.rpP1_v3s.woff b/_astro/roboto-latin-500-normal.rpP1_v3s.woff new file mode 100644 index 0000000..cae9ed1 Binary files /dev/null and b/_astro/roboto-latin-500-normal.rpP1_v3s.woff differ diff --git a/_astro/roboto-latin-700-normal.BWcFiwQV.woff b/_astro/roboto-latin-700-normal.BWcFiwQV.woff new file mode 100644 index 0000000..83c45bc Binary files /dev/null and b/_astro/roboto-latin-700-normal.BWcFiwQV.woff differ diff --git a/_astro/roboto-latin-700-normal.CbYYDfWS.woff2 b/_astro/roboto-latin-700-normal.CbYYDfWS.woff2 new file mode 100644 index 0000000..22f6f53 Binary files /dev/null and b/_astro/roboto-latin-700-normal.CbYYDfWS.woff2 differ diff --git a/_astro/roboto-latin-ext-400-normal.BSFkPfbf.woff b/_astro/roboto-latin-ext-400-normal.BSFkPfbf.woff new file mode 100644 index 0000000..3658dd2 Binary files /dev/null and b/_astro/roboto-latin-ext-400-normal.BSFkPfbf.woff differ diff --git a/_astro/roboto-latin-ext-400-normal.DgXbz5gU.woff2 b/_astro/roboto-latin-ext-400-normal.DgXbz5gU.woff2 new file mode 100644 index 0000000..20c87e6 Binary files /dev/null and b/_astro/roboto-latin-ext-400-normal.DgXbz5gU.woff2 differ diff --git a/_astro/roboto-latin-ext-500-normal.DvHxAkTn.woff b/_astro/roboto-latin-ext-500-normal.DvHxAkTn.woff new file mode 100644 index 0000000..c40790e Binary files /dev/null and b/_astro/roboto-latin-ext-500-normal.DvHxAkTn.woff differ diff --git a/_astro/roboto-latin-ext-500-normal.OQJhyaXd.woff2 b/_astro/roboto-latin-ext-500-normal.OQJhyaXd.woff2 new file mode 100644 index 0000000..c8dc755 Binary files /dev/null and b/_astro/roboto-latin-ext-500-normal.OQJhyaXd.woff2 differ diff --git a/_astro/roboto-latin-ext-700-normal.Ba-CAIIA.woff b/_astro/roboto-latin-ext-700-normal.Ba-CAIIA.woff new file mode 100644 index 0000000..2ed8a11 Binary files /dev/null and b/_astro/roboto-latin-ext-700-normal.Ba-CAIIA.woff differ diff --git a/_astro/roboto-latin-ext-700-normal.DchBbzVz.woff2 b/_astro/roboto-latin-ext-700-normal.DchBbzVz.woff2 new file mode 100644 index 0000000..327eb66 Binary files /dev/null and b/_astro/roboto-latin-ext-700-normal.DchBbzVz.woff2 differ diff --git a/_astro/roboto-vietnamese-400-normal.D5pJwT9g.woff b/_astro/roboto-vietnamese-400-normal.D5pJwT9g.woff new file mode 100644 index 0000000..cdeb26c Binary files /dev/null and b/_astro/roboto-vietnamese-400-normal.D5pJwT9g.woff differ diff --git a/_astro/roboto-vietnamese-400-normal.DhTUfTw_.woff2 b/_astro/roboto-vietnamese-400-normal.DhTUfTw_.woff2 new file mode 100644 index 0000000..cfd043d Binary files /dev/null and b/_astro/roboto-vietnamese-400-normal.DhTUfTw_.woff2 differ diff --git a/_astro/roboto-vietnamese-500-normal.LvuCHq7y.woff b/_astro/roboto-vietnamese-500-normal.LvuCHq7y.woff new file mode 100644 index 0000000..3a0c0f7 Binary files /dev/null and b/_astro/roboto-vietnamese-500-normal.LvuCHq7y.woff differ diff --git a/_astro/roboto-vietnamese-500-normal.p0V0BAAE.woff2 b/_astro/roboto-vietnamese-500-normal.p0V0BAAE.woff2 new file mode 100644 index 0000000..34c639c Binary files /dev/null and b/_astro/roboto-vietnamese-500-normal.p0V0BAAE.woff2 differ diff --git a/_astro/roboto-vietnamese-700-normal.B4Nagvlm.woff b/_astro/roboto-vietnamese-700-normal.B4Nagvlm.woff new file mode 100644 index 0000000..595fe84 Binary files /dev/null and b/_astro/roboto-vietnamese-700-normal.B4Nagvlm.woff differ diff --git a/_astro/roboto-vietnamese-700-normal.CBbheh0s.woff2 b/_astro/roboto-vietnamese-700-normal.CBbheh0s.woff2 new file mode 100644 index 0000000..c175453 Binary files /dev/null and b/_astro/roboto-vietnamese-700-normal.CBbheh0s.woff2 differ diff --git a/_astro/setting-utils.H_x_02w0.js b/_astro/setting-utils.H_x_02w0.js new file mode 100644 index 0000000..77d6b2a --- /dev/null +++ b/_astro/setting-utils.H_x_02w0.js @@ -0,0 +1 @@ +const o="light",r="dark",a="auto",s=a;function c(){const e=document.getElementById("config-carrier");return Number.parseInt(e?.dataset.hue||"250")}function u(){const e=localStorage.getItem("hue");return e?Number.parseInt(e):c()}function m(e){localStorage.setItem("hue",String(e));const t=document.querySelector(":root");t&&t.style.setProperty("--hue",String(e))}function n(e){switch(e){case o:document.documentElement.classList.remove("dark");break;case r:document.documentElement.classList.add("dark");break;case a:window.matchMedia("(prefers-color-scheme: dark)").matches?document.documentElement.classList.add("dark"):document.documentElement.classList.remove("dark")}}function d(e){localStorage.setItem("theme",e),n(e)}function l(){return localStorage.getItem("theme")||s}export{a as A,r as D,o as L,c as a,l as b,d as c,n as d,u as g,m as s}; \ No newline at end of file diff --git a/_astro/translation.Cj0Okkzk.js b/_astro/translation.Cj0Okkzk.js new file mode 100644 index 0000000..04fb6ea --- /dev/null +++ b/_astro/translation.Cj0Okkzk.js @@ -0,0 +1 @@ +import{e as p,a as K,z as Q,b as X,j as M,k as O,s as Y}from"./zh_TW.Cn8XYgkS.js";function N(){}function Z(t,n){for(const e in n)t[e]=n[e];return t}function D(t){return t()}function P(){return Object.create(null)}function x(t){t.forEach(D)}function I(t){return"function"==typeof t}function Nt(t,n){return t!=t?n==n:t!==n||t&&"object"==typeof t||"function"==typeof t}function tt(t){return 0===Object.keys(t).length}function At(t,n,e,o){if(t){const i=G(t,n,e,o);return t[0](i)}}function G(t,n,e,o){return t[1]&&o?Z(e.ctx.slice(),t[1](o(n))):e.ctx}function kt(t,n,e,o){if(t[2]&&o){const i=t[2](o(e));if(void 0===n.dirty)return i;if("object"==typeof i){const t=[],e=Math.max(n.dirty.length,i.length);for(let o=0;o32){const n=[],e=t.ctx.length/32;for(let t=0;t>1);e(i)<=o?t=i+1:n=i}return t}function st(t){if(t.hydrate_init)return;t.hydrate_init=!0;let n=t.childNodes;if("HEAD"===t.nodeName){const t=[];for(let e=0;e0&&n[e[i]].claim_order<=r?i+1:it(1,i,(t=>n[e[t]].claim_order),r))-1;o[t]=e[c]+1;const s=c+1;e[s]=t,i=Math.max(s,i)}const r=[],c=[];let s=n.length-1;for(let t=e[i]+1;0!=t;t=o[t-1]){for(r.push(n[t-1]);s>=t;s--)c.push(n[s]);s--}for(;s>=0;s--)c.push(n[s]);r.reverse(),c.sort(((t,n)=>t.claim_order-n.claim_order));for(let n=0,e=0;n=r[e].claim_order;)e++;const o=et.removeEventListener(n,e,o)}function F(t,n,e){null==e?t.removeAttribute(n):t.getAttribute(n)!==e&&t.setAttribute(n,e)}const ot=["width","height"];function Ht(t,n){const e=Object.getOwnPropertyDescriptors(t.__proto__);for(const o in n)null==n[o]?t.removeAttribute(o):"style"===o?t.style.cssText=n[o]:"__value"===o?t.value=t[o]=n[o]:e[o]&&e[o].set&&-1===ot.indexOf(o)?t[o]=n[o]:F(t,o,n[o])}function zt(t,n){for(const e in n)F(t,e,n[e])}function Bt(t){return""===t?null:+t}function at(t){return Array.from(t.childNodes)}function U(t){void 0===t.claim_info&&(t.claim_info={last_index:0,total_claimed:0})}function V(t,n,e,o,i=!1){U(t);const r=(()=>{for(let o=t.claim_info.last_index;o=0;o--){const r=t[o];if(n(r)){const n=e(r);return void 0===n?t.splice(o,1):t[o]=n,i?void 0===n&&t.claim_info.last_index--:t.claim_info.last_index=o,r}}return o()})();return r.claim_order=t.claim_info.total_claimed,t.claim_info.total_claimed+=1,r}function W(t,n,e,o){return V(t,(t=>t.nodeName===n),(t=>{const n=[];for(let o=0;ot.removeAttribute(n)))}),(()=>o(n)))}function Dt(t,n,e){return W(t,n,e,R)}function It(t,n,e){return W(t,n,e,q)}function ut(t,n){return V(t,(t=>3===t.nodeType),(t=>{const e=""+n;if(t.data.startsWith(e)){if(t.data.length!==e.length)return t.splitText(e.length)}else t.data=e}),(()=>j(n)),!0)}function Gt(t){return ut(t," ")}function H(t,n,e){for(let o=e;o{const i=t.$$.callbacks[n];if(i){const r=ft(n,e,{cancelable:o});return i.slice().forEach((n=>{n.call(t,r)})),!r.defaultPrevented}return!0}}const h=[],z=[];let m=[];const B=[],dt=Promise.resolve();let A=!1;function ht(){A||(A=!0,dt.then(J))}function k(t){m.push(t)}const T=new Set;let d=0;function J(){if(0!==d)return;const t=y;do{try{for(;d-1===t.indexOf(o)?n.push(o):e.push(o))),e.forEach((t=>t())),m=n}const $=new Set;let _;function Qt(){_={r:0,c:[],p:_}}function Xt(){_.r||x(_.c),_=_.p}function gt(t,n){t&&t.i&&($.delete(t),t.i(n))}function Yt(t,n,e,o){if(t&&t.o){if($.has(t))return;$.add(t),_.c.push((()=>{$.delete(t),o&&(e&&t.d(1),o())})),t.o(n)}else o&&o()}function Zt(t){t&&t.c()}function tn(t,n){t&&t.l(n)}function yt(t,n,e){const{fragment:o,after_update:i}=t.$$;o&&o.m(n,e),k((()=>{const n=t.$$.on_mount.map(D).filter(I);t.$$.on_destroy?t.$$.on_destroy.push(...n):x(n),t.$$.on_mount=[]})),i.forEach(k)}function xt(t,n){const e=t.$$;null!==e.fragment&&(pt(e.after_update),x(e.on_destroy),e.fragment&&e.fragment.d(n),e.on_destroy=e.fragment=null,e.ctx=[])}function wt(t,n){-1===t.$$.dirty[0]&&(h.push(t),ht(),t.$$.dirty.fill(0)),t.$$.dirty[n/31|0]|=1<{const r=o.length?o[0]:e;return l.ctx&&i(l.ctx[n],l.ctx[n]=r)&&(!l.skip_bound&&l.bound[n]&&l.bound[n](r),u&&wt(t,n)),e})):[],l.update(),u=!0,x(l.before_update),l.fragment=!!o&&o(l.ctx),n.target){if(n.hydrate){nt();const t=at(n.target);l.fragment&&l.fragment.l(t),t.forEach(v)}else l.fragment&&l.fragment.c();n.intro&>(t.$$.fragment),yt(t,n.target,n.anchor),et(),J()}g(a)}class en{$$=void 0;$$set=void 0;$destroy(){xt(this,1),this.$destroy=N}$on(t,n){if(!I(n))return N;const e=this.$$.callbacks[t]||(this.$$.callbacks[t]=[]);return e.push(n),()=>{const t=e.indexOf(n);-1!==t&&e.splice(t,1)}}$set(t){this.$$set&&!tt(t)&&(this.$$.skip_bound=!0,this.$$set(t),this.$$.skip_bound=!1)}}const $t="4";typeof window<"u"&&(window.__svelte||(window.__svelte={v:new Set})).v.add($t);const vt=p,bt={es:K,en:p,en_us:p,en_gb:p,en_au:p,zh_cn:Q,zh_tw:X,ja:M,ja_jp:M,ko:O,ko_kr:O};function Et(t){return bt[t.toLowerCase()]||vt}function sn(t){return Et(Y.lang)[t]}export{Bt as A,Xt as B,Ct as C,Wt as D,Rt as E,Qt as F,Ot as G,E as H,N as I,Jt as J,Z as K,St as L,Ht as M,q as N,It as O,zt as P,Kt as Q,Zt as R,en as S,tn as T,yt as U,xt as V,sn as a,Mt as b,At as c,Dt as d,R as e,at as f,ut as g,Gt as h,nn as i,v as j,F as k,Vt as l,Ut as m,ct as n,rt as o,Ft as p,Pt as q,Lt as r,Nt as s,j as t,jt as u,kt as v,qt as w,gt as x,Yt as y,x as z}; \ No newline at end of file diff --git a/_astro/url-utils.Co0GbPFH.js b/_astro/url-utils.Co0GbPFH.js new file mode 100644 index 0000000..43a7081 --- /dev/null +++ b/_astro/url-utils.Co0GbPFH.js @@ -0,0 +1 @@ +import"./zh_TW.Cn8XYgkS.js";function i(e,r){return e.replace(/^\/|\/$/g,"").toLowerCase()===r.replace(/^\/|\/$/g,"").toLowerCase()}function t(...e){return e.join("/").replace(/\/+/g,"/")}function c(e){return t("","/",e)}export{i as p,c as u}; \ No newline at end of file diff --git a/_astro/zh_TW.Cn8XYgkS.js b/_astro/zh_TW.Cn8XYgkS.js new file mode 100644 index 0000000..9c8b5f9 --- /dev/null +++ b/_astro/zh_TW.Cn8XYgkS.js @@ -0,0 +1 @@ +var o=(o=>(o.home="home",o.about="about",o.archive="archive",o.search="search",o.tags="tags",o.categories="categories",o.recentPosts="recentPosts",o.comments="comments",o.untitled="untitled",o.uncategorized="uncategorized",o.noTags="noTags",o.wordCount="wordCount",o.wordsCount="wordsCount",o.minuteCount="minuteCount",o.minutesCount="minutesCount",o.postCount="postCount",o.postsCount="postsCount",o.themeColor="themeColor",o.lightMode="lightMode",o.darkMode="darkMode",o.systemMode="systemMode",o.more="more",o.author="author",o.publishedAt="publishedAt",o.license="license",o))(o||{}),e=(o=>(o[o.Home=0]="Home",o[o.Archive=1]="Archive",o[o.About=2]="About",o))(e||{});const s={title:"平淡生活",subtitle:"退休前的牛马生活",lang:"zh_CN",themeColor:{hue:250,fixed:!1},banner:{enable:!0,src:"assets/images/demo-banner.png",position:"center",credit:{enable:!1,text:"",url:""}},favicon:[]};e.Home,e.Archive,e.About;const u={[o.home]:"Home",[o.about]:"About",[o.archive]:"Archive",[o.search]:"Search",[o.tags]:"Tags",[o.categories]:"Categories",[o.recentPosts]:"Recent Posts",[o.comments]:"Comments",[o.untitled]:"Untitled",[o.uncategorized]:"Uncategorized",[o.noTags]:"No Tags",[o.wordCount]:"word",[o.wordsCount]:"words",[o.minuteCount]:"minute",[o.minutesCount]:"minutes",[o.postCount]:"post",[o.postsCount]:"posts",[o.themeColor]:"Theme Color",[o.lightMode]:"Light",[o.darkMode]:"Dark",[o.systemMode]:"System",[o.more]:"More",[o.author]:"Author",[o.publishedAt]:"Published at",[o.license]:"License"},r={[o.home]:"Inicio",[o.about]:"Sobre mí",[o.archive]:"Archivo",[o.search]:"Buscar",[o.tags]:"Etiquetas",[o.categories]:"Categorías",[o.recentPosts]:"Publicaciones recientes",[o.comments]:"Comentarios",[o.untitled]:"Sin título",[o.uncategorized]:"Sin categoría",[o.noTags]:"Sin etiquetas",[o.wordCount]:"palabra",[o.wordsCount]:"palabras",[o.minuteCount]:"minuto",[o.minutesCount]:"minutos",[o.postCount]:"publicación",[o.postsCount]:"publicaciones",[o.themeColor]:"Color del tema",[o.lightMode]:"Claro",[o.darkMode]:"Oscuro",[o.systemMode]:"Sistema",[o.more]:"Más",[o.author]:"Autor",[o.publishedAt]:"Publicado el",[o.license]:"Licencia"},n={[o.home]:"Home",[o.about]:"About",[o.archive]:"Archive",[o.search]:"検索",[o.tags]:"タグ",[o.categories]:"カテゴリ",[o.recentPosts]:"最近の投稿",[o.comments]:"コメント",[o.untitled]:"タイトルなし",[o.uncategorized]:"カテゴリなし",[o.noTags]:"タグなし",[o.wordCount]:"文字",[o.wordsCount]:"文字",[o.minuteCount]:"分",[o.minutesCount]:"分",[o.postCount]:"件の投稿",[o.postsCount]:"件の投稿",[o.themeColor]:"テーマカラー",[o.lightMode]:"ライト",[o.darkMode]:"ダーク",[o.systemMode]:"システム",[o.more]:"もっと",[o.author]:"作者",[o.publishedAt]:"公開日",[o.license]:"ライセンス"},a={[o.home]:"홈",[o.about]:"소개",[o.archive]:"아카이브",[o.search]:"검색",[o.tags]:"태그",[o.categories]:"카테고리",[o.recentPosts]:"최근 게시물",[o.comments]:"댓글",[o.untitled]:"제목 없음",[o.uncategorized]:"분류되지 않음",[o.noTags]:"태그 없음",[o.wordCount]:"단어",[o.wordsCount]:"단어",[o.minuteCount]:"분",[o.minutesCount]:"분",[o.postCount]:"게시물",[o.postsCount]:"게시물",[o.themeColor]:"테마 색상",[o.lightMode]:"밝은 모드",[o.darkMode]:"어두운 모드",[o.systemMode]:"시스템 모드",[o.more]:"더 보기",[o.author]:"저자",[o.publishedAt]:"게시일",[o.license]:"라이선스"},i={[o.home]:"主页",[o.about]:"关于",[o.archive]:"归档",[o.search]:"搜索",[o.tags]:"标签",[o.categories]:"分类",[o.recentPosts]:"最新文章",[o.comments]:"评论",[o.untitled]:"无标题",[o.uncategorized]:"未分类",[o.noTags]:"无标签",[o.wordCount]:"字",[o.wordsCount]:"字",[o.minuteCount]:"分钟",[o.minutesCount]:"分钟",[o.postCount]:"篇文章",[o.postsCount]:"篇文章",[o.themeColor]:"主题色",[o.lightMode]:"亮色",[o.darkMode]:"暗色",[o.systemMode]:"跟随系统",[o.more]:"更多",[o.author]:"作者",[o.publishedAt]:"发布于",[o.license]:"许可协议"},c={[o.home]:"首頁",[o.about]:"關於",[o.archive]:"彙整",[o.search]:"搜尋",[o.tags]:"標籤",[o.categories]:"分類",[o.recentPosts]:"最新文章",[o.comments]:"評論",[o.untitled]:"無標題",[o.uncategorized]:"未分類",[o.noTags]:"無標籤",[o.wordCount]:"字",[o.wordsCount]:"字",[o.minuteCount]:"分鐘",[o.minutesCount]:"分鐘",[o.postCount]:"篇文章",[o.postsCount]:"篇文章",[o.themeColor]:"主題色",[o.lightMode]:"亮色",[o.darkMode]:"暗色",[o.systemMode]:"跟隨系統",[o.more]:"更多",[o.author]:"作者",[o.publishedAt]:"發佈於",[o.license]:"許可協議"};export{o as I,r as a,c as b,u as e,n as j,a as k,s,i as z}; \ No newline at end of file diff --git a/about/index.html b/about/index.html new file mode 100644 index 0000000..8b512d3 --- /dev/null +++ b/about/index.html @@ -0,0 +1 @@ +关于 - 平淡生活
\ No newline at end of file diff --git a/archive/category/uncategorized/index.html b/archive/category/uncategorized/index.html new file mode 100644 index 0000000..1dac17f --- /dev/null +++ b/archive/category/uncategorized/index.html @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git "a/archive/category/\345\210\206\344\272\253/index.html" "b/archive/category/\345\210\206\344\272\253/index.html" new file mode 100644 index 0000000..a72b953 --- /dev/null +++ "b/archive/category/\345\210\206\344\272\253/index.html" @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git "a/archive/category/\345\215\232\345\256\242/index.html" "b/archive/category/\345\215\232\345\256\242/index.html" new file mode 100644 index 0000000..cf9135d --- /dev/null +++ "b/archive/category/\345\215\232\345\256\242/index.html" @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git "a/archive/category/\346\216\250\350\215\220/index.html" "b/archive/category/\346\216\250\350\215\220/index.html" new file mode 100644 index 0000000..ef6a407 --- /dev/null +++ "b/archive/category/\346\216\250\350\215\220/index.html" @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git "a/archive/category/\351\232\217\347\254\224/index.html" "b/archive/category/\351\232\217\347\254\224/index.html" new file mode 100644 index 0000000..97dc159 --- /dev/null +++ "b/archive/category/\351\232\217\347\254\224/index.html" @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git "a/archive/category/\351\273\230\350\256\244/index.html" "b/archive/category/\351\273\230\350\256\244/index.html" new file mode 100644 index 0000000..8eecad0 --- /dev/null +++ "b/archive/category/\351\273\230\350\256\244/index.html" @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git a/archive/index.html b/archive/index.html new file mode 100644 index 0000000..7c9bcb0 --- /dev/null +++ b/archive/index.html @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git a/archive/tag/Alist/index.html b/archive/tag/Alist/index.html new file mode 100644 index 0000000..ca9fed5 --- /dev/null +++ b/archive/tag/Alist/index.html @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git a/archive/tag/Artalk/index.html b/archive/tag/Artalk/index.html new file mode 100644 index 0000000..bb88df5 --- /dev/null +++ b/archive/tag/Artalk/index.html @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git a/archive/tag/Astro/index.html b/archive/tag/Astro/index.html new file mode 100644 index 0000000..9ba29ca --- /dev/null +++ b/archive/tag/Astro/index.html @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git a/archive/tag/CommentsByQQ/index.html b/archive/tag/CommentsByQQ/index.html new file mode 100644 index 0000000..93eea95 --- /dev/null +++ b/archive/tag/CommentsByQQ/index.html @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git a/archive/tag/Docker/index.html b/archive/tag/Docker/index.html new file mode 100644 index 0000000..62eefbf --- /dev/null +++ b/archive/tag/Docker/index.html @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git a/archive/tag/Github/index.html b/archive/tag/Github/index.html new file mode 100644 index 0000000..a143efe --- /dev/null +++ b/archive/tag/Github/index.html @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git a/archive/tag/Gotosocial/index.html b/archive/tag/Gotosocial/index.html new file mode 100644 index 0000000..a27960f --- /dev/null +++ b/archive/tag/Gotosocial/index.html @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git a/archive/tag/Hexo/index.html b/archive/tag/Hexo/index.html new file mode 100644 index 0000000..7772526 --- /dev/null +++ b/archive/tag/Hexo/index.html @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git a/archive/tag/Linux/index.html b/archive/tag/Linux/index.html new file mode 100644 index 0000000..2b38930 --- /dev/null +++ b/archive/tag/Linux/index.html @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git a/archive/tag/Mariadb/index.html b/archive/tag/Mariadb/index.html new file mode 100644 index 0000000..cf3fd76 --- /dev/null +++ b/archive/tag/Mariadb/index.html @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git a/archive/tag/Memos/index.html b/archive/tag/Memos/index.html new file mode 100644 index 0000000..267bd4f --- /dev/null +++ b/archive/tag/Memos/index.html @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git a/archive/tag/Pleroma/index.html b/archive/tag/Pleroma/index.html new file mode 100644 index 0000000..6f869a3 --- /dev/null +++ b/archive/tag/Pleroma/index.html @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git "a/archive/tag/QQ\346\234\272\345\231\250\344\272\272/index.html" "b/archive/tag/QQ\346\234\272\345\231\250\344\272\272/index.html" new file mode 100644 index 0000000..e7f59a2 --- /dev/null +++ "b/archive/tag/QQ\346\234\272\345\231\250\344\272\272/index.html" @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git a/archive/tag/SForum/index.html b/archive/tag/SForum/index.html new file mode 100644 index 0000000..fe94da4 --- /dev/null +++ b/archive/tag/SForum/index.html @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git a/archive/tag/Twikoo/index.html b/archive/tag/Twikoo/index.html new file mode 100644 index 0000000..a1c036c --- /dev/null +++ b/archive/tag/Twikoo/index.html @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git a/archive/tag/V2RAY/index.html b/archive/tag/V2RAY/index.html new file mode 100644 index 0000000..61df4db --- /dev/null +++ b/archive/tag/V2RAY/index.html @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git a/archive/tag/VPS/index.html b/archive/tag/VPS/index.html new file mode 100644 index 0000000..241600d --- /dev/null +++ b/archive/tag/VPS/index.html @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git a/archive/tag/amd/index.html b/archive/tag/amd/index.html new file mode 100644 index 0000000..c30627f --- /dev/null +++ b/archive/tag/amd/index.html @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git a/archive/tag/artalk/index.html b/archive/tag/artalk/index.html new file mode 100644 index 0000000..acb740c --- /dev/null +++ b/archive/tag/artalk/index.html @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git a/archive/tag/centos/index.html b/archive/tag/centos/index.html new file mode 100644 index 0000000..bfaa9ef --- /dev/null +++ b/archive/tag/centos/index.html @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git a/archive/tag/chajian/index.html b/archive/tag/chajian/index.html new file mode 100644 index 0000000..7f16a1c --- /dev/null +++ b/archive/tag/chajian/index.html @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git a/archive/tag/chatgpt/index.html b/archive/tag/chatgpt/index.html new file mode 100644 index 0000000..a1209c8 --- /dev/null +++ b/archive/tag/chatgpt/index.html @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git a/archive/tag/cloud torrent/index.html b/archive/tag/cloud torrent/index.html new file mode 100644 index 0000000..946dbfd --- /dev/null +++ b/archive/tag/cloud torrent/index.html @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git a/archive/tag/clover/index.html b/archive/tag/clover/index.html new file mode 100644 index 0000000..574723c --- /dev/null +++ b/archive/tag/clover/index.html @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git a/archive/tag/edid/index.html b/archive/tag/edid/index.html new file mode 100644 index 0000000..427fc2d --- /dev/null +++ b/archive/tag/edid/index.html @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git a/archive/tag/fly.io/index.html b/archive/tag/fly.io/index.html new file mode 100644 index 0000000..3388fa3 --- /dev/null +++ b/archive/tag/fly.io/index.html @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git a/archive/tag/fuwari/index.html b/archive/tag/fuwari/index.html new file mode 100644 index 0000000..46ec581 --- /dev/null +++ b/archive/tag/fuwari/index.html @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git a/archive/tag/hackintool/index.html b/archive/tag/hackintool/index.html new file mode 100644 index 0000000..e26d10e --- /dev/null +++ b/archive/tag/hackintool/index.html @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git a/archive/tag/hexo/index.html b/archive/tag/hexo/index.html new file mode 100644 index 0000000..34ebcef --- /dev/null +++ b/archive/tag/hexo/index.html @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git a/archive/tag/lede/index.html b/archive/tag/lede/index.html new file mode 100644 index 0000000..e56ecfa --- /dev/null +++ b/archive/tag/lede/index.html @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git a/archive/tag/linux/index.html b/archive/tag/linux/index.html new file mode 100644 index 0000000..1031581 --- /dev/null +++ b/archive/tag/linux/index.html @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git a/archive/tag/macos/index.html b/archive/tag/macos/index.html new file mode 100644 index 0000000..9f8d397 --- /dev/null +++ b/archive/tag/macos/index.html @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git a/archive/tag/mastodon/index.html b/archive/tag/mastodon/index.html new file mode 100644 index 0000000..1c84746 --- /dev/null +++ b/archive/tag/mastodon/index.html @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git a/archive/tag/memos/index.html b/archive/tag/memos/index.html new file mode 100644 index 0000000..45655ed --- /dev/null +++ b/archive/tag/memos/index.html @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git a/archive/tag/office/index.html b/archive/tag/office/index.html new file mode 100644 index 0000000..a24a4ff --- /dev/null +++ b/archive/tag/office/index.html @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git a/archive/tag/opencore/index.html b/archive/tag/opencore/index.html new file mode 100644 index 0000000..cc3e053 --- /dev/null +++ b/archive/tag/opencore/index.html @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git a/archive/tag/openwrt/index.html b/archive/tag/openwrt/index.html new file mode 100644 index 0000000..6f75a6a --- /dev/null +++ b/archive/tag/openwrt/index.html @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git a/archive/tag/samsung/index.html b/archive/tag/samsung/index.html new file mode 100644 index 0000000..5a93ed0 --- /dev/null +++ b/archive/tag/samsung/index.html @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git a/archive/tag/torrent/index.html b/archive/tag/torrent/index.html new file mode 100644 index 0000000..1d0fadd --- /dev/null +++ b/archive/tag/torrent/index.html @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git a/archive/tag/typecho/index.html b/archive/tag/typecho/index.html new file mode 100644 index 0000000..add80e0 --- /dev/null +++ b/archive/tag/typecho/index.html @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git a/archive/tag/webhook/index.html b/archive/tag/webhook/index.html new file mode 100644 index 0000000..72ad245 --- /dev/null +++ b/archive/tag/webhook/index.html @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git a/archive/tag/windows/index.html b/archive/tag/windows/index.html new file mode 100644 index 0000000..69fc721 --- /dev/null +++ b/archive/tag/windows/index.html @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git "a/archive/tag/\344\270\213\350\275\275/index.html" "b/archive/tag/\344\270\213\350\275\275/index.html" new file mode 100644 index 0000000..12f1526 --- /dev/null +++ "b/archive/tag/\344\270\213\350\275\275/index.html" @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git "a/archive/tag/\344\270\273\346\216\247/index.html" "b/archive/tag/\344\270\273\346\216\247/index.html" new file mode 100644 index 0000000..4751477 --- /dev/null +++ "b/archive/tag/\344\270\273\346\216\247/index.html" @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git "a/archive/tag/\345\205\215\351\251\261/index.html" "b/archive/tag/\345\205\215\351\251\261/index.html" new file mode 100644 index 0000000..08d6f7d --- /dev/null +++ "b/archive/tag/\345\205\215\351\251\261/index.html" @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git "a/archive/tag/\345\215\232\345\256\242/index.html" "b/archive/tag/\345\215\232\345\256\242/index.html" new file mode 100644 index 0000000..4379779 --- /dev/null +++ "b/archive/tag/\345\215\232\345\256\242/index.html" @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git "a/archive/tag/\345\216\202\345\225\206/index.html" "b/archive/tag/\345\216\202\345\225\206/index.html" new file mode 100644 index 0000000..66c38e6 --- /dev/null +++ "b/archive/tag/\345\216\202\345\225\206/index.html" @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git "a/archive/tag/\345\221\275\344\273\244/index.html" "b/archive/tag/\345\221\275\344\273\244/index.html" new file mode 100644 index 0000000..c653535 --- /dev/null +++ "b/archive/tag/\345\221\275\344\273\244/index.html" @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git "a/archive/tag/\345\233\272\346\200\201/index.html" "b/archive/tag/\345\233\272\346\200\201/index.html" new file mode 100644 index 0000000..82ae27a --- /dev/null +++ "b/archive/tag/\345\233\272\346\200\201/index.html" @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git "a/archive/tag/\345\255\227\344\275\223/index.html" "b/archive/tag/\345\255\227\344\275\223/index.html" new file mode 100644 index 0000000..7dd3138 --- /dev/null +++ "b/archive/tag/\345\255\227\344\275\223/index.html" @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git "a/archive/tag/\345\274\200\345\215\241/index.html" "b/archive/tag/\345\274\200\345\215\241/index.html" new file mode 100644 index 0000000..c309d2b --- /dev/null +++ "b/archive/tag/\345\274\200\345\215\241/index.html" @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git "a/archive/tag/\346\225\231\347\250\213/index.html" "b/archive/tag/\346\225\231\347\250\213/index.html" new file mode 100644 index 0000000..af1cb25 --- /dev/null +++ "b/archive/tag/\346\225\231\347\250\213/index.html" @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git "a/archive/tag/\346\230\276\345\215\241/index.html" "b/archive/tag/\346\230\276\345\215\241/index.html" new file mode 100644 index 0000000..6d28b1b --- /dev/null +++ "b/archive/tag/\346\230\276\345\215\241/index.html" @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git "a/archive/tag/\346\242\257\345\255\220/index.html" "b/archive/tag/\346\242\257\345\255\220/index.html" new file mode 100644 index 0000000..f5316b3 --- /dev/null +++ "b/archive/tag/\346\242\257\345\255\220/index.html" @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git "a/archive/tag/\346\263\250\345\206\214/index.html" "b/archive/tag/\346\263\250\345\206\214/index.html" new file mode 100644 index 0000000..217e7cb --- /dev/null +++ "b/archive/tag/\346\263\250\345\206\214/index.html" @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git "a/archive/tag/\347\224\237\346\264\273/index.html" "b/archive/tag/\347\224\237\346\264\273/index.html" new file mode 100644 index 0000000..4af9df6 --- /dev/null +++ "b/archive/tag/\347\224\237\346\264\273/index.html" @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git "a/archive/tag/\347\241\254\347\233\230/index.html" "b/archive/tag/\347\241\254\347\233\230/index.html" new file mode 100644 index 0000000..302b3fb --- /dev/null +++ "b/archive/tag/\347\241\254\347\233\230/index.html" @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git "a/archive/tag/\347\241\254\347\233\230\347\233\222/index.html" "b/archive/tag/\347\241\254\347\233\230\347\233\222/index.html" new file mode 100644 index 0000000..8e02c66 --- /dev/null +++ "b/archive/tag/\347\241\254\347\233\230\347\233\222/index.html" @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git "a/archive/tag/\347\243\201\345\212\233/index.html" "b/archive/tag/\347\243\201\345\212\233/index.html" new file mode 100644 index 0000000..f84c65e --- /dev/null +++ "b/archive/tag/\347\243\201\345\212\233/index.html" @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git "a/archive/tag/\347\247\221\345\255\246\344\270\212\347\275\221/index.html" "b/archive/tag/\347\247\221\345\255\246\344\270\212\347\275\221/index.html" new file mode 100644 index 0000000..52bd07f --- /dev/null +++ "b/archive/tag/\347\247\221\345\255\246\344\270\212\347\275\221/index.html" @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git "a/archive/tag/\347\254\224\350\256\260\346\234\254/index.html" "b/archive/tag/\347\254\224\350\256\260\346\234\254/index.html" new file mode 100644 index 0000000..570a733 --- /dev/null +++ "b/archive/tag/\347\254\224\350\256\260\346\234\254/index.html" @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git "a/archive/tag/\350\207\252\345\212\250\345\214\226/index.html" "b/archive/tag/\350\207\252\345\212\250\345\214\226/index.html" new file mode 100644 index 0000000..c9dea9b --- /dev/null +++ "b/archive/tag/\350\207\252\345\212\250\345\214\226/index.html" @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git "a/archive/tag/\350\231\232\346\213\237\344\277\241\347\224\250\345\215\241/index.html" "b/archive/tag/\350\231\232\346\213\237\344\277\241\347\224\250\345\215\241/index.html" new file mode 100644 index 0000000..b3b87a1 --- /dev/null +++ "b/archive/tag/\350\231\232\346\213\237\344\277\241\347\224\250\345\215\241/index.html" @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git "a/archive/tag/\350\247\202\345\275\261/index.html" "b/archive/tag/\350\247\202\345\275\261/index.html" new file mode 100644 index 0000000..74649b5 --- /dev/null +++ "b/archive/tag/\350\247\202\345\275\261/index.html" @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git "a/archive/tag/\350\257\204\350\256\272/index.html" "b/archive/tag/\350\257\204\350\256\272/index.html" new file mode 100644 index 0000000..ed5d8fd --- /dev/null +++ "b/archive/tag/\350\257\204\350\256\272/index.html" @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git "a/archive/tag/\350\261\206\347\223\243/index.html" "b/archive/tag/\350\261\206\347\223\243/index.html" new file mode 100644 index 0000000..c31166a --- /dev/null +++ "b/archive/tag/\350\261\206\347\223\243/index.html" @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git "a/archive/tag/\350\275\257\350\267\257\347\224\261/index.html" "b/archive/tag/\350\275\257\350\267\257\347\224\261/index.html" new file mode 100644 index 0000000..5bae321 --- /dev/null +++ "b/archive/tag/\350\275\257\350\267\257\347\224\261/index.html" @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git "a/archive/tag/\351\203\250\347\275\262/index.html" "b/archive/tag/\351\203\250\347\275\262/index.html" new file mode 100644 index 0000000..1996a6d --- /dev/null +++ "b/archive/tag/\351\203\250\347\275\262/index.html" @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git "a/archive/tag/\351\230\277\351\207\214/index.html" "b/archive/tag/\351\230\277\351\207\214/index.html" new file mode 100644 index 0000000..d84331e --- /dev/null +++ "b/archive/tag/\351\230\277\351\207\214/index.html" @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git "a/archive/tag/\351\230\277\351\207\214\346\202\237\347\251\272/index.html" "b/archive/tag/\351\230\277\351\207\214\346\202\237\347\251\272/index.html" new file mode 100644 index 0000000..b3d731b --- /dev/null +++ "b/archive/tag/\351\230\277\351\207\214\346\202\237\347\251\272/index.html" @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git "a/archive/tag/\351\234\236\351\271\234\346\226\207\346\245\267/index.html" "b/archive/tag/\351\234\236\351\271\234\346\226\207\346\245\267/index.html" new file mode 100644 index 0000000..75fde22 --- /dev/null +++ "b/archive/tag/\351\234\236\351\271\234\346\226\207\346\245\267/index.html" @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git "a/archive/tag/\351\273\221\350\213\271\346\236\234/index.html" "b/archive/tag/\351\273\221\350\213\271\346\236\234/index.html" new file mode 100644 index 0000000..e4e2aa3 --- /dev/null +++ "b/archive/tag/\351\273\221\350\213\271\346\236\234/index.html" @@ -0,0 +1 @@ +归档 - 平淡生活
\ No newline at end of file diff --git a/favicon/favicon-dark-128.png b/favicon/favicon-dark-128.png new file mode 100644 index 0000000..7422ce8 Binary files /dev/null and b/favicon/favicon-dark-128.png differ diff --git a/favicon/favicon-dark-180.png b/favicon/favicon-dark-180.png new file mode 100644 index 0000000..de0f89b Binary files /dev/null and b/favicon/favicon-dark-180.png differ diff --git a/favicon/favicon-dark-192.png b/favicon/favicon-dark-192.png new file mode 100644 index 0000000..e8d4a2d Binary files /dev/null and b/favicon/favicon-dark-192.png differ diff --git a/favicon/favicon-dark-32.png b/favicon/favicon-dark-32.png new file mode 100644 index 0000000..fce9b80 Binary files /dev/null and b/favicon/favicon-dark-32.png differ diff --git a/favicon/favicon-light-128.png b/favicon/favicon-light-128.png new file mode 100644 index 0000000..83dc7c7 Binary files /dev/null and b/favicon/favicon-light-128.png differ diff --git a/favicon/favicon-light-180.png b/favicon/favicon-light-180.png new file mode 100644 index 0000000..bbb666b Binary files /dev/null and b/favicon/favicon-light-180.png differ diff --git a/favicon/favicon-light-192.png b/favicon/favicon-light-192.png new file mode 100644 index 0000000..2853594 Binary files /dev/null and b/favicon/favicon-light-192.png differ diff --git a/favicon/favicon-light-32.png b/favicon/favicon-light-32.png new file mode 100644 index 0000000..327ee0b Binary files /dev/null and b/favicon/favicon-light-32.png differ diff --git a/index.html b/index.html new file mode 100644 index 0000000..8eafd55 --- /dev/null +++ b/index.html @@ -0,0 +1 @@ +平淡生活 - 退休前的牛马生活
从Hexo到Astro
本文简单讲述了如何从从Hexo到Astro的过程,并使用脚本转换Front-matter
413 字
|
2 分钟
LEDE 软路由安装“koolss”离线插件包提示含非法关键字的解决方法
这篇文章介绍了如何通过SSH登录到软路由,并指导用户安装一个名为koolss的科学上网插件。具体步骤包括下载插件文件,其链接为[https://blog-1312096806.cos.ap-guangzhou.myqcloud.com/halo/koolss_2.2.2.tar.gz]。
30 字
|
1 分钟
给Memos添加Artalk评论
2024-10-10
这篇文章介绍了如何为Memos v0.16.1版本添加Twikoo评论功能,并提供了自定义脚本和样式的更新说明。文章中包括了具体的代码替换步骤,如将’.resource-wrapper’替换为’.gap-2’或’.memo-wrapper’,以及如何隐藏评论数的操作指南。此外,还提到了适用于Memos 0.15.1版本以下的更新提醒。
230 字
|
1 分钟
给Memos添加Twikoo评论
2024-10-10
这篇文章介绍了如何更新和自定义脚本以适应不同版本的memos应用。文章提到了2023年10月23日对脚本的更新,使其适用于memos v0.16.1版本,以及之前的几次更新。此外,文章还提到了由于官方已经添加了评论图标,因此不再需要通过CSS添加图标。最后,文章指出了在memos升级到0.15.1版本后,某些自定义脚本无法使用的情况。
577 字
|
3 分钟
Artalk评论使用QQ机器人通知
这篇文章介绍了如何使用QQ机器人接收Artalk的评论通知。文章首先确保Artalk和QQ机器人都已部署完成,然后通过配置QQ机器人的HTTP服务和中间服务MESSAGE-PUSHER来实现消息推送。接着,文章详细说明了如何在MESSAGE-PUSHER中配置通道和接口,并将生成的Webhook地址填入Artalk的Webhook设置中,从而实现Artalk评论时QQ机器人的通知功能。
417 字
|
2 分钟
使用Docker快速部署一个memos的QQ机器人
这篇文章介绍了如何使用Docker快速部署一个QQ机器人,并通过对接Nonebot实现Memos机器人的功能。文章详细描述了准备工作,包括安装Docker、获取QQ账号和Memos账号。接着,文章提供了具体的部署步骤,包括创建docker-compose.yml文件并运行相关命令来启动QQ机器人。最后,文章还简要说明了如何使用这个机器人,包括绑定账号和发送消息到Memos的功能。
500 字
|
3 分钟
给博客增加一个观影页面
这篇文章介绍了作者如何通过自定义代码构建一个观影页面,而不是使用插件。文章详细描述了项目的GitHub地址,并提供了具体的步骤:首先根据提供的GitHub链接创建接口,然后在博客根目录下新建movies文件夹和index.md文件,接着创建movies.js文件和movies.css文件,最后完成页面的构建。
471 字
|
2 分钟
通过取子集的方式压缩霞鹜文楷字体
这篇文章介绍了如何使用Python的fonttools库对字体文件进行子集化和压缩。首先,通过pip安装fonttools库,然后使用该库对指定的字体文件进行子集化处理,保留特定的字符集,从而将字体文件从11M压缩到1.7M左右。接着,文章还提到了如何安装并使用brotli模块进一步压缩字体文件,并将最终结果转换为woff2格式,大小约为840kb。整个过程涉及输入和输出文件路径的定义,以及具体的命令操作。
199 字
|
1 分钟
\ No newline at end of file diff --git a/memos/index.html b/memos/index.html new file mode 100644 index 0000000..8b2c9d3 --- /dev/null +++ b/memos/index.html @@ -0,0 +1 @@ +关于 - 平淡生活
\ No newline at end of file diff --git a/pagefind/fragment/zh-cn_132efad.pf_fragment b/pagefind/fragment/zh-cn_132efad.pf_fragment new file mode 100644 index 0000000..9768a66 Binary files /dev/null and b/pagefind/fragment/zh-cn_132efad.pf_fragment differ diff --git a/pagefind/fragment/zh-cn_134c853.pf_fragment b/pagefind/fragment/zh-cn_134c853.pf_fragment new file mode 100644 index 0000000..57fe38b Binary files /dev/null and b/pagefind/fragment/zh-cn_134c853.pf_fragment differ diff --git a/pagefind/fragment/zh-cn_19cddff.pf_fragment b/pagefind/fragment/zh-cn_19cddff.pf_fragment new file mode 100644 index 0000000..2918163 Binary files /dev/null and b/pagefind/fragment/zh-cn_19cddff.pf_fragment differ diff --git a/pagefind/fragment/zh-cn_1a8275e.pf_fragment b/pagefind/fragment/zh-cn_1a8275e.pf_fragment new file mode 100644 index 0000000..4fe23f9 Binary files /dev/null and b/pagefind/fragment/zh-cn_1a8275e.pf_fragment differ diff --git a/pagefind/fragment/zh-cn_2f932f1.pf_fragment b/pagefind/fragment/zh-cn_2f932f1.pf_fragment new file mode 100644 index 0000000..0ded135 Binary files /dev/null and b/pagefind/fragment/zh-cn_2f932f1.pf_fragment differ diff --git a/pagefind/fragment/zh-cn_33b9c4c.pf_fragment b/pagefind/fragment/zh-cn_33b9c4c.pf_fragment new file mode 100644 index 0000000..b2dffd6 Binary files /dev/null and b/pagefind/fragment/zh-cn_33b9c4c.pf_fragment differ diff --git a/pagefind/fragment/zh-cn_3db86ea.pf_fragment b/pagefind/fragment/zh-cn_3db86ea.pf_fragment new file mode 100644 index 0000000..04d7d5f Binary files /dev/null and b/pagefind/fragment/zh-cn_3db86ea.pf_fragment differ diff --git a/pagefind/fragment/zh-cn_3e8c931.pf_fragment b/pagefind/fragment/zh-cn_3e8c931.pf_fragment new file mode 100644 index 0000000..24c4e39 Binary files /dev/null and b/pagefind/fragment/zh-cn_3e8c931.pf_fragment differ diff --git a/pagefind/fragment/zh-cn_3ebe61e.pf_fragment b/pagefind/fragment/zh-cn_3ebe61e.pf_fragment new file mode 100644 index 0000000..6b4f1de Binary files /dev/null and b/pagefind/fragment/zh-cn_3ebe61e.pf_fragment differ diff --git a/pagefind/fragment/zh-cn_3f0add1.pf_fragment b/pagefind/fragment/zh-cn_3f0add1.pf_fragment new file mode 100644 index 0000000..c41bdb1 Binary files /dev/null and b/pagefind/fragment/zh-cn_3f0add1.pf_fragment differ diff --git a/pagefind/fragment/zh-cn_40849fe.pf_fragment b/pagefind/fragment/zh-cn_40849fe.pf_fragment new file mode 100644 index 0000000..5cd0cbd Binary files /dev/null and b/pagefind/fragment/zh-cn_40849fe.pf_fragment differ diff --git a/pagefind/fragment/zh-cn_4b2da88.pf_fragment b/pagefind/fragment/zh-cn_4b2da88.pf_fragment new file mode 100644 index 0000000..96cb7b8 Binary files /dev/null and b/pagefind/fragment/zh-cn_4b2da88.pf_fragment differ diff --git a/pagefind/fragment/zh-cn_529f2eb.pf_fragment b/pagefind/fragment/zh-cn_529f2eb.pf_fragment new file mode 100644 index 0000000..bac7d64 Binary files /dev/null and b/pagefind/fragment/zh-cn_529f2eb.pf_fragment differ diff --git a/pagefind/fragment/zh-cn_562d5a5.pf_fragment b/pagefind/fragment/zh-cn_562d5a5.pf_fragment new file mode 100644 index 0000000..a7b4ab0 Binary files /dev/null and b/pagefind/fragment/zh-cn_562d5a5.pf_fragment differ diff --git a/pagefind/fragment/zh-cn_629cc43.pf_fragment b/pagefind/fragment/zh-cn_629cc43.pf_fragment new file mode 100644 index 0000000..e6e5492 Binary files /dev/null and b/pagefind/fragment/zh-cn_629cc43.pf_fragment differ diff --git a/pagefind/fragment/zh-cn_6969e61.pf_fragment b/pagefind/fragment/zh-cn_6969e61.pf_fragment new file mode 100644 index 0000000..a7583f8 Binary files /dev/null and b/pagefind/fragment/zh-cn_6969e61.pf_fragment differ diff --git a/pagefind/fragment/zh-cn_6dc274a.pf_fragment b/pagefind/fragment/zh-cn_6dc274a.pf_fragment new file mode 100644 index 0000000..9851ebb Binary files /dev/null and b/pagefind/fragment/zh-cn_6dc274a.pf_fragment differ diff --git a/pagefind/fragment/zh-cn_70d3590.pf_fragment b/pagefind/fragment/zh-cn_70d3590.pf_fragment new file mode 100644 index 0000000..16d6123 Binary files /dev/null and b/pagefind/fragment/zh-cn_70d3590.pf_fragment differ diff --git a/pagefind/fragment/zh-cn_732d712.pf_fragment b/pagefind/fragment/zh-cn_732d712.pf_fragment new file mode 100644 index 0000000..10c9ce1 Binary files /dev/null and b/pagefind/fragment/zh-cn_732d712.pf_fragment differ diff --git a/pagefind/fragment/zh-cn_7348fd9.pf_fragment b/pagefind/fragment/zh-cn_7348fd9.pf_fragment new file mode 100644 index 0000000..3bd4a48 Binary files /dev/null and b/pagefind/fragment/zh-cn_7348fd9.pf_fragment differ diff --git a/pagefind/fragment/zh-cn_7355a5e.pf_fragment b/pagefind/fragment/zh-cn_7355a5e.pf_fragment new file mode 100644 index 0000000..4fb135b Binary files /dev/null and b/pagefind/fragment/zh-cn_7355a5e.pf_fragment differ diff --git a/pagefind/fragment/zh-cn_7512446.pf_fragment b/pagefind/fragment/zh-cn_7512446.pf_fragment new file mode 100644 index 0000000..df761bd Binary files /dev/null and b/pagefind/fragment/zh-cn_7512446.pf_fragment differ diff --git a/pagefind/fragment/zh-cn_7c9073d.pf_fragment b/pagefind/fragment/zh-cn_7c9073d.pf_fragment new file mode 100644 index 0000000..0f2e91e Binary files /dev/null and b/pagefind/fragment/zh-cn_7c9073d.pf_fragment differ diff --git a/pagefind/fragment/zh-cn_7d5aa7f.pf_fragment b/pagefind/fragment/zh-cn_7d5aa7f.pf_fragment new file mode 100644 index 0000000..676b0c6 Binary files /dev/null and b/pagefind/fragment/zh-cn_7d5aa7f.pf_fragment differ diff --git a/pagefind/fragment/zh-cn_808dce9.pf_fragment b/pagefind/fragment/zh-cn_808dce9.pf_fragment new file mode 100644 index 0000000..e2f5fd1 Binary files /dev/null and b/pagefind/fragment/zh-cn_808dce9.pf_fragment differ diff --git a/pagefind/fragment/zh-cn_8663bbb.pf_fragment b/pagefind/fragment/zh-cn_8663bbb.pf_fragment new file mode 100644 index 0000000..b806ac2 Binary files /dev/null and b/pagefind/fragment/zh-cn_8663bbb.pf_fragment differ diff --git a/pagefind/fragment/zh-cn_87146ef.pf_fragment b/pagefind/fragment/zh-cn_87146ef.pf_fragment new file mode 100644 index 0000000..86d279a Binary files /dev/null and b/pagefind/fragment/zh-cn_87146ef.pf_fragment differ diff --git a/pagefind/fragment/zh-cn_8741bb7.pf_fragment b/pagefind/fragment/zh-cn_8741bb7.pf_fragment new file mode 100644 index 0000000..f10c861 Binary files /dev/null and b/pagefind/fragment/zh-cn_8741bb7.pf_fragment differ diff --git a/pagefind/fragment/zh-cn_8b3f866.pf_fragment b/pagefind/fragment/zh-cn_8b3f866.pf_fragment new file mode 100644 index 0000000..927a656 Binary files /dev/null and b/pagefind/fragment/zh-cn_8b3f866.pf_fragment differ diff --git a/pagefind/fragment/zh-cn_8c4c887.pf_fragment b/pagefind/fragment/zh-cn_8c4c887.pf_fragment new file mode 100644 index 0000000..f16847d Binary files /dev/null and b/pagefind/fragment/zh-cn_8c4c887.pf_fragment differ diff --git a/pagefind/fragment/zh-cn_a8715c5.pf_fragment b/pagefind/fragment/zh-cn_a8715c5.pf_fragment new file mode 100644 index 0000000..79c9abc Binary files /dev/null and b/pagefind/fragment/zh-cn_a8715c5.pf_fragment differ diff --git a/pagefind/fragment/zh-cn_ae74c8f.pf_fragment b/pagefind/fragment/zh-cn_ae74c8f.pf_fragment new file mode 100644 index 0000000..a781d66 Binary files /dev/null and b/pagefind/fragment/zh-cn_ae74c8f.pf_fragment differ diff --git a/pagefind/fragment/zh-cn_b47e3f2.pf_fragment b/pagefind/fragment/zh-cn_b47e3f2.pf_fragment new file mode 100644 index 0000000..1f942da Binary files /dev/null and b/pagefind/fragment/zh-cn_b47e3f2.pf_fragment differ diff --git a/pagefind/fragment/zh-cn_bb993eb.pf_fragment b/pagefind/fragment/zh-cn_bb993eb.pf_fragment new file mode 100644 index 0000000..f35cfcf Binary files /dev/null and b/pagefind/fragment/zh-cn_bb993eb.pf_fragment differ diff --git a/pagefind/fragment/zh-cn_c7571f1.pf_fragment b/pagefind/fragment/zh-cn_c7571f1.pf_fragment new file mode 100644 index 0000000..a4282cc Binary files /dev/null and b/pagefind/fragment/zh-cn_c7571f1.pf_fragment differ diff --git a/pagefind/fragment/zh-cn_d5603d2.pf_fragment b/pagefind/fragment/zh-cn_d5603d2.pf_fragment new file mode 100644 index 0000000..3b6a59c Binary files /dev/null and b/pagefind/fragment/zh-cn_d5603d2.pf_fragment differ diff --git a/pagefind/fragment/zh-cn_dda3d32.pf_fragment b/pagefind/fragment/zh-cn_dda3d32.pf_fragment new file mode 100644 index 0000000..f91d8d9 Binary files /dev/null and b/pagefind/fragment/zh-cn_dda3d32.pf_fragment differ diff --git a/pagefind/fragment/zh-cn_def2957.pf_fragment b/pagefind/fragment/zh-cn_def2957.pf_fragment new file mode 100644 index 0000000..3e6c347 Binary files /dev/null and b/pagefind/fragment/zh-cn_def2957.pf_fragment differ diff --git a/pagefind/fragment/zh-cn_e557cdb.pf_fragment b/pagefind/fragment/zh-cn_e557cdb.pf_fragment new file mode 100644 index 0000000..ac816b6 Binary files /dev/null and b/pagefind/fragment/zh-cn_e557cdb.pf_fragment differ diff --git a/pagefind/fragment/zh-cn_e7e3ced.pf_fragment b/pagefind/fragment/zh-cn_e7e3ced.pf_fragment new file mode 100644 index 0000000..7abc08d Binary files /dev/null and b/pagefind/fragment/zh-cn_e7e3ced.pf_fragment differ diff --git a/pagefind/fragment/zh-cn_ec6fbda.pf_fragment b/pagefind/fragment/zh-cn_ec6fbda.pf_fragment new file mode 100644 index 0000000..68ec699 Binary files /dev/null and b/pagefind/fragment/zh-cn_ec6fbda.pf_fragment differ diff --git a/pagefind/fragment/zh-cn_ecb0b86.pf_fragment b/pagefind/fragment/zh-cn_ecb0b86.pf_fragment new file mode 100644 index 0000000..009283c Binary files /dev/null and b/pagefind/fragment/zh-cn_ecb0b86.pf_fragment differ diff --git a/pagefind/fragment/zh-cn_ee64ac1.pf_fragment b/pagefind/fragment/zh-cn_ee64ac1.pf_fragment new file mode 100644 index 0000000..224a88e Binary files /dev/null and b/pagefind/fragment/zh-cn_ee64ac1.pf_fragment differ diff --git a/pagefind/fragment/zh-cn_f95f458.pf_fragment b/pagefind/fragment/zh-cn_f95f458.pf_fragment new file mode 100644 index 0000000..587a478 Binary files /dev/null and b/pagefind/fragment/zh-cn_f95f458.pf_fragment differ diff --git a/pagefind/index/zh-cn_2896aee.pf_index b/pagefind/index/zh-cn_2896aee.pf_index new file mode 100644 index 0000000..b2e5886 Binary files /dev/null and b/pagefind/index/zh-cn_2896aee.pf_index differ diff --git a/pagefind/index/zh-cn_c4e153b.pf_index b/pagefind/index/zh-cn_c4e153b.pf_index new file mode 100644 index 0000000..546db62 Binary files /dev/null and b/pagefind/index/zh-cn_c4e153b.pf_index differ diff --git a/pagefind/pagefind-entry.json b/pagefind/pagefind-entry.json new file mode 100644 index 0000000..67537dd --- /dev/null +++ b/pagefind/pagefind-entry.json @@ -0,0 +1 @@ +{"version":"1.1.0","languages":{"zh-cn":{"hash":"zh-cn_6d4975d6ba4b8","wasm":null,"page_count":44}}} \ No newline at end of file diff --git a/pagefind/pagefind-highlight.js b/pagefind/pagefind-highlight.js new file mode 100644 index 0000000..c823fbf --- /dev/null +++ b/pagefind/pagefind-highlight.js @@ -0,0 +1,1069 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); + +// node_modules/mark.js/dist/mark.js +var require_mark = __commonJS({ + "node_modules/mark.js/dist/mark.js"(exports, module) { + (function(global, factory) { + typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory() : typeof define === "function" && define.amd ? define(factory) : global.Mark = factory(); + })(exports, function() { + "use strict"; + var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function(obj) { + return typeof obj; + } : function(obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }; + var classCallCheck = function(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + }; + var createClass = function() { + function defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) + descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + return function(Constructor, protoProps, staticProps) { + if (protoProps) + defineProperties(Constructor.prototype, protoProps); + if (staticProps) + defineProperties(Constructor, staticProps); + return Constructor; + }; + }(); + var _extends = Object.assign || function(target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + return target; + }; + var DOMIterator = function() { + function DOMIterator2(ctx) { + var iframes = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true; + var exclude = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : []; + var iframesTimeout = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : 5e3; + classCallCheck(this, DOMIterator2); + this.ctx = ctx; + this.iframes = iframes; + this.exclude = exclude; + this.iframesTimeout = iframesTimeout; + } + createClass(DOMIterator2, [{ + key: "getContexts", + value: function getContexts() { + var ctx = void 0, filteredCtx = []; + if (typeof this.ctx === "undefined" || !this.ctx) { + ctx = []; + } else if (NodeList.prototype.isPrototypeOf(this.ctx)) { + ctx = Array.prototype.slice.call(this.ctx); + } else if (Array.isArray(this.ctx)) { + ctx = this.ctx; + } else if (typeof this.ctx === "string") { + ctx = Array.prototype.slice.call(document.querySelectorAll(this.ctx)); + } else { + ctx = [this.ctx]; + } + ctx.forEach(function(ctx2) { + var isDescendant = filteredCtx.filter(function(contexts) { + return contexts.contains(ctx2); + }).length > 0; + if (filteredCtx.indexOf(ctx2) === -1 && !isDescendant) { + filteredCtx.push(ctx2); + } + }); + return filteredCtx; + } + }, { + key: "getIframeContents", + value: function getIframeContents(ifr, successFn) { + var errorFn = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : function() { + }; + var doc = void 0; + try { + var ifrWin = ifr.contentWindow; + doc = ifrWin.document; + if (!ifrWin || !doc) { + throw new Error("iframe inaccessible"); + } + } catch (e) { + errorFn(); + } + if (doc) { + successFn(doc); + } + } + }, { + key: "isIframeBlank", + value: function isIframeBlank(ifr) { + var bl = "about:blank", src = ifr.getAttribute("src").trim(), href = ifr.contentWindow.location.href; + return href === bl && src !== bl && src; + } + }, { + key: "observeIframeLoad", + value: function observeIframeLoad(ifr, successFn, errorFn) { + var _this = this; + var called = false, tout = null; + var listener = function listener2() { + if (called) { + return; + } + called = true; + clearTimeout(tout); + try { + if (!_this.isIframeBlank(ifr)) { + ifr.removeEventListener("load", listener2); + _this.getIframeContents(ifr, successFn, errorFn); + } + } catch (e) { + errorFn(); + } + }; + ifr.addEventListener("load", listener); + tout = setTimeout(listener, this.iframesTimeout); + } + }, { + key: "onIframeReady", + value: function onIframeReady(ifr, successFn, errorFn) { + try { + if (ifr.contentWindow.document.readyState === "complete") { + if (this.isIframeBlank(ifr)) { + this.observeIframeLoad(ifr, successFn, errorFn); + } else { + this.getIframeContents(ifr, successFn, errorFn); + } + } else { + this.observeIframeLoad(ifr, successFn, errorFn); + } + } catch (e) { + errorFn(); + } + } + }, { + key: "waitForIframes", + value: function waitForIframes(ctx, done) { + var _this2 = this; + var eachCalled = 0; + this.forEachIframe(ctx, function() { + return true; + }, function(ifr) { + eachCalled++; + _this2.waitForIframes(ifr.querySelector("html"), function() { + if (!--eachCalled) { + done(); + } + }); + }, function(handled) { + if (!handled) { + done(); + } + }); + } + }, { + key: "forEachIframe", + value: function forEachIframe(ctx, filter, each) { + var _this3 = this; + var end = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : function() { + }; + var ifr = ctx.querySelectorAll("iframe"), open = ifr.length, handled = 0; + ifr = Array.prototype.slice.call(ifr); + var checkEnd = function checkEnd2() { + if (--open <= 0) { + end(handled); + } + }; + if (!open) { + checkEnd(); + } + ifr.forEach(function(ifr2) { + if (DOMIterator2.matches(ifr2, _this3.exclude)) { + checkEnd(); + } else { + _this3.onIframeReady(ifr2, function(con) { + if (filter(ifr2)) { + handled++; + each(con); + } + checkEnd(); + }, checkEnd); + } + }); + } + }, { + key: "createIterator", + value: function createIterator(ctx, whatToShow, filter) { + return document.createNodeIterator(ctx, whatToShow, filter, false); + } + }, { + key: "createInstanceOnIframe", + value: function createInstanceOnIframe(contents) { + return new DOMIterator2(contents.querySelector("html"), this.iframes); + } + }, { + key: "compareNodeIframe", + value: function compareNodeIframe(node, prevNode, ifr) { + var compCurr = node.compareDocumentPosition(ifr), prev = Node.DOCUMENT_POSITION_PRECEDING; + if (compCurr & prev) { + if (prevNode !== null) { + var compPrev = prevNode.compareDocumentPosition(ifr), after = Node.DOCUMENT_POSITION_FOLLOWING; + if (compPrev & after) { + return true; + } + } else { + return true; + } + } + return false; + } + }, { + key: "getIteratorNode", + value: function getIteratorNode(itr) { + var prevNode = itr.previousNode(); + var node = void 0; + if (prevNode === null) { + node = itr.nextNode(); + } else { + node = itr.nextNode() && itr.nextNode(); + } + return { + prevNode, + node + }; + } + }, { + key: "checkIframeFilter", + value: function checkIframeFilter(node, prevNode, currIfr, ifr) { + var key = false, handled = false; + ifr.forEach(function(ifrDict, i) { + if (ifrDict.val === currIfr) { + key = i; + handled = ifrDict.handled; + } + }); + if (this.compareNodeIframe(node, prevNode, currIfr)) { + if (key === false && !handled) { + ifr.push({ + val: currIfr, + handled: true + }); + } else if (key !== false && !handled) { + ifr[key].handled = true; + } + return true; + } + if (key === false) { + ifr.push({ + val: currIfr, + handled: false + }); + } + return false; + } + }, { + key: "handleOpenIframes", + value: function handleOpenIframes(ifr, whatToShow, eCb, fCb) { + var _this4 = this; + ifr.forEach(function(ifrDict) { + if (!ifrDict.handled) { + _this4.getIframeContents(ifrDict.val, function(con) { + _this4.createInstanceOnIframe(con).forEachNode(whatToShow, eCb, fCb); + }); + } + }); + } + }, { + key: "iterateThroughNodes", + value: function iterateThroughNodes(whatToShow, ctx, eachCb, filterCb, doneCb) { + var _this5 = this; + var itr = this.createIterator(ctx, whatToShow, filterCb); + var ifr = [], elements = [], node = void 0, prevNode = void 0, retrieveNodes = function retrieveNodes2() { + var _getIteratorNode = _this5.getIteratorNode(itr); + prevNode = _getIteratorNode.prevNode; + node = _getIteratorNode.node; + return node; + }; + while (retrieveNodes()) { + if (this.iframes) { + this.forEachIframe(ctx, function(currIfr) { + return _this5.checkIframeFilter(node, prevNode, currIfr, ifr); + }, function(con) { + _this5.createInstanceOnIframe(con).forEachNode(whatToShow, function(ifrNode) { + return elements.push(ifrNode); + }, filterCb); + }); + } + elements.push(node); + } + elements.forEach(function(node2) { + eachCb(node2); + }); + if (this.iframes) { + this.handleOpenIframes(ifr, whatToShow, eachCb, filterCb); + } + doneCb(); + } + }, { + key: "forEachNode", + value: function forEachNode(whatToShow, each, filter) { + var _this6 = this; + var done = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : function() { + }; + var contexts = this.getContexts(); + var open = contexts.length; + if (!open) { + done(); + } + contexts.forEach(function(ctx) { + var ready = function ready2() { + _this6.iterateThroughNodes(whatToShow, ctx, each, filter, function() { + if (--open <= 0) { + done(); + } + }); + }; + if (_this6.iframes) { + _this6.waitForIframes(ctx, ready); + } else { + ready(); + } + }); + } + }], [{ + key: "matches", + value: function matches(element, selector) { + var selectors = typeof selector === "string" ? [selector] : selector, fn = element.matches || element.matchesSelector || element.msMatchesSelector || element.mozMatchesSelector || element.oMatchesSelector || element.webkitMatchesSelector; + if (fn) { + var match = false; + selectors.every(function(sel) { + if (fn.call(element, sel)) { + match = true; + return false; + } + return true; + }); + return match; + } else { + return false; + } + } + }]); + return DOMIterator2; + }(); + var Mark$1 = function() { + function Mark3(ctx) { + classCallCheck(this, Mark3); + this.ctx = ctx; + this.ie = false; + var ua = window.navigator.userAgent; + if (ua.indexOf("MSIE") > -1 || ua.indexOf("Trident") > -1) { + this.ie = true; + } + } + createClass(Mark3, [{ + key: "log", + value: function log(msg) { + var level = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "debug"; + var log2 = this.opt.log; + if (!this.opt.debug) { + return; + } + if ((typeof log2 === "undefined" ? "undefined" : _typeof(log2)) === "object" && typeof log2[level] === "function") { + log2[level]("mark.js: " + msg); + } + } + }, { + key: "escapeStr", + value: function escapeStr(str) { + return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); + } + }, { + key: "createRegExp", + value: function createRegExp(str) { + if (this.opt.wildcards !== "disabled") { + str = this.setupWildcardsRegExp(str); + } + str = this.escapeStr(str); + if (Object.keys(this.opt.synonyms).length) { + str = this.createSynonymsRegExp(str); + } + if (this.opt.ignoreJoiners || this.opt.ignorePunctuation.length) { + str = this.setupIgnoreJoinersRegExp(str); + } + if (this.opt.diacritics) { + str = this.createDiacriticsRegExp(str); + } + str = this.createMergedBlanksRegExp(str); + if (this.opt.ignoreJoiners || this.opt.ignorePunctuation.length) { + str = this.createJoinersRegExp(str); + } + if (this.opt.wildcards !== "disabled") { + str = this.createWildcardsRegExp(str); + } + str = this.createAccuracyRegExp(str); + return str; + } + }, { + key: "createSynonymsRegExp", + value: function createSynonymsRegExp(str) { + var syn = this.opt.synonyms, sens = this.opt.caseSensitive ? "" : "i", joinerPlaceholder = this.opt.ignoreJoiners || this.opt.ignorePunctuation.length ? "\0" : ""; + for (var index in syn) { + if (syn.hasOwnProperty(index)) { + var value = syn[index], k1 = this.opt.wildcards !== "disabled" ? this.setupWildcardsRegExp(index) : this.escapeStr(index), k2 = this.opt.wildcards !== "disabled" ? this.setupWildcardsRegExp(value) : this.escapeStr(value); + if (k1 !== "" && k2 !== "") { + str = str.replace(new RegExp("(" + this.escapeStr(k1) + "|" + this.escapeStr(k2) + ")", "gm" + sens), joinerPlaceholder + ("(" + this.processSynomyms(k1) + "|") + (this.processSynomyms(k2) + ")") + joinerPlaceholder); + } + } + } + return str; + } + }, { + key: "processSynomyms", + value: function processSynomyms(str) { + if (this.opt.ignoreJoiners || this.opt.ignorePunctuation.length) { + str = this.setupIgnoreJoinersRegExp(str); + } + return str; + } + }, { + key: "setupWildcardsRegExp", + value: function setupWildcardsRegExp(str) { + str = str.replace(/(?:\\)*\?/g, function(val) { + return val.charAt(0) === "\\" ? "?" : ""; + }); + return str.replace(/(?:\\)*\*/g, function(val) { + return val.charAt(0) === "\\" ? "*" : ""; + }); + } + }, { + key: "createWildcardsRegExp", + value: function createWildcardsRegExp(str) { + var spaces = this.opt.wildcards === "withSpaces"; + return str.replace(/\u0001/g, spaces ? "[\\S\\s]?" : "\\S?").replace(/\u0002/g, spaces ? "[\\S\\s]*?" : "\\S*"); + } + }, { + key: "setupIgnoreJoinersRegExp", + value: function setupIgnoreJoinersRegExp(str) { + return str.replace(/[^(|)\\]/g, function(val, indx, original) { + var nextChar = original.charAt(indx + 1); + if (/[(|)\\]/.test(nextChar) || nextChar === "") { + return val; + } else { + return val + "\0"; + } + }); + } + }, { + key: "createJoinersRegExp", + value: function createJoinersRegExp(str) { + var joiner = []; + var ignorePunctuation = this.opt.ignorePunctuation; + if (Array.isArray(ignorePunctuation) && ignorePunctuation.length) { + joiner.push(this.escapeStr(ignorePunctuation.join(""))); + } + if (this.opt.ignoreJoiners) { + joiner.push("\\u00ad\\u200b\\u200c\\u200d"); + } + return joiner.length ? str.split(/\u0000+/).join("[" + joiner.join("") + "]*") : str; + } + }, { + key: "createDiacriticsRegExp", + value: function createDiacriticsRegExp(str) { + var sens = this.opt.caseSensitive ? "" : "i", dct = this.opt.caseSensitive ? ["a\xE0\xE1\u1EA3\xE3\u1EA1\u0103\u1EB1\u1EAF\u1EB3\u1EB5\u1EB7\xE2\u1EA7\u1EA5\u1EA9\u1EAB\u1EAD\xE4\xE5\u0101\u0105", "A\xC0\xC1\u1EA2\xC3\u1EA0\u0102\u1EB0\u1EAE\u1EB2\u1EB4\u1EB6\xC2\u1EA6\u1EA4\u1EA8\u1EAA\u1EAC\xC4\xC5\u0100\u0104", "c\xE7\u0107\u010D", "C\xC7\u0106\u010C", "d\u0111\u010F", "D\u0110\u010E", "e\xE8\xE9\u1EBB\u1EBD\u1EB9\xEA\u1EC1\u1EBF\u1EC3\u1EC5\u1EC7\xEB\u011B\u0113\u0119", "E\xC8\xC9\u1EBA\u1EBC\u1EB8\xCA\u1EC0\u1EBE\u1EC2\u1EC4\u1EC6\xCB\u011A\u0112\u0118", "i\xEC\xED\u1EC9\u0129\u1ECB\xEE\xEF\u012B", "I\xCC\xCD\u1EC8\u0128\u1ECA\xCE\xCF\u012A", "l\u0142", "L\u0141", "n\xF1\u0148\u0144", "N\xD1\u0147\u0143", "o\xF2\xF3\u1ECF\xF5\u1ECD\xF4\u1ED3\u1ED1\u1ED5\u1ED7\u1ED9\u01A1\u1EDF\u1EE1\u1EDB\u1EDD\u1EE3\xF6\xF8\u014D", "O\xD2\xD3\u1ECE\xD5\u1ECC\xD4\u1ED2\u1ED0\u1ED4\u1ED6\u1ED8\u01A0\u1EDE\u1EE0\u1EDA\u1EDC\u1EE2\xD6\xD8\u014C", "r\u0159", "R\u0158", "s\u0161\u015B\u0219\u015F", "S\u0160\u015A\u0218\u015E", "t\u0165\u021B\u0163", "T\u0164\u021A\u0162", "u\xF9\xFA\u1EE7\u0169\u1EE5\u01B0\u1EEB\u1EE9\u1EED\u1EEF\u1EF1\xFB\xFC\u016F\u016B", "U\xD9\xDA\u1EE6\u0168\u1EE4\u01AF\u1EEA\u1EE8\u1EEC\u1EEE\u1EF0\xDB\xDC\u016E\u016A", "y\xFD\u1EF3\u1EF7\u1EF9\u1EF5\xFF", "Y\xDD\u1EF2\u1EF6\u1EF8\u1EF4\u0178", "z\u017E\u017C\u017A", "Z\u017D\u017B\u0179"] : ["a\xE0\xE1\u1EA3\xE3\u1EA1\u0103\u1EB1\u1EAF\u1EB3\u1EB5\u1EB7\xE2\u1EA7\u1EA5\u1EA9\u1EAB\u1EAD\xE4\xE5\u0101\u0105A\xC0\xC1\u1EA2\xC3\u1EA0\u0102\u1EB0\u1EAE\u1EB2\u1EB4\u1EB6\xC2\u1EA6\u1EA4\u1EA8\u1EAA\u1EAC\xC4\xC5\u0100\u0104", "c\xE7\u0107\u010DC\xC7\u0106\u010C", "d\u0111\u010FD\u0110\u010E", "e\xE8\xE9\u1EBB\u1EBD\u1EB9\xEA\u1EC1\u1EBF\u1EC3\u1EC5\u1EC7\xEB\u011B\u0113\u0119E\xC8\xC9\u1EBA\u1EBC\u1EB8\xCA\u1EC0\u1EBE\u1EC2\u1EC4\u1EC6\xCB\u011A\u0112\u0118", "i\xEC\xED\u1EC9\u0129\u1ECB\xEE\xEF\u012BI\xCC\xCD\u1EC8\u0128\u1ECA\xCE\xCF\u012A", "l\u0142L\u0141", "n\xF1\u0148\u0144N\xD1\u0147\u0143", "o\xF2\xF3\u1ECF\xF5\u1ECD\xF4\u1ED3\u1ED1\u1ED5\u1ED7\u1ED9\u01A1\u1EDF\u1EE1\u1EDB\u1EDD\u1EE3\xF6\xF8\u014DO\xD2\xD3\u1ECE\xD5\u1ECC\xD4\u1ED2\u1ED0\u1ED4\u1ED6\u1ED8\u01A0\u1EDE\u1EE0\u1EDA\u1EDC\u1EE2\xD6\xD8\u014C", "r\u0159R\u0158", "s\u0161\u015B\u0219\u015FS\u0160\u015A\u0218\u015E", "t\u0165\u021B\u0163T\u0164\u021A\u0162", "u\xF9\xFA\u1EE7\u0169\u1EE5\u01B0\u1EEB\u1EE9\u1EED\u1EEF\u1EF1\xFB\xFC\u016F\u016BU\xD9\xDA\u1EE6\u0168\u1EE4\u01AF\u1EEA\u1EE8\u1EEC\u1EEE\u1EF0\xDB\xDC\u016E\u016A", "y\xFD\u1EF3\u1EF7\u1EF9\u1EF5\xFFY\xDD\u1EF2\u1EF6\u1EF8\u1EF4\u0178", "z\u017E\u017C\u017AZ\u017D\u017B\u0179"]; + var handled = []; + str.split("").forEach(function(ch) { + dct.every(function(dct2) { + if (dct2.indexOf(ch) !== -1) { + if (handled.indexOf(dct2) > -1) { + return false; + } + str = str.replace(new RegExp("[" + dct2 + "]", "gm" + sens), "[" + dct2 + "]"); + handled.push(dct2); + } + return true; + }); + }); + return str; + } + }, { + key: "createMergedBlanksRegExp", + value: function createMergedBlanksRegExp(str) { + return str.replace(/[\s]+/gmi, "[\\s]+"); + } + }, { + key: "createAccuracyRegExp", + value: function createAccuracyRegExp(str) { + var _this = this; + var chars = "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~\xA1\xBF"; + var acc = this.opt.accuracy, val = typeof acc === "string" ? acc : acc.value, ls = typeof acc === "string" ? [] : acc.limiters, lsJoin = ""; + ls.forEach(function(limiter) { + lsJoin += "|" + _this.escapeStr(limiter); + }); + switch (val) { + case "partially": + default: + return "()(" + str + ")"; + case "complementary": + lsJoin = "\\s" + (lsJoin ? lsJoin : this.escapeStr(chars)); + return "()([^" + lsJoin + "]*" + str + "[^" + lsJoin + "]*)"; + case "exactly": + return "(^|\\s" + lsJoin + ")(" + str + ")(?=$|\\s" + lsJoin + ")"; + } + } + }, { + key: "getSeparatedKeywords", + value: function getSeparatedKeywords(sv) { + var _this2 = this; + var stack = []; + sv.forEach(function(kw) { + if (!_this2.opt.separateWordSearch) { + if (kw.trim() && stack.indexOf(kw) === -1) { + stack.push(kw); + } + } else { + kw.split(" ").forEach(function(kwSplitted) { + if (kwSplitted.trim() && stack.indexOf(kwSplitted) === -1) { + stack.push(kwSplitted); + } + }); + } + }); + return { + "keywords": stack.sort(function(a, b) { + return b.length - a.length; + }), + "length": stack.length + }; + } + }, { + key: "isNumeric", + value: function isNumeric(value) { + return Number(parseFloat(value)) == value; + } + }, { + key: "checkRanges", + value: function checkRanges(array) { + var _this3 = this; + if (!Array.isArray(array) || Object.prototype.toString.call(array[0]) !== "[object Object]") { + this.log("markRanges() will only accept an array of objects"); + this.opt.noMatch(array); + return []; + } + var stack = []; + var last = 0; + array.sort(function(a, b) { + return a.start - b.start; + }).forEach(function(item) { + var _callNoMatchOnInvalid = _this3.callNoMatchOnInvalidRanges(item, last), start = _callNoMatchOnInvalid.start, end = _callNoMatchOnInvalid.end, valid = _callNoMatchOnInvalid.valid; + if (valid) { + item.start = start; + item.length = end - start; + stack.push(item); + last = end; + } + }); + return stack; + } + }, { + key: "callNoMatchOnInvalidRanges", + value: function callNoMatchOnInvalidRanges(range, last) { + var start = void 0, end = void 0, valid = false; + if (range && typeof range.start !== "undefined") { + start = parseInt(range.start, 10); + end = start + parseInt(range.length, 10); + if (this.isNumeric(range.start) && this.isNumeric(range.length) && end - last > 0 && end - start > 0) { + valid = true; + } else { + this.log("Ignoring invalid or overlapping range: " + ("" + JSON.stringify(range))); + this.opt.noMatch(range); + } + } else { + this.log("Ignoring invalid range: " + JSON.stringify(range)); + this.opt.noMatch(range); + } + return { + start, + end, + valid + }; + } + }, { + key: "checkWhitespaceRanges", + value: function checkWhitespaceRanges(range, originalLength, string) { + var end = void 0, valid = true, max = string.length, offset = originalLength - max, start = parseInt(range.start, 10) - offset; + start = start > max ? max : start; + end = start + parseInt(range.length, 10); + if (end > max) { + end = max; + this.log("End range automatically set to the max value of " + max); + } + if (start < 0 || end - start < 0 || start > max || end > max) { + valid = false; + this.log("Invalid range: " + JSON.stringify(range)); + this.opt.noMatch(range); + } else if (string.substring(start, end).replace(/\s+/g, "") === "") { + valid = false; + this.log("Skipping whitespace only range: " + JSON.stringify(range)); + this.opt.noMatch(range); + } + return { + start, + end, + valid + }; + } + }, { + key: "getTextNodes", + value: function getTextNodes(cb) { + var _this4 = this; + var val = "", nodes = []; + this.iterator.forEachNode(NodeFilter.SHOW_TEXT, function(node) { + nodes.push({ + start: val.length, + end: (val += node.textContent).length, + node + }); + }, function(node) { + if (_this4.matchesExclude(node.parentNode)) { + return NodeFilter.FILTER_REJECT; + } else { + return NodeFilter.FILTER_ACCEPT; + } + }, function() { + cb({ + value: val, + nodes + }); + }); + } + }, { + key: "matchesExclude", + value: function matchesExclude(el) { + return DOMIterator.matches(el, this.opt.exclude.concat(["script", "style", "title", "head", "html"])); + } + }, { + key: "wrapRangeInTextNode", + value: function wrapRangeInTextNode(node, start, end) { + var hEl = !this.opt.element ? "mark" : this.opt.element, startNode = node.splitText(start), ret = startNode.splitText(end - start); + var repl = document.createElement(hEl); + repl.setAttribute("data-markjs", "true"); + if (this.opt.className) { + repl.setAttribute("class", this.opt.className); + } + repl.textContent = startNode.textContent; + startNode.parentNode.replaceChild(repl, startNode); + return ret; + } + }, { + key: "wrapRangeInMappedTextNode", + value: function wrapRangeInMappedTextNode(dict, start, end, filterCb, eachCb) { + var _this5 = this; + dict.nodes.every(function(n, i) { + var sibl = dict.nodes[i + 1]; + if (typeof sibl === "undefined" || sibl.start > start) { + if (!filterCb(n.node)) { + return false; + } + var s = start - n.start, e = (end > n.end ? n.end : end) - n.start, startStr = dict.value.substr(0, n.start), endStr = dict.value.substr(e + n.start); + n.node = _this5.wrapRangeInTextNode(n.node, s, e); + dict.value = startStr + endStr; + dict.nodes.forEach(function(k, j) { + if (j >= i) { + if (dict.nodes[j].start > 0 && j !== i) { + dict.nodes[j].start -= e; + } + dict.nodes[j].end -= e; + } + }); + end -= e; + eachCb(n.node.previousSibling, n.start); + if (end > n.end) { + start = n.end; + } else { + return false; + } + } + return true; + }); + } + }, { + key: "wrapMatches", + value: function wrapMatches(regex, ignoreGroups, filterCb, eachCb, endCb) { + var _this6 = this; + var matchIdx = ignoreGroups === 0 ? 0 : ignoreGroups + 1; + this.getTextNodes(function(dict) { + dict.nodes.forEach(function(node) { + node = node.node; + var match = void 0; + while ((match = regex.exec(node.textContent)) !== null && match[matchIdx] !== "") { + if (!filterCb(match[matchIdx], node)) { + continue; + } + var pos = match.index; + if (matchIdx !== 0) { + for (var i = 1; i < matchIdx; i++) { + pos += match[i].length; + } + } + node = _this6.wrapRangeInTextNode(node, pos, pos + match[matchIdx].length); + eachCb(node.previousSibling); + regex.lastIndex = 0; + } + }); + endCb(); + }); + } + }, { + key: "wrapMatchesAcrossElements", + value: function wrapMatchesAcrossElements(regex, ignoreGroups, filterCb, eachCb, endCb) { + var _this7 = this; + var matchIdx = ignoreGroups === 0 ? 0 : ignoreGroups + 1; + this.getTextNodes(function(dict) { + var match = void 0; + while ((match = regex.exec(dict.value)) !== null && match[matchIdx] !== "") { + var start = match.index; + if (matchIdx !== 0) { + for (var i = 1; i < matchIdx; i++) { + start += match[i].length; + } + } + var end = start + match[matchIdx].length; + _this7.wrapRangeInMappedTextNode(dict, start, end, function(node) { + return filterCb(match[matchIdx], node); + }, function(node, lastIndex) { + regex.lastIndex = lastIndex; + eachCb(node); + }); + } + endCb(); + }); + } + }, { + key: "wrapRangeFromIndex", + value: function wrapRangeFromIndex(ranges, filterCb, eachCb, endCb) { + var _this8 = this; + this.getTextNodes(function(dict) { + var originalLength = dict.value.length; + ranges.forEach(function(range, counter) { + var _checkWhitespaceRange = _this8.checkWhitespaceRanges(range, originalLength, dict.value), start = _checkWhitespaceRange.start, end = _checkWhitespaceRange.end, valid = _checkWhitespaceRange.valid; + if (valid) { + _this8.wrapRangeInMappedTextNode(dict, start, end, function(node) { + return filterCb(node, range, dict.value.substring(start, end), counter); + }, function(node) { + eachCb(node, range); + }); + } + }); + endCb(); + }); + } + }, { + key: "unwrapMatches", + value: function unwrapMatches(node) { + var parent = node.parentNode; + var docFrag = document.createDocumentFragment(); + while (node.firstChild) { + docFrag.appendChild(node.removeChild(node.firstChild)); + } + parent.replaceChild(docFrag, node); + if (!this.ie) { + parent.normalize(); + } else { + this.normalizeTextNode(parent); + } + } + }, { + key: "normalizeTextNode", + value: function normalizeTextNode(node) { + if (!node) { + return; + } + if (node.nodeType === 3) { + while (node.nextSibling && node.nextSibling.nodeType === 3) { + node.nodeValue += node.nextSibling.nodeValue; + node.parentNode.removeChild(node.nextSibling); + } + } else { + this.normalizeTextNode(node.firstChild); + } + this.normalizeTextNode(node.nextSibling); + } + }, { + key: "markRegExp", + value: function markRegExp(regexp, opt) { + var _this9 = this; + this.opt = opt; + this.log('Searching with expression "' + regexp + '"'); + var totalMatches = 0, fn = "wrapMatches"; + var eachCb = function eachCb2(element) { + totalMatches++; + _this9.opt.each(element); + }; + if (this.opt.acrossElements) { + fn = "wrapMatchesAcrossElements"; + } + this[fn](regexp, this.opt.ignoreGroups, function(match, node) { + return _this9.opt.filter(node, match, totalMatches); + }, eachCb, function() { + if (totalMatches === 0) { + _this9.opt.noMatch(regexp); + } + _this9.opt.done(totalMatches); + }); + } + }, { + key: "mark", + value: function mark(sv, opt) { + var _this10 = this; + this.opt = opt; + var totalMatches = 0, fn = "wrapMatches"; + var _getSeparatedKeywords = this.getSeparatedKeywords(typeof sv === "string" ? [sv] : sv), kwArr = _getSeparatedKeywords.keywords, kwArrLen = _getSeparatedKeywords.length, sens = this.opt.caseSensitive ? "" : "i", handler = function handler2(kw) { + var regex = new RegExp(_this10.createRegExp(kw), "gm" + sens), matches = 0; + _this10.log('Searching with expression "' + regex + '"'); + _this10[fn](regex, 1, function(term, node) { + return _this10.opt.filter(node, kw, totalMatches, matches); + }, function(element) { + matches++; + totalMatches++; + _this10.opt.each(element); + }, function() { + if (matches === 0) { + _this10.opt.noMatch(kw); + } + if (kwArr[kwArrLen - 1] === kw) { + _this10.opt.done(totalMatches); + } else { + handler2(kwArr[kwArr.indexOf(kw) + 1]); + } + }); + }; + if (this.opt.acrossElements) { + fn = "wrapMatchesAcrossElements"; + } + if (kwArrLen === 0) { + this.opt.done(totalMatches); + } else { + handler(kwArr[0]); + } + } + }, { + key: "markRanges", + value: function markRanges(rawRanges, opt) { + var _this11 = this; + this.opt = opt; + var totalMatches = 0, ranges = this.checkRanges(rawRanges); + if (ranges && ranges.length) { + this.log("Starting to mark with the following ranges: " + JSON.stringify(ranges)); + this.wrapRangeFromIndex(ranges, function(node, range, match, counter) { + return _this11.opt.filter(node, range, match, counter); + }, function(element, range) { + totalMatches++; + _this11.opt.each(element, range); + }, function() { + _this11.opt.done(totalMatches); + }); + } else { + this.opt.done(totalMatches); + } + } + }, { + key: "unmark", + value: function unmark(opt) { + var _this12 = this; + this.opt = opt; + var sel = this.opt.element ? this.opt.element : "*"; + sel += "[data-markjs]"; + if (this.opt.className) { + sel += "." + this.opt.className; + } + this.log('Removal selector "' + sel + '"'); + this.iterator.forEachNode(NodeFilter.SHOW_ELEMENT, function(node) { + _this12.unwrapMatches(node); + }, function(node) { + var matchesSel = DOMIterator.matches(node, sel), matchesExclude = _this12.matchesExclude(node); + if (!matchesSel || matchesExclude) { + return NodeFilter.FILTER_REJECT; + } else { + return NodeFilter.FILTER_ACCEPT; + } + }, this.opt.done); + } + }, { + key: "opt", + set: function set$$1(val) { + this._opt = _extends({}, { + "element": "", + "className": "", + "exclude": [], + "iframes": false, + "iframesTimeout": 5e3, + "separateWordSearch": true, + "diacritics": true, + "synonyms": {}, + "accuracy": "partially", + "acrossElements": false, + "caseSensitive": false, + "ignoreJoiners": false, + "ignoreGroups": 0, + "ignorePunctuation": [], + "wildcards": "disabled", + "each": function each() { + }, + "noMatch": function noMatch() { + }, + "filter": function filter() { + return true; + }, + "done": function done() { + }, + "debug": false, + "log": window.console + }, val); + }, + get: function get$$1() { + return this._opt; + } + }, { + key: "iterator", + get: function get$$1() { + return new DOMIterator(this.ctx, this.opt.iframes, this.opt.exclude, this.opt.iframesTimeout); + } + }]); + return Mark3; + }(); + function Mark2(ctx) { + var _this = this; + var instance = new Mark$1(ctx); + this.mark = function(sv, opt) { + instance.mark(sv, opt); + return _this; + }; + this.markRegExp = function(sv, opt) { + instance.markRegExp(sv, opt); + return _this; + }; + this.markRanges = function(sv, opt) { + instance.markRanges(sv, opt); + return _this; + }; + this.unmark = function(opt) { + instance.unmark(opt); + return _this; + }; + return this; + } + return Mark2; + }); + } +}); + +// lib/highlight.ts +var import_mark = __toESM(require_mark(), 1); +var PagefindHighlight = class { + constructor(options = { + markContext: null, + highlightParam: "pagefind-highlight", + markOptions: { + className: "pagefind-highlight", + exclude: ["[data-pagefind-ignore]", "[data-pagefind-ignore] *"] + }, + addStyles: true + }) { + var _a, _b; + const { highlightParam, markContext, markOptions, addStyles } = options; + this.highlightParam = highlightParam ?? "pagefind-highlight"; + this.addStyles = addStyles ?? true; + this.markContext = markContext !== void 0 ? markContext : null; + this.markOptions = markOptions !== void 0 ? markOptions : { + className: "pagefind-highlight", + exclude: ["[data-pagefind-ignore]", "[data-pagefind-ignore] *"] + }; + (_a = this.markOptions).className ?? (_a.className = "pagefind__highlight"); + (_b = this.markOptions).exclude ?? (_b.exclude = [ + "[data-pagefind-ignore]", + "[data-pagefind-ignore] *" + ]); + this.markOptions.separateWordSearch = false; + this.highlight(); + } + getHighlightParams(paramName) { + const urlParams = new URLSearchParams(window.location.search); + return urlParams.getAll(paramName); + } + // Inline styles might be too hard to override + addHighlightStyles(className) { + if (!className) + return; + const styleElement = document.createElement("style"); + styleElement.innerText = `:where(.${className}) { background-color: yellow; color: black; }`; + document.head.appendChild(styleElement); + } + createMarkInstance() { + if (this.markContext) { + return new import_mark.default(this.markContext); + } + const pagefindBody = document.querySelectorAll("[data-pagefind-body]"); + if (pagefindBody.length !== 0) { + return new import_mark.default(pagefindBody); + } else { + return new import_mark.default(document.body); + } + } + markText(instance, text) { + instance.mark(text, this.markOptions); + } + highlight() { + const params = this.getHighlightParams(this.highlightParam); + if (!params || params.length === 0) + return; + this.addStyles && this.addHighlightStyles(this.markOptions.className); + const markInstance = this.createMarkInstance(); + this.markText(markInstance, params); + } +}; +window.PagefindHighlight = PagefindHighlight; +export { + PagefindHighlight as default +}; +/*! Bundled license information: + +mark.js/dist/mark.js: + (*!*************************************************** + * mark.js v8.11.1 + * https://markjs.io/ + * Copyright (c) 2014–2018, Julian Kühnel + * Released under the MIT license https://git.io/vwTVl + *****************************************************) +*/ diff --git a/pagefind/pagefind-modular-ui.css b/pagefind/pagefind-modular-ui.css new file mode 100644 index 0000000..9c6793e --- /dev/null +++ b/pagefind/pagefind-modular-ui.css @@ -0,0 +1,214 @@ +:root { + --pagefind-ui-scale: 0.8; + --pagefind-ui-primary: #034AD8; + --pagefind-ui-fade: #707070; + --pagefind-ui-text: #393939; + --pagefind-ui-background: #ffffff; + --pagefind-ui-border: #eeeeee; + --pagefind-ui-tag: #eeeeee; + --pagefind-ui-border-width: 2px; + --pagefind-ui-border-radius: 8px; + --pagefind-ui-image-border-radius: 8px; + --pagefind-ui-image-box-ratio: 3 / 2; + --pagefind-ui-font: system, -apple-system, ".SFNSText-Regular", + "San Francisco", "Roboto", "Segoe UI", "Helvetica Neue", + "Lucida Grande", sans-serif; +} + +[data-pfmod-hidden] { + display: none !important; +} + +[data-pfmod-suppressed] { + opacity: 0 !important; + pointer-events: none !important; +} + +[data-pfmod-sr-hidden] { + -webkit-clip: rect(0 0 0 0) !important; + clip: rect(0 0 0 0) !important; + -webkit-clip-path: inset(100%) !important; + clip-path: inset(100%) !important; + height: 1px !important; + overflow: hidden !important; + overflow: clip !important; + position: absolute !important; + white-space: nowrap !important; + width: 1px !important; +} + +[data-pfmod-loading] { + color: var(--pagefind-ui-text); + background-color: var(--pagefind-ui-text); + border-radius: var(--pagefind-ui-border-radius); + opacity: 0.1; + pointer-events: none; +} + +/* Input */ + +.pagefind-modular-input-wrapper { + position: relative; +} + +.pagefind-modular-input-wrapper::before { + background-color: var(--pagefind-ui-text); + width: calc(18px * var(--pagefind-ui-scale)); + height: calc(18px * var(--pagefind-ui-scale)); + top: calc(23px * var(--pagefind-ui-scale)); + left: calc(20px * var(--pagefind-ui-scale)); + content: ""; + position: absolute; + display: block; + opacity: 0.7; + -webkit-mask-image: url("data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.7549 11.255H11.9649L11.6849 10.985C12.6649 9.845 13.2549 8.365 13.2549 6.755C13.2549 3.165 10.3449 0.255005 6.75488 0.255005C3.16488 0.255005 0.254883 3.165 0.254883 6.755C0.254883 10.345 3.16488 13.255 6.75488 13.255C8.36488 13.255 9.84488 12.665 10.9849 11.685L11.2549 11.965V12.755L16.2549 17.745L17.7449 16.255L12.7549 11.255ZM6.75488 11.255C4.26488 11.255 2.25488 9.245 2.25488 6.755C2.25488 4.26501 4.26488 2.255 6.75488 2.255C9.24488 2.255 11.2549 4.26501 11.2549 6.755C11.2549 9.245 9.24488 11.255 6.75488 11.255Z' fill='%23000000'/%3E%3C/svg%3E%0A"); + mask-image: url("data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.7549 11.255H11.9649L11.6849 10.985C12.6649 9.845 13.2549 8.365 13.2549 6.755C13.2549 3.165 10.3449 0.255005 6.75488 0.255005C3.16488 0.255005 0.254883 3.165 0.254883 6.755C0.254883 10.345 3.16488 13.255 6.75488 13.255C8.36488 13.255 9.84488 12.665 10.9849 11.685L11.2549 11.965V12.755L16.2549 17.745L17.7449 16.255L12.7549 11.255ZM6.75488 11.255C4.26488 11.255 2.25488 9.245 2.25488 6.755C2.25488 4.26501 4.26488 2.255 6.75488 2.255C9.24488 2.255 11.2549 4.26501 11.2549 6.755C11.2549 9.245 9.24488 11.255 6.75488 11.255Z' fill='%23000000'/%3E%3C/svg%3E%0A"); + -webkit-mask-size: 100%; + mask-size: 100%; + z-index: 9; + pointer-events: none; +} + +.pagefind-modular-input { + height: calc(64px * var(--pagefind-ui-scale)); + padding: 0 calc(70px * var(--pagefind-ui-scale)) 0 calc(54px * var(--pagefind-ui-scale)); + background-color: var(--pagefind-ui-background); + border: var(--pagefind-ui-border-width) solid var(--pagefind-ui-border); + border-radius: var(--pagefind-ui-border-radius); + font-size: calc(21px * var(--pagefind-ui-scale)); + position: relative; + appearance: none; + -webkit-appearance: none; + display: flex; + width: 100%; + box-sizing: border-box; + font-weight: 700; +} + +.pagefind-modular-input::placeholder { + opacity: 0.2; +} + +.pagefind-modular-input-clear { + position: absolute; + top: calc(2px * var(--pagefind-ui-scale)); + right: calc(2px * var(--pagefind-ui-scale)); + height: calc(60px * var(--pagefind-ui-scale)); + border-radius: var(--pagefind-ui-border-radius); + padding: 0 calc(15px * var(--pagefind-ui-scale)) 0 calc(2px * var(--pagefind-ui-scale)); + color: var(--pagefind-ui-text); + font-size: calc(14px * var(--pagefind-ui-scale)); + cursor: pointer; + background-color: var(--pagefind-ui-background); + border: none; + appearance: none; +} + +/* ResultList */ + +.pagefind-modular-list-result { + list-style-type: none; + display: flex; + align-items: flex-start; + gap: min(calc(40px * var(--pagefind-ui-scale)), 3%); + padding: calc(30px * var(--pagefind-ui-scale)) 0 calc(40px * var(--pagefind-ui-scale)); + border-top: solid var(--pagefind-ui-border-width) var(--pagefind-ui-border); +} + +.pagefind-modular-list-result:last-of-type { + border-bottom: solid var(--pagefind-ui-border-width) var(--pagefind-ui-border); +} + +.pagefind-modular-list-thumb { + width: min(30%, + calc((30% - (100px * var(--pagefind-ui-scale))) * 100000)); + max-width: calc(120px * var(--pagefind-ui-scale)); + margin-top: calc(10px * var(--pagefind-ui-scale)); + aspect-ratio: var(--pagefind-ui-image-box-ratio); + position: relative; +} + +.pagefind-modular-list-image { + display: block; + position: absolute; + left: 50%; + transform: translateX(-50%); + font-size: 0; + width: auto; + height: auto; + max-width: 100%; + max-height: 100%; + border-radius: var(--pagefind-ui-image-border-radius); +} + +.pagefind-modular-list-inner { + flex: 1; + display: flex; + flex-direction: column; + align-items: flex-start; + margin-top: calc(10px * var(--pagefind-ui-scale)); +} + +.pagefind-modular-list-title { + display: inline-block; + font-weight: 700; + font-size: calc(21px * var(--pagefind-ui-scale)); + margin-top: 0; + margin-bottom: 0; +} + +.pagefind-modular-list-link { + color: var(--pagefind-ui-text); + text-decoration: none; +} + +.pagefind-modular-list-link:hover { + text-decoration: underline; +} + +.pagefind-modular-list-excerpt { + display: inline-block; + font-weight: 400; + font-size: calc(16px * var(--pagefind-ui-scale)); + margin-top: calc(4px * var(--pagefind-ui-scale)); + margin-bottom: 0; + min-width: calc(250px * var(--pagefind-ui-scale)); +} + +/* FilterPills */ + +.pagefind-modular-filter-pills-wrapper { + overflow-x: scroll; + padding: 15px 0; +} + +.pagefind-modular-filter-pills { + display: flex; + gap: 6px; +} + +.pagefind-modular-filter-pill { + display: flex; + justify-content: center; + align-items: center; + border: none; + appearance: none; + padding: 0 calc(24px * var(--pagefind-ui-scale)); + background-color: var(--pagefind-ui-background); + color: var(--pagefind-ui-fade); + border: var(--pagefind-ui-border-width) solid var(--pagefind-ui-border); + border-radius: calc(25px * var(--pagefind-ui-scale)); + font-size: calc(18px * var(--pagefind-ui-scale)); + height: calc(50px * var(--pagefind-ui-scale)); + cursor: pointer; + white-space: nowrap; +} + +.pagefind-modular-filter-pill:hover { + border-color: var(--pagefind-ui-primary); +} + +.pagefind-modular-filter-pill[aria-pressed="true"] { + border-color: var(--pagefind-ui-primary); + color: var(--pagefind-ui-primary); +} \ No newline at end of file diff --git a/pagefind/pagefind-modular-ui.js b/pagefind/pagefind-modular-ui.js new file mode 100644 index 0000000..9301909 --- /dev/null +++ b/pagefind/pagefind-modular-ui.js @@ -0,0 +1,8 @@ +(()=>{var b=Object.defineProperty;var w=(i,e)=>{for(var t in e)b(i,t,{get:e[t],enumerable:!0})};var f={};w(f,{FilterPills:()=>h,Input:()=>l,Instance:()=>p,ResultList:()=>a,Summary:()=>o});var r=class i{constructor(e){this.element=document.createElement(e)}id(e){return this.element.id=e,this}class(e){return this.element.classList.add(e),this}attrs(e){for(let[t,s]of Object.entries(e))this.element.setAttribute(t,s);return this}text(e){return this.element.innerText=e,this}html(e){return this.element.innerHTML=e,this}handle(e,t){return this.element.addEventListener(e,t),this}addTo(e){return e instanceof i?e.element.appendChild(this.element):e.appendChild(this.element),this.element}};var T=async(i=100)=>new Promise(e=>setTimeout(e,i)),l=class{constructor(e={}){if(this.inputEl=null,this.clearEl=null,this.instance=null,this.searchID=0,this.debounceTimeoutMs=e.debounceTimeoutMs??300,e.inputElement){if(e.containerElement){console.warn("[Pagefind Input component]: inputElement and containerElement both supplied. Ignoring the container option.");return}this.initExisting(e.inputElement)}else if(e.containerElement)this.initContainer(e.containerElement);else{console.error("[Pagefind Input component]: No selector supplied for containerElement or inputElement");return}this.inputEl.addEventListener("input",async t=>{if(this.instance&&typeof t?.target?.value=="string"){this.updateState(t.target.value);let s=++this.searchID;if(await T(this.debounceTimeoutMs),s!==this.searchID)return null;this.instance?.triggerSearch(t.target.value)}}),this.inputEl.addEventListener("keydown",t=>{t.key==="Escape"&&(++this.searchID,this.inputEl.value="",this.instance?.triggerSearch(""),this.updateState("")),t.key==="Enter"&&t.preventDefault()}),this.inputEl.addEventListener("focus",()=>{this.instance?.triggerLoad()})}initContainer(e){let t=document.querySelector(e);if(!t){console.error(`[Pagefind Input component]: No container found for ${e} selector`);return}if(t.tagName==="INPUT")console.warn(`[Pagefind Input component]: Encountered input element for ${e} when a container was expected`),console.warn("[Pagefind Input component]: Treating containerElement option as inputElement and proceeding"),this.initExisting(e);else{t.innerHTML="";let s=0;for(;document.querySelector(`#pfmod-input-${s}`);)s+=1;let n=new r("form").class("pagefind-modular-input-wrapper").attrs({role:"search","aria-label":"Search this site",action:"javascript:void(0);"});new r("label").attrs({for:`pfmod-input-${s}`,"data-pfmod-sr-hidden":"true"}).text("Search this site").addTo(n),this.inputEl=new r("input").id(`pfmod-input-${s}`).class("pagefind-modular-input").attrs({autocapitalize:"none",enterkeyhint:"search"}).addTo(n),this.clearEl=new r("button").class("pagefind-modular-input-clear").attrs({"data-pfmod-suppressed":"true"}).text("Clear").handle("click",()=>{this.inputEl.value="",this.instance.triggerSearch(""),this.updateState("")}).addTo(n),n.addTo(t)}}initExisting(e){let t=document.querySelector(e);if(!t){console.error(`[Pagefind Input component]: No input element found for ${e} selector`);return}if(t.tagName!=="INPUT"){console.error(`[Pagefind Input component]: Expected ${e} to be an element`);return}this.inputEl=t}updateState(e){this.clearEl&&(e&&e?.length?this.clearEl.removeAttribute("data-pfmod-suppressed"):this.clearEl.setAttribute("data-pfmod-suppressed","true"))}register(e){this.instance=e,this.instance.on("search",(t,s)=>{this.inputEl&&document.activeElement!==this.inputEl&&(this.inputEl.value=t,this.updateState(t))})}focus(){this.inputEl&&this.inputEl.focus()}};var g=i=>{if(i instanceof Element)return[i];if(Array.isArray(i)&&i.every(e=>e instanceof Element))return i;if(typeof i=="string"||i instanceof String){let e=document.createElement("div");return e.innerHTML=i,[...e.childNodes]}else return console.error(`[Pagefind ResultList component]: Expected template function to return an HTML element or string, got ${typeof i}`),[]},v=()=>{let i=(e=30)=>". ".repeat(Math.floor(10+Math.random()*e));return`
  • +
    +
    +

    ${i(30)}

    +

    ${i(40)}

    +
    +
  • `},y=i=>{let e=new r("li").class("pagefind-modular-list-result"),t=new r("div").class("pagefind-modular-list-thumb").addTo(e);i?.meta?.image&&new r("img").class("pagefind-modular-list-image").attrs({src:i.meta.image,alt:i.meta.image_alt||i.meta.title}).addTo(t);let s=new r("div").class("pagefind-modular-list-inner").addTo(e),n=new r("p").class("pagefind-modular-list-title").addTo(s);return new r("a").class("pagefind-modular-list-link").text(i.meta?.title).attrs({href:i.meta?.url||i.url}).addTo(n),new r("p").class("pagefind-modular-list-excerpt").html(i.excerpt).addTo(s),e.element},E=i=>{if(!(i instanceof HTMLElement))return null;let e=window.getComputedStyle(i).overflowY;return e!=="visible"&&e!=="hidden"?i:E(i.parentNode)},d=class{constructor(e={}){this.rawResult=e.result,this.placeholderNodes=e.placeholderNodes,this.resultFn=e.resultFn,this.intersectionEl=e.intersectionEl,this.result=null,this.waitForIntersection()}waitForIntersection(){if(!this.placeholderNodes?.length)return;let e={root:this.intersectionEl,rootMargin:"0px",threshold:.01};new IntersectionObserver((s,n)=>{this.result===null&&s?.[0]?.isIntersecting&&(this.load(),n.disconnect())},e).observe(this.placeholderNodes[0])}async load(){if(!this.placeholderNodes?.length)return;this.result=await this.rawResult.data();let e=this.resultFn(this.result),t=g(e);for(;this.placeholderNodes.length>1;)this.placeholderNodes.pop().remove();this.placeholderNodes[0].replaceWith(...t)}},a=class{constructor(e){if(this.intersectionEl=document.body,this.containerEl=null,this.results=[],this.placeholderTemplate=e.placeholderTemplate??v,this.resultTemplate=e.resultTemplate??y,e.containerElement)this.initContainer(e.containerElement);else{console.error("[Pagefind ResultList component]: No selector supplied for containerElement");return}}initContainer(e){let t=document.querySelector(e);if(!t){console.error(`[Pagefind ResultList component]: No container found for ${e} selector`);return}this.containerEl=t}append(e){for(let t of e)this.containerEl.appendChild(t)}register(e){e.on("results",t=>{this.containerEl&&(this.containerEl.innerHTML="",this.intersectionEl=E(this.containerEl),this.results=t.results.map(s=>{let n=g(this.placeholderTemplate());return this.append(n),new d({result:s,placeholderNodes:n,resultFn:this.resultTemplate,intersectionEl:this.intersectionEl})}))}),e.on("loading",()=>{this.containerEl&&(this.containerEl.innerHTML="")})}};var o=class{constructor(e={}){if(this.containerEl=null,this.defaultMessage=e.defaultMessage??"",this.term="",e.containerElement)this.initContainer(e.containerElement);else{console.error("[Pagefind Summary component]: No selector supplied for containerElement");return}}initContainer(e){let t=document.querySelector(e);if(!t){console.error(`[Pagefind Summary component]: No container found for ${e} selector`);return}this.containerEl=t,this.containerEl.innerText=this.defaultMessage}register(e){e.on("search",(t,s)=>{this.term=t}),e.on("results",t=>{if(!this.containerEl||!t)return;if(!this.term){this.containerEl.innerText=this.defaultMessage;return}let s=t?.results?.length??0;this.containerEl.innerText=`${s} result${s===1?"":"s"} for ${this.term}`}),e.on("loading",()=>{this.containerEl&&(this.containerEl.innerText=`Searching for ${this.term}...`)})}};var h=class{constructor(e={}){if(this.instance=null,this.wrapper=null,this.pillContainer=null,this.available={},this.selected=["All"],this.total=0,this.filterMemo="",this.filter=e.filter,this.ordering=e.ordering??null,this.alwaysShow=e.alwaysShow??!1,this.selectMultiple=e.selectMultiple??!1,!this.filter?.length){console.error("[Pagefind FilterPills component]: No filter option supplied, nothing to display");return}if(e.containerElement)this.initContainer(e.containerElement);else{console.error("[Pagefind FilterPills component]: No selector supplied for containerElement");return}}initContainer(e){let t=document.querySelector(e);if(!t){console.error(`[Pagefind FilterPills component]: No container found for ${e} selector`);return}t.innerHTML="";let s=`pagefind_modular_filter_pills_${this.filter}`,n=new r("div").class("pagefind-modular-filter-pills-wrapper").attrs({role:"group","aria-labelledby":s});this.alwaysShow||n.attrs({"data-pfmod-hidden":!0}),new r("div").id(s).class("pagefind-modular-filter-pills-label").attrs({"data-pfmod-sr-hidden":!0}).text(`Filter results by ${this.filter}`).addTo(n),this.pillContainer=new r("div").class("pagefind-modular-filter-pills").addTo(n),this.wrapper=n.addTo(t)}update(){let e=this.available.map(t=>t[0]).join("~");e==this.filterMemo?this.updateExisting():(this.renderNew(),this.filterMemo=e)}pushFilters(){let e=this.selected.filter(t=>t!=="All");this.instance.triggerFilter(this.filter,e)}pillInner(e,t){return this.total?`${e} (${t})`:`${e}`}renderNew(){this.available.forEach(([e,t])=>{new r("button").class("pagefind-modular-filter-pill").html(this.pillInner(e,t)).attrs({"aria-pressed":this.selected.includes(e),type:"button"}).handle("click",()=>{e==="All"?this.selected=["All"]:this.selected.includes(e)?this.selected=this.selected.filter(s=>s!==e):this.selectMultiple?this.selected.push(e):this.selected=[e],this.selected?.length?this.selected?.length>1&&(this.selected=this.selected.filter(s=>s!=="All")):this.selected=["All"],this.update(),this.pushFilters()}).addTo(this.pillContainer)})}updateExisting(){let e=[...this.pillContainer.childNodes];this.available.forEach(([t,s],n)=>{e[n].innerHTML=this.pillInner(t,s),e[n].setAttribute("aria-pressed",this.selected.includes(t))})}register(e){this.instance=e,this.instance.on("filters",t=>{if(!this.pillContainer)return;this.selectMultiple?t=t.available:t=t.total;let s=t[this.filter];if(!s){console.warn(`[Pagefind FilterPills component]: No possible values found for the ${this.filter} filter`);return}this.available=Object.entries(s),Array.isArray(this.ordering)?this.available.sort((n,c)=>{let m=this.ordering.indexOf(n[0]),_=this.ordering.indexOf(c[0]);return(m===-1?1/0:m)-(_===-1?1/0:_)}):this.available.sort((n,c)=>n[0].localeCompare(c[0])),this.available.unshift(["All",this.total]),this.update()}),e.on("results",t=>{this.pillContainer&&(this.total=t?.unfilteredResultCount||0,this.available?.[0]?.[0]==="All"&&(this.available[0][1]=this.total),this.total||this.alwaysShow?this.wrapper.removeAttribute("data-pfmod-hidden"):this.wrapper.setAttribute("data-pfmod-hidden","true"),this.update())})}};var F=async(i=50)=>await new Promise(e=>setTimeout(e,i)),u;try{u=new URL(document.currentScript.src).pathname.match(/^(.*\/)(?:pagefind-)?modular-ui.js.*$/)[1]}catch{u="/pagefind/"}var p=class{constructor(e={}){this.__pagefind__=null,this.__initializing__=null,this.__searchID__=0,this.__hooks__={search:[],filters:[],loading:[],results:[]},this.components=[],this.searchTerm="",this.searchFilters={},this.searchResult={},this.availableFilters=null,this.totalFilters=null,this.options={bundlePath:e.bundlePath??u,mergeIndex:e.mergeIndex??[]},delete e.bundlePath,delete e.resetStyles,delete e.processResult,delete e.processTerm,delete e.debounceTimeoutMs,delete e.mergeIndex,delete e.translations,this.pagefindOptions=e}add(e){e?.register?.(this),this.components.push(e)}on(e,t){if(!this.__hooks__[e]){let s=Object.keys(this.__hooks__).join(", ");console.error(`[Pagefind Composable]: Unknown event type ${e}. Supported events: [${s}]`);return}if(typeof t!="function"){console.error(`[Pagefind Composable]: Expected callback to be a function, received ${typeof t}`);return}this.__hooks__[e].push(t)}triggerLoad(){this.__load__()}triggerSearch(e){this.searchTerm=e,this.__dispatch__("search",e,this.searchFilters),this.__search__(e,this.searchFilters)}triggerSearchWithFilters(e,t){this.searchTerm=e,this.searchFilters=t,this.__dispatch__("search",e,t),this.__search__(e,t)}triggerFilters(e){this.searchFilters=e,this.__dispatch__("search",this.searchTerm,e),this.__search__(this.searchTerm,e)}triggerFilter(e,t){this.searchFilters=this.searchFilters||{},this.searchFilters[e]=t,this.__dispatch__("search",this.searchTerm,this.searchFilters),this.__search__(this.searchTerm,this.searchFilters)}__dispatch__(e,...t){this.__hooks__[e]?.forEach(s=>s?.(...t))}async __clear__(){this.__dispatch__("results",{results:[],unfilteredTotalCount:0}),this.availableFilters=await this.__pagefind__.filters(),this.totalFilters=this.availableFilters,this.__dispatch__("filters",{available:this.availableFilters,total:this.totalFilters})}async __search__(e,t){this.__dispatch__("loading"),await this.__load__();let s=++this.__searchID__;if(!e||!e.length)return this.__clear__();let n=await this.__pagefind__.search(e,{filters:t});n&&this.__searchID__===s&&(n.filters&&Object.keys(n.filters)?.length&&(this.availableFilters=n.filters,this.totalFilters=n.totalFilters,this.__dispatch__("filters",{available:this.availableFilters,total:this.totalFilters})),this.searchResult=n,this.__dispatch__("results",this.searchResult))}async __load__(){if(this.__initializing__){for(;!this.__pagefind__;)await F(50);return}if(this.__initializing__=!0,!this.__pagefind__){let e;try{e=await import(`${this.options.bundlePath}pagefind.js`)}catch(t){console.error(t),console.error([`Pagefind couldn't be loaded from ${this.options.bundlePath}pagefind.js`,"You can configure this by passing a bundlePath option to PagefindComposable Instance",`[DEBUG: Loaded from ${document?.currentScript?.src??"no known script location"}]`].join(` +`))}await e.options(this.pagefindOptions||{});for(let t of this.options.mergeIndex){if(!t.bundlePath)throw new Error("mergeIndex requires a bundlePath parameter");let s=t.bundlePath;delete t.bundlePath,await e.mergeIndex(s,t)}this.__pagefind__=e}this.availableFilters=await this.__pagefind__.filters(),this.totalFilters=this.availableFilters,this.__dispatch__("filters",{available:this.availableFilters,total:this.totalFilters})}};window.PagefindModularUI=f;})(); diff --git a/pagefind/pagefind-ui.css b/pagefind/pagefind-ui.css new file mode 100644 index 0000000..d7984a9 --- /dev/null +++ b/pagefind/pagefind-ui.css @@ -0,0 +1 @@ +.pagefind-ui__result.svelte-j9e30.svelte-j9e30{list-style-type:none;display:flex;align-items:flex-start;gap:min(calc(40px * var(--pagefind-ui-scale)),3%);padding:calc(30px * var(--pagefind-ui-scale)) 0 calc(40px * var(--pagefind-ui-scale));border-top:solid var(--pagefind-ui-border-width) var(--pagefind-ui-border)}.pagefind-ui__result.svelte-j9e30.svelte-j9e30:last-of-type{border-bottom:solid var(--pagefind-ui-border-width) var(--pagefind-ui-border)}.pagefind-ui__result-thumb.svelte-j9e30.svelte-j9e30{width:min(30%,calc((30% - (100px * var(--pagefind-ui-scale))) * 100000));max-width:calc(120px * var(--pagefind-ui-scale));margin-top:calc(10px * var(--pagefind-ui-scale));aspect-ratio:var(--pagefind-ui-image-box-ratio);position:relative}.pagefind-ui__result-image.svelte-j9e30.svelte-j9e30{display:block;position:absolute;left:50%;transform:translate(-50%);font-size:0;width:auto;height:auto;max-width:100%;max-height:100%;border-radius:var(--pagefind-ui-image-border-radius)}.pagefind-ui__result-inner.svelte-j9e30.svelte-j9e30{flex:1;display:flex;flex-direction:column;align-items:flex-start;margin-top:calc(10px * var(--pagefind-ui-scale))}.pagefind-ui__result-title.svelte-j9e30.svelte-j9e30{display:inline-block;font-weight:700;font-size:calc(21px * var(--pagefind-ui-scale));margin-top:0;margin-bottom:0}.pagefind-ui__result-title.svelte-j9e30 .pagefind-ui__result-link.svelte-j9e30{color:var(--pagefind-ui-text);text-decoration:none}.pagefind-ui__result-title.svelte-j9e30 .pagefind-ui__result-link.svelte-j9e30:hover{text-decoration:underline}.pagefind-ui__result-excerpt.svelte-j9e30.svelte-j9e30{display:inline-block;font-weight:400;font-size:calc(16px * var(--pagefind-ui-scale));margin-top:calc(4px * var(--pagefind-ui-scale));margin-bottom:0;min-width:calc(250px * var(--pagefind-ui-scale))}.pagefind-ui__loading.svelte-j9e30.svelte-j9e30{color:var(--pagefind-ui-text);background-color:var(--pagefind-ui-text);border-radius:var(--pagefind-ui-border-radius);opacity:.1;pointer-events:none}.pagefind-ui__result-tags.svelte-j9e30.svelte-j9e30{list-style-type:none;padding:0;display:flex;gap:calc(20px * var(--pagefind-ui-scale));flex-wrap:wrap;margin-top:calc(20px * var(--pagefind-ui-scale))}.pagefind-ui__result-tag.svelte-j9e30.svelte-j9e30{padding:calc(4px * var(--pagefind-ui-scale)) calc(8px * var(--pagefind-ui-scale));font-size:calc(14px * var(--pagefind-ui-scale));border-radius:var(--pagefind-ui-border-radius);background-color:var(--pagefind-ui-tag)}.pagefind-ui__result.svelte-4xnkmf.svelte-4xnkmf{list-style-type:none;display:flex;align-items:flex-start;gap:min(calc(40px * var(--pagefind-ui-scale)),3%);padding:calc(30px * var(--pagefind-ui-scale)) 0 calc(40px * var(--pagefind-ui-scale));border-top:solid var(--pagefind-ui-border-width) var(--pagefind-ui-border)}.pagefind-ui__result.svelte-4xnkmf.svelte-4xnkmf:last-of-type{border-bottom:solid var(--pagefind-ui-border-width) var(--pagefind-ui-border)}.pagefind-ui__result-nested.svelte-4xnkmf.svelte-4xnkmf{display:flex;flex-direction:column;padding-left:calc(20px * var(--pagefind-ui-scale))}.pagefind-ui__result-nested.svelte-4xnkmf.svelte-4xnkmf:first-of-type{padding-top:calc(10px * var(--pagefind-ui-scale))}.pagefind-ui__result-nested.svelte-4xnkmf .pagefind-ui__result-link.svelte-4xnkmf{font-size:.9em;position:relative}.pagefind-ui__result-nested.svelte-4xnkmf .pagefind-ui__result-link.svelte-4xnkmf:before{content:"\2937 ";position:absolute;top:0;right:calc(100% + .1em)}.pagefind-ui__result-thumb.svelte-4xnkmf.svelte-4xnkmf{width:min(30%,calc((30% - (100px * var(--pagefind-ui-scale))) * 100000));max-width:calc(120px * var(--pagefind-ui-scale));margin-top:calc(10px * var(--pagefind-ui-scale));aspect-ratio:var(--pagefind-ui-image-box-ratio);position:relative}.pagefind-ui__result-image.svelte-4xnkmf.svelte-4xnkmf{display:block;position:absolute;left:50%;transform:translate(-50%);font-size:0;width:auto;height:auto;max-width:100%;max-height:100%;border-radius:var(--pagefind-ui-image-border-radius)}.pagefind-ui__result-inner.svelte-4xnkmf.svelte-4xnkmf{flex:1;display:flex;flex-direction:column;align-items:flex-start;margin-top:calc(10px * var(--pagefind-ui-scale))}.pagefind-ui__result-title.svelte-4xnkmf.svelte-4xnkmf{display:inline-block;font-weight:700;font-size:calc(21px * var(--pagefind-ui-scale));margin-top:0;margin-bottom:0}.pagefind-ui__result-title.svelte-4xnkmf .pagefind-ui__result-link.svelte-4xnkmf{color:var(--pagefind-ui-text);text-decoration:none}.pagefind-ui__result-title.svelte-4xnkmf .pagefind-ui__result-link.svelte-4xnkmf:hover{text-decoration:underline}.pagefind-ui__result-excerpt.svelte-4xnkmf.svelte-4xnkmf{display:inline-block;font-weight:400;font-size:calc(16px * var(--pagefind-ui-scale));margin-top:calc(4px * var(--pagefind-ui-scale));margin-bottom:0;min-width:calc(250px * var(--pagefind-ui-scale))}.pagefind-ui__loading.svelte-4xnkmf.svelte-4xnkmf{color:var(--pagefind-ui-text);background-color:var(--pagefind-ui-text);border-radius:var(--pagefind-ui-border-radius);opacity:.1;pointer-events:none}.pagefind-ui__result-tags.svelte-4xnkmf.svelte-4xnkmf{list-style-type:none;padding:0;display:flex;gap:calc(20px * var(--pagefind-ui-scale));flex-wrap:wrap;margin-top:calc(20px * var(--pagefind-ui-scale))}.pagefind-ui__result-tag.svelte-4xnkmf.svelte-4xnkmf{padding:calc(4px * var(--pagefind-ui-scale)) calc(8px * var(--pagefind-ui-scale));font-size:calc(14px * var(--pagefind-ui-scale));border-radius:var(--pagefind-ui-border-radius);background-color:var(--pagefind-ui-tag)}legend.svelte-1v2r7ls.svelte-1v2r7ls{position:absolute;clip:rect(0 0 0 0)}.pagefind-ui__filter-panel.svelte-1v2r7ls.svelte-1v2r7ls{min-width:min(calc(260px * var(--pagefind-ui-scale)),100%);flex:1;display:flex;flex-direction:column;margin-top:calc(20px * var(--pagefind-ui-scale))}.pagefind-ui__filter-group.svelte-1v2r7ls.svelte-1v2r7ls{border:0;padding:0}.pagefind-ui__filter-block.svelte-1v2r7ls.svelte-1v2r7ls{padding:0;display:block;border-bottom:solid calc(2px * var(--pagefind-ui-scale)) var(--pagefind-ui-border);padding:calc(20px * var(--pagefind-ui-scale)) 0}.pagefind-ui__filter-name.svelte-1v2r7ls.svelte-1v2r7ls{font-size:calc(16px * var(--pagefind-ui-scale));position:relative;display:flex;align-items:center;list-style:none;font-weight:700;cursor:pointer;height:calc(24px * var(--pagefind-ui-scale))}.pagefind-ui__filter-name.svelte-1v2r7ls.svelte-1v2r7ls::-webkit-details-marker{display:none}.pagefind-ui__filter-name.svelte-1v2r7ls.svelte-1v2r7ls:after{position:absolute;content:"";right:calc(6px * var(--pagefind-ui-scale));top:50%;width:calc(8px * var(--pagefind-ui-scale));height:calc(8px * var(--pagefind-ui-scale));border:solid calc(2px * var(--pagefind-ui-scale)) currentColor;border-right:0;border-top:0;transform:translateY(-70%) rotate(-45deg)}.pagefind-ui__filter-block[open].svelte-1v2r7ls .pagefind-ui__filter-name.svelte-1v2r7ls:after{transform:translateY(-70%) rotate(-225deg)}.pagefind-ui__filter-group.svelte-1v2r7ls.svelte-1v2r7ls{display:flex;flex-direction:column;gap:calc(20px * var(--pagefind-ui-scale));padding-top:calc(30px * var(--pagefind-ui-scale))}.pagefind-ui__filter-value.svelte-1v2r7ls.svelte-1v2r7ls{position:relative;display:flex;align-items:center;gap:calc(8px * var(--pagefind-ui-scale))}.pagefind-ui__filter-value.svelte-1v2r7ls.svelte-1v2r7ls:before{position:absolute;content:"";top:50%;left:calc(8px * var(--pagefind-ui-scale));width:0px;height:0px;border:solid 1px #fff;opacity:0;transform:translate(calc(4.5px * var(--pagefind-ui-scale) * -1),calc(.8px * var(--pagefind-ui-scale))) skew(-5deg) rotate(-45deg);transform-origin:top left;border-top:0;border-right:0;pointer-events:none}.pagefind-ui__filter-value.pagefind-ui__filter-value--checked.svelte-1v2r7ls.svelte-1v2r7ls:before{opacity:1;width:calc(9px * var(--pagefind-ui-scale));height:calc(4px * var(--pagefind-ui-scale));transition:width .1s ease-out .1s,height .1s ease-in}.pagefind-ui__filter-checkbox.svelte-1v2r7ls.svelte-1v2r7ls{margin:0;width:calc(16px * var(--pagefind-ui-scale));height:calc(16px * var(--pagefind-ui-scale));border:solid 1px var(--pagefind-ui-border);appearance:none;-webkit-appearance:none;border-radius:calc(var(--pagefind-ui-border-radius) / 2);background-color:var(--pagefind-ui-background);cursor:pointer}.pagefind-ui__filter-checkbox.svelte-1v2r7ls.svelte-1v2r7ls:checked{background-color:var(--pagefind-ui-primary);border:solid 1px var(--pagefind-ui-primary)}.pagefind-ui__filter-label.svelte-1v2r7ls.svelte-1v2r7ls{cursor:pointer;font-size:calc(16px * var(--pagefind-ui-scale));font-weight:400}.pagefind-ui--reset *:where(:not(html,iframe,canvas,img,svg,video):not(svg *,symbol *)){all:unset;display:revert;outline:revert}.pagefind-ui--reset *,.pagefind-ui--reset *:before,.pagefind-ui--reset *:after{box-sizing:border-box}.pagefind-ui--reset a,.pagefind-ui--reset button{cursor:revert}.pagefind-ui--reset ol,.pagefind-ui--reset ul,.pagefind-ui--reset menu{list-style:none}.pagefind-ui--reset img{max-width:100%}.pagefind-ui--reset table{border-collapse:collapse}.pagefind-ui--reset input,.pagefind-ui--reset textarea{-webkit-user-select:auto}.pagefind-ui--reset textarea{white-space:revert}.pagefind-ui--reset meter{-webkit-appearance:revert;appearance:revert}.pagefind-ui--reset ::placeholder{color:unset}.pagefind-ui--reset :where([hidden]){display:none}.pagefind-ui--reset :where([contenteditable]:not([contenteditable="false"])){-moz-user-modify:read-write;-webkit-user-modify:read-write;overflow-wrap:break-word;-webkit-line-break:after-white-space;-webkit-user-select:auto}.pagefind-ui--reset :where([draggable="true"]){-webkit-user-drag:element}.pagefind-ui--reset mark{all:revert}:root{--pagefind-ui-scale:.8;--pagefind-ui-primary:#393939;--pagefind-ui-text:#393939;--pagefind-ui-background:#ffffff;--pagefind-ui-border:#eeeeee;--pagefind-ui-tag:#eeeeee;--pagefind-ui-border-width:2px;--pagefind-ui-border-radius:8px;--pagefind-ui-image-border-radius:8px;--pagefind-ui-image-box-ratio:3 / 2;--pagefind-ui-font:system, -apple-system, "BlinkMacSystemFont", ".SFNSText-Regular", "San Francisco", "Roboto", "Segoe UI", "Helvetica Neue", "Lucida Grande", "Ubuntu", "arial", sans-serif}.pagefind-ui.svelte-e9gkc3{width:100%;color:var(--pagefind-ui-text);font-family:var(--pagefind-ui-font)}.pagefind-ui__hidden.svelte-e9gkc3{display:none!important}.pagefind-ui__suppressed.svelte-e9gkc3{opacity:0;pointer-events:none}.pagefind-ui__form.svelte-e9gkc3{position:relative}.pagefind-ui__form.svelte-e9gkc3:before{background-color:var(--pagefind-ui-text);width:calc(18px * var(--pagefind-ui-scale));height:calc(18px * var(--pagefind-ui-scale));top:calc(23px * var(--pagefind-ui-scale));left:calc(20px * var(--pagefind-ui-scale));content:"";position:absolute;display:block;opacity:.7;-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.7549 11.255H11.9649L11.6849 10.985C12.6649 9.845 13.2549 8.365 13.2549 6.755C13.2549 3.165 10.3449 0.255005 6.75488 0.255005C3.16488 0.255005 0.254883 3.165 0.254883 6.755C0.254883 10.345 3.16488 13.255 6.75488 13.255C8.36488 13.255 9.84488 12.665 10.9849 11.685L11.2549 11.965V12.755L16.2549 17.745L17.7449 16.255L12.7549 11.255ZM6.75488 11.255C4.26488 11.255 2.25488 9.245 2.25488 6.755C2.25488 4.26501 4.26488 2.255 6.75488 2.255C9.24488 2.255 11.2549 4.26501 11.2549 6.755C11.2549 9.245 9.24488 11.255 6.75488 11.255Z' fill='%23000000'/%3E%3C/svg%3E%0A");mask-image:url("data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.7549 11.255H11.9649L11.6849 10.985C12.6649 9.845 13.2549 8.365 13.2549 6.755C13.2549 3.165 10.3449 0.255005 6.75488 0.255005C3.16488 0.255005 0.254883 3.165 0.254883 6.755C0.254883 10.345 3.16488 13.255 6.75488 13.255C8.36488 13.255 9.84488 12.665 10.9849 11.685L11.2549 11.965V12.755L16.2549 17.745L17.7449 16.255L12.7549 11.255ZM6.75488 11.255C4.26488 11.255 2.25488 9.245 2.25488 6.755C2.25488 4.26501 4.26488 2.255 6.75488 2.255C9.24488 2.255 11.2549 4.26501 11.2549 6.755C11.2549 9.245 9.24488 11.255 6.75488 11.255Z' fill='%23000000'/%3E%3C/svg%3E%0A");-webkit-mask-size:100%;mask-size:100%;z-index:9;pointer-events:none}.pagefind-ui__search-input.svelte-e9gkc3{height:calc(64px * var(--pagefind-ui-scale));padding:0 calc(70px * var(--pagefind-ui-scale)) 0 calc(54px * var(--pagefind-ui-scale));background-color:var(--pagefind-ui-background);border:var(--pagefind-ui-border-width) solid var(--pagefind-ui-border);border-radius:var(--pagefind-ui-border-radius);font-size:calc(21px * var(--pagefind-ui-scale));position:relative;appearance:none;-webkit-appearance:none;display:flex;width:100%;box-sizing:border-box;font-weight:700}.pagefind-ui__search-input.svelte-e9gkc3::placeholder{opacity:.2}.pagefind-ui__search-clear.svelte-e9gkc3{position:absolute;top:calc(3px * var(--pagefind-ui-scale));right:calc(3px * var(--pagefind-ui-scale));height:calc(58px * var(--pagefind-ui-scale));padding:0 calc(15px * var(--pagefind-ui-scale)) 0 calc(2px * var(--pagefind-ui-scale));color:var(--pagefind-ui-text);font-size:calc(14px * var(--pagefind-ui-scale));cursor:pointer;background-color:var(--pagefind-ui-background);border-radius:var(--pagefind-ui-border-radius)}.pagefind-ui__drawer.svelte-e9gkc3{gap:calc(60px * var(--pagefind-ui-scale));display:flex;flex-direction:row;flex-wrap:wrap}.pagefind-ui__results-area.svelte-e9gkc3{min-width:min(calc(400px * var(--pagefind-ui-scale)),100%);flex:1000;margin-top:calc(20px * var(--pagefind-ui-scale))}.pagefind-ui__results.svelte-e9gkc3{padding:0}.pagefind-ui__message.svelte-e9gkc3{box-sizing:content-box;font-size:calc(16px * var(--pagefind-ui-scale));height:calc(24px * var(--pagefind-ui-scale));padding:calc(20px * var(--pagefind-ui-scale)) 0;display:flex;align-items:center;font-weight:700;margin-top:0}.pagefind-ui__button.svelte-e9gkc3{margin-top:calc(40px * var(--pagefind-ui-scale));border:var(--pagefind-ui-border-width) solid var(--pagefind-ui-border);border-radius:var(--pagefind-ui-border-radius);height:calc(48px * var(--pagefind-ui-scale));padding:0 calc(12px * var(--pagefind-ui-scale));font-size:calc(16px * var(--pagefind-ui-scale));color:var(--pagefind-ui-primary);background:var(--pagefind-ui-background);width:100%;text-align:center;font-weight:700;cursor:pointer}.pagefind-ui__button.svelte-e9gkc3:hover{border-color:var(--pagefind-ui-primary);color:var(--pagefind-ui-primary);background:var(--pagefind-ui-background)} diff --git a/pagefind/pagefind-ui.js b/pagefind/pagefind-ui.js new file mode 100644 index 0000000..a20be55 --- /dev/null +++ b/pagefind/pagefind-ui.js @@ -0,0 +1,2 @@ +(()=>{var Es=Object.defineProperty;var S=(n,e)=>{for(var t in e)Es(n,t,{get:e[t],enumerable:!0})};function j(){}function _t(n){return n()}function un(){return Object.create(null)}function G(n){n.forEach(_t)}function xe(n){return typeof n=="function"}function K(n,e){return n!=n?e==e:n!==e||n&&typeof n=="object"||typeof n=="function"}var Xe;function ie(n,e){return Xe||(Xe=document.createElement("a")),Xe.href=e,n===Xe.href}function cn(n){return Object.keys(n).length===0}var _n=typeof window<"u"?window:typeof globalThis<"u"?globalThis:global,de=class{constructor(e){this.options=e,this._listeners="WeakMap"in _n?new WeakMap:void 0}observe(e,t){return this._listeners.set(e,t),this._getObserver().observe(e,this.options),()=>{this._listeners.delete(e),this._observer.unobserve(e)}}_getObserver(){var e;return(e=this._observer)!==null&&e!==void 0?e:this._observer=new ResizeObserver(t=>{var s;for(let l of t)de.entries.set(l.target,l),(s=this._listeners.get(l.target))===null||s===void 0||s(l)})}};de.entries="WeakMap"in _n?new WeakMap:void 0;var fn=!1;function Rs(){fn=!0}function bs(){fn=!1}function b(n,e){n.appendChild(e)}function y(n,e,t){n.insertBefore(e,t||null)}function k(n){n.parentNode&&n.parentNode.removeChild(n)}function Q(n,e){for(let t=0;tn.removeEventListener(e,t,s)}function E(n,e,t){t==null?n.removeAttribute(e):n.getAttribute(e)!==t&&n.setAttribute(e,t)}function Cs(n){return Array.from(n.childNodes)}function N(n,e){e=""+e,n.data!==e&&(n.data=e)}function ft(n,e){n.value=e??""}function B(n,e,t){n.classList[t?"add":"remove"](e)}var $e=class{constructor(e=!1){this.is_svg=!1,this.is_svg=e,this.e=this.n=null}c(e){this.h(e)}m(e,t,s=null){this.e||(this.is_svg?this.e=Ts(t.nodeName):this.e=C(t.nodeType===11?"TEMPLATE":t.nodeName),this.t=t.tagName!=="TEMPLATE"?t:t.content,this.c(e)),this.i(s)}h(e){this.e.innerHTML=e,this.n=Array.from(this.e.nodeName==="TEMPLATE"?this.e.content.childNodes:this.e.childNodes)}i(e){for(let t=0;tn.indexOf(s)===-1?e.push(s):t.push(s)),t.forEach(s=>s()),le=e}var Qe=new Set,ee;function ae(){ee={r:0,c:[],p:ee}}function oe(){ee.r||G(ee.c),ee=ee.p}function D(n,e){n&&n.i&&(Qe.delete(n),n.i(e))}function P(n,e,t,s){if(n&&n.o){if(Qe.has(n))return;Qe.add(n),ee.c.push(()=>{Qe.delete(n),s&&(t&&n.d(1),s())}),n.o(e)}else s&&s()}function pn(n,e){P(n,1,1,()=>{e.delete(n.key)})}function gn(n,e,t,s,l,r,i,a,o,h,c,m){let p=n.length,d=r.length,_=p,u={};for(;_--;)u[n[_].key]=_;let f=[],T=new Map,R=new Map,M=[];for(_=d;_--;){let v=m(l,r,_),F=t(v),O=i.get(F);O?s&&M.push(()=>O.p(v,e)):(O=h(F,v),O.c()),T.set(F,f[_]=O),F in u&&R.set(F,Math.abs(_-u[F]))}let U=new Set,X=new Set;function W(v){D(v,1),v.m(a,c),i.set(v.key,v),c=v.first,d--}for(;p&&d;){let v=f[d-1],F=n[p-1],O=v.key,V=F.key;v===F?(c=v.first,p--,d--):T.has(V)?!i.has(O)||U.has(O)?W(v):X.has(V)?p--:R.get(O)>R.get(V)?(X.add(O),W(v)):(U.add(V),p--):(o(F,i),p--)}for(;p--;){let v=n[p];T.has(v.key)||o(v,i)}for(;d;)W(f[d-1]);return G(M),f}var As=["allowfullscreen","allowpaymentrequest","async","autofocus","autoplay","checked","controls","default","defer","disabled","formnovalidate","hidden","inert","ismap","loop","multiple","muted","nomodule","novalidate","open","playsinline","readonly","required","reversed","selected"],oa=new Set([...As]);function En(n,e,t){let s=n.$$.props[e];s!==void 0&&(n.$$.bound[s]=t,t(n.$$.ctx[s]))}function et(n){n&&n.c()}function me(n,e,t,s){let{fragment:l,after_update:r}=n.$$;l&&l.m(e,t),s||ct(()=>{let i=n.$$.on_mount.map(_t).filter(xe);n.$$.on_destroy?n.$$.on_destroy.push(...i):G(i),n.$$.on_mount=[]}),r.forEach(ct)}function ue(n,e){let t=n.$$;t.fragment!==null&&(Ms(t.after_update),G(t.on_destroy),t.fragment&&t.fragment.d(e),t.on_destroy=t.fragment=null,t.ctx=[])}function vs(n,e){n.$$.dirty[0]===-1&&(se.push(n),ys(),n.$$.dirty.fill(0)),n.$$.dirty[e/31|0]|=1<{let _=d.length?d[0]:p;return h.ctx&&l(h.ctx[m],h.ctx[m]=_)&&(!h.skip_bound&&h.bound[m]&&h.bound[m](_),c&&vs(n,m)),p}):[],h.update(),c=!0,G(h.before_update),h.fragment=s?s(h.ctx):!1,e.target){if(e.hydrate){Rs();let m=Cs(e.target);h.fragment&&h.fragment.l(m),m.forEach(k)}else h.fragment&&h.fragment.c();e.intro&&D(n.$$.fragment),me(n,e.target,e.anchor,e.customElement),bs(),mn()}fe(o)}var ws;typeof HTMLElement=="function"&&(ws=class extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"})}connectedCallback(){let{on_mount:n}=this.$$;this.$$.on_disconnect=n.map(_t).filter(xe);for(let e in this.$$.slotted)this.appendChild(this.$$.slotted[e])}attributeChangedCallback(n,e,t){this[n]=t}disconnectedCallback(){G(this.$$.on_disconnect)}$destroy(){ue(this,1),this.$destroy=j}$on(n,e){if(!xe(e))return j;let t=this.$$.callbacks[n]||(this.$$.callbacks[n]=[]);return t.push(e),()=>{let s=t.indexOf(e);s!==-1&&t.splice(s,1)}}$set(n){this.$$set&&!cn(n)&&(this.$$.skip_bound=!0,this.$$set(n),this.$$.skip_bound=!1)}});var q=class{$destroy(){ue(this,1),this.$destroy=j}$on(e,t){if(!xe(t))return j;let s=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return s.push(t),()=>{let l=s.indexOf(t);l!==-1&&s.splice(l,1)}}$set(e){this.$$set&&!cn(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}};function I(n){let e=typeof n=="string"?n.charCodeAt(0):n;return e>=97&&e<=122||e>=65&&e<=90}function $(n){let e=typeof n=="string"?n.charCodeAt(0):n;return e>=48&&e<=57}function Z(n){return I(n)||$(n)}var Rn=["art-lojban","cel-gaulish","no-bok","no-nyn","zh-guoyu","zh-hakka","zh-min","zh-min-nan","zh-xiang"];var mt={"en-gb-oed":"en-GB-oxendict","i-ami":"ami","i-bnn":"bnn","i-default":null,"i-enochian":null,"i-hak":"hak","i-klingon":"tlh","i-lux":"lb","i-mingo":null,"i-navajo":"nv","i-pwn":"pwn","i-tao":"tao","i-tay":"tay","i-tsu":"tsu","sgn-be-fr":"sfb","sgn-be-nl":"vgt","sgn-ch-de":"sgg","art-lojban":"jbo","cel-gaulish":null,"no-bok":"nb","no-nyn":"nn","zh-guoyu":"cmn","zh-hakka":"hak","zh-min":null,"zh-min-nan":"nan","zh-xiang":"hsn"};var Fs={}.hasOwnProperty;function tt(n,e={}){let t=bn(),s=String(n),l=s.toLowerCase(),r=0;if(n==null)throw new Error("Expected string, got `"+n+"`");if(Fs.call(mt,l)){let a=mt[l];return(e.normalize===void 0||e.normalize===null||e.normalize)&&typeof a=="string"?tt(a):(t[Rn.includes(l)?"regular":"irregular"]=s,t)}for(;I(l.charCodeAt(r))&&r<9;)r++;if(r>1&&r<9){if(t.language=s.slice(0,r),r<4){let a=0;for(;l.charCodeAt(r)===45&&I(l.charCodeAt(r+1))&&I(l.charCodeAt(r+2))&&I(l.charCodeAt(r+3))&&!I(l.charCodeAt(r+4));){if(a>2)return i(r,3,"Too many extended language subtags, expected at most 3 subtags");t.extendedLanguageSubtags.push(s.slice(r+1,r+4)),r+=4,a++}}for(l.charCodeAt(r)===45&&I(l.charCodeAt(r+1))&&I(l.charCodeAt(r+2))&&I(l.charCodeAt(r+3))&&I(l.charCodeAt(r+4))&&!I(l.charCodeAt(r+5))&&(t.script=s.slice(r+1,r+5),r+=5),l.charCodeAt(r)===45&&(I(l.charCodeAt(r+1))&&I(l.charCodeAt(r+2))&&!I(l.charCodeAt(r+3))?(t.region=s.slice(r+1,r+3),r+=3):$(l.charCodeAt(r+1))&&$(l.charCodeAt(r+2))&&$(l.charCodeAt(r+3))&&!$(l.charCodeAt(r+4))&&(t.region=s.slice(r+1,r+4),r+=4));l.charCodeAt(r)===45;){let a=r+1,o=a;for(;Z(l.charCodeAt(o));){if(o-a>7)return i(o,1,"Too long variant, expected at most 8 characters");o++}if(o-a>4||o-a>3&&$(l.charCodeAt(a)))t.variants.push(s.slice(a,o)),r=o;else break}for(;l.charCodeAt(r)===45&&!(l.charCodeAt(r+1)===120||!Z(l.charCodeAt(r+1))||l.charCodeAt(r+2)!==45||!Z(l.charCodeAt(r+3)));){let a=r+2,o=0;for(;l.charCodeAt(a)===45&&Z(l.charCodeAt(a+1))&&Z(l.charCodeAt(a+2));){let h=a+1;for(a=h+2,o++;Z(l.charCodeAt(a));){if(a-h>7)return i(a,2,"Too long extension, expected at most 8 characters");a++}}if(!o)return i(a,4,"Empty extension, extensions must have at least 2 characters of content");t.extensions.push({singleton:s.charAt(r+1),extensions:s.slice(r+3,a).split("-")}),r=a}}else r=0;if(r===0&&l.charCodeAt(r)===120||l.charCodeAt(r)===45&&l.charCodeAt(r+1)===120){r=r?r+2:1;let a=r;for(;l.charCodeAt(a)===45&&Z(l.charCodeAt(a+1));){let o=r+1;for(a=o;Z(l.charCodeAt(a));){if(a-o>7)return i(a,5,"Too long private-use area, expected at most 8 characters");a++}t.privateuse.push(s.slice(r+1,a)),r=a}}if(r!==s.length)return i(r,6,"Found superfluous content after tag");return t;function i(a,o,h){return e.warning&&e.warning(h,o,a),e.forgiving?t:bn()}}function bn(){return{language:null,extendedLanguageSubtags:[],script:null,region:null,variants:[],extensions:[],privateuse:[],irregular:null,regular:null}}function Tn(n,e,t){let s=n.slice();return s[8]=e[t][0],s[9]=e[t][1],s}function Hs(n){let e,t,s,l,r,i=n[0]&&Cn(n);return{c(){i&&i.c(),e=A(),t=C("div"),s=C("p"),s.textContent=`${n[3](30)}`,l=A(),r=C("p"),r.textContent=`${n[3](40)}`,E(s,"class","pagefind-ui__result-title pagefind-ui__loading svelte-j9e30"),E(r,"class","pagefind-ui__result-excerpt pagefind-ui__loading svelte-j9e30"),E(t,"class","pagefind-ui__result-inner svelte-j9e30")},m(a,o){i&&i.m(a,o),y(a,e,o),y(a,t,o),b(t,s),b(t,l),b(t,r)},p(a,o){a[0]?i||(i=Cn(a),i.c(),i.m(e.parentNode,e)):i&&(i.d(1),i=null)},d(a){i&&i.d(a),a&&k(e),a&&k(t)}}}function Ns(n){let e,t,s,l,r=n[1].meta?.title+"",i,a,o,h,c=n[1].excerpt+"",m,p=n[0]&&kn(n),d=n[2].length&&Sn(n);return{c(){p&&p.c(),e=A(),t=C("div"),s=C("p"),l=C("a"),i=w(r),o=A(),h=C("p"),m=A(),d&&d.c(),E(l,"class","pagefind-ui__result-link svelte-j9e30"),E(l,"href",a=n[1].meta?.url||n[1].url),E(s,"class","pagefind-ui__result-title svelte-j9e30"),E(h,"class","pagefind-ui__result-excerpt svelte-j9e30"),E(t,"class","pagefind-ui__result-inner svelte-j9e30")},m(_,u){p&&p.m(_,u),y(_,e,u),y(_,t,u),b(t,s),b(s,l),b(l,i),b(t,o),b(t,h),h.innerHTML=c,b(t,m),d&&d.m(t,null)},p(_,u){_[0]?p?p.p(_,u):(p=kn(_),p.c(),p.m(e.parentNode,e)):p&&(p.d(1),p=null),u&2&&r!==(r=_[1].meta?.title+"")&&N(i,r),u&2&&a!==(a=_[1].meta?.url||_[1].url)&&E(l,"href",a),u&2&&c!==(c=_[1].excerpt+"")&&(h.innerHTML=c),_[2].length?d?d.p(_,u):(d=Sn(_),d.c(),d.m(t,null)):d&&(d.d(1),d=null)},d(_){p&&p.d(_),_&&k(e),_&&k(t),d&&d.d()}}}function Cn(n){let e;return{c(){e=C("div"),E(e,"class","pagefind-ui__result-thumb pagefind-ui__loading svelte-j9e30")},m(t,s){y(t,e,s)},d(t){t&&k(e)}}}function kn(n){let e,t=n[1].meta.image&&yn(n);return{c(){e=C("div"),t&&t.c(),E(e,"class","pagefind-ui__result-thumb svelte-j9e30")},m(s,l){y(s,e,l),t&&t.m(e,null)},p(s,l){s[1].meta.image?t?t.p(s,l):(t=yn(s),t.c(),t.m(e,null)):t&&(t.d(1),t=null)},d(s){s&&k(e),t&&t.d()}}}function yn(n){let e,t,s;return{c(){e=C("img"),E(e,"class","pagefind-ui__result-image svelte-j9e30"),ie(e.src,t=n[1].meta?.image)||E(e,"src",t),E(e,"alt",s=n[1].meta?.image_alt||n[1].meta?.title)},m(l,r){y(l,e,r)},p(l,r){r&2&&!ie(e.src,t=l[1].meta?.image)&&E(e,"src",t),r&2&&s!==(s=l[1].meta?.image_alt||l[1].meta?.title)&&E(e,"alt",s)},d(l){l&&k(e)}}}function Sn(n){let e,t=n[2],s=[];for(let l=0;ln.toLocaleUpperCase();function zs(n,e,t){let{show_images:s=!0}=e,{process_result:l=null}=e,{result:r={data:async()=>{}}}=e,i=["title","image","image_alt","url"],a,o=[],h=async m=>{t(1,a=await m.data()),t(1,a=l?.(a)??a),t(2,o=Object.entries(a.meta).filter(([p])=>!i.includes(p)))},c=(m=30)=>". ".repeat(Math.floor(10+Math.random()*m));return n.$$set=m=>{"show_images"in m&&t(0,s=m.show_images),"process_result"in m&&t(4,l=m.process_result),"result"in m&&t(5,r=m.result)},n.$$.update=()=>{if(n.$$.dirty&32)e:h(r)},[s,a,o,c,l,r]}var pt=class extends q{constructor(e){super(),Y(this,e,zs,Os,K,{show_images:0,process_result:4,result:5})}},vn=pt;function wn(n,e,t){let s=n.slice();return s[11]=e[t][0],s[12]=e[t][1],s}function Fn(n,e,t){let s=n.slice();return s[15]=e[t],s}function js(n){let e,t,s,l,r,i=n[0]&&Hn(n);return{c(){i&&i.c(),e=A(),t=C("div"),s=C("p"),s.textContent=`${n[5](30)}`,l=A(),r=C("p"),r.textContent=`${n[5](40)}`,E(s,"class","pagefind-ui__result-title pagefind-ui__loading svelte-4xnkmf"),E(r,"class","pagefind-ui__result-excerpt pagefind-ui__loading svelte-4xnkmf"),E(t,"class","pagefind-ui__result-inner svelte-4xnkmf")},m(a,o){i&&i.m(a,o),y(a,e,o),y(a,t,o),b(t,s),b(t,l),b(t,r)},p(a,o){a[0]?i||(i=Hn(a),i.c(),i.m(e.parentNode,e)):i&&(i.d(1),i=null)},d(a){i&&i.d(a),a&&k(e),a&&k(t)}}}function Ds(n){let e,t,s,l,r=n[1].meta?.title+"",i,a,o,h,c,m=n[0]&&Nn(n),p=n[4]&&zn(n),d=n[3],_=[];for(let f=0;fn.toLocaleUpperCase();function Is(n,e,t){let{show_images:s=!0}=e,{process_result:l=null}=e,{result:r={data:async()=>{}}}=e,i=["title","image","image_alt","url"],a,o=[],h=[],c=!1,m=(_,u)=>{if(_.length<=u)return _;let f=[..._].sort((T,R)=>R.locations.length-T.locations.length).slice(0,3).map(T=>T.url);return _.filter(T=>f.includes(T.url))},p=async _=>{t(1,a=await _.data()),t(1,a=l?.(a)??a),t(2,o=Object.entries(a.meta).filter(([u])=>!i.includes(u))),Array.isArray(a.sub_results)&&(t(4,c=a.sub_results?.[0]?.url===(a.meta?.url||a.url)),c?t(3,h=m(a.sub_results.slice(1),3)):t(3,h=m([...a.sub_results],3)))},d=(_=30)=>". ".repeat(Math.floor(10+Math.random()*_));return n.$$set=_=>{"show_images"in _&&t(0,s=_.show_images),"process_result"in _&&t(6,l=_.process_result),"result"in _&&t(7,r=_.result)},n.$$.update=()=>{if(n.$$.dirty&128)e:p(r)},[s,a,o,h,c,d,l,r]}var gt=class extends q{constructor(e){super(),Y(this,e,Is,Us,K,{show_images:0,process_result:6,result:7})}},Pn=gt;function Ln(n,e,t){let s=n.slice();return s[10]=e[t][0],s[11]=e[t][1],s[12]=e,s[13]=t,s}function qn(n,e,t){let s=n.slice();return s[14]=e[t][0],s[15]=e[t][1],s[16]=e,s[17]=t,s}function Bn(n){let e,t,s=n[4]("filters_label",n[5],n[6])+"",l,r,i=Object.entries(n[1]),a=[];for(let o=0;on.toLocaleUpperCase(),Jn=n=>n.toLowerCase();function Ls(n,e,t){let{available_filters:s=null}=e,{show_empty_filters:l=!0}=e,{open_filters:r=[]}=e,{translate:i=()=>""}=e,{automatic_translations:a={}}=e,{translations:o={}}=e,{selected_filters:h={}}=e,c=!1,m=!1;function p(d,_){h[`${d}:${_}`]=this.checked,t(0,h)}return n.$$set=d=>{"available_filters"in d&&t(1,s=d.available_filters),"show_empty_filters"in d&&t(2,l=d.show_empty_filters),"open_filters"in d&&t(3,r=d.open_filters),"translate"in d&&t(4,i=d.translate),"automatic_translations"in d&&t(5,a=d.automatic_translations),"translations"in d&&t(6,o=d.translations),"selected_filters"in d&&t(0,h=d.selected_filters)},n.$$.update=()=>{if(n.$$.dirty&258){e:if(s&&!c){t(8,c=!0);let d=Object.entries(s||{});d.length===1&&Object.entries(d[0][1])?.length<=6&&t(7,m=!0)}}},[h,s,l,r,i,a,o,m,c,p]}var Et=class extends q{constructor(e){super(),Y(this,e,Ls,Ps,K,{available_filters:1,show_empty_filters:2,open_filters:3,translate:4,automatic_translations:5,translations:6,selected_filters:0})}},Yn=Et;var Rt={};S(Rt,{comments:()=>Bs,default:()=>Gs,direction:()=>Ws,strings:()=>Vs,thanks_to:()=>qs});var qs="Jan Claasen ",Bs="",Ws="ltr",Vs={placeholder:"Soek",clear_search:"Opruim",load_more:"Laai nog resultate",search_label:"Soek hierdie webwerf",filters_label:"Filters",zero_results:"Geen resultate vir [SEARCH_TERM]",many_results:"[COUNT] resultate vir [SEARCH_TERM]",one_result:"[COUNT] resultate vir [SEARCH_TERM]",alt_search:"Geen resultate vir [SEARCH_TERM]. Toon resultate vir [DIFFERENT_TERM] in plaas daarvan",search_suggestion:"Geen resultate vir [SEARCH_TERM]. Probeer eerder een van die volgende terme:",searching:"Soek vir [SEARCH_TERM]"},Gs={thanks_to:qs,comments:Bs,direction:Ws,strings:Vs};var bt={};S(bt,{comments:()=>Js,default:()=>Xs,direction:()=>Ys,strings:()=>Zs,thanks_to:()=>Ks});var Ks="Maruf Alom ",Js="",Ys="ltr",Zs={placeholder:"\u0985\u09A8\u09C1\u09B8\u09A8\u09CD\u09A7\u09BE\u09A8 \u0995\u09B0\u09C1\u09A8",clear_search:"\u09AE\u09C1\u099B\u09C7 \u09AB\u09C7\u09B2\u09C1\u09A8",load_more:"\u0986\u09B0\u09CB \u09AB\u09B2\u09BE\u09AB\u09B2 \u09A6\u09C7\u0996\u09C1\u09A8",search_label:"\u098F\u0987 \u0993\u09DF\u09C7\u09AC\u09B8\u09BE\u0987\u099F\u09C7 \u0985\u09A8\u09C1\u09B8\u09A8\u09CD\u09A7\u09BE\u09A8 \u0995\u09B0\u09C1\u09A8",filters_label:"\u09AB\u09BF\u09B2\u09CD\u099F\u09BE\u09B0",zero_results:"[SEARCH_TERM] \u098F\u09B0 \u099C\u09A8\u09CD\u09AF \u0995\u09BF\u099B\u09C1 \u0996\u09C1\u0981\u099C\u09C7 \u09AA\u09BE\u0993\u09DF\u09BE \u09AF\u09BE\u09DF\u09A8\u09BF",many_results:"[COUNT]-\u099F\u09BF \u09AB\u09B2\u09BE\u09AB\u09B2 \u09AA\u09BE\u0993\u09DF\u09BE \u0997\u09BF\u09DF\u09C7\u099B\u09C7 [SEARCH_TERM] \u098F\u09B0 \u099C\u09A8\u09CD\u09AF",one_result:"[COUNT]-\u099F\u09BF \u09AB\u09B2\u09BE\u09AB\u09B2 \u09AA\u09BE\u0993\u09DF\u09BE \u0997\u09BF\u09DF\u09C7\u099B\u09C7 [SEARCH_TERM] \u098F\u09B0 \u099C\u09A8\u09CD\u09AF",alt_search:"\u0995\u09CB\u09A8 \u0995\u09BF\u099B\u09C1 \u0996\u09C1\u0981\u099C\u09C7 \u09AA\u09BE\u0993\u09DF\u09BE \u09AF\u09BE\u09DF\u09A8\u09BF [SEARCH_TERM] \u098F\u09B0 \u099C\u09A8\u09CD\u09AF. \u09AA\u09B0\u09BF\u09AC\u09B0\u09CD\u09A4\u09C7 [DIFFERENT_TERM] \u098F\u09B0 \u099C\u09A8\u09CD\u09AF \u09A6\u09C7\u0996\u09BE\u09A8\u09CB \u09B9\u099A\u09CD\u099B\u09C7",search_suggestion:"\u0995\u09CB\u09A8 \u0995\u09BF\u099B\u09C1 \u0996\u09C1\u0981\u099C\u09C7 \u09AA\u09BE\u0993\u09DF\u09BE \u09AF\u09BE\u09DF\u09A8\u09BF [SEARCH_TERM] \u098F\u09B0 \u09AC\u09BF\u09B7\u09DF\u09C7. \u09A8\u09BF\u09A8\u09CD\u09AE\u09C7\u09B0 \u09AC\u09BF\u09B7\u09DF\u09AC\u09B8\u09CD\u09A4\u09C1 \u0996\u09C1\u0981\u099C\u09C7 \u09A6\u09C7\u0996\u09C1\u09A8:",searching:"\u0985\u09A8\u09C1\u09B8\u09A8\u09CD\u09A7\u09BE\u09A8 \u099A\u09B2\u099B\u09C7 [SEARCH_TERM]..."},Xs={thanks_to:Ks,comments:Js,direction:Ys,strings:Zs};var Tt={};S(Tt,{comments:()=>xs,default:()=>tl,direction:()=>$s,strings:()=>el,thanks_to:()=>Qs});var Qs="Pablo Villaverde ",xs="",$s="ltr",el={placeholder:"Cerca",clear_search:"Netejar",load_more:"Veure m\xE9es resultats",search_label:"Cerca en aquest lloc",filters_label:"Filtres",zero_results:"No es van trobar resultats per [SEARCH_TERM]",many_results:"[COUNT] resultats trobats per [SEARCH_TERM]",one_result:"[COUNT] resultat trobat per [SEARCH_TERM]",alt_search:"No es van trobar resultats per [SEARCH_TERM]. Mostrant al seu lloc resultats per [DIFFERENT_TERM]",search_suggestion:"No es van trobar resultats per [SEARCH_TERM]. Proveu una de les cerques seg\xFCents:",searching:"Cercant [SEARCH_TERM]..."},tl={thanks_to:Qs,comments:xs,direction:$s,strings:el};var Ct={};S(Ct,{comments:()=>sl,default:()=>il,direction:()=>ll,strings:()=>rl,thanks_to:()=>nl});var nl="Dalibor Hon ",sl="",ll="ltr",rl={placeholder:"Hledat",clear_search:"Smazat",load_more:"Na\u010D\xEDst dal\u0161\xED v\xFDsledky",search_label:"Prohledat tuto str\xE1nku",filters_label:"Filtry",zero_results:"\u017D\xE1dn\xE9 v\xFDsledky pro [SEARCH_TERM]",many_results:"[COUNT] v\xFDsledk\u016F pro [SEARCH_TERM]",one_result:"[COUNT] v\xFDsledek pro [SEARCH_TERM]",alt_search:"\u017D\xE1dn\xE9 v\xFDsledky pro [SEARCH_TERM]. Zobrazuj\xED se v\xFDsledky pro [DIFFERENT_TERM]",search_suggestion:"\u017D\xE1dn\xE9 v\xFDsledky pro [SEARCH_TERM]. Souvisej\xEDc\xED v\xFDsledky hled\xE1n\xED:",searching:"Hled\xE1m [SEARCH_TERM]..."},il={thanks_to:nl,comments:sl,direction:ll,strings:rl};var kt={};S(kt,{comments:()=>ol,default:()=>_l,direction:()=>ul,strings:()=>cl,thanks_to:()=>al});var al="Jonas Smedegaard ",ol="",ul="ltr",cl={placeholder:"S\xF8g",clear_search:"Nulstil",load_more:"Indl\xE6s flere resultater",search_label:"S\xF8g p\xE5 dette website",filters_label:"Filtre",zero_results:"Ingen resultater for [SEARCH_TERM]",many_results:"[COUNT] resultater for [SEARCH_TERM]",one_result:"[COUNT] resultat for [SEARCH_TERM]",alt_search:"Ingen resultater for [SEARCH_TERM]. Viser resultater for [DIFFERENT_TERM] i stedet",search_suggestion:"Ingen resultater for [SEARCH_TERM]. Pr\xF8v et af disse s\xF8geord i stedet:",searching:"S\xF8ger efter [SEARCH_TERM]..."},_l={thanks_to:al,comments:ol,direction:ul,strings:cl};var yt={};S(yt,{comments:()=>dl,default:()=>pl,direction:()=>hl,strings:()=>ml,thanks_to:()=>fl});var fl="Jan Claasen ",dl="",hl="ltr",ml={placeholder:"Suche",clear_search:"L\xF6schen",load_more:"Mehr Ergebnisse laden",search_label:"Suche diese Seite",filters_label:"Filter",zero_results:"Keine Ergebnisse f\xFCr [SEARCH_TERM]",many_results:"[COUNT] Ergebnisse f\xFCr [SEARCH_TERM]",one_result:"[COUNT] Ergebnis f\xFCr [SEARCH_TERM]",alt_search:"Keine Ergebnisse f\xFCr [SEARCH_TERM]. Stattdessen werden Ergebnisse f\xFCr [DIFFERENT_TERM] angezeigt",search_suggestion:"Keine Ergebnisse f\xFCr [SEARCH_TERM]. Versuchen Sie eine der folgenden Suchen:",searching:"Suche f\xFCr [SEARCH_TERM]"},pl={thanks_to:fl,comments:dl,direction:hl,strings:ml};var St={};S(St,{comments:()=>El,default:()=>Tl,direction:()=>Rl,strings:()=>bl,thanks_to:()=>gl});var gl="Liam Bigelow ",El="",Rl="ltr",bl={placeholder:"Search",clear_search:"Clear",load_more:"Load more results",search_label:"Search this site",filters_label:"Filters",zero_results:"No results for [SEARCH_TERM]",many_results:"[COUNT] results for [SEARCH_TERM]",one_result:"[COUNT] result for [SEARCH_TERM]",alt_search:"No results for [SEARCH_TERM]. Showing results for [DIFFERENT_TERM] instead",search_suggestion:"No results for [SEARCH_TERM]. Try one of the following searches:",searching:"Searching for [SEARCH_TERM]..."},Tl={thanks_to:gl,comments:El,direction:Rl,strings:bl};var Mt={};S(Mt,{comments:()=>kl,default:()=>Ml,direction:()=>yl,strings:()=>Sl,thanks_to:()=>Cl});var Cl="Pablo Villaverde ",kl="",yl="ltr",Sl={placeholder:"Buscar",clear_search:"Limpiar",load_more:"Ver m\xE1s resultados",search_label:"Buscar en este sitio",filters_label:"Filtros",zero_results:"No se encontraron resultados para [SEARCH_TERM]",many_results:"[COUNT] resultados encontrados para [SEARCH_TERM]",one_result:"[COUNT] resultado encontrado para [SEARCH_TERM]",alt_search:"No se encontraron resultados para [SEARCH_TERM]. Mostrando en su lugar resultados para [DIFFERENT_TERM]",search_suggestion:"No se encontraron resultados para [SEARCH_TERM]. Prueba una de las siguientes b\xFAsquedas:",searching:"Buscando [SEARCH_TERM]..."},Ml={thanks_to:Cl,comments:kl,direction:yl,strings:Sl};var At={};S(At,{comments:()=>vl,default:()=>Hl,direction:()=>wl,strings:()=>Fl,thanks_to:()=>Al});var Al="Valtteri Laitinen ",vl="",wl="ltr",Fl={placeholder:"Haku",clear_search:"Tyhjenn\xE4",load_more:"Lataa lis\xE4\xE4 tuloksia",search_label:"Hae t\xE4lt\xE4 sivustolta",filters_label:"Suodattimet",zero_results:"Ei tuloksia haulle [SEARCH_TERM]",many_results:"[COUNT] tulosta haulle [SEARCH_TERM]",one_result:"[COUNT] tulos haulle [SEARCH_TERM]",alt_search:"Ei tuloksia haulle [SEARCH_TERM]. N\xE4ytet\xE4\xE4n tulokset sen sijaan haulle [DIFFERENT_TERM]",search_suggestion:"Ei tuloksia haulle [SEARCH_TERM]. Kokeile jotain seuraavista:",searching:"Haetaan [SEARCH_TERM]..."},Hl={thanks_to:Al,comments:vl,direction:wl,strings:Fl};var vt={};S(vt,{comments:()=>Ol,default:()=>Dl,direction:()=>zl,strings:()=>jl,thanks_to:()=>Nl});var Nl="Nicolas Friedli ",Ol="",zl="ltr",jl={placeholder:"Rechercher",clear_search:"Nettoyer",load_more:"Charger plus de r\xE9sultats",search_label:"Recherche sur ce site",filters_label:"Filtres",zero_results:"Pas de r\xE9sultat pour [SEARCH_TERM]",many_results:"[COUNT] r\xE9sultats pour [SEARCH_TERM]",one_result:"[COUNT] r\xE9sultat pour [SEARCH_TERM]",alt_search:"Pas de r\xE9sultat pour [SEARCH_TERM]. Montre les r\xE9sultats pour [DIFFERENT_TERM] \xE0 la place",search_suggestion:"Pas de r\xE9sultat pour [SEARCH_TERM]. Essayer une des recherches suivantes:",searching:"Recherche [SEARCH_TERM]..."},Dl={thanks_to:Nl,comments:Ol,direction:zl,strings:jl};var wt={};S(wt,{comments:()=>Il,default:()=>ql,direction:()=>Pl,strings:()=>Ll,thanks_to:()=>Ul});var Ul="Pablo Villaverde ",Il="",Pl="ltr",Ll={placeholder:"Buscar",clear_search:"Limpar",load_more:"Ver m\xE1is resultados",search_label:"Buscar neste sitio",filters_label:"Filtros",zero_results:"Non se atoparon resultados para [SEARCH_TERM]",many_results:"[COUNT] resultados atopados para [SEARCH_TERM]",one_result:"[COUNT] resultado atopado para [SEARCH_TERM]",alt_search:"Non se atoparon resultados para [SEARCH_TERM]. Amosando no seu lugar resultados para [DIFFERENT_TERM]",search_suggestion:"Non se atoparon resultados para [SEARCH_TERM]. Probe unha das seguintes pesquisas:",searching:"Buscando [SEARCH_TERM]..."},ql={thanks_to:Ul,comments:Il,direction:Pl,strings:Ll};var Ft={};S(Ft,{comments:()=>Wl,default:()=>Kl,direction:()=>Vl,strings:()=>Gl,thanks_to:()=>Bl});var Bl="Amit Yadav ",Wl="",Vl="ltr",Gl={placeholder:"\u0916\u094B\u091C\u0947\u0902",clear_search:"\u0938\u093E\u092B \u0915\u0930\u0947\u0902",load_more:"\u0914\u0930 \u0905\u0927\u093F\u0915 \u092A\u0930\u093F\u0923\u093E\u092E \u0932\u094B\u0921 \u0915\u0930\u0947\u0902",search_label:"\u0907\u0938 \u0938\u093E\u0907\u091F \u092E\u0947\u0902 \u0916\u094B\u091C\u0947\u0902",filters_label:"\u092B\u093C\u093F\u0932\u094D\u091F\u0930",zero_results:"\u0915\u094B\u0908 \u092A\u0930\u093F\u0923\u093E\u092E [SEARCH_TERM] \u0915\u0947 \u0932\u093F\u090F \u0928\u0939\u0940\u0902 \u092E\u093F\u0932\u093E",many_results:"[COUNT] \u092A\u0930\u093F\u0923\u093E\u092E [SEARCH_TERM] \u0915\u0947 \u0932\u093F\u090F \u092E\u093F\u0932\u0947",one_result:"[COUNT] \u092A\u0930\u093F\u0923\u093E\u092E [SEARCH_TERM] \u0915\u0947 \u0932\u093F\u090F \u092E\u093F\u0932\u093E",alt_search:"[SEARCH_TERM] \u0915\u0947 \u0932\u093F\u090F \u0915\u094B\u0908 \u092A\u0930\u093F\u0923\u093E\u092E \u0928\u0939\u0940\u0902 \u092E\u093F\u0932\u093E\u0964 \u0907\u0938\u0915\u0947 \u092C\u091C\u093E\u092F [DIFFERENT_TERM] \u0915\u0947 \u0932\u093F\u090F \u092A\u0930\u093F\u0923\u093E\u092E \u0926\u093F\u0916\u093E \u0930\u0939\u093E \u0939\u0948",search_suggestion:"[SEARCH_TERM] \u0915\u0947 \u0932\u093F\u090F \u0915\u094B\u0908 \u092A\u0930\u093F\u0923\u093E\u092E \u0928\u0939\u0940\u0902 \u092E\u093F\u0932\u093E\u0964 \u0928\u093F\u092E\u094D\u0928\u0932\u093F\u0916\u093F\u0924 \u0916\u094B\u091C\u094B\u0902 \u092E\u0947\u0902 \u0938\u0947 \u0915\u094B\u0908 \u090F\u0915 \u0906\u091C\u093C\u092E\u093E\u090F\u0902:",searching:"[SEARCH_TERM] \u0915\u0940 \u0916\u094B\u091C \u0915\u0940 \u091C\u093E \u0930\u0939\u0940 \u0939\u0948..."},Kl={thanks_to:Bl,comments:Wl,direction:Vl,strings:Gl};var Ht={};S(Ht,{comments:()=>Yl,default:()=>Ql,direction:()=>Zl,strings:()=>Xl,thanks_to:()=>Jl});var Jl="Diomed ",Yl="",Zl="ltr",Xl={placeholder:"Tra\u017Ei",clear_search:"O\u010Disti",load_more:"U\u010Ditaj vi\u0161e rezultata",search_label:"Pretra\u017Ei ovu stranicu",filters_label:"Filteri",zero_results:"Nema rezultata za [SEARCH_TERM]",many_results:"[COUNT] rezultata za [SEARCH_TERM]",one_result:"[COUNT] rezultat za [SEARCH_TERM]",alt_search:"Nema rezultata za [SEARCH_TERM]. Prikazujem rezultate za [DIFFERENT_TERM]",search_suggestion:"Nema rezultata za [SEARCH_TERM]. Poku\u0161aj s jednom od ovih pretraga:",searching:"Pretra\u017Eujem [SEARCH_TERM]..."},Ql={thanks_to:Jl,comments:Yl,direction:Zl,strings:Xl};var Nt={};S(Nt,{comments:()=>$l,default:()=>nr,direction:()=>er,strings:()=>tr,thanks_to:()=>xl});var xl="Adam Laki ",$l="",er="ltr",tr={placeholder:"Keres\xE9s",clear_search:"T\xF6rl\xE9s",load_more:"Tov\xE1bbi tal\xE1latok bet\xF6lt\xE9se",search_label:"Keres\xE9s az oldalon",filters_label:"Sz\u0171r\xE9s",zero_results:"Nincs tal\xE1lat a(z) [SEARCH_TERM] kifejez\xE9sre",many_results:"[COUNT] db tal\xE1lat a(z) [SEARCH_TERM] kifejez\xE9sre",one_result:"[COUNT] db tal\xE1lat a(z) [SEARCH_TERM] kifejez\xE9sre",alt_search:"Nincs tal\xE1lat a(z) [SEARCH_TERM] kifejez\xE9sre. Tal\xE1latok mutat\xE1sa ink\xE1bb a(z) [DIFFERENT_TERM] kifejez\xE9sre",search_suggestion:"Nincs tal\xE1lat a(z) [SEARCH_TERM] kifejez\xE9sre. Pr\xF3b\xE1ld meg a k\xF6vetkez\u0151 keres\xE9sek egyik\xE9t:",searching:"Keres\xE9s a(z) [SEARCH_TERM] kifejez\xE9sre..."},nr={thanks_to:xl,comments:$l,direction:er,strings:tr};var Ot={};S(Ot,{comments:()=>lr,default:()=>ar,direction:()=>rr,strings:()=>ir,thanks_to:()=>sr});var sr="Nixentric",lr="",rr="ltr",ir={placeholder:"Cari",clear_search:"Bersihkan",load_more:"Muat lebih banyak hasil",search_label:"Telusuri situs ini",filters_label:"Filter",zero_results:"[SEARCH_TERM] tidak ditemukan",many_results:"Ditemukan [COUNT] hasil untuk [SEARCH_TERM]",one_result:"Ditemukan [COUNT] hasil untuk [SEARCH_TERM]",alt_search:"[SEARCH_TERM] tidak ditemukan. Menampilkan hasil [DIFFERENT_TERM] sebagai gantinya",search_suggestion:"[SEARCH_TERM] tidak ditemukan. Coba salah satu pencarian berikut ini:",searching:"Mencari [SEARCH_TERM]..."},ar={thanks_to:sr,comments:lr,direction:rr,strings:ir};var zt={};S(zt,{comments:()=>ur,default:()=>fr,direction:()=>cr,strings:()=>_r,thanks_to:()=>or});var or="Cosette Bruhns Alonso, Andrew Janco ",ur="",cr="ltr",_r={placeholder:"Cerca",clear_search:"Cancella la cronologia",load_more:"Mostra pi\xF9 risultati",search_label:"Cerca nel sito",filters_label:"Filtri di ricerca",zero_results:"Nessun risultato per [SEARCH_TERM]",many_results:"[COUNT] risultati per [SEARCH_TERM]",one_result:"[COUNT] risultato per [SEARCH_TERM]",alt_search:"Nessun risultato per [SEARCH_TERM]. Mostrando risultati per [DIFFERENT_TERM] come alternativa.",search_suggestion:"Nessun risultato per [SEARCH_TERM]. Prova una delle seguenti ricerche:",searching:"Cercando [SEARCH_TERM]..."},fr={thanks_to:or,comments:ur,direction:cr,strings:_r};var jt={};S(jt,{comments:()=>hr,default:()=>gr,direction:()=>mr,strings:()=>pr,thanks_to:()=>dr});var dr="Tate",hr="",mr="ltr",pr={placeholder:"\u691C\u7D22",clear_search:"\u30AF\u30EA\u30A2",load_more:"\u6B21\u3092\u8AAD\u307F\u8FBC\u3080",search_label:"\u3053\u306E\u30B5\u30A4\u30C8\u3092\u691C\u7D22",filters_label:"\u30D5\u30A3\u30EB\u30BF",zero_results:"[SEARCH_TERM]\u306E\u691C\u7D22\u306B\u4E00\u81F4\u3059\u308B\u60C5\u5831\u306F\u3042\u308A\u307E\u305B\u3093\u3067\u3057\u305F",many_results:"[SEARCH_TERM]\u306E[COUNT]\u4EF6\u306E\u691C\u7D22\u7D50\u679C",one_result:"[SEARCH_TERM]\u306E[COUNT]\u4EF6\u306E\u691C\u7D22\u7D50\u679C",alt_search:"[SEARCH_TERM]\u306E\u691C\u7D22\u306B\u4E00\u81F4\u3059\u308B\u60C5\u5831\u306F\u3042\u308A\u307E\u305B\u3093\u3067\u3057\u305F\u3002[DIFFERENT_TERM]\u306E\u691C\u7D22\u7D50\u679C\u3092\u8868\u793A\u3057\u3066\u3044\u307E\u3059",search_suggestion:"[SEARCH_TERM]\u306E\u691C\u7D22\u306B\u4E00\u81F4\u3059\u308B\u60C5\u5831\u306F\u3042\u308A\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u6B21\u306E\u3044\u305A\u308C\u304B\u306E\u691C\u7D22\u3092\u8A66\u3057\u3066\u304F\u3060\u3055\u3044",searching:"[SEARCH_TERM]\u3092\u691C\u7D22\u3057\u3066\u3044\u307E\u3059"},gr={thanks_to:dr,comments:hr,direction:mr,strings:pr};var Dt={};S(Dt,{comments:()=>Rr,default:()=>Cr,direction:()=>br,strings:()=>Tr,thanks_to:()=>Er});var Er="Seokho Son ",Rr="",br="ltr",Tr={placeholder:"\uAC80\uC0C9\uC5B4",clear_search:"\uBE44\uC6B0\uAE30",load_more:"\uAC80\uC0C9 \uACB0\uACFC \uB354 \uBCF4\uAE30",search_label:"\uC0AC\uC774\uD2B8 \uAC80\uC0C9",filters_label:"\uD544\uD130",zero_results:"[SEARCH_TERM]\uC5D0 \uB300\uD55C \uACB0\uACFC \uC5C6\uC74C",many_results:"[SEARCH_TERM]\uC5D0 \uB300\uD55C \uACB0\uACFC [COUNT]\uAC74",one_result:"[SEARCH_TERM]\uC5D0 \uB300\uD55C \uACB0\uACFC [COUNT]\uAC74",alt_search:"[SEARCH_TERM]\uC5D0 \uB300\uD55C \uACB0\uACFC \uC5C6\uC74C. [DIFFERENT_TERM]\uC5D0 \uB300\uD55C \uACB0\uACFC",search_suggestion:"[SEARCH_TERM]\uC5D0 \uB300\uD55C \uACB0\uACFC \uC5C6\uC74C. \uCD94\uCC9C \uAC80\uC0C9\uC5B4: ",searching:"[SEARCH_TERM] \uAC80\uC0C9 \uC911..."},Cr={thanks_to:Er,comments:Rr,direction:br,strings:Tr};var Ut={};S(Ut,{comments:()=>yr,default:()=>Ar,direction:()=>Sr,strings:()=>Mr,thanks_to:()=>kr});var kr="",yr="",Sr="ltr",Mr={placeholder:"Rapu",clear_search:"Whakakore",load_more:"Whakauta \u0113tahi otinga k\u0113",search_label:"Rapu",filters_label:"T\u0101tari",zero_results:"Otinga kore ki [SEARCH_TERM]",many_results:"[COUNT] otinga ki [SEARCH_TERM]",one_result:"[COUNT] otinga ki [SEARCH_TERM]",alt_search:"Otinga kore ki [SEARCH_TERM]. Otinga k\u0113 ki [DIFFERENT_TERM]",search_suggestion:"Otinga kore ki [SEARCH_TERM]. whakam\u0101tau ki ng\u0101 mea atu:",searching:"Rapu ki [SEARCH_TERM]..."},Ar={thanks_to:kr,comments:yr,direction:Sr,strings:Mr};var It={};S(It,{comments:()=>wr,default:()=>Nr,direction:()=>Fr,strings:()=>Hr,thanks_to:()=>vr});var vr="Paul van Brouwershaven",wr="",Fr="ltr",Hr={placeholder:"Zoeken",clear_search:"Reset",load_more:"Meer resultaten laden",search_label:"Doorzoek deze site",filters_label:"Filters",zero_results:"Geen resultaten voor [SEARCH_TERM]",many_results:"[COUNT] resultaten voor [SEARCH_TERM]",one_result:"[COUNT] resultaat voor [SEARCH_TERM]",alt_search:"Geen resultaten voor [SEARCH_TERM]. In plaats daarvan worden resultaten voor [DIFFERENT_TERM] weergegeven",search_suggestion:"Geen resultaten voor [SEARCH_TERM]. Probeer een van de volgende zoekopdrachten:",searching:"Zoeken naar [SEARCH_TERM]..."},Nr={thanks_to:vr,comments:wr,direction:Fr,strings:Hr};var Pt={};S(Pt,{comments:()=>zr,default:()=>Ur,direction:()=>jr,strings:()=>Dr,thanks_to:()=>Or});var Or="Christopher Wingate",zr="",jr="ltr",Dr={placeholder:"S\xF8k",clear_search:"Fjern",load_more:"Last flere resultater",search_label:"S\xF8k p\xE5 denne siden",filters_label:"Filtre",zero_results:"Ingen resultater for [SEARCH_TERM]",many_results:"[COUNT] resultater for [SEARCH_TERM]",one_result:"[COUNT] resultat for [SEARCH_TERM]",alt_search:"Ingen resultater for [SEARCH_TERM]. Viser resultater for [DIFFERENT_TERM] i stedet",search_suggestion:"Ingen resultater for [SEARCH_TERM]. Pr\xF8v en av disse s\xF8keordene i stedet:",searching:"S\xF8ker etter [SEARCH_TERM]"},Ur={thanks_to:Or,comments:zr,direction:jr,strings:Dr};var Lt={};S(Lt,{comments:()=>Pr,default:()=>Br,direction:()=>Lr,strings:()=>qr,thanks_to:()=>Ir});var Ir="",Pr="",Lr="ltr",qr={placeholder:"Szukaj",clear_search:"Wyczy\u015B\u0107",load_more:"Za\u0142aduj wi\u0119cej",search_label:"Przeszukaj t\u0119 stron\u0119",filters_label:"Filtry",zero_results:"Brak wynik\xF3w dla [SEARCH_TERM]",many_results:"[COUNT] wynik\xF3w dla [SEARCH_TERM]",one_result:"[COUNT] wynik dla [SEARCH_TERM]",alt_search:"Brak wynik\xF3w dla [SEARCH_TERM]. Wy\u015Bwietlam wyniki dla [DIFFERENT_TERM]",search_suggestion:"Brak wynik\xF3w dla [SEARCH_TERM]. Pokrewne wyniki wyszukiwania:",searching:"Szukam [SEARCH_TERM]..."},Br={thanks_to:Ir,comments:Pr,direction:Lr,strings:qr};var qt={};S(qt,{comments:()=>Vr,default:()=>Jr,direction:()=>Gr,strings:()=>Kr,thanks_to:()=>Wr});var Wr="Jonatah",Vr="",Gr="ltr",Kr={placeholder:"Pesquisar",clear_search:"Limpar",load_more:"Ver mais resultados",search_label:"Pesquisar",filters_label:"Filtros",zero_results:"Nenhum resultado encontrado para [SEARCH_TERM]",many_results:"[COUNT] resultados encontrados para [SEARCH_TERM]",one_result:"[COUNT] resultado encontrado para [SEARCH_TERM]",alt_search:"Nenhum resultado encontrado para [SEARCH_TERM]. Exibindo resultados para [DIFFERENT_TERM]",search_suggestion:"Nenhum resultado encontrado para [SEARCH_TERM]. Tente uma das seguintes pesquisas:",searching:"Pesquisando por [SEARCH_TERM]..."},Jr={thanks_to:Wr,comments:Vr,direction:Gr,strings:Kr};var Bt={};S(Bt,{comments:()=>Zr,default:()=>xr,direction:()=>Xr,strings:()=>Qr,thanks_to:()=>Yr});var Yr="Bogdan Mateescu ",Zr="",Xr="ltr",Qr={placeholder:"C\u0103utare",clear_search:"\u015Eterge\u0163i",load_more:"\xCEnc\u0103rca\u021Bi mai multe rezultate",search_label:"C\u0103uta\u021Bi \xEEn acest site",filters_label:"Filtre",zero_results:"Niciun rezultat pentru [SEARCH_TERM]",many_results:"[COUNT] rezultate pentru [SEARCH_TERM]",one_result:"[COUNT] rezultat pentru [SEARCH_TERM]",alt_search:"Niciun rezultat pentru [SEARCH_TERM]. Se afi\u0219eaz\u0103 \xEEn schimb rezultatele pentru [DIFFERENT_TERM]",search_suggestion:"Niciun rezultat pentru [SEARCH_TERM]. \xCEncerca\u021Bi una dintre urm\u0103toarele c\u0103ut\u0103ri:",searching:"Se caut\u0103 dup\u0103: [SEARCH_TERM]..."},xr={thanks_to:Yr,comments:Zr,direction:Xr,strings:Qr};var Wt={};S(Wt,{comments:()=>ei,default:()=>si,direction:()=>ti,strings:()=>ni,thanks_to:()=>$r});var $r="Aleksandr Gordeev",ei="",ti="ltr",ni={placeholder:"\u041F\u043E\u0438\u0441\u043A",clear_search:"\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C \u043F\u043E\u043B\u0435",load_more:"\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044C \u0435\u0449\u0435",search_label:"\u041F\u043E\u0438\u0441\u043A \u043F\u043E \u0441\u0430\u0439\u0442\u0443",filters_label:"\u0424\u0438\u043B\u044C\u0442\u0440\u044B",zero_results:"\u041D\u0438\u0447\u0435\u0433\u043E \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E \u043F\u043E \u0437\u0430\u043F\u0440\u043E\u0441\u0443: [SEARCH_TERM]",many_results:"[COUNT] \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u043E\u0432 \u043F\u043E \u0437\u0430\u043F\u0440\u043E\u0441\u0443: [SEARCH_TERM]",one_result:"[COUNT] \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442 \u043F\u043E \u0437\u0430\u043F\u0440\u043E\u0441\u0443: [SEARCH_TERM]",alt_search:"\u041D\u0438\u0447\u0435\u0433\u043E \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E \u043F\u043E \u0437\u0430\u043F\u0440\u043E\u0441\u0443: [SEARCH_TERM]. \u041F\u043E\u043A\u0430\u0437\u0430\u043D\u044B \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u044B \u043F\u043E \u0437\u0430\u043F\u0440\u043E\u0441\u0443: [DIFFERENT_TERM]",search_suggestion:"\u041D\u0438\u0447\u0435\u0433\u043E \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E \u043F\u043E \u0437\u0430\u043F\u0440\u043E\u0441\u0443: [SEARCH_TERM]. \u041F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u043E\u0434\u0438\u043D \u0438\u0437 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0445 \u0432\u0430\u0440\u0438\u0430\u043D\u0442\u043E\u0432",searching:"\u041F\u043E\u0438\u0441\u043A \u043F\u043E \u0437\u0430\u043F\u0440\u043E\u0441\u0443: [SEARCH_TERM]"},si={thanks_to:$r,comments:ei,direction:ti,strings:ni};var Vt={};S(Vt,{comments:()=>ri,default:()=>oi,direction:()=>ii,strings:()=>ai,thanks_to:()=>li});var li="Andrija Sagicc",ri="",ii="ltr",ai={placeholder:"\u041F\u0440\u0435\u0442\u0440\u0430\u0433\u0430",clear_search:"\u0411\u0440\u0438\u0441\u0430\u045A\u0435",load_more:"\u041F\u0440\u0438\u043A\u0430\u0437 \u0432\u0438\u0448\u0435 \u0440\u0435\u0437\u0443\u043B\u0442\u0430\u0442\u0430",search_label:"\u041F\u0440\u0435\u0442\u0440\u0430\u0433\u0430 \u0441\u0430\u0458\u0442\u0430",filters_label:"\u0424\u0438\u043B\u0442\u0435\u0440\u0438",zero_results:"\u041D\u0435\u043C\u0430 \u0440\u0435\u0437\u0443\u043B\u0442\u0430\u0442\u0430 \u0437\u0430 [SEARCH_TERM]",many_results:"[COUNT] \u0440\u0435\u0437\u0443\u043B\u0442\u0430\u0442\u0430 \u0437\u0430 [SEARCH_TERM]",one_result:"[COUNT] \u0440\u0435\u0437\u0443\u043B\u0442\u0430\u0442\u0430 \u0437\u0430 [SEARCH_TERM]",alt_search:"\u041D\u0435\u043C\u0430 \u0440\u0435\u0437\u0443\u043B\u0442\u0430\u0442\u0430 \u0437\u0430 [SEARCH_TERM]. \u041F\u0440\u0438\u043A\u0430\u0437 \u0434\u043E\u0434\u0430\u0442\u043D\u0438\u043A \u0440\u0435\u0437\u0443\u043B\u0442\u0430\u0442\u0430 \u0437\u0430 [DIFFERENT_TERM]",search_suggestion:"\u041D\u0435\u043C\u0430 \u0440\u0435\u0437\u0443\u043B\u0442\u0430\u0442\u0430 \u0437\u0430 [SEARCH_TERM]. \u041F\u043E\u043A\u0443\u0448\u0430\u0458\u0442\u0435 \u0441\u0430 \u043D\u0435\u043A\u043E\u043C \u043E\u0434 \u0441\u043B\u0435\u0434\u0435\u045B\u0438\u0445 \u043F\u0440\u0435\u0442\u0440\u0430\u0433\u0430:",searching:"\u041F\u0440\u0435\u0442\u0440\u0430\u0433\u0430 \u0442\u0435\u0440\u043C\u0438\u043D\u0430 [SEARCH_TERM]..."},oi={thanks_to:li,comments:ri,direction:ii,strings:ai};var Gt={};S(Gt,{comments:()=>ci,default:()=>di,direction:()=>_i,strings:()=>fi,thanks_to:()=>ui});var ui="Montazar Al-Jaber ",ci="",_i="ltr",fi={placeholder:"S\xF6k",clear_search:"Rensa",load_more:"Visa fler tr\xE4ffar",search_label:"S\xF6k p\xE5 denna sida",filters_label:"Filter",zero_results:"[SEARCH_TERM] gav inga tr\xE4ffar",many_results:"[SEARCH_TERM] gav [COUNT] tr\xE4ffar",one_result:"[SEARCH_TERM] gav [COUNT] tr\xE4ff",alt_search:"[SEARCH_TERM] gav inga tr\xE4ffar. Visar resultat f\xF6r [DIFFERENT_TERM] ist\xE4llet",search_suggestion:"[SEARCH_TERM] gav inga tr\xE4ffar. F\xF6rs\xF6k igen med en av f\xF6ljande s\xF6kord:",searching:"S\xF6ker efter [SEARCH_TERM]..."},di={thanks_to:ui,comments:ci,direction:_i,strings:fi};var Kt={};S(Kt,{comments:()=>mi,default:()=>Ei,direction:()=>pi,strings:()=>gi,thanks_to:()=>hi});var hi="",mi="",pi="ltr",gi={placeholder:"\u0BA4\u0BC7\u0B9F\u0BC1\u0B95",clear_search:"\u0B85\u0BB4\u0BBF\u0B95\u0BCD\u0B95\u0BC1\u0B95",load_more:"\u0BAE\u0BC7\u0BB2\u0BC1\u0BAE\u0BCD \u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0BC1\u0B95\u0BB3\u0BC8\u0B95\u0BCD \u0B95\u0BBE\u0B9F\u0BCD\u0B9F\u0BC1\u0B95",search_label:"\u0B87\u0BA8\u0BCD\u0BA4 \u0BA4\u0BB3\u0BA4\u0BCD\u0BA4\u0BBF\u0BB2\u0BCD \u0BA4\u0BC7\u0B9F\u0BC1\u0B95",filters_label:"\u0BB5\u0B9F\u0BBF\u0B95\u0B9F\u0BCD\u0B9F\u0BB2\u0BCD\u0B95\u0BB3\u0BCD",zero_results:"[SEARCH_TERM] \u0B95\u0BCD\u0B95\u0BBE\u0BA9 \u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0BC1\u0B95\u0BB3\u0BCD \u0B87\u0BB2\u0BCD\u0BB2\u0BC8",many_results:"[SEARCH_TERM] \u0B95\u0BCD\u0B95\u0BBE\u0BA9 [COUNT] \u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0BC1\u0B95\u0BB3\u0BCD",one_result:"[SEARCH_TERM] \u0B95\u0BCD\u0B95\u0BBE\u0BA9 \u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0BC1",alt_search:"[SEARCH_TERM] \u0B87\u0BA4\u0BCD\u0BA4\u0BC7\u0B9F\u0BB2\u0BC1\u0B95\u0BCD\u0B95\u0BBE\u0BA9 \u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0BC1\u0B95\u0BB3\u0BCD \u0B87\u0BB2\u0BCD\u0BB2\u0BC8, \u0B87\u0BA8\u0BCD\u0BA4 \u0BA4\u0BC7\u0B9F\u0BB2\u0BCD\u0B95\u0BB3\u0BC1\u0B95\u0BCD\u0B95\u0BBE\u0BA9 \u0B92\u0BA4\u0BCD\u0BA4 \u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0BC1\u0B95\u0BB3\u0BCD [DIFFERENT_TERM]",search_suggestion:"[SEARCH_TERM] \u0B87\u0BA4\u0BCD \u0BA4\u0BC7\u0B9F\u0BB2\u0BC1\u0B95\u0BCD\u0B95\u0BBE\u0BA9 \u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0BC1\u0B95\u0BB3\u0BCD \u0B87\u0BB2\u0BCD\u0BB2\u0BC8.\u0B87\u0BA4\u0BB1\u0BCD\u0B95\u0BC1 \u0BAA\u0BA4\u0BBF\u0BB2\u0BC0\u0B9F\u0BBE\u0BA9 \u0BA4\u0BC7\u0B9F\u0BB2\u0BCD\u0B95\u0BB3\u0BC8 \u0BA4\u0BC7\u0B9F\u0BC1\u0B95:",searching:"[SEARCH_TERM] \u0BA4\u0BC7\u0B9F\u0BAA\u0BCD\u0BAA\u0B9F\u0BC1\u0B95\u0BBF\u0BA9\u0BCD\u0BB1\u0BA4\u0BC1"},Ei={thanks_to:hi,comments:mi,direction:pi,strings:gi};var Jt={};S(Jt,{comments:()=>bi,default:()=>ki,direction:()=>Ti,strings:()=>Ci,thanks_to:()=>Ri});var Ri="Taylan \xD6zg\xFCr Bildik",bi="",Ti="ltr",Ci={placeholder:"Ara\u015Ft\u0131r",clear_search:"Temizle",load_more:"Daha fazla sonu\xE7",search_label:"Site genelinde arama",filters_label:"Filtreler",zero_results:"[SEARCH_TERM] i\xE7in sonu\xE7 yok",many_results:"[SEARCH_TERM] i\xE7in [COUNT] sonu\xE7 bulundu",one_result:"[SEARCH_TERM] i\xE7in [COUNT] sonu\xE7 bulundu",alt_search:"[SEARCH_TERM] i\xE7in sonu\xE7 yok. Bunun yerine [DIFFERENT_TERM] i\xE7in sonu\xE7lar g\xF6steriliyor",search_suggestion:"[SEARCH_TERM] i\xE7in sonu\xE7 yok. Alternatif olarak a\u015Fa\u011F\u0131daki kelimelerden birini deneyebilirsiniz:",searching:"[SEARCH_TERM] ara\u015Ft\u0131r\u0131l\u0131yor..."},ki={thanks_to:Ri,comments:bi,direction:Ti,strings:Ci};var Yt={};S(Yt,{comments:()=>Si,default:()=>vi,direction:()=>Mi,strings:()=>Ai,thanks_to:()=>yi});var yi="Vladyslav Lyshenko ",Si="",Mi="ltr",Ai={placeholder:"\u041F\u043E\u0448\u0443\u043A",clear_search:"\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u0438 \u043F\u043E\u043B\u0435",load_more:"\u0417\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0438\u0442\u0438 \u0449\u0435",search_label:"\u041F\u043E\u0448\u0443\u043A \u043F\u043E \u0441\u0430\u0439\u0442\u0443",filters_label:"\u0424\u0456\u043B\u044C\u0442\u0440\u0438",zero_results:"\u041D\u0456\u0447\u043E\u0433\u043E \u043D\u0435 \u0437\u043D\u0430\u0439\u0434\u0435\u043D\u043E \u0437\u0430 \u0437\u0430\u043F\u0438\u0442\u043E\u043C: [SEARCH_TERM]",many_results:"[COUNT] \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u0456\u0432 \u043D\u0430 \u0437\u0430\u043F\u0438\u0442: [SEARCH_TERM]",one_result:"[COUNT] \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442 \u0437\u0430 \u0437\u0430\u043F\u0438\u0442\u043E\u043C: [SEARCH_TERM]",alt_search:"\u041D\u0456\u0447\u043E\u0433\u043E \u043D\u0435 \u0437\u043D\u0430\u0439\u0434\u0435\u043D\u043E \u043D\u0430 \u0437\u0430\u043F\u0438\u0442: [SEARCH_TERM]. \u041F\u043E\u043A\u0430\u0437\u0430\u043D\u043E \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u0438 \u043D\u0430 \u0437\u0430\u043F\u0438\u0442: [DIFFERENT_TERM]",search_suggestion:"\u041D\u0456\u0447\u043E\u0433\u043E \u043D\u0435 \u0437\u043D\u0430\u0439\u0434\u0435\u043D\u043E \u043D\u0430 \u0437\u0430\u043F\u0438\u0442: [SEARCH_TERM]. \u0421\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u043E\u0434\u0438\u043D \u0456\u0437 \u0442\u0430\u043A\u0438\u0445 \u0432\u0430\u0440\u0456\u0430\u043D\u0442\u0456\u0432",searching:"\u041F\u043E\u0448\u0443\u043A \u0437\u0430 \u0437\u0430\u043F\u0438\u0442\u043E\u043C: [SEARCH_TERM]"},vi={thanks_to:yi,comments:Si,direction:Mi,strings:Ai};var Zt={};S(Zt,{comments:()=>Fi,default:()=>Oi,direction:()=>Hi,strings:()=>Ni,thanks_to:()=>wi});var wi="Long Nhat Nguyen",Fi="",Hi="ltr",Ni={placeholder:"T\xECm ki\u1EBFm",clear_search:"X\xF3a",load_more:"Nhi\u1EC1u k\u1EBFt qu\u1EA3 h\u01A1n",search_label:"T\xECm ki\u1EBFm trong trang n\xE0y",filters_label:"B\u1ED9 l\u1ECDc",zero_results:"Kh\xF4ng t\xECm th\u1EA5y k\u1EBFt qu\u1EA3 cho [SEARCH_TERM]",many_results:"[COUNT] k\u1EBFt qu\u1EA3 cho [SEARCH_TERM]",one_result:"[COUNT] k\u1EBFt qu\u1EA3 cho [SEARCH_TERM]",alt_search:"Kh\xF4ng t\xECm th\u1EA5y k\u1EBFt qu\u1EA3 cho [SEARCH_TERM]. Ki\u1EC3m th\u1ECB k\u1EBFt qu\u1EA3 thay th\u1EBF v\u1EDBi [DIFFERENT_TERM]",search_suggestion:"Kh\xF4ng t\xECm th\u1EA5y k\u1EBFt qu\u1EA3 cho [SEARCH_TERM]. Th\u1EED m\u1ED9t trong c\xE1c t\xECm ki\u1EBFm:",searching:"\u0110ang t\xECm ki\u1EBFm cho [SEARCH_TERM]..."},Oi={thanks_to:wi,comments:Fi,direction:Hi,strings:Ni};var Xt={};S(Xt,{comments:()=>ji,default:()=>Ii,direction:()=>Di,strings:()=>Ui,thanks_to:()=>zi});var zi="Amber Song",ji="",Di="ltr",Ui={placeholder:"\u641C\u7D22",clear_search:"\u6E05\u9664",load_more:"\u52A0\u8F7D\u66F4\u591A\u7ED3\u679C",search_label:"\u7AD9\u5185\u641C\u7D22",filters_label:"\u7B5B\u9009",zero_results:"\u672A\u627E\u5230 [SEARCH_TERM] \u7684\u76F8\u5173\u7ED3\u679C",many_results:"\u627E\u5230 [COUNT] \u4E2A [SEARCH_TERM] \u7684\u76F8\u5173\u7ED3\u679C",one_result:"\u627E\u5230 [COUNT] \u4E2A [SEARCH_TERM] \u7684\u76F8\u5173\u7ED3\u679C",alt_search:"\u672A\u627E\u5230 [SEARCH_TERM] \u7684\u76F8\u5173\u7ED3\u679C\u3002\u6539\u4E3A\u663E\u793A [DIFFERENT_TERM] \u7684\u76F8\u5173\u7ED3\u679C",search_suggestion:"\u672A\u627E\u5230 [SEARCH_TERM] \u7684\u76F8\u5173\u7ED3\u679C\u3002\u8BF7\u5C1D\u8BD5\u4EE5\u4E0B\u641C\u7D22\u3002",searching:"\u6B63\u5728\u641C\u7D22 [SEARCH_TERM]..."},Ii={thanks_to:zi,comments:ji,direction:Di,strings:Ui};var Qt={};S(Qt,{comments:()=>Li,default:()=>Wi,direction:()=>qi,strings:()=>Bi,thanks_to:()=>Pi});var Pi="Amber Song",Li="",qi="ltr",Bi={placeholder:"\u641C\u7D22",clear_search:"\u6E05\u9664",load_more:"\u52A0\u8F09\u66F4\u591A\u7D50\u679C",search_label:"\u7AD9\u5167\u641C\u7D22",filters_label:"\u7BE9\u9078",zero_results:"\u672A\u627E\u5230 [SEARCH_TERM] \u7684\u76F8\u95DC\u7D50\u679C",many_results:"\u627E\u5230 [COUNT] \u500B [SEARCH_TERM] \u7684\u76F8\u95DC\u7D50\u679C",one_result:"\u627E\u5230 [COUNT] \u500B [SEARCH_TERM] \u7684\u76F8\u95DC\u7D50\u679C",alt_search:"\u672A\u627E\u5230 [SEARCH_TERM] \u7684\u76F8\u95DC\u7D50\u679C\u3002\u6539\u70BA\u986F\u793A [DIFFERENT_TERM] \u7684\u76F8\u95DC\u7D50\u679C",search_suggestion:"\u672A\u627E\u5230 [SEARCH_TERM] \u7684\u76F8\u95DC\u7D50\u679C\u3002\u8ACB\u5617\u8A66\u4EE5\u4E0B\u641C\u7D22\u3002",searching:"\u6B63\u5728\u641C\u7D22 [SEARCH_TERM]..."},Wi={thanks_to:Pi,comments:Li,direction:qi,strings:Bi};var xt={};S(xt,{comments:()=>Gi,default:()=>Yi,direction:()=>Ki,strings:()=>Ji,thanks_to:()=>Vi});var Vi="Amber Song",Gi="",Ki="ltr",Ji={placeholder:"\u641C\u7D22",clear_search:"\u6E05\u9664",load_more:"\u52A0\u8F7D\u66F4\u591A\u7ED3\u679C",search_label:"\u7AD9\u5185\u641C\u7D22",filters_label:"\u7B5B\u9009",zero_results:"\u672A\u627E\u5230 [SEARCH_TERM] \u7684\u76F8\u5173\u7ED3\u679C",many_results:"\u627E\u5230 [COUNT] \u4E2A [SEARCH_TERM] \u7684\u76F8\u5173\u7ED3\u679C",one_result:"\u627E\u5230 [COUNT] \u4E2A [SEARCH_TERM] \u7684\u76F8\u5173\u7ED3\u679C",alt_search:"\u672A\u627E\u5230 [SEARCH_TERM] \u7684\u76F8\u5173\u7ED3\u679C\u3002\u6539\u4E3A\u663E\u793A [DIFFERENT_TERM] \u7684\u76F8\u5173\u7ED3\u679C",search_suggestion:"\u672A\u627E\u5230 [SEARCH_TERM] \u7684\u76F8\u5173\u7ED3\u679C\u3002\u8BF7\u5C1D\u8BD5\u4EE5\u4E0B\u641C\u7D22\u3002",searching:"\u6B63\u5728\u641C\u7D22 [SEARCH_TERM]..."},Yi={thanks_to:Vi,comments:Gi,direction:Ki,strings:Ji};var Zi=[Rt,bt,Tt,Ct,kt,yt,St,Mt,At,vt,wt,Ft,Ht,Nt,Ot,zt,jt,Dt,Ut,It,Pt,Lt,qt,Bt,Wt,Vt,Gt,Kt,Jt,Yt,Zt,Xt,Qt,xt],Zn=Zi,Xn=["../../translations/af.json","../../translations/bn.json","../../translations/ca.json","../../translations/cs.json","../../translations/da.json","../../translations/de.json","../../translations/en.json","../../translations/es.json","../../translations/fi.json","../../translations/fr.json","../../translations/gl.json","../../translations/hi.json","../../translations/hr.json","../../translations/hu.json","../../translations/id.json","../../translations/it.json","../../translations/ja.json","../../translations/ko.json","../../translations/mi.json","../../translations/nl.json","../../translations/no.json","../../translations/pl.json","../../translations/pt.json","../../translations/ro.json","../../translations/ru.json","../../translations/sr.json","../../translations/sv.json","../../translations/ta.json","../../translations/tr.json","../../translations/uk.json","../../translations/vi.json","../../translations/zh-cn.json","../../translations/zh-tw.json","../../translations/zh.json"];function Qn(n,e,t){let s=n.slice();return s[51]=e[t],s}function xn(n){let e,t,s;function l(i){n[37](i)}let r={show_empty_filters:n[5],open_filters:n[6],available_filters:n[18],translate:n[20],automatic_translations:n[19],translations:n[7]};return n[0]!==void 0&&(r.selected_filters=n[0]),e=new Yn({props:r}),re.push(()=>En(e,"selected_filters",l)),{c(){et(e.$$.fragment)},m(i,a){me(e,i,a),s=!0},p(i,a){let o={};a[0]&32&&(o.show_empty_filters=i[5]),a[0]&64&&(o.open_filters=i[6]),a[0]&262144&&(o.available_filters=i[18]),a[0]&524288&&(o.automatic_translations=i[19]),a[0]&128&&(o.translations=i[7]),!t&&a[0]&1&&(t=!0,o.selected_filters=i[0],hn(()=>t=!1)),e.$set(o)},i(i){s||(D(e.$$.fragment,i),s=!0)},o(i){P(e.$$.fragment,i),s=!1},d(i){ue(e,i)}}}function $n(n){let e,t,s,l,r=[xi,Qi],i=[];function a(o,h){return o[14]?0:1}return t=a(n,[-1,-1]),s=i[t]=r[t](n),{c(){e=C("div"),s.c(),E(e,"class","pagefind-ui__results-area svelte-e9gkc3")},m(o,h){y(o,e,h),i[t].m(e,null),l=!0},p(o,h){let c=t;t=a(o,h),t===c?i[t].p(o,h):(ae(),P(i[c],1,1,()=>{i[c]=null}),oe(),s=i[t],s?s.p(o,h):(s=i[t]=r[t](o),s.c()),D(s,1),s.m(e,null))},i(o){l||(D(s),l=!0)},o(o){P(s),l=!1},d(o){o&&k(e),i[t].d()}}}function Qi(n){let e,t,s,l=[],r=new Map,i,a,o;function h(u,f){return u[13].results.length===0?ta:u[13].results.length===1?ea:$i}let c=h(n,[-1,-1]),m=c(n),p=n[13].results.slice(0,n[17]),d=u=>u[51].id;for(let u=0;un[17]&&ts(n);return{c(){e=C("p"),m.c(),t=A(),s=C("ol");for(let u=0;uu[17]?_?_.p(u,f):(_=ts(u),_.c(),_.m(a.parentNode,a)):_&&(_.d(1),_=null)},i(u){if(!o){for(let f=0;f{o[p]=null}),oe(),l=o[s],l?l.p(e,m):(l=o[s]=a[s](e),l.c()),D(l,1),l.m(r.parentNode,r))},i(c){i||(D(l),i=!0)},o(c){P(l),i=!1},d(c){c&&k(t),o[s].d(c),c&&k(r)}}}function ts(n){let e,t=n[20]("load_more",n[19],n[7])+"",s,l,r;return{c(){e=C("button"),s=w(t),E(e,"type","button"),E(e,"class","pagefind-ui__button svelte-e9gkc3")},m(i,a){y(i,e,a),b(e,s),l||(r=J(e,"click",n[22]),l=!0)},p(i,a){a[0]&524416&&t!==(t=i[20]("load_more",i[19],i[7])+"")&&N(s,t)},d(i){i&&k(e),l=!1,r()}}}function ns(n){let e,t=n[20]("searching",n[19],n[7]).replace(/\[SEARCH_TERM\]/,n[16])+"",s;return{c(){e=C("p"),s=w(t),E(e,"class","pagefind-ui__message svelte-e9gkc3")},m(l,r){y(l,e,r),b(e,s)},p(l,r){r[0]&589952&&t!==(t=l[20]("searching",l[19],l[7]).replace(/\[SEARCH_TERM\]/,l[16])+"")&&N(s,t)},d(l){l&&k(e)}}}function la(n){let e,t,s,l,r,i,a=n[20]("clear_search",n[19],n[7])+"",o,h,c,m,p,d,_,u,f=n[12]&&xn(n),T=n[15]&&$n(n);return{c(){e=C("div"),t=C("form"),s=C("input"),r=A(),i=C("button"),o=w(a),h=A(),c=C("div"),f&&f.c(),m=A(),T&&T.c(),E(s,"class","pagefind-ui__search-input svelte-e9gkc3"),E(s,"type","text"),E(s,"placeholder",l=n[20]("placeholder",n[19],n[7])),E(s,"autocapitalize","none"),E(s,"enterkeyhint","search"),s.autofocus=n[8],E(i,"class","pagefind-ui__search-clear svelte-e9gkc3"),B(i,"pagefind-ui__suppressed",!n[9]),E(c,"class","pagefind-ui__drawer svelte-e9gkc3"),B(c,"pagefind-ui__hidden",!n[15]),E(t,"class","pagefind-ui__form svelte-e9gkc3"),E(t,"role","search"),E(t,"aria-label",p=n[20]("search_label",n[19],n[7])),E(t,"action","javascript:void(0);"),E(e,"class","pagefind-ui svelte-e9gkc3"),B(e,"pagefind-ui--reset",n[1])},m(R,M){y(R,e,M),b(e,t),b(t,s),ft(s,n[9]),n[34](s),b(t,r),b(t,i),b(i,o),n[35](i),b(t,h),b(t,c),f&&f.m(c,null),b(c,m),T&&T.m(c,null),d=!0,n[8]&&s.focus(),_||(u=[J(s,"focus",n[21]),J(s,"keydown",n[32]),J(s,"input",n[33]),J(i,"click",n[36]),J(t,"submit",ra)],_=!0)},p(R,M){(!d||M[0]&524416&&l!==(l=R[20]("placeholder",R[19],R[7])))&&E(s,"placeholder",l),(!d||M[0]&256)&&(s.autofocus=R[8]),M[0]&512&&s.value!==R[9]&&ft(s,R[9]),(!d||M[0]&524416)&&a!==(a=R[20]("clear_search",R[19],R[7])+"")&&N(o,a),(!d||M[0]&512)&&B(i,"pagefind-ui__suppressed",!R[9]),R[12]?f?(f.p(R,M),M[0]&4096&&D(f,1)):(f=xn(R),f.c(),D(f,1),f.m(c,m)):f&&(ae(),P(f,1,1,()=>{f=null}),oe()),R[15]?T?(T.p(R,M),M[0]&32768&&D(T,1)):(T=$n(R),T.c(),D(T,1),T.m(c,null)):T&&(ae(),P(T,1,1,()=>{T=null}),oe()),(!d||M[0]&32768)&&B(c,"pagefind-ui__hidden",!R[15]),(!d||M[0]&524416&&p!==(p=R[20]("search_label",R[19],R[7])))&&E(t,"aria-label",p),(!d||M[0]&2)&&B(e,"pagefind-ui--reset",R[1])},i(R){d||(D(f),D(T),d=!0)},o(R){P(f),P(T),d=!1},d(R){R&&k(e),n[34](null),n[35](null),f&&f.d(),T&&T.d(),_=!1,G(u)}}}var ra=n=>n.preventDefault();function ia(n,e,t){let s={},l=Xn.map(g=>g.match(/([^\/]+)\.json$/)[1]);for(let g=0;gz[g]??H[g]??"";dt(()=>{let g=document?.querySelector?.("html")?.getAttribute?.("lang")||"en",H=tt(g.toLocaleLowerCase());t(19,rn=s[`${H.language}-${H.script}-${H.region}`]||s[`${H.language}-${H.region}`]||s[`${H.language}`]||s.en)}),ht(()=>{F?.destroy?.(),F=null});let an=async()=>{if(!st&&(t(12,st=!0),!F)){let g;try{g=await import(`${r}pagefind.js`)}catch(z){console.error(z),console.error([`Pagefind couldn't be loaded from ${this.options.bundlePath}pagefind.js`,"You can configure this by passing a bundlePath option to PagefindUI",`[DEBUG: Loaded from ${document?.currentScript?.src??"no known script location"}]`].join(` +`))}c||t(24,c=h?12:30);let H={...f||{},excerptLength:c};await g.options(H);for(let z of T){if(!z.bundlePath)throw new Error("mergeIndex requires a bundlePath parameter");let L=z.bundlePath;delete z.bundlePath,await g.mergeIndex(L,z)}F=g,is()}},is=async()=>{F&&(ln=await F.filters(),(!ce||!Object.keys(ce).length)&&t(18,ce=ln))},as=g=>{let H={};return Object.entries(g).filter(([,z])=>z).forEach(([z])=>{let[L,te]=z.split(/:(.*)$/);H[L]=H[L]||[],H[L].push(te)}),H},_e,os=async(g,H)=>{if(!g){t(15,rt=!1),_e&&clearTimeout(_e);return}let z=as(H),L=()=>us(g,z);u>0&&g?(_e&&clearTimeout(_e),_e=setTimeout(L,u),await on(),F.preload(g,{filters:z})):L(),cs()},on=async()=>{for(;!F;)an(),await new Promise(g=>setTimeout(g,50))},us=async(g,H)=>{t(16,sn=g||""),typeof p=="function"&&(g=p(g)),t(14,lt=!0),t(15,rt=!0),await on();let z=++nn,L={filters:H};X&&typeof X=="object"&&(L.sort=X);let te=await F.search(g,L);nn===z&&(te.filters&&Object.keys(te.filters)?.length&&t(18,ce=te.filters),t(13,tn=te),t(14,lt=!1),t(17,it=i))},cs=()=>{let g=V.offsetWidth;g!=ls&&t(10,O.style.paddingRight=`${g+2}px`,O)},_s=g=>{g?.preventDefault(),t(17,it+=i)},fs=g=>{g.key==="Escape"&&(t(9,v=""),O.blur()),g.key==="Enter"&&g.preventDefault()};function ds(){v=this.value,t(9,v),t(23,R)}function hs(g){re[g?"unshift":"push"](()=>{O=g,t(10,O)})}function ms(g){re[g?"unshift":"push"](()=>{V=g,t(11,V)})}let ps=()=>{t(9,v=""),O.blur()};function gs(g){W=g,t(0,W)}return n.$$set=g=>{"base_path"in g&&t(25,r=g.base_path),"page_size"in g&&t(26,i=g.page_size),"reset_styles"in g&&t(1,a=g.reset_styles),"show_images"in g&&t(2,o=g.show_images),"show_sub_results"in g&&t(3,h=g.show_sub_results),"excerpt_length"in g&&t(24,c=g.excerpt_length),"process_result"in g&&t(4,m=g.process_result),"process_term"in g&&t(27,p=g.process_term),"show_empty_filters"in g&&t(5,d=g.show_empty_filters),"open_filters"in g&&t(6,_=g.open_filters),"debounce_timeout_ms"in g&&t(28,u=g.debounce_timeout_ms),"pagefind_options"in g&&t(29,f=g.pagefind_options),"merge_index"in g&&t(30,T=g.merge_index),"trigger_search_term"in g&&t(23,R=g.trigger_search_term),"translations"in g&&t(7,M=g.translations),"autofocus"in g&&t(8,U=g.autofocus),"sort"in g&&t(31,X=g.sort),"selected_filters"in g&&t(0,W=g.selected_filters)},n.$$.update=()=>{if(n.$$.dirty[0]&8388608)e:R&&(t(9,v=R),t(23,R=""));if(n.$$.dirty[0]&513)e:os(v,W)},[W,a,o,h,m,d,_,M,U,v,O,V,st,tn,lt,rt,sn,it,ce,rn,rs,an,_s,R,c,r,i,p,u,f,T,X,fs,ds,hs,ms,ps,gs]}var $t=class extends q{constructor(e){super(),Y(this,e,ia,la,K,{base_path:25,page_size:26,reset_styles:1,show_images:2,show_sub_results:3,excerpt_length:24,process_result:4,process_term:27,show_empty_filters:5,open_filters:6,debounce_timeout_ms:28,pagefind_options:29,merge_index:30,trigger_search_term:23,translations:7,autofocus:8,sort:31,selected_filters:0},null,[-1,-1])}},ss=$t;var en;try{en=new URL(document.currentScript.src).pathname.match(/^(.*\/)(?:pagefind-)?ui.js.*$/)[1]}catch{en="/pagefind/"}var nt=class{constructor(e){this._pfs=null;let t=e.element??"[data-pagefind-ui]",s=e.bundlePath??en,l=e.pageSize??5,r=e.resetStyles??!0,i=e.showImages??!0,a=e.showSubResults??!1,o=e.excerptLength??0,h=e.processResult??null,c=e.processTerm??null,m=e.showEmptyFilters??!0,p=e.openFilters??[],d=e.debounceTimeoutMs??300,_=e.mergeIndex??[],u=e.translations??[],f=e.autofocus??!1,T=e.sort??null;delete e.element,delete e.bundlePath,delete e.pageSize,delete e.resetStyles,delete e.showImages,delete e.showSubResults,delete e.excerptLength,delete e.processResult,delete e.processTerm,delete e.showEmptyFilters,delete e.openFilters,delete e.debounceTimeoutMs,delete e.mergeIndex,delete e.translations,delete e.autofocus,delete e.sort;let R=t instanceof HTMLElement?t:document.querySelector(t);R?this._pfs=new ss({target:R,props:{base_path:s,page_size:l,reset_styles:r,show_images:i,show_sub_results:a,excerpt_length:o,process_result:h,process_term:c,show_empty_filters:m,open_filters:p,debounce_timeout_ms:d,merge_index:_,translations:u,autofocus:f,sort:T,pagefind_options:e}}):console.error(`Pagefind UI couldn't find the selector ${t}`)}triggerSearch(e){this._pfs.$$set({trigger_search_term:e})}triggerFilters(e){let t={};for(let[s,l]of Object.entries(e))if(Array.isArray(l))for(let r of l)t[`${s}:${r}`]=!0;else t[`${s}:${l}`]=!0;this._pfs.$$set({selected_filters:t})}destroy(){this._pfs.$destroy()}};window.PagefindUI=nt;})(); diff --git a/pagefind/pagefind.js b/pagefind/pagefind.js new file mode 100644 index 0000000..3e3fa55 --- /dev/null +++ b/pagefind/pagefind.js @@ -0,0 +1,9 @@ +const pagefind_version="1.1.0";let wasm_bindgen;(function(){const __exports={};let script_src;if(typeof document!=='undefined'&&document.currentScript!==null){script_src=new URL("UNHANDLED",location.href).toString()}let wasm=undefined;let cachedUint8Memory0=null;function getUint8Memory0(){if(cachedUint8Memory0===null||cachedUint8Memory0.byteLength===0){cachedUint8Memory0=new Uint8Array(wasm.memory.buffer)}return cachedUint8Memory0}let WASM_VECTOR_LEN=0;function passArray8ToWasm0(arg,malloc){const ptr=malloc(arg.length*1,1)>>>0;getUint8Memory0().set(arg,ptr/1);WASM_VECTOR_LEN=arg.length;return ptr}__exports.init_pagefind=function(metadata_bytes){const ptr0=passArray8ToWasm0(metadata_bytes,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;const ret=wasm.init_pagefind(ptr0,len0);return ret>>>0};const cachedTextEncoder=(typeof TextEncoder!=='undefined'?new TextEncoder('utf-8'):{encode:()=>{throw Error('TextEncoder not available')}});const encodeString=(typeof cachedTextEncoder.encodeInto==='function'?function(arg,view){return cachedTextEncoder.encodeInto(arg,view)}:function(arg,view){const buf=cachedTextEncoder.encode(arg);view.set(buf);return{read:arg.length,written:buf.length}});function passStringToWasm0(arg,malloc,realloc){if(realloc===undefined){const buf=cachedTextEncoder.encode(arg);const ptr=malloc(buf.length,1)>>>0;getUint8Memory0().subarray(ptr,ptr+buf.length).set(buf);WASM_VECTOR_LEN=buf.length;return ptr}let len=arg.length;let ptr=malloc(len,1)>>>0;const mem=getUint8Memory0();let offset=0;for(;offset0x7F)break;mem[ptr+offset]=code}if(offset!==len){if(offset!==0){arg=arg.slice(offset)}ptr=realloc(ptr,len,len=offset+arg.length*3,1)>>>0;const view=getUint8Memory0().subarray(ptr+offset,ptr+len);const ret=encodeString(arg,view);offset+=ret.written;ptr=realloc(ptr,len,offset,1)>>>0}WASM_VECTOR_LEN=offset;return ptr}__exports.set_ranking_weights=function(ptr,weights){const ptr0=passStringToWasm0(weights,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc);const len0=WASM_VECTOR_LEN;const ret=wasm.set_ranking_weights(ptr,ptr0,len0);return ret>>>0};__exports.load_index_chunk=function(ptr,chunk_bytes){const ptr0=passArray8ToWasm0(chunk_bytes,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;const ret=wasm.load_index_chunk(ptr,ptr0,len0);return ret>>>0};__exports.load_filter_chunk=function(ptr,chunk_bytes){const ptr0=passArray8ToWasm0(chunk_bytes,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;const ret=wasm.load_filter_chunk(ptr,ptr0,len0);return ret>>>0};__exports.add_synthetic_filter=function(ptr,filter){const ptr0=passStringToWasm0(filter,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc);const len0=WASM_VECTOR_LEN;const ret=wasm.add_synthetic_filter(ptr,ptr0,len0);return ret>>>0};let cachedInt32Memory0=null;function getInt32Memory0(){if(cachedInt32Memory0===null||cachedInt32Memory0.byteLength===0){cachedInt32Memory0=new Int32Array(wasm.memory.buffer)}return cachedInt32Memory0}const cachedTextDecoder=(typeof TextDecoder!=='undefined'?new TextDecoder('utf-8',{ignoreBOM:true,fatal:true}):{decode:()=>{throw Error('TextDecoder not available')}});if(typeof TextDecoder!=='undefined'){cachedTextDecoder.decode()};function getStringFromWasm0(ptr,len){ptr=ptr>>>0;return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr,ptr+len))}__exports.request_indexes=function(ptr,query){let deferred2_0;let deferred2_1;try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passStringToWasm0(query,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc);const len0=WASM_VECTOR_LEN;wasm.request_indexes(retptr,ptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];deferred2_0=r0;deferred2_1=r1;return getStringFromWasm0(r0,r1)}finally{wasm.__wbindgen_add_to_stack_pointer(16);wasm.__wbindgen_free(deferred2_0,deferred2_1,1)}};__exports.request_filter_indexes=function(ptr,filters){let deferred2_0;let deferred2_1;try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passStringToWasm0(filters,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc);const len0=WASM_VECTOR_LEN;wasm.request_filter_indexes(retptr,ptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];deferred2_0=r0;deferred2_1=r1;return getStringFromWasm0(r0,r1)}finally{wasm.__wbindgen_add_to_stack_pointer(16);wasm.__wbindgen_free(deferred2_0,deferred2_1,1)}};__exports.request_all_filter_indexes=function(ptr){let deferred1_0;let deferred1_1;try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.request_all_filter_indexes(retptr,ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];deferred1_0=r0;deferred1_1=r1;return getStringFromWasm0(r0,r1)}finally{wasm.__wbindgen_add_to_stack_pointer(16);wasm.__wbindgen_free(deferred1_0,deferred1_1,1)}};__exports.filters=function(ptr){let deferred1_0;let deferred1_1;try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.filters(retptr,ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];deferred1_0=r0;deferred1_1=r1;return getStringFromWasm0(r0,r1)}finally{wasm.__wbindgen_add_to_stack_pointer(16);wasm.__wbindgen_free(deferred1_0,deferred1_1,1)}};__exports.search=function(ptr,query,filter,sort,exact){let deferred4_0;let deferred4_1;try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passStringToWasm0(query,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc);const len0=WASM_VECTOR_LEN;const ptr1=passStringToWasm0(filter,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc);const len1=WASM_VECTOR_LEN;const ptr2=passStringToWasm0(sort,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc);const len2=WASM_VECTOR_LEN;wasm.search(retptr,ptr,ptr0,len0,ptr1,len1,ptr2,len2,exact);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];deferred4_0=r0;deferred4_1=r1;return getStringFromWasm0(r0,r1)}finally{wasm.__wbindgen_add_to_stack_pointer(16);wasm.__wbindgen_free(deferred4_0,deferred4_1,1)}};async function __wbg_load(module,imports){if(typeof Response==='function'&&module instanceof Response){if(typeof WebAssembly.instantiateStreaming==='function'){try{return await WebAssembly.instantiateStreaming(module,imports)}catch(e){if(module.headers.get('Content-Type')!='application/wasm'){console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",e)}else{throw e}}}const bytes=await module.arrayBuffer();return await WebAssembly.instantiate(bytes,imports)}else{const instance=await WebAssembly.instantiate(module,imports);if(instance instanceof WebAssembly.Instance){return{instance,module}}else{return instance}}}function __wbg_get_imports(){const imports={};imports.wbg={};return imports}function __wbg_init_memory(imports,maybe_memory){}function __wbg_finalize_init(instance,module){wasm=instance.exports;__wbg_init.__wbindgen_wasm_module=module;cachedInt32Memory0=null;cachedUint8Memory0=null;return wasm}function initSync(module){if(wasm!==undefined)return wasm;const imports=__wbg_get_imports();__wbg_init_memory(imports);if(!(module instanceof WebAssembly.Module)){module=new WebAssembly.Module(module)}const instance=new WebAssembly.Instance(module,imports);return __wbg_finalize_init(instance,module)}async function __wbg_init(input){if(wasm!==undefined)return wasm;if(typeof input==='undefined'&&typeof script_src!=='undefined'){input=script_src.replace(/\.js$/,'_bg.wasm')}const imports=__wbg_get_imports();if(typeof input==='string'||(typeof Request==='function'&&input instanceof Request)||(typeof URL==='function'&&input instanceof URL)){input=fetch(input)}__wbg_init_memory(imports);const{instance,module}=await __wbg_load(await input,imports);return __wbg_finalize_init(instance,module)}wasm_bindgen=Object.assign(__wbg_init,{initSync},__exports)})();var u8=Uint8Array;var u16=Uint16Array;var u32=Uint32Array;var fleb=new u8([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]);var fdeb=new u8([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]);var clim=new u8([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);var freb=function(eb,start){var b=new u16(31);for(var i2=0;i2<31;++i2){b[i2]=start+=1<>>1|(i&21845)<<1;x=(x&52428)>>>2|(x&13107)<<2;x=(x&61680)>>>4|(x&3855)<<4;rev[i]=((x&65280)>>>8|(x&255)<<8)>>>1}var x;var i;var hMap=function(cd,mb,r){var s=cd.length;var i2=0;var l=new u16(mb);for(;i2>>rvb]=sv}}}}else{co=new u16(s);for(i2=0;i2>>15-cd[i2]}}}return co};var flt=new u8(288);for(i=0;i<144;++i)flt[i]=8;var i;for(i=144;i<256;++i)flt[i]=9;var i;for(i=256;i<280;++i)flt[i]=7;var i;for(i=280;i<288;++i)flt[i]=8;var i;var fdt=new u8(32);for(i=0;i<32;++i)fdt[i]=5;var i;var flrm=hMap(flt,9,1);var fdrm=hMap(fdt,5,1);var max=function(a){var m=a[0];for(var i2=1;i2m)m=a[i2]}return m};var bits=function(d,p,m){var o=p/8|0;return(d[o]|d[o+1]<<8)>>(p&7)&m};var bits16=function(d,p){var o=p/8|0;return(d[o]|d[o+1]<<8|d[o+2]<<16)>>(p&7)};var shft=function(p){return(p+7)/8|0};var slc=function(v,s,e){if(s==null||s<0)s=0;if(e==null||e>v.length)e=v.length;var n=new(v.BYTES_PER_ELEMENT==2?u16:v.BYTES_PER_ELEMENT==4?u32:u8)(e-s);n.set(v.subarray(s,e));return n};var ec=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"];var err=function(ind,msg,nt){var e=new Error(msg||ec[ind]);e.code=ind;if(Error.captureStackTrace)Error.captureStackTrace(e,err);if(!nt)throw e;return e};var inflt=function(dat,buf,st){var sl=dat.length;if(!sl||st&&st.f&&!st.l)return buf||new u8(0);var noBuf=!buf||st;var noSt=!st||st.i;if(!st)st={};if(!buf)buf=new u8(sl*3);var cbuf=function(l2){var bl=buf.length;if(l2>bl){var nbuf=new u8(Math.max(bl*2,l2));nbuf.set(buf);buf=nbuf}};var final=st.f||0,pos=st.p||0,bt=st.b||0,lm=st.l,dm=st.d,lbt=st.m,dbt=st.n;var tbts=sl*8;do{if(!lm){final=bits(dat,pos,1);var type=bits(dat,pos+1,3);pos+=3;if(!type){var s=shft(pos)+4,l=dat[s-4]|dat[s-3]<<8,t=s+l;if(t>sl){if(noSt)err(0);break}if(noBuf)cbuf(bt+l);buf.set(dat.subarray(s,t),bt);st.b=bt+=l,st.p=pos=t*8,st.f=final;continue}else if(type==1)lm=flrm,dm=fdrm,lbt=9,dbt=5;else if(type==2){var hLit=bits(dat,pos,31)+257,hcLen=bits(dat,pos+10,15)+4;var tl=hLit+bits(dat,pos+5,31)+1;pos+=14;var ldt=new u8(tl);var clt=new u8(19);for(var i2=0;i2>>4;if(s<16){ldt[i2++]=s}else{var c=0,n=0;if(s==16)n=3+bits(dat,pos,3),pos+=2,c=ldt[i2-1];else if(s==17)n=3+bits(dat,pos,7),pos+=3;else if(s==18)n=11+bits(dat,pos,127),pos+=7;while(n--)ldt[i2++]=c}}var lt=ldt.subarray(0,hLit),dt=ldt.subarray(hLit);lbt=max(lt);dbt=max(dt);lm=hMap(lt,lbt,1);dm=hMap(dt,dbt,1)}else err(1);if(pos>tbts){if(noSt)err(0);break}}if(noBuf)cbuf(bt+131072);var lms=(1<>>4;pos+=c&15;if(pos>tbts){if(noSt)err(0);break}if(!c)err(2);if(sym<256)buf[bt++]=sym;else if(sym==256){lpos=pos,lm=null;break}else{var add=sym-254;if(sym>264){var i2=sym-257,b=fleb[i2];add=bits(dat,pos,(1<>>4;if(!d)err(3);pos+=d&15;var dt=fd[dsym];if(dsym>3){var b=fdeb[dsym];dt+=bits16(dat,pos)&(1<tbts){if(noSt)err(0);break}if(noBuf)cbuf(bt+131072);var end=bt+add;for(;bt>3&1)+(flg>>4&1);zs>0;zs-=!d[st++]);return st+(flg&2)};var gzl=function(d){var l=d.length;return(d[l-4]|d[l-3]<<8|d[l-2]<<16|d[l-1]<<24)>>>0};function gunzipSync(data,out){return inflt(data.subarray(gzs(data),-8),out||new u8(gzl(data)))}var td=typeof TextDecoder!="undefined"&&new TextDecoder();var tds=0;try{td.decode(et,{stream:true});tds=1}catch(e){}var gz_default=gunzipSync;var calculate_excerpt_region=(word_positions,excerpt_length)=>{if(word_positions.length===0){return 0}let words=[];for(const word of word_positions){words[word.location]=words[word.location]||0;words[word.location]+=word.balanced_score}if(words.length<=excerpt_length){return 0}let densest=words.slice(0,excerpt_length).reduce((partialSum,a)=>partialSum+a,0);let working_sum=densest;let densest_at=[0];for(let i2=0;i2densest){densest=working_sum;densest_at=[i2]}else if(working_sum===densest&&densest_at[densest_at.length-1]===i2-1){densest_at.push(i2)}}let midpoint=densest_at[Math.floor(densest_at.length/2)];return midpoint};var build_excerpt=(content,start,length,locations,not_before,not_from)=>{let is_zws_delimited=content.includes("\u200B");let fragment_words=[];if(is_zws_delimited){fragment_words=content.split("\u200B")}else{fragment_words=content.split(/[\r\n\s]+/g)}for(let word of locations){if(fragment_words[word]?.startsWith(``)){continue}fragment_words[word]=`${fragment_words[word]}`}let endcap=not_from??fragment_words.length;let startcap=not_before??0;if(endcap-startcapendcap){start=endcap-length}if(start{const anchors=fragment.anchors.filter((a)=>/h\d/i.test(a.element)&&a.text?.length&&/\S/.test(a.text)).sort((a,b)=>a.location-b.location);const results=[];let current_anchor_position=0;let current_anchor={title:fragment.meta["title"],url:fragment.url,weighted_locations:[],locations:[],excerpt:""};const add_result=(end_range)=>{if(current_anchor.locations.length){const relative_weighted_locations=current_anchor.weighted_locations.map((l)=>{return{weight:l.weight,balanced_score:l.balanced_score,location:l.location-current_anchor_position}});const excerpt_start=calculate_excerpt_region(relative_weighted_locations,desired_excerpt_length)+current_anchor_position;const excerpt_length=end_range?Math.min(end_range-excerpt_start,desired_excerpt_length):desired_excerpt_length;current_anchor.excerpt=build_excerpt(fragment.raw_content??"",excerpt_start,excerpt_length,current_anchor.locations,current_anchor_position,end_range);results.push(current_anchor)}};for(let word of fragment.weighted_locations){if(!anchors.length||word.location=anchors[0].location){next_anchor=anchors.shift()}let anchored_url=fragment.url;try{const url_is_fq=/^((https?:)?\/\/)/.test(anchored_url);if(url_is_fq){let fq_url=new URL(anchored_url);fq_url.hash=next_anchor.id;anchored_url=fq_url.toString()}else{if(!/^\//.test(anchored_url)){anchored_url=`/${anchored_url}`}let fq_url=new URL(`https://example.com${anchored_url}`);fq_url.hash=next_anchor.id;anchored_url=fq_url.toString().replace(/^https:\/\/example.com/,"")}}catch(e){console.error(`Pagefind: Couldn't process ${anchored_url} for a search result`)}current_anchor_position=next_anchor.location;current_anchor={title:next_anchor.text,url:anchored_url,anchor:next_anchor,weighted_locations:[word],locations:[word.location],excerpt:""}}}add_result(anchors[0]?.location);return results};var asyncSleep=async(ms=100)=>{return new Promise((r)=>setTimeout(r,ms))};var PagefindInstance=class{constructor(opts={}){this.version=pagefind_version;this.backend=wasm_bindgen;this.decoder=new TextDecoder("utf-8");this.wasm=null;this.basePath=opts.basePath||"/pagefind/";this.primary=opts.primary||false;if(this.primary&&!opts.basePath){this.initPrimary()}if(/[^\/]$/.test(this.basePath)){this.basePath=`${this.basePath}/`}if(window?.location?.origin&&this.basePath.startsWith(window.location.origin)){this.basePath=this.basePath.replace(window.location.origin,"")}this.baseUrl=opts.baseUrl||this.defaultBaseUrl();if(!/^(\/|https?:\/\/)/.test(this.baseUrl)){this.baseUrl=`/${this.baseUrl}`}this.indexWeight=opts.indexWeight??1;this.excerptLength=opts.excerptLength??30;this.mergeFilter=opts.mergeFilter??{};this.ranking=opts.ranking;this.highlightParam=opts.highlightParam??null;this.loaded_chunks={};this.loaded_filters={};this.loaded_fragments={};this.raw_ptr=null;this.searchMeta=null;this.languages=null}initPrimary(){let derivedBasePath=import.meta.url.match(/^(.*\/)pagefind.js.*$/)?.[1];if(derivedBasePath){this.basePath=derivedBasePath}else{console.warn(["Pagefind couldn't determine the base of the bundle from the import path. Falling back to the default.","Set a basePath option when initialising Pagefind to ignore this message."].join("\n"))}}defaultBaseUrl(){let default_base=this.basePath.match(/^(.*\/)_?pagefind/)?.[1];return default_base||"/"}async options(options2){const opts=["basePath","baseUrl","indexWeight","excerptLength","mergeFilter","highlightParam","ranking"];for(const[k,v]of Object.entries(options2)){if(k==="mergeFilter"){let filters2=this.stringifyFilters(v);let ptr=await this.getPtr();this.raw_ptr=this.backend.add_synthetic_filter(ptr,filters2)}else if(k==="ranking"){await this.set_ranking(options2.ranking)}else if(opts.includes(k)){if(k==="basePath"&&typeof v==="string")this.basePath=v;if(k==="baseUrl"&&typeof v==="string")this.baseUrl=v;if(k==="indexWeight"&&typeof v==="number")this.indexWeight=v;if(k==="excerptLength"&&typeof v==="number")this.excerptLength=v;if(k==="mergeFilter"&&typeof v==="object")this.mergeFilter=v;if(k==="highlightParam"&&typeof v==="string")this.highlightParam=v}else{console.warn(`Unknown Pagefind option ${k}. Allowed options: [${opts.join(", ")}]`)}}}decompress(data,file="unknown file"){if(this.decoder.decode(data.slice(0,12))==="pagefind_dcd"){return data.slice(12)}data=gz_default(data);if(this.decoder.decode(data.slice(0,12))!=="pagefind_dcd"){console.error(`Decompressing ${file} appears to have failed: Missing signature`);return data}return data.slice(12)}async set_ranking(ranking){if(!ranking)return;let rankingWeights={term_similarity:ranking.termSimilarity??null,page_length:ranking.pageLength??null,term_saturation:ranking.termSaturation??null,term_frequency:ranking.termFrequency??null};let ptr=await this.getPtr();this.raw_ptr=this.backend.set_ranking_weights(ptr,JSON.stringify(rankingWeights))}async init(language,opts){await this.loadEntry();let index=this.findIndex(language);let lang_wasm=index.wasm?index.wasm:"unknown";let resources=[this.loadMeta(index.hash)];if(opts.load_wasm===true){resources.push(this.loadWasm(lang_wasm))}await Promise.all(resources);this.raw_ptr=this.backend.init_pagefind(new Uint8Array(this.searchMeta));if(Object.keys(this.mergeFilter)?.length){let filters2=this.stringifyFilters(this.mergeFilter);let ptr=await this.getPtr();this.raw_ptr=this.backend.add_synthetic_filter(ptr,filters2)}if(this.ranking){await this.set_ranking(this.ranking)}}async loadEntry(){try{let entry_response=await fetch(`${this.basePath}pagefind-entry.json?ts=${Date.now()}`);let entry_json=await entry_response.json();this.languages=entry_json.languages;if(entry_json.version!==this.version){if(this.primary){console.warn(["Pagefind JS version doesn't match the version in your search index.",`Pagefind JS: ${this.version}. Pagefind index: ${entry_json.version}`,"If you upgraded Pagefind recently, you likely have a cached pagefind.js file.","If you encounter any search errors, try clearing your cache."].join("\n"))}else{console.warn(["Merging a Pagefind index from a different version than the main Pagefind instance.",`Main Pagefind JS: ${this.version}. Merged index (${this.basePath}): ${entry_json.version}`,"If you encounter any search errors, make sure that both sites are running the same version of Pagefind."].join("\n"))}}}catch(e){console.error(`Failed to load Pagefind metadata: +${e?.toString()}`);throw new Error("Failed to load Pagefind metadata")}}findIndex(language){if(this.languages){let index=this.languages[language];if(index)return index;index=this.languages[language.split("-")[0]];if(index)return index;let topLang=Object.values(this.languages).sort((a,b)=>b.page_count-a.page_count);if(topLang[0])return topLang[0]}throw new Error("Pagefind Error: No language indexes found.")}async loadMeta(index){try{let compressed_resp=await fetch(`${this.basePath}pagefind.${index}.pf_meta`);let compressed_meta=await compressed_resp.arrayBuffer();this.searchMeta=this.decompress(new Uint8Array(compressed_meta),"Pagefind metadata")}catch(e){console.error(`Failed to load the meta index: +${e?.toString()}`)}}async loadWasm(language){try{const wasm_url=`${this.basePath}wasm.${language}.pagefind`;let compressed_resp=await fetch(wasm_url);let compressed_wasm=await compressed_resp.arrayBuffer();const final_wasm=this.decompress(new Uint8Array(compressed_wasm),"Pagefind WebAssembly");if(!final_wasm){throw new Error("No WASM after decompression")}this.wasm=await this.backend(final_wasm)}catch(e){console.error(`Failed to load the Pagefind WASM: +${e?.toString()}`);throw new Error(`Failed to load the Pagefind WASM: +${e?.toString()}`)}}async _loadGenericChunk(url,method){try{let compressed_resp=await fetch(url);let compressed_chunk=await compressed_resp.arrayBuffer();let chunk=this.decompress(new Uint8Array(compressed_chunk),url);let ptr=await this.getPtr();this.raw_ptr=this.backend[method](ptr,chunk)}catch(e){console.error(`Failed to load the index chunk ${url}: +${e?.toString()}`)}}async loadChunk(hash){if(!this.loaded_chunks[hash]){const url=`${this.basePath}index/${hash}.pf_index`;this.loaded_chunks[hash]=this._loadGenericChunk(url,"load_index_chunk")}return await this.loaded_chunks[hash]}async loadFilterChunk(hash){if(!this.loaded_filters[hash]){const url=`${this.basePath}filter/${hash}.pf_filter`;this.loaded_filters[hash]=this._loadGenericChunk(url,"load_filter_chunk")}return await this.loaded_filters[hash]}async _loadFragment(hash){let compressed_resp=await fetch(`${this.basePath}fragment/${hash}.pf_fragment`);let compressed_fragment=await compressed_resp.arrayBuffer();let fragment=this.decompress(new Uint8Array(compressed_fragment),`Fragment ${hash}`);return JSON.parse(new TextDecoder().decode(fragment))}async loadFragment(hash,weighted_locations=[],search_term){if(!this.loaded_fragments[hash]){this.loaded_fragments[hash]=this._loadFragment(hash)}let fragment=await this.loaded_fragments[hash];fragment.weighted_locations=weighted_locations;fragment.locations=weighted_locations.map((l)=>l.location);if(!fragment.raw_content){fragment.raw_content=fragment.content.replace(//g,">");fragment.content=fragment.content.replace(/\u200B/g,"")}if(!fragment.raw_url){fragment.raw_url=fragment.url}fragment.url=this.processedUrl(fragment.raw_url,search_term);const excerpt_start=calculate_excerpt_region(weighted_locations,this.excerptLength);fragment.excerpt=build_excerpt(fragment.raw_content,excerpt_start,this.excerptLength,fragment.locations);fragment.sub_results=calculate_sub_results(fragment,this.excerptLength);return fragment}fullUrl(raw){if(/^(https?:)?\/\//.test(raw)){return raw}return`${this.baseUrl}/${raw}`.replace(/\/+/g,"/").replace(/^(https?:\/)/,"$1/")}processedUrl(url,search_term){const normalized=this.fullUrl(url);if(this.highlightParam===null){return normalized}let individual_terms=search_term.split(/\s+/);try{let processed=new URL(normalized);for(const term of individual_terms){processed.searchParams.append(this.highlightParam,term)}return processed.toString()}catch(e){try{let processed=new URL(`https://example.com${normalized}`);for(const term of individual_terms){processed.searchParams.append(this.highlightParam,term)}return processed.toString().replace(/^https:\/\/example\.com/,"")}catch(e2){return normalized}}}async getPtr(){while(this.raw_ptr===null){await asyncSleep(50)}if(!this.raw_ptr){console.error("Pagefind: WASM Error (No pointer)");throw new Error("Pagefind: WASM Error (No pointer)")}return this.raw_ptr}parseFilters(str){let output={};if(!str)return output;for(const block of str.split("__PF_FILTER_DELIM__")){let[filter,values]=block.split(/:(.*)$/);output[filter]={};if(values){for(const valueBlock of values.split("__PF_VALUE_DELIM__")){if(valueBlock){let extract=valueBlock.match(/^(.*):(\d+)$/);if(extract){let[,value,count]=extract;output[filter][value]=parseInt(count)??count}}}}}return output}stringifyFilters(obj={}){return JSON.stringify(obj)}stringifySorts(obj={}){let sorts=Object.entries(obj);for(let[sort,direction]of sorts){if(sorts.length>1){console.warn(`Pagefind was provided multiple sort options in this search, but can only operate on one. Using the ${sort} sort.`)}if(direction!=="asc"&&direction!=="desc"){console.warn(`Pagefind was provided a sort with unknown direction ${direction}. Supported: [asc, desc]`)}return`${sort}:${direction}`}return``}async filters(){let ptr=await this.getPtr();let filters2=this.backend.request_all_filter_indexes(ptr);let filter_chunks=filters2.split(" ").filter((v)=>v).map((chunk)=>this.loadFilterChunk(chunk));await Promise.all([...filter_chunks]);ptr=await this.getPtr();let results=this.backend.filters(ptr);return this.parseFilters(results)}async preload(term,options2={}){await this.search(term,{...options2,preload:true})}async search(term,options2={}){options2={verbose:false,filters:{},sort:{},...options2};const log=(str)=>{if(options2.verbose)console.log(str)};log(`Starting search on ${this.basePath}`);let start=Date.now();let ptr=await this.getPtr();let filter_only=term===null;term=term??"";let exact_search=/^\s*".+"\s*$/.test(term);if(exact_search){log(`Running an exact search`)}term=term.toLowerCase().trim().replace(/[\.`~!@#\$%\^&\*\(\)\{\}\[\]\\\|:;'",<>\/\?\-]/g,"").replace(/\s{2,}/g," ").trim();log(`Normalized search term to ${term}`);if(!term?.length&&!filter_only){return{results:[],unfilteredResultCount:0,filters:{},totalFilters:{},timings:{preload:Date.now()-start,search:Date.now()-start,total:Date.now()-start}}}let sort_list=this.stringifySorts(options2.sort);log(`Stringified sort to ${sort_list}`);const filter_list=this.stringifyFilters(options2.filters);log(`Stringified filters to ${filter_list}`);let index_resp=this.backend.request_indexes(ptr,term);let filter_resp=this.backend.request_filter_indexes(ptr,filter_list);let chunks=index_resp.split(" ").filter((v)=>v).map((chunk)=>this.loadChunk(chunk));let filter_chunks=filter_resp.split(" ").filter((v)=>v).map((chunk)=>this.loadFilterChunk(chunk));await Promise.all([...chunks,...filter_chunks]);log(`Loaded necessary chunks to run search`);if(options2.preload){log(`Preload \u2014 bailing out of search operation now.`);return null}ptr=await this.getPtr();let searchStart=Date.now();let result=this.backend.search(ptr,term,filter_list,sort_list,exact_search);log(`Got the raw search result: ${result}`);let[unfilteredResultCount,all_results,filters2,totalFilters]=result.split(/:([^:]*):(.*)__PF_UNFILTERED_DELIM__(.*)$/);let filterObj=this.parseFilters(filters2);let totalFilterObj=this.parseFilters(totalFilters);log(`Remaining filters: ${JSON.stringify(result)}`);let results=all_results.length?all_results.split(" "):[];let resultsInterface=results.map((result2)=>{let[hash,score,all_locations]=result2.split("@");log(`Processing result: + hash:${hash} + score:${score} + locations:${all_locations}`);let weighted_locations=all_locations.length?all_locations.split(",").map((l)=>{let[weight,balanced_score,location]=l.split(">");return{weight:parseInt(weight)/24,balanced_score:parseFloat(balanced_score),location:parseInt(location)}}):[];let locations=weighted_locations.map((l)=>l.location);return{id:hash,score:parseFloat(score)*this.indexWeight,words:locations,data:async()=>await this.loadFragment(hash,weighted_locations,term)}});const searchTime=Date.now()-searchStart;const realTime=Date.now()-start;log(`Found ${results.length} result${results.length == 1 ? "" : "s"} for "${term}" in ${Date.now() - searchStart}ms (${Date.now() - start}ms realtime)`);return{results:resultsInterface,unfilteredResultCount:parseInt(unfilteredResultCount),filters:filterObj,totalFilters:totalFilterObj,timings:{preload:realTime-searchTime,search:searchTime,total:realTime}}}};var Pagefind=class{constructor(options2={}){this.backend=wasm_bindgen;this.primaryLanguage="unknown";this.searchID=0;this.primary=new PagefindInstance({...options2,primary:true});this.instances=[this.primary];this.init(options2?.language)}async options(options2){await this.primary.options(options2)}async init(overrideLanguage){if(document?.querySelector){const langCode=document.querySelector("html")?.getAttribute("lang")||"unknown";this.primaryLanguage=langCode.toLocaleLowerCase()}await this.primary.init(overrideLanguage?overrideLanguage:this.primaryLanguage,{load_wasm:true})}async mergeIndex(indexPath,options2={}){if(this.primary.basePath.startsWith(indexPath)){console.warn(`Skipping mergeIndex ${indexPath} that appears to be the same as the primary index (${this.primary.basePath})`);return}let newInstance=new PagefindInstance({primary:false,basePath:indexPath});this.instances.push(newInstance);while(this.primary.wasm===null){await asyncSleep(50)}await newInstance.init(options2.language||this.primaryLanguage,{load_wasm:false});delete options2["language"];await newInstance.options(options2)}mergeFilters(filters2){const merged={};for(const searchFilter of filters2){for(const[filterKey,values]of Object.entries(searchFilter)){if(!merged[filterKey]){merged[filterKey]=values;continue}else{const filter=merged[filterKey];for(const[valueKey,count]of Object.entries(values)){filter[valueKey]=(filter[valueKey]||0)+count}}}}return merged}async filters(){let filters2=await Promise.all(this.instances.map((i2)=>i2.filters()));return this.mergeFilters(filters2)}async preload(term,options2={}){await Promise.all(this.instances.map((i2)=>i2.preload(term,options2)))}async debouncedSearch(term,options2,debounceTimeoutMs){const thisSearchID=++this.searchID;this.preload(term,options2);await asyncSleep(debounceTimeoutMs);if(thisSearchID!==this.searchID){return null}const searchResult=await this.search(term,options2);if(thisSearchID!==this.searchID){return null}return searchResult}async search(term,options2={}){let search2=await Promise.all(this.instances.map((i2)=>i2.search(term,options2)));const filters2=this.mergeFilters(search2.map((s)=>s.filters));const totalFilters=this.mergeFilters(search2.map((s)=>s.totalFilters));const results=search2.map((s)=>s.results).flat().sort((a,b)=>b.score-a.score);const timings=search2.map((s)=>s.timings);const unfilteredResultCount=search2.reduce((sum,s)=>sum+s.unfilteredResultCount,0);return{results,unfilteredResultCount,filters:filters2,totalFilters,timings}}};var pagefind=void 0;var initial_options=void 0;var init_pagefind=()=>{if(!pagefind){pagefind=new Pagefind(initial_options??{})}};var options=async(new_options)=>{if(pagefind){await pagefind.options(new_options)}else{initial_options=new_options}};var init=async()=>{init_pagefind()};var destroy=async()=>{pagefind=void 0;initial_options=void 0};var mergeIndex=async(indexPath,options2)=>{init_pagefind();return await pagefind.mergeIndex(indexPath,options2)};var search=async(term,options2)=>{init_pagefind();return await pagefind.search(term,options2)};var debouncedSearch=async(term,options2,debounceTimeoutMs=300)=>{init_pagefind();return await pagefind.debouncedSearch(term,options2,debounceTimeoutMs)};var preload=async(term,options2)=>{init_pagefind();return await pagefind.preload(term,options2)};var filters=async()=>{init_pagefind();return await pagefind.filters()};export{debouncedSearch,destroy,filters,init,mergeIndex,options,preload,search} \ No newline at end of file diff --git a/pagefind/pagefind.zh-cn_6d4975d6ba4b8.pf_meta b/pagefind/pagefind.zh-cn_6d4975d6ba4b8.pf_meta new file mode 100644 index 0000000..dd9af05 Binary files /dev/null and b/pagefind/pagefind.zh-cn_6d4975d6ba4b8.pf_meta differ diff --git a/pagefind/wasm.unknown.pagefind b/pagefind/wasm.unknown.pagefind new file mode 100644 index 0000000..f50e145 Binary files /dev/null and b/pagefind/wasm.unknown.pagefind differ diff --git a/posts/2023-black-apple-amd--free-drived-card-buying-recommendation/index.html b/posts/2023-black-apple-amd--free-drived-card-buying-recommendation/index.html new file mode 100644 index 0000000..f79baef --- /dev/null +++ b/posts/2023-black-apple-amd--free-drived-card-buying-recommendation/index.html @@ -0,0 +1 @@ +2023年黑苹果amd免驱显卡购买推荐 - 平淡生活
    332 字
    2 分钟
    2023年黑苹果amd免驱显卡购买推荐

    RX 6600 RX 6600 XT RX 6800 RX 6800 XT RX 6900 XT

    RX 5500 RX 5500 XT RX 5600 RX 5600 XT RX 5700 RX 5700 XT RX 5700 XT 50周年纪念版 如遇到黑屏,需要boot参数agdpmod=pikera才能正确显示

    Vega 20系列 从Mojave开始支持#

    Radeon VII

    Vega 10系列 从High Sierra开始支持#

    Vega 64 Liquid Vega 64 Vega 56 Vega Frontier Edition Radeon Pro WX 9100 Radeon Pro WX 7100 ## Polaris架构10和20系列 从Sierra开始支持 400系列:

    RX 480 RX 470D RX 470 RX 460 RX 590 RX 580X RX 580 RX 570X RX 570 RX 560X RX 560 WX 5100 WX 4100 E9550

    还有些同Polaris核心的 rx550

    R7 / R9系列 从Yosemite开始支持#

    R9 Fury X R9 Fury R9 Nano R9 390(需要FakeID) R9 290X / 390X R9 290/390(需提供FakeID) R9 280x / 380x(不一定成功) R9 280/380(需要FakeID) R9 270X / 370X R7 270/370(需提供FakeID) R7 265 R7 260x / 360x R9 260/360(根据型号可能需要FakeID) R9 255 R7 250X R7 250(需提供FakeID) R7 240(需要FakeID)

    HD 8000系列 从Mountain Lion开始支持#

    HD 8740 HD 8760 HD 8770 HD 8850 HD 8870 HD 8890 HD 8950 HD 8970

    HD 7000系列 从Mountain Lion开始支持#

    Dual AMD FirePro D300 Dual AMD FirePro D500 Dual AMD FirePro D700 FirePro W5100(FakeID needed) FirePro W7000 FirePro W9000 HD 7700 HD 7730 HD 7750 HD 7770 HD 7790 HD 7850 HD 7870 HD 7870 XT HD 7950 HD 7970 HD 7990

    2023年黑苹果amd免驱显卡购买推荐
    https://blog.ittst.com/posts/2023-black-apple-amd--free-drived-card-buying-recommendation/
    作者
    浪子
    发布于
    2022-01-21
    许可协议
    CC BY-NC-SA 4.0
    \ No newline at end of file diff --git a/posts/2023-methods-to-register-chatgpt-in-china/index.html b/posts/2023-methods-to-register-chatgpt-in-china/index.html new file mode 100644 index 0000000..5aa64ad --- /dev/null +++ b/posts/2023-methods-to-register-chatgpt-in-china/index.html @@ -0,0 +1 @@ +2023国内注册ChatGPT的方法 - 平淡生活
    1192 字
    6 分钟
    2023国内注册ChatGPT的方法

    国内注册ChatGPT的方法#

    ChatGPT 是由 OpenAI开发的一个人工智能聊天机器人程序,于 2022 年 11 月推出,基于 GPT-3.5 架构的大型语言模型并通过强化学习进行训练,在这款软件中用户们可以与 AI 人工智能进行多种的对话工作,目前,有部分地区(例如中国大陆香港)无法使用此项服务

    ChatGPT技术开发商OpenAI斥巨资买下AI.com域名,现在访问AI.com直接跳转到ChatGPT官网。 2024年AI.com已经跳转到google Gemini的官网了

    ChatGPT功能#

    • ChatGPT 在搜索和写作上非常强大。
    • ChatGPT 可以根据用户提供的信息,给出合理而有效的搜索结果,
    • ChatGPT 写的短篇小说,
    • ChatGPT 写的信件,内容通畅,用词准确。
    • ChatGPT 撰写专业的电子邮件回复
    • ChatGPT 为营销活动产生新的内容创意
    • ChatGPT 解决任何编码问题或为获取代码

    国内用户注册ChatGPT的方法#

    国内用户想要注册 ChatGPT,首先需要有一个网络环境,例如美国;然后,需要一个可以接收短信验证码的手机号码,之后就可以打开 ChatGPT 的网站注册 ,邮件验证,电话号码验证等等。

    如果出现如下的界面,则证明你的网络所在地区无法注册访问ChatGPT。

    注意:如果无法搞定上述必要条件的话,可以尝试 搭建一个梯子 x-ui:支持多协议多用户的 xray 面板

    注册 OpenAI 账号#

    1、点击打开 https://chat.openai.com/auth/login 页面中的 Sign up进行相应的账号注册(注意网络环境不能是香港澳门等地区,不然会提示不能在当前国家服务)。

    注册 2、在新的页面可选择注册 ChatGPT 账号的方式,可以使用邮箱(国内邮箱也可以,建议使用国外邮箱),,或者有谷歌账号的邮箱,或者用 Microsoft Account 注册也可以。

    选择创建ChatGPT账号的方式 使用邮箱注册ChatGPT时,输入邮箱地址,点击Continue,之后输入密码,进入下一步骤。

    使用邮箱注册ChatGPT 使用 Microsoft Account 注册ChatGPT时,可以使用Microsoft账号登录,如果有Github账号的话,可点击登录选项,然后选择使用Github账号 注册。

    使用Microsoft-Account注册ChatGPT 使用 Google 账号注册ChatGPT时,输入Google账号地址及密码,然后进入下一步骤。

    使用Google账号注册ChatGPT 3、以使用邮箱注册ChatGPT为例,输入邮箱需要在邮箱收到的邮件内点击验证,

    验证ChatGPT邮箱 4、然后继续在ChatGPT注册页面填入信息

    在ChatGPT注册页面填入信息 5、填写ChatGPT手机短信验证码

    填写ChatGPT手机短信验证码

    接收手机短信验证码#

    需要使用中国以外的手机号码进行验证,例如美国、印度等,可以在俄罗斯的接码平台sms-activate来完成,该网站支持中文/英文显示界面,支持支付宝,使用俄罗斯卢布计费。

    1、现在就需要用到注册的第三方接码平台了,访问 https://sms-activate.org/

    注册的第三方接码平台了

    2、注册完成后需要充值(按照 1 美元兑换 73 卢布),点击右上角**“ 余额充值 ”,使用支付宝充值 1 美元即可(sms-activate.org平台规则发生变化,少于10美元充值,需最低充值2美元<2023.3.22>)**。

    注册完成后需要充值 3、在平台左侧搜索 OpenAI ,然后在国家那里找到Indonesia(印度尼西亚),点击选择国家后面的加入购物车即可。

    选择国家 4、然后等一会出现如下界面,这里的手机号拷贝出来,输入到上一步中注册OpenAI的界面上,然后点击 Send code按钮,在下图的界面中等待验证码短信发送

    接收输入验证码 注意:有效期是20分钟,需要快速操作,若两三分钟没有收到短信验证码,可点击旁边的删除按钮,然后再次选择别的手机号码,未收到验证不扣费。

    使用ChatGPT#

    账号注册完成了,就可以尽情的使用ChatGPT来玩耍了,重新登录ChatGPT官网,然后访问Chat,这时你就可以开始尽情和机器人聊天了。

    使用ChatGPT

    使用ChatGPT示例,如何写一个吸引人的 标题

    使用ChatGPT示例

    总结#

    以上是为你介绍的国内注册 ChatGPT 的方法,希望对你了解 ChatGPT 有所帮助,如有问题,欢迎联系我们。

    2023国内注册ChatGPT的方法
    https://blog.ittst.com/posts/2023-methods-to-register-chatgpt-in-china/
    作者
    浪子
    发布于
    2023-04-07
    许可协议
    CC BY-NC-SA 4.0
    \ No newline at end of file diff --git a/posts/42-virtual-credit-card-opening-channels/index.html b/posts/42-virtual-credit-card-opening-channels/index.html new file mode 100644 index 0000000..bdffbbe --- /dev/null +++ b/posts/42-virtual-credit-card-opening-channels/index.html @@ -0,0 +1 @@ +42个虚拟信用卡开卡渠道 - 平淡生活
    1871 字
    9 分钟
    42个虚拟信用卡开卡渠道
    1. 全球付 http://www.globalcash.hk/ 在线申请,可充值,微信支付,开卡简单。

    2. 爱汇旅之卡 http://www.ihui.com/ 此卡是目前最方便容易获得,并大量获得的实体mastercard实体卡,可以直接联系客服大量拿卡,一次上百张甚至是数百张,该卡支持paypal、amazon、google等网站。

    3. Tap&go 拍住赏 http://tapngo.com.hk/ 可以支持微信,amazon、applepay 国际阿里云 GCE aws paypal等大部分网站,需要认证,买卡可以去香港总部或者某宝,最低100余额 充值可在香港便利店充值或者网上找人代充!

    4. 三三金融: https://cards.33finance.com 需要到香港公司进行开卡,也可以找某宝,开出来的卡适用于大部分网站,包括欧贝通/amazon/阿里云/paypal/等等等等,充值也需要到香港便利店或者是到公司充,也可以找人代充。

    5. Tierrapay www.tierrapay.com卡段4665 注册要用欧洲地址,比如英国,需要用pm或者是wmz充值,无需认证即可成功开卡。

    6. 通汇香港 https://www.transforex.hk/ 此卡要携带护照和身份证前往香港开通,该公司有礼品卡,固定金额每天限购买3张,经测试,此卡适用于paypal amazon ebay等平台

    7. Uphold www.uphold.com 需要护照和地址证明申请,支持银行 比特币进行充值

    8. Payeer http://www.zhesui.com/payeer/ 目前需要用欧洲国家的资料注册,

    9. Advcash 目前需要用欧洲国家的资料注册

    10. Moneypolo http://www.zhesui.com/moneypolo/需要完成实名认证,以及收费购买。

    11. Wirexapp http://www.zhesui.com/wirex-app-visa/ 4665卡段,目前需要用欧洲国家地址注册申请。没认证只能比特币充值。

    12. Payoneer派安盈 附带美国 日本 英国和欧洲银行账户 http://www.payoneer.com/

    13. okpay 需要用护照通过实名认证才能开卡。

    14. Qiwi https://qiwi.com/ 需要俄罗斯电话卡注册成功才能开卡 (俄罗斯卡可以去淘宝买一个)

    15. ecoPayz http://www.zhesui.com/ecopayz-card/ 目前需要认证,该卡支持大部分网站,可以无限移除替换卡片。

    16. 浦发E-GO卡(需要有浦发实体卡) http://www.zhesui.com/e-go/ 该卡可以开出银联 mastercard visa AME 四种卡片

    17. Yandexmoney money.yandex.ru 以上虚拟卡渠道基本都是国外电子钱包发行的,类似于国内的支付宝,不同的是除开少数几个支持人民币和国内银行充值的之外,其他基本都需要使用国外银行卡或者是电子钱包、信用卡充值,如果没有的话我们可以通过兑换的方式为该网站充值,具体兑换商可参照电子货币兑换网中国上面所说的兑换网站以及方法:电子货币兑换网中国:http://currencyexchange.net.cn/

    18. VirtualCards(支持支付宝充值) https://VirtualCards.us 50美元起充,注册成功无需充值既可出卡号

    19. payweb http://payweb.com (需要付费、只有实体卡)可以用银联进行充值!

    20. Solid Trust Pay http://SolidTrustPay.com

    21. Skrill(需要注册国外账户) http://www.skrill.com 要注册欧洲国家的资料才有开卡选项。

    22. Neteller(需要注册国外账户) www.neteller.com

    23. v-preca(需要日本ip注册 少数中国卡能够充值) http://vpc.lifecard.co.jp

    24. mun-prepaid(需要日本ip注册) 日元卡或者日本便利店充值 www.mun-prepaid.com

    25. Giftcardmall www.giftcardmall.com 此网站要美国信用卡或者是借记卡进行购买

    26. netspend(需翻墙 国外身份认证) www.Netspend.com

    27. vanilla(实体卡、需要国外身份或者是便利店购买) 也可以找我们进行购买。 www.vanilla.com

    28. 通汇香港 https://www.transforex.hk/ 此卡支持amazon googleplay paypal 等网站需要携带护照和身份证到香港总公司进行开卡!用身份证就能通过认证,可以开实体卡和虚拟卡

    29. Entropay 欧贝通 www.Entropay.com 不认证可以开五张卡,4067卡段,该卡可以用三三金融卡进行充值,可以自定义充值金额,认证过的账户可以开出10张卡片,可以自由决定充值的金额。欧贝通充值可以用 tapngo卡和三三金融进行充值,经本人测试是中国用户目前最好使的充值方法,tapngo和三三金融可以自行在香港购买。

    30. payoneer payoneer是目前非常不错的虚拟卡平台,身份证即可申请下来,遗憾的是申请到收到卡需要一个月左右的时间,值得一提的是payoneer更吸引我们的是他有美国银行账户、美元、欧元、日元、英镑银行账户可供我们申请选择,非常值得拥有。

    31. Mmvpaymmvpay 是新加坡的虚拟卡平台可以开出mastercard 虚拟卡,需要新加坡手机号码注册!经过测试,账户不用认证,甚至是不用充值,一个账户直接可以获取5张卡片信息,包含卡号,有效期和卡密信息

    32. paypal mastercard https://www.paypal.com/us/webapps/mpp/paypal-prepaid-mastercard 此卡是paypal美国发行的mastercard,支持大部分网站消费,绑定以及验证,但是需要美国护照、身份和银行卡信息申请,并且是需要真实的

    33. amazon mastercard https://www.amazon.co.jp/ 三井住友カード株式会社-amazon-mastercardゴード/dp/b0092vb6vkAmazon mastercard是amazon日本网站发行的mastercard虚拟卡账户,同样是需要日本身份证护照地址证明才能申请下来,专门针对日亚的mastercard。

    34. Cryptopaycryptopay 是一个数字交易平台同属4665卡段的虚拟卡,不认证可以开出虚拟卡,但是前提是必须用欧洲国家的地址以及资料进行注册!

    35. Capitalistcapitalist 是一个俄罗斯的电子钱包工具,目前不认证一个账户可以开2张mastercard虚拟卡,分别是一张欧元的一张,一张美元的,认证过后可以开通四张卡片,两张实体卡和两张虚拟卡。

    36. Unichangeunichange 是一个电子货币兑换平台,该平台提供欧元和美元两种币种的虚拟卡。Unichange.me如果你没有某些资料,某些材料,那么万能的商人一定可以满足的了你!

    37. PayzaPayza 也是一个电子钱包工具,类似于paypal之类的电子 钱包,这边主要介绍payza发行的mastercard虚拟卡,申请虚拟卡需要身份证和信用卡认证,可以用预付卡能看得到自己姓名的信用卡。

    38. mycard2go mycard2go是一个德国的虚拟卡,发卡行为wire bank ag卡种为visa,注册账户无需身份认证,但是需要进行充值了才能开卡,充值成功后自动开通卡片,卡种为欧元,需要用KLARNA网银或者是当地现金进行充值,也可以进行网银。

    39. Vandle https://app.vandle.jp/ vandle是一家日本的虚拟卡提供平台,它提供mastercard虚拟卡片,需要再日本的便利店进行充值,也可以用日本的信用卡网银进行充值

    40. Chocom http://www.chocom.jp/index.html Chocom也是一家日本的虚拟卡,可以在日本的便利店,或者是日本信用卡以及Chocom电子钱包进行充值。

    41. Docomokouza docomokouza为日本docomo发行的visa虚拟信用卡,甚至是注册无需审查即可申请visa虚拟卡,最短有效期仅10天,还有一种则为3年需要日本的电子货币或者是信用卡对其进行充值。 https://docomokouza.jpmastercard借记卡

    42. Nttsmarttrade nttsmarttrade是一家日本的在线虚拟卡平台,支持中文界面,非常方便,需要用日本信用卡段进行充值,中国和日本以外的mastercard无法进行充值。http://www.nttsmarttrade.co.jp/mastercardnet/cn/

    42个虚拟信用卡开卡渠道
    https://blog.ittst.com/posts/42-virtual-credit-card-opening-channels/
    作者
    浪子
    发布于
    2022-11-29
    许可协议
    CC BY-NC-SA 4.0
    \ No newline at end of file diff --git a/posts/add-a-movie-viewing-page-to-the-blog/index.html b/posts/add-a-movie-viewing-page-to-the-blog/index.html new file mode 100644 index 0000000..e0a36b0 --- /dev/null +++ b/posts/add-a-movie-viewing-page-to-the-blog/index.html @@ -0,0 +1,125 @@ +给博客增加一个观影页面 - 平淡生活
    471 字
    2 分钟
    给博客增加一个观影页面

    前言#

    使用插件构建的观影页面有点不那么喜欢,所以我决定自己写一个。

    项目#

    所使用的的项目地址 https://github.com/bigfa/douban-cf-worker

    步骤#

    1. 首先根据https://github.com/bigfa/douban-cf-worker 中的步骤创建接口

    2. 在博客的根目录下新建一个名为 movies 的文件夹,然后在 movies 文件夹下新建一个名为 index.md 的文件,在文件中写入以下内容:

    ---
    +title: 观影
    +date: 2024-09-11 13:00:56
    +---
    +<link rel="stylesheet" href="/movies/movies.css">
    +<div class="masonry" id="movieContainer">
    +    <!-- 电影项目将被 JavaScript 动态添加到这里 -->
    +</div>
    +<script defer src="/movies/movies.js"></script>
    +
    +
    1. 新建一个movies.js文件,在文件中写入以下内容:
        // 创建电影项目的HTML
    +    function createMovieItem(movie) {
    +        return `
    +            <div class="item">
    +                <div class="image-container">
    +                    <img src="${movie.poster}" 
    +                         alt="${movie.name}" 
    +                         onerror="this.onerror=null; this.src='placeholder.jpg';">
    +                </div>
    +                <div class="item-content">
    +                    <div class="item-title">
    +                        <a href="${movie.link}" target="_blank" rel="noopener noreferrer">${movie.name}</a>
    +                    </div>
    +                    <div class="item-info">${movie.card_subtitle}</div>
    +                  
    +                    <div class="item-score">豆瓣评分: ${movie.douban_score}</div>
    +                </div>
    +            </div>
    +        `;
    +    }
    +
    +    // 从API获取数据并渲染页面
    +    async function fetchAndRenderMovies() {
    +        try {
    +            const response = await fetch('https://db.imsun.org/list');
    +            const data = await response.json();
    +
    +            // 按豆瓣评分排序(降序)
    +            data.results.sort((a, b) => b.douban_score - a.douban_score);
    +
    +            const container = document.getElementById('movieContainer');
    +            data.results.forEach(movie => {
    +                container.innerHTML += createMovieItem(movie);
    +            });
    +        } catch (error) {
    +            console.error('Error fetching movie data:', error);
    +            document.getElementById('movieContainer').innerHTML = '<p>加载电影数据时出错,请稍后再试。</p>';
    +        }
    +    }
    +
    +    // 页面加载时获取并渲染电影数据
    +    fetchAndRenderMovies();
    +
    1. movies 文件夹下新建一个名为 movies.css 的文件,在文件中写入以下内容:
     
    +.masonry {
    +    column-count: 4;
    +    column-gap: 20px;
    +}
    +@media (max-width: 1200px) {
    +    .masonry {
    +        column-count: 3;
    +    }
    +}
    +@media (max-width: 900px) {
    +    .masonry {
    +        column-count: 2;
    +    }
    +}
    +@media (max-width: 600px) {
    +    .masonry {
    +        column-count: 1;
    +    }
    +}
    +.item {
    +    position: relative;
    +    overflow: hidden;
    +}
    +
    +.image-container {
    +    position: relative;
    +    width: 100%;
    +    padding-top: 150%; /* 2:3 宽高比 */
    +    overflow: hidden;
    +}
    +
    +.image-container img {
    +    position: absolute;
    +    top: 0;
    +    left: 0;
    +    width: 100%;
    +    height: 100%;
    +    object-fit: cover;
    +    transition: transform 0.3s ease-in-out;
    +}
    +
    +.item-content {
    +    position: absolute;
    +    font-size: 12px;
    +    bottom: 0;
    +    left: 0;
    +    width: auto;
    +    background-color: rgba(0, 0, 0, 0.7);
    +    color: white;
    +    padding: 10px;
    +    transform: translateY(100%);
    +    transition: transform 0.3s ease-in-out;
    +}
    +
    +.item:hover .item-content {
    +    transform: translateY(0);
    +}
    +
    +.item:hover .image-container img {
    +    transform: scale(1.1);
    +}
    +
    +.item-title a {
    +    color: white;
    +    text-decoration: none;
    +    font-size: 20px;
    +}
    +
    +.item-title a:hover {
    +    text-decoration: underline;
    +}
    +

    如此即可大功告成了

    给博客增加一个观影页面
    https://blog.ittst.com/posts/add-a-movie-viewing-page-to-the-blog/
    作者
    浪子
    发布于
    2024-09-11
    许可协议
    CC BY-NC-SA 4.0
    \ No newline at end of file diff --git a/posts/add-artalk-comments-to-memos/index.html b/posts/add-artalk-comments-to-memos/index.html new file mode 100644 index 0000000..74c3eed --- /dev/null +++ b/posts/add-artalk-comments-to-memos/index.html @@ -0,0 +1,52 @@ +给Memos添加Artalk评论 - 平淡生活
    230 字
    1 分钟
    给Memos添加Artalk评论
    2024-10-10

    上文提到

    给Memos添加Twikoo评论

    • 2023.10.23更新以适用于memos v0.16.1版本 把’.resource-wrapper’替换为’.gap-2’

    • 2023.10.17更新memos0.16版本

    自定义脚本#

    把’.resource-wrapper’替换为’.memo-wrapper’

    自定义样式#

    隐藏评论数

    .text-sm.text-gray-500.ml-1{display:none !important;}
    +
    • 2023.9.26更新提醒:适用于 memos 0.15.1版本以下

    自定义脚本#

    // 用 JS 向页面中插入 JS
    +function addArtalkJS() { 
    +    var memosArtalk = document.createElement("script");
    +    memosArtalk.src = `https://unpkg.com/artalk/dist/Artalk.js`;
    +    var artakPos = document.getElementsByTagName("script")[0];
    +    artakPos.parentNode.insertBefore(memosArtalk, artakPos);
    +};
    +// div
    +function startArtalk() {
    +    start = setInterval(function(){
    +        var artalkDom = document.getElementById('Comments') || '';
    +        var memoAt = document.querySelector('.memo-wrapper') || '';
    +        var memoLoading = document.querySelector('.action-button-container') || '';
    +        var memoLoadingA = document.querySelector('.action-button-container a') || '';
    +        if(window.location.href.replace(/^.*\/(m)\/.*$/,'$1') == "m" && memoLoadingA){
    +        memoLoading.innerHTML = "评论加载中……"
    +        }
    +        if(window.location.href.replace(/^.*\/(m)\/.*$/,'$1') == "m" && !artalkDom){
    +            addArtalkJS()
    +            if(memoAt){
    +                clearInterval(start)
    +                var cssLink = document.createElement("link");
    +                cssLink.rel = "stylesheet";
    +                cssLink.href = "https://unpkg.com/artalk/dist/Artalk.css";
    +                document.head.appendChild(cssLink);
    +                memoAt.insertAdjacentHTML('afterend', '<div id="Comments"></div>');
    +                setTimeout(function() {
    +                    Artalk.init({
    +                        el: '#Comments',
    +                        pageKey: location.pathname,
    +                        pageTitle: document.title,
    +                        server: 'https://artalk.loliko.cn',
    +                        site: 'memos',
    +                        darkMode: 'auto'
    +                    });
    +                    Artalk.on('list-loaded', function() {
    +                        // console.log('评论加载完成');
    +                        memoLoading.innerHTML = ''
    +                        startArtalk();
    +                    });
    +                }, 1000);
    +            }
    +        }
    +        //console.log(window.location.href);
    +    }, 1000)
    +}
    +startArtalk();
    +

    自定义样式#

    a.time-text:after { content: '   评论 💬 '; }
    +.atk-main-editor { margin-top: 20px; }
    +
    +
    给Memos添加Artalk评论
    https://blog.ittst.com/posts/add-artalk-comments-to-memos/
    作者
    浪子
    发布于
    2024-10-10
    许可协议
    CC BY-NC-SA 4.0
    \ No newline at end of file diff --git a/posts/add-twikoo-comments-to-memos/index.html b/posts/add-twikoo-comments-to-memos/index.html new file mode 100644 index 0000000..6fb05a0 --- /dev/null +++ b/posts/add-twikoo-comments-to-memos/index.html @@ -0,0 +1,134 @@ +给Memos添加Twikoo评论 - 平淡生活
    577 字
    3 分钟
    给Memos添加Twikoo评论
    2024-10-10

    代码来自于@林木木

    2023.10.23更新脚本以适用于memos v0.16.1

    自定义脚本#

    // Memos v0.16.1 单条页面插入 Twikoo 评论
    +var twikooENV = 'https://你的.com/'
    +function addTwikooJS() { 
    +  var memosTwikoo = document.createElement("script");
    +  memosTwikoo.src = `https://cdn.staticfile.org/twikoo/1.6.22/twikoo.all.min.js`;
    +  var tws = document.getElementsByTagName("script")[0];
    +  tws.parentNode.insertBefore(memosTwikoo, tws);
    +};
    +function startTwikoo() {
    +  startTW = setInterval(function(){
    +    var nowHref = window.location.href;
    +    var twikooDom = document.querySelector('#twikoo') || '';
    +    if( nowHref.replace(/^.*\/(m)\/.*$/,'$1') == "m"){
    +      if(!twikooDom){
    +        addTwikooJS()
    +        setTimeout(function() {
    +          var memoTw = document.querySelector('.gap-2') || '';
    +          memoTw.insertAdjacentHTML('afterend', '<div id="mtcomment"></div>');
    +          twikoo.init({
    +            envId: twikooENV,
    +            el: '#mtcomment',
    +            path: nowHref.replace(/^.*=?(http.*\/m\/[0-9]+).*$/,'$1'),
    +            onCommentLoaded: function () {
    +              startTwikoo();
    +            }
    +          })
    +        }, 1500)
    +      }else{
    +        clearInterval(startTW)
    +      }
    +    }
    +  }, 2000)
    +}
    +startTwikoo();
    +

    2023.10.17更新脚本

    自定义脚本#

    适用于0.16版本

    //Memos v0.16 添加 Twikoo 评论 v2023.10.06
    +var twikooENV = ''  //你的 https://xxxx/
    +function addTwikooJS() { 
    +  var memosTwikoo = document.createElement("script");
    +  memosTwikoo.src = `https://cdn.staticfile.org/twikoo/1.6.22/twikoo.all.min.js`;
    +  var tws = document.getElementsByTagName("script")[0];
    +  tws.parentNode.insertBefore(memosTwikoo, tws);
    +};
    +function startTwikoo() {
    +  startTW = setInterval(function(){ //定时执行 1秒/次
    +    var nowHref = window.location.href;
    +    var twikooDom = document.querySelector('#twikoo') || '';
    +    if( nowHref.replace(/^.*\/(m)\/.*$/,'$1') == "m"){//单条页面
    +      if(!twikooDom){
    +        //console.log('评论未加载');
    +        addTwikooJS() //加载评论 js
    +        setTimeout(function() { //延迟 1秒 执行
    +          var memoTw = document.querySelector('.resource-wrapper') || '';
    +          memoTw.insertAdjacentHTML('afterend', '<div id="mtcomment"></div>');
    +          twikoo.init({
    +            envId: twikooENV,
    +            el: '#mtcomment',
    +            path: nowHref.replace(/^.*=?(http.*\/m\/[0-9]+).*$/,'$1'), //v2023.08.09 正则更新
    +            onCommentLoaded: function () {
    +              startTwikoo()
    +              //console.log('再次开启定时执行');
    +            }
    +          })
    +        }, 900)
    +      }else{
    +        //console.log('清除定时执行');
    +        clearInterval(startTW)
    +      }
    +    }
    +  }, 2000)
    +}
    +startTwikoo();
    +

    由于官方已经有评论图标所以CSS不再添加图标

    2023.9.26 更新.memos升级0.15.1版本后以下无法使用

    自定义脚本#

    //添加 twikoo 评论 v2023.06.10
    +var twikooENV = 'https://twikoo.jiong.us/'
    +function addTwikooJS() { 
    +  var memosTwikoo = document.createElement("script");
    +  memosTwikoo.src = `https://cdn.staticfile.org/twikoo/1.6.16/twikoo.all.min.js`;
    +  var tws = document.getElementsByTagName("script")[0];
    +  tws.parentNode.insertBefore(memosTwikoo, tws);
    +};
    +function addComIcon(){
    +  var memoTwIcons = document.querySelectorAll('.time-text') || '';
    +  if(memoTwIcons){
    +    for(var i=0;i < memoTwIcons.length;i++){
    +      //if(memoTwIcon[i].hasChildNodes == false){
    +        memoTwIcons[i].insertAdjacentHTML('afterbegin', '<div class="twicon"><svg class="icon" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M896 138.667H128c-38.4 0-64 25.6-64 64v544c0 38.4 25.6 64 64 64h128v128c83.2 0 166.4-44.8 256-128h384c38.4 0 64-25.6 64-64v-544c0-38.4-25.6-64-64-64zm0 608H486.4l-19.2 19.2c-51.2 51.2-102.4 83.2-147.2 96v-115.2H128v-544h768v544z" fill="#8a8a8a"/><path d="M256 477.867a64 64 0 1 0 128 0 64 64 0 1 0-128 0zM448 477.867a64 64 0 1 0 128 0 64 64 0 1 0-128 0zM640 477.867a64 64 0 1 0 128 0 64 64 0 1 0-128 0z" fill="#8a8a8a"/></svg></div>');
    +      //}
    +    }
    +  }
    +};
    +function startTwikoo() {
    +  start = setInterval(function(){
    +    var twikooDom = document.getElementById('twikoo') || '';
    +    var memoTw = document.querySelector('.memo-wrapper') || '';
    +    var memoLoading = document.querySelector('.action-button-container') || '';
    +    var memoLoadingA = document.querySelector('.action-button-container a') || '';
    +    var memoTwIcons = document.querySelectorAll('.time-text .twicon') || '';
    +    var nowHref = window.location.href;
    +    if( nowHref.replace(/^.*\/(m)\/.*$/,'$1') == "m" && memoLoadingA){
    +      memoLoading.innerHTML = "评论加载中……"
    +    }
    +    if( nowHref.replace(/^.*\/(m)\/.*$/,'$1') == "m" && !twikooDom){
    +      addTwikooJS()
    +      if(memoTw){
    +        clearInterval(start)
    +        memoTw.insertAdjacentHTML('afterend', '<div id="mtcomment"></div>');
    +        setTimeout(function() {
    +          twikoo.init({
    +            envId: twikooENV,
    +            el: '#mtcomment',
    +            path: nowHref.replace(/^(.*\/m\/[0-9]+).*$/,'$1'),
    +            onCommentLoaded: function () {
    +              //console.log('评论加载完成');
    +              memoLoading.innerHTML = ''
    +              startTwikoo()
    +            }
    +          })
    +        }, 1000)
    +      }
    +    }
    +    if(nowHref.replace(/^.*\/(explore).*$/,'$1') == "explore" || nowHref.replace(/^.*\/(u).*$/,'$1') == "u"){
    +      memoTwIcons.forEach(memoTwIcon => {memoTwIcon.remove();});
    +      addComIcon()
    +      //console.log('图标添加成功');
    +    }
    +    //console.log(window.location.href);
    +  }, 1000)
    +}
    +startTwikoo();
    +

    自定义样式#

    #twikoo{padding: 1rem;background-color: rgb(63,63,70);margin: 1rem 0;border-radius: .5rem;color: #fff !important;}
    +.twicon{position: absolute;right: 1rem;}
    +.btns-container.space-x-2{margin-right:1.5rem;}
    +.action-button-container{color: #e5e7eb;}
    +.action-button-container a{display:none !important;}
    +
    给Memos添加Twikoo评论
    https://blog.ittst.com/posts/add-twikoo-comments-to-memos/
    作者
    浪子
    发布于
    2024-10-10
    许可协议
    CC BY-NC-SA 4.0
    \ No newline at end of file diff --git a/posts/ali-goku-service-offline/index.html b/posts/ali-goku-service-offline/index.html new file mode 100644 index 0000000..c6f73ee --- /dev/null +++ b/posts/ali-goku-service-offline/index.html @@ -0,0 +1 @@ +阿里悟空服务下线 - 平淡生活
    188 字
    1 分钟
    阿里悟空服务下线

    阿里悟空服务宣布于2016年10月31号正式下线,基于阿里悟空的phpwind移动版,基本上也可以宣告死亡了。 实际上phpwind早在两年前已经停止更新维护,目前的社区论坛程序discuz也处于停止更新维护的状态,伴随了广大草根站长走过十年岁月的两大社区程序也算是完成了自己的使命。 一直对社交网络不死心的阿里也放弃了pw是不是意味着社区论坛就此消亡。或者说,在将来不再会有个人草根站长了?毕竟网站开发维护的成本对于非IT人员来讲实在太过于高昂

    阿里悟空服务下线
    https://blog.ittst.com/posts/ali-goku-service-offline/
    作者
    浪子
    发布于
    2016-11-15
    许可协议
    CC BY-NC-SA 4.0
    \ No newline at end of file diff --git a/posts/artalk-comments-using-qq-robot-notification/index.html b/posts/artalk-comments-using-qq-robot-notification/index.html new file mode 100644 index 0000000..d5dd7ce --- /dev/null +++ b/posts/artalk-comments-using-qq-robot-notification/index.html @@ -0,0 +1,20 @@ +Artalk评论使用QQ机器人通知 - 平淡生活
    417 字
    2 分钟
    Artalk评论使用QQ机器人通知

    前言#

    上文使用Docker快速部署一个memos的QQ机器人介绍了QQ机器人的部署方法

    本次将介绍如何使用QQ机器人接收Artalk的评论通知 实现原理是利用Artalk的Webhook功能

    准备#

    1. 确保Artalk已经部署完成
    2. 确保QQ机器人已经部署完成

    使用#

    QQ机器人#

    确保QQ机器人的管理页面开启了HTTP服务,且端口为3000

    访问IP:3000 出现以下页面则说明QQ机器人已经开启了HTTP服务

    {
    +  "status": "failed",
    +  "retcode": 200,
    +  "data": null,
    +  "message": "不支持的api ",
    +  "wording": "不支持的api ",
    +  "echo": null
    +}
    +

    中间服务message-pusher#

    源码:https://github.com/songquanpeng/message-pusher

    部署方法:https://github.com/songquanpeng/message-pusher/blob/master/README.md

    如果不想部署可直接使用我部署的服务, 地址:https://msg.jkjoy.cn 不保证长期有效

    进入消息推送服务的通道配置页面,添加新的通道

    名称 QQ机器人 通道类型 选择 OneBot协议 服务器地址填写 机器人的IP地址:3000 默认推送目标填写接收通知的QQ号码

    进入消息推送服务的接口配置页面,添加新的接口

    名称 Artalk评论通知 通道 选择 QQ机器人 提取规则填写

    {
    +  "id": "comment.id",
    +  "name": "comment.nick",
    +  "time": "comment.date",
    +  "content": "comment.content",
    +  "site": "comment.site_name",
    +  "url": "comment.page_url"
    +}
    +

    构建规则填写

    {
    +  "content": " $name 在 $site 上评论啦 \n 内容:$content \n 时间:$time \n 链接:$url?atk_comment=$id"
    +}
    +

    提交之后 点击复制webhook地址

    Artalk配置#

    在Artalk的后台管理页面,进入设置->多元推送->Webhook

    填入之前复制的webhook地址

    如此即可在artalk有人评论时QQ机器人通知你的QQ啦!

    Artalk评论使用QQ机器人通知
    https://blog.ittst.com/posts/artalk-comments-using-qq-robot-notification/
    作者
    浪子
    发布于
    2024-09-15
    许可协议
    CC BY-NC-SA 4.0
    \ No newline at end of file diff --git a/posts/asus-b150m-et-m2+rx560-black-apple-oc0.8.5-guide/index.html b/posts/asus-b150m-et-m2+rx560-black-apple-oc0.8.5-guide/index.html new file mode 100644 index 0000000..8e90a1b --- /dev/null +++ b/posts/asus-b150m-et-m2+rx560-black-apple-oc0.8.5-guide/index.html @@ -0,0 +1 @@ +华硕b150m-et m2+rx560黑苹果oc0.8.5引导 - 平淡生活
    133 字
    1 分钟
    华硕b150m-et m2+rx560黑苹果oc0.8.5引导
    2022-10-21
    无标签

    配置如下#

    cpu:魔改qhpw 2.2g hz 主板:华硕b150m-et m2 内存:8g ddr4 2133mhz 硬盘:nvme 256gb ssd 显卡:肥猫家rx560 4gb 网卡:bcm94360cd 电源:长城额定300w 机箱:乔思伯c2黑色

    乔思伯这个机箱是个大闷罐,但是显卡功耗低,双烤温度最高75摄氏度

    截图#

    Jietu20221020-144354.jpg Jietu20221021-145738.jpg

    bios设置#

    关闭 CSM兼容性 关闭 VT-D 关闭 串口 打开 USB handoff 关闭 CFG LOCK

    已驱动#

    声卡 网卡 显卡 电源管理 显卡加速 Jietu20221021-152807.jpg

    引导下载#

    下载地址

    华硕b150m-et m2+rx560黑苹果oc0.8.5引导
    https://blog.ittst.com/posts/asus-b150m-et-m2+rx560-black-apple-oc0.8.5-guide/
    作者
    浪子
    发布于
    2022-10-21
    许可协议
    CC BY-NC-SA 4.0
    \ No newline at end of file diff --git a/posts/black-apple-solid--state-pit-guideline/index.html b/posts/black-apple-solid--state-pit-guideline/index.html new file mode 100644 index 0000000..dda09c3 --- /dev/null +++ b/posts/black-apple-solid--state-pit-guideline/index.html @@ -0,0 +1 @@ +黑苹果固态避坑指南 - 平淡生活
    636 字
    3 分钟
    黑苹果固态避坑指南

    三星 PM961 / PM981 / PM981a / PM991 会导致 macOS 无法安装或正常运行

    三星 983ZET无法安装 macOS;

    2019 年 5 月以前出厂的 三星 970 EVO Plus 可能存在和 PM9x1 系列类似的问题,但可以通过在Windows环境升级官方固件解决 macOS 兼容问题;

    镁光 2200S无法安装或稳定运行 macOS;

    爱国者 P2000 256GB无法通过 10.15、11.x、12.x 任何一个版本的正常安装流程,但不排除个例的可能;

    macOS 不支持使用 Intel 傲腾(Optane Memory)或镁光 3D XPoint 进行加速的笔记本电脑;

    下面的型号是与 macOS IONVMeFamily 兼容性不佳的型号(可能无故卡住或运行不正常)#

    英特尔 600P/660P/760P 系列

    金士顿 A2000:配置 S5Z42105控制器的版本必须搭配NVMeFix.kext 1.0.8 及以上,也可能完全无法安装;

    海力士 PC601/PC611/PC711/BC501:主要见于联想和戴尔笔记本,部分批次正常部分会卡住;

    技嘉 GIGABYTE M.2 PCIe SSD(比如 GP-GSM2NE8512GNTD

    威刚 剑鱼 ADATA Swordfish 2 TB M.2-2280

    海力士 SK Hynix HFS001TD9TNG-L5B0B

    海力士 SK Hynix P31

    镁光 Micron 2200V MTFDHBA512TCK -移速的256G同样使用的镁光颗粒无法安装;

    阿斯加特 Asgard AN3+ (STAR1000P)

    朗科 Netac NVME SSD 480

    西部数据 SN550/570/730/750/850都能正常安装和运行 macOS;

    三星 970EVO/Pro/Plus(升级固件后)和 980/980 Pro 都能正常安装和运行 macOS,但是此系列存在 TRIM支持问题;

    海盗船 MP400/MP600系列均能正常安装运行 macOS;

    绝大部分常见的 SATA 接口固态盘都能正常安装和运行 macOS;

    不完全支持TRIM(主要影响特定条件下的写入速度,什么是 TRIM?),但安装运行正常的型号:#

    三星 Samsung 950 Pro

    三星 Samsung 960 Evo/Pro

    三星 Samsung 970 Evo/Pro

    「重要提示」在 macOS 12.0 及以上版本中,OpenCore 无法再修改 APFS 文件系统的 TRIM超时数值,部分执行 TRIM相对较慢的固态硬盘(主要是三星的控制器)将没有足够的时间执行 TRIM 操作。 不正确的设置可能导致进入系统缓慢,因此对 macOS TRIM支持度不佳的硬盘建议将 SetApfsTrimTimeout值改成 0 以关闭 TRIM,或 -1 以关闭该功能。此现象在 12.3 及以上的版本中尤其明显。

    完整支持 macOS TRIM 的型号:#

    西部数据 SN5xx/7xx 系列(未完全测试)

    英睿达 Crucial P1 1TB NVME(SM2263EN,未完全测试)

    金典 KingDian S280(SATA)

    浦科特 PLEXTOR M5Pro(SATA)

    三星 Samsung 850 PRO(SATA,未完全测试)

    三星 Samsung 870 EVO(SATA,未完全测试)

    黑苹果固态避坑指南
    https://blog.ittst.com/posts/black-apple-solid--state-pit-guideline/
    作者
    浪子
    发布于
    2022-04-12
    许可协议
    CC BY-NC-SA 4.0
    \ No newline at end of file diff --git a/posts/centos-appears-at-yum/index.html b/posts/centos-appears-at-yum/index.html new file mode 100644 index 0000000..57ffd7d --- /dev/null +++ b/posts/centos-appears-at-yum/index.html @@ -0,0 +1,6 @@ +centos在yum时出现Determining fastest mirrors - 平淡生活
    183 字
    1 分钟
    centos在yum时出现Determining fastest mirrors
    2023-10-05

    问题1#

    yum makecache时,停在Determining fastest mirrors,一直在判断最快镜像,由于已经指定了yum源,所以不需要些插件,可以用动禁用。

    解决方法:

    修改/etc/yum/pluginconf.d/fastestmirror.conf里面的enabled=0

    修改/etc/yum.conf里面的plugins=0

    问题解决。

    问题2#

    Could not retrieve mirrorlist http://mirrors.elrepo.org/mirrors-elrepo.el7 error was 12: Timeout on http://mirrors.elrepo.org/mirrors-elrepo.el7: (28, ‘Connection timed out after 30001 milliseconds’)

    镜像列表http://mirrors.elrepo.org/mirrors-elrepo.el7 的地址无法访问

    解决方法

    更新ELRepo 软件仓库镜像 首先按照官网的安装说明,配置 ELRepo:

    rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
    +

    按照你的系统版本,运行:

    yum install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
    +

    接下来是换源,建议先备份 /etc/yum.repos.d/elrepo.repo

    cp /etc/yum.repos.d/elrepo.repo /etc/yum.repos.d/elrepo.repo.bak
    +

    然后编辑/etc/yum.repos.d/elrepo.repo 文件,在 mirrorlist=后的地址替换为

    https://mirrors.tuna.tsinghua.edu.cn/elrepo
    +

    最后,更新软件包缓存

    yum makecache
    +
    centos在yum时出现Determining fastest mirrors
    https://blog.ittst.com/posts/centos-appears-at-yum/
    作者
    浪子
    发布于
    2023-10-05
    许可协议
    CC BY-NC-SA 4.0
    \ No newline at end of file diff --git a/posts/centos-system-time-and-time-zone-viewing-and-modification-method/index.html b/posts/centos-system-time-and-time-zone-viewing-and-modification-method/index.html new file mode 100644 index 0000000..869e9c0 --- /dev/null +++ b/posts/centos-system-time-and-time-zone-viewing-and-modification-method/index.html @@ -0,0 +1,8 @@ +CentOS系统时间和时区查看以及修改的方法 - 平淡生活
    120 字
    1 分钟
    CentOS系统时间和时区查看以及修改的方法
    2016-11-14

    一、时间修改 远程连接到centos 或者直接登录系统

    date 
    +

    查看系统时间

    date -s 
    +

    修改时间 看下面的例子

    date -s  03/04/2013
    +

    (将系统日期设定为2013年03月04日)

    date -s  110:38
    +

    (将系统时间设定为上午 10:38)

    二、时区修改

    先查看时区

    date -R  
    +

    修改时区: (将Asia/shanghai-上海时区写入当前时区)

    cp -f /usr/share/zoneinfo/Asia/Shanghai     /etc/localtime 
    +

    提示是否覆盖,输入Y回车, 然后

    date
    +

    查看时区和时间(CST,中国时区)

    CentOS系统时间和时区查看以及修改的方法
    https://blog.ittst.com/posts/centos-system-time-and-time-zone-viewing-and-modification-method/
    作者
    浪子
    发布于
    2016-11-14
    许可协议
    CC BY-NC-SA 4.0
    \ No newline at end of file diff --git a/posts/cloud-torrent-for-centos-one--click-installation/index.html b/posts/cloud-torrent-for-centos-one--click-installation/index.html new file mode 100644 index 0000000..1b8ade5 --- /dev/null +++ b/posts/cloud-torrent-for-centos-one--click-installation/index.html @@ -0,0 +1,2 @@ +Cloud Torrent for centos一键安装 - 平淡生活
    863 字
    4 分钟
    Cloud Torrent for centos一键安装

    支持 离线下载 BT和磁力链接和边下边播 的老司机坐骑 —— Cloud Torrent 声明:本文章仅提供 BT/磁力链接 下载工具的安装方法和说明,任何使用此工具 下载版权侵权文件或导致任何经济损失,皆和本人无任何关系!如果你不同意或有异议,请关闭这个网页! 10-1.png

    • 系统需求 CentOS / Debian / Ubuntu 都可以,因为是 Go语言写的

    • 脚本版本: Ver: 1.0.3

    • Cloud Torrent特点 支持 BT下载 支持 磁力链接下载 支持 搜索磁力链接 支持 离线下载 支持 边下边播( 格式限制:mp4/wbem/ogg,同时需要手动输入链接) 可视化界面 Web UI

    • 安装步骤

      wget -N —no-check-certificate https://www.xuanlove.download/sh/cloudt.sh && chmod +x cloudt.sh && bash cloudt.sh

    下载运行完毕脚本,就会直接开始安装 Cloud Torrent ,安装过程中如果出现让你选择Y和N的,都选Y。 安装完成之后,就会提醒你,输入要开放的端口(推荐:默认 8000) 启动后,访问 http://VPS_IP:8000 即可看到Web UI界面了。

    • 脚本使用说明

      bash cloudt.sh #可以直接输入这个命令,会自动判断是否需要 安装/启动/停止 Cloud Torrent   bash cloudt.sh install #安装 Cloud Torrent   bash cloudt.sh start #启动 Cloud Torrent   bash cloudt.sh stop #停止 Cloud Torrent   bash cloudt.sh tail #查看 Cloud Torrent 日志   bash cloudt.sh uninstall #卸载 Cloud Torrent

    • Cloud Torrent使用说明 Cloud Torrent可以直接在输入中输入 磁力链接 或者 在线的BT种子(不支持本地上传),点击下面的 蓝色的按钮,就会开始解析资源。


    按钮说明#

    成功解析后,就会显示如下的界面,开始下载。 Files 是查看正在下载的文件列表, Start 是启动下载(默认解析后直接启动下载), Stop 是停止下载。 还有,如果你下载完毕或者点了 Stop 停止下载,那么 Stop 就会变成 Remove 删除任务的按钮了。

    搜索磁力链接#

    Cloud Torrent支持搜索磁力链接,在输入栏中直接输入你要搜索的文件名称,同时点击 绿色的按钮 选择一个搜索源,然后点击 蓝色的Search 按钮就可以搜索了。 注意:Cloud Torrent是国外人写的,所以这些搜索源均是国外的磁力链接网站,搜索到的资源基本没有中文的,所以非特殊需求的这个功能就没什么卵用了。

    注意事项#

    BT和磁力链接的速度是和, 磁力链接/BT 的用户上传共享量 和 中心服务器的宽带质量,以及你下载 磁力链接/BT 的VPS的宽带有关系。 这种软件在某些程度上比不上 国内的迅雷,毕竟迅雷 用户了很大共享了很多的上传速度,而且还有缓存的中心服务器,所以才会那么快。 如果你是国外的VPS,特别是美国的,一定要注意下载 BT/磁力链接 容易遇到蜜罐,然后被投诉封VPS。建议使用欧洲的罗马尼亚,那里的VPS无视版权,当然拉回本地,速度肯定也不会多快

    无法访问你的 http://IP:端口#

    可能是防火墙规则的问题,使用下面这个命令来开放端口

    iptables -I INPUT -p tcp --dport 端口 -j ACCEPT
    +
    Cloud Torrent for centos一键安装
    https://blog.ittst.com/posts/cloud-torrent-for-centos-one--click-installation/
    作者
    浪子
    发布于
    2017-05-27
    许可协议
    CC BY-NC-SA 4.0
    \ No newline at end of file diff --git a/posts/compressed-xiafen-kaikai-font-by-taking-the-ziji-setting/index.html b/posts/compressed-xiafen-kaikai-font-by-taking-the-ziji-setting/index.html new file mode 100644 index 0000000..d352334 --- /dev/null +++ b/posts/compressed-xiafen-kaikai-font-by-taking-the-ziji-setting/index.html @@ -0,0 +1,5 @@ +通过取子集的方式压缩霞鹜文楷字体 - 平淡生活
    199 字
    1 分钟
    通过取子集的方式压缩霞鹜文楷字体

    使用python#

    这里使用到的是Python 的库:fonttools

    使用最新版 Python 的 pip 命令安装即可在 Shell 中使用:

    pip install fonttools
    +

    常用汉字大约有3500字 我使用的是这个现代汉语常用 3500 字.txt 中文常用字库项目https://github.com/DavidSheh/CommonChineseCharacter

    取子集#

    使用以下命令即可对字体文件取子集

    fonttools subset "$input_file" --text-file="$text_file" --output-file="$output_file"
    +

    其中 $input_file:输入的字体文件。 $text_file:定义保留字符的纯文本文件路径。 $output_file:输出的字体文件路径。

    取完子集完成之后字体从11M压缩到1.7M左右

    压缩#

    安装模块brotli

    pip install brotli
    +

    使用命令

    fonttools ttLib.woff2 compress "$input_file" -o "$output_file"
    +

    其中 $input_file:输入的字体文件。 $output_file:输出的字体文件路径。

    再次压缩为 woff2 字体格式 大约840kb

    通过取子集的方式压缩霞鹜文楷字体
    https://blog.ittst.com/posts/compressed-xiafen-kaikai-font-by-taking-the-ziji-setting/
    作者
    浪子
    发布于
    2024-09-03
    许可协议
    CC BY-NC-SA 4.0
    \ No newline at end of file diff --git a/posts/deploy-alist-in-fly.io/index.html b/posts/deploy-alist-in-fly.io/index.html new file mode 100644 index 0000000..54dab82 --- /dev/null +++ b/posts/deploy-alist-in-fly.io/index.html @@ -0,0 +1,34 @@ +在fly.io部署Alist - 平淡生活
    188 字
    1 分钟
    在fly.io部署Alist
    2024-01-27

    安装flyctl#

    此处以Windows安装为例

    pwsh -Command "iwr https://fly.io/install.ps1 -useb | iex"
    +

    初始化#

    flyctl launch
    +

    按照提示创建一个app image 选择N会跳出网页要求填写 image APP name 自己设置 port 为5244 RAM选择256MB

    创建一个1G的可持久卷#

    flyctl volumes create alist_data --region hkg --size 1
    +

    编辑fly.toml#

    参照以下内容编辑

    app = "alist"
    +primary_region = "hkg"
    +
    +[build]
    +  image = "xhofe/alist:latest"
    +
    +[env]
    +  PUID = "0"
    +  PGID = "0"
    +  UMASK = "022"
    +
    +[[mounts]]
    +  source = "alist_data"
    +  destination = "/opt/alist/data"
    +
    +[http_service]
    +  internal_port = 5244
    +  force_https = true
    +  auto_stop_machines = false
    +  auto_start_machines = true
    +  min_machines_running = 0
    +  processes = ["app"]
    +
    +[[vm]]
    +  cpu_kind = "shared"
    +  cpus = 1
    +  memory_mb = 256
    +

    部署#

    flyctl deploy
    +

    等待完成,会得到一个网址

    演示#

    https://so4.fly.dev

    获取管理员密码#

    进入SSH

    flyctl ssh console
    +

    执行

    ./alist admin set NEW_PASSWORD
    +

    NEW_PASSWORD为自己设置的密码

    在fly.io部署Alist
    https://blog.ittst.com/posts/deploy-alist-in-fly.io/
    作者
    浪子
    发布于
    2024-01-27
    许可协议
    CC BY-NC-SA 4.0
    \ No newline at end of file diff --git a/posts/deploy-gotosocial-in-fly.io/index.html b/posts/deploy-gotosocial-in-fly.io/index.html new file mode 100644 index 0000000..412a7dc --- /dev/null +++ b/posts/deploy-gotosocial-in-fly.io/index.html @@ -0,0 +1,52 @@ +在fly.io部署Gotosocial - 平淡生活
    490 字
    2 分钟
    在fly.io部署Gotosocial

    关于Gotosocial#

    GoToSocial 是一个十分轻量(轻量到甚至没有用户界面,需要使用第三方程序登录、兼容 Mastodon 应用进行使用)的 ActivityPub 联邦社交网络程序,自建 GoToSocial 可以避免您的信息因为所在实例倒闭、不可抗力等原因化为乌有。

    准备#

    • 注册 Fly.io 账号,并绑卡(避免滥用);
    • 注册 Cloudflare 并启用 R2,启用 R2 需要绑卡。新建一个储存桶并创建一个 API 令牌。

    安装 flyctl#

    • Linux
    curl -L https://fly.io/install.sh | sh
    +
    • macOS
    curl -L https://fly.io/install.sh | sh
    +
    • Windows,需要开启 RemoteSigned: 管理员运行
     Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
    +
    powershell -Command "iwr https://fly.io/install.ps1 -useb | iex"
    +

    登录#

    flyctl auth login
    +
    +# 若登录失败使用
    +# flyctl auth login -i 
    +# 输入账号密码进行登录
    +

    创建APP#

    YOURAPPNAME更改为自己希望设置的名称

    flyctl launch --name YOURAPPNAME --image=superseriousbusiness/gotosocial:latest --region hkg --no-deploy
    +

    创建储存卷#

    flyctl volumes create social_data --region hkg --size 1
    +

    编辑配置#

    编辑根目录下的 fly.toml 配置文件,参考下方

    app = "gotos" ## 自定义名称
    +primary_region = "hkg" ##服务器节点,当前为香港
    +
    +[experimental]
    +  vm = true
    +
    +[build]
    +  image = "superseriousbusiness/gotosocial:latest"
    +
    +[env]
    +  GTS_DB_ADDRESS = "/gotosocial/storage/sqlite.db"
    +  GTS_DB_TLS_MODE = "enable"
    +  GTS_DB_TYPE = "sqlite"
    +  GTS_HOST = "GTS的域名"
    +  GTS_LETSENCRYPT_ENABLED = "false"
    +  GTS_STORAGE_BACKEND = "s3"
    +  GTS_STORAGE_S3_BUCKET = "BUCKET名称"
    +  GTS_STORAGE_S3_ENDPOINT = "#S3 API"
    +  GTS_STORAGE_S3_ACCESS_KEY = "#api-tokens"
    +  GTS_STORAGE_S3_SECRET_KEY = "#api-tokens"
    +  GTS_STORAGE_S3_PROXY = "true"
    +  # 添加时区为UTC+8
    +  TZ = "Asia/Chongqing"
    +
    +[[mounts]]
    +  source = "social_data"
    +  destination = "/gotosocial/storage"
    +
    +[http_service]
    +  internal_port = 8080
    +  force_https = true
    +  auto_stop_machines = false
    +  auto_start_machines = true
    +  min_machines_running = 1
    +  processes = ["app"]
    +

    以上配置中GTS_STORAGE_S3_ENDPOINT不需要带https:和最后的/BUCKET名称

    部署#

    flyctl deploy
    +

    启动成功后会显示一个URL,能成功访问则代表部署成功。

    创建用户和管理员#

    fly.toml文件目录执行

    flyctl ssh console
    +
    • 创建用户
    /gotosocial/gotosocial admin account create --username YOUR_USERNAME --email YOUR@EMAIL.COM --password 'SOME_VERY_GOOD_PASSWD'
    +

    YOUR_USERNAME为用户名 YOUR@EMAIL.COM为邮箱 SOME_VERY_GOOD_PASSWD为密码,需设置足够复杂,太简单会提示密码不够安全,需重新设置

    • 设置管理员
    /gotosocial/gotosocial admin account promote --username YOUR_USERNAME
    +

    演示#

    https://m.ima.cm

    https://m.ima.cm/@jkjoy

    下载数据库#

    fly.toml文件目录执行

    flyctl sftp get /gotosocial/storage/sqlite.db
    +
    在fly.io部署Gotosocial
    https://blog.ittst.com/posts/deploy-gotosocial-in-fly.io/
    作者
    浪子
    发布于
    2023-08-17
    许可协议
    CC BY-NC-SA 4.0
    \ No newline at end of file diff --git a/posts/deploy-the-artalk-review-system-in-fly.io/index.html b/posts/deploy-the-artalk-review-system-in-fly.io/index.html new file mode 100644 index 0000000..610b5dc --- /dev/null +++ b/posts/deploy-the-artalk-review-system-in-fly.io/index.html @@ -0,0 +1,27 @@ +在fly.io部署artalk评论系统 - 平淡生活
    191 字
    1 分钟
    在fly.io部署artalk评论系统
    2023-08-15

    众所周知Fly.io是一个免费的SAAS平台 提供三个内存为256MB的服务器,总3G硬盘空间. 为防止滥用,需要绑定信用卡.

    准备#

    安装官方的命令行工具flyctl

    初始化#

    flyctl launch
    +

    根据提示创建一个app

    创建一个1G的硬盘#

    1G的硬盘用来储存评论数据绰绰有余了

    flyctl volumes create artalk_data --region hkg --size 1
    +

    编辑FLY.TOML#

    #根据自动生成的FLY.TOML文件修改
    +app = "atim"  
    +primary_region = "hkg"
    +
    +[build]
    +  image = "artalk/artalk-go"
    +
    +[http_service]
    +  internal_port = 23366
    +  force_https = true
    +  auto_stop_machines = true
    +  auto_start_machines = true
    +  min_machines_running = 0
    +  processes = ["app"]
    +
    +[[mounts]]
    +  source = "artalk_data"
    +  destination = "/data"
    +
    +[experimental]
    +  vm = true
    +

    在 fly.toml 文件目录执行#

    flyctl ssh console
    +

    创建一个管理员账号

    ./artalk admin
    +

    如需重启则执行

    flyctl apps restart
    +
    在fly.io部署artalk评论系统
    https://blog.ittst.com/posts/deploy-the-artalk-review-system-in-fly.io/
    作者
    浪子
    发布于
    2023-08-15
    许可协议
    CC BY-NC-SA 4.0
    \ No newline at end of file diff --git a/posts/docker-deploy-activity-relay-service/index.html b/posts/docker-deploy-activity-relay-service/index.html new file mode 100644 index 0000000..e9ecf75 --- /dev/null +++ b/posts/docker-deploy-activity-relay-service/index.html @@ -0,0 +1,79 @@ +Docker部署Activity-Relay服务 - 平淡生活
    250 字
    1 分钟
    Docker部署Activity-Relay服务
    2023-10-03
    • 经过测试国内部署会有无法通讯的问题.

    测试环境#

    centos7.9

    准备工作#

    • git
    • openssl
    • nginx
    • docker
    • docker-compose

    从仓库Pull a repository#

    git clone https://github.com/yukimochi/Activity-Relay.git -b v2.0.0
    +

    复制编辑config.yml#

    进入Activity-Relay目录

    cd Activity-Relay
    +cp config.yml.example config.yml
    +

    修改相关配置

    vim config.yml
    +

    生成actor RSA 证书 ./actor.pem#

    ubuntu使用

    openssl genrsa -traditional | tee actor.pem
    +

    centos使用

    openssl genrsa -out actor.pem 1024 | tee actor.pem
    +

    赋予权限600

    chmod 600 actor.pem
    +

    构建镜像与运行服务#

    docker-compose build
    +docker-compose up -d
    +

    查看容器运行状态#

    docker-compose ps
    +

    停止服务#

    docker-compose down
    +

    相关参考#

    docker-compose配置

    version: "2.3"
    +services:
    +  redis:
    +    restart: always
    +    image: redis:alpine
    +    healthcheck:
    +      test: ["CMD", "redis-cli", "ping"]
    +    volumes:
    +      - "./redisdata:/data"
    +
    +  worker:
    +    container_name: worker
    +    build: .
    +    image: yukimochi/activity-relay
    +    working_dir: /var/lib/relay
    +    restart: always
    +    init: true
    +    command: relay worker
    +    volumes:
    +      - "./actor.pem:/var/lib/relay/actor.pem"
    +      - "./config.yml:/var/lib/relay/config.yml"
    +    depends_on:
    +      - redis
    +
    +  server:
    +    container_name: relay
    +    build: .
    +    image: yukimochi/activity-relay
    +    working_dir: /var/lib/relay
    +    restart: always
    +    init: true
    +    ports:
    +      - "8080:8080"
    +    command: relay server
    +    volumes:
    +      - "./actor.pem:/var/lib/relay/actor.pem"
    +      - "./config.yml:/var/lib/relay/config.yml"
    +    depends_on:
    +      - redis
    +
    +

    Nginx设置

    upstream relay {
    +    server 127.0.0.1:8080;
    +  }
    +  server {
    +    server_name relay.example.com;
    +
    +    location / {
    +      root /var/lib/relay;
    +      try_files $uri $uri/index.html =404;
    +    }
    +
    +    location /inbox {
    +      rewrite ^/inbox(.*) /$1 break;
    +      proxy_pass http://relay/;
    +      proxy_pass_request_headers on;
    +      proxy_set_header Host $http_host;
    +    }
    +
    +    location /actor {
    +      rewrite ^/inbox(.*) /$1 break;
    +      proxy_pass http://relay/;
    +      proxy_pass_request_headers on;
    +      proxy_set_header Host $http_host;
    +    }
    +
    +  }
    +
    +
    Docker部署Activity-Relay服务
    https://blog.ittst.com/posts/docker-deploy-activity-relay-service/
    作者
    浪子
    发布于
    2023-10-03
    许可协议
    CC BY-NC-SA 4.0
    \ No newline at end of file diff --git a/posts/from-hexo-to-astro/index.html b/posts/from-hexo-to-astro/index.html new file mode 100644 index 0000000..21bd0dc --- /dev/null +++ b/posts/from-hexo-to-astro/index.html @@ -0,0 +1,5 @@ +从Hexo到Astro - 平淡生活
    413 字
    2 分钟
    从Hexo到Astro

    很多人在向Astro转移,咱也跟风一波. 主要是很喜欢fuwari的这个主题模板,曾经也移植到了Typecho平台.

    步骤#

    安装Astro#

    1. 从这个模板生成一个新的存储库或分叉这个存储库。 https://github.com/saicaca/fuwari/generate

    2. 要在本地编辑你的博客,克隆你的存储库,运行

    pnpm install
    +
    pnpm add sharp
    +

    安装依赖项。如果你没有安装pnpm 则执行

    npm install-g pnpm
    +
    1. 编辑配置文件src/config.ts以自定义你的博客。

    2. 创建一个新帖子 运行

    pnpm new-post <filename>
    +

    并在src/content/post/中进行编辑。

    1. 按照指南将你的博客部署到VercelNetlifyGitHub Pages等。

    部署前需要在astro.config.mjs中编辑站点配置。

    迁移#

    由于HEXOAstroFront-matter存在差异会导致无法正常生成页面 所以就利用deepseek写了个python的脚本用以实现以下功能

    1. 自动生成slug 利用谷歌翻译
    2. 自动更改文件名为文章名. 这个是历史遗留问题.从wordpress转过来时留下的.
    3. 自动更改datepublished.由于hexo的使用过程中有很多种譬如时间戳 譬如 YYYY-MM-DD这一种在HEXO下本来兼容的现在到了Astro下就都报错了.如果出现无法转换则使用默认日期.避免转换过程中出现中断.
    4. 更改categorytags

    https://gist.github.com/jkjoy/459deed2048a432f8147abde2a334082

    脚本 122 行posts_dir = '_posts'为hexo文章路径.

    把转换好的文章 复制进 src/content/post/ 下.

    上传#

    可以上传到VercelNetlifyGitHub Pages 这些都不赘述了.

    玩过Hexo基本都知道怎么操作了

    总结#

    AstroFront-matter太骚了.

    几乎每个模板的定义还不一样.

    从Hexo到Astro
    https://blog.ittst.com/posts/from-hexo-to-astro/
    作者
    浪子
    发布于
    2024-10-28
    许可协议
    CC BY-NC-SA 4.0
    \ No newline at end of file diff --git a/posts/how-to-deploy-memos-in-fly.io/index.html b/posts/how-to-deploy-memos-in-fly.io/index.html new file mode 100644 index 0000000..4da8876 --- /dev/null +++ b/posts/how-to-deploy-memos-in-fly.io/index.html @@ -0,0 +1,26 @@ +如何在Fly.io部署Memos - 平淡生活
    263 字
    1 分钟
    如何在Fly.io部署Memos
    2023-08-15

    项目#

    https://github.com/hu3rror/memos-on-fly

    准备工作#

    安装flyctl#

    Install flyctl 以WINDOWS为例

    pwsh -Command "iwr https://fly.io/install.ps1 -useb | iex"
    +

    其他系统请参照官方

    新建APP#

    初始化

    flyctl launch
    +

    按照提示选择会生成一个FLY.TOML文件

    编辑FLY.TOML#

    添加以下

    [build]
    +  image = "ghcr.io/hu3rror/memos-litestream:latest"
    +#如果不需要备份数据库则可以选择官方的docker镜像ghcr.io/usememos/memos:latest
    +#使用官方镜像可以删掉env的部分
    +[env]
    +  # Details see: https://litestream.io/guides/backblaze/
    +  LITESTREAM_REPLICA_BUCKET = "B2C桶名称"     # change to your litestream bucket name
    +  LITESTREAM_REPLICA_ENDPOINT = "s3.us-east-005.backblazeb2.com"     # change to your litestream endpoint url
    +  LITESTREAM_REPLICA_PATH = "memos_prod.db"     # keep the default or change to whatever path you want
    +
    +[[mounts]]
    +  source = "memos_data"
    +  destination = "/var/opt/memos"
    +
    +[http_service]
    +  internal_port = 5230
    +  force_https = true
    +  auto_stop_machines = false
    +  auto_start_machines = true
    +  min_machines_running = 0
    +

    添加持久卷#

    flyctl volumes create memos_data --region hkg --size 1
    +

    密钥#

    将B2存储的密钥添加到fly的密钥存储中,使用官方镜像可以忽略此步骤

    flyctl secrets set LITESTREAM_ACCESS_KEY_ID="<keyId>" LITESTREAM_SECRET_ACCESS_KEY="<applicationKey>"
    +

    部署#

    flyctl deploy
    +

    演示地址#

    https://memosim.fly.dev/ 绑定域名演示 https://imad.top

    如何在Fly.io部署Memos
    https://blog.ittst.com/posts/how-to-deploy-memos-in-fly.io/
    作者
    浪子
    发布于
    2023-08-15
    许可协议
    CC BY-NC-SA 4.0
    \ No newline at end of file diff --git a/posts/lede-soft-routing-installation-koolss-offline-plug--in-package-prompts-to-solve-illegal-keywords/index.html b/posts/lede-soft-routing-installation-koolss-offline-plug--in-package-prompts-to-solve-illegal-keywords/index.html new file mode 100644 index 0000000..4be9349 --- /dev/null +++ b/posts/lede-soft-routing-installation-koolss-offline-plug--in-package-prompts-to-solve-illegal-keywords/index.html @@ -0,0 +1,3 @@ +LEDE 软路由安装“koolss”离线插件包提示含非法关键字的解决方法 - 平淡生活
    30 字
    1 分钟
    LEDE 软路由安装“koolss”离线插件包提示含非法关键字的解决方法

    用SSH登录软路由

    ssh root@192.168.1.1
    +

    然后输入

    sed -i 's/\tdetect_package/\t# detect_package/g' /koolshare/scripts/ks_tar_install.sh
    +

    再安装科学上网插件即可

    koolss

    LEDE 软路由安装“koolss”离线插件包提示含非法关键字的解决方法
    https://blog.ittst.com/posts/lede-soft-routing-installation-koolss-offline-plug--in-package-prompts-to-solve-illegal-keywords/
    作者
    浪子
    发布于
    2024-10-10
    许可协议
    CC BY-NC-SA 4.0
    \ No newline at end of file diff --git a/posts/local-installation-package-command-under-linux/index.html b/posts/local-installation-package-command-under-linux/index.html new file mode 100644 index 0000000..25f9ad9 --- /dev/null +++ b/posts/local-installation-package-command-under-linux/index.html @@ -0,0 +1,3 @@ +Linux下本地安装包命令 - 平淡生活
    \ No newline at end of file diff --git a/posts/macos-and-windows-dual-systems-are-not-synchronized/index.html b/posts/macos-and-windows-dual-systems-are-not-synchronized/index.html new file mode 100644 index 0000000..c9a37bf --- /dev/null +++ b/posts/macos-and-windows-dual-systems-are-not-synchronized/index.html @@ -0,0 +1,2 @@ +macOS与Windows双系统时间不同步的解决办法 - 平淡生活
    \ No newline at end of file diff --git a/posts/mariadb-creates-databases,-users-and-authorization/index.html b/posts/mariadb-creates-databases,-users-and-authorization/index.html new file mode 100644 index 0000000..b044d6d --- /dev/null +++ b/posts/mariadb-creates-databases,-users-and-authorization/index.html @@ -0,0 +1,12 @@ +Mariadb创建数据库、用户及授权 - 平淡生活
    245 字
    1 分钟
    Mariadb创建数据库、用户及授权
    2023-10-06

    在测试SForum程序中使用到的部分关于数据库的操作

    安装Mariadb服务器#

    apt install mariadb-server-10.6
    +

    初始化数据库#

     mysql_secure_installation
    +

    连接数据库#

    mysql -u root -p 
    +

    创建数据库#

    CREATE DATABASE bbs;
    +

    创建一个本地访问数据库的账户#

    创建用户#

    CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
    +

    参数:#

    username:数据库访问的账户;localhost:数据库的访问方式,外网访问的时候用%替换localhost即可;password:数据库访问密码,此处输入密码明文;

    给测试账户分配权限#

    分配所有权限#

    给用户分配所有的权限,并且通过localhost访问

    GRANT ALL ON bbs.* to username@'localhost' IDENTIFIED BY 'password';
    +FLUSH privileges;
    +

    分配部分权限#

    给账户分配部分的权限,并且通过外网访问#

    GRANT insert,delete,select,update ON test.* to username@'%' IDENTIFIED BY 'password';
    +FLUSH privileges;
    +

    或则采用下面的代码,除了操作权限授权外,还赋予授权的权限。#

    GRANT ALL ON test.* to username@'%' IDENTIFIED BY 'passowrd' WITH GRANT OPTION;
    +FLUSH privileges;
    +
    Mariadb创建数据库、用户及授权
    https://blog.ittst.com/posts/mariadb-creates-databases,-users-and-authorization/
    作者
    浪子
    发布于
    2023-10-06
    许可协议
    CC BY-NC-SA 4.0
    \ No newline at end of file diff --git a/posts/nec-m700-black-apple-oc0.9.4-guide/index.html b/posts/nec-m700-black-apple-oc0.9.4-guide/index.html new file mode 100644 index 0000000..7431f17 --- /dev/null +++ b/posts/nec-m700-black-apple-oc0.9.4-guide/index.html @@ -0,0 +1 @@ +NEC M700黑苹果OC0.9.4引导 - 平淡生活
    106 字
    1 分钟
    NEC M700黑苹果OC0.9.4引导
    2023-10-01

    NEC M700黑苹果OC0.9.4引导#

    配置#

    CPU QHPW 2.2Ghz 四核心八线程I7es魔改 主板NEC 内存8GB DDR4 2666Mhz 硬盘512GB SSD 无线网卡BCM943224pcieBT拆机 有线网卡INTEL 声卡ALC235

    准备工作#

    U盘 16G以上 解锁CFG LOCK工具 ami BIOS提取工具 opencore OCAT

    解锁CFG LOCK#

    在WINDOWS系统下通过工具提取出BIOS. 通过UEFI TOOL打开提取出的BIOS文件,查找cfg lock

    NEC M700黑苹果OC0.9.4引导
    https://blog.ittst.com/posts/nec-m700-black-apple-oc0.9.4-guide/
    作者
    浪子
    发布于
    2023-10-01
    许可协议
    CC BY-NC-SA 4.0
    \ No newline at end of file diff --git a/posts/nec-vk22-black-apple-opencore-guide/index.html b/posts/nec-vk22-black-apple-opencore-guide/index.html new file mode 100644 index 0000000..830fb4d --- /dev/null +++ b/posts/nec-vk22-black-apple-opencore-guide/index.html @@ -0,0 +1 @@ +NEC VK22 黑苹果opencore引导 - 平淡生活
    192 字
    1 分钟
    NEC VK22 黑苹果opencore引导

    关于解锁#

    安装之前要解锁cfglock

    关于nvme固态的使用#

    思路就是用一个U盘格式化成FAT32格式

    把oc引导复制在U盘中。

    在BIOS中把U盘启动设为第一启动项

    这样做得好处是不用修改BIOS直接使用nvme的固态提升读写速度

    坏处就是占用一个USB口

    其他#

    笔记本黑苹果的难点就在于注入edid。

    我的做法是在clover下安装好macos之后再用hackintool注入EDID,然后再转为opencore引导。

    其他都很简单我就不多说了。

    附上EFI文件,三码自己改

    已驱动#

    显卡 声卡 网卡 (已更换DW1820A) 读卡器 USB 触摸板

    下载#

    请打赏后下载

    NEC VK22 黑苹果opencore引导
    https://blog.ittst.com/posts/nec-vk22-black-apple-opencore-guide/
    作者
    浪子
    发布于
    2021-10-10
    许可协议
    CC BY-NC-SA 4.0
    \ No newline at end of file diff --git a/posts/office2016-mac-version-download,-install,-crack-activation/index.html b/posts/office2016-mac-version-download,-install,-crack-activation/index.html new file mode 100644 index 0000000..3e45080 --- /dev/null +++ b/posts/office2016-mac-version-download,-install,-crack-activation/index.html @@ -0,0 +1 @@ +office2016 Mac 版本下载安装及破解激活 - 平淡生活
    \ No newline at end of file diff --git a/posts/quickly-deploy-misskey-instance/index.html b/posts/quickly-deploy-misskey-instance/index.html new file mode 100644 index 0000000..fcca8e9 --- /dev/null +++ b/posts/quickly-deploy-misskey-instance/index.html @@ -0,0 +1,47 @@ +快速部署misskey实例 - 平淡生活
    308 字
    2 分钟
    快速部署misskey实例
    2023-10-11

    使用官方推荐一键脚本#

    使用纯净的Ubuntu系统安装,推荐配置双核心四线程.

    更新软件#

    sudo apt update; sudo apt full-upgrade -y; sudo reboot
    +

    一键脚本#

    wget https://raw.githubusercontent.com/joinmisskey/bash-install/main/ubuntu.sh -O ubuntu.sh; sudo bash ubuntu.sh
    +

    按照提示输入内容

    更新misskey脚本#

    更新 Misskey 的脚本不会升级运行环境。 对于脚本的更新内容,另请参阅 “更新日志”

    wget https://raw.githubusercontent.com/joinmisskey/bash-install/main/update.ubuntu.sh -O update.sh
    +
    sudo bash update.sh
    +
    • 使用 systemd 的小伙伴, 添加 -r 可以更新并重启系统。
    • 使用 docker 的小伙伴, 可以特定软件包版本 repository来更新。

    使用docker compose部署#

    环境#

    • git
    • docker
    • nginx

    步骤#

    git克隆仓库#

    cd /opt
    +git clone -b master https://github.com/misskey-dev/misskey.git
    +cd misskey
    +git checkout master
    +

    复制配置文件:#

    cp .config/example.yml .config/default.yml
    +cp .config/docker_example.env .config/docker.env
    +cp docker-compose.yml.example docker-compose.yml
    +

    编辑default.yml中#

    url设置为实例域名 db:host设置为db redis:host设置为redis

    构建镜像#

    docker compose build
    +docker compose run --rm web yarn run init
    +

    完成之后

    启动容器#

    docker compose up -d
    +

    反向代理#

    参考以下

    map $http_upgrade $connection_upgrade {
    +    default upgrade;
    +    ''      close;
    +}
    +
    +proxy_cache_path /tmp/nginx_cache levels=1:2 keys_zone=cache1:16m max_size=1g inactive=720m use_temp_path=off;
    +
    +server {
    +    listen 80;
    +    listen [::]:80;
    +    server_name misskey.example.com;
    +    client_max_body_size 0;
    +
    +    location / {
    +        proxy_pass http://127.0.0.1:3000;
    +        proxy_set_header Host $host;
    +        proxy_http_version 1.1;
    +        proxy_redirect off;
    +
    +        proxy_set_header X-Real-IP $remote_addr;
    +        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    +        proxy_set_header X-Forwarded-Proto https;
    +
    +        proxy_set_header Upgrade $http_upgrade;
    +        proxy_set_header Connection $connection_upgrade;
    +
    +        proxy_cache cache1;
    +        proxy_cache_lock on;
    +        proxy_cache_use_stale updating;
    +        add_header X-Cache $upstream_cache_status;
    +    }
    +}
    +
    快速部署misskey实例
    https://blog.ittst.com/posts/quickly-deploy-misskey-instance/
    作者
    浪子
    发布于
    2023-10-11
    许可协议
    CC BY-NC-SA 4.0
    \ No newline at end of file diff --git a/posts/qv2ray-client-and-kernel-download/index.html b/posts/qv2ray-client-and-kernel-download/index.html new file mode 100644 index 0000000..7e591b5 --- /dev/null +++ b/posts/qv2ray-client-and-kernel-download/index.html @@ -0,0 +1 @@ +Qv2ray客户端及内核下载 - 平淡生活
    154 字
    1 分钟
    Qv2ray客户端及内核下载
    2023-04-07

    关于Qv2ray#

    在我们常用的PC系统上,比如Windows/Mac/Linux等系统平台,V2ray官方并没有发布图形化的桌面客户端。

    V2rayN和Qv2ray等一些第三方工具,在V2ray官方内核的基础上,为我们提供了图形化界面支持,使用起来会更加方便。

    其中Qv2ray除了支持V2ray的vmess协议外,还可以通过安装插件的方式,额外增加对SS/SSR/Trojan等代理协议的支持,可作为V2ray/SS/SSR/Trojan客户端使用。

    支持的协议#

    Vmess(V2ray) SS(Shadowsocks) SSR(ShadowsocksR) Trojan Trojan-go NaiveProxy Vless

    下载#

    客户端下载#

    https://github.com/Qv2ray/Qv2ray/releases

    内核下载#

    https://github.com/v2fly/v2ray-core/releases/tag/v4.31.0

    Qv2ray客户端及内核下载
    https://blog.ittst.com/posts/qv2ray-client-and-kernel-download/
    作者
    浪子
    发布于
    2023-04-07
    许可协议
    CC BY-NC-SA 4.0
    \ No newline at end of file diff --git a/posts/remember-to-restore-the-ssd-ssd-solid-state-(re--opening-the-card)/index.html b/posts/remember-to-restore-the-ssd-ssd-solid-state-(re--opening-the-card)/index.html new file mode 100644 index 0000000..a0911d3 --- /dev/null +++ b/posts/remember-to-restore-the-ssd-ssd-solid-state-(re--opening-the-card)/index.html @@ -0,0 +1 @@ +记一次亿储SSD固态掉盘修复(重新开卡) - 平淡生活
    378 字
    2 分钟
    记一次亿储SSD固态掉盘修复(重新开卡)

    老孙在闲鱼淘了一块二手的SSD,本来准备用来安装黑苹果使用。 刚开始安装挺顺利,安装的是OSX 12.13.6,分区格式APFS。 笔记本没有息屏就上班去了。 下班回来一看界面卡死。于是只有强行关机重启。 这下问题来了,识别不了硬盘了。 百度出的原因就是固态硬盘掉盘。是二三线固态厂商的通病。再次建议大家还是买大厂的产品。 有教程说30分钟拯救固态。试了一晚上不行。 看了第二种方法就是去开卡量产。 摸索了一晚上终于成功了!!!

    所需物料#


    硬盘盒(USB转接卡) 螺丝刀(拆硬盘用) 开卡软件(文章末尾下载) 1 首先把硬盘拆开 拆开硬盘发现主控是慧荣sm 2246XT(其实百度也可以百度到,如果是正品的话……) 103_2877224_9e544a870ce08b2.jpg 图是网上找的,主控型号一般会印在主控芯片上,也就是那个小的。 2 短接JP1,PCB上一般会有标注,如果和我的硬盘一样的话就短接最上面两个(懒 没有作图 网图) 3 接上硬盘盒 打开开卡软件sm2246XT_MPTool_O1224H 4 识别到port1之后 不用短接 QQ浏览器截图20190801131230.png 5 此时应该在Parameter里面选择一个合适的flash型号,直接开卡就会成功 103_2877224_bd107f5920c8e54.png

    参考教程链接

    http://www.upantool.com/jiaocheng/ssd/2017/10569.html http://bbs.mydigit.cn/read.php?tid=2367269

    开卡工具下载#

    sm2246XT_MPTool_O1224H.zip

    bg.jpg

    记一次亿储SSD固态掉盘修复(重新开卡)
    https://blog.ittst.com/posts/remember-to-restore-the-ssd-ssd-solid-state-(re--opening-the-card)/
    作者
    浪子
    发布于
    2019-08-01
    许可协议
    CC BY-NC-SA 4.0
    \ No newline at end of file diff --git a/posts/start-with-memos's-webhook/index.html b/posts/start-with-memos's-webhook/index.html new file mode 100644 index 0000000..0c05786 --- /dev/null +++ b/posts/start-with-memos's-webhook/index.html @@ -0,0 +1,77 @@ +从memos的webhook开始 - 平淡生活
    779 字
    4 分钟
    从memos的webhook开始
    2024-06-18

    说在前面#

    memos的webhook功能从v0.18 版本开始加入. webhook也为memos带来了不一样的玩法.

    前段时间从Typecho主题icefox上直接CTRL+C了CSS布局,做了一个基于memos的单页面,类微信朋友圈.

    然后使用webhook自动保存json到本地目录,快速加载. 解决跨域问题

    获取memos.json#

    使用bash#

    创建一个memos.sh文件

    #!/bin/bash
    +
    +# API地址
    +API_URL="https://memos.ee/api/v1/memos"
    +
    +# 过滤参数
    +FILTER="visibilities == ['PUBLIC'] && creator == 'users/1'" 
    +PAGE_SIZE="200"
    +
    +# Authorization 头部
    +AUTH_HEADER="Bearer token"
    +
    +# 目标文件
    +OUTPUT_FILE="/config/memos.json"
    +
    +# 使用 curl 发送 GET 请求并将结果保存到文件
    +curl -G "${API_URL}" \
    +     --data-urlencode "filter=${FILTER}" \
    +     --data-urlencode "pageSize=${PAGE_SIZE}" \
    +     -H "Authorization: ${AUTH_HEADER}" \
    +     -H "Accept: application/json" \
    +     -o "${OUTPUT_FILE}"
    +
    +# 检查是否成功
    +if [ $? -eq 0 ]; then
    +    echo "JSON 数据已成功保存到 ${OUTPUT_FILE}"
    +else
    +    echo "获取 JSON 数据失败"
    +fi
    +

    这个脚本用于获取最近200条的memos

    自行更改以上的API_URL token 以及过滤参数

    当然我们也可以 使用php获取json 或者使用宝塔webhook获取json 这样就不需要部署webhook镜像 可以跳过以下部署webhook镜像的部分

    使用宝塔webhook#

    可直接复制bash代码到宝塔的webhook中 968b29c66c6099d11acf6.png

    其中目标位置OUTPUT_FILE需要使用绝对路径

    点击查看密钥

    宝塔WebHook使用方法: GET/POST: https://ip:18888/hook?access_key=9EkgLRL4NbZOC7TSfiIyCE3rUQo3yEYfu7XPW6BX3Qjuobwt&param=aaa

    把以上链接填入memos的webhook中

    使用php获取#

    <?php
    +$url = 'https://memos.ee/api/v1/memos'; //api url
    +$filter = "visibilities == ['PUBLIC'] && creator == 'users/1'"; //筛选参数visibilities == ['PUBLIC']公开,creator == 'users/1' 用户UID为1
    +$pageSize = "200"; //memos数量
    +$authHeader = "Bearer token"; //token
    +
    +$ch = curl_init();
    +
    +curl_setopt($ch, CURLOPT_URL, $url);
    +curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    +curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    +    'Content-Type: application/json',
    +    'Authorization: ' . $authHeader,
    +    'filter: ' . $filter,
    +    'pageSize: ' . $pageSize
    +));
    +
    +$response = curl_exec($ch);
    +
    +curl_close($ch);
    +
    +$data = json_decode($response, true);
    +
    +if (json_last_error() === JSON_ERROR_NONE) {
    +    file_put_contents('memos.json', json_encode($data, JSON_PRETTY_PRINT)); //保存为memos.json
    +} else {
    +    echo 'The response is not a valid JSON string.';
    +}
    +?>
    +

    把以上保存为memos.php,放在可执行的网站目录中

    访问地址即可在同级目录下生成memos.json的文件

    使用webhook功能#

    部署webhook镜像#

    此处使用一个webhook的DOCKER镜像

    此Docker镜像是我根据官方dockerfile增加了中文支持编译而成. 推荐使用docker-compose部署 编辑docker-compose.yaml内容为

    services:
    +  webhook:
    +    image: jkjoy/webhook
    +    container_name: webhook
    +    command: -verbose -hooks=hooks.yml -hotreload
    +    environment:
    +      - TZ=Asia/Chongqing #中国时区
    +      - LANG=C.UTF-8  #中文支持
    +    volumes:
    +      - ./:/config:rw
    +    ports:
    +      - 9000:9000
    +    restart: always
    +

    创建hooks.yml文件并编辑内容为

    - id: memos
    +  execute-command: "/config/memos.sh"
    +  command-working-directory: "/"
    +

    然后运行

    docker compose up -d
    +

    即可

    使用Webhook#

    hooks.yaml为webhook的配置文件

    其中的execute-command为容器中的可执行脚本目录 webhook的访问地址格式为 服务器 ip:端口/hooks/id 访问http://127.0.0.1:9000/hooks/memos 即可触发执行bash /config/memos.sh

    在memos的webhook设置中填入http://127.0.0.1:9000/hooks/memos的webhook地址, 即可

    以宝塔为例#

    创建一个名为 api.domain.com的网站 在网站的根目录下创建 docker-compose.yaml hooks.yaml memos.sh 的文件 运行

    docker compose up -d
    +

    创建一个反向代理 使 127.0.0.1:9000 代理到 api.domain.com 的 /webhook/ 目录 访问api.domain.com/webhook/hooks/memos 此时会在网站根目录下生成memos.json 访问api.domain.com/memos.json 此时在memos的webhook地址中填入api.domain.com/webhook/hooks/memos 实现在memos更新时自动更新memos.json文件

    演示#

    https://memos.jkjoy.cn

    从memos的webhook开始
    https://blog.ittst.com/posts/start-with-memos's-webhook/
    作者
    浪子
    发布于
    2024-06-18
    许可协议
    CC BY-NC-SA 4.0
    \ No newline at end of file diff --git a/posts/test-various-problems-encountered-in-xiuno2sforum/index.html b/posts/test-various-problems-encountered-in-xiuno2sforum/index.html new file mode 100644 index 0000000..3cd125e --- /dev/null +++ b/posts/test-various-problems-encountered-in-xiuno2sforum/index.html @@ -0,0 +1,43 @@ +测试xiuno2Sforum中遇到的各种问题 - 平淡生活
    392 字
    2 分钟
    测试xiuno2Sforum中遇到的各种问题
    2023-10-06

    想把xiunobbs数据转换成SForum,由于最新版本的SForum没有转换工具支持 于是采用Sforum v2.2.2测试

    测试环境#

    • Ubuntu 22.0.4
    • php8.0
    • mariadb10.6
    • composer
    • redis
    • nginx or apache

    测试程序#

    sforum v2.2.2

    xiuno2sforum v2.2.2

    PHP#

    安装PPA 源#

    需要使用 PPA 源安装:

    sudo apt install software-properties-common -y
    +sudo add-apt-repository ppa:ondrej/php
    +sudo apt-get update
    +

    安装php8.0#

    apt install php8.0
    +
    apt install -y php8.0-dev
    +

    安装拓展#

    apt install php8.0-curl php8.0-xml php8.0-gd php8.0-mbstring php8.0-redis php8.0-swoole php8.0-bcmath php-intl -y
    +

    查看php版本#

    php -v
    +

    查看拓展

    php -m
    +

    切换PHP版本#

    update-alternatives --config php
    +

    切换到

    update-alternatives --set php /usr/bin/php8.0
    +

    PHP 扩展 ZipArchive#

    上传压缩包提示500错误,打开日志发现是缺少组件

    服务器上存在多个php版本,手动指定php-config文件#

    ./configure --with-php-config=/www/server/php/73/bin/php-config
    +

    安装ZipArchive扩展#

    编译ZipArchive#
    cd ~
    +wget http://pecl.php.net/get/zip
    +tar -zxvf zip
    +cd zip-x.x.x
    +phpize
    +./configure
    +make
    +make install
    +

    成功安装zip之后会返回一个路径:#

    类似

    Installing shared extensions:     /www/server/php/8/lib/php/extensions/no-debug-non-zts-20180731/
    +

    加到php.ini中:#

    extension=/www/server/php/8/lib/php/extensions/no-debug-non-zts-20180731/zip.so
    +

    或 在php.ini中添加

     extension=zip.so
    +

    提示checking for libzip... not found#

    编译libzip#
    wget https://libzip.org/download/libzip-1.3.2.tar.gz
    +tar xvf libzip-1.3.2.tar.gz
    +cd libzip-1.3.2
    +./configure
    +make
    +make install
    +export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig/" 
    +

    在使用插件转换数据中一直报错无法使用的class medoo#

    所以使用cpmposer安装

    composer require catfan/Medoo
    +

    mariadb#

    创建数据库#

    Mariadb创建数据库、用户及授权

    数据导入#

    导入sql备份文件

    进入数据库

    mysql -uroot -p
    +

    使用数据库bbs

    use bbs
    +

    导入sql路径

    source /root/bbs.sql;
    +

    安装 Redis#

    apt install redis-server
    +

    安装 Nginx#

    apt install nginx
    +

    安装composer#

    apt install git zip unzip
    +curl -sS https://getcomposer.org/installer | php
    +mv composer.phar /usr/local/bin/composer
    +chmod +x /usr/local/bin/composer
    +

    安装SForum v2.2.2#

    composer create-project zhuchunshu/sforum=v2.2.2 sforum
    +

    进入安装目录,

    cd sforum
    +

    按照提示,连续执行命令即可完成安装(启动服务也是此命令):

    php CodeFec CodeFec
    +
    测试xiuno2Sforum中遇到的各种问题
    https://blog.ittst.com/posts/test-various-problems-encountered-in-xiuno2sforum/
    作者
    浪子
    发布于
    2023-10-06
    许可协议
    CC BY-NC-SA 4.0
    \ No newline at end of file diff --git a/posts/the-solution-of-the-cantos7-ssh-connection-is-slow/index.html b/posts/the-solution-of-the-cantos7-ssh-connection-is-slow/index.html new file mode 100644 index 0000000..e2c9f78 --- /dev/null +++ b/posts/the-solution-of-the-cantos7-ssh-connection-is-slow/index.html @@ -0,0 +1,3 @@ +centos7 ssh连接慢的解决方法 - 平淡生活
    \ No newline at end of file diff --git a/posts/there-is-no-network-after-installs7-installation/index.html b/posts/there-is-no-network-after-installs7-installation/index.html new file mode 100644 index 0000000..4c56a81 --- /dev/null +++ b/posts/there-is-no-network-after-installs7-installation/index.html @@ -0,0 +1,2 @@ +centos7安装后没有网络 - 平淡生活
    \ No newline at end of file diff --git a/posts/typecho-plug--in-commentsbyqq-modified-version/index.html b/posts/typecho-plug--in-commentsbyqq-modified-version/index.html new file mode 100644 index 0000000..903cc97 --- /dev/null +++ b/posts/typecho-plug--in-commentsbyqq-modified-version/index.html @@ -0,0 +1 @@ +Typecho插件CommentsByQQ修改版 - 平淡生活
    113 字
    1 分钟
    Typecho插件CommentsByQQ修改版

    简介#

    基于Typecho插件CommentsByQQ修改 一直想让qq来通知评论消息。毕竟邮箱之类的还是不太方便。 原作者的插件QQ机器人已经挂了。所以我自己搭建了一个基于go-http的QQ机器人 由于本人也是菜鸟,没有后续

    使用#

    添加qq机器人153985848为好友 在后台设置中填写接收消息的qq号即可

    下载地址#

    CommentsByQQ.zip

    Typecho插件CommentsByQQ修改版
    https://blog.ittst.com/posts/typecho-plug--in-commentsbyqq-modified-version/
    作者
    浪子
    发布于
    2022-09-19
    许可协议
    CC BY-NC-SA 4.0
    \ No newline at end of file diff --git a/posts/use-docker-to-build-a-pleroma-example/index.html b/posts/use-docker-to-build-a-pleroma-example/index.html new file mode 100644 index 0000000..ae26e83 --- /dev/null +++ b/posts/use-docker-to-build-a-pleroma-example/index.html @@ -0,0 +1,30 @@ +使用 Docker 构建 Pleroma 实例 - 平淡生活
    459 字
    2 分钟
    使用 Docker 构建 Pleroma 实例

    Pleroma 是一个去中心化的社区程序,其基于 ActivityPub 协议。 而 ActivityPub 包括 Mastodon(Pawoo 等)、Misskey(misskey.io 等)、Pleroma 等等。 在这些开源产品中,Pleroma 实机上部署环境步骤复杂繁琐。 但它是对服务器性能要求最低的微博客工具,它的配置要求多低呢? 现在 docker 的出现大大简化了部署的方式,只需要简单三步即可轻松搭建实例。

    本文将介绍如何使用 docker 构建 Pleroma 实例。 以宝塔面板为例

    先安装docker#

    在应用商店中查找docker并安装

    获取 docker-compose.yml 模板#

    git clone https://git.pleroma.social/pleroma/pleroma-docker-compose.git
    +cd pleroma-docker-compose 
    +

    接下来所有操作(除 nginx 配置)如果没有加以说明都在这个目录下进行。

    需要修改的内容#

    打开./enviroments/pleroma/pleroma.env,修改其中的配置:

    DB_USER=pleroma # 数据库用户名
    +DB_PASS=pleroma # 数据库密码
    +DB_HOST=pleroma-db # 数据库地址
    +DB_NAME=pleroma # 数据库名
    +INSTANCE_NAME=Pleroma # 实例名
    +ADMIN_EMAIL=admin@ops.pleroma.social # 管理员邮箱
    +NOTIFY_EMAIL=pleroma+admin@ops.pleroma.social # 通知邮箱
    +DOMAIN=s.pwq.app # 实例域名
    +PORT=4000 # 实例运行端口
    +

    只需要修改域名和邮箱即可 打开./volumes/pleroma/config.exs 在下面添加

    import Config
    +config :pleroma, configurable_from_database: true
    +

    启动容器#

    随后运行

    docker-compose up -d
    +

    启动容器。

    添加反向代理#

    #PROXY-START/
    +
    +location ^~ /
    +{
    +    # 4000 是你的实例容器运行端口,如果你修改过,记得改成你的端口。
    +    proxy_pass http://127.0.0.1:4000;
    +    proxy_set_header Host $host;
    +    proxy_set_header X-Real-IP $remote_addr;
    +    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    +    proxy_set_header REMOTE-HOST $remote_addr;
    +    proxy_set_header Upgrade $http_upgrade;
    +    proxy_set_header Connection $connection_upgrade;
    +    # proxy_hide_header Upgrade;
    +}
    +

    创建管理员账户#

    docker exec -it pleroma ./opt/pleroma/bin/pleroma_ctl user new admin 邮箱 --admin
    +

    运行后会出现一个链接,复制在浏览器即可重置密码.

    修改文件夹权限#

    /root/pleroma-docker-compose/volumes/pleroma下的uploads权限设置为777 当然如果你用S3协议的对象存储则不需要修改 直接在后台设置S3即可.

    演示地址#

    https://chaihu.top

    使用 Docker 构建 Pleroma 实例
    https://blog.ittst.com/posts/use-docker-to-build-a-pleroma-example/
    作者
    浪子
    发布于
    2023-07-24
    许可协议
    CC BY-NC-SA 4.0
    \ No newline at end of file diff --git a/posts/use-docker-to-quickly-deploy-a-memos-qq-robot/index.html b/posts/use-docker-to-quickly-deploy-a-memos-qq-robot/index.html new file mode 100644 index 0000000..d451865 --- /dev/null +++ b/posts/use-docker-to-quickly-deploy-a-memos-qq-robot/index.html @@ -0,0 +1,31 @@ +使用Docker快速部署一个memos的QQ机器人 - 平淡生活
    500 字
    3 分钟
    使用Docker快速部署一个memos的QQ机器人

    前言:本文介绍了如何使用Docker快速部署一个QQ机器人,并通过对接Nonebot实现Memos机器人的功能。

    准备工作#

    1. 安装Docker
    2. 一个QQ账号
    3. 一个Memos账号

    部署#

    memos机器人#

    此处使用Nonebot2作为框架,自己撸的Nonebot2的插件nonebot_plugin_memos对接Memos机器人。

    我打包编译的镜像jkjoy/qq2memos:latest

    如需源码参考 https://www.imsun.org/archives/1668.html

    首先创建一个docker-compose.yml文件,内容如下:

    services:
    +  memos:
    +    container_name: memos
    +    environment:
    +      - MEMOS_API=https://memos.imsun.org/api/v1/memo #Memos的API地址,自行修改
    +    image: jkjoy/qq2memos:latest  
    +    volumes:  
    +      - "./data:/app/data"  
    +    restart: always
    +    ports:
    +      - 8080:8080
    +

    ** 此处的MEMOS_API支持memos v0.15.0以上使用token认证的版本,端口地址根据版本情况自行更改 ** 例如 v0.18.1版本 使用/api/v1/memo v0.20.0版本以上使用/api/v1/memos

    然后运行

    docker-compose up -d
    +

    端口根据情况自行更改,在填写WS地址时,请使用此处设置的端口

    部署QQ机器人#

    此处以docker-compose的方式部署,其他方法自行搜索。

    首先创建一个docker-compose.yml文件,内容如下:

    services:
    +  napcat:
    +    environment:
    +      - ACCOUNT=10000 #QQ机器人号码,自行修改
    +      - WS_ENABLE=true
    +      - NAPCAT_UID=0
    +      - NAPCAT_GID=0
    +    ports:
    +      - 3001:3001 
    +      - 6099:6099
    +      - 3000:3000
    +    restart: always
    +    image: mlikiowa/napcat-docker:latest
    +    volumes:
    +      - "./QQ:/app/.config/QQ"
    +      - "./config:/app/napcat/config"
    +    network_mode: host #使用host的原因是为了方便对接宿主机的nonebot框架
    +

    然后运行docker-compose up -d即可。

    访问WEBUI地址 http://ip:6099/webui/login.html

    登录所使用的tokendocker-compose.yaml 所在目录下的config中的webui.json

    可选择扫码登录

    在设置页面中添加反向 WS 地址,地址为

    ws://127.0.0.1:8080/onebot/v11/ws
    +

    这里的 8080 是 NoneBot 输出的端口号,根据情况自行更改

    /onebot/v11/ws 是 NoneBot onebot 适配器默认的路径

    点击保存,容器日志提示通讯成功即可.

    使用机器人#

    在聊天对话框输入任何内容会提示绑定

    按照提示进行绑定即可

    在绑定成功后,在聊天对话框输入任何内容都会转发到Memos 且 默认为公开内容.

    暂不支持发送图片等其他内容.

    使用Docker快速部署一个memos的QQ机器人
    https://blog.ittst.com/posts/use-docker-to-quickly-deploy-a-memos-qq-robot/
    作者
    浪子
    发布于
    2024-09-13
    许可协议
    CC BY-NC-SA 4.0
    \ No newline at end of file diff --git a/posts/use-docker-to-quickly-deploy-mastodon-instances/index.html b/posts/use-docker-to-quickly-deploy-mastodon-instances/index.html new file mode 100644 index 0000000..0feb2fd --- /dev/null +++ b/posts/use-docker-to-quickly-deploy-mastodon-instances/index.html @@ -0,0 +1,19 @@ +使用Docker快速部署mastodon实例 - 平淡生活
    272 字
    1 分钟
    使用Docker快速部署mastodon实例
    2023-10-30

    如何使用Docker快速部署mastodon实例#

    直接使用docker compose部署是不可行的,需要按照步骤进行

    创建目录#

    mkdir -p /home/mastodon/mastodon
    +

    进入目录#

    cd /home/mastodon/mastodon
    +

    拉取镜像#

    docker pull ghcr.io/mastodon/mastodon
    +

    修改docker compose配置文件#

    wget https://raw.githubusercontent.com/mastodon/mastodon/main/docker-compose.yml
    +

    修改docker compose文件中的版本号

    初始化PostgreSQL#

    • 重要!!!!!
    docker run --name postgres14 -v /home/mastodon/mastodon/postgres14:/var/lib/postgresql/data -e   POSTGRES_PASSWORD=设置数据库管理员密码 --rm -d postgres:14-alpine
    +

    进入数据库

    docker exec -it postgres14 psql -U postgres
    +

    创建用户名mastodon的密码

    CREATE USER mastodon WITH PASSWORD '数据库密码(最好和数据库管理员密码不一样)' CREATEDB;
    +

    停止docker

    docker stop postgres14
    +

    配置Mastodon#

    /home/mastodon/mastodon根文件夹中创建空白.env.production文件

    cd /home/mastodon/mastodon
    +touch .env.production
    +

    运行引导

    docker-compose run --rm web bundle exec rake mastodon:setup
    +

    按照提示进行操作 Below is your configuration, save it to an .env.production file outside Docker:之后会出现配置文件的数据,复制下来 写入.env.production

    启动Mastodon

    docker-compose down
    +docker-compose up -d
    +

    文件夹赋权

    chown 991:991 -R ./public
    +chown -R 70:70 ./postgres14
    +docker-compose down
    +docker-compose up -d
    +

    创建管理员

    docker exec mastodon-web-1 tootctl accounts create USERNAME --email EMAIL --confirmed --role Owner
    +

    至此完成

    使用Docker快速部署mastodon实例
    https://blog.ittst.com/posts/use-docker-to-quickly-deploy-mastodon-instances/
    作者
    浪子
    发布于
    2023-10-30
    许可协议
    CC BY-NC-SA 4.0
    \ No newline at end of file diff --git a/posts/use-github-actions-to-automatically-deploy-hexo-blog/index.html b/posts/use-github-actions-to-automatically-deploy-hexo-blog/index.html new file mode 100644 index 0000000..70debb5 --- /dev/null +++ b/posts/use-github-actions-to-automatically-deploy-hexo-blog/index.html @@ -0,0 +1,57 @@ +利用 Github Actions 自动部署 Hexo 博客 - 平淡生活
    331 字
    2 分钟
    利用 Github Actions 自动部署 Hexo 博客

    Github Actions 简介#

    Github Actions 可以很方便实现 CI/CD 工作流,类似 Travis 的用法,来帮我们完成一些工作,比如实现自动化测试、打包、部署等操作。当我们运行 Jobs 时,它会创建一个容器 (runner),容器支持:Ubuntu、Windows 和 MacOS 等系统,在容器中我们可以安装软件,利用安装的软件帮我们处理一些数据,然后把处理好的数据推送到某个地方。

    前提#

    1.您已经创建了hexo博客 2.您已经注册了github的账户 3.您已经创建了github项目并上传了hexo源码

    创建#

    在项目根目录下创建.github/workflows/main.yml

    1.点击此处申请 Personal access tokens (classic)

    2.在Settings-secrets and variables-Actions下设置HEXOBLOG为上一步得到的Personal access tokens

    1.png

    3.可以把以下内容粘贴进去

    run-name: Deploy 
    + 
    +on: 
    +  push:
    +    branches:
    +      - main 
    +  
    +  release:
    +    types:
    +      - published 
    + 
    +  workflow_dispatch: 
    + 
    +jobs:
    +  build:
    +    runs-on: ubuntu-latest
    + 
    +    steps:
    +    - name: Checkout 
    +      uses: actions/checkout@v2
    +      with:
    +        ref: main
    + 
    +    - name: Setup Node 
    +      uses: actions/setup-node@v1
    +      with:
    +        node-version: "18.x"
    + 
    +    - name: Install Hexo 
    +      run: |
    +        npm install hexo-cli -g
    +
    +    - name: Cache Modules 
    +      uses: actions/cache@v1
    +      id: cache-modules
    +      with:
    +        path: node_modules
    +        key: ${{runner.OS}}-${{hashFiles('**/package-lock.json')}}
    +        
    +    - name: npm Install
    +      run: | 
    +        npm install    
    +        
    +    - name: Generate 
    +      run: |
    +        hexo clean
    +        hexo generate
    +        hexo deploy
    +        
    +    - name: Deploy 
    +      uses: peaceiris/actions-gh-pages@v3
    +      with: 
    +        personal_token: ${{ secrets.hexoblog }} 
    +        PUBLISH_BRANCH: gh-pages 
    +        PUBLISH_DIR: ./public 
    +        commit_message: ${{ github.event.head_commit.message }}
    +

    实现的功能#

    在hexo项目main分支有更新时,会自动更新仓库下分支gh-pages

    利用 Github Actions 自动部署 Hexo 博客
    https://blog.ittst.com/posts/use-github-actions-to-automatically-deploy-hexo-blog/
    作者
    浪子
    发布于
    2024-05-08
    许可协议
    CC BY-NC-SA 4.0
    \ No newline at end of file diff --git a/posts/use-memos-api-to-implement-the-dynamic-page-of-the-hexo-blog/index.html b/posts/use-memos-api-to-implement-the-dynamic-page-of-the-hexo-blog/index.html new file mode 100644 index 0000000..cd27bff --- /dev/null +++ b/posts/use-memos-api-to-implement-the-dynamic-page-of-the-hexo-blog/index.html @@ -0,0 +1,24 @@ +用Memos API实现hexo博客的动态说说页面 - 平淡生活
    121 字
    1 分钟
    用Memos API实现hexo博客的动态说说页面
    2023-06-13

    新建一个页面

    hexo new page Memos
    +

    修改Memos/index.md内容为

    ---
    +title: Memos
    +comments: false
    +date: 2023-06-07 14:17:13
    +---
    +<link href="https://blogcdn.loliko.cn/memos/css/memo.css?0.0.5" rel="stylesheet" />
    +<div id="bber"></div>
    +<script type="module" src="https://immmmm.com/emaction.js?v=230811"></script>
    +<script src="https://fastly.jsdelivr.net/npm/marked/marked.min.js"></script>
    +<script src="https://fastly.jsdelivr.net/gh/Tokinx/ViewImage/view-image.min.js"></script>
    +<script src="https://fastly.jsdelivr.net/gh/Tokinx/Lately/lately.min.js"></script>
    +<script src="https://cdn.staticfile.org/twikoo/1.6.32/twikoo.all.min.js"></script>
    +<script type="text/javascript">
    +  var bbMemos = {
    +    memos : 'https://memos.loliko.cn/',//修改为自己部署 Memos 的网址,末尾有 / 斜杠
    +    limit : '20',//默认每次显示 10 条
    +    creatorId:'1' ,//早期默认为 101 用户,新安装是 1; https://demo.usememos.com/u/101
    +    domId: '',//默认为 bber
    +    twiEnv:'https://t.loliko.cn',//启开 twikoo 评论,默认 https://metk.edui.fun/
    +  }
    +</script>
    +<script src="https://blogcdn.loliko.cn/memos/js/memo.js?0.0.2"></script>
    +

    即可~

    代码来源于网络~

    用Memos API实现hexo博客的动态说说页面
    https://blog.ittst.com/posts/use-memos-api-to-implement-the-dynamic-page-of-the-hexo-blog/
    作者
    浪子
    发布于
    2023-06-13
    许可协议
    CC BY-NC-SA 4.0
    \ No newline at end of file diff --git a/posts/vi-editor's-basic-usage-method/index.html b/posts/vi-editor's-basic-usage-method/index.html new file mode 100644 index 0000000..64034e7 --- /dev/null +++ b/posts/vi-editor's-basic-usage-method/index.html @@ -0,0 +1 @@ +Vi编辑器的基本使用方法 - 平淡生活
    2295 字
    11 分钟
    Vi编辑器的基本使用方法
    2016-11-16

    vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令。 由于对Unix及Linux系统的任何版本,vi编辑器是完全相同的,因此您可以在其他任何介绍vi的地方进一步了解它。 Vi也是Linux中最基本的文本编辑器,学会它后,您将在Linux的世界里畅行无阻。

    1、vi的基本概念

    基本上vi可以分为三种状态,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:

    1. 命令行模式command mode)

    控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。

    1. 插入模式(Insert mode)

    只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。

    1. 底行模式(last line mode)

    将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等。 不过一般我们在使用时把vi简化成两个模式,就是将底行模式(last line mode)也算入命令行模式command mode)。

    2、vi的基本操作

    a) 进入vi 在系统提示符号输入vi及文件名称后,就进入vi全屏幕编辑画面: $ vi myfile 不过有一点要特别注意,就是您进入vi之后,是处于「命令行模式(command mode)」,您要切换到「插入模式(Insert mode)」才能够输入文字。初次使用vi的人都会想先用上下左右键移动光标,结果电脑一直哔哔叫,把自己气个半死,所以进入vi后,先不要乱动,转换到「插入模式(Insert mode)」再说吧!

    b) 切换至插入模式(Insert mode)编辑文件 在「命令行模式(command mode)」下按一下字母「i」就可以进入「插入模式(Insert mode)」,这时候你就可以开始输入文字了。

    c) Insert 的切换 您目前处于「插入模式(Insert mode)」,您就只能一直输入文字,如果您发现输错了字!想用光标键往回移动,将该字删除,就要先按一下「ESC」键转到「命令行模式(command mode)」再删除文字。

    d) 退出vi及保存文件

    在「命令行模式(command mode)」下,按一下「:」冒号键进入「Last line mode」,例如:

    w filename (输入 「w filename」将文章以指定的文件名filename保存)

    wq (输入「wq」,存盘并退出vi)

    q! (输入q!, 不存盘强制退出vi)

    3、命令行模式(command mode)功能键

    1). 插入模式 按「i」切换进入插入模式「insert mode」,按“i”进入插入模式后是从光标当前位置开始输入文件; 按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字; 按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。

    2). 从插入模式切换为命令行模式 按「ESC」键。

    3). 移动光标 vi可以直接用键盘上的光标来上下左右移动,但正规的vi是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格。 按「ctrl」+「b」:屏幕往“后”移动一页。 按「ctrl」+「f」:屏幕往“前”移动一页。 按「ctrl」+「u」:屏幕往“后”移动半页。 按「ctrl」+「d」:屏幕往“前”移动半页。 按数字「0」:移到文章的开头。 按「G」:移动到文章的最后。 按「$」:移动到光标所在行的“行尾”。 按「^」:移动到光标所在行的“行首” 按「w」:光标跳到下个字的开头 按「e」:光标跳到下个字的字尾 按「b」:光标回到上个字的开头 按「#l」:光标移到该行的第#个位置,如:5l,56l。

    4). 删除文字 「x」:每按一次,删除光标所在位置的“后面”一个字符。 「#x」:例如,「6x」表示删除光标所在位置的“后面”6个字符。 「X」:大写的X,每按一次,删除光标所在位置的“前面”一个字符。 「#X」:例如,「20X」表示删除光标所在位置的“前面”20个字符。 「dd」:删除光标所在行。 「#dd」:从光标所在行开始删除#行

    5). 复制 「yw」:将光标所在之处到字尾的字符复制到缓冲区中。 「#yw」:复制#个字到缓冲区 「yy」:复制光标所在行到缓冲区。 「#yy」:例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。 「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。

    6). 替换 「r」:替换光标所在处的字符。 「R」:替换光标所到之处的字符,直到按下「ESC」键为止。

    7). 回复上一次操作 「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行多次回复。

    8). 更改 「cw」:更改光标所在处的字到字尾处 「c#w」:例如,「c3w」表示更改3个字 9). 跳至指定的行 「ctrl」+「g」列出光标所在行的行号。 「#G」:例如,「15G」,表示移动光标至文章的第15行行首。

    4、Last line mode下命令简介 在使用「last line mode」之前,请记住先按「ESC」键确定您已经处于「command mode」下后,再按「:」冒号即可进入「last line mode」。

    A) 列出行号 「set nu」:输入「set nu」后,会在文件中的每一行前面列出行号。

    B) 跳到文件中的某一行 「#」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行。

    C) 查找字符 「/关键字」:先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往后寻找到您要的关键字为止。 「?关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往前寻找到您要的关键字为止。

    D) 保存文件 「w」:在冒号输入字母「w」就可以将文件保存起来。

    E) 离开vi 「q」:按「q」就是退出,如果无法离开vi,可以在「q」后跟一个「!」强制离开vi。 「qw」:一般建议离开时,搭配「w」一起使用,这样在退出的时候还可以保存文件。

    5、vi命令列表

    1、下表列出命令模式下的一些键的功能: h 左移光标一个字符 l 右移光标一个字符 k 光标上移一行 j 光标下移一行 ^ 光标移动至行首 0 数字“0”,光标移至文章的开头 G 光标移至文章的最后 $ 光标移动至行尾 Ctrl+f 向前翻屏 Ctrl+b 向后翻屏 Ctrl+d 向前翻半屏 Ctrl+u 向后翻半屏 i 在光标位置前插入字符 a 在光标所在位置的后一个字符开始增加 o 插入新的一行,从行首开始输入 ESC 从输入状态退至命令状态 x 删除光标后面的字符 #x 删除光标后的#个字符 X (大写X),删除光标前面的字符 #X 删除光标前面的#个字符 dd 删除光标所在的行 #dd 删除从光标所在行数的#行 yw 复制光标所在位置的一个字 #yw 复制光标所在位置的#个字 yy 复制光标所在位置的一行 #yy 复制从光标所在行数的#行 p 粘贴 u 取消操作 cw 更改光标所在位置的一个字 #cw 更改光标所在位置的#个字

    2、下表列出行命令模式下的一些指令 w filename 储存正在编辑的文件为filename wq filename 储存正在编辑的文件为filename,并退出vi q! 放弃所有修改,退出vi set nu 显示行号 /或? 查找,在/后输入要查找的内容 n 与/或?一起使用,如果查找的内容不是想要找的关键字,按n或向后(与/联用)或向前(与?联用)继续查找,直到找到为止。

    对于第一次用vi,有几点注意要提醒一下:

    1、用vi打开文件后,是处于「命令行模式(command mode)」,您要切换到「插入模式(Insert mode)」才能够输入文字。

    切换方法:在「命令行模式(command mode)」下按一下字母「i」就可以进入「插入模式(Insert mode)」,这时候你就可以开始输入文字了。

    2、编辑好后,需从插入模式切换为命令行模式才能对文件进行保存,切换方法:按「ESC」键。

    3、保存并退出文件:在命令模式下输入即可!(别忘了wq前面的:)

    Vi编辑器的基本使用方法
    https://blog.ittst.com/posts/vi-editor's-basic-usage-method/
    作者
    浪子
    发布于
    2016-11-16
    许可协议
    CC BY-NC-SA 4.0
    \ No newline at end of file diff --git a/posts/vk23-black-apple-opencore0.8.5-guide-macos12.6.1/index.html b/posts/vk23-black-apple-opencore0.8.5-guide-macos12.6.1/index.html new file mode 100644 index 0000000..9a04b2e --- /dev/null +++ b/posts/vk23-black-apple-opencore0.8.5-guide-macos12.6.1/index.html @@ -0,0 +1 @@ +VK23黑苹果OpenCore0.8.5引导macOS12.6.1 - 平淡生活
    \ No newline at end of file diff --git a/robots.txt b/robots.txt new file mode 100644 index 0000000..4c12f84 --- /dev/null +++ b/robots.txt @@ -0,0 +1,4 @@ +User-agent: * +Allow: / + +Sitemap: https://blog.ittst.com/sitemap-index.xml \ No newline at end of file diff --git a/rss.xml b/rss.xml new file mode 100644 index 0000000..6133e5c --- /dev/null +++ b/rss.xml @@ -0,0 +1,2286 @@ +平淡生活退休前的牛马生活https://blog.ittst.com/zh_CN从Hexo到Astrohttps://blog.ittst.com/posts/from-hexo-to-astro/https://blog.ittst.com/posts/from-hexo-to-astro/本文简单讲述了如何从从Hexo到Astro的过程,并使用脚本转换Front-matterMon, 28 Oct 2024 00:00:00 GMT<p>很多人在向<code>Astro</code>转移,咱也跟风一波. +主要是很喜欢<code>fuwari</code>的这个主题模板,曾经也移植到了<code>Typecho</code>平台.</p> +<h2>步骤</h2> +<h3>安装<code>Astro</code></h3> +<ol> +<li> +<p>从这个模板生成一个新的存储库或分叉这个存储库。 +https://github.com/saicaca/fuwari/generate</p> +</li> +<li> +<p>要在本地编辑你的博客,克隆你的存储库,运行</p> +</li> +</ol> +<pre><code>pnpm install +</code></pre> +<pre><code>pnpm add sharp +</code></pre> +<p>安装依赖项。如果你没有安装pnpm 则执行</p> +<pre><code>npm install-g pnpm +</code></pre> +<ol> +<li> +<p>编辑配置文件<code>src/config.ts</code>以自定义你的博客。</p> +</li> +<li> +<p>创建一个新帖子 +运行</p> +</li> +</ol> +<pre><code>pnpm new-post &lt;filename&gt; +</code></pre> +<p>并在<code>src/content/post/</code>中进行编辑。</p> +<ol> +<li>按照指南将你的博客部署到<code>Vercel</code>、<code>Netlify</code>、<code>GitHub Pages</code>等。</li> +</ol> +<p>部署前需要在<code>astro.config.mjs</code>中编辑站点配置。</p> +<h3>迁移</h3> +<p>由于<code>HEXO</code>和<code>Astro</code>的<code>Front-matter</code>存在差异会导致无法正常生成页面 +所以就利用<code>deepseek</code>写了个<code>python</code>的脚本用以实现以下功能</p> +<ol> +<li>自动生成slug 利用谷歌翻译</li> +<li>自动更改文件名为文章名. 这个是历史遗留问题.从<code>wordpress</code>转过来时留下的.</li> +<li>自动更改<code>date</code>为<code>published</code>.由于hexo的使用过程中有很多种譬如时间戳 譬如 YYYY-MM-DD这一种在HEXO下本来兼容的现在到了<code>Astro</code>下就都报错了.如果出现无法转换则使用默认日期.避免转换过程中出现中断.</li> +<li>更改<code>category</code> 与 <code>tags</code></li> +</ol> +<p>https://gist.github.com/jkjoy/459deed2048a432f8147abde2a334082</p> +<p>脚本 122 行<code>posts_dir = '_posts'</code>为hexo文章路径.</p> +<p>把转换好的文章 复制进 <code>src/content/post/</code> 下.</p> +<h3>上传</h3> +<p>可以上传到<code>Vercel</code>、<code>Netlify</code>、<code>GitHub Pages</code> 这些都不赘述了.</p> +<p>玩过<code>Hexo</code>基本都知道怎么操作了</p> +<h2>总结</h2> +<p><code>Astro</code>的<code>Front-matter</code>太骚了.</p> +<p>几乎每个模板的定义还不一样.</p> +LEDE 软路由安装“koolss”离线插件包提示含非法关键字的解决方法https://blog.ittst.com/posts/lede-soft-routing-installation-koolss-offline-plug--in-package-prompts-to-solve-illegal-keywords/https://blog.ittst.com/posts/lede-soft-routing-installation-koolss-offline-plug--in-package-prompts-to-solve-illegal-keywords/这篇文章介绍了如何通过SSH登录到软路由,并指导用户安装一个名为koolss的科学上网插件。具体步骤包括下载插件文件,其链接为[https://blog-1312096806.cos.ap-guangzhou.myqcloud.com/halo/koolss_2.2.2.tar.gz]。Thu, 10 Oct 2024 00:00:00 GMT<p>用SSH登录软路由</p> +<pre><code>ssh root@192.168.1.1 +</code></pre> +<p>然后输入</p> +<pre><code>sed -i 's/\tdetect_package/\t# detect_package/g' /koolshare/scripts/ks_tar_install.sh +</code></pre> +<p>再安装科学上网插件即可</p> +<p><a href="https://blog-1312096806.cos.ap-guangzhou.myqcloud.com/halo/koolss_2.2.2.tar.gz">koolss</a></p> +给Memos添加Artalk评论https://blog.ittst.com/posts/add-artalk-comments-to-memos/https://blog.ittst.com/posts/add-artalk-comments-to-memos/这篇文章介绍了如何为Memos v0.16.1版本添加Twikoo评论功能,并提供了自定义脚本和样式的更新说明。文章中包括了具体的代码替换步骤,如将’.resource-wrapper’替换为’.gap-2’或’.memo-wrapper’,以及如何隐藏评论数的操作指南。此外,还提到了适用于Memos 0.15.1版本以下的更新提醒。Thu, 10 Oct 2024 00:00:00 GMT<p>上文提到</p> +<p><a href="/2023/507a5d86.html">给Memos添加Twikoo评论</a></p> +<ul> +<li> +<p>2023.10.23更新以适用于memos v0.16.1版本 +把'.resource-wrapper'替换为'.gap-2'</p> +</li> +<li> +<p>2023.10.17更新memos0.16版本</p> +</li> +</ul> +<h2>自定义脚本</h2> +<p>把'.resource-wrapper'替换为'.memo-wrapper'</p> +<h2>自定义样式</h2> +<p>隐藏评论数</p> +<pre><code>.text-sm.text-gray-500.ml-1{display:none !important;} +</code></pre> +<ul> +<li>2023.9.26更新提醒:适用于 memos 0.15.1版本以下</li> +</ul> +<h2>自定义脚本</h2> +<pre><code>// 用 JS 向页面中插入 JS +function addArtalkJS() { + var memosArtalk = document.createElement("script"); + memosArtalk.src = `https://unpkg.com/artalk/dist/Artalk.js`; + var artakPos = document.getElementsByTagName("script")[0]; + artakPos.parentNode.insertBefore(memosArtalk, artakPos); +}; +// div +function startArtalk() { + start = setInterval(function(){ + var artalkDom = document.getElementById('Comments') || ''; + var memoAt = document.querySelector('.memo-wrapper') || ''; + var memoLoading = document.querySelector('.action-button-container') || ''; + var memoLoadingA = document.querySelector('.action-button-container a') || ''; + if(window.location.href.replace(/^.*\/(m)\/.*$/,'$1') == "m" &amp;&amp; memoLoadingA){ + memoLoading.innerHTML = "评论加载中……" + } + if(window.location.href.replace(/^.*\/(m)\/.*$/,'$1') == "m" &amp;&amp; !artalkDom){ + addArtalkJS() + if(memoAt){ + clearInterval(start) + var cssLink = document.createElement("link"); + cssLink.rel = "stylesheet"; + cssLink.href = "https://unpkg.com/artalk/dist/Artalk.css"; + document.head.appendChild(cssLink); + memoAt.insertAdjacentHTML('afterend', '&lt;div id="Comments"&gt;&lt;/div&gt;'); + setTimeout(function() { + Artalk.init({ + el: '#Comments', + pageKey: location.pathname, + pageTitle: document.title, + server: 'https://artalk.loliko.cn', + site: 'memos', + darkMode: 'auto' + }); + Artalk.on('list-loaded', function() { + // console.log('评论加载完成'); + memoLoading.innerHTML = '' + startArtalk(); + }); + }, 1000); + } + } + //console.log(window.location.href); + }, 1000) +} +startArtalk(); +</code></pre> +<h2>自定义样式</h2> +<pre><code>a.time-text:after { content: ' 评论 💬 '; } +.atk-main-editor { margin-top: 20px; } + +</code></pre> +给Memos添加Twikoo评论https://blog.ittst.com/posts/add-twikoo-comments-to-memos/https://blog.ittst.com/posts/add-twikoo-comments-to-memos/这篇文章介绍了如何更新和自定义脚本以适应不同版本的memos应用。文章提到了2023年10月23日对脚本的更新,使其适用于memos v0.16.1版本,以及之前的几次更新。此外,文章还提到了由于官方已经添加了评论图标,因此不再需要通过CSS添加图标。最后,文章指出了在memos升级到0.15.1版本后,某些自定义脚本无法使用的情况。Thu, 10 Oct 2024 00:00:00 GMT<p>代码来自于@<a href="https://immmmm.com/memos-with-twikoo/">林木木</a></p> +<p>2023.10.23更新脚本以适用于memos v0.16.1</p> +<h2>自定义脚本</h2> +<pre><code>// Memos v0.16.1 单条页面插入 Twikoo 评论 +var twikooENV = 'https://你的.com/' +function addTwikooJS() { + var memosTwikoo = document.createElement("script"); + memosTwikoo.src = `https://cdn.staticfile.org/twikoo/1.6.22/twikoo.all.min.js`; + var tws = document.getElementsByTagName("script")[0]; + tws.parentNode.insertBefore(memosTwikoo, tws); +}; +function startTwikoo() { + startTW = setInterval(function(){ + var nowHref = window.location.href; + var twikooDom = document.querySelector('#twikoo') || ''; + if( nowHref.replace(/^.*\/(m)\/.*$/,'$1') == "m"){ + if(!twikooDom){ + addTwikooJS() + setTimeout(function() { + var memoTw = document.querySelector('.gap-2') || ''; + memoTw.insertAdjacentHTML('afterend', '&lt;div id="mtcomment"&gt;&lt;/div&gt;'); + twikoo.init({ + envId: twikooENV, + el: '#mtcomment', + path: nowHref.replace(/^.*=?(http.*\/m\/[0-9]+).*$/,'$1'), + onCommentLoaded: function () { + startTwikoo(); + } + }) + }, 1500) + }else{ + clearInterval(startTW) + } + } + }, 2000) +} +startTwikoo(); +</code></pre> +<p>2023.10.17更新脚本</p> +<h2>自定义脚本</h2> +<p>适用于0.16版本</p> +<pre><code>//Memos v0.16 添加 Twikoo 评论 v2023.10.06 +var twikooENV = '' //你的 https://xxxx/ +function addTwikooJS() { + var memosTwikoo = document.createElement("script"); + memosTwikoo.src = `https://cdn.staticfile.org/twikoo/1.6.22/twikoo.all.min.js`; + var tws = document.getElementsByTagName("script")[0]; + tws.parentNode.insertBefore(memosTwikoo, tws); +}; +function startTwikoo() { + startTW = setInterval(function(){ //定时执行 1秒/次 + var nowHref = window.location.href; + var twikooDom = document.querySelector('#twikoo') || ''; + if( nowHref.replace(/^.*\/(m)\/.*$/,'$1') == "m"){//单条页面 + if(!twikooDom){ + //console.log('评论未加载'); + addTwikooJS() //加载评论 js + setTimeout(function() { //延迟 1秒 执行 + var memoTw = document.querySelector('.resource-wrapper') || ''; + memoTw.insertAdjacentHTML('afterend', '&lt;div id="mtcomment"&gt;&lt;/div&gt;'); + twikoo.init({ + envId: twikooENV, + el: '#mtcomment', + path: nowHref.replace(/^.*=?(http.*\/m\/[0-9]+).*$/,'$1'), //v2023.08.09 正则更新 + onCommentLoaded: function () { + startTwikoo() + //console.log('再次开启定时执行'); + } + }) + }, 900) + }else{ + //console.log('清除定时执行'); + clearInterval(startTW) + } + } + }, 2000) +} +startTwikoo(); +</code></pre> +<p>由于官方已经有评论图标所以CSS不再添加图标</p> +<p>2023.9.26 更新.memos升级0.15.1版本后以下无法使用</p> +<h2>自定义脚本</h2> +<pre><code>//添加 twikoo 评论 v2023.06.10 +var twikooENV = 'https://twikoo.jiong.us/' +function addTwikooJS() { + var memosTwikoo = document.createElement("script"); + memosTwikoo.src = `https://cdn.staticfile.org/twikoo/1.6.16/twikoo.all.min.js`; + var tws = document.getElementsByTagName("script")[0]; + tws.parentNode.insertBefore(memosTwikoo, tws); +}; +function addComIcon(){ + var memoTwIcons = document.querySelectorAll('.time-text') || ''; + if(memoTwIcons){ + for(var i=0;i &lt; memoTwIcons.length;i++){ + //if(memoTwIcon[i].hasChildNodes == false){ + memoTwIcons[i].insertAdjacentHTML('afterbegin', '&lt;div class="twicon"&gt;&lt;svg class="icon" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" width="16" height="16"&gt;&lt;path d="M896 138.667H128c-38.4 0-64 25.6-64 64v544c0 38.4 25.6 64 64 64h128v128c83.2 0 166.4-44.8 256-128h384c38.4 0 64-25.6 64-64v-544c0-38.4-25.6-64-64-64zm0 608H486.4l-19.2 19.2c-51.2 51.2-102.4 83.2-147.2 96v-115.2H128v-544h768v544z" fill="#8a8a8a"/&gt;&lt;path d="M256 477.867a64 64 0 1 0 128 0 64 64 0 1 0-128 0zM448 477.867a64 64 0 1 0 128 0 64 64 0 1 0-128 0zM640 477.867a64 64 0 1 0 128 0 64 64 0 1 0-128 0z" fill="#8a8a8a"/&gt;&lt;/svg&gt;&lt;/div&gt;'); + //} + } + } +}; +function startTwikoo() { + start = setInterval(function(){ + var twikooDom = document.getElementById('twikoo') || ''; + var memoTw = document.querySelector('.memo-wrapper') || ''; + var memoLoading = document.querySelector('.action-button-container') || ''; + var memoLoadingA = document.querySelector('.action-button-container a') || ''; + var memoTwIcons = document.querySelectorAll('.time-text .twicon') || ''; + var nowHref = window.location.href; + if( nowHref.replace(/^.*\/(m)\/.*$/,'$1') == "m" &amp;&amp; memoLoadingA){ + memoLoading.innerHTML = "评论加载中……" + } + if( nowHref.replace(/^.*\/(m)\/.*$/,'$1') == "m" &amp;&amp; !twikooDom){ + addTwikooJS() + if(memoTw){ + clearInterval(start) + memoTw.insertAdjacentHTML('afterend', '&lt;div id="mtcomment"&gt;&lt;/div&gt;'); + setTimeout(function() { + twikoo.init({ + envId: twikooENV, + el: '#mtcomment', + path: nowHref.replace(/^(.*\/m\/[0-9]+).*$/,'$1'), + onCommentLoaded: function () { + //console.log('评论加载完成'); + memoLoading.innerHTML = '' + startTwikoo() + } + }) + }, 1000) + } + } + if(nowHref.replace(/^.*\/(explore).*$/,'$1') == "explore" || nowHref.replace(/^.*\/(u).*$/,'$1') == "u"){ + memoTwIcons.forEach(memoTwIcon =&gt; {memoTwIcon.remove();}); + addComIcon() + //console.log('图标添加成功'); + } + //console.log(window.location.href); + }, 1000) +} +startTwikoo(); +</code></pre> +<h2>自定义样式</h2> +<pre><code>#twikoo{padding: 1rem;background-color: rgb(63,63,70);margin: 1rem 0;border-radius: .5rem;color: #fff !important;} +.twicon{position: absolute;right: 1rem;} +.btns-container.space-x-2{margin-right:1.5rem;} +.action-button-container{color: #e5e7eb;} +.action-button-container a{display:none !important;} +</code></pre> +Artalk评论使用QQ机器人通知https://blog.ittst.com/posts/artalk-comments-using-qq-robot-notification/https://blog.ittst.com/posts/artalk-comments-using-qq-robot-notification/这篇文章介绍了如何使用QQ机器人接收Artalk的评论通知。文章首先确保Artalk和QQ机器人都已部署完成,然后通过配置QQ机器人的HTTP服务和中间服务MESSAGE-PUSHER来实现消息推送。接着,文章详细说明了如何在MESSAGE-PUSHER中配置通道和接口,并将生成的Webhook地址填入Artalk的Webhook设置中,从而实现Artalk评论时QQ机器人的通知功能。Sun, 15 Sep 2024 00:00:00 GMT<h2>前言</h2> +<p>上文<a href="/2024/e3f20929.html">使用Docker快速部署一个memos的QQ机器人</a>介绍了QQ机器人的部署方法</p> +<p>本次将介绍如何使用QQ机器人接收Artalk的评论通知 +实现原理是利用Artalk的Webhook功能</p> +<h2>准备</h2> +<ol> +<li>确保Artalk已经部署完成</li> +<li>确保QQ机器人已经部署完成</li> +</ol> +<h2>使用</h2> +<h3>QQ机器人</h3> +<p>确保QQ机器人的管理页面开启了HTTP服务,且端口为3000</p> +<p>访问IP:3000 出现以下页面则说明QQ机器人已经开启了HTTP服务</p> +<pre><code>{ + "status": "failed", + "retcode": 200, + "data": null, + "message": "不支持的api ", + "wording": "不支持的api ", + "echo": null +} +</code></pre> +<h3>中间服务message-pusher</h3> +<p>源码:https://github.com/songquanpeng/message-pusher</p> +<p>部署方法:https://github.com/songquanpeng/message-pusher/blob/master/README.md</p> +<p>如果不想部署可直接使用我部署的服务, 地址:https://msg.jkjoy.cn 不保证长期有效</p> +<p>进入消息推送服务的<code>通道</code>配置页面,添加新的通道</p> +<p>名称 <code>QQ机器人</code> +通道类型 选择 <code>OneBot协议</code> +服务器地址填写 <code>机器人的IP地址:3000</code> +默认推送目标填写接收通知的QQ号码</p> +<p>进入消息推送服务的<code>接口</code>配置页面,添加新的接口</p> +<p>名称 <code>Artalk评论通知</code> +通道 选择 <code>QQ机器人</code> +提取规则填写</p> +<pre><code>{ + "id": "comment.id", + "name": "comment.nick", + "time": "comment.date", + "content": "comment.content", + "site": "comment.site_name", + "url": "comment.page_url" +} +</code></pre> +<p>构建规则填写</p> +<pre><code>{ + "content": " $name 在 $site 上评论啦 \n 内容:$content \n 时间:$time \n 链接:$url?atk_comment=$id" +} +</code></pre> +<p>提交之后 点击<code>复制webhook地址</code></p> +<h1>Artalk配置</h1> +<p>在Artalk的后台管理页面,进入<code>设置</code>-&gt;<code>多元推送</code>-&gt;<code>Webhook</code></p> +<p>填入之前复制的webhook地址</p> +<p>如此即可在artalk有人评论时QQ机器人通知你的QQ啦!</p> +使用Docker快速部署一个memos的QQ机器人https://blog.ittst.com/posts/use-docker-to-quickly-deploy-a-memos-qq-robot/https://blog.ittst.com/posts/use-docker-to-quickly-deploy-a-memos-qq-robot/这篇文章介绍了如何使用Docker快速部署一个QQ机器人,并通过对接Nonebot实现Memos机器人的功能。文章详细描述了准备工作,包括安装Docker、获取QQ账号和Memos账号。接着,文章提供了具体的部署步骤,包括创建docker-compose.yml文件并运行相关命令来启动QQ机器人。最后,文章还简要说明了如何使用这个机器人,包括绑定账号和发送消息到Memos的功能。Fri, 13 Sep 2024 00:00:00 GMT<p>前言:本文介绍了如何使用Docker快速部署一个QQ机器人,并通过对接Nonebot实现Memos机器人的功能。</p> +<h2>准备工作</h2> +<ol> +<li>安装Docker</li> +<li>一个QQ账号</li> +<li>一个Memos账号</li> +</ol> +<h2>部署</h2> +<h3>memos机器人</h3> +<p>此处使用Nonebot2作为框架,自己撸的Nonebot2的插件<code>nonebot_plugin_memos</code>对接Memos机器人。</p> +<p>我打包编译的镜像<code>jkjoy/qq2memos:latest</code></p> +<p>如需源码参考 https://www.imsun.org/archives/1668.html</p> +<p>首先创建一个docker-compose.yml文件,内容如下:</p> +<pre><code>services: + memos: + container_name: memos + environment: + - MEMOS_API=https://memos.imsun.org/api/v1/memo #Memos的API地址,自行修改 + image: jkjoy/qq2memos:latest + volumes: + - "./data:/app/data" + restart: always + ports: + - 8080:8080 +</code></pre> +<p>** 此处的MEMOS_API支持memos v0.15.0以上使用token认证的版本,端口地址根据版本情况自行更改 ** +例如 v0.18.1版本 使用<code>/api/v1/memo</code> +v0.20.0版本以上使用<code>/api/v1/memos</code></p> +<p>然后运行</p> +<pre><code>docker-compose up -d +</code></pre> +<p>端口根据情况自行更改,在填写WS地址时,请使用此处设置的端口</p> +<h3>部署QQ机器人</h3> +<p>此处以docker-compose的方式部署,其他方法自行搜索。</p> +<p>首先创建一个docker-compose.yml文件,内容如下:</p> +<pre><code>services: + napcat: + environment: + - ACCOUNT=10000 #QQ机器人号码,自行修改 + - WS_ENABLE=true + - NAPCAT_UID=0 + - NAPCAT_GID=0 + ports: + - 3001:3001 + - 6099:6099 + - 3000:3000 + restart: always + image: mlikiowa/napcat-docker:latest + volumes: + - "./QQ:/app/.config/QQ" + - "./config:/app/napcat/config" + network_mode: host #使用host的原因是为了方便对接宿主机的nonebot框架 +</code></pre> +<p>然后运行<code>docker-compose up -d</code>即可。</p> +<p>访问WEBUI地址 http://ip:6099/webui/login.html</p> +<p>登录所使用的<code>token</code>在<code>docker-compose.yaml</code> 所在目录下的<code>config</code>中的<code>webui.json</code>中</p> +<p>可选择扫码登录</p> +<p>在设置页面中添加反向 WS 地址,地址为</p> +<pre><code>ws://127.0.0.1:8080/onebot/v11/ws +</code></pre> +<p>这里的 <code>8080</code> 是 NoneBot 输出的端口号,根据情况自行更改</p> +<p><code>/onebot/v11/ws</code> 是 NoneBot onebot 适配器默认的路径</p> +<p>点击保存,容器日志提示通讯成功即可.</p> +<h3>使用机器人</h3> +<p>在聊天对话框输入任何内容会提示绑定</p> +<p>按照提示进行绑定即可</p> +<p>在绑定成功后,在聊天对话框输入任何内容都会转发到Memos 且 默认为公开内容.</p> +<p><strong>暂不支持发送图片等其他内容.</strong></p> +给博客增加一个观影页面https://blog.ittst.com/posts/add-a-movie-viewing-page-to-the-blog/https://blog.ittst.com/posts/add-a-movie-viewing-page-to-the-blog/这篇文章介绍了作者如何通过自定义代码构建一个观影页面,而不是使用插件。文章详细描述了项目的GitHub地址,并提供了具体的步骤:首先根据提供的GitHub链接创建接口,然后在博客根目录下新建movies文件夹和index.md文件,接着创建movies.js文件和movies.css文件,最后完成页面的构建。Wed, 11 Sep 2024 00:00:00 GMT<h2>前言</h2> +<p>使用插件构建的观影页面有点不那么喜欢,所以我决定自己写一个。</p> +<h2>项目</h2> +<p>所使用的的项目地址 +https://github.com/bigfa/douban-cf-worker</p> +<h2>步骤</h2> +<ol> +<li> +<p>首先根据https://github.com/bigfa/douban-cf-worker 中的步骤创建接口</p> +</li> +<li> +<p>在博客的根目录下新建一个名为 <code>movies</code> 的文件夹,然后在 <code>movies</code> 文件夹下新建一个名为 <code>index.md</code> 的文件,在文件中写入以下内容:</p> +</li> +</ol> +<pre><code>--- +title: 观影 +date: 2024-09-11 13:00:56 +--- +&lt;link rel="stylesheet" href="/movies/movies.css"&gt; +&lt;div class="masonry" id="movieContainer"&gt; + &lt;!-- 电影项目将被 JavaScript 动态添加到这里 --&gt; +&lt;/div&gt; +&lt;script defer src="/movies/movies.js"&gt;&lt;/script&gt; + +</code></pre> +<ol> +<li>新建一个<code>movies.js</code>文件,在文件中写入以下内容:</li> +</ol> +<pre><code> // 创建电影项目的HTML + function createMovieItem(movie) { + return ` + &lt;div class="item"&gt; + &lt;div class="image-container"&gt; + &lt;img src="${movie.poster}" + alt="${movie.name}" + onerror="this.onerror=null; this.src='placeholder.jpg';"&gt; + &lt;/div&gt; + &lt;div class="item-content"&gt; + &lt;div class="item-title"&gt; + &lt;a href="${movie.link}" target="_blank" rel="noopener noreferrer"&gt;${movie.name}&lt;/a&gt; + &lt;/div&gt; + &lt;div class="item-info"&gt;${movie.card_subtitle}&lt;/div&gt; + + &lt;div class="item-score"&gt;豆瓣评分: ${movie.douban_score}&lt;/div&gt; + &lt;/div&gt; + &lt;/div&gt; + `; + } + + // 从API获取数据并渲染页面 + async function fetchAndRenderMovies() { + try { + const response = await fetch('https://db.imsun.org/list'); + const data = await response.json(); + + // 按豆瓣评分排序(降序) + data.results.sort((a, b) =&gt; b.douban_score - a.douban_score); + + const container = document.getElementById('movieContainer'); + data.results.forEach(movie =&gt; { + container.innerHTML += createMovieItem(movie); + }); + } catch (error) { + console.error('Error fetching movie data:', error); + document.getElementById('movieContainer').innerHTML = '&lt;p&gt;加载电影数据时出错,请稍后再试。&lt;/p&gt;'; + } + } + + // 页面加载时获取并渲染电影数据 + fetchAndRenderMovies(); +</code></pre> +<ol> +<li>在 <code>movies</code> 文件夹下新建一个名为 <code>movies.css</code> 的文件,在文件中写入以下内容:</li> +</ol> +<pre><code> +.masonry { + column-count: 4; + column-gap: 20px; +} +@media (max-width: 1200px) { + .masonry { + column-count: 3; + } +} +@media (max-width: 900px) { + .masonry { + column-count: 2; + } +} +@media (max-width: 600px) { + .masonry { + column-count: 1; + } +} +.item { + position: relative; + overflow: hidden; +} + +.image-container { + position: relative; + width: 100%; + padding-top: 150%; /* 2:3 宽高比 */ + overflow: hidden; +} + +.image-container img { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + object-fit: cover; + transition: transform 0.3s ease-in-out; +} + +.item-content { + position: absolute; + font-size: 12px; + bottom: 0; + left: 0; + width: auto; + background-color: rgba(0, 0, 0, 0.7); + color: white; + padding: 10px; + transform: translateY(100%); + transition: transform 0.3s ease-in-out; +} + +.item:hover .item-content { + transform: translateY(0); +} + +.item:hover .image-container img { + transform: scale(1.1); +} + +.item-title a { + color: white; + text-decoration: none; + font-size: 20px; +} + +.item-title a:hover { + text-decoration: underline; +} +</code></pre> +<p>如此即可大功告成了</p> +通过取子集的方式压缩霞鹜文楷字体https://blog.ittst.com/posts/compressed-xiafen-kaikai-font-by-taking-the-ziji-setting/https://blog.ittst.com/posts/compressed-xiafen-kaikai-font-by-taking-the-ziji-setting/这篇文章介绍了如何使用Python的fonttools库对字体文件进行子集化和压缩。首先,通过pip安装fonttools库,然后使用该库对指定的字体文件进行子集化处理,保留特定的字符集,从而将字体文件从11M压缩到1.7M左右。接着,文章还提到了如何安装并使用brotli模块进一步压缩字体文件,并将最终结果转换为woff2格式,大小约为840kb。整个过程涉及输入和输出文件路径的定义,以及具体的命令操作。Tue, 03 Sep 2024 00:00:00 GMT<h2>使用python</h2> +<p>这里使用到的是Python 的库:<code>fonttools</code></p> +<p>使用最新版 <code>Python</code> 的 pip 命令安装即可在 Shell 中使用:</p> +<pre><code>pip install fonttools +</code></pre> +<p>常用汉字大约有3500字 +我使用的是这个<a href="https://cdn.jkjoy.cn/3000.txt">现代汉语常用 3500 字.txt</a> +中文常用字库项目https://github.com/DavidSheh/CommonChineseCharacter</p> +<h2>取子集</h2> +<p>使用以下命令即可对字体文件取子集</p> +<pre><code>fonttools subset "$input_file" --text-file="$text_file" --output-file="$output_file" +</code></pre> +<p>其中 +<code>$input_file</code>:输入的字体文件。 +<code>$text_file</code>:定义保留字符的纯文本文件路径。 +<code>$output_file</code>:输出的字体文件路径。</p> +<p>取完子集完成之后字体从11M压缩到1.7M左右</p> +<h2>压缩</h2> +<p>安装模块<code>brotli</code></p> +<pre><code>pip install brotli +</code></pre> +<p>使用命令</p> +<pre><code>fonttools ttLib.woff2 compress "$input_file" -o "$output_file" +</code></pre> +<p>其中 +<code>$input_file</code>:输入的字体文件。 +<code>$output_file</code>:输出的字体文件路径。</p> +<p>再次压缩为 woff2 字体格式 大约840kb</p> +从memos的webhook开始https://blog.ittst.com/posts/start-with-memos's-webhook/https://blog.ittst.com/posts/start-with-memos's-webhook/这篇文章介绍了如何利用memos的webhook功能从v0.18版本开始,通过复制Typecho主题icefox的CSS布局,创建一个基于memos的单页面,类微信朋友圈。文章详细说明了使用BASH、宝塔WEBHOOK和PHP获取memos的JSON数据的方法,并展示了如何部署webhook镜像和配置webhook以实现自动更新memos.json文件。此外,还提供了演示链接供参考。Tue, 18 Jun 2024 00:00:00 GMT<h2>说在前面</h2> +<p>memos的<code>webhook</code>功能从v0.18 版本开始加入. +<code>webhook</code>也为<code>memos</code>带来了不一样的玩法.</p> +<p>前段时间从<code>Typecho</code>主题<code>icefox</code>上直接<code>CTRL</code>+<code>C</code>了CSS布局,做了一个基于<code>memos</code>的单页面,类微信朋友圈.</p> +<p>然后使用<code>webhook</code>自动保存json到本地目录,快速加载. 解决跨域问题</p> +<h2>获取memos.json</h2> +<h3>使用bash</h3> +<p>创建一个<code>memos.sh</code>文件</p> +<pre><code>#!/bin/bash + +# API地址 +API_URL="https://memos.ee/api/v1/memos" + +# 过滤参数 +FILTER="visibilities == ['PUBLIC'] &amp;&amp; creator == 'users/1'" +PAGE_SIZE="200" + +# Authorization 头部 +AUTH_HEADER="Bearer token" + +# 目标文件 +OUTPUT_FILE="/config/memos.json" + +# 使用 curl 发送 GET 请求并将结果保存到文件 +curl -G "${API_URL}" \ + --data-urlencode "filter=${FILTER}" \ + --data-urlencode "pageSize=${PAGE_SIZE}" \ + -H "Authorization: ${AUTH_HEADER}" \ + -H "Accept: application/json" \ + -o "${OUTPUT_FILE}" + +# 检查是否成功 +if [ $? -eq 0 ]; then + echo "JSON 数据已成功保存到 ${OUTPUT_FILE}" +else + echo "获取 JSON 数据失败" +fi +</code></pre> +<p>这个脚本用于获取最近200条的memos</p> +<p>自行更改以上的<code>API_URL</code> <code>token</code> 以及过滤参数</p> +<blockquote> +<p>当然我们也可以 使用<code>php</code>获取json +或者使用<code>宝塔webhook</code>获取json +这样就不需要部署webhook镜像 +可以跳过以下部署webhook镜像的部分</p> +</blockquote> +<h3>使用宝塔webhook</h3> +<p>可直接复制bash代码到宝塔的webhook中 +<img src="https://image.ima.cm/file/968b29c66c6099d11acf6.png" alt="968b29c66c6099d11acf6.png" /></p> +<p>其中目标位置<code>OUTPUT_FILE</code>需要使用绝对路径</p> +<p>点击<code>查看密钥</code></p> +<blockquote> +<p>宝塔WebHook使用方法: +GET/POST: +https://ip:18888/hook?access_key=9EkgLRL4NbZOC7TSfiIyCE3rUQo3yEYfu7XPW6BX3Qjuobwt&amp;param=aaa</p> +</blockquote> +<p>把以上链接填入memos的webhook中</p> +<h3>使用php获取</h3> +<pre><code>&lt;?php +$url = 'https://memos.ee/api/v1/memos'; //api url +$filter = "visibilities == ['PUBLIC'] &amp;&amp; creator == 'users/1'"; //筛选参数visibilities == ['PUBLIC']公开,creator == 'users/1' 用户UID为1 +$pageSize = "200"; //memos数量 +$authHeader = "Bearer token"; //token + +$ch = curl_init(); + +curl_setopt($ch, CURLOPT_URL, $url); +curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); +curl_setopt($ch, CURLOPT_HTTPHEADER, array( + 'Content-Type: application/json', + 'Authorization: ' . $authHeader, + 'filter: ' . $filter, + 'pageSize: ' . $pageSize +)); + +$response = curl_exec($ch); + +curl_close($ch); + +$data = json_decode($response, true); + +if (json_last_error() === JSON_ERROR_NONE) { + file_put_contents('memos.json', json_encode($data, JSON_PRETTY_PRINT)); //保存为memos.json +} else { + echo 'The response is not a valid JSON string.'; +} +?&gt; +</code></pre> +<p>把以上保存为memos.php,放在可执行的网站目录中</p> +<p>访问地址即可在同级目录下生成memos.json的文件</p> +<h2>使用webhook功能</h2> +<h3>部署webhook镜像</h3> +<p>此处使用一个<code>webhook</code>的DOCKER镜像</p> +<p>此Docker镜像是我根据官方dockerfile增加了中文支持编译而成. +推荐使用docker-compose部署 编辑<code>docker-compose.yaml</code>内容为</p> +<pre><code>services: + webhook: + image: jkjoy/webhook + container_name: webhook + command: -verbose -hooks=hooks.yml -hotreload + environment: + - TZ=Asia/Chongqing #中国时区 + - LANG=C.UTF-8 #中文支持 + volumes: + - ./:/config:rw + ports: + - 9000:9000 + restart: always +</code></pre> +<p>创建<code>hooks.yml</code>文件并编辑内容为</p> +<pre><code>- id: memos + execute-command: "/config/memos.sh" + command-working-directory: "/" +</code></pre> +<p>然后运行</p> +<pre><code>docker compose up -d +</code></pre> +<p>即可</p> +<h3>使用Webhook</h3> +<p>hooks.yaml为webhook的配置文件</p> +<p>其中的execute-command为容器中的可执行脚本目录 +webhook的访问地址格式为 <code>服务器 ip:端口/hooks/id</code> +访问http://127.0.0.1:9000/hooks/memos +即可触发执行<code>bash /config/memos.sh</code></p> +<p>在memos的webhook设置中填入<code>http://127.0.0.1:9000/hooks/memos</code>的webhook地址, +即可</p> +<h3>以宝塔为例</h3> +<p>创建一个名为 <code>api.domain.com</code>的网站 +在网站的根目录下创建 <code>docker-compose.yaml</code> <code>hooks.yaml</code> <code>memos.sh</code> 的文件 +运行</p> +<pre><code>docker compose up -d +</code></pre> +<p>创建一个反向代理 +使 127.0.0.1:9000 代理到 api.domain.com 的 /webhook/ 目录 +访问api.domain.com/webhook/hooks/memos +此时会在网站根目录下生成<code>memos.json</code> +访问api.domain.com/memos.json +此时在memos的webhook地址中填入<code>api.domain.com/webhook/hooks/memos</code> +实现在memos更新时自动更新memos.json文件</p> +<h2>演示</h2> +<p>https://memos.jkjoy.cn</p> +利用 Github Actions 自动部署 Hexo 博客https://blog.ittst.com/posts/use-github-actions-to-automatically-deploy-hexo-blog/https://blog.ittst.com/posts/use-github-actions-to-automatically-deploy-hexo-blog/这篇文章介绍了如何使用Github Actions实现CI/CD工作流,包括自动化测试、打包和部署等操作。文章详细说明了在已有hexo博客、github账户和项目的基础上,如何创建.github/workflows/main.yml文件,并设置Personal access tokens以实现hexo项目main分支更新时自动更新gh-pages分支的功能。Wed, 08 May 2024 00:00:00 GMT<h2>Github Actions 简介</h2> +<p>Github Actions 可以很方便实现 CI/CD 工作流,类似 Travis 的用法,来帮我们完成一些工作,比如实现自动化测试、打包、部署等操作。当我们运行 Jobs 时,它会创建一个容器 (runner),容器支持:Ubuntu、Windows 和 MacOS 等系统,在容器中我们可以安装软件,利用安装的软件帮我们处理一些数据,然后把处理好的数据推送到某个地方。</p> +<h2>前提</h2> +<p>1.您已经创建了hexo博客 +2.您已经注册了github的账户 +3.您已经创建了github项目并上传了hexo源码</p> +<h3>创建</h3> +<p>在项目根目录下创建<code>.github/workflows/main.yml</code></p> +<p>1.<a href="https://github.com/settings/tokens">点击此处</a>申请 Personal access tokens (classic)</p> +<p>2.在<code>Settings</code>-<code>secrets and variables</code>-<code>Actions</code>下设置<code>HEXOBLOG</code>为上一步得到的<code>Personal access tokens</code></p> +<p><img src="https://image.blog.hb.cn/2024/05/08/663b110f9680f.png!style:webp" alt="1.png" /></p> +<p>3.可以把以下内容粘贴进去</p> +<pre><code>run-name: Deploy + +on: + push: + branches: + - main + + release: + types: + - published + + workflow_dispatch: + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v2 + with: + ref: main + + - name: Setup Node + uses: actions/setup-node@v1 + with: + node-version: "18.x" + + - name: Install Hexo + run: | + npm install hexo-cli -g + + - name: Cache Modules + uses: actions/cache@v1 + id: cache-modules + with: + path: node_modules + key: ${{runner.OS}}-${{hashFiles('**/package-lock.json')}} + + - name: npm Install + run: | + npm install + + - name: Generate + run: | + hexo clean + hexo generate + hexo deploy + + - name: Deploy + uses: peaceiris/actions-gh-pages@v3 + with: + personal_token: ${{ secrets.hexoblog }} + PUBLISH_BRANCH: gh-pages + PUBLISH_DIR: ./public + commit_message: ${{ github.event.head_commit.message }} +</code></pre> +<h3>实现的功能</h3> +<p>在hexo项目<code>main</code>分支有更新时,会自动更新仓库下分支<code>gh-pages</code></p> +在fly.io部署Alisthttps://blog.ittst.com/posts/deploy-alist-in-fly.io/https://blog.ittst.com/posts/deploy-alist-in-fly.io/这篇文章介绍了如何在Windows系统上安装FLYCTL工具,并详细说明了初始化、创建应用、设置参数、编辑配置文件、部署应用以及获取管理员密码的步骤。文章通过图文结合的方式,展示了每一步的操作流程,并提供了一个演示链接以供参考。Sat, 27 Jan 2024 00:00:00 GMT<h2>安装flyctl</h2> +<p>此处以Windows安装为例</p> +<pre><code>pwsh -Command "iwr https://fly.io/install.ps1 -useb | iex" +</code></pre> +<h2>初始化</h2> +<pre><code>flyctl launch +</code></pre> +<p>按照提示创建一个app +<img src="https://images.loliko.cn/2024/01/QQ%E6%88%AA%E5%9B%BE20240127183905.png" alt="image" /> +选择<code>N</code>会跳出网页要求填写 +<img src="https://images.loliko.cn/2024/01/QQ%E6%88%AA%E5%9B%BE20240127184113.png" alt="image" /> +<code>APP name</code> 自己设置 +<code>port</code> 为5244 +<code>RAM</code>选择<code>256MB</code></p> +<h2>创建一个1G的可持久卷</h2> +<pre><code>flyctl volumes create alist_data --region hkg --size 1 +</code></pre> +<h2>编辑fly.toml</h2> +<p>参照以下内容编辑</p> +<pre><code>app = "alist" +primary_region = "hkg" + +[build] + image = "xhofe/alist:latest" + +[env] + PUID = "0" + PGID = "0" + UMASK = "022" + +[[mounts]] + source = "alist_data" + destination = "/opt/alist/data" + +[http_service] + internal_port = 5244 + force_https = true + auto_stop_machines = false + auto_start_machines = true + min_machines_running = 0 + processes = ["app"] + +[[vm]] + cpu_kind = "shared" + cpus = 1 + memory_mb = 256 +</code></pre> +<h2>部署</h2> +<pre><code>flyctl deploy +</code></pre> +<p>等待完成,会得到一个网址</p> +<h2>演示</h2> +<p>https://so4.fly.dev</p> +<h2>获取管理员密码</h2> +<p>进入SSH</p> +<pre><code>flyctl ssh console +</code></pre> +<p>执行</p> +<pre><code>./alist admin set NEW_PASSWORD +</code></pre> +<p><code>NEW_PASSWORD</code>为自己设置的密码</p> +使用Docker快速部署mastodon实例https://blog.ittst.com/posts/use-docker-to-quickly-deploy-mastodon-instances/https://blog.ittst.com/posts/use-docker-to-quickly-deploy-mastodon-instances/这篇文章介绍了如何使用Docker快速部署Mastodon实例的详细步骤,包括创建目录、拉取镜像、修改Docker Compose配置文件、初始化PostgreSQL数据库、配置Mastodon、运行引导、写入配置文件、启动Mastodon、文件夹赋权和创建管理员账户等。Mon, 30 Oct 2023 00:00:00 GMT<h2>如何使用Docker快速部署mastodon实例</h2> +<p>直接使用docker compose部署是不可行的,需要按照步骤进行</p> +<h3>创建目录</h3> +<pre><code>mkdir -p /home/mastodon/mastodon +</code></pre> +<h3>进入目录</h3> +<pre><code>cd /home/mastodon/mastodon +</code></pre> +<h3>拉取镜像</h3> +<pre><code>docker pull ghcr.io/mastodon/mastodon +</code></pre> +<h3>修改docker compose配置文件</h3> +<pre><code>wget https://raw.githubusercontent.com/mastodon/mastodon/main/docker-compose.yml +</code></pre> +<p>修改<code>docker compose</code>文件中的版本号</p> +<h3>初始化PostgreSQL</h3> +<ul> +<li>重要!!!!!</li> +</ul> +<pre><code>docker run --name postgres14 -v /home/mastodon/mastodon/postgres14:/var/lib/postgresql/data -e POSTGRES_PASSWORD=设置数据库管理员密码 --rm -d postgres:14-alpine +</code></pre> +<p>进入数据库</p> +<pre><code>docker exec -it postgres14 psql -U postgres +</code></pre> +<p>创建用户名mastodon的密码</p> +<pre><code>CREATE USER mastodon WITH PASSWORD '数据库密码(最好和数据库管理员密码不一样)' CREATEDB; +</code></pre> +<p>停止docker</p> +<pre><code>docker stop postgres14 +</code></pre> +<h3>配置Mastodon</h3> +<p>在<code>/home/mastodon/mastodon</code>根文件夹中创建空白<code>.env.production</code>文件</p> +<pre><code>cd /home/mastodon/mastodon +touch .env.production +</code></pre> +<p>运行引导</p> +<pre><code>docker-compose run --rm web bundle exec rake mastodon:setup +</code></pre> +<p>按照提示进行操作 +<code>Below is your configuration, save it to an .env.production file outside Docker:</code>之后会出现配置文件的数据,复制下来 +写入<code>.env.production</code>中</p> +<p>启动Mastodon</p> +<pre><code>docker-compose down +docker-compose up -d +</code></pre> +<p>文件夹赋权</p> +<pre><code>chown 991:991 -R ./public +chown -R 70:70 ./postgres14 +docker-compose down +docker-compose up -d +</code></pre> +<p>创建管理员</p> +<pre><code>docker exec mastodon-web-1 tootctl accounts create USERNAME --email EMAIL --confirmed --role Owner +</code></pre> +<p>至此完成</p> +快速部署misskey实例https://blog.ittst.com/posts/quickly-deploy-misskey-instance/https://blog.ittst.com/posts/quickly-deploy-misskey-instance/这篇文章介绍了如何在纯净的Ubuntu系统上使用一键脚本安装和更新Misskey,推荐配置为双核心四线程。文章详细说明了更新脚本的步骤,以及如何使用Docker Compose进行部署,包括环境准备、Git克隆仓库、编辑配置文件、构建镜像、启动容器和设置反向代理的步骤。Wed, 11 Oct 2023 00:00:00 GMT<h2>使用官方推荐一键脚本</h2> +<p>使用纯净的Ubuntu系统安装,推荐配置双核心四线程.</p> +<h3>更新软件</h3> +<pre><code>sudo apt update; sudo apt full-upgrade -y; sudo reboot +</code></pre> +<h3>一键脚本</h3> +<pre><code>wget https://raw.githubusercontent.com/joinmisskey/bash-install/main/ubuntu.sh -O ubuntu.sh; sudo bash ubuntu.sh +</code></pre> +<p>按照提示输入内容</p> +<h3>更新misskey脚本</h3> +<p>更新 Misskey 的脚本不会升级运行环境。 对于脚本的更新内容,另请参阅 “更新日志”</p> +<pre><code>wget https://raw.githubusercontent.com/joinmisskey/bash-install/main/update.ubuntu.sh -O update.sh +</code></pre> +<pre><code>sudo bash update.sh +</code></pre> +<ul> +<li>使用 systemd 的小伙伴, 添加 -r 可以更新并重启系统。</li> +<li>使用 docker 的小伙伴, 可以特定软件包版本 repository:tag 来更新。</li> +</ul> +<h2>使用docker compose部署</h2> +<h3>环境</h3> +<ul> +<li>git</li> +<li>docker</li> +<li>nginx</li> +</ul> +<h3>步骤</h3> +<h4>git克隆仓库</h4> +<pre><code>cd /opt +git clone -b master https://github.com/misskey-dev/misskey.git +cd misskey +git checkout master +</code></pre> +<h4>复制配置文件:</h4> +<pre><code>cp .config/example.yml .config/default.yml +cp .config/docker_example.env .config/docker.env +cp docker-compose.yml.example docker-compose.yml +</code></pre> +<h4>编辑default.yml中</h4> +<p><code>url</code>设置为实例域名 +db:<code>host</code>设置为<code>db</code> +redis:<code>host</code>设置为<code>redis</code></p> +<h4>构建镜像</h4> +<pre><code>docker compose build +docker compose run --rm web yarn run init +</code></pre> +<p>完成之后</p> +<h4>启动容器</h4> +<pre><code>docker compose up -d +</code></pre> +<h4>反向代理</h4> +<p>参考以下</p> +<pre><code>map $http_upgrade $connection_upgrade { + default upgrade; + '' close; +} + +proxy_cache_path /tmp/nginx_cache levels=1:2 keys_zone=cache1:16m max_size=1g inactive=720m use_temp_path=off; + +server { + listen 80; + listen [::]:80; + server_name misskey.example.com; + client_max_body_size 0; + + location / { + proxy_pass http://127.0.0.1:3000; + proxy_set_header Host $host; + proxy_http_version 1.1; + proxy_redirect off; + + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto https; + + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection $connection_upgrade; + + proxy_cache cache1; + proxy_cache_lock on; + proxy_cache_use_stale updating; + add_header X-Cache $upstream_cache_status; + } +} +</code></pre> +Mariadb创建数据库、用户及授权https://blog.ittst.com/posts/mariadb-creates-databases,-users-and-authorization/https://blog.ittst.com/posts/mariadb-creates-databases,-users-and-authorization/这篇文章介绍了在测试SForum程序中涉及的数据库操作流程,包括安装MARIADB服务器、初始化数据库、连接数据库、创建数据库和本地访问账户、创建用户并设置参数(如用户名、访问方式和密码)、分配权限(包括所有权限和部分权限)以及授权操作权限。Fri, 06 Oct 2023 00:00:00 GMT<p>在测试<code>SForum</code>程序中使用到的部分关于数据库的操作</p> +<h2>安装Mariadb服务器</h2> +<pre><code>apt install mariadb-server-10.6 +</code></pre> +<h2>初始化数据库</h2> +<pre><code> mysql_secure_installation +</code></pre> +<h2>连接数据库</h2> +<pre><code>mysql -u root -p +</code></pre> +<h2>创建数据库</h2> +<pre><code>CREATE DATABASE bbs; +</code></pre> +<h2>创建一个本地访问数据库的账户</h2> +<h3>创建用户</h3> +<pre><code>CREATE USER 'username'@'localhost' IDENTIFIED BY 'password'; +</code></pre> +<h3>参数:</h3> +<p><code>username</code>:数据库访问的账户;<code>localhost</code>:数据库的访问方式,外网访问的时候用%替换localhost即可;<code>password</code>:数据库访问密码,此处输入密码明文;</p> +<h2>给测试账户分配权限</h2> +<h3>分配所有权限</h3> +<p>给用户分配所有的权限,并且通过localhost访问</p> +<pre><code>GRANT ALL ON bbs.* to username@'localhost' IDENTIFIED BY 'password'; +FLUSH privileges; +</code></pre> +<h3>分配部分权限</h3> +<h4>给账户分配部分的权限,并且通过外网访问</h4> +<pre><code>GRANT insert,delete,select,update ON test.* to username@'%' IDENTIFIED BY 'password'; +FLUSH privileges; +</code></pre> +<h4>或则采用下面的代码,除了操作权限授权外,还赋予授权的权限。</h4> +<pre><code>GRANT ALL ON test.* to username@'%' IDENTIFIED BY 'passowrd' WITH GRANT OPTION; +FLUSH privileges; +</code></pre> +测试xiuno2Sforum中遇到的各种问题https://blog.ittst.com/posts/test-various-problems-encountered-in-xiuno2sforum/https://blog.ittst.com/posts/test-various-problems-encountered-in-xiuno2sforum/这篇文章介绍了如何将XiunoBBS数据转换为SForum的过程,使用的是SForum v2.2.2版本。文章详细描述了测试环境配置,包括Ubuntu 22.0.4、PHP8.0、MariaDB10.6、Composer、Redis和Nginx或Apache的安装与配置。此外,还涉及了PHP扩展ZIPARCHIVE的安装问题解决,以及通过Composer安装Medoo类库,创建和导入MariaDB数据库,安装Redis和Nginx,最后完成SForum v2.2.2的安装步骤。Fri, 06 Oct 2023 00:00:00 GMT<p>想把<code>xiuno</code>bbs数据转换成<code>SForum</code>,由于最新版本的<code>SForum</code>没有转换工具支持 +于是采用<code>Sforum</code> v2.2.2测试</p> +<h1>测试环境</h1> +<ul> +<li>Ubuntu 22.0.4</li> +<li>php8.0</li> +<li>mariadb10.6</li> +<li>composer</li> +<li>redis</li> +<li>nginx or apache</li> +</ul> +<h2>测试程序</h2> +<p>sforum v2.2.2</p> +<p>xiuno2sforum v2.2.2</p> +<h2>PHP</h2> +<h3>安装PPA 源</h3> +<p>需要使用 PPA 源安装:</p> +<pre><code>sudo apt install software-properties-common -y +sudo add-apt-repository ppa:ondrej/php +sudo apt-get update +</code></pre> +<h4>安装php8.0</h4> +<pre><code>apt install php8.0 +</code></pre> +<pre><code>apt install -y php8.0-dev +</code></pre> +<h4>安装拓展</h4> +<pre><code>apt install php8.0-curl php8.0-xml php8.0-gd php8.0-mbstring php8.0-redis php8.0-swoole php8.0-bcmath php-intl -y +</code></pre> +<h3>查看php版本</h3> +<pre><code>php -v +</code></pre> +<p>查看拓展</p> +<pre><code>php -m +</code></pre> +<h3>切换PHP版本</h3> +<pre><code>update-alternatives --config php +</code></pre> +<p>切换到</p> +<pre><code>update-alternatives --set php /usr/bin/php8.0 +</code></pre> +<h3>PHP 扩展 ZipArchive</h3> +<p>上传压缩包提示500错误,打开日志发现是缺少组件</p> +<h4>服务器上存在多个php版本,手动指定php-config文件</h4> +<pre><code>./configure --with-php-config=/www/server/php/73/bin/php-config +</code></pre> +<h4>安装ZipArchive扩展</h4> +<h5>编译<code>ZipArchive</code></h5> +<pre><code>cd ~ +wget http://pecl.php.net/get/zip +tar -zxvf zip +cd zip-x.x.x +phpize +./configure +make +make install +</code></pre> +<h4>成功安装zip之后会返回一个路径:</h4> +<p>类似</p> +<pre><code>Installing shared extensions: /www/server/php/8/lib/php/extensions/no-debug-non-zts-20180731/ +</code></pre> +<h4>加到php.ini中:</h4> +<pre><code>extension=/www/server/php/8/lib/php/extensions/no-debug-non-zts-20180731/zip.so +</code></pre> +<p>或 +在<code>php.ini</code>中添加</p> +<pre><code> extension=zip.so +</code></pre> +<h4>提示<code>checking for libzip... not found</code></h4> +<h5>编译<code>libzip</code></h5> +<pre><code>wget https://libzip.org/download/libzip-1.3.2.tar.gz +tar xvf libzip-1.3.2.tar.gz +cd libzip-1.3.2 +./configure +make +make install +export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig/" +</code></pre> +<h3>在使用插件转换数据中一直报错无法使用的class medoo</h3> +<p>所以使用cpmposer安装</p> +<pre><code>composer require catfan/Medoo +</code></pre> +<h2>mariadb</h2> +<h3>创建数据库</h3> +<p><a href="https://blog.loliko.cn/2023/dfdf0a76.html">Mariadb创建数据库、用户及授权</a></p> +<h3>数据导入</h3> +<p>导入sql备份文件</p> +<p>进入数据库</p> +<pre><code>mysql -uroot -p +</code></pre> +<p>使用数据库bbs</p> +<pre><code>use bbs +</code></pre> +<p>导入sql路径</p> +<pre><code>source /root/bbs.sql; +</code></pre> +<h2>安装 Redis</h2> +<pre><code>apt install redis-server +</code></pre> +<h2>安装 Nginx</h2> +<pre><code>apt install nginx +</code></pre> +<h2>安装composer</h2> +<pre><code>apt install git zip unzip +curl -sS https://getcomposer.org/installer | php +mv composer.phar /usr/local/bin/composer +chmod +x /usr/local/bin/composer +</code></pre> +<h2>安装SForum v2.2.2</h2> +<pre><code>composer create-project zhuchunshu/sforum=v2.2.2 sforum +</code></pre> +<p>进入安装目录,</p> +<pre><code>cd sforum +</code></pre> +<p>按照提示,连续执行命令即可完成安装(启动服务也是此命令):</p> +<pre><code>php CodeFec CodeFec +</code></pre> +centos在yum时出现Determining fastest mirrorshttps://blog.ittst.com/posts/centos-appears-at-yum/https://blog.ittst.com/posts/centos-appears-at-yum/这篇文章介绍了两个关于Yum使用中的问题及其解决方法。第一个问题是yum makecache时卡在Determining fastest mirrors,解决方法是禁用fastestmirror插件,通过修改/etc/yum/pluginconf.d/fastestmirror.conf和/etc/yum.conf文件实现。第二个问题是无法访问ELRepo镜像列表,解决方法是更新ELRepo软件仓库镜像,通过替换/etc/yum.repos.d/elrepo.repo文件中的mirrorlist地址来实现。Thu, 05 Oct 2023 00:00:00 GMT<h2>问题1</h2> +<p>在<code>yum makecache</code>时,停在<code>Determining fastest mirrors</code>,一直在判断最快镜像,由于已经指定了yum源,所以不需要些插件,可以用动禁用。</p> +<p>解决方法:</p> +<p>修改<code>/etc/yum/pluginconf.d/fastestmirror.conf</code>里面的<code>enabled=0</code>;</p> +<p>修改<code>/etc/yum.conf</code>里面的<code>plugins=0</code></p> +<p>问题解决。</p> +<h2>问题2</h2> +<p>Could not retrieve mirrorlist http://mirrors.elrepo.org/mirrors-elrepo.el7 error was +12: Timeout on http://mirrors.elrepo.org/mirrors-elrepo.el7: (28, 'Connection timed out after 30001 milliseconds')</p> +<p>镜像列表http://mirrors.elrepo.org/mirrors-elrepo.el7 的地址无法访问</p> +<p>解决方法</p> +<p>更新ELRepo 软件仓库镜像 +首先按照官网的安装说明,配置 ELRepo:</p> +<pre><code>rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org +</code></pre> +<p>按照你的系统版本,运行:</p> +<pre><code>yum install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm +</code></pre> +<p>接下来是换源,建议先备份 <code>/etc/yum.repos.d/elrepo.repo</code> :</p> +<pre><code>cp /etc/yum.repos.d/elrepo.repo /etc/yum.repos.d/elrepo.repo.bak +</code></pre> +<p>然后编辑<code> /etc/yum.repos.d/elrepo.repo</code> 文件,在 <code>mirrorlist= </code>后的地址替换为</p> +<pre><code>https://mirrors.tuna.tsinghua.edu.cn/elrepo +</code></pre> +<p>最后,更新软件包缓存</p> +<pre><code>yum makecache +</code></pre> +Docker部署Activity-Relay服务https://blog.ittst.com/posts/docker-deploy-activity-relay-service/https://blog.ittst.com/posts/docker-deploy-activity-relay-service/这篇文章介绍了在CentOS 7.9环境下部署一个项目的过程,包括安装必要的软件(如git、openssl、nginx、docker和docker-compose),从仓库拉取代码,编辑配置文件,生成RSA证书,构建并运行Docker镜像,查看容器状态,以及停止服务的步骤。同时还提到了Ubuntu和CentOS在生成证书时的不同命令,以及权限设置和Nginx配置的相关参考。Tue, 03 Oct 2023 00:00:00 GMT<ul> +<li>经过测试国内部署会有无法通讯的问题.</li> +</ul> +<h2>测试环境</h2> +<p>centos7.9</p> +<h2>准备工作</h2> +<ul> +<li>git</li> +<li>openssl</li> +<li>nginx</li> +<li>docker</li> +<li>docker-compose</li> +</ul> +<h2>从仓库Pull a repository</h2> +<pre><code>git clone https://github.com/yukimochi/Activity-Relay.git -b v2.0.0 +</code></pre> +<h2>复制编辑config.yml</h2> +<p>进入<code>Activity-Relay</code>目录</p> +<pre><code>cd Activity-Relay +cp config.yml.example config.yml +</code></pre> +<p>修改相关配置</p> +<pre><code>vim config.yml +</code></pre> +<h2>生成actor RSA 证书 ./actor.pem</h2> +<p>ubuntu使用</p> +<pre><code>openssl genrsa -traditional | tee actor.pem +</code></pre> +<p>centos使用</p> +<pre><code>openssl genrsa -out actor.pem 1024 | tee actor.pem +</code></pre> +<p>赋予权限600</p> +<pre><code>chmod 600 actor.pem +</code></pre> +<h2>构建镜像与运行服务</h2> +<pre><code>docker-compose build +docker-compose up -d +</code></pre> +<h2>查看容器运行状态</h2> +<pre><code>docker-compose ps +</code></pre> +<h2>停止服务</h2> +<pre><code>docker-compose down +</code></pre> +<h2>相关参考</h2> +<p>docker-compose配置</p> +<pre><code>version: "2.3" +services: + redis: + restart: always + image: redis:alpine + healthcheck: + test: ["CMD", "redis-cli", "ping"] + volumes: + - "./redisdata:/data" + + worker: + container_name: worker + build: . + image: yukimochi/activity-relay + working_dir: /var/lib/relay + restart: always + init: true + command: relay worker + volumes: + - "./actor.pem:/var/lib/relay/actor.pem" + - "./config.yml:/var/lib/relay/config.yml" + depends_on: + - redis + + server: + container_name: relay + build: . + image: yukimochi/activity-relay + working_dir: /var/lib/relay + restart: always + init: true + ports: + - "8080:8080" + command: relay server + volumes: + - "./actor.pem:/var/lib/relay/actor.pem" + - "./config.yml:/var/lib/relay/config.yml" + depends_on: + - redis + +</code></pre> +<p>Nginx设置</p> +<pre><code>upstream relay { + server 127.0.0.1:8080; + } + server { + server_name relay.example.com; + + location / { + root /var/lib/relay; + try_files $uri $uri/index.html =404; + } + + location /inbox { + rewrite ^/inbox(.*) /$1 break; + proxy_pass http://relay/; + proxy_pass_request_headers on; + proxy_set_header Host $http_host; + } + + location /actor { + rewrite ^/inbox(.*) /$1 break; + proxy_pass http://relay/; + proxy_pass_request_headers on; + proxy_set_header Host $http_host; + } + + } + +</code></pre> +NEC M700黑苹果OC0.9.4引导https://blog.ittst.com/posts/nec-m700-black-apple-oc0.9.4-guide/https://blog.ittst.com/posts/nec-m700-black-apple-oc0.9.4-guide/这篇文章介绍了如何在NEC M700笔记本上安装黑苹果,使用OpenCore 0.9.4引导。文章详细列出了笔记本的硬件配置,包括CPU、主板、内存、硬盘、无线网卡、有线网卡和声卡。此外,还提到了安装前的准备工作,如使用U盘、解锁CFG LOCK工具、ami BIOS提取工具和OCAT。具体步骤包括在Windows系统下提取BIOS文件,并通过UEFI TOOL打开并查找cfg lock项。Sun, 01 Oct 2023 00:00:00 GMT<h2>NEC M700黑苹果OC0.9.4引导</h2> +<h3>配置</h3> +<p>CPU QHPW 2.2Ghz 四核心八线程I7es魔改 +主板NEC +内存8GB DDR4 2666Mhz +硬盘512GB SSD +无线网卡BCM943224pcieBT拆机 +有线网卡INTEL +声卡ALC235</p> +<h3>准备工作</h3> +<p>U盘 16G以上 +解锁CFG LOCK工具 +ami BIOS提取工具 +opencore +OCAT</p> +<h3>解锁CFG LOCK</h3> +<p>在WINDOWS系统下通过工具提取出BIOS. +通过<code>UEFI TOOL</code>打开提取出的BIOS文件,查找<code>cfg lock</code></p> +在fly.io部署Gotosocialhttps://blog.ittst.com/posts/deploy-gotosocial-in-fly.io/https://blog.ittst.com/posts/deploy-gotosocial-in-fly.io/这篇文章介绍了如何安装和配置GoToSocial,一个轻量级的ActivityPub联邦社交网络程序。文章详细说明了注册Fly.io和Cloudflare账户的步骤,安装FLYCTL的方法,以及如何在不同操作系统上进行操作。此外,还涵盖了创建应用、储存卷、编辑配置文件、部署应用、创建用户和管理员账户的具体步骤,并提供了演示链接和下载数据库的方法。Thu, 17 Aug 2023 00:00:00 GMT<h2>关于Gotosocial</h2> +<p>GoToSocial 是一个十分轻量(轻量到甚至没有用户界面,需要使用第三方程序登录、兼容 Mastodon 应用进行使用)的 ActivityPub 联邦社交网络程序,自建 GoToSocial 可以避免您的信息因为所在实例倒闭、不可抗力等原因化为乌有。</p> +<h2>准备</h2> +<ul> +<li>注册 Fly.io 账号,并绑卡(避免滥用);</li> +<li>注册 Cloudflare 并启用 R2,启用 R2 需要绑卡。新建一个储存桶并创建一个 API 令牌。</li> +</ul> +<h2>安装 flyctl</h2> +<ul> +<li>Linux</li> +</ul> +<pre><code>curl -L https://fly.io/install.sh | sh +</code></pre> +<ul> +<li>macOS</li> +</ul> +<pre><code>curl -L https://fly.io/install.sh | sh +</code></pre> +<ul> +<li>Windows,需要开启 RemoteSigned: 管理员运行</li> +</ul> +<pre><code> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned +</code></pre> +<pre><code>powershell -Command "iwr https://fly.io/install.ps1 -useb | iex" +</code></pre> +<h2>登录</h2> +<pre><code>flyctl auth login + +# 若登录失败使用 +# flyctl auth login -i +# 输入账号密码进行登录 +</code></pre> +<h2>创建APP</h2> +<p><code>YOURAPPNAME</code>更改为自己希望设置的名称</p> +<pre><code>flyctl launch --name YOURAPPNAME --image=superseriousbusiness/gotosocial:latest --region hkg --no-deploy +</code></pre> +<h2>创建储存卷</h2> +<pre><code>flyctl volumes create social_data --region hkg --size 1 +</code></pre> +<h2>编辑配置</h2> +<p>编辑根目录下的 <code>fly.toml</code> 配置文件,参考下方</p> +<pre><code>app = "gotos" ## 自定义名称 +primary_region = "hkg" ##服务器节点,当前为香港 + +[experimental] + vm = true + +[build] + image = "superseriousbusiness/gotosocial:latest" + +[env] + GTS_DB_ADDRESS = "/gotosocial/storage/sqlite.db" + GTS_DB_TLS_MODE = "enable" + GTS_DB_TYPE = "sqlite" + GTS_HOST = "GTS的域名" + GTS_LETSENCRYPT_ENABLED = "false" + GTS_STORAGE_BACKEND = "s3" + GTS_STORAGE_S3_BUCKET = "BUCKET名称" + GTS_STORAGE_S3_ENDPOINT = "#S3 API" + GTS_STORAGE_S3_ACCESS_KEY = "#api-tokens" + GTS_STORAGE_S3_SECRET_KEY = "#api-tokens" + GTS_STORAGE_S3_PROXY = "true" + # 添加时区为UTC+8 + TZ = "Asia/Chongqing" + +[[mounts]] + source = "social_data" + destination = "/gotosocial/storage" + +[http_service] + internal_port = 8080 + force_https = true + auto_stop_machines = false + auto_start_machines = true + min_machines_running = 1 + processes = ["app"] +</code></pre> +<p>以上配置中<code>GTS_STORAGE_S3_ENDPOINT</code>不需要带<code>https:</code>和最后的<code>/BUCKET名称</code></p> +<h2>部署</h2> +<pre><code>flyctl deploy +</code></pre> +<p>启动成功后会显示一个URL,能成功访问则代表部署成功。</p> +<h2>创建用户和管理员</h2> +<p>在 <code>fly.toml </code>文件目录执行</p> +<pre><code>flyctl ssh console +</code></pre> +<ul> +<li>创建用户</li> +</ul> +<pre><code>/gotosocial/gotosocial admin account create --username YOUR_USERNAME --email YOUR@EMAIL.COM --password 'SOME_VERY_GOOD_PASSWD' +</code></pre> +<p><code>YOUR_USERNAME</code>为用户名 +<code>YOUR@EMAIL.COM</code>为邮箱 +<code>SOME_VERY_GOOD_PASSWD</code>为密码,需设置足够复杂,太简单会提示密码不够安全,需重新设置</p> +<ul> +<li>设置管理员</li> +</ul> +<pre><code>/gotosocial/gotosocial admin account promote --username YOUR_USERNAME +</code></pre> +<h2>演示</h2> +<p>https://m.ima.cm</p> +<p>https://m.ima.cm/@jkjoy</p> +<h2>下载数据库</h2> +<p>在 <code>fly.toml </code>文件目录执行</p> +<pre><code>flyctl sftp get /gotosocial/storage/sqlite.db +</code></pre> +在fly.io部署artalk评论系统https://blog.ittst.com/posts/deploy-the-artalk-review-system-in-fly.io/https://blog.ittst.com/posts/deploy-the-artalk-review-system-in-fly.io/这篇文章介绍了如何在Fly.io平台上使用其提供的免费服务,包括安装flyctl命令行工具、创建应用、分配1G硬盘空间以及编辑FLY.TOML文件来设置管理员账号和重启服务的步骤。Fly.io提供三个256MB内存的服务器和总3G硬盘空间,但需要绑定信用卡以防止滥用。Tue, 15 Aug 2023 00:00:00 GMT<p>众所周知<code>Fly.io</code>是一个免费的SAAS平台 +提供三个内存为256MB的服务器,总3G硬盘空间. +为防止滥用,需要绑定信用卡.</p> +<h2>准备</h2> +<p>安装官方的命令行工具flyctl</p> +<h2>初始化</h2> +<pre><code>flyctl launch +</code></pre> +<p>根据提示创建一个app</p> +<h2>创建一个1G的硬盘</h2> +<p>1G的硬盘用来储存评论数据绰绰有余了</p> +<pre><code>flyctl volumes create artalk_data --region hkg --size 1 +</code></pre> +<h2>编辑FLY.TOML</h2> +<pre><code>#根据自动生成的FLY.TOML文件修改 +app = "atim" +primary_region = "hkg" + +[build] + image = "artalk/artalk-go" + +[http_service] + internal_port = 23366 + force_https = true + auto_stop_machines = true + auto_start_machines = true + min_machines_running = 0 + processes = ["app"] + +[[mounts]] + source = "artalk_data" + destination = "/data" + +[experimental] + vm = true +</code></pre> +<h2>在 fly.toml 文件目录执行</h2> +<pre><code>flyctl ssh console +</code></pre> +<p>创建一个管理员账号</p> +<pre><code>./artalk admin +</code></pre> +<p>如需重启则执行</p> +<pre><code>flyctl apps restart +</code></pre> +如何在Fly.io部署Memoshttps://blog.ittst.com/posts/how-to-deploy-memos-in-fly.io/https://blog.ittst.com/posts/how-to-deploy-memos-in-fly.io/这篇文章介绍了如何在FLY.IO上部署memos应用,并使用Backblaze B2云存储进行数据库备份。文章详细说明了注册FLY.IO和Backblaze B2的步骤,安装flyctl工具,创建和配置FLY.TOML文件,添加持久卷和密钥,最后进行应用部署。此外,还提供了演示地址和绑定域名的示例。Tue, 15 Aug 2023 00:00:00 GMT<h2>项目</h2> +<p>https://github.com/hu3rror/memos-on-fly</p> +<h2>准备工作</h2> +<ul> +<li>注册FLY.IO +用以部署memos</li> +<li>注册B2C +https://www.backblaze.com/cloud-storage +用以同步备份memos数据库 +新建BUCKET,并获取<code>&lt;keyId&gt;</code>和<code>&lt;applicationKey&gt;</code></li> +</ul> +<h2>安装flyctl</h2> +<p>Install flyctl +以WINDOWS为例</p> +<pre><code>pwsh -Command "iwr https://fly.io/install.ps1 -useb | iex" +</code></pre> +<p>其他系统请参照官方</p> +<h2>新建APP</h2> +<p>初始化</p> +<pre><code>flyctl launch +</code></pre> +<p>按照提示选择会生成一个FLY.TOML文件</p> +<h2>编辑FLY.TOML</h2> +<p>添加以下</p> +<pre><code>[build] + image = "ghcr.io/hu3rror/memos-litestream:latest" +#如果不需要备份数据库则可以选择官方的docker镜像ghcr.io/usememos/memos:latest +#使用官方镜像可以删掉env的部分 +[env] + # Details see: https://litestream.io/guides/backblaze/ + LITESTREAM_REPLICA_BUCKET = "B2C桶名称" # change to your litestream bucket name + LITESTREAM_REPLICA_ENDPOINT = "s3.us-east-005.backblazeb2.com" # change to your litestream endpoint url + LITESTREAM_REPLICA_PATH = "memos_prod.db" # keep the default or change to whatever path you want + +[[mounts]] + source = "memos_data" + destination = "/var/opt/memos" + +[http_service] + internal_port = 5230 + force_https = true + auto_stop_machines = false + auto_start_machines = true + min_machines_running = 0 +</code></pre> +<h2>添加持久卷</h2> +<pre><code>flyctl volumes create memos_data --region hkg --size 1 +</code></pre> +<h2>密钥</h2> +<p>将B2存储的密钥添加到fly的密钥存储中,使用官方镜像可以忽略此步骤</p> +<pre><code>flyctl secrets set LITESTREAM_ACCESS_KEY_ID="&lt;keyId&gt;" LITESTREAM_SECRET_ACCESS_KEY="&lt;applicationKey&gt;" +</code></pre> +<h2>部署</h2> +<pre><code>flyctl deploy +</code></pre> +<h2>演示地址</h2> +<p>https://memosim.fly.dev/ +绑定域名演示 +https://imad.top</p> +使用 Docker 构建 Pleroma 实例https://blog.ittst.com/posts/use-docker-to-build-a-pleroma-example/https://blog.ittst.com/posts/use-docker-to-build-a-pleroma-example/这篇文章介绍了如何使用Docker构建Pleroma实例,Pleroma是一个基于ActivityPub协议的去中心化社区程序。文章详细说明了在宝塔面板中安装Docker、获取DOCKER-COMPOSE.YML模板、修改配置文件、启动容器、添加反向代理、创建管理员账户以及修改文件夹权限的步骤。此外,还提到了如果使用S3协议的对象存储则无需修改文件夹权限,并提供了一个演示地址。Mon, 24 Jul 2023 00:00:00 GMT<p>Pleroma 是一个去中心化的社区程序,其基于 ActivityPub 协议。 +而 ActivityPub 包括 Mastodon(Pawoo 等)、Misskey(misskey.io 等)、Pleroma 等等。 +在这些开源产品中,Pleroma 实机上部署环境步骤复杂繁琐。 +但它是对服务器性能要求最低的微博客工具,它的配置要求多低呢? +现在 docker 的出现大大简化了部署的方式,只需要简单三步即可轻松搭建实例。</p> +<p>本文将介绍如何使用 docker 构建 Pleroma 实例。 +以宝塔面板为例</p> +<h3>先安装docker</h3> +<p>在应用商店中查找docker并安装</p> +<h3>获取 docker-compose.yml 模板</h3> +<pre><code>git clone https://git.pleroma.social/pleroma/pleroma-docker-compose.git +cd pleroma-docker-compose +</code></pre> +<p>接下来所有操作(除 nginx 配置)如果没有加以说明都在这个目录下进行。</p> +<h3>需要修改的内容</h3> +<p>打开<code>./enviroments/pleroma/pleroma.env</code>,修改其中的配置:</p> +<pre><code>DB_USER=pleroma # 数据库用户名 +DB_PASS=pleroma # 数据库密码 +DB_HOST=pleroma-db # 数据库地址 +DB_NAME=pleroma # 数据库名 +INSTANCE_NAME=Pleroma # 实例名 +ADMIN_EMAIL=admin@ops.pleroma.social # 管理员邮箱 +NOTIFY_EMAIL=pleroma+admin@ops.pleroma.social # 通知邮箱 +DOMAIN=s.pwq.app # 实例域名 +PORT=4000 # 实例运行端口 +</code></pre> +<p>只需要修改域名和邮箱即可 +打开<code>./volumes/pleroma/config.exs</code> +在下面添加</p> +<pre><code>import Config +config :pleroma, configurable_from_database: true +</code></pre> +<h3>启动容器</h3> +<p>随后运行</p> +<pre><code>docker-compose up -d +</code></pre> +<p>启动容器。</p> +<h3>添加反向代理</h3> +<pre><code>#PROXY-START/ + +location ^~ / +{ + # 4000 是你的实例容器运行端口,如果你修改过,记得改成你的端口。 + proxy_pass http://127.0.0.1:4000; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header REMOTE-HOST $remote_addr; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection $connection_upgrade; + # proxy_hide_header Upgrade; +} +</code></pre> +<h3>创建管理员账户</h3> +<pre><code>docker exec -it pleroma ./opt/pleroma/bin/pleroma_ctl user new admin 邮箱 --admin +</code></pre> +<p>运行后会出现一个链接,复制在浏览器即可重置密码.</p> +<h3>修改文件夹权限</h3> +<p><code>/root/pleroma-docker-compose/volumes/pleroma</code>下的<code>uploads</code>权限设置为<code>777</code> +当然如果你用S3协议的对象存储则不需要修改 +直接在后台设置S3即可.</p> +<h3>演示地址</h3> +<p>https://chaihu.top</p> +用Memos API实现hexo博客的动态说说页面https://blog.ittst.com/posts/use-memos-api-to-implement-the-dynamic-page-of-the-hexo-blog/https://blog.ittst.com/posts/use-memos-api-to-implement-the-dynamic-page-of-the-hexo-blog/这篇文章介绍了如何修改Memos/index.md文件的内容,并提到代码来源于网络。Tue, 13 Jun 2023 00:00:00 GMT<p>新建一个页面</p> +<pre><code>hexo new page Memos +</code></pre> +<p>修改<code>Memos/index.md</code>内容为</p> +<pre><code>--- +title: Memos +comments: false +date: 2023-06-07 14:17:13 +--- +&lt;link href="https://blogcdn.loliko.cn/memos/css/memo.css?0.0.5" rel="stylesheet" /&gt; +&lt;div id="bber"&gt;&lt;/div&gt; +&lt;script type="module" src="https://immmmm.com/emaction.js?v=230811"&gt;&lt;/script&gt; +&lt;script src="https://fastly.jsdelivr.net/npm/marked/marked.min.js"&gt;&lt;/script&gt; +&lt;script src="https://fastly.jsdelivr.net/gh/Tokinx/ViewImage/view-image.min.js"&gt;&lt;/script&gt; +&lt;script src="https://fastly.jsdelivr.net/gh/Tokinx/Lately/lately.min.js"&gt;&lt;/script&gt; +&lt;script src="https://cdn.staticfile.org/twikoo/1.6.32/twikoo.all.min.js"&gt;&lt;/script&gt; +&lt;script type="text/javascript"&gt; + var bbMemos = { + memos : 'https://memos.loliko.cn/',//修改为自己部署 Memos 的网址,末尾有 / 斜杠 + limit : '20',//默认每次显示 10 条 + creatorId:'1' ,//早期默认为 101 用户,新安装是 1; https://demo.usememos.com/u/101 + domId: '',//默认为 bber + twiEnv:'https://t.loliko.cn',//启开 twikoo 评论,默认 https://metk.edui.fun/ + } +&lt;/script&gt; +&lt;script src="https://blogcdn.loliko.cn/memos/js/memo.js?0.0.2"&gt;&lt;/script&gt; +</code></pre> +<p>即可~</p> +<p>代码来源于网络~</p> +2023国内注册ChatGPT的方法https://blog.ittst.com/posts/2023-methods-to-register-chatgpt-in-china/https://blog.ittst.com/posts/2023-methods-to-register-chatgpt-in-china/这篇文章介绍了国内用户如何注册和使用ChatGPT的方法。首先,用户需要有一个非中国大陆的网络环境和一个可以接收短信验证码的手机号码。接着,通过OpenAI官网进行账号注册,包括邮箱验证和手机号码验证。文章还提到了如果无法直接注册,可以通过搭建梯子或使用第三方接码平台来解决。最后,注册完成后,用户可以登录ChatGPT官网开始使用。Fri, 07 Apr 2023 00:00:00 GMT<h4>国内注册ChatGPT的方法</h4> +<p><code>ChatGPT</code> 是由 <code>OpenAI </code>开发的一个人工智能聊天机器人程序,于 2022 年 11 月推出,基于 GPT-3.5 架构的大型语言模型并通过强化学习进行训练,在这款软件中用户们可以与 AI 人工智能进行多种的对话工作,目前,有部分地区(例如<code>中国大陆</code>、<code>香港</code>)无法使用此项服务</p> +<p><code>ChatGPT</code>技术开发商<code>OpenAI</code>斥巨资买下<code>AI.com</code>域名,现在访问<a href="https://ai.com">AI.com</a>直接跳转到ChatGPT官网。 +2024年<a href="https://ai.com">AI.com</a>已经跳转到google Gemini的官网了</p> +<h4>ChatGPT功能</h4> +<ul> +<li>ChatGPT 在搜索和写作上非常强大。</li> +<li>ChatGPT 可以根据用户提供的信息,给出合理而有效的搜索结果,</li> +<li>ChatGPT 写的短篇小说,</li> +<li>ChatGPT 写的信件,内容通畅,用词准确。</li> +<li>ChatGPT 撰写专业的电子邮件回复</li> +<li>ChatGPT 为营销活动产生新的内容创意</li> +<li>ChatGPT 解决任何编码问题或为获取代码</li> +</ul> +<h4>国内用户注册ChatGPT的方法</h4> +<p>国内用户想要注册 ChatGPT,首先需要有一个<strong>网络环境</strong>,例如<code>美国</code>;然后,需要一个可以接收短信验证码的手机号码,之后就可以打开 ChatGPT 的网站<strong>注册 ,邮件验证,电话号码验证</strong>等等。</p> +<p><strong>如果出现如下的界面,则证明你的网络所在地区无法注册访问ChatGPT。</strong></p> +<p><code>注意:</code>如果无法搞定上述必要条件的话,可以尝试 +搭建一个梯子 <a href="https://www.sunpeiwen.com/archives/396.html">x-ui:支持多协议多用户的 xray 面板</a></p> +<h5>注册 OpenAI 账号</h5> +<p>1、点击打开 <a href="https://chat.openai.com/auth/login">https://chat.openai.com/auth/login</a> 页面中的 <code>Sign up </code>进行相应的账号注册(注意网络环境不能是<code>香港</code>,<code>澳门</code>等地区,不然会提示不能在当前国家服务)。</p> +<p><img src="https://www.pythonthree.com/wp-content/uploads/2023/02/1676427587-%E6%B3%A8%E5%86%8COpenAI%E8%B4%A6%E5%8F%B7.png" alt="注册" /> +2、在新的页面可选择注册 <code>ChatGPT</code> 账号的方式,可以使用邮箱(国内邮箱也可以,建议使用国外邮箱),,或者有谷歌账号的邮箱,或者用 Microsoft Account 注册也可以。</p> +<p><img src="https://www.pythonthree.com/wp-content/uploads/2023/02/1676427844-%E9%80%89%E6%8B%A9%E5%88%9B%E5%BB%BAChatGPT%E8%B4%A6%E5%8F%B7%E7%9A%84%E6%96%B9%E5%BC%8F.png" alt="选择创建ChatGPT账号的方式" /> +<strong>使用邮箱注册ChatGPT时</strong>,输入邮箱地址,点击<code>Continue</code>,之后输入密码,进入下一步骤。</p> +<p><img src="https://www.pythonthree.com/wp-content/uploads/2023/02/1676428115-%E4%BD%BF%E7%94%A8%E9%82%AE%E7%AE%B1%E6%B3%A8%E5%86%8CChatGPT.png" alt="使用邮箱注册ChatGPT" /> +<strong>使用 Microsoft Account 注册ChatGPT时</strong>,可以使用Microsoft账号登录,如果有Github账号的话,可点击<code>登录选项</code>,然后选择使用Github账号 注册。</p> +<p><img src="https://www.pythonthree.com/wp-content/uploads/2023/02/1676428134-%E4%BD%BF%E7%94%A8Microsoft-Account%E6%B3%A8%E5%86%8CChatGPT.png" alt="使用Microsoft-Account注册ChatGPT" /> +<strong>使用 Google 账号注册ChatGPT时</strong>,输入Google账号地址及密码,然后进入下一步骤。</p> +<p><img src="https://www.pythonthree.com/wp-content/uploads/2023/02/1676428153-%E4%BD%BF%E7%94%A8Google%E8%B4%A6%E5%8F%B7%E6%B3%A8%E5%86%8CChatGPT.png" alt="使用Google账号注册ChatGPT" /> +3、以<strong>使用邮箱注册ChatGPT</strong>为例,输入邮箱需要在邮箱收到的邮件内点击验证,</p> +<p><img src="https://www.pythonthree.com/wp-content/uploads/2023/02/1676431622-%E9%AA%8C%E8%AF%81ChatGPT%E9%82%AE%E7%AE%B1.png" alt="验证ChatGPT邮箱" /> +4、然后继续在ChatGPT注册页面填入信息</p> +<p><img src="https://www.pythonthree.com/wp-content/uploads/2023/02/1676431710-%E5%9C%A8ChatGPT%E6%B3%A8%E5%86%8C%E9%A1%B5%E9%9D%A2%E5%A1%AB%E5%85%A5%E4%BF%A1%E6%81%AF.png" alt="在ChatGPT注册页面填入信息" /> +5、填写ChatGPT手机短信验证码</p> +<p><img src="https://www.pythonthree.com/wp-content/uploads/2023/02/1676431788-%E5%A1%AB%E5%86%99ChatGPT%E6%89%8B%E6%9C%BA%E7%9F%AD%E4%BF%A1%E9%AA%8C%E8%AF%81%E7%A0%81.png" alt="填写ChatGPT手机短信验证码" /></p> +<h5>接收手机短信验证码</h5> +<p>需要使用中国以外的手机号码进行验证,例如美国、印度等,可以在俄罗斯的接码平台<code>sms-activate</code>来完成,该网站支持中文/英文显示界面,支持支付宝,使用俄罗斯卢布计费。</p> +<p>1、现在就需要用到注册的第三方接码平台了,访问<a href="https://sms-activate.org/?ref=5366293"> </a><a href="https://sms-activate.org/?ref=5366293">https://sms-activate.org/</a>。</p> +<p><img src="https://www.pythonthree.com/wp-content/uploads/2023/02/1676432063-%E6%B3%A8%E5%86%8C%E7%9A%84%E7%AC%AC%E4%B8%89%E6%96%B9%E6%8E%A5%E7%A0%81%E5%B9%B3%E5%8F%B0%E4%BA%86.png" alt="注册的第三方接码平台了" /></p> +<p>2、注册完成后需要充值(按照 1 美元兑换 73 卢布),点击右上角**“ 余额充值 ”<strong>,使用支付宝充值 1 美元即可</strong>(sms-activate.org平台规则发生变化,少于10美元充值,需最低充值2美元&lt;2023.3.22&gt;)**。</p> +<p><img src="https://www.pythonthree.com/wp-content/uploads/2023/02/1676432200-%E6%B3%A8%E5%86%8C%E5%AE%8C%E6%88%90%E5%90%8E%E9%9C%80%E8%A6%81%E5%85%85%E5%80%BC.png" alt="注册完成后需要充值" /> +3、在平台左侧搜索 OpenAI ,然后在国家那里找到Indonesia(印度尼西亚),点击选择国家后面的加入购物车即可。</p> +<p><img src="https://www.pythonthree.com/wp-content/uploads/2023/02/1676432316-1676429348918.png" alt="选择国家" /> +4、然后等一会出现如下界面,这里的手机号拷贝出来,输入到上一步中注册OpenAI的界面上,然后点击 Send code按钮,<strong>在下图的界面中等待验证码短信发送</strong>。</p> +<p><img src="https://www.pythonthree.com/wp-content/uploads/2023/02/1676433066-%E6%8E%A5%E6%94%B6%E8%BE%93%E5%85%A5%E9%AA%8C%E8%AF%81%E7%A0%81.jpg" alt="接收输入验证码" /> +<code>注意:</code>有效期是20分钟,需要快速操作,若两三分钟没有收到短信验证码,可点击旁边的删除按钮,然后再次选择别的手机号码,未收到验证不扣费。</p> +<h4>使用ChatGPT</h4> +<p>账号注册完成了,就可以尽情的使用ChatGPT来玩耍了,重新登录ChatGPT官网,然后<a href="https://chat.openai.com">访问Chat</a>,这时你就可以开始尽情和机器人聊天了。</p> +<p><img src="https://www.pythonthree.com/wp-content/uploads/2023/02/1676433542-%E4%BD%BF%E7%94%A8ChatGPT.png" alt="使用ChatGPT" /></p> +<p>使用ChatGPT示例,如何写一个吸引人的 标题</p> +<p><img src="https://www.pythonthree.com/wp-content/uploads/2023/02/1676440083-%E4%BD%BF%E7%94%A8ChatGPT%E7%A4%BA%E4%BE%8B.png" alt="使用ChatGPT示例" /></p> +<h4>总结</h4> +<p>以上是为你介绍的国内注册 ChatGPT 的方法,希望对你了解 ChatGPT 有所帮助,如有问题,欢迎联系我们。</p> +Qv2ray客户端及内核下载https://blog.ittst.com/posts/qv2ray-client-and-kernel-download/https://blog.ittst.com/posts/qv2ray-client-and-kernel-download/这篇文章介绍了Qv2ray,一个第三方图形化桌面客户端,基于V2ray官方内核,支持多种代理协议如vmess、SS、SSR、Trojan等,并可通过插件扩展功能。文章还提供了Qv2ray客户端和V2ray内核的下载链接。Fri, 07 Apr 2023 00:00:00 GMT<h3>关于Qv2ray</h3> +<p>在我们常用的PC系统上,比如Windows/Mac/Linux等系统平台,V2ray官方并没有发布图形化的桌面客户端。</p> +<p>V2rayN和Qv2ray等一些第三方工具,在V2ray官方内核的基础上,为我们提供了图形化界面支持,使用起来会更加方便。</p> +<p>其中Qv2ray除了支持V2ray的vmess协议外,还可以通过安装插件的方式,额外增加对SS/SSR/Trojan等代理协议的支持,可作为V2ray/SS/SSR/Trojan客户端使用。</p> +<h3>支持的协议</h3> +<p>Vmess(V2ray) +SS(Shadowsocks) +SSR(ShadowsocksR) +Trojan +Trojan-go +NaiveProxy +Vless</p> +<h3>下载</h3> +<h4>客户端下载</h4> +<p>https://github.com/Qv2ray/Qv2ray/releases</p> +<h4>内核下载</h4> +<p>https://github.com/v2fly/v2ray-core/releases/tag/v4.31.0</p> +42个虚拟信用卡开卡渠道https://blog.ittst.com/posts/42-virtual-credit-card-opening-channels/https://blog.ittst.com/posts/42-virtual-credit-card-opening-channels/这篇文章介绍了如何通过调整饮食习惯来改善睡眠质量。文章首先指出睡眠问题在现代社会中的普遍性,然后详细讨论了食物对睡眠的影响,包括哪些食物有助于促进睡眠,如富含色氨酸的食物和全谷物,以及应避免的食物,如含咖啡因和糖分高的食品。此外,文章还提到了饮食时间的重要性,建议晚餐不宜过晚或过饱。整体上,文章提供了实用的饮食建议,帮助读者通过调整饮食来获得更好的睡眠。Tue, 29 Nov 2022 00:00:00 GMT<ol> +<li> +<p>全球付 +http://www.globalcash.hk/ +在线申请,可充值,微信支付,开卡简单。</p> +</li> +<li> +<p>爱汇旅之卡 +http://www.ihui.com/ +此卡是目前最方便容易获得,并大量获得的实体mastercard实体卡,可以直接联系客服大量拿卡,一次上百张甚至是数百张,该卡支持paypal、amazon、google等网站。</p> +</li> +<li> +<p>Tap&amp;go 拍住赏 +http://tapngo.com.hk/ +可以支持微信,amazon、applepay 国际阿里云 GCE aws paypal等大部分网站,需要认证,买卡可以去香港总部或者某宝,最低100余额 充值可在香港便利店充值或者网上找人代充!</p> +</li> +<li> +<p>三三金融: +https://cards.33finance.com +需要到香港公司进行开卡,也可以找某宝,开出来的卡适用于大部分网站,包括欧贝通/amazon/阿里云/paypal/等等等等,充值也需要到香港便利店或者是到公司充,也可以找人代充。</p> +</li> +<li> +<p>Tierrapay +www.tierrapay.com卡段4665 +注册要用欧洲地址,比如英国,需要用pm或者是wmz充值,无需认证即可成功开卡。</p> +</li> +<li> +<p>通汇香港 +https://www.transforex.hk/ +此卡要携带护照和身份证前往香港开通,该公司有礼品卡,固定金额每天限购买3张,经测试,此卡适用于paypal amazon ebay等平台</p> +</li> +<li> +<p>Uphold www.uphold.com +需要护照和地址证明申请,支持银行 比特币进行充值</p> +</li> +<li> +<p>Payeer +http://www.zhesui.com/payeer/ +目前需要用欧洲国家的资料注册,</p> +</li> +<li> +<p>Advcash +目前需要用欧洲国家的资料注册</p> +</li> +<li> +<p>Moneypolo +http://www.zhesui.com/moneypolo/需要完成实名认证,以及收费购买。</p> +</li> +<li> +<p>Wirexapp +http://www.zhesui.com/wirex-app-visa/ +4665卡段,目前需要用欧洲国家地址注册申请。没认证只能比特币充值。</p> +</li> +<li> +<p>Payoneer派安盈 +附带美国 日本 英国和欧洲银行账户 +http://www.payoneer.com/</p> +</li> +<li> +<p>okpay +需要用护照通过实名认证才能开卡。</p> +</li> +<li> +<p>Qiwi +https://qiwi.com/ +需要俄罗斯电话卡注册成功才能开卡 (俄罗斯卡可以去淘宝买一个)</p> +</li> +<li> +<p>ecoPayz +http://www.zhesui.com/ecopayz-card/ +目前需要认证,该卡支持大部分网站,可以无限移除替换卡片。</p> +</li> +<li> +<p>浦发E-GO卡(需要有浦发实体卡) +http://www.zhesui.com/e-go/ +该卡可以开出银联 mastercard visa AME 四种卡片</p> +</li> +<li> +<p>Yandexmoney +money.yandex.ru +以上虚拟卡渠道基本都是国外电子钱包发行的,类似于国内的支付宝,不同的是除开少数几个支持人民币和国内银行充值的之外,其他基本都需要使用国外银行卡或者是电子钱包、信用卡充值,如果没有的话我们可以通过兑换的方式为该网站充值,具体兑换商可参照电子货币兑换网中国上面所说的兑换网站以及方法:电子货币兑换网中国:http://currencyexchange.net.cn/</p> +</li> +<li> +<p>VirtualCards(支持支付宝充值) +https://VirtualCards.us +50美元起充,注册成功无需充值既可出卡号</p> +</li> +<li> +<p>payweb +http://payweb.com +(需要付费、只有实体卡)可以用银联进行充值!</p> +</li> +<li> +<p>Solid Trust Pay +http://SolidTrustPay.com</p> +</li> +<li> +<p>Skrill(需要注册国外账户) +http://www.skrill.com +要注册欧洲国家的资料才有开卡选项。</p> +</li> +<li> +<p>Neteller(需要注册国外账户) +www.neteller.com</p> +</li> +<li> +<p>v-preca(需要日本ip注册 少数中国卡能够充值) +http://vpc.lifecard.co.jp</p> +</li> +<li> +<p>mun-prepaid(需要日本ip注册) +日元卡或者日本便利店充值 +www.mun-prepaid.com</p> +</li> +<li> +<p>Giftcardmall +www.giftcardmall.com +此网站要美国信用卡或者是借记卡进行购买</p> +</li> +<li> +<p>netspend(需翻墙 国外身份认证) +www.Netspend.com</p> +</li> +<li> +<p>vanilla(实体卡、需要国外身份或者是便利店购买) +也可以找我们进行购买。 +www.vanilla.com</p> +</li> +<li> +<p>通汇香港 +https://www.transforex.hk/ +此卡支持amazon googleplay paypal 等网站需要携带护照和身份证到香港总公司进行开卡!用身份证就能通过认证,可以开实体卡和虚拟卡</p> +</li> +<li> +<p>Entropay 欧贝通 +www.Entropay.com +不认证可以开五张卡,4067卡段,该卡可以用三三金融卡进行充值,可以自定义充值金额,认证过的账户可以开出10张卡片,可以自由决定充值的金额。欧贝通充值可以用 tapngo卡和三三金融进行充值,经本人测试是中国用户目前最好使的充值方法,tapngo和三三金融可以自行在香港购买。</p> +</li> +<li> +<p>payoneer +payoneer是目前非常不错的虚拟卡平台,身份证即可申请下来,遗憾的是申请到收到卡需要一个月左右的时间,值得一提的是payoneer更吸引我们的是他有美国银行账户、美元、欧元、日元、英镑银行账户可供我们申请选择,非常值得拥有。</p> +</li> +<li> +<p>Mmvpaymmvpay +是新加坡的虚拟卡平台可以开出mastercard 虚拟卡,需要新加坡手机号码注册!经过测试,账户不用认证,甚至是不用充值,一个账户直接可以获取5张卡片信息,包含卡号,有效期和卡密信息</p> +</li> +<li> +<p>paypal mastercard +https://www.paypal.com/us/webapps/mpp/paypal-prepaid-mastercard +此卡是paypal美国发行的mastercard,支持大部分网站消费,绑定以及验证,但是需要美国护照、身份和银行卡信息申请,并且是需要真实的</p> +</li> +<li> +<p>amazon mastercard +https://www.amazon.co.jp/ +三井住友カード株式会社-amazon-mastercardゴード/dp/b0092vb6vkAmazon mastercard是amazon日本网站发行的mastercard虚拟卡账户,同样是需要日本身份证护照地址证明才能申请下来,专门针对日亚的mastercard。</p> +</li> +<li> +<p>Cryptopaycryptopay +是一个数字交易平台同属4665卡段的虚拟卡,不认证可以开出虚拟卡,但是前提是必须用欧洲国家的地址以及资料进行注册!</p> +</li> +<li> +<p>Capitalistcapitalist +是一个俄罗斯的电子钱包工具,目前不认证一个账户可以开2张mastercard虚拟卡,分别是一张欧元的一张,一张美元的,认证过后可以开通四张卡片,两张实体卡和两张虚拟卡。</p> +</li> +<li> +<p>Unichangeunichange +是一个电子货币兑换平台,该平台提供欧元和美元两种币种的虚拟卡。Unichange.me如果你没有某些资料,某些材料,那么万能的商人一定可以满足的了你!</p> +</li> +<li> +<p>PayzaPayza +也是一个电子钱包工具,类似于paypal之类的电子 钱包,这边主要介绍payza发行的mastercard虚拟卡,申请虚拟卡需要身份证和信用卡认证,可以用预付卡能看得到自己姓名的信用卡。</p> +</li> +<li> +<p>mycard2go +mycard2go是一个德国的虚拟卡,发卡行为wire bank ag卡种为visa,注册账户无需身份认证,但是需要进行充值了才能开卡,充值成功后自动开通卡片,卡种为欧元,需要用KLARNA网银或者是当地现金进行充值,也可以进行网银。</p> +</li> +<li> +<p>Vandle +https://app.vandle.jp/ +vandle是一家日本的虚拟卡提供平台,它提供mastercard虚拟卡片,需要再日本的便利店进行充值,也可以用日本的信用卡网银进行充值</p> +</li> +<li> +<p>Chocom +http://www.chocom.jp/index.html +Chocom也是一家日本的虚拟卡,可以在日本的便利店,或者是日本信用卡以及Chocom电子钱包进行充值。</p> +</li> +<li> +<p>Docomokouza +docomokouza为日本docomo发行的visa虚拟信用卡,甚至是注册无需审查即可申请visa虚拟卡,最短有效期仅10天,还有一种则为3年需要日本的电子货币或者是信用卡对其进行充值。 +https://docomokouza.jpmastercard借记卡</p> +</li> +<li> +<p>Nttsmarttrade +nttsmarttrade是一家日本的在线虚拟卡平台,支持中文界面,非常方便,需要用日本信用卡段进行充值,中国和日本以外的mastercard无法进行充值。http://www.nttsmarttrade.co.jp/mastercardnet/cn/</p> +</li> +</ol> +centos7安装后没有网络https://blog.ittst.com/posts/there-is-no-network-after-installs7-installation/https://blog.ittst.com/posts/there-is-no-network-after-installs7-installation/这篇文章介绍了如何以root账号登录系统,使用ip addr命令查看网络参数,并打开eth0网卡的配置文件。文章还指导了如何将NOBOOT参数从no修改为yes,以及通过重启网络或服务器来应用这些更改。Tue, 29 Nov 2022 00:00:00 GMT<p>以<code>root</code>账号登陆 +用<code>ip addr</code>命令查看网络参数。 +打开<code>eth0</code>网卡的配置文件</p> +<pre><code>vi /etc/sysconfig/network-scripts/ifcfg-eth0 +</code></pre> +<p>把<code>NOBOOT</code>参数<code>no</code>,修改为<code>yes</code> +重启网络或者重启服务器都可</p> +macOS与Windows双系统时间不同步的解决办法https://blog.ittst.com/posts/macos-and-windows-dual-systems-are-not-synchronized/https://blog.ittst.com/posts/macos-and-windows-dual-systems-are-not-synchronized/这篇文章介绍了在Windows系统中,通过右键点击开始菜单并选择“终端(管理员)”来执行某些操作的方法,并建议重启电脑以应用更改。Tue, 15 Nov 2022 00:00:00 GMT<p>在windows下 +右键点击开始菜单,选择终端(管理员)</p> +<pre><code> Reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_DWORD /d 1 +</code></pre> +<p>回车搞定!重启试试!</p> +VK23黑苹果OpenCore0.8.5引导macOS12.6.1https://blog.ittst.com/posts/vk23-black-apple-opencore0.8.5-guide-macos12.6.1/https://blog.ittst.com/posts/vk23-black-apple-opencore0.8.5-guide-macos12.6.1/这篇文章介绍了将网卡更换为DW1560的过程,并提供了相关的截图链接。文章还列出了更换网卡后设备正常工作的各项功能,包括显卡、声卡、有线网卡、无线网卡、摄像头、读卡器、蓝牙和隔空投送。Tue, 08 Nov 2022 00:00:00 GMT<h2>配置</h2> +<p>网卡更换为DW1560</p> +<h2>截图</h2> +<p><img src="https://blogcdn.asbid.cn/2022/11/08/1667888431.png" alt="1.png" /> +<img src="https://blogcdn.asbid.cn/2022/11/08/1667888431.png" alt="QQ20221108-141421.png" /> +<img src="https://blogcdn.asbid.cn/2022/11/08/1667888432.png" alt="QQ20221108-141440.png" /> +<img src="https://blogcdn.asbid.cn/2022/11/08/1667888433.png" alt="QQ20221108-141449.png" /> +<img src="https://blogcdn.asbid.cn/2022/11/08/1667888433.png" alt="QQ20221108-141458.png" /> +<img src="https://blogcdn.asbid.cn/2022/11/08/1667888434.png" alt="QQ20221108-141507.png" /> +<img src="https://blogcdn.asbid.cn/2022/11/08/1667888434.png" alt="QQ20221108-141517.png" /></p> +<h2></h2> +<p>正常工作 +1.显卡 +2.声卡 +3.有线网卡 +4.无线网卡 +5.摄像头 +6.读卡器 +7.蓝牙 +8.隔空投送</p> +华硕b150m-et m2+rx560黑苹果oc0.8.5引导https://blog.ittst.com/posts/asus-b150m-et-m2+rx560-black-apple-oc0.8.5-guide/https://blog.ittst.com/posts/asus-b150m-et-m2+rx560-black-apple-oc0.8.5-guide/这篇文章介绍了作者的电脑配置,包括CPU、主板、内存、硬盘、显卡、网卡、电源和机箱等硬件信息。文章还提到了机箱的散热问题,以及通过BIOS设置优化系统性能的具体步骤,如关闭CSM兼容性、VT-D等。此外,文章还分享了已成功驱动的硬件列表,如声卡、网卡、显卡等,并提供了引导下载的链接。Fri, 21 Oct 2022 00:00:00 GMT<h2>配置如下</h2> +<p>cpu:魔改qhpw 2.2g hz +主板:华硕b150m-et m2 +内存:8g ddr4 2133mhz +硬盘:nvme 256gb ssd +显卡:肥猫家rx560 4gb +网卡:bcm94360cd +电源:长城额定300w +机箱:乔思伯c2黑色</p> +<p>乔思伯这个机箱是个大闷罐,但是显卡功耗低,双烤温度最高75摄氏度</p> +<h2>截图</h2> +<p><img src="https://blogcdn.asbid.cn/2022/10/21/1666335477.jpg" alt="Jietu20221020-144354.jpg" /> +<img src="https://blogcdn.asbid.cn/2022/10/21/1666335487.jpg" alt="Jietu20221021-145738.jpg" /></p> +<h2>bios设置</h2> +<p>关闭 CSM兼容性 +关闭 VT-D +关闭 串口 +打开 USB handoff +关闭 CFG LOCK</p> +<h2>已驱动</h2> +<p>声卡 +网卡 +显卡 +电源管理 +显卡加速 +<img src="https://blogcdn.asbid.cn/2022/10/21/1666337330.jpg" alt="Jietu20221021-152807.jpg" /></p> +<h2>引导下载</h2> +<p><a href="https://bbs.dasbid.com/thread/22">下载地址</a></p> +office2016 Mac 版本下载安装及破解激活https://blog.ittst.com/posts/office2016-mac-version-download,-install,-crack-activation/https://blog.ittst.com/posts/office2016-mac-version-download,-install,-crack-activation/这篇文章提供了Microsoft Office 2016 for Mac的安装包下载地址和一个激活工具的百度网盘链接及密码。安装包地址为http://officecdn.microsoft.com/sg/C1297A47-86C4-4C1F-97FA-950631F94777/OfficeMac/Microsoft_Office_2016_15.29.16120900_Installer.pkg,激活工具链接为https://pan.baidu.com/s/1ragcr1M,密码是rcb2。Fri, 14 Oct 2022 00:00:00 GMT<p>一、安装包下载地址</p> +<p>http://officecdn.microsoft.com/sg/C1297A47-86C4-4C1F-97FA-950631F94777/OfficeMac/Microsoft_Office_2016_15.29.16120900_Installer.pkg</p> +<p>二、激活工具</p> +<p>[hide] +链接: https://pan.baidu.com/s/1ragcr1M</p> +<p>密码: rcb2 +[/hide]</p> +Typecho插件CommentsByQQ修改版https://blog.ittst.com/posts/typecho-plug--in-commentsbyqq-modified-version/https://blog.ittst.com/posts/typecho-plug--in-commentsbyqq-modified-version/这篇文章介绍了作者基于Typecho插件CommentsByQQ的修改版本,旨在通过QQ机器人接收评论通知。由于原插件的QQ机器人已失效,作者自行搭建了一个基于go-http的QQ机器人,并提供了使用方法和下载地址。Mon, 19 Sep 2022 00:00:00 GMT<h2>简介</h2> +<p>基于Typecho插件CommentsByQQ修改 +一直想让qq来通知评论消息。毕竟邮箱之类的还是不太方便。 +原作者的插件QQ机器人已经挂了。所以我自己搭建了一个基于go-http的QQ机器人 +由于本人也是菜鸟,没有后续</p> +<h2>使用</h2> +<p>添加qq机器人153985848为好友 +在后台设置中填写接收消息的qq号即可</p> +<h2>下载地址</h2> +<p><a href="https://blogcdn.asbid.cn/2022/09/28/1664332031.zip">CommentsByQQ.zip</a></p> +centos7 ssh连接慢的解决方法https://blog.ittst.com/posts/the-solution-of-the-cantos7-ssh-connection-is-slow/https://blog.ittst.com/posts/the-solution-of-the-cantos7-ssh-connection-is-slow/这篇文章介绍了在Linux系统中修改SSH配置文件的步骤,包括取消注释并修改UseDNS选项为no,以及将GSSAPIAuthentication选项也改为no,最后保存并退出编辑器,重启系统以应用更改。Fri, 12 Aug 2022 00:00:00 GMT<pre><code>vim /etc/ssh/sshd_config +</code></pre> +<p>按i编辑插入 +找到 +<code>UseDNS</code>去掉前面的#号 改为 no</p> +<p><code>GSSAPIAuthentication</code> 改为 no</p> +<p>然后<code>:wq </code>保存退出</p> +<pre><code>systemctl restart sshd +</code></pre> +<p>重启</p> +Linux下本地安装包命令https://blog.ittst.com/posts/local-installation-package-command-under-linux/https://blog.ittst.com/posts/local-installation-package-command-under-linux/这篇文章介绍了在CENTOS系统下如何安装RPM安装包,以及在UBUNTU系统下如何安装DEB安装包。文章可能详细说明了安装步骤和命令,帮助用户在不同Linux发行版上进行软件包的安装。Wed, 27 Jul 2022 00:00:00 GMT<h2>centos下安装RPM安装包</h2> +<pre><code>sudo yum localinstall file.rpm +</code></pre> +<h2>ubuntu下安装deb安装包</h2> +<pre><code> sudo dpkg -i 安装包名称.deb +</code></pre> +黑苹果固态避坑指南https://blog.ittst.com/posts/black-apple-solid--state-pit-guideline/https://blog.ittst.com/posts/black-apple-solid--state-pit-guideline/这篇文章介绍了多个型号的固态硬盘(SSD)与macOS的兼容性问题,包括三星、镁光、爱国者等品牌的特定型号在安装和运行macOS时可能遇到的问题。文章还提到了一些型号需要升级固件或使用特定的kext文件来解决兼容性问题,以及关于TRIM支持的详细信息,包括哪些型号完全支持或不完全支持TRIM功能。此外,文章还列出了一些能够正常安装和运行macOS的SSD型号。Tue, 12 Apr 2022 00:00:00 GMT<p><code>三星</code> <code>PM961</code> / <code>PM981</code> / <code>PM981a</code> / <code>PM991</code> 会导致 macOS 无法安装或正常运行</p> +<p><code>三星</code> <code>983ZET</code>无法安装 macOS;</p> +<p>2019 年 5 月以前出厂的 <code>三星</code> <code>970 EVO Plus</code> 可能存在和 <code>PM9x1</code> 系列类似的问题,但可以通过在Windows环境升级官方固件解决 macOS 兼容问题;</p> +<p><code>镁光</code> <code>2200S </code>无法安装或稳定运行 macOS;</p> +<p><code>爱国者</code> <code>P2000 256GB </code>无法通过 10.15、11.x、12.x 任何一个版本的正常安装流程,但不排除个例的可能;</p> +<p>macOS 不支持使用 <code>Intel</code> <code>傲腾</code>(Optane Memory)或<code>镁光</code> <code>3D XPoint</code> 进行加速的笔记本电脑;</p> +<h3>下面的型号是与 macOS IONVMeFamily 兼容性不佳的型号(可能无故卡住或运行不正常)</h3> +<p><code>英特尔</code> <code>600P/660P/760P 系列</code></p> +<p><code>金士顿</code> <code>A2000</code>:配置 <code>S5Z42105 </code>控制器的版本必须搭配<code> NVMeFix.kext 1.0.8</code> 及以上,也可能完全无法安装;</p> +<p><code>海力士</code> <code>PC601/PC611/PC711/BC501</code>:主要见于联想和戴尔笔记本,部分批次正常部分会卡住;</p> +<p><code>技嘉</code> <code>GIGABYTE M.2 PCIe SSD</code>(比如 <code>GP-GSM2NE8512GNTD</code>)</p> +<p><code>威刚</code> <code>剑鱼 ADATA Swordfish 2 TB M.2-2280</code></p> +<p><code>海力士</code> <code>SK Hynix HFS001TD9TNG-L5B0B</code></p> +<p><code>海力士</code> <code>SK Hynix P31</code></p> +<p><code>镁光</code> <code>Micron 2200V MTFDHBA512TCK</code> -<code>移速的256G</code>同样使用的镁光颗粒无法安装;</p> +<p><code>阿斯加特</code> <code>Asgard AN3+ (STAR1000P)</code></p> +<p><code>朗科</code> <code>Netac NVME SSD 480</code></p> +<p><code>西部数据</code> <code>SN550/570/730/750/850 </code>都能正常安装和运行 macOS;</p> +<p><code>三星</code> <code>970EVO/Pro/Plus</code>(升级固件后)和 <code>980/980 Pro</code> 都能正常安装和运行 macOS,但是此系列存在 <code>TRIM </code>支持问题;</p> +<p><code>海盗船</code> <code>MP400/MP600 </code>系列均能正常安装运行 macOS;</p> +<p>绝大部分常见的 SATA 接口固态盘都能正常安装和运行 macOS;</p> +<h3>不完全支持<code> TRIM</code>(主要影响特定条件下的写入速度,什么是 TRIM?),但安装运行正常的型号:</h3> +<p><code>三星</code> <code>Samsung 950 Pro</code></p> +<p><code>三星</code> <code>Samsung 960 Evo/Pro</code></p> +<p><code>三星</code> <code>Samsung 970 Evo/Pro</code></p> +<p>「重要提示」在 <code>macOS 12.0</code> 及以上版本中,OpenCore 无法再修改 APFS 文件系统的 <code>TRIM </code>超时数值,部分执行 <code>TRIM </code>相对较慢的固态硬盘(主要是三星的控制器)将没有足够的时间执行 <code>TRIM</code> 操作。 +不正确的设置可能导致进入系统缓慢,因此对 macOS <code>TRIM </code>支持度不佳的硬盘建议将 <code>SetApfsTrimTimeout </code>值改成 0 以关闭 <code>TRIM</code>,或 -1 以关闭该功能。此现象在 <code>12.3</code> 及以上的版本中尤其明显。</p> +<h3>完整支持 macOS TRIM 的型号:</h3> +<p><code>西部数据</code> SN5xx/7xx 系列(未完全测试)</p> +<p><code>英睿达</code> Crucial P1 1TB NVME(SM2263EN,未完全测试)</p> +<p><code>金典</code> KingDian S280(SATA)</p> +<p><code>浦科特</code> PLEXTOR M5Pro(SATA)</p> +<p><code>三星</code> Samsung 850 PRO(SATA,未完全测试)</p> +<p><code>三星</code> Samsung 870 EVO(SATA,未完全测试)</p> +2023年黑苹果amd免驱显卡购买推荐https://blog.ittst.com/posts/2023-black-apple-amd--free-drived-card-buying-recommendation/https://blog.ittst.com/posts/2023-black-apple-amd--free-drived-card-buying-recommendation/这篇文章介绍了不同系列的AMD显卡及其在各个macOS版本中的支持情况。包括NAVI 20系列、NAVI 10系列、VEGA 20系列、VEGA 10系列、Polaris架构系列、R7/R9系列、HD 8000系列和HD 7000系列显卡,以及它们在特定操作系统版本下的兼容性和可能需要的特殊启动参数。Fri, 21 Jan 2022 00:00:00 GMT<h2>Navi 20系列 从bigsur开始支持</h2> +<p>RX 6600 +RX 6600 XT +RX 6800 +RX 6800 XT +RX 6900 XT</p> +<h2>Navi 10系列 从Catalina开始支持</h2> +<p>RX 5500 +RX 5500 XT +RX 5600 +RX 5600 XT +RX 5700 +RX 5700 XT +RX 5700 XT 50周年纪念版 +如遇到黑屏,需要boot参数agdpmod=pikera才能正确显示</p> +<h2>Vega 20系列 从Mojave开始支持</h2> +<p>Radeon VII</p> +<h2>Vega 10系列 从High Sierra开始支持</h2> +<p>Vega 64 Liquid +Vega 64 +Vega 56 +Vega Frontier Edition +Radeon Pro WX 9100 +Radeon Pro WX 7100 +## Polaris架构10和20系列 从Sierra开始支持 +400系列:</p> +<p>RX 480 +RX 470D +RX 470 +RX 460 +RX 590 +RX 580X +RX 580 +RX 570X +RX 570 +RX 560X +RX 560 +WX 5100 +WX 4100 +E9550</p> +<p>还有些同Polaris核心的 +rx550</p> +<h2>R7 / R9系列 从Yosemite开始支持</h2> +<p>R9 Fury X +R9 Fury +R9 Nano +R9 390(需要FakeID) +R9 290X / 390X +R9 290/390(需提供FakeID) +R9 280x / 380x(不一定成功) +R9 280/380(需要FakeID) +R9 270X / 370X +R7 270/370(需提供FakeID) +R7 265 +R7 260x / 360x +R9 260/360(根据型号可能需要FakeID) +R9 255 +R7 250X +R7 250(需提供FakeID) +R7 240(需要FakeID)</p> +<h2>HD 8000系列 从Mountain Lion开始支持</h2> +<p>HD 8740 +HD 8760 +HD 8770 +HD 8850 +HD 8870 +HD 8890 +HD 8950 +HD 8970</p> +<h2>HD 7000系列 从Mountain Lion开始支持</h2> +<p>Dual AMD FirePro D300 +Dual AMD FirePro D500 +Dual AMD FirePro D700 +FirePro W5100(FakeID needed) +FirePro W7000 +FirePro W9000 +HD 7700 +HD 7730 +HD 7750 +HD 7770 +HD 7790 +HD 7850 +HD 7870 +HD 7870 XT +HD 7950 +HD 7970 +HD 7990</p> +NEC VK22 黑苹果opencore引导https://blog.ittst.com/posts/nec-vk22-black-apple-opencore-guide/https://blog.ittst.com/posts/nec-vk22-black-apple-opencore-guide/这篇文章介绍了如何在安装黑苹果前解锁CFGLock,以及使用NVME固态硬盘的优化方法。通过将U盘格式化为FAT32并复制OC引导文件,设置U盘为第一启动项,可以提升读写速度且不需修改BIOS。文章还提到了笔记本黑苹果安装中的难点,如注入EDID,并分享了已驱动的硬件列表和EFI文件下载链接。Sun, 10 Oct 2021 00:00:00 GMT<h2>关于解锁</h2> +<p>安装之前要解锁cfglock</p> +<h2>关于nvme固态的使用</h2> +<p>思路就是用一个U盘格式化成FAT32格式</p> +<p>把oc引导复制在U盘中。</p> +<p>在BIOS中把U盘启动设为第一启动项</p> +<p>这样做得好处是不用修改BIOS直接使用nvme的固态提升读写速度</p> +<p>坏处就是占用一个USB口</p> +<h2>其他</h2> +<p>笔记本黑苹果的难点就在于注入edid。</p> +<p>我的做法是在clover下安装好macos之后再用hackintool注入EDID,然后再转为opencore引导。</p> +<p>其他都很简单我就不多说了。</p> +<p>附上EFI文件,三码自己改</p> +<h2>已驱动</h2> +<p>显卡 +声卡 +网卡 (已更换DW1820A) +读卡器 +USB +触摸板</p> +<h2>下载</h2> +<p><a href="https://blogcdn.asbid.cn/2021/12/03/1638521042.zip">请打赏后下载</a></p> +记一次亿储SSD固态掉盘修复(重新开卡)https://blog.ittst.com/posts/remember-to-restore-the-ssd-ssd-solid-state-(re--opening-the-card)/https://blog.ittst.com/posts/remember-to-restore-the-ssd-ssd-solid-state-(re--opening-the-card)/这篇文章介绍了老孙在闲鱼购买了一块二手SSD并尝试安装黑苹果系统,但遇到硬盘识别问题。通过拆解硬盘、短接主控、使用开卡软件等步骤,最终成功修复了固态硬盘的问题。文章还提供了所需物料清单、操作步骤和相关教程链接。Thu, 01 Aug 2019 00:00:00 GMT<p>老孙在闲鱼淘了一块二手的SSD,本来准备用来安装黑苹果使用。 +刚开始安装挺顺利,安装的是OSX 12.13.6,分区格式APFS。 +笔记本没有息屏就上班去了。 +下班回来一看界面卡死。于是只有强行关机重启。 +这下问题来了,识别不了硬盘了。 +百度出的原因就是固态硬盘掉盘。是二三线固态厂商的通病。再次建议大家还是买大厂的产品。 +有教程说30分钟拯救固态。试了一晚上不行。 +看了第二种方法就是去开卡量产。 +摸索了一晚上终于成功了!!!</p> +<h2>所需物料</h2> +<hr /> +<p>硬盘盒(USB转接卡) 螺丝刀(拆硬盘用) 开卡软件(文章末尾下载) +1 首先把硬盘拆开 拆开硬盘发现主控是慧荣sm 2246XT(其实百度也可以百度到,如果是正品的话……) +<img src="https://xy07-1251893119.costj.myqcloud.com/2019/08/01/868332940.jpg" alt="103_2877224_9e544a870ce08b2.jpg" /> +图是网上找的,主控型号一般会印在主控芯片上,也就是那个小的。 +2 短接JP1,PCB上一般会有标注,如果和我的硬盘一样的话就短接最上面两个(懒 没有作图 网图) +3 接上硬盘盒 打开开卡软件sm2246XT_MPTool_O1224H +4 识别到port1之后 不用短接 +<img src="https://xy07-1251893119.costj.myqcloud.com/2019/08/01/3281558957.png" alt="QQ浏览器截图20190801131230.png" /> +5 此时应该在Parameter里面选择一个合适的flash型号,直接开卡就会成功 +<img src="https://xy07-1251893119.costj.myqcloud.com/2019/08/01/252432522.png" alt="103_2877224_bd107f5920c8e54.png" /></p> +<p>参考教程链接</p> +<blockquote> +<p>http://www.upantool.com/jiaocheng/ssd/2017/10569.html +http://bbs.mydigit.cn/read.php?tid=2367269</p> +</blockquote> +<h2>开卡工具下载</h2> +<p><a href="https://xy07-1251893119.costj.myqcloud.com/2019/08/01/2111427864.zip">sm2246XT_MPTool_O1224H.zip</a></p> +<p><img src="https://xy07-1251893119.costj.myqcloud.com/2020/12/21/3940912839.jpg" alt="bg.jpg" /></p> +Cloud Torrent for centos一键安装https://blog.ittst.com/posts/cloud-torrent-for-centos-one--click-installation/https://blog.ittst.com/posts/cloud-torrent-for-centos-one--click-installation/这篇文章介绍了如何安装和使用Cloud Torrent,一个支持BT和磁力链接下载、离线下载及边下边播的工具。文章详细说明了系统需求、脚本版本、特点、安装步骤、使用说明以及注意事项。Cloud Torrent通过Web UI提供可视化界面,支持搜索磁力链接,但主要针对国外资源。文章还提到了使用该工具时可能遇到的网络问题和版权风险。Sat, 27 May 2017 00:00:00 GMT<p>支持 离线下载 BT和磁力链接和边下边播 的老司机坐骑 —— Cloud Torrent +声明:本文章仅提供 BT/磁力链接 下载工具的安装方法和说明,任何使用此工具 下载版权侵权文件或导致任何经济损失,皆和本人无任何关系!如果你不同意或有异议,请关闭这个网页! +<img src="https://xy07-1251893119.costj.myqcloud.com/2017/05/27/823290012.png" alt="10-1.png" /></p> +<ul> +<li> +<p>系统需求 +CentOS / Debian / Ubuntu 都可以,因为是 Go语言写的</p> +</li> +<li> +<p>脚本版本: +Ver: 1.0.3</p> +</li> +<li> +<p>Cloud Torrent特点 +支持 BT下载 +支持 磁力链接下载 +支持 搜索磁力链接 +支持 离线下载 +支持 边下边播( 格式限制:mp4/wbem/ogg,同时需要手动输入链接) +可视化界面 Web UI</p> +</li> +<li> +<p>安装步骤</p> +<p>wget -N --no-check-certificate https://www.xuanlove.download/sh/cloudt.sh &amp;&amp; chmod +x cloudt.sh &amp;&amp; bash cloudt.sh</p> +</li> +</ul> +<p>下载运行完毕脚本,就会直接开始安装 Cloud Torrent ,安装过程中如果出现让你选择Y和N的,都选Y。 +安装完成之后,就会提醒你,输入要开放的端口(推荐:默认 8000) +启动后,访问 http://VPS_IP:8000 即可看到Web UI界面了。</p> +<ul> +<li> +<p>脚本使用说明</p> +<p>bash cloudt.sh +#可以直接输入这个命令,会自动判断是否需要 安装/启动/停止 Cloud Torrent +  +bash cloudt.sh install +#安装 Cloud Torrent +  +bash cloudt.sh start +#启动 Cloud Torrent +  +bash cloudt.sh stop +#停止 Cloud Torrent +  +bash cloudt.sh tail +#查看 Cloud Torrent 日志 +  +bash cloudt.sh uninstall +#卸载 Cloud Torrent</p> +</li> +<li> +<p>Cloud Torrent使用说明 +Cloud Torrent可以直接在输入中输入 磁力链接 或者 在线的BT种子(不支持本地上传),点击下面的 蓝色的按钮,就会开始解析资源。</p> +</li> +</ul> +<hr /> +<h2>按钮说明</h2> +<p>成功解析后,就会显示如下的界面,开始下载。 +Files 是查看正在下载的文件列表, Start 是启动下载(默认解析后直接启动下载), Stop 是停止下载。 +还有,如果你下载完毕或者点了 Stop 停止下载,那么 Stop 就会变成 Remove 删除任务的按钮了。</p> +<h2>搜索磁力链接</h2> +<p>Cloud Torrent支持搜索磁力链接,在输入栏中直接输入你要搜索的文件名称,同时点击 绿色的按钮 选择一个搜索源,然后点击 蓝色的Search 按钮就可以搜索了。 +注意:Cloud Torrent是国外人写的,所以这些搜索源均是国外的磁力链接网站,搜索到的资源基本没有中文的,所以非特殊需求的这个功能就没什么卵用了。</p> +<h2>注意事项</h2> +<p>BT和磁力链接的速度是和, 磁力链接/BT 的用户上传共享量 和 中心服务器的宽带质量,以及你下载 磁力链接/BT 的VPS的宽带有关系。 +这种软件在某些程度上比不上 国内的迅雷,毕竟迅雷 用户了很大共享了很多的上传速度,而且还有缓存的中心服务器,所以才会那么快。 +如果你是国外的VPS,特别是美国的,一定要注意下载 BT/磁力链接 容易遇到蜜罐,然后被投诉封VPS。建议使用欧洲的罗马尼亚,那里的VPS无视版权,当然拉回本地,速度肯定也不会多快</p> +<h1>无法访问你的 http://IP:端口</h1> +<p>可能是防火墙规则的问题,使用下面这个命令来开放端口</p> +<pre><code>iptables -I INPUT -p tcp --dport 端口 -j ACCEPT +</code></pre> +Vi编辑器的基本使用方法https://blog.ittst.com/posts/vi-editor's-basic-usage-method/https://blog.ittst.com/posts/vi-editor's-basic-usage-method/这篇文章介绍了如何通过优化网站内容和结构来提高搜索引擎排名,包括关键词研究、内容创作、内部链接策略和外部链接建设等方法。文章还提到了SEO工具的使用和持续监控网站表现的重要性,以确保长期的成功。Wed, 16 Nov 2016 00:00:00 GMT<p>vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令。 +由于对Unix及Linux系统的任何版本,vi编辑器是完全相同的,因此您可以在其他任何介绍vi的地方进一步了解它。 +Vi也是Linux中最基本的文本编辑器,学会它后,您将在Linux的世界里畅行无阻。</p> +<p>1、vi的基本概念</p> +<p>基本上vi可以分为三种状态,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:</p> +<ol> +<li>命令行模式command mode)</li> +</ol> +<p>控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。</p> +<ol> +<li>插入模式(Insert mode)</li> +</ol> +<p>只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。</p> +<ol> +<li>底行模式(last line mode)</li> +</ol> +<p>将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等。 不过一般我们在使用时把vi简化成两个模式,就是将底行模式(last line mode)也算入命令行模式command mode)。</p> +<p>2、vi的基本操作</p> +<p>a) 进入vi 在系统提示符号输入vi及文件名称后,就进入vi全屏幕编辑画面: $ vi myfile 不过有一点要特别注意,就是您进入vi之后,是处于「命令行模式(command mode)」,您要切换到「插入模式(Insert mode)」才能够输入文字。初次使用vi的人都会想先用上下左右键移动光标,结果电脑一直哔哔叫,把自己气个半死,所以进入vi后,先不要乱动,转换到「插入模式(Insert mode)」再说吧!</p> +<p>b) 切换至插入模式(Insert mode)编辑文件 在「命令行模式(command mode)」下按一下字母「i」就可以进入「插入模式(Insert mode)」,这时候你就可以开始输入文字了。</p> +<p>c) Insert 的切换 您目前处于「插入模式(Insert mode)」,您就只能一直输入文字,如果您发现输错了字!想用光标键往回移动,将该字删除,就要先按一下「ESC」键转到「命令行模式(command mode)」再删除文字。</p> +<p>d) 退出vi及保存文件</p> +<p>在「命令行模式(command mode)」下,按一下「:」冒号键进入「Last line mode」,例如:</p> +<p>w filename (输入 「w filename」将文章以指定的文件名filename保存)</p> +<p>wq (输入「wq」,存盘并退出vi)</p> +<p>q! (输入q!, 不存盘强制退出vi)</p> +<p>3、命令行模式(command mode)功能键</p> +<p>1). 插入模式 按「i」切换进入插入模式「insert mode」,按“i”进入插入模式后是从光标当前位置开始输入文件; 按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字; 按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。</p> +<p>2). 从插入模式切换为命令行模式 按「ESC」键。</p> +<p>3). 移动光标 vi可以直接用键盘上的光标来上下左右移动,但正规的vi是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格。 按「ctrl」+「b」:屏幕往“后”移动一页。 按「ctrl」+「f」:屏幕往“前”移动一页。 按「ctrl」+「u」:屏幕往“后”移动半页。 按「ctrl」+「d」:屏幕往“前”移动半页。 按数字「0」:移到文章的开头。 按「G」:移动到文章的最后。 按「$」:移动到光标所在行的“行尾”。 按「^」:移动到光标所在行的“行首” 按「w」:光标跳到下个字的开头 按「e」:光标跳到下个字的字尾 按「b」:光标回到上个字的开头 按「#l」:光标移到该行的第#个位置,如:5l,56l。</p> +<p>4). 删除文字 「x」:每按一次,删除光标所在位置的“后面”一个字符。 「#x」:例如,「6x」表示删除光标所在位置的“后面”6个字符。 「X」:大写的X,每按一次,删除光标所在位置的“前面”一个字符。 「#X」:例如,「20X」表示删除光标所在位置的“前面”20个字符。 「dd」:删除光标所在行。 「#dd」:从光标所在行开始删除#行</p> +<p>5). 复制 「yw」:将光标所在之处到字尾的字符复制到缓冲区中。 「#yw」:复制#个字到缓冲区 「yy」:复制光标所在行到缓冲区。 「#yy」:例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。 「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。</p> +<p>6). 替换 「r」:替换光标所在处的字符。 「R」:替换光标所到之处的字符,直到按下「ESC」键为止。</p> +<p>7). 回复上一次操作 「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行多次回复。</p> +<p>8). 更改 「cw」:更改光标所在处的字到字尾处 「c#w」:例如,「c3w」表示更改3个字 9). 跳至指定的行 「ctrl」+「g」列出光标所在行的行号。 「#G」:例如,「15G」,表示移动光标至文章的第15行行首。</p> +<p>4、Last line mode下命令简介 在使用「last line mode」之前,请记住先按「ESC」键确定您已经处于「command mode」下后,再按「:」冒号即可进入「last line mode」。</p> +<p>A) 列出行号 「set nu」:输入「set nu」后,会在文件中的每一行前面列出行号。</p> +<p>B) 跳到文件中的某一行 「#」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行。</p> +<p>C) 查找字符 「/关键字」:先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往后寻找到您要的关键字为止。 「?关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往前寻找到您要的关键字为止。</p> +<p>D) 保存文件 「w」:在冒号输入字母「w」就可以将文件保存起来。</p> +<p>E) 离开vi 「q」:按「q」就是退出,如果无法离开vi,可以在「q」后跟一个「!」强制离开vi。 「qw」:一般建议离开时,搭配「w」一起使用,这样在退出的时候还可以保存文件。</p> +<p>5、vi命令列表</p> +<p>1、下表列出命令模式下的一些键的功能: h 左移光标一个字符 l 右移光标一个字符 k 光标上移一行 j 光标下移一行 ^ 光标移动至行首 0 数字“0”,光标移至文章的开头 G 光标移至文章的最后 $ 光标移动至行尾 Ctrl+f 向前翻屏 Ctrl+b 向后翻屏 Ctrl+d 向前翻半屏 Ctrl+u 向后翻半屏 i 在光标位置前插入字符 a 在光标所在位置的后一个字符开始增加 o 插入新的一行,从行首开始输入 ESC 从输入状态退至命令状态 x 删除光标后面的字符 #x 删除光标后的#个字符 X (大写X),删除光标前面的字符 #X 删除光标前面的#个字符 dd 删除光标所在的行 #dd 删除从光标所在行数的#行 yw 复制光标所在位置的一个字 #yw 复制光标所在位置的#个字 yy 复制光标所在位置的一行 #yy 复制从光标所在行数的#行 p 粘贴 u 取消操作 cw 更改光标所在位置的一个字 #cw 更改光标所在位置的#个字</p> +<p>2、下表列出行命令模式下的一些指令 w filename 储存正在编辑的文件为filename wq filename 储存正在编辑的文件为filename,并退出vi q! 放弃所有修改,退出vi set nu 显示行号 /或? 查找,在/后输入要查找的内容 n 与/或?一起使用,如果查找的内容不是想要找的关键字,按n或向后(与/联用)或向前(与?联用)继续查找,直到找到为止。</p> +<p>对于第一次用vi,有几点注意要提醒一下:</p> +<p>1、用vi打开文件后,是处于「命令行模式(command mode)」,您要切换到「插入模式(Insert mode)」才能够输入文字。</p> +<p>切换方法:在「命令行模式(command mode)」下按一下字母「i」就可以进入「插入模式(Insert mode)」,这时候你就可以开始输入文字了。</p> +<p>2、编辑好后,需从插入模式切换为命令行模式才能对文件进行保存,切换方法:按「ESC」键。</p> +<p>3、保存并退出文件:在命令模式下输入:wq即可!(别忘了wq前面的:)</p> +阿里悟空服务下线https://blog.ittst.com/posts/ali-goku-service-offline/https://blog.ittst.com/posts/ali-goku-service-offline/这篇文章介绍了阿里悟空服务在2016年10月31日下线的情况,以及基于该服务的phpwind移动版也随之结束。文章提到phpwind和discuz这两大社区论坛程序已经停止更新维护,暗示了社区论坛可能的衰落趋势。同时,文章探讨了个人草根站长未来可能不复存在的可能性,主要是因为网站开发和维护成本对非IT人员来说过高。Tue, 15 Nov 2016 00:00:00 GMT<p>阿里悟空服务宣布于2016年10月31号正式下线,基于阿里悟空的phpwind移动版,基本上也可以宣告死亡了。 实际上phpwind早在两年前已经停止更新维护,目前的社区论坛程序discuz也处于停止更新维护的状态,伴随了广大草根站长走过十年岁月的两大社区程序也算是完成了自己的使命。 一直对社交网络不死心的阿里也放弃了pw是不是意味着社区论坛就此消亡。或者说,在将来不再会有个人草根站长了?毕竟网站开发维护的成本对于非IT人员来讲实在太过于高昂</p> +CentOS系统时间和时区查看以及修改的方法https://blog.ittst.com/posts/centos-system-time-and-time-zone-viewing-and-modification-method/https://blog.ittst.com/posts/centos-system-time-and-time-zone-viewing-and-modification-method/这篇文章介绍了如何在CentOS系统中修改时间和时区。首先,文章说明了如何查看当前系统时间,并提供了具体的命令来设置新的日期和时间(例如,将日期设定为2013年3月4日,时间设定为上午10:38)。接着,文章讲解了如何查看和修改系统的时区,特别是如何将时区设置为亚洲/上海,并确认覆盖操作。最后,文章指导用户如何验证新的时区和时间设置是否正确。Mon, 14 Nov 2016 00:00:00 GMT<p>一、时间修改 远程连接到centos 或者直接登录系统</p> +<pre><code>date  +</code></pre> +<p>查看系统时间</p> +<pre><code>date -s  +</code></pre> +<p>修改时间 看下面的例子</p> +<pre><code>date -s  03/04/2013 +</code></pre> +<p>(将系统日期设定为2013年03月04日)</p> +<pre><code>date -s  110:38 +</code></pre> +<p>(将系统时间设定为上午 10:38)</p> +<p>二、时区修改</p> +<p>先查看时区</p> +<pre><code>date -R   +</code></pre> +<p>修改时区: (将Asia/shanghai-上海时区写入当前时区)</p> +<pre><code>cp -f /usr/share/zoneinfo/Asia/Shanghai     /etc/localtime +</code></pre> +<p>提示是否覆盖,输入Y回车, 然后</p> +<pre><code>date +</code></pre> +<p>查看时区和时间(CST,中国时区)</p> + \ No newline at end of file diff --git a/sitemap-0.xml b/sitemap-0.xml new file mode 100644 index 0000000..6f44670 --- /dev/null +++ b/sitemap-0.xml @@ -0,0 +1 @@ +https://blog.ittst.com/https://blog.ittst.com/2/https://blog.ittst.com/3/https://blog.ittst.com/4/https://blog.ittst.com/5/https://blog.ittst.com/6/https://blog.ittst.com/about/https://blog.ittst.com/archive/https://blog.ittst.com/archive/category/%E5%8D%9A%E5%AE%A2/https://blog.ittst.com/archive/category/%E5%88%86%E4%BA%AB/https://blog.ittst.com/archive/category/%E6%8E%A8%E8%8D%90/https://blog.ittst.com/archive/category/%E9%9A%8F%E7%AC%94/https://blog.ittst.com/archive/category/%E9%BB%98%E8%AE%A4/https://blog.ittst.com/archive/category/uncategorized/https://blog.ittst.com/archive/tag/%E4%B8%8B%E8%BD%BD/https://blog.ittst.com/archive/tag/%E4%B8%BB%E6%8E%A7/https://blog.ittst.com/archive/tag/%E5%8D%9A%E5%AE%A2/https://blog.ittst.com/archive/tag/%E5%8E%82%E5%95%86/https://blog.ittst.com/archive/tag/%E5%9B%BA%E6%80%81/https://blog.ittst.com/archive/tag/%E5%85%8D%E9%A9%B1/https://blog.ittst.com/archive/tag/%E5%91%BD%E4%BB%A4/https://blog.ittst.com/archive/tag/%E5%AD%97%E4%BD%93/https://blog.ittst.com/archive/tag/%E5%BC%80%E5%8D%A1/https://blog.ittst.com/archive/tag/%E6%95%99%E7%A8%8B/https://blog.ittst.com/archive/tag/%E6%98%BE%E5%8D%A1/https://blog.ittst.com/archive/tag/%E6%A2%AF%E5%AD%90/https://blog.ittst.com/archive/tag/%E6%B3%A8%E5%86%8C/https://blog.ittst.com/archive/tag/%E7%94%9F%E6%B4%BB/https://blog.ittst.com/archive/tag/%E7%A1%AC%E7%9B%98/https://blog.ittst.com/archive/tag/%E7%A1%AC%E7%9B%98%E7%9B%92/https://blog.ittst.com/archive/tag/%E7%A3%81%E5%8A%9B/https://blog.ittst.com/archive/tag/%E7%A7%91%E5%AD%A6%E4%B8%8A%E7%BD%91/https://blog.ittst.com/archive/tag/%E7%AC%94%E8%AE%B0%E6%9C%AC/https://blog.ittst.com/archive/tag/%E8%87%AA%E5%8A%A8%E5%8C%96/https://blog.ittst.com/archive/tag/%E8%99%9A%E6%8B%9F%E4%BF%A1%E7%94%A8%E5%8D%A1/https://blog.ittst.com/archive/tag/%E8%A7%82%E5%BD%B1/https://blog.ittst.com/archive/tag/%E8%AF%84%E8%AE%BA/https://blog.ittst.com/archive/tag/%E8%B1%86%E7%93%A3/https://blog.ittst.com/archive/tag/%E8%BD%AF%E8%B7%AF%E7%94%B1/https://blog.ittst.com/archive/tag/%E9%9C%9E%E9%B9%9C%E6%96%87%E6%A5%B7/https://blog.ittst.com/archive/tag/%E9%83%A8%E7%BD%B2/https://blog.ittst.com/archive/tag/%E9%98%BF%E9%87%8C/https://blog.ittst.com/archive/tag/%E9%98%BF%E9%87%8C%E6%82%9F%E7%A9%BA/https://blog.ittst.com/archive/tag/%E9%BB%91%E8%8B%B9%E6%9E%9C/https://blog.ittst.com/archive/tag/Alist/https://blog.ittst.com/archive/tag/amd/https://blog.ittst.com/archive/tag/artalk/https://blog.ittst.com/archive/tag/Artalk/https://blog.ittst.com/archive/tag/Astro/https://blog.ittst.com/archive/tag/centos/https://blog.ittst.com/archive/tag/chajian/https://blog.ittst.com/archive/tag/chatgpt/https://blog.ittst.com/archive/tag/cloud%20torrent/https://blog.ittst.com/archive/tag/clover/https://blog.ittst.com/archive/tag/CommentsByQQ/https://blog.ittst.com/archive/tag/Docker/https://blog.ittst.com/archive/tag/edid/https://blog.ittst.com/archive/tag/fly.io/https://blog.ittst.com/archive/tag/fuwari/https://blog.ittst.com/archive/tag/Github/https://blog.ittst.com/archive/tag/Gotosocial/https://blog.ittst.com/archive/tag/hackintool/https://blog.ittst.com/archive/tag/hexo/https://blog.ittst.com/archive/tag/Hexo/https://blog.ittst.com/archive/tag/lede/https://blog.ittst.com/archive/tag/linux/https://blog.ittst.com/archive/tag/Linux/https://blog.ittst.com/archive/tag/macos/https://blog.ittst.com/archive/tag/Mariadb/https://blog.ittst.com/archive/tag/mastodon/https://blog.ittst.com/archive/tag/memos/https://blog.ittst.com/archive/tag/Memos/https://blog.ittst.com/archive/tag/office/https://blog.ittst.com/archive/tag/opencore/https://blog.ittst.com/archive/tag/openwrt/https://blog.ittst.com/archive/tag/Pleroma/https://blog.ittst.com/archive/tag/QQ%E6%9C%BA%E5%99%A8%E4%BA%BA/https://blog.ittst.com/archive/tag/samsung/https://blog.ittst.com/archive/tag/SForum/https://blog.ittst.com/archive/tag/torrent/https://blog.ittst.com/archive/tag/Twikoo/https://blog.ittst.com/archive/tag/typecho/https://blog.ittst.com/archive/tag/V2RAY/https://blog.ittst.com/archive/tag/VPS/https://blog.ittst.com/archive/tag/webhook/https://blog.ittst.com/archive/tag/windows/https://blog.ittst.com/memos/https://blog.ittst.com/posts/42-virtual-credit-card-opening-channels/https://blog.ittst.com/posts/2023-black-apple-amd--free-drived-card-buying-recommendation/https://blog.ittst.com/posts/2023-methods-to-register-chatgpt-in-china/https://blog.ittst.com/posts/add-a-movie-viewing-page-to-the-blog/https://blog.ittst.com/posts/add-artalk-comments-to-memos/https://blog.ittst.com/posts/add-twikoo-comments-to-memos/https://blog.ittst.com/posts/ali-goku-service-offline/https://blog.ittst.com/posts/artalk-comments-using-qq-robot-notification/https://blog.ittst.com/posts/asus-b150m-et-m2+rx560-black-apple-oc0.8.5-guide/https://blog.ittst.com/posts/black-apple-solid--state-pit-guideline/https://blog.ittst.com/posts/centos-appears-at-yum/https://blog.ittst.com/posts/centos-system-time-and-time-zone-viewing-and-modification-method/https://blog.ittst.com/posts/cloud-torrent-for-centos-one--click-installation/https://blog.ittst.com/posts/compressed-xiafen-kaikai-font-by-taking-the-ziji-setting/https://blog.ittst.com/posts/deploy-alist-in-fly.io/https://blog.ittst.com/posts/deploy-gotosocial-in-fly.io/https://blog.ittst.com/posts/deploy-the-artalk-review-system-in-fly.io/https://blog.ittst.com/posts/docker-deploy-activity-relay-service/https://blog.ittst.com/posts/from-hexo-to-astro/https://blog.ittst.com/posts/how-to-deploy-memos-in-fly.io/https://blog.ittst.com/posts/lede-soft-routing-installation-koolss-offline-plug--in-package-prompts-to-solve-illegal-keywords/https://blog.ittst.com/posts/local-installation-package-command-under-linux/https://blog.ittst.com/posts/macos-and-windows-dual-systems-are-not-synchronized/https://blog.ittst.com/posts/mariadb-creates-databases,-users-and-authorization/https://blog.ittst.com/posts/nec-m700-black-apple-oc0.9.4-guide/https://blog.ittst.com/posts/nec-vk22-black-apple-opencore-guide/https://blog.ittst.com/posts/office2016-mac-version-download,-install,-crack-activation/https://blog.ittst.com/posts/quickly-deploy-misskey-instance/https://blog.ittst.com/posts/qv2ray-client-and-kernel-download/https://blog.ittst.com/posts/remember-to-restore-the-ssd-ssd-solid-state-(re--opening-the-card)/https://blog.ittst.com/posts/start-with-memos's-webhook/https://blog.ittst.com/posts/test-various-problems-encountered-in-xiuno2sforum/https://blog.ittst.com/posts/the-solution-of-the-cantos7-ssh-connection-is-slow/https://blog.ittst.com/posts/there-is-no-network-after-installs7-installation/https://blog.ittst.com/posts/typecho-plug--in-commentsbyqq-modified-version/https://blog.ittst.com/posts/use-docker-to-build-a-pleroma-example/https://blog.ittst.com/posts/use-docker-to-quickly-deploy-a-memos-qq-robot/https://blog.ittst.com/posts/use-docker-to-quickly-deploy-mastodon-instances/https://blog.ittst.com/posts/use-github-actions-to-automatically-deploy-hexo-blog/https://blog.ittst.com/posts/use-memos-api-to-implement-the-dynamic-page-of-the-hexo-blog/https://blog.ittst.com/posts/vi-editor's-basic-usage-method/https://blog.ittst.com/posts/vk23-black-apple-opencore0.8.5-guide-macos12.6.1/ \ No newline at end of file diff --git a/sitemap-index.xml b/sitemap-index.xml new file mode 100644 index 0000000..cfde1fa --- /dev/null +++ b/sitemap-index.xml @@ -0,0 +1 @@ +https://blog.ittst.com/sitemap-0.xml \ No newline at end of file