From bf50b6c865112c55a01679e1e93927d225c8d5d3 Mon Sep 17 00:00:00 2001 From: CGH0S7 <776459475@qq.com> Date: Wed, 26 Feb 2025 09:13:52 +0800 Subject: [PATCH] 2025-2-26 --- .gitignore | 5 + README.md | 1 + _config.fluid.yml | 1165 ++++++ _config.landscape.yml | 0 _config.yml | 110 + db.json | 1 + package-lock.json | 3345 +++++++++++++++++ package.json | 28 + scaffolds/draft.md | 4 + scaffolds/page.md | 4 + scaffolds/post.md | 5 + source/_posts/12月16-17日工作记录.md | 13 + source/_posts/12月18日工作记录.md | 9 + source/_posts/12月19日工作记录.md | 8 + source/_posts/12月20日工作记录.md | 14 + source/_posts/12月28日进度报告.md | 12 + source/_posts/12月31日进度报告.md | 12 + source/_posts/BlogUpdate.md | 12 + source/_posts/CGH0S7-s-Blog.md | 7 + source/_posts/GentleJena.md | 14 + source/_posts/Vocaloid调教-晴天.md | 15 + source/_posts/arch-nvidia.md | 112 + source/_posts/archlinux-optimization.md | 17 + source/_posts/clonezilla.md | 81 + source/_posts/loopers.md | 11 + source/_posts/mhwi.md | 14 + source/_posts/nudtbomblab.md | 420 +++ source/_posts/overleaf.md | 97 + source/_posts/zellij-helix.md | 19 + source/_posts/原来我还有个博客.md | 9 + source/_posts/梦开始的地方.md | 34 + source/about/index.md | 17 + ...3f5602b203b38230f19699deb0219454454985.png | Bin 0 -> 741484 bytes source/images/1730728153314.png | Bin 0 -> 377898 bytes source/images/20241027_222225.png | Bin 0 -> 1305002 bytes ...4bba6d035326e82c53504dd53e7c2454454985.png | Bin 0 -> 656811 bytes ...5357ef4bd808b10429bc2ea46cb6f454454985.png | Bin 0 -> 845728 bytes ...tten-By-Human-Not-By-AI-Badge-white@2x.png | Bin 0 -> 4440 bytes source/images/amd.webp | Bin 0 -> 12308 bytes source/images/archlinux-logo.png | Bin 0 -> 11178 bytes source/images/asc-events.png | Bin 0 -> 16764 bytes source/images/asc.png | Bin 0 -> 10379 bytes ...54bbaf6197624d38cc2007d885fd1454454985.png | Bin 0 -> 1303292 bytes source/images/built_on_the_kde_platform.png | Bin 0 -> 11721 bytes source/images/caseclosed.png | Bin 0 -> 216131 bytes source/images/clonezilla.png | Bin 0 -> 935180 bytes source/images/mhwilds4050.jpg | Bin 0 -> 802233 bytes source/images/mhwilds780M.jpg | Bin 0 -> 929973 bytes source/images/phase1.png | Bin 0 -> 503903 bytes source/images/phase1_strings.png | Bin 0 -> 85475 bytes source/images/phase_2_14.png | Bin 0 -> 1061313 bytes source/images/phase_4.png | Bin 0 -> 1066417 bytes source/images/zellij-helix.jpg | Bin 0 -> 4479566 bytes yarn.lock | 1922 ++++++++++ 54 files changed, 7537 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 _config.fluid.yml create mode 100644 _config.landscape.yml create mode 100644 _config.yml create mode 100644 db.json create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 scaffolds/draft.md create mode 100644 scaffolds/page.md create mode 100644 scaffolds/post.md create mode 100644 source/_posts/12月16-17日工作记录.md create mode 100644 source/_posts/12月18日工作记录.md create mode 100644 source/_posts/12月19日工作记录.md create mode 100644 source/_posts/12月20日工作记录.md create mode 100644 source/_posts/12月28日进度报告.md create mode 100644 source/_posts/12月31日进度报告.md create mode 100644 source/_posts/BlogUpdate.md create mode 100644 source/_posts/CGH0S7-s-Blog.md create mode 100644 source/_posts/GentleJena.md create mode 100644 source/_posts/Vocaloid调教-晴天.md create mode 100644 source/_posts/arch-nvidia.md create mode 100644 source/_posts/archlinux-optimization.md create mode 100644 source/_posts/clonezilla.md create mode 100644 source/_posts/loopers.md create mode 100644 source/_posts/mhwi.md create mode 100644 source/_posts/nudtbomblab.md create mode 100644 source/_posts/overleaf.md create mode 100644 source/_posts/zellij-helix.md create mode 100644 source/_posts/原来我还有个博客.md create mode 100644 source/_posts/梦开始的地方.md create mode 100644 source/about/index.md create mode 100644 source/images/1613f5602b203b38230f19699deb0219454454985.png create mode 100644 source/images/1730728153314.png create mode 100644 source/images/20241027_222225.png create mode 100644 source/images/5364bba6d035326e82c53504dd53e7c2454454985.png create mode 100644 source/images/71a5357ef4bd808b10429bc2ea46cb6f454454985.png create mode 100644 source/images/Written-By-Human-Not-By-AI-Badge-white@2x.png create mode 100644 source/images/amd.webp create mode 100644 source/images/archlinux-logo.png create mode 100644 source/images/asc-events.png create mode 100644 source/images/asc.png create mode 100644 source/images/b2054bbaf6197624d38cc2007d885fd1454454985.png create mode 100644 source/images/built_on_the_kde_platform.png create mode 100644 source/images/caseclosed.png create mode 100644 source/images/clonezilla.png create mode 100644 source/images/mhwilds4050.jpg create mode 100644 source/images/mhwilds780M.jpg create mode 100644 source/images/phase1.png create mode 100644 source/images/phase1_strings.png create mode 100644 source/images/phase_2_14.png create mode 100644 source/images/phase_4.png create mode 100644 source/images/zellij-helix.jpg create mode 100644 yarn.lock diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..bb52200 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +.github/ +.deploy_git/ +public/ +node_modules/ +themes/ diff --git a/README.md b/README.md new file mode 100644 index 0000000..151abb9 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +我的个人博客 diff --git a/_config.fluid.yml b/_config.fluid.yml new file mode 100644 index 0000000..1ffff80 --- /dev/null +++ b/_config.fluid.yml @@ -0,0 +1,1165 @@ +#--------------------------- +# Hexo Theme Fluid +# Author: Fluid-dev +# Github: https://github.com/fluid-dev/hexo-theme-fluid +# +# 配置指南: https://hexo.fluid-dev.com/docs/guide/ +# 你可以从指南中获得更详细的说明 +# +# Guide: https://hexo.fluid-dev.com/docs/en/guide/ +# You can get more detailed help from the guide +#--------------------------- + + +#--------------------------- +# 全局 +# Global +#--------------------------- + +# 用于浏览器标签的图标 +# Icon for browser tab +favicon: /img/hifuu.png + +# 用于苹果设备的图标 +# Icon for Apple touch +apple_touch_icon: /img/hifuu.png + +# 浏览器标签页中的标题分隔符,效果:文章名 - 站点名 +# Title separator in browser tab, eg: article - site +tab_title_separator: " - " + +# 强制所有链接升级为 HTTPS(适用于图片等资源出现 HTTP 混入报错) +# Force all links to be HTTPS (applicable to HTTP mixed error) +force_https: true + +# 代码块的增强配置 +# Enhancements to code blocks +code: + # 是否开启复制代码的按钮 + # Enable copy code button + copy_btn: true + + # 代码语言 + # Code language + language: + enable: true + default: "TEXT" + + # 代码高亮 + # Code highlight + highlight: + enable: true + + # 代码块是否显示行号 + # If true, the code block display line numbers + line_number: true + + # 实现高亮的库,对应下面的设置 + # Highlight library + # Options: highlightjs | prismjs + lib: "highlightjs" + + highlightjs: + # 在链接中挑选 style 填入 + # Select a style in the link + # See: https://highlightjs.org/demo/ + style: "github gist" + style_dark: "dark" + + prismjs: + # 在下方链接页面右侧的圆形按钮挑选 style 填入,也可以直接填入 css 链接 + # Select the style button on the right side of the link page, you can also set the CSS link + # See: https://prismjs.com/ + style: "default" + style_dark: "tomorrow night" + + # 设为 true 高亮将本地静态生成(但只支持部分 prismjs 插件),设为 false 高亮将在浏览器通过 js 生成 + # If true, it will be generated locally (but some prismjs plugins are not supported). If false, it will be generated via JS in the browser + preprocess: true + +# 一些好玩的功能 +# Some fun features +fun_features: + # 为 subtitle 添加打字机效果 + # Typing animation for subtitle + typing: + enable: true + + # 打印速度,数字越大越慢 + # Typing speed, the larger the number, the slower + typeSpeed: 70 + + # 游标字符 + # Cursor character + cursorChar: "_" + + # 是否循环播放效果 + # If true, loop animation + loop: false + + # 在指定页面开启,不填则在所有页面开启 + # Enable in specified page, all pages by default + # Options: home | post | tag | category | about | links | page | 404 + scope: [] + + # 为文章内容中的标题添加锚图标 + # Add an anchor icon to the title on the post page + anchorjs: + enable: true + element: h1,h2,h3,h4,h5,h6 + # Options: left | right + placement: left + + # Options: hover | always + visible: hover + + # Options: § | # | ❡ + icon: "" + + # 加载进度条 + # Progress bar when loading + progressbar: + enable: true + height_px: 3 + color: "#29d" + # See: https://github.com/rstacruz/nprogress + options: { showSpinner: false, trickleSpeed: 100 } + +# 主题暗色模式,开启后菜单中会出现切换按钮,用户浏览器会存储切换选项,并且会遵循 prefers-color-scheme 自动切换 +# Theme dark mode. If enable, a switch button will appear on the menu, each of the visitor's browser will store his switch option +dark_mode: + enable: true + # 默认的选项(当用户手动切换后则不再按照默认模式),选择 `auto` 会优先遵循 prefers-color-scheme,其次按用户本地时间 18 点到次日 6 点之间进入暗色模式 + # Default option (when the visitor switches manually, the default mode is no longer followed), choosing `auto` will give priority to prefers-color-scheme, and then enter the dark mode from 18:00 to 6:00 in the visitor's local time + # Options: auto | light | dark + default: auto + +# 主题颜色配置,其他不生效的地方请使用自定义 css 解决,配色可以在下方链接中获得启发 +# Theme color, please use custom CSS to solve other colors, color schema can be inspired by the links below +# See: https://www.webdesignrankings.com/resources/lolcolors/ +color: + # body 背景色 + # Color of body background + body_bg_color: "#eee" + # 暗色模式下的 body 背景色,下同 + # Color in dark mode, the same below + body_bg_color_dark: "#181c27" + + # 顶部菜单背景色 + # Color of navigation bar background + navbar_bg_color: "#2f4154" + navbar_bg_color_dark: "#1f3144" + + # 顶部菜单字体色 + # Color of navigation bar text + navbar_text_color: "#fff" + navbar_text_color_dark: "#d0d0d0" + + # 副标题字体色 + # Color of subtitle text + subtitle_color: "#fff" + subtitle_color_dark: "#d0d0d0" + + # 全局字体色 + # Color of global text + text_color: "#3c4858" + text_color_dark: "#c4c6c9" + + # 全局次级字体色(摘要、简介等位置) + # Color of global secondary text (excerpt, introduction, etc.) + sec_text_color: "#718096" + sec_text_color_dark: "#a7a9ad" + + # 主面板背景色 + # Color of main board + board_color: "#fff" + board_color_dark: "#252d38" + + # 文章正文字体色 + # Color of post text + post_text_color: "#2c3e50" + post_text_color_dark: "#c4c6c9" + + # 文章正文字体色(h1 h2 h3...) + # Color of Article heading (h1 h2 h3...) + post_heading_color: "#1a202c" + post_heading_color_dark: "#c4c6c9" + + # 文章超链接字体色 + # Color of post link + post_link_color: "#0366d6" + post_link_color_dark: "#1589e9" + + # 超链接悬浮时字体色 + # Color of link when hovering + link_hover_color: "#30a9de" + link_hover_color_dark: "#30a9de" + + # 超链接悬浮背景色 + # Color of link background when hovering + link_hover_bg_color: "#f8f9fa" + link_hover_bg_color_dark: "#364151" + + # 分隔线和表格边线的颜色 + # Color of horizontal rule and table border + line_color: "#eaecef" + line_color_dark: "#435266" + + # 滚动条颜色 + # Color of scrollbar + scrollbar_color: "#c4c6c9" + scrollbar_color_dark: "#687582" + # 滚动条悬浮颜色 + # Color of scrollbar when hovering + scrollbar_hover_color: "#a6a6a6" + scrollbar_hover_color_dark: "#9da8b3" + + # 按钮背景色 + # Color of button + button_bg_color: "transparent" + button_bg_color_dark: "transparent" + # 按钮悬浮背景色 + # Color of button when hovering + button_hover_bg_color: "#f2f3f5" + button_hover_bg_color_dark: "#46647e" + +# 主题字体配置 +# Font +font: + font_size: 16px + font_family: + letter_spacing: 0.02em + code_font_size: 85% + +# 指定自定义 .js 文件路径,支持列表;路径是相对 source 目录,如 /js/custom.js 对应存放目录 source/js/custom.js +# Specify the path of your custom js file, support list. The path is relative to the source directory, such as `/js/custom.js` corresponding to the directory `source/js/custom.js` +custom_js: + +# 指定自定义 .css 文件路径,用法和 custom_js 相同 +# The usage is the same as custom_js +custom_css: + +# 网页访问统计 +# Analysis of website visitors +web_analytics: + enable: false + + # 遵循访客浏览器"请勿追踪"的设置,如果开启则不统计其访问 + # Follow the "Do Not Track" setting of the visitor's browser + # See: https://www.w3.org/TR/tracking-dnt/ + follow_dnt: true + + # 百度统计的 Key,值需要获取下方链接中 `hm.js?` 后边的字符串 + # Baidu analytics, get the string behind `hm.js?` + # See: https://tongji.baidu.com/sc-web/10000033910/home/site/getjs?siteId=13751376 + baidu: + + # Google Analytics 4 的媒体资源 ID + # Google Analytics 4 MEASUREMENT_ID + # See: https://support.google.com/analytics/answer/9744165#zippy=%2Cin-this-article + google: + measurement_id: + + # 腾讯统计的 H5 App ID,开启高级功能才有cid + # Tencent analytics, set APP ID + # See: https://mta.qq.com/h5/manage/ctr_app_manage + tencent: + sid: + cid: + + # LeanCloud 计数统计,可用于 PV UV 展示,如果 `web_analytics: enable` 没有开启,PV UV 展示只会查询不会增加 + # LeanCloud count statistics, which can be used for PV UV display. If `web_analytics: enable` is false, PV UV display will only query and not increase + leancloud: + app_id: + app_key: + # REST API 服务器地址,国际版不填 + # Only the Chinese mainland users need to set + server_url: + # 统计页面时获取路径的属性 + # Get the attribute of the page path during statistics + path: window.location.pathname + # 开启后不统计本地路径( localhost 与 127.0.0.1 ) + # If true, ignore localhost & 127.0.0.1 + ignore_local: false + + # Umami Analytics,仅支持自部署。如果要展示 PV UV 需要填写所有配置项,否则只填写 `src` 和 `website_id` 即可 + # Umami Analytics, only Self-host support. If you want to display PV UV need to set all config items, otherwise only set 'src' and 'website_id' + # See: https://umami.is/docs/authentication + umami: + # umami js 文件地址,需要在 umami 后台创建站点后获取 + # umami js file url, get after create website in umami + src: + + # umami 的 website id,需要在 umami 后台创建站点后获取 + # umami website id, get after create website in umami + website_id: + + # 如果你只想统计特定的域名可以填入此字段,多个域名通过逗号分隔,这可以避免统计 localhost。 + # If you only want to tracker to specific domains you can fill in this field, multiple domain names are separated by commas, which can avoid tracker localhost + domains: + + # 用于统计 PV UV 的开始时间,格式为 "YYYY-MM-DD" + # statistics on the start time, the format is "YYYY-MM-DD" + start_time: 2024-01-01 + + # 新建一个 umami viewOnly 用户,然后通过 login api 获取该用户 token + # create an umami viewOnly user, and then get user token through the login api + token: + + # 填写 umami 部署的服务器地址,如 "https://umami.example.com" + # server url of umami deployment, such as "https://umami.example.com" + api_server: + +# Canonical 用于向 Google 搜索指定规范网址,开启前确保 hexo _config.yml 中配置 `url: http://yourdomain.com` +# Canonical, to specify a canonical URL for Google Search, need to set up `url: http://yourdomain.com` in hexo _config.yml +# See: https://support.google.com/webmasters/answer/139066 +canonical: + enable: false + +# 对页面中的图片和评论插件进行懒加载处理,可见范围外的元素不会提前加载 +# Lazy loading of images and comment plugin on the page +lazyload: + enable: true + + # 加载时的占位图片 + # The placeholder image when loading + loading_img: /img/loading.gif + + # 开启后懒加载仅在文章页生效,如果自定义页面需要使用,可以在 Front-matter 里指定 `lazyload: true` + # If true, only enable lazyload on the post page. For custom pages, you can set 'lazyload: true' in front-matter + onlypost: false + + # 触发加载的偏移倍数,基数是视窗高度,可根据部署环境的请求速度调节 + # The factor of viewport height that triggers loading + offset_factor: 2 + +# 图标库,包含了大量社交类图标,主题依赖的不包含在内,因此可自行修改,详见 https://hexo.fluid-dev.com/docs/icon/ +# Icon library, which includes many social icons, does not include those theme dependent, so your can modify link by yourself. See: https://hexo.fluid-dev.com/docs/en/icon/ +iconfont: //at.alicdn.com/t/c/font_1736178_k526ubmyhba.css + + +#--------------------------- +# 页头 +# Header +#--------------------------- + +# 导航栏的相关配置 +# Navigation bar +navbar: + # 导航栏左侧的标题,为空则按 hexo config 中 `title` 显示 + # The title on the left side of the navigation bar. If empty, it is based on `title` in hexo config + blog_title: "CGH0S7's Blog" + + # 导航栏毛玻璃特效,实验性功能,可能会造成页面滚动掉帧和抖动,部分浏览器不支持会自动不生效 + # Navigation bar frosted glass special animation. It is an experimental feature + ground_glass: + enable: true + + # 模糊像素,只能为数字,数字越大模糊度越高 + # Number of blurred pixel. the larger the number, the higher the blur + px: 3 + + # 不透明度,数字越大透明度越低,注意透明过度可能看不清菜单字体 + # Ratio of opacity, 1.0 is completely opaque + # available: 0 - 1.0 + alpha: 0.7 + + # 导航栏菜单,可自行增减,key 用来关联 languages/*.yml,如不存在关联则显示 key 本身的值;icon 是 css class,可以省略;增加 name 可以强制显示指定名称 + # Navigation bar menu. `key` is used to associate languages/*.yml. If there is no association, the value of `key` itself will be displayed; if `icon` is a css class, it can be omitted; adding `name` can force the display of the specified name + menu: + - { key: "home", link: "/", icon: "iconfont icon-home-fill" } + - { key: "archive", link: "/archives/", icon: "iconfont icon-archive-fill" } + - { key: "category", link: "/categories/", icon: "iconfont icon-category-fill" } + - { key: "tag", link: "/tags/", icon: "iconfont icon-tags-fill" } + - { key: "about", link: "/about/", icon: "iconfont icon-user-fill" } + - { key: "links", link: "/links/", icon: "iconfont icon-link-fill" } + +# 搜索功能,基于 hexo-generator-search 插件,若已安装其他搜索插件请关闭此功能,以避免生成多余的索引文件 +# Search feature, based on hexo-generator-search. If you have installed other search plugins, please disable this feature to avoid generating redundant index files +search: + enable: true + + # 搜索索引文件的路径,可以是相对路径或外站的绝对路径 + # Path for search index file, it can be a relative path or an absolute path + path: /local-search.xml + + # 文件生成在本地的位置,必须是相对路径 + # The location where the index file is generated locally, it must be a relative location + generate_path: /local-search.xml + + # 搜索的范围 + # Search field + # Options: post | page | all + field: post + + # 搜索是否扫描正文 + # If true, search will scan the post content + content: true + +# 首屏图片的相关配置 +# Config of the big image on the first screen +banner: + # 视差滚动,图片与板块会随着屏幕滚动产生视差效果 + # Scrolling parallax + parallax: true + + # 图片最小的宽高比,以免图片两边被过度裁剪,适用于移动端竖屏时,如需关闭设为 0 + # Minimum ratio of width to height, applicable to the vertical screen of mobile device, if you need to close it, set it to 0 + width_height_ratio: 1.0 + +# 向下滚动的箭头 +# Scroll down arrow +scroll_down_arrow: + enable: true + + # 头图高度不小于指定比例,才显示箭头 + # Only the height of the banner image is greater than the ratio, the arrow is displayed + # Available: 0 - 100 + banner_height_limit: 80 + + # 翻页后自动滚动 + # Auto scroll after page turning + scroll_after_turning_page: true + +# 向顶部滚动的箭头 +# Scroll top arrow +scroll_top_arrow: + enable: true + +# Open Graph metadata +# See: https://hexo.io/docs/helpers.html#open-graph +open_graph: + enable: true + twitter_card: summary_large_image + twitter_id: + twitter_site: + google_plus: + fb_admins: + fb_app_id: + + +#--------------------------- +# 页脚 +# Footer +#--------------------------- +footer: + # 页脚第一行文字的 HTML,建议保留 Fluid 的链接,用于向更多人推广本主题 + # HTML of the first line of the footer, it is recommended to keep the Fluid link to promote this theme to more people + content: ' + Hexo + + CGH0S7 + ' + + # 展示网站的 PV、UV 统计数 + # Display website PV and UV statistics + statistics: + enable: false + + # 统计数据来源,使用 leancloud, umami 需要设置 `web_analytics` 中对应的参数;使用 busuanzi 不需要额外设置,但是有时不稳定,另外本地运行时 busuanzi 显示统计数据很大属于正常现象,部署后会正常 + # Data source. If use leancloud, umami, you need to set the parameter in `web_analytics` + # Options: busuanzi | leancloud | umami + source: "busuanzi" + + # 国内大陆服务器的备案信息 + # For Chinese mainland website policy, other areas keep disable + beian: + enable: false + # ICP证号 + icp_text: 京ICP证123456号 + # 公安备案号,不填则只显示ICP + police_text: 京公网安备12345678号 + # 公安备案的编号,用于URL跳转查询 + police_code: 12345678 + # 公安备案的图片. 为空时不显示备案图片 + police_icon: /img/police_beian.png + + +#--------------------------- +# 首页 +# Home Page +#--------------------------- +index: + # 首页 Banner 头图,可以是相对路径或绝对路径,以下相同 + # Path of Banner image, can be a relative path or an absolute path, the same on other pages + banner_img: /img/gensokyo.jpg + + # 头图高度,屏幕百分比 + # Height ratio of banner image + # Available: 0 - 100 + banner_img_height: 100 + + # 头图黑色蒙版的不透明度,available: 0 - 1.0,1 是完全不透明 + # Opacity of the banner mask, 1.0 is completely opaque + # Available: 0 - 1.0 + banner_mask_alpha: 0.3 + + # 首页副标题的独立设置 + # Independent config of home page subtitle + slogan: + enable: true + + # 为空则按 hexo config.subtitle 显示 + # If empty, text based on `subtitle` in hexo config + text: "The Gensokyo the Gods Loved" + + # 通过 API 接口作为首页副标题的内容,必须返回的是 JSON 格式,如果请求失败则按 text 字段显示,该功能必须先开启 typing 打字机功能 + # Subtitle of the homepage through the API, must be returned a JSON. If the request fails, it will be displayed in `text` value. This feature must first enable the typing animation + api: + enable: false + + # 请求地址 + # Request url + url: "" + + # 请求方法 + # Request method + # Available: GET | POST | PUT + method: "GET" + + # 请求头 + # Request headers + headers: {} + + # 从请求结果获取字符串的取值字段,最终必须是一个字符串,例如返回结果为 {"data": {"author": "fluid", "content": "An elegant theme"}}, 则取值字段为 ['data', 'content'];如果返回是列表则自动选择第一项 + # The value field of the string obtained from the response. For example, the response content is {"data": {"author": "fluid", "content": "An elegant theme"}}, the expected `keys: ['data','content']`; if the return is a list, the first item is automatically selected + keys: [] + + # 自动截取文章摘要 + # Auto extract post + auto_excerpt: + enable: true + + # 打开文章的标签方式 + # The browser tag to open the post + # Available: _blank | _self + post_url_target: _self + + # 是否显示文章信息(时间、分类、标签) + # Meta information of post + post_meta: + date: true + category: true + tag: true + + # 文章通过 sticky 排序后,在首页文章标题前显示图标 + # If the posts are sorted by `sticky`, an icon is displayed in front of the post title + post_sticky: + enable: true + icon: "iconfont icon-top" + + +#--------------------------- +# 文章页 +# Post Page +#--------------------------- +post: + banner_img: /img/gensokyo.jpg + banner_img_height: 70 + banner_mask_alpha: 0.3 + + # 文章在首页的默认封面图,当没有指定 index_img 时会使用该图片,若两者都为空则不显示任何图片 + # Path of the default post cover when `index_img` is not set. If both are empty, no image will be displayed + default_index_img: + + # 文章标题下方的元信息 + # Meta information below title + meta: + # 作者,优先根据 front-matter 里 author 字段,其次是 hexo 配置中 author 值 + # Author, based on `author` field in front-matter, if not set, based on `author` value in hexo config + author: + enable: false + + # 文章日期,优先根据 front-matter 里 date 字段,其次是 md 文件日期 + # Post date, based on `date` field in front-matter, if not set, based on create date of .md file + date: + enable: true + # 格式参照 ISO-8601 日期格式化 + # ISO-8601 date format + # See: http://momentjs.cn/docs/#/parsing/string-format/ + format: "LL a" + + # 字数统计 + # Word count + wordcount: + enable: true + + # 估计阅读全文需要的时长 + # Estimated reading time + min2read: + enable: true + # 每个字词的长度,建议:中文≈2,英文≈5,中英混合可自行调节 + # Average word length (chars count in word), ZH ≈ 2, EN ≈ 5 + awl: 2 + # 每分钟阅读字数,如果大部分是技术文章可适度调低 + # Words per minute + wpm: 60 + + # 浏览量计数 + # Number of visits + views: + enable: false + # 统计数据来源 + # Data Source + # Options: busuanzi | leancloud | umami + source: "busuanzi" + + # 在文章开头显示文章更新时间,该时间默认是 md 文件更新时间,可通过 front-matter 中 `updated` 手动指定(和 date 一样格式) + # Update date is displayed at the beginning of the post. The default date is the update date of the md file, which can be manually specified by `updated` in front-matter (same format as date) + updated: + enable: false + + # 格式参照 ISO-8601 日期格式化 + # ISO-8601 date format + # See: http://momentjs.cn/docs/#/parsing/string-format/ + date_format: "LL a" + + # 是否使用相对时间表示,比如:"3 天前" + # If true, it will be a relative time, such as: "3 days ago" + relative: false + + # 提示标签类型 + # Note class + # Options: default | primary | info | success | warning | danger | light + note_class: info + + # 侧边栏展示当前分类下的文章 + # Sidebar of category + category_bar: + enable: true + + # 开启后,只有在文章 Front-matter 里指定 `category_bar: true` 才会展示分类,也可以通过 `category_bar: ["分类A"]` 来指定分类 + # If true, only set `category_bar: true` in Front-matter will enable sidebar of category, also set `category_bar: ["CategoryA"]` to specify categories + specific: true + + # 置于板块的左侧或右侧 + # place in the board + # Options: left | right + placement: left + + # 文章的排序字段,前面带减号是倒序,不带减号是正序 + # Sort field for posts, with a minus sign is reverse order + # Options: date | title | or other field of front-matter + post_order_by: "title" + + # 单个分类中折叠展示文章数的最大值,超过限制会显示 More,0 则不限制 + # The maximum number of posts in a single category. If the limit is exceeded, it will be displayed More. If 0 no limit + post_limit: 0 + + # 侧边栏展示文章目录 + # Table of contents (TOC) in the sidebar + toc: + enable: true + + # 置于板块的左侧或右侧 + # place in the board + # Options: left | right + placement: right + + # 目录会选择这些节点作为标题 + # TOC will select these nodes as headings + headingSelector: "h1,h2,h3,h4,h5,h6" + + # 层级的折叠深度,0 是全部折叠,大于 0 后如果存在下级标题则默认展开 + # Collapse depth. If 0, all headings collapsed. If greater than 0, it will be expanded by default if there are sub headings + collapseDepth: 0 + + # 版权声明,会显示在每篇文章的结尾 + # Copyright, will be displayed at the end of each post + copyright: + enable: true + + # CreativeCommons license + # See: https://creativecommons.org/share-your-work/cclicenses/ + # Options: BY | BY-SA | BY-ND | BY-NC | BY-NC-SA | BY-NC-ND | ZERO + license: 'BY' + + # 显示作者 + author: + enable: true + + # 显示发布日期 + # Show post date + post_date: + enable: true + format: "LL" + + # 显示更新日期 + # Show update date + update_date: + enable: false + format: "LL" + + # 文章底部上一篇下一篇功能 + # Link to previous/next post + prev_next: + enable: true + + # 文章图片标题 + # Image caption + image_caption: + enable: true + + # 文章图片可点击放大 + # Zoom feature of images + image_zoom: + enable: true + # 放大后图片链接替换规则,可用于将压缩图片链接替换为原图片链接,如 ['-slim', ''] 是将链接中 `-slim` 移除;如果想使用正则请使用 `re:` 前缀,如 ['re:\\d{3,4}\\/\\d{3,4}\\/', ''] + # The image url replacement when zooming, the feature can be used to replace the compressed image to the original image, eg: ['-slim', ''] removes `-slim` from the image url when zooming; if you want to use regular, use prefix `re:`, eg: ['re:\\d{3,4}\\/\\d{3,4}\\/',''] + img_url_replace: ['', ''] + + # 脚注语法,会在文章底部生成脚注,如果 Markdown 渲染器本身支持,则建议关闭,否则可能会冲突 + # Support footnote syntax, footnotes will be generated at the bottom of the post page. If the Markdown renderer itself supports it, please disable it, otherwise it may conflict + footnote: + enable: true + # 脚注的节标题,也可以在 front-matter 中通过 `footnote:

Reference

` 这种形式修改单独页面的 header + # The section title of the footnote, you can also modify the header of a single page in the form of `footnote:

Reference

` in front-matter + header: '' + + # 数学公式,开启之前需要更换 Markdown 渲染器,否则复杂公式会有兼容问题,具体请见:https://hexo.fluid-dev.com/docs/guide/##latex-数学公式 + # Mathematical formula. If enable, you need to change the Markdown renderer, see: https://hexo.fluid-dev.com/docs/en/guide/#math + math: + # 开启后文章默认可用,自定义页面如需使用,需在 Front-matter 中指定 `math: true` + # If you want to use math on the custom page, you need to set `math: true` in Front-matter + enable: false + + # 开启后,只有在文章 Front-matter 里指定 `math: true` 才会在文章页启动公式转换,以便在页面不包含公式时提高加载速度 + # If true, only set `math: true` in Front-matter will enable math, to load faster when the page does not contain math + specific: false + + # Options: mathjax | katex + engine: mathjax + + # 流程图,基于 mermaid-js,具体请见:https://hexo.fluid-dev.com/docs/guide/#mermaid-流程图 + # Flow chart, based on mermaid-js, see: https://hexo.fluid-dev.com/docs/en/guide/#mermaid + mermaid: + # 开启后文章默认可用,自定义页面如需使用,需在 Front-matter 中指定 `mermaid: true` + # If you want to use mermaid on the custom page, you need to set `mermaid: true` in Front-matter + enable: false + + # 开启后,只有在文章 Front-matter 里指定 `mermaid: true` 才会在文章页启动公式转换,以便在页面不包含公式时提高加载速度 + # If true, only set `mermaid: true` in Front-matter will enable mermaid, to load faster when the page does not contain mermaid + specific: false + + # See: http://mermaid-js.github.io/mermaid/ + options: { theme: 'default' } + + # 评论插件 + # Comment plugin + comments: + enable: false + # 指定的插件,需要同时设置对应插件的必要参数 + # The specified plugin needs to set the necessary parameters at the same time + # Options: utterances | disqus | gitalk | valine | waline | changyan | livere | remark42 | twikoo | cusdis | giscus | discuss + type: disqus + + +#--------------------------- +# 评论插件 +# Comment plugins +# +# 开启评论需要先设置上方 `post: comments: enable: true`,然后根据 `type` 设置下方对应的评论插件参数 +# Enable comments need to be set `post: comments: enable: true`, then set the corresponding comment plugin parameters below according to `type` +#--------------------------- + +# Utterances +# 基于 GitHub Issues +# Based on GitHub Issues +# See: https://utteranc.es +utterances: + repo: + issue_term: pathname + label: utterances + theme: github-light + theme_dark: github-dark + +# Disqus +# 基于第三方的服务,国内用户直接使用容易被墙,建议配合 Disqusjs +# Based on third-party service +# See: https://disqus.com +disqus: + shortname: + # 以下为 Disqusjs 支持, 国内用户如果想使用 Disqus 建议配合使用 + # The following are Disqusjs configurations, please ignore if DisqusJS is not required + # See: https://github.com/SukkaW/DisqusJS + disqusjs: false + apikey: + +# Gitalk +# 基于 GitHub Issues +# Based on GitHub Issues +# See: https://github.com/gitalk/gitalk#options +gitalk: + clientID: + clientSecret: + repo: + owner: + admin: ['name'] + language: zh-CN + labels: ['Gitalk'] + perPage: 10 + pagerDirection: last + distractionFreeMode: false + createIssueManually: true + # 默认 proxy 可能会失效,解决方法请见下方链接 + # The default proxy may be invalid, refer to the links for solutions + # https://github.com/gitalk/gitalk/issues/429 + # https://github.com/Zibri/cloudflare-cors-anywhere + proxy: https://cors-anywhere.azm.workers.dev/https://github.com/login/oauth/access_token + +# Valine +# 基于 LeanCloud +# Based on LeanCloud +# See: https://valine.js.org/ +valine: + appId: + appKey: + path: window.location.pathname + placeholder: + avatar: 'retro' + meta: ['nick', 'mail', 'link'] + requiredFields: [] + pageSize: 10 + lang: 'zh-CN' + highlight: false + recordIP: false + serverURLs: '' + emojiCDN: + emojiMaps: + enableQQ: false + +# Waline +# 从 Valine 衍生而来,额外增加了服务端和多种功能 +# Derived from Valine, with self-hosted service and new features +# See: https://waline.js.org/ +waline: + serverURL: '' + path: window.location.pathname + meta: ['nick', 'mail', 'link'] + requiredMeta: ['nick'] + lang: 'zh-CN' + emoji: ['https://cdn.jsdelivr.net/gh/walinejs/emojis/weibo'] + dark: 'html[data-user-color-scheme="dark"]' + wordLimit: 0 + pageSize: 10 + +# 畅言 Changyan +# 基于第三方的服务 +# Based on third-party service, insufficient support for regions outside China +# http://changyan.kuaizhan.com +changyan: + appid: '' + appkey: '' + +# 来必力 Livere +# 基于第三方的服务 +# Based on third-party service +# See: https://www.livere.com +livere: + uid: '' + +# Remark42 +# 需要自托管服务端 +# Based on self-hosted service +# See: https://remark42.com +remark42: + host: + site_id: + max_shown_comments: 10 + locale: zh + components: ['embed'] + +# Twikoo +# 支持腾讯云、Vercel、Railway 等多种平台部署 +# Based on Tencent CloudBase +# See: https://twikoo.js.org +twikoo: + envId: + region: ap-shanghai + path: window.location.pathname + +# Cusdis +# 基于第三方服务或自托管服务 +# Based on third-party or self-hosted service +# See https://cusdis.com +cusdis: + host: + app_id: + lang: zh-cn + +# Giscus +# 基于 GitHub Discussions,类似于 Utterances +# Based on GitHub Discussions, similar to Utterances +# See: https://giscus.app/ +giscus: + repo: + repo-id: + category: + category-id: + theme-light: light + theme-dark: dark + mapping: pathname + reactions-enabled: 1 + emit-metadata: 0 + input-position: top + lang: zh-CN + +# Discuss +# 多平台、多数据库、自托管、免费开源评论系统 +# Self-hosted, small size, multi-platform, multi-database, free and open source commenting system +# See: https://discuss.js.org +discuss: + serverURLs: + path: window.location.pathname + + +#--------------------------- +# 归档页 +# Archive Page +#--------------------------- +archive: + banner_img: /img/gensokyo.jpg + banner_img_height: 60 + banner_mask_alpha: 0.3 + + +#--------------------------- +# 分类页 +# Category Page +#--------------------------- +category: + enable: true + banner_img: /img/gensokyo.jpg + banner_img_height: 60 + banner_mask_alpha: 0.3 + + # 分类的排序字段,前面带减号是倒序,不带减号是正序 + # Sort field for categories, with a minus sign is reverse order + # Options: length | name + order_by: "-length" + + # 层级的折叠深度,0 是全部折叠,大于 0 后如果存在子分类则默认展开 + # Collapse depth. If 0, all posts collapsed. If greater than 0, it will be expanded by default if there are subcategories + collapse_depth: 0 + + # 文章的排序字段,前面带减号是倒序,不带减号是正序 + # Sort field for posts, with a minus sign is reverse order + # Options: date | title | or other field of front-matter + post_order_by: "-date" + + # 单个分类中折叠展示文章数的最大值,超过限制会显示 More,0 则不限制 + # The maximum number of posts in a single category. If the limit is exceeded, it will be displayed More. If 0 no limit + post_limit: 10 + + +#--------------------------- +# 标签页 +# Tag Page +#--------------------------- +tag: + enable: true + banner_img: /img/gensokyo.jpg + banner_img_height: 80 + banner_mask_alpha: 0.3 + tagcloud: + min_font: 15 + max_font: 30 + unit: px + start_color: "#BBBBEE" + end_color: "#337ab7" + + +#--------------------------- +# 关于页 +# About Page +#--------------------------- +about: + enable: true + banner_img: /img/gensokyo.jpg + banner_img_height: 60 + banner_mask_alpha: 0.3 + avatar: /img/gh0s7.jpg + name: "CGH0S7" + intro: "Illusionary White Traveler" + # 更多图标可从 https://hexo.fluid-dev.com/docs/icon/ 查找,`class` 代表图标的 css class,添加 `qrcode` 后,图标不再是链接而是悬浮二维码 + # More icons can be found from https://hexo.fluid-dev.com/docs/en/icon/ `class` is the css class of the icon. If adding `qrcode`, the icon is no longer a link, but a hovering QR code + icons: + - { class: "iconfont icon-github-fill", link: "https://github.com/CGH0S7", tip: "GitHub" } + - { class: "iconfont icon-bilibili-fill", link: "https://space.bilibili.com/454454985", tip: "bilibili" } + #- { class: "iconfont icon-wechat-fill", qrcode: "/img/favicon.png" } + + +#--------------------------- +# 自定义页 +# Custom Page +# +# 通过 hexo new page 命令创建的页面 +# Custom Page through `hexo new page` +#--------------------------- +page: + banner_img: /img/gensokyo.jpg + banner_img_height: 60 + banner_mask_alpha: 0.3 + + +#--------------------------- +# 404页 +# 404 Page +#--------------------------- +page404: + enable: true + banner_img: /img/gensokyo.jpg + banner_img_height: 85 + banner_mask_alpha: 0.3 + # 重定向到首页的延迟(毫秒) + # Delay in redirecting to home page (milliseconds) + redirect_delay: 5000 + + +#--------------------------- +# 友链页 +# Links Page +#--------------------------- +links: + enable: true + banner_img: /img/gensokyo.jpg + banner_img_height: 60 + banner_mask_alpha: 0.3 + # 友链的成员项 + # Member item of page + items: + - { + title: "和子煦", + intro: "保持好奇心", + link: "https://abnerhexu.shalicon.org/", + avatar: "https://abnerhexu.shalicon.org/upload/9193821.jpg", + } + - { + title: "Wingrew", + intro: "OS高手", + link: "https://wingrew.com/", + avatar: "https://wingrew.com/assets/img/try.jpg" + } + - { + title: "Mywww0517", + intro: "My friend in HDU", + link: "https://mywww0517.github.io/", + avatar: "https://www.yuehaishibei.com/wp-content/uploads/2021/06/1622563432-b3ab24848d38a73.jpg" + } + - { + title: "Cachy Blog", + intro: "Blazingly Fast & Customizable", + link: "https://cachyos.org/blog/", + avatar: "https://cachyos.org/_astro/logo.DVTdAJi6.svg" + } + - { + title: "HIKARU UTADA", + intro: "Stay Gold", + link: "https://www.utadahikaru.jp/news/", + avatar: "https://images.microcms-assets.io/assets/84ce301246294d9f9c15c8d9b7d21c16/3a1d1ded2f36437187c9237105b5d5a2/SCIENCE%20FICTION_%E9%80%9A%E5%B8%B8%E7%9B%A4%E3%82%B8%E3%83%A3%E3%82%B1%E5%86%99.jpg" + } + - { + title: "ASC", + intro: "Intelligent Computing", + link: "https://www.asc-events.net/", + avatar: "images/asc.png" + } + # - { + # title: "Fluid Blog", + # intro: "主题博客", + # link: "https://hexo.fluid-dev.com/", + # avatar: "/img/favicon.png" + # } + # - { + # title: "Fluid Docs", + # intro: "主题使用指南", + # link: "https://hexo.fluid-dev.com/docs/", + # avatar: "/img/favicon.png" + # } + # - { + # title: "Fluid Repo", + # intro: "主题 GitHub 仓库", + # link: "https://github.com/fluid-dev/hexo-theme-fluid", + # avatar: "/img/favicon.png" + # } + + # 当成员头像加载失败时,替换为指定图片 + # When the member avatar fails to load, replace the specified image + onerror_avatar: /img/avatar.png + + # 友链下方自定义区域,支持 HTML,可插入例如申请友链的文字 + # Custom content at the bottom of the links + custom: + enable: true + content: '
“德不孤,必有邻” -- 《论语·里仁》
' + + # 评论插件 + # Comment plugin + comments: + enable: true + # 指定的插件,需要同时设置对应插件的必要参数 + # The specified plugin needs to set the necessary parameters at the same time + # Options: utterances | disqus | gitalk | valine | waline | changyan | livere | remark42 | twikoo | cusdis | giscus | discuss + type: disqus + + +#--------------------------- +# 以下是配置 JS CSS 等静态资源的 URL 前缀,可以自定义成 CDN 地址, +# 如果需要修改,最好使用与默认配置相同的版本,以避免潜在的问题, +# ** 如果你不知道如何设置,请不要做任何改动 ** +# +# Here is the url prefix to configure the static assets. Set CDN addresses you want to customize. +# Be aware that you would better use the same version as default ones to avoid potential problems. +# DO NOT EDIT THE FOLLOWING SETTINGS UNLESS YOU KNOW WHAT YOU ARE DOING +#--------------------------- + +static_prefix: + # 内部静态 + # Internal static + internal_js: /js + internal_css: /css + internal_img: /img + + anchor: https://lib.baomitu.com/anchor-js/5.0.0/ + + github_markdown: https://lib.baomitu.com/github-markdown-css/4.0.0/ + + jquery: https://lib.baomitu.com/jquery/3.6.4/ + + bootstrap: https://lib.baomitu.com/twitter-bootstrap/4.6.1/ + + prismjs: https://lib.baomitu.com/prism/1.29.0/ + + tocbot: https://lib.baomitu.com/tocbot/4.20.1/ + + typed: https://lib.baomitu.com/typed.js/2.0.12/ + + fancybox: https://lib.baomitu.com/fancybox/3.5.7/ + + nprogress: https://lib.baomitu.com/nprogress/0.2.0/ + + mathjax: https://lib.baomitu.com/mathjax/3.2.2/ + + katex: https://lib.baomitu.com/KaTeX/0.16.2/ + + busuanzi: https://busuanzi.ibruce.info/busuanzi/2.3/ + + clipboard: https://lib.baomitu.com/clipboard.js/2.0.11/ + + mermaid: https://lib.baomitu.com/mermaid/8.14.0/ + + valine: https://lib.baomitu.com/valine/1.5.1/ + + waline: https://registry.npmmirror.com/@waline/client/2.15.8/files/dist/ + + gitalk: https://lib.baomitu.com/gitalk/1.8.0/ + + disqusjs: https://lib.baomitu.com/disqusjs/1.3.0/ + + twikoo: https://lib.baomitu.com/twikoo/1.6.8/ + + discuss: https://lib.baomitu.com/discuss/1.2.1/ + + hint: https://lib.baomitu.com/hint.css/2.7.0/ + + moment: https://lib.baomitu.com/moment.js/2.29.4/ diff --git a/_config.landscape.yml b/_config.landscape.yml new file mode 100644 index 0000000..e69de29 diff --git a/_config.yml b/_config.yml new file mode 100644 index 0000000..51a7e5f --- /dev/null +++ b/_config.yml @@ -0,0 +1,110 @@ +archive_dir: archives + +author: CGH0S7 + +category_dir: categories + +category_map: + +code_dir: downloads/code + +date_format: YYYY-MM-DD + +default_category: uncategorized + +default_layout: post + +deploy: + branch: main + repo: https://github.com/CGH0S7/cgh0s7.github.io.git + type: git + +description: '' + +exclude: + +external_link: + enable: yes + exclude: '' + field: site + +filename_case: 0 + +future: yes + +highlight: + auto_detect: no + hljs: no + line_number: yes + tab_replace: '' + wrap: yes + +i18n_dir: :lang + +ignore: + +include: + +index_generator: + order_by: -date + path: '' + per_page: 10 + +keywords: + +language: zh-CN + +meta_generator: yes + +new_post_name: :title.md + +pagination_dir: page + +per_page: 10 + +permalink: :year/:month/:day/:title/ + +permalink_defaults: + +post_asset_folder: no + +pretty_urls: + trailing_html: yes + trailing_index: yes + +prismjs: + line_number: yes + preprocess: yes + tab_replace: '' + +public_dir: public + +relative_link: no + +render_drafts: no + +skip_render: + +source_dir: source + +subtitle: The Gensokyo the Gods Loved + +syntax_highlighter: highlight.js + +tag_dir: tags + +tag_map: + +theme: fluid + +time_format: HH:mm:ss + +timezone: Asia/Shanghai + +title: CGH0S7's Blog + +titlecase: no + +updated_option: mtime + +url: http://blog.hifuu.ink diff --git a/db.json b/db.json new file mode 100644 index 0000000..2908c97 --- /dev/null +++ b/db.json @@ -0,0 +1 @@ +{"meta":{"version":1,"warehouse":"5.0.1"},"models":{"Asset":[{"_id":"source/images/1613f5602b203b38230f19699deb0219454454985.png","path":"images/1613f5602b203b38230f19699deb0219454454985.png","modified":1,"renderable":0},{"_id":"source/images/1730728153314.png","path":"images/1730728153314.png","modified":1,"renderable":0},{"_id":"source/images/20241027_222225.png","path":"images/20241027_222225.png","modified":1,"renderable":0},{"_id":"source/images/5364bba6d035326e82c53504dd53e7c2454454985.png","path":"images/5364bba6d035326e82c53504dd53e7c2454454985.png","modified":1,"renderable":0},{"_id":"source/images/71a5357ef4bd808b10429bc2ea46cb6f454454985.png","path":"images/71a5357ef4bd808b10429bc2ea46cb6f454454985.png","modified":1,"renderable":0},{"_id":"source/images/Written-By-Human-Not-By-AI-Badge-white@2x.png","path":"images/Written-By-Human-Not-By-AI-Badge-white@2x.png","modified":1,"renderable":0},{"_id":"source/images/amd.webp","path":"images/amd.webp","modified":1,"renderable":0},{"_id":"source/images/archlinux-logo.png","path":"images/archlinux-logo.png","modified":1,"renderable":0},{"_id":"source/images/asc-events.png","path":"images/asc-events.png","modified":1,"renderable":0},{"_id":"source/images/asc.png","path":"images/asc.png","modified":1,"renderable":0},{"_id":"source/images/b2054bbaf6197624d38cc2007d885fd1454454985.png","path":"images/b2054bbaf6197624d38cc2007d885fd1454454985.png","modified":1,"renderable":0},{"_id":"source/images/built_on_the_kde_platform.png","path":"images/built_on_the_kde_platform.png","modified":1,"renderable":0},{"_id":"source/images/caseclosed.png","path":"images/caseclosed.png","modified":1,"renderable":0},{"_id":"source/images/clonezilla.png","path":"images/clonezilla.png","modified":1,"renderable":0},{"_id":"source/images/mhwilds4050.jpg","path":"images/mhwilds4050.jpg","modified":1,"renderable":0},{"_id":"source/images/mhwilds780M.jpg","path":"images/mhwilds780M.jpg","modified":1,"renderable":0},{"_id":"source/images/phase1.png","path":"images/phase1.png","modified":1,"renderable":0},{"_id":"source/images/phase_2_14.png","path":"images/phase_2_14.png","modified":1,"renderable":0},{"_id":"source/images/phase1_strings.png","path":"images/phase1_strings.png","modified":1,"renderable":0},{"_id":"source/images/phase_4.png","path":"images/phase_4.png","modified":1,"renderable":0},{"_id":"source/images/zellij-helix.jpg","path":"images/zellij-helix.jpg","modified":1,"renderable":0},{"_id":"themes/fluid/source/img/avatar.png","path":"img/avatar.png","modified":1,"renderable":1},{"_id":"themes/fluid/source/img/gensokyo.jpg","path":"img/gensokyo.jpg","modified":1,"renderable":1},{"_id":"themes/fluid/source/img/gh0s7.jpg","path":"img/gh0s7.jpg","modified":1,"renderable":1},{"_id":"themes/fluid/source/img/hifuu.png","path":"img/hifuu.png","modified":1,"renderable":1},{"_id":"themes/fluid/source/img/loading.gif","path":"img/loading.gif","modified":1,"renderable":1},{"_id":"themes/fluid/source/img/police_beian.png","path":"img/police_beian.png","modified":1,"renderable":1},{"_id":"themes/fluid/source/css/gitalk.css","path":"css/gitalk.css","modified":1,"renderable":1},{"_id":"themes/fluid/source/css/highlight-dark.styl","path":"css/highlight-dark.styl","modified":1,"renderable":1},{"_id":"themes/fluid/source/css/highlight.styl","path":"css/highlight.styl","modified":1,"renderable":1},{"_id":"themes/fluid/source/css/main.styl","path":"css/main.styl","modified":1,"renderable":1},{"_id":"themes/fluid/source/js/boot.js","path":"js/boot.js","modified":1,"renderable":1},{"_id":"themes/fluid/source/js/color-schema.js","path":"js/color-schema.js","modified":1,"renderable":1},{"_id":"themes/fluid/source/js/events.js","path":"js/events.js","modified":1,"renderable":1},{"_id":"themes/fluid/source/js/img-lazyload.js","path":"js/img-lazyload.js","modified":1,"renderable":1},{"_id":"themes/fluid/source/js/leancloud.js","path":"js/leancloud.js","modified":1,"renderable":1},{"_id":"themes/fluid/source/js/local-search.js","path":"js/local-search.js","modified":1,"renderable":1},{"_id":"themes/fluid/source/js/plugins.js","path":"js/plugins.js","modified":1,"renderable":1},{"_id":"themes/fluid/source/js/umami-view.js","path":"js/umami-view.js","modified":1,"renderable":1},{"_id":"themes/fluid/source/js/utils.js","path":"js/utils.js","modified":1,"renderable":1},{"_id":"themes/fluid/source/xml/local-search.xml","path":"xml/local-search.xml","modified":1,"renderable":1}],"Cache":[{"_id":"source/_posts/12月16-17日工作记录.md","hash":"9f5099a65180c2659f1a1ca218d518fc64965676","modified":1740320866747},{"_id":"source/_posts/12月18日工作记录.md","hash":"28892523fcc2fadb1514645a1c59d501ceab53da","modified":1740320866748},{"_id":"source/_posts/12月19日工作记录.md","hash":"058ca01b682cd36e202189ef025d6d4bb79259fb","modified":1740320866748},{"_id":"source/_posts/12月20日工作记录.md","hash":"0d883ab20ae59540f663c5377e799463762a3b11","modified":1740320866748},{"_id":"source/_posts/12月31日进度报告.md","hash":"bf541fdb539029c98dedf975b0c15519adcea76e","modified":1740320866748},{"_id":"source/_posts/12月28日进度报告.md","hash":"4cbda36dc6a2c4bc67140e443638a73aadb18fdf","modified":1740320866748},{"_id":"source/_posts/BlogUpdate.md","hash":"2c694e3895b2ea0c0cea5f45ab2ec16a868a3df7","modified":1740320866748},{"_id":"source/_posts/CGH0S7-s-Blog.md","hash":"9a5c9461aba29f2447c0f6725f5425d5a05e32f0","modified":1740320866748},{"_id":"source/_posts/GentleJena.md","hash":"df1e35a93284d0b9e2d408635cd98481077d5155","modified":1740330871930},{"_id":"source/_posts/Vocaloid调教-晴天.md","hash":"9141182f5dbfbbd840ad340b3e5271507ddd8c94","modified":1740442745940},{"_id":"source/_posts/arch-nvidia.md","hash":"4144acad32a69e88ef6d5d7d5788da6d87a75193","modified":1738495295673},{"_id":"source/_posts/archlinux-optimization.md","hash":"b61ce5702b3a1b302e8c02f4f46d9a1cd3f5e6e4","modified":1740320942471},{"_id":"source/_posts/clonezilla.md","hash":"598858976961c45ebbbf523014ee792951380dd3","modified":1740319930654},{"_id":"source/_posts/loopers.md","hash":"2b63f5abcfebc672e7f90b3e83cee1b5ac1d4eff","modified":1740320866748},{"_id":"source/_posts/mhwi.md","hash":"b9a73accf93684b8cfac0201288da9b2c5376423","modified":1731333619124},{"_id":"source/_posts/nudtbomblab.md","hash":"51b4410784657675d7c11e17d16c5dc0e5d4a455","modified":1740455795270},{"_id":"source/_posts/overleaf.md","hash":"0786994f4571ac178ee40bc130e3c0d8d2d511f9","modified":1730860316685},{"_id":"source/_posts/zellij-helix.md","hash":"7eb3072b50ecdb49a20355e05fc613a4a8b7fbdf","modified":1740326024966},{"_id":"source/about/index.md","hash":"ff7cd1481f3c669a04d7c8abf8851ab0cea5b2b9","modified":1740326480093},{"_id":"source/_posts/原来我还有个博客.md","hash":"acd7e534b31b7a0173fae880fa584c7dc03fd2cd","modified":1740457594224},{"_id":"source/_posts/梦开始的地方.md","hash":"c0bbfefdd277c8ae2786a5cd4cc05f731af11436","modified":1740457544687},{"_id":"source/images/Written-By-Human-Not-By-AI-Badge-white@2x.png","hash":"994225c6fd72521b281144bdd98fefcca53e2c7b","modified":1731333731000},{"_id":"source/images/amd.webp","hash":"cb0cfd5da0b9c10b9b22c65bba881cfde485d763","modified":1731333907000},{"_id":"source/images/archlinux-logo.png","hash":"4f6075309fadcb7f7547164cb8a99b4949f74598","modified":1731333766000},{"_id":"source/images/asc-events.png","hash":"a0b3610962062d0a322fe091bcc8f083ab13bc6e","modified":1740329910965},{"_id":"source/images/asc.png","hash":"3a33b35bff1b3f527f7a87a9d6a7d6d9a072a946","modified":1740328627284},{"_id":"source/images/built_on_the_kde_platform.png","hash":"507b6a4323b23772800006505e6c588bb515ebf5","modified":1731334007000},{"_id":"source/images/phase1_strings.png","hash":"6fb457adddc5bb32aa463b6227542076c4b501e7","modified":1740382826998},{"_id":"source/images/caseclosed.png","hash":"628b54b49c86a23af595a52daba9e0557b81a17a","modified":1740454957882},{"_id":"source/images/1730728153314.png","hash":"95d44ea62557a311503cab58d1dec5cafc97e07d","modified":1740320866754},{"_id":"source/images/phase1.png","hash":"42533712403be6036231f1e3770f125858bf91d7","modified":1740385026324},{"_id":"source/images/5364bba6d035326e82c53504dd53e7c2454454985.png","hash":"11b11f23ebebbe08e8cf826b48eb37b4084796cd","modified":1729572689000},{"_id":"source/images/1613f5602b203b38230f19699deb0219454454985.png","hash":"3d71204d9a0731384f97ad0f90802a5c9fd96776","modified":1729572689000},{"_id":"themes/fluid/source/css/_pages/_tag/tag.styl","hash":"da39a3ee5e6b4b0d3255bfef95601890afd80709","modified":1740320867063},{"_id":"source/images/71a5357ef4bd808b10429bc2ea46cb6f454454985.png","hash":"dddf72bb12aef01baa3eb2017bb867f274059f12","modified":1729572689000},{"_id":"source/images/mhwilds4050.jpg","hash":"9b2b15c66e2340c15b86cec0fa8f818b67e06384","modified":1730738910727},{"_id":"themes/fluid/.editorconfig","hash":"33218fbd623feb43edf5f99f15965392cecc44a6","modified":1740320867050},{"_id":"themes/fluid/.gitattributes","hash":"a54f902957d49356376b59287b894b1a3d7a003f","modified":1740320867050},{"_id":"themes/fluid/.gitignore","hash":"ae3bfcb89777657c5dfb5169d91445dcb0e5ab98","modified":1740320867051},{"_id":"themes/fluid/.eslintrc","hash":"4bc2b19ce2b8c4d242f97d4ccf2d741e68ab0097","modified":1740320867050},{"_id":"themes/fluid/LICENSE","hash":"26f9356fd6e84b5a88df6d9014378f41b65ba209","modified":1740320867051},{"_id":"themes/fluid/README_en.md","hash":"365184a73af40e7365504c3077f3d80dfee1d80e","modified":1740320867051},{"_id":"themes/fluid/README.md","hash":"ff9b0e1fb9dba665af2f1e4a577f8cb9e840464b","modified":1740320867051},{"_id":"themes/fluid/package.json","hash":"7746460fc2eba7439b494c46aa9b5ded81370819","modified":1740320867057},{"_id":"themes/fluid/_config.yml","hash":"60403ea6aa5e0cab9dbc7bf0d77257e4a941babc","modified":1740329151304},{"_id":"themes/fluid/languages/en.yml","hash":"9c580471257f5a32bee701a059a45ea96755dcdc","modified":1740320867052},{"_id":"themes/fluid/languages/de.yml","hash":"58dccef1d98b472dc4e6f4693c2297b0c9c5afba","modified":1740320867052},{"_id":"themes/fluid/languages/eo.yml","hash":"7c1a0c9f6186b6643b19d3980f055329bdb4efa4","modified":1740320867052},{"_id":"themes/fluid/languages/es.yml","hash":"026ddf1a49bf8ddfef6ed86ab4d6af143c1dd95f","modified":1740320867052},{"_id":"themes/fluid/languages/ja.yml","hash":"550b95d3614a64592f02666938d235e9f11e449e","modified":1740320867052},{"_id":"themes/fluid/languages/ru.yml","hash":"93818f8bf07195fb1ebffbb5210e531b0e3a6ec4","modified":1740320867052},{"_id":"themes/fluid/languages/zh-CN.yml","hash":"a60847136709bb95586a98d9d67b50390a8d2c96","modified":1740320867052},{"_id":"themes/fluid/languages/zh-HK.yml","hash":"51c2b4d64c6992a39bfd2586a1bdf5fbbbdf0175","modified":1740320867052},{"_id":"themes/fluid/languages/zh-TW.yml","hash":"e1043de394f6dcf5c0647adcfdefe60637f78426","modified":1740320867052},{"_id":"themes/fluid/layout/404.ejs","hash":"b84d575c7b7f778b4cb64e89ad3d0aed4a896820","modified":1740320867052},{"_id":"themes/fluid/layout/about.ejs","hash":"052e9fc19c753f53fdc083c7fb098e3668880140","modified":1740320867056},{"_id":"themes/fluid/layout/archive.ejs","hash":"7c1f44005849791feae4abaa10fae4cb983d3277","modified":1740320867056},{"_id":"themes/fluid/layout/categories.ejs","hash":"13859726c27b6c79b5876ec174176d0f9c1ee164","modified":1740320867056},{"_id":"themes/fluid/layout/category.ejs","hash":"f099161b738a16a32253f42085b5444f902018ed","modified":1740320867056},{"_id":"themes/fluid/layout/index.ejs","hash":"33c3317cdcee062789de2336dd8d0cc7f86d3650","modified":1740320867056},{"_id":"themes/fluid/layout/layout.ejs","hash":"7e0023474128fbe4d68c467704c41f1712432415","modified":1740320867056},{"_id":"themes/fluid/layout/links.ejs","hash":"1cac32ec4579aaf7b9fa39d317497331d4c5e1dd","modified":1740320867056},{"_id":"themes/fluid/layout/page.ejs","hash":"ed5007a3feb8f14d3d2843271bfb298eb0c56219","modified":1740320867056},{"_id":"themes/fluid/layout/post.ejs","hash":"9bf0d357a607a282f3b9cb04525a4df0cc2a8b76","modified":1740320867056},{"_id":"themes/fluid/layout/tag.ejs","hash":"9d686364c4d16a1a9219471623af452035c5b966","modified":1740320867056},{"_id":"themes/fluid/layout/tags.ejs","hash":"1d06af34b6cf1d8a20d2eb565e309326ceba309f","modified":1740320867057},{"_id":"themes/fluid/.github/ISSUE_TEMPLATE/bug_report_zh.md","hash":"c8b0d49c49e3c88872fd3b37909345ff5b2b6aa0","modified":1740320867051},{"_id":"themes/fluid/.github/ISSUE_TEMPLATE/bug_report.md","hash":"554c0d0e086a0784d83ee71c83f8bceeb60aecc8","modified":1740320867050},{"_id":"themes/fluid/.github/ISSUE_TEMPLATE/feature_request_zh.md","hash":"ed08574b196447376dd74411cca664ac9227a5d4","modified":1740320867051},{"_id":"themes/fluid/.github/ISSUE_TEMPLATE/feature_request.md","hash":"c134dd57ffd269b93402ccfffe7dbe0f0b583bec","modified":1740320867051},{"_id":"themes/fluid/.github/ISSUE_TEMPLATE/question.md","hash":"ab5eab9e3ff889c4ba7fd82846e7f5b7ae15bebc","modified":1740320867051},{"_id":"themes/fluid/.github/ISSUE_TEMPLATE/question_zh.md","hash":"fff07ce0472afc368d388637cb9d438195da9b5b","modified":1740320867051},{"_id":"themes/fluid/.github/workflows/cr.yaml","hash":"19a8a00f5ba9607d82265572fe1202b64a8b0822","modified":1740320867051},{"_id":"themes/fluid/.github/workflows/limit.yaml","hash":"f8bd2edeb4424ee7a055b31583445d5d5dff91a4","modified":1740320867051},{"_id":"themes/fluid/scripts/events/index.js","hash":"79de5a379b28cad759a49048351c7f6b8915bd7d","modified":1740320867057},{"_id":"themes/fluid/.github/workflows/publish.yaml","hash":"6f02e6440d88629229556e3fd47d0280fe2240db","modified":1740320867051},{"_id":"themes/fluid/scripts/filters/default-injects.js","hash":"b2013ae8e189cd07ebc8a2ff48a78e153345210f","modified":1740320867057},{"_id":"themes/fluid/scripts/filters/locals.js","hash":"58d0fec976f6b1d35e7ea03edc45414088acf05c","modified":1740320867057},{"_id":"themes/fluid/scripts/filters/post-filter.js","hash":"82bb06686158ebe160a631c79f156cd4fde35656","modified":1740320867057},{"_id":"themes/fluid/scripts/generators/index-generator.js","hash":"9159fc22fa84a7b605dd15fe4104f01fe9c71147","modified":1740320867057},{"_id":"themes/fluid/scripts/generators/local-search.js","hash":"9ac5ddad06e9b0e6015ce531430018182a4bc0fa","modified":1740320867058},{"_id":"themes/fluid/scripts/generators/pages.js","hash":"d3e75f53c59674d171309e50702954671f31f1a4","modified":1740320867058},{"_id":"themes/fluid/scripts/helpers/date.js","hash":"9bda6382f61b40a20c24af466fe10c8366ebb74c","modified":1740320867058},{"_id":"themes/fluid/scripts/helpers/engine.js","hash":"d3a231d106795ce99cb0bc77eb65f9ae44515933","modified":1740320867058},{"_id":"themes/fluid/scripts/helpers/export-config.js","hash":"8e67b522c47aa250860e3fe2c733f1f958a506c0","modified":1740320867058},{"_id":"themes/fluid/scripts/helpers/import.js","hash":"ca53e8dbf7d44cfd372cfa79ac60f35a7d5b0076","modified":1740320867058},{"_id":"themes/fluid/scripts/helpers/injects.js","hash":"1ad2ae6b11bd8806ee7dd6eb7140d8b54a95d613","modified":1740320867058},{"_id":"themes/fluid/scripts/helpers/page.js","hash":"4607607445233b3029ef20ed5e91de0da0a7f9c5","modified":1740320867058},{"_id":"themes/fluid/scripts/helpers/scope.js","hash":"d41d9d658fcb54964b388598e996747aadb85b0f","modified":1740320867059},{"_id":"themes/fluid/scripts/helpers/url.js","hash":"2a6a8288176d0e0f6ec008056bf2745a86e8943e","modified":1740320867059},{"_id":"themes/fluid/scripts/helpers/utils.js","hash":"966689d7c5e4320008285395fbaa2751f6209be5","modified":1740320867059},{"_id":"themes/fluid/scripts/helpers/wordcount.js","hash":"4d48c424e47ff9a17a563167ea5f480890267adf","modified":1740320867059},{"_id":"themes/fluid/scripts/tags/button.js","hash":"3eb43a8cdea0a64576ad6b31b4df6c2bf5698d4c","modified":1740320867059},{"_id":"themes/fluid/scripts/tags/checkbox.js","hash":"6eaf53cf4bfc756a65bda18184cf8998a12c861d","modified":1740320867059},{"_id":"themes/fluid/scripts/tags/fold.js","hash":"73e4fd12ce3e47981479391ed354b7d9d3279f70","modified":1740320867059},{"_id":"themes/fluid/scripts/tags/group-image.js","hash":"4aeebb797026f1df25646a5d69f7fde79b1bcd26","modified":1740320867059},{"_id":"themes/fluid/scripts/tags/label.js","hash":"f05a6d32cca79535b22907dc03edb9d3fa2d8176","modified":1740320867059},{"_id":"themes/fluid/scripts/tags/mermaid.js","hash":"75160561e1ef3603b6d2ad2938464ab1cb77fd38","modified":1740320867059},{"_id":"themes/fluid/scripts/tags/note.js","hash":"e3b456a079e5dc0032473b516c865b20f83d2c26","modified":1740320867059},{"_id":"themes/fluid/scripts/utils/compare-versions.js","hash":"dbbc928c914fc2bd242cd66aa0c45971aec13a5d","modified":1740320867059},{"_id":"themes/fluid/scripts/utils/crypto.js","hash":"ae4ad8a188ef5b3fa6818b01629fc962b3de8551","modified":1740320867060},{"_id":"themes/fluid/scripts/utils/object.js","hash":"33b57e4decdc5e75c518859f168c8ba80b2c665b","modified":1740320867060},{"_id":"themes/fluid/scripts/utils/resolve.js","hash":"8c4a8b62aa8608f12f1e9046231dff04859dc3e9","modified":1740320867060},{"_id":"themes/fluid/scripts/utils/url-join.js","hash":"718aab5e7b2059a06b093ca738de420d9afa44ba","modified":1740320867060},{"_id":"themes/fluid/layout/_partials/archive-list.ejs","hash":"7520fbf91f762207c2ab06b2c293235cd5b23905","modified":1740320867052},{"_id":"themes/fluid/layout/_partials/category-chains.ejs","hash":"18309584aab83bc4deb20723ebad832149dd2e24","modified":1740320867053},{"_id":"themes/fluid/layout/_partials/category-list.ejs","hash":"f8d2f1907450e61968e6d54443e9be8138196a77","modified":1740320867053},{"_id":"themes/fluid/layout/_partials/comments.ejs","hash":"d707c47b2638c94e489bc43d4cfd098b7c58447f","modified":1740320867053},{"_id":"themes/fluid/layout/_partials/css.ejs","hash":"1dadb118d580280524ed0a5f69bd34d234a92276","modified":1740320867054},{"_id":"themes/fluid/layout/_partials/footer.ejs","hash":"b52aa2d61b6812588a805b676ffdf8b887023938","modified":1740330605855},{"_id":"themes/fluid/layout/_partials/header.ejs","hash":"0d5e397d30051e5fbabe7b47cfd1f1e6a5820af1","modified":1740320867054},{"_id":"themes/fluid/layout/_partials/markdown-plugins.ejs","hash":"fc4bdf7de0cf1a66d0e5e4fba1b31d6f7ed49468","modified":1740320867054},{"_id":"themes/fluid/layout/_partials/head.ejs","hash":"67be642f99482c07904474f410cfbc2f99003288","modified":1740320867054},{"_id":"themes/fluid/layout/_partials/paginator.ejs","hash":"0f38a2c238169edcb63fc46c23bfc529ff3859b7","modified":1740320867054},{"_id":"themes/fluid/layout/_partials/search.ejs","hash":"70e1c929e084ca8a2648cedabf29b372511ea2b8","modified":1740320867056},{"_id":"themes/fluid/layout/_partials/scripts.ejs","hash":"da5810785105e5075861593c7ac22c7aa9665a72","modified":1740320867056},{"_id":"themes/fluid/source/img/avatar.png","hash":"fe739a158cc128f70f780eb5fa96f388b81d478f","modified":1740320867063},{"_id":"themes/fluid/source/img/loading.gif","hash":"2d2fc0f947940f98c21afafef39ecf226a2e8d55","modified":1740320867086},{"_id":"themes/fluid/source/img/police_beian.png","hash":"90efded6baa2dde599a9d6b1387973e8e64923ea","modified":1740320867086},{"_id":"themes/fluid/source/css/gitalk.css","hash":"a57b3cc8e04a0a4a27aefa07facf5b5e7bca0e76","modified":1740320867063},{"_id":"themes/fluid/source/css/highlight-dark.styl","hash":"45695ef75c31a4aa57324dd408b7e2327a337018","modified":1740320867063},{"_id":"themes/fluid/source/css/highlight.styl","hash":"a9efc52a646a9e585439c768557e3e3c9e3326dc","modified":1740320867063},{"_id":"themes/fluid/source/css/main.styl","hash":"855ae5fe229c51afa57f7645f6997a27a705d7e4","modified":1740320867063},{"_id":"themes/fluid/source/js/boot.js","hash":"38bd26c6b7acdafda86dda3560e6a3ca488d3c76","modified":1740320867086},{"_id":"themes/fluid/source/js/color-schema.js","hash":"1ef88c881b9f942deadde3d890387b94c617342a","modified":1740320867086},{"_id":"themes/fluid/source/js/events.js","hash":"6869811f67e4c3de3edfa4b08464bb242b97a402","modified":1740320867086},{"_id":"themes/fluid/source/js/img-lazyload.js","hash":"cbdeca434ec4da51f488c821d51b4d23c73294af","modified":1740320867086},{"_id":"themes/fluid/source/js/leancloud.js","hash":"eff77c7a5c399fcaefda48884980571e15243fc9","modified":1740320867086},{"_id":"themes/fluid/source/js/plugins.js","hash":"c34916291e392a774ff3e85c55badb83e8661297","modified":1740320867087},{"_id":"themes/fluid/source/js/local-search.js","hash":"b9945f76f8682f3ec32edfb285b26eb559f7b7e8","modified":1740320867086},{"_id":"themes/fluid/source/js/utils.js","hash":"b82e7c289a66dfd36064470fd41c0e96fc598b43","modified":1740320867087},{"_id":"themes/fluid/source/xml/local-search.xml","hash":"8c96ba6a064705602ce28d096fd7dd9069630a55","modified":1740320867087},{"_id":"themes/fluid/scripts/events/lib/footnote.js","hash":"c19ac8050b82c3676b0332a56099ccfcc36d9d52","modified":1740320867057},{"_id":"themes/fluid/scripts/events/lib/compatible-configs.js","hash":"ef474d1fa5bbafc52619ced0f9dc7eaf2affb363","modified":1740320867057},{"_id":"themes/fluid/scripts/events/lib/hello.js","hash":"bd8376e1cf7892dc2daa58f2f443574be559fdbf","modified":1740320867057},{"_id":"themes/fluid/scripts/events/lib/highlight.js","hash":"a5fe1deccb73b5f578797dbb11038efc15f63ce8","modified":1740320867057},{"_id":"themes/fluid/scripts/events/lib/injects.js","hash":"5ae4b07204683e54b5a1b74e931702bbce2ac23e","modified":1740320867057},{"_id":"themes/fluid/scripts/events/lib/lazyload.js","hash":"9ba0d4bc224e22af8a5a48d6ff13e5a0fcfee2a4","modified":1740320867057},{"_id":"themes/fluid/scripts/events/lib/merge-configs.js","hash":"7c944c43b2ece5dd84859bd9d1fe955d13427387","modified":1740320867057},{"_id":"themes/fluid/layout/_partials/comments/changyan.ejs","hash":"c9b2d68ed3d375f1953e7007307d2a3f75ed6249","modified":1740320867053},{"_id":"themes/fluid/layout/_partials/comments/cusdis.ejs","hash":"5f9dc012be27040bbe874d0c093c0d53958cc987","modified":1740320867053},{"_id":"themes/fluid/layout/_partials/comments/discuss.ejs","hash":"98d065b58ce06b7d18bff3c974e96fa0f34ae03a","modified":1740320867053},{"_id":"themes/fluid/layout/_partials/comments/disqus.ejs","hash":"aab4a4d24c55231a37db308ae94414319cecdd9b","modified":1740320867053},{"_id":"themes/fluid/layout/_partials/comments/giscus.ejs","hash":"95f8b866b158eff9352c381c243b332a155a5110","modified":1740320867053},{"_id":"themes/fluid/layout/_partials/comments/gitalk.ejs","hash":"843bc141a4545eb20d1c92fb63c85d459b4271ec","modified":1740320867053},{"_id":"themes/fluid/layout/_partials/comments/livere.ejs","hash":"2264758fed57542a7389c7aa9f00f1aefa17eb87","modified":1740320867053},{"_id":"themes/fluid/source/js/umami-view.js","hash":"33c4b3883fa747604074ad3921606eeeaeb50716","modified":1740320867087},{"_id":"themes/fluid/layout/_partials/comments/remark42.ejs","hash":"d4e9532feeb02aed61bd15eda536b5b631454dac","modified":1740320867053},{"_id":"themes/fluid/layout/_partials/comments/twikoo.ejs","hash":"d84bcb5ccd78470a60c067fc914ac0ac67ac8777","modified":1740320867053},{"_id":"themes/fluid/layout/_partials/comments/utterances.ejs","hash":"c7ccf7f28308334a6da6f5425b141a24b5eca0e2","modified":1740320867054},{"_id":"themes/fluid/layout/_partials/comments/waline.ejs","hash":"3d08c73b77e412d2f06a24d9344565fc7dbc76f8","modified":1740320867054},{"_id":"themes/fluid/layout/_partials/footer/beian.ejs","hash":"4fb9b5dd3f3e41a586d6af44e5069afe7c81fff2","modified":1740320867054},{"_id":"themes/fluid/layout/_partials/footer/statistics.ejs","hash":"954a29b58d72647d20450da270b5d8fb2e0824f5","modified":1740320867054},{"_id":"themes/fluid/layout/_partials/header/banner.ejs","hash":"e07757b59e7b89eea213d0e595cb5932f812fd32","modified":1740320867054},{"_id":"themes/fluid/layout/_partials/header/navigation.ejs","hash":"37d750428772d7c71ba36ce0c2540780d90fadea","modified":1740320867054},{"_id":"themes/fluid/layout/_partials/plugins/analytics.ejs","hash":"e6dcbf1c2f56314d56bb46b50aca86ff68cacebd","modified":1740320867055},{"_id":"themes/fluid/layout/_partials/plugins/anchorjs.ejs","hash":"40181442d3a2b8734783a0ad7caf2d2522e3f2ab","modified":1740320867055},{"_id":"themes/fluid/layout/_partials/plugins/code-widget.ejs","hash":"3a505cba37942badf62a56bbb8b605b72af330aa","modified":1740320867055},{"_id":"themes/fluid/layout/_partials/comments/valine.ejs","hash":"19ba937553dddd317f827d682661a1066a7b1f30","modified":1740320867054},{"_id":"themes/fluid/layout/_partials/plugins/encrypt.ejs","hash":"0fff24cf5bf99fbe5c56c292e2eac4a89bf29db4","modified":1740320867055},{"_id":"themes/fluid/layout/_partials/plugins/fancybox.ejs","hash":"9d1ea2a46b8c8ad8c168594d578f40764818ef13","modified":1740320867055},{"_id":"themes/fluid/layout/_partials/plugins/highlight.ejs","hash":"7529dd215b09d3557804333942377b9e20fa554e","modified":1740320867055},{"_id":"themes/fluid/layout/_partials/plugins/math.ejs","hash":"dcbf9a381ee76f2f1f75fcbc22c50a502ec85023","modified":1740320867055},{"_id":"themes/fluid/layout/_partials/plugins/mermaid.ejs","hash":"03ac02762f801970d1c4e73d6ec8d4c503780e50","modified":1740320867055},{"_id":"themes/fluid/layout/_partials/plugins/moment.ejs","hash":"4ff3fb1b60ccc95a0af3bbdbd0757fedefc088b5","modified":1740320867055},{"_id":"themes/fluid/layout/_partials/plugins/nprogress.ejs","hash":"4c2d39ce816b8a6dcd6b53113c8695f8bd650a23","modified":1740320867055},{"_id":"themes/fluid/layout/_partials/plugins/typed.ejs","hash":"f345374885cd6a334f09a11f59c443b5d577c06c","modified":1740320867055},{"_id":"themes/fluid/layout/_partials/post/category-bar.ejs","hash":"8772bce97ed297e7a88523f4e939ed6436c22f87","modified":1740320867055},{"_id":"themes/fluid/layout/_partials/post/meta-bottom.ejs","hash":"375974ec017696e294dc12469fb0ae257800dc2d","modified":1740320867055},{"_id":"themes/fluid/layout/_partials/post/copyright.ejs","hash":"cbfa32c5f5973133afd043853b24f8200455cb2d","modified":1740320867055},{"_id":"themes/fluid/layout/_partials/post/sidebar-left.ejs","hash":"9992c99b3eb728ad195970e1b84d665f2c8691c4","modified":1740320867056},{"_id":"themes/fluid/layout/_partials/post/meta-top.ejs","hash":"54dd479dbb440126e4ddd9d902229db5afaaae98","modified":1740320867055},{"_id":"themes/fluid/layout/_partials/post/sidebar-right.ejs","hash":"d5fcc9b60e02f869a29a8c17a16a6028ecc1e6d8","modified":1740320867056},{"_id":"themes/fluid/layout/_partials/post/toc.ejs","hash":"635a89060fbf72eeda066fc4bd0a97462f069417","modified":1740320867056},{"_id":"themes/fluid/source/css/_functions/base.styl","hash":"2e46f3f4e2c9fe34c1ff1c598738fc7349ae8188","modified":1740320867060},{"_id":"themes/fluid/source/css/_mixins/base.styl","hash":"542e306ee9494e8a78e44d6d7d409605d94caeb3","modified":1740320867060},{"_id":"themes/fluid/source/css/_pages/pages.styl","hash":"b8e887bc7fb3b765a1f8ec9448eff8603a41984f","modified":1740320867063},{"_id":"themes/fluid/source/css/_variables/base.styl","hash":"4ed5f0ae105ef4c7dd92eaf652ceda176c38e502","modified":1740320867063},{"_id":"themes/fluid/source/css/_pages/_about/about.styl","hash":"97fe42516ea531fdad771489b68aa8b2a7f6ae46","modified":1740320867060},{"_id":"themes/fluid/source/css/_pages/_archive/archive.styl","hash":"c475e6681546d30350eaed11f23081ecae80c375","modified":1740320867060},{"_id":"themes/fluid/source/css/_pages/_base/base.styl","hash":"643284c567665f96915f0b64e59934dda315f74d","modified":1740320867061},{"_id":"themes/fluid/source/css/_pages/_base/inline.styl","hash":"411a3fa3f924a87e00ff04d18b5c83283b049a4d","modified":1740320867061},{"_id":"themes/fluid/source/css/_pages/_base/color-schema.styl","hash":"85492ef64d7e5f70f0f7e46d570bbc911e686d7e","modified":1740320867061},{"_id":"themes/fluid/source/css/_pages/_base/keyframes.styl","hash":"94065ea50f5bef7566d184f2422f6ac20866ba22","modified":1740320867062},{"_id":"themes/fluid/source/css/_pages/_base/print.styl","hash":"166afbc596ea4b552bad7290ec372d25ec34db7b","modified":1740320867062},{"_id":"themes/fluid/source/css/_pages/_category/category-bar.styl","hash":"cc6df43fef6bb3efecbfdd8b9e467424a1dea581","modified":1740320867062},{"_id":"themes/fluid/source/css/_pages/_category/category-chain.styl","hash":"0cdf7ef50dfd0669d3b257821384ff31cd81b7c9","modified":1740320867062},{"_id":"themes/fluid/source/css/_pages/_category/category-list.styl","hash":"7edfe1b571ecca7d08f5f4dbcf76f4ffdcfbf0b5","modified":1740320867062},{"_id":"themes/fluid/source/css/_pages/_index/index.styl","hash":"25fb6fa4c783b847c632584c49a7e1593cdb2f5d","modified":1740320867062},{"_id":"themes/fluid/source/css/_pages/_links/links.styl","hash":"5c7f2044e3f1da05a3229537c06bd879836f8d6e","modified":1740320867062},{"_id":"themes/fluid/source/css/_pages/_post/comment.styl","hash":"780f3788e7357bcd3f3262d781cb91bb53976a93","modified":1740320867062},{"_id":"themes/fluid/source/css/_pages/_post/highlight.styl","hash":"4df764d298fe556e501db4afc2b05686fe6ebcfb","modified":1740320867062},{"_id":"themes/fluid/source/css/_pages/_post/markdown.styl","hash":"1e3d3a82721e7c10bcfcecec6d81cf2979039452","modified":1740320867062},{"_id":"themes/fluid/source/css/_pages/_post/post-page.styl","hash":"7eee3f78296a3c81849a5415d1d43dcc6e03e6aa","modified":1740320867062},{"_id":"themes/fluid/source/css/_pages/_post/post-tag.styl","hash":"c96d36aa8fe20f0c3c1a29ee2473cd8064b10f73","modified":1740320867062},{"_id":"themes/fluid/source/css/_pages/_tag/tags.styl","hash":"65bfc01c76abc927fa1a23bf2422892b0d566c3f","modified":1740320867063},{"_id":"themes/fluid/source/css/_pages/_base/_widget/banner.styl","hash":"7a0bd629bc234fc75e3cc8e3715ffada92f09e73","modified":1740320867060},{"_id":"themes/fluid/source/css/_pages/_base/_widget/anchorjs.styl","hash":"e0cebda4a6f499aff75e71417d88caa7ceb13b94","modified":1740320867060},{"_id":"themes/fluid/source/css/_pages/_base/_widget/board.styl","hash":"4397037fc3f0033dbe546c33cd9dbdabd8cb1632","modified":1740320867060},{"_id":"themes/fluid/source/css/_pages/_base/_widget/code-widget.styl","hash":"b66ab013f0f37d724a149b85b3c7432afcf460ad","modified":1740320867060},{"_id":"themes/fluid/source/css/_pages/_base/_widget/copyright.styl","hash":"26f71a9cd60d96bb0cb5bbdf58150b8e524d9707","modified":1740320867061},{"_id":"themes/fluid/source/css/_pages/_base/_widget/footnote.styl","hash":"ae9289cc89649af2042907f8a003303b987f3404","modified":1740320867061},{"_id":"themes/fluid/source/css/_pages/_base/_widget/header.styl","hash":"d42b748f2f49ef32aafb1a21d75991d2459da927","modified":1740320867061},{"_id":"themes/fluid/source/css/_pages/_base/_widget/footer.styl","hash":"2caaca71dd1ff63d583099ed817677dd267b457e","modified":1740320867061},{"_id":"themes/fluid/source/css/_pages/_base/_widget/modal.styl","hash":"adf6c1e5c8e1fb41c77ce6e2258001df61245aa2","modified":1740320867061},{"_id":"themes/fluid/source/css/_pages/_base/_widget/ngrogress.styl","hash":"5d225357b4a58d46118e6616377168336ed44cb2","modified":1740320867061},{"_id":"themes/fluid/source/css/_pages/_base/_widget/noscript.styl","hash":"0cf2f2bb44f456150d428016675d5876a9d2e2aa","modified":1740320867061},{"_id":"themes/fluid/source/css/_pages/_base/_widget/pagination.styl","hash":"8bb1b68e5f3552cb48c2ffa31edbc53646a8fb4c","modified":1740320867061},{"_id":"themes/fluid/source/css/_pages/_base/_widget/qrcode.styl","hash":"78704a94c0436097abfb0e0a57abeb3429c749b7","modified":1740320867061},{"_id":"themes/fluid/source/css/_pages/_base/_widget/search.styl","hash":"10f7e91a91e681fb9fe46f9df7707b9ef78707c8","modified":1740320867061},{"_id":"themes/fluid/source/css/_pages/_base/_widget/toc.styl","hash":"9e7452aa2372153f25d7a4675c9d36d281a65d24","modified":1740320867061},{"_id":"themes/fluid/source/css/_pages/_base/_widget/scroll-btn.styl","hash":"f0e429a27fa8a7658fcbddbb4d4dbe4afa12499a","modified":1740320867061},{"_id":"themes/fluid/source/img/hifuu.png","hash":"331b5950baf96f5d39192bb42b7da4d22a08992e","modified":1740320867086},{"_id":"source/images/clonezilla.png","hash":"7f443d79783df3744b2e51613422ee8fd7eea6f8","modified":1740318117703},{"_id":"source/images/mhwilds780M.jpg","hash":"e2c59c6caae452afb424d9f2fc3a255a44121b49","modified":1730738926927},{"_id":"source/images/phase_2_14.png","hash":"f50399a9eb469ed1e063ff4ccc0e8636c1b75f1e","modified":1740407245723},{"_id":"source/images/phase_4.png","hash":"81cd309a8990e015a8679b6a4e26a27d804c1da6","modified":1740410093173},{"_id":"themes/fluid/source/img/gh0s7.jpg","hash":"1c5af4f8cacdc3c6adbe8334866774cca2944910","modified":1740320867085},{"_id":"source/images/20241027_222225.png","hash":"f0595d1315d94e72e61c69e0499e5129e1821ba1","modified":1740320866763},{"_id":"source/images/b2054bbaf6197624d38cc2007d885fd1454454985.png","hash":"b021e971cedaa55b273eab2b10be94f795b06922","modified":1729572689000},{"_id":"source/images/zellij-helix.jpg","hash":"87fb5b7b51a4e3b062b891c04488a53457edded0","modified":1738492100321},{"_id":"themes/fluid/source/img/gensokyo.jpg","hash":"d82c0d5011c6cbc37109c9c80530d14cd266286f","modified":1740320867082},{"_id":"public/local-search.xml","hash":"754a0e0ed27d9ebf1f90e96b277307f52e94d550","modified":1740457601245},{"_id":"public/about/index.html","hash":"aed578d02d2a907f749b64e32efda908b0ac4c04","modified":1740457601245},{"_id":"public/2025/02/24/nudtbomblab/index.html","hash":"4965d39647cf126e07ca43a02612bf7c5875f6cd","modified":1740457601245},{"_id":"public/2025/02/02/archlinux-optimization/index.html","hash":"1a79f7454ac4a0dcb73256697a4e4197559b5297","modified":1740457601245},{"_id":"public/2024/12/13/zellij-helix/index.html","hash":"952cd837e89121b41cef1b3fe92fc98f6253bcc4","modified":1740457601245},{"_id":"public/2025/02/23/clonezilla/index.html","hash":"18b734abda3405019efcab2523f12e766bfa73a3","modified":1740457601245},{"_id":"public/2024/11/06/overleaf/index.html","hash":"bc411b1a10fcbb6a5f6d0d213fa63f093830cae3","modified":1740457601245},{"_id":"public/2024/11/04/loopers/index.html","hash":"52c2990102d50fb0fc874c3bb7363776b68255e3","modified":1740457601245},{"_id":"public/2024/11/06/arch-nvidia/index.html","hash":"8ade129a78d71d3017432e1a65e1d6d292a16c53","modified":1740457601245},{"_id":"public/2024/11/04/Vocaloid调教-晴天/index.html","hash":"a3dd5c0b77bd2eb77555d349177492a02e17fd25","modified":1740457601245},{"_id":"public/2024/10/30/GentleJena/index.html","hash":"0747019314125e796e102155e09febb4cbdb9b67","modified":1740457601245},{"_id":"public/2024/06/03/原来我还有个博客/index.html","hash":"7215c9a90d0695469c179717d27194e346a8abd0","modified":1740457601245},{"_id":"public/2023/12/31/12月31日进度报告/index.html","hash":"03f909c8954f0e623ccaf2e30fa44a1d3f45814b","modified":1740457601245},{"_id":"public/2024/11/11/mhwi/index.html","hash":"ebe1a9550fe14035a215f067342373d3e2a2e8c5","modified":1740457601245},{"_id":"public/2023/12/20/12月20日工作记录/index.html","hash":"5ee7c6817c2202a86dcf8e7e6898d2559c69dcf2","modified":1740457601245},{"_id":"public/2024/11/04/BlogUpdate/index.html","hash":"ac98c86ad12b3074414a44bfdf3ed153320d3a03","modified":1740457601245},{"_id":"public/2023/12/19/12月19日工作记录/index.html","hash":"bac072049959ec19cb53ad4b9180b53476c3542f","modified":1740457601245},{"_id":"public/2023/12/17/12月16-17日工作记录/index.html","hash":"2af885a19d1b28c3a1e6d4afdf110c6733a4c6b5","modified":1740457601245},{"_id":"public/2023/12/18/12月18日工作记录/index.html","hash":"82d3d1cab693f7808b28ed48803229a5290ee798","modified":1740457601245},{"_id":"public/2023/12/28/12月28日进度报告/index.html","hash":"5aa948c12c109b08b781baf308c9a80ddd3bc379","modified":1740457601245},{"_id":"public/archives/index.html","hash":"0d906c7fed598af264e44bca6478b13bb89de30a","modified":1740457601245},{"_id":"public/2023/12/06/CGH0S7-s-Blog/index.html","hash":"b13772d5d9a1a7a19d1f565a27e8a9432f0da543","modified":1740457601245},{"_id":"public/archives/page/2/index.html","hash":"3c3e1c104a6b6a3fbea1e5502199a2319398b1d0","modified":1740457601245},{"_id":"public/2023/12/06/梦开始的地方/index.html","hash":"2df05084144d2567e92d3b9f59afbb720fbed05a","modified":1740457601245},{"_id":"public/archives/2023/12/index.html","hash":"13bad1d512244b2c6fe7a9ec6896be520eafcb18","modified":1740457601245},{"_id":"public/archives/2024/06/index.html","hash":"5a6f5a882ef61bda49289f6fa169105f3adab3c8","modified":1740457601245},{"_id":"public/archives/2024/10/index.html","hash":"bc50342e110a5e979e61101bcca106f8967a2c77","modified":1740457601245},{"_id":"public/archives/2023/index.html","hash":"61317006ccd7a25a201d8a6e8e4a6f9882e6d857","modified":1740457601245},{"_id":"public/archives/2024/12/index.html","hash":"6a913f1615fe45879e3772bfef32f2b24c2f1e38","modified":1740457601245},{"_id":"public/archives/2025/index.html","hash":"864a4e41d5b27be3db543b52501805e6b8a51880","modified":1740457601245},{"_id":"public/archives/2024/index.html","hash":"64d5411e304b7e132a50fb6c8c4c336342493ba9","modified":1740457601245},{"_id":"public/categories/更新/index.html","hash":"39ae73dfc0e214df88912e0a38b4cbf3b55e13a4","modified":1740457601245},{"_id":"public/archives/2025/02/index.html","hash":"67d9de757d3d34ef4ef8a88b3c286ef882697182","modified":1740457601245},{"_id":"public/categories/Vocaloid/index.html","hash":"048aca4e241b331d0209e9208c379fcf665a0fae","modified":1740457601245},{"_id":"public/archives/2024/11/index.html","hash":"25d7617dc8ac9e7953dcdb516753afe742e19cdc","modified":1740457601245},{"_id":"public/index.html","hash":"43e9960f33bf1daa18c2aae68f11b2a0fab2e172","modified":1740457601245},{"_id":"public/categories/技术分享/index.html","hash":"af921a46b2c79d42f3f975638ec3b7133af7028b","modified":1740457601245},{"_id":"public/page/2/index.html","hash":"01b94453e6ae77a30d0f48d5ec6e51fba646e6a8","modified":1740457601245},{"_id":"public/tags/日志/index.html","hash":"bf4fbe21c0376cb80cd8b282a0ed31f4d7e16e10","modified":1740457601245},{"_id":"public/categories/Rearrangement/index.html","hash":"d86532128355807b19a6eb69208699289b62cfb7","modified":1740457601245},{"_id":"public/tags/音乐/index.html","hash":"0c4de7bf53b25a52c23aaf27d7327d49d165268b","modified":1740457601245},{"_id":"public/tags/技术/index.html","hash":"1dea2413397a9fdfba26ee98c8c69adc280d17e9","modified":1740457601245},{"_id":"public/tags/技术分享/index.html","hash":"008bf090272f222a7b84fa903de3702231b8516b","modified":1740457601245},{"_id":"public/tags/TEST/index.html","hash":"2e5789b8e544c5e8404441c75b054f661294306a","modified":1740457601245},{"_id":"public/tags/生活/index.html","hash":"794d127e0a2d30942dada57f68dfc5659be687be","modified":1740457601245},{"_id":"public/tags/板绘/index.html","hash":"05cf911d2c26ed5f6d104d875c11762e6e55b12e","modified":1740457601245},{"_id":"public/404.html","hash":"4696437e74fa558f8be811e50fdfd88f2a84e82b","modified":1740457601245},{"_id":"public/tags/index.html","hash":"781105ac669cdf678cfee017c02a6b706f5d1354","modified":1740457601245},{"_id":"public/categories/index.html","hash":"f2bbc847232265380a90a69b0d2f3bfb05137d31","modified":1740457601245},{"_id":"public/links/index.html","hash":"4591acb90903a2e0e2a889de931883ac7119c23e","modified":1740457601245},{"_id":"public/tags/学习/index.html","hash":"b754a2106f26f5f90fd1d4e6370b58904b39eda3","modified":1740457601245},{"_id":"public/tags/Vocaloid/index.html","hash":"98440598d6da10f35250eb46e393c0f7199fd848","modified":1740457601245},{"_id":"public/images/amd.webp","hash":"cb0cfd5da0b9c10b9b22c65bba881cfde485d763","modified":1740457601245},{"_id":"public/images/asc-events.png","hash":"a0b3610962062d0a322fe091bcc8f083ab13bc6e","modified":1740457601245},{"_id":"public/images/built_on_the_kde_platform.png","hash":"507b6a4323b23772800006505e6c588bb515ebf5","modified":1740457601245},{"_id":"public/images/asc.png","hash":"3a33b35bff1b3f527f7a87a9d6a7d6d9a072a946","modified":1740457601245},{"_id":"public/images/archlinux-logo.png","hash":"4f6075309fadcb7f7547164cb8a99b4949f74598","modified":1740457601245},{"_id":"public/images/Written-By-Human-Not-By-AI-Badge-white@2x.png","hash":"994225c6fd72521b281144bdd98fefcca53e2c7b","modified":1740457601245},{"_id":"public/img/avatar.png","hash":"fe739a158cc128f70f780eb5fa96f388b81d478f","modified":1740457601245},{"_id":"public/img/police_beian.png","hash":"90efded6baa2dde599a9d6b1387973e8e64923ea","modified":1740457601245},{"_id":"public/xml/local-search.xml","hash":"8c96ba6a064705602ce28d096fd7dd9069630a55","modified":1740457601245},{"_id":"public/img/loading.gif","hash":"2d2fc0f947940f98c21afafef39ecf226a2e8d55","modified":1740457601245},{"_id":"public/images/phase1_strings.png","hash":"6fb457adddc5bb32aa463b6227542076c4b501e7","modified":1740457601245},{"_id":"public/img/hifuu.png","hash":"331b5950baf96f5d39192bb42b7da4d22a08992e","modified":1740457601245},{"_id":"public/css/gitalk.css","hash":"a57b3cc8e04a0a4a27aefa07facf5b5e7bca0e76","modified":1740457601245},{"_id":"public/css/highlight.css","hash":"04d4ddbb5e1d1007447c2fe293ee05aae9b9563e","modified":1740457601245},{"_id":"public/css/highlight-dark.css","hash":"902294bada4323c0f51502d67cba8c3a0298952f","modified":1740457601245},{"_id":"public/js/boot.js","hash":"38bd26c6b7acdafda86dda3560e6a3ca488d3c76","modified":1740457601245},{"_id":"public/css/main.css","hash":"06433abcb688c2f5473623a9355bff9865c48d3f","modified":1740457601245},{"_id":"public/js/events.js","hash":"6869811f67e4c3de3edfa4b08464bb242b97a402","modified":1740457601245},{"_id":"public/js/leancloud.js","hash":"eff77c7a5c399fcaefda48884980571e15243fc9","modified":1740457601245},{"_id":"public/js/color-schema.js","hash":"1ef88c881b9f942deadde3d890387b94c617342a","modified":1740457601245},{"_id":"public/js/plugins.js","hash":"c34916291e392a774ff3e85c55badb83e8661297","modified":1740457601245},{"_id":"public/js/utils.js","hash":"b82e7c289a66dfd36064470fd41c0e96fc598b43","modified":1740457601245},{"_id":"public/js/local-search.js","hash":"b9945f76f8682f3ec32edfb285b26eb559f7b7e8","modified":1740457601245},{"_id":"public/js/umami-view.js","hash":"33c4b3883fa747604074ad3921606eeeaeb50716","modified":1740457601245},{"_id":"public/js/img-lazyload.js","hash":"cbdeca434ec4da51f488c821d51b4d23c73294af","modified":1740457601245},{"_id":"public/images/caseclosed.png","hash":"628b54b49c86a23af595a52daba9e0557b81a17a","modified":1740457601245},{"_id":"public/images/1730728153314.png","hash":"95d44ea62557a311503cab58d1dec5cafc97e07d","modified":1740457601245},{"_id":"public/img/gh0s7.jpg","hash":"1c5af4f8cacdc3c6adbe8334866774cca2944910","modified":1740457601245},{"_id":"public/images/phase1.png","hash":"42533712403be6036231f1e3770f125858bf91d7","modified":1740457601245},{"_id":"public/images/5364bba6d035326e82c53504dd53e7c2454454985.png","hash":"11b11f23ebebbe08e8cf826b48eb37b4084796cd","modified":1740457601245},{"_id":"public/images/1613f5602b203b38230f19699deb0219454454985.png","hash":"3d71204d9a0731384f97ad0f90802a5c9fd96776","modified":1740457601245},{"_id":"public/images/71a5357ef4bd808b10429bc2ea46cb6f454454985.png","hash":"dddf72bb12aef01baa3eb2017bb867f274059f12","modified":1740457601245},{"_id":"public/images/mhwilds4050.jpg","hash":"9b2b15c66e2340c15b86cec0fa8f818b67e06384","modified":1740457601245},{"_id":"public/images/mhwilds780M.jpg","hash":"e2c59c6caae452afb424d9f2fc3a255a44121b49","modified":1740457601245},{"_id":"public/images/clonezilla.png","hash":"7f443d79783df3744b2e51613422ee8fd7eea6f8","modified":1740457601245},{"_id":"public/images/phase_4.png","hash":"81cd309a8990e015a8679b6a4e26a27d804c1da6","modified":1740457601245},{"_id":"public/images/phase_2_14.png","hash":"f50399a9eb469ed1e063ff4ccc0e8636c1b75f1e","modified":1740457601245},{"_id":"public/images/b2054bbaf6197624d38cc2007d885fd1454454985.png","hash":"b021e971cedaa55b273eab2b10be94f795b06922","modified":1740457601245},{"_id":"public/images/20241027_222225.png","hash":"f0595d1315d94e72e61c69e0499e5129e1821ba1","modified":1740457601245},{"_id":"public/images/zellij-helix.jpg","hash":"87fb5b7b51a4e3b062b891c04488a53457edded0","modified":1740457601245},{"_id":"public/img/gensokyo.jpg","hash":"d82c0d5011c6cbc37109c9c80530d14cd266286f","modified":1740457601245}],"Category":[{"name":"更新","_id":"cm7jziods000fwi2b6sz39o2v"},{"name":"Rearrangement","_id":"cm7jziodu000nwi2bg9k8dxzp"},{"name":"Vocaloid","_id":"cm7jziodu000uwi2b02p27nyj"},{"name":"技术分享","_id":"cm7jziodv0010wi2b1nt86jtj"}],"Data":[],"Page":[{"title":"About","date":"2024-11-04T14:46:12.000Z","layout":"about","_content":"\n白茅铺高地玄院第N任非菌群主🐳,Linux六年牢用户🐧\n\n爱好编程,绘画,编曲,Vocaloid调教,Blender建模等😇\n\n截至目前最喜欢的歌手是宇多田光❤️\n\n联系方式:\n\n- Email: \n\n- Github: \n","source":"about/index.md","raw":"---\ntitle: About\ndate: 2024-11-04 22:46:12\nlayout: about\n---\n\n白茅铺高地玄院第N任非菌群主🐳,Linux六年牢用户🐧\n\n爱好编程,绘画,编曲,Vocaloid调教,Blender建模等😇\n\n截至目前最喜欢的歌手是宇多田光❤️\n\n联系方式:\n\n- Email: \n\n- Github: \n","updated":"2025-02-23T16:01:20.093Z","path":"about/index.html","comments":1,"_id":"cm7jziodm0000wi2b8fohhnl9","content":"

白茅铺高地玄院第N任非菌群主🐳,Linux六年牢用户🐧

\n

爱好编程,绘画,编曲,Vocaloid调教,Blender建模等😇

\n

截至目前最喜欢的歌手是宇多田光❤️

\n

联系方式:

\n\n","excerpt":"","more":"

白茅铺高地玄院第N任非菌群主🐳,Linux六年牢用户🐧

\n

爱好编程,绘画,编曲,Vocaloid调教,Blender建模等😇

\n

截至目前最喜欢的歌手是宇多田光❤️

\n

联系方式:

\n\n"}],"Post":[{"title":"12月16-17日工作记录","date":"2023-12-17T14:26:17.000Z","_content":"## 12月16-17日\n1. 四级考试\n2. 自学cuda,openacc,了解GPU架构知识\n3. 参加超算队启动会\n4. 大计和高数期中考试\n5. 研究spack使用\n6. 学习cuda编程\n7. 补作业\n","source":"_posts/12月16-17日工作记录.md","raw":"---\ntitle: 12月16-17日工作记录\ndate: 2023-12-17 22:26:17\ntags: [日志]\n---\n## 12月16-17日\n1. 四级考试\n2. 自学cuda,openacc,了解GPU架构知识\n3. 参加超算队启动会\n4. 大计和高数期中考试\n5. 研究spack使用\n6. 学习cuda编程\n7. 补作业\n","slug":"12月16-17日工作记录","published":1,"updated":"2025-02-23T14:27:46.747Z","comments":1,"layout":"post","photos":[],"_id":"cm7jziodn0001wi2b80cf2h59","content":"

12月16-17日

    \n
  1. 四级考试
  2. \n
  3. 自学cuda,openacc,了解GPU架构知识
  4. \n
  5. 参加超算队启动会
  6. \n
  7. 大计和高数期中考试
  8. \n
  9. 研究spack使用
  10. \n
  11. 学习cuda编程
  12. \n
  13. 补作业
  14. \n
\n","excerpt":"","more":"

12月16-17日

    \n
  1. 四级考试
  2. \n
  3. 自学cuda,openacc,了解GPU架构知识
  4. \n
  5. 参加超算队启动会
  6. \n
  7. 大计和高数期中考试
  8. \n
  9. 研究spack使用
  10. \n
  11. 学习cuda编程
  12. \n
  13. 补作业
  14. \n
\n"},{"title":"12月18日工作记录","date":"2023-12-18T13:57:34.000Z","_content":"## 12月18日\n1. 初步了解opencaeporo,尝试在本地docker环境使用gcc完成编译安装,目前完成各项依赖安装,由于晚上停电计划明天开始编译安装opencaeporo本体并在本地调优;\n2. 协助Neko组完成任务;\n3. 找出spack存在网络原因无法下载时的手动解决方案.","source":"_posts/12月18日工作记录.md","raw":"---\ntitle: 12月18日工作记录\ndate: 2023-12-18 21:57:34\ntags: [日志]\n---\n## 12月18日\n1. 初步了解opencaeporo,尝试在本地docker环境使用gcc完成编译安装,目前完成各项依赖安装,由于晚上停电计划明天开始编译安装opencaeporo本体并在本地调优;\n2. 协助Neko组完成任务;\n3. 找出spack存在网络原因无法下载时的手动解决方案.","slug":"12月18日工作记录","published":1,"updated":"2025-02-23T14:27:46.748Z","comments":1,"layout":"post","photos":[],"_id":"cm7jziodo0002wi2bhhu604l9","content":"

12月18日

    \n
  1. 初步了解opencaeporo,尝试在本地docker环境使用gcc完成编译安装,目前完成各项依赖安装,由于晚上停电计划明天开始编译安装opencaeporo本体并在本地调优;
  2. \n
  3. 协助Neko组完成任务;
  4. \n
  5. 找出spack存在网络原因无法下载时的手动解决方案.
  6. \n
\n","excerpt":"","more":"

12月18日

    \n
  1. 初步了解opencaeporo,尝试在本地docker环境使用gcc完成编译安装,目前完成各项依赖安装,由于晚上停电计划明天开始编译安装opencaeporo本体并在本地调优;
  2. \n
  3. 协助Neko组完成任务;
  4. \n
  5. 找出spack存在网络原因无法下载时的手动解决方案.
  6. \n
\n"},{"title":"12月19日工作记录","date":"2023-12-19T13:59:47.000Z","_content":"## 12月18日\n1. 彻底完成opencaeporo安装部署,本地和服务器均已安装,明天正式开始调优工作;\n2. 学习cuda编程.\n","source":"_posts/12月19日工作记录.md","raw":"---\ntitle: 12月19日工作记录\ndate: 2023-12-19 21:59:47\ntags: [日志]\n---\n## 12月18日\n1. 彻底完成opencaeporo安装部署,本地和服务器均已安装,明天正式开始调优工作;\n2. 学习cuda编程.\n","slug":"12月19日工作记录","published":1,"updated":"2025-02-23T14:27:46.748Z","comments":1,"layout":"post","photos":[],"_id":"cm7jziodp0004wi2baobvgc5p","content":"

12月18日

    \n
  1. 彻底完成opencaeporo安装部署,本地和服务器均已安装,明天正式开始调优工作;
  2. \n
  3. 学习cuda编程.
  4. \n
\n","excerpt":"","more":"

12月18日

    \n
  1. 彻底完成opencaeporo安装部署,本地和服务器均已安装,明天正式开始调优工作;
  2. \n
  3. 学习cuda编程.
  4. \n
\n"},{"title":"12月28日进度报告","date":"2023-12-28T15:22:13.000Z","_content":"## 12月28日\n\nOpenCAEPoro 小组(黄**,梁**,程**,刘**)\n\n1. 各组员继续进行优化工作,部分函数完成cuda移植,取得一定优化效果\n2. 继续学习openacc及cuda相关知识\n3. 搜集多孔介质流动模拟与opencaeporo相关论文资料为proposal做准备\n","source":"_posts/12月28日进度报告.md","raw":"---\ntitle: 12月28日进度报告\ndate: 2023-12-28 23:22:13\ntags: 日志\n---\n## 12月28日\n\nOpenCAEPoro 小组(黄**,梁**,程**,刘**)\n\n1. 各组员继续进行优化工作,部分函数完成cuda移植,取得一定优化效果\n2. 继续学习openacc及cuda相关知识\n3. 搜集多孔介质流动模拟与opencaeporo相关论文资料为proposal做准备\n","slug":"12月28日进度报告","published":1,"updated":"2025-02-23T14:27:46.748Z","comments":1,"layout":"post","photos":[],"_id":"cm7jziodq0005wi2b46qac5mo","content":"

12月28日

OpenCAEPoro 小组(黄,梁,程,刘

\n
    \n
  1. 各组员继续进行优化工作,部分函数完成cuda移植,取得一定优化效果
  2. \n
  3. 继续学习openacc及cuda相关知识
  4. \n
  5. 搜集多孔介质流动模拟与opencaeporo相关论文资料为proposal做准备
  6. \n
\n","excerpt":"","more":"

12月28日

OpenCAEPoro 小组(黄,梁,程,刘

\n
    \n
  1. 各组员继续进行优化工作,部分函数完成cuda移植,取得一定优化效果
  2. \n
  3. 继续学习openacc及cuda相关知识
  4. \n
  5. 搜集多孔介质流动模拟与opencaeporo相关论文资料为proposal做准备
  6. \n
\n"},{"title":"12月20日工作记录","date":"2023-12-20T13:56:42.000Z","_content":"## 12月20日\n\nOpenCAEPoro 小组(黄**,梁**,程**)\n\n1. 阅读代码,开展优化工作,初步使用openacc完成petsc_solver的优化,取得一定优化效果\n\n> 优化方向基本确定为OpenMP/OpenACC并行化+cuda移植\n\n2. 赛题环境汇总,目前各组工作有序开展,CentOS 7符合要求暂未发现更换系统需求\n","source":"_posts/12月20日工作记录.md","raw":"---\ntitle: 12月20日工作记录\ndate: 2023-12-20 21:56:42\ntags: 日志\n---\n## 12月20日\n\nOpenCAEPoro 小组(黄**,梁**,程**)\n\n1. 阅读代码,开展优化工作,初步使用openacc完成petsc_solver的优化,取得一定优化效果\n\n> 优化方向基本确定为OpenMP/OpenACC并行化+cuda移植\n\n2. 赛题环境汇总,目前各组工作有序开展,CentOS 7符合要求暂未发现更换系统需求\n","slug":"12月20日工作记录","published":1,"updated":"2025-02-23T14:27:46.748Z","comments":1,"layout":"post","photos":[],"_id":"cm7jziodq0006wi2bhm74a0a9","content":"

12月20日

OpenCAEPoro 小组(黄,梁,程**)

\n
    \n
  1. 阅读代码,开展优化工作,初步使用openacc完成petsc_solver的优化,取得一定优化效果
  2. \n
\n
\n

优化方向基本确定为OpenMP/OpenACC并行化+cuda移植

\n
\n
    \n
  1. 赛题环境汇总,目前各组工作有序开展,CentOS 7符合要求暂未发现更换系统需求
  2. \n
\n","excerpt":"","more":"

12月20日

OpenCAEPoro 小组(黄,梁,程**)

\n
    \n
  1. 阅读代码,开展优化工作,初步使用openacc完成petsc_solver的优化,取得一定优化效果
  2. \n
\n
\n

优化方向基本确定为OpenMP/OpenACC并行化+cuda移植

\n
\n
    \n
  1. 赛题环境汇总,目前各组工作有序开展,CentOS 7符合要求暂未发现更换系统需求
  2. \n
\n"},{"title":"12月30-31日进度报告","date":"2023-12-30T16:07:09.000Z","_content":"## 12月30-31日\n\nOpenCAEPoro 小组(黄**,梁**,程**,刘**)\n\n1. 服务器上的Opencaeporo改用nvhpc编译器编译以支持cuda;\n2. 收集运行数据用于proposal绘制图表;\n3. 继续尝试优化,同时已经查阅收集了一些相关资料以尽量理解相关含义便于工作开展.\n","source":"_posts/12月31日进度报告.md","raw":"---\ntitle: 12月30-31日进度报告\ndate: 2023-12-31 00:07:09\ntags: 日志\n---\n## 12月30-31日\n\nOpenCAEPoro 小组(黄**,梁**,程**,刘**)\n\n1. 服务器上的Opencaeporo改用nvhpc编译器编译以支持cuda;\n2. 收集运行数据用于proposal绘制图表;\n3. 继续尝试优化,同时已经查阅收集了一些相关资料以尽量理解相关含义便于工作开展.\n","slug":"12月31日进度报告","published":1,"updated":"2025-02-23T14:27:46.748Z","comments":1,"layout":"post","photos":[],"_id":"cm7jziodr0009wi2b5h330fp7","content":"

12月30-31日

OpenCAEPoro 小组(黄,梁,程,刘

\n
    \n
  1. 服务器上的Opencaeporo改用nvhpc编译器编译以支持cuda;
  2. \n
  3. 收集运行数据用于proposal绘制图表;
  4. \n
  5. 继续尝试优化,同时已经查阅收集了一些相关资料以尽量理解相关含义便于工作开展.
  6. \n
\n","excerpt":"","more":"

12月30-31日

OpenCAEPoro 小组(黄,梁,程,刘

\n
    \n
  1. 服务器上的Opencaeporo改用nvhpc编译器编译以支持cuda;
  2. \n
  3. 收集运行数据用于proposal绘制图表;
  4. \n
  5. 继续尝试优化,同时已经查阅收集了一些相关资料以尽量理解相关含义便于工作开展.
  6. \n
\n"},{"title":"博客更新记录","date":"2024-11-04T15:18:02.000Z","_content":"\n- 博客主题更新为 `Fluid` 主题,原主题为 `Next`\n- 更新了访问地址为 `https://blog.hifuu.ink`\n- 新增了 `About` 页面\n- 新增了 `友链` 页面\n- 完善页面布局\n","source":"_posts/BlogUpdate.md","raw":"---\ntitle: 博客更新记录\ndate: 2024-11-04 23:18:02\ntags: 日志\ncategories: 更新\n---\n\n- 博客主题更新为 `Fluid` 主题,原主题为 `Next`\n- 更新了访问地址为 `https://blog.hifuu.ink`\n- 新增了 `About` 页面\n- 新增了 `友链` 页面\n- 完善页面布局\n","slug":"BlogUpdate","published":1,"updated":"2025-02-23T14:27:46.748Z","comments":1,"layout":"post","photos":[],"_id":"cm7jziodr000bwi2bdhi71dk3","content":"
    \n
  • 博客主题更新为 Fluid 主题,原主题为 Next
  • \n
  • 更新了访问地址为 https://blog.hifuu.ink
  • \n
  • 新增了 About 页面
  • \n
  • 新增了 友链 页面
  • \n
  • 完善页面布局
  • \n
\n","excerpt":"","more":"
    \n
  • 博客主题更新为 Fluid 主题,原主题为 Next
  • \n
  • 更新了访问地址为 https://blog.hifuu.ink
  • \n
  • 新增了 About 页面
  • \n
  • 新增了 友链 页面
  • \n
  • 完善页面布局
  • \n
\n"},{"title":"Welcome to CGH0S7's Blog","date":"2023-12-06T08:33:30.000Z","_content":"\nHello World !\n","source":"_posts/CGH0S7-s-Blog.md","raw":"---\ntitle: Welcome to CGH0S7's Blog \ndate: 2023-12-06 16:33:30\ntags: TEST\n---\n\nHello World !\n","slug":"CGH0S7-s-Blog","published":1,"updated":"2025-02-23T14:27:46.748Z","comments":1,"layout":"post","photos":[],"_id":"cm7jziods000ewi2bdc6000t9","content":"

Hello World !

\n","excerpt":"","more":"

Hello World !

\n"},{"title":"Gentle Jena","date":"2024-10-30T14:11:14.000Z","_content":"\n很喜欢的一首曲子\n顺便测试一下视频上传\n以后随缘更新各种乱七八糟的东西。。\n\n\n","source":"_posts/GentleJena.md","raw":"---\ntitle: Gentle Jena\ndate: 2024-10-30 22:11:14\ntags: 音乐\ncategories: Rearrangement\n---\n\n很喜欢的一首曲子\n顺便测试一下视频上传\n以后随缘更新各种乱七八糟的东西。。\n\n\n","slug":"GentleJena","published":1,"updated":"2025-02-23T17:14:31.930Z","comments":1,"layout":"post","photos":[],"_id":"cm7jziods000hwi2b19t43c6n","content":"

很喜欢的一首曲子
顺便测试一下视频上传
以后随缘更新各种乱七八糟的东西。。

\n\n","excerpt":"","more":"

很喜欢的一首曲子
顺便测试一下视频上传
以后随缘更新各种乱七八糟的东西。。

\n\n"},{"title":"Vocaloid调教-晴天(洛天依V4)","date":"2024-11-04T13:52:59.000Z","_content":"\n其实是今年年初的作品想起来可以搬上来,这是我调教的第一首v曲。\n\n“故事的小黄花,从出生那年就飘着...”\n\n{% raw %}\n\n{% endraw %}\n\n","source":"_posts/Vocaloid调教-晴天.md","raw":"---\ntitle: Vocaloid调教-晴天(洛天依v4)\ndate: 2024-11-04 21:52:59\ntags: [Vocaloid, 音乐]\ncategories: [Vocaloid]\n---\n\n其实是今年年初的作品想起来可以搬上来,这是我调教的第一首v曲。\n\n“故事的小黄花,从出生那年就飘着...”\n\n{% raw %}\n\n{% endraw %}\n\n","slug":"Vocaloid调教-晴天","published":1,"updated":"2025-02-25T00:19:05.940Z","comments":1,"layout":"post","photos":[],"_id":"cm7jziodt000kwi2b320w2nl5","content":"

其实是今年年初的作品想起来可以搬上来,这是我调教的第一首v曲。

\n

“故事的小黄花,从出生那年就飘着…”

\n\n\n\n\n","excerpt":"","more":"

其实是今年年初的作品想起来可以搬上来,这是我调教的第一首v曲。

\n

“故事的小黄花,从出生那年就飘着…”

\n\n\n\n\n"},{"title":"Archlinux的KDE Plasma优先启用Nvidia独立显卡和混合显卡配置指北","date":"2024-11-06T02:02:04.000Z","_content":"本文将介绍在 **X11** 和 **Wayland** 两种会话下,如何在 KDE Plasma 中优先启用 Nvidia 独立显卡,并提供 I+N 混合显卡的配置方案。**首先,请确保您已经正确安装了 Nvidia 驱动**(如果非 Mainline 内核,请使用 `nvidia-dkms` 或 `nvidia-open-dkms` 版本)。\n\n![Nvidia设置示意图](/images/5364bba6d035326e82c53504dd53e7c2454454985.png)\n\n### 适用系统\n\n对于 **CachyOS** 或 **EndeavourOS** 等 Arch Linux 衍生版,这些配置大多开箱即用,但对于刚刚入坑 Arch Linux 且使用 KDE 的新手可能会遇到这样的问题:\n\n- Nvidia 驱动已安装,`nvidia-smi` 输出正常\n- KDE 系统信息显示仍在使用核显,程序运行时也优先使用核显\n- 导致某些应用(如浏览器、Blender)可能出现卡顿或掉帧现象\n\n这是因为 Arch Linux 的高自定义性,许多功能需要用户手动配置。以下是详细的解决方案。\n\n---\n\n## 配置 X11 下的 Nvidia 显卡优先\n\n可以通过配置 `/etc/X11/xorg.conf` 实现 Nvidia 独显输出。幸运的是,Nvidia 提供了自动生成配置文件的工具,用户无需手动编写:\n\n```bash\nsudo nvidia-xconfig --prime\n```\n\n该命令会根据硬件情况自动生成配置文件。执行后 **重新登录会话** 即可生效(即使是 Wayland 用户也可以执行一次此命令)。\n\n![X11 Nvidia配置](/images/1613f5602b203b38230f19699deb0219454454985.png)\n\n---\n\n## 配置 Wayland 下的 Nvidia 显卡优先\n\n在 Wayland 下优先启用 Nvidia 显卡的步骤如下:\n\n1. 编辑 **GRUB 配置**文件:\n\n 打开 `/etc/default/grub` 文件,在 `GRUB_CMDLINE_LINUX_DEFAULT=\"\"` 中添加 `nvidia_drm.modeset=1`:\n\n ```bash\n GRUB_CMDLINE_LINUX_DEFAULT=\"nvidia_drm.modeset=1\"\n ```\n\n2. 重新生成 grub 配置:\n\n ```bash\n sudo grub-mkconfig -o /boot/grub/grub.cfg\n ```\n\n3. 配置 **Plasma 环境**文件:\n\n 在 `~/.config/plasma-workspace/env/nvidia.sh` 中写入以下内容:\n\n ```bash\n #!/bin/bash \n export __NV_PRIME_RENDER_OFFLOAD=1 \n export __GLX_VENDOR_LIBRARY_NAME=nvidia\n ```\n\n4. 保存并重启电脑,即可生效。\n\n![Wayland Nvidia配置](/images/b2054bbaf6197624d38cc2007d885fd1454454985.png)\n\n---\n\n## I+N 混合显卡方案\n\n如果不希望全局启用独显,可以选择让大部分程序默认使用核显,而少数高性能需求的程序使用独显。这种方法能有效节省功耗,同时将独显资源集中分配给需要的程序(如 Steam 游戏、Blender 等)。缺点是每个程序需要手动配置启动项。\n\n### 配置步骤\n\n1. 打开程序的 `.desktop` 启动文件:\n\n 位置可能在 `/usr/share/applications` 或 `~/.local/share/applications` 中。\n\n2. 在 `Exec=` 后添加 `prime-run` 参数。例如:\n\n ```text\n Exec=prime-run <程序启动命令>\n ```\n\n ![混合显卡配置示意图](/images/71a5357ef4bd808b10429bc2ea46cb6f454454985.png)\n\n### Vim 快捷配置\n\n如果使用 Vim,可以使用以下快捷键快速批量替换 `Exec=` 为 `Exec=prime-run`:\n\n```vim\nv -> G -> :s/Exec=/Exec=prime-run /g Enter -> :wq Enter\n```\n\n---\n\n## 让 Plasma 桌面也使用独显\n\n如果希望 Plasma 桌面也通过独显运行,可以修改 Wayland 配置文件并删除第二行:\n\n```bash\n#!/bin/bash \nexport __GLX_VENDOR_LIBRARY_NAME=nvidia\n```\n\n这样 Plasma 桌面会通过独显启动,其他程序则默认使用核显。\n\n---\n\n希望以上经验能为有此需求的用户提供参考帮助。\n","source":"_posts/arch-nvidia.md","raw":"---\ntitle: Archlinux的KDE Plasma优先启用Nvidia独立显卡和混合显卡配置指北\ndate: 2024-11-06 10:02:04\ntags: 技术\ncategories: [技术分享]\n---\n本文将介绍在 **X11** 和 **Wayland** 两种会话下,如何在 KDE Plasma 中优先启用 Nvidia 独立显卡,并提供 I+N 混合显卡的配置方案。**首先,请确保您已经正确安装了 Nvidia 驱动**(如果非 Mainline 内核,请使用 `nvidia-dkms` 或 `nvidia-open-dkms` 版本)。\n\n![Nvidia设置示意图](/images/5364bba6d035326e82c53504dd53e7c2454454985.png)\n\n### 适用系统\n\n对于 **CachyOS** 或 **EndeavourOS** 等 Arch Linux 衍生版,这些配置大多开箱即用,但对于刚刚入坑 Arch Linux 且使用 KDE 的新手可能会遇到这样的问题:\n\n- Nvidia 驱动已安装,`nvidia-smi` 输出正常\n- KDE 系统信息显示仍在使用核显,程序运行时也优先使用核显\n- 导致某些应用(如浏览器、Blender)可能出现卡顿或掉帧现象\n\n这是因为 Arch Linux 的高自定义性,许多功能需要用户手动配置。以下是详细的解决方案。\n\n---\n\n## 配置 X11 下的 Nvidia 显卡优先\n\n可以通过配置 `/etc/X11/xorg.conf` 实现 Nvidia 独显输出。幸运的是,Nvidia 提供了自动生成配置文件的工具,用户无需手动编写:\n\n```bash\nsudo nvidia-xconfig --prime\n```\n\n该命令会根据硬件情况自动生成配置文件。执行后 **重新登录会话** 即可生效(即使是 Wayland 用户也可以执行一次此命令)。\n\n![X11 Nvidia配置](/images/1613f5602b203b38230f19699deb0219454454985.png)\n\n---\n\n## 配置 Wayland 下的 Nvidia 显卡优先\n\n在 Wayland 下优先启用 Nvidia 显卡的步骤如下:\n\n1. 编辑 **GRUB 配置**文件:\n\n 打开 `/etc/default/grub` 文件,在 `GRUB_CMDLINE_LINUX_DEFAULT=\"\"` 中添加 `nvidia_drm.modeset=1`:\n\n ```bash\n GRUB_CMDLINE_LINUX_DEFAULT=\"nvidia_drm.modeset=1\"\n ```\n\n2. 重新生成 grub 配置:\n\n ```bash\n sudo grub-mkconfig -o /boot/grub/grub.cfg\n ```\n\n3. 配置 **Plasma 环境**文件:\n\n 在 `~/.config/plasma-workspace/env/nvidia.sh` 中写入以下内容:\n\n ```bash\n #!/bin/bash \n export __NV_PRIME_RENDER_OFFLOAD=1 \n export __GLX_VENDOR_LIBRARY_NAME=nvidia\n ```\n\n4. 保存并重启电脑,即可生效。\n\n![Wayland Nvidia配置](/images/b2054bbaf6197624d38cc2007d885fd1454454985.png)\n\n---\n\n## I+N 混合显卡方案\n\n如果不希望全局启用独显,可以选择让大部分程序默认使用核显,而少数高性能需求的程序使用独显。这种方法能有效节省功耗,同时将独显资源集中分配给需要的程序(如 Steam 游戏、Blender 等)。缺点是每个程序需要手动配置启动项。\n\n### 配置步骤\n\n1. 打开程序的 `.desktop` 启动文件:\n\n 位置可能在 `/usr/share/applications` 或 `~/.local/share/applications` 中。\n\n2. 在 `Exec=` 后添加 `prime-run` 参数。例如:\n\n ```text\n Exec=prime-run <程序启动命令>\n ```\n\n ![混合显卡配置示意图](/images/71a5357ef4bd808b10429bc2ea46cb6f454454985.png)\n\n### Vim 快捷配置\n\n如果使用 Vim,可以使用以下快捷键快速批量替换 `Exec=` 为 `Exec=prime-run`:\n\n```vim\nv -> G -> :s/Exec=/Exec=prime-run /g Enter -> :wq Enter\n```\n\n---\n\n## 让 Plasma 桌面也使用独显\n\n如果希望 Plasma 桌面也通过独显运行,可以修改 Wayland 配置文件并删除第二行:\n\n```bash\n#!/bin/bash \nexport __GLX_VENDOR_LIBRARY_NAME=nvidia\n```\n\n这样 Plasma 桌面会通过独显启动,其他程序则默认使用核显。\n\n---\n\n希望以上经验能为有此需求的用户提供参考帮助。\n","slug":"arch-nvidia","published":1,"updated":"2025-02-02T11:21:35.673Z","comments":1,"layout":"post","photos":[],"_id":"cm7jziodt000mwi2bcvznhn4q","content":"

本文将介绍在 X11Wayland 两种会话下,如何在 KDE Plasma 中优先启用 Nvidia 独立显卡,并提供 I+N 混合显卡的配置方案。首先,请确保您已经正确安装了 Nvidia 驱动(如果非 Mainline 内核,请使用 nvidia-dkmsnvidia-open-dkms 版本)。

\n

\"Nvidia设置示意图\"

\n

适用系统

对于 CachyOSEndeavourOS 等 Arch Linux 衍生版,这些配置大多开箱即用,但对于刚刚入坑 Arch Linux 且使用 KDE 的新手可能会遇到这样的问题:

\n
    \n
  • Nvidia 驱动已安装,nvidia-smi 输出正常
  • \n
  • KDE 系统信息显示仍在使用核显,程序运行时也优先使用核显
  • \n
  • 导致某些应用(如浏览器、Blender)可能出现卡顿或掉帧现象
  • \n
\n

这是因为 Arch Linux 的高自定义性,许多功能需要用户手动配置。以下是详细的解决方案。

\n
\n

配置 X11 下的 Nvidia 显卡优先

可以通过配置 /etc/X11/xorg.conf 实现 Nvidia 独显输出。幸运的是,Nvidia 提供了自动生成配置文件的工具,用户无需手动编写:

\n
1
sudo nvidia-xconfig --prime
\n\n

该命令会根据硬件情况自动生成配置文件。执行后 重新登录会话 即可生效(即使是 Wayland 用户也可以执行一次此命令)。

\n

\"X11

\n
\n

配置 Wayland 下的 Nvidia 显卡优先

在 Wayland 下优先启用 Nvidia 显卡的步骤如下:

\n
    \n
  1. 编辑 GRUB 配置文件:

    \n

    打开 /etc/default/grub 文件,在 GRUB_CMDLINE_LINUX_DEFAULT="" 中添加 nvidia_drm.modeset=1

    \n
    1
    GRUB_CMDLINE_LINUX_DEFAULT="nvidia_drm.modeset=1"
    \n
  2. \n
  3. 重新生成 grub 配置:

    \n
    1
    sudo grub-mkconfig -o /boot/grub/grub.cfg
    \n
  4. \n
  5. 配置 Plasma 环境文件:

    \n

    ~/.config/plasma-workspace/env/nvidia.sh 中写入以下内容:

    \n
    1
    2
    3
    #!/bin/bash 
    export __NV_PRIME_RENDER_OFFLOAD=1
    export __GLX_VENDOR_LIBRARY_NAME=nvidia
    \n
  6. \n
  7. 保存并重启电脑,即可生效。

    \n
  8. \n
\n

\"Wayland

\n
\n

I+N 混合显卡方案

如果不希望全局启用独显,可以选择让大部分程序默认使用核显,而少数高性能需求的程序使用独显。这种方法能有效节省功耗,同时将独显资源集中分配给需要的程序(如 Steam 游戏、Blender 等)。缺点是每个程序需要手动配置启动项。

\n

配置步骤

    \n
  1. 打开程序的 .desktop 启动文件:

    \n

    位置可能在 /usr/share/applications~/.local/share/applications 中。

    \n
  2. \n
  3. Exec= 后添加 prime-run 参数。例如:

    \n
    1
    Exec=prime-run <程序启动命令>
    \n\n

    \"混合显卡配置示意图\"

    \n
  4. \n
\n

Vim 快捷配置

如果使用 Vim,可以使用以下快捷键快速批量替换 Exec=Exec=prime-run

\n
1
v -> G -> :s/Exec=/Exec=prime-run /g Enter -> :wq Enter
\n\n
\n

让 Plasma 桌面也使用独显

如果希望 Plasma 桌面也通过独显运行,可以修改 Wayland 配置文件并删除第二行:

\n
1
2
#!/bin/bash 
export __GLX_VENDOR_LIBRARY_NAME=nvidia
\n\n

这样 Plasma 桌面会通过独显启动,其他程序则默认使用核显。

\n
\n

希望以上经验能为有此需求的用户提供参考帮助。

\n","excerpt":"","more":"

本文将介绍在 X11Wayland 两种会话下,如何在 KDE Plasma 中优先启用 Nvidia 独立显卡,并提供 I+N 混合显卡的配置方案。首先,请确保您已经正确安装了 Nvidia 驱动(如果非 Mainline 内核,请使用 nvidia-dkmsnvidia-open-dkms 版本)。

\n

\"Nvidia设置示意图\"

\n

适用系统

对于 CachyOSEndeavourOS 等 Arch Linux 衍生版,这些配置大多开箱即用,但对于刚刚入坑 Arch Linux 且使用 KDE 的新手可能会遇到这样的问题:

\n
    \n
  • Nvidia 驱动已安装,nvidia-smi 输出正常
  • \n
  • KDE 系统信息显示仍在使用核显,程序运行时也优先使用核显
  • \n
  • 导致某些应用(如浏览器、Blender)可能出现卡顿或掉帧现象
  • \n
\n

这是因为 Arch Linux 的高自定义性,许多功能需要用户手动配置。以下是详细的解决方案。

\n
\n

配置 X11 下的 Nvidia 显卡优先

可以通过配置 /etc/X11/xorg.conf 实现 Nvidia 独显输出。幸运的是,Nvidia 提供了自动生成配置文件的工具,用户无需手动编写:

\n
1
sudo nvidia-xconfig --prime
\n\n

该命令会根据硬件情况自动生成配置文件。执行后 重新登录会话 即可生效(即使是 Wayland 用户也可以执行一次此命令)。

\n

\"X11

\n
\n

配置 Wayland 下的 Nvidia 显卡优先

在 Wayland 下优先启用 Nvidia 显卡的步骤如下:

\n
    \n
  1. 编辑 GRUB 配置文件:

    \n

    打开 /etc/default/grub 文件,在 GRUB_CMDLINE_LINUX_DEFAULT="" 中添加 nvidia_drm.modeset=1

    \n
    1
    GRUB_CMDLINE_LINUX_DEFAULT="nvidia_drm.modeset=1"
    \n
  2. \n
  3. 重新生成 grub 配置:

    \n
    1
    sudo grub-mkconfig -o /boot/grub/grub.cfg
    \n
  4. \n
  5. 配置 Plasma 环境文件:

    \n

    ~/.config/plasma-workspace/env/nvidia.sh 中写入以下内容:

    \n
    1
    2
    3
    #!/bin/bash 
    export __NV_PRIME_RENDER_OFFLOAD=1
    export __GLX_VENDOR_LIBRARY_NAME=nvidia
    \n
  6. \n
  7. 保存并重启电脑,即可生效。

    \n
  8. \n
\n

\"Wayland

\n
\n

I+N 混合显卡方案

如果不希望全局启用独显,可以选择让大部分程序默认使用核显,而少数高性能需求的程序使用独显。这种方法能有效节省功耗,同时将独显资源集中分配给需要的程序(如 Steam 游戏、Blender 等)。缺点是每个程序需要手动配置启动项。

\n

配置步骤

    \n
  1. 打开程序的 .desktop 启动文件:

    \n

    位置可能在 /usr/share/applications~/.local/share/applications 中。

    \n
  2. \n
  3. Exec= 后添加 prime-run 参数。例如:

    \n
    1
    Exec=prime-run <程序启动命令>
    \n\n

    \"混合显卡配置示意图\"

    \n
  4. \n
\n

Vim 快捷配置

如果使用 Vim,可以使用以下快捷键快速批量替换 Exec=Exec=prime-run

\n
1
v -> G -> :s/Exec=/Exec=prime-run /g Enter -> :wq Enter
\n\n
\n

让 Plasma 桌面也使用独显

如果希望 Plasma 桌面也通过独显运行,可以修改 Wayland 配置文件并删除第二行:

\n
1
2
#!/bin/bash 
export __GLX_VENDOR_LIBRARY_NAME=nvidia
\n\n

这样 Plasma 桌面会通过独显启动,其他程序则默认使用核显。

\n
\n

希望以上经验能为有此需求的用户提供参考帮助。

\n"},{"title":"Archlinux KDE体验优化总结","date":"2025-02-02T10:43:26.000Z","_content":"\n打算开一个坑记录这么久以来的Archlinux系统性能和操作体验优化经验\n\n本文章长期更新\n\n------\n\n## 软件优化\n\n## 快捷键设置\n\n## \n","source":"_posts/archlinux-optimization.md","raw":"---\ntitle: Archlinux KDE体验优化总结\ndate: 2025-02-02 18:43:26\ntags: [技术分享]\n---\n\n打算开一个坑记录这么久以来的Archlinux系统性能和操作体验优化经验\n\n本文章长期更新\n\n------\n\n## 软件优化\n\n## 快捷键设置\n\n## \n","slug":"archlinux-optimization","published":1,"updated":"2025-02-23T14:29:02.471Z","comments":1,"layout":"post","photos":[],"_id":"cm7jziodu000pwi2b49gyhjcz","content":"

打算开一个坑记录这么久以来的Archlinux系统性能和操作体验优化经验

\n

本文章长期更新

\n
\n

软件优化

快捷键设置

","excerpt":"","more":"

打算开一个坑记录这么久以来的Archlinux系统性能和操作体验优化经验

\n

本文章长期更新

\n
\n

软件优化

快捷键设置

"},{"title":"使用Clonezilla备份和克隆系统","date":"2025-02-23T13:40:03.000Z","_content":"![Clonezilla官网](/images/clonezilla.png)\n[Clonezilla](https://clonezilla.org/)是一款非常好用的系统迁移工具,本文将介绍其基本用法(不包含网络迁移及Clonezilla服务器等进阶内容)以及在克隆Btrfs磁盘时遇到的问题解法。\n\n---\n### **零.事前准备**:\n - 下载Clonezilla Live镜像(ISO),制作启动U盘(有手就行)。\n - 准备目标存储设备(如U盘,需要迁移的新硬盘等),确保有足够空间(建议大于源硬盘已用空间的1.2倍)。\n\n\n### **一.备份镜像到硬盘(Device-to-Image)**\n这个模式可以将硬盘完整备份为一个镜像文件(可保存到本地硬盘、外置硬盘或网络存储)方便多机部署。注意如果只是将一个硬盘的系统完全克隆到新盘可以跳过此部分。\n\n#### **步骤说明**:\n2. **启动Clonezilla**:\n - 插入U盘,重启电脑并从U盘启动。\n - 选择默认选项(语言,键盘布局,Beginner模式)进入Clonezilla的TUI界面。\n\n3. **选择备份模式**:\n ```plaintext\n Choose mode: 选择 \"device-image\"(设备到镜像)\n Mount storage media: 选择 \"local_dev\"(本地存储设备)\n ```\n - 按提示挂载目标存储设备(注意这里选择的是你要存储镜像的设备且文件系统一般不限,如外置硬盘),确认路径(如 `/dev/sdb1`)。\n\n4. **配置备份参数**:\n - **源硬盘**:选择需要备份的硬盘(如 `/dev/sda`)。\n - **镜像存储路径**:指定目标位置(如外置硬盘的挂载目录)。\n - **镜像名称**:自定义名称(如 `2025-img-rockylinux-2-21`)。\n - **压缩选项**:默认即可,支持并行压缩加速。\n - **镜像分割**:若目标存储设备为FAT32格式(单文件最大4GB),选择自动分割。\n\n5. **确认操作**:\n - 检查提示信息,输入 `y` 开始备份。\n - 完成后关机或重启。\n\n6. **镜像还原**:和备份非常相似,只是选项换成restore to disk,顺着指引操作即可。\n---\n\n### **二、直接克隆硬盘(Device-to-Device)**\n将源硬盘完整克隆到目标硬盘(适合硬盘升级或快速迁移),比如笔者最近白嫖了一个三星的2T硬盘直接把原来512G硬盘里的CachyOS无损迁移了进去。\n\n#### **步骤说明**:\n1. **准备工作**:\n - 连接目标硬盘(需容量≥源硬盘已用空间,还原镜像操作也是如此,注意Clonezilla支持小分区到大分区迁移不支持大分区到小分区,后者出门右转Rsync)\n - **警告**:目标硬盘数据将被覆盖,操作前如有需要务必备份重要数据!\n\n2. **启动Clonezilla**:\n - 同上,从U盘启动进入Clonezilla界面。\n\n3. **选择克隆模式**:\n ```plaintext\n Choose mode: 选择 \"device-device\"(设备到设备)\n ```\n\n4. **选择硬盘**:\n - **母碟硬盘**:选择原始硬盘(如 `/dev/sda`)。\n - **目标硬盘**:选择新硬盘(如 `/dev/sdb`)。\n\n5. **克隆选项**:\n 需要进入专家模式才能看到,一般直接新手模式默认即可。\n\n6. **执行克隆**:\n - 确认提示信息后输入 `y`,等待完成。\n - 克隆结束后关机,移除旧硬盘并测试新硬盘(主要是查看能不能启动进入系统,若能进入一般不会有问题,而且一般都能进入因为Clonezilla是高精确的块对块克隆)。\n\n---\n### **两种模式对比**:\n| **模式** | 特点 | \n|----------------|---------------------------|\n| 备份镜像 | 方便多机部署也可以用于留档|\n| 直接克隆 | 换硬盘快速迁移无需恢复过程|\n---\n\n### **Btrfs务必注意**:\n对Btrfs直接进行Clonezilla克隆大概率会碰到一个边界错误,这是由于Btrfs本身使用一段时间后碎片化存储导致的,你需要执行`sudo btrfs balance start --full-balance /`来进行整理,但是这也算是一个风险操作要确保完整执行不能在执行时意外中断导致文件系统出错,并且在后续克隆时不能使用新手模式要进入专家模式勾选-p1支持所有文件系统但是效率降低的选项来确保顺利克隆(未勾选此选项可能导致文件系统无法识别的错误),其他步骤参照前文即可。\n\n","source":"_posts/clonezilla.md","raw":"---\ntitle: 使用Clonezilla备份和克隆系统\ndate: 2025-02-23 21:40:03\ntags: 技术分享\n---\n![Clonezilla官网](/images/clonezilla.png)\n[Clonezilla](https://clonezilla.org/)是一款非常好用的系统迁移工具,本文将介绍其基本用法(不包含网络迁移及Clonezilla服务器等进阶内容)以及在克隆Btrfs磁盘时遇到的问题解法。\n\n---\n### **零.事前准备**:\n - 下载Clonezilla Live镜像(ISO),制作启动U盘(有手就行)。\n - 准备目标存储设备(如U盘,需要迁移的新硬盘等),确保有足够空间(建议大于源硬盘已用空间的1.2倍)。\n\n\n### **一.备份镜像到硬盘(Device-to-Image)**\n这个模式可以将硬盘完整备份为一个镜像文件(可保存到本地硬盘、外置硬盘或网络存储)方便多机部署。注意如果只是将一个硬盘的系统完全克隆到新盘可以跳过此部分。\n\n#### **步骤说明**:\n2. **启动Clonezilla**:\n - 插入U盘,重启电脑并从U盘启动。\n - 选择默认选项(语言,键盘布局,Beginner模式)进入Clonezilla的TUI界面。\n\n3. **选择备份模式**:\n ```plaintext\n Choose mode: 选择 \"device-image\"(设备到镜像)\n Mount storage media: 选择 \"local_dev\"(本地存储设备)\n ```\n - 按提示挂载目标存储设备(注意这里选择的是你要存储镜像的设备且文件系统一般不限,如外置硬盘),确认路径(如 `/dev/sdb1`)。\n\n4. **配置备份参数**:\n - **源硬盘**:选择需要备份的硬盘(如 `/dev/sda`)。\n - **镜像存储路径**:指定目标位置(如外置硬盘的挂载目录)。\n - **镜像名称**:自定义名称(如 `2025-img-rockylinux-2-21`)。\n - **压缩选项**:默认即可,支持并行压缩加速。\n - **镜像分割**:若目标存储设备为FAT32格式(单文件最大4GB),选择自动分割。\n\n5. **确认操作**:\n - 检查提示信息,输入 `y` 开始备份。\n - 完成后关机或重启。\n\n6. **镜像还原**:和备份非常相似,只是选项换成restore to disk,顺着指引操作即可。\n---\n\n### **二、直接克隆硬盘(Device-to-Device)**\n将源硬盘完整克隆到目标硬盘(适合硬盘升级或快速迁移),比如笔者最近白嫖了一个三星的2T硬盘直接把原来512G硬盘里的CachyOS无损迁移了进去。\n\n#### **步骤说明**:\n1. **准备工作**:\n - 连接目标硬盘(需容量≥源硬盘已用空间,还原镜像操作也是如此,注意Clonezilla支持小分区到大分区迁移不支持大分区到小分区,后者出门右转Rsync)\n - **警告**:目标硬盘数据将被覆盖,操作前如有需要务必备份重要数据!\n\n2. **启动Clonezilla**:\n - 同上,从U盘启动进入Clonezilla界面。\n\n3. **选择克隆模式**:\n ```plaintext\n Choose mode: 选择 \"device-device\"(设备到设备)\n ```\n\n4. **选择硬盘**:\n - **母碟硬盘**:选择原始硬盘(如 `/dev/sda`)。\n - **目标硬盘**:选择新硬盘(如 `/dev/sdb`)。\n\n5. **克隆选项**:\n 需要进入专家模式才能看到,一般直接新手模式默认即可。\n\n6. **执行克隆**:\n - 确认提示信息后输入 `y`,等待完成。\n - 克隆结束后关机,移除旧硬盘并测试新硬盘(主要是查看能不能启动进入系统,若能进入一般不会有问题,而且一般都能进入因为Clonezilla是高精确的块对块克隆)。\n\n---\n### **两种模式对比**:\n| **模式** | 特点 | \n|----------------|---------------------------|\n| 备份镜像 | 方便多机部署也可以用于留档|\n| 直接克隆 | 换硬盘快速迁移无需恢复过程|\n---\n\n### **Btrfs务必注意**:\n对Btrfs直接进行Clonezilla克隆大概率会碰到一个边界错误,这是由于Btrfs本身使用一段时间后碎片化存储导致的,你需要执行`sudo btrfs balance start --full-balance /`来进行整理,但是这也算是一个风险操作要确保完整执行不能在执行时意外中断导致文件系统出错,并且在后续克隆时不能使用新手模式要进入专家模式勾选-p1支持所有文件系统但是效率降低的选项来确保顺利克隆(未勾选此选项可能导致文件系统无法识别的错误),其他步骤参照前文即可。\n\n","slug":"clonezilla","published":1,"updated":"2025-02-23T14:12:10.654Z","comments":1,"layout":"post","photos":[],"_id":"cm7jziodu000swi2ba2br64lz","content":"

\"Clonezilla官网\"
Clonezilla是一款非常好用的系统迁移工具,本文将介绍其基本用法(不包含网络迁移及Clonezilla服务器等进阶内容)以及在克隆Btrfs磁盘时遇到的问题解法。

\n
\n

零.事前准备

    \n
  • 下载Clonezilla Live镜像(ISO),制作启动U盘(有手就行)。
  • \n
  • 准备目标存储设备(如U盘,需要迁移的新硬盘等),确保有足够空间(建议大于源硬盘已用空间的1.2倍)。
  • \n
\n

一.备份镜像到硬盘(Device-to-Image)

这个模式可以将硬盘完整备份为一个镜像文件(可保存到本地硬盘、外置硬盘或网络存储)方便多机部署。注意如果只是将一个硬盘的系统完全克隆到新盘可以跳过此部分。

\n

步骤说明

    \n
  1. 启动Clonezilla

    \n
      \n
    • 插入U盘,重启电脑并从U盘启动。
    • \n
    • 选择默认选项(语言,键盘布局,Beginner模式)进入Clonezilla的TUI界面。
    • \n
    \n
  2. \n
  3. 选择备份模式

    \n
    1
    2
    Choose mode:         选择 "device-image"(设备到镜像)
    Mount storage media: 选择 "local_dev"(本地存储设备)
    \n
      \n
    • 按提示挂载目标存储设备(注意这里选择的是你要存储镜像的设备且文件系统一般不限,如外置硬盘),确认路径(如 /dev/sdb1)。
    • \n
    \n
  4. \n
  5. 配置备份参数

    \n
      \n
    • 源硬盘:选择需要备份的硬盘(如 /dev/sda)。
    • \n
    • 镜像存储路径:指定目标位置(如外置硬盘的挂载目录)。
    • \n
    • 镜像名称:自定义名称(如 2025-img-rockylinux-2-21)。
    • \n
    • 压缩选项:默认即可,支持并行压缩加速。
    • \n
    • 镜像分割:若目标存储设备为FAT32格式(单文件最大4GB),选择自动分割。
    • \n
    \n
  6. \n
  7. 确认操作

    \n
      \n
    • 检查提示信息,输入 y 开始备份。
    • \n
    • 完成后关机或重启。
    • \n
    \n
  8. \n
  9. 镜像还原:和备份非常相似,只是选项换成restore to disk,顺着指引操作即可。

    \n
  10. \n
\n
\n

二、直接克隆硬盘(Device-to-Device)

将源硬盘完整克隆到目标硬盘(适合硬盘升级或快速迁移),比如笔者最近白嫖了一个三星的2T硬盘直接把原来512G硬盘里的CachyOS无损迁移了进去。

\n

步骤说明

    \n
  1. 准备工作

    \n
      \n
    • 连接目标硬盘(需容量≥源硬盘已用空间,还原镜像操作也是如此,注意Clonezilla支持小分区到大分区迁移不支持大分区到小分区,后者出门右转Rsync)
    • \n
    • 警告:目标硬盘数据将被覆盖,操作前如有需要务必备份重要数据!
    • \n
    \n
  2. \n
  3. 启动Clonezilla

    \n
      \n
    • 同上,从U盘启动进入Clonezilla界面。
    • \n
    \n
  4. \n
  5. 选择克隆模式

    \n
    1
    Choose mode:         选择 "device-device"(设备到设备)
    \n
  6. \n
  7. 选择硬盘

    \n
      \n
    • 母碟硬盘:选择原始硬盘(如 /dev/sda)。
    • \n
    • 目标硬盘:选择新硬盘(如 /dev/sdb)。
    • \n
    \n
  8. \n
  9. 克隆选项
    需要进入专家模式才能看到,一般直接新手模式默认即可。

    \n
  10. \n
  11. 执行克隆

    \n
      \n
    • 确认提示信息后输入 y,等待完成。
    • \n
    • 克隆结束后关机,移除旧硬盘并测试新硬盘(主要是查看能不能启动进入系统,若能进入一般不会有问题,而且一般都能进入因为Clonezilla是高精确的块对块克隆)。
    • \n
    \n
  12. \n
\n
\n

两种模式对比

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
模式特点
备份镜像方便多机部署也可以用于留档
直接克隆换硬盘快速迁移无需恢复过程
\n
\n

Btrfs务必注意

对Btrfs直接进行Clonezilla克隆大概率会碰到一个边界错误,这是由于Btrfs本身使用一段时间后碎片化存储导致的,你需要执行sudo btrfs balance start --full-balance /来进行整理,但是这也算是一个风险操作要确保完整执行不能在执行时意外中断导致文件系统出错,并且在后续克隆时不能使用新手模式要进入专家模式勾选-p1支持所有文件系统但是效率降低的选项来确保顺利克隆(未勾选此选项可能导致文件系统无法识别的错误),其他步骤参照前文即可。

\n","excerpt":"","more":"

\"Clonezilla官网\"
Clonezilla是一款非常好用的系统迁移工具,本文将介绍其基本用法(不包含网络迁移及Clonezilla服务器等进阶内容)以及在克隆Btrfs磁盘时遇到的问题解法。

\n
\n

零.事前准备

    \n
  • 下载Clonezilla Live镜像(ISO),制作启动U盘(有手就行)。
  • \n
  • 准备目标存储设备(如U盘,需要迁移的新硬盘等),确保有足够空间(建议大于源硬盘已用空间的1.2倍)。
  • \n
\n

一.备份镜像到硬盘(Device-to-Image)

这个模式可以将硬盘完整备份为一个镜像文件(可保存到本地硬盘、外置硬盘或网络存储)方便多机部署。注意如果只是将一个硬盘的系统完全克隆到新盘可以跳过此部分。

\n

步骤说明

    \n
  1. 启动Clonezilla

    \n
      \n
    • 插入U盘,重启电脑并从U盘启动。
    • \n
    • 选择默认选项(语言,键盘布局,Beginner模式)进入Clonezilla的TUI界面。
    • \n
    \n
  2. \n
  3. 选择备份模式

    \n
    1
    2
    Choose mode:         选择 "device-image"(设备到镜像)
    Mount storage media: 选择 "local_dev"(本地存储设备)
    \n
      \n
    • 按提示挂载目标存储设备(注意这里选择的是你要存储镜像的设备且文件系统一般不限,如外置硬盘),确认路径(如 /dev/sdb1)。
    • \n
    \n
  4. \n
  5. 配置备份参数

    \n
      \n
    • 源硬盘:选择需要备份的硬盘(如 /dev/sda)。
    • \n
    • 镜像存储路径:指定目标位置(如外置硬盘的挂载目录)。
    • \n
    • 镜像名称:自定义名称(如 2025-img-rockylinux-2-21)。
    • \n
    • 压缩选项:默认即可,支持并行压缩加速。
    • \n
    • 镜像分割:若目标存储设备为FAT32格式(单文件最大4GB),选择自动分割。
    • \n
    \n
  6. \n
  7. 确认操作

    \n
      \n
    • 检查提示信息,输入 y 开始备份。
    • \n
    • 完成后关机或重启。
    • \n
    \n
  8. \n
  9. 镜像还原:和备份非常相似,只是选项换成restore to disk,顺着指引操作即可。

    \n
  10. \n
\n
\n

二、直接克隆硬盘(Device-to-Device)

将源硬盘完整克隆到目标硬盘(适合硬盘升级或快速迁移),比如笔者最近白嫖了一个三星的2T硬盘直接把原来512G硬盘里的CachyOS无损迁移了进去。

\n

步骤说明

    \n
  1. 准备工作

    \n
      \n
    • 连接目标硬盘(需容量≥源硬盘已用空间,还原镜像操作也是如此,注意Clonezilla支持小分区到大分区迁移不支持大分区到小分区,后者出门右转Rsync)
    • \n
    • 警告:目标硬盘数据将被覆盖,操作前如有需要务必备份重要数据!
    • \n
    \n
  2. \n
  3. 启动Clonezilla

    \n
      \n
    • 同上,从U盘启动进入Clonezilla界面。
    • \n
    \n
  4. \n
  5. 选择克隆模式

    \n
    1
    Choose mode:         选择 "device-device"(设备到设备)
    \n
  6. \n
  7. 选择硬盘

    \n
      \n
    • 母碟硬盘:选择原始硬盘(如 /dev/sda)。
    • \n
    • 目标硬盘:选择新硬盘(如 /dev/sdb)。
    • \n
    \n
  8. \n
  9. 克隆选项
    需要进入专家模式才能看到,一般直接新手模式默认即可。

    \n
  10. \n
  11. 执行克隆

    \n
      \n
    • 确认提示信息后输入 y,等待完成。
    • \n
    • 克隆结束后关机,移除旧硬盘并测试新硬盘(主要是查看能不能启动进入系统,若能进入一般不会有问题,而且一般都能进入因为Clonezilla是高精确的块对块克隆)。
    • \n
    \n
  12. \n
\n
\n

两种模式对比

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
模式特点
备份镜像方便多机部署也可以用于留档
直接克隆换硬盘快速迁移无需恢复过程
\n
\n

Btrfs务必注意

对Btrfs直接进行Clonezilla克隆大概率会碰到一个边界错误,这是由于Btrfs本身使用一段时间后碎片化存储导致的,你需要执行sudo btrfs balance start --full-balance /来进行整理,但是这也算是一个风险操作要确保完整执行不能在执行时意外中断导致文件系统出错,并且在后续克隆时不能使用新手模式要进入专家模式勾选-p1支持所有文件系统但是效率降低的选项来确保顺利克隆(未勾选此选项可能导致文件系统无法识别的错误),其他步骤参照前文即可。

\n"},{"title":"时隔一年再次拿起数位板能画出什么东西","date":"2024-11-04T15:47:54.000Z","_content":"\n如题,前段时间推完LOOPERS的时候有感而发对着画了张海报\n\n时隔一年,终于又拿起了数位板\n\n![LOOPERS](/images/20241027_222225.png \"LOOPERS\")\n","source":"_posts/loopers.md","raw":"---\ntitle: 时隔一年再次拿起数位板能画出什么东西\ndate: 2024-11-04 23:47:54\ntags: [板绘, 生活]\n---\n\n如题,前段时间推完LOOPERS的时候有感而发对着画了张海报\n\n时隔一年,终于又拿起了数位板\n\n![LOOPERS](/images/20241027_222225.png \"LOOPERS\")\n","slug":"loopers","published":1,"updated":"2025-02-23T14:27:46.748Z","comments":1,"layout":"post","photos":[],"_id":"cm7jziodv000vwi2baw0jbh0g","content":"

如题,前段时间推完LOOPERS的时候有感而发对着画了张海报

\n

时隔一年,终于又拿起了数位板

\n

\"LOOPERS\"

\n","excerpt":"","more":"

如题,前段时间推完LOOPERS的时候有感而发对着画了张海报

\n

时隔一年,终于又拿起了数位板

\n

\"LOOPERS\"

\n"},{"title":"愿指引明路的苍蓝星永远为你闪耀","date":"2024-11-11T13:46:49.000Z","_content":"使用东方Project软音源THFont简单重置的MHWI主题曲\n\n雄关漫道真如铁,而今迈步从头越\n\n{% raw %}\n\n{% endraw %}\n\n","source":"_posts/mhwi.md","raw":"---\ntitle: 愿指引明路的苍蓝星永远为你闪耀\ndate: 2024-11-11 21:46:49\ntags: 音乐\ncategories: Rearrangement\n---\n使用东方Project软音源THFont简单重置的MHWI主题曲\n\n雄关漫道真如铁,而今迈步从头越\n\n{% raw %}\n\n{% endraw %}\n\n","slug":"mhwi","published":1,"updated":"2024-11-11T14:00:19.124Z","comments":1,"layout":"post","photos":[],"_id":"cm7jziodv000xwi2b6ebgcwqs","content":"

使用东方Project软音源THFont简单重置的MHWI主题曲

\n

雄关漫道真如铁,而今迈步从头越

\n\n\n\n\n","excerpt":"","more":"

使用东方Project软音源THFont简单重置的MHWI主题曲

\n

雄关漫道真如铁,而今迈步从头越

\n\n\n\n\n"},{"title":"高地特供版CSAPP Bomb Lab全流程攻略","date":"2025-02-24T07:09:11.000Z","_content":"\n这篇文章记录高地CSAPP课程Bomblab实验操作流程,仅供参考交流(答案是随机生成的和学号相关)。\n\n笔者实验环境为Archlinux/CachyOS,使用lldb作为调试器(和gdb操作差不多),其余用到的工具主要为objdump,strings,neovim/helix和zellij,全程开源环境不使用IDA。\n\n## **Phase_1**\n\n### **静态分析**\n\n#### **`strings`扫描**\n```bash\nstrings bomb_linux\n```\n先用strings寻找可能与`phase_1`相关的字符串或函数名,运气好说不定能直接找到密码毕竟是第一题。\n![strings](/images/phase1_strings.png)\n - 结果没有明文密码无法直接秒掉第一问,可惜。\n - 但是找到`GenerateRandomString`函数可能与密码生成相关。\n\n#### **用`objdump`反汇编**\n```bash\nobjdump -d bomb_linux > bomb.asm\n```\n搜索`GenerateRandomString`和`phase_1`函数的汇编代码。\n ```assembly\n 401b53 :\n 401b53: endbr64\n 401b57: push %rbp\n 401b58: mov %rsp,%rbp\n 401b5b: sub $0x20,%rsp\n 401b5f: mov %rdi,-0x18(%rbp)\n 401b63: lea -0xb(%rbp),%rax\n 401b67: mov %rax,%rdi\n 401b6a: callq 401ac1 # 调用密码生成函数\n 401b6f: lea -0xb(%rbp),%rdx # 生成的字符串地址%rbp-0xb存入%rdx,即密码存储位置\n 401b73: mov -0x18(%rbp),%rax\n 401b77: mov %rdx,%rsi\n 401b7a: mov %rax,%rdi\n 401b7d: callq 401c0c # 调用字符串比较函数\n 401b82: test %eax,%eax\n 401b84: je 401b8d \n 401b86: callq 401d67 # 比较失败则引爆炸弹\n ```\n - `phase_1`调用`GenerateRandomString`生成一个字符串。\n - 用户输入的字符串需要与此生成的字符串完全匹配。\n\n---\n\n### **动态调试**\n![phase_1](/images/phase1.png)\n下面是phase_1求解的完整流程:\n```lldb\nlldb bomb_linux <你的学号后六位>\n(lldb) b phase_1 # 在phase_1入口断点\n(lldb) run # 从入口开始执行\n请输入第1级的密码:114514 # 随便输入触发断点\n(lldb) b 0x401b6f # 在GenerateRandomString返回后断点\n(lldb) continue # 继续执行\n(lldb) x/s $rbp - 0xb # 计算字符串地址(-0xb偏移量)\n0x7fffffffdaf5: \"mJHurpQZtY\" # 轻松拿下,这里是根据学号伪随机生成的哦\n```\n将得到的密码保存入bomb_<学号后六位>.txt即可,避免后续重复输入。\n\n---\n\n## **Phase_2**\n\n### **静态分析**\n\n这道题目还是比较一目了然的,观察`phase_2`代码不难发现其实构建了一张跳转表:\n```assembly\n0000000000401b8e :\n 401b8e:\tf3 0f 1e fa \tendbr64\n 401b92:\t55 \tpush %rbp\n 401b93:\t48 89 e5 \tmov %rsp,%rbp\n 401b96:\t48 83 ec 10 \tsub $0x10,%rsp\n 401b9a:\t48 89 7d f8 \tmov %rdi,-0x8(%rbp)\n 401b9e:\tbf 10 00 00 00 \tmov $0x10,%edi\n 401ba3:\te8 05 fb ff ff \tcall 4016ad \n 401ba8:\t48 8b 05 71 6c 00 00 \tmov 0x6c71(%rip),%rax # 408820 \n 401baf:\t48 83 f8 0f \tcmp $0xf,%rax\n 401bb3:\t0f 87 16 01 00 00 \tja 401ccf \n 401bb9:\t48 8d 14 85 00 00 00 \tlea 0x0(,%rax,4),%rdx\n 401bc0:\t00 \n 401bc1:\t48 8d 05 4c 4a 00 00 \tlea 0x4a4c(%rip),%rax # 406614 <_IO_stdin_used+0x614>\n 401bc8:\t8b 04 02 \tmov (%rdx,%rax,1),%eax\n 401bcb:\t48 98 \tcltq\n 401bcd:\t48 8d 15 40 4a 00 00 \tlea 0x4a40(%rip),%rdx # 406614 <_IO_stdin_used+0x614>\n 401bd4:\t48 01 d0 \tadd %rdx,%rax\n 401bd7:\t3e ff e0 \tnotrack jmp *%rax\n 401bda:\t48 8b 45 f8 \tmov -0x8(%rbp),%rax\n 401bde:\t48 89 c7 \tmov %rax,%rdi\n 401be1:\te8 f2 00 00 00 \tcall 401cd8 \n 401be6:\te9 ea 00 00 00 \tjmp 401cd5 \n 401beb:\t48 8b 45 f8 \tmov -0x8(%rbp),%rax\n 401bef:\t48 89 c7 \tmov %rax,%rdi\n 401bf2:\te8 8b 01 00 00 \tcall 401d82 \n 401bf7:\te9 d9 00 00 00 \tjmp 401cd5 \n 401bfc:\t48 8b 45 f8 \tmov -0x8(%rbp),%rax\n 401c00:\t48 89 c7 \tmov %rax,%rdi\n ...\n```\n这里面需要注意的关键点是rand_div,它会决定你的跳转方向,而你的学号又决定了它的取值。然后是`GenerateRandomNumber`这个函数的原理需要了解一下,而这个函数将在跳转前后分别调用一次,第一次决定你的跳转方向,第二次则决定了你的密码线索。\n\n---\n\n### **动态调试**\n理解原理就没什么难度了,自己找几个断点打好然后关注一下`rand_div`的值就好,观察自己的学号向哪个函数跳转并理解相应函数计算即可,比如我这里向`phase_2_14`跳转:\n![phase_2_14](/images/phase_2_14.png)\n\n而除了`phase_2_14`还有其他函数也是非常好理解的,第二题依旧可以轻松拿下。\n\n---\n## **Phase_3**\n\n### **静态分析**\n\n和Phase_2一样开局先跳转尽可能防止同学们答案雷同互相帮助(bushi\n\n本体其实没有什么好说的,这里我跳转的方向是`Phase_3_5`简要解释一下可供参考:\n\n```assembly\n0000000000403001 :\n 403001:\tf3 0f 1e fa \tendbr64\n 403005:\t55 \tpush %rbp\n 403006:\t48 89 e5 \tmov %rsp,%rbp\n 403009:\t48 83 ec 20 \tsub $0x20,%rsp\n 40300d:\t48 89 7d e8 \tmov %rdi,-0x18(%rbp)\n 403011:\tc7 45 fc 00 00 00 00 \tmovl $0x0,-0x4(%rbp)\n 403018:\tc7 45 f8 00 00 00 00 \tmovl $0x0,-0x8(%rbp)\n 40301f:\t48 8d 4d f0 \tlea -0x10(%rbp),%rcx\n 403023:\t48 8d 55 f4 \tlea -0xc(%rbp),%rdx\n 403027:\t48 8b 45 e8 \tmov -0x18(%rbp),%rax\n 40302b:\t48 8d 35 5a 36 00 00 \tlea 0x365a(%rip),%rsi # 40668c <_IO_stdin_used+0x68c>\n 403032:\t48 89 c7 \tmov %rax,%rdi\n 403035:\tb8 00 00 00 00 \tmov $0x0,%eax\n 40303a:\te8 51 e1 ff ff \tcall 401190 <__isoc99_sscanf@plt>\n 40303f:\t89 45 f8 \tmov %eax,-0x8(%rbp)\n 403042:\t83 7d f8 01 \tcmpl $0x1,-0x8(%rbp)\n 403046:\t7f 05 \tjg 40304d \n 403048:\te8 a9 2b 00 00 \tcall 405bf6 \n 40304d:\tbf 08 00 00 00 \tmov $0x8,%edi\n 403052:\te8 56 e6 ff ff \tcall 4016ad \n 403057:\t8b 45 f4 \tmov -0xc(%rbp),%eax\n 40305a:\t48 63 d0 \tmovslq %eax,%rdx\n 40305d:\t48 8b 05 bc 57 00 00 \tmov 0x57bc(%rip),%rax # 408820 \n 403064:\t48 39 c2 \tcmp %rax,%rdx\n 403067:\t74 05 \tje 40306e \n 403069:\te8 88 2b 00 00 \tcall 405bf6 \n 40306e:\tbf c8 00 00 00 \tmov $0xc8,%edi\n 403073:\te8 35 e6 ff ff \tcall 4016ad \n 403078:\t8b 45 f4 \tmov -0xc(%rbp),%eax\n 40307b:\t83 f8 07 \tcmp $0x7,%eax\n 40307e:\t0f 87 eb 00 00 00 \tja 40316f \n 403084:\t89 c0 \tmov %eax,%eax\n 403086:\t48 8d 14 85 00 00 00 \tlea 0x0(,%rax,4),%rdx\n 40308d:\t00 \n 40308e:\t48 8d 05 9f 36 00 00 \tlea 0x369f(%rip),%rax # 406734 <_IO_stdin_used+0x734>\n 403095:\t8b 04 02 \tmov (%rdx,%rax,1),%eax\n 403098:\t48 98 \tcltq\n 40309a:\t48 8d 15 93 36 00 00 \tlea 0x3693(%rip),%rdx # 406734 <_IO_stdin_used+0x734>\n 4030a1:\t48 01 d0 \tadd %rdx,%rax\n 4030a4:\t3e ff e0 \tnotrack jmp *%rax\n 4030a7:\t48 8b 05 72 57 00 00 \tmov 0x5772(%rip),%rax # 408820 \n 4030ae:\t89 c2 \tmov %eax,%edx\n 4030b0:\t8b 45 fc \tmov -0x4(%rbp),%eax\n 4030b3:\t01 d0 \tadd %edx,%eax\n 4030b5:\t89 45 fc \tmov %eax,-0x4(%rbp)\n 4030b8:\tbf c8 00 00 00 \tmov $0xc8,%edi\n 4030bd:\te8 eb e5 ff ff \tcall 4016ad \n ...\n 403174:\t8b 45 f0 \tmov -0x10(%rbp),%eax\n 403177:\t39 45 fc \tcmp %eax,-0x4(%rbp) # 注意这里\n 40317a:\t74 05 \tje 403181 \n 40317c:\te8 75 2a 00 00 \tcall 405bf6 \n 403181:\t90 \tnop\n 403182:\tc9 \tleave\n 403183:\tc3 \tret\n\n```\n看起来一大堆很吓人对不对?实际上确实很吓人。\n\n但是发现其中玄机后其实简单的没边,最终答案就藏在`0x403177`里面,前提是确保这一步前炸弹不爆炸(意识到要爆炸了直接`run`一下重开qwq)。\n\n---\n\n### **动态调试**\n\n阅读`Phase_3_5`发现这一关其实需要两个输入,并且第一个输入必须是`rand_div`,这里建议通过`si`单步执行监控好`rand_div`值变化,确定正确结果后使用`run`重开正确输入第一个密码后才能进行下一步求解:\n```lldb\n(lldb) si\nProcess 13376 stopped\n* thread #1, name = 'bomb_linux', stop reason = instruction step into\n frame #0: 0x000000000040317a bomb_linux`phase_3_5 + 377\nbomb_linux`phase_3_5:\n-> 0x40317a <+377>: je 0x403181 ; <+384>\n 0x40317c <+379>: callq 0x405bf6 ; explode_bomb\n 0x403181 <+384>: nop\n 0x403182 <+385>: leave\n(lldb) x/wx $rbp-0x4\n0x7fffffffdb0c: 0xffffffd7\n```\n例如这里我可以打印出第二个值结合第一个值得到第三关正确结果。\n\n---\n\n## **Phase_4**\n\n### **静态分析**\n\n本题依旧开局跳转,笔者的跳转方向是`phase_4_01`,如何跳转不再强调关注`rand_div`的值即可,下面请D指导解读一下`phase_4_01`的内容:\n```assembly\n0000000000404895 :\n ; 函数入口,初始化栈帧\n 404895:\tf3 0f 1e fa \tendbr64 \n 404899:\t55 \tpush %rbp\n 40489a:\t48 89 e5 \tmov %rsp,%rbp\n 40489d:\t48 83 ec 70 \tsub $0x70,%rsp ; 分配栈空间\n\n ; 初始化斐波那契数组(F(10)~F(24)的十六进制值)\n 4048a1:\t48 89 7d 98 \tmov %rdi,-0x68(%rbp) ; 保存输入字符串指针\n 4048a5:\tc7 45 b0 37 00 00 00 \tmovl $0x37,-0x50(%rbp) ; F(10)=55\n 4048ac:\tc7 45 b4 59 00 00 00 \tmovl $0x59,-0x4c(%rbp) ; F(11)=89\n 4048b3:\tc7 45 b8 90 00 00 00 \tmovl $0x90,-0x48(%rbp) ; F(12)=144\n 4048ba:\tc7 45 bc e9 00 00 00 \tmovl $0xe9,-0x44(%rbp) ; F(13)=233\n 4048c1:\tc7 45 c0 79 01 00 00 \tmovl $0x179,-0x40(%rbp) ; F(14)=377\n 4048c8:\tc7 45 c4 62 02 00 00 \tmovl $0x262,-0x3c(%rbp) ; F(15)=610\n 4048cf:\tc7 45 c8 db 03 00 00 \tmovl $0x3db,-0x38(%rbp) ; F(16)=987\n 4048d6:\tc7 45 cc 3d 06 00 00 \tmovl $0x63d,-0x34(%rbp) ; F(17)=1597\n 4048dd:\tc7 45 d0 18 0a 00 00 \tmovl $0xa18,-0x30(%rbp) ; F(18)=2584\n 4048e4:\tc7 45 d4 55 10 00 00 \tmovl $0x1055,-0x2c(%rbp) ; F(19)=4181\n 4048eb:\tc7 45 d8 6d 1a 00 00 \tmovl $0x1a6d,-0x28(%rbp) ; F(20)=6765\n 4048f2:\tc7 45 dc c2 2a 00 00 \tmovl $0x2ac2,-0x24(%rbp) ; F(21)=10946\n 4048f9:\tc7 45 e0 2f 45 00 00 \tmovl $0x452f,-0x20(%rbp) ; F(22)=17711\n 404900:\tc7 45 e4 f1 6f 00 00 \tmovl $0x6ff1,-0x1c(%rbp) ; F(23)=28657\n 404907:\tc7 45 e8 20 b5 00 00 \tmovl $0xb520,-0x18(%rbp) ; F(24)=46368\n\n ; 读取输入到局部变量(格式为\"%d\")\n 40490e:\t48 8d 55 ac \tlea -0x54(%rbp),%rdx ; 输入存储地址\n 404912:\t48 8b 45 98 \tmov -0x68(%rbp),%rax ; 输入字符串\n 404916:\t48 8d 0d 93 1f 00 00 \tlea 0x1f93(%rip),%rcx ; 格式字符串\"%d\"\n 40491d:\t48 89 ce \tmov %rcx,%rsi\n 404920:\t48 89 c7 \tmov %rax,%rdi\n 404923:\tb8 00 00 00 00 \tmov $0x0,%eax\n 404928:\te8 63 c8 ff ff \tcall 401190 <__isoc99_sscanf@plt>\n\n ; 验证输入有效性(必须为1个正数)\n 40492d:\t89 45 fc \tmov %eax,-0x4(%rbp) ; sscanf返回值\n 404930:\t83 7d fc 01 \tcmpl $0x1,-0x4(%rbp) ; 检查是否读取1个参数\n 404934:\t75 07 \tjne 40493d ; 失败则爆炸\n 404936:\t8b 45 ac \tmov -0x54(%rbp),%eax ; 获取输入值N\n 404939:\t85 c0 \ttest %eax,%eax ; 检查N > 0\n 40493b:\t7f 05 \tjg 404942 \n 40493d:\te8 b4 12 00 00 \tcall 405bf6 \n\n ; 检查输入值上限(必须 > 1999)\n 404942:\t8b 45 ac \tmov -0x54(%rbp),%eax \n 404945:\t3d cf 07 00 00 \tcmp $0x7cf,%eax ; 1999的十六进制\n 40494a:\t7f 05 \tjg 404951 ; N > 1999?\n 40494c:\te8 a5 12 00 00 \tcall 405bf6 \n\n ; 计算 N/2000(通过定点数乘法优化)\n 404951:\t8b 45 ac \tmov -0x54(%rbp),%eax ; 输入值N\n 404954:\t48 63 d0 \tmovslq %eax,%rdx ; 符号扩展\n 404957:\t48 69 d2 d3 4d 62 10 \timul $0x10624dd3,%rdx,%rdx ; 乘以274877907(≈2^32/2000)\n 40495e:\t48 c1 ea 20 \tshr $0x20,%rdx ; 取高32位\n 404962:\tc1 fa 07 \tsar $0x7,%edx ; 算术右移7位 → N/2000\n 404965:\tc1 f8 1f \tsar $0x1f,%eax ; 符号位扩展\n 404968:\t89 c1 \tmov %eax,%ecx \n 40496a:\t89 d0 \tmov %edx,%eax \n 40496c:\t29 c8 \tsub %ecx,%eax ; 处理负数情况\n 40496e:\t89 45 ac \tmov %eax,-0x54(%rbp) ; 保存k = N/2000\n\n ; 调用递归函数func4_0(k), 这个函数用于计算斐波那契数列\n 404971:\t8b 45 ac \tmov -0x54(%rbp),%eax \n 404974:\t89 c7 \tmov %eax,%edi ; 参数k\n 404976:\te8 ce fd ff ff \tcall 404749 ; 返回值eax=F(k+1)\n 40497b:\t89 45 f8 \tmov %eax,-0x8(%rbp) ; 保存结果\n\n ; 生成随机索引并验证结果\n 40497e:\tbf 0f 00 00 00 \tmov $0xf,%edi ; 参数15\n 404983:\te8 25 cd ff ff \tcall 4016ad ; 生成0~14随机数\n 404988:\t48 8b 05 91 3e 00 00 \tmov 0x3e91(%rip),%rax # 408820 ; 获取随机索引\n 40498f:\t8b 44 85 b0 \tmov -0x50(%rbp,%rax,4),%eax ; 取数组[rand_div]的值\n 404993:\t39 45 f8 \tcmp %eax,-0x8(%rbp) ; 比较func4_0(k) == 数组值?\n 404996:\t74 05 \tje 40499d \n 404998:\te8 59 12 00 00 \tcall 405bf6 \n```\n所以相对还是很明了的,依旧是关注`rand_div`。\n\n### **动态调试**\n先找出`rand_div`在最后判断前的取值,比如我下面的0xa:\n\n```lldb\n(lldb) si\nProcess 27027 stopped\n* thread #1, name = 'bomb_linux', stop reason = instruction step into\n frame #0: 0x0000000000401719 bomb_linux`GenerateRandomNumber + 108\nbomb_linux`GenerateRandomNumber:\n-> 0x401719 <+108>: movq %rax, 0x7100(%rip) ; rand_div\n 0x401720 <+115>: jmp 0x401723 ; <+118>\n 0x401722 <+117>: nop\n 0x401723 <+118>: popq %rbp\n(lldb) si\nProcess 27027 stopped\n* thread #1, name = 'bomb_linux', stop reason = instruction step into\n frame #0: 0x0000000000401720 bomb_linux`GenerateRandomNumber + 115\nbomb_linux`GenerateRandomNumber:\n-> 0x401720 <+115>: jmp 0x401723 ; <+118>\n 0x401722 <+117>: nop\n 0x401723 <+118>: popq %rbp\n 0x401724 <+119>: retq\n(lldb) x/gx &rand_div\n0x00408820: 0x000000000000000a\n```\n\n而当 `rand_div = 0xa`(即十进制 **10**)时,输入值 `N` 的计算步骤如下:\n\n- 数组索引 **10** 的值是 **斐波那契数列第 20 项**(`F(20) = 6765`)。\n\n- `func4_0(k)` 实际计算的是 **标准斐波那契数列的第 `k+1` 项**(例如,`func4_0(0) = 1 = F(2)`) 需要满足:\n ```c\n func4_0(k) = F(k+1) = F(20)\n ```\n 解得:\n k + 1 = 20 → k = 19\n- `k = N / 2000` → `N = 2000 * k = 2000 * 19 = 38000`.\n从而得解。\n![phase_4](/images/phase_4.png)\n\n---\n\n## **Phase_Impossible**\n\nImpossible?\n\n从这道题开始偷懒了,掏出ghidra直接看c代码了解一下大概流程再去objdump看汇编:\n```c\nvoid phase_impossible(char *param_1)\n\n{\n int iVar1;\n size_t sVar2;\n undefined local_118 [256];\n long local_18;\n long local_10;\n \n local_10 = GetTickCount();\n sVar2 = strlen(param_1);\n if ((sVar2 < 10) || (sVar2 = strlen(param_1), 0x300 < sVar2)) {\n explode_bomb();\n }\n memset(local_118,0,0x100);\n tohex(local_118,param_1);\n GenerateRandomNumber(0x400);\n iVar1 = check_buf_valid(local_118,rand_div & 0xffffffff);\n if (iVar1 == 0) {\n puts(&DAT_00406518);\n explode_bomb();\n }\n GenerateRandomNumber(3);\n if (rand_div != 2) {\n if (2 < rand_div) goto LAB_00401891;\n if (rand_div == 0) {\n goto_buf_0(local_118);\n }\n else if (rand_div != 1) goto LAB_00401891;\n goto_buf_1(local_118);\n }\n goto_buf_2(local_118);\nLAB_00401891:\n explode_bomb();\n GenerateRandomNumber(0x400);\n if ((long)(int)result != rand_div) {\n printf(&DAT_00406560,rand_div,(ulong)result);\n explode_bomb();\n }\n local_18 = GetTickCount();\n if (1000 < (ulong)(local_18 - local_10)) {\n puts(&DAT_004065a8);\n explode_bomb();\n }\n return;\n}\n```\n最终任务还是很明确的,需要写一段机器码修改`result`的数值,但是注意要能通过`check_buf_valid`检测,并且最后指令必须是跳转到`0x401896`不然就会触发`phase_impossible`中`0x401891`处的`explode_bomb`函数,唯一的难点是跟踪`rand_div`的数值变化,建议使用`register write`来修改`check_buf_valid`的返回值使其强制通过然后监控`rand_div`每一次的数值变化(`x/gx &rand_div`),记录好`rand_div`的结果后开始指令设计,需要满足:\n\n - 指令的异或和为`rand_div`第一次的数值末尾八位以通过检查;\n - 修改`result`使其数值等于`rand_div`第三次数值;\n - 跳转到`0x401896`避免炸弹;\n\n 如果前几问都完成了到这里应该是没有问题的。\n\n---\n\n## **Phase_Secret**\n\n隐藏彩蛋,并非隐藏。汇编里写的非常清楚:\n```assembly\n0000000000401a8b :\n 401a8b:\tf3 0f 1e fa \tendbr64\n 401a8f:\t55 \tpush %rbp\n 401a90:\t48 89 e5 \tmov %rsp,%rbp\n 401a93:\t48 83 ec 10 \tsub $0x10,%rsp\n 401a97:\t48 89 7d f8 \tmov %rdi,-0x8(%rbp)\n 401a9b:\t48 8d 05 26 4b 00 00 \tlea 0x4b26(%rip),%rax # 4065c8 <_IO_stdin_used+0x5c8>\n 401aa2:\t48 89 c7 \tmov %rax,%rdi\n 401aa5:\te8 76 f6 ff ff \tcall 401120 \n 401aaa:\t90 \tnop\n 401aab:\tc9 \tleave\n 401aac:\tc3 \tret\n```\n注意到这段指令在原程序中完全没有执行说明是需要用户自己跳转的,也非常简单只需要在`phase_5`中设计指令时加一个要求跳转到`0x401a8b`即可。\n\n完结\n![Case Closed](/images/caseclosed.png)\n","source":"_posts/nudtbomblab.md","raw":"---\ntitle: 高地特供版CSAPP Bomb Lab全流程攻略\ndate: 2025-02-24 15:09:11\ntags: [技术, 学习, 生活]\n---\n\n这篇文章记录高地CSAPP课程Bomblab实验操作流程,仅供参考交流(答案是随机生成的和学号相关)。\n\n笔者实验环境为Archlinux/CachyOS,使用lldb作为调试器(和gdb操作差不多),其余用到的工具主要为objdump,strings,neovim/helix和zellij,全程开源环境不使用IDA。\n\n## **Phase_1**\n\n### **静态分析**\n\n#### **`strings`扫描**\n```bash\nstrings bomb_linux\n```\n先用strings寻找可能与`phase_1`相关的字符串或函数名,运气好说不定能直接找到密码毕竟是第一题。\n![strings](/images/phase1_strings.png)\n - 结果没有明文密码无法直接秒掉第一问,可惜。\n - 但是找到`GenerateRandomString`函数可能与密码生成相关。\n\n#### **用`objdump`反汇编**\n```bash\nobjdump -d bomb_linux > bomb.asm\n```\n搜索`GenerateRandomString`和`phase_1`函数的汇编代码。\n ```assembly\n 401b53 :\n 401b53: endbr64\n 401b57: push %rbp\n 401b58: mov %rsp,%rbp\n 401b5b: sub $0x20,%rsp\n 401b5f: mov %rdi,-0x18(%rbp)\n 401b63: lea -0xb(%rbp),%rax\n 401b67: mov %rax,%rdi\n 401b6a: callq 401ac1 # 调用密码生成函数\n 401b6f: lea -0xb(%rbp),%rdx # 生成的字符串地址%rbp-0xb存入%rdx,即密码存储位置\n 401b73: mov -0x18(%rbp),%rax\n 401b77: mov %rdx,%rsi\n 401b7a: mov %rax,%rdi\n 401b7d: callq 401c0c # 调用字符串比较函数\n 401b82: test %eax,%eax\n 401b84: je 401b8d \n 401b86: callq 401d67 # 比较失败则引爆炸弹\n ```\n - `phase_1`调用`GenerateRandomString`生成一个字符串。\n - 用户输入的字符串需要与此生成的字符串完全匹配。\n\n---\n\n### **动态调试**\n![phase_1](/images/phase1.png)\n下面是phase_1求解的完整流程:\n```lldb\nlldb bomb_linux <你的学号后六位>\n(lldb) b phase_1 # 在phase_1入口断点\n(lldb) run # 从入口开始执行\n请输入第1级的密码:114514 # 随便输入触发断点\n(lldb) b 0x401b6f # 在GenerateRandomString返回后断点\n(lldb) continue # 继续执行\n(lldb) x/s $rbp - 0xb # 计算字符串地址(-0xb偏移量)\n0x7fffffffdaf5: \"mJHurpQZtY\" # 轻松拿下,这里是根据学号伪随机生成的哦\n```\n将得到的密码保存入bomb_<学号后六位>.txt即可,避免后续重复输入。\n\n---\n\n## **Phase_2**\n\n### **静态分析**\n\n这道题目还是比较一目了然的,观察`phase_2`代码不难发现其实构建了一张跳转表:\n```assembly\n0000000000401b8e :\n 401b8e:\tf3 0f 1e fa \tendbr64\n 401b92:\t55 \tpush %rbp\n 401b93:\t48 89 e5 \tmov %rsp,%rbp\n 401b96:\t48 83 ec 10 \tsub $0x10,%rsp\n 401b9a:\t48 89 7d f8 \tmov %rdi,-0x8(%rbp)\n 401b9e:\tbf 10 00 00 00 \tmov $0x10,%edi\n 401ba3:\te8 05 fb ff ff \tcall 4016ad \n 401ba8:\t48 8b 05 71 6c 00 00 \tmov 0x6c71(%rip),%rax # 408820 \n 401baf:\t48 83 f8 0f \tcmp $0xf,%rax\n 401bb3:\t0f 87 16 01 00 00 \tja 401ccf \n 401bb9:\t48 8d 14 85 00 00 00 \tlea 0x0(,%rax,4),%rdx\n 401bc0:\t00 \n 401bc1:\t48 8d 05 4c 4a 00 00 \tlea 0x4a4c(%rip),%rax # 406614 <_IO_stdin_used+0x614>\n 401bc8:\t8b 04 02 \tmov (%rdx,%rax,1),%eax\n 401bcb:\t48 98 \tcltq\n 401bcd:\t48 8d 15 40 4a 00 00 \tlea 0x4a40(%rip),%rdx # 406614 <_IO_stdin_used+0x614>\n 401bd4:\t48 01 d0 \tadd %rdx,%rax\n 401bd7:\t3e ff e0 \tnotrack jmp *%rax\n 401bda:\t48 8b 45 f8 \tmov -0x8(%rbp),%rax\n 401bde:\t48 89 c7 \tmov %rax,%rdi\n 401be1:\te8 f2 00 00 00 \tcall 401cd8 \n 401be6:\te9 ea 00 00 00 \tjmp 401cd5 \n 401beb:\t48 8b 45 f8 \tmov -0x8(%rbp),%rax\n 401bef:\t48 89 c7 \tmov %rax,%rdi\n 401bf2:\te8 8b 01 00 00 \tcall 401d82 \n 401bf7:\te9 d9 00 00 00 \tjmp 401cd5 \n 401bfc:\t48 8b 45 f8 \tmov -0x8(%rbp),%rax\n 401c00:\t48 89 c7 \tmov %rax,%rdi\n ...\n```\n这里面需要注意的关键点是rand_div,它会决定你的跳转方向,而你的学号又决定了它的取值。然后是`GenerateRandomNumber`这个函数的原理需要了解一下,而这个函数将在跳转前后分别调用一次,第一次决定你的跳转方向,第二次则决定了你的密码线索。\n\n---\n\n### **动态调试**\n理解原理就没什么难度了,自己找几个断点打好然后关注一下`rand_div`的值就好,观察自己的学号向哪个函数跳转并理解相应函数计算即可,比如我这里向`phase_2_14`跳转:\n![phase_2_14](/images/phase_2_14.png)\n\n而除了`phase_2_14`还有其他函数也是非常好理解的,第二题依旧可以轻松拿下。\n\n---\n## **Phase_3**\n\n### **静态分析**\n\n和Phase_2一样开局先跳转尽可能防止同学们答案雷同互相帮助(bushi\n\n本体其实没有什么好说的,这里我跳转的方向是`Phase_3_5`简要解释一下可供参考:\n\n```assembly\n0000000000403001 :\n 403001:\tf3 0f 1e fa \tendbr64\n 403005:\t55 \tpush %rbp\n 403006:\t48 89 e5 \tmov %rsp,%rbp\n 403009:\t48 83 ec 20 \tsub $0x20,%rsp\n 40300d:\t48 89 7d e8 \tmov %rdi,-0x18(%rbp)\n 403011:\tc7 45 fc 00 00 00 00 \tmovl $0x0,-0x4(%rbp)\n 403018:\tc7 45 f8 00 00 00 00 \tmovl $0x0,-0x8(%rbp)\n 40301f:\t48 8d 4d f0 \tlea -0x10(%rbp),%rcx\n 403023:\t48 8d 55 f4 \tlea -0xc(%rbp),%rdx\n 403027:\t48 8b 45 e8 \tmov -0x18(%rbp),%rax\n 40302b:\t48 8d 35 5a 36 00 00 \tlea 0x365a(%rip),%rsi # 40668c <_IO_stdin_used+0x68c>\n 403032:\t48 89 c7 \tmov %rax,%rdi\n 403035:\tb8 00 00 00 00 \tmov $0x0,%eax\n 40303a:\te8 51 e1 ff ff \tcall 401190 <__isoc99_sscanf@plt>\n 40303f:\t89 45 f8 \tmov %eax,-0x8(%rbp)\n 403042:\t83 7d f8 01 \tcmpl $0x1,-0x8(%rbp)\n 403046:\t7f 05 \tjg 40304d \n 403048:\te8 a9 2b 00 00 \tcall 405bf6 \n 40304d:\tbf 08 00 00 00 \tmov $0x8,%edi\n 403052:\te8 56 e6 ff ff \tcall 4016ad \n 403057:\t8b 45 f4 \tmov -0xc(%rbp),%eax\n 40305a:\t48 63 d0 \tmovslq %eax,%rdx\n 40305d:\t48 8b 05 bc 57 00 00 \tmov 0x57bc(%rip),%rax # 408820 \n 403064:\t48 39 c2 \tcmp %rax,%rdx\n 403067:\t74 05 \tje 40306e \n 403069:\te8 88 2b 00 00 \tcall 405bf6 \n 40306e:\tbf c8 00 00 00 \tmov $0xc8,%edi\n 403073:\te8 35 e6 ff ff \tcall 4016ad \n 403078:\t8b 45 f4 \tmov -0xc(%rbp),%eax\n 40307b:\t83 f8 07 \tcmp $0x7,%eax\n 40307e:\t0f 87 eb 00 00 00 \tja 40316f \n 403084:\t89 c0 \tmov %eax,%eax\n 403086:\t48 8d 14 85 00 00 00 \tlea 0x0(,%rax,4),%rdx\n 40308d:\t00 \n 40308e:\t48 8d 05 9f 36 00 00 \tlea 0x369f(%rip),%rax # 406734 <_IO_stdin_used+0x734>\n 403095:\t8b 04 02 \tmov (%rdx,%rax,1),%eax\n 403098:\t48 98 \tcltq\n 40309a:\t48 8d 15 93 36 00 00 \tlea 0x3693(%rip),%rdx # 406734 <_IO_stdin_used+0x734>\n 4030a1:\t48 01 d0 \tadd %rdx,%rax\n 4030a4:\t3e ff e0 \tnotrack jmp *%rax\n 4030a7:\t48 8b 05 72 57 00 00 \tmov 0x5772(%rip),%rax # 408820 \n 4030ae:\t89 c2 \tmov %eax,%edx\n 4030b0:\t8b 45 fc \tmov -0x4(%rbp),%eax\n 4030b3:\t01 d0 \tadd %edx,%eax\n 4030b5:\t89 45 fc \tmov %eax,-0x4(%rbp)\n 4030b8:\tbf c8 00 00 00 \tmov $0xc8,%edi\n 4030bd:\te8 eb e5 ff ff \tcall 4016ad \n ...\n 403174:\t8b 45 f0 \tmov -0x10(%rbp),%eax\n 403177:\t39 45 fc \tcmp %eax,-0x4(%rbp) # 注意这里\n 40317a:\t74 05 \tje 403181 \n 40317c:\te8 75 2a 00 00 \tcall 405bf6 \n 403181:\t90 \tnop\n 403182:\tc9 \tleave\n 403183:\tc3 \tret\n\n```\n看起来一大堆很吓人对不对?实际上确实很吓人。\n\n但是发现其中玄机后其实简单的没边,最终答案就藏在`0x403177`里面,前提是确保这一步前炸弹不爆炸(意识到要爆炸了直接`run`一下重开qwq)。\n\n---\n\n### **动态调试**\n\n阅读`Phase_3_5`发现这一关其实需要两个输入,并且第一个输入必须是`rand_div`,这里建议通过`si`单步执行监控好`rand_div`值变化,确定正确结果后使用`run`重开正确输入第一个密码后才能进行下一步求解:\n```lldb\n(lldb) si\nProcess 13376 stopped\n* thread #1, name = 'bomb_linux', stop reason = instruction step into\n frame #0: 0x000000000040317a bomb_linux`phase_3_5 + 377\nbomb_linux`phase_3_5:\n-> 0x40317a <+377>: je 0x403181 ; <+384>\n 0x40317c <+379>: callq 0x405bf6 ; explode_bomb\n 0x403181 <+384>: nop\n 0x403182 <+385>: leave\n(lldb) x/wx $rbp-0x4\n0x7fffffffdb0c: 0xffffffd7\n```\n例如这里我可以打印出第二个值结合第一个值得到第三关正确结果。\n\n---\n\n## **Phase_4**\n\n### **静态分析**\n\n本题依旧开局跳转,笔者的跳转方向是`phase_4_01`,如何跳转不再强调关注`rand_div`的值即可,下面请D指导解读一下`phase_4_01`的内容:\n```assembly\n0000000000404895 :\n ; 函数入口,初始化栈帧\n 404895:\tf3 0f 1e fa \tendbr64 \n 404899:\t55 \tpush %rbp\n 40489a:\t48 89 e5 \tmov %rsp,%rbp\n 40489d:\t48 83 ec 70 \tsub $0x70,%rsp ; 分配栈空间\n\n ; 初始化斐波那契数组(F(10)~F(24)的十六进制值)\n 4048a1:\t48 89 7d 98 \tmov %rdi,-0x68(%rbp) ; 保存输入字符串指针\n 4048a5:\tc7 45 b0 37 00 00 00 \tmovl $0x37,-0x50(%rbp) ; F(10)=55\n 4048ac:\tc7 45 b4 59 00 00 00 \tmovl $0x59,-0x4c(%rbp) ; F(11)=89\n 4048b3:\tc7 45 b8 90 00 00 00 \tmovl $0x90,-0x48(%rbp) ; F(12)=144\n 4048ba:\tc7 45 bc e9 00 00 00 \tmovl $0xe9,-0x44(%rbp) ; F(13)=233\n 4048c1:\tc7 45 c0 79 01 00 00 \tmovl $0x179,-0x40(%rbp) ; F(14)=377\n 4048c8:\tc7 45 c4 62 02 00 00 \tmovl $0x262,-0x3c(%rbp) ; F(15)=610\n 4048cf:\tc7 45 c8 db 03 00 00 \tmovl $0x3db,-0x38(%rbp) ; F(16)=987\n 4048d6:\tc7 45 cc 3d 06 00 00 \tmovl $0x63d,-0x34(%rbp) ; F(17)=1597\n 4048dd:\tc7 45 d0 18 0a 00 00 \tmovl $0xa18,-0x30(%rbp) ; F(18)=2584\n 4048e4:\tc7 45 d4 55 10 00 00 \tmovl $0x1055,-0x2c(%rbp) ; F(19)=4181\n 4048eb:\tc7 45 d8 6d 1a 00 00 \tmovl $0x1a6d,-0x28(%rbp) ; F(20)=6765\n 4048f2:\tc7 45 dc c2 2a 00 00 \tmovl $0x2ac2,-0x24(%rbp) ; F(21)=10946\n 4048f9:\tc7 45 e0 2f 45 00 00 \tmovl $0x452f,-0x20(%rbp) ; F(22)=17711\n 404900:\tc7 45 e4 f1 6f 00 00 \tmovl $0x6ff1,-0x1c(%rbp) ; F(23)=28657\n 404907:\tc7 45 e8 20 b5 00 00 \tmovl $0xb520,-0x18(%rbp) ; F(24)=46368\n\n ; 读取输入到局部变量(格式为\"%d\")\n 40490e:\t48 8d 55 ac \tlea -0x54(%rbp),%rdx ; 输入存储地址\n 404912:\t48 8b 45 98 \tmov -0x68(%rbp),%rax ; 输入字符串\n 404916:\t48 8d 0d 93 1f 00 00 \tlea 0x1f93(%rip),%rcx ; 格式字符串\"%d\"\n 40491d:\t48 89 ce \tmov %rcx,%rsi\n 404920:\t48 89 c7 \tmov %rax,%rdi\n 404923:\tb8 00 00 00 00 \tmov $0x0,%eax\n 404928:\te8 63 c8 ff ff \tcall 401190 <__isoc99_sscanf@plt>\n\n ; 验证输入有效性(必须为1个正数)\n 40492d:\t89 45 fc \tmov %eax,-0x4(%rbp) ; sscanf返回值\n 404930:\t83 7d fc 01 \tcmpl $0x1,-0x4(%rbp) ; 检查是否读取1个参数\n 404934:\t75 07 \tjne 40493d ; 失败则爆炸\n 404936:\t8b 45 ac \tmov -0x54(%rbp),%eax ; 获取输入值N\n 404939:\t85 c0 \ttest %eax,%eax ; 检查N > 0\n 40493b:\t7f 05 \tjg 404942 \n 40493d:\te8 b4 12 00 00 \tcall 405bf6 \n\n ; 检查输入值上限(必须 > 1999)\n 404942:\t8b 45 ac \tmov -0x54(%rbp),%eax \n 404945:\t3d cf 07 00 00 \tcmp $0x7cf,%eax ; 1999的十六进制\n 40494a:\t7f 05 \tjg 404951 ; N > 1999?\n 40494c:\te8 a5 12 00 00 \tcall 405bf6 \n\n ; 计算 N/2000(通过定点数乘法优化)\n 404951:\t8b 45 ac \tmov -0x54(%rbp),%eax ; 输入值N\n 404954:\t48 63 d0 \tmovslq %eax,%rdx ; 符号扩展\n 404957:\t48 69 d2 d3 4d 62 10 \timul $0x10624dd3,%rdx,%rdx ; 乘以274877907(≈2^32/2000)\n 40495e:\t48 c1 ea 20 \tshr $0x20,%rdx ; 取高32位\n 404962:\tc1 fa 07 \tsar $0x7,%edx ; 算术右移7位 → N/2000\n 404965:\tc1 f8 1f \tsar $0x1f,%eax ; 符号位扩展\n 404968:\t89 c1 \tmov %eax,%ecx \n 40496a:\t89 d0 \tmov %edx,%eax \n 40496c:\t29 c8 \tsub %ecx,%eax ; 处理负数情况\n 40496e:\t89 45 ac \tmov %eax,-0x54(%rbp) ; 保存k = N/2000\n\n ; 调用递归函数func4_0(k), 这个函数用于计算斐波那契数列\n 404971:\t8b 45 ac \tmov -0x54(%rbp),%eax \n 404974:\t89 c7 \tmov %eax,%edi ; 参数k\n 404976:\te8 ce fd ff ff \tcall 404749 ; 返回值eax=F(k+1)\n 40497b:\t89 45 f8 \tmov %eax,-0x8(%rbp) ; 保存结果\n\n ; 生成随机索引并验证结果\n 40497e:\tbf 0f 00 00 00 \tmov $0xf,%edi ; 参数15\n 404983:\te8 25 cd ff ff \tcall 4016ad ; 生成0~14随机数\n 404988:\t48 8b 05 91 3e 00 00 \tmov 0x3e91(%rip),%rax # 408820 ; 获取随机索引\n 40498f:\t8b 44 85 b0 \tmov -0x50(%rbp,%rax,4),%eax ; 取数组[rand_div]的值\n 404993:\t39 45 f8 \tcmp %eax,-0x8(%rbp) ; 比较func4_0(k) == 数组值?\n 404996:\t74 05 \tje 40499d \n 404998:\te8 59 12 00 00 \tcall 405bf6 \n```\n所以相对还是很明了的,依旧是关注`rand_div`。\n\n### **动态调试**\n先找出`rand_div`在最后判断前的取值,比如我下面的0xa:\n\n```lldb\n(lldb) si\nProcess 27027 stopped\n* thread #1, name = 'bomb_linux', stop reason = instruction step into\n frame #0: 0x0000000000401719 bomb_linux`GenerateRandomNumber + 108\nbomb_linux`GenerateRandomNumber:\n-> 0x401719 <+108>: movq %rax, 0x7100(%rip) ; rand_div\n 0x401720 <+115>: jmp 0x401723 ; <+118>\n 0x401722 <+117>: nop\n 0x401723 <+118>: popq %rbp\n(lldb) si\nProcess 27027 stopped\n* thread #1, name = 'bomb_linux', stop reason = instruction step into\n frame #0: 0x0000000000401720 bomb_linux`GenerateRandomNumber + 115\nbomb_linux`GenerateRandomNumber:\n-> 0x401720 <+115>: jmp 0x401723 ; <+118>\n 0x401722 <+117>: nop\n 0x401723 <+118>: popq %rbp\n 0x401724 <+119>: retq\n(lldb) x/gx &rand_div\n0x00408820: 0x000000000000000a\n```\n\n而当 `rand_div = 0xa`(即十进制 **10**)时,输入值 `N` 的计算步骤如下:\n\n- 数组索引 **10** 的值是 **斐波那契数列第 20 项**(`F(20) = 6765`)。\n\n- `func4_0(k)` 实际计算的是 **标准斐波那契数列的第 `k+1` 项**(例如,`func4_0(0) = 1 = F(2)`) 需要满足:\n ```c\n func4_0(k) = F(k+1) = F(20)\n ```\n 解得:\n k + 1 = 20 → k = 19\n- `k = N / 2000` → `N = 2000 * k = 2000 * 19 = 38000`.\n从而得解。\n![phase_4](/images/phase_4.png)\n\n---\n\n## **Phase_Impossible**\n\nImpossible?\n\n从这道题开始偷懒了,掏出ghidra直接看c代码了解一下大概流程再去objdump看汇编:\n```c\nvoid phase_impossible(char *param_1)\n\n{\n int iVar1;\n size_t sVar2;\n undefined local_118 [256];\n long local_18;\n long local_10;\n \n local_10 = GetTickCount();\n sVar2 = strlen(param_1);\n if ((sVar2 < 10) || (sVar2 = strlen(param_1), 0x300 < sVar2)) {\n explode_bomb();\n }\n memset(local_118,0,0x100);\n tohex(local_118,param_1);\n GenerateRandomNumber(0x400);\n iVar1 = check_buf_valid(local_118,rand_div & 0xffffffff);\n if (iVar1 == 0) {\n puts(&DAT_00406518);\n explode_bomb();\n }\n GenerateRandomNumber(3);\n if (rand_div != 2) {\n if (2 < rand_div) goto LAB_00401891;\n if (rand_div == 0) {\n goto_buf_0(local_118);\n }\n else if (rand_div != 1) goto LAB_00401891;\n goto_buf_1(local_118);\n }\n goto_buf_2(local_118);\nLAB_00401891:\n explode_bomb();\n GenerateRandomNumber(0x400);\n if ((long)(int)result != rand_div) {\n printf(&DAT_00406560,rand_div,(ulong)result);\n explode_bomb();\n }\n local_18 = GetTickCount();\n if (1000 < (ulong)(local_18 - local_10)) {\n puts(&DAT_004065a8);\n explode_bomb();\n }\n return;\n}\n```\n最终任务还是很明确的,需要写一段机器码修改`result`的数值,但是注意要能通过`check_buf_valid`检测,并且最后指令必须是跳转到`0x401896`不然就会触发`phase_impossible`中`0x401891`处的`explode_bomb`函数,唯一的难点是跟踪`rand_div`的数值变化,建议使用`register write`来修改`check_buf_valid`的返回值使其强制通过然后监控`rand_div`每一次的数值变化(`x/gx &rand_div`),记录好`rand_div`的结果后开始指令设计,需要满足:\n\n - 指令的异或和为`rand_div`第一次的数值末尾八位以通过检查;\n - 修改`result`使其数值等于`rand_div`第三次数值;\n - 跳转到`0x401896`避免炸弹;\n\n 如果前几问都完成了到这里应该是没有问题的。\n\n---\n\n## **Phase_Secret**\n\n隐藏彩蛋,并非隐藏。汇编里写的非常清楚:\n```assembly\n0000000000401a8b :\n 401a8b:\tf3 0f 1e fa \tendbr64\n 401a8f:\t55 \tpush %rbp\n 401a90:\t48 89 e5 \tmov %rsp,%rbp\n 401a93:\t48 83 ec 10 \tsub $0x10,%rsp\n 401a97:\t48 89 7d f8 \tmov %rdi,-0x8(%rbp)\n 401a9b:\t48 8d 05 26 4b 00 00 \tlea 0x4b26(%rip),%rax # 4065c8 <_IO_stdin_used+0x5c8>\n 401aa2:\t48 89 c7 \tmov %rax,%rdi\n 401aa5:\te8 76 f6 ff ff \tcall 401120 \n 401aaa:\t90 \tnop\n 401aab:\tc9 \tleave\n 401aac:\tc3 \tret\n```\n注意到这段指令在原程序中完全没有执行说明是需要用户自己跳转的,也非常简单只需要在`phase_5`中设计指令时加一个要求跳转到`0x401a8b`即可。\n\n完结\n![Case Closed](/images/caseclosed.png)\n","slug":"nudtbomblab","published":1,"updated":"2025-02-25T03:56:35.270Z","comments":1,"layout":"post","photos":[],"_id":"cm7jziodv0011wi2bauxoh2vo","content":"

这篇文章记录高地CSAPP课程Bomblab实验操作流程,仅供参考交流(答案是随机生成的和学号相关)。

\n

笔者实验环境为Archlinux/CachyOS,使用lldb作为调试器(和gdb操作差不多),其余用到的工具主要为objdump,strings,neovim/helix和zellij,全程开源环境不使用IDA。

\n

Phase_1

静态分析

strings扫描

1
strings bomb_linux
\n

先用strings寻找可能与phase_1相关的字符串或函数名,运气好说不定能直接找到密码毕竟是第一题。
\"strings\"

\n
    \n
  • 结果没有明文密码无法直接秒掉第一问,可惜。
  • \n
  • 但是找到GenerateRandomString函数可能与密码生成相关。
  • \n
\n

objdump反汇编

1
objdump -d bomb_linux > bomb.asm
\n

搜索GenerateRandomStringphase_1函数的汇编代码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
401b53 <phase_1>:
401b53: endbr64
401b57: push %rbp
401b58: mov %rsp,%rbp
401b5b: sub $0x20,%rsp
401b5f: mov %rdi,-0x18(%rbp)
401b63: lea -0xb(%rbp),%rax
401b67: mov %rax,%rdi
401b6a: callq 401ac1 <GenerateRandomString> # 调用密码生成函数
401b6f: lea -0xb(%rbp),%rdx # 生成的字符串地址%rbp-0xb存入%rdx,即密码存储位置
401b73: mov -0x18(%rbp),%rax
401b77: mov %rdx,%rsi
401b7a: mov %rax,%rdi
401b7d: callq 401c0c <string_compare> # 调用字符串比较函数
401b82: test %eax,%eax
401b84: je 401b8d <phase_1+0x3a>
401b86: callq 401d67 <explode_bomb> # 比较失败则引爆炸弹

\n
    \n
  • phase_1调用GenerateRandomString生成一个字符串。
  • \n
  • 用户输入的字符串需要与此生成的字符串完全匹配。
  • \n
\n
\n

动态调试

\"phase_1\"
下面是phase_1求解的完整流程:

\n
1
2
3
4
5
6
7
8
lldb bomb_linux <你的学号后六位>
(lldb) b phase_1 # 在phase_1入口断点
(lldb) run # 从入口开始执行
请输入第1级的密码:114514 # 随便输入触发断点
(lldb) b 0x401b6f # 在GenerateRandomString返回后断点
(lldb) continue # 继续执行
(lldb) x/s $rbp - 0xb # 计算字符串地址(-0xb偏移量)
0x7fffffffdaf5: "mJHurpQZtY" # 轻松拿下,这里是根据学号伪随机生成的哦
\n

将得到的密码保存入bomb_<学号后六位>.txt即可,避免后续重复输入。

\n
\n

Phase_2

静态分析

这道题目还是比较一目了然的,观察phase_2代码不难发现其实构建了一张跳转表:

\n
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
0000000000401b8e <phase_2>:
401b8e:\tf3 0f 1e fa \tendbr64
401b92:\t55 \tpush %rbp
401b93:\t48 89 e5 \tmov %rsp,%rbp
401b96:\t48 83 ec 10 \tsub $0x10,%rsp
401b9a:\t48 89 7d f8 \tmov %rdi,-0x8(%rbp)
401b9e:\tbf 10 00 00 00 \tmov $0x10,%edi
401ba3:\te8 05 fb ff ff \tcall 4016ad <GenerateRandomNumber>
401ba8:\t48 8b 05 71 6c 00 00 \tmov 0x6c71(%rip),%rax # 408820 <rand_div>
401baf:\t48 83 f8 0f \tcmp $0xf,%rax
401bb3:\t0f 87 16 01 00 00 \tja 401ccf <phase_2+0x141>
401bb9:\t48 8d 14 85 00 00 00 \tlea 0x0(,%rax,4),%rdx
401bc0:\t00
401bc1:\t48 8d 05 4c 4a 00 00 \tlea 0x4a4c(%rip),%rax # 406614 <_IO_stdin_used+0x614>
401bc8:\t8b 04 02 \tmov (%rdx,%rax,1),%eax
401bcb:\t48 98 \tcltq
401bcd:\t48 8d 15 40 4a 00 00 \tlea 0x4a40(%rip),%rdx # 406614 <_IO_stdin_used+0x614>
401bd4:\t48 01 d0 \tadd %rdx,%rax
401bd7:\t3e ff e0 \tnotrack jmp *%rax
401bda:\t48 8b 45 f8 \tmov -0x8(%rbp),%rax
401bde:\t48 89 c7 \tmov %rax,%rdi
401be1:\te8 f2 00 00 00 \tcall 401cd8 <phase_2_0>
401be6:\te9 ea 00 00 00 \tjmp 401cd5 <phase_2+0x147>
401beb:\t48 8b 45 f8 \tmov -0x8(%rbp),%rax
401bef:\t48 89 c7 \tmov %rax,%rdi
401bf2:\te8 8b 01 00 00 \tcall 401d82 <phase_2_1>
401bf7:\te9 d9 00 00 00 \tjmp 401cd5 <phase_2+0x147>
401bfc:\t48 8b 45 f8 \tmov -0x8(%rbp),%rax
401c00:\t48 89 c7 \tmov %rax,%rdi
...
\n

这里面需要注意的关键点是rand_div,它会决定你的跳转方向,而你的学号又决定了它的取值。然后是GenerateRandomNumber这个函数的原理需要了解一下,而这个函数将在跳转前后分别调用一次,第一次决定你的跳转方向,第二次则决定了你的密码线索。

\n
\n

动态调试

理解原理就没什么难度了,自己找几个断点打好然后关注一下rand_div的值就好,观察自己的学号向哪个函数跳转并理解相应函数计算即可,比如我这里向phase_2_14跳转:
\"phase_2_14\"

\n

而除了phase_2_14还有其他函数也是非常好理解的,第二题依旧可以轻松拿下。

\n
\n

Phase_3

静态分析

和Phase_2一样开局先跳转尽可能防止同学们答案雷同互相帮助(bushi

\n

本体其实没有什么好说的,这里我跳转的方向是Phase_3_5简要解释一下可供参考:

\n
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
0000000000403001 <phase_3_5>:
403001:\tf3 0f 1e fa \tendbr64
403005:\t55 \tpush %rbp
403006:\t48 89 e5 \tmov %rsp,%rbp
403009:\t48 83 ec 20 \tsub $0x20,%rsp
40300d:\t48 89 7d e8 \tmov %rdi,-0x18(%rbp)
403011:\tc7 45 fc 00 00 00 00 \tmovl $0x0,-0x4(%rbp)
403018:\tc7 45 f8 00 00 00 00 \tmovl $0x0,-0x8(%rbp)
40301f:\t48 8d 4d f0 \tlea -0x10(%rbp),%rcx
403023:\t48 8d 55 f4 \tlea -0xc(%rbp),%rdx
403027:\t48 8b 45 e8 \tmov -0x18(%rbp),%rax
40302b:\t48 8d 35 5a 36 00 00 \tlea 0x365a(%rip),%rsi # 40668c <_IO_stdin_used+0x68c>
403032:\t48 89 c7 \tmov %rax,%rdi
403035:\tb8 00 00 00 00 \tmov $0x0,%eax
40303a:\te8 51 e1 ff ff \tcall 401190 <__isoc99_sscanf@plt>
40303f:\t89 45 f8 \tmov %eax,-0x8(%rbp)
403042:\t83 7d f8 01 \tcmpl $0x1,-0x8(%rbp)
403046:\t7f 05 \tjg 40304d <phase_3_5+0x4c>
403048:\te8 a9 2b 00 00 \tcall 405bf6 <explode_bomb>
40304d:\tbf 08 00 00 00 \tmov $0x8,%edi
403052:\te8 56 e6 ff ff \tcall 4016ad <GenerateRandomNumber>
403057:\t8b 45 f4 \tmov -0xc(%rbp),%eax
40305a:\t48 63 d0 \tmovslq %eax,%rdx
40305d:\t48 8b 05 bc 57 00 00 \tmov 0x57bc(%rip),%rax # 408820 <rand_div>
403064:\t48 39 c2 \tcmp %rax,%rdx
403067:\t74 05 \tje 40306e <phase_3_5+0x6d>
403069:\te8 88 2b 00 00 \tcall 405bf6 <explode_bomb>
40306e:\tbf c8 00 00 00 \tmov $0xc8,%edi
403073:\te8 35 e6 ff ff \tcall 4016ad <GenerateRandomNumber>
403078:\t8b 45 f4 \tmov -0xc(%rbp),%eax
40307b:\t83 f8 07 \tcmp $0x7,%eax
40307e:\t0f 87 eb 00 00 00 \tja 40316f <phase_3_5+0x16e>
403084:\t89 c0 \tmov %eax,%eax
403086:\t48 8d 14 85 00 00 00 \tlea 0x0(,%rax,4),%rdx
40308d:\t00
40308e:\t48 8d 05 9f 36 00 00 \tlea 0x369f(%rip),%rax # 406734 <_IO_stdin_used+0x734>
403095:\t8b 04 02 \tmov (%rdx,%rax,1),%eax
403098:\t48 98 \tcltq
40309a:\t48 8d 15 93 36 00 00 \tlea 0x3693(%rip),%rdx # 406734 <_IO_stdin_used+0x734>
4030a1:\t48 01 d0 \tadd %rdx,%rax
4030a4:\t3e ff e0 \tnotrack jmp *%rax
4030a7:\t48 8b 05 72 57 00 00 \tmov 0x5772(%rip),%rax # 408820 <rand_div>
4030ae:\t89 c2 \tmov %eax,%edx
4030b0:\t8b 45 fc \tmov -0x4(%rbp),%eax
4030b3:\t01 d0 \tadd %edx,%eax
4030b5:\t89 45 fc \tmov %eax,-0x4(%rbp)
4030b8:\tbf c8 00 00 00 \tmov $0xc8,%edi
4030bd:\te8 eb e5 ff ff \tcall 4016ad <GenerateRandomNumber>
...
403174:\t8b 45 f0 \tmov -0x10(%rbp),%eax
403177:\t39 45 fc \tcmp %eax,-0x4(%rbp) # 注意这里
40317a:\t74 05 \tje 403181 <phase_3_5+0x180>
40317c:\te8 75 2a 00 00 \tcall 405bf6 <explode_bomb>
403181:\t90 \tnop
403182:\tc9 \tleave
403183:\tc3 \tret

\n

看起来一大堆很吓人对不对?实际上确实很吓人。

\n

但是发现其中玄机后其实简单的没边,最终答案就藏在0x403177里面,前提是确保这一步前炸弹不爆炸(意识到要爆炸了直接run一下重开qwq)。

\n
\n

动态调试

阅读Phase_3_5发现这一关其实需要两个输入,并且第一个输入必须是rand_div,这里建议通过si单步执行监控好rand_div值变化,确定正确结果后使用run重开正确输入第一个密码后才能进行下一步求解:

\n
1
2
3
4
5
6
7
8
9
10
11
(lldb) si
Process 13376 stopped
* thread #1, name = 'bomb_linux', stop reason = instruction step into
frame #0: 0x000000000040317a bomb_linux`phase_3_5 + 377
bomb_linux`phase_3_5:
-> 0x40317a <+377>: je 0x403181 ; <+384>
0x40317c <+379>: callq 0x405bf6 ; explode_bomb
0x403181 <+384>: nop
0x403182 <+385>: leave
(lldb) x/wx $rbp-0x4
0x7fffffffdb0c: 0xffffffd7
\n

例如这里我可以打印出第二个值结合第一个值得到第三关正确结果。

\n
\n

Phase_4

静态分析

本题依旧开局跳转,笔者的跳转方向是phase_4_01,如何跳转不再强调关注rand_div的值即可,下面请D指导解读一下phase_4_01的内容:

\n
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
0000000000404895 <phase_4_01>:
; 函数入口,初始化栈帧
404895:\tf3 0f 1e fa \tendbr64
404899:\t55 \tpush %rbp
40489a:\t48 89 e5 \tmov %rsp,%rbp
40489d:\t48 83 ec 70 \tsub $0x70,%rsp ; 分配栈空间

; 初始化斐波那契数组(F(10)~F(24)的十六进制值)
4048a1:\t48 89 7d 98 \tmov %rdi,-0x68(%rbp) ; 保存输入字符串指针
4048a5:\tc7 45 b0 37 00 00 00 \tmovl $0x37,-0x50(%rbp) ; F(10)=55
4048ac:\tc7 45 b4 59 00 00 00 \tmovl $0x59,-0x4c(%rbp) ; F(11)=89
4048b3:\tc7 45 b8 90 00 00 00 \tmovl $0x90,-0x48(%rbp) ; F(12)=144
4048ba:\tc7 45 bc e9 00 00 00 \tmovl $0xe9,-0x44(%rbp) ; F(13)=233
4048c1:\tc7 45 c0 79 01 00 00 \tmovl $0x179,-0x40(%rbp) ; F(14)=377
4048c8:\tc7 45 c4 62 02 00 00 \tmovl $0x262,-0x3c(%rbp) ; F(15)=610
4048cf:\tc7 45 c8 db 03 00 00 \tmovl $0x3db,-0x38(%rbp) ; F(16)=987
4048d6:\tc7 45 cc 3d 06 00 00 \tmovl $0x63d,-0x34(%rbp) ; F(17)=1597
4048dd:\tc7 45 d0 18 0a 00 00 \tmovl $0xa18,-0x30(%rbp) ; F(18)=2584
4048e4:\tc7 45 d4 55 10 00 00 \tmovl $0x1055,-0x2c(%rbp) ; F(19)=4181
4048eb:\tc7 45 d8 6d 1a 00 00 \tmovl $0x1a6d,-0x28(%rbp) ; F(20)=6765
4048f2:\tc7 45 dc c2 2a 00 00 \tmovl $0x2ac2,-0x24(%rbp) ; F(21)=10946
4048f9:\tc7 45 e0 2f 45 00 00 \tmovl $0x452f,-0x20(%rbp) ; F(22)=17711
404900:\tc7 45 e4 f1 6f 00 00 \tmovl $0x6ff1,-0x1c(%rbp) ; F(23)=28657
404907:\tc7 45 e8 20 b5 00 00 \tmovl $0xb520,-0x18(%rbp) ; F(24)=46368

; 读取输入到局部变量(格式为"%d")
40490e:\t48 8d 55 ac \tlea -0x54(%rbp),%rdx ; 输入存储地址
404912:\t48 8b 45 98 \tmov -0x68(%rbp),%rax ; 输入字符串
404916:\t48 8d 0d 93 1f 00 00 \tlea 0x1f93(%rip),%rcx ; 格式字符串"%d"
40491d:\t48 89 ce \tmov %rcx,%rsi
404920:\t48 89 c7 \tmov %rax,%rdi
404923:\tb8 00 00 00 00 \tmov $0x0,%eax
404928:\te8 63 c8 ff ff \tcall 401190 <__isoc99_sscanf@plt>

; 验证输入有效性(必须为1个正数)
40492d:\t89 45 fc \tmov %eax,-0x4(%rbp) ; sscanf返回值
404930:\t83 7d fc 01 \tcmpl $0x1,-0x4(%rbp) ; 检查是否读取1个参数
404934:\t75 07 \tjne 40493d <phase_4_01+0xa8> ; 失败则爆炸
404936:\t8b 45 ac \tmov -0x54(%rbp),%eax ; 获取输入值N
404939:\t85 c0 \ttest %eax,%eax ; 检查N > 0
40493b:\t7f 05 \tjg 404942 <phase_4_01+0xad>
40493d:\te8 b4 12 00 00 \tcall 405bf6 <explode_bomb>

; 检查输入值上限(必须 > 1999)
404942:\t8b 45 ac \tmov -0x54(%rbp),%eax
404945:\t3d cf 07 00 00 \tcmp $0x7cf,%eax ; 1999的十六进制
40494a:\t7f 05 \tjg 404951 <phase_4_01+0xbc> ; N > 1999?
40494c:\te8 a5 12 00 00 \tcall 405bf6 <explode_bomb>

; 计算 N/2000(通过定点数乘法优化)
404951:\t8b 45 ac \tmov -0x54(%rbp),%eax ; 输入值N
404954:\t48 63 d0 \tmovslq %eax,%rdx ; 符号扩展
404957:\t48 69 d2 d3 4d 62 10 \timul $0x10624dd3,%rdx,%rdx ; 乘以274877907(≈2^32/2000)
40495e:\t48 c1 ea 20 \tshr $0x20,%rdx ; 取高32位
404962:\tc1 fa 07 \tsar $0x7,%edx ; 算术右移7位 → N/2000
404965:\tc1 f8 1f \tsar $0x1f,%eax ; 符号位扩展
404968:\t89 c1 \tmov %eax,%ecx
40496a:\t89 d0 \tmov %edx,%eax
40496c:\t29 c8 \tsub %ecx,%eax ; 处理负数情况
40496e:\t89 45 ac \tmov %eax,-0x54(%rbp) ; 保存k = N/2000

; 调用递归函数func4_0(k), 这个函数用于计算斐波那契数列
404971:\t8b 45 ac \tmov -0x54(%rbp),%eax
404974:\t89 c7 \tmov %eax,%edi ; 参数k
404976:\te8 ce fd ff ff \tcall 404749 <func4_0> ; 返回值eax=F(k+1)
40497b:\t89 45 f8 \tmov %eax,-0x8(%rbp) ; 保存结果

; 生成随机索引并验证结果
40497e:\tbf 0f 00 00 00 \tmov $0xf,%edi ; 参数15
404983:\te8 25 cd ff ff \tcall 4016ad <GenerateRandomNumber> ; 生成0~14随机数
404988:\t48 8b 05 91 3e 00 00 \tmov 0x3e91(%rip),%rax # 408820 <rand_div> ; 获取随机索引
40498f:\t8b 44 85 b0 \tmov -0x50(%rbp,%rax,4),%eax ; 取数组[rand_div]的值
404993:\t39 45 f8 \tcmp %eax,-0x8(%rbp) ; 比较func4_0(k) == 数组值?
404996:\t74 05 \tje 40499d <phase_4_01+0x108>
404998:\te8 59 12 00 00 \tcall 405bf6 <explode_bomb>
\n

所以相对还是很明了的,依旧是关注rand_div

\n

动态调试

先找出rand_div在最后判断前的取值,比如我下面的0xa:

\n
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
(lldb) si
Process 27027 stopped
* thread #1, name = 'bomb_linux', stop reason = instruction step into
frame #0: 0x0000000000401719 bomb_linux`GenerateRandomNumber + 108
bomb_linux`GenerateRandomNumber:
-> 0x401719 <+108>: movq %rax, 0x7100(%rip) ; rand_div
0x401720 <+115>: jmp 0x401723 ; <+118>
0x401722 <+117>: nop
0x401723 <+118>: popq %rbp
(lldb) si
Process 27027 stopped
* thread #1, name = 'bomb_linux', stop reason = instruction step into
frame #0: 0x0000000000401720 bomb_linux`GenerateRandomNumber + 115
bomb_linux`GenerateRandomNumber:
-> 0x401720 <+115>: jmp 0x401723 ; <+118>
0x401722 <+117>: nop
0x401723 <+118>: popq %rbp
0x401724 <+119>: retq
(lldb) x/gx &rand_div
0x00408820: 0x000000000000000a
\n\n

而当 rand_div = 0xa(即十进制 10)时,输入值 N 的计算步骤如下:

\n
    \n
  • 数组索引 10 的值是 斐波那契数列第 20 项F(20) = 6765)。

    \n
  • \n
  • func4_0(k) 实际计算的是 标准斐波那契数列的第 k+1(例如,func4_0(0) = 1 = F(2)) 需要满足:

    \n
    1
    func4_0(k) = F(k+1) = F(20)
    \n

    解得:
    k + 1 = 20 → k = 19

    \n
  • \n
  • k = N / 2000N = 2000 * k = 2000 * 19 = 38000.
    从而得解。
    \"phase_4\"

    \n
  • \n
\n
\n

Phase_Impossible

Impossible?

\n

从这道题开始偷懒了,掏出ghidra直接看c代码了解一下大概流程再去objdump看汇编:

\n
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
void phase_impossible(char *param_1)

{
int iVar1;
size_t sVar2;
undefined local_118 [256];
long local_18;
long local_10;

local_10 = GetTickCount();
sVar2 = strlen(param_1);
if ((sVar2 < 10) || (sVar2 = strlen(param_1), 0x300 < sVar2)) {
explode_bomb();
}
memset(local_118,0,0x100);
tohex(local_118,param_1);
GenerateRandomNumber(0x400);
iVar1 = check_buf_valid(local_118,rand_div & 0xffffffff);
if (iVar1 == 0) {
puts(&DAT_00406518);
explode_bomb();
}
GenerateRandomNumber(3);
if (rand_div != 2) {
if (2 < rand_div) goto LAB_00401891;
if (rand_div == 0) {
goto_buf_0(local_118);
}
else if (rand_div != 1) goto LAB_00401891;
goto_buf_1(local_118);
}
goto_buf_2(local_118);
LAB_00401891:
explode_bomb();
GenerateRandomNumber(0x400);
if ((long)(int)result != rand_div) {
printf(&DAT_00406560,rand_div,(ulong)result);
explode_bomb();
}
local_18 = GetTickCount();
if (1000 < (ulong)(local_18 - local_10)) {
puts(&DAT_004065a8);
explode_bomb();
}
return;
}
\n

最终任务还是很明确的,需要写一段机器码修改result的数值,但是注意要能通过check_buf_valid检测,并且最后指令必须是跳转到0x401896不然就会触发phase_impossible0x401891处的explode_bomb函数,唯一的难点是跟踪rand_div的数值变化,建议使用register write来修改check_buf_valid的返回值使其强制通过然后监控rand_div每一次的数值变化(x/gx &rand_div),记录好rand_div的结果后开始指令设计,需要满足:

\n
    \n
  • 指令的异或和为rand_div第一次的数值末尾八位以通过检查;
  • \n
  • 修改result使其数值等于rand_div第三次数值;
  • \n
  • 跳转到0x401896避免炸弹;
  • \n
\n

如果前几问都完成了到这里应该是没有问题的。

\n
\n

Phase_Secret

隐藏彩蛋,并非隐藏。汇编里写的非常清楚:

\n
1
2
3
4
5
6
7
8
9
10
11
12
0000000000401a8b <phase_secret>:
401a8b:\tf3 0f 1e fa \tendbr64
401a8f:\t55 \tpush %rbp
401a90:\t48 89 e5 \tmov %rsp,%rbp
401a93:\t48 83 ec 10 \tsub $0x10,%rsp
401a97:\t48 89 7d f8 \tmov %rdi,-0x8(%rbp)
401a9b:\t48 8d 05 26 4b 00 00 \tlea 0x4b26(%rip),%rax # 4065c8 <_IO_stdin_used+0x5c8>
401aa2:\t48 89 c7 \tmov %rax,%rdi
401aa5:\te8 76 f6 ff ff \tcall 401120 <puts@plt>
401aaa:\t90 \tnop
401aab:\tc9 \tleave
401aac:\tc3 \tret
\n

注意到这段指令在原程序中完全没有执行说明是需要用户自己跳转的,也非常简单只需要在phase_5中设计指令时加一个要求跳转到0x401a8b即可。

\n

完结
\"Case

\n","excerpt":"","more":"

这篇文章记录高地CSAPP课程Bomblab实验操作流程,仅供参考交流(答案是随机生成的和学号相关)。

\n

笔者实验环境为Archlinux/CachyOS,使用lldb作为调试器(和gdb操作差不多),其余用到的工具主要为objdump,strings,neovim/helix和zellij,全程开源环境不使用IDA。

\n

Phase_1

静态分析

strings扫描

1
strings bomb_linux
\n

先用strings寻找可能与phase_1相关的字符串或函数名,运气好说不定能直接找到密码毕竟是第一题。
\"strings\"

\n
    \n
  • 结果没有明文密码无法直接秒掉第一问,可惜。
  • \n
  • 但是找到GenerateRandomString函数可能与密码生成相关。
  • \n
\n

objdump反汇编

1
objdump -d bomb_linux > bomb.asm
\n

搜索GenerateRandomStringphase_1函数的汇编代码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
401b53 <phase_1>:
401b53: endbr64
401b57: push %rbp
401b58: mov %rsp,%rbp
401b5b: sub $0x20,%rsp
401b5f: mov %rdi,-0x18(%rbp)
401b63: lea -0xb(%rbp),%rax
401b67: mov %rax,%rdi
401b6a: callq 401ac1 <GenerateRandomString> # 调用密码生成函数
401b6f: lea -0xb(%rbp),%rdx # 生成的字符串地址%rbp-0xb存入%rdx,即密码存储位置
401b73: mov -0x18(%rbp),%rax
401b77: mov %rdx,%rsi
401b7a: mov %rax,%rdi
401b7d: callq 401c0c <string_compare> # 调用字符串比较函数
401b82: test %eax,%eax
401b84: je 401b8d <phase_1+0x3a>
401b86: callq 401d67 <explode_bomb> # 比较失败则引爆炸弹

\n
    \n
  • phase_1调用GenerateRandomString生成一个字符串。
  • \n
  • 用户输入的字符串需要与此生成的字符串完全匹配。
  • \n
\n
\n

动态调试

\"phase_1\"
下面是phase_1求解的完整流程:

\n
1
2
3
4
5
6
7
8
lldb bomb_linux <你的学号后六位>
(lldb) b phase_1 # 在phase_1入口断点
(lldb) run # 从入口开始执行
请输入第1级的密码:114514 # 随便输入触发断点
(lldb) b 0x401b6f # 在GenerateRandomString返回后断点
(lldb) continue # 继续执行
(lldb) x/s $rbp - 0xb # 计算字符串地址(-0xb偏移量)
0x7fffffffdaf5: "mJHurpQZtY" # 轻松拿下,这里是根据学号伪随机生成的哦
\n

将得到的密码保存入bomb_<学号后六位>.txt即可,避免后续重复输入。

\n
\n

Phase_2

静态分析

这道题目还是比较一目了然的,观察phase_2代码不难发现其实构建了一张跳转表:

\n
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
0000000000401b8e <phase_2>:
401b8e:\tf3 0f 1e fa \tendbr64
401b92:\t55 \tpush %rbp
401b93:\t48 89 e5 \tmov %rsp,%rbp
401b96:\t48 83 ec 10 \tsub $0x10,%rsp
401b9a:\t48 89 7d f8 \tmov %rdi,-0x8(%rbp)
401b9e:\tbf 10 00 00 00 \tmov $0x10,%edi
401ba3:\te8 05 fb ff ff \tcall 4016ad <GenerateRandomNumber>
401ba8:\t48 8b 05 71 6c 00 00 \tmov 0x6c71(%rip),%rax # 408820 <rand_div>
401baf:\t48 83 f8 0f \tcmp $0xf,%rax
401bb3:\t0f 87 16 01 00 00 \tja 401ccf <phase_2+0x141>
401bb9:\t48 8d 14 85 00 00 00 \tlea 0x0(,%rax,4),%rdx
401bc0:\t00
401bc1:\t48 8d 05 4c 4a 00 00 \tlea 0x4a4c(%rip),%rax # 406614 <_IO_stdin_used+0x614>
401bc8:\t8b 04 02 \tmov (%rdx,%rax,1),%eax
401bcb:\t48 98 \tcltq
401bcd:\t48 8d 15 40 4a 00 00 \tlea 0x4a40(%rip),%rdx # 406614 <_IO_stdin_used+0x614>
401bd4:\t48 01 d0 \tadd %rdx,%rax
401bd7:\t3e ff e0 \tnotrack jmp *%rax
401bda:\t48 8b 45 f8 \tmov -0x8(%rbp),%rax
401bde:\t48 89 c7 \tmov %rax,%rdi
401be1:\te8 f2 00 00 00 \tcall 401cd8 <phase_2_0>
401be6:\te9 ea 00 00 00 \tjmp 401cd5 <phase_2+0x147>
401beb:\t48 8b 45 f8 \tmov -0x8(%rbp),%rax
401bef:\t48 89 c7 \tmov %rax,%rdi
401bf2:\te8 8b 01 00 00 \tcall 401d82 <phase_2_1>
401bf7:\te9 d9 00 00 00 \tjmp 401cd5 <phase_2+0x147>
401bfc:\t48 8b 45 f8 \tmov -0x8(%rbp),%rax
401c00:\t48 89 c7 \tmov %rax,%rdi
...
\n

这里面需要注意的关键点是rand_div,它会决定你的跳转方向,而你的学号又决定了它的取值。然后是GenerateRandomNumber这个函数的原理需要了解一下,而这个函数将在跳转前后分别调用一次,第一次决定你的跳转方向,第二次则决定了你的密码线索。

\n
\n

动态调试

理解原理就没什么难度了,自己找几个断点打好然后关注一下rand_div的值就好,观察自己的学号向哪个函数跳转并理解相应函数计算即可,比如我这里向phase_2_14跳转:
\"phase_2_14\"

\n

而除了phase_2_14还有其他函数也是非常好理解的,第二题依旧可以轻松拿下。

\n
\n

Phase_3

静态分析

和Phase_2一样开局先跳转尽可能防止同学们答案雷同互相帮助(bushi

\n

本体其实没有什么好说的,这里我跳转的方向是Phase_3_5简要解释一下可供参考:

\n
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
0000000000403001 <phase_3_5>:
403001:\tf3 0f 1e fa \tendbr64
403005:\t55 \tpush %rbp
403006:\t48 89 e5 \tmov %rsp,%rbp
403009:\t48 83 ec 20 \tsub $0x20,%rsp
40300d:\t48 89 7d e8 \tmov %rdi,-0x18(%rbp)
403011:\tc7 45 fc 00 00 00 00 \tmovl $0x0,-0x4(%rbp)
403018:\tc7 45 f8 00 00 00 00 \tmovl $0x0,-0x8(%rbp)
40301f:\t48 8d 4d f0 \tlea -0x10(%rbp),%rcx
403023:\t48 8d 55 f4 \tlea -0xc(%rbp),%rdx
403027:\t48 8b 45 e8 \tmov -0x18(%rbp),%rax
40302b:\t48 8d 35 5a 36 00 00 \tlea 0x365a(%rip),%rsi # 40668c <_IO_stdin_used+0x68c>
403032:\t48 89 c7 \tmov %rax,%rdi
403035:\tb8 00 00 00 00 \tmov $0x0,%eax
40303a:\te8 51 e1 ff ff \tcall 401190 <__isoc99_sscanf@plt>
40303f:\t89 45 f8 \tmov %eax,-0x8(%rbp)
403042:\t83 7d f8 01 \tcmpl $0x1,-0x8(%rbp)
403046:\t7f 05 \tjg 40304d <phase_3_5+0x4c>
403048:\te8 a9 2b 00 00 \tcall 405bf6 <explode_bomb>
40304d:\tbf 08 00 00 00 \tmov $0x8,%edi
403052:\te8 56 e6 ff ff \tcall 4016ad <GenerateRandomNumber>
403057:\t8b 45 f4 \tmov -0xc(%rbp),%eax
40305a:\t48 63 d0 \tmovslq %eax,%rdx
40305d:\t48 8b 05 bc 57 00 00 \tmov 0x57bc(%rip),%rax # 408820 <rand_div>
403064:\t48 39 c2 \tcmp %rax,%rdx
403067:\t74 05 \tje 40306e <phase_3_5+0x6d>
403069:\te8 88 2b 00 00 \tcall 405bf6 <explode_bomb>
40306e:\tbf c8 00 00 00 \tmov $0xc8,%edi
403073:\te8 35 e6 ff ff \tcall 4016ad <GenerateRandomNumber>
403078:\t8b 45 f4 \tmov -0xc(%rbp),%eax
40307b:\t83 f8 07 \tcmp $0x7,%eax
40307e:\t0f 87 eb 00 00 00 \tja 40316f <phase_3_5+0x16e>
403084:\t89 c0 \tmov %eax,%eax
403086:\t48 8d 14 85 00 00 00 \tlea 0x0(,%rax,4),%rdx
40308d:\t00
40308e:\t48 8d 05 9f 36 00 00 \tlea 0x369f(%rip),%rax # 406734 <_IO_stdin_used+0x734>
403095:\t8b 04 02 \tmov (%rdx,%rax,1),%eax
403098:\t48 98 \tcltq
40309a:\t48 8d 15 93 36 00 00 \tlea 0x3693(%rip),%rdx # 406734 <_IO_stdin_used+0x734>
4030a1:\t48 01 d0 \tadd %rdx,%rax
4030a4:\t3e ff e0 \tnotrack jmp *%rax
4030a7:\t48 8b 05 72 57 00 00 \tmov 0x5772(%rip),%rax # 408820 <rand_div>
4030ae:\t89 c2 \tmov %eax,%edx
4030b0:\t8b 45 fc \tmov -0x4(%rbp),%eax
4030b3:\t01 d0 \tadd %edx,%eax
4030b5:\t89 45 fc \tmov %eax,-0x4(%rbp)
4030b8:\tbf c8 00 00 00 \tmov $0xc8,%edi
4030bd:\te8 eb e5 ff ff \tcall 4016ad <GenerateRandomNumber>
...
403174:\t8b 45 f0 \tmov -0x10(%rbp),%eax
403177:\t39 45 fc \tcmp %eax,-0x4(%rbp) # 注意这里
40317a:\t74 05 \tje 403181 <phase_3_5+0x180>
40317c:\te8 75 2a 00 00 \tcall 405bf6 <explode_bomb>
403181:\t90 \tnop
403182:\tc9 \tleave
403183:\tc3 \tret

\n

看起来一大堆很吓人对不对?实际上确实很吓人。

\n

但是发现其中玄机后其实简单的没边,最终答案就藏在0x403177里面,前提是确保这一步前炸弹不爆炸(意识到要爆炸了直接run一下重开qwq)。

\n
\n

动态调试

阅读Phase_3_5发现这一关其实需要两个输入,并且第一个输入必须是rand_div,这里建议通过si单步执行监控好rand_div值变化,确定正确结果后使用run重开正确输入第一个密码后才能进行下一步求解:

\n
1
2
3
4
5
6
7
8
9
10
11
(lldb) si
Process 13376 stopped
* thread #1, name = 'bomb_linux', stop reason = instruction step into
frame #0: 0x000000000040317a bomb_linux`phase_3_5 + 377
bomb_linux`phase_3_5:
-> 0x40317a <+377>: je 0x403181 ; <+384>
0x40317c <+379>: callq 0x405bf6 ; explode_bomb
0x403181 <+384>: nop
0x403182 <+385>: leave
(lldb) x/wx $rbp-0x4
0x7fffffffdb0c: 0xffffffd7
\n

例如这里我可以打印出第二个值结合第一个值得到第三关正确结果。

\n
\n

Phase_4

静态分析

本题依旧开局跳转,笔者的跳转方向是phase_4_01,如何跳转不再强调关注rand_div的值即可,下面请D指导解读一下phase_4_01的内容:

\n
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
0000000000404895 <phase_4_01>:
; 函数入口,初始化栈帧
404895:\tf3 0f 1e fa \tendbr64
404899:\t55 \tpush %rbp
40489a:\t48 89 e5 \tmov %rsp,%rbp
40489d:\t48 83 ec 70 \tsub $0x70,%rsp ; 分配栈空间

; 初始化斐波那契数组(F(10)~F(24)的十六进制值)
4048a1:\t48 89 7d 98 \tmov %rdi,-0x68(%rbp) ; 保存输入字符串指针
4048a5:\tc7 45 b0 37 00 00 00 \tmovl $0x37,-0x50(%rbp) ; F(10)=55
4048ac:\tc7 45 b4 59 00 00 00 \tmovl $0x59,-0x4c(%rbp) ; F(11)=89
4048b3:\tc7 45 b8 90 00 00 00 \tmovl $0x90,-0x48(%rbp) ; F(12)=144
4048ba:\tc7 45 bc e9 00 00 00 \tmovl $0xe9,-0x44(%rbp) ; F(13)=233
4048c1:\tc7 45 c0 79 01 00 00 \tmovl $0x179,-0x40(%rbp) ; F(14)=377
4048c8:\tc7 45 c4 62 02 00 00 \tmovl $0x262,-0x3c(%rbp) ; F(15)=610
4048cf:\tc7 45 c8 db 03 00 00 \tmovl $0x3db,-0x38(%rbp) ; F(16)=987
4048d6:\tc7 45 cc 3d 06 00 00 \tmovl $0x63d,-0x34(%rbp) ; F(17)=1597
4048dd:\tc7 45 d0 18 0a 00 00 \tmovl $0xa18,-0x30(%rbp) ; F(18)=2584
4048e4:\tc7 45 d4 55 10 00 00 \tmovl $0x1055,-0x2c(%rbp) ; F(19)=4181
4048eb:\tc7 45 d8 6d 1a 00 00 \tmovl $0x1a6d,-0x28(%rbp) ; F(20)=6765
4048f2:\tc7 45 dc c2 2a 00 00 \tmovl $0x2ac2,-0x24(%rbp) ; F(21)=10946
4048f9:\tc7 45 e0 2f 45 00 00 \tmovl $0x452f,-0x20(%rbp) ; F(22)=17711
404900:\tc7 45 e4 f1 6f 00 00 \tmovl $0x6ff1,-0x1c(%rbp) ; F(23)=28657
404907:\tc7 45 e8 20 b5 00 00 \tmovl $0xb520,-0x18(%rbp) ; F(24)=46368

; 读取输入到局部变量(格式为"%d")
40490e:\t48 8d 55 ac \tlea -0x54(%rbp),%rdx ; 输入存储地址
404912:\t48 8b 45 98 \tmov -0x68(%rbp),%rax ; 输入字符串
404916:\t48 8d 0d 93 1f 00 00 \tlea 0x1f93(%rip),%rcx ; 格式字符串"%d"
40491d:\t48 89 ce \tmov %rcx,%rsi
404920:\t48 89 c7 \tmov %rax,%rdi
404923:\tb8 00 00 00 00 \tmov $0x0,%eax
404928:\te8 63 c8 ff ff \tcall 401190 <__isoc99_sscanf@plt>

; 验证输入有效性(必须为1个正数)
40492d:\t89 45 fc \tmov %eax,-0x4(%rbp) ; sscanf返回值
404930:\t83 7d fc 01 \tcmpl $0x1,-0x4(%rbp) ; 检查是否读取1个参数
404934:\t75 07 \tjne 40493d <phase_4_01+0xa8> ; 失败则爆炸
404936:\t8b 45 ac \tmov -0x54(%rbp),%eax ; 获取输入值N
404939:\t85 c0 \ttest %eax,%eax ; 检查N > 0
40493b:\t7f 05 \tjg 404942 <phase_4_01+0xad>
40493d:\te8 b4 12 00 00 \tcall 405bf6 <explode_bomb>

; 检查输入值上限(必须 > 1999)
404942:\t8b 45 ac \tmov -0x54(%rbp),%eax
404945:\t3d cf 07 00 00 \tcmp $0x7cf,%eax ; 1999的十六进制
40494a:\t7f 05 \tjg 404951 <phase_4_01+0xbc> ; N > 1999?
40494c:\te8 a5 12 00 00 \tcall 405bf6 <explode_bomb>

; 计算 N/2000(通过定点数乘法优化)
404951:\t8b 45 ac \tmov -0x54(%rbp),%eax ; 输入值N
404954:\t48 63 d0 \tmovslq %eax,%rdx ; 符号扩展
404957:\t48 69 d2 d3 4d 62 10 \timul $0x10624dd3,%rdx,%rdx ; 乘以274877907(≈2^32/2000)
40495e:\t48 c1 ea 20 \tshr $0x20,%rdx ; 取高32位
404962:\tc1 fa 07 \tsar $0x7,%edx ; 算术右移7位 → N/2000
404965:\tc1 f8 1f \tsar $0x1f,%eax ; 符号位扩展
404968:\t89 c1 \tmov %eax,%ecx
40496a:\t89 d0 \tmov %edx,%eax
40496c:\t29 c8 \tsub %ecx,%eax ; 处理负数情况
40496e:\t89 45 ac \tmov %eax,-0x54(%rbp) ; 保存k = N/2000

; 调用递归函数func4_0(k), 这个函数用于计算斐波那契数列
404971:\t8b 45 ac \tmov -0x54(%rbp),%eax
404974:\t89 c7 \tmov %eax,%edi ; 参数k
404976:\te8 ce fd ff ff \tcall 404749 <func4_0> ; 返回值eax=F(k+1)
40497b:\t89 45 f8 \tmov %eax,-0x8(%rbp) ; 保存结果

; 生成随机索引并验证结果
40497e:\tbf 0f 00 00 00 \tmov $0xf,%edi ; 参数15
404983:\te8 25 cd ff ff \tcall 4016ad <GenerateRandomNumber> ; 生成0~14随机数
404988:\t48 8b 05 91 3e 00 00 \tmov 0x3e91(%rip),%rax # 408820 <rand_div> ; 获取随机索引
40498f:\t8b 44 85 b0 \tmov -0x50(%rbp,%rax,4),%eax ; 取数组[rand_div]的值
404993:\t39 45 f8 \tcmp %eax,-0x8(%rbp) ; 比较func4_0(k) == 数组值?
404996:\t74 05 \tje 40499d <phase_4_01+0x108>
404998:\te8 59 12 00 00 \tcall 405bf6 <explode_bomb>
\n

所以相对还是很明了的,依旧是关注rand_div

\n

动态调试

先找出rand_div在最后判断前的取值,比如我下面的0xa:

\n
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
(lldb) si
Process 27027 stopped
* thread #1, name = 'bomb_linux', stop reason = instruction step into
frame #0: 0x0000000000401719 bomb_linux`GenerateRandomNumber + 108
bomb_linux`GenerateRandomNumber:
-> 0x401719 <+108>: movq %rax, 0x7100(%rip) ; rand_div
0x401720 <+115>: jmp 0x401723 ; <+118>
0x401722 <+117>: nop
0x401723 <+118>: popq %rbp
(lldb) si
Process 27027 stopped
* thread #1, name = 'bomb_linux', stop reason = instruction step into
frame #0: 0x0000000000401720 bomb_linux`GenerateRandomNumber + 115
bomb_linux`GenerateRandomNumber:
-> 0x401720 <+115>: jmp 0x401723 ; <+118>
0x401722 <+117>: nop
0x401723 <+118>: popq %rbp
0x401724 <+119>: retq
(lldb) x/gx &rand_div
0x00408820: 0x000000000000000a
\n\n

而当 rand_div = 0xa(即十进制 10)时,输入值 N 的计算步骤如下:

\n
    \n
  • 数组索引 10 的值是 斐波那契数列第 20 项F(20) = 6765)。

    \n
  • \n
  • func4_0(k) 实际计算的是 标准斐波那契数列的第 k+1(例如,func4_0(0) = 1 = F(2)) 需要满足:

    \n
    1
    func4_0(k) = F(k+1) = F(20)
    \n

    解得:
    k + 1 = 20 → k = 19

    \n
  • \n
  • k = N / 2000N = 2000 * k = 2000 * 19 = 38000.
    从而得解。
    \"phase_4\"

    \n
  • \n
\n
\n

Phase_Impossible

Impossible?

\n

从这道题开始偷懒了,掏出ghidra直接看c代码了解一下大概流程再去objdump看汇编:

\n
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
void phase_impossible(char *param_1)

{
int iVar1;
size_t sVar2;
undefined local_118 [256];
long local_18;
long local_10;

local_10 = GetTickCount();
sVar2 = strlen(param_1);
if ((sVar2 < 10) || (sVar2 = strlen(param_1), 0x300 < sVar2)) {
explode_bomb();
}
memset(local_118,0,0x100);
tohex(local_118,param_1);
GenerateRandomNumber(0x400);
iVar1 = check_buf_valid(local_118,rand_div & 0xffffffff);
if (iVar1 == 0) {
puts(&DAT_00406518);
explode_bomb();
}
GenerateRandomNumber(3);
if (rand_div != 2) {
if (2 < rand_div) goto LAB_00401891;
if (rand_div == 0) {
goto_buf_0(local_118);
}
else if (rand_div != 1) goto LAB_00401891;
goto_buf_1(local_118);
}
goto_buf_2(local_118);
LAB_00401891:
explode_bomb();
GenerateRandomNumber(0x400);
if ((long)(int)result != rand_div) {
printf(&DAT_00406560,rand_div,(ulong)result);
explode_bomb();
}
local_18 = GetTickCount();
if (1000 < (ulong)(local_18 - local_10)) {
puts(&DAT_004065a8);
explode_bomb();
}
return;
}
\n

最终任务还是很明确的,需要写一段机器码修改result的数值,但是注意要能通过check_buf_valid检测,并且最后指令必须是跳转到0x401896不然就会触发phase_impossible0x401891处的explode_bomb函数,唯一的难点是跟踪rand_div的数值变化,建议使用register write来修改check_buf_valid的返回值使其强制通过然后监控rand_div每一次的数值变化(x/gx &rand_div),记录好rand_div的结果后开始指令设计,需要满足:

\n
    \n
  • 指令的异或和为rand_div第一次的数值末尾八位以通过检查;
  • \n
  • 修改result使其数值等于rand_div第三次数值;
  • \n
  • 跳转到0x401896避免炸弹;
  • \n
\n

如果前几问都完成了到这里应该是没有问题的。

\n
\n

Phase_Secret

隐藏彩蛋,并非隐藏。汇编里写的非常清楚:

\n
1
2
3
4
5
6
7
8
9
10
11
12
0000000000401a8b <phase_secret>:
401a8b:\tf3 0f 1e fa \tendbr64
401a8f:\t55 \tpush %rbp
401a90:\t48 89 e5 \tmov %rsp,%rbp
401a93:\t48 83 ec 10 \tsub $0x10,%rsp
401a97:\t48 89 7d f8 \tmov %rdi,-0x8(%rbp)
401a9b:\t48 8d 05 26 4b 00 00 \tlea 0x4b26(%rip),%rax # 4065c8 <_IO_stdin_used+0x5c8>
401aa2:\t48 89 c7 \tmov %rax,%rdi
401aa5:\te8 76 f6 ff ff \tcall 401120 <puts@plt>
401aaa:\t90 \tnop
401aab:\tc9 \tleave
401aac:\tc3 \tret
\n

注意到这段指令在原程序中完全没有执行说明是需要用户自己跳转的,也非常简单只需要在phase_5中设计指令时加一个要求跳转到0x401a8b即可。

\n

完结
\"Case

\n"},{"title":"Overleaf Toolkit踩坑记录","date":"2024-11-06T01:56:18.000Z","_content":"\n在安装 Overleaf Toolkit 时,表面上看起来很简单只要执行一些脚本就行,但是在某地区网络环境下还是遇到了一些问题和困难,这里记录安装过程中的问题和解决方案,方便以后参考。\n\n具体流程就不赘述了,先将访问[Overleaf Toolkit官方仓库](https://github.com/overleaf/toolkit)将代码clone下来并按照手册执行即可。\n\n## 问题一:无法 Pull Mongo、Redis 和 Sharelatex 镜像\n\n在执行 `bin/up` 脚本启动服务时,发现 Mongo、Redis 和 Sharelatex 镜像无法拉取。主要原因是 Docker 在国内网络环境中,直接访问 Docker Hub 可能会被限制,导致拉取镜像失败。\n\n截至这篇博客编写时网上提供的镜像均无法解决只能使用代理。\n\n### 解决方案:为 Docker 设置代理\n\n通过配置 Docker 的代理,可以解决拉取镜像受限的问题。步骤如下:\n\n1. 创建一个 `systemd` 服务文件,为 Docker 设置代理。\n2. 编辑 `/etc/systemd/system/docker.service.d/proxy.conf` 文件,添加以下内容(确保已经设置了代理服务器):\n\n ```ini\n [Service]\n Environment=\"HTTP_PROXY=http://:\"\n Environment=\"HTTPS_PROXY=http://:\"\n Environment=\"NO_PROXY=localhost,127.0.0.1\"\n ```\n\n3. 重新加载 `systemd` 配置并重启 Docker:\n\n ```bash\n sudo systemctl daemon-reload\n sudo systemctl restart docker\n ```\n\n4. 重启 Docker 后再次执行 `sudo ./up`,此时应该可以正常拉取 Mongo、Redis 和 Sharelatex 的镜像。等待执行完成即可。\n\n\n---\n\n## 问题二:外部机器无法访问 Overleaf Web 服务\n\n先确认ipv4和ipv6转发功能没有问题,但是依旧出现只能本机访问127.0.0.1,其他方式均无法访问,甚至nmap扫描端口也发现并未开放sharelatex端口,可以通过修改docker-compose配置文件解决。\n\n注意到在默认的 `lib/docker-compose.base.yml` 配置中,Overleaf Web 服务的端口映射方式为 `\"${OVERLEAF_LISTEN_IP:-127.0.0.1}:${OVERLEAF_PORT:-80}:80\"`。\n\n### 解决方案:修改端口映射\n\n在 `docker-compose.base.yml` 文件中,删除 `${OVERLEAF_LISTEN_IP:-127.0.0.1}` 前缀,将 `\"${OVERLEAF_LISTEN_IP:-127.0.0.1}:${OVERLEAF_PORT:-80}:80\"` 修改为 `\"${OVERLEAF_PORT:-80}:80\"`。这样可以使 Docker 将 Overleaf 的 Web 服务端口暴露给所有网络接口,从而允许外部机器访问。\n\n修改后的 `docker-compose.base.yml` 端口映射配置如下:\n\n```yaml\n---\nservices:\n\n sharelatex:\n restart: always\n image: \"${IMAGE}\"\n container_name: sharelatex\n volumes:\n - \"${OVERLEAF_DATA_PATH}:${OVERLEAF_IN_CONTAINER_DATA_PATH}\"\n ports:\n #- \"${OVERLEAF_LISTEN_IP:-127.0.0.1}:${OVERLEAF_PORT:-80}:80\"\n - \"${OVERLEAF_PORT:-80}:80\"\n environment:\n GIT_BRIDGE_ENABLED: \"${GIT_BRIDGE_ENABLED}\"\n GIT_BRIDGE_HOST: \"git-bridge\"\n GIT_BRIDGE_PORT: \"8000\"\n REDIS_HOST: \"${REDIS_HOST}\"\n REDIS_PORT: \"${REDIS_PORT}\"\n V1_HISTORY_URL: \"http://sharelatex:3100/api\"\n env_file:\n - ../config/variables.env\n stop_grace_period: 60s\n```\n\n完成修改后,重新启动 Docker 服务:\n\n```bash\nsudo ./start\n```\n\n现在,外部机器可以通过服务器的 IP 地址加端口 `{Overleaf_Port}` 访问 Overleaf Web 服务。\n\n---\n\n## 总结\n\n这次安装 Overleaf Toolkit 时,主要遇到的两个问题分别是镜像拉取失败和端口映射受限。通过为 Docker 设置代理解决了拉取镜像的问题,而通过修改 `docker-compose.base.yml` 中的端口映射使外部设备可以访问 Overleaf 服务。\n\n可以在这里参考我的本地[Overleaf](https://overleaf.hifuu.ink)效果,注意安装完后还需要配置latex包和中文字体。\n\n这篇记录希望能为遇到类似问题的朋友提供帮助。\n","source":"_posts/overleaf.md","raw":"---\ntitle: Overleaf Toolkit踩坑记录\ndate: 2024-11-06 09:56:18\ntags: 技术\ncategories: [技术分享]\n---\n\n在安装 Overleaf Toolkit 时,表面上看起来很简单只要执行一些脚本就行,但是在某地区网络环境下还是遇到了一些问题和困难,这里记录安装过程中的问题和解决方案,方便以后参考。\n\n具体流程就不赘述了,先将访问[Overleaf Toolkit官方仓库](https://github.com/overleaf/toolkit)将代码clone下来并按照手册执行即可。\n\n## 问题一:无法 Pull Mongo、Redis 和 Sharelatex 镜像\n\n在执行 `bin/up` 脚本启动服务时,发现 Mongo、Redis 和 Sharelatex 镜像无法拉取。主要原因是 Docker 在国内网络环境中,直接访问 Docker Hub 可能会被限制,导致拉取镜像失败。\n\n截至这篇博客编写时网上提供的镜像均无法解决只能使用代理。\n\n### 解决方案:为 Docker 设置代理\n\n通过配置 Docker 的代理,可以解决拉取镜像受限的问题。步骤如下:\n\n1. 创建一个 `systemd` 服务文件,为 Docker 设置代理。\n2. 编辑 `/etc/systemd/system/docker.service.d/proxy.conf` 文件,添加以下内容(确保已经设置了代理服务器):\n\n ```ini\n [Service]\n Environment=\"HTTP_PROXY=http://:\"\n Environment=\"HTTPS_PROXY=http://:\"\n Environment=\"NO_PROXY=localhost,127.0.0.1\"\n ```\n\n3. 重新加载 `systemd` 配置并重启 Docker:\n\n ```bash\n sudo systemctl daemon-reload\n sudo systemctl restart docker\n ```\n\n4. 重启 Docker 后再次执行 `sudo ./up`,此时应该可以正常拉取 Mongo、Redis 和 Sharelatex 的镜像。等待执行完成即可。\n\n\n---\n\n## 问题二:外部机器无法访问 Overleaf Web 服务\n\n先确认ipv4和ipv6转发功能没有问题,但是依旧出现只能本机访问127.0.0.1,其他方式均无法访问,甚至nmap扫描端口也发现并未开放sharelatex端口,可以通过修改docker-compose配置文件解决。\n\n注意到在默认的 `lib/docker-compose.base.yml` 配置中,Overleaf Web 服务的端口映射方式为 `\"${OVERLEAF_LISTEN_IP:-127.0.0.1}:${OVERLEAF_PORT:-80}:80\"`。\n\n### 解决方案:修改端口映射\n\n在 `docker-compose.base.yml` 文件中,删除 `${OVERLEAF_LISTEN_IP:-127.0.0.1}` 前缀,将 `\"${OVERLEAF_LISTEN_IP:-127.0.0.1}:${OVERLEAF_PORT:-80}:80\"` 修改为 `\"${OVERLEAF_PORT:-80}:80\"`。这样可以使 Docker 将 Overleaf 的 Web 服务端口暴露给所有网络接口,从而允许外部机器访问。\n\n修改后的 `docker-compose.base.yml` 端口映射配置如下:\n\n```yaml\n---\nservices:\n\n sharelatex:\n restart: always\n image: \"${IMAGE}\"\n container_name: sharelatex\n volumes:\n - \"${OVERLEAF_DATA_PATH}:${OVERLEAF_IN_CONTAINER_DATA_PATH}\"\n ports:\n #- \"${OVERLEAF_LISTEN_IP:-127.0.0.1}:${OVERLEAF_PORT:-80}:80\"\n - \"${OVERLEAF_PORT:-80}:80\"\n environment:\n GIT_BRIDGE_ENABLED: \"${GIT_BRIDGE_ENABLED}\"\n GIT_BRIDGE_HOST: \"git-bridge\"\n GIT_BRIDGE_PORT: \"8000\"\n REDIS_HOST: \"${REDIS_HOST}\"\n REDIS_PORT: \"${REDIS_PORT}\"\n V1_HISTORY_URL: \"http://sharelatex:3100/api\"\n env_file:\n - ../config/variables.env\n stop_grace_period: 60s\n```\n\n完成修改后,重新启动 Docker 服务:\n\n```bash\nsudo ./start\n```\n\n现在,外部机器可以通过服务器的 IP 地址加端口 `{Overleaf_Port}` 访问 Overleaf Web 服务。\n\n---\n\n## 总结\n\n这次安装 Overleaf Toolkit 时,主要遇到的两个问题分别是镜像拉取失败和端口映射受限。通过为 Docker 设置代理解决了拉取镜像的问题,而通过修改 `docker-compose.base.yml` 中的端口映射使外部设备可以访问 Overleaf 服务。\n\n可以在这里参考我的本地[Overleaf](https://overleaf.hifuu.ink)效果,注意安装完后还需要配置latex包和中文字体。\n\n这篇记录希望能为遇到类似问题的朋友提供帮助。\n","slug":"overleaf","published":1,"updated":"2024-11-06T02:31:56.685Z","comments":1,"layout":"post","photos":[],"_id":"cm7jziody001pwi2bck6n2j6b","content":"

在安装 Overleaf Toolkit 时,表面上看起来很简单只要执行一些脚本就行,但是在某地区网络环境下还是遇到了一些问题和困难,这里记录安装过程中的问题和解决方案,方便以后参考。

\n

具体流程就不赘述了,先将访问Overleaf Toolkit官方仓库将代码clone下来并按照手册执行即可。

\n

问题一:无法 Pull Mongo、Redis 和 Sharelatex 镜像

在执行 bin/up 脚本启动服务时,发现 Mongo、Redis 和 Sharelatex 镜像无法拉取。主要原因是 Docker 在国内网络环境中,直接访问 Docker Hub 可能会被限制,导致拉取镜像失败。

\n

截至这篇博客编写时网上提供的镜像均无法解决只能使用代理。

\n

解决方案:为 Docker 设置代理

通过配置 Docker 的代理,可以解决拉取镜像受限的问题。步骤如下:

\n
    \n
  1. 创建一个 systemd 服务文件,为 Docker 设置代理。

    \n
  2. \n
  3. 编辑 /etc/systemd/system/docker.service.d/proxy.conf 文件,添加以下内容(确保已经设置了代理服务器):

    \n
    1
    2
    3
    4
    [Service]
    Environment="HTTP_PROXY=http://<your-proxy-server>:<port>"
    Environment="HTTPS_PROXY=http://<your-proxy-server>:<port>"
    Environment="NO_PROXY=localhost,127.0.0.1"
    \n
  4. \n
  5. 重新加载 systemd 配置并重启 Docker:

    \n
    1
    2
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    \n
  6. \n
  7. 重启 Docker 后再次执行 sudo ./up,此时应该可以正常拉取 Mongo、Redis 和 Sharelatex 的镜像。等待执行完成即可。

    \n
  8. \n
\n
\n

问题二:外部机器无法访问 Overleaf Web 服务

先确认ipv4和ipv6转发功能没有问题,但是依旧出现只能本机访问127.0.0.1,其他方式均无法访问,甚至nmap扫描端口也发现并未开放sharelatex端口,可以通过修改docker-compose配置文件解决。

\n

注意到在默认的 lib/docker-compose.base.yml 配置中,Overleaf Web 服务的端口映射方式为 "${OVERLEAF_LISTEN_IP:-127.0.0.1}:${OVERLEAF_PORT:-80}:80"

\n

解决方案:修改端口映射

docker-compose.base.yml 文件中,删除 ${OVERLEAF_LISTEN_IP:-127.0.0.1} 前缀,将 "${OVERLEAF_LISTEN_IP:-127.0.0.1}:${OVERLEAF_PORT:-80}:80" 修改为 "${OVERLEAF_PORT:-80}:80"。这样可以使 Docker 将 Overleaf 的 Web 服务端口暴露给所有网络接口,从而允许外部机器访问。

\n

修改后的 docker-compose.base.yml 端口映射配置如下:

\n
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
---
services:

sharelatex:
restart: always
image: "${IMAGE}"
container_name: sharelatex
volumes:
- "${OVERLEAF_DATA_PATH}:${OVERLEAF_IN_CONTAINER_DATA_PATH}"
ports:
#- "${OVERLEAF_LISTEN_IP:-127.0.0.1}:${OVERLEAF_PORT:-80}:80"
- "${OVERLEAF_PORT:-80}:80"
environment:
GIT_BRIDGE_ENABLED: "${GIT_BRIDGE_ENABLED}"
GIT_BRIDGE_HOST: "git-bridge"
GIT_BRIDGE_PORT: "8000"
REDIS_HOST: "${REDIS_HOST}"
REDIS_PORT: "${REDIS_PORT}"
V1_HISTORY_URL: "http://sharelatex:3100/api"
env_file:
- ../config/variables.env
stop_grace_period: 60s
\n\n

完成修改后,重新启动 Docker 服务:

\n
1
sudo ./start
\n\n

现在,外部机器可以通过服务器的 IP 地址加端口 {Overleaf_Port} 访问 Overleaf Web 服务。

\n
\n

总结

这次安装 Overleaf Toolkit 时,主要遇到的两个问题分别是镜像拉取失败和端口映射受限。通过为 Docker 设置代理解决了拉取镜像的问题,而通过修改 docker-compose.base.yml 中的端口映射使外部设备可以访问 Overleaf 服务。

\n

可以在这里参考我的本地Overleaf效果,注意安装完后还需要配置latex包和中文字体。

\n

这篇记录希望能为遇到类似问题的朋友提供帮助。

\n","excerpt":"","more":"

在安装 Overleaf Toolkit 时,表面上看起来很简单只要执行一些脚本就行,但是在某地区网络环境下还是遇到了一些问题和困难,这里记录安装过程中的问题和解决方案,方便以后参考。

\n

具体流程就不赘述了,先将访问Overleaf Toolkit官方仓库将代码clone下来并按照手册执行即可。

\n

问题一:无法 Pull Mongo、Redis 和 Sharelatex 镜像

在执行 bin/up 脚本启动服务时,发现 Mongo、Redis 和 Sharelatex 镜像无法拉取。主要原因是 Docker 在国内网络环境中,直接访问 Docker Hub 可能会被限制,导致拉取镜像失败。

\n

截至这篇博客编写时网上提供的镜像均无法解决只能使用代理。

\n

解决方案:为 Docker 设置代理

通过配置 Docker 的代理,可以解决拉取镜像受限的问题。步骤如下:

\n
    \n
  1. 创建一个 systemd 服务文件,为 Docker 设置代理。

    \n
  2. \n
  3. 编辑 /etc/systemd/system/docker.service.d/proxy.conf 文件,添加以下内容(确保已经设置了代理服务器):

    \n
    1
    2
    3
    4
    [Service]
    Environment="HTTP_PROXY=http://<your-proxy-server>:<port>"
    Environment="HTTPS_PROXY=http://<your-proxy-server>:<port>"
    Environment="NO_PROXY=localhost,127.0.0.1"
    \n
  4. \n
  5. 重新加载 systemd 配置并重启 Docker:

    \n
    1
    2
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    \n
  6. \n
  7. 重启 Docker 后再次执行 sudo ./up,此时应该可以正常拉取 Mongo、Redis 和 Sharelatex 的镜像。等待执行完成即可。

    \n
  8. \n
\n
\n

问题二:外部机器无法访问 Overleaf Web 服务

先确认ipv4和ipv6转发功能没有问题,但是依旧出现只能本机访问127.0.0.1,其他方式均无法访问,甚至nmap扫描端口也发现并未开放sharelatex端口,可以通过修改docker-compose配置文件解决。

\n

注意到在默认的 lib/docker-compose.base.yml 配置中,Overleaf Web 服务的端口映射方式为 "${OVERLEAF_LISTEN_IP:-127.0.0.1}:${OVERLEAF_PORT:-80}:80"

\n

解决方案:修改端口映射

docker-compose.base.yml 文件中,删除 ${OVERLEAF_LISTEN_IP:-127.0.0.1} 前缀,将 "${OVERLEAF_LISTEN_IP:-127.0.0.1}:${OVERLEAF_PORT:-80}:80" 修改为 "${OVERLEAF_PORT:-80}:80"。这样可以使 Docker 将 Overleaf 的 Web 服务端口暴露给所有网络接口,从而允许外部机器访问。

\n

修改后的 docker-compose.base.yml 端口映射配置如下:

\n
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
---
services:

sharelatex:
restart: always
image: "${IMAGE}"
container_name: sharelatex
volumes:
- "${OVERLEAF_DATA_PATH}:${OVERLEAF_IN_CONTAINER_DATA_PATH}"
ports:
#- "${OVERLEAF_LISTEN_IP:-127.0.0.1}:${OVERLEAF_PORT:-80}:80"
- "${OVERLEAF_PORT:-80}:80"
environment:
GIT_BRIDGE_ENABLED: "${GIT_BRIDGE_ENABLED}"
GIT_BRIDGE_HOST: "git-bridge"
GIT_BRIDGE_PORT: "8000"
REDIS_HOST: "${REDIS_HOST}"
REDIS_PORT: "${REDIS_PORT}"
V1_HISTORY_URL: "http://sharelatex:3100/api"
env_file:
- ../config/variables.env
stop_grace_period: 60s
\n\n

完成修改后,重新启动 Docker 服务:

\n
1
sudo ./start
\n\n

现在,外部机器可以通过服务器的 IP 地址加端口 {Overleaf_Port} 访问 Overleaf Web 服务。

\n
\n

总结

这次安装 Overleaf Toolkit 时,主要遇到的两个问题分别是镜像拉取失败和端口映射受限。通过为 Docker 设置代理解决了拉取镜像的问题,而通过修改 docker-compose.base.yml 中的端口映射使外部设备可以访问 Overleaf 服务。

\n

可以在这里参考我的本地Overleaf效果,注意安装完后还需要配置latex包和中文字体。

\n

这篇记录希望能为遇到类似问题的朋友提供帮助。

\n"},{"title":"命令行编辑器的优雅新选择","date":"2024-12-12T17:40:27.000Z","_content":"\n意外发现Zellij+Helix还挺好用的\n\n避免了vim/neovim的配置流程直接就能上手的轻量命令行开发环境\n\n稍微了解一下二者的快捷键就能舒适码字了\n\n甚至还都是rust出品\n\n即刻尝试一下[Zellij](https://zellij.dev/)和[Helix](https://helix-editor.com/)吧!\n\n// 至于Helix没有文件树显示的方案,反正Helix选择文件挺方便的要文件树无非是希望编辑窗口居于窗口中央,倒是可以用watch和tree命令来代替还能手动设置哪些文件不用显示hhh\n\n![实际效果](/images/zellij-helix.jpg)\n","source":"_posts/zellij-helix.md","raw":"---\ntitle: 命令行编辑器的优雅新选择\ndate: 2024-12-13 01:40:27\ntags: [技术分享]\n---\n\n意外发现Zellij+Helix还挺好用的\n\n避免了vim/neovim的配置流程直接就能上手的轻量命令行开发环境\n\n稍微了解一下二者的快捷键就能舒适码字了\n\n甚至还都是rust出品\n\n即刻尝试一下[Zellij](https://zellij.dev/)和[Helix](https://helix-editor.com/)吧!\n\n// 至于Helix没有文件树显示的方案,反正Helix选择文件挺方便的要文件树无非是希望编辑窗口居于窗口中央,倒是可以用watch和tree命令来代替还能手动设置哪些文件不用显示hhh\n\n![实际效果](/images/zellij-helix.jpg)\n","slug":"zellij-helix","published":1,"updated":"2025-02-23T15:53:44.966Z","comments":1,"layout":"post","photos":[],"_id":"cm7jziody001qwi2ba7oj09d4","content":"

意外发现Zellij+Helix还挺好用的

\n

避免了vim/neovim的配置流程直接就能上手的轻量命令行开发环境

\n

稍微了解一下二者的快捷键就能舒适码字了

\n

甚至还都是rust出品

\n

即刻尝试一下ZellijHelix吧!

\n

// 至于Helix没有文件树显示的方案,反正Helix选择文件挺方便的要文件树无非是希望编辑窗口居于窗口中央,倒是可以用watch和tree命令来代替还能手动设置哪些文件不用显示hhh

\n

\"实际效果\"

\n","excerpt":"","more":"

意外发现Zellij+Helix还挺好用的

\n

避免了vim/neovim的配置流程直接就能上手的轻量命令行开发环境

\n

稍微了解一下二者的快捷键就能舒适码字了

\n

甚至还都是rust出品

\n

即刻尝试一下ZellijHelix吧!

\n

// 至于Helix没有文件树显示的方案,反正Helix选择文件挺方便的要文件树无非是希望编辑窗口居于窗口中央,倒是可以用watch和tree命令来代替还能手动设置哪些文件不用显示hhh

\n

\"实际效果\"

\n"},{"title":"原来我还有个博客","date":"2024-06-02T16:19:55.000Z","_content":"\n2025-02-25\n\n最近整理了一下缓存部署起来方便多了,有空就写点东西记录一下吧~\n","source":"_posts/原来我还有个博客.md","raw":"---\ntitle: 原来我还有个博客\ndate: 2024-06-03 00:19:55\ntags: 日志\n---\n\n2025-02-25\n\n最近整理了一下缓存部署起来方便多了,有空就写点东西记录一下吧~\n","slug":"原来我还有个博客","published":1,"updated":"2025-02-25T04:26:34.224Z","comments":1,"layout":"post","photos":[],"_id":"cm7jziody001swi2bfmuk60pc","content":"

2025-02-25

\n

最近整理了一下缓存部署起来方便多了,有空就写点东西记录一下吧~

\n","excerpt":"","more":"

2025-02-25

\n

最近整理了一下缓存部署起来方便多了,有空就写点东西记录一下吧~

\n"},{"title":"梦开始的地方","date":"2023-12-06T14:53:35.000Z","_content":"\n不知不觉已经高中毕业快半年了,现在在NUDT的生活还算适应吧,交到了一些很有趣的朋友并且在技术方面取得了一定突破(很期待明年的asc2024呢),今天看到华科一位学长的博客突然想起我还没好好搭建过自己的Blog,于是心血来潮搞了下我的Github Pages。\n\n今后会在这里更新记录自己的生活,学习,工作,以及一些想法,希望能坚持下来吧。\n\n> P.S.最近我都经历了些什么:\n>\n> 1. 时长21天军训,认识了一群很可爱的班长(尤其是负责我们5班6班的英子),初步和队里的同学了解;\n> 2. 学习了一些C++基础,在洛谷上刷了不少算法题;\n> 3. ACM招新赛被薄纱,差一题进入校队;\n> 4. 对算法竞赛感到疑惑,尝试学习Flutter和操作系统开阔视野;\n> 5. 入坑战地,爽爽爽;\n> 6. 被一位巨强的学长发掘,加入NUDT超算队;\n> 7. 面临三个考试周,熬过去就是胜利;\n\n虽然天天早八满课很不爽,但是平时还是可以学习自己想学的技术周末也可以打游戏感觉还行吧,我还是相信NUDT,既来之则安之。\n\n这里,毕竟是我梦开始的地方。\n\n> 胸怀祖国,团结协作,志在高峰,奋勇拼搏!\n\n今天是2023年12月6日,加油!\n\n------------------------\n\n修改一下,有的话还是不适合明说哦\n\n5YK75a2p5a2Q5Lus77yM5b+r6YCD5ZWK77yB77yB77yBCg==\n\n","source":"_posts/梦开始的地方.md","raw":"---\ntitle: 梦开始的地方\ndate: 2023-12-06 22:53:35\ntags: 日志\n---\n\n不知不觉已经高中毕业快半年了,现在在NUDT的生活还算适应吧,交到了一些很有趣的朋友并且在技术方面取得了一定突破(很期待明年的asc2024呢),今天看到华科一位学长的博客突然想起我还没好好搭建过自己的Blog,于是心血来潮搞了下我的Github Pages。\n\n今后会在这里更新记录自己的生活,学习,工作,以及一些想法,希望能坚持下来吧。\n\n> P.S.最近我都经历了些什么:\n>\n> 1. 时长21天军训,认识了一群很可爱的班长(尤其是负责我们5班6班的英子),初步和队里的同学了解;\n> 2. 学习了一些C++基础,在洛谷上刷了不少算法题;\n> 3. ACM招新赛被薄纱,差一题进入校队;\n> 4. 对算法竞赛感到疑惑,尝试学习Flutter和操作系统开阔视野;\n> 5. 入坑战地,爽爽爽;\n> 6. 被一位巨强的学长发掘,加入NUDT超算队;\n> 7. 面临三个考试周,熬过去就是胜利;\n\n虽然天天早八满课很不爽,但是平时还是可以学习自己想学的技术周末也可以打游戏感觉还行吧,我还是相信NUDT,既来之则安之。\n\n这里,毕竟是我梦开始的地方。\n\n> 胸怀祖国,团结协作,志在高峰,奋勇拼搏!\n\n今天是2023年12月6日,加油!\n\n------------------------\n\n修改一下,有的话还是不适合明说哦\n\n5YK75a2p5a2Q5Lus77yM5b+r6YCD5ZWK77yB77yB77yBCg==\n\n","slug":"梦开始的地方","published":1,"updated":"2025-02-25T04:25:44.687Z","comments":1,"layout":"post","photos":[],"_id":"cm7jziody001uwi2b4q3m2491","content":"

不知不觉已经高中毕业快半年了,现在在NUDT的生活还算适应吧,交到了一些很有趣的朋友并且在技术方面取得了一定突破(很期待明年的asc2024呢),今天看到华科一位学长的博客突然想起我还没好好搭建过自己的Blog,于是心血来潮搞了下我的Github Pages。

\n

今后会在这里更新记录自己的生活,学习,工作,以及一些想法,希望能坚持下来吧。

\n
\n

P.S.最近我都经历了些什么:

\n
    \n
  1. 时长21天军训,认识了一群很可爱的班长(尤其是负责我们5班6班的英子),初步和队里的同学了解;
  2. \n
  3. 学习了一些C++基础,在洛谷上刷了不少算法题;
  4. \n
  5. ACM招新赛被薄纱,差一题进入校队;
  6. \n
  7. 对算法竞赛感到疑惑,尝试学习Flutter和操作系统开阔视野;
  8. \n
  9. 入坑战地,爽爽爽;
  10. \n
  11. 被一位巨强的学长发掘,加入NUDT超算队;
  12. \n
  13. 面临三个考试周,熬过去就是胜利;
  14. \n
\n
\n

虽然天天早八满课很不爽,但是平时还是可以学习自己想学的技术周末也可以打游戏感觉还行吧,我还是相信NUDT,既来之则安之。

\n

这里,毕竟是我梦开始的地方。

\n
\n

胸怀祖国,团结协作,志在高峰,奋勇拼搏!

\n
\n

今天是2023年12月6日,加油!

\n
\n

修改一下,有的话还是不适合明说哦

\n

5YK75a2p5a2Q5Lus77yM5b+r6YCD5ZWK77yB77yB77yBCg==

\n","excerpt":"","more":"

不知不觉已经高中毕业快半年了,现在在NUDT的生活还算适应吧,交到了一些很有趣的朋友并且在技术方面取得了一定突破(很期待明年的asc2024呢),今天看到华科一位学长的博客突然想起我还没好好搭建过自己的Blog,于是心血来潮搞了下我的Github Pages。

\n

今后会在这里更新记录自己的生活,学习,工作,以及一些想法,希望能坚持下来吧。

\n
\n

P.S.最近我都经历了些什么:

\n
    \n
  1. 时长21天军训,认识了一群很可爱的班长(尤其是负责我们5班6班的英子),初步和队里的同学了解;
  2. \n
  3. 学习了一些C++基础,在洛谷上刷了不少算法题;
  4. \n
  5. ACM招新赛被薄纱,差一题进入校队;
  6. \n
  7. 对算法竞赛感到疑惑,尝试学习Flutter和操作系统开阔视野;
  8. \n
  9. 入坑战地,爽爽爽;
  10. \n
  11. 被一位巨强的学长发掘,加入NUDT超算队;
  12. \n
  13. 面临三个考试周,熬过去就是胜利;
  14. \n
\n
\n

虽然天天早八满课很不爽,但是平时还是可以学习自己想学的技术周末也可以打游戏感觉还行吧,我还是相信NUDT,既来之则安之。

\n

这里,毕竟是我梦开始的地方。

\n
\n

胸怀祖国,团结协作,志在高峰,奋勇拼搏!

\n
\n

今天是2023年12月6日,加油!

\n
\n

修改一下,有的话还是不适合明说哦

\n

5YK75a2p5a2Q5Lus77yM5b+r6YCD5ZWK77yB77yB77yBCg==

\n"}],"PostAsset":[],"PostCategory":[{"post_id":"cm7jziodr000bwi2bdhi71dk3","category_id":"cm7jziods000fwi2b6sz39o2v","_id":"cm7jziodu000twi2b8ee81dmz"},{"post_id":"cm7jziods000hwi2b19t43c6n","category_id":"cm7jziodu000nwi2bg9k8dxzp","_id":"cm7jziodv000zwi2b12zyds9h"},{"post_id":"cm7jziodt000kwi2b320w2nl5","category_id":"cm7jziodu000uwi2b02p27nyj","_id":"cm7jziodw0014wi2bab972bli"},{"post_id":"cm7jziodv000xwi2b6ebgcwqs","category_id":"cm7jziodu000nwi2bg9k8dxzp","_id":"cm7jziodw0016wi2b4hlk8p77"},{"post_id":"cm7jziodt000mwi2bcvznhn4q","category_id":"cm7jziodv0010wi2b1nt86jtj","_id":"cm7jziodw0018wi2b3s1j4w7g"},{"post_id":"cm7jziody001pwi2bck6n2j6b","category_id":"cm7jziodv0010wi2b1nt86jtj","_id":"cm7jziodz001vwi2bbp098ntb"}],"PostTag":[{"post_id":"cm7jziodq0005wi2b46qac5mo","tag_id":"cm7jziodp0003wi2be4zr9g22","_id":"cm7jziodr0008wi2b05p82hfn"},{"post_id":"cm7jziodn0001wi2b80cf2h59","tag_id":"cm7jziodp0003wi2be4zr9g22","_id":"cm7jziodr000awi2b1miz4vlj"},{"post_id":"cm7jziodq0006wi2bhm74a0a9","tag_id":"cm7jziodp0003wi2be4zr9g22","_id":"cm7jziods000dwi2bbszzcsxv"},{"post_id":"cm7jziodr0009wi2b5h330fp7","tag_id":"cm7jziodp0003wi2be4zr9g22","_id":"cm7jziods000gwi2b3rlb77wm"},{"post_id":"cm7jziodo0002wi2bhhu604l9","tag_id":"cm7jziodp0003wi2be4zr9g22","_id":"cm7jziodt000jwi2bc1ow4yga"},{"post_id":"cm7jziodr000bwi2bdhi71dk3","tag_id":"cm7jziodp0003wi2be4zr9g22","_id":"cm7jziodt000lwi2bf95dfmcu"},{"post_id":"cm7jziodp0004wi2baobvgc5p","tag_id":"cm7jziodp0003wi2be4zr9g22","_id":"cm7jziodu000owi2b21bqckyf"},{"post_id":"cm7jziods000ewi2bdc6000t9","tag_id":"cm7jziodt000iwi2bfqt12taw","_id":"cm7jziodu000rwi2b8ik6285y"},{"post_id":"cm7jziods000hwi2b19t43c6n","tag_id":"cm7jziodu000qwi2bazol064r","_id":"cm7jziodv000ywi2bhmqc29j3"},{"post_id":"cm7jziodv000xwi2b6ebgcwqs","tag_id":"cm7jziodu000qwi2bazol064r","_id":"cm7jziodw0013wi2b97dk31nx"},{"post_id":"cm7jziodt000kwi2b320w2nl5","tag_id":"cm7jziodv000wwi2bdhq12weu","_id":"cm7jziodw0017wi2b8i031bka"},{"post_id":"cm7jziodt000kwi2b320w2nl5","tag_id":"cm7jziodu000qwi2bazol064r","_id":"cm7jziodw0019wi2bb4x9hl4j"},{"post_id":"cm7jziodt000mwi2bcvznhn4q","tag_id":"cm7jziodw0015wi2b0pf17f27","_id":"cm7jziodw001bwi2b67m7fq36"},{"post_id":"cm7jziodu000pwi2b49gyhjcz","tag_id":"cm7jziodw001awi2bdhuo5k7e","_id":"cm7jziodw001dwi2bf033hi6l"},{"post_id":"cm7jziodu000swi2ba2br64lz","tag_id":"cm7jziodw001awi2bdhuo5k7e","_id":"cm7jziodw001fwi2b0qug30wm"},{"post_id":"cm7jziodv000vwi2baw0jbh0g","tag_id":"cm7jziodw001ewi2b09f1fndp","_id":"cm7jziodx001iwi2bguwveo74"},{"post_id":"cm7jziodv000vwi2baw0jbh0g","tag_id":"cm7jziodx001gwi2b4umfd84q","_id":"cm7jziodx001jwi2b2ol893th"},{"post_id":"cm7jziodv0011wi2bauxoh2vo","tag_id":"cm7jziodw0015wi2b0pf17f27","_id":"cm7jziodx001mwi2b97lyhx5q"},{"post_id":"cm7jziodv0011wi2bauxoh2vo","tag_id":"cm7jziodx001kwi2bei49d5xr","_id":"cm7jziodx001nwi2b8hy800xl"},{"post_id":"cm7jziodv0011wi2bauxoh2vo","tag_id":"cm7jziodx001gwi2b4umfd84q","_id":"cm7jziodx001owi2bbvgn2lio"},{"post_id":"cm7jziody001pwi2bck6n2j6b","tag_id":"cm7jziodw0015wi2b0pf17f27","_id":"cm7jziody001rwi2b3d1zaebh"},{"post_id":"cm7jziody001qwi2ba7oj09d4","tag_id":"cm7jziodw001awi2bdhuo5k7e","_id":"cm7jziody001twi2ba7og07d0"},{"post_id":"cm7jziody001swi2bfmuk60pc","tag_id":"cm7jziodp0003wi2be4zr9g22","_id":"cm7jziodz001wwi2b0gvi282t"},{"post_id":"cm7jziody001uwi2b4q3m2491","tag_id":"cm7jziodp0003wi2be4zr9g22","_id":"cm7jziodz001xwi2bhi5dgpwn"}],"Tag":[{"name":"日志","_id":"cm7jziodp0003wi2be4zr9g22"},{"name":"TEST","_id":"cm7jziodt000iwi2bfqt12taw"},{"name":"音乐","_id":"cm7jziodu000qwi2bazol064r"},{"name":"Vocaloid","_id":"cm7jziodv000wwi2bdhq12weu"},{"name":"技术","_id":"cm7jziodw0015wi2b0pf17f27"},{"name":"技术分享","_id":"cm7jziodw001awi2bdhuo5k7e"},{"name":"板绘","_id":"cm7jziodw001ewi2b09f1fndp"},{"name":"生活","_id":"cm7jziodx001gwi2b4umfd84q"},{"name":"学习","_id":"cm7jziodx001kwi2bei49d5xr"}]}} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..874564e --- /dev/null +++ b/package-lock.json @@ -0,0 +1,3345 @@ +{ + "name": "hexo-site", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "hexo-site", + "version": "0.0.0", + "dependencies": { + "hexo": "^7.3.0", + "hexo-deployer-git": "^4.0.0", + "hexo-generator-archive": "^2.0.0", + "hexo-generator-category": "^2.0.0", + "hexo-generator-index": "^3.0.0", + "hexo-generator-tag": "^2.0.0", + "hexo-renderer-ejs": "^2.0.0", + "hexo-renderer-marked": "^6.0.0", + "hexo-renderer-pug": "^3.0.0", + "hexo-renderer-stylus": "^3.0.0", + "hexo-server": "^3.0.0", + "hexo-theme-landscape": "^1.0.0" + } + }, + "node_modules/@adobe/css-tools": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.2.tgz", + "integrity": "sha512-DA5a1C0gD/pLOvhv33YMrbf2FK3oUzwNl9oOJqE4XVjuEtt6XIakRcsd7eLiOSPkp1kTRQGICTA8cKra/vFbjw==", + "license": "MIT" + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.5.tgz", + "integrity": "sha512-hOOqoiNXrmGdFbhgCzu6GiURxUgM27Xwd/aPuu8RfHEZPBzL1Z54okAHAQjXfcQNwvrlkAmAp4SlRTZ45vlthQ==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/types": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.5.tgz", + "integrity": "sha512-ON5kSOJwVO6xXVRTvOI0eOnWe7VdUcIpsovGo9U/Br4Ie4UVFQTboO2cYnDhAGU6Fp+UxSiT+pMft0SMHfuq6w==", + "dependencies": { + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "license": "MIT", + "optional": true + }, + "node_modules/a-sync-waterfall": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz", + "integrity": "sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA==", + "license": "MIT" + }, + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "license": "BSD-3-Clause" + }, + "node_modules/abbrev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-globals": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz", + "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==", + "license": "MIT", + "dependencies": { + "acorn": "^8.1.0", + "acorn-walk": "^8.0.2" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.0.tgz", + "integrity": "sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agent-base/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/agent-base/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "license": "MIT" + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", + "license": "MIT" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "license": "MIT" + }, + "node_modules/assert-never": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/assert-never/-/assert-never-1.4.0.tgz", + "integrity": "sha512-5oJg84os6NMQNl27T9LnZkvvqzvAnHu03ShCnoj6bsJwS7L8AO4lf+C/XjK/nvzEqQB744moC6V128RucQd1jA==", + "license": "MIT" + }, + "node_modules/async": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", + "license": "MIT" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/babel-walk": { + "version": "3.0.0-canary-5", + "resolved": "https://registry.npmjs.org/babel-walk/-/babel-walk-3.0.0-canary-5.tgz", + "integrity": "sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.9.6" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "dependencies": { + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "license": "MIT", + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/character-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", + "integrity": "sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==", + "dependencies": { + "is-regex": "^1.0.3" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/command-exists": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", + "license": "MIT" + }, + "node_modules/commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "license": "MIT", + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "license": "MIT", + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "license": "MIT" + }, + "node_modules/connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/constantinople": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-4.0.1.tgz", + "integrity": "sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==", + "dependencies": { + "@babel/parser": "^7.6.0", + "@babel/types": "^7.6.1" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cssom": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", + "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", + "license": "MIT" + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "license": "MIT", + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "license": "MIT" + }, + "node_modules/cuid": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/cuid/-/cuid-2.1.8.tgz", + "integrity": "sha512-xiEMER6E7TlTPnDxrM4eRiC6TRgjNX9xzEZ5U/Se2YJKr7Mq4pJn/2XEHjl3STcSh96GmkHPcBXLES8M29wyyg==", + "deprecated": "Cuid and other k-sortable and non-cryptographic ids (Ulid, ObjectId, KSUID, all UUIDs) are all insecure. Use @paralleldrive/cuid2 instead.", + "license": "MIT" + }, + "node_modules/data-urls": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", + "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", + "license": "MIT", + "dependencies": { + "abab": "^2.0.6", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/decimal.js": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", + "license": "MIT" + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/doctypes": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", + "integrity": "sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ==", + "license": "MIT" + }, + "node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/dom-serializer/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "license": "BSD-2-Clause", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domexception": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", + "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", + "license": "MIT", + "dependencies": { + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/dompurify": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.4.tgz", + "integrity": "sha512-ysFSFEDVduQpyhzAob/kkuJjf5zWkZD8/A9ywSp1byueyuCfHamrCBa14/Oc2iiB0e51B+NpxSl5gmzn+Ms/mg==", + "license": "(MPL-2.0 OR Apache-2.0)", + "optionalDependencies": { + "@types/trusted-types": "^2.0.7" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, + "node_modules/ejs": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "license": "Apache-2.0", + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "license": "BSD-2-Clause", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/escodegen/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fast-equals": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-3.0.3.tgz", + "integrity": "sha512-NCe8qxnZFARSHGztGMZOO/PC1qa5MIFB5Hp66WdzbCRAz8U8US3bx1UTgLS49efBQPcUtO9gf5oVEY8o7y/7Kg==", + "license": "MIT" + }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "dependencies": { + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dependencies": { + "get-intrinsic": "^1.2.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hexo": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/hexo/-/hexo-7.3.0.tgz", + "integrity": "sha512-dOe8mzBKrvjubW5oBmyhcnQDpC+M2xmAMLae5K+o+SkHxyvAhShkS2VQZoTsOLIJKY6xilv7dzCjCvE7ol/NHQ==", + "license": "MIT", + "dependencies": { + "abbrev": "^2.0.0", + "archy": "^1.0.0", + "bluebird": "^3.7.2", + "hexo-cli": "^4.3.2", + "hexo-front-matter": "^4.2.1", + "hexo-fs": "^4.1.3", + "hexo-i18n": "^2.0.0", + "hexo-log": "^4.0.1", + "hexo-util": "^3.3.0", + "js-yaml": "^4.1.0", + "js-yaml-js-types": "^1.0.0", + "micromatch": "^4.0.4", + "moize": "^6.1.6", + "moment": "^2.29.1", + "moment-timezone": "^0.5.34", + "nunjucks": "^3.2.3", + "picocolors": "^1.0.0", + "pretty-hrtime": "^1.0.3", + "resolve": "^1.22.0", + "strip-ansi": "^6.0.0", + "text-table": "^0.2.0", + "tildify": "^2.0.0", + "titlecase": "^1.1.3", + "warehouse": "^5.0.1" + }, + "bin": { + "hexo": "bin/hexo" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/hexo" + } + }, + "node_modules/hexo-cli": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/hexo-cli/-/hexo-cli-4.3.2.tgz", + "integrity": "sha512-druJeBgLpG9ncDS5AhBHdAXk0G4CFj8Qes09pApyZ6bR+nJW1JYiDMuilhudaKDdq+1l49jWXVTidkcb7p0Jbw==", + "license": "MIT", + "dependencies": { + "abbrev": "^2.0.0", + "bluebird": "^3.7.2", + "command-exists": "^1.2.9", + "hexo-fs": "^4.1.1", + "hexo-log": "^4.0.1", + "hexo-util": "^3.3.0", + "minimist": "^1.2.5", + "picocolors": "^1.0.0", + "resolve": "^1.20.0", + "tildify": "^2.0.0" + }, + "bin": { + "hexo": "bin/hexo" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/hexo-cli/node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/hexo-cli/node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/hexo-cli/node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/hexo-cli/node_modules/hexo-util": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/hexo-util/-/hexo-util-3.3.0.tgz", + "integrity": "sha512-YvGngXijE2muEh5L/VI4Fmjqb+/yAkmY+VuyhWVoRwQu1X7bmWodsfYRXX7CUYhi5LqsvH8FAe/yBW1+f6ZX4Q==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "camel-case": "^4.1.2", + "cross-spawn": "^7.0.3", + "deepmerge": "^4.2.2", + "highlight.js": "^11.6.0", + "htmlparser2": "^9.0.0", + "prismjs": "^1.29.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/hexo-cli/node_modules/htmlparser2": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-9.1.0.tgz", + "integrity": "sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.1.0", + "entities": "^4.5.0" + } + }, + "node_modules/hexo-deployer-git": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/hexo-deployer-git/-/hexo-deployer-git-4.0.0.tgz", + "integrity": "sha512-28t1Q+4taB/UaBAP52W3mD/wcCwa2y2zBieUfBJFBZudbmVgiKJB5YedYILeyI5QByaUKAOwoupmdTbocdQ+CQ==", + "dependencies": { + "bluebird": "^3.7.2", + "hexo-fs": "^4.0.0", + "hexo-util": "^2.7.0", + "luxon": "^3.0.4", + "nunjucks": "^3.2.3", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/hexo-front-matter": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/hexo-front-matter/-/hexo-front-matter-4.2.1.tgz", + "integrity": "sha512-sJJI0GNmejYiwBvgnGRKn5V3sbODB4dNPr8jyw2Qp0PRHr4Uuyv8iyxw6WfK3+T7yvzYvJOh+tZ7jnwr2BYARA==", + "license": "MIT", + "dependencies": { + "js-yaml": "^4.1.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/hexo-fs": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/hexo-fs/-/hexo-fs-4.1.3.tgz", + "integrity": "sha512-Q92zQ5PlVDouvSWFLXQoFSTLIUIODikUJs2BfAXQglyOEjN1dOQn1Z5Nimk/7GHof17R5h/uObCQLnZAjzI2tg==", + "license": "MIT", + "dependencies": { + "bluebird": "^3.7.2", + "chokidar": "^3.5.3", + "graceful-fs": "^4.2.10", + "hexo-util": "^3.0.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/hexo-fs/node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/hexo-fs/node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/hexo-fs/node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/hexo-fs/node_modules/hexo-util": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/hexo-util/-/hexo-util-3.3.0.tgz", + "integrity": "sha512-YvGngXijE2muEh5L/VI4Fmjqb+/yAkmY+VuyhWVoRwQu1X7bmWodsfYRXX7CUYhi5LqsvH8FAe/yBW1+f6ZX4Q==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "camel-case": "^4.1.2", + "cross-spawn": "^7.0.3", + "deepmerge": "^4.2.2", + "highlight.js": "^11.6.0", + "htmlparser2": "^9.0.0", + "prismjs": "^1.29.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/hexo-fs/node_modules/htmlparser2": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-9.1.0.tgz", + "integrity": "sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.1.0", + "entities": "^4.5.0" + } + }, + "node_modules/hexo-generator-archive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hexo-generator-archive/-/hexo-generator-archive-2.0.0.tgz", + "integrity": "sha512-KikJk7dGFbtNHOgqtLFGf5T/S8n1paGp+Gy0KfVDz+HKYhGbXOouyiZkmc3O9KrYt6ja14rmkMhq7KKGtvfehw==", + "license": "MIT", + "dependencies": { + "hexo-pagination": "3.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/hexo-generator-category": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hexo-generator-category/-/hexo-generator-category-2.0.0.tgz", + "integrity": "sha512-9OduRBf3WeRDa4BR0kAfRjOVHur7v3fm0NKAwbjUiqULigAdNZVZPO3cHKW2MlBbl/lI5PuWdhQ9zZ99CCCAgQ==", + "license": "MIT", + "dependencies": { + "hexo-pagination": "3.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/hexo-generator-index": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hexo-generator-index/-/hexo-generator-index-3.0.0.tgz", + "integrity": "sha512-83AuNN4cWdLVi//3ugR8E3kR6rrOwhXZt+hOCm1IjtIGj353/GlrtpMHpqZHU5kqipzj4miy9dweVdukXglVWw==", + "license": "MIT", + "dependencies": { + "hexo-pagination": "3.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/hexo-generator-tag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hexo-generator-tag/-/hexo-generator-tag-2.0.0.tgz", + "integrity": "sha512-1px/hF3veEohWDN8jjzchQhaiz+uOStUvvMaBJC9vWOlALh30UFcapL8IrvAwwJZjFRVA+WqGgDRqoQ8+yaaFw==", + "license": "MIT", + "dependencies": { + "hexo-pagination": "3.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/hexo-i18n": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hexo-i18n/-/hexo-i18n-2.0.0.tgz", + "integrity": "sha512-dkUXecEtChaQMdTHN4WR13c8GwKqjbSOZPJS9qDqV6Ebnb77Wa/nQzWFckhP0dCps3a9lUQBd8hYGOMbOosiQQ==", + "license": "MIT", + "dependencies": { + "sprintf-js": "^1.1.2" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/hexo-log": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hexo-log/-/hexo-log-4.1.0.tgz", + "integrity": "sha512-i2Sgxk8Cgx5viSjq5qW5N/rBFfwoCKQcH8qnnW1fawCapcdEAhIsq+Y3vbrs9bssyDlyU6Vqm4oQmosREaNI7Q==", + "license": "MIT", + "dependencies": { + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/hexo-pagination": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hexo-pagination/-/hexo-pagination-3.0.0.tgz", + "integrity": "sha512-8oo1iozloZo7TojPVYg4IxL3SJKCBdSJ908fTlIxIK7TWJIKdYnQlW31+12DBJ0NhVZA/lZisPObGF08wT8fKw==", + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/hexo-renderer-ejs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hexo-renderer-ejs/-/hexo-renderer-ejs-2.0.0.tgz", + "integrity": "sha512-qCjE1IdwgDgv65qyb0KMVCwCdSVAkH0vwAe9XihjvaKWkmb9dtt8DgErOdqCXn0HReSyWiEVP2BrLRj3gyHwOQ==", + "license": "MIT", + "dependencies": { + "ejs": "^3.1.6" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/hexo-renderer-marked": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/hexo-renderer-marked/-/hexo-renderer-marked-6.2.0.tgz", + "integrity": "sha512-/TwgQCAmqYIyxONzrgqokw0n8rU6W/lCtgbjhWcMoZxhwTaQCYpzaO0+sdu+PKXf9BL4910pg+xAbeFaqqIIrA==", + "license": "MIT", + "dependencies": { + "dompurify": "^3.0.3", + "hexo-util": "^3.1.0", + "jsdom": "^20.0.1", + "marked": "^4.3.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/hexo-renderer-marked/node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/hexo-renderer-marked/node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/hexo-renderer-marked/node_modules/domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/hexo-renderer-marked/node_modules/hexo-util": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hexo-util/-/hexo-util-3.1.0.tgz", + "integrity": "sha512-LmztAhkJHQ59VHqz6AnvwEKiNA0pCBBI0qW08cCzjhnpGoqZ8tlGDwElzy7oTxCvMChkiqg5V8VflhdI8tHsGg==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "camel-case": "^4.1.2", + "cross-spawn": "^7.0.3", + "deepmerge": "^4.2.2", + "highlight.js": "^11.6.0", + "htmlparser2": "^9.0.0", + "prismjs": "^1.29.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/hexo-renderer-marked/node_modules/htmlparser2": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-9.0.0.tgz", + "integrity": "sha512-uxbSI98wmFT/G4P2zXx4OVx04qWUmyFPrD2/CNepa2Zo3GPNaCaaxElDgwUrwYWkK1nr9fft0Ya8dws8coDLLQ==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.1.0", + "entities": "^4.5.0" + } + }, + "node_modules/hexo-renderer-pug": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hexo-renderer-pug/-/hexo-renderer-pug-3.0.0.tgz", + "integrity": "sha512-PmbLx6VkNv+mPLOe97OC4F8iTzTuj665dSYN7bZKArd4M/q7gb2tNs29VGuAOC50i9tvWY2f+tPQimf0GZ9Hyw==", + "dependencies": { + "pug": "^3.0.2" + }, + "engines": { + "node": ">=12.4.0" + } + }, + "node_modules/hexo-renderer-stylus": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hexo-renderer-stylus/-/hexo-renderer-stylus-3.0.0.tgz", + "integrity": "sha512-wgKOcjUzq1i4Y70luoyYDbh91QeQcDzJO+v1598LgY+IdREFAm+vy1MWtl/TZsVXyPaEtsULNi3Vi22hdsPUSA==", + "dependencies": { + "nib": "^1.2.0", + "stylus": "^0.59.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/hexo-server": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hexo-server/-/hexo-server-3.0.0.tgz", + "integrity": "sha512-u4s0ty9Aew6jV+a9oMrXBwhrRpUQ0U8PWM/88a5aHgDru58VY81mVrxOFxs788NAsWQ8OvsJtF5m7mnXoRnSIA==", + "license": "MIT", + "dependencies": { + "bluebird": "^3.5.5", + "compression": "^1.7.4", + "connect": "^3.7.0", + "mime": "^3.0.0", + "morgan": "^1.9.1", + "open": "^8.0.9", + "picocolors": "^1.0.0", + "serve-static": "^1.14.1" + }, + "engines": { + "node": ">=12.13.0" + } + }, + "node_modules/hexo-theme-landscape": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hexo-theme-landscape/-/hexo-theme-landscape-1.0.0.tgz", + "integrity": "sha512-bWQJWMqQI78wWiJPQZq5pJBH20TM442ShCaHGRetuEgMraxH0OKxB3NTupJzNEkzEk8DV2yrdizkXdKN6i501A==", + "license": "MIT" + }, + "node_modules/hexo-util": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/hexo-util/-/hexo-util-2.7.0.tgz", + "integrity": "sha512-hQM3h34nhDg0bSe/Tg1lnpODvNkz7h2u0+lZGzlKL0Oufp+5KCAEUX9wal7/xC7ax3/cwEn8IuoU75kNpZLpJQ==", + "license": "MIT", + "dependencies": { + "bluebird": "^3.5.2", + "camel-case": "^4.0.0", + "cross-spawn": "^7.0.0", + "deepmerge": "^4.2.2", + "highlight.js": "^11.0.1", + "htmlparser2": "^7.0.0", + "prismjs": "^1.17.1", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=12.4.0" + } + }, + "node_modules/hexo/node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/hexo/node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/hexo/node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/hexo/node_modules/hexo-util": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/hexo-util/-/hexo-util-3.3.0.tgz", + "integrity": "sha512-YvGngXijE2muEh5L/VI4Fmjqb+/yAkmY+VuyhWVoRwQu1X7bmWodsfYRXX7CUYhi5LqsvH8FAe/yBW1+f6ZX4Q==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "camel-case": "^4.1.2", + "cross-spawn": "^7.0.3", + "deepmerge": "^4.2.2", + "highlight.js": "^11.6.0", + "htmlparser2": "^9.0.0", + "prismjs": "^1.29.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/hexo/node_modules/htmlparser2": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-9.1.0.tgz", + "integrity": "sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.1.0", + "entities": "^4.5.0" + } + }, + "node_modules/highlight.js": { + "version": "11.9.0", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.9.0.tgz", + "integrity": "sha512-fJ7cW7fQGCYAkgv4CPfwFHrfd/cLS4Hau96JuJ+ZTOWhjnhoeN1ub1tFmALm/+lW5z4WCAuAV9bm05AP0mS6Gw==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "license": "MIT", + "dependencies": { + "whatwg-encoding": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/htmlparser2": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", + "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.2", + "domutils": "^2.8.0", + "entities": "^3.0.1" + } + }, + "node_modules/htmlparser2/node_modules/entities": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", + "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "license": "MIT", + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http-proxy-agent/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/http-proxy-agent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "license": "MIT" + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/https-proxy-agent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "license": "MIT" + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-expression": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-4.0.0.tgz", + "integrity": "sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==", + "dependencies": { + "acorn": "^7.1.1", + "object-assign": "^4.1.1" + } + }, + "node_modules/is-expression/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "license": "MIT" + }, + "node_modules/is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==" + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/jake": { + "version": "10.8.7", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", + "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==", + "license": "Apache-2.0", + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/js-stringify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz", + "integrity": "sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/js-yaml-js-types": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/js-yaml-js-types/-/js-yaml-js-types-1.0.1.tgz", + "integrity": "sha512-5tpfyORs8OQ43alNERbWfYRCtWgykvzYgY46fUhrQi2+kS7N0NuuFYLZ/IrfmVm5muLTndeMublgraXiFRjEPw==", + "license": "MIT", + "dependencies": { + "esprima": "^4.0.1" + }, + "peerDependencies": { + "js-yaml": "4.x" + } + }, + "node_modules/jsdom": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz", + "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==", + "license": "MIT", + "dependencies": { + "abab": "^2.0.6", + "acorn": "^8.8.1", + "acorn-globals": "^7.0.0", + "cssom": "^0.5.0", + "cssstyle": "^2.3.0", + "data-urls": "^3.0.2", + "decimal.js": "^10.4.2", + "domexception": "^4.0.0", + "escodegen": "^2.0.0", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.1", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.2", + "parse5": "^7.1.1", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.1.2", + "w3c-xmlserializer": "^4.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^2.0.0", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0", + "ws": "^8.11.0", + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "engines": [ + "node >= 0.2.0" + ], + "license": "MIT" + }, + "node_modules/jstransformer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", + "integrity": "sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A==", + "dependencies": { + "is-promise": "^2.0.0", + "promise": "^7.0.1" + } + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/luxon": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.4.4.tgz", + "integrity": "sha512-zobTr7akeGHnv7eBOXcRgMeCP6+uyYsczwmeRCauvpvaAltgNyTbLH/+VaEAPUeWBT+1GuNmz4wC/6jtQzbbVA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/marked": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", + "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/micro-memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/micro-memoize/-/micro-memoize-4.1.2.tgz", + "integrity": "sha512-+HzcV2H+rbSJzApgkj0NdTakkC+bnyeiUxgT6/m7mjcz1CmM22KYFKp+EVj1sWe4UYcnriJr5uqHQD/gMHLD+g==", + "license": "MIT" + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/moize": { + "version": "6.1.6", + "resolved": "https://registry.npmjs.org/moize/-/moize-6.1.6.tgz", + "integrity": "sha512-vSKdIUO61iCmTqhdoIDrqyrtp87nWZUmBPniNjO0fX49wEYmyDO4lvlnFXiGcaH1JLE/s/9HbiK4LSHsbiUY6Q==", + "license": "MIT", + "dependencies": { + "fast-equals": "^3.0.1", + "micro-memoize": "^4.1.2" + } + }, + "node_modules/moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/moment-timezone": { + "version": "0.5.43", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.43.tgz", + "integrity": "sha512-72j3aNyuIsDxdF1i7CEgV2FfxM1r6aaqJyLB2vwb33mXYyoyLly+F1zbWqhA3/bVIoJ4szlUoMbUnVdid32NUQ==", + "license": "MIT", + "dependencies": { + "moment": "^2.29.4" + }, + "engines": { + "node": "*" + } + }, + "node_modules/morgan": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", + "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", + "license": "MIT", + "dependencies": { + "basic-auth": "~2.0.1", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-finished": "~2.3.0", + "on-headers": "~1.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/nib": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/nib/-/nib-1.2.0.tgz", + "integrity": "sha512-7HgrnMl/3yOmWykueO8/D0q+0iWwe7Z+CK2Eaq/xQV8w1hK80WN1oReRQkfkrztbAAnp/nTHkUSl5EcVkor6JQ==", + "license": "MIT", + "engines": { + "node": "*" + }, + "peerDependencies": { + "stylus": "*" + } + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "license": "MIT", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nunjucks": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-3.2.4.tgz", + "integrity": "sha512-26XRV6BhkgK0VOxfbU5cQI+ICFUtMLixv1noZn1tGU38kQH5A5nmmbk/O45xdyBhD1esk47nKrY0mvQpZIhRjQ==", + "license": "BSD-2-Clause", + "dependencies": { + "a-sync-waterfall": "^1.0.0", + "asap": "^2.0.3", + "commander": "^5.1.0" + }, + "bin": { + "nunjucks-precompile": "bin/precompile" + }, + "engines": { + "node": ">= 6.9.0" + }, + "peerDependencies": { + "chokidar": "^3.3.0" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/nwsapi": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz", + "integrity": "sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==", + "license": "MIT" + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "license": "MIT", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "license": "MIT", + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "license": "MIT", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/prismjs": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", + "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dependencies": { + "asap": "~2.0.3" + } + }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "license": "MIT" + }, + "node_modules/pug": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/pug/-/pug-3.0.3.tgz", + "integrity": "sha512-uBi6kmc9f3SZ3PXxqcHiUZLmIXgfgWooKWXcwSGwQd2Zi5Rb0bT14+8CJjJgI8AB+nndLaNgHGrcc6bPIB665g==", + "license": "MIT", + "dependencies": { + "pug-code-gen": "^3.0.3", + "pug-filters": "^4.0.0", + "pug-lexer": "^5.0.1", + "pug-linker": "^4.0.0", + "pug-load": "^3.0.0", + "pug-parser": "^6.0.0", + "pug-runtime": "^3.0.1", + "pug-strip-comments": "^2.0.0" + } + }, + "node_modules/pug-attrs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-3.0.0.tgz", + "integrity": "sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==", + "license": "MIT", + "dependencies": { + "constantinople": "^4.0.1", + "js-stringify": "^1.0.2", + "pug-runtime": "^3.0.0" + } + }, + "node_modules/pug-code-gen": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-3.0.3.tgz", + "integrity": "sha512-cYQg0JW0w32Ux+XTeZnBEeuWrAY7/HNE6TWnhiHGnnRYlCgyAUPoyh9KzCMa9WhcJlJ1AtQqpEYHc+vbCzA+Aw==", + "license": "MIT", + "dependencies": { + "constantinople": "^4.0.1", + "doctypes": "^1.1.0", + "js-stringify": "^1.0.2", + "pug-attrs": "^3.0.0", + "pug-error": "^2.1.0", + "pug-runtime": "^3.0.1", + "void-elements": "^3.1.0", + "with": "^7.0.0" + } + }, + "node_modules/pug-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-2.1.0.tgz", + "integrity": "sha512-lv7sU9e5Jk8IeUheHata6/UThZ7RK2jnaaNztxfPYUY+VxZyk/ePVaNZ/vwmH8WqGvDz3LrNYt/+gA55NDg6Pg==", + "license": "MIT" + }, + "node_modules/pug-filters": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-4.0.0.tgz", + "integrity": "sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A==", + "dependencies": { + "constantinople": "^4.0.1", + "jstransformer": "1.0.0", + "pug-error": "^2.0.0", + "pug-walk": "^2.0.0", + "resolve": "^1.15.1" + } + }, + "node_modules/pug-lexer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-5.0.1.tgz", + "integrity": "sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==", + "dependencies": { + "character-parser": "^2.2.0", + "is-expression": "^4.0.0", + "pug-error": "^2.0.0" + } + }, + "node_modules/pug-linker": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-4.0.0.tgz", + "integrity": "sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==", + "dependencies": { + "pug-error": "^2.0.0", + "pug-walk": "^2.0.0" + } + }, + "node_modules/pug-load": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-3.0.0.tgz", + "integrity": "sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==", + "dependencies": { + "object-assign": "^4.1.1", + "pug-walk": "^2.0.0" + } + }, + "node_modules/pug-parser": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-6.0.0.tgz", + "integrity": "sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==", + "dependencies": { + "pug-error": "^2.0.0", + "token-stream": "1.0.0" + } + }, + "node_modules/pug-runtime": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-3.0.1.tgz", + "integrity": "sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg==", + "license": "MIT" + }, + "node_modules/pug-strip-comments": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-2.0.0.tgz", + "integrity": "sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ==", + "dependencies": { + "pug-error": "^2.0.0" + } + }, + "node_modules/pug-walk": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-2.0.0.tgz", + "integrity": "sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==" + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "license": "MIT" + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "license": "MIT" + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "license": "MIT" + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "license": "ISC" + }, + "node_modules/saxes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "license": "ISC", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=v12.22.7" + } + }, + "node_modules/send": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/send/node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serve-static": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.19.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-static/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">= 8" + } + }, + "node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "license": "BSD-3-Clause" + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "license": "MIT", + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/stylus": { + "version": "0.59.0", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.59.0.tgz", + "integrity": "sha512-lQ9w/XIOH5ZHVNuNbWW8D822r+/wBSO/d6XvtyHLF7LW4KaCIDeVbvn5DF8fGCJAUCwVhVi/h6J0NUcnylUEjg==", + "license": "MIT", + "dependencies": { + "@adobe/css-tools": "^4.0.1", + "debug": "^4.3.2", + "glob": "^7.1.6", + "sax": "~1.2.4", + "source-map": "^0.7.3" + }, + "bin": { + "stylus": "bin/stylus" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://opencollective.com/stylus" + } + }, + "node_modules/stylus/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/stylus/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "license": "MIT" + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "license": "MIT" + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "license": "MIT" + }, + "node_modules/through2": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "license": "MIT", + "dependencies": { + "readable-stream": "3" + } + }, + "node_modules/tildify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tildify/-/tildify-2.0.0.tgz", + "integrity": "sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/titlecase": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/titlecase/-/titlecase-1.1.3.tgz", + "integrity": "sha512-pQX4oiemzjBEELPqgK4WE+q0yhAqjp/yzusGtlSJsOuiDys0RQxggepYmo0BuegIDppYS3b3cpdegRwkpyN3hw==", + "license": "MIT", + "bin": { + "to-title-case": "bin.js" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/token-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-1.0.0.tgz", + "integrity": "sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg==" + }, + "node_modules/tough-cookie": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", + "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", + "license": "BSD-3-Clause", + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "license": "MIT", + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "license": "0BSD" + }, + "node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "license": "MIT", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/void-elements": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", + "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/w3c-xmlserializer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", + "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", + "license": "MIT", + "dependencies": { + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/warehouse": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/warehouse/-/warehouse-5.0.1.tgz", + "integrity": "sha512-5BQEQP56bPY+cqocTho4syazuGgSoyKd0y3PsS2j8tGN10HH+CEfJSIY+KUw9D0k4jaVEFMXLz0KqCiUzTYb8A==", + "license": "MIT", + "dependencies": { + "bluebird": "^3.7.2", + "cuid": "^2.1.8", + "graceful-fs": "^4.2.10", + "hexo-log": "^4.0.1", + "is-plain-object": "^5.0.0", + "jsonparse": "^1.3.1", + "rfdc": "^1.3.0", + "through2": "^4.0.2" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "license": "MIT", + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-mimetype": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "license": "MIT", + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/with": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/with/-/with-7.0.2.tgz", + "integrity": "sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.9.6", + "@babel/types": "^7.9.6", + "assert-never": "^1.2.1", + "babel-walk": "3.0.0-canary-5" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/ws": { + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "license": "Apache-2.0", + "engines": { + "node": ">=12" + } + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "license": "MIT" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..1d66ce8 --- /dev/null +++ b/package.json @@ -0,0 +1,28 @@ +{ + "name": "hexo-site", + "version": "0.0.0", + "private": true, + "scripts": { + "build": "hexo generate", + "clean": "hexo clean", + "deploy": "hexo deploy", + "server": "hexo server" + }, + "hexo": { + "version": "7.3.0" + }, + "dependencies": { + "hexo": "^7.3.0", + "hexo-deployer-git": "^4.0.0", + "hexo-generator-archive": "^2.0.0", + "hexo-generator-category": "^2.0.0", + "hexo-generator-index": "^3.0.0", + "hexo-generator-tag": "^2.0.0", + "hexo-renderer-ejs": "^2.0.0", + "hexo-renderer-marked": "^6.0.0", + "hexo-renderer-pug": "^3.0.0", + "hexo-renderer-stylus": "^3.0.0", + "hexo-server": "^3.0.0", + "hexo-theme-landscape": "^1.0.0" + } +} \ No newline at end of file diff --git a/scaffolds/draft.md b/scaffolds/draft.md new file mode 100644 index 0000000..498e95b --- /dev/null +++ b/scaffolds/draft.md @@ -0,0 +1,4 @@ +--- +title: {{ title }} +tags: +--- diff --git a/scaffolds/page.md b/scaffolds/page.md new file mode 100644 index 0000000..f01ba3c --- /dev/null +++ b/scaffolds/page.md @@ -0,0 +1,4 @@ +--- +title: {{ title }} +date: {{ date }} +--- diff --git a/scaffolds/post.md b/scaffolds/post.md new file mode 100644 index 0000000..1f9b9a4 --- /dev/null +++ b/scaffolds/post.md @@ -0,0 +1,5 @@ +--- +title: {{ title }} +date: {{ date }} +tags: +--- diff --git a/source/_posts/12月16-17日工作记录.md b/source/_posts/12月16-17日工作记录.md new file mode 100644 index 0000000..4d8a005 --- /dev/null +++ b/source/_posts/12月16-17日工作记录.md @@ -0,0 +1,13 @@ +--- +title: 12月16-17日工作记录 +date: 2023-12-17 22:26:17 +tags: [日志] +--- +## 12月16-17日 +1. 四级考试 +2. 自学cuda,openacc,了解GPU架构知识 +3. 参加超算队启动会 +4. 大计和高数期中考试 +5. 研究spack使用 +6. 学习cuda编程 +7. 补作业 diff --git a/source/_posts/12月18日工作记录.md b/source/_posts/12月18日工作记录.md new file mode 100644 index 0000000..b3cc015 --- /dev/null +++ b/source/_posts/12月18日工作记录.md @@ -0,0 +1,9 @@ +--- +title: 12月18日工作记录 +date: 2023-12-18 21:57:34 +tags: [日志] +--- +## 12月18日 +1. 初步了解opencaeporo,尝试在本地docker环境使用gcc完成编译安装,目前完成各项依赖安装,由于晚上停电计划明天开始编译安装opencaeporo本体并在本地调优; +2. 协助Neko组完成任务; +3. 找出spack存在网络原因无法下载时的手动解决方案. \ No newline at end of file diff --git a/source/_posts/12月19日工作记录.md b/source/_posts/12月19日工作记录.md new file mode 100644 index 0000000..a0d322f --- /dev/null +++ b/source/_posts/12月19日工作记录.md @@ -0,0 +1,8 @@ +--- +title: 12月19日工作记录 +date: 2023-12-19 21:59:47 +tags: [日志] +--- +## 12月18日 +1. 彻底完成opencaeporo安装部署,本地和服务器均已安装,明天正式开始调优工作; +2. 学习cuda编程. diff --git a/source/_posts/12月20日工作记录.md b/source/_posts/12月20日工作记录.md new file mode 100644 index 0000000..b726e11 --- /dev/null +++ b/source/_posts/12月20日工作记录.md @@ -0,0 +1,14 @@ +--- +title: 12月20日工作记录 +date: 2023-12-20 21:56:42 +tags: 日志 +--- +## 12月20日 + +OpenCAEPoro 小组(黄**,梁**,程**) + +1. 阅读代码,开展优化工作,初步使用openacc完成petsc_solver的优化,取得一定优化效果 + +> 优化方向基本确定为OpenMP/OpenACC并行化+cuda移植 + +2. 赛题环境汇总,目前各组工作有序开展,CentOS 7符合要求暂未发现更换系统需求 diff --git a/source/_posts/12月28日进度报告.md b/source/_posts/12月28日进度报告.md new file mode 100644 index 0000000..8e940cb --- /dev/null +++ b/source/_posts/12月28日进度报告.md @@ -0,0 +1,12 @@ +--- +title: 12月28日进度报告 +date: 2023-12-28 23:22:13 +tags: 日志 +--- +## 12月28日 + +OpenCAEPoro 小组(黄**,梁**,程**,刘**) + +1. 各组员继续进行优化工作,部分函数完成cuda移植,取得一定优化效果 +2. 继续学习openacc及cuda相关知识 +3. 搜集多孔介质流动模拟与opencaeporo相关论文资料为proposal做准备 diff --git a/source/_posts/12月31日进度报告.md b/source/_posts/12月31日进度报告.md new file mode 100644 index 0000000..28f3d82 --- /dev/null +++ b/source/_posts/12月31日进度报告.md @@ -0,0 +1,12 @@ +--- +title: 12月30-31日进度报告 +date: 2023-12-31 00:07:09 +tags: 日志 +--- +## 12月30-31日 + +OpenCAEPoro 小组(黄**,梁**,程**,刘**) + +1. 服务器上的Opencaeporo改用nvhpc编译器编译以支持cuda; +2. 收集运行数据用于proposal绘制图表; +3. 继续尝试优化,同时已经查阅收集了一些相关资料以尽量理解相关含义便于工作开展. diff --git a/source/_posts/BlogUpdate.md b/source/_posts/BlogUpdate.md new file mode 100644 index 0000000..39da556 --- /dev/null +++ b/source/_posts/BlogUpdate.md @@ -0,0 +1,12 @@ +--- +title: 博客更新记录 +date: 2024-11-04 23:18:02 +tags: 日志 +categories: 更新 +--- + +- 博客主题更新为 `Fluid` 主题,原主题为 `Next` +- 更新了访问地址为 `https://blog.hifuu.ink` +- 新增了 `About` 页面 +- 新增了 `友链` 页面 +- 完善页面布局 diff --git a/source/_posts/CGH0S7-s-Blog.md b/source/_posts/CGH0S7-s-Blog.md new file mode 100644 index 0000000..a3bd2c5 --- /dev/null +++ b/source/_posts/CGH0S7-s-Blog.md @@ -0,0 +1,7 @@ +--- +title: Welcome to CGH0S7's Blog +date: 2023-12-06 16:33:30 +tags: TEST +--- + +Hello World ! diff --git a/source/_posts/GentleJena.md b/source/_posts/GentleJena.md new file mode 100644 index 0000000..23cab9d --- /dev/null +++ b/source/_posts/GentleJena.md @@ -0,0 +1,14 @@ +--- +title: Gentle Jena +date: 2024-10-30 22:11:14 +tags: 音乐 +categories: Rearrangement +--- + +很喜欢的一首曲子 +顺便测试一下视频上传 +以后随缘更新各种乱七八糟的东西。。 + + diff --git a/source/_posts/Vocaloid调教-晴天.md b/source/_posts/Vocaloid调教-晴天.md new file mode 100644 index 0000000..44df7fb --- /dev/null +++ b/source/_posts/Vocaloid调教-晴天.md @@ -0,0 +1,15 @@ +--- +title: Vocaloid调教-晴天(洛天依v4) +date: 2024-11-04 21:52:59 +tags: [Vocaloid, 音乐] +categories: [Vocaloid] +--- + +其实是今年年初的作品想起来可以搬上来,这是我调教的第一首v曲。 + +“故事的小黄花,从出生那年就飘着...” + +{% raw %} + +{% endraw %} + diff --git a/source/_posts/arch-nvidia.md b/source/_posts/arch-nvidia.md new file mode 100644 index 0000000..637a00e --- /dev/null +++ b/source/_posts/arch-nvidia.md @@ -0,0 +1,112 @@ +--- +title: Archlinux的KDE Plasma优先启用Nvidia独立显卡和混合显卡配置指北 +date: 2024-11-06 10:02:04 +tags: 技术 +categories: [技术分享] +--- +本文将介绍在 **X11** 和 **Wayland** 两种会话下,如何在 KDE Plasma 中优先启用 Nvidia 独立显卡,并提供 I+N 混合显卡的配置方案。**首先,请确保您已经正确安装了 Nvidia 驱动**(如果非 Mainline 内核,请使用 `nvidia-dkms` 或 `nvidia-open-dkms` 版本)。 + +![Nvidia设置示意图](/images/5364bba6d035326e82c53504dd53e7c2454454985.png) + +### 适用系统 + +对于 **CachyOS** 或 **EndeavourOS** 等 Arch Linux 衍生版,这些配置大多开箱即用,但对于刚刚入坑 Arch Linux 且使用 KDE 的新手可能会遇到这样的问题: + +- Nvidia 驱动已安装,`nvidia-smi` 输出正常 +- KDE 系统信息显示仍在使用核显,程序运行时也优先使用核显 +- 导致某些应用(如浏览器、Blender)可能出现卡顿或掉帧现象 + +这是因为 Arch Linux 的高自定义性,许多功能需要用户手动配置。以下是详细的解决方案。 + +--- + +## 配置 X11 下的 Nvidia 显卡优先 + +可以通过配置 `/etc/X11/xorg.conf` 实现 Nvidia 独显输出。幸运的是,Nvidia 提供了自动生成配置文件的工具,用户无需手动编写: + +```bash +sudo nvidia-xconfig --prime +``` + +该命令会根据硬件情况自动生成配置文件。执行后 **重新登录会话** 即可生效(即使是 Wayland 用户也可以执行一次此命令)。 + +![X11 Nvidia配置](/images/1613f5602b203b38230f19699deb0219454454985.png) + +--- + +## 配置 Wayland 下的 Nvidia 显卡优先 + +在 Wayland 下优先启用 Nvidia 显卡的步骤如下: + +1. 编辑 **GRUB 配置**文件: + + 打开 `/etc/default/grub` 文件,在 `GRUB_CMDLINE_LINUX_DEFAULT=""` 中添加 `nvidia_drm.modeset=1`: + + ```bash + GRUB_CMDLINE_LINUX_DEFAULT="nvidia_drm.modeset=1" + ``` + +2. 重新生成 grub 配置: + + ```bash + sudo grub-mkconfig -o /boot/grub/grub.cfg + ``` + +3. 配置 **Plasma 环境**文件: + + 在 `~/.config/plasma-workspace/env/nvidia.sh` 中写入以下内容: + + ```bash + #!/bin/bash + export __NV_PRIME_RENDER_OFFLOAD=1 + export __GLX_VENDOR_LIBRARY_NAME=nvidia + ``` + +4. 保存并重启电脑,即可生效。 + +![Wayland Nvidia配置](/images/b2054bbaf6197624d38cc2007d885fd1454454985.png) + +--- + +## I+N 混合显卡方案 + +如果不希望全局启用独显,可以选择让大部分程序默认使用核显,而少数高性能需求的程序使用独显。这种方法能有效节省功耗,同时将独显资源集中分配给需要的程序(如 Steam 游戏、Blender 等)。缺点是每个程序需要手动配置启动项。 + +### 配置步骤 + +1. 打开程序的 `.desktop` 启动文件: + + 位置可能在 `/usr/share/applications` 或 `~/.local/share/applications` 中。 + +2. 在 `Exec=` 后添加 `prime-run` 参数。例如: + + ```text + Exec=prime-run <程序启动命令> + ``` + + ![混合显卡配置示意图](/images/71a5357ef4bd808b10429bc2ea46cb6f454454985.png) + +### Vim 快捷配置 + +如果使用 Vim,可以使用以下快捷键快速批量替换 `Exec=` 为 `Exec=prime-run`: + +```vim +v -> G -> :s/Exec=/Exec=prime-run /g Enter -> :wq Enter +``` + +--- + +## 让 Plasma 桌面也使用独显 + +如果希望 Plasma 桌面也通过独显运行,可以修改 Wayland 配置文件并删除第二行: + +```bash +#!/bin/bash +export __GLX_VENDOR_LIBRARY_NAME=nvidia +``` + +这样 Plasma 桌面会通过独显启动,其他程序则默认使用核显。 + +--- + +希望以上经验能为有此需求的用户提供参考帮助。 diff --git a/source/_posts/archlinux-optimization.md b/source/_posts/archlinux-optimization.md new file mode 100644 index 0000000..9689a47 --- /dev/null +++ b/source/_posts/archlinux-optimization.md @@ -0,0 +1,17 @@ +--- +title: Archlinux KDE体验优化总结 +date: 2025-02-02 18:43:26 +tags: [技术分享] +--- + +打算开一个坑记录这么久以来的Archlinux系统性能和操作体验优化经验 + +本文章长期更新 + +------ + +## 软件优化 + +## 快捷键设置 + +## diff --git a/source/_posts/clonezilla.md b/source/_posts/clonezilla.md new file mode 100644 index 0000000..125a424 --- /dev/null +++ b/source/_posts/clonezilla.md @@ -0,0 +1,81 @@ +--- +title: 使用Clonezilla备份和克隆系统 +date: 2025-02-23 21:40:03 +tags: 技术分享 +--- +![Clonezilla官网](/images/clonezilla.png) +[Clonezilla](https://clonezilla.org/)是一款非常好用的系统迁移工具,本文将介绍其基本用法(不包含网络迁移及Clonezilla服务器等进阶内容)以及在克隆Btrfs磁盘时遇到的问题解法。 + +--- +### **零.事前准备**: + - 下载Clonezilla Live镜像(ISO),制作启动U盘(有手就行)。 + - 准备目标存储设备(如U盘,需要迁移的新硬盘等),确保有足够空间(建议大于源硬盘已用空间的1.2倍)。 + + +### **一.备份镜像到硬盘(Device-to-Image)** +这个模式可以将硬盘完整备份为一个镜像文件(可保存到本地硬盘、外置硬盘或网络存储)方便多机部署。注意如果只是将一个硬盘的系统完全克隆到新盘可以跳过此部分。 + +#### **步骤说明**: +2. **启动Clonezilla**: + - 插入U盘,重启电脑并从U盘启动。 + - 选择默认选项(语言,键盘布局,Beginner模式)进入Clonezilla的TUI界面。 + +3. **选择备份模式**: + ```plaintext + Choose mode: 选择 "device-image"(设备到镜像) + Mount storage media: 选择 "local_dev"(本地存储设备) + ``` + - 按提示挂载目标存储设备(注意这里选择的是你要存储镜像的设备且文件系统一般不限,如外置硬盘),确认路径(如 `/dev/sdb1`)。 + +4. **配置备份参数**: + - **源硬盘**:选择需要备份的硬盘(如 `/dev/sda`)。 + - **镜像存储路径**:指定目标位置(如外置硬盘的挂载目录)。 + - **镜像名称**:自定义名称(如 `2025-img-rockylinux-2-21`)。 + - **压缩选项**:默认即可,支持并行压缩加速。 + - **镜像分割**:若目标存储设备为FAT32格式(单文件最大4GB),选择自动分割。 + +5. **确认操作**: + - 检查提示信息,输入 `y` 开始备份。 + - 完成后关机或重启。 + +6. **镜像还原**:和备份非常相似,只是选项换成restore to disk,顺着指引操作即可。 +--- + +### **二、直接克隆硬盘(Device-to-Device)** +将源硬盘完整克隆到目标硬盘(适合硬盘升级或快速迁移),比如笔者最近白嫖了一个三星的2T硬盘直接把原来512G硬盘里的CachyOS无损迁移了进去。 + +#### **步骤说明**: +1. **准备工作**: + - 连接目标硬盘(需容量≥源硬盘已用空间,还原镜像操作也是如此,注意Clonezilla支持小分区到大分区迁移不支持大分区到小分区,后者出门右转Rsync) + - **警告**:目标硬盘数据将被覆盖,操作前如有需要务必备份重要数据! + +2. **启动Clonezilla**: + - 同上,从U盘启动进入Clonezilla界面。 + +3. **选择克隆模式**: + ```plaintext + Choose mode: 选择 "device-device"(设备到设备) + ``` + +4. **选择硬盘**: + - **母碟硬盘**:选择原始硬盘(如 `/dev/sda`)。 + - **目标硬盘**:选择新硬盘(如 `/dev/sdb`)。 + +5. **克隆选项**: + 需要进入专家模式才能看到,一般直接新手模式默认即可。 + +6. **执行克隆**: + - 确认提示信息后输入 `y`,等待完成。 + - 克隆结束后关机,移除旧硬盘并测试新硬盘(主要是查看能不能启动进入系统,若能进入一般不会有问题,而且一般都能进入因为Clonezilla是高精确的块对块克隆)。 + +--- +### **两种模式对比**: +| **模式** | 特点 | +|----------------|---------------------------| +| 备份镜像 | 方便多机部署也可以用于留档| +| 直接克隆 | 换硬盘快速迁移无需恢复过程| +--- + +### **Btrfs务必注意**: +对Btrfs直接进行Clonezilla克隆大概率会碰到一个边界错误,这是由于Btrfs本身使用一段时间后碎片化存储导致的,你需要执行`sudo btrfs balance start --full-balance /`来进行整理,但是这也算是一个风险操作要确保完整执行不能在执行时意外中断导致文件系统出错,并且在后续克隆时不能使用新手模式要进入专家模式勾选-p1支持所有文件系统但是效率降低的选项来确保顺利克隆(未勾选此选项可能导致文件系统无法识别的错误),其他步骤参照前文即可。 + diff --git a/source/_posts/loopers.md b/source/_posts/loopers.md new file mode 100644 index 0000000..fc187e7 --- /dev/null +++ b/source/_posts/loopers.md @@ -0,0 +1,11 @@ +--- +title: 时隔一年再次拿起数位板能画出什么东西 +date: 2024-11-04 23:47:54 +tags: [板绘, 生活] +--- + +如题,前段时间推完LOOPERS的时候有感而发对着画了张海报 + +时隔一年,终于又拿起了数位板 + +![LOOPERS](/images/20241027_222225.png "LOOPERS") diff --git a/source/_posts/mhwi.md b/source/_posts/mhwi.md new file mode 100644 index 0000000..57b5633 --- /dev/null +++ b/source/_posts/mhwi.md @@ -0,0 +1,14 @@ +--- +title: 愿指引明路的苍蓝星永远为你闪耀 +date: 2024-11-11 21:46:49 +tags: 音乐 +categories: Rearrangement +--- +使用东方Project软音源THFont简单重置的MHWI主题曲 + +雄关漫道真如铁,而今迈步从头越 + +{% raw %} + +{% endraw %} + diff --git a/source/_posts/nudtbomblab.md b/source/_posts/nudtbomblab.md new file mode 100644 index 0000000..d5b280a --- /dev/null +++ b/source/_posts/nudtbomblab.md @@ -0,0 +1,420 @@ +--- +title: 高地特供版CSAPP Bomb Lab全流程攻略 +date: 2025-02-24 15:09:11 +tags: [技术, 学习, 生活] +--- + +这篇文章记录高地CSAPP课程Bomblab实验操作流程,仅供参考交流(答案是随机生成的和学号相关)。 + +笔者实验环境为Archlinux/CachyOS,使用lldb作为调试器(和gdb操作差不多),其余用到的工具主要为objdump,strings,neovim/helix和zellij,全程开源环境不使用IDA。 + +## **Phase_1** + +### **静态分析** + +#### **`strings`扫描** +```bash +strings bomb_linux +``` +先用strings寻找可能与`phase_1`相关的字符串或函数名,运气好说不定能直接找到密码毕竟是第一题。 +![strings](/images/phase1_strings.png) + - 结果没有明文密码无法直接秒掉第一问,可惜。 + - 但是找到`GenerateRandomString`函数可能与密码生成相关。 + +#### **用`objdump`反汇编** +```bash +objdump -d bomb_linux > bomb.asm +``` +搜索`GenerateRandomString`和`phase_1`函数的汇编代码。 + ```assembly + 401b53 : + 401b53: endbr64 + 401b57: push %rbp + 401b58: mov %rsp,%rbp + 401b5b: sub $0x20,%rsp + 401b5f: mov %rdi,-0x18(%rbp) + 401b63: lea -0xb(%rbp),%rax + 401b67: mov %rax,%rdi + 401b6a: callq 401ac1 # 调用密码生成函数 + 401b6f: lea -0xb(%rbp),%rdx # 生成的字符串地址%rbp-0xb存入%rdx,即密码存储位置 + 401b73: mov -0x18(%rbp),%rax + 401b77: mov %rdx,%rsi + 401b7a: mov %rax,%rdi + 401b7d: callq 401c0c # 调用字符串比较函数 + 401b82: test %eax,%eax + 401b84: je 401b8d + 401b86: callq 401d67 # 比较失败则引爆炸弹 + ``` + - `phase_1`调用`GenerateRandomString`生成一个字符串。 + - 用户输入的字符串需要与此生成的字符串完全匹配。 + +--- + +### **动态调试** +![phase_1](/images/phase1.png) +下面是phase_1求解的完整流程: +```lldb +lldb bomb_linux <你的学号后六位> +(lldb) b phase_1 # 在phase_1入口断点 +(lldb) run # 从入口开始执行 +请输入第1级的密码:114514 # 随便输入触发断点 +(lldb) b 0x401b6f # 在GenerateRandomString返回后断点 +(lldb) continue # 继续执行 +(lldb) x/s $rbp - 0xb # 计算字符串地址(-0xb偏移量) +0x7fffffffdaf5: "mJHurpQZtY" # 轻松拿下,这里是根据学号伪随机生成的哦 +``` +将得到的密码保存入bomb_<学号后六位>.txt即可,避免后续重复输入。 + +--- + +## **Phase_2** + +### **静态分析** + +这道题目还是比较一目了然的,观察`phase_2`代码不难发现其实构建了一张跳转表: +```assembly +0000000000401b8e : + 401b8e: f3 0f 1e fa endbr64 + 401b92: 55 push %rbp + 401b93: 48 89 e5 mov %rsp,%rbp + 401b96: 48 83 ec 10 sub $0x10,%rsp + 401b9a: 48 89 7d f8 mov %rdi,-0x8(%rbp) + 401b9e: bf 10 00 00 00 mov $0x10,%edi + 401ba3: e8 05 fb ff ff call 4016ad + 401ba8: 48 8b 05 71 6c 00 00 mov 0x6c71(%rip),%rax # 408820 + 401baf: 48 83 f8 0f cmp $0xf,%rax + 401bb3: 0f 87 16 01 00 00 ja 401ccf + 401bb9: 48 8d 14 85 00 00 00 lea 0x0(,%rax,4),%rdx + 401bc0: 00 + 401bc1: 48 8d 05 4c 4a 00 00 lea 0x4a4c(%rip),%rax # 406614 <_IO_stdin_used+0x614> + 401bc8: 8b 04 02 mov (%rdx,%rax,1),%eax + 401bcb: 48 98 cltq + 401bcd: 48 8d 15 40 4a 00 00 lea 0x4a40(%rip),%rdx # 406614 <_IO_stdin_used+0x614> + 401bd4: 48 01 d0 add %rdx,%rax + 401bd7: 3e ff e0 notrack jmp *%rax + 401bda: 48 8b 45 f8 mov -0x8(%rbp),%rax + 401bde: 48 89 c7 mov %rax,%rdi + 401be1: e8 f2 00 00 00 call 401cd8 + 401be6: e9 ea 00 00 00 jmp 401cd5 + 401beb: 48 8b 45 f8 mov -0x8(%rbp),%rax + 401bef: 48 89 c7 mov %rax,%rdi + 401bf2: e8 8b 01 00 00 call 401d82 + 401bf7: e9 d9 00 00 00 jmp 401cd5 + 401bfc: 48 8b 45 f8 mov -0x8(%rbp),%rax + 401c00: 48 89 c7 mov %rax,%rdi + ... +``` +这里面需要注意的关键点是rand_div,它会决定你的跳转方向,而你的学号又决定了它的取值。然后是`GenerateRandomNumber`这个函数的原理需要了解一下,而这个函数将在跳转前后分别调用一次,第一次决定你的跳转方向,第二次则决定了你的密码线索。 + +--- + +### **动态调试** +理解原理就没什么难度了,自己找几个断点打好然后关注一下`rand_div`的值就好,观察自己的学号向哪个函数跳转并理解相应函数计算即可,比如我这里向`phase_2_14`跳转: +![phase_2_14](/images/phase_2_14.png) + +而除了`phase_2_14`还有其他函数也是非常好理解的,第二题依旧可以轻松拿下。 + +--- +## **Phase_3** + +### **静态分析** + +和Phase_2一样开局先跳转尽可能防止同学们答案雷同互相帮助(bushi + +本体其实没有什么好说的,这里我跳转的方向是`Phase_3_5`简要解释一下可供参考: + +```assembly +0000000000403001 : + 403001: f3 0f 1e fa endbr64 + 403005: 55 push %rbp + 403006: 48 89 e5 mov %rsp,%rbp + 403009: 48 83 ec 20 sub $0x20,%rsp + 40300d: 48 89 7d e8 mov %rdi,-0x18(%rbp) + 403011: c7 45 fc 00 00 00 00 movl $0x0,-0x4(%rbp) + 403018: c7 45 f8 00 00 00 00 movl $0x0,-0x8(%rbp) + 40301f: 48 8d 4d f0 lea -0x10(%rbp),%rcx + 403023: 48 8d 55 f4 lea -0xc(%rbp),%rdx + 403027: 48 8b 45 e8 mov -0x18(%rbp),%rax + 40302b: 48 8d 35 5a 36 00 00 lea 0x365a(%rip),%rsi # 40668c <_IO_stdin_used+0x68c> + 403032: 48 89 c7 mov %rax,%rdi + 403035: b8 00 00 00 00 mov $0x0,%eax + 40303a: e8 51 e1 ff ff call 401190 <__isoc99_sscanf@plt> + 40303f: 89 45 f8 mov %eax,-0x8(%rbp) + 403042: 83 7d f8 01 cmpl $0x1,-0x8(%rbp) + 403046: 7f 05 jg 40304d + 403048: e8 a9 2b 00 00 call 405bf6 + 40304d: bf 08 00 00 00 mov $0x8,%edi + 403052: e8 56 e6 ff ff call 4016ad + 403057: 8b 45 f4 mov -0xc(%rbp),%eax + 40305a: 48 63 d0 movslq %eax,%rdx + 40305d: 48 8b 05 bc 57 00 00 mov 0x57bc(%rip),%rax # 408820 + 403064: 48 39 c2 cmp %rax,%rdx + 403067: 74 05 je 40306e + 403069: e8 88 2b 00 00 call 405bf6 + 40306e: bf c8 00 00 00 mov $0xc8,%edi + 403073: e8 35 e6 ff ff call 4016ad + 403078: 8b 45 f4 mov -0xc(%rbp),%eax + 40307b: 83 f8 07 cmp $0x7,%eax + 40307e: 0f 87 eb 00 00 00 ja 40316f + 403084: 89 c0 mov %eax,%eax + 403086: 48 8d 14 85 00 00 00 lea 0x0(,%rax,4),%rdx + 40308d: 00 + 40308e: 48 8d 05 9f 36 00 00 lea 0x369f(%rip),%rax # 406734 <_IO_stdin_used+0x734> + 403095: 8b 04 02 mov (%rdx,%rax,1),%eax + 403098: 48 98 cltq + 40309a: 48 8d 15 93 36 00 00 lea 0x3693(%rip),%rdx # 406734 <_IO_stdin_used+0x734> + 4030a1: 48 01 d0 add %rdx,%rax + 4030a4: 3e ff e0 notrack jmp *%rax + 4030a7: 48 8b 05 72 57 00 00 mov 0x5772(%rip),%rax # 408820 + 4030ae: 89 c2 mov %eax,%edx + 4030b0: 8b 45 fc mov -0x4(%rbp),%eax + 4030b3: 01 d0 add %edx,%eax + 4030b5: 89 45 fc mov %eax,-0x4(%rbp) + 4030b8: bf c8 00 00 00 mov $0xc8,%edi + 4030bd: e8 eb e5 ff ff call 4016ad + ... + 403174: 8b 45 f0 mov -0x10(%rbp),%eax + 403177: 39 45 fc cmp %eax,-0x4(%rbp) # 注意这里 + 40317a: 74 05 je 403181 + 40317c: e8 75 2a 00 00 call 405bf6 + 403181: 90 nop + 403182: c9 leave + 403183: c3 ret + +``` +看起来一大堆很吓人对不对?实际上确实很吓人。 + +但是发现其中玄机后其实简单的没边,最终答案就藏在`0x403177`里面,前提是确保这一步前炸弹不爆炸(意识到要爆炸了直接`run`一下重开qwq)。 + +--- + +### **动态调试** + +阅读`Phase_3_5`发现这一关其实需要两个输入,并且第一个输入必须是`rand_div`,这里建议通过`si`单步执行监控好`rand_div`值变化,确定正确结果后使用`run`重开正确输入第一个密码后才能进行下一步求解: +```lldb +(lldb) si +Process 13376 stopped +* thread #1, name = 'bomb_linux', stop reason = instruction step into + frame #0: 0x000000000040317a bomb_linux`phase_3_5 + 377 +bomb_linux`phase_3_5: +-> 0x40317a <+377>: je 0x403181 ; <+384> + 0x40317c <+379>: callq 0x405bf6 ; explode_bomb + 0x403181 <+384>: nop + 0x403182 <+385>: leave +(lldb) x/wx $rbp-0x4 +0x7fffffffdb0c: 0xffffffd7 +``` +例如这里我可以打印出第二个值结合第一个值得到第三关正确结果。 + +--- + +## **Phase_4** + +### **静态分析** + +本题依旧开局跳转,笔者的跳转方向是`phase_4_01`,如何跳转不再强调关注`rand_div`的值即可,下面请D指导解读一下`phase_4_01`的内容: +```assembly +0000000000404895 : + ; 函数入口,初始化栈帧 + 404895: f3 0f 1e fa endbr64 + 404899: 55 push %rbp + 40489a: 48 89 e5 mov %rsp,%rbp + 40489d: 48 83 ec 70 sub $0x70,%rsp ; 分配栈空间 + + ; 初始化斐波那契数组(F(10)~F(24)的十六进制值) + 4048a1: 48 89 7d 98 mov %rdi,-0x68(%rbp) ; 保存输入字符串指针 + 4048a5: c7 45 b0 37 00 00 00 movl $0x37,-0x50(%rbp) ; F(10)=55 + 4048ac: c7 45 b4 59 00 00 00 movl $0x59,-0x4c(%rbp) ; F(11)=89 + 4048b3: c7 45 b8 90 00 00 00 movl $0x90,-0x48(%rbp) ; F(12)=144 + 4048ba: c7 45 bc e9 00 00 00 movl $0xe9,-0x44(%rbp) ; F(13)=233 + 4048c1: c7 45 c0 79 01 00 00 movl $0x179,-0x40(%rbp) ; F(14)=377 + 4048c8: c7 45 c4 62 02 00 00 movl $0x262,-0x3c(%rbp) ; F(15)=610 + 4048cf: c7 45 c8 db 03 00 00 movl $0x3db,-0x38(%rbp) ; F(16)=987 + 4048d6: c7 45 cc 3d 06 00 00 movl $0x63d,-0x34(%rbp) ; F(17)=1597 + 4048dd: c7 45 d0 18 0a 00 00 movl $0xa18,-0x30(%rbp) ; F(18)=2584 + 4048e4: c7 45 d4 55 10 00 00 movl $0x1055,-0x2c(%rbp) ; F(19)=4181 + 4048eb: c7 45 d8 6d 1a 00 00 movl $0x1a6d,-0x28(%rbp) ; F(20)=6765 + 4048f2: c7 45 dc c2 2a 00 00 movl $0x2ac2,-0x24(%rbp) ; F(21)=10946 + 4048f9: c7 45 e0 2f 45 00 00 movl $0x452f,-0x20(%rbp) ; F(22)=17711 + 404900: c7 45 e4 f1 6f 00 00 movl $0x6ff1,-0x1c(%rbp) ; F(23)=28657 + 404907: c7 45 e8 20 b5 00 00 movl $0xb520,-0x18(%rbp) ; F(24)=46368 + + ; 读取输入到局部变量(格式为"%d") + 40490e: 48 8d 55 ac lea -0x54(%rbp),%rdx ; 输入存储地址 + 404912: 48 8b 45 98 mov -0x68(%rbp),%rax ; 输入字符串 + 404916: 48 8d 0d 93 1f 00 00 lea 0x1f93(%rip),%rcx ; 格式字符串"%d" + 40491d: 48 89 ce mov %rcx,%rsi + 404920: 48 89 c7 mov %rax,%rdi + 404923: b8 00 00 00 00 mov $0x0,%eax + 404928: e8 63 c8 ff ff call 401190 <__isoc99_sscanf@plt> + + ; 验证输入有效性(必须为1个正数) + 40492d: 89 45 fc mov %eax,-0x4(%rbp) ; sscanf返回值 + 404930: 83 7d fc 01 cmpl $0x1,-0x4(%rbp) ; 检查是否读取1个参数 + 404934: 75 07 jne 40493d ; 失败则爆炸 + 404936: 8b 45 ac mov -0x54(%rbp),%eax ; 获取输入值N + 404939: 85 c0 test %eax,%eax ; 检查N > 0 + 40493b: 7f 05 jg 404942 + 40493d: e8 b4 12 00 00 call 405bf6 + + ; 检查输入值上限(必须 > 1999) + 404942: 8b 45 ac mov -0x54(%rbp),%eax + 404945: 3d cf 07 00 00 cmp $0x7cf,%eax ; 1999的十六进制 + 40494a: 7f 05 jg 404951 ; N > 1999? + 40494c: e8 a5 12 00 00 call 405bf6 + + ; 计算 N/2000(通过定点数乘法优化) + 404951: 8b 45 ac mov -0x54(%rbp),%eax ; 输入值N + 404954: 48 63 d0 movslq %eax,%rdx ; 符号扩展 + 404957: 48 69 d2 d3 4d 62 10 imul $0x10624dd3,%rdx,%rdx ; 乘以274877907(≈2^32/2000) + 40495e: 48 c1 ea 20 shr $0x20,%rdx ; 取高32位 + 404962: c1 fa 07 sar $0x7,%edx ; 算术右移7位 → N/2000 + 404965: c1 f8 1f sar $0x1f,%eax ; 符号位扩展 + 404968: 89 c1 mov %eax,%ecx + 40496a: 89 d0 mov %edx,%eax + 40496c: 29 c8 sub %ecx,%eax ; 处理负数情况 + 40496e: 89 45 ac mov %eax,-0x54(%rbp) ; 保存k = N/2000 + + ; 调用递归函数func4_0(k), 这个函数用于计算斐波那契数列 + 404971: 8b 45 ac mov -0x54(%rbp),%eax + 404974: 89 c7 mov %eax,%edi ; 参数k + 404976: e8 ce fd ff ff call 404749 ; 返回值eax=F(k+1) + 40497b: 89 45 f8 mov %eax,-0x8(%rbp) ; 保存结果 + + ; 生成随机索引并验证结果 + 40497e: bf 0f 00 00 00 mov $0xf,%edi ; 参数15 + 404983: e8 25 cd ff ff call 4016ad ; 生成0~14随机数 + 404988: 48 8b 05 91 3e 00 00 mov 0x3e91(%rip),%rax # 408820 ; 获取随机索引 + 40498f: 8b 44 85 b0 mov -0x50(%rbp,%rax,4),%eax ; 取数组[rand_div]的值 + 404993: 39 45 f8 cmp %eax,-0x8(%rbp) ; 比较func4_0(k) == 数组值? + 404996: 74 05 je 40499d + 404998: e8 59 12 00 00 call 405bf6 +``` +所以相对还是很明了的,依旧是关注`rand_div`。 + +### **动态调试** +先找出`rand_div`在最后判断前的取值,比如我下面的0xa: + +```lldb +(lldb) si +Process 27027 stopped +* thread #1, name = 'bomb_linux', stop reason = instruction step into + frame #0: 0x0000000000401719 bomb_linux`GenerateRandomNumber + 108 +bomb_linux`GenerateRandomNumber: +-> 0x401719 <+108>: movq %rax, 0x7100(%rip) ; rand_div + 0x401720 <+115>: jmp 0x401723 ; <+118> + 0x401722 <+117>: nop + 0x401723 <+118>: popq %rbp +(lldb) si +Process 27027 stopped +* thread #1, name = 'bomb_linux', stop reason = instruction step into + frame #0: 0x0000000000401720 bomb_linux`GenerateRandomNumber + 115 +bomb_linux`GenerateRandomNumber: +-> 0x401720 <+115>: jmp 0x401723 ; <+118> + 0x401722 <+117>: nop + 0x401723 <+118>: popq %rbp + 0x401724 <+119>: retq +(lldb) x/gx &rand_div +0x00408820: 0x000000000000000a +``` + +而当 `rand_div = 0xa`(即十进制 **10**)时,输入值 `N` 的计算步骤如下: + +- 数组索引 **10** 的值是 **斐波那契数列第 20 项**(`F(20) = 6765`)。 + +- `func4_0(k)` 实际计算的是 **标准斐波那契数列的第 `k+1` 项**(例如,`func4_0(0) = 1 = F(2)`) 需要满足: + ```c + func4_0(k) = F(k+1) = F(20) + ``` + 解得: + k + 1 = 20 → k = 19 +- `k = N / 2000` → `N = 2000 * k = 2000 * 19 = 38000`. +从而得解。 +![phase_4](/images/phase_4.png) + +--- + +## **Phase_Impossible** + +Impossible? + +从这道题开始偷懒了,掏出ghidra直接看c代码了解一下大概流程再去objdump看汇编: +```c +void phase_impossible(char *param_1) + +{ + int iVar1; + size_t sVar2; + undefined local_118 [256]; + long local_18; + long local_10; + + local_10 = GetTickCount(); + sVar2 = strlen(param_1); + if ((sVar2 < 10) || (sVar2 = strlen(param_1), 0x300 < sVar2)) { + explode_bomb(); + } + memset(local_118,0,0x100); + tohex(local_118,param_1); + GenerateRandomNumber(0x400); + iVar1 = check_buf_valid(local_118,rand_div & 0xffffffff); + if (iVar1 == 0) { + puts(&DAT_00406518); + explode_bomb(); + } + GenerateRandomNumber(3); + if (rand_div != 2) { + if (2 < rand_div) goto LAB_00401891; + if (rand_div == 0) { + goto_buf_0(local_118); + } + else if (rand_div != 1) goto LAB_00401891; + goto_buf_1(local_118); + } + goto_buf_2(local_118); +LAB_00401891: + explode_bomb(); + GenerateRandomNumber(0x400); + if ((long)(int)result != rand_div) { + printf(&DAT_00406560,rand_div,(ulong)result); + explode_bomb(); + } + local_18 = GetTickCount(); + if (1000 < (ulong)(local_18 - local_10)) { + puts(&DAT_004065a8); + explode_bomb(); + } + return; +} +``` +最终任务还是很明确的,需要写一段机器码修改`result`的数值,但是注意要能通过`check_buf_valid`检测,并且最后指令必须是跳转到`0x401896`不然就会触发`phase_impossible`中`0x401891`处的`explode_bomb`函数,唯一的难点是跟踪`rand_div`的数值变化,建议使用`register write`来修改`check_buf_valid`的返回值使其强制通过然后监控`rand_div`每一次的数值变化(`x/gx &rand_div`),记录好`rand_div`的结果后开始指令设计,需要满足: + + - 指令的异或和为`rand_div`第一次的数值末尾八位以通过检查; + - 修改`result`使其数值等于`rand_div`第三次数值; + - 跳转到`0x401896`避免炸弹; + + 如果前几问都完成了到这里应该是没有问题的。 + +--- + +## **Phase_Secret** + +隐藏彩蛋,并非隐藏。汇编里写的非常清楚: +```assembly +0000000000401a8b : + 401a8b: f3 0f 1e fa endbr64 + 401a8f: 55 push %rbp + 401a90: 48 89 e5 mov %rsp,%rbp + 401a93: 48 83 ec 10 sub $0x10,%rsp + 401a97: 48 89 7d f8 mov %rdi,-0x8(%rbp) + 401a9b: 48 8d 05 26 4b 00 00 lea 0x4b26(%rip),%rax # 4065c8 <_IO_stdin_used+0x5c8> + 401aa2: 48 89 c7 mov %rax,%rdi + 401aa5: e8 76 f6 ff ff call 401120 + 401aaa: 90 nop + 401aab: c9 leave + 401aac: c3 ret +``` +注意到这段指令在原程序中完全没有执行说明是需要用户自己跳转的,也非常简单只需要在`phase_5`中设计指令时加一个要求跳转到`0x401a8b`即可。 + +完结 +![Case Closed](/images/caseclosed.png) diff --git a/source/_posts/overleaf.md b/source/_posts/overleaf.md new file mode 100644 index 0000000..9f461f2 --- /dev/null +++ b/source/_posts/overleaf.md @@ -0,0 +1,97 @@ +--- +title: Overleaf Toolkit踩坑记录 +date: 2024-11-06 09:56:18 +tags: 技术 +categories: [技术分享] +--- + +在安装 Overleaf Toolkit 时,表面上看起来很简单只要执行一些脚本就行,但是在某地区网络环境下还是遇到了一些问题和困难,这里记录安装过程中的问题和解决方案,方便以后参考。 + +具体流程就不赘述了,先将访问[Overleaf Toolkit官方仓库](https://github.com/overleaf/toolkit)将代码clone下来并按照手册执行即可。 + +## 问题一:无法 Pull Mongo、Redis 和 Sharelatex 镜像 + +在执行 `bin/up` 脚本启动服务时,发现 Mongo、Redis 和 Sharelatex 镜像无法拉取。主要原因是 Docker 在国内网络环境中,直接访问 Docker Hub 可能会被限制,导致拉取镜像失败。 + +截至这篇博客编写时网上提供的镜像均无法解决只能使用代理。 + +### 解决方案:为 Docker 设置代理 + +通过配置 Docker 的代理,可以解决拉取镜像受限的问题。步骤如下: + +1. 创建一个 `systemd` 服务文件,为 Docker 设置代理。 +2. 编辑 `/etc/systemd/system/docker.service.d/proxy.conf` 文件,添加以下内容(确保已经设置了代理服务器): + + ```ini + [Service] + Environment="HTTP_PROXY=http://:" + Environment="HTTPS_PROXY=http://:" + Environment="NO_PROXY=localhost,127.0.0.1" + ``` + +3. 重新加载 `systemd` 配置并重启 Docker: + + ```bash + sudo systemctl daemon-reload + sudo systemctl restart docker + ``` + +4. 重启 Docker 后再次执行 `sudo ./up`,此时应该可以正常拉取 Mongo、Redis 和 Sharelatex 的镜像。等待执行完成即可。 + + +--- + +## 问题二:外部机器无法访问 Overleaf Web 服务 + +先确认ipv4和ipv6转发功能没有问题,但是依旧出现只能本机访问127.0.0.1,其他方式均无法访问,甚至nmap扫描端口也发现并未开放sharelatex端口,可以通过修改docker-compose配置文件解决。 + +注意到在默认的 `lib/docker-compose.base.yml` 配置中,Overleaf Web 服务的端口映射方式为 `"${OVERLEAF_LISTEN_IP:-127.0.0.1}:${OVERLEAF_PORT:-80}:80"`。 + +### 解决方案:修改端口映射 + +在 `docker-compose.base.yml` 文件中,删除 `${OVERLEAF_LISTEN_IP:-127.0.0.1}` 前缀,将 `"${OVERLEAF_LISTEN_IP:-127.0.0.1}:${OVERLEAF_PORT:-80}:80"` 修改为 `"${OVERLEAF_PORT:-80}:80"`。这样可以使 Docker 将 Overleaf 的 Web 服务端口暴露给所有网络接口,从而允许外部机器访问。 + +修改后的 `docker-compose.base.yml` 端口映射配置如下: + +```yaml +--- +services: + + sharelatex: + restart: always + image: "${IMAGE}" + container_name: sharelatex + volumes: + - "${OVERLEAF_DATA_PATH}:${OVERLEAF_IN_CONTAINER_DATA_PATH}" + ports: + #- "${OVERLEAF_LISTEN_IP:-127.0.0.1}:${OVERLEAF_PORT:-80}:80" + - "${OVERLEAF_PORT:-80}:80" + environment: + GIT_BRIDGE_ENABLED: "${GIT_BRIDGE_ENABLED}" + GIT_BRIDGE_HOST: "git-bridge" + GIT_BRIDGE_PORT: "8000" + REDIS_HOST: "${REDIS_HOST}" + REDIS_PORT: "${REDIS_PORT}" + V1_HISTORY_URL: "http://sharelatex:3100/api" + env_file: + - ../config/variables.env + stop_grace_period: 60s +``` + +完成修改后,重新启动 Docker 服务: + +```bash +sudo ./start +``` + +现在,外部机器可以通过服务器的 IP 地址加端口 `{Overleaf_Port}` 访问 Overleaf Web 服务。 + +--- + +## 总结 + +这次安装 Overleaf Toolkit 时,主要遇到的两个问题分别是镜像拉取失败和端口映射受限。通过为 Docker 设置代理解决了拉取镜像的问题,而通过修改 `docker-compose.base.yml` 中的端口映射使外部设备可以访问 Overleaf 服务。 + +可以在这里参考我的本地[Overleaf](https://overleaf.hifuu.ink)效果,注意安装完后还需要配置latex包和中文字体。 + +这篇记录希望能为遇到类似问题的朋友提供帮助。 diff --git a/source/_posts/zellij-helix.md b/source/_posts/zellij-helix.md new file mode 100644 index 0000000..a8ada5f --- /dev/null +++ b/source/_posts/zellij-helix.md @@ -0,0 +1,19 @@ +--- +title: 命令行编辑器的优雅新选择 +date: 2024-12-13 01:40:27 +tags: [技术分享] +--- + +意外发现Zellij+Helix还挺好用的 + +避免了vim/neovim的配置流程直接就能上手的轻量命令行开发环境 + +稍微了解一下二者的快捷键就能舒适码字了 + +甚至还都是rust出品 + +即刻尝试一下[Zellij](https://zellij.dev/)和[Helix](https://helix-editor.com/)吧! + +// 至于Helix没有文件树显示的方案,反正Helix选择文件挺方便的要文件树无非是希望编辑窗口居于窗口中央,倒是可以用watch和tree命令来代替还能手动设置哪些文件不用显示hhh + +![实际效果](/images/zellij-helix.jpg) diff --git a/source/_posts/原来我还有个博客.md b/source/_posts/原来我还有个博客.md new file mode 100644 index 0000000..a861fd1 --- /dev/null +++ b/source/_posts/原来我还有个博客.md @@ -0,0 +1,9 @@ +--- +title: 原来我还有个博客 +date: 2024-06-03 00:19:55 +tags: 日志 +--- + +2025-02-25 + +最近整理了一下缓存部署起来方便多了,有空就写点东西记录一下吧~ diff --git a/source/_posts/梦开始的地方.md b/source/_posts/梦开始的地方.md new file mode 100644 index 0000000..059d2fe --- /dev/null +++ b/source/_posts/梦开始的地方.md @@ -0,0 +1,34 @@ +--- +title: 梦开始的地方 +date: 2023-12-06 22:53:35 +tags: 日志 +--- + +不知不觉已经高中毕业快半年了,现在在NUDT的生活还算适应吧,交到了一些很有趣的朋友并且在技术方面取得了一定突破(很期待明年的asc2024呢),今天看到华科一位学长的博客突然想起我还没好好搭建过自己的Blog,于是心血来潮搞了下我的Github Pages。 + +今后会在这里更新记录自己的生活,学习,工作,以及一些想法,希望能坚持下来吧。 + +> P.S.最近我都经历了些什么: +> +> 1. 时长21天军训,认识了一群很可爱的班长(尤其是负责我们5班6班的英子),初步和队里的同学了解; +> 2. 学习了一些C++基础,在洛谷上刷了不少算法题; +> 3. ACM招新赛被薄纱,差一题进入校队; +> 4. 对算法竞赛感到疑惑,尝试学习Flutter和操作系统开阔视野; +> 5. 入坑战地,爽爽爽; +> 6. 被一位巨强的学长发掘,加入NUDT超算队; +> 7. 面临三个考试周,熬过去就是胜利; + +虽然天天早八满课很不爽,但是平时还是可以学习自己想学的技术周末也可以打游戏感觉还行吧,我还是相信NUDT,既来之则安之。 + +这里,毕竟是我梦开始的地方。 + +> 胸怀祖国,团结协作,志在高峰,奋勇拼搏! + +今天是2023年12月6日,加油! + +------------------------ + +修改一下,有的话还是不适合明说哦 + +5YK75a2p5a2Q5Lus77yM5b+r6YCD5ZWK77yB77yB77yBCg== + diff --git a/source/about/index.md b/source/about/index.md new file mode 100644 index 0000000..ae42060 --- /dev/null +++ b/source/about/index.md @@ -0,0 +1,17 @@ +--- +title: About +date: 2024-11-04 22:46:12 +layout: about +--- + +白茅铺高地玄院第N任非菌群主🐳,Linux六年牢用户🐧 + +爱好编程,绘画,编曲,Vocaloid调教,Blender建模等😇 + +截至目前最喜欢的歌手是宇多田光❤️ + +联系方式: + +- Email: + +- Github: diff --git a/source/images/1613f5602b203b38230f19699deb0219454454985.png b/source/images/1613f5602b203b38230f19699deb0219454454985.png new file mode 100644 index 0000000000000000000000000000000000000000..c78f977b5f0516a920f9bac7f71c82eb3a9f026c GIT binary patch literal 741484 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

u^jp!*1q$-uit&o{l<;+JOaO79 zujjg7{c3wx&tHD{18wE@D)ztf_+u}+>{mshS&%X)O`A67sKX9PY%rDndwzS$-k6H?MhN=znPSF^5X*AO{GL^YErzRKg~g_QCf zy&0&DJP$)$9$=_K)E8~xtogI2PpRl&tM&f+hO2*g$%UDs8fJ~Yl#*?ooBs7bzW#}S z`1I_ttyx&M}3UWsRO|uladzU*Egm|AE$|y=~OE<4!#Bq90w! zXaXqcGH_F-PCM?f#m;)m(sTDMH+}6tztsp9&4C&_e0JTFU;M(qe&~ZAe%0a2!1RQp zkG}butMcwfUn48CGYDWATE?mgT1!Gtc5S@yyBGD=Y6O4~W2krSunR7{xNYpj!k~UDIrPjxz>K6w<^Y{K0yZ*Eky3Q( zfD{1{L?d7d0uQ?W9B3qadit0Rby%3%1>K%@tQ%^n(z{T$&P?$&M}SFZkv+ zDu4gUh4ZF+>0bVd!>_#jhI*rcr8HA>X=&z+8M7v~v?qgkefz~1ed~_<9zaSYW(?|B zd;7Lrb@eaXJ33B3@o2Mb@#3Z9$B$pVwNKeQlUiT*y4v<4IWb7;R>?I%cHT#q_ikOc zYTc^G>q^KxOv1}3CXtg;(1^rpNUWsw&UH^Rxq>ebG%xH!OgUF&Rg*%1b(iWoC>3&o zA#Fck+RQ_iFQTlkV*R(@cEeY{_RU5FWCs*6aqHGU^-ur&mG^((!^a-6BxE~|KKhs& zuK8u7uQ8BkWlyFqG6rJ<$AHxmJh^WD1s8t5x7JW1M5Q=5us#3Yg%^(*JMoC62fCy( zYwny$QzmVHZW{vA?+uOD9d8eDonps@7k1 zjqiQ;f?IF-Z9s>NsKS8Ehkm+XJY88TkhK88c=qUo@wU8fo71)5|Wp?uMJVR7HYD-cK$UlWT6c-dC&V zpM7!#@z7T+yY}jFYc_Td4Il#>uqi_h2wL(JCr`TN#;dQm@LMD8!?sP&ed`-vFa6yo z7S5mM%@_8ek;UNruzi@);j7S}*EfClJ72xy-bay>D1pU5^Jx0hU;Mm%?6^~pKO7-j zvgDwNlO{gV*$+udG4}Or9T?ndSP=9lk=q6vM287SHl&~$ z8C(=WCIeTGe&&oh%NH%!(>@H6%LT$UH(u{s%IBZ`nhM&Xhc3JJmlM`(>@EPj3e=m$ z1&fx{U5cyxVN zR_MtCLu2sX+kSh-DJPC=9pzx)h+~g^;?iFXb<@>3-^iumD~B#Uw58-KRM-08J@?!l znIn;oz$z*fv>UUo^I3{9#My zXv`KbT{dCL)ZXQYUcP+QtxaE!V&_Y z0viFUf#hB5p4?8vXlP<_MEno{1w>)5@dJ`lY2MuVb0>GSSU)y8FZ}ku-ShCHf)3EL zf@-7QV^{q2ijGkeU;C;fL*74s?(735jeBNGPY{C3Jp*!z>@bN6f8jO0yp|3pQ*kfBMRIUG4*Ix1H$~Bm@i5L?S zf&ph%9X)39;fJjlRmSo_->Qf2{p#1hxvjsSIYB1De4wxM+G~E^wY~HGAO2ulxxIuP z$Gq~yAO7T*j3@v?l!2Qvt%xTF%F=W9Z*ThAe}1EpTLdZuj`tW(#vP5mMwad+p8VeT zF6tlr6Nx92QW`@J7M^`(?U(-TKmXw~|2X}CQF%U)pbM1j3htp78f@IZ_OJh*>m~cD z5CR%hoRMV)gudJ{VZ3N#N7wp#f0tQMRghdYw2v8=mRiyTw|A~5h$2D2ax-#Hz~Cje z&YGb8=hqZ`s#rYxKt+c6DN)v)&nKe667l% zzPGEpKQot9+UFm*C?!nMXo$Q(fdcT-6^Ei^4nxn@%}=ae#opy&LovNFiUT1L6E!nN zV?g$4Bi}1LaAd!Nlj^($iycS_v%c-m-ge9Ns?mE70M%+a=Cyi#aBJ80>u;`2AtI6$EVE7Qv|v*a9sr^=ws&p*?l=DL zMc@6;|MPEOe&peYkwHWdQGm$biz{~)U5@;BB=)Sw3ShXeu z4T|#)Tr#Y|r$7Nq3zr`3z)BXfp3bYT_(`KtW5=BMC^5uLG-`~${N**<`|})2F7`LAyZ@DB-1UxsW|-V} z*9Nr$m0LSz%$(O&E;$K#|F)a1`Gsf%WME87o*m?k`u3h3H{A5=fx(*h-g)+(oG0&j zkM|luw{Lm&^Plx@~VM4 z4CV%eDdoLg8-8)s)mb1xvLT+beOQY`mqsejTeNI+Ym3$T;=qodUG~FTebA+8R1g(L z$+JGv?5;b0^Tg`M#ViAwyJ)Eq7FmrVMJz3Dp2;ll>AdRaKWSt&a_qg2(vVO$$sy#w zy6T$k{kcHNC+YmTb48?7DvgX<%`9=8V*JhZ*KF(FVaOo_laMCl+47M8@>kbJU?o>7 zl{&_BjJTf48c?HzkR%BJuur2Y5Q5~1H;oM>a}J9G=^UzR9zzggUmiM>=14s$TQto9 zv^lWueXh`iX78OKPJwdpv*#}?ImAX^y?g7ezrN1QqJr~2O?}B>$Q#?YZM*))8wYCr zE-l2Yn?KOh#L${cn*RmbZ2X$R?)cE=I2#!>zhBK1Q4LMe1QZNH2({~fb+v^&@tim! zGz;|e|+V8-~0AMk3Wiu zL(fT?`Xos_dZzkd?YFX!#*!PcGJK zJzKB2@~2r=XCjv*B5E;5mHI&K>Z`Bqsi`I{$m4q^X5IW^pEOzW(a% zJ=>Hpi@_umb`qo9bp1_AJ{JJO@#Du2%dGz%>|+Y3>@Z1v*;9d5Q;jB3G)A-lW)@Hy zAW>t`7^37F8yZ85B2f*f*v49Iz_Egb5~>GdG#;8Qq9jpdvir~Z561d-~> z%T^p-cFxDFYvZ~H@4ekni=^6n&!l-aC|T{-H{aAVP)AoueX?-D+$44E_+{&ZDS}a9 zpg@Rn@Y80^Nr=iCw13-;zxsKW)w8HUb0kyC2m5aZbV%1;bA4tM0W0Ow#0g`EcYs`y2bwp3aeK9daj93r#U>1U@8-!wHOu?@cU<+e%XhO6 z-txX3op;^)aBl_yOQXk595<#TCCuv$&rSRAlOJC2?Qi_sMHhYVu{EoeQ4pAjfl@M! z0oCrf?T$t!-j$JT`qW7VQrHI~1<)pr*eEKwB+a9GMyDBTmN+9YR524YF^S0JTvEWS z5K#;>bBmT8+`8v|;KXA}80+;rZoPA8A6n|7u}~hCeXHYHP?@OH+O@y9tX}IcSp5V9K)s`w z<-fV<*WLZKOt@UG&X_tahTxn7BQU9Y*}Cc3$5ua?X&PP2!X<|g07G6t?+5EO0mr4* z!;d_c$r1<~o?Ey6x%Gw+k#<7>=*vybhNr3>A>{RIum0t>9ov;L*9fQtvE+b6ufP7r zs8(px9x!n{G^O4YA(l9-eDJQWp5Dw{+B)XIMF%B`ON&_zP&6>4OlZkL%NTNo#`eyw ztJkdI#03$;tK${ zL}ORyhVOst-@f~efBp6aUthC!bp#Vb?@NU25XvRT26xWWJnjT-sA#*?W}=g*xRhvLaX z&k${AJlV{0g}|Ei317UeLdG+f1?WcQc5l%=g|#kWd%bc>Hd=7 z{`Ef_CrAh>7$TyA%eg#Z;*_zitscUfr&i^VD=C3`plCE>_6$rp&u#6q>(E6Mfu^32 zff2kE{4EXlo(up$5YUK#&?xbVNWHJG=ZV#;IPt;2CnW*1Ja>*02%TG>>&xop6swHm z$4xYQswp#PS&68(Yt!RvpB;VpvIf>x9DdwYSO10vYYh#CPJs+ub<~7K2dzK{6yn1V zKG+zj1Gh8-&5`=VJ8}Myi%a2NnYGDs4qke9R;2J~Cs{{F{4{`amjYW(E+ zuRG(c3op6+b!VM1d)oLUcISOtzx%z5`!fxQ1+D|lkWj=Ld6+YAzJ}-sw{70Kas38W z3V;q-qaXmHq*${UpLzWLh116jvSDkxAp;d>kqCJ9thp#CA*_FP?ba>pjhvbpSmH|r zsz%PTjnA&x)-%vjZEtUDpEGan^>;iVA-JYKmjbBsh$@Z2zGt3VlQ7$K6GF=4YRLIwm>uj!=mQ`L|d zwrtwGWz$B05&$5(JO}`wOUQKP%0~m81>UKc8k(UR;+{%tWa={&?QNw;@x-njlbARiUjv8t+BDe+)+i{a^&_bi;=!K_?vjfHF}0vH*TXUw$ZcZ&4)W5k`P={&>%Pfq9l!)XZ<_Y ztXWCkHAE>%)ey}RGLUTBmd!f`>%NW4NE0SZFkEM#Mhy%3XFvMkp*}eQCFU!C{qfH% zo;S_Mp8Ib7?Z1Ehy9$Z!Ov^zvT2#|u>=dvdST~R%R%tQ=KnNm1#1M?k$Pf+D_DI=d z2!=Lh+*m|*=r(Qb+_G^qNb1N%iy@B$z*s6fczor<8JwOGlnS9+BN}3kM|Eg!XyU%; z`k)T+SQjmQZT>nnEO@V#3llh2Wn zXvrllt*!0by0({-G@v>Ip@WgvyMezuy!!K?ZDXtvUb# zGYdm03JuHP4yPO{z{E_Ht0IyPwSNGO$cYSr!iQXy6tka*fJ)4{sEIlPDyFHiVAucz zH6Uyv-I}Cnfnn;*namzD+4$_!8#k=;zMPqI2o4>oB3K#o=bnCi>-L`Vql`#xntBA#^3XTDjQ)$+$1DVTNt@qh=&kocFa^t!n zsxu8900^9G^!9CC-?^n@^z_zBI(6~{f(YOW-sG2~qzS5~G=#e}paZ5%b3`6-xK=RyV|Rh+n6R!o~Wn>fQ2t1!=fFF7W3K@YuAWKBLE^}5pkkg$evoes=L;o zwsYC2ZOkY|5LE!k^N5_xnX`b|fx@%TKHJ;hC)OfR2t^YcSqx=#JGN}vu(`XvI;n-- zgh>;u;N(?OG%<>Rrbr?sYOLF|ZhP;5rBziLwhsn1QuplB>j@Htsw=gYE3JszOGz5g z5^QYS`qXvTK3$+ojWCE2MJq=4jaY$W?A^8vfHKX?j>?siM+hQDx*I7BBC0A8nOUitizUEQR)K`pez&CFTo>fF>H8e@FbfW}Xm;1Z5Q5sO((4eq$}?n4h*7PM{p z%%v+99r)#EeH;Emy5DHn3%@e z;JPQDblwNm)H@SJB1aTM+_GU~Z#}ve*9JCz>?nd5&;cr2q|np5Ev|a%xiNdCXFjxL9-jlNCa{{Dr%xe7Wl zBQq3Z?;=2sIA!K^(cs87cWqp^={W%kV#HLqctRu2E%ZLK^8SU>#x}@YWpt#G33Pep z>;pkj^RWJzwOyMx8c_rzlTzXePAvz68=qUXy|=HeGJ1U5=sEM|Uw_9#A%?^kQzNN$vzcBFiY^iYdlHh%v57;06z6G##JjH&E?DnN}^&CL8OV?XsYw< zV|%rK?O*@xYJvbpR@5F4a>0(VK$;6vRx-qK%+*HH&1zD2>4ZArK@TEl5ZDnwQU#FzHr@r43|rUd(t;5`ti z?E2t3jIB^pQ!{Nc8{jUjk0$=H`GB;WSR@S5tN?-lC^ehOXlk*Z=j2^EL=3>lj=_pR zTMP_I!I?>()ycUe0mv0VK@E_=3gIXPaGCL2|Lo6CIp)X`Q?xxivbV+A0hvH4>}+{1=z6TKkkxDg~Y& zP?1o;6u~htn+d86;eTl7;c4zw1kfukyX1>hsp>1y_ zV5W^602DQVQxHr1fW%BqrDmZ&&-!z477B9cf-*xD!J#uSD|%&nL7?ES_!`^g@QnC3 z1*XVoWLFS|(?4tmtWrR1pg_l>nu($5UMl^lJNdH^6#ff^x)cj0I3#4p#9)SEfX*#m zx`eO15~KYg>XO6ue|J%D=)hQDLB_uL2bSxO4yYFC?N-; zpoU0DZg@Kh6g2}4^_UB~2z zN31aiiGYB>MFkd(2!J%8N){rZS4B?zu#H8cqC#P2CSnr7;z&DbR#eeou&-YbWF*A_ z{+`C5SqD}SC&3gO8HgBAg2sU;5E14KwOW6VK+;6P6occ00KiyqSB;EGXsF&wqy$tP zmFG`m5P&u7k}n%Pw1;pE*{5IxqD+d&K_Wuz?duLYNi?!!Gc%Op zn!h~IB@G=y!(9&EF8*RD;!*(7A%9_rz(w*3z-Gqeki283sJUr>9&%tY0z~LrqoeNMk+d(gZ z3nz*s03ha=69oz}dJkw4b5IdrXJUpS)SC98sChA%fHv!+FSg>WLqi_BP;)X7l5@@x zs45I*A%Ks-WUMA=XuIq~KeE%P)oOXCB{2dk#CeMwJ!ErjsL@rpM~S8(T8t)!e<064 zgb@pw#(X#&)MhxY1@({u2!UWRgsx-?NNR!rgz@1=9^SO2uVq53Sh0Yo+2`@n+-AG)kAe*C1Fv!_pe^wEbQZ3iPIGNhUF=1e?byyn|-?OVBWWe^kq zMBLMylRnQQ4}0_Cm+k@gFr>U!w47z9w>R2(9yFK+0TC#0*v$c_X7GS7-YD(a%}K0F zgoM*fF%u$k#q^X~@!<U|r^4JqzecHNB+fP36 zs1)jn)_(qr%b$GmDJ5Stz>2;;h#H|HArq<@shKF4y?+vzV+)iu%#f#4g(PSWX{}~M4@j-SKp3pA}#^} z5)P@e@4ZY$FX_*ts+g)u(eK?oEeG3;x45v~!+)e2AG-g(?(Xv|?Wy-I%MV`h)zkod{ZNuV6%=^xB(FX1VnUA=V7My0&^%KX5RbabbuLPa|jxVk|Z%TW)2~!DiIp) z{zlEL(P%J{iKS^ui2R}lV9ko=)gE%Y0=`;&Y$Y|&D8ZV2>!wz{_!J9P1q1>S=O*PzPOxr>fF z>hN1{zoTDN%pvT{2T@f;LqcYXBIq#B^F3QMBLD~?^PW{T?y7r?h|M$Ub~%%_>zP!u zdZR%@XA%i{@5y2D_M2g1lRA0`EW7Ks4PnrRRW(&LjyRK~suD#o6yJ;^(rmFJE%~o& zq&BCGRCJd!NiWt&+6$(a_Pp~ig<%F7(mFICqY}BKoJ1KMD7BC%g7*zIaRh{9puobF zdZ5XZrz~7Bf5EJ&38BL@Ns=rylzgtPb@bTXuA%PQ0s6x&+_jCg=eYZPZPTB%fGqNbT1T0^tjx|_Do5FAopGQr3TyPZwc^GRxENVMCi5fRzY zofyeURGf4Aqd^A{f%l|fE-AN+ojPanp$$dwDQHPm9S9Qzu^hQ$bUT>_F-|H9U}}g! z*6h&GAO3Di^TzCwLEUc^5~ON>$oWgE<3zoiF4&B5da*!C=n6CRYtY7Fp4Vs zv}MGn-sR)xd5|b(jEKM6{1^cU5<2ISB+2u<>Pzh%GY(vKWE~v4G6W?+B8X}T9$aZm zYsG<}NjXVj2oJUUxM&fwiKrqn?X(YEX7=SINTaXZ?jR5*X=WhUtj{VEaHSS#(&QP~0Ti5|D_2__ndM>F2@;|V@j@DqsOO{&xSEH0+4};;Sk&hg0f5OQW`nGX zq!JBxT2~$6WFzL=Zn*Ym2QFGTf5E(#_VIuIzW2FQDeryw!FzB1_01s!A%hWk1yNNr zA|zr_jV49X`@-?0nGJ<_LpjbK<4Ho37m6oeILG-@jVGI?BLqkZ_OJbGe@$>tZ7XWd z>Vqm!rIZ{naRQt6_xEq^+M$#JI0a{bj(N(&af#`M&TdhbXljvn!PW1(%-^iY1@}}G zu;*)uViPq+0-_3Wuy6IFk4!rH&`ed1Msx;F1d=qZX-Iqm;dxPYLBX!U8Z`?I2FXL*)58V}(ugF6&U4TLeNC{l zprr&c0qW`Qyy%i2f9#{5XlreC1X1d}o!fqR;dlFb2RNyyIH8Zt5&x@IYBuR>hO{H0m5K$r`F8;&AeI!Ly z0&JEAarXl}jDzRGbAtkb01>lu&U>%ku_Gc>EFP`tgGZc#<|F@Js#rSwbLa&Vsv?uu zVr+PLFbNUtj|fa(41^N+Xl2Fn>(4r?)dA;?5JKIhNjmDRbI!f*o_lJc;KouK9-`g{ zIj|U8(d;%eLQ>sp6B~?@)WwiHzsq2F5lA^#K$9qnnA&atYei5nFbjEJ01CV>&LpXT ziYRJ90>DZ@%tS~n zzW?2Cb~?ZkP@>T=MBN!WPFvpmrZ=2;{3~0_zU+Y&EIKBN7R^y6TyCxG=;_~i$N#Ge zg1govXHJ zqc0eeO9jx({)->0@E2+$Zz6($75zM7=e=3JaOsLA2OS*6u`fxK!v07ULzYs6xn zU9E{TqFuPXiXLIyd3Se>qjpk=KJT+3V&Z(_9D-lC^pJ%ItqABGdyPXy5mf>vm-J@2 zvj{LWy=F9`FS^Uwwp}eMB9ikWy7uvh{_?$Vb+JE13ypda_b3*aBgaY0o8Rr1#-F4e7uRQuNY{3bWrz~Bz zeBF(AI^ux<6UR=RGkZGZ11>ghzvUJsui*Z0u1!Qk3?ovurkyNydw6@FceV*cvVs1` zAAfAp5eG|juQ>RS%YJ-GO~AkfOd`4!%a?F$R50GV^09$|x>E8YCpkuro;=@QG_w!f z{b20Pq!-;Gm7T76-`OZKpiHo(t>d&)Uw7tdr&Oz@5VJH*$-oo~b`ddT?;Cm8Tj>}< z!HOIwN6?UI(GM`(sUn3I8o4wC)WAEp$9XA&=rj)WbY1v^OaJ!oKgum!@-AiQ@9Dbu zqVMuFD;%l1GSLnL})v698v{UQB?V#5lD+yzS~j2oN8tV;OMz4r=I07piI`;17y z)QY~%P?)T$X1mTF6*?Qk4>dw}_{DvQ=hb1csfYFd*!%BrNsc029FB<0tg7xlZoD_r zjLgV;@6E^}3E{mLi-&~;7PnepmwRCy3k&<*``ukwKuAIeBOwWS2grLjGaB#hnd7>v zDl;Q~e`Ix^K5jH4%?L?!JpI7Ts85}$tjsWPM7%+vOn@OtI>vwUGkB_B`< z!KZ{F(F9(ES?9T<2uExn1OX2k0ZP95KR^6mKm9=?qc}?Ifffb;hsEIOf|F=8S-WQK z`t|E4Mw3e@!r8_RE4OUeqCl|+Q3wnQL;4E=Bv>y1h$16-$o!20T-J?NPDI1Nm#~GL zvq;Fyh^PXs8;_a0Cd4eug7<<$zr&ubv-Q%j!S)<}p^X!sf+5VjR{>q}&K2b}gFwb8 zm9|B0O)ud zb=YnsZYUzwS|k)?~5W(asO{5V_{zZt99Y7uYD1?^)*~o2%go?;nYcxbrG^|*fJrfZUdT%SS(vk}+pi)5a zec|^F0*y-PVKxyEQIMOm0ysp7>oK12mWx+T^_XuBS1TN62V;y(*lP_ zfQs_m3fGlG-N6hcg)E{-!SITM-5?CwOS#hC`O%Mk;<%#@)2^x|jVqCNIe>0Zh~#;$ zM2M7DT2c|gx~?cVeh6G5+yCc>|M-(1aw7xgQ8NMoqp%i62}F3rpmu;lhcRAj*RAdD z=^J0EFjAThtXs2Y^XAP+$etOINON&gQ2;#zmIDfbNdVTzxcV;olfKEHgwg#;7=a!( z{K*}l?XNn2GK}|ZJiCdaA`)y#OIn!Vs49LSbw?k6(!~qU@*XnLktX7viQ^}{^L-x> zAR+XE0tqOkI7M*>9CYvj2OL1;ZC+ioc+v9ZE0LnyvQo5LD0QeFrR~(0hfvFbHk!Ti z)~jWkB6&UNKgaW{w^iv1tJJTz8 z5|zMCro0+mDp{5}Ync+HAqX^!IPcOl9oG)xe7*ciUQxy~_$oQegz3}Iz3}{ma5JFhB9JA`P*jp-d09~a9hBCnA}2%O1Ls^Vt(8kCd$tCJcyN%hG-tC# z1W<|z@5s$me=OQd+Xb(C%Yp+AQs`pLpL*osE3dwG`SR6lQAALI1LYtZKY7|WzxB-* z&|_oHdEE0_q+X{iI~M>qwGlPAt{8T%{%%jy3GSxqs#lH#_?w@7>fw9;aF3WIcM_R0 zGb$8Cth#LRUmcE1%WMWLK|VIara0G_1CI)UDNApg3%Q zawr}~Kt-Oj#ZNza|NVc=Rjf=2asgykq5w6Bh=7ir9Vk<_dgThn(Yx7j>>^V{Q9)~A zaUTc>Ak4}`+xZv1dA|h*D$ZlfpL+CxUtV{^vSq7%F4kHgVK8D!<0nr2#y@@oV31~i zHy(}9j;a)RpDljo(fjYKuY>gfzzRpM!0n6^RT zL~||c`{R9oI`q&58q511bi`h>r$4=9V_c~mbl5JhLdilzgD;;0}xp1i8 z-e@0wQQC=`6~(A!@52&cyB!l8$kZF(@%BRxKbj!dQhoZ72d}yAcT1M70nveYR6y4( zPnkC3@^5@SDp7efb%??W9W`-BFcP2($CnDGN)pfx2Myk6Ty%sK1DK00x^S=A6BDSF zRP3yuH-G=L&OG~u>wlw6q)9iSWQ;^qED<5$4rlZ2F@F-Jh;erAHN6`B$z~0Jh>hl( z!K4!iv}O&rq=gAKq^+$Dm9pqT5rN5VHNq6dA+!q^5l2WVBIho`ECQ>9OL1Itxgh1v zI|1RMVrEz2$ia$_ro82gAyzMRI@#O;fmXa_%ciHET{iQKBvMRa{h_E#7#52#26Qy0x;z$4R!+-rw zcP3sX86yiKFo;&BE4Mk3iXu&(h)5GyMIyc!J|@JVn|NVHBVB65u`&`!4ganMBBwg` zJK*5+&pN3?4QQ7=yXg7Z`yODD^6M_W_~~aJePYRmsNBh8xZq~CuAZ@)0+1zD8^`|Rbc*rFvAfGdtXXQnu<*0 zD^@J1Ql;&Z3on>GsWZW?n^rBp?e1H9YXjH)?)pQHI*Q^_=agCJoqfhn|L4a&)&l9m zi7EQock^i;gU^Ttff9)T07HH57!K7=vGV}P;M9oMf+(W2mIkjZj^ikblq0SynZ~$) zq*PK$k*c2`WY`_(puk{V&5jqon7uHJy)M*clTO;FoPN$FMk&L+&pdp`zkcU`b>{>a zgGZ&vdrTb)wF~15ly2dl$Ij56ELYsgXXIC;N6tg0juihQFVj0A6j0#SFMsx~-~T#` zDw!i@02V++ihzZEs7!Hf6Hat9(R!7{{>=-DZkZ zpw|$p(+d&^1+Z+xip6)_^s8Q*KvZ$XFwHt92wo}W(psX?J1QpxsBbMfG#*zY(<=iL4AWqEa25(F=TraC0}pJx_|mqi9SH9DWY#R|8Is>urCxpO*50A`)1&kc#F$LmV2ADH{zm5rIBxXNw>rKC__Vod9=CY!d zip2{$7Ok{K%JV!7GYu}t;C(iGLWB1+{5_H|36FtRP$(oUwT*wr+ut#vO_g9^!>UE! z|M!1ezIIF1N9~iQzx(|k8sAX?SHr!09pZ*~Q)yNq59WsyRJ`P)%VL>?VD1IJfG8!EW z!uq_e5eQ=dc8fV*C@#-L!~vE&$Hz%KA$oT8X)qx|qV~>l<#IU`2|~T?ZU>lt@fqzI z_gJ7#PAAjn?tA*Fr)XEDy!ZB-f4gL+yK=?-_uU7jP8YSEaO%l3XH9o`s+s}8 z-2!XKD3B`;^Y^9LlO7ThRwGUa2@DDUgcu-<+8(O<7-{r{Wh92Nt75T1CNTD19Ug(~ zL4 zFw-^`Hplgmt<+?K3q2WtupzdleoIYR4IaJ?niiR1cy{FFbcbm4eK_Rh4n9%c_BDty zm>7@+K^PDf5(4nhh?;f^25rh+k-&~vm>U`uSffXu`aDyb2tA@8`C^PV36daUe}7F# z0e~X?l4+6{kP$c{UG48TM(3W(9pj>;4GEpM&9i7dQAg+aa=9|hig~u;op>kSlR!+E zkOx;oVkA%GiF~+ug`xo2S*u6qrWySCRC*1&6hdO8^~8dgFE1g5<$J z5wOh87>G-eGI8!vfSAWF*a_<}I0L%a+9UNtxOt{Re>QJyqa`6hTT@{#)kR_0OTx}7 zr5UuvAzPwZWAI>tr0{l{Pc%xSR&q}O4#N_AJoq}0r5Fmq82rYeZ=_LE?_91G)%toL zyzl;+1y7{|4?ZkP%10e>Sjm7?w?FsfL+dtdP;tVzNAe}I6Il>yvI5-57S}ZcA}Vy~ z^ZWmJe=QSAI;YQ>KV{M+@_zR0xzndl(>ET|H%(&M9sVTwA%ziCkDEpbMGIp$M%J7$ zfXKAd{^Snaza1f%W2Rn)N24@4cNVx>wMRu%_b21JKgkWn=$uTQGOZMsmDU9h%1+lv zwxlJ08JHkj<*Tl5o3HkR=W&y#F{xU$d&SbHz3cOCz}s5xY%P;Xlcuz3*}h@bmaUsI z?{jA}>pTOK5g=!6a6v|Xb|S{+W($E_WJQ?VAYmL9?Ia|mxEO^#Qa6bR3K--_$+OQr z*H`lyR8)DwK?@EwK!+T7NK6pv+Lp~Lo?5cVD-#@306@3JSd=n|XuZ=>(%v~yqb4R40?{Bkq|XV( zi#YEPl>!BXK&T?ERIyN=zyS&xq8JBb1HllhAPez?iQ}UL*!MGMYc_6iDh7(Q)><)v zL#1_6aZE|v=CeFTgAkbG3d)fNlm_S;PGR9|j`9gFdeF=ijwTZ_iAsb@Z+QKs`^=eT zY*lBySN`O`)~#7_&9%R(Nz})k`y6`wg%_L^Lk*o%s2xLGN`kSpu9jy5lIKcb;`j-X z)=(cZgW>}+=-FgkKI_u=edqf>{=pA^@U<^}j=&KLum!Q~(*C~Q_9PbX#&vW8i*Ux0 zTh2YP3k4aZq9~d?u2Z8W?|ZiQ2pU_|^#oQCsINftV>UHV48=QSB>XK*Qv5P1K6RrW z_B=GZuv`a3fV37;p`S<`phqw0MU*ibAppU-_l`j%LNGo|d1J@o1bqDkvEg>tB!9g++nn*86zeITydNy(6wfZsW40f4uEZ=fqp9^6GWJyn4&lo+?CK>AL96 zZ)vZzX%G-B*?ISdk%-va+CU$oLQtKZoj@prsKIhh2CdHlzyo?HpLN0ezx{7N z`j>D2)7L)#X%nW=geCHR`?hYQw6(6YV_Y1S5S1d$3LSbNK}Ce9V?A*~C!r;j?yXy) zPSk>kKq?$qM1>TbwIVhXK_L}Xhe8qX9=wQefMvsk#RGc~%i`*w7=w5g4EOr$76CKB*Dd+)ph=R`b67(vJm3!ooJz_45K{2~zn6L(FXaoFKU zBZ~%6M4$)=9SCT1-g&PRE93>6T4snsQ@?k$K6GptI!cvt97Rf%$|XWkM2bj|Y9i&X zt|(Fn>;(pDw%KrSJ^mkj()yr-hU+{SS|bl)U_k%-qNj%ah5wf#+9O2p#VC|&Y@UD zhsdC{RujA0lsFBteS0s1&O8=VT)+x=DYhAgzRkgQY-W)F-3l`RqX+Q?RUvV`%&Ng^ z-~8Drq&~Rz6tr0#+htLJ3X}px5RzU>NJ$g5dB6^^u5wX<6UPXViHe6|@ghOXAw?jB z-~fY~qsSz}=$IuCZVY|~!x#i79s-1oB$@*65)uzhvxT7$2&v7tZQt%etoNN0Cx9YC zba_rfMaGVu%dJKYgrZ4+*aM+%;;Cd5-c?AZzTiy4X@B3cMN86Lbll!KY32ck9W9K3 zs!;(VqxHfnS$N?kjv-A4!e$PS6Gagbq4QaPKaml}uJ(>3GFq{K)x?no@s0%8d2ygX z8D+q;4it6B(gcwYi326{0SKYgc|A}FG0X+>iX5Ux1-*Ts9Oj_yGBn6xbOm(s5LZ z4T2MIz0C;FH+5_Zf{-Fb5x9Hrx@92CovuvZ>)=C6!VRVj>5gE~=h!ANILdW3hW%xxw z92O-L;_EMw8M&jQO%cTCjJVC~yAfh0R0*L$FIi;BkU}8>L@uJdQ7O?;nkP3F=Qn)n zLlU{^q!(wLkr~-JX3(hGL?xHL@r|?QOfuYOZ1*)k|F4Z3*8K9io2rluNZbAg9(mz; zXD4EX9g%j-aj7igQGlJzYc=NtJ$AH}<47|y85Cm6`AhRBRnP;dh*0S`nK*tNp+}Of zTepV8(ok!HDzJwmil`=}5)jZ7{v@D?c<_ZiXB_!qF7Ap05s4rR00+WJVi@9khlo3< z^ib)-KBQ>92d^Tnh(bk(x4C!Dd*>XBgW$A=;V2{=^rT_8V(GIY9*pUlGVQR#k4Cl{ zErJ7NCwcB{oOGOi+BrVwT2EgKDr!j!6C6bpq9)b^o&i)ebLLDy*VntPHqeXUprDh3 zq|z~d;$*Vf=Cv!Dvva&-8iW_J@nfY!U%-xr9~>*5$51rK-CH+5_0&_2;?&0n9)7H- z_}~K;lp-jBee$sf25KqjxM6Wc3ZK5Nq%fEVl7bIAHYPT}TtF=$$wMRs+b$3zphpm| z!S`<8B*+eA%8WUsO1mcDEHz5iZ<_}CtMm8T%P6ghhzLUnOH|C(L_npQLwDyqA{wK# zDcI8;LmsGk24km2fe2Zf1ArnDk)&KgL}vEh1A8J8!CEzS43nl$@9gZfE_cpl&SlQ! z4K8rx!OyO~+afGOFQ(@7frlS`&benM#u-U(yXm*jJoP9keB_}A@4olGDwcX(e90T% zvS7h}ATIEC3{-W@I1y0^ z>(Ze|9CO4mM@rtyY0nKe+%QnfP?2Y+(Qei$=X zyz@rM=8YS20Wsxr*W{_wXKMltVvNbMERJLASt#*TI`qinX3g4r-#IfYdT{;+2}oMq zvSBR?t2mxAYgVPROB1lO8c8X`jMj^TXwu}V6DM?{uL0-l)~yi{?|hwzE2IGe9jT%b zGp~iQegKC-8@=MSQC|=U4GXGnAP78_%$i6cD2=4GHYScEt&~>E zXf$e&rJjT%@XMDxw|RTdfY)BNz40yY*?X^jeeQ*ovtU6*QF7@;=O29FKAIYJbH%B# z&I))8wRKIHIeSi?)i|#iLqr5hI|frK&)s`|d!>x*Yqf#y?k$K&P{0af z?CoJSZ!}hZTd)|-p#ZJrj<$C1c(4jgh%gc$q-fv$573cDLqG&u004jhNklPBq9M)0E#@414PoH0){<{XLi;(k3_)2%+`Amln`+#)5MSCo%e*O4Ji%A7}Vqi z0~uThfiQUL5H^VSS#`_$^&&t~Y5I&g<0ecYKz2UX3K0R7pz#>=WCysaLRqz9nfKlp zZAfd4S}D{@sR*^w8nxD1E3K5$N@>;f7o~Nil`*7@qDI}po}o<$<+LwUNGMdiFA@(z zM8cBVytpf5tcNbe;cDt;$g)ht?~p@{h1mmCQ`S)%0I7$=uruyAK0*V#md#|tIl{+Ip^F9Cyj51w0EFq+mnwy!9W7Ed$}E(80(7Q1$Wp@ z9P~`UL~yjecmn9&wB_k1pRpLFXbw5_C?a$4feT6oDuy3__<`P9O_Z)5B7i!krVs%L zK{YOz=ec;+1PUODVijp1#TW>MNK^19>$O_QT3k=}Hb(HMr_PvDs8|Jz3%z8@7maNi&QbpOLSmU~@v@uhFxZ~y&}onj_|fq^QbB9xNW8`i8L zZJ11{eZuq^vygp+=sjz#caJ~maL4{6P?JB2!&NNHkU3qW%80~L(fiW8y_t64Pg3De zA~x1G%Q7ddDJVQehO{+!#`dtvbP$v@pRT$I`Qq${DC=egP(2)Xjm_{s%LEKPFPdI4H`L|Ix?6)^uQk-gP78! zy%x;cXThx5)6iD)f$patc?bovTs%Y$bf|t8N8&&sMhFTNHYy9mlVSkQGSG%lGlBD* z0XQx?xdJds2w*&yBwMxksqKBeDXF-9{ISQM8f$G3H3&Ku!N?>N$4@xxjMLjrLe>n*3rWbhH_?>8Huewn zt5`ZFExh0oqtIu4abj3u>KIItWBK62jz08&{VI~{tY_Vd=Lkg*1T-T=3Lbgr!A*U& zeomr}Dd%7GW)K~d)&j&5sgjP`IIb+b@S^b@?Gd|e+crM`{Ni#98Z5Cx_ENMTs!%r< zYC@Ya7Aaa1#RIY+u_d;3n@z!&_0+VhhvtWyI-$5xf8+@qgz<}BL;wwu20~Cp#}fd6 zA`eo_!KRtda`qhHi6ZSOU_>cUp-o9R?d{w4n;UK&aIvM1@l*Et>fit4$3Fg%5CU|M|~<dKUPAN%|_|KBXI8P?GDx^2IvxBD<`$m=VMq$)A1t@xEHxlQUGtU;M^*mXIQ! zk@ty7(wbvTGAJE*_)&)}m>ans$*Rj1KL;eiM?&C=wog5Be}BKNx=447KjZv!1Z+$W ztyLB@CO~D0+RwS*lJOlC18KE?+q2I-j^ee^ETQM!dawe)%|#Y$Y$pW*>_EJS;J{&{ z4V;@g!JCl5#%>HyH50fUuZ&}2Pg;~gD(bMrC^3RSibZ^u0crqr-lth!^WZ&rU<>T) zPNyQ4*wt+B_TT*O<^dO1rQ9}o?pMD4zd!z|FPwVH*@qo|!or2G|J-N4_@Q^ddF7Ia zyZg7L;y@KJydu&{lYkOlx^(H<-hn<92vu^SP)-Tg`l~%@nvrH5PoFuLw6fNMcw|pP3NQlFs0jsFyda`Nqevqttq?=` z5D6%)03gdCPcxt9%s%J`st@KWW|WI1&MHctdgT7Tfm-Upv`skYg4f&JX$Ekt1&vb5 z#2i)5x#*Jd9UaEoZQYxfE?rVGqS*;sao`!)lNZm-o}K61v*TiDEr)+)woceFIA-(? zedrT!biwZ~2WXH}qR6jEQBpmIsVa)}S%h;-0tJwvh!g~x-N-0SK;S$(Cc|U^BOzpR zqyT|!I_7N6En7Dm4LX`IVd9*tJTQ?cs6O%deKqGYG#%4so^<+IiBjZjDJe0~KrKtr^h#;op(lR&Z@%`Gzx~P= zKK|kTXH8P#ikewuX?lb8&e=N61q{ing`JGx>LbyBnF%QfKjzpXzTkn+S?^A?_e z5h{qwMkNFWS)m23O4AQGZJ@s=t!4^X>*=#*4%H8= zK_Y|*fdEBB0V?L$*=HYqB)61Oxnt_=lg>CRQAW9}5*rdut2NJY&9(1y(5avLo3DN4 zZ@>2WkAGyr%qdEW{!kK#z^`1oxVze$DbVG%Bab{TQCfMYy(myfk&4?oCyhJ(tkaVu z0Uv64I2`}okO&aaDam87E0;Xe(^qq%%57c8AAfS9 zbPT9N(Yh!Vm%AoSIQ8t)N=X8q(E)h&?7grHHRB{&F=_@Sp;^ZPqB4w7%K&37ngqcK zGY!UBAukyG@J$=n*ZLVGB211t;xL7toYEL2N!jQqw*-{vq;%GK=LmBYMM^2sii`>v z@h;V&kIWhhk{~G+A;od$gg3wAT_z^UdN;3HcJ0+ykv6H#?Lf~}Kl#y?{ya6~Y&`Cr zAN;FvT_th-k=Buph=`phUwiJEC${wr+O_?DC9}EX%YiI~7+tyGn+Xg{0?e%!da>&9L=R^{<+aiYX# zSu8qg>*$y`MUs*OO`=J7pw{Dam*-5t5oD{LU$lA4_R{nzp7^3SytB6tZolI$XW6k} zTrO8CmwovCofXqt?dvq51d3S%M3h#dG?+vIjw^Qt9;x6t zm#`qdL*TTp*IHMzi~<|htnBUC-Z`NprgFx47p&W`@vc8Tl6xOTNm|X4I2u2B^7}9Q z@c52Oe|4ZkW0)K0K|FZ1I|zgssg{!}CGUC9d*{uWT7vEDx_^GfPpet3k_uQUq2I7- z=`Viqi}%0(y`tM^?6uE@7oPWvtFEl&HIFf>2myT7w{88JN1u4=#1oIHVd;pI&-^PD z{p_lruiw(`8I&o5E+2aM@gMlW2ii3o9;glU-us6?2#_!`0trOK8`iFTZt;?%4m;SH z_S4R}#H!NOS6{ugyGKwVMM)Cn%_O;&b zd+)sM9s3^u0PGw)%g%doqo(==^eJbafA}$n5Q709A)a*d$t#|D^7h;A$QgGdmr%e9 z;yBJhTTIS4^Xz$h&(yvT(w&Sbn6oWWYT;0Cq)|+me@}^6oQrqmk_c`jQ zqi(Sj=2OhLvl60MX&c!O}y!z+A*t}&s z1I2N<6m`7)J(rz++DVvgE9w012Or$pz1>UVtHuPh@nIOju9=G4h~@Xk1qt0EZxlm58oP>MU0xVCN%KY9BXgf}<3T zM^M59T&wk4%gzd;Xaq#L^~M_yT5!No2hGz_Nt8O_^fOOC=R)gUO+>`^b#K1s_S@h2 z;RAF;Y>Ob%1D7i0G!^8$XZx0iAARif(@u!M9C-A}?|Fa!PpeAeC_PMWL zzkbUtcik7PFr)UYrcIx5*@r$pX?&Z_t8AE1N2WY#CJ%)P@}9oU-93HdyQVoRoqNd} zH}twCOPAMD#|Vs$fVH=^wAPpB9tk|KQlJwe>S`-dgDllMFrA&{q^v+QMM-;G$M~*E zULxI~DXb0jDr_X(sc2pv{1+@@0YWTVFlA(Zo)OgUtuK}x^I8tU zTmmx&h}LnXQm&Me2!I_504N3zNl9^xK!`a;os(wv*T@KcJ4)Q$}s-TbvKfMYR#fnI&M4Q zpu;|R*@u!?OV+<_)5fPCf0BS%>P*CgrPD8_F02%p4QrP5^>k0`9A|9D!t-9gcFo3H z@462_fd~@;s~OX0eeeSxoj!HE%QGfcq$87z>T;kkqU-71+TGJPzH5rb=-i9nynef1 zvUGVZ%>zjYfzxbjwOU`!-V-~|o@0}(TDj!GM;|--sDsO<<8^O(H)G|uzx{2NS=4bB z-o?=;z5o61OCs&^zS`C;OP4&~`0WU+BwxLJ(dKR49W$r1me;-Mom&U8yY9WGX2mPQ zB#ENRM=!gqvl91J`^jKvF!bO&2<^Us6m@!2y{#vkJY(Kpef%^3`G5XzPc3KA!~~=l zE6EPZ;@)-9Ep)2u38^oDozq;mURcjh@b@ff$2D(!#u;SY9J;@)b1hei*c zB~(T$REkKGicnEUd(z01dl1o;aUDsb!RA(D9JP<@oaD=i_DIN@fUDJBo8>lV0NA{4 zb${=67k3!lcIE}IU$d$Ew!0t790@7wJ!w64+RXP{_R;B+xQ54((xhld{^XFPQ~??yj1m`!coam^9tmAOSv=s^HbME0FO z*F<1@{mRvAWwf-(i%Yf?>9e9^1rVGj7V${poggZu!TQ4Cv)(Dg%wEJRVRk^It(Q@2 zBN1GLwZ84^7cE&fed<&Nc*1eVM%sa^J@Mody**WkJG0b6FloT^*D`qeK#vwA&)cRgEgy7rfE zf7jbhr7N05@B8%Mp8uA$Pd@Q%?|`p#PMo>d-uutnhqC;}-~ayTvln8Nh(HwUKtc5) zw$P}U5hoqTo^hfeTJM@o>cCybE6U z+|y4z^5ipd6xA#sqA_GS`_+|K?mK_Jp48=;jye6jBThVh)$%oK)^CP#WzO9B6UL1< z;1jNDPOtpU?-nm#=X9yaQ2~Ric@IDN@sFlY{eqc1KJ{|y!i!Hk`{EU=SEZRPb&MM~ zVPd(hgKU*t_oj^-uKDG4U^;W_1fWD@vrLp{XTe(%Ks1iQ3yNSEgX+a1nlQmYfe3q2 zQN0`oPy#g)1y~RS7#Y~3uy_XmsElI<(Hy7?p(ykVyg3X&hB6^E6F&K=zdr8B1qiMH z#6bkfLj*P>(r7AQ`uaZt04of~D&pK!H-GhOUwU%Y2G7WnX=Iyj{r*3Hee@ZQA(n|MCB}^{1K5m1x7c;n2!G)@WUrK7G0qhyj>EP?vOh{$8_h z%KAum`rYAD*CSg30LQ{wO`10S!V52qIE^8D;;~1ceDX;Pkrz;i_~3oM|0V*X!Q!_D7#s+}$%EWCU=q%VF2UJf*d;(+I-Z)mQy=pMCeLOdFSZKJ>V= z4>|m_)vH%;-rfgMW%}$n9UUFS8Km9ds@MMdx646gB84DX-bV!g{nHpba1DtKyux9O5Kfji-4N(x#J5QhuXe~;- z17K@C0Fn4G!<`vDd(_O}wRmFBPKb2wcn8rLg9l({7mBvDGMNo+T2e2Uz{Vd8>YTNY zCw}rXpFZj61xg$RUYTs( zzrXgbcfIGVGfwYnD*?OyJk?qfbnDk|_}=&byL+IPrCyT2Q^UX_z&6bgh&WS%*IjeX z0sHP7&*;KZeDXOLAAZ6aE1qAwWm|Xq#BuxXcTkkHp-*98>#}9f{^t6dQz!|j#s&*z zd$EE@BQmD7td3Rf1kDRx$;;%mRVXJhxefqmU^2HO+UAB7l>fYXJTE_=be(K4p6pO_G+%)DS)CYGEqtnE;)_uqC@0j_nccrF;N!R;7`WZwO z^5lY`r5f3-_uhTyzkL6H7!0F0Hb`xs`P8RRIQ&4uJiG{FGyqvKz$r1ID*fHJz5@Ur zsbMdC|AxQ&yRR%+u}MIAKai#V|NZxmzVwx^CX?Gi!D;8d{`7?xtzNgjmgc6tZR)hy ziXtPahQ1A}R$g`WZ@_fsxwF<0dxwIWfph1ah@`o5pnM2jL+hG%6u2&h6^eK!tsOVA zeXtw5^a|1<1cJ~Cr(KQ10H09?M-Vd<`dT2$r1PVH_4$*IUI3gUs9<~rw8IEoE~27j z(&xVX%|@;Q#K)LRb>r8*_T}eRZ629*K;X@5SKRlfyH7gt$Qsh*y$=4w-yF;c90p&b z0st-PmNn0P)oN&&i`{P;&-_`(;Xt~N!bx4!*j7rgFWPcM0I6+2naA3V5nib{`=ql^5(a^^X#+F>g?V_9 zh_0Y{5e5-0Kk?|nRUMtPw5hY7|fAW)`%$_|rnwUT|@zOWGXW_YTdT#Oa zTekI-+Q-eGzwe~+6O`nfc6(d9_E$G-?af$e5n&JkACvOp6x)bcdCBu!YeN)gHZQuF zVF$CQiCtdn-*Ut6uAP0^2bjvG^3?Z#;>*XM^X!^6YkGUCQMod6-n{vH&x>+<+XO4 zj~}@(ibe}dzh}Pcsw?O2J+CsQol5ey_kQ%ei{AS5;w9U9`&6l8{``HXPMBiAcSJ7h zt6ufX->lixEu=*RJR*w5fm*M>?%Eqa^5KtUS|t;b4}9WpE`IBKpIf}R=6z-S#C`YK ze_WE>e%GA~jz7^SDziCjZ$XSPKKHvNLx=#1loO|ftEqe9@g=96ef~cjdgAiM&-eB8 zw|9)6Gk>3s2^|`2B3Z54^Ruh3&OB7J94TT`jEY4>KvJP_iT##M8=iRL(fQ|{;_U#q z{tauFKK0xpOv>z4W9ex(Y9?d?)+(gj(0UP6AcMZ2^EoL^L?$8vX6LO)a~}YrfN&j2 z%#GpRo(;>NUpI65Oi|_IPdG_y=Dh!*haT)3sQRSCTMks|A%AVO&Lko|;gg^G>l2RI zk1*vrMIZ<{Fkq_+G@8nnzxgcyU{cNY;_}PCwsh5IARUwM>D};~-(LTr4}F-hT$wQQ z{U818#czH0q9sc+?^FbEE}h(d=iLV$e_m-(tBBSqaUhL zd(v*+`>`*bdC}@cOP=4hy|>)ix%Yna_L@Dn1pM0@Z#;70*~UXOILKNVps;X9upl;z#@JGkfo8T}HJXbo813bmSSUR<2sRX-m{LZu;yw zot>Q|d)%LdhCe9;;Dd|8jE+4O{-h=L>>Ls0Zq$MasL!AAfR4ol2VQHHSq72fvQ2YE zkjNnAtbH=!lb`3Bq!0u)lqwhz*_|dROc7J`L7^^RPenj$+>s)<(GeX>DtYV znuWbjHS>4BefhiI^{%tdIK8V<7O*|(fKjBtZCbzWd*A!fwt+mYIf-eo)vNC4@@O?0 zEosSL945%jK%f9;&zMe}0r1)lTUeDm5(tDtIBn86^y!ApTekPt_Qa_X7DlJzVho(H z5NY-TfB}*N03s8@SK%D21=gvvq~kHle;9lkEAyv6+o-gs_rnwKdWKY8YH<0li5L(v3_pLynv+iyPP#8a3MqbOrkN)eKEIhlmfcu@>G zFf0fv@0o-R=7p~b1dRwsKmri@S9&;ap;1*Cv_%q-2U$OesK9WztO$DA2BMX=K*ZrwE8>W`ub-+^O?DG zXZ7Z3Nmu60-+#{D`}bQP$FTtmoDyf({_^VI{O)EK-i`>NfN(h}59D^;^2Pu0z3+bV z;~$$neJYD{xtlR_t`MTq&RJ#qjihT=ulVl2{&Qb{mNAhwprB@R(lG+Jm5dUO-apg|`pdAqWCCLKJZ}Ps30M^oS&kIe`FYS6}r%H{Edk0S6o~ zd*<{~q6fBZS+#u8;>FARd}-2*x#e`8s7TU65^*?|6AOHFjADcI4mR81dHgDep zW@Of4q+^Y~29klR{_@&uuDkI@hnfW&cwD(sO4+ShvE=*T`pyo_GslXwLR2=lAg-*iL}C;wkCBQ&s8O)$K}bb_h#&|~ zF>BP;OO%wxuDoE^&fWAcl_Yysm#WqZVWZ zQrF>*z(**aUB;q>1vFw#pnv?M|MTl>e{smc`_Gs*wNi?^w{Kg$e9?1@mN{;pG-FPs z+=g5;R1nj#L;ym-APykkzG2nB{nJ1G^=CghXU_CEZjU8C=-|mpt5iGy$LNr=C5xW^ z&mVqoYwtkKiitD>5D*Cncmt9s0GEsSBq=GawWH8s^#T}*w?H7a|DiwLapR1smtK5{ z#R_|wzwdtY_uUV{fL5NEv)baPp19-I8xA|^IA&w5cV5OQKyaj$t5xs5^`>c)CSG#U zsU~hCWr&nG5d=g=P+Ft68L$+gt%xw7j)4@4K?FhNJ(947tnn_OF-@}27$V{{Apqny zFI7q+vSH22fBolw`uNA*KWFA-0`NAUI(?=fcm#tsA&9^(U;g|L{^NUn19d&Afm4s{ zBZHBqNGtM0QN^QX^o&JKG}S4+n3-LU5>>4ilQh*+?@l6rMnD7vHsV~Z2Beq_H_dQw zj$nis>-A_%5onz|PLxJ87+Q}3Vq_8!)_@c+L=G2W2$438kvJh?TkZYv|NTK*+sBSR z;>c?56C@1bzOUDyajw8>5b)MS5t3N0tzEJB2jBhfCq8o7tZ7pasM3)fbwoQOdmEy&3^235_L?hhzWJsD4me=e%xST~{%u>< zEL-&4lDfU9l#y%oE-XzzVLUD%fw&E8mVNi1zw_Boethbbu8cXUj63qE<3JgYTEvM| zBg_Z3_5A#2Kl%ObcX|~|s4*7;1SJk!8b?}XQR*>utfM3c1TS1?+aLw((o&+CoKvbV zvkb({N+~E>t=;-H%l_%x-}=JmJ~m^@L;z0Oqa%(wmWZrFB++0i1_yexD}R2)t#{mI zN&7knC5HYHcI0wJ0?bhqG5a)6aVKcilY1Oxn=hBNtaxFQN|^x$~osd_^Vzlc@e$_0F4bm^^;mo8NE_MdDb5kwgh0 z2!Ln;%(Gf(9A*GS5%9w4`qj(+{a?QGxlev%`s4|jK-4zw$fJ%EZ9HmVr(DgD>)YP* z^Pm3Y=G*V|RATh?)Fu#H6`A|*xpV4-DQ|h>MIMyVrOruHPnH8zv)BA1j+yGM1tDXUNNR1b z<^0-T{o?VbpRpbzlc3VBi97^R0<=Z~TET-4J#gXKCv-#+r<YrQn*2!s1l6z?VScxW2e1GZ0Z1Vu`7kOA8Gs2H1QHD)&O($J@;}{k%gh-Q&pY>A22+Yk z(`W0s^Y_UzD}*}M-qxOc)4$m;Rw-lp0QVef*!#U(vSc9|NQ#eUmSAK0W+pgj!IGQ_RVXSE?e~6a_7fQ znlZOhDT~wszp>VeLHRwvf!>mqyjn3qqA?(x@|w$QD3)1>43U8XiDL#Lr5F^l2b*e;n2<0@-RQ_Z z1>5HAn&+R~wqbSqq;>>b*0g5%hG!P7a#Ug<1h05-=Bw7^*&N}p$hb;U(;Af&p_F$bSU4$2zMhULI0pg1fk&eToC8!M zUPCn-u-9JkqvcDUx#*IM=j}b$GmuImZ~$5F_Dy%)b=TF`T#q_Ylxe`4bvdfcI;G>? zv=8}R?|kdT3GE`)-1h(Ms$Xv1UIj3L52Xm(ggYqR`23SsU-|P7fAB+&DpP0g^M*^` z^3yARX0tF2j{$SYYg<Mu5pCGoT21|`GyrM@4o$(J8!u; zP1BT7v<5|vSxDv1Yhsu6ah_VSPLxC443#LQ0LePfF4f?TQbMHxCPo?@ZNa+X(#0hW z`MP!WlOBdh9^xLbdB z)!_%tpFejh`&vY9)w1XBy5}J$B@n%Px`moJ1TqJ+=FB?(tWzVOYRUh2|3gnNUXzq3 zc%L_j8aa$}WCWB4?!N7UGf%6`omv8Y?!vR~yZ5d|t2d!m#h8VnwPDv{l?GOelvC!` zuUP!euU~%FnF|-5b=H(g6Kd9KqeUFLl=JORKlRuzul>c6B}H&0EV9g!qB3PG zpL*n5U;ENo3(r04+%r16Dk@Sa4$vv#&8t`3aoer8+;(d80$ldG(zh7 z#P=ITid3L^&2uXVp-T(Ufe@kyfF+^OmCHgZ%5z3k;ye%_S`i(}owI&>{~y)`a5s)i z&f3hPG629?UaKfC;6c2X&;S*>u~%QhE z-+$`yJI^`ioP+mUFut=(*o8Ch0X@V*l@Qcvg8-8I8gWJnh>7Z$*Py{@r0+!lxNa{* z=_vIcl=iu`)@Lp=i0hU<@y);g^4VvfdEQwIyE@yALh%kIH-MW~Z@l%U8*jbwMgXW< zAM_-9ha@I4c{;#pANq_vFvg-1fLif<2$~cFc`xkp2%J$dW2xqmk-`v<-4}TiBOxkA z*5D-TN1K7x9`&f%uA))2UaBM92i%`TVK@_Uy?~J=heks}*c<^aB+LN`V<+*b`b3E< zll24Je(>#oI^l#9PCw=JsWYZ@O=$CMwMqa$iAR!1w-F{vfk&>U8EGi%?D?l3`uodQ zoqO)N3(q{ey;4RHLI&@}Th99LeBck){^IKO>(_#4jM_8D%vNjtqH7&Ou{sW?cxIdS z3~=p%dshC@Ii;{+FRbnm&}nAdN@&H{U@t%rIlNN@7fJ8R=O6jnSHE!Xx#ymJ=9%s7 z?Wm22*IY$#eLb7+x$oYaes}%awdeq5dyYy>nFS+bd_8YRm?zM;a_J*q`ts*5zWCxZPCc!hlr;%~H;_j}X|3u+P71pZ2+4G4`^%+3Iirrw|eyXBgneE->} z?_Id?%me1_+tJoWsF1_#UAAb%lpTX$UCW@+%nJI}FM8zbU-{c}&N=tYv(M^mYd2a6 zdlCoe`UW=Mf8X6VUVqcNwd)BZ24t`xKm{yF=p5vme)Eg}w|?#7H^2GK`^?=N$UC1I zC3&^y)_d>0=9ky&qy(;7F%@4k0I|(803k3hy^Mf_watyUGEmj%#rD-|TfhCkzWI*# zeDK6$j!Pm%;=QW^+x07!UHgllJ@U|lnPp{SqfPx3hmH*p)PZdrkgd%pj-Ox@*}RI? zZTH=GSDI%+8gVz*Jp^iY9VwsHBpV>MA}A^mRRT#Hwjj*lvMw_&jYy0VG3A;k0m7n_ z9T;>2$wE?&{fZ@zZCSsneR3CwD{ES_V$GA!F7^~7Dq`@OK}azHfF>vC24t(1?aF}S zB3F}J%K)LEKh$sufFO9b!L4*4O6i(&5K1+@0&&FKetYGAZCJPDO>cVB-m_*g1LSFB zxHiyp*S+^%bJcZGT;Y76++HRuqp5gykx>Zb*^BSjTmzf4ct8sPMq{I3Fd*Ozu3kaO zVcccTI?ch5LC$QR0;ktp_1}x0d;HCpylLOP=b0!LVx0)sw7RYL&fD*}^6G0#UE|4m zN^|d>2TpBHDh6S!d(6Ak)WX<2D4O5*_P0)-*a3NOn)m(qCqLV`c`KtqR2T?q5dd6= zs%=>Q^tD&~{6m+$&+2&6jJa=o)0=+&v!C^+j*5#pvAtVXSHE%j-z{8t?&+tTF>A)O znstnz>E-e#vmOx3B4MHofJYPn@*;rB3$o2w*ZoNqr4Glc#VPzrJD`c#>oiAA!Jix> z6-uNLQXBk9RH6u&5%Me>;!gq~7y+<|B!GcIRjWLAh)TQ#LPQqOAXNC1e_R)Qo;Z#r zliVsY$Ow5_tCYP!oqMOwP)4waCXBbFC4WxA`TL)^OF!TolS({Bf*k1#IE^s!ju}Zn zBWpooLIf9a?p+E>^X@R2Tm)vJGlIdyy*a8R(%>VXm9i=VXF9e;KAu#hS(HtoTxuK0 zZA7jl1H!q72*`|DduS0YMo|*GYOfZj0bQ22l@msC41x^o0ofw~kcel{o=PkdAuFs? zbrn~`ko#@;+(If8cPPmtcF4je9>{W?lmI{jdM7y;2AVT#){JRW5~X^3wys#YD9@be zIJd$Iy{$%4CGY}?fJRMTlu)8n#94|>$<4a8u18RWjoN1tAjqRA&vWaj*X=JjhiVqZp)?WvGc%l6jLvF{V}JYOxlg;++P6-5BLOrcOsmTb2(*a7aIq-sc-xE)iUr4|#9Iy8_lHr+XE6!2i#Xh$XQ&>-tN*?Fi^A;ggWm0%As z%*P}YAj~63ZB}E9b18-(V_>5~1wxv@7}Gbj@DgBrsuBiY57=|KY^umCX< zl1`lv8LidSNt35eoX|C{6M(z7Zd|eS=`62#=N${G7)aNvL?L*JQKWrt1u1umv>`*2 zri`CBb)o{a)wFxVy1uQONMY{D6L@x7DG{_;Zj2$)mI)OhqT(z`YYHV*nn{TuYL&Bi zLADe}rPOn*d`SjSYz}6m-ew>{Vp5rqL1=>%vXpe3SqEy6;jOuUTpXZ|Go`(gh)~yO z0(dCKr;13RKt&-bb|`2D&8|!~x2c%KBL!^56L~=r5Me~pTCw#>QqD4qy1m~;d+)p7 z*DwFl__FKB*Zu3ieEYUPJ>yi2h$O58M8qQqsZ2;zM5Z!-?|mkARN51>ecRUVZ5ubO zS&k?c(0U(5i5CcT6DphrU5 zOqn`s+N5zEotbx=H>}^dZiUY+Ly|JqKw`!1JRqD~RdPthekg{1FaUtkBBDU0xs#-1 zos^96S*DAl3j_{buTluQBxrJ%la57|gb{4s7?@0`AT*ja2-il~3r#g^E$Xrt<-{wc zMUa$9MNpAZdg_EpQzuW1H1zd%cW>R&w`Ci621dug3c(l_$?{sHl_;G_LKsEFnsab9 zO<;ursVe|zW2^(`Bb}56(%vKnEh(}WF8Xte=s?EI9qtk)D2zZ#M@cQS5wVs&U=L`7 zRCAGF11v2tG0+Y*D2h?UIl%^&!Pez<+_0EI%*cX3S~-`tD*^FNlpie_LQJW3NRf^c z_Ta=Z<%$SI1F{ll*u~-jz>-c`fY3w({SY=B*VdrHr}KiGq^d&MtSl z;!p?Qn1Kj5=m!sis0=CV(MPfMK2e5q3!WSLK}o8KL?x&UyIfdYs1@_hM8MBKXTCHx|wrTmwX9X;RK{SL>mSsv|;{g>QDaxG_tuv0im%Zl9oi}HOCfUAq z{fcFat@jRe<`Gf6tF>uH_72bk;_ko%8MNaPqB3a3)ylDC-d3^XM2+hhx8JCn~1kKFQ||NX6A zUv?Bz1BKnay~8^0&vj&CEzW=!+piFPz@UK!gCyg8+cR76%;3hvDzw3_HV4*olcV=ZVP^S=1)3D2T>)cI`E1 zR;4ZWwzg^gnhmR0WT|C}b0N`0oK>*DmR40VPSA)*W7Ln}uGI+=aM(yJkpn}d4OnY? zBeF`P^=P89%>{rM9RYwx(s9jclf=LSB$)y0vYb>RSZ7=j1X9jZR4P{oYIA4JnK5

;Hc2YB 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

5{3_R2O~^>wLE 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