@openloaf/openspeech-frontend 0.2.53 → 0.2.55

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -12,7 +12,7 @@ The AI keeps proper nouns, jargon, names, and product names — and skips everyd
12
12
  可点击按钮切回云端服务`,action:"切到 SaaS"},asr_error:{title:"转写异常",unknown:"未知错误"},worker_dead:{title:"语音通道异常中断",description:"已停止本次录音,请重新开始",error_message:"语音通道异常中断,已停止录音"},insufficient_credits:{title:"余额不足",description:"已取消本次转写,请前往账户页充值",error_message:"余额不足,已取消本次转写"},session_timeout:{title:"会话超时",description:"达到 2 小时服务端上限"},preflight_failed:{title:"无法开始录音"},aborted_saved:{title:"已取消,未转录",description:"录音已保存到历史"},silent_recording:{title:"未检测到语音"},realtime_degraded:{title:"实时识别异常",description:"正在用录音重转,请稍候",realtime_mode:"已保留前半段,可在历史里重试整段"}},xb={placeholder:"(未能获取转写结果)",aborted_placeholder:"(已取消,未转录)"},wb={label:"已录",aria:"已录 {{duration}}"},Eb={title:"没找到能输入的位置",hint:"已复制 · 按 {{key}} 粘贴"},Ob={title:"识别失败",retry:"重试",retrying:"重试中…",close:"关闭"},Cb={stt_not_authenticated:"未登录 OpenLoaf",stt_5xx:"SaaS 服务端错误(5xx)",stt_4xx:"SaaS 鉴权失败(4xx)",stt_mic_not_ready:"麦克风未就绪",stt_network:"网络不可达",stt_unknown:"转写失败,请稍后重试",sync_hotkey_failed:"同步快捷键到 Rust 失败:{{error}}",preflight_permission_denied:"未授予麦克风权限",preflight_no_device:"未找到可用麦克风",byok_not_implemented:"自定义 BYOK 通道开发中,将在下个版本启用",byok_missing_credentials:"自定义供应商凭证缺失,请到设置 → 听写 → 自定义供应商配置",byok_keyring_error:"无法从系统密钥链读取自定义供应商凭证",file_too_large_for_tencent_byok:"单个文件超过腾讯 BYOK 文件转写上限(约 5 分钟),请改用 REALTIME 模式或缩短录音",tencent_task_failed:"腾讯任务执行失败:{{msg}}",tencent_task_timeout:"腾讯任务超时(>24 分钟未返回结果)",transcribe_timeout:"转写请求超时(服务端无响应,已自动结束等待)",tencent_unauthenticated:"腾讯 BYOK 鉴权失败 —— 请检查设置里的 SecretId / SecretKey",tencent_rate_limited:"腾讯 BYOK 触发限流,请稍候再试",tencent_cos_unauthenticated:"腾讯 COS 鉴权失败 —— 请检查 SecretId / SecretKey 与存储桶权限",tencent_cos_forbidden:"腾讯 COS 拒绝了上传 —— 请确认 Bucket 名称、Region 与访问策略",tencent_cos_network:"腾讯 COS 网络异常 —— 请检查网络后重试",tencent_cos_unknown:"腾讯 COS 上传失败(未知错误)",unauthenticated_byok:"自定义凭证鉴权失败:请检查 SecretId / SecretKey",insufficient_funds:"腾讯云账户余额不足或服务未开通",idle_timeout:"长时间无音频,已自动断开",rate_limited:"供应商触发限流,请稍候再试",aliyun_invalid_audio_format:"音频格式不被阿里 DashScope 支持,请检查采样率与位深",aliyun_quota_exceeded:"阿里 DashScope 配额已用尽",aliyun_unauthenticated:"阿里 DashScope 鉴权失败 —— 请检查设置里的 ApiKey",aliyun_rate_limited:"阿里 DashScope 触发限流,请稍候再试",aliyun_upload_failed:"阿里 DashScope OSS 上传失败:{{msg}}",aliyun_filetrans_failed:"阿里 DashScope 任务执行失败:{{msg}}",aliyun_filetrans_timeout:"阿里 DashScope 任务超时(>24 分钟未返回结果)",aliyun_file_too_large:"文件大小超过阿里 DashScope BYOK 单文件上限(默认 100MB)"},kb={aria:{dismiss:"不再显示该提示"},recordingControls:{text:"松开结束 · ESC 取消"},resultActions:{text:"⌘C 复制 · 编辑 · 润色 · 翻译"},firstResultConfirm:{text:"光标放在输入框,说完自动写入",action_confirm:"知道了"},appFirstInject:{text:"识别成功,结果已输入到 {{app}}"}},BE={aria:yb,translate:vb,mode_switch:bb,status:Sb,panel:Tb,toast:Ab,transcript:xb,long_recording:wb,result:Eb,transcribeError:Ob,error:Cb,hints:kb},UE=Object.freeze(Object.defineProperty({__proto__:null,aria:yb,default:BE,error:Cb,hints:kb,long_recording:wb,mode_switch:bb,panel:Tb,result:Eb,status:Sb,toast:Ab,transcribeError:Ob,transcript:xb,translate:vb},Symbol.toStringTag,{value:"Module"})),Rb={too_long_for_utterance:"单次录音超过 5 分钟,UTTERANCE 模式不支持,请切换到 REALTIME 模式",aliyun_oss_upload_failed:"阿里云 OSS 上传失败,凭证可能已过期或网络不稳定",aliyun_filetrans_failed:"阿里云文件转写任务失败,请稍后重试",aliyun_file_too_large:"文件超过 100 MB,已达到阿里云 OSS 单文件上限",tencent_cos_upload_failed:"腾讯云 COS 上传失败,请检查凭证与网络",tencent_cos_bucket_required:"需要先在听写设置中填写腾讯 COS 存储桶才能转写(旧凭证可能没填)"},Mb={hero:{title_line1:"说出来。",title_line2:"就成文。",description:"按一下快捷键,开口说话,再按一下结束——文字即刻出现在任意应用中。不绑定编辑器,录音只留本机,无任何遥测。",feature_push_to_talk:"// PUSH-TO-TALK 按键听写",feature_cross_platform:"// 跨平台 WIN · MAC · LINUX"},hotkey_hint:"按一下快捷键开始录音,再按一下结束并把文字写入当前输入框。按 <esc>Esc</esc> 取消;焦点必须在可编辑区域。",translate_hint:"按一下翻译快捷键开始录音,再按一下结束。系统会先转写再翻译为目标语言,并写入当前输入框。",translate_bilingual:"双语输出",translate_bilingual_aria:"双语输出(原文 + 译文)",translate_bilingual_order_aria:"双语排列顺序(原文与译文谁在上面)",translate_order_translation_first:"译文在上",translate_order_source_first:"原文在上",edit_hotkey:"编辑快捷键",edit_hotkey_dialog_title:"编辑快捷键",edit_hotkey_dialog_description:"录入或修改当前快捷键绑定。",quick_dict:{button_aria:"添加新词",title:"我的词典",empty:"// 还没有任何词条 //",domains_label:"// 常用领域"},hotkey_tab:{dictate:"听写",translate:"翻译"},hotkey_title:{dictate:"听写 / PUSH-TO-TALK",translate:"翻译 / TRANSLATE"},dictation_starred:"已收藏",dictation_star_add:"加入收藏",stats:{section_title:"今日 / 本次会话",section_title_today:"今日会话统计",section_title_all:"累计会话统计",tab_today:"今日",tab_all:"累计",live_metrics:"// LIVE METRICS",duration_label:"口述时长",duration_unit:"HH:MM",words_label:"口述字数",words_unit:"总计",wpm_label:"平均速度",wpm_unit:"字/分钟",saved_label:"节省时间",saved_unit:"HH:MM",open_dialog_aria:"查看 {{label}} 详细统计"},stats_dialog:{title:"数据统计",subtitle:"含听写 / 问 AI / 翻译 · 数据仅本机",close:"关闭",range:{today:"今日","7d":"近 7 天","30d":"近 30 天","90d":"近 90 天",all:"全部"},metric_switcher_label:"聚焦",kpi:{duration:"时长",words:"字数",wpm:"WPM",saved:"节省",sessions:"次数"},main:{duration:{title:"时长走势",hint:"每日累计录音时长(HH:MM)"},words:{title:"字数累计",hint:"随时间累积的总产出字数"},wpm:{title:"WPM 走势",hint:"每日平均口述速度"},saved:{title:"节省累计",hint:"相对 {{baseline}} WPM 打字基线累计省下的时间"},sessions:{title:"次数走势",hint:"每日听写会话数"}},facet:{heatmap:{title:"活跃时段",hint:"周一–周日 × 0–23 时;色越深用得越多",weekdays:"一,二,三,四,五,六,日"},top_apps:{title:"Top 目标应用",hint:"你最常在哪些应用里写字",unknown:"未知应用"},wpm_by_mode:{title:"WPM × 分段模式",hint:"REALTIME 与 UTTERANCE 的速度对比"},saved_equivalent:{title:"等价折算",hint:"把节省的时间换算成更直观的单位",items:{typing_hours:"≈ 打字 {{value}}",podcasts:"≈ 听 {{value}} 集播客",coffees:"≈ 喝 {{value}} 杯咖啡",books_pages:"≈ 看 {{value}} 页书"}},session_dist:{title:"单次字数分布",hint:"短句、中段、长稿各占多少",buckets:{short:"短句 ≤ 20 字",medium:"中段 21–100 字",long:"长稿 > 100 字"}},duration_dist:{title:"单次时长分布",hint:"按一次录音的长度分桶,看你说短句多还是说长稿多",buckets:{lt10s:"< 10 秒",s10_30:"10–30 秒",s30_60:"30–60 秒",s60_120:"1–2 分钟",gt120s:"> 2 分钟"}},type_mix:{title:"类型分布",hint:"你都用 OpenSpeech 做什么——听写、问 AI 还是翻译",buckets:{dictation:"听写",ask:"问 AI",translate:"翻译"}},provider_dist:{title:"通道分布",hint:"不同 ASR 通道的次数与平均速度",unknown:"未知通道"},ai_refine_rate:{title:"AI 优化使用率",hint:"多少次会话用了 AI 整理;以及平均整理耗时",used_label:"已使用",avg_label:"平均耗时"},status_mix:{title:"成功率",hint:"成功 / 失败 / 取消 三态占比",buckets:{success:"成功",failed:"失败",cancelled:"已取消"}},asr_source_dist:{title:"ASR 通道分布",hint:"实时 / 文件转写 / 自定义端点 各占多少",buckets:{"saas-realtime":"实时","saas-rest":"文件转写",byo:"自定义",unknown:"未知"}}},empty:"// 还没有听写记录,去主界面试试 //"}},Db={title:"历史记录",subtitle:"历史记录保存在本设备。",search_placeholder:"搜索历史...",more:"更多",refresh:"刷新",stats:"统计",retention:{label:"保留时长",title:"本机历史记录保留多久",options:{forever:"永远","90d":"90 天","30d":"30 天","7d":"7 天",off:"不保存"}},open_folder:"打开录音文件夹",open_folder_failed:"打开录音文件夹失败",delete_all:"删除全部历史",filters:{all:"全部",starred:"收藏",dictation:"听写",ask:"随便问",translate:"翻译"},buckets:{today:"今天",yesterday:"昨天",this_week:"本周",earlier:"更早"},empty:"// 暂无记录 //",loading_more:"// 加载更多 //",list_end:"// 已到底 · 共 {{count}} 条 //",status:{success:"成功",failed:"失败",cancelled:"已取消",retrying:"重新识别中"},player:{play:"播放",pause:"暂停"},row:{play:"播放原始录音",pause:"暂停",resume:"继续播放",stop:"停止播放",copy:"复制到剪贴板",copied:"已复制",reinject:"重新注入",export:"导出音频",delete:"删除",retry:"重新识别",transcribe:"重新识别",retrying_label:"重新识别中",retrying_placeholder:"正在重新识别…",retry_no_audio:"无可用音频,无法重新识别",retry_too_long:"超过 5 分钟的录音暂不支持重新识别",retry_in_progress:"重新识别中…",retry_tooltip:"重新识别这段录音",failed_placeholder:"这段录音上次识别被中断,可以重新识别一次。",cancelled_placeholder:"{{duration}} 录音已取消,未识别 · 可重新识别",view_refined:"AI 优化",view_translation:"译文",view_raw:"原始文本",view_details:"查看详情",copy_debug:"复制调试信息",star:"加入收藏",unstar:"取消收藏"},detail:{title:"记录详情",description:"查看历史记录完整内容并执行操作",meta:{duration:"时长",target:"目标应用",error:"错误",warn:"备注",asr:"音频识别",ai:"AI 优化",segment_mode:"模式",provider_kind:"通道",credits:"积分"},asr:{"saas-realtime":"OpenLoaf SaaS · 实时识别","saas-rest":"OpenLoaf SaaS · REST 转写",byo:"自定义 STT 端点"},ai:{none:"未启用"},segment_mode:{REALTIME:"实时",UTTERANCE:"整句"},provider_kind:{"saas-realtime":"OpenLoaf 实时","saas-file":"OpenLoaf 文件","tencent-realtime":"腾讯实时","tencent-file":"腾讯文件","aliyun-realtime":"阿里实时","aliyun-file":"阿里文件"},unknown:"—",empty_text:"(无文本内容)"},toast:{copy_success:"已复制到剪贴板",copy_failed:"复制失败",copy_debug_success:"调试信息已复制",copy_debug_failed:"复制调试信息失败",copy_debug_missing:"该记录未捕获到请求快照(可能为正式版录入或调用前已失败)",retry_success:"重新识别成功",retry_failed:"重新识别失败",delete_failed:"删除失败",export_success:"音频已导出",export_failed:"导出失败",refresh_failed:"刷新失败",star_failed:"收藏状态更新失败"},edit:{title:"修改记录",description:"修改这条历史记录的最终文本",edit_button:"修改",edit_tooltip:"把识别错误的地方改对,下次更准",original_label:"原始内容(AI 给的最终版)",diff_label:"修改对比(红色=删除,绿色=新增)",edited_label:"你的修改",hint:"改完保存即可,系统会异步学习",placeholder:"在这里修改文本…",save:"保存",revert:"撤销修改",revert_tooltip:"丢弃这条记录的修改,恢复到 AI 原版",edited_chip:"已修改",edited_tooltip:"你修改过这条记录的文本",toast:{save_success:"已保存修改",save_failed:"保存失败",revert_success:"已恢复原版",dict_added:"已添加字典:{{term}}",dict_updated:"已更新字典:{{term}}",dict_removed:"已删除字典:{{term}}",dict_hint:"AI 根据你的修改自动学习"}},confirm_clear:{title:"删除全部历史",description:"清空本机历史记录",body:"将删除本机的 <count>{{count}}</count> 条历史记录,操作不可撤销。",tip:"// 建议先导出备份",confirm:"确认删除"}},Lb={title:"词典",subtitle:"自定义词汇 · 最多 2,000 条",new_word:"+ 新词",new_domain:"+ 新建领域",bulk_add:"+ 批量",select_mode:"选择",select_exit:"退出选择",select_all:"全选",deselect_all:"全不选",selected_count:"已选 {{count}}",bulk_delete:"删除",bulk_delete_confirm:{title:"删除 {{count}} 条词条?",description:"删除后无法恢复。AI 自动收录的条目也会一起删除。",cancel:"取消",confirm:"删除 {{count}} 条",deleting:"删除中…",toast_done:"已删除 {{count}} 条词条"},search_placeholder:"搜索词条...",filters:{all:"全部",domains:"常见领域",manual:"手动添加"},empty:"// 暂无词条 //",count_total:"// 共 {{count}} 条 //",divider_label:"自定义词条",card:{domain_tooltip:"常用领域",manual_tooltip:"手动添加",edit:"编辑",delete:"删除"},domains:{helper:"勾选你常聊的领域,AI 会优先按这些场景调整术语和措辞",limit_hint:"最多选 {{limit}} 个",counter:"已选 {{count}} / {{limit}}",items:{programming:"软件开发",ai_ml:"AI / 机器学习",medicine:"医学健康",law:"法律",finance:"金融投资",academic:"学术科研",engineering:"工程制造",electronics:"电路硬件",marketing:"营销增长",psychology:"心理学",design:"设计创意",film_production:"影视制作",cybersecurity:"网络安全",photography:"摄影",tcm:"中医",automotive:"汽车",maritime:"船舶航海"},delete_custom:"删除该自定义领域"},new_domain_dialog:{title:"新建领域",name_placeholder:"领域名,比如 摄影后期",keywords_placeholder:"常用词(回车添加,可选)",error_empty:"领域名不能为空",error_duplicate:"已有同名领域",error_limit:"已达上限 {{limit}}",error_invoke:"保存失败,请重试",submitting:"保存中…",submit:"保存"},new_dialog:{title:"新词",description:"添加自定义词典条目",term_label:"term",term_placeholder:"例如 OpenSpeech",error_empty:"term 不能为空",error_duplicate:"该词条已存在",submitting:"添加中…",submit:"添加"},bulk_dialog:{title:"批量添加",description:"粘贴任意内容,AI 帮你挑出值得入字典的词",step1_label:"// 01 · 粘贴内容",textarea_placeholder:`粘贴术语清单、中英对照表,或任何含专有名词的文字…
13
13
  AI 会自动挑出专有名词、术语、人名、项目名,跳过日常常用词。`,hint:"支持词表、清单或长段落,最长 12,000 字",analyze:"分析",analyzing:"分析中…",step2_label:"// 02 · 选要添加的词",empty_result:"// AI 没在这段文本里挑出值得入库的词 //",count_selected:"已选 {{count}} / {{total}}",select_all:"全选",deselect_all:"全不选",duplicate_badge:"已有",back:"重新粘贴",confirm:"添加 {{count}} 条",confirm_zero:"添加",confirming:"添加中…",toast_done:"已添加 {{added}} 条到字典",toast_done_with_skip:"已添加 {{added}} 条 · 跳过 {{skipped}} 条",error_empty:"请先粘贴文字内容",error_invoke:"AI 抽词失败,请重试",error_quota:"字典已达 {{limit}} 条上限"}},zb={nav:{home:"首页",toolbox:"翻译/润色",meetings:"会议录制",history:"历史",dictionary:"词典",devices:"无线麦克风"},account_fallback:"账户",login:"登录",credits:"Credits",time_left:"LEFT",time_minutes:"{{minutes}} MIN",settings:"设置",tray:{update_found_title:"发现新版本",update_none:"当前已是最新版本",update_check_failed:"检查更新失败"}},Nb={placeholder:"搜索...",clear:"清空搜索",open:"搜索"},jb={title:"翻译 / 润色",subtitle:"随手输入或开口说话,再润色、翻译、朗读。",flow_hint:"上方给输入 · 下方挑工具 · 即刻拿到处理后的结果",input:{section_label:"// 01 · 输入",tabs:{text:"文字",voice:"语音",history:"历史",file:"音频文件"},text_placeholder:"在这里输入或粘贴文字…",dictate_hint:"按下快捷键 · 直接开口听写",dictate_unbound:"未绑定听写快捷键",voice_hint:"按住按钮说话,松开自动转写。",voice_button_idle:"按住说话",voice_button_recording:"正在听…",voice_recorded:"已录制 · 0:08",history_hint:"从历史记录里挑一条。",history_empty:"暂无历史记录。",file_hint:"拖入或选择音频文件(mp3 / wav / m4a)。",file_button:"选择音频文件",file_loaded:"demo.mp3 · 12s · 1.2 MB",char_count:"{{count}} 字",right_label:"文字",right_hint_voice:"来自语音转写",right_hint_history:"来自历史记录",right_hint_file:"来自音频转写",right_empty:"请先在左侧给一个输入。",use_sample:"用示例文字",replaced_hint:"已替换为上一步输出",restore_original:"还原原文",paste:"粘贴",history:"历史",clear:"清空",clipboard_detected:"检测到剪贴板内容",clipboard_translate:"粘贴并翻译",clipboard_fill_only:"仅粘贴"},tools:{section_label:"// 02 · 工具",tabs:{polish:"润色",translate:"翻译",tts:"朗读"},tutorial:{polish:{title:"润色",headline:"按场景把口语稿改写成成稿——邮件、微信、汇报随你挑。"},translate:{title:"翻译",headline:"把文字翻成另一种语言,尽量保留语气。"},tts:{title:"朗读",headline:"把文字合成自然的语音。"}},polish:{scenario_label:"场景",scenarios_empty:"未配置场景",add_scenario:"+ 新增",examples:{email:"邮件",wechat:"微信",report:"工作汇报",meeting_notes:"会议纪要",social_post:"朋友圈"}},translate:{target_label:"译为",languages:{en:"英文",zh:"中文","zh-TW":"繁体中文",ja:"日文",ko:"韩文",fr:"法文",de:"德文",es:"西班牙文"}},tts:{voice_label:"声音",speed_label:"语速",voices:{natural_f:"自然·女声",natural_m:"自然·男声",calm_f:"舒缓·女声"},audio_placeholder:"▶ ━━━━━━━━━━━━━━━━━━━━ 0:08 / 0:12"},run:"运行",run_hint:"配置好上方参数后点击运行",ready_to_run:"就绪 · 待运行",running:"运行中…",error_title:"运行失败",error:"失败 · {{message}}",rerun:"重跑",copy:"复制",save_history:"保存",use_as_input:"用作输入",download:"下载",elapsed:"{{seconds}}s",idle:"等待输入",output_empty:"在上方填入或选择一段输入"},output:{idle_label:"等待运行",ready:"READY",waiting_input:"等待输入完毕…",generating:"生成中…",meta_chars:"{{count}} 字",meta_elapsed:"耗时 {{seconds}}s"},footer:{ui_only_notice:"// UI 预览 — 业务尚未接入"}},Vb={title:"会议录制",subtitle:"长时间录音 · 自动分人 · 时间轴回看",idle:{hint:"点击开始记录",recent:"最近会议",items:"项",empty:"暂无会议记录",empty_transcript:"(无内容)",loading:"加载中…",starting:"正在连接供应商…",language_support:"// 当前仅支持 中文 / 英语 / 粤语 / 多种方言(川、陕、豫、沪、湘、鄂、皖)"},live:{recording:"录音中",paused:"已暂停",pause:"暂停",resume:"继续",stop:"结束",listening:"正在聆听...",reconnecting:"网络异常,正在重连… ({{attempt}}/{{max}})",reconnect_gave_up:"重连失败,会议已断开"},speaker:{label:"用户 {{letter}}",pending:"用户 …",rename_hint:"点击改名",rename_aria:"修改说话人名字"},review:{back:"返回",speakers:"位说话人",delete:"删除",favorite:"加入收藏",unfavorite:"取消收藏",delete_confirm:"确认删除这条会议记录?",summary:"纪要",transcript:"逐字稿",generate_title:"生成标题",regenerate_title:"重新生成",edit_title:"重命名标题",summary_topic:"会议主题",summary_speakers:"发言人",summary_abstract:"会议摘要",summary_section:"片段数",summary_loading:"正在加载纪要…",summary_generate:"生成纪要",summary_generating:"生成中…",summary_regenerate:"重新生成",summary_failed:"纪要生成失败",summary_copy:"复制",summary_copied:"已复制",summary_copy_success:"纪要已复制到剪贴板",summary_copy_failed:"复制失败",transcript_copy:"复制",transcript_copied:"已复制",transcript_copy_success:"逐字稿已复制到剪贴板",transcript_copy_failed:"复制失败",summary_retry:"重新生成",summary_recharge:"前往充值",summary_open_subscription:"升级订阅",summary_open_settings:"打开设置",summary_show_details:"展开技术详情",summary_idle_hint:"点上方「生成纪要」按钮,按当前 AI 通道生成 Markdown 纪要(设置 → AI → 提示词 → 会议纪要 可改默认提示)。",summary_empty_transcript:"本次会议没有可总结的内容。",export:"导出",export_default_name:"会议-{{date}}-{{shortId}}",export_md_filter:"Markdown",export_doc_title:"会议记录",export_meta_created:"时间",export_meta_duration:"时长",export_meta_speakers:"说话人数",export_meta_segments:"段数",export_success:"已导出到 {{path}}",export_failed:"导出失败"},translate:{toggle:"双语翻译",target_lang:"翻译目标语言",hint:"AI 翻译 · 消耗额度",translating:"翻译中…"}},Bb={title:"无线麦克风",subtitle:"连接您的 OpenSpeech 无线麦克风",bound_dashboard:{subtitle_online:"已连接 · 通过 {{channel}}",subtitle_provisioned:"已配网,正在通过 Wi-Fi 建立连接 ({{ip}})…",subtitle_offline:"离线 · 等待设备上线",battery:"电量",signal:"信号",channel:"通道",firmware:"固件",unbind:"移除设备",others_title:"其他已绑定设备",activate:"激活",add_new:"添加新设备",back_to_devices:"返回设备列表"},hub:{title_scanning:"正在搜索附近设备",subtitle_scanning:"请确认麦克风已开机并处于配网模式(首次开机或长按复位 5 秒)。",title_idle:"搜索附近设备",title_found_one:"发现 {{count}} 台设备",title_found_other:"发现 {{count}} 台设备",title_found:"发现 {{count}} 台设备",subtitle_found:"点击下方设备连接到您的电脑。",title_no_adapter:"未开启蓝牙",subtitle_no_adapter:"请在系统设置中打开蓝牙后重试。",connect:"连接",unnamed_device:"未命名设备",signal_strong:"信号强",signal_medium:"信号中",signal_weak:"信号弱"},provision_status:{connecting:"正在连接",awaiting_challenge:"等待配对码",waiting_confirm:"请确认配对码",pairing:"正在校验",waiting_provision:"请输入 WiFi",provisioning:"正在配网",provision_failed:"配网失败",provisioned:"配网成功"},connect_dialog:{title:"连接到此设备",subtitle:"首次连接需要在麦克风屏幕上确认配对码。",cancel:"取消",done:"完成",connecting:"正在连接设备…",confirm_hint:"请核对麦克风屏幕上的配对码与下方一致。",accept:"确认",reject:"拒绝",pairing:"正在校验…",wifi_hint:"请输入麦克风要接入的 WiFi 名称与密码。",use_current_wifi:"使用当前 WiFi",autofill_password_skipped:"密码自动填充被跳过,请手动输入。",autofill_failed:"无法读取当前 WiFi,请手动输入。",ssid_label:"WiFi 名称(SSID)",ssid_placeholder:"选择一个 WiFi",ssid_pick_from_list:"从列表选择",ssid_manual_entry:"手动输入 SSID",psk_label:"WiFi 密码",submit_wifi:"开始配网",provisioning:"正在配网…",retry_provision:"重新尝试",provision_failed_generic:"配网失败,请检查 WiFi 后重试。",provision_failed_stage_0:"WiFi 密码错或网络不存在,请重试。",provision_failed_stage_1:"WiFi 信号弱或路由器拒绝连接。",provision_failed_stage_2:"暂不支持企业 WiFi。",provision_failed_stage_3:"WiFi 已连,但路由器没分配 IP。",provision_failed_stage_4:"网络无 DNS,请检查路由器。",provision_failed_stage_5:"WiFi 已连,但无法访问网络。",provision_failed_stage_6:"找不到电脑端,请确认电脑端已开启。",provision_failed_stage_7:"桌面端响应超时。",provision_failed_stage_8:"凭据无效,请重新登录。",success_title:"配网成功",success_subtitle:"麦克风已接入 WiFi(IP: {{ip}}),可以开始使用了。"},paired_strip:{title:"已连接的设备",remove:"移除",confirm_remove:"要移除「{{label}}」吗?"},server:{title:"WS 服务",running:"运行中",stopped:"已停止",host_label:"地址",mdns_label:"mDNS",connections_label:"在线",start:"启动",stop:"停止"},list:{title:"设备",empty_title:"等待设备连接",empty_hint:"mDNS 服务已发布,把 ESP32 麦克风接到同一局域网即可被发现。",paired_section:"已配对"},ble_scan:{start:"扫描",scanning:"扫描中…",no_adapter:"未发现蓝牙适配器",error_prefix:"扫描错误:",nearby_section:"附近",pair_cta:"配对(即将开放)",pair_unavailable_hint:"SPAKE2 配对与 WiFi 下发还在 P1 开发,暂仅支持扫描发现。"},card:{online:"在线",offline:"离线",unnamed:"未命名",fw_short:"固件"},detail:{online:"在线",offline:"离线",device_id:"ID",bound_user:"绑定用户",first_paired:"首次配对",last_seen:"最近上线",channel:"通道",rtt:"RTT",rssi:"信号",battery:"电量",protocol:"协议",firmware:"固件",send_text_title:"推送文本",send_text_placeholder:"输入要下发到设备屏幕的文本…",target_app_placeholder:"目标 app(可选)",send_text:"发送",send_text_ok:"已发送文本",send_text_failed:"发送失败",ota_title:"推送 OTA",ota_pick_file:"选择固件",ota_no_file:"未选择固件",ota_version_placeholder:"目标版本 1.0.0",ota_push:"推送",ota_started:"已开始推送 OTA",ota_failed:"推送失败",last_text_result:"最近一次识别结果",rename_save:"保存",rename_cancel:"取消",rename_failed:"重命名失败",remove:"移除设备",remove_title:"移除设备",remove_desc:"确认要移除「{{label}}」吗?此操作会断开连接并清除注册记录。",remove_confirm:"确认移除",remove_ok:"设备已移除",remove_failed:"移除失败",no_selection_title:"未选中设备",no_selection_hint:"在左侧选择一台设备查看详情并执行操作。"},battery_tier:{normal:"正常",low:"电量低",critical:"严重不足",no_record:"无记录",deep_sleep:"深度睡眠"},events:{title:"事件流",empty:"暂无事件"}},HE={transcribe:Rb,home:Mb,history:Db,dictionary:Lb,layout:zb,search_box:Nb,toolbox:jb,meetings:Vb,devices:Bb},PE=Object.freeze(Object.defineProperty({__proto__:null,default:HE,devices:Bb,dictionary:Lb,history:Db,home:Mb,layout:zb,meetings:Vb,search_box:Nb,toolbox:jb,transcribe:Rb},Symbol.toStringTag,{value:"Module"})),Ub={title:"优化",empty:"暂无可优化的识别结果",cancel:"取消",save:"优化并复制",saving:"优化中…",learn_hint:"AI 会从这次优化中学习,下次识别更懂你",close_aria:"关闭"},Hb={saved_title:"已保存优化",saved_description:"新文本已复制到剪贴板,回到原输入框粘贴即可",save_failed_title:"保存失败"},KE={edit_last_record:Ub,toast:Hb},qE=Object.freeze(Object.defineProperty({__proto__:null,default:KE,edit_last_record:Ub,toast:Hb},Symbol.toStringTag,{value:"Module"})),Pb={section_index:"[04] 系统",title:"设置",subtitle:"配置听写、模型端点与应用行为。改动即时生效,无需保存。",dialog_title:"设置",dialog_sr:"OpenSpeech 设置"},Kb={title:"已回退到 OpenLoaf SaaS",description:"{{which}}的自定义供应商未通过测试,已切换到云端服务",dictation:"听写",ai:"AI 改写",both:"听写与 AI 改写",confirm_title:"自定义供应商未通过测试",confirm_description:"{{which}}所选的自定义供应商还没有通过测试,无法在此模式下应用。继续关闭设置会自动回退到 OpenLoaf SaaS 云端服务。",confirm_back_to_test:"返回测试",confirm_proceed:"回退到 SaaS 并关闭"},qb={general:"通用",hotkeys:"快捷键",dictation:"听写",model:"模型",ai:"AI",prompts:"系统提示词",about:"关于",dev_hints:"提示调试"},Yb={reset_all:"重置全部",reset_all_confirm:"确定将所有快捷键恢复为默认值?",reset_all_done:"已恢复默认快捷键"},Gb={shortcuts:"键盘快捷键",language:"语言",audio:"音频",asr_segment:"听写模式",text_injection:"文本注入",behavior:"行为",model_rest:"大模型(REST)",build:"构建",output:"输出方式",hints:"教学与提示"},Ib={interface_lang:"界面语言",translate_target_lang:"翻译目标语言",translate_target_lang_hint:"翻译听写快捷键命中后,转写文本会被译成此语言再注入到当前焦点。",translate_output_mode:"翻译输出形态",translate_output_mode_hint:"「双语」原文与译文都输出(先后顺序见下一项);「仅目标语言」只输出译文,速度更快。",translate_bilingual_order:"双语排列顺序",translate_bilingual_order_hint:"双语输出时原文与译文谁在上面。译文在上时先流式输出译文,原文在译文写完后整段补在下面;原文在上时先流式输出原文。",input_device:"输入设备",input_level:"输入声音",input_level_hint_listening:"实时电平 · 正在监听:{{name}}",input_level_hint:"实时麦克风电平",open_sound_settings:"系统设置",open_sound_settings_failed:"打开系统声音设置失败",cue_sound:"开始/结束提示音",restore_clipboard:"粘贴后恢复剪贴板",restore_clipboard_hint:"建议保持开启",launch_startup:"开机自启",close_to_tray:"关闭时最小化到托盘",close_to_tray_hint:"开启后关闭主窗口直接隐藏到托盘;关闭时每次弹确认对话框",update_policy:"自动更新",update_policy_hint:"选择后台发现新版本时的处理方式",update_policy_options:{prompt:"提示我安装",auto:"空闲时自动安装",disabled:"关闭"},loading:"// loading settings…",dictation_output_lang:"听写输出语言",dictation_output_lang_hint:"听写转写出来的文字使用哪种语言。「自动」时由 ASR 自行判定,并以界面语言作为默认对照。",translate_conflict_warning:"目标语言与听写输出语言相同,翻译将无意义。",show_hints:"显示交互提示",show_hints_hint:"在悬浮条与结果区域显示快捷键教学小气泡;学会后自动隐藏。关掉后所有教学提示一律不弹。",reset_hints:"重置交互提示",reset_hints_action:"全部重置",reset_hints_done:"已重置教学提示",hints_pending_count:"未学会 {{pending}} / {{total}}",hints_all_learned:"已全部学会"},$b={system_default:"跟随系统",system_default_with_current:"跟随系统(当前:{{name}})",is_default_suffix:"{{name}} · 系统默认",disconnected_with_fallback:"{{name}} · 已断开,暂用系统默认({{fallback}})",disconnected:"{{name}} · 已断开"},Xb={realtime_label:"实时转换",realtime_hint:"服务端按停顿自动切句、录音过程中实时回填;适合长会议字幕、直播转写等无人值守场景。",utterance_label:"整句听写",utterance_hint:"整段录音视为一次完整对话,松开按键后再返回转写结果;模型有完整上下文,更准、更不易被停顿误切。",ai_refine_toggle:{label:"启用 AI 优化",hint:"在「整句听写」基础上调用大模型整理:去口头禅、消重、识别自我修正;同语言不翻译。",disabled_in_realtime:"实时转换模式下不可用"}},Fb={streaming_inject:{label:"文字逐字输出",hint:"默认开启:模型一边产出,文字一边敲到光标位置。关闭后改为整段一次粘贴,可绕开微信输入法 / 部分全拼输入法的逐字符拦截(首字吞、双逗号等异常)。"},clipboard_copy:{label:"自动复制到剪贴板",hint:"默认关闭:注入完成后会还原你原本的剪贴板内容,不污染复制队列。开启后整段文字保留在剪贴板,方便再次手动粘贴。"}},Qb={byo_unavailable_tag:"// BYO-MODEL · 暂未实现",byo_unavailable_body:"自定义 STT REST 端点(端点 URL / API Key / 模型名 / 测试连接)尚未接入,当前所有听写均走 OpenLoaf SaaS。该入口正在开发中,下一版本会启用。",endpoint:"端点 URL",api_key:"API Key",api_key_hint:"存储于系统密钥链;失去焦点时自动保存",model_name:"模型名称",timeout_seconds:"请求超时(秒)",audio_format:"音频格式",test_connection_disabled:"测试连接(暂未实现)",show_key:"显示 API Key",hide_key:"隐藏 API Key",key_saved_toast:"API Key 已保存到系统密钥链",key_save_failed_toast:"API Key 保存失败: {{error}}"},Zb={section_mode:"AI 通道",mode_saas_label:"云端(推荐)",mode_saas_hint:"走 OpenLoaf 已登录账号的快速 chat 模型,按积分计费。",mode_custom_label:"自定义供应商",mode_custom_hint:"OpenAI 兼容协议;自带 API Key,可加多个供应商但同一时刻只能激活一个。",section_providers:"自定义供应商",providers_empty:"尚未添加自定义供应商",provider_name:"名称",provider_base_url:"Base URL",provider_model:"模型",provider_api_key:"API Key",provider_api_key_hint:"存储于系统密钥链;失去焦点时自动保存",provider_active:"当前激活",provider_set_active:"设为激活",provider_remove:"删除",provider_test:"测试",provider_test_running:"测试中…",provider_test_pass:"测试通过",provider_test_fail:"测试失败:{{message}}",provider_test_missing_fields:"Base URL 或模型未填写",provider_test_empty_reply:"模型未返回内容",provider_add:"新增供应商",provider_default_name:"新供应商",provider_default_base_url:"https://api.openai.com/v1",provider_default_model:"gpt-4o-mini",section_prompts:"系统提示词",prompts_hint:"默认跟随当前界面语言;一旦修改即视为自定义,对所有语言生效。",prompts_intro:"AI 在不同场景下用的提示词,改一改就能调整输出风格。改动会自动保存。",prompt_tab_refine:"听写优化",prompt_tab_translate:"翻译",prompt_tab_polish:"润色",prompt_tab_meeting:"会议纪要",prompt_edit:"修改",prompt_status_custom:"已自定义",prompt_status_default:"默认",prompt_desc_refine:"松开听写按键后,AI 把语音转写整理成更通顺的书面文本(错字、口头禅、断句),再注入到当前应用。",prompt_desc_translate:"通过「翻译」快捷键触发,把听写文本翻译成上面设置的目标语言。",prompt_desc_polish:"AI 工具箱「润色」页面使用,可配合下方场景列表(邮件、微信等)按需切换语气。",prompt_desc_meeting:"「会议」页面把整段会议录音转写后,按本提示词整理成结构化纪要。",prompt_dialog_title_refine:"听写优化提示词",prompt_dialog_title_translate:"翻译提示词",prompt_dialog_title_meeting:"会议纪要提示词",prompt_dialog_textarea_label:"系统提示词",polish_dialog_title:"润色设置",polish_dialog_subtitle:"调整润色用的系统提示词,并维护 AI 工具箱里出现的场景列表。",polish_dialog_tab_prompt:"提示词",polish_dialog_tab_scenarios:"场景",polish_dialog_prompt_label:"润色提示词",polish_scenarios_title:"润色场景",polish_scenarios_hint:"AI 工具箱「润色」页底部 chip 列表的来源;运行时会把所选场景的指令拼接到润色系统提示词后。",polish_scenarios_empty:"尚未添加润色场景",polish_scenario_default_name:"新场景",polish_scenario_remove:"删除",polish_scenario_add:"新增场景",polish_scenario_instruction_placeholder:"例如:目标场景是商务邮件,语气正式,按问候 / 正文 / 结尾分段。",refine_dialog_subtitle:"调整 AI 整理听写文本的方式。可以改一改、删一删,或全部恢复默认。",refine_dialog_tab_rules:"规则",refine_dialog_tab_examples:"示例",refine_dialog_tab_overrides:"按应用",refine_dialog_advanced_badge:"高级",refine_status_count_one:"{{count}} 条规则",refine_status_count_other:"{{count}} 条规则",refine_status_default:"默认",refine_status_modified:"已修改",refine_rules_empty_after_clear:"规则已全部删除——运行时会跳过规则段。点下方添加规则,或点上方「恢复默认」回到默认 6 条。",refine_rules_empty_my_rules:"还没有你自己的规则。AI 在用一套通用的默认规则跑;如果你想微调,可以下面新建一条,或从一条默认规则开始改。",refine_rules_count:"{{current}} / {{max}}",refine_rule_add:"新建规则",refine_rule_import_default:"从默认规则开始",refine_rule_import_picker_title:"选一条默认规则添加",refine_rule_clear_all:"清空全部",refine_rule_remove:"删除",refine_rule_index:"规则 {{index}}",refine_rule_body_placeholder:"这条规则告诉 AI 怎么处理你的听写文本,多段用空行分隔。",prompt_panel_save_hint:"改动会自动保存。",advanced_title:"高级",app_override_rules_hint:"这套规则只对当前应用生效,覆盖上面的全局规则。",refine_panel_intro:"教 AI:当你说类似这样的话,应该整理成这样。例子越具体,整理就越贴近你想要的风格。",refine_examples_my_title:"我的案例",refine_examples_my_hint:"把「口语 → 希望输出」成对喂给模型;越靠前权重越高。",refine_examples_count:"{{current}} / {{max}}",refine_example_add:"添加案例",refine_example_remove:"删除",refine_example_input_label:"口语",refine_example_output_label:"希望输出",refine_example_focus_label:"要点 / 关键点(可选)",refine_example_target_label:"适用范围",refine_example_input_placeholder_v2:"你对着麦克风说了什么(口语 / 错字 / 口头禅)",refine_example_output_placeholder_v2:"你希望整理成的样子(书面、自洽、可粘进输入框)",refine_example_focus_placeholder_v2:"比如:保留专有名词、把英文术语还原",refine_example_target_option:{"*":"通用(所有场景)",chat:"聊天软件(微信 / Slack / iMessage)",code:"命令终端 / 代码编辑器",doc:"文档 / 文本编辑器",email:"邮件",browser:"浏览器",meeting:"会议",other:"其他"},app_overrides_title:"按应用覆盖",app_overrides_hint:"对特定应用单独配置规则与案例:命中时优先使用此处规则,案例拼在全局之前。仅匹配跑过 refine 留下 appId 的应用。",app_overrides_empty:"还没添加覆盖",app_overrides_count:"{{current}} / {{max}}",app_override_add:"添加覆盖",app_override_remove:"删除",app_override_enabled:"启用",app_override_expand:"展开",app_override_collapse:"收起",app_override_core_rules_label:"覆盖核心规则(留空则用全局)",app_override_core_rules_clear:"清空",app_override_core_rules_placeholder:"为该应用定制的 <core_rules>...</core_rules>;为空表示沿用全局核心规则。",app_override_picker_title:"选择要覆盖的应用",app_override_no_history:"暂无可覆盖的应用——先在该应用里跑一次听写优化,让它出现在历史里。",prompt_reset:"恢复默认",section_history:"上下文",include_history:"把最近的历史一起发送",include_history_hint:"把最近的 transcript 作为参考上下文,帮助模型沿用一致的语气与术语。",recent_history_count:"携带条数",recent_history_count_hint:"AI 上下文最多带最近多少条历史;条数越多偏置越强,但 token 消耗也更多。",minutes_ago:"分钟前",history_truncated:"省略 {{count}} 字"},Wb={en:"English",zh:"简体中文","zh-TW":"繁體中文",ja:"日本語",ko:"한국어",fr:"Français",de:"Deutsch",es:"Español"},Jb={target_only:"仅目标语言",bilingual:"双语(原文 + 译文)"},eS={translation_first:"译文在上",source_first:"原文在上"},tS={label:"听写语种",hint:"选择你说话使用的语言;选「自动」让上游 ASR 自检测,遇歧义按界面语言对照。",follow_interface:"跟随界面语言",auto:"自动",zh:"中文",en:"English",ja:"日本語",ko:"한국어",yue:"粤语"},nS={section_mode:"听写通道",mode_saas_label:"OpenLoaf 云端(默认)",mode_saas_hint:"使用已登录账号走 OpenLoaf 托管的语音识别,按积分计费。听写与会议转录共用同一通道。",mode_custom_label:"自定义供应商",mode_custom_hint:"用自己的腾讯云 / 阿里云密钥直连厂商 API,不经过 SaaS。会议转录需选择「腾讯云」(自带说话人分离)。",section_providers:"自定义供应商",providers_empty:"尚未添加任何自定义供应商",add_tencent:"新增腾讯云",add_aliyun:"新增阿里云",vendor_tencent:"腾讯云",vendor_aliyun:"阿里云 DashScope",active_label:"当前激活 · {{vendor}}",set_active:"设为激活",remove:"删除",name_label:"名称",tencent_default_name:"腾讯云语音识别",tencent_app_id:"AppID",tencent_region:"区域(Region)",tencent_secret_id:"Secret ID",tencent_secret_key:"Secret Key",tencent_credentials_hint:"凭证存储于系统密钥链;失去焦点时自动保存。可在腾讯云控制台 → API 密钥管理获取。",tencent_cos_bucket_label:"COS 存储桶",tencent_cos_bucket_placeholder:"myaudio-1234567890",tencent_cos_bucket_hint:"必填:录音通过 COS 上传后再转写,单文件 ≤512MB。不填则受腾讯文件接口 base64 5MB 限制,超过后无法转写。",aliyun_default_name:"阿里云 DashScope",aliyun_api_key:"ApiKey",aliyun_api_key_hint:"存储于系统密钥链;失去焦点时自动保存。可在 DashScope 控制台获取。",test:"测试",test_running:"测试中…",test_pass:"测试通过:凭证有效",test_fail:"测试失败:{{message}}",test_missing_fields:"必填字段未填",verified_badge:"已验证",unverified_badge:"未验证",test_code:{ok:"测试通过",unauthenticated:"鉴权失败:请检查 Secret/ApiKey 是否正确",service_not_enabled:"凭证有效,但语音识别服务尚未在该账号下开通",missing_fields:"必填字段未填",network:"网络不可达,请检查链路与防火墙",timeout:"请求超时,请稍后重试",rate_limited:"调用过于频繁",cos_unauthorized:"ASR 凭证有效,但当前 SecretId 无权访问该 COS 存储桶",cos_not_found:"ASR 凭证有效,但 COS 存储桶不存在或地域不匹配",oss_policy_failed:"ApiKey 有效,但获取 OSS 上传策略失败:账号可能未开通百炼录音文件资源",unknown:"未知错误"}},iS={version:"版本",platform:"平台",license:"许可证",source:"源代码",check_update:"检查更新",dev_build:"当前是开发版",rerun_onboarding:"重新运行首次引导",install_now:"立即安装",skip_version:"跳过此版本",install_in_progress:"正在下载并安装更新…",install_progress:"{{version}} · {{percent}}% · {{downloaded}} / {{total}}",install_starting:"{{version}} · 已下载 {{downloaded}}",install_finalizing:"下载完成,正在安装…",install_failed:"更新安装失败",update_channel:"更新通道",update_channel_stable:"正式版",update_channel_beta:"Beta(抢先体验)",update_channel_hint:"Beta 通道更早收到新功能,但可能不稳定。关闭 Beta 后只会接收到版本号高于当前 Beta 的正式版。",open_log_dir:"打开日志目录",saas_sdk_version:"SaaS SDK 版本"},aS={title:"交互提示调试",subtitle:"仅 dev 构建可见 · 用于回归 hint 行为",global_switch:"全局显示提示",reset_all:"全部重置",col_id:"ID",col_category:"类别",col_threshold:"阈值",col_success:"成功次数",col_dismissed:"已关闭",col_should:"应显示",col_actions:"操作",yes:"是",no:"否",dismiss:"关闭",reset:"重置",force:"强制显示",forcing:"强制中",note:"新增 hint 步骤:① settings.ts 加 HintId ② lib/hints.ts 注册 HINT_REGISTRY ③ overlay.json 加文案 ④ 调用方挂 useHintBubble。完成后本表自动出现。"},YE={page:Pb,provider_rollback:Kb,tabs:qb,hotkeys:Yb,section:Gb,general:Ib,device:$b,asr_segment:Xb,output:Fb,model:Qb,ai:Zb,translate_target_lang:Wb,translate_output_mode:Jb,translate_bilingual_order:eS,dictation_lang:tS,dictation_provider:nS,about:iS,dev_hints:aS},GE=Object.freeze(Object.defineProperty({__proto__:null,about:iS,ai:Zb,asr_segment:Xb,default:YE,dev_hints:aS,device:$b,dictation_lang:tS,dictation_provider:nS,general:Ib,hotkeys:Yb,model:Qb,output:Fb,page:Pb,provider_rollback:Kb,section:Gb,tabs:qb,translate_bilingual_order:eS,translate_output_mode:Jb,translate_target_lang:Wb},Symbol.toStringTag,{value:"Module"})),sS="反馈意见",oS="打开首页",lS="AI 工具",rS="历史记录",uS="设置…",cS="选择麦克风",dS="Auto-detect",fS="Auto-detect ({{name}})",hS="字典",pS="检查更新",_S="退出 OpenSpeech",mS="停止录音",IE={feedback:sS,open_home:oS,open_toolbox:lS,open_history:rS,open_settings:uS,mic_submenu:cS,auto_detect:dS,auto_detect_with_name:fS,open_dictionary:hS,check_update:pS,quit:_S,stop_recording:mS},$E=Object.freeze(Object.defineProperty({__proto__:null,auto_detect:dS,auto_detect_with_name:fS,check_update:pS,default:IE,feedback:sS,mic_submenu:cS,open_dictionary:hS,open_history:rS,open_home:oS,open_settings:uS,open_toolbox:lS,quit:_S,stop_recording:mS},Symbol.toStringTag,{value:"Module"})),gS={ok:"確定",cancel:"取消",confirm:"確認",save:"儲存",close:"關閉",retry:"重試",clear:"清除",remove:"刪除",add:"新增",back:"返回",next:"下一步",done:"完成",skip:"略過",copy:"複製",edit:"編輯",search:"搜尋",loading:"載入中…"},yS={system:"跟隨系統","zh-CN":"简体中文","zh-TW":"繁體中文",en:"English"},vS={system_default:"跟隨系統",system_default_with_current:"跟隨系統(目前:{{name}})",auto_detect:"自動偵測",none:"無"},XE={actions:gS,lang:yS,value:vS},FE=Object.freeze(Object.defineProperty({__proto__:null,actions:gS,default:XE,lang:yS,value:vS},Symbol.toStringTag,{value:"Module"})),bS={title:"快速鍵衝突",description_one:"下面這條快速鍵無效,請重新綁定。直接關閉此彈窗會清除該綁定。",description_other:"以下 {{count}} 條快速鍵無效,請重新綁定。直接關閉此彈窗會清除這些綁定。",cleared_toast_one:"已清除 1 條衝突的快速鍵,稍後可在設定中重新綁定",cleared_toast_other:"已清除 {{count}} 條衝突的快速鍵,稍後可在設定中重新綁定"},SS={title_pending:"正在為你完成剛才的轉寫",title_success:"轉寫完成",title_error:"轉寫未完成",description_pending:"登入已恢復,正在用剛才的錄音繼續走雲端轉寫,請稍候…",description_success:"下面是這次錄音的最終結果,點擊右下角即可複製到剪貼簿。",description_error:"登入已恢復,但用錄音重新轉寫時再次失敗。可以從歷史記錄裡手動重試。",empty_transcript:"(未辨識到內容)",copy:"複製結果",copied:"已複製",close:"關閉",close_disabled:"請稍候…"},TS={title:"登入 OpenLoaf",openloaf_note:"OpenSpeech 屬於 OpenLoaf 產品線,所有產品共用同一個 OpenLoaf 帳號。",description:"選擇一種登入方式以繼續",subtitle:{idle:"選擇登入方式繼續",opening:"正在開啟瀏覽器...",polling:"等待在瀏覽器完成授權",success:"登入成功"},providers:{wechat:"使用微信登入",google:"使用 Google 登入"},or:"或",byo_button:"使用自己的 STT 端點",byo_hint:"不想登入 OpenLoaf?填寫你自己的 STT REST 端點,音訊從本機直發,不經雲端。",retry:"重試",close:"關閉",cancel:"取消登入",details_show:"檢視詳情",details_hide:"收起詳情"},AS={title:"帳戶",description:"OpenSpeech 帳戶與訂閱",loading:"// 載入中 //",section:{identity:"身分",subscription:"訂閱",recharge:"儲值積分",session:"工作階段"},row:{email:"電子郵件",wechat:"微信帳戶",subscription:"訂閱",credits_balance:"剩餘積分"},membership:{free:"FREE / 免費",lite:"LITE / 輕享",pro:"PRO / 專業",premium:"PREMIUM / 旗艦"},subscribe_button:{default:"訂閱 / 升級方案",upgrade_to_premium:"升級到 PREMIUM",manage:"管理訂閱"},subscribe_hint:"在 OpenLoaf 網站完成訂閱與方案管理。",recharge_button:"儲值",recharge_hint:"1 元 = 100 積分。不訂閱方案也可直接儲值。",logout_button:"登出",logout_busy:"正在登出...",logout_hint:"登出後將清除本機登入狀態。本機錄音、歷史與字典將保留。"},xS={title:"關閉到背景",description:"OpenSpeech 即將關閉主視窗,應用程式將繼續在背景執行",body_1_prefix:"OpenSpeech 將繼續在 ",body_1_highlight:"背景",body_1_suffix:" 執行,全域快速鍵仍然可用。",body_2:"可透過系統工具列圖示重新開啟主視窗,或選擇「結束」完全結束處理程序。",remember:"不再提示",quit:"結束",stay:"背景執行"},wS={title:"沒有網際網路連線",description:"您的電腦未連線到網際網路,請檢查網路後重試",body:"您的電腦未連線到網際網路。請檢查網路連線後重試。",still_offline:"仍未偵測到網路",retry:"重試"},ES={press_new:"按下新快速鍵...",recording_hint:"ESC 取消 · 4 秒後自動退出",clear_title:"清除",clear_aria:"清除快速鍵",error_prefix:"ERROR",error_illegal_combo:"非法組合",conflict_with:"已被「{{name}}」使用",conflict_reason:{equal:"已被「{{name}}」使用",subset_modifier_only:"與「{{name}}」修飾鍵集合互為子集,會出現幻影錄音",subset_combo:"與「{{name}}」修飾鍵集合互為子集,按下時會雙觸發",double_tap_overlap_modifier:"與「{{name}}」共用同一顆修飾鍵,雙擊窗口會衝突"},replace:"取代",rebind:"重新錄入",cancel:"取消",replaced_toast:"已取代「{{name}}」原本的繫結",undo:"撤銷"},OS={default_title:"聽寫快速鍵 / PUSH-TO-TALK",unbound:"未繫結",default_hint:"按一下開始 · 再按一次結束"},CS={initializing:"INITIALIZING",tagline:"Speak less, write more.",loading:"Loading"},QE={hotkey_conflict:bS,auth_recovery:SS,login:TS,account:AS,close_to_bg:xS,no_internet:wS,hotkey_field:ES,hotkey_preview:OS,loading_screen:CS},ZE=Object.freeze(Object.defineProperty({__proto__:null,account:AS,auth_recovery:SS,close_to_bg:xS,default:QE,hotkey_conflict:bS,hotkey_field:ES,hotkey_preview:OS,loading_screen:CS,login:TS,no_internet:wS},Symbol.toStringTag,{value:"Module"})),kS={title:"會議錄製中",description:"{{action}}已被暫停——請先結束目前會議錄製再使用",action_dictate:"聽寫",action_translate:"翻譯",action_ask_ai:"問 AI"},RS={login_timeout:"登入逾時,請重試",login_failed:"登入失敗,請重試",login_connection_reset:"登入伺服器連線被重設,請稍後重試",login_unreachable:"無法連線到登入伺服器,請檢查網路後重試",internal:"內部錯誤,請稍後再試",not_authenticated:"尚未登入",not_authenticated_openloaf:"尚未登入 OpenLoaf",not_authenticated_openspeech:"尚未登入 OpenSpeech",session_expired:"工作階段已過期,請重新登入"},MS={offline:"沒有網際網路連線",unreachable:"網路無法連線",service_unreachable:"無法連線到服務",service_unreachable_desc:"網路無法連線或服務端異常,已取消本次錄音",check_and_retry:"請檢查網路後重試"},DS={start_failed:"錄音啟動失敗",save_failed:"錄音儲存失敗",mic_not_ready:"麥克風尚未就緒",realtime_not_started:"即時轉寫尚未啟動",hotkey_sync_failed:"同步快速鍵到 Rust 失敗:{{error}}"},LS={refine:"AI 整理",translate:"翻譯"},zS={transcribe_failed:"轉寫失敗",transcribe_empty:"未取得轉寫結果",transcribe_empty_desc:"伺服器逾時或全程靜音",transcribe_placeholder:"(未能取得轉寫結果)",session_timeout:"工作階段逾時",saas_5xx:"SaaS 伺服器錯誤(5xx)",saas_4xx:"SaaS 驗證失敗(4xx)",unknown:"未知錯誤"},NS={copy_failed:"複製到剪貼簿失敗",paste_failed:"自動貼上失敗"},jS={check_failed:"檢查更新失敗",available:"發現新版本 {{version}}"},VS={action:"回報錯誤",sending:"回報中…",sent:"已回報",toast_success:"錯誤已回報,感謝你的回饋!",toast_failed:"回報失敗:{{message}}",toast_auth_lost:"登入狀態已失效,請重新登入後再回報",toast_network:"網路異常,無法回報,請稍後再試",toast_timeout:"請求逾時,請檢查網路後重試"},BS={go_to_settings:"前往設定",generic:"操作失敗",generic_hint:"發生了未預期的錯誤,請稍後重試。若反覆出現,可點選「回報錯誤」把詳情傳給我們。",meeting_provider_unsupported:"目前通道不支援會議轉錄",meeting_provider_unsupported_hint:"請到「設定 → 聽寫」切換到「SaaS」或「自訂 → 騰訊」。",meeting_provider_not_configured:"尚未設定聽寫通道",meeting_provider_not_configured_hint:"請到「設定 → 聽寫」選擇「SaaS」或新增「自訂 → 騰訊」供應商。",network_exit:"連線已中斷",network_exit_hint:"即時語音辨識連線被中斷,請檢查網路後重試。",idle_timeout:"長時間無聲音而被中斷",idle_timeout_hint:"供應商在長時間靜音後關閉了會話,點選「繼續」可重新連線。",start_failed:"無法開始會議",mic_unavailable:"麥克風無法使用",mic_unavailable_hint:"無法存取麥克風。請檢查它是否被其他應用程式佔用、是否已在系統設定裡授予 OpenSpeech 麥克風權限,然後重試。",start_failed_hint:"未能啟動會議錄製。請檢查網路與「設定 → 聽寫」設定後重試。",pause_failed:"無法暫停",pause_failed_hint:"未能暫停目前會議,請稍後重試。",resume_failed:"無法繼續",resume_failed_hint:"未能繼續目前會議,請檢查網路後重試。",resume_blocked_dictation:"請先結束聽寫",resume_blocked_dictation_hint:"目前正在聽寫 / 翻譯,麥克風被佔用。結束後再繼續會議錄製。",history_save_failed:"儲存會議記錄失敗",history_save_failed_hint:"會議記錄未能儲存到本機。請檢查磁碟空間後重試。",history_open_failed:"開啟會議記錄失敗",history_open_failed_hint:"未能開啟這條會議記錄,檔案可能已損毀或被移動。",history_delete_failed:"刪除會議記錄失敗",history_delete_failed_hint:"未能刪除這條會議記錄,請稍後重試。",unauthenticated_byok:"自訂供應商驗證失敗",unauthenticated_byok_hint:"騰訊回傳了驗證失敗。請到「設定 → 聽寫」確認當前自訂供應商的 AppID / SecretId / SecretKey 是否正確。",insufficient_funds:"供應商餘額不足",insufficient_funds_hint:"請為騰訊語音辨識帳戶儲值,或切換到其他供應商。",engine_not_authorized:"騰訊帳號未開通 16k_zh_en_speaker 引擎",engine_not_authorized_hint:"「即時說話人分離」是騰訊獨立 SKU,「即時語音辨識大模型」資源包並不涵蓋。請到騰訊雲語音辨識控制台開通該引擎,或提工單確認:",open_tencent_console:"開啟",unauthenticated_saas:"SaaS 登入已失效",unauthenticated_saas_hint:"請重新登入 OpenSpeech 後再開始會議。",insufficient_funds_saas:"SaaS 積分不足",insufficient_funds_saas_hint:"請前往個人中心儲值積分,或切換到「自訂 → 騰訊」。",not_authenticated:"尚未登入",not_authenticated_hint:"SaaS 通道需要先登入 OpenSpeech。請登入後再開始會議,或切換到「自訂 → 騰訊」。",summary_insufficient_credits:"積分餘額不足",summary_insufficient_credits_hint:"本次紀要生成需要消耗 OpenLoaf SaaS 積分,目前餘額不足。完成儲值或升級訂閱後可繼續生成;也可以到「設定 → AI」改用自訂模型。",summary_unauthorized:"SaaS 登入已失效",summary_unauthorized_hint:"登入狀態已過期,請重新登入 OpenSpeech 後再試。",summary_rate_limited:"請求過於頻繁",summary_rate_limited_hint:"上游限流,稍等片刻再試。",summary_timeout:"請求逾時",summary_timeout_hint:"AI 服務長時間未回應,請檢查網路後重試。",summary_network:"網路異常",summary_network_hint:"無法連線到 AI 服務,請確認網路後重試。",summary_generic:"生成失敗",summary_generic_hint:"AI 服務暫時無法完成本次任務,請稍後再試。",summary_empty_transcript:"沒有可總結的內容",summary_empty_transcript_hint:"本次會議沒有任何最終文字片段,無法生成紀要。",summary_no_active_custom_provider:"尚未選擇自訂模型",summary_no_active_custom_provider_hint:"請到「設定 → AI」啟用一個自訂供應商,或將模式切回 SaaS。"},WE={hotkey_blocked:kS,auth:RS,network:MS,recording:DS,phase:LS,stt:zS,clipboard:NS,update:jS,report:VS,meetings:BS},JE=Object.freeze(Object.defineProperty({__proto__:null,auth:RS,clipboard:NS,default:WE,hotkey_blocked:kS,meetings:BS,network:MS,phase:LS,recording:DS,report:VS,stt:zS,update:jS},Symbol.toStringTag,{value:"Module"})),US="意見回饋",HS="意見回饋",PS="把使用過程中的問題或想法告訴我們,我們會閱讀每一條回饋。",KS="回饋類型",qS={bug:"Bug 問題",feature:"功能建議",ui:"介面/互動",performance:"效能/卡頓",chat:"AI 對話",other:"其他"},YS="內容",GS="描述一下你遇到的情況、重現步驟或想要的功能…",IS="聯絡信箱(選填)",$S="you@example.com",XS="留下信箱方便我們在處理後回覆你;不留也能匿名提交。",FS="附帶最近日誌",QS="勾選後會把最近的應用日誌一起傳給我們,幫助定位問題。Bug 類回饋預設勾選。",ZS="讀取日誌失敗,將不附帶日誌送出。",WS="送出回饋",JS="送出中…",e0="取消",t0={content_required:"請填寫回饋內容(至少一句話)",email_invalid:"信箱格式看起來不正確"},n0={success:"回饋已送出,謝謝你的回饋!",auth_lost:"登入狀態已失效,請重新登入後再送出",network:"網路異常,請稍後再試",timeout:"請求逾時,請檢查網路後重試",generic:"送出失敗:{{message}}"},i0={menu_label:"回饋這條",dialog_title:"回饋這條記錄",dialog_description:"告訴我們哪裡辨識錯了、AI 整理得如何,或其他任何想法。我們會隨這條意見一起收到你的原始錄音、提示詞與轉寫結果,便於分析改進。",context_summary:{type:"類型",duration:"時長",target_app:"目標應用",provider:"ASR 通道",ai_model:"AI 模型",created_at:"記錄時間"},preview_label:"文字",preview_raw:"原始 ASR",preview_refined:"AI 整理",preview_edited:"已修改",preview_empty:"(空)",content_label:"你的意見",content_placeholder:"例:把「OpenLoaf」辨識成了「open loaf」;或:希望 AI 整理時別省略「嗯」…",include_audio_label:"隨回饋一併上傳原始錄音",include_audio_hint:"勾選後我們能聽到這條記錄的真實音訊。僅本條記錄的錄音會上傳,不會送出其他歷史。",include_audio_disabled:"這條記錄沒有保留錄音",include_audio_needs_login:"需要登入後才能附帶錄音",include_audio_too_large:"錄音超過 10 MB,將不附帶音訊送出",submit:"送出回饋",submit_loading:"送出中…",validation:{content_required:"寫一句話告訴我們這條哪裡不對吧"},toast:{success:"回饋已送出,謝謝!",audio_skipped:"錄音過大,未附帶音訊;其餘資訊已送出",auth_lost:"登入已失效,請重新登入後再送",network:"網路異常,請稍後再試",timeout:"請求逾時,請檢查網路後重試",generic:"送出失敗:{{message}}"}},eO={menu_label:US,dialog_title:HS,dialog_description:PS,type_label:KS,type:qS,content_label:YS,content_placeholder:GS,email_label:IS,email_placeholder:$S,email_hint:XS,attach_logs_label:FS,attach_logs_hint:QS,attach_logs_failed:ZS,submit:WS,submit_loading:JS,cancel:e0,validation:t0,toast:n0,history:i0},tO=Object.freeze(Object.defineProperty({__proto__:null,attach_logs_failed:ZS,attach_logs_hint:QS,attach_logs_label:FS,cancel:e0,content_label:YS,content_placeholder:GS,default:eO,dialog_description:PS,dialog_title:HS,email_hint:XS,email_label:IS,email_placeholder:$S,history:i0,menu_label:US,submit:WS,submit_loading:JS,toast:n0,type:qS,type_label:KS,validation:t0},Symbol.toStringTag,{value:"Module"})),a0={dictate_ptt:"聽寫",translate:"翻譯聽寫",show_main_window:"開啟主視窗",open_toolbox:"開啟 AI 工具",edit_last_record:"優化上一條"},s0={dictate_ptt:"按下開始錄音,放開後轉寫並寫入游標處",translate:"按下開始錄音,放開後翻譯並寫入游標處",show_main_window:"在任意應用中喚起 OpenSpeech 主視窗",open_toolbox:"在任意應用中跳到 AI 工具頁",edit_last_record:"彈出快捷面板優化最近一條辨識結果,不打擾主視窗"},o0={unbound:"未綁定",double_tap:"2× {{mod}}",left:"左",right:"右"},l0={needs_main_key:"需要搭配主鍵使用",special_keys_locked:"Esc / Enter / 方向鍵等特殊鍵需在進階設定開啟後使用",typing_key_needs_modifier:"字母 / 數字 / 空格 / 標點等輸入鍵單按會攔截正常打字,必須搭配修飾鍵",fn_macos_only:"Fn 鍵僅在 macOS 可靠可用;請改用 Alt + Win 或 Right Alt",modifier_only_no_main:"modifier-only 綁定不能包含主鍵",modifier_only_min:"至少需要一個修飾鍵",combo_disallowed_main:"Tab / Backspace / Delete / CapsLock / NumLock / ScrollLock 不可作為主鍵,誤觸代價過高",combo_no_fn:"Fn 鍵不能與主鍵組合,系統層無法註冊",double_tap_no_main:"雙擊綁定不能包含主鍵",double_tap_single_mod:"雙擊只支援單一修飾鍵",double_tap_fn_macos:"macOS 雙擊 Fn 是系統聽寫預設快捷鍵,會被系統先吞"},r0={system_shortcut:"該組合可能與系統常用快捷鍵衝突",f_key_bare:"F1-F12 在多數 Mac 預設是亮度 / 音量等系統功能鍵",modifier_only_single_macos:"單一修飾鍵會吞掉它的所有原生組合(如 ⌘+空格、⌥+方向鍵、⌃+空格)",modifier_only_single_windows:"單一修飾鍵會吞掉它的所有原生組合(如 Alt+Tab、Win+E、Ctrl+C)",modifier_only_single_linux:"單一修飾鍵會吞掉它的所有原生組合(如 Alt+Tab、Super+空格、Ctrl+C)",fn_usage_conflict:"macOS 把 🌐/Fn 鍵設成了切換輸入法,會吞掉這個鍵導致聽寫錄音停不下來——請到 系統設定 → 鍵盤 →「按下🌐鍵時」改為「不執行任何操作」"},nO={binding:a0,binding_hint:s0,format:o0,validation:l0,warning:r0},iO=Object.freeze(Object.defineProperty({__proto__:null,binding:a0,binding_hint:s0,default:nO,format:o0,validation:l0,warning:r0},Symbol.toStringTag,{value:"Module"})),u0={subtitle:"// first run setup"},c0={tag:"// welcome to",headline_part1:"說出來。",headline_part2:"就成文。",subhead:"按一下快速鍵開始說話,再按一下結束——文字立即出現在你正在使用的任何 App 裡。"},d0={section_tag:"// step 01 / permissions · {{platform}}",title_macos:"授權 麥克風 與 輔助使用",title_windows:"授權 麥克風",title_linux:"選擇麥克風與注入工具",recheck_all:"重新偵測",recheck_all_title:"重新偵測全部權限",recheck_one_title:"重新偵測",summary_macos:"macOS 需要三項系統權限:「麥克風」(錄音)、「輔助使用」(把轉寫的文字寫到目前 App)、「輸入監控」(監聽全域快速鍵)。系統的權限快取與行程繫結——若已在系統設定勾選但仍顯示未授權,點擊右上角「重新啟動 OpenSpeech」讓新權限生效。",summary_windows:"Windows 需要授權「麥克風」(用於錄音)。若你常用的目標程式以系統管理員身分執行,OpenSpeech 也需相同權限才能注入文字。",summary_linux:"Linux 不需要授權彈窗:選擇一個 PipeWire / PulseAudio 輸入裝置,並確保安裝了 ydotool / wtype(Wayland)或 xdotool(X11)即可。",badge_required:"必需",badge_recommended:"推薦",status_checking:"偵測中",status_granted:"已授權",primary_acknowledged:"我已知曉",primary_open_settings:"前往系統設定",primary_request:"請求授權",primary_grant:"授權",tcc_hint:"已勾選但仍提示未授權?在系統設定該權限清單裡移除 OpenSpeech 後重新加入,再點「重新啟動 OpenSpeech」。",footer_next:"下一步",footer_relaunch:"重新啟動 OpenSpeech",footer_hint_ok:"接下來 2 步:登入 → 試用",footer_hint_relaunch:"授權後請重新啟動 · 重啟後將自動進入下一步",mic:{title:"麥克風",title_linux:"麥克風裝置",rationale:"用於錄製你的語音並送到辨識引擎。",rationale_linux:"Linux 不需要授權彈窗;從 PipeWire / PulseAudio 選一個輸入裝置即可。",hint_macos:"授權位置:系統設定 → 隱私權與安全性 → 麥克風",hint_windows:"授權位置:Windows 設定 → 隱私 → 麥克風"},accessibility:{title:"輔助使用",rationale:"用於把辨識出的文字模擬鍵盤輸入到目前焦點的輸入框。",hint_macos:"授權位置:系統設定 → 隱私權與安全性 → 輔助使用"},input_monitoring:{title:"輸入監控",rationale:"用於在你正在使用其它 App 時,監聽全域快速鍵(如 Fn / Alt+Win)觸發錄音。",hint_macos:"授權位置:系統設定 → 隱私權與安全性 → 輸入監控"},inject_tools:{title_windows:"目標程式權限提示",rationale_windows:"若你常用的程式以系統管理員身分執行(如 cmd),OpenSpeech 也需要相同權限才能注入文字。",title_linux:"偵測注入工具",rationale_linux:"Wayland 下需要 ydotool / wtype,X11 下需要 xdotool。OpenSpeech 會自動偵測。"}},f0={section_tag:"// step 02 / account",title:"登入 OpenLoaf 帳號",subtitle_openloaf:"OpenSpeech 屬於 OpenLoaf 產品線,所有 OpenLoaf 產品共用同一個帳號與點數。",bonus_main:"新使用者立即到帳 200 點數",bonus_minutes_prefix:"· 約",bonus_minutes_value:"30 分鐘",bonus_minutes_suffix:"語音",method_wechat_label:"微信登入",method_wechat_sub:"掃碼即可登入",method_google_label:"Google 登入",method_google_sub:"瀏覽器跳轉登入",status_success:"登入成功,正在進入下一步…",status_opening:"正在開啟瀏覽器…",status_polling:"等待在瀏覽器完成授權…",cancel:"取消",advanced_collapse:"↑ 收起",advanced_expand:"↓ 我有自己的 STT 端點",advanced_desc:"設定自訂 REST STT 端點(OpenAI / Groq / Deepgram / 自架)。此選項僅推薦給開發者;一般使用者請用上方帳號登入。",advanced_cta:"略過登入,去設定自訂端點",error_default:"登入失敗,請重試",error_reset:"登入伺服器連線被重設,請重試",error_timeout:"登入逾時,請重試",error_network:"無法連線到登入伺服器,請檢查網路後重試"},h0={section_tag:"// step 03 / try it",title:"試一次。",subhead:"按一下下方快速鍵開始 · 說一句話 · 再按一下結束",checklist_tag:"// CHECKLIST",checklist:{step1:"按一下聽寫快速鍵開始",step2:"對著麥克風說一句話",step3:"再按一下結束",step4:"看到文字寫入下方"},mock_slices:["今","今天","今天天氣","今天天氣真好","今天天氣真好,","今天天氣真好,我打開","今天天氣真好,我打開了 OpenSpeech","今天天氣真好,我打開了 OpenSpeech 試試看。"],hotkey_title:"你的聽寫快速鍵",hotkey_hint:"按一下開始 · 再按一次結束",samples_label:"AUDIO · {{count}} SAMPLES",live_transcript_tag:"// LIVE TRANSCRIPT",transcript_chars:"{{count}} CHARS",transcript_placeholder:"即時轉寫文字將出現在這裡…",completed_title:"設定完成,可以開始使用了",completed_desc:"正式使用時游標在哪個 App,文字就寫到哪個 App。",reset:"重設",mock_running:"示範中…",mock_run:"▶ 模擬一次",finish:"完成引導",skip_finish:"略過並完成",status:{ready_tag:"// READY",ready_primary:"開始說話…",ready_secondary:"Esc 取消",listening_tag:"// LISTENING",listening_primary:"再按一次快速鍵 結束並轉寫",listening_secondary:"Esc 取消本次錄音",transcribing_tag:"// TRANSCRIBING",transcribing_primary:"正在轉寫…",transcribing_secondary:"Esc 放棄這次結果",injecting_tag:"// INJECTING",injecting_primary:"正在寫入輸入框…",error_tag:"// ERROR",error_primary:"出錯了,檢查紀錄或重試",idle_tag:"// IDLE"}},aO={header:u0,welcome:c0,permissions:d0,login:f0,try_it:h0},sO=Object.freeze(Object.defineProperty({__proto__:null,default:aO,header:u0,login:f0,permissions:d0,try_it:h0,welcome:c0},Symbol.toStringTag,{value:"Module"})),p0={cancel:"取消",confirm:"確定",close_result:"關閉結果",cancel_keep:"結束並保留錄音",skip_refine:"略過 AI 優化,使用原始轉寫"},_0={target:"翻譯目標語言:{{lang}}",mode_label:"翻譯模式",lang:{en:"英文",zh:"中文","zh-TW":"繁體中文",ja:"日文",ko:"韓文",fr:"法文",de:"德文",es:"西班牙文"}},m0={to_translate:"切換為翻譯模式",to_dictation:"切換為聽寫模式",tap_again_to_output:"再按 {{hotkey}} 輸出"},g0={error_fallback:"錯誤",transcribing:"正在轉寫中…",refining:"AI 優化中…",injecting:"正在輸出中…",translating:"正在翻譯中…"},y0={tag:{ready:"// READY",listening:"// LISTENING",transcribing:"// TRANSCRIBING",injecting:"// INJECTING",error:"// ERROR",idle:"// IDLE",processing:"// PROCESSING"},primary:{ready:"開始說話…",listening:"再按一次快捷鍵 結束並轉寫",transcribing:"轉寫中…",injecting:"寫入輸入框中…",error:"發生錯誤,請檢查日誌或重試",result:"已寫入輸入框 · 按快捷鍵開始下一次"},secondary:{ready:"Esc 取消",listening:"Esc 取消這次錄音",transcribing:"Esc 放棄這次結果",result:"或點擊 ✕ 關閉"},placeholder:"即時轉寫文字將出現在這裡…",utterance_timer_label:"整句模式",result_label:{original:"原文",translation:"譯文",polished:"潤稿版"},result_stats:{recording:"錄音",response:"回應"},dictate_status:{ai_on:"AI 優化已啟用",ai_off:"AI 優化未啟用"},mode_action:{dictate:"聽寫",translate:"翻譯"},mode_segment:{utterance:"整句",realtime:"即時"},action:{stop:"結束並轉寫",stop_translate:"結束並翻譯",cancel:"取消本次錄音",retry_hint:"按快捷鍵重試",kbd_esc:"Esc",copy:"複製",copied:"已複製",edit:"修改",refine:"潤稿",refining:"潤稿中…",translate:"翻譯",translating:"翻譯中…"},coming_soon:"即將上線",coming_soon_tag:"// SOON",refine_scenario:{menu_aria:"選擇潤稿情境",helper:"選情境,提升潤稿精度",count:"{{count}} 個情境",limit_hint:"最多選 3 個"},translate_lang:{menu_aria:"選擇翻譯目標語言"},meter:{live:"LIVE",chars:"{{count}} CHARS",samples:"AUDIO · {{count}} SAMPLES"}},v0={stt_start_failed:{title:"即時轉寫未啟動",description:"{{reason}} · 本次僅本機錄音"},recording_start_failed:{title:"錄音啟動失敗"},mic_start_failed:{title:"麥克風啟動失敗",reasons:{"no-input-device":"未找到可用的麥克風裝置。請檢查系統設定 → 聲音 → 輸入。","permission-denied":"無法存取麥克風。請在系統的麥克風隱私設定中允許 OpenSpeech 存取,然後重試。","device-busy":"麥克風忙碌中,可能被其他應用程式獨佔。請停止其他應用程式的錄音後重試,或在 OpenSpeech 設定中切換麥克風。","device-config-unsupported":"目前麥克風的取樣率 / 通道設定不被支援。請到系統設定 → 聲音 → 輸入查看裝置狀態。","device-removed":"麥克風裝置已斷開。如使用 USB / 藍牙麥克風,請重新連接後再試。",generic:"麥克風暫時無法使用。請檢查裝置連線、麥克風權限及其他應用程式的錄音狀態,或在 OpenSpeech 設定中切換麥克風後重試。"}},mic_silence:{title:"似乎沒拾到聲音",description:"已持續 {{seconds}} 秒未偵測到人聲,錄音仍在繼續。如果你正在說話,請檢查麥克風是否靜音、輸入音量及所選裝置。"},mic_interrupted:{title:"麥克風連線中斷",description:"本次錄音已中斷。請檢查裝置連線及其他應用程式的錄音狀態,或切換麥克風後重新錄音。"},transcribe_failed:{title:"轉寫失敗",no_transcript:"未辨識到內容,可在歷史裡點重試"},byok_switch_to_saas:{action:"切到雲端",switched_title:"已切換為 OpenLoaf 雲端",switched_description:"請按快捷鍵重新錄音"},recording_save_failed:{title:"錄音儲存失敗"},clipboard_failed:{title:"複製到剪貼簿失敗"},paste_failed:{title:"自動貼上失敗",description:"文字已複製,請手動按 Cmd/Ctrl+V"},not_logged_in:{title:"尚未登入 OpenSpeech",description:"請登入後再使用語音輸入",action:"登入"},dictation_fallback:{title:"已切換為 OpenLoaf SaaS",description:"自訂供應商尚未設定,本次轉寫已改用雲端服務"},ai_refine_auto_fallback:{title:"AI 改寫已切換為 OpenLoaf SaaS",description:"自訂 AI 供應商尚未設定完成,已改用雲端服務"},ai_refine_custom_failed:{title:"AI 改寫失敗(自訂供應商)",description_missing_key:"找不到自訂供應商的 ApiKey,可點擊按鈕切回雲端服務",description_runtime:`自訂供應商無法存取:{{error}}
14
14
  可點擊按鈕切回雲端服務`,action:"切換為 SaaS"},asr_error:{title:"轉寫異常",unknown:"未知錯誤"},worker_dead:{title:"語音通道異常中斷",description:"已停止本次錄音,請重新開始",error_message:"語音通道異常中斷,已停止錄音"},insufficient_credits:{title:"餘額不足",description:"已取消本次轉寫,請前往帳戶頁儲值",error_message:"餘額不足,已取消本次轉寫"},session_timeout:{title:"工作階段逾時",description:"達到 2 小時伺服器上限"},preflight_failed:{title:"無法開始錄音"},aborted_saved:{title:"已取消,未轉寫",description:"錄音已儲存到歷史"},silent_recording:{title:"未偵測到語音"},realtime_degraded:{title:"即時辨識異常",description:"正在用錄音重轉,請稍候",realtime_mode:"已保留前半段,可在歷史裡重試整段"}},b0={placeholder:"(未能取得轉寫結果)",aborted_placeholder:"(已取消,未轉寫)"},S0={label:"已錄",aria:"已錄 {{duration}}"},T0={title:"沒找到能輸入的位置",hint:"已複製 · 按 {{key}} 貼上"},A0={title:"辨識失敗",retry:"重試",retrying:"重試中…",close:"關閉"},x0={stt_not_authenticated:"尚未登入 OpenLoaf",stt_5xx:"SaaS 伺服器錯誤(5xx)",stt_4xx:"SaaS 驗證失敗(4xx)",stt_mic_not_ready:"麥克風尚未就緒",stt_network:"網路不可達",stt_unknown:"轉寫失敗,請稍後重試",sync_hotkey_failed:"同步快捷鍵到 Rust 失敗:{{error}}",preflight_permission_denied:"未授予麥克風權限",preflight_no_device:"未找到可用麥克風",byok_not_implemented:"自訂 BYOK 通道開發中,將在下個版本啟用",byok_missing_credentials:"自訂供應商憑證缺失,請到設定 → 聽寫 → 自訂供應商設定",byok_keyring_error:"無法從系統密鑰鏈讀取自訂供應商憑證",file_too_large_for_tencent_byok:"單個檔案超過騰訊 BYOK 檔案轉寫上限(約 5 分鐘),請改用 REALTIME 模式或縮短錄音",tencent_task_failed:"騰訊任務執行失敗:{{msg}}",tencent_task_timeout:"騰訊任務超時(>24 分鐘未返回結果)",transcribe_timeout:"轉寫請求逾時(伺服器無回應,已自動結束等待)",tencent_unauthenticated:"騰訊 BYOK 驗證失敗 —— 請檢查設定中的 SecretId / SecretKey",tencent_rate_limited:"騰訊 BYOK 觸發限流,請稍候再試",tencent_cos_unauthenticated:"騰訊 COS 驗證失敗 —— 請檢查 SecretId / SecretKey 與儲存桶權限",tencent_cos_forbidden:"騰訊 COS 拒絕上傳 —— 請確認 Bucket 名稱、Region 與存取政策",tencent_cos_network:"騰訊 COS 網路異常 —— 請檢查網路後重試",tencent_cos_unknown:"騰訊 COS 上傳失敗(未知錯誤)",unauthenticated_byok:"自訂憑證驗證失敗:請檢查 SecretId / SecretKey",insufficient_funds:"騰訊雲帳戶餘額不足或服務未開通",idle_timeout:"長時間無音訊,已自動斷開",rate_limited:"供應商觸發限流,請稍候再試",aliyun_invalid_audio_format:"音訊格式不被阿里 DashScope 支援,請檢查取樣率與位元深度",aliyun_quota_exceeded:"阿里 DashScope 配額已用盡",aliyun_unauthenticated:"阿里 DashScope 驗證失敗 —— 請檢查設定中的 ApiKey",aliyun_rate_limited:"阿里 DashScope 觸發限流,請稍候再試",aliyun_upload_failed:"阿里 DashScope OSS 上傳失敗:{{msg}}",aliyun_filetrans_failed:"阿里 DashScope 任務執行失敗:{{msg}}",aliyun_filetrans_timeout:"阿里 DashScope 任務逾時(>24 分鐘未返回結果)",aliyun_file_too_large:"檔案大小超過阿里 DashScope BYOK 單檔上限(預設 100MB)"},w0={aria:{dismiss:"不再顯示該提示"},recordingControls:{text:"鬆開結束 · ESC 取消"},resultActions:{text:"⌘C 複製 · 編輯 · 潤色 · 翻譯"},firstResultConfirm:{text:"游標放在輸入框,說完自動寫入",action_confirm:"知道了"},appFirstInject:{text:"辨識成功,結果已輸入到 {{app}}"}},oO={aria:p0,translate:_0,mode_switch:m0,status:g0,panel:y0,toast:v0,transcript:b0,long_recording:S0,result:T0,transcribeError:A0,error:x0,hints:w0},lO=Object.freeze(Object.defineProperty({__proto__:null,aria:p0,default:oO,error:x0,hints:w0,long_recording:S0,mode_switch:m0,panel:y0,result:T0,status:g0,toast:v0,transcribeError:A0,transcript:b0,translate:_0},Symbol.toStringTag,{value:"Module"})),E0={too_long_for_utterance:"單次錄音超過 5 分鐘,UTTERANCE 模式不支援,請切換至 REALTIME 模式",aliyun_oss_upload_failed:"阿里雲 OSS 上傳失敗,憑證可能已過期或網路不穩定",aliyun_filetrans_failed:"阿里雲檔案轉寫任務失敗,請稍後重試",aliyun_file_too_large:"檔案超過 100 MB,已達阿里雲 OSS 單檔上限",tencent_cos_upload_failed:"騰訊雲 COS 上傳失敗,請檢查憑證與網路",tencent_cos_bucket_required:"需要先在聽寫設定中填寫騰訊 COS 儲存桶才能轉寫(舊憑證可能沒填)"},O0={hero:{title_line1:"說出來。",title_line2:"就成文。",description:"按一下快捷鍵,開口說話,再按一下結束——文字即刻出現在任意應用程式中。不綁定編輯器,錄音只留本機,無任何遙測。",feature_push_to_talk:"// PUSH-TO-TALK 按鍵聽寫",feature_cross_platform:"// 跨平台 WIN · MAC · LINUX"},hotkey_hint:"按一下快捷鍵開始錄音,再按一下結束並把文字寫入目前輸入框。按 <esc>Esc</esc> 取消;焦點必須在可編輯區域。",translate_hint:"按一下翻譯快捷鍵開始錄音,再按一下結束。系統會先轉寫再翻譯為目標語言,並寫入目前輸入框。",translate_bilingual:"雙語輸出",translate_bilingual_aria:"雙語輸出(原文 + 譯文)",translate_bilingual_order_aria:"雙語排列順序(原文與譯文誰在上面)",translate_order_translation_first:"譯文在上",translate_order_source_first:"原文在上",edit_hotkey:"編輯快捷鍵",edit_hotkey_dialog_title:"編輯快捷鍵",edit_hotkey_dialog_description:"錄入或修改目前快捷鍵綁定。",quick_dict:{button_aria:"新增詞條",title:"我的詞典",empty:"// 尚無任何詞條 //",domains_label:"// 常用領域"},hotkey_tab:{dictate:"聽寫",translate:"翻譯"},hotkey_title:{dictate:"聽寫 / PUSH-TO-TALK",translate:"翻譯 / TRANSLATE"},dictation_starred:"已收藏",dictation_star_add:"加入收藏",stats:{section_title:"今日 / 本次工作階段",section_title_today:"今日工作階段統計",section_title_all:"累計工作階段統計",tab_today:"今日",tab_all:"累計",live_metrics:"// LIVE METRICS",duration_label:"口述時長",duration_unit:"HH:MM",words_label:"口述字數",words_unit:"總計",wpm_label:"平均速度",wpm_unit:"字/分鐘",saved_label:"節省時間",saved_unit:"HH:MM",open_dialog_aria:"查看 {{label}} 詳細統計"},stats_dialog:{title:"數據統計",subtitle:"含聽寫 / 問 AI / 翻譯 · 資料僅本機",close:"關閉",range:{today:"今日","7d":"近 7 天","30d":"近 30 天","90d":"近 90 天",all:"全部"},metric_switcher_label:"聚焦",kpi:{duration:"時長",words:"字數",wpm:"WPM",saved:"節省",sessions:"次數"},main:{duration:{title:"時長走勢",hint:"每日累計錄音時長(HH:MM)"},words:{title:"字數累計",hint:"隨時間累積的總產出字數"},wpm:{title:"WPM 走勢",hint:"每日平均口述速度"},saved:{title:"節省累計",hint:"相對 {{baseline}} WPM 打字基線累計省下的時間"},sessions:{title:"次數走勢",hint:"每日聽寫工作階段數"}},facet:{heatmap:{title:"活躍時段",hint:"週一–週日 × 0–23 時;色越深用得越多",weekdays:"一,二,三,四,五,六,日"},top_apps:{title:"Top 目標應用程式",hint:"你最常在哪些應用程式裡寫字",unknown:"未知應用程式"},wpm_by_mode:{title:"WPM × 分段模式",hint:"REALTIME 與 UTTERANCE 的速度對比"},saved_equivalent:{title:"等價換算",hint:"把節省的時間換算成更直觀的單位",items:{typing_hours:"≈ 打字 {{value}}",podcasts:"≈ 聽 {{value}} 集 podcast",coffees:"≈ 喝 {{value}} 杯咖啡",books_pages:"≈ 看 {{value}} 頁書"}},session_dist:{title:"單次字數分布",hint:"短句、中段、長稿各占多少",buckets:{short:"短句 ≤ 20 字",medium:"中段 21–100 字",long:"長稿 > 100 字"}},duration_dist:{title:"單次時長分布",hint:"按一次錄音的長度分桶,看你說短句多還是說長稿多",buckets:{lt10s:"< 10 秒",s10_30:"10–30 秒",s30_60:"30–60 秒",s60_120:"1–2 分鐘",gt120s:"> 2 分鐘"}},type_mix:{title:"類型分布",hint:"你都用 OpenSpeech 做什麼——聽寫、問 AI 還是翻譯",buckets:{dictation:"聽寫",ask:"問 AI",translate:"翻譯"}},provider_dist:{title:"通道分布",hint:"不同 ASR 通道的次數與平均速度",unknown:"未知通道"},ai_refine_rate:{title:"AI 優化使用率",hint:"多少次工作階段用了 AI 整理;以及平均整理耗時",used_label:"已使用",avg_label:"平均耗時"},status_mix:{title:"成功率",hint:"成功 / 失敗 / 取消 三態占比",buckets:{success:"成功",failed:"失敗",cancelled:"已取消"}},asr_source_dist:{title:"ASR 通道分布",hint:"即時 / 檔案轉寫 / 自訂端點 各占多少",buckets:{"saas-realtime":"即時","saas-rest":"檔案轉寫",byo:"自訂",unknown:"未知"}}},empty:"// 尚無聽寫記錄,去主畫面試試 //"}},C0={title:"歷史記錄",subtitle:"歷史記錄保存在本裝置。",search_placeholder:"搜尋歷史...",more:"更多",stats:"統計",refresh:"重新整理",retention:{label:"保留時長",title:"本機歷史記錄保留多久",options:{forever:"永遠","90d":"90 天","30d":"30 天","7d":"7 天",off:"不保存"}},open_folder:"開啟錄音資料夾",open_folder_failed:"開啟錄音資料夾失敗",delete_all:"刪除全部歷史",filters:{all:"全部",starred:"收藏",dictation:"聽寫",ask:"隨便問",translate:"翻譯"},buckets:{today:"今天",yesterday:"昨天",this_week:"本週",earlier:"更早"},empty:"// 暫無記錄 //",loading_more:"// 載入更多 //",list_end:"// 已到底 · 共 {{count}} 筆 //",status:{success:"成功",failed:"失敗",cancelled:"已取消",retrying:"重新辨識中"},player:{play:"播放",pause:"暫停"},row:{play:"播放原始錄音",pause:"暫停",resume:"繼續播放",stop:"停止播放",copy:"複製到剪貼簿",copied:"已複製",reinject:"重新注入",export:"匯出音訊",delete:"刪除",retry:"重新辨識",transcribe:"重新辨識",retrying_label:"重新辨識中",retrying_placeholder:"正在重新辨識…",retry_no_audio:"無可用音訊,無法重新辨識",retry_too_long:"超過 5 分鐘的錄音暫不支援重新辨識",retry_in_progress:"重新辨識中…",retry_tooltip:"重新辨識這段錄音",failed_placeholder:"這段錄音上次辨識被中斷,可以重新辨識一次。",cancelled_placeholder:"{{duration}} 錄音已取消,未辨識 · 可重新辨識",view_refined:"AI 優化",view_translation:"譯文",view_raw:"原始文字",view_details:"查看詳情",copy_debug:"複製除錯資訊",star:"加入收藏",unstar:"取消收藏"},detail:{title:"記錄詳情",description:"查看歷史記錄完整內容並執行操作",meta:{duration:"時長",target:"目標應用",error:"錯誤",warn:"備註",asr:"語音辨識",ai:"AI 優化",segment_mode:"模式",provider_kind:"通道",credits:"積分"},asr:{"saas-realtime":"OpenLoaf SaaS · 即時辨識","saas-rest":"OpenLoaf SaaS · REST 轉寫",byo:"自訂 STT 端點"},ai:{none:"未啟用"},segment_mode:{REALTIME:"即時",UTTERANCE:"整句"},provider_kind:{"saas-realtime":"OpenLoaf 即時","saas-file":"OpenLoaf 檔案","tencent-realtime":"騰訊即時","tencent-file":"騰訊檔案","aliyun-realtime":"阿里即時","aliyun-file":"阿里檔案"},unknown:"—",empty_text:"(無文字內容)"},toast:{copy_success:"已複製到剪貼簿",copy_failed:"複製失敗",copy_debug_success:"除錯資訊已複製",copy_debug_failed:"複製除錯資訊失敗",copy_debug_missing:"該紀錄未擷取到請求快照(可能為正式版錄入或呼叫前已失敗)",retry_success:"重新辨識成功",retry_failed:"重新辨識失敗",delete_failed:"刪除失敗",export_success:"音訊已匯出",export_failed:"匯出失敗",refresh_failed:"重新整理失敗",star_failed:"收藏狀態更新失敗"},edit:{title:"修改紀錄",description:"修改這筆歷史紀錄的最終文字",edit_button:"修改",edit_tooltip:"把辨識錯的地方改對,下次更準",original_label:"原始內容(AI 給的最終版)",diff_label:"修改對比(紅色=刪除,綠色=新增)",edited_label:"你的修改",hint:"改完儲存即可,系統會非同步學習",placeholder:"在這裡修改文字…",save:"儲存",revert:"撤銷修改",revert_tooltip:"丟棄這筆紀錄的修改,回到 AI 原版",edited_chip:"已修改",edited_tooltip:"你修改過這筆紀錄的文字",toast:{save_success:"已儲存修改",save_failed:"儲存失敗",revert_success:"已恢復原版",dict_added:"已加入詞典:{{term}}",dict_updated:"已更新詞典:{{term}}",dict_removed:"已移除詞典:{{term}}",dict_hint:"AI 根據你的修改自動學習"}},confirm_clear:{title:"刪除全部歷史",description:"清空本機歷史記錄",body:"將刪除本機的 <count>{{count}}</count> 筆歷史記錄,操作不可復原。",tip:"// 建議先匯出備份",confirm:"確認刪除"}},k0={title:"詞典",subtitle:"自訂詞彙 · 最多 2,000 條",new_word:"+ 新詞",new_domain:"+ 新建領域",bulk_add:"+ 批次",select_mode:"選擇",select_exit:"退出選擇",select_all:"全選",deselect_all:"全不選",selected_count:"已選 {{count}}",bulk_delete:"刪除",bulk_delete_confirm:{title:"刪除 {{count}} 條詞條?",description:"刪除後無法復原。AI 自動收錄的條目也會一併刪除。",cancel:"取消",confirm:"刪除 {{count}} 條",deleting:"刪除中…",toast_done:"已刪除 {{count}} 條詞條"},search_placeholder:"搜尋詞條...",filters:{all:"全部",domains:"常見領域",manual:"手動新增"},empty:"// 暫無詞條 //",count_total:"// 共 {{count}} 條 //",divider_label:"自訂詞條",card:{domain_tooltip:"常用領域",manual_tooltip:"手動新增",edit:"編輯",delete:"刪除"},domains:{helper:"勾選你常聊的領域,AI 會優先依這些場景調整術語與措辭",limit_hint:"最多選 {{limit}} 個",counter:"已選 {{count}} / {{limit}}",items:{programming:"軟體開發",ai_ml:"AI / 機器學習",medicine:"醫學健康",law:"法律",finance:"金融投資",academic:"學術科研",engineering:"工程製造",electronics:"電路硬體",marketing:"行銷增長",psychology:"心理學",design:"設計創意",film_production:"影視製作",cybersecurity:"網路安全",photography:"攝影",tcm:"中醫",automotive:"汽車",maritime:"船舶航海"},delete_custom:"刪除該自訂領域"},new_domain_dialog:{title:"新建領域",name_placeholder:"領域名,例如 攝影後期",keywords_placeholder:"常用詞(Enter 新增,選填)",error_empty:"領域名不能為空",error_duplicate:"已有同名領域",error_limit:"已達上限 {{limit}}",error_invoke:"儲存失敗,請重試",submitting:"儲存中…",submit:"儲存"},new_dialog:{title:"新詞",description:"新增自訂詞典條目",term_label:"term",term_placeholder:"例如 OpenSpeech",error_empty:"term 不能為空",error_duplicate:"該詞條已存在",submitting:"新增中…",submit:"新增"},bulk_dialog:{title:"批次新增",description:"貼上任何內容,AI 幫你挑出值得加入字典的詞",step1_label:"// 01 · 貼上內容",textarea_placeholder:`貼上術語清單、中英對照表,或任何含專有名詞的文字…
15
- AI 會自動挑出專有名詞、術語、人名、專案名,跳過日常常用詞。`,hint:"支援詞表、清單或長段落,最長 12,000 字",analyze:"分析",analyzing:"分析中…",step2_label:"// 02 · 選要新增的詞",empty_result:"// AI 沒在這段文字裡挑出值得入庫的詞 //",count_selected:"已選 {{count}} / {{total}}",select_all:"全選",deselect_all:"全不選",duplicate_badge:"已有",back:"重新貼上",confirm:"新增 {{count}} 條",confirm_zero:"新增",confirming:"新增中…",toast_done:"已新增 {{added}} 條至字典",toast_done_with_skip:"已新增 {{added}} 條 · 跳過 {{skipped}} 條",error_empty:"請先貼上文字內容",error_invoke:"AI 取詞失敗,請重試",error_quota:"字典已達 {{limit}} 條上限"}},R0={nav:{home:"首頁",toolbox:"翻譯 / 潤色",meetings:"會議錄製",history:"歷史",dictionary:"詞典",devices:"無線麥克風"},account_fallback:"帳戶",login:"登入",credits:"Credits",time_left:"LEFT",time_minutes:"{{minutes}} MIN",settings:"設定",tray:{update_found_title:"發現新版本",update_none:"目前已是最新版本",update_check_failed:"檢查更新失敗"}},M0={placeholder:"搜尋...",clear:"清空搜尋",open:"搜尋"},D0={title:"翻譯 / 潤色",subtitle:"隨手輸入或開口說話,再潤色、翻譯、朗讀。",flow_hint:"上方給輸入 · 下方挑工具 · 即刻拿到處理後的結果",input:{section_label:"// 01 · 輸入",tabs:{text:"文字",voice:"語音",history:"歷史",file:"音訊檔案"},text_placeholder:"在這裡輸入或貼上文字…",dictate_hint:"按下快捷鍵 · 直接開口聽寫",dictate_unbound:"未綁定聽寫快捷鍵",voice_hint:"按住按鈕說話,鬆開自動轉寫。",voice_button_idle:"按住說話",voice_button_recording:"正在聆聽…",voice_recorded:"已錄製 · 0:08",history_hint:"從歷史記錄裡挑一條。",history_empty:"尚無歷史記錄。",file_hint:"拖入或選擇音訊檔案(mp3 / wav / m4a)。",file_button:"選擇音訊檔案",file_loaded:"demo.mp3 · 12s · 1.2 MB",char_count:"{{count}} 字",right_label:"文字",right_hint_voice:"來自語音轉寫",right_hint_history:"來自歷史記錄",right_hint_file:"來自音訊轉寫",right_empty:"請先在左側給一個輸入。",use_sample:"用範例文字",replaced_hint:"已替換為上一步輸出",restore_original:"還原原文",paste:"貼上",history:"歷史",clear:"清空",clipboard_detected:"偵測到剪貼簿內容",clipboard_translate:"貼上並翻譯",clipboard_fill_only:"僅貼上"},tools:{section_label:"// 02 · 工具",tabs:{polish:"潤色",translate:"翻譯",tts:"朗讀"},tutorial:{polish:{title:"潤色",headline:"按場景把口語稿改寫成成稿——郵件、微信、匯報隨你挑。"},translate:{title:"翻譯",headline:"把文字翻成另一種語言,盡量保留語氣。"},tts:{title:"朗讀",headline:"把文字合成自然的語音。"}},polish:{scenario_label:"場景",scenarios_empty:"尚未設定場景",add_scenario:"+ 新增",examples:{email:"郵件",wechat:"微信",report:"工作匯報",meeting_notes:"會議紀要",social_post:"朋友圈"}},translate:{target_label:"譯為",languages:{en:"英文",zh:"簡體中文","zh-TW":"繁體中文",ja:"日文",ko:"韓文",fr:"法文",de:"德文",es:"西班牙文"}},tts:{voice_label:"聲音",speed_label:"語速",voices:{natural_f:"自然·女聲",natural_m:"自然·男聲",calm_f:"舒緩·女聲"},audio_placeholder:"▶ ━━━━━━━━━━━━━━━━━━━━ 0:08 / 0:12"},run:"運行",run_hint:"配置好上方參數後點擊運行",ready_to_run:"就緒 · 待運行",running:"運行中…",error_title:"運行失敗",error:"失敗 · {{message}}",rerun:"重跑",copy:"複製",save_history:"保存",use_as_input:"用作輸入",download:"下載",elapsed:"{{seconds}}s",idle:"等待輸入",output_empty:"在上方填入或選擇一段輸入"},output:{idle_label:"等待執行",ready:"READY",waiting_input:"等待輸入完成…",generating:"生成中…",meta_chars:"{{count}} 字",meta_elapsed:"耗時 {{seconds}}s"},footer:{ui_only_notice:"// UI 預覽 — 業務尚未接入"}},L0={title:"會議錄製",subtitle:"長時間錄音 · 自動分人 · 時間軸回看",idle:{hint:"點擊開始記錄",recent:"最近會議",items:"項",empty:"尚無會議記錄",empty_transcript:"(無內容)",loading:"載入中…",starting:"正在連線供應商…",language_support:"// 目前僅支援 中文 / 英語 / 粵語 / 多種方言(川、陝、豫、滬、湘、鄂、皖)"},live:{recording:"錄音中",paused:"已暫停",pause:"暫停",resume:"繼續",stop:"結束",listening:"正在聆聽...",reconnecting:"網路異常,正在重連… ({{attempt}}/{{max}})",reconnect_gave_up:"重連失敗,會議已斷開"},speaker:{label:"用戶 {{letter}}",pending:"用戶 …",rename_hint:"點擊改名",rename_aria:"修改說話人名字"},review:{back:"返回",speakers:"位說話人",delete:"刪除",favorite:"加入收藏",unfavorite:"取消收藏",delete_confirm:"確認刪除這條會議記錄?",summary:"紀要",transcript:"逐字稿",generate_title:"生成標題",regenerate_title:"重新生成",edit_title:"重新命名標題",summary_topic:"會議主題",summary_speakers:"發言人",summary_abstract:"會議摘要",summary_section:"片段數",summary_loading:"正在載入紀要…",summary_generate:"生成紀要",summary_generating:"生成中…",summary_regenerate:"重新生成",summary_failed:"紀要生成失敗",summary_copy:"複製",summary_copied:"已複製",summary_copy_success:"紀要已複製到剪貼簿",summary_copy_failed:"複製失敗",transcript_copy:"複製",transcript_copied:"已複製",transcript_copy_success:"逐字稿已複製到剪貼簿",transcript_copy_failed:"複製失敗",summary_retry:"重新生成",summary_recharge:"前往儲值",summary_open_subscription:"升級訂閱",summary_open_settings:"開啟設定",summary_show_details:"展開技術細節",summary_idle_hint:"點上方「生成紀要」按鈕,按目前 AI 通道生成 Markdown 紀要(設定 → AI → 提示詞 → 會議紀要 可改預設提示)。",summary_empty_transcript:"本次會議沒有可總結的內容。",export:"匯出",export_default_name:"會議-{{date}}-{{shortId}}",export_md_filter:"Markdown",export_doc_title:"會議記錄",export_meta_created:"時間",export_meta_duration:"時長",export_meta_speakers:"說話人數",export_meta_segments:"段數",export_success:"已匯出至 {{path}}",export_failed:"匯出失敗"},translate:{toggle:"雙語翻譯",target_lang:"翻譯目標語言",hint:"AI 翻譯 · 消耗額度",translating:"翻譯中…"}},z0={title:"無線麥克風",subtitle:"連接您的 OpenSpeech 無線麥克風",bound_dashboard:{subtitle_online:"已連線 · 透過 {{channel}}",subtitle_provisioned:"已配網,正在透過 Wi-Fi 建立連線 ({{ip}})…",subtitle_offline:"離線 · 等待裝置上線",battery:"電量",signal:"訊號",channel:"通道",firmware:"韌體",unbind:"移除裝置",others_title:"其他已綁定裝置",activate:"啟用",add_new:"新增裝置",back_to_devices:"返回裝置列表"},hub:{title_scanning:"正在搜尋附近裝置",subtitle_scanning:"請確認麥克風已開機並處於配網模式(首次開機或長按重設 5 秒)。",title_idle:"搜尋附近裝置",title_found_one:"發現 {{count}} 台裝置",title_found_other:"發現 {{count}} 台裝置",title_found:"發現 {{count}} 台裝置",subtitle_found:"點擊下方裝置以連線到您的電腦。",title_no_adapter:"未開啟藍牙",subtitle_no_adapter:"請至系統設定開啟藍牙後重試。",connect:"連線",unnamed_device:"未命名裝置",signal_strong:"訊號強",signal_medium:"訊號中",signal_weak:"訊號弱"},provision_status:{connecting:"正在連線",awaiting_challenge:"等待配對碼",waiting_confirm:"請確認配對碼",pairing:"驗證中",waiting_provision:"請輸入 WiFi",provisioning:"配網中",provision_failed:"配網失敗",provisioned:"配網成功"},connect_dialog:{title:"連線到此裝置",subtitle:"首次連線需要在麥克風螢幕上確認配對碼。",cancel:"取消",done:"完成",connecting:"正在連線裝置…",confirm_hint:"請核對麥克風螢幕上的配對碼與下方一致。",accept:"確認",reject:"拒絕",pairing:"驗證中…",wifi_hint:"請輸入麥克風要連線的 WiFi 名稱與密碼。",use_current_wifi:"使用目前 WiFi",autofill_password_skipped:"密碼自動填充已略過,請手動輸入。",autofill_failed:"無法讀取目前 WiFi,請手動輸入。",ssid_label:"WiFi 名稱(SSID)",ssid_placeholder:"選擇一個 WiFi",ssid_pick_from_list:"從列表選擇",ssid_manual_entry:"手動輸入 SSID",psk_label:"WiFi 密碼",submit_wifi:"開始配網",provisioning:"配網中…",retry_provision:"再次嘗試",provision_failed_generic:"配網失敗,請檢查 WiFi 後重試。",provision_failed_stage_0:"WiFi 密碼錯誤或網路不存在,請重試。",provision_failed_stage_1:"WiFi 訊號弱或路由器拒絕連線。",provision_failed_stage_2:"暫不支援企業 WiFi。",provision_failed_stage_3:"WiFi 已連,但路由器未分配 IP。",provision_failed_stage_4:"網路無 DNS,請檢查路由器。",provision_failed_stage_5:"WiFi 已連,但無法存取網路。",provision_failed_stage_6:"找不到電腦端,請確認電腦端已開啟。",provision_failed_stage_7:"桌面端回應逾時。",provision_failed_stage_8:"憑據無效,請重新登入。",success_title:"配網成功",success_subtitle:"麥克風已連上 WiFi(IP: {{ip}}),可以開始使用了。"},paired_strip:{title:"已連線的裝置",remove:"移除",confirm_remove:"要移除「{{label}}」嗎?"},server:{title:"WS 服務",running:"執行中",stopped:"已停止",host_label:"位址",mdns_label:"mDNS",connections_label:"線上",start:"啟動",stop:"停止"},list:{title:"設備",empty_title:"等待設備連線",empty_hint:"mDNS 服務已發佈,將 ESP32 麥克風連到同一網段即可被發現。",paired_section:"已配對"},ble_scan:{start:"掃描",scanning:"掃描中…",no_adapter:"未偵測到藍牙介面卡",error_prefix:"掃描錯誤:",nearby_section:"附近",pair_cta:"配對(即將推出)",pair_unavailable_hint:"SPAKE2 配對與 WiFi 下發仍在 P1 開發中,目前僅支援掃描發現。"},card:{online:"線上",offline:"離線",unnamed:"未命名",fw_short:"韌體"},detail:{online:"線上",offline:"離線",device_id:"ID",bound_user:"綁定用戶",first_paired:"首次配對",last_seen:"最近上線",channel:"通道",rtt:"RTT",rssi:"訊號",battery:"電量",protocol:"協定",firmware:"韌體",send_text_title:"推送文字",send_text_placeholder:"輸入要下發到設備螢幕的文字…",target_app_placeholder:"目標 app(選填)",send_text:"傳送",send_text_ok:"已傳送文字",send_text_failed:"傳送失敗",ota_title:"推送 OTA",ota_pick_file:"選擇韌體",ota_no_file:"未選擇韌體",ota_version_placeholder:"目標版本 1.0.0",ota_push:"推送",ota_started:"已開始推送 OTA",ota_failed:"推送失敗",last_text_result:"最近一次辨識結果",rename_save:"儲存",rename_cancel:"取消",rename_failed:"重新命名失敗",remove:"移除設備",remove_title:"移除設備",remove_desc:"確定要移除「{{label}}」嗎?將斷開連線並清除註冊紀錄。",remove_confirm:"確認移除",remove_ok:"設備已移除",remove_failed:"移除失敗",no_selection_title:"未選取設備",no_selection_hint:"在左側選擇一台設備查看詳情並執行動作。"},battery_tier:{normal:"正常",low:"電量低",critical:"嚴重不足",no_record:"無紀錄",deep_sleep:"深度睡眠"},events:{title:"事件流",empty:"暫無事件"}},rO={transcribe:E0,home:O0,history:C0,dictionary:k0,layout:R0,search_box:M0,toolbox:D0,meetings:L0,devices:z0},uO=Object.freeze(Object.defineProperty({__proto__:null,default:rO,devices:z0,dictionary:k0,history:C0,home:O0,layout:R0,meetings:L0,search_box:M0,toolbox:D0,transcribe:E0},Symbol.toStringTag,{value:"Module"})),N0={title:"優化",empty:"暫無可優化的辨識結果",cancel:"取消",save:"優化並複製",saving:"優化中…",learn_hint:"AI 會從這次優化中學習,下次辨識更懂你",close_aria:"關閉"},j0={saved_title:"已儲存優化",saved_description:"新文字已複製到剪貼簿,回到原輸入框貼上即可",save_failed_title:"儲存失敗"},cO={edit_last_record:N0,toast:j0},dO=Object.freeze(Object.defineProperty({__proto__:null,default:cO,edit_last_record:N0,toast:j0},Symbol.toStringTag,{value:"Module"})),V0={section_index:"[04] 系統",title:"設定",subtitle:"設定聽寫、模型端點與應用程式行為。變更即時生效,無需儲存。",dialog_title:"設定",dialog_sr:"OpenSpeech 設定"},B0={title:"已回退至 OpenLoaf SaaS",description:"{{which}}的自訂供應商未通過測試,已切換為雲端服務",dictation:"聽寫",ai:"AI 改寫",both:"聽寫與 AI 改寫",confirm_title:"自訂供應商未通過測試",confirm_description:"{{which}}所選的自訂供應商還沒有通過測試,無法在此模式下套用。繼續關閉設定會自動回退至 OpenLoaf SaaS 雲端服務。",confirm_back_to_test:"返回測試",confirm_proceed:"回退至 SaaS 並關閉"},U0={general:"一般",hotkeys:"快速鍵",dictation:"聽寫",model:"模型",ai:"AI",prompts:"系統提示詞",about:"關於",dev_hints:"提示偵錯"},H0={reset_all:"重置全部",reset_all_confirm:"確定將所有快速鍵恢復為預設值?",reset_all_done:"已恢復預設快速鍵"},P0={shortcuts:"鍵盤快速鍵",language:"語言",audio:"音訊",asr_segment:"聽寫模式",text_injection:"文字注入",behavior:"行為",model_rest:"大型模型(REST)",build:"建置",output:"輸出方式",hints:"教學與提示"},K0={interface_lang:"介面語言",translate_target_lang:"翻譯目標語言",translate_target_lang_hint:"翻譯聽寫快速鍵命中後,轉寫文字會被翻譯成此語言再注入到目前焦點。",translate_output_mode:"翻譯輸出形態",translate_output_mode_hint:"「雙語」原文與譯文都輸出(先後順序見下一項);「僅目標語言」只輸出譯文,速度更快。",translate_bilingual_order:"雙語排列順序",translate_bilingual_order_hint:"雙語輸出時原文與譯文誰在上面。譯文在上時先串流輸出譯文,原文會在譯文寫完後整段補在下面;原文在上時先串流輸出原文。",input_device:"輸入裝置",input_level:"輸入音量",input_level_hint_listening:"即時音量 · 正在監聽:{{name}}",input_level_hint:"即時麥克風音量",open_sound_settings:"系統設定",open_sound_settings_failed:"開啟系統聲音設定失敗",cue_sound:"開始/結束提示音",restore_clipboard:"貼上後還原剪貼簿",restore_clipboard_hint:"建議保持開啟",launch_startup:"開機自動啟動",close_to_tray:"關閉時最小化至系統列",close_to_tray_hint:"開啟後關閉主視窗會直接隱藏至系統列;關閉時每次都會跳出確認對話框",update_policy:"自動更新",update_policy_hint:"選擇背景發現新版本時的處理方式",update_policy_options:{prompt:"提示我安裝",auto:"閒置時自動安裝",disabled:"關閉"},loading:"// loading settings…",dictation_output_lang:"聽寫輸出語言",dictation_output_lang_hint:"聽寫轉寫出來的文字使用哪種語言。「自動」時由 ASR 自行判定,並以介面語言作為預設對照。",translate_conflict_warning:"目標語言與聽寫輸出語言相同,翻譯將無意義。",show_hints:"顯示互動提示",show_hints_hint:"在懸浮列與結果區域顯示快速鍵教學小氣泡;學會後自動隱藏。關掉後所有教學提示一律不彈。",reset_hints:"重置互動提示",reset_hints_action:"全部重置",reset_hints_done:"已重置教學提示",hints_pending_count:"未學會 {{pending}} / {{total}}",hints_all_learned:"已全部學會"},q0={system_default:"跟隨系統",system_default_with_current:"跟隨系統(目前:{{name}})",is_default_suffix:"{{name}} · 系統預設",disconnected_with_fallback:"{{name}} · 已中斷,暫用系統預設({{fallback}})",disconnected:"{{name}} · 已中斷"},Y0={realtime_label:"即時轉換",realtime_hint:"伺服器端依停頓自動切句,錄音過程中即時回填;適合長時間會議字幕、直播轉寫等無人值守情境。",utterance_label:"整句聽寫",utterance_hint:"整段錄音視為一次完整對話,放開按鍵後再回傳轉寫結果;模型擁有完整上下文,更準確且不易被停頓誤切。",ai_refine_toggle:{label:"啟用 AI 優化",hint:"在「整句聽寫」基礎上呼叫大型模型整理:去口頭禪、消重、識別自我修正;同語言不翻譯。",disabled_in_realtime:"即時轉換模式下不可用"}},G0={streaming_inject:{label:"文字逐字輸出",hint:"預設開啟:模型邊產出,文字邊鍵入到游標位置。關閉後改為整段一次貼上,可繞過微信輸入法 / 部分全拼輸入法的逐字攔截(首字被吞、雙逗號等異常)。"},clipboard_copy:{label:"自動複製到剪貼簿",hint:"預設關閉:注入完成後會還原你原本的剪貼簿內容,不污染複製佇列。開啟後整段文字保留在剪貼簿,方便再次手動貼上。"}},I0={byo_unavailable_tag:"// BYO-MODEL · 尚未實作",byo_unavailable_body:"自訂 STT REST 端點(端點 URL/API Key/模型名稱/測試連線)尚未接入,目前所有聽寫均走 OpenLoaf SaaS。此入口開發中,下一版本將啟用。",endpoint:"端點 URL",api_key:"API Key",api_key_hint:"儲存於系統金鑰圈;失去焦點時自動儲存",model_name:"模型名稱",timeout_seconds:"請求逾時(秒)",audio_format:"音訊格式",test_connection_disabled:"測試連線(尚未實作)",show_key:"顯示 API Key",hide_key:"隱藏 API Key",key_saved_toast:"API Key 已儲存至系統金鑰圈",key_save_failed_toast:"API Key 儲存失敗: {{error}}"},$0={section_mode:"AI 通道",mode_saas_label:"雲端(推薦)",mode_saas_hint:"使用 OpenLoaf 已登入帳號的快速 chat 模型,依積分計費。",mode_custom_label:"自訂供應商",mode_custom_hint:"OpenAI 相容協定;自帶 API Key,可加入多個供應商但同時間僅能啟用一個。",section_providers:"自訂供應商",providers_empty:"尚未新增自訂供應商",provider_name:"名稱",provider_base_url:"Base URL",provider_model:"模型",provider_api_key:"API Key",provider_api_key_hint:"儲存於系統金鑰圈;失去焦點時自動儲存",provider_active:"目前啟用",provider_set_active:"設為啟用",provider_remove:"刪除",provider_test:"測試",provider_test_running:"測試中…",provider_test_pass:"測試通過",provider_test_fail:"測試失敗:{{message}}",provider_test_missing_fields:"Base URL 或模型未填寫",provider_test_empty_reply:"模型未回傳內容",provider_add:"新增供應商",provider_default_name:"新供應商",provider_default_base_url:"https://api.openai.com/v1",provider_default_model:"gpt-4o-mini",section_prompts:"系統提示詞",prompts_hint:"預設跟隨目前介面語言;一旦修改即視為自訂,對所有語言生效。",prompts_intro:"AI 在不同場景下使用的提示詞,改一改就能調整輸出風格。改動會自動儲存。",prompt_tab_refine:"聽寫優化",prompt_tab_translate:"翻譯",prompt_tab_polish:"潤飾",prompt_tab_meeting:"會議紀要",prompt_edit:"修改",prompt_status_custom:"已自訂",prompt_status_default:"預設",prompt_desc_refine:"鬆開聽寫按鍵後,AI 會把語音轉寫整理為更通順的書面文字(錯字、口頭禪、斷句),再注入目前的應用程式。",prompt_desc_translate:"透過「翻譯」快捷鍵觸發,把聽寫文字翻譯為上方設定的目標語言。",prompt_desc_polish:"AI 工具箱「潤飾」頁面使用,可搭配下方場景列表(電子郵件、微信等)依需切換語氣。",prompt_desc_meeting:"「會議」頁面將整段會議錄音轉寫後,依本提示詞整理為結構化紀要。",prompt_dialog_title_refine:"聽寫優化提示詞",prompt_dialog_title_translate:"翻譯提示詞",prompt_dialog_title_meeting:"會議紀要提示詞",prompt_dialog_textarea_label:"系統提示詞",polish_dialog_title:"潤飾設定",polish_dialog_subtitle:"調整潤飾用的系統提示詞,並維護 AI 工具箱中出現的場景列表。",polish_dialog_tab_prompt:"提示詞",polish_dialog_tab_scenarios:"場景",polish_dialog_prompt_label:"潤飾提示詞",polish_scenarios_title:"潤飾場景",polish_scenarios_hint:"AI 工具箱「潤飾」頁底部 chip 列表的來源;執行時會把所選場景的指示拼接到潤飾系統提示詞之後。",polish_scenarios_empty:"尚未新增潤飾場景",polish_scenario_default_name:"新場景",polish_scenario_remove:"刪除",polish_scenario_add:"新增場景",polish_scenario_instruction_placeholder:"例如:目標場景是商務郵件,語氣正式,依問候 / 正文 / 結尾分段。",refine_dialog_subtitle:"調整 AI 整理聽寫文字的方式。可以改一改、刪一刪,或整批恢復預設。",refine_dialog_tab_rules:"規則",refine_dialog_tab_examples:"範例",refine_dialog_tab_overrides:"依應用",refine_dialog_advanced_badge:"進階",refine_status_count_one:"{{count}} 條規則",refine_status_count_other:"{{count}} 條規則",refine_status_default:"預設",refine_status_modified:"已修改",refine_rules_empty_after_clear:"規則已全部刪除——執行時會跳過規則段。點下方新增規則,或點上方「恢復預設」回到預設 6 條。",refine_rules_empty_my_rules:"尚未新增你自己的規則。AI 正在使用一套通用的預設規則;如果想微調,可以下方新建一條,或從某條預設規則開始改。",refine_rules_count:"{{current}} / {{max}}",refine_rule_add:"新建規則",refine_rule_import_default:"從預設規則開始",refine_rule_import_picker_title:"選一條預設規則加入",refine_rule_clear_all:"清空全部",refine_rule_remove:"刪除",refine_rule_index:"規則 {{index}}",refine_rule_body_placeholder:"這條規則告訴 AI 怎麼處理你的聽寫文字,多段以空行分隔。",prompt_panel_save_hint:"改動會自動儲存。",advanced_title:"進階",app_override_rules_hint:"這組規則僅對目前應用程式生效,會覆寫上面的全域規則。",refine_panel_intro:"教 AI:當你說類似這樣的話,應該整理成這樣。範例越具體,整理結果就越貼近你想要的風格。",refine_examples_my_title:"我的案例",refine_examples_my_hint:"以「口語 → 希望輸出」成對餵給模型;越靠前權重越高。",refine_examples_count:"{{current}} / {{max}}",refine_example_add:"新增案例",refine_example_remove:"刪除",refine_example_input_label:"口語",refine_example_output_label:"希望輸出",refine_example_focus_label:"重點 / 關鍵點(選填)",refine_example_target_label:"適用範圍",refine_example_input_placeholder_v2:"你對著麥克風說了什麼(口語 / 錯字 / 口頭禪)",refine_example_output_placeholder_v2:"你希望整理成的樣子(書面、自洽、可貼到輸入框)",refine_example_focus_placeholder_v2:"例如:保留專有名詞、把英文術語還原",refine_example_target_option:{"*":"通用(所有場景)",chat:"聊天軟體(微信 / Slack / iMessage)",code:"命令終端 / 程式碼編輯器",doc:"文件 / 文字編輯器",email:"電子郵件",browser:"瀏覽器",meeting:"會議",other:"其他"},app_overrides_title:"依應用覆寫",app_overrides_hint:"為特定應用單獨設定規則與案例:命中時優先使用此處規則,案例拼接在全域之前。僅匹配跑過 refine 並留下 appId 的應用。",app_overrides_empty:"尚未新增覆寫",app_overrides_count:"{{current}} / {{max}}",app_override_add:"新增覆寫",app_override_remove:"刪除",app_override_enabled:"啟用",app_override_expand:"展開",app_override_collapse:"收合",app_override_core_rules_label:"覆寫核心規則(留空沿用全域)",app_override_core_rules_clear:"清空",app_override_core_rules_placeholder:"為此應用客製的 <core_rules>...</core_rules>;留空表示沿用全域核心規則。",app_override_picker_title:"選擇要覆寫的應用",app_override_no_history:"尚無可覆寫的應用——先在該應用裡跑一次聽寫優化,讓它出現在歷史中。",prompt_reset:"恢復預設",section_history:"上下文",include_history:"把最近的歷史一同送出",include_history_hint:"把最近的 transcript 作為參考上下文,協助模型沿用一致的語氣與術語。",recent_history_count:"攜帶筆數",recent_history_count_hint:"AI 上下文最多攜帶最近多少筆歷史;筆數越多偏置越強,但 token 消耗也越多。",minutes_ago:"分鐘前",history_truncated:"省略 {{count}} 字"},X0={en:"English",zh:"简体中文","zh-TW":"繁體中文",ja:"日本語",ko:"한국어",fr:"Français",de:"Deutsch",es:"Español"},F0={target_only:"僅目標語言",bilingual:"雙語(原文 + 譯文)"},Q0={translation_first:"譯文在上",source_first:"原文在上"},Z0={label:"聽寫語言",hint:"選擇你說話使用的語言;選「自動」讓上游 ASR 自偵測,遇歧義以介面語言對照。",follow_interface:"跟隨介面語言",auto:"自動",zh:"中文",en:"English",ja:"日本語",ko:"한국어",yue:"粵語"},W0={section_mode:"聽寫通道",mode_saas_label:"OpenLoaf 雲端(預設)",mode_saas_hint:"使用已登入帳號走 OpenLoaf 託管的語音辨識,按點數計費。聽寫與會議轉錄共用同一通道。",mode_custom_label:"自訂供應商",mode_custom_hint:"用自己的騰訊雲 / 阿里雲金鑰直連廠商 API,不經 SaaS。會議轉錄需選擇「騰訊雲」(內建說話人分離)。",section_providers:"自訂供應商",providers_empty:"尚未新增任何自訂供應商",add_tencent:"新增騰訊雲",add_aliyun:"新增阿里雲",vendor_tencent:"騰訊雲",vendor_aliyun:"阿里雲 DashScope",active_label:"目前啟用 · {{vendor}}",set_active:"設為啟用",remove:"刪除",name_label:"名稱",tencent_default_name:"騰訊雲語音辨識",tencent_app_id:"AppID",tencent_region:"區域(Region)",tencent_secret_id:"Secret ID",tencent_secret_key:"Secret Key",tencent_credentials_hint:"憑證儲存於系統金鑰鏈;失去焦點時自動儲存。可至騰訊雲主控台 → API 金鑰管理取得。",tencent_cos_bucket_label:"COS 儲存桶",tencent_cos_bucket_placeholder:"myaudio-1234567890",tencent_cos_bucket_hint:"必填:錄音先上傳 COS 再轉寫,單檔 ≤512MB。不填則受騰訊檔案介面 base64 5MB 限制,超過後無法轉寫。",aliyun_default_name:"阿里雲 DashScope",aliyun_api_key:"ApiKey",aliyun_api_key_hint:"儲存於系統金鑰鏈;失去焦點時自動儲存。可至 DashScope 主控台取得。",test:"測試",test_running:"測試中…",test_pass:"測試通過:憑證有效",test_fail:"測試失敗:{{message}}",test_missing_fields:"必填欄位未填",verified_badge:"已驗證",unverified_badge:"未驗證",test_code:{ok:"測試通過",unauthenticated:"驗證失敗:請檢查 Secret/ApiKey 是否正確",service_not_enabled:"憑證有效,但語音辨識服務尚未在此帳號下開通",missing_fields:"必填欄位未填",network:"網路不可達,請檢查連線與防火牆",timeout:"請求逾時,請稍後重試",rate_limited:"呼叫過於頻繁",cos_unauthorized:"ASR 憑證有效,但目前 SecretId 無權存取此 COS 儲存桶",cos_not_found:"ASR 憑證有效,但 COS 儲存桶不存在或地域不符",oss_policy_failed:"ApiKey 有效,但取得 OSS 上傳憑證失敗:帳號可能未開通百煉錄音檔資源",unknown:"未知錯誤"}},J0={version:"版本",platform:"平台",license:"授權",source:"原始碼",check_update:"檢查更新",dev_build:"目前是開發版",rerun_onboarding:"重新執行首次導覽",install_now:"立即安裝",skip_version:"略過此版本",install_in_progress:"正在下載並安裝更新…",install_progress:"{{version}} · {{percent}}% · {{downloaded}} / {{total}}",install_starting:"{{version}} · 已下載 {{downloaded}}",install_finalizing:"下載完成,正在安裝…",install_failed:"更新安裝失敗",update_channel:"更新通道",update_channel_stable:"正式版",update_channel_beta:"Beta(搶先體驗)",update_channel_hint:"Beta 通道更早收到新功能,但可能不穩定。關閉 Beta 後只會接收到版本號高於當前 Beta 的正式版。",open_log_dir:"開啟日誌目錄",saas_sdk_version:"SaaS SDK 版本"},e1={title:"互動提示偵錯",subtitle:"僅 dev 構建可見 · 用於回歸 hint 行為",global_switch:"全域顯示提示",reset_all:"全部重置",col_id:"ID",col_category:"類別",col_threshold:"閾值",col_success:"成功次數",col_dismissed:"已關閉",col_should:"應顯示",col_actions:"操作",yes:"是",no:"否",dismiss:"關閉",reset:"重置",force:"強制顯示",forcing:"強制中",note:"新增 hint 步驟:① settings.ts 加 HintId ② lib/hints.ts 註冊 HINT_REGISTRY ③ overlay.json 加文案 ④ 呼叫端掛 useHintBubble。完成後此表會自動出現。"},fO={page:V0,provider_rollback:B0,tabs:U0,hotkeys:H0,section:P0,general:K0,device:q0,asr_segment:Y0,output:G0,model:I0,ai:$0,translate_target_lang:X0,translate_output_mode:F0,translate_bilingual_order:Q0,dictation_lang:Z0,dictation_provider:W0,about:J0,dev_hints:e1},hO=Object.freeze(Object.defineProperty({__proto__:null,about:J0,ai:$0,asr_segment:Y0,default:fO,dev_hints:e1,device:q0,dictation_lang:Z0,dictation_provider:W0,general:K0,hotkeys:H0,model:I0,output:G0,page:V0,provider_rollback:B0,section:P0,tabs:U0,translate_bilingual_order:Q0,translate_output_mode:F0,translate_target_lang:X0},Symbol.toStringTag,{value:"Module"})),t1="意見回饋",n1="開啟首頁",i1="AI 工具",a1="歷史紀錄",s1="設定…",o1="選擇麥克風",l1="Auto-detect",r1="Auto-detect ({{name}})",u1="字典",c1="檢查更新",d1="結束 OpenSpeech",f1="停止錄音",pO={feedback:t1,open_home:n1,open_toolbox:i1,open_history:a1,open_settings:s1,mic_submenu:o1,auto_detect:l1,auto_detect_with_name:r1,open_dictionary:u1,check_update:c1,quit:d1,stop_recording:f1},_O=Object.freeze(Object.defineProperty({__proto__:null,auto_detect:l1,auto_detect_with_name:r1,check_update:c1,default:pO,feedback:t1,mic_submenu:o1,open_dictionary:u1,open_history:a1,open_home:n1,open_settings:s1,open_toolbox:i1,quit:d1,stop_recording:f1},Symbol.toStringTag,{value:"Module"})),mO=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,gO={"&amp;":"&","&#38;":"&","&lt;":"<","&#60;":"<","&gt;":">","&#62;":">","&apos;":"'","&#39;":"'","&quot;":'"',"&#34;":'"',"&nbsp;":" ","&#160;":" ","&copy;":"©","&#169;":"©","&reg;":"®","&#174;":"®","&hellip;":"…","&#8230;":"…","&#x2F;":"/","&#47;":"/"},yO=a=>gO[a],vO=a=>a.replace(mO,yO);let wc={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0,unescape:vO,transDefaultProps:void 0};const bO=(a={})=>{wc={...wc,...a}},lD=()=>wc;let h1;const SO=a=>{h1=a},rD=()=>h1,TO={type:"3rdParty",init(a){bO(a.options.react),SO(a)}},uD=["zh-CN","zh-TW","en"],AO=Object.assign({"./locales/en/common.json":sE,"./locales/en/dialogs.json":lE,"./locales/en/errors.json":uE,"./locales/en/feedback.json":dE,"./locales/en/hotkey.json":hE,"./locales/en/onboarding.json":_E,"./locales/en/overlay.json":gE,"./locales/en/pages.json":vE,"./locales/en/quickPanel.json":SE,"./locales/en/settings.json":AE,"./locales/en/tray.json":wE,"./locales/zh-CN/common.json":OE,"./locales/zh-CN/dialogs.json":kE,"./locales/zh-CN/errors.json":ME,"./locales/zh-CN/feedback.json":LE,"./locales/zh-CN/hotkey.json":NE,"./locales/zh-CN/onboarding.json":VE,"./locales/zh-CN/overlay.json":UE,"./locales/zh-CN/pages.json":PE,"./locales/zh-CN/quickPanel.json":qE,"./locales/zh-CN/settings.json":GE,"./locales/zh-CN/tray.json":$E,"./locales/zh-TW/common.json":FE,"./locales/zh-TW/dialogs.json":ZE,"./locales/zh-TW/errors.json":JE,"./locales/zh-TW/feedback.json":tO,"./locales/zh-TW/hotkey.json":iO,"./locales/zh-TW/onboarding.json":sO,"./locales/zh-TW/overlay.json":lO,"./locales/zh-TW/pages.json":uO,"./locales/zh-TW/quickPanel.json":dO,"./locales/zh-TW/settings.json":hO,"./locales/zh-TW/tray.json":_O}),Ec={"zh-CN":{},"zh-TW":{},en:{}},p1=new Set;for(const[a,i]of Object.entries(AO)){const o=a.match(/\.\/locales\/([^/]+)\/([^/]+)\.json$/);if(!o)continue;const l=o[1],u=o[2];l in Ec&&(Ec[l][u]=i.default,p1.add(u))}function _1(){const a=typeof navigator<"u"&&navigator.language||"en";return a.toLowerCase().startsWith("zh")?/-(tw|hk|mo)$/i.test(a)||/hant/i.test(a)?"zh-TW":"zh-CN":"en"}function cD(a){return a==="system"?_1():a}const xO=_1();we.use(TO).init({resources:Ec,lng:xO,fallbackLng:"en",ns:Array.from(p1),defaultNS:"common",interpolation:{escapeValue:!1},returnNull:!1});let ca=null;function wO(){if(ca)return ca;const a=typeof navigator<"u"?navigator.userAgent.toLowerCase():"";return a.includes("mac")?ca="macos":a.includes("win")?ca="windows":ca="linux",ca}const em=["fn","ctrl","alt","shift","meta"],Ti=["dictate_ptt","translate","show_main_window","open_toolbox","edit_last_record"];function EO(a){let i,o;return a==="macos"?(i={kind:"modifierOnly",mods:["fn","ctrl"],code:"",modSides:{ctrl:"left"}},o={kind:"modifierOnly",mods:["fn","shift"],code:"",modSides:{shift:"left"}}):a==="windows"?(i={kind:"modifierOnly",mods:["alt","meta"],code:"",modSides:{alt:"left",meta:"left"}},o={kind:"modifierOnly",mods:["ctrl"],code:"",modSides:{ctrl:"right"}}):(i={kind:"modifierOnly",mods:["ctrl","meta"],code:"",modSides:{ctrl:"left",meta:"left"}},o={kind:"modifierOnly",mods:["alt","meta"],code:"",modSides:{alt:"left",meta:"left"}}),{dictate_ptt:i,translate:o,show_main_window:{kind:"combo",mods:["shift","meta"],code:"KeyO",modSides:{shift:"left",meta:"left"}},open_toolbox:a==="windows"?{kind:"combo",mods:["ctrl","alt"],code:"KeyT",modSides:{ctrl:"left",alt:"left"}}:{kind:"combo",mods:["shift","meta"],code:"KeyT",modSides:{shift:"left",meta:"left"}},edit_last_record:a==="macos"?{kind:"combo",mods:["shift","meta"],code:"KeyE",modSides:{shift:"left",meta:"left"}}:{kind:"combo",mods:["ctrl","shift"],code:"KeyE",modSides:{ctrl:"left",shift:"left"}}}}new Proxy({},{get(a,i){return EO(wO())[i]},has(a,i){return Ti.includes(i)},ownKeys(){return[...Ti]},getOwnPropertyDescriptor(){return{enumerable:!0,configurable:!0}}});const OO=new Proxy({},{get(a,i){if(Ti.includes(i))return we.t(`hotkey:binding.${i}`)},has(a,i){return Ti.includes(i)},ownKeys(){return[...Ti]},getOwnPropertyDescriptor(){return{enumerable:!0,configurable:!0}}});function dD(a){return[...new Set(a)].sort((i,o)=>em.indexOf(i)-em.indexOf(o))}const Jc={ControlLeft:{mod:"ctrl",side:"left"},ControlRight:{mod:"ctrl",side:"right"},AltLeft:{mod:"alt",side:"left"},AltRight:{mod:"alt",side:"right"},ShiftLeft:{mod:"shift",side:"left"},ShiftRight:{mod:"shift",side:"right"},MetaLeft:{mod:"meta",side:"left"},MetaRight:{mod:"meta",side:"right"},OSLeft:{mod:"meta",side:"left"},OSRight:{mod:"meta",side:"right"},Fn:{mod:"fn",side:null}};function CO(a){return Jc[a]?.mod??null}function kO(a){return Jc[a]?.side??null}function RO(a){return a in Jc}function Oc(a,i){return i==="fn"?null:a.modSides?.[i]??"left"}const MO=["Tab","Backspace","Delete","CapsLock","NumLock","ScrollLock"],DO=["Escape","Enter","ArrowUp","ArrowDown","ArrowLeft","ArrowRight"];function LO(a,i,o=!1){return RO(a)?{ok:!1,reason:we.t("hotkey:validation.needs_main_key")}:MO.includes(a)?{ok:!1,reason:we.t("hotkey:validation.combo_disallowed_main")}:!o&&DO.includes(a)?{ok:!1,reason:we.t("hotkey:validation.special_keys_locked")}:i.length===0&&VO(a)?{ok:!1,reason:we.t("hotkey:validation.typing_key_needs_modifier")}:{ok:!0}}function zO(a,i,o=!1){return a.mods.includes("fn")&&i!=="macos"?{ok:!1,reason:we.t("hotkey:validation.fn_macos_only")}:a.kind==="modifierOnly"?a.code!==""?{ok:!1,reason:we.t("hotkey:validation.modifier_only_no_main")}:a.mods.length<1?{ok:!1,reason:we.t("hotkey:validation.modifier_only_min")}:{ok:!0}:a.kind==="doubleTap"?a.code!==""?{ok:!1,reason:we.t("hotkey:validation.double_tap_no_main")}:a.mods.length!==1?{ok:!1,reason:we.t("hotkey:validation.double_tap_single_mod")}:i==="macos"&&a.mods[0]==="fn"?{ok:!1,reason:we.t("hotkey:validation.double_tap_fn_macos")}:{ok:!0}:a.mods.includes("fn")?{ok:!1,reason:we.t("hotkey:validation.combo_no_fn")}:LO(a.code,a.mods,o)}function NO(a,i){return i?`${a}:${i}`:a}function tm(a){const i=new Set;for(const o of a.mods)i.add(NO(o,Oc(a,o)));return i}function gs(a,i){if(a.size>=i.size)return!1;for(const o of a)if(!i.has(o))return!1;return!0}function jO(a,i,o){const l=tm(i),u=new Set(i.mods);for(const d of Ti){if(d===o)continue;const f=a[d];if(!f)continue;if(KO(f,i))return{kind:"equal",with:d};const h=tm(f);if(i.kind==="modifierOnly"&&f.kind==="modifierOnly"&&(gs(l,h)||gs(h,l)))return{kind:"subset_modifier_only",with:d};if(i.kind==="modifierOnly"&&f.kind==="combo"&&(gs(l,h)||l.size===h.size)&&gs(l,h))return{kind:"subset_combo",with:d};if(i.kind==="combo"&&f.kind==="modifierOnly"&&gs(h,l))return{kind:"subset_combo",with:d};if(i.kind==="doubleTap"&&f.kind==="modifierOnly"){const m=i.mods[0];if(m&&f.mods.includes(m))return{kind:"double_tap_overlap_modifier",with:d}}if(i.kind==="modifierOnly"&&f.kind==="doubleTap"){const m=f.mods[0];if(m&&u.has(m))return{kind:"double_tap_overlap_modifier",with:d}}}return null}function fD(a,i,o){const l=[],u=new Set;for(const d of Ti){const f=a[d];if(!f)continue;const h=zO(f,i,o);if(!h.ok){l.push({id:d,error:h.reason??""}),u.add(d);continue}const m=jO(a,f,d);if(m&&!u.has(d)){const _=we.t(`dialogs:hotkey_field.conflict_reason.${m.kind}`,{name:OO[m.with]});l.push({id:d,error:_}),u.add(d)}}return l}function hD(a,i){const o=[];return i==="macos"&&a.kind==="combo"&&a.mods.length===0&&/^F([1-9]|1[0-2])$/.test(a.code)&&o.push("hotkey:warning.f_key_bare"),a.kind==="modifierOnly"&&a.mods.length===1&&o.push(`hotkey:warning.modifier_only_single_${i}`),a.kind==="combo"&&BO(a,i)&&o.push("hotkey:warning.system_shortcut"),o}function VO(a){return/^Key[A-Z]$/.test(a)||/^Digit\d$/.test(a)||/^Numpad\d$/.test(a)||a==="Space"?!0:["Backquote","Minus","Equal","BracketLeft","BracketRight","Backslash","Semicolon","Quote","Comma","Period","Slash","IntlBackslash","IntlRo","IntlYen","NumpadAdd","NumpadSubtract","NumpadMultiply","NumpadDivide","NumpadDecimal"].includes(a)}function BO(a,i){const o=new Set(a.mods),l=(...u)=>o.size===u.length&&u.every(d=>o.has(d));return i==="macos"?!!(l("meta")&&["KeyQ","KeyW","KeyH","KeyM","Tab","Space"].includes(a.code)||l("meta","shift")&&["Digit3","Digit4","Digit5"].includes(a.code)||l("ctrl","meta")&&a.code==="KeyQ"||l("meta","alt")&&a.code==="Escape"):i==="windows"?!!(l("meta")&&["KeyL","KeyD","KeyE","KeyR","Tab","KeyH","KeyI","KeyS"].includes(a.code)||l("alt")&&a.code==="F4"||l("alt")&&a.code==="Tab"||l("ctrl","alt")&&a.code==="Delete"):!1}const UO={ctrl:"Ctrl",alt:"Option",shift:"Shift",meta:"Cmd",fn:"fn"},HO={ctrl:"Ctrl",alt:"Alt",shift:"Shift",meta:"Win",fn:"Fn"},PO={ctrl:"Ctrl",alt:"Alt",shift:"Shift",meta:"Super",fn:"Fn"};function ol(a,i){return i==="macos"?UO[a]:i==="windows"?HO[a]:PO[a]}const nm={Space:"Space",Enter:"Enter",Escape:"Esc",Tab:"Tab",Backspace:"⌫",Delete:"Del",ArrowUp:"↑",ArrowDown:"↓",ArrowLeft:"←",ArrowRight:"→",Backquote:"`",Minus:"-",Equal:"=",BracketLeft:"[",BracketRight:"]",Backslash:"\\",Semicolon:";",Quote:"'",Comma:",",Period:".",Slash:"/",IntlBackslash:"\\",IntlRo:"\\",IntlYen:"¥"};function m1(a){return nm[a]?nm[a]:/^Key([A-Z])$/.test(a)?a.slice(3):/^Digit(\d)$/.test(a)?a.slice(5):/^Numpad(.+)$/.test(a)?`Num${a.slice(6)}`:a}function pD(a,i){if(!a)return we.t("hotkey:format.unbound");const o=i==="macos"?" ":" + ";return a.kind==="modifierOnly"?a.mods.map(u=>ol(u,i)).join(o):a.kind==="doubleTap"?we.t("hotkey:format.double_tap",{mod:ol(a.mods[0],i)}):[...a.mods.map(u=>ol(u,i)),m1(a.code)].join(o)}function KO(a,i){if(a===null&&i===null)return!0;if(a===null||i===null||a.kind!==i.kind||a.code!==i.code||a.mods.length!==i.mods.length||!a.mods.every((o,l)=>o===i.mods[l]))return!1;for(const o of a.mods)if(Oc(a,o)!==Oc(i,o))return!1;return!0}const g1=(...a)=>a.filter((i,o,l)=>!!i&&i.trim()!==""&&l.indexOf(i)===o).join(" ").trim();const qO=a=>a.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();const YO=a=>a.replace(/^([A-Z])|[\s-_]+(\w)/g,(i,o,l)=>l?l.toUpperCase():o.toLowerCase());const im=a=>{const i=YO(a);return i.charAt(0).toUpperCase()+i.slice(1)};var lc={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};const GO=a=>{for(const i in a)if(i.startsWith("aria-")||i==="role"||i==="title")return!0;return!1},IO=Y.createContext({}),$O=()=>Y.useContext(IO),XO=Y.forwardRef(({color:a,size:i,strokeWidth:o,absoluteStrokeWidth:l,className:u="",children:d,iconNode:f,...h},m)=>{const{size:_=24,strokeWidth:g=2,absoluteStrokeWidth:v=!1,color:b="currentColor",className:x=""}=$O()??{},w=l??v?Number(o??g)*24/Number(i??_):o??g;return Y.createElement("svg",{ref:m,...lc,width:i??_??lc.width,height:i??_??lc.height,stroke:a??b,strokeWidth:w,className:g1("lucide",x,u),...!d&&!GO(h)&&{"aria-hidden":"true"},...h},[...f.map(([L,V])=>Y.createElement(L,V)),...Array.isArray(d)?d:[d]])});const wi=(a,i)=>{const o=Y.forwardRef(({className:l,...u},d)=>Y.createElement(XO,{ref:d,iconNode:i,className:g1(`lucide-${qO(im(a))}`,`lucide-${a}`,l),...u}));return o.displayName=im(a),o};const FO=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],_D=wi("check",FO);const QO=[["path",{d:"M15 6v12a3 3 0 1 0 3-3H6a3 3 0 1 0 3 3V6a3 3 0 1 0-3 3h12a3 3 0 1 0-3-3",key:"11bfej"}]],ZO=wi("command",QO);const WO=[["path",{d:"M2.7 10.3a2.41 2.41 0 0 0 0 3.41l7.59 7.59a2.41 2.41 0 0 0 3.41 0l7.59-7.59a2.41 2.41 0 0 0 0-3.41l-7.59-7.59a2.41 2.41 0 0 0-3.41 0Z",key:"1f1r0c"}]],JO=wi("diamond",WO);const eC=[["path",{d:"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z",key:"1s6t7t"}],["circle",{cx:"16.5",cy:"7.5",r:".5",fill:"currentColor",key:"w0ekpg"}]],mD=wi("key-round",eC);const tC=[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]],gD=wi("sparkles",tC);const nC=[["path",{d:"m21.64 3.64-1.28-1.28a1.21 1.21 0 0 0-1.72 0L2.36 18.64a1.21 1.21 0 0 0 0 1.72l1.28 1.28a1.2 1.2 0 0 0 1.72 0L21.64 5.36a1.2 1.2 0 0 0 0-1.72",key:"ul74o6"}],["path",{d:"m14 7 3 3",key:"1r5n42"}],["path",{d:"M5 6v4",key:"ilb8ba"}],["path",{d:"M19 14v4",key:"blhpug"}],["path",{d:"M10 2v2",key:"7u0qdc"}],["path",{d:"M7 8H3",key:"zfb6yr"}],["path",{d:"M21 16h-4",key:"1cnmox"}],["path",{d:"M11 3H9",key:"1obp7u"}]],yD=wi("wand-sparkles",nC);const iC=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],vD=wi("x",iC),ed=Y.createContext({});function td(a){const i=Y.useRef(null);return i.current===null&&(i.current=a()),i.current}const aC=typeof window<"u",y1=aC?Y.useLayoutEffect:Y.useEffect,kl=Y.createContext(null);function nd(a,i){a.indexOf(i)===-1&&a.push(i)}function vl(a,i){const o=a.indexOf(i);o>-1&&a.splice(o,1)}const nn=(a,i,o)=>o>i?i:o<a?a:o;let id=()=>{};const Qn={},v1=a=>/^-?(?:\d+(?:\.\d+)?|\.\d+)$/u.test(a);function b1(a){return typeof a=="object"&&a!==null}const S1=a=>/^0[^.\s]+$/u.test(a);function T1(a){let i;return()=>(i===void 0&&(i=a()),i)}const Pt=a=>a,sC=(a,i)=>o=>i(a(o)),Ms=(...a)=>a.reduce(sC),Os=(a,i,o)=>{const l=i-a;return l===0?1:(o-a)/l};class ad{constructor(){this.subscriptions=[]}add(i){return nd(this.subscriptions,i),()=>vl(this.subscriptions,i)}notify(i,o,l){const u=this.subscriptions.length;if(u)if(u===1)this.subscriptions[0](i,o,l);else for(let d=0;d<u;d++){const f=this.subscriptions[d];f&&f(i,o,l)}}getSize(){return this.subscriptions.length}clear(){this.subscriptions.length=0}}const kt=a=>a*1e3,Ht=a=>a/1e3;function A1(a,i){return i?a*(1e3/i):0}const x1=(a,i,o)=>(((1-3*o+3*i)*a+(3*o-6*i))*a+3*i)*a,oC=1e-7,lC=12;function rC(a,i,o,l,u){let d,f,h=0;do f=i+(o-i)/2,d=x1(f,l,u)-a,d>0?o=f:i=f;while(Math.abs(d)>oC&&++h<lC);return f}function Ds(a,i,o,l){if(a===i&&o===l)return Pt;const u=d=>rC(d,0,1,a,o);return d=>d===0||d===1?d:x1(u(d),i,l)}const w1=a=>i=>i<=.5?a(2*i)/2:(2-a(2*(1-i)))/2,E1=a=>i=>1-a(1-i),O1=Ds(.33,1.53,.69,.99),sd=E1(O1),C1=w1(sd),k1=a=>a>=1?1:(a*=2)<1?.5*sd(a):.5*(2-Math.pow(2,-10*(a-1))),od=a=>1-Math.sin(Math.acos(a)),R1=E1(od),M1=w1(od),uC=Ds(.42,0,1,1),cC=Ds(0,0,.58,1),D1=Ds(.42,0,.58,1),dC=a=>Array.isArray(a)&&typeof a[0]!="number",L1=a=>Array.isArray(a)&&typeof a[0]=="number",fC={linear:Pt,easeIn:uC,easeInOut:D1,easeOut:cC,circIn:od,circInOut:M1,circOut:R1,backIn:sd,backInOut:C1,backOut:O1,anticipate:k1},hC=a=>typeof a=="string",am=a=>{if(L1(a)){id(a.length===4);const[i,o,l,u]=a;return Ds(i,o,l,u)}else if(hC(a))return fC[a];return a},tl=["setup","read","resolveKeyframes","preUpdate","update","preRender","render","postRender"];function pC(a,i){let o=new Set,l=new Set,u=!1,d=!1;const f=new WeakSet;let h={delta:0,timestamp:0,isProcessing:!1};function m(g){f.has(g)&&(_.schedule(g),a()),g(h)}const _={schedule:(g,v=!1,b=!1)=>{const w=b&&u?o:l;return v&&f.add(g),w.add(g),g},cancel:g=>{l.delete(g),f.delete(g)},process:g=>{if(h=g,u){d=!0;return}u=!0;const v=o;o=l,l=v,o.forEach(m),o.clear(),u=!1,d&&(d=!1,_.process(g))}};return _}const _C=40;function z1(a,i){let o=!1,l=!0;const u={delta:0,timestamp:0,isProcessing:!1},d=()=>o=!0,f=tl.reduce((U,H)=>(U[H]=pC(d),U),{}),{setup:h,read:m,resolveKeyframes:_,preUpdate:g,update:v,preRender:b,render:x,postRender:w}=f,L=()=>{const U=Qn.useManualTiming,H=U?u.timestamp:performance.now();o=!1,U||(u.delta=l?1e3/60:Math.max(Math.min(H-u.timestamp,_C),1)),u.timestamp=H,u.isProcessing=!0,h.process(u),m.process(u),_.process(u),g.process(u),v.process(u),b.process(u),x.process(u),w.process(u),u.isProcessing=!1,o&&i&&(l=!1,a(L))},V=()=>{o=!0,l=!0,u.isProcessing||a(L)};return{schedule:tl.reduce((U,H)=>{const I=f[H];return U[H]=(se,W=!1,Z=!1)=>(o||V(),I.schedule(se,W,Z)),U},{}),cancel:U=>{for(let H=0;H<tl.length;H++)f[tl[H]].cancel(U)},state:u,steps:f}}const{schedule:De,cancel:Zn,state:at,steps:rc}=z1(typeof requestAnimationFrame<"u"?requestAnimationFrame:Pt,!0);let ll;function mC(){ll=void 0}const ct={now:()=>(ll===void 0&&ct.set(at.isProcessing||Qn.useManualTiming?at.timestamp:performance.now()),ll),set:a=>{ll=a,queueMicrotask(mC)}},N1=a=>i=>typeof i=="string"&&i.startsWith(a),j1=N1("--"),gC=N1("var(--"),ld=a=>gC(a)?yC.test(a.split("/*")[0].trim()):!1,yC=/var\(--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)$/iu;function sm(a){return typeof a!="string"?!1:a.split("/*")[0].includes("var(--")}const ya={test:a=>typeof a=="number",parse:parseFloat,transform:a=>a},Cs={...ya,transform:a=>nn(0,1,a)},nl={...ya,default:1},Ts=a=>Math.round(a*1e5)/1e5,rd=/-?(?:\d+(?:\.\d+)?|\.\d+)/gu;function vC(a){return a==null}const bC=/^(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))$/iu,ud=(a,i)=>o=>!!(typeof o=="string"&&bC.test(o)&&o.startsWith(a)||i&&!vC(o)&&Object.prototype.hasOwnProperty.call(o,i)),V1=(a,i,o)=>l=>{if(typeof l!="string")return l;const[u,d,f,h]=l.match(rd);return{[a]:parseFloat(u),[i]:parseFloat(d),[o]:parseFloat(f),alpha:h!==void 0?parseFloat(h):1}},SC=a=>nn(0,255,a),uc={...ya,transform:a=>Math.round(SC(a))},bi={test:ud("rgb","red"),parse:V1("red","green","blue"),transform:({red:a,green:i,blue:o,alpha:l=1})=>"rgba("+uc.transform(a)+", "+uc.transform(i)+", "+uc.transform(o)+", "+Ts(Cs.transform(l))+")"};function TC(a){let i="",o="",l="",u="";return a.length>5?(i=a.substring(1,3),o=a.substring(3,5),l=a.substring(5,7),u=a.substring(7,9)):(i=a.substring(1,2),o=a.substring(2,3),l=a.substring(3,4),u=a.substring(4,5),i+=i,o+=o,l+=l,u+=u),{red:parseInt(i,16),green:parseInt(o,16),blue:parseInt(l,16),alpha:u?parseInt(u,16)/255:1}}const Cc={test:ud("#"),parse:TC,transform:bi.transform},Ls=a=>({test:i=>typeof i=="string"&&i.endsWith(a)&&i.split(" ").length===1,parse:parseFloat,transform:i=>`${i}${a}`}),Xn=Ls("deg"),tn=Ls("%"),Q=Ls("px"),AC=Ls("vh"),xC=Ls("vw"),om={...tn,parse:a=>tn.parse(a)/100,transform:a=>tn.transform(a*100)},fa={test:ud("hsl","hue"),parse:V1("hue","saturation","lightness"),transform:({hue:a,saturation:i,lightness:o,alpha:l=1})=>"hsla("+Math.round(a)+", "+tn.transform(Ts(i))+", "+tn.transform(Ts(o))+", "+Ts(Cs.transform(l))+")"},Xe={test:a=>bi.test(a)||Cc.test(a)||fa.test(a),parse:a=>bi.test(a)?bi.parse(a):fa.test(a)?fa.parse(a):Cc.parse(a),transform:a=>typeof a=="string"?a:a.hasOwnProperty("red")?bi.transform(a):fa.transform(a),getAnimatableNone:a=>{const i=Xe.parse(a);return i.alpha=0,Xe.transform(i)}},wC=/(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))/giu;function EC(a){return isNaN(a)&&typeof a=="string"&&(a.match(rd)?.length||0)+(a.match(wC)?.length||0)>0}const B1="number",U1="color",OC="var",CC="var(",lm="${}",kC=/var\s*\(\s*--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)|#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\)|-?(?:\d+(?:\.\d+)?|\.\d+)/giu;function ma(a){const i=a.toString(),o=[],l={color:[],number:[],var:[]},u=[];let d=0;const h=i.replace(kC,m=>(Xe.test(m)?(l.color.push(d),u.push(U1),o.push(Xe.parse(m))):m.startsWith(CC)?(l.var.push(d),u.push(OC),o.push(m)):(l.number.push(d),u.push(B1),o.push(parseFloat(m))),++d,lm)).split(lm);return{values:o,split:h,indexes:l,types:u}}function RC(a){return ma(a).values}function H1({split:a,types:i}){const o=a.length;return l=>{let u="";for(let d=0;d<o;d++)if(u+=a[d],l[d]!==void 0){const f=i[d];f===B1?u+=Ts(l[d]):f===U1?u+=Xe.transform(l[d]):u+=l[d]}return u}}function MC(a){return H1(ma(a))}const DC=a=>typeof a=="number"?0:Xe.test(a)?Xe.getAnimatableNone(a):a,LC=(a,i)=>typeof a=="number"?i?.trim().endsWith("/")?a:0:DC(a);function zC(a){const i=ma(a);return H1(i)(i.values.map((l,u)=>LC(l,i.split[u])))}const $t={test:EC,parse:RC,createTransformer:MC,getAnimatableNone:zC};function cc(a,i,o){return o<0&&(o+=1),o>1&&(o-=1),o<1/6?a+(i-a)*6*o:o<1/2?i:o<2/3?a+(i-a)*(2/3-o)*6:a}function NC({hue:a,saturation:i,lightness:o,alpha:l}){a/=360,i/=100,o/=100;let u=0,d=0,f=0;if(!i)u=d=f=o;else{const h=o<.5?o*(1+i):o+i-o*i,m=2*o-h;u=cc(m,h,a+1/3),d=cc(m,h,a),f=cc(m,h,a-1/3)}return{red:Math.round(u*255),green:Math.round(d*255),blue:Math.round(f*255),alpha:l}}function bl(a,i){return o=>o>0?i:a}const Ne=(a,i,o)=>a+(i-a)*o,dc=(a,i,o)=>{const l=a*a,u=o*(i*i-l)+l;return u<0?0:Math.sqrt(u)},jC=[Cc,bi,fa],VC=a=>jC.find(i=>i.test(a));function rm(a){const i=VC(a);if(!i)return!1;let o=i.parse(a);return i===fa&&(o=NC(o)),o}const um=(a,i)=>{const o=rm(a),l=rm(i);if(!o||!l)return bl(a,i);const u={...o};return d=>(u.red=dc(o.red,l.red,d),u.green=dc(o.green,l.green,d),u.blue=dc(o.blue,l.blue,d),u.alpha=Ne(o.alpha,l.alpha,d),bi.transform(u))},kc=new Set(["none","hidden"]);function BC(a,i){return kc.has(a)?o=>o<=0?a:i:o=>o>=1?i:a}function UC(a,i){return o=>Ne(a,i,o)}function cd(a){return typeof a=="number"?UC:typeof a=="string"?ld(a)?bl:Xe.test(a)?um:KC:Array.isArray(a)?P1:typeof a=="object"?Xe.test(a)?um:HC:bl}function P1(a,i){const o=[...a],l=o.length,u=a.map((d,f)=>cd(d)(d,i[f]));return d=>{for(let f=0;f<l;f++)o[f]=u[f](d);return o}}function HC(a,i){const o={...a,...i},l={};for(const u in o)a[u]!==void 0&&i[u]!==void 0&&(l[u]=cd(a[u])(a[u],i[u]));return u=>{for(const d in l)o[d]=l[d](u);return o}}function PC(a,i){const o=[],l={color:0,var:0,number:0};for(let u=0;u<i.values.length;u++){const d=i.types[u],f=a.indexes[d][l[d]],h=a.values[f]??0;o[u]=h,l[d]++}return o}const KC=(a,i)=>{const o=$t.createTransformer(i),l=ma(a),u=ma(i);return l.indexes.var.length===u.indexes.var.length&&l.indexes.color.length===u.indexes.color.length&&l.indexes.number.length>=u.indexes.number.length?kc.has(a)&&!u.values.length||kc.has(i)&&!l.values.length?BC(a,i):Ms(P1(PC(l,u),u.values),o):bl(a,i)};function K1(a,i,o){return typeof a=="number"&&typeof i=="number"&&typeof o=="number"?Ne(a,i,o):cd(a)(a,i)}const qC=a=>{const i=({timestamp:o})=>a(o);return{start:(o=!0)=>De.update(i,o),stop:()=>Zn(i),now:()=>at.isProcessing?at.timestamp:ct.now()}},q1=(a,i,o=10)=>{let l="";const u=Math.max(Math.round(i/o),2);for(let d=0;d<u;d++)l+=Math.round(a(d/(u-1))*1e4)/1e4+", ";return`linear(${l.substring(0,l.length-2)})`},Sl=2e4;function dd(a){let i=0;const o=50;let l=a.next(i);for(;!l.done&&i<Sl;)i+=o,l=a.next(i);return i>=Sl?1/0:i}function YC(a,i=100,o){const l=o({...a,keyframes:[0,i]}),u=Math.min(dd(l),Sl);return{type:"keyframes",ease:d=>l.next(u*d).value/i,duration:Ht(u)}}const He={stiffness:100,damping:10,mass:1,velocity:0,duration:800,bounce:.3,visualDuration:.3,restSpeed:{granular:.01,default:2},restDelta:{granular:.005,default:.5},minDuration:.01,maxDuration:10,minDamping:.05,maxDamping:1};function Rc(a,i){return a*Math.sqrt(1-i*i)}const GC=12;function IC(a,i,o){let l=o;for(let u=1;u<GC;u++)l=l-a(l)/i(l);return l}const fc=.001;function $C({duration:a=He.duration,bounce:i=He.bounce,velocity:o=He.velocity,mass:l=He.mass}){let u,d,f=1-i;f=nn(He.minDamping,He.maxDamping,f),a=nn(He.minDuration,He.maxDuration,Ht(a)),f<1?(u=_=>{const g=_*f,v=g*a,b=g-o,x=Rc(_,f),w=Math.exp(-v);return fc-b/x*w},d=_=>{const v=_*f*a,b=v*o+o,x=Math.pow(f,2)*Math.pow(_,2)*a,w=Math.exp(-v),L=Rc(Math.pow(_,2),f);return(-u(_)+fc>0?-1:1)*((b-x)*w)/L}):(u=_=>{const g=Math.exp(-_*a),v=(_-o)*a+1;return-fc+g*v},d=_=>{const g=Math.exp(-_*a),v=(o-_)*(a*a);return g*v});const h=5/a,m=IC(u,d,h);if(a=kt(a),isNaN(m))return{stiffness:He.stiffness,damping:He.damping,duration:a};{const _=Math.pow(m,2)*l;return{stiffness:_,damping:f*2*Math.sqrt(l*_),duration:a}}}const XC=["duration","bounce"],FC=["stiffness","damping","mass"];function cm(a,i){return i.some(o=>a[o]!==void 0)}function QC(a){let i={velocity:He.velocity,stiffness:He.stiffness,damping:He.damping,mass:He.mass,isResolvedFromDuration:!1,...a};if(!cm(a,FC)&&cm(a,XC))if(i.velocity=0,a.visualDuration){const o=a.visualDuration,l=2*Math.PI/(o*1.2),u=l*l,d=2*nn(.05,1,1-(a.bounce||0))*Math.sqrt(u);i={...i,mass:He.mass,stiffness:u,damping:d}}else{const o=$C({...a,velocity:0});i={...i,...o,mass:He.mass},i.isResolvedFromDuration=!0}return i}function Tl(a=He.visualDuration,i=He.bounce){const o=typeof a!="object"?{visualDuration:a,keyframes:[0,1],bounce:i}:a;let{restSpeed:l,restDelta:u}=o;const d=o.keyframes[0],f=o.keyframes[o.keyframes.length-1],h={done:!1,value:d},{stiffness:m,damping:_,mass:g,duration:v,velocity:b,isResolvedFromDuration:x}=QC({...o,velocity:-Ht(o.velocity||0)}),w=b||0,L=_/(2*Math.sqrt(m*g)),V=f-d,B=Ht(Math.sqrt(m/g)),P=Math.abs(V)<5;l||(l=P?He.restSpeed.granular:He.restSpeed.default),u||(u=P?He.restDelta.granular:He.restDelta.default);let U,H,I,se,W,Z;if(L<1)I=Rc(B,L),se=(w+L*B*V)/I,U=$=>{const de=Math.exp(-L*B*$);return f-de*(se*Math.sin(I*$)+V*Math.cos(I*$))},W=L*B*se+V*I,Z=L*B*V-se*I,H=$=>Math.exp(-L*B*$)*(W*Math.sin(I*$)+Z*Math.cos(I*$));else if(L===1){U=de=>f-Math.exp(-B*de)*(V+(w+B*V)*de);const $=w+B*V;H=de=>Math.exp(-B*de)*(B*$*de-w)}else{const $=B*Math.sqrt(L*L-1);U=be=>{const je=Math.exp(-L*B*be),R=Math.min($*be,300);return f-je*((w+L*B*V)*Math.sinh(R)+$*V*Math.cosh(R))/$};const de=(w+L*B*V)/$,ye=L*B*de-V*$,ve=L*B*V-de*$;H=be=>{const je=Math.exp(-L*B*be),R=Math.min($*be,300);return je*(ye*Math.sinh(R)+ve*Math.cosh(R))}}const ee={calculatedDuration:x&&v||null,velocity:$=>kt(H($)),next:$=>{if(!x&&L<1){const ye=Math.exp(-L*B*$),ve=Math.sin(I*$),be=Math.cos(I*$),je=f-ye*(se*ve+V*be),R=kt(ye*(W*ve+Z*be));return h.done=Math.abs(R)<=l&&Math.abs(f-je)<=u,h.value=h.done?f:je,h}const de=U($);if(x)h.done=$>=v;else{const ye=kt(H($));h.done=Math.abs(ye)<=l&&Math.abs(f-de)<=u}return h.value=h.done?f:de,h},toString:()=>{const $=Math.min(dd(ee),Sl),de=q1(ye=>ee.next($*ye).value,$,30);return $+"ms "+de},toTransition:()=>{}};return ee}Tl.applyToOptions=a=>{const i=YC(a,100,Tl);return a.ease=i.ease,a.duration=kt(i.duration),a.type="keyframes",a};const ZC=5;function Y1(a,i,o){const l=Math.max(i-ZC,0);return A1(o-a(l),i-l)}function Mc({keyframes:a,velocity:i=0,power:o=.8,timeConstant:l=325,bounceDamping:u=10,bounceStiffness:d=500,modifyTarget:f,min:h,max:m,restDelta:_=.5,restSpeed:g}){const v=a[0],b={done:!1,value:v},x=Z=>h!==void 0&&Z<h||m!==void 0&&Z>m,w=Z=>h===void 0?m:m===void 0||Math.abs(h-Z)<Math.abs(m-Z)?h:m;let L=o*i;const V=v+L,B=f===void 0?V:f(V);B!==V&&(L=B-v);const P=Z=>-L*Math.exp(-Z/l),U=Z=>B+P(Z),H=Z=>{const ee=P(Z),$=U(Z);b.done=Math.abs(ee)<=_,b.value=b.done?B:$};let I,se;const W=Z=>{x(b.value)&&(I=Z,se=Tl({keyframes:[b.value,w(b.value)],velocity:Y1(U,Z,b.value),damping:u,stiffness:d,restDelta:_,restSpeed:g}))};return W(0),{calculatedDuration:null,next:Z=>{let ee=!1;return!se&&I===void 0&&(ee=!0,H(Z),W(Z)),I!==void 0&&Z>=I?se.next(Z-I):(!ee&&H(Z),b)}}}function WC(a,i,o){const l=[],u=o||Qn.mix||K1,d=a.length-1;for(let f=0;f<d;f++){let h=u(a[f],a[f+1]);if(i){const m=Array.isArray(i)?i[f]||Pt:i;h=Ms(m,h)}l.push(h)}return l}function JC(a,i,{clamp:o=!0,ease:l,mixer:u}={}){const d=a.length;if(id(d===i.length),d===1)return()=>i[0];if(d===2&&i[0]===i[1])return()=>i[1];const f=a[0]===a[1];a[0]>a[d-1]&&(a=[...a].reverse(),i=[...i].reverse());const h=WC(i,l,u),m=h.length,_=g=>{if(f&&g<a[0])return i[0];let v=0;if(m>1)for(;v<a.length-2&&!(g<a[v+1]);v++);const b=Os(a[v],a[v+1],g);return h[v](b)};return o?g=>_(nn(a[0],a[d-1],g)):_}function e2(a,i){const o=a[a.length-1];for(let l=1;l<=i;l++){const u=Os(0,i,l);a.push(Ne(o,1,u))}}function t2(a){const i=[0];return e2(i,a.length-1),i}function n2(a,i){return a.map(o=>o*i)}function i2(a,i){return a.map(()=>i||D1).splice(0,a.length-1)}function As({duration:a=300,keyframes:i,times:o,ease:l="easeInOut"}){const u=dC(l)?l.map(am):am(l),d={done:!1,value:i[0]},f=n2(o&&o.length===i.length?o:t2(i),a),h=JC(f,i,{ease:Array.isArray(u)?u:i2(i,u)});return{calculatedDuration:a,next:m=>(d.value=h(m),d.done=m>=a,d)}}const a2=a=>a!==null;function Rl(a,{repeat:i,repeatType:o="loop"},l,u=1){const d=a.filter(a2),h=u<0||i&&o!=="loop"&&i%2===1?0:d.length-1;return!h||l===void 0?d[h]:l}const s2={decay:Mc,inertia:Mc,tween:As,keyframes:As,spring:Tl};function G1(a){typeof a.type=="string"&&(a.type=s2[a.type])}class fd{constructor(){this.updateFinished()}get finished(){return this._finished}updateFinished(){this._finished=new Promise(i=>{this.resolve=i})}notifyFinished(){this.resolve()}then(i,o){return this.finished.then(i,o)}}const o2=a=>a/100;class Al extends fd{constructor(i){super(),this.state="idle",this.startTime=null,this.isStopped=!1,this.currentTime=0,this.holdTime=null,this.playbackSpeed=1,this.delayState={done:!1,value:void 0},this.stop=()=>{const{motionValue:o}=this.options;o&&o.updatedAt!==ct.now()&&this.tick(ct.now()),this.isStopped=!0,this.state!=="idle"&&(this.teardown(),this.options.onStop?.())},this.options=i,this.initAnimation(),this.play(),i.autoplay===!1&&this.pause()}initAnimation(){const{options:i}=this;G1(i);const{type:o=As,repeat:l=0,repeatDelay:u=0,repeatType:d,velocity:f=0}=i;let{keyframes:h}=i;const m=o||As;m!==As&&typeof h[0]!="number"&&(this.mixKeyframes=Ms(o2,K1(h[0],h[1])),h=[0,100]);const _=m({...i,keyframes:h});d==="mirror"&&(this.mirroredGenerator=m({...i,keyframes:[...h].reverse(),velocity:-f})),_.calculatedDuration===null&&(_.calculatedDuration=dd(_));const{calculatedDuration:g}=_;this.calculatedDuration=g,this.resolvedDuration=g+u,this.totalDuration=this.resolvedDuration*(l+1)-u,this.generator=_}updateTime(i){const o=Math.round(i-this.startTime)*this.playbackSpeed;this.holdTime!==null?this.currentTime=this.holdTime:this.currentTime=o}tick(i,o=!1){const{generator:l,totalDuration:u,mixKeyframes:d,mirroredGenerator:f,resolvedDuration:h,calculatedDuration:m}=this;if(this.startTime===null)return l.next(0);const{delay:_=0,keyframes:g,repeat:v,repeatType:b,repeatDelay:x,type:w,onUpdate:L,finalKeyframe:V}=this.options;this.speed>0?this.startTime=Math.min(this.startTime,i):this.speed<0&&(this.startTime=Math.min(i-u/this.speed,this.startTime)),o?this.currentTime=i:this.updateTime(i);const B=this.currentTime-_*(this.playbackSpeed>=0?1:-1),P=this.playbackSpeed>=0?B<0:B>u;this.currentTime=Math.max(B,0),this.state==="finished"&&this.holdTime===null&&(this.currentTime=u);let U=this.currentTime,H=l;if(v){const Z=Math.min(this.currentTime,u)/h;let ee=Math.floor(Z),$=Z%1;!$&&Z>=1&&($=1),$===1&&ee--,ee=Math.min(ee,v+1),ee%2&&(b==="reverse"?($=1-$,x&&($-=x/h)):b==="mirror"&&(H=f)),U=nn(0,1,$)*h}let I;P?(this.delayState.value=g[0],I=this.delayState):I=H.next(U),d&&!P&&(I.value=d(I.value));let{done:se}=I;!P&&m!==null&&(se=this.playbackSpeed>=0?this.currentTime>=u:this.currentTime<=0);const W=this.holdTime===null&&(this.state==="finished"||this.state==="running"&&se);return W&&w!==Mc&&(I.value=Rl(g,this.options,V,this.speed)),L&&L(I.value),W&&this.finish(),I}then(i,o){return this.finished.then(i,o)}get duration(){return Ht(this.calculatedDuration)}get iterationDuration(){const{delay:i=0}=this.options||{};return this.duration+Ht(i)}get time(){return Ht(this.currentTime)}set time(i){i=kt(i),this.currentTime=i,this.startTime===null||this.holdTime!==null||this.playbackSpeed===0?this.holdTime=i:this.driver&&(this.startTime=this.driver.now()-i/this.playbackSpeed),this.driver?this.driver.start(!1):(this.startTime=0,this.state="paused",this.holdTime=i,this.tick(i))}getGeneratorVelocity(){const i=this.currentTime;if(i<=0)return this.options.velocity||0;if(this.generator.velocity)return this.generator.velocity(i);const o=this.generator.next(i).value;return Y1(l=>this.generator.next(l).value,i,o)}get speed(){return this.playbackSpeed}set speed(i){const o=this.playbackSpeed!==i;o&&this.driver&&this.updateTime(ct.now()),this.playbackSpeed=i,o&&this.driver&&(this.time=Ht(this.currentTime))}play(){if(this.isStopped)return;const{driver:i=qC,startTime:o}=this.options;this.driver||(this.driver=i(u=>this.tick(u))),this.options.onPlay?.();const l=this.driver.now();this.state==="finished"?(this.updateFinished(),this.startTime=l):this.holdTime!==null?this.startTime=l-this.holdTime:this.startTime||(this.startTime=o??l),this.state==="finished"&&this.speed<0&&(this.startTime+=this.calculatedDuration),this.holdTime=null,this.state="running",this.driver.start()}pause(){this.state="paused",this.updateTime(ct.now()),this.holdTime=this.currentTime}complete(){this.state!=="running"&&this.play(),this.state="finished",this.holdTime=null}finish(){this.notifyFinished(),this.teardown(),this.state="finished",this.options.onComplete?.()}cancel(){this.holdTime=null,this.startTime=0,this.tick(0),this.teardown(),this.options.onCancel?.()}teardown(){this.state="idle",this.stopDriver(),this.startTime=this.holdTime=null}stopDriver(){this.driver&&(this.driver.stop(),this.driver=void 0)}sample(i){return this.startTime=0,this.tick(i,!0)}attachTimeline(i){return this.options.allowFlatten&&(this.options.type="keyframes",this.options.ease="linear",this.initAnimation()),this.driver?.stop(),i.observe(this)}}function l2(a){for(let i=1;i<a.length;i++)a[i]??(a[i]=a[i-1])}const Si=a=>a*180/Math.PI,Dc=a=>{const i=Si(Math.atan2(a[1],a[0]));return Lc(i)},r2={x:4,y:5,translateX:4,translateY:5,scaleX:0,scaleY:3,scale:a=>(Math.abs(a[0])+Math.abs(a[3]))/2,rotate:Dc,rotateZ:Dc,skewX:a=>Si(Math.atan(a[1])),skewY:a=>Si(Math.atan(a[2])),skew:a=>(Math.abs(a[1])+Math.abs(a[2]))/2},Lc=a=>(a=a%360,a<0&&(a+=360),a),dm=Dc,fm=a=>Math.sqrt(a[0]*a[0]+a[1]*a[1]),hm=a=>Math.sqrt(a[4]*a[4]+a[5]*a[5]),u2={x:12,y:13,z:14,translateX:12,translateY:13,translateZ:14,scaleX:fm,scaleY:hm,scale:a=>(fm(a)+hm(a))/2,rotateX:a=>Lc(Si(Math.atan2(a[6],a[5]))),rotateY:a=>Lc(Si(Math.atan2(-a[2],a[0]))),rotateZ:dm,rotate:dm,skewX:a=>Si(Math.atan(a[4])),skewY:a=>Si(Math.atan(a[1])),skew:a=>(Math.abs(a[1])+Math.abs(a[4]))/2};function zc(a){return a.includes("scale")?1:0}function Nc(a,i){if(!a||a==="none")return zc(i);const o=a.match(/^matrix3d\(([-\d.e\s,]+)\)$/u);let l,u;if(o)l=u2,u=o;else{const h=a.match(/^matrix\(([-\d.e\s,]+)\)$/u);l=r2,u=h}if(!u)return zc(i);const d=l[i],f=u[1].split(",").map(d2);return typeof d=="function"?d(f):f[d]}const c2=(a,i)=>{const{transform:o="none"}=getComputedStyle(a);return Nc(o,i)};function d2(a){return parseFloat(a.trim())}const va=["transformPerspective","x","y","z","translateX","translateY","translateZ","scale","scaleX","scaleY","rotate","rotateX","rotateY","rotateZ","skew","skewX","skewY"],ba=new Set(va),pm=a=>a===ya||a===Q,f2=new Set(["x","y","z"]),h2=va.filter(a=>!f2.has(a));function p2(a){const i=[];return h2.forEach(o=>{const l=a.getValue(o);l!==void 0&&(i.push([o,l.get()]),l.set(o.startsWith("scale")?1:0))}),i}const Fn={width:({x:a},{paddingLeft:i="0",paddingRight:o="0",boxSizing:l})=>{const u=a.max-a.min;return l==="border-box"?u:u-parseFloat(i)-parseFloat(o)},height:({y:a},{paddingTop:i="0",paddingBottom:o="0",boxSizing:l})=>{const u=a.max-a.min;return l==="border-box"?u:u-parseFloat(i)-parseFloat(o)},top:(a,{top:i})=>parseFloat(i),left:(a,{left:i})=>parseFloat(i),bottom:({y:a},{top:i})=>parseFloat(i)+(a.max-a.min),right:({x:a},{left:i})=>parseFloat(i)+(a.max-a.min),x:(a,{transform:i})=>Nc(i,"x"),y:(a,{transform:i})=>Nc(i,"y")};Fn.translateX=Fn.x;Fn.translateY=Fn.y;const Ai=new Set;let jc=!1,Vc=!1,Bc=!1;function I1(){if(Vc){const a=Array.from(Ai).filter(l=>l.needsMeasurement),i=new Set(a.map(l=>l.element)),o=new Map;i.forEach(l=>{const u=p2(l);u.length&&(o.set(l,u),l.render())}),a.forEach(l=>l.measureInitialState()),i.forEach(l=>{l.render();const u=o.get(l);u&&u.forEach(([d,f])=>{l.getValue(d)?.set(f)})}),a.forEach(l=>l.measureEndState()),a.forEach(l=>{l.suspendedScrollY!==void 0&&window.scrollTo(0,l.suspendedScrollY)})}Vc=!1,jc=!1,Ai.forEach(a=>a.complete(Bc)),Ai.clear()}function $1(){Ai.forEach(a=>{a.readKeyframes(),a.needsMeasurement&&(Vc=!0)})}function _2(){Bc=!0,$1(),I1(),Bc=!1}class hd{constructor(i,o,l,u,d,f=!1){this.state="pending",this.isAsync=!1,this.needsMeasurement=!1,this.unresolvedKeyframes=[...i],this.onComplete=o,this.name=l,this.motionValue=u,this.element=d,this.isAsync=f}scheduleResolve(){this.state="scheduled",this.isAsync?(Ai.add(this),jc||(jc=!0,De.read($1),De.resolveKeyframes(I1))):(this.readKeyframes(),this.complete())}readKeyframes(){const{unresolvedKeyframes:i,name:o,element:l,motionValue:u}=this;if(i[0]===null){const d=u?.get(),f=i[i.length-1];if(d!==void 0)i[0]=d;else if(l&&o){const h=l.readValue(o,f);h!=null&&(i[0]=h)}i[0]===void 0&&(i[0]=f),u&&d===void 0&&u.set(i[0])}l2(i)}setFinalKeyframe(){}measureInitialState(){}renderEndStyles(){}measureEndState(){}complete(i=!1){this.state="complete",this.onComplete(this.unresolvedKeyframes,this.finalKeyframe,i),Ai.delete(this)}cancel(){this.state==="scheduled"&&(Ai.delete(this),this.state="pending")}resume(){this.state==="pending"&&this.scheduleResolve()}}const m2=a=>a.startsWith("--");function X1(a,i,o){m2(i)?a.style.setProperty(i,o):a.style[i]=o}const g2={};function pd(a,i){const o=T1(a);return()=>g2[i]??o()}const y2=pd(()=>window.ScrollTimeline!==void 0,"scrollTimeline"),bD=pd(()=>window.ViewTimeline!==void 0,"viewTimeline"),F1=pd(()=>{try{document.createElement("div").animate({opacity:0},{easing:"linear(0, 1)"})}catch{return!1}return!0},"linearEasing"),vs=([a,i,o,l])=>`cubic-bezier(${a}, ${i}, ${o}, ${l})`,_m={linear:"linear",ease:"ease",easeIn:"ease-in",easeOut:"ease-out",easeInOut:"ease-in-out",circIn:vs([0,.65,.55,1]),circOut:vs([.55,0,1,.45]),backIn:vs([.31,.01,.66,-.59]),backOut:vs([.33,1.53,.69,.99])};function Q1(a,i){if(a)return typeof a=="function"?F1()?q1(a,i):"ease-out":L1(a)?vs(a):Array.isArray(a)?a.map(o=>Q1(o,i)||_m.easeOut):_m[a]}function v2(a,i,o,{delay:l=0,duration:u=300,repeat:d=0,repeatType:f="loop",ease:h="easeOut",times:m}={},_=void 0){const g={[i]:o};m&&(g.offset=m);const v=Q1(h,u);Array.isArray(v)&&(g.easing=v);const b={delay:l,duration:u,easing:Array.isArray(v)?"linear":v,fill:"both",iterations:d+1,direction:f==="reverse"?"alternate":"normal"};return _&&(b.pseudoElement=_),a.animate(g,b)}function Z1(a){return typeof a=="function"&&"applyToOptions"in a}function b2({type:a,...i}){return Z1(a)&&F1()?a.applyToOptions(i):(i.duration??(i.duration=300),i.ease??(i.ease="easeOut"),i)}class W1 extends fd{constructor(i){if(super(),this.finishedTime=null,this.isStopped=!1,this.manualStartTime=null,!i)return;const{element:o,name:l,keyframes:u,pseudoElement:d,allowFlatten:f=!1,finalKeyframe:h,onComplete:m}=i;this.isPseudoElement=!!d,this.allowFlatten=f,this.options=i,id(typeof i.type!="string");const _=b2(i);this.animation=v2(o,l,u,_,d),_.autoplay===!1&&this.animation.pause(),this.animation.onfinish=()=>{if(this.finishedTime=this.time,!d){const g=Rl(u,this.options,h,this.speed);this.updateMotionValue&&this.updateMotionValue(g),X1(o,l,g),this.animation.cancel()}m?.(),this.notifyFinished()}}play(){this.isStopped||(this.manualStartTime=null,this.animation.play(),this.state==="finished"&&this.updateFinished())}pause(){this.animation.pause()}complete(){this.animation.finish?.()}cancel(){try{this.animation.cancel()}catch{}}stop(){if(this.isStopped)return;this.isStopped=!0;const{state:i}=this;i==="idle"||i==="finished"||(this.updateMotionValue?this.updateMotionValue():this.commitStyles(),this.isPseudoElement||this.cancel())}commitStyles(){const i=this.options?.element;!this.isPseudoElement&&i?.isConnected&&this.animation.commitStyles?.()}get duration(){const i=this.animation.effect?.getComputedTiming?.().duration||0;return Ht(Number(i))}get iterationDuration(){const{delay:i=0}=this.options||{};return this.duration+Ht(i)}get time(){return Ht(Number(this.animation.currentTime)||0)}set time(i){const o=this.finishedTime!==null;this.manualStartTime=null,this.finishedTime=null,this.animation.currentTime=kt(i),o&&this.animation.pause()}get speed(){return this.animation.playbackRate}set speed(i){i<0&&(this.finishedTime=null),this.animation.playbackRate=i}get state(){return this.finishedTime!==null?"finished":this.animation.playState}get startTime(){return this.manualStartTime??Number(this.animation.startTime)}set startTime(i){this.manualStartTime=this.animation.startTime=i}attachTimeline({timeline:i,rangeStart:o,rangeEnd:l,observe:u}){return this.allowFlatten&&this.animation.effect?.updateTiming({easing:"linear"}),this.animation.onfinish=null,i&&y2()?(this.animation.timeline=i,o&&(this.animation.rangeStart=o),l&&(this.animation.rangeEnd=l),Pt):u(this)}}const J1={anticipate:k1,backInOut:C1,circInOut:M1};function S2(a){return a in J1}function T2(a){typeof a.ease=="string"&&S2(a.ease)&&(a.ease=J1[a.ease])}const hc=10;class A2 extends W1{constructor(i){T2(i),G1(i),super(i),i.startTime!==void 0&&i.autoplay!==!1&&(this.startTime=i.startTime),this.options=i}updateMotionValue(i){const{motionValue:o,onUpdate:l,onComplete:u,element:d,...f}=this.options;if(!o)return;if(i!==void 0){o.set(i);return}const h=new Al({...f,autoplay:!1}),m=Math.max(hc,ct.now()-this.startTime),_=nn(0,hc,m-hc),g=h.sample(m).value,{name:v}=this.options;d&&v&&X1(d,v,g),o.setWithVelocity(h.sample(Math.max(0,m-_)).value,g,_),h.stop()}}const mm=(a,i)=>i==="zIndex"?!1:!!(typeof a=="number"||Array.isArray(a)||typeof a=="string"&&($t.test(a)||a==="0")&&!a.startsWith("url("));function x2(a){const i=a[0];if(a.length===1)return!0;for(let o=0;o<a.length;o++)if(a[o]!==i)return!0}function w2(a,i,o,l){const u=a[0];if(u===null)return!1;if(i==="display"||i==="visibility")return!0;const d=a[a.length-1],f=mm(u,i),h=mm(d,i);return!f||!h?!1:x2(a)||(o==="spring"||Z1(o))&&l}function Uc(a){a.duration=0,a.type="keyframes"}const eT=new Set(["opacity","clipPath","filter","transform"]),E2=/^(?:oklch|oklab|lab|lch|color|color-mix|light-dark)\(/;function O2(a){for(let i=0;i<a.length;i++)if(typeof a[i]=="string"&&E2.test(a[i]))return!0;return!1}const C2=new Set(["color","backgroundColor","outlineColor","fill","stroke","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor"]),k2=T1(()=>Object.hasOwnProperty.call(Element.prototype,"animate"));function R2(a){const{motionValue:i,name:o,repeatDelay:l,repeatType:u,damping:d,type:f,keyframes:h}=a;if(!(i?.owner?.current instanceof HTMLElement))return!1;const{onUpdate:_,transformTemplate:g}=i.owner.getProps();return k2()&&o&&(eT.has(o)||C2.has(o)&&O2(h))&&(o!=="transform"||!g)&&!_&&!l&&u!=="mirror"&&d!==0&&f!=="inertia"}const M2=40;class D2 extends fd{constructor({autoplay:i=!0,delay:o=0,type:l="keyframes",repeat:u=0,repeatDelay:d=0,repeatType:f="loop",keyframes:h,name:m,motionValue:_,element:g,...v}){super(),this.stop=()=>{this._animation&&(this._animation.stop(),this.stopTimeline?.()),this.keyframeResolver?.cancel()},this.createdAt=ct.now();const b={autoplay:i,delay:o,type:l,repeat:u,repeatDelay:d,repeatType:f,name:m,motionValue:_,element:g,...v},x=g?.KeyframeResolver||hd;this.keyframeResolver=new x(h,(w,L,V)=>this.onKeyframesResolved(w,L,b,!V),m,_,g),this.keyframeResolver?.scheduleResolve()}onKeyframesResolved(i,o,l,u){this.keyframeResolver=void 0;const{name:d,type:f,velocity:h,delay:m,isHandoff:_,onUpdate:g}=l;this.resolvedAt=ct.now();let v=!0;w2(i,d,f,h)||(v=!1,(Qn.instantAnimations||!m)&&g?.(Rl(i,l,o)),i[0]=i[i.length-1],Uc(l),l.repeat=0);const x={startTime:u?this.resolvedAt?this.resolvedAt-this.createdAt>M2?this.resolvedAt:this.createdAt:this.createdAt:void 0,finalKeyframe:o,...l,keyframes:i},w=v&&!_&&R2(x),L=x.motionValue?.owner?.current;let V;if(w)try{V=new A2({...x,element:L})}catch{V=new Al(x)}else V=new Al(x);V.finished.then(()=>{this.notifyFinished()}).catch(Pt),this.pendingTimeline&&(this.stopTimeline=V.attachTimeline(this.pendingTimeline),this.pendingTimeline=void 0),this._animation=V}get finished(){return this._animation?this.animation.finished:this._finished}then(i,o){return this.finished.finally(i).then(()=>{})}get animation(){return this._animation||(this.keyframeResolver?.resume(),_2()),this._animation}get duration(){return this.animation.duration}get iterationDuration(){return this.animation.iterationDuration}get time(){return this.animation.time}set time(i){this.animation.time=i}get speed(){return this.animation.speed}get state(){return this.animation.state}set speed(i){this.animation.speed=i}get startTime(){return this.animation.startTime}attachTimeline(i){return this._animation?this.stopTimeline=this.animation.attachTimeline(i):this.pendingTimeline=i,()=>this.stop()}play(){this.animation.play()}pause(){this.animation.pause()}complete(){this.animation.complete()}cancel(){this._animation&&this.animation.cancel(),this.keyframeResolver?.cancel()}}function tT(a,i,o,l=0,u=1){const d=Array.from(a).sort((_,g)=>_.sortNodePosition(g)).indexOf(i),f=a.size,h=(f-1)*l;return typeof o=="function"?o(d,f):u===1?d*l:h-d*l}const L2=/^var\(--(?:([\w-]+)|([\w-]+), ?([a-zA-Z\d ()%#.,-]+))\)/u;function z2(a){const i=L2.exec(a);if(!i)return[,];const[,o,l,u]=i;return[`--${o??l}`,u]}function nT(a,i,o=1){const[l,u]=z2(a);if(!l)return;const d=window.getComputedStyle(i).getPropertyValue(l);if(d){const f=d.trim();return v1(f)?parseFloat(f):f}return ld(u)?nT(u,i,o+1):u}const N2={type:"spring",stiffness:500,damping:25,restSpeed:10},j2=a=>({type:"spring",stiffness:550,damping:a===0?2*Math.sqrt(550):30,restSpeed:10}),V2={type:"keyframes",duration:.8},B2={type:"keyframes",ease:[.25,.1,.35,1],duration:.3},U2=(a,{keyframes:i})=>i.length>2?V2:ba.has(a)?a.startsWith("scale")?j2(i[1]):N2:B2;function iT(a,i){if(a?.inherit&&i){const{inherit:o,...l}=a;return{...i,...l}}return a}function _d(a,i){const o=a?.[i]??a?.default??a;return o!==a?iT(o,a):o}const H2=new Set(["when","delay","delayChildren","staggerChildren","staggerDirection","repeat","repeatType","repeatDelay","from","elapsed"]);function P2(a){for(const i in a)if(!H2.has(i))return!0;return!1}const md=(a,i,o,l={},u,d)=>f=>{const h=_d(l,a)||{},m=h.delay||l.delay||0;let{elapsed:_=0}=l;_=_-kt(m);const g={keyframes:Array.isArray(o)?o:[null,o],ease:"easeOut",velocity:i.getVelocity(),...h,delay:-_,onUpdate:b=>{i.set(b),h.onUpdate&&h.onUpdate(b)},onComplete:()=>{f(),h.onComplete&&h.onComplete()},name:a,motionValue:i,element:d?void 0:u};P2(h)||Object.assign(g,U2(a,g)),g.duration&&(g.duration=kt(g.duration)),g.repeatDelay&&(g.repeatDelay=kt(g.repeatDelay)),g.from!==void 0&&(g.keyframes[0]=g.from);let v=!1;if((g.type===!1||g.duration===0&&!g.repeatDelay)&&(Uc(g),g.delay===0&&(v=!0)),(Qn.instantAnimations||Qn.skipAnimations||u?.shouldSkipAnimations)&&(v=!0,Uc(g),g.delay=0),g.allowFlatten=!h.type&&!h.ease,v&&!d&&i.get()!==void 0){const b=Rl(g.keyframes,h);if(b!==void 0){De.update(()=>{g.onUpdate(b),g.onComplete()});return}}return h.isSync?new Al(g):new D2(g)};function gm(a){const i=[{},{}];return a?.values.forEach((o,l)=>{i[0][l]=o.get(),i[1][l]=o.getVelocity()}),i}function gd(a,i,o,l){if(typeof i=="function"){const[u,d]=gm(l);i=i(o!==void 0?o:a.custom,u,d)}if(typeof i=="string"&&(i=a.variants&&a.variants[i]),typeof i=="function"){const[u,d]=gm(l);i=i(o!==void 0?o:a.custom,u,d)}return i}function xi(a,i,o){const l=a.getProps();return gd(l,i,o!==void 0?o:l.custom,a)}const aT=new Set(["width","height","top","left","right","bottom",...va]),ym=30,K2=a=>!isNaN(parseFloat(a));class q2{constructor(i,o={}){this.canTrackVelocity=null,this.events={},this.updateAndNotify=l=>{const u=ct.now();if(this.updatedAt!==u&&this.setPrevFrameValue(),this.prev=this.current,this.setCurrent(l),this.current!==this.prev&&(this.events.change?.notify(this.current),this.dependents))for(const d of this.dependents)d.dirty()},this.hasAnimated=!1,this.setCurrent(i),this.owner=o.owner}setCurrent(i){this.current=i,this.updatedAt=ct.now(),this.canTrackVelocity===null&&i!==void 0&&(this.canTrackVelocity=K2(this.current))}setPrevFrameValue(i=this.current){this.prevFrameValue=i,this.prevUpdatedAt=this.updatedAt}onChange(i){return this.on("change",i)}on(i,o){this.events[i]||(this.events[i]=new ad);const l=this.events[i].add(o);return i==="change"?()=>{l(),De.read(()=>{this.events.change.getSize()||this.stop()})}:l}clearListeners(){for(const i in this.events)this.events[i].clear()}attach(i,o){this.passiveEffect=i,this.stopPassiveEffect=o}set(i){this.passiveEffect?this.passiveEffect(i,this.updateAndNotify):this.updateAndNotify(i)}setWithVelocity(i,o,l){this.set(o),this.prev=void 0,this.prevFrameValue=i,this.prevUpdatedAt=this.updatedAt-l}jump(i,o=!0){this.updateAndNotify(i),this.prev=i,this.prevUpdatedAt=this.prevFrameValue=void 0,o&&this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}dirty(){this.events.change?.notify(this.current)}addDependent(i){this.dependents||(this.dependents=new Set),this.dependents.add(i)}removeDependent(i){this.dependents&&this.dependents.delete(i)}get(){return this.current}getPrevious(){return this.prev}getVelocity(){const i=ct.now();if(!this.canTrackVelocity||this.prevFrameValue===void 0||i-this.updatedAt>ym)return 0;const o=Math.min(this.updatedAt-this.prevUpdatedAt,ym);return A1(parseFloat(this.current)-parseFloat(this.prevFrameValue),o)}start(i){return this.stop(),new Promise(o=>{this.hasAnimated=!0,this.animation=i(o),this.events.animationStart&&this.events.animationStart.notify()}).then(()=>{this.events.animationComplete&&this.events.animationComplete.notify(),this.clearAnimation()})}stop(){this.animation&&(this.animation.stop(),this.events.animationCancel&&this.events.animationCancel.notify()),this.clearAnimation()}isAnimating(){return!!this.animation}clearAnimation(){delete this.animation}destroy(){this.dependents?.clear(),this.events.destroy?.notify(),this.clearListeners(),this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}}function ga(a,i){return new q2(a,i)}const Hc=a=>Array.isArray(a);function Y2(a,i,o){a.hasValue(i)?a.getValue(i).set(o):a.addValue(i,ga(o))}function G2(a){return Hc(a)?a[a.length-1]||0:a}function I2(a,i){const o=xi(a,i);let{transitionEnd:l={},transition:u={},...d}=o||{};d={...d,...l};for(const f in d){const h=G2(d[f]);Y2(a,f,h)}}const ot=a=>!!(a&&a.getVelocity);function $2(a){return!!(ot(a)&&a.add)}function Pc(a,i){const o=a.getValue("willChange");if($2(o))return o.add(i);if(!o&&Qn.WillChange){const l=new Qn.WillChange("auto");a.addValue("willChange",l),l.add(i)}}function yd(a){return a.replace(/([A-Z])/g,i=>`-${i.toLowerCase()}`)}const X2="framerAppearId",sT="data-"+yd(X2);function oT(a){return a.props[sT]}function F2({protectedKeys:a,needsAnimating:i},o){const l=a.hasOwnProperty(o)&&i[o]!==!0;return i[o]=!1,l}function lT(a,i,{delay:o=0,transitionOverride:l,type:u}={}){let{transition:d,transitionEnd:f,...h}=i;const m=a.getDefaultTransition();d=d?iT(d,m):m;const _=d?.reduceMotion;l&&(d=l);const g=[],v=u&&a.animationState&&a.animationState.getState()[u];for(const b in h){const x=a.getValue(b,a.latestValues[b]??null),w=h[b];if(w===void 0||v&&F2(v,b))continue;const L={delay:o,..._d(d||{},b)},V=x.get();if(V!==void 0&&!x.isAnimating()&&!Array.isArray(w)&&w===V&&!L.velocity){De.update(()=>x.set(w));continue}let B=!1;if(window.MotionHandoffAnimation){const H=oT(a);if(H){const I=window.MotionHandoffAnimation(H,b,De);I!==null&&(L.startTime=I,B=!0)}}Pc(a,b);const P=_??a.shouldReduceMotion;x.start(md(b,x,w,P&&aT.has(b)?{type:!1}:L,a,B));const U=x.animation;U&&g.push(U)}if(f){const b=()=>De.update(()=>{f&&I2(a,f)});g.length?Promise.all(g).then(b):b()}return g}function Kc(a,i,o={}){const l=xi(a,i,o.type==="exit"?a.presenceContext?.custom:void 0);let{transition:u=a.getDefaultTransition()||{}}=l||{};o.transitionOverride&&(u=o.transitionOverride);const d=l?()=>Promise.all(lT(a,l,o)):()=>Promise.resolve(),f=a.variantChildren&&a.variantChildren.size?(m=0)=>{const{delayChildren:_=0,staggerChildren:g,staggerDirection:v}=u;return Q2(a,i,m,_,g,v,o)}:()=>Promise.resolve(),{when:h}=u;if(h){const[m,_]=h==="beforeChildren"?[d,f]:[f,d];return m().then(()=>_())}else return Promise.all([d(),f(o.delay)])}function Q2(a,i,o=0,l=0,u=0,d=1,f){const h=[];for(const m of a.variantChildren)m.notify("AnimationStart",i),h.push(Kc(m,i,{...f,delay:o+(typeof l=="function"?0:l)+tT(a.variantChildren,m,l,u,d)}).then(()=>m.notify("AnimationComplete",i)));return Promise.all(h)}function Z2(a,i,o={}){a.notify("AnimationStart",i);let l;if(Array.isArray(i)){const u=i.map(d=>Kc(a,d,o));l=Promise.all(u)}else if(typeof i=="string")l=Kc(a,i,o);else{const u=typeof i=="function"?xi(a,i,o.custom):i;l=Promise.all(lT(a,u,o))}return l.then(()=>{a.notify("AnimationComplete",i)})}const W2={test:a=>a==="auto",parse:a=>a},rT=a=>i=>i.test(a),uT=[ya,Q,tn,Xn,xC,AC,W2],vm=a=>uT.find(rT(a));function J2(a){return typeof a=="number"?a===0:a!==null?a==="none"||a==="0"||S1(a):!0}const ek=new Set(["brightness","contrast","saturate","opacity"]);function tk(a){const[i,o]=a.slice(0,-1).split("(");if(i==="drop-shadow")return a;const[l]=o.match(rd)||[];if(!l)return a;const u=o.replace(l,"");let d=ek.has(i)?1:0;return l!==o&&(d*=100),i+"("+d+u+")"}const nk=/\b([a-z-]*)\(.*?\)/gu,qc={...$t,getAnimatableNone:a=>{const i=a.match(nk);return i?i.map(tk).join(" "):a}},Yc={...$t,getAnimatableNone:a=>{const i=$t.parse(a);return $t.createTransformer(a)(i.map(l=>typeof l=="number"?0:typeof l=="object"?{...l,alpha:1}:l))}},bm={...ya,transform:Math.round},ik={rotate:Xn,rotateX:Xn,rotateY:Xn,rotateZ:Xn,scale:nl,scaleX:nl,scaleY:nl,scaleZ:nl,skew:Xn,skewX:Xn,skewY:Xn,distance:Q,translateX:Q,translateY:Q,translateZ:Q,x:Q,y:Q,z:Q,perspective:Q,transformPerspective:Q,opacity:Cs,originX:om,originY:om,originZ:Q},vd={borderWidth:Q,borderTopWidth:Q,borderRightWidth:Q,borderBottomWidth:Q,borderLeftWidth:Q,borderRadius:Q,borderTopLeftRadius:Q,borderTopRightRadius:Q,borderBottomRightRadius:Q,borderBottomLeftRadius:Q,width:Q,maxWidth:Q,height:Q,maxHeight:Q,top:Q,right:Q,bottom:Q,left:Q,inset:Q,insetBlock:Q,insetBlockStart:Q,insetBlockEnd:Q,insetInline:Q,insetInlineStart:Q,insetInlineEnd:Q,padding:Q,paddingTop:Q,paddingRight:Q,paddingBottom:Q,paddingLeft:Q,paddingBlock:Q,paddingBlockStart:Q,paddingBlockEnd:Q,paddingInline:Q,paddingInlineStart:Q,paddingInlineEnd:Q,margin:Q,marginTop:Q,marginRight:Q,marginBottom:Q,marginLeft:Q,marginBlock:Q,marginBlockStart:Q,marginBlockEnd:Q,marginInline:Q,marginInlineStart:Q,marginInlineEnd:Q,fontSize:Q,backgroundPositionX:Q,backgroundPositionY:Q,...ik,zIndex:bm,fillOpacity:Cs,strokeOpacity:Cs,numOctaves:bm},ak={...vd,color:Xe,backgroundColor:Xe,outlineColor:Xe,fill:Xe,stroke:Xe,borderColor:Xe,borderTopColor:Xe,borderRightColor:Xe,borderBottomColor:Xe,borderLeftColor:Xe,filter:qc,WebkitFilter:qc,mask:Yc,WebkitMask:Yc},cT=a=>ak[a],sk=new Set([qc,Yc]);function dT(a,i){let o=cT(a);return sk.has(o)||(o=$t),o.getAnimatableNone?o.getAnimatableNone(i):void 0}const ok=new Set(["auto","none","0"]);function lk(a,i,o){let l=0,u;for(;l<a.length&&!u;){const d=a[l];typeof d=="string"&&!ok.has(d)&&ma(d).values.length&&(u=a[l]),l++}if(u&&o)for(const d of i)a[d]=dT(o,u)}class rk extends hd{constructor(i,o,l,u,d){super(i,o,l,u,d,!0)}readKeyframes(){const{unresolvedKeyframes:i,element:o,name:l}=this;if(!o||!o.current)return;super.readKeyframes();for(let g=0;g<i.length;g++){let v=i[g];if(typeof v=="string"&&(v=v.trim(),ld(v))){const b=nT(v,o.current);b!==void 0&&(i[g]=b),g===i.length-1&&(this.finalKeyframe=v)}}if(this.resolveNoneKeyframes(),!aT.has(l)||i.length!==2)return;const[u,d]=i,f=vm(u),h=vm(d),m=sm(u),_=sm(d);if(m!==_&&Fn[l]){this.needsMeasurement=!0;return}if(f!==h)if(pm(f)&&pm(h))for(let g=0;g<i.length;g++){const v=i[g];typeof v=="string"&&(i[g]=parseFloat(v))}else Fn[l]&&(this.needsMeasurement=!0)}resolveNoneKeyframes(){const{unresolvedKeyframes:i,name:o}=this,l=[];for(let u=0;u<i.length;u++)(i[u]===null||J2(i[u]))&&l.push(u);l.length&&lk(i,l,o)}measureInitialState(){const{element:i,unresolvedKeyframes:o,name:l}=this;if(!i||!i.current)return;l==="height"&&(this.suspendedScrollY=window.pageYOffset),this.measuredOrigin=Fn[l](i.measureViewportBox(),window.getComputedStyle(i.current)),o[0]=this.measuredOrigin;const u=o[o.length-1];u!==void 0&&i.getValue(l,u).jump(u,!1)}measureEndState(){const{element:i,name:o,unresolvedKeyframes:l}=this;if(!i||!i.current)return;const u=i.getValue(o);u&&u.jump(this.measuredOrigin,!1);const d=l.length-1,f=l[d];l[d]=Fn[o](i.measureViewportBox(),window.getComputedStyle(i.current)),f!==null&&this.finalKeyframe===void 0&&(this.finalKeyframe=f),this.removedTransforms?.length&&this.removedTransforms.forEach(([h,m])=>{i.getValue(h).set(m)}),this.resolveNoneKeyframes()}}function fT(a,i,o){if(a==null)return[];if(a instanceof EventTarget)return[a];if(typeof a=="string"){const u=document.querySelectorAll(a);return u?Array.from(u):[]}return Array.from(a).filter(l=>l!=null)}const hT=(a,i)=>i&&typeof a=="number"?i.transform(a):a;function rl(a){return b1(a)&&"offsetHeight"in a&&!("ownerSVGElement"in a)}const{schedule:bd}=z1(queueMicrotask,!1),It={x:!1,y:!1};function pT(){return It.x||It.y}function uk(a){return a==="x"||a==="y"?It[a]?null:(It[a]=!0,()=>{It[a]=!1}):It.x||It.y?null:(It.x=It.y=!0,()=>{It.x=It.y=!1})}function _T(a,i){const o=fT(a),l=new AbortController,u={passive:!0,...i,signal:l.signal};return[o,u,()=>l.abort()]}function ck(a){return!(a.pointerType==="touch"||pT())}function dk(a,i,o={}){const[l,u,d]=_T(a,o);return l.forEach(f=>{let h=!1,m=!1,_;const g=()=>{f.removeEventListener("pointerleave",w)},v=V=>{_&&(_(V),_=void 0),g()},b=V=>{h=!1,window.removeEventListener("pointerup",b),window.removeEventListener("pointercancel",b),m&&(m=!1,v(V))},x=()=>{h=!0,window.addEventListener("pointerup",b,u),window.addEventListener("pointercancel",b,u)},w=V=>{if(V.pointerType!=="touch"){if(h){m=!0;return}v(V)}},L=V=>{if(!ck(V))return;m=!1;const B=i(f,V);typeof B=="function"&&(_=B,f.addEventListener("pointerleave",w,u))};f.addEventListener("pointerenter",L,u),f.addEventListener("pointerdown",x,u)}),d}const mT=(a,i)=>i?a===i?!0:mT(a,i.parentElement):!1,Sd=a=>a.pointerType==="mouse"?typeof a.button!="number"||a.button<=0:a.isPrimary!==!1,fk=new Set(["BUTTON","INPUT","SELECT","TEXTAREA","A"]);function hk(a){return fk.has(a.tagName)||a.isContentEditable===!0}const pk=new Set(["INPUT","SELECT","TEXTAREA"]);function _k(a){return pk.has(a.tagName)||a.isContentEditable===!0}const ul=new WeakSet;function Sm(a){return i=>{i.key==="Enter"&&a(i)}}function pc(a,i){a.dispatchEvent(new PointerEvent("pointer"+i,{isPrimary:!0,bubbles:!0}))}const mk=(a,i)=>{const o=a.currentTarget;if(!o)return;const l=Sm(()=>{if(ul.has(o))return;pc(o,"down");const u=Sm(()=>{pc(o,"up")}),d=()=>pc(o,"cancel");o.addEventListener("keyup",u,i),o.addEventListener("blur",d,i)});o.addEventListener("keydown",l,i),o.addEventListener("blur",()=>o.removeEventListener("keydown",l),i)};function Tm(a){return Sd(a)&&!pT()}const Am=new WeakSet;function gk(a,i,o={}){const[l,u,d]=_T(a,o),f=h=>{const m=h.currentTarget;if(!Tm(h)||Am.has(h))return;ul.add(m),o.stopPropagation&&Am.add(h);const _=i(m,h),g=(x,w)=>{window.removeEventListener("pointerup",v),window.removeEventListener("pointercancel",b),ul.has(m)&&ul.delete(m),Tm(x)&&typeof _=="function"&&_(x,{success:w})},v=x=>{g(x,m===window||m===document||o.useGlobalTarget||mT(m,x.target))},b=x=>{g(x,!1)};window.addEventListener("pointerup",v,u),window.addEventListener("pointercancel",b,u)};return l.forEach(h=>{(o.useGlobalTarget?window:h).addEventListener("pointerdown",f,u),rl(h)&&(h.addEventListener("focus",_=>mk(_,u)),!hk(h)&&!h.hasAttribute("tabindex")&&(h.tabIndex=0))}),d}function Td(a){return b1(a)&&"ownerSVGElement"in a}const cl=new WeakMap;let dl;const gT=(a,i,o)=>(l,u)=>u&&u[0]?u[0][a+"Size"]:Td(l)&&"getBBox"in l?l.getBBox()[i]:l[o],yk=gT("inline","width","offsetWidth"),vk=gT("block","height","offsetHeight");function bk({target:a,borderBoxSize:i}){cl.get(a)?.forEach(o=>{o(a,{get width(){return yk(a,i)},get height(){return vk(a,i)}})})}function Sk(a){a.forEach(bk)}function Tk(){typeof ResizeObserver>"u"||(dl=new ResizeObserver(Sk))}function Ak(a,i){dl||Tk();const o=fT(a);return o.forEach(l=>{let u=cl.get(l);u||(u=new Set,cl.set(l,u)),u.add(i),dl?.observe(l)}),()=>{o.forEach(l=>{const u=cl.get(l);u?.delete(i),u?.size||dl?.unobserve(l)})}}const fl=new Set;let ha;function xk(){ha=()=>{const a={get width(){return window.innerWidth},get height(){return window.innerHeight}};fl.forEach(i=>i(a))},window.addEventListener("resize",ha)}function wk(a){return fl.add(a),ha||xk(),()=>{fl.delete(a),!fl.size&&typeof ha=="function"&&(window.removeEventListener("resize",ha),ha=void 0)}}function xm(a,i){return typeof a=="function"?wk(a):Ak(a,i)}function Ek(a){return Td(a)&&a.tagName==="svg"}const Ok=[...uT,Xe,$t],Ck=a=>Ok.find(rT(a)),wm=()=>({translate:0,scale:1,origin:0,originPoint:0}),pa=()=>({x:wm(),y:wm()}),Em=()=>({min:0,max:0}),Qe=()=>({x:Em(),y:Em()}),kk=new WeakMap;function Ml(a){return a!==null&&typeof a=="object"&&typeof a.start=="function"}function ks(a){return typeof a=="string"||Array.isArray(a)}const Ad=["animate","whileInView","whileFocus","whileHover","whileTap","whileDrag","exit"],xd=["initial",...Ad];function Dl(a){return Ml(a.animate)||xd.some(i=>ks(a[i]))}function yT(a){return!!(Dl(a)||a.variants)}function Rk(a,i,o){for(const l in i){const u=i[l],d=o[l];if(ot(u))a.addValue(l,u);else if(ot(d))a.addValue(l,ga(u,{owner:a}));else if(d!==u)if(a.hasValue(l)){const f=a.getValue(l);f.liveStyle===!0?f.jump(u):f.hasAnimated||f.set(u)}else{const f=a.getStaticValue(l);a.addValue(l,ga(f!==void 0?f:u,{owner:a}))}}for(const l in o)i[l]===void 0&&a.removeValue(l);return i}const Gc={current:null},vT={current:!1},Mk=typeof window<"u";function Dk(){if(vT.current=!0,!!Mk)if(window.matchMedia){const a=window.matchMedia("(prefers-reduced-motion)"),i=()=>Gc.current=a.matches;a.addEventListener("change",i),i()}else Gc.current=!1}const Om=["AnimationStart","AnimationComplete","Update","BeforeLayoutMeasure","LayoutMeasure","LayoutAnimationStart","LayoutAnimationComplete"];let xl={};function bT(a){xl=a}function Lk(){return xl}class zk{scrapeMotionValuesFromProps(i,o,l){return{}}constructor({parent:i,props:o,presenceContext:l,reducedMotionConfig:u,skipAnimations:d,blockInitialAnimation:f,visualState:h},m={}){this.current=null,this.children=new Set,this.isVariantNode=!1,this.isControllingVariants=!1,this.shouldReduceMotion=null,this.shouldSkipAnimations=!1,this.values=new Map,this.KeyframeResolver=hd,this.features={},this.valueSubscriptions=new Map,this.prevMotionValues={},this.hasBeenMounted=!1,this.events={},this.propEventSubscriptions={},this.notifyUpdate=()=>this.notify("Update",this.latestValues),this.render=()=>{this.current&&(this.triggerBuild(),this.renderInstance(this.current,this.renderState,this.props.style,this.projection))},this.renderScheduledAt=0,this.scheduleRender=()=>{const x=ct.now();this.renderScheduledAt<x&&(this.renderScheduledAt=x,De.render(this.render,!1,!0))};const{latestValues:_,renderState:g}=h;this.latestValues=_,this.baseTarget={..._},this.initialValues=o.initial?{..._}:{},this.renderState=g,this.parent=i,this.props=o,this.presenceContext=l,this.depth=i?i.depth+1:0,this.reducedMotionConfig=u,this.skipAnimationsConfig=d,this.options=m,this.blockInitialAnimation=!!f,this.isControllingVariants=Dl(o),this.isVariantNode=yT(o),this.isVariantNode&&(this.variantChildren=new Set),this.manuallyAnimateOnMount=!!(i&&i.current);const{willChange:v,...b}=this.scrapeMotionValuesFromProps(o,{},this);for(const x in b){const w=b[x];_[x]!==void 0&&ot(w)&&w.set(_[x])}}mount(i){if(this.hasBeenMounted)for(const o in this.initialValues)this.values.get(o)?.jump(this.initialValues[o]),this.latestValues[o]=this.initialValues[o];this.current=i,kk.set(i,this),this.projection&&!this.projection.instance&&this.projection.mount(i),this.parent&&this.isVariantNode&&!this.isControllingVariants&&(this.removeFromVariantTree=this.parent.addVariantChild(this)),this.values.forEach((o,l)=>this.bindToMotionValue(l,o)),this.reducedMotionConfig==="never"?this.shouldReduceMotion=!1:this.reducedMotionConfig==="always"?this.shouldReduceMotion=!0:(vT.current||Dk(),this.shouldReduceMotion=Gc.current),this.shouldSkipAnimations=this.skipAnimationsConfig??!1,this.parent?.addChild(this),this.update(this.props,this.presenceContext),this.hasBeenMounted=!0}unmount(){this.projection&&this.projection.unmount(),Zn(this.notifyUpdate),Zn(this.render),this.valueSubscriptions.forEach(i=>i()),this.valueSubscriptions.clear(),this.removeFromVariantTree&&this.removeFromVariantTree(),this.parent?.removeChild(this);for(const i in this.events)this.events[i].clear();for(const i in this.features){const o=this.features[i];o&&(o.unmount(),o.isMounted=!1)}this.current=null}addChild(i){this.children.add(i),this.enteringChildren??(this.enteringChildren=new Set),this.enteringChildren.add(i)}removeChild(i){this.children.delete(i),this.enteringChildren&&this.enteringChildren.delete(i)}bindToMotionValue(i,o){if(this.valueSubscriptions.has(i)&&this.valueSubscriptions.get(i)(),o.accelerate&&eT.has(i)&&this.current instanceof HTMLElement){const{factory:f,keyframes:h,times:m,ease:_,duration:g}=o.accelerate,v=new W1({element:this.current,name:i,keyframes:h,times:m,ease:_,duration:kt(g)}),b=f(v);this.valueSubscriptions.set(i,()=>{b(),v.cancel()});return}const l=ba.has(i);l&&this.onBindTransform&&this.onBindTransform();const u=o.on("change",f=>{this.latestValues[i]=f,this.props.onUpdate&&De.preRender(this.notifyUpdate),l&&this.projection&&(this.projection.isTransformDirty=!0),this.scheduleRender()});let d;typeof window<"u"&&window.MotionCheckAppearSync&&(d=window.MotionCheckAppearSync(this,i,o)),this.valueSubscriptions.set(i,()=>{u(),d&&d(),o.owner&&o.stop()})}sortNodePosition(i){return!this.current||!this.sortInstanceNodePosition||this.type!==i.type?0:this.sortInstanceNodePosition(this.current,i.current)}updateFeatures(){let i="animation";for(i in xl){const o=xl[i];if(!o)continue;const{isEnabled:l,Feature:u}=o;if(!this.features[i]&&u&&l(this.props)&&(this.features[i]=new u(this)),this.features[i]){const d=this.features[i];d.isMounted?d.update():(d.mount(),d.isMounted=!0)}}}triggerBuild(){this.build(this.renderState,this.latestValues,this.props)}measureViewportBox(){return this.current?this.measureInstanceViewportBox(this.current,this.props):Qe()}getStaticValue(i){return this.latestValues[i]}setStaticValue(i,o){this.latestValues[i]=o}update(i,o){(i.transformTemplate||this.props.transformTemplate)&&this.scheduleRender(),this.prevProps=this.props,this.props=i,this.prevPresenceContext=this.presenceContext,this.presenceContext=o;for(let l=0;l<Om.length;l++){const u=Om[l];this.propEventSubscriptions[u]&&(this.propEventSubscriptions[u](),delete this.propEventSubscriptions[u]);const d="on"+u,f=i[d];f&&(this.propEventSubscriptions[u]=this.on(u,f))}this.prevMotionValues=Rk(this,this.scrapeMotionValuesFromProps(i,this.prevProps||{},this),this.prevMotionValues),this.handleChildMotionValue&&this.handleChildMotionValue()}getProps(){return this.props}getVariant(i){return this.props.variants?this.props.variants[i]:void 0}getDefaultTransition(){return this.props.transition}getTransformPagePoint(){return this.props.transformPagePoint}getClosestVariantNode(){return this.isVariantNode?this:this.parent?this.parent.getClosestVariantNode():void 0}addVariantChild(i){const o=this.getClosestVariantNode();if(o)return o.variantChildren&&o.variantChildren.add(i),()=>o.variantChildren.delete(i)}addValue(i,o){const l=this.values.get(i);o!==l&&(l&&this.removeValue(i),this.bindToMotionValue(i,o),this.values.set(i,o),this.latestValues[i]=o.get())}removeValue(i){this.values.delete(i);const o=this.valueSubscriptions.get(i);o&&(o(),this.valueSubscriptions.delete(i)),delete this.latestValues[i],this.removeValueFromRenderState(i,this.renderState)}hasValue(i){return this.values.has(i)}getValue(i,o){if(this.props.values&&this.props.values[i])return this.props.values[i];let l=this.values.get(i);return l===void 0&&o!==void 0&&(l=ga(o===null?void 0:o,{owner:this}),this.addValue(i,l)),l}readValue(i,o){let l=this.latestValues[i]!==void 0||!this.current?this.latestValues[i]:this.getBaseTargetFromProps(this.props,i)??this.readValueFromInstance(this.current,i,this.options);return l!=null&&(typeof l=="string"&&(v1(l)||S1(l))?l=parseFloat(l):!Ck(l)&&$t.test(o)&&(l=dT(i,o)),this.setBaseTarget(i,ot(l)?l.get():l)),ot(l)?l.get():l}setBaseTarget(i,o){this.baseTarget[i]=o}getBaseTarget(i){const{initial:o}=this.props;let l;if(typeof o=="string"||typeof o=="object"){const d=gd(this.props,o,this.presenceContext?.custom);d&&(l=d[i])}if(o&&l!==void 0)return l;const u=this.getBaseTargetFromProps(this.props,i);return u!==void 0&&!ot(u)?u:this.initialValues[i]!==void 0&&l===void 0?void 0:this.baseTarget[i]}on(i,o){return this.events[i]||(this.events[i]=new ad),this.events[i].add(o)}notify(i,...o){this.events[i]&&this.events[i].notify(...o)}scheduleRenderMicrotask(){bd.render(this.render)}}class ST extends zk{constructor(){super(...arguments),this.KeyframeResolver=rk}sortInstanceNodePosition(i,o){return i.compareDocumentPosition(o)&2?1:-1}getBaseTargetFromProps(i,o){const l=i.style;return l?l[o]:void 0}removeValueFromRenderState(i,{vars:o,style:l}){delete o[i],delete l[i]}handleChildMotionValue(){this.childSubscription&&(this.childSubscription(),delete this.childSubscription);const{children:i}=this.props;ot(i)&&(this.childSubscription=i.on("change",o=>{this.current&&(this.current.textContent=`${o}`)}))}}class Wn{constructor(i){this.isMounted=!1,this.node=i}update(){}}function TT({top:a,left:i,right:o,bottom:l}){return{x:{min:i,max:o},y:{min:a,max:l}}}function Nk({x:a,y:i}){return{top:i.min,right:a.max,bottom:i.max,left:a.min}}function jk(a,i){if(!i)return a;const o=i({x:a.left,y:a.top}),l=i({x:a.right,y:a.bottom});return{top:o.y,left:o.x,bottom:l.y,right:l.x}}function _c(a){return a===void 0||a===1}function Ic({scale:a,scaleX:i,scaleY:o}){return!_c(a)||!_c(i)||!_c(o)}function vi(a){return Ic(a)||AT(a)||a.z||a.rotate||a.rotateX||a.rotateY||a.skewX||a.skewY}function AT(a){return Cm(a.x)||Cm(a.y)}function Cm(a){return a&&a!=="0%"}function wl(a,i,o){const l=a-o,u=i*l;return o+u}function km(a,i,o,l,u){return u!==void 0&&(a=wl(a,u,l)),wl(a,o,l)+i}function $c(a,i=0,o=1,l,u){a.min=km(a.min,i,o,l,u),a.max=km(a.max,i,o,l,u)}function xT(a,{x:i,y:o}){$c(a.x,i.translate,i.scale,i.originPoint),$c(a.y,o.translate,o.scale,o.originPoint)}const Rm=.999999999999,Mm=1.0000000000001;function Vk(a,i,o,l=!1){const u=o.length;if(!u)return;i.x=i.y=1;let d,f;for(let h=0;h<u;h++){d=o[h],f=d.projectionDelta;const{visualElement:m}=d.options;m&&m.props.style&&m.props.style.display==="contents"||(l&&d.options.layoutScroll&&d.scroll&&d!==d.root&&(Jt(a.x,-d.scroll.offset.x),Jt(a.y,-d.scroll.offset.y)),f&&(i.x*=f.x.scale,i.y*=f.y.scale,xT(a,f)),l&&vi(d.latestValues)&&hl(a,d.latestValues,d.layout?.layoutBox))}i.x<Mm&&i.x>Rm&&(i.x=1),i.y<Mm&&i.y>Rm&&(i.y=1)}function Jt(a,i){a.min+=i,a.max+=i}function Dm(a,i,o,l,u=.5){const d=Ne(a.min,a.max,u);$c(a,i,o,d,l)}function Lm(a,i){return typeof a=="string"?parseFloat(a)/100*(i.max-i.min):a}function hl(a,i,o){const l=o??a;Dm(a.x,Lm(i.x,l.x),i.scaleX,i.scale,i.originX),Dm(a.y,Lm(i.y,l.y),i.scaleY,i.scale,i.originY)}function wT(a,i){return TT(jk(a.getBoundingClientRect(),i))}function Bk(a,i,o){const l=wT(a,o),{scroll:u}=i;return u&&(Jt(l.x,u.offset.x),Jt(l.y,u.offset.y)),l}const Uk={x:"translateX",y:"translateY",z:"translateZ",transformPerspective:"perspective"},Hk=va.length;function Pk(a,i,o){let l="",u=!0;for(let d=0;d<Hk;d++){const f=va[d],h=a[f];if(h===void 0)continue;let m=!0;if(typeof h=="number")m=h===(f.startsWith("scale")?1:0);else{const _=parseFloat(h);m=f.startsWith("scale")?_===1:_===0}if(!m||o){const _=hT(h,vd[f]);if(!m){u=!1;const g=Uk[f]||f;l+=`${g}(${_}) `}o&&(i[f]=_)}}return l=l.trim(),o?l=o(i,u?"":l):u&&(l="none"),l}function wd(a,i,o){const{style:l,vars:u,transformOrigin:d}=a;let f=!1,h=!1;for(const m in i){const _=i[m];if(ba.has(m)){f=!0;continue}else if(j1(m)){u[m]=_;continue}else{const g=hT(_,vd[m]);m.startsWith("origin")?(h=!0,d[m]=g):l[m]=g}}if(i.transform||(f||o?l.transform=Pk(i,a.transform,o):l.transform&&(l.transform="none")),h){const{originX:m="50%",originY:_="50%",originZ:g=0}=d;l.transformOrigin=`${m} ${_} ${g}`}}function ET(a,{style:i,vars:o},l,u){const d=a.style;let f;for(f in i)d[f]=i[f];u?.applyProjectionStyles(d,l);for(f in o)d.setProperty(f,o[f])}function zm(a,i){return i.max===i.min?0:a/(i.max-i.min)*100}const ys={correct:(a,i)=>{if(!i.target)return a;if(typeof a=="string")if(Q.test(a))a=parseFloat(a);else return a;const o=zm(a,i.target.x),l=zm(a,i.target.y);return`${o}% ${l}%`}},Kk={correct:(a,{treeScale:i,projectionDelta:o})=>{const l=a,u=$t.parse(a);if(u.length>5)return l;const d=$t.createTransformer(a),f=typeof u[0]!="number"?1:0,h=o.x.scale*i.x,m=o.y.scale*i.y;u[0+f]/=h,u[1+f]/=m;const _=Ne(h,m,.5);return typeof u[2+f]=="number"&&(u[2+f]/=_),typeof u[3+f]=="number"&&(u[3+f]/=_),d(u)}},Xc={borderRadius:{...ys,applyTo:["borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius"]},borderTopLeftRadius:ys,borderTopRightRadius:ys,borderBottomLeftRadius:ys,borderBottomRightRadius:ys,boxShadow:Kk};function OT(a,{layout:i,layoutId:o}){return ba.has(a)||a.startsWith("origin")||(i||o!==void 0)&&(!!Xc[a]||a==="opacity")}function Ed(a,i,o){const l=a.style,u=i?.style,d={};if(!l)return d;for(const f in l)(ot(l[f])||u&&ot(u[f])||OT(f,a)||o?.getValue(f)?.liveStyle!==void 0)&&(d[f]=l[f]);return d}function qk(a){return window.getComputedStyle(a)}class Yk extends ST{constructor(){super(...arguments),this.type="html",this.renderInstance=ET}readValueFromInstance(i,o){if(ba.has(o))return this.projection?.isProjecting?zc(o):c2(i,o);{const l=qk(i),u=(j1(o)?l.getPropertyValue(o):l[o])||0;return typeof u=="string"?u.trim():u}}measureInstanceViewportBox(i,{transformPagePoint:o}){return wT(i,o)}build(i,o,l){wd(i,o,l.transformTemplate)}scrapeMotionValuesFromProps(i,o,l){return Ed(i,o,l)}}const Gk={offset:"stroke-dashoffset",array:"stroke-dasharray"},Ik={offset:"strokeDashoffset",array:"strokeDasharray"};function $k(a,i,o=1,l=0,u=!0){a.pathLength=1;const d=u?Gk:Ik;a[d.offset]=`${-l}`,a[d.array]=`${i} ${o}`}const Xk=["offsetDistance","offsetPath","offsetRotate","offsetAnchor"];function CT(a,{attrX:i,attrY:o,attrScale:l,pathLength:u,pathSpacing:d=1,pathOffset:f=0,...h},m,_,g){if(wd(a,h,_),m){a.style.viewBox&&(a.attrs.viewBox=a.style.viewBox);return}a.attrs=a.style,a.style={};const{attrs:v,style:b}=a;v.transform&&(b.transform=v.transform,delete v.transform),(b.transform||v.transformOrigin)&&(b.transformOrigin=v.transformOrigin??"50% 50%",delete v.transformOrigin),b.transform&&(b.transformBox=g?.transformBox??"fill-box",delete v.transformBox);for(const x of Xk)v[x]!==void 0&&(b[x]=v[x],delete v[x]);i!==void 0&&(v.x=i),o!==void 0&&(v.y=o),l!==void 0&&(v.scale=l),u!==void 0&&$k(v,u,d,f,!1)}const kT=new Set(["baseFrequency","diffuseConstant","kernelMatrix","kernelUnitLength","keySplines","keyTimes","limitingConeAngle","markerHeight","markerWidth","numOctaves","targetX","targetY","surfaceScale","specularConstant","specularExponent","stdDeviation","tableValues","viewBox","gradientTransform","pathLength","startOffset","textLength","lengthAdjust"]),RT=a=>typeof a=="string"&&a.toLowerCase()==="svg";function Fk(a,i,o,l){ET(a,i,void 0,l);for(const u in i.attrs)a.setAttribute(kT.has(u)?u:yd(u),i.attrs[u])}function MT(a,i,o){const l=Ed(a,i,o);for(const u in a)if(ot(a[u])||ot(i[u])){const d=va.indexOf(u)!==-1?"attr"+u.charAt(0).toUpperCase()+u.substring(1):u;l[d]=a[u]}return l}class Qk extends ST{constructor(){super(...arguments),this.type="svg",this.isSVGTag=!1,this.measureInstanceViewportBox=Qe}getBaseTargetFromProps(i,o){return i[o]}readValueFromInstance(i,o){if(ba.has(o)){const l=cT(o);return l&&l.default||0}return o=kT.has(o)?o:yd(o),i.getAttribute(o)}scrapeMotionValuesFromProps(i,o,l){return MT(i,o,l)}build(i,o,l){CT(i,o,this.isSVGTag,l.transformTemplate,l.style)}renderInstance(i,o,l,u){Fk(i,o,l,u)}mount(i){this.isSVGTag=RT(i.tagName),super.mount(i)}}const Zk=xd.length;function DT(a){if(!a)return;if(!a.isControllingVariants){const o=a.parent?DT(a.parent)||{}:{};return a.props.initial!==void 0&&(o.initial=a.props.initial),o}const i={};for(let o=0;o<Zk;o++){const l=xd[o],u=a.props[l];(ks(u)||u===!1)&&(i[l]=u)}return i}function LT(a,i){if(!Array.isArray(i))return!1;const o=i.length;if(o!==a.length)return!1;for(let l=0;l<o;l++)if(i[l]!==a[l])return!1;return!0}const Wk=[...Ad].reverse(),Jk=Ad.length;function eR(a){return i=>Promise.all(i.map(({animation:o,options:l})=>Z2(a,o,l)))}function tR(a){let i=eR(a),o=Nm(),l=!0,u=!1;const d=_=>(g,v)=>{const b=xi(a,v,_==="exit"?a.presenceContext?.custom:void 0);if(b){const{transition:x,transitionEnd:w,...L}=b;g={...g,...L,...w}}return g};function f(_){i=_(a)}function h(_){const{props:g}=a,v=DT(a.parent)||{},b=[],x=new Set;let w={},L=1/0;for(let B=0;B<Jk;B++){const P=Wk[B],U=o[P],H=g[P]!==void 0?g[P]:v[P],I=ks(H),se=P===_?U.isActive:null;se===!1&&(L=B);let W=H===v[P]&&H!==g[P]&&I;if(W&&(l||u)&&a.manuallyAnimateOnMount&&(W=!1),U.protectedKeys={...w},!U.isActive&&se===null||!H&&!U.prevProp||Ml(H)||typeof H=="boolean")continue;if(P==="exit"&&U.isActive&&se!==!0){U.prevResolvedValues&&(w={...w,...U.prevResolvedValues});continue}const Z=nR(U.prevProp,H);let ee=Z||P===_&&U.isActive&&!W&&I||B>L&&I,$=!1;const de=Array.isArray(H)?H:[H];let ye=de.reduce(d(P),{});se===!1&&(ye={});const{prevResolvedValues:ve={}}=U,be={...ve,...ye},je=G=>{ee=!0,x.has(G)&&($=!0,x.delete(G)),U.needsAnimating[G]=!0;const ae=a.getValue(G);ae&&(ae.liveStyle=!1)};for(const G in be){const ae=ye[G],ce=ve[G];if(w.hasOwnProperty(G))continue;let T=!1;Hc(ae)&&Hc(ce)?T=!LT(ae,ce):T=ae!==ce,T?ae!=null?je(G):x.add(G):ae!==void 0&&x.has(G)?je(G):U.protectedKeys[G]=!0}U.prevProp=H,U.prevResolvedValues=ye,U.isActive&&(w={...w,...ye}),(l||u)&&a.blockInitialAnimation&&(ee=!1);const R=W&&Z;ee&&(!R||$)&&b.push(...de.map(G=>{const ae={type:P};if(typeof G=="string"&&(l||u)&&!R&&a.manuallyAnimateOnMount&&a.parent){const{parent:ce}=a,T=xi(ce,G);if(ce.enteringChildren&&T){const{delayChildren:z}=T.transition||{};ae.delay=tT(ce.enteringChildren,a,z)}}return{animation:G,options:ae}}))}if(x.size){const B={};if(typeof g.initial!="boolean"){const P=xi(a,Array.isArray(g.initial)?g.initial[0]:g.initial);P&&P.transition&&(B.transition=P.transition)}x.forEach(P=>{const U=a.getBaseTarget(P),H=a.getValue(P);H&&(H.liveStyle=!0),B[P]=U??null}),b.push({animation:B})}let V=!!b.length;return l&&(g.initial===!1||g.initial===g.animate)&&!a.manuallyAnimateOnMount&&(V=!1),l=!1,u=!1,V?i(b):Promise.resolve()}function m(_,g){if(o[_].isActive===g)return Promise.resolve();a.variantChildren?.forEach(b=>b.animationState?.setActive(_,g)),o[_].isActive=g;const v=h(_);for(const b in o)o[b].protectedKeys={};return v}return{animateChanges:h,setActive:m,setAnimateFunction:f,getState:()=>o,reset:()=>{o=Nm(),u=!0}}}function nR(a,i){return typeof i=="string"?i!==a:Array.isArray(i)?!LT(i,a):!1}function yi(a=!1){return{isActive:a,protectedKeys:{},needsAnimating:{},prevResolvedValues:{}}}function Nm(){return{animate:yi(!0),whileInView:yi(),whileHover:yi(),whileTap:yi(),whileDrag:yi(),whileFocus:yi(),exit:yi()}}function Fc(a,i){a.min=i.min,a.max=i.max}function Gt(a,i){Fc(a.x,i.x),Fc(a.y,i.y)}function jm(a,i){a.translate=i.translate,a.scale=i.scale,a.originPoint=i.originPoint,a.origin=i.origin}const zT=1e-4,iR=1-zT,aR=1+zT,NT=.01,sR=0-NT,oR=0+NT;function dt(a){return a.max-a.min}function lR(a,i,o){return Math.abs(a-i)<=o}function Vm(a,i,o,l=.5){a.origin=l,a.originPoint=Ne(i.min,i.max,a.origin),a.scale=dt(o)/dt(i),a.translate=Ne(o.min,o.max,a.origin)-a.originPoint,(a.scale>=iR&&a.scale<=aR||isNaN(a.scale))&&(a.scale=1),(a.translate>=sR&&a.translate<=oR||isNaN(a.translate))&&(a.translate=0)}function xs(a,i,o,l){Vm(a.x,i.x,o.x,l?l.originX:void 0),Vm(a.y,i.y,o.y,l?l.originY:void 0)}function Bm(a,i,o,l=0){const u=l?Ne(o.min,o.max,l):o.min;a.min=u+i.min,a.max=a.min+dt(i)}function rR(a,i,o,l){Bm(a.x,i.x,o.x,l?.x),Bm(a.y,i.y,o.y,l?.y)}function Um(a,i,o,l=0){const u=l?Ne(o.min,o.max,l):o.min;a.min=i.min-u,a.max=a.min+dt(i)}function El(a,i,o,l){Um(a.x,i.x,o.x,l?.x),Um(a.y,i.y,o.y,l?.y)}function Hm(a,i,o,l,u){return a-=i,a=wl(a,1/o,l),u!==void 0&&(a=wl(a,1/u,l)),a}function uR(a,i=0,o=1,l=.5,u,d=a,f=a){if(tn.test(i)&&(i=parseFloat(i),i=Ne(f.min,f.max,i/100)-f.min),typeof i!="number")return;let h=Ne(d.min,d.max,l);a===d&&(h-=i),a.min=Hm(a.min,i,o,h,u),a.max=Hm(a.max,i,o,h,u)}function Pm(a,i,[o,l,u],d,f){uR(a,i[o],i[l],i[u],i.scale,d,f)}const cR=["x","scaleX","originX"],dR=["y","scaleY","originY"];function Km(a,i,o,l){Pm(a.x,i,cR,o?o.x:void 0,l?l.x:void 0),Pm(a.y,i,dR,o?o.y:void 0,l?l.y:void 0)}function qm(a){return a.translate===0&&a.scale===1}function jT(a){return qm(a.x)&&qm(a.y)}function Ym(a,i){return a.min===i.min&&a.max===i.max}function fR(a,i){return Ym(a.x,i.x)&&Ym(a.y,i.y)}function Gm(a,i){return Math.round(a.min)===Math.round(i.min)&&Math.round(a.max)===Math.round(i.max)}function VT(a,i){return Gm(a.x,i.x)&&Gm(a.y,i.y)}function Im(a){return dt(a.x)/dt(a.y)}function $m(a,i){return a.translate===i.translate&&a.scale===i.scale&&a.originPoint===i.originPoint}function Wt(a){return[a("x"),a("y")]}function hR(a,i,o){let l="";const u=a.x.translate/i.x,d=a.y.translate/i.y,f=o?.z||0;if((u||d||f)&&(l=`translate3d(${u}px, ${d}px, ${f}px) `),(i.x!==1||i.y!==1)&&(l+=`scale(${1/i.x}, ${1/i.y}) `),o){const{transformPerspective:_,rotate:g,rotateX:v,rotateY:b,skewX:x,skewY:w}=o;_&&(l=`perspective(${_}px) ${l}`),g&&(l+=`rotate(${g}deg) `),v&&(l+=`rotateX(${v}deg) `),b&&(l+=`rotateY(${b}deg) `),x&&(l+=`skewX(${x}deg) `),w&&(l+=`skewY(${w}deg) `)}const h=a.x.scale*i.x,m=a.y.scale*i.y;return(h!==1||m!==1)&&(l+=`scale(${h}, ${m})`),l||"none"}const BT=["borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius"],pR=BT.length,Xm=a=>typeof a=="string"?parseFloat(a):a,Fm=a=>typeof a=="number"||Q.test(a);function _R(a,i,o,l,u,d){u?(a.opacity=Ne(0,o.opacity??1,mR(l)),a.opacityExit=Ne(i.opacity??1,0,gR(l))):d&&(a.opacity=Ne(i.opacity??1,o.opacity??1,l));for(let f=0;f<pR;f++){const h=BT[f];let m=Qm(i,h),_=Qm(o,h);if(m===void 0&&_===void 0)continue;m||(m=0),_||(_=0),m===0||_===0||Fm(m)===Fm(_)?(a[h]=Math.max(Ne(Xm(m),Xm(_),l),0),(tn.test(_)||tn.test(m))&&(a[h]+="%")):a[h]=_}(i.rotate||o.rotate)&&(a.rotate=Ne(i.rotate||0,o.rotate||0,l))}function Qm(a,i){return a[i]!==void 0?a[i]:a.borderRadius}const mR=UT(0,.5,R1),gR=UT(.5,.95,Pt);function UT(a,i,o){return l=>l<a?0:l>i?1:o(Os(a,i,l))}function yR(a,i,o){const l=ot(a)?a:ga(a);return l.start(md("",l,i,o)),l.animation}function Rs(a,i,o,l={passive:!0}){return a.addEventListener(i,o,l),()=>a.removeEventListener(i,o)}const vR=(a,i)=>a.depth-i.depth;class bR{constructor(){this.children=[],this.isDirty=!1}add(i){nd(this.children,i),this.isDirty=!0}remove(i){vl(this.children,i),this.isDirty=!0}forEach(i){this.isDirty&&this.children.sort(vR),this.isDirty=!1,this.children.forEach(i)}}function SR(a,i){const o=ct.now(),l=({timestamp:u})=>{const d=u-o;d>=i&&(Zn(l),a(d-i))};return De.setup(l,!0),()=>Zn(l)}function pl(a){return ot(a)?a.get():a}class TR{constructor(){this.members=[]}add(i){nd(this.members,i);for(let o=this.members.length-1;o>=0;o--){const l=this.members[o];if(l===i||l===this.lead||l===this.prevLead)continue;const u=l.instance;(!u||u.isConnected===!1)&&!l.snapshot&&(vl(this.members,l),l.unmount())}i.scheduleRender()}remove(i){if(vl(this.members,i),i===this.prevLead&&(this.prevLead=void 0),i===this.lead){const o=this.members[this.members.length-1];o&&this.promote(o)}}relegate(i){for(let o=this.members.indexOf(i)-1;o>=0;o--){const l=this.members[o];if(l.isPresent!==!1&&l.instance?.isConnected!==!1)return this.promote(l),!0}return!1}promote(i,o){const l=this.lead;if(i!==l&&(this.prevLead=l,this.lead=i,i.show(),l)){l.updateSnapshot(),i.scheduleRender();const{layoutDependency:u}=l.options,{layoutDependency:d}=i.options;(u===void 0||u!==d)&&(i.resumeFrom=l,o&&(l.preserveOpacity=!0),l.snapshot&&(i.snapshot=l.snapshot,i.snapshot.latestValues=l.animationValues||l.latestValues),i.root?.isUpdating&&(i.isLayoutDirty=!0)),i.options.crossfade===!1&&l.hide()}}exitAnimationComplete(){this.members.forEach(i=>{i.options.onExitComplete?.(),i.resumingFrom?.options.onExitComplete?.()})}scheduleRender(){this.members.forEach(i=>i.instance&&i.scheduleRender(!1))}removeLeadSnapshot(){this.lead?.snapshot&&(this.lead.snapshot=void 0)}}const _l={hasAnimatedSinceResize:!0,hasEverUpdated:!1},mc=["","X","Y","Z"],AR=1e3;let xR=0;function gc(a,i,o,l){const{latestValues:u}=i;u[a]&&(o[a]=u[a],i.setStaticValue(a,0),l&&(l[a]=0))}function HT(a){if(a.hasCheckedOptimisedAppear=!0,a.root===a)return;const{visualElement:i}=a.options;if(!i)return;const o=oT(i);if(window.MotionHasOptimisedAnimation(o,"transform")){const{layout:u,layoutId:d}=a.options;window.MotionCancelOptimisedAnimation(o,"transform",De,!(u||d))}const{parent:l}=a;l&&!l.hasCheckedOptimisedAppear&&HT(l)}function PT({attachResizeListener:a,defaultParent:i,measureScroll:o,checkIsScrollRoot:l,resetTransform:u}){return class{constructor(f={},h=i?.()){this.id=xR++,this.animationId=0,this.animationCommitId=0,this.children=new Set,this.options={},this.isTreeAnimating=!1,this.isAnimationBlocked=!1,this.isLayoutDirty=!1,this.isProjectionDirty=!1,this.isSharedProjectionDirty=!1,this.isTransformDirty=!1,this.updateManuallyBlocked=!1,this.updateBlockedByResize=!1,this.isUpdating=!1,this.isSVG=!1,this.needsReset=!1,this.shouldResetTransform=!1,this.hasCheckedOptimisedAppear=!1,this.treeScale={x:1,y:1},this.eventHandlers=new Map,this.hasTreeAnimated=!1,this.layoutVersion=0,this.updateScheduled=!1,this.scheduleUpdate=()=>this.update(),this.projectionUpdateScheduled=!1,this.checkUpdateFailed=()=>{this.isUpdating&&(this.isUpdating=!1,this.clearAllSnapshots())},this.updateProjection=()=>{this.projectionUpdateScheduled=!1,this.nodes.forEach(OR),this.nodes.forEach(LR),this.nodes.forEach(zR),this.nodes.forEach(CR)},this.resolvedRelativeTargetAt=0,this.linkedParentVersion=0,this.hasProjected=!1,this.isVisible=!0,this.animationProgress=0,this.sharedNodes=new Map,this.latestValues=f,this.root=h?h.root||h:this,this.path=h?[...h.path,h]:[],this.parent=h,this.depth=h?h.depth+1:0;for(let m=0;m<this.path.length;m++)this.path[m].shouldResetTransform=!0;this.root===this&&(this.nodes=new bR)}addEventListener(f,h){return this.eventHandlers.has(f)||this.eventHandlers.set(f,new ad),this.eventHandlers.get(f).add(h)}notifyListeners(f,...h){const m=this.eventHandlers.get(f);m&&m.notify(...h)}hasListeners(f){return this.eventHandlers.has(f)}mount(f){if(this.instance)return;this.isSVG=Td(f)&&!Ek(f),this.instance=f;const{layoutId:h,layout:m,visualElement:_}=this.options;if(_&&!_.current&&_.mount(f),this.root.nodes.add(this),this.parent&&this.parent.children.add(this),this.root.hasTreeAnimated&&(m||h)&&(this.isLayoutDirty=!0),a){let g,v=0;const b=()=>this.root.updateBlockedByResize=!1;De.read(()=>{v=window.innerWidth}),a(f,()=>{const x=window.innerWidth;x!==v&&(v=x,this.root.updateBlockedByResize=!0,g&&g(),g=SR(b,250),_l.hasAnimatedSinceResize&&(_l.hasAnimatedSinceResize=!1,this.nodes.forEach(Jm)))})}h&&this.root.registerSharedNode(h,this),this.options.animate!==!1&&_&&(h||m)&&this.addEventListener("didUpdate",({delta:g,hasLayoutChanged:v,hasRelativeLayoutChanged:b,layout:x})=>{if(this.isTreeAnimationBlocked()){this.target=void 0,this.relativeTarget=void 0;return}const w=this.options.transition||_.getDefaultTransition()||UR,{onLayoutAnimationStart:L,onLayoutAnimationComplete:V}=_.getProps(),B=!this.targetLayout||!VT(this.targetLayout,x),P=!v&&b;if(this.options.layoutRoot||this.resumeFrom||P||v&&(B||!this.currentAnimation)){this.resumeFrom&&(this.resumingFrom=this.resumeFrom,this.resumingFrom.resumingFrom=void 0);const U={..._d(w,"layout"),onPlay:L,onComplete:V};(_.shouldReduceMotion||this.options.layoutRoot)&&(U.delay=0,U.type=!1),this.startAnimation(U),this.setAnimationOrigin(g,P)}else v||Jm(this),this.isLead()&&this.options.onExitComplete&&this.options.onExitComplete();this.targetLayout=x})}unmount(){this.options.layoutId&&this.willUpdate(),this.root.nodes.remove(this);const f=this.getStack();f&&f.remove(this),this.parent&&this.parent.children.delete(this),this.instance=void 0,this.eventHandlers.clear(),Zn(this.updateProjection)}blockUpdate(){this.updateManuallyBlocked=!0}unblockUpdate(){this.updateManuallyBlocked=!1}isUpdateBlocked(){return this.updateManuallyBlocked||this.updateBlockedByResize}isTreeAnimationBlocked(){return this.isAnimationBlocked||this.parent&&this.parent.isTreeAnimationBlocked()||!1}startUpdate(){this.isUpdateBlocked()||(this.isUpdating=!0,this.nodes&&this.nodes.forEach(NR),this.animationId++)}getTransformTemplate(){const{visualElement:f}=this.options;return f&&f.getProps().transformTemplate}willUpdate(f=!0){if(this.root.hasTreeAnimated=!0,this.root.isUpdateBlocked()){this.options.onExitComplete&&this.options.onExitComplete();return}if(window.MotionCancelOptimisedAnimation&&!this.hasCheckedOptimisedAppear&&HT(this),!this.root.isUpdating&&this.root.startUpdate(),this.isLayoutDirty)return;this.isLayoutDirty=!0;for(let g=0;g<this.path.length;g++){const v=this.path[g];v.shouldResetTransform=!0,(typeof v.latestValues.x=="string"||typeof v.latestValues.y=="string")&&(v.isLayoutDirty=!0),v.updateScroll("snapshot"),v.options.layoutRoot&&v.willUpdate(!1)}const{layoutId:h,layout:m}=this.options;if(h===void 0&&!m)return;const _=this.getTransformTemplate();this.prevTransformTemplateValue=_?_(this.latestValues,""):void 0,this.updateSnapshot(),f&&this.notifyListeners("willUpdate")}update(){if(this.updateScheduled=!1,this.isUpdateBlocked()){const m=this.updateBlockedByResize;this.unblockUpdate(),this.updateBlockedByResize=!1,this.clearAllSnapshots(),m&&this.nodes.forEach(RR),this.nodes.forEach(Zm);return}if(this.animationId<=this.animationCommitId){this.nodes.forEach(Wm);return}this.animationCommitId=this.animationId,this.isUpdating?(this.isUpdating=!1,this.nodes.forEach(MR),this.nodes.forEach(DR),this.nodes.forEach(wR),this.nodes.forEach(ER)):this.nodes.forEach(Wm),this.clearAllSnapshots();const h=ct.now();at.delta=nn(0,1e3/60,h-at.timestamp),at.timestamp=h,at.isProcessing=!0,rc.update.process(at),rc.preRender.process(at),rc.render.process(at),at.isProcessing=!1}didUpdate(){this.updateScheduled||(this.updateScheduled=!0,bd.read(this.scheduleUpdate))}clearAllSnapshots(){this.nodes.forEach(kR),this.sharedNodes.forEach(jR)}scheduleUpdateProjection(){this.projectionUpdateScheduled||(this.projectionUpdateScheduled=!0,De.preRender(this.updateProjection,!1,!0))}scheduleCheckAfterUnmount(){De.postRender(()=>{this.isLayoutDirty?this.root.didUpdate():this.root.checkUpdateFailed()})}updateSnapshot(){this.snapshot||!this.instance||(this.snapshot=this.measure(),this.snapshot&&!dt(this.snapshot.measuredBox.x)&&!dt(this.snapshot.measuredBox.y)&&(this.snapshot=void 0))}updateLayout(){if(!this.instance||(this.updateScroll(),!(this.options.alwaysMeasureLayout&&this.isLead())&&!this.isLayoutDirty))return;if(this.resumeFrom&&!this.resumeFrom.instance)for(let m=0;m<this.path.length;m++)this.path[m].updateScroll();const f=this.layout;this.layout=this.measure(!1),this.layoutVersion++,this.layoutCorrected||(this.layoutCorrected=Qe()),this.isLayoutDirty=!1,this.projectionDelta=void 0,this.notifyListeners("measure",this.layout.layoutBox);const{visualElement:h}=this.options;h&&h.notify("LayoutMeasure",this.layout.layoutBox,f?f.layoutBox:void 0)}updateScroll(f="measure"){let h=!!(this.options.layoutScroll&&this.instance);if(this.scroll&&this.scroll.animationId===this.root.animationId&&this.scroll.phase===f&&(h=!1),h&&this.instance){const m=l(this.instance);this.scroll={animationId:this.root.animationId,phase:f,isRoot:m,offset:o(this.instance),wasRoot:this.scroll?this.scroll.isRoot:m}}}resetTransform(){if(!u)return;const f=this.isLayoutDirty||this.shouldResetTransform||this.options.alwaysMeasureLayout,h=this.projectionDelta&&!jT(this.projectionDelta),m=this.getTransformTemplate(),_=m?m(this.latestValues,""):void 0,g=_!==this.prevTransformTemplateValue;f&&this.instance&&(h||vi(this.latestValues)||g)&&(u(this.instance,_),this.shouldResetTransform=!1,this.scheduleRender())}measure(f=!0){const h=this.measurePageBox();let m=this.removeElementScroll(h);return f&&(m=this.removeTransform(m)),HR(m),{animationId:this.root.animationId,measuredBox:h,layoutBox:m,latestValues:{},source:this.id}}measurePageBox(){const{visualElement:f}=this.options;if(!f)return Qe();const h=f.measureViewportBox();if(!(this.scroll?.wasRoot||this.path.some(PR))){const{scroll:_}=this.root;_&&(Jt(h.x,_.offset.x),Jt(h.y,_.offset.y))}return h}removeElementScroll(f){const h=Qe();if(Gt(h,f),this.scroll?.wasRoot)return h;for(let m=0;m<this.path.length;m++){const _=this.path[m],{scroll:g,options:v}=_;_!==this.root&&g&&v.layoutScroll&&(g.wasRoot&&Gt(h,f),Jt(h.x,g.offset.x),Jt(h.y,g.offset.y))}return h}applyTransform(f,h=!1,m){const _=m||Qe();Gt(_,f);for(let g=0;g<this.path.length;g++){const v=this.path[g];!h&&v.options.layoutScroll&&v.scroll&&v!==v.root&&(Jt(_.x,-v.scroll.offset.x),Jt(_.y,-v.scroll.offset.y)),vi(v.latestValues)&&hl(_,v.latestValues,v.layout?.layoutBox)}return vi(this.latestValues)&&hl(_,this.latestValues,this.layout?.layoutBox),_}removeTransform(f){const h=Qe();Gt(h,f);for(let m=0;m<this.path.length;m++){const _=this.path[m];if(!vi(_.latestValues))continue;let g;_.instance&&(Ic(_.latestValues)&&_.updateSnapshot(),g=Qe(),Gt(g,_.measurePageBox())),Km(h,_.latestValues,_.snapshot?.layoutBox,g)}return vi(this.latestValues)&&Km(h,this.latestValues),h}setTargetDelta(f){this.targetDelta=f,this.root.scheduleUpdateProjection(),this.isProjectionDirty=!0}setOptions(f){this.options={...this.options,...f,crossfade:f.crossfade!==void 0?f.crossfade:!0}}clearMeasurements(){this.scroll=void 0,this.layout=void 0,this.snapshot=void 0,this.prevTransformTemplateValue=void 0,this.targetDelta=void 0,this.target=void 0,this.isLayoutDirty=!1}forceRelativeParentToResolveTarget(){this.relativeParent&&this.relativeParent.resolvedRelativeTargetAt!==at.timestamp&&this.relativeParent.resolveTargetDelta(!0)}resolveTargetDelta(f=!1){const h=this.getLead();this.isProjectionDirty||(this.isProjectionDirty=h.isProjectionDirty),this.isTransformDirty||(this.isTransformDirty=h.isTransformDirty),this.isSharedProjectionDirty||(this.isSharedProjectionDirty=h.isSharedProjectionDirty);const m=!!this.resumingFrom||this!==h;if(!(f||m&&this.isSharedProjectionDirty||this.isProjectionDirty||this.parent?.isProjectionDirty||this.attemptToResolveRelativeTarget||this.root.updateBlockedByResize))return;const{layout:g,layoutId:v}=this.options;if(!this.layout||!(g||v))return;this.resolvedRelativeTargetAt=at.timestamp;const b=this.getClosestProjectingParent();b&&this.linkedParentVersion!==b.layoutVersion&&!b.options.layoutRoot&&this.removeRelativeTarget(),!this.targetDelta&&!this.relativeTarget&&(this.options.layoutAnchor!==!1&&b&&b.layout?this.createRelativeTarget(b,this.layout.layoutBox,b.layout.layoutBox):this.removeRelativeTarget()),!(!this.relativeTarget&&!this.targetDelta)&&(this.target||(this.target=Qe(),this.targetWithTransforms=Qe()),this.relativeTarget&&this.relativeTargetOrigin&&this.relativeParent&&this.relativeParent.target?(this.forceRelativeParentToResolveTarget(),rR(this.target,this.relativeTarget,this.relativeParent.target,this.options.layoutAnchor||void 0)):this.targetDelta?(this.resumingFrom?this.applyTransform(this.layout.layoutBox,!1,this.target):Gt(this.target,this.layout.layoutBox),xT(this.target,this.targetDelta)):Gt(this.target,this.layout.layoutBox),this.attemptToResolveRelativeTarget&&(this.attemptToResolveRelativeTarget=!1,this.options.layoutAnchor!==!1&&b&&!!b.resumingFrom==!!this.resumingFrom&&!b.options.layoutScroll&&b.target&&this.animationProgress!==1?this.createRelativeTarget(b,this.target,b.target):this.relativeParent=this.relativeTarget=void 0))}getClosestProjectingParent(){if(!(!this.parent||Ic(this.parent.latestValues)||AT(this.parent.latestValues)))return this.parent.isProjecting()?this.parent:this.parent.getClosestProjectingParent()}isProjecting(){return!!((this.relativeTarget||this.targetDelta||this.options.layoutRoot)&&this.layout)}createRelativeTarget(f,h,m){this.relativeParent=f,this.linkedParentVersion=f.layoutVersion,this.forceRelativeParentToResolveTarget(),this.relativeTarget=Qe(),this.relativeTargetOrigin=Qe(),El(this.relativeTargetOrigin,h,m,this.options.layoutAnchor||void 0),Gt(this.relativeTarget,this.relativeTargetOrigin)}removeRelativeTarget(){this.relativeParent=this.relativeTarget=void 0}calcProjection(){const f=this.getLead(),h=!!this.resumingFrom||this!==f;let m=!0;if((this.isProjectionDirty||this.parent?.isProjectionDirty)&&(m=!1),h&&(this.isSharedProjectionDirty||this.isTransformDirty)&&(m=!1),this.resolvedRelativeTargetAt===at.timestamp&&(m=!1),m)return;const{layout:_,layoutId:g}=this.options;if(this.isTreeAnimating=!!(this.parent&&this.parent.isTreeAnimating||this.currentAnimation||this.pendingAnimation),this.isTreeAnimating||(this.targetDelta=this.relativeTarget=void 0),!this.layout||!(_||g))return;Gt(this.layoutCorrected,this.layout.layoutBox);const v=this.treeScale.x,b=this.treeScale.y;Vk(this.layoutCorrected,this.treeScale,this.path,h),f.layout&&!f.target&&(this.treeScale.x!==1||this.treeScale.y!==1)&&(f.target=f.layout.layoutBox,f.targetWithTransforms=Qe());const{target:x}=f;if(!x){this.prevProjectionDelta&&(this.createProjectionDeltas(),this.scheduleRender());return}!this.projectionDelta||!this.prevProjectionDelta?this.createProjectionDeltas():(jm(this.prevProjectionDelta.x,this.projectionDelta.x),jm(this.prevProjectionDelta.y,this.projectionDelta.y)),xs(this.projectionDelta,this.layoutCorrected,x,this.latestValues),(this.treeScale.x!==v||this.treeScale.y!==b||!$m(this.projectionDelta.x,this.prevProjectionDelta.x)||!$m(this.projectionDelta.y,this.prevProjectionDelta.y))&&(this.hasProjected=!0,this.scheduleRender(),this.notifyListeners("projectionUpdate",x))}hide(){this.isVisible=!1}show(){this.isVisible=!0}scheduleRender(f=!0){if(this.options.visualElement?.scheduleRender(),f){const h=this.getStack();h&&h.scheduleRender()}this.resumingFrom&&!this.resumingFrom.instance&&(this.resumingFrom=void 0)}createProjectionDeltas(){this.prevProjectionDelta=pa(),this.projectionDelta=pa(),this.projectionDeltaWithTransform=pa()}setAnimationOrigin(f,h=!1){const m=this.snapshot,_=m?m.latestValues:{},g={...this.latestValues},v=pa();(!this.relativeParent||!this.relativeParent.options.layoutRoot)&&(this.relativeTarget=this.relativeTargetOrigin=void 0),this.attemptToResolveRelativeTarget=!h;const b=Qe(),x=m?m.source:void 0,w=this.layout?this.layout.source:void 0,L=x!==w,V=this.getStack(),B=!V||V.members.length<=1,P=!!(L&&!B&&this.options.crossfade===!0&&!this.path.some(BR));this.animationProgress=0;let U;this.mixTargetDelta=H=>{const I=H/1e3;eg(v.x,f.x,I),eg(v.y,f.y,I),this.setTargetDelta(v),this.relativeTarget&&this.relativeTargetOrigin&&this.layout&&this.relativeParent&&this.relativeParent.layout&&(El(b,this.layout.layoutBox,this.relativeParent.layout.layoutBox,this.options.layoutAnchor||void 0),VR(this.relativeTarget,this.relativeTargetOrigin,b,I),U&&fR(this.relativeTarget,U)&&(this.isProjectionDirty=!1),U||(U=Qe()),Gt(U,this.relativeTarget)),L&&(this.animationValues=g,_R(g,_,this.latestValues,I,P,B)),this.root.scheduleUpdateProjection(),this.scheduleRender(),this.animationProgress=I},this.mixTargetDelta(this.options.layoutRoot?1e3:0)}startAnimation(f){this.notifyListeners("animationStart"),this.currentAnimation?.stop(),this.resumingFrom?.currentAnimation?.stop(),this.pendingAnimation&&(Zn(this.pendingAnimation),this.pendingAnimation=void 0),this.pendingAnimation=De.update(()=>{_l.hasAnimatedSinceResize=!0,this.motionValue||(this.motionValue=ga(0)),this.motionValue.jump(0,!1),this.currentAnimation=yR(this.motionValue,[0,1e3],{...f,velocity:0,isSync:!0,onUpdate:h=>{this.mixTargetDelta(h),f.onUpdate&&f.onUpdate(h)},onStop:()=>{},onComplete:()=>{f.onComplete&&f.onComplete(),this.completeAnimation()}}),this.resumingFrom&&(this.resumingFrom.currentAnimation=this.currentAnimation),this.pendingAnimation=void 0})}completeAnimation(){this.resumingFrom&&(this.resumingFrom.currentAnimation=void 0,this.resumingFrom.preserveOpacity=void 0);const f=this.getStack();f&&f.exitAnimationComplete(),this.resumingFrom=this.currentAnimation=this.animationValues=void 0,this.notifyListeners("animationComplete")}finishAnimation(){this.currentAnimation&&(this.mixTargetDelta&&this.mixTargetDelta(AR),this.currentAnimation.stop()),this.completeAnimation()}applyTransformsToTarget(){const f=this.getLead();let{targetWithTransforms:h,target:m,layout:_,latestValues:g}=f;if(!(!h||!m||!_)){if(this!==f&&this.layout&&_&&KT(this.options.animationType,this.layout.layoutBox,_.layoutBox)){m=this.target||Qe();const v=dt(this.layout.layoutBox.x);m.x.min=f.target.x.min,m.x.max=m.x.min+v;const b=dt(this.layout.layoutBox.y);m.y.min=f.target.y.min,m.y.max=m.y.min+b}Gt(h,m),hl(h,g),xs(this.projectionDeltaWithTransform,this.layoutCorrected,h,g)}}registerSharedNode(f,h){this.sharedNodes.has(f)||this.sharedNodes.set(f,new TR),this.sharedNodes.get(f).add(h);const _=h.options.initialPromotionConfig;h.promote({transition:_?_.transition:void 0,preserveFollowOpacity:_&&_.shouldPreserveFollowOpacity?_.shouldPreserveFollowOpacity(h):void 0})}isLead(){const f=this.getStack();return f?f.lead===this:!0}getLead(){const{layoutId:f}=this.options;return f?this.getStack()?.lead||this:this}getPrevLead(){const{layoutId:f}=this.options;return f?this.getStack()?.prevLead:void 0}getStack(){const{layoutId:f}=this.options;if(f)return this.root.sharedNodes.get(f)}promote({needsReset:f,transition:h,preserveFollowOpacity:m}={}){const _=this.getStack();_&&_.promote(this,m),f&&(this.projectionDelta=void 0,this.needsReset=!0),h&&this.setOptions({transition:h})}relegate(){const f=this.getStack();return f?f.relegate(this):!1}resetSkewAndRotation(){const{visualElement:f}=this.options;if(!f)return;let h=!1;const{latestValues:m}=f;if((m.z||m.rotate||m.rotateX||m.rotateY||m.rotateZ||m.skewX||m.skewY)&&(h=!0),!h)return;const _={};m.z&&gc("z",f,_,this.animationValues);for(let g=0;g<mc.length;g++)gc(`rotate${mc[g]}`,f,_,this.animationValues),gc(`skew${mc[g]}`,f,_,this.animationValues);f.render();for(const g in _)f.setStaticValue(g,_[g]),this.animationValues&&(this.animationValues[g]=_[g]);f.scheduleRender()}applyProjectionStyles(f,h){if(!this.instance||this.isSVG)return;if(!this.isVisible){f.visibility="hidden";return}const m=this.getTransformTemplate();if(this.needsReset){this.needsReset=!1,f.visibility="",f.opacity="",f.pointerEvents=pl(h?.pointerEvents)||"",f.transform=m?m(this.latestValues,""):"none";return}const _=this.getLead();if(!this.projectionDelta||!this.layout||!_.target){this.options.layoutId&&(f.opacity=this.latestValues.opacity!==void 0?this.latestValues.opacity:1,f.pointerEvents=pl(h?.pointerEvents)||""),this.hasProjected&&!vi(this.latestValues)&&(f.transform=m?m({},""):"none",this.hasProjected=!1);return}f.visibility="";const g=_.animationValues||_.latestValues;this.applyTransformsToTarget();let v=hR(this.projectionDeltaWithTransform,this.treeScale,g);m&&(v=m(g,v)),f.transform=v;const{x:b,y:x}=this.projectionDelta;f.transformOrigin=`${b.origin*100}% ${x.origin*100}% 0`,_.animationValues?f.opacity=_===this?g.opacity??this.latestValues.opacity??1:this.preserveOpacity?this.latestValues.opacity:g.opacityExit:f.opacity=_===this?g.opacity!==void 0?g.opacity:"":g.opacityExit!==void 0?g.opacityExit:0;for(const w in Xc){if(g[w]===void 0)continue;const{correct:L,applyTo:V,isCSSVariable:B}=Xc[w],P=v==="none"?g[w]:L(g[w],_);if(V){const U=V.length;for(let H=0;H<U;H++)f[V[H]]=P}else B?this.options.visualElement.renderState.vars[w]=P:f[w]=P}this.options.layoutId&&(f.pointerEvents=_===this?pl(h?.pointerEvents)||"":"none")}clearSnapshot(){this.resumeFrom=this.snapshot=void 0}resetTree(){this.root.nodes.forEach(f=>f.currentAnimation?.stop()),this.root.nodes.forEach(Zm),this.root.sharedNodes.clear()}}}function wR(a){a.updateLayout()}function ER(a){const i=a.resumeFrom?.snapshot||a.snapshot;if(a.isLead()&&a.layout&&i&&a.hasListeners("didUpdate")){const{layoutBox:o,measuredBox:l}=a.layout,{animationType:u}=a.options,d=i.source!==a.layout.source;if(u==="size")Wt(g=>{const v=d?i.measuredBox[g]:i.layoutBox[g],b=dt(v);v.min=o[g].min,v.max=v.min+b});else if(u==="x"||u==="y"){const g=u==="x"?"y":"x";Fc(d?i.measuredBox[g]:i.layoutBox[g],o[g])}else KT(u,i.layoutBox,o)&&Wt(g=>{const v=d?i.measuredBox[g]:i.layoutBox[g],b=dt(o[g]);v.max=v.min+b,a.relativeTarget&&!a.currentAnimation&&(a.isProjectionDirty=!0,a.relativeTarget[g].max=a.relativeTarget[g].min+b)});const f=pa();xs(f,o,i.layoutBox);const h=pa();d?xs(h,a.applyTransform(l,!0),i.measuredBox):xs(h,o,i.layoutBox);const m=!jT(f);let _=!1;if(!a.resumeFrom){const g=a.getClosestProjectingParent();if(g&&!g.resumeFrom){const{snapshot:v,layout:b}=g;if(v&&b){const x=a.options.layoutAnchor||void 0,w=Qe();El(w,i.layoutBox,v.layoutBox,x);const L=Qe();El(L,o,b.layoutBox,x),VT(w,L)||(_=!0),g.options.layoutRoot&&(a.relativeTarget=L,a.relativeTargetOrigin=w,a.relativeParent=g)}}}a.notifyListeners("didUpdate",{layout:o,snapshot:i,delta:h,layoutDelta:f,hasLayoutChanged:m,hasRelativeLayoutChanged:_})}else if(a.isLead()){const{onExitComplete:o}=a.options;o&&o()}a.options.transition=void 0}function OR(a){a.parent&&(a.isProjecting()||(a.isProjectionDirty=a.parent.isProjectionDirty),a.isSharedProjectionDirty||(a.isSharedProjectionDirty=!!(a.isProjectionDirty||a.parent.isProjectionDirty||a.parent.isSharedProjectionDirty)),a.isTransformDirty||(a.isTransformDirty=a.parent.isTransformDirty))}function CR(a){a.isProjectionDirty=a.isSharedProjectionDirty=a.isTransformDirty=!1}function kR(a){a.clearSnapshot()}function Zm(a){a.clearMeasurements()}function RR(a){a.isLayoutDirty=!0,a.updateLayout()}function Wm(a){a.isLayoutDirty=!1}function MR(a){a.isAnimationBlocked&&a.layout&&!a.isLayoutDirty&&(a.snapshot=a.layout,a.isLayoutDirty=!0)}function DR(a){const{visualElement:i}=a.options;i&&i.getProps().onBeforeLayoutMeasure&&i.notify("BeforeLayoutMeasure"),a.resetTransform()}function Jm(a){a.finishAnimation(),a.targetDelta=a.relativeTarget=a.target=void 0,a.isProjectionDirty=!0}function LR(a){a.resolveTargetDelta()}function zR(a){a.calcProjection()}function NR(a){a.resetSkewAndRotation()}function jR(a){a.removeLeadSnapshot()}function eg(a,i,o){a.translate=Ne(i.translate,0,o),a.scale=Ne(i.scale,1,o),a.origin=i.origin,a.originPoint=i.originPoint}function tg(a,i,o,l){a.min=Ne(i.min,o.min,l),a.max=Ne(i.max,o.max,l)}function VR(a,i,o,l){tg(a.x,i.x,o.x,l),tg(a.y,i.y,o.y,l)}function BR(a){return a.animationValues&&a.animationValues.opacityExit!==void 0}const UR={duration:.45,ease:[.4,0,.1,1]},ng=a=>typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().includes(a),ig=ng("applewebkit/")&&!ng("chrome/")?Math.round:Pt;function ag(a){a.min=ig(a.min),a.max=ig(a.max)}function HR(a){ag(a.x),ag(a.y)}function KT(a,i,o){return a==="position"||a==="preserve-aspect"&&!lR(Im(i),Im(o),.2)}function PR(a){return a!==a.root&&a.scroll?.wasRoot}const KR=PT({attachResizeListener:(a,i)=>Rs(a,"resize",i),measureScroll:()=>({x:document.documentElement.scrollLeft||document.body?.scrollLeft||0,y:document.documentElement.scrollTop||document.body?.scrollTop||0}),checkIsScrollRoot:()=>!0}),yc={current:void 0},qT=PT({measureScroll:a=>({x:a.scrollLeft,y:a.scrollTop}),defaultParent:()=>{if(!yc.current){const a=new KR({});a.mount(window),a.setOptions({layoutScroll:!0}),yc.current=a}return yc.current},resetTransform:(a,i)=>{a.style.transform=i!==void 0?i:"none"},checkIsScrollRoot:a=>window.getComputedStyle(a).position==="fixed"}),Od=Y.createContext({transformPagePoint:a=>a,isStatic:!1,reducedMotion:"never"});function sg(a,i){if(typeof a=="function")return a(i);a!=null&&(a.current=i)}function qR(...a){return i=>{let o=!1;const l=a.map(u=>{const d=sg(u,i);return!o&&typeof d=="function"&&(o=!0),d});if(o)return()=>{for(let u=0;u<l.length;u++){const d=l[u];typeof d=="function"?d():sg(a[u],null)}}}}function YR(...a){return Y.useCallback(qR(...a),a)}class GR extends Y.Component{getSnapshotBeforeUpdate(i){const o=this.props.childRef.current;if(rl(o)&&i.isPresent&&!this.props.isPresent&&this.props.pop!==!1){const l=o.offsetParent,u=rl(l)&&l.offsetWidth||0,d=rl(l)&&l.offsetHeight||0,f=getComputedStyle(o),h=this.props.sizeRef.current;h.height=parseFloat(f.height),h.width=parseFloat(f.width),h.top=o.offsetTop,h.left=o.offsetLeft,h.right=u-h.width-h.left,h.bottom=d-h.height-h.top}return null}componentDidUpdate(){}render(){return this.props.children}}function IR({children:a,isPresent:i,anchorX:o,anchorY:l,root:u,pop:d}){const f=Y.useId(),h=Y.useRef(null),m=Y.useRef({width:0,height:0,top:0,left:0,right:0,bottom:0}),{nonce:_}=Y.useContext(Od),g=a.props?.ref??a?.ref,v=YR(h,g);return Y.useInsertionEffect(()=>{const{width:b,height:x,top:w,left:L,right:V,bottom:B}=m.current;if(i||d===!1||!h.current||!b||!x)return;const P=o==="left"?`left: ${L}`:`right: ${V}`,U=l==="bottom"?`bottom: ${B}`:`top: ${w}`;h.current.dataset.motionPopId=f;const H=document.createElement("style");_&&(H.nonce=_);const I=u??document.head;return I.appendChild(H),H.sheet&&H.sheet.insertRule(`
15
+ AI 會自動挑出專有名詞、術語、人名、專案名,跳過日常常用詞。`,hint:"支援詞表、清單或長段落,最長 12,000 字",analyze:"分析",analyzing:"分析中…",step2_label:"// 02 · 選要新增的詞",empty_result:"// AI 沒在這段文字裡挑出值得入庫的詞 //",count_selected:"已選 {{count}} / {{total}}",select_all:"全選",deselect_all:"全不選",duplicate_badge:"已有",back:"重新貼上",confirm:"新增 {{count}} 條",confirm_zero:"新增",confirming:"新增中…",toast_done:"已新增 {{added}} 條至字典",toast_done_with_skip:"已新增 {{added}} 條 · 跳過 {{skipped}} 條",error_empty:"請先貼上文字內容",error_invoke:"AI 取詞失敗,請重試",error_quota:"字典已達 {{limit}} 條上限"}},R0={nav:{home:"首頁",toolbox:"翻譯 / 潤色",meetings:"會議錄製",history:"歷史",dictionary:"詞典",devices:"無線麥克風"},account_fallback:"帳戶",login:"登入",credits:"Credits",time_left:"LEFT",time_minutes:"{{minutes}} MIN",settings:"設定",tray:{update_found_title:"發現新版本",update_none:"目前已是最新版本",update_check_failed:"檢查更新失敗"}},M0={placeholder:"搜尋...",clear:"清空搜尋",open:"搜尋"},D0={title:"翻譯 / 潤色",subtitle:"隨手輸入或開口說話,再潤色、翻譯、朗讀。",flow_hint:"上方給輸入 · 下方挑工具 · 即刻拿到處理後的結果",input:{section_label:"// 01 · 輸入",tabs:{text:"文字",voice:"語音",history:"歷史",file:"音訊檔案"},text_placeholder:"在這裡輸入或貼上文字…",dictate_hint:"按下快捷鍵 · 直接開口聽寫",dictate_unbound:"未綁定聽寫快捷鍵",voice_hint:"按住按鈕說話,鬆開自動轉寫。",voice_button_idle:"按住說話",voice_button_recording:"正在聆聽…",voice_recorded:"已錄製 · 0:08",history_hint:"從歷史記錄裡挑一條。",history_empty:"尚無歷史記錄。",file_hint:"拖入或選擇音訊檔案(mp3 / wav / m4a)。",file_button:"選擇音訊檔案",file_loaded:"demo.mp3 · 12s · 1.2 MB",char_count:"{{count}} 字",right_label:"文字",right_hint_voice:"來自語音轉寫",right_hint_history:"來自歷史記錄",right_hint_file:"來自音訊轉寫",right_empty:"請先在左側給一個輸入。",use_sample:"用範例文字",replaced_hint:"已替換為上一步輸出",restore_original:"還原原文",paste:"貼上",history:"歷史",clear:"清空",clipboard_detected:"偵測到剪貼簿內容",clipboard_translate:"貼上並翻譯",clipboard_fill_only:"僅貼上"},tools:{section_label:"// 02 · 工具",tabs:{polish:"潤色",translate:"翻譯",tts:"朗讀"},tutorial:{polish:{title:"潤色",headline:"按場景把口語稿改寫成成稿——郵件、微信、匯報隨你挑。"},translate:{title:"翻譯",headline:"把文字翻成另一種語言,盡量保留語氣。"},tts:{title:"朗讀",headline:"把文字合成自然的語音。"}},polish:{scenario_label:"場景",scenarios_empty:"尚未設定場景",add_scenario:"+ 新增",examples:{email:"郵件",wechat:"微信",report:"工作匯報",meeting_notes:"會議紀要",social_post:"朋友圈"}},translate:{target_label:"譯為",languages:{en:"英文",zh:"簡體中文","zh-TW":"繁體中文",ja:"日文",ko:"韓文",fr:"法文",de:"德文",es:"西班牙文"}},tts:{voice_label:"聲音",speed_label:"語速",voices:{natural_f:"自然·女聲",natural_m:"自然·男聲",calm_f:"舒緩·女聲"},audio_placeholder:"▶ ━━━━━━━━━━━━━━━━━━━━ 0:08 / 0:12"},run:"運行",run_hint:"配置好上方參數後點擊運行",ready_to_run:"就緒 · 待運行",running:"運行中…",error_title:"運行失敗",error:"失敗 · {{message}}",rerun:"重跑",copy:"複製",save_history:"保存",use_as_input:"用作輸入",download:"下載",elapsed:"{{seconds}}s",idle:"等待輸入",output_empty:"在上方填入或選擇一段輸入"},output:{idle_label:"等待執行",ready:"READY",waiting_input:"等待輸入完成…",generating:"生成中…",meta_chars:"{{count}} 字",meta_elapsed:"耗時 {{seconds}}s"},footer:{ui_only_notice:"// UI 預覽 — 業務尚未接入"}},L0={title:"會議錄製",subtitle:"長時間錄音 · 自動分人 · 時間軸回看",idle:{hint:"點擊開始記錄",recent:"最近會議",items:"項",empty:"尚無會議記錄",empty_transcript:"(無內容)",loading:"載入中…",starting:"正在連線供應商…",language_support:"// 目前僅支援 中文 / 英語 / 粵語 / 多種方言(川、陝、豫、滬、湘、鄂、皖)"},live:{recording:"錄音中",paused:"已暫停",pause:"暫停",resume:"繼續",stop:"結束",listening:"正在聆聽...",reconnecting:"網路異常,正在重連… ({{attempt}}/{{max}})",reconnect_gave_up:"重連失敗,會議已斷開"},speaker:{label:"用戶 {{letter}}",pending:"用戶 …",rename_hint:"點擊改名",rename_aria:"修改說話人名字"},review:{back:"返回",speakers:"位說話人",delete:"刪除",favorite:"加入收藏",unfavorite:"取消收藏",delete_confirm:"確認刪除這條會議記錄?",summary:"紀要",transcript:"逐字稿",generate_title:"生成標題",regenerate_title:"重新生成",edit_title:"重新命名標題",summary_topic:"會議主題",summary_speakers:"發言人",summary_abstract:"會議摘要",summary_section:"片段數",summary_loading:"正在載入紀要…",summary_generate:"生成紀要",summary_generating:"生成中…",summary_regenerate:"重新生成",summary_failed:"紀要生成失敗",summary_copy:"複製",summary_copied:"已複製",summary_copy_success:"紀要已複製到剪貼簿",summary_copy_failed:"複製失敗",transcript_copy:"複製",transcript_copied:"已複製",transcript_copy_success:"逐字稿已複製到剪貼簿",transcript_copy_failed:"複製失敗",summary_retry:"重新生成",summary_recharge:"前往儲值",summary_open_subscription:"升級訂閱",summary_open_settings:"開啟設定",summary_show_details:"展開技術細節",summary_idle_hint:"點上方「生成紀要」按鈕,按目前 AI 通道生成 Markdown 紀要(設定 → AI → 提示詞 → 會議紀要 可改預設提示)。",summary_empty_transcript:"本次會議沒有可總結的內容。",export:"匯出",export_default_name:"會議-{{date}}-{{shortId}}",export_md_filter:"Markdown",export_doc_title:"會議記錄",export_meta_created:"時間",export_meta_duration:"時長",export_meta_speakers:"說話人數",export_meta_segments:"段數",export_success:"已匯出至 {{path}}",export_failed:"匯出失敗"},translate:{toggle:"雙語翻譯",target_lang:"翻譯目標語言",hint:"AI 翻譯 · 消耗額度",translating:"翻譯中…"}},z0={title:"無線麥克風",subtitle:"連接您的 OpenSpeech 無線麥克風",bound_dashboard:{subtitle_online:"已連線 · 透過 {{channel}}",subtitle_provisioned:"已配網,正在透過 Wi-Fi 建立連線 ({{ip}})…",subtitle_offline:"離線 · 等待裝置上線",battery:"電量",signal:"訊號",channel:"通道",firmware:"韌體",unbind:"移除裝置",others_title:"其他已綁定裝置",activate:"啟用",add_new:"新增裝置",back_to_devices:"返回裝置列表"},hub:{title_scanning:"正在搜尋附近裝置",subtitle_scanning:"請確認麥克風已開機並處於配網模式(首次開機或長按重設 5 秒)。",title_idle:"搜尋附近裝置",title_found_one:"發現 {{count}} 台裝置",title_found_other:"發現 {{count}} 台裝置",title_found:"發現 {{count}} 台裝置",subtitle_found:"點擊下方裝置以連線到您的電腦。",title_no_adapter:"未開啟藍牙",subtitle_no_adapter:"請至系統設定開啟藍牙後重試。",connect:"連線",unnamed_device:"未命名裝置",signal_strong:"訊號強",signal_medium:"訊號中",signal_weak:"訊號弱"},provision_status:{connecting:"正在連線",awaiting_challenge:"等待配對碼",waiting_confirm:"請確認配對碼",pairing:"驗證中",waiting_provision:"請輸入 WiFi",provisioning:"配網中",provision_failed:"配網失敗",provisioned:"配網成功"},connect_dialog:{title:"連線到此裝置",subtitle:"首次連線需要在麥克風螢幕上確認配對碼。",cancel:"取消",done:"完成",connecting:"正在連線裝置…",confirm_hint:"請核對麥克風螢幕上的配對碼與下方一致。",accept:"確認",reject:"拒絕",pairing:"驗證中…",wifi_hint:"請輸入麥克風要連線的 WiFi 名稱與密碼。",use_current_wifi:"使用目前 WiFi",autofill_password_skipped:"密碼自動填充已略過,請手動輸入。",autofill_failed:"無法讀取目前 WiFi,請手動輸入。",ssid_label:"WiFi 名稱(SSID)",ssid_placeholder:"選擇一個 WiFi",ssid_pick_from_list:"從列表選擇",ssid_manual_entry:"手動輸入 SSID",psk_label:"WiFi 密碼",submit_wifi:"開始配網",provisioning:"配網中…",retry_provision:"再次嘗試",provision_failed_generic:"配網失敗,請檢查 WiFi 後重試。",provision_failed_stage_0:"WiFi 密碼錯誤或網路不存在,請重試。",provision_failed_stage_1:"WiFi 訊號弱或路由器拒絕連線。",provision_failed_stage_2:"暫不支援企業 WiFi。",provision_failed_stage_3:"WiFi 已連,但路由器未分配 IP。",provision_failed_stage_4:"網路無 DNS,請檢查路由器。",provision_failed_stage_5:"WiFi 已連,但無法存取網路。",provision_failed_stage_6:"找不到電腦端,請確認電腦端已開啟。",provision_failed_stage_7:"桌面端回應逾時。",provision_failed_stage_8:"憑據無效,請重新登入。",success_title:"配網成功",success_subtitle:"麥克風已連上 WiFi(IP: {{ip}}),可以開始使用了。"},paired_strip:{title:"已連線的裝置",remove:"移除",confirm_remove:"要移除「{{label}}」嗎?"},server:{title:"WS 服務",running:"執行中",stopped:"已停止",host_label:"位址",mdns_label:"mDNS",connections_label:"線上",start:"啟動",stop:"停止"},list:{title:"設備",empty_title:"等待設備連線",empty_hint:"mDNS 服務已發佈,將 ESP32 麥克風連到同一網段即可被發現。",paired_section:"已配對"},ble_scan:{start:"掃描",scanning:"掃描中…",no_adapter:"未偵測到藍牙介面卡",error_prefix:"掃描錯誤:",nearby_section:"附近",pair_cta:"配對(即將推出)",pair_unavailable_hint:"SPAKE2 配對與 WiFi 下發仍在 P1 開發中,目前僅支援掃描發現。"},card:{online:"線上",offline:"離線",unnamed:"未命名",fw_short:"韌體"},detail:{online:"線上",offline:"離線",device_id:"ID",bound_user:"綁定用戶",first_paired:"首次配對",last_seen:"最近上線",channel:"通道",rtt:"RTT",rssi:"訊號",battery:"電量",protocol:"協定",firmware:"韌體",send_text_title:"推送文字",send_text_placeholder:"輸入要下發到設備螢幕的文字…",target_app_placeholder:"目標 app(選填)",send_text:"傳送",send_text_ok:"已傳送文字",send_text_failed:"傳送失敗",ota_title:"推送 OTA",ota_pick_file:"選擇韌體",ota_no_file:"未選擇韌體",ota_version_placeholder:"目標版本 1.0.0",ota_push:"推送",ota_started:"已開始推送 OTA",ota_failed:"推送失敗",last_text_result:"最近一次辨識結果",rename_save:"儲存",rename_cancel:"取消",rename_failed:"重新命名失敗",remove:"移除設備",remove_title:"移除設備",remove_desc:"確定要移除「{{label}}」嗎?將斷開連線並清除註冊紀錄。",remove_confirm:"確認移除",remove_ok:"設備已移除",remove_failed:"移除失敗",no_selection_title:"未選取設備",no_selection_hint:"在左側選擇一台設備查看詳情並執行動作。"},battery_tier:{normal:"正常",low:"電量低",critical:"嚴重不足",no_record:"無紀錄",deep_sleep:"深度睡眠"},events:{title:"事件流",empty:"暫無事件"}},rO={transcribe:E0,home:O0,history:C0,dictionary:k0,layout:R0,search_box:M0,toolbox:D0,meetings:L0,devices:z0},uO=Object.freeze(Object.defineProperty({__proto__:null,default:rO,devices:z0,dictionary:k0,history:C0,home:O0,layout:R0,meetings:L0,search_box:M0,toolbox:D0,transcribe:E0},Symbol.toStringTag,{value:"Module"})),N0={title:"優化",empty:"暫無可優化的辨識結果",cancel:"取消",save:"優化並複製",saving:"優化中…",learn_hint:"AI 會從這次優化中學習,下次辨識更懂你",close_aria:"關閉"},j0={saved_title:"已儲存優化",saved_description:"新文字已複製到剪貼簿,回到原輸入框貼上即可",save_failed_title:"儲存失敗"},cO={edit_last_record:N0,toast:j0},dO=Object.freeze(Object.defineProperty({__proto__:null,default:cO,edit_last_record:N0,toast:j0},Symbol.toStringTag,{value:"Module"})),V0={section_index:"[04] 系統",title:"設定",subtitle:"設定聽寫、模型端點與應用程式行為。變更即時生效,無需儲存。",dialog_title:"設定",dialog_sr:"OpenSpeech 設定"},B0={title:"已回退至 OpenLoaf SaaS",description:"{{which}}的自訂供應商未通過測試,已切換為雲端服務",dictation:"聽寫",ai:"AI 改寫",both:"聽寫與 AI 改寫",confirm_title:"自訂供應商未通過測試",confirm_description:"{{which}}所選的自訂供應商還沒有通過測試,無法在此模式下套用。繼續關閉設定會自動回退至 OpenLoaf SaaS 雲端服務。",confirm_back_to_test:"返回測試",confirm_proceed:"回退至 SaaS 並關閉"},U0={general:"一般",hotkeys:"快速鍵",dictation:"聽寫",model:"模型",ai:"AI",prompts:"系統提示詞",about:"關於",dev_hints:"提示偵錯"},H0={reset_all:"重置全部",reset_all_confirm:"確定將所有快速鍵恢復為預設值?",reset_all_done:"已恢復預設快速鍵"},P0={shortcuts:"鍵盤快速鍵",language:"語言",audio:"音訊",asr_segment:"聽寫模式",text_injection:"文字注入",behavior:"行為",model_rest:"大型模型(REST)",build:"建置",output:"輸出方式",hints:"教學與提示"},K0={interface_lang:"介面語言",translate_target_lang:"翻譯目標語言",translate_target_lang_hint:"翻譯聽寫快速鍵命中後,轉寫文字會被翻譯成此語言再注入到目前焦點。",translate_output_mode:"翻譯輸出形態",translate_output_mode_hint:"「雙語」原文與譯文都輸出(先後順序見下一項);「僅目標語言」只輸出譯文,速度更快。",translate_bilingual_order:"雙語排列順序",translate_bilingual_order_hint:"雙語輸出時原文與譯文誰在上面。譯文在上時先串流輸出譯文,原文會在譯文寫完後整段補在下面;原文在上時先串流輸出原文。",input_device:"輸入裝置",input_level:"輸入音量",input_level_hint_listening:"即時音量 · 正在監聽:{{name}}",input_level_hint:"即時麥克風音量",open_sound_settings:"系統設定",open_sound_settings_failed:"開啟系統聲音設定失敗",cue_sound:"開始/結束提示音",restore_clipboard:"貼上後還原剪貼簿",restore_clipboard_hint:"建議保持開啟",launch_startup:"開機自動啟動",close_to_tray:"關閉時最小化至系統列",close_to_tray_hint:"開啟後關閉主視窗會直接隱藏至系統列;關閉時每次都會跳出確認對話框",update_policy:"自動更新",update_policy_hint:"選擇背景發現新版本時的處理方式",update_policy_options:{prompt:"提示我安裝",auto:"閒置時自動安裝",disabled:"關閉"},loading:"// loading settings…",dictation_output_lang:"聽寫輸出語言",dictation_output_lang_hint:"聽寫轉寫出來的文字使用哪種語言。「自動」時由 ASR 自行判定,並以介面語言作為預設對照。",translate_conflict_warning:"目標語言與聽寫輸出語言相同,翻譯將無意義。",show_hints:"顯示互動提示",show_hints_hint:"在懸浮列與結果區域顯示快速鍵教學小氣泡;學會後自動隱藏。關掉後所有教學提示一律不彈。",reset_hints:"重置互動提示",reset_hints_action:"全部重置",reset_hints_done:"已重置教學提示",hints_pending_count:"未學會 {{pending}} / {{total}}",hints_all_learned:"已全部學會"},q0={system_default:"跟隨系統",system_default_with_current:"跟隨系統(目前:{{name}})",is_default_suffix:"{{name}} · 系統預設",disconnected_with_fallback:"{{name}} · 已中斷,暫用系統預設({{fallback}})",disconnected:"{{name}} · 已中斷"},Y0={realtime_label:"即時轉換",realtime_hint:"伺服器端依停頓自動切句,錄音過程中即時回填;適合長時間會議字幕、直播轉寫等無人值守情境。",utterance_label:"整句聽寫",utterance_hint:"整段錄音視為一次完整對話,放開按鍵後再回傳轉寫結果;模型擁有完整上下文,更準確且不易被停頓誤切。",ai_refine_toggle:{label:"啟用 AI 優化",hint:"在「整句聽寫」基礎上呼叫大型模型整理:去口頭禪、消重、識別自我修正;同語言不翻譯。",disabled_in_realtime:"即時轉換模式下不可用"}},G0={streaming_inject:{label:"文字逐字輸出",hint:"預設開啟:模型邊產出,文字邊鍵入到游標位置。關閉後改為整段一次貼上,可繞過微信輸入法 / 部分全拼輸入法的逐字攔截(首字被吞、雙逗號等異常)。"},clipboard_copy:{label:"自動複製到剪貼簿",hint:"預設關閉:注入完成後會還原你原本的剪貼簿內容,不污染複製佇列。開啟後整段文字保留在剪貼簿,方便再次手動貼上。"}},I0={byo_unavailable_tag:"// BYO-MODEL · 尚未實作",byo_unavailable_body:"自訂 STT REST 端點(端點 URL/API Key/模型名稱/測試連線)尚未接入,目前所有聽寫均走 OpenLoaf SaaS。此入口開發中,下一版本將啟用。",endpoint:"端點 URL",api_key:"API Key",api_key_hint:"儲存於系統金鑰圈;失去焦點時自動儲存",model_name:"模型名稱",timeout_seconds:"請求逾時(秒)",audio_format:"音訊格式",test_connection_disabled:"測試連線(尚未實作)",show_key:"顯示 API Key",hide_key:"隱藏 API Key",key_saved_toast:"API Key 已儲存至系統金鑰圈",key_save_failed_toast:"API Key 儲存失敗: {{error}}"},$0={section_mode:"AI 通道",mode_saas_label:"雲端(推薦)",mode_saas_hint:"使用 OpenLoaf 已登入帳號的快速 chat 模型,依積分計費。",mode_custom_label:"自訂供應商",mode_custom_hint:"OpenAI 相容協定;自帶 API Key,可加入多個供應商但同時間僅能啟用一個。",section_providers:"自訂供應商",providers_empty:"尚未新增自訂供應商",provider_name:"名稱",provider_base_url:"Base URL",provider_model:"模型",provider_api_key:"API Key",provider_api_key_hint:"儲存於系統金鑰圈;失去焦點時自動儲存",provider_active:"目前啟用",provider_set_active:"設為啟用",provider_remove:"刪除",provider_test:"測試",provider_test_running:"測試中…",provider_test_pass:"測試通過",provider_test_fail:"測試失敗:{{message}}",provider_test_missing_fields:"Base URL 或模型未填寫",provider_test_empty_reply:"模型未回傳內容",provider_add:"新增供應商",provider_default_name:"新供應商",provider_default_base_url:"https://api.openai.com/v1",provider_default_model:"gpt-4o-mini",section_prompts:"系統提示詞",prompts_hint:"預設跟隨目前介面語言;一旦修改即視為自訂,對所有語言生效。",prompts_intro:"AI 在不同場景下使用的提示詞,改一改就能調整輸出風格。改動會自動儲存。",prompt_tab_refine:"聽寫優化",prompt_tab_translate:"翻譯",prompt_tab_polish:"潤飾",prompt_tab_meeting:"會議紀要",prompt_edit:"修改",prompt_status_custom:"已自訂",prompt_status_default:"預設",prompt_desc_refine:"鬆開聽寫按鍵後,AI 會把語音轉寫整理為更通順的書面文字(錯字、口頭禪、斷句),再注入目前的應用程式。",prompt_desc_translate:"透過「翻譯」快捷鍵觸發,把聽寫文字翻譯為上方設定的目標語言。",prompt_desc_polish:"AI 工具箱「潤飾」頁面使用,可搭配下方場景列表(電子郵件、微信等)依需切換語氣。",prompt_desc_meeting:"「會議」頁面將整段會議錄音轉寫後,依本提示詞整理為結構化紀要。",prompt_dialog_title_refine:"聽寫優化提示詞",prompt_dialog_title_translate:"翻譯提示詞",prompt_dialog_title_meeting:"會議紀要提示詞",prompt_dialog_textarea_label:"系統提示詞",polish_dialog_title:"潤飾設定",polish_dialog_subtitle:"調整潤飾用的系統提示詞,並維護 AI 工具箱中出現的場景列表。",polish_dialog_tab_prompt:"提示詞",polish_dialog_tab_scenarios:"場景",polish_dialog_prompt_label:"潤飾提示詞",polish_scenarios_title:"潤飾場景",polish_scenarios_hint:"AI 工具箱「潤飾」頁底部 chip 列表的來源;執行時會把所選場景的指示拼接到潤飾系統提示詞之後。",polish_scenarios_empty:"尚未新增潤飾場景",polish_scenario_default_name:"新場景",polish_scenario_remove:"刪除",polish_scenario_add:"新增場景",polish_scenario_instruction_placeholder:"例如:目標場景是商務郵件,語氣正式,依問候 / 正文 / 結尾分段。",refine_dialog_subtitle:"調整 AI 整理聽寫文字的方式。可以改一改、刪一刪,或整批恢復預設。",refine_dialog_tab_rules:"規則",refine_dialog_tab_examples:"範例",refine_dialog_tab_overrides:"依應用",refine_dialog_advanced_badge:"進階",refine_status_count_one:"{{count}} 條規則",refine_status_count_other:"{{count}} 條規則",refine_status_default:"預設",refine_status_modified:"已修改",refine_rules_empty_after_clear:"規則已全部刪除——執行時會跳過規則段。點下方新增規則,或點上方「恢復預設」回到預設 6 條。",refine_rules_empty_my_rules:"尚未新增你自己的規則。AI 正在使用一套通用的預設規則;如果想微調,可以下方新建一條,或從某條預設規則開始改。",refine_rules_count:"{{current}} / {{max}}",refine_rule_add:"新建規則",refine_rule_import_default:"從預設規則開始",refine_rule_import_picker_title:"選一條預設規則加入",refine_rule_clear_all:"清空全部",refine_rule_remove:"刪除",refine_rule_index:"規則 {{index}}",refine_rule_body_placeholder:"這條規則告訴 AI 怎麼處理你的聽寫文字,多段以空行分隔。",prompt_panel_save_hint:"改動會自動儲存。",advanced_title:"進階",app_override_rules_hint:"這組規則僅對目前應用程式生效,會覆寫上面的全域規則。",refine_panel_intro:"教 AI:當你說類似這樣的話,應該整理成這樣。範例越具體,整理結果就越貼近你想要的風格。",refine_examples_my_title:"我的案例",refine_examples_my_hint:"以「口語 → 希望輸出」成對餵給模型;越靠前權重越高。",refine_examples_count:"{{current}} / {{max}}",refine_example_add:"新增案例",refine_example_remove:"刪除",refine_example_input_label:"口語",refine_example_output_label:"希望輸出",refine_example_focus_label:"重點 / 關鍵點(選填)",refine_example_target_label:"適用範圍",refine_example_input_placeholder_v2:"你對著麥克風說了什麼(口語 / 錯字 / 口頭禪)",refine_example_output_placeholder_v2:"你希望整理成的樣子(書面、自洽、可貼到輸入框)",refine_example_focus_placeholder_v2:"例如:保留專有名詞、把英文術語還原",refine_example_target_option:{"*":"通用(所有場景)",chat:"聊天軟體(微信 / Slack / iMessage)",code:"命令終端 / 程式碼編輯器",doc:"文件 / 文字編輯器",email:"電子郵件",browser:"瀏覽器",meeting:"會議",other:"其他"},app_overrides_title:"依應用覆寫",app_overrides_hint:"為特定應用單獨設定規則與案例:命中時優先使用此處規則,案例拼接在全域之前。僅匹配跑過 refine 並留下 appId 的應用。",app_overrides_empty:"尚未新增覆寫",app_overrides_count:"{{current}} / {{max}}",app_override_add:"新增覆寫",app_override_remove:"刪除",app_override_enabled:"啟用",app_override_expand:"展開",app_override_collapse:"收合",app_override_core_rules_label:"覆寫核心規則(留空沿用全域)",app_override_core_rules_clear:"清空",app_override_core_rules_placeholder:"為此應用客製的 <core_rules>...</core_rules>;留空表示沿用全域核心規則。",app_override_picker_title:"選擇要覆寫的應用",app_override_no_history:"尚無可覆寫的應用——先在該應用裡跑一次聽寫優化,讓它出現在歷史中。",prompt_reset:"恢復預設",section_history:"上下文",include_history:"把最近的歷史一同送出",include_history_hint:"把最近的 transcript 作為參考上下文,協助模型沿用一致的語氣與術語。",recent_history_count:"攜帶筆數",recent_history_count_hint:"AI 上下文最多攜帶最近多少筆歷史;筆數越多偏置越強,但 token 消耗也越多。",minutes_ago:"分鐘前",history_truncated:"省略 {{count}} 字"},X0={en:"English",zh:"简体中文","zh-TW":"繁體中文",ja:"日本語",ko:"한국어",fr:"Français",de:"Deutsch",es:"Español"},F0={target_only:"僅目標語言",bilingual:"雙語(原文 + 譯文)"},Q0={translation_first:"譯文在上",source_first:"原文在上"},Z0={label:"聽寫語言",hint:"選擇你說話使用的語言;選「自動」讓上游 ASR 自偵測,遇歧義以介面語言對照。",follow_interface:"跟隨介面語言",auto:"自動",zh:"中文",en:"English",ja:"日本語",ko:"한국어",yue:"粵語"},W0={section_mode:"聽寫通道",mode_saas_label:"OpenLoaf 雲端(預設)",mode_saas_hint:"使用已登入帳號走 OpenLoaf 託管的語音辨識,按點數計費。聽寫與會議轉錄共用同一通道。",mode_custom_label:"自訂供應商",mode_custom_hint:"用自己的騰訊雲 / 阿里雲金鑰直連廠商 API,不經 SaaS。會議轉錄需選擇「騰訊雲」(內建說話人分離)。",section_providers:"自訂供應商",providers_empty:"尚未新增任何自訂供應商",add_tencent:"新增騰訊雲",add_aliyun:"新增阿里雲",vendor_tencent:"騰訊雲",vendor_aliyun:"阿里雲 DashScope",active_label:"目前啟用 · {{vendor}}",set_active:"設為啟用",remove:"刪除",name_label:"名稱",tencent_default_name:"騰訊雲語音辨識",tencent_app_id:"AppID",tencent_region:"區域(Region)",tencent_secret_id:"Secret ID",tencent_secret_key:"Secret Key",tencent_credentials_hint:"憑證儲存於系統金鑰鏈;失去焦點時自動儲存。可至騰訊雲主控台 → API 金鑰管理取得。",tencent_cos_bucket_label:"COS 儲存桶",tencent_cos_bucket_placeholder:"myaudio-1234567890",tencent_cos_bucket_hint:"必填:錄音先上傳 COS 再轉寫,單檔 ≤512MB。不填則受騰訊檔案介面 base64 5MB 限制,超過後無法轉寫。",aliyun_default_name:"阿里雲 DashScope",aliyun_api_key:"ApiKey",aliyun_api_key_hint:"儲存於系統金鑰鏈;失去焦點時自動儲存。可至 DashScope 主控台取得。",test:"測試",test_running:"測試中…",test_pass:"測試通過:憑證有效",test_fail:"測試失敗:{{message}}",test_missing_fields:"必填欄位未填",verified_badge:"已驗證",unverified_badge:"未驗證",test_code:{ok:"測試通過",unauthenticated:"驗證失敗:請檢查 Secret/ApiKey 是否正確",service_not_enabled:"憑證有效,但語音辨識服務尚未在此帳號下開通",missing_fields:"必填欄位未填",network:"網路不可達,請檢查連線與防火牆",timeout:"請求逾時,請稍後重試",rate_limited:"呼叫過於頻繁",cos_unauthorized:"ASR 憑證有效,但目前 SecretId 無權存取此 COS 儲存桶",cos_not_found:"ASR 憑證有效,但 COS 儲存桶不存在或地域不符",oss_policy_failed:"ApiKey 有效,但取得 OSS 上傳憑證失敗:帳號可能未開通百煉錄音檔資源",unknown:"未知錯誤"}},J0={version:"版本",platform:"平台",license:"授權",source:"原始碼",check_update:"檢查更新",dev_build:"目前是開發版",rerun_onboarding:"重新執行首次導覽",install_now:"立即安裝",skip_version:"略過此版本",install_in_progress:"正在下載並安裝更新…",install_progress:"{{version}} · {{percent}}% · {{downloaded}} / {{total}}",install_starting:"{{version}} · 已下載 {{downloaded}}",install_finalizing:"下載完成,正在安裝…",install_failed:"更新安裝失敗",update_channel:"更新通道",update_channel_stable:"正式版",update_channel_beta:"Beta(搶先體驗)",update_channel_hint:"Beta 通道更早收到新功能,但可能不穩定。關閉 Beta 後只會接收到版本號高於當前 Beta 的正式版。",open_log_dir:"開啟日誌目錄",saas_sdk_version:"SaaS SDK 版本"},e1={title:"互動提示偵錯",subtitle:"僅 dev 構建可見 · 用於回歸 hint 行為",global_switch:"全域顯示提示",reset_all:"全部重置",col_id:"ID",col_category:"類別",col_threshold:"閾值",col_success:"成功次數",col_dismissed:"已關閉",col_should:"應顯示",col_actions:"操作",yes:"是",no:"否",dismiss:"關閉",reset:"重置",force:"強制顯示",forcing:"強制中",note:"新增 hint 步驟:① settings.ts 加 HintId ② lib/hints.ts 註冊 HINT_REGISTRY ③ overlay.json 加文案 ④ 呼叫端掛 useHintBubble。完成後此表會自動出現。"},fO={page:V0,provider_rollback:B0,tabs:U0,hotkeys:H0,section:P0,general:K0,device:q0,asr_segment:Y0,output:G0,model:I0,ai:$0,translate_target_lang:X0,translate_output_mode:F0,translate_bilingual_order:Q0,dictation_lang:Z0,dictation_provider:W0,about:J0,dev_hints:e1},hO=Object.freeze(Object.defineProperty({__proto__:null,about:J0,ai:$0,asr_segment:Y0,default:fO,dev_hints:e1,device:q0,dictation_lang:Z0,dictation_provider:W0,general:K0,hotkeys:H0,model:I0,output:G0,page:V0,provider_rollback:B0,section:P0,tabs:U0,translate_bilingual_order:Q0,translate_output_mode:F0,translate_target_lang:X0},Symbol.toStringTag,{value:"Module"})),t1="意見回饋",n1="開啟首頁",i1="AI 工具",a1="歷史紀錄",s1="設定…",o1="選擇麥克風",l1="Auto-detect",r1="Auto-detect ({{name}})",u1="字典",c1="檢查更新",d1="結束 OpenSpeech",f1="停止錄音",pO={feedback:t1,open_home:n1,open_toolbox:i1,open_history:a1,open_settings:s1,mic_submenu:o1,auto_detect:l1,auto_detect_with_name:r1,open_dictionary:u1,check_update:c1,quit:d1,stop_recording:f1},_O=Object.freeze(Object.defineProperty({__proto__:null,auto_detect:l1,auto_detect_with_name:r1,check_update:c1,default:pO,feedback:t1,mic_submenu:o1,open_dictionary:u1,open_history:a1,open_home:n1,open_settings:s1,open_toolbox:i1,quit:d1,stop_recording:f1},Symbol.toStringTag,{value:"Module"})),mO=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,gO={"&amp;":"&","&#38;":"&","&lt;":"<","&#60;":"<","&gt;":">","&#62;":">","&apos;":"'","&#39;":"'","&quot;":'"',"&#34;":'"',"&nbsp;":" ","&#160;":" ","&copy;":"©","&#169;":"©","&reg;":"®","&#174;":"®","&hellip;":"…","&#8230;":"…","&#x2F;":"/","&#47;":"/"},yO=a=>gO[a],vO=a=>a.replace(mO,yO);let wc={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0,unescape:vO,transDefaultProps:void 0};const bO=(a={})=>{wc={...wc,...a}},lD=()=>wc;let h1;const SO=a=>{h1=a},rD=()=>h1,TO={type:"3rdParty",init(a){bO(a.options.react),SO(a)}},uD=["zh-CN","zh-TW","en"],AO=Object.assign({"./locales/en/common.json":sE,"./locales/en/dialogs.json":lE,"./locales/en/errors.json":uE,"./locales/en/feedback.json":dE,"./locales/en/hotkey.json":hE,"./locales/en/onboarding.json":_E,"./locales/en/overlay.json":gE,"./locales/en/pages.json":vE,"./locales/en/quickPanel.json":SE,"./locales/en/settings.json":AE,"./locales/en/tray.json":wE,"./locales/zh-CN/common.json":OE,"./locales/zh-CN/dialogs.json":kE,"./locales/zh-CN/errors.json":ME,"./locales/zh-CN/feedback.json":LE,"./locales/zh-CN/hotkey.json":NE,"./locales/zh-CN/onboarding.json":VE,"./locales/zh-CN/overlay.json":UE,"./locales/zh-CN/pages.json":PE,"./locales/zh-CN/quickPanel.json":qE,"./locales/zh-CN/settings.json":GE,"./locales/zh-CN/tray.json":$E,"./locales/zh-TW/common.json":FE,"./locales/zh-TW/dialogs.json":ZE,"./locales/zh-TW/errors.json":JE,"./locales/zh-TW/feedback.json":tO,"./locales/zh-TW/hotkey.json":iO,"./locales/zh-TW/onboarding.json":sO,"./locales/zh-TW/overlay.json":lO,"./locales/zh-TW/pages.json":uO,"./locales/zh-TW/quickPanel.json":dO,"./locales/zh-TW/settings.json":hO,"./locales/zh-TW/tray.json":_O}),Ec={"zh-CN":{},"zh-TW":{},en:{}},p1=new Set;for(const[a,i]of Object.entries(AO)){const o=a.match(/\.\/locales\/([^/]+)\/([^/]+)\.json$/);if(!o)continue;const l=o[1],u=o[2];l in Ec&&(Ec[l][u]=i.default,p1.add(u))}function _1(){const a=typeof navigator<"u"&&navigator.language||"en";return a.toLowerCase().startsWith("zh")?/-(tw|hk|mo)$/i.test(a)||/hant/i.test(a)?"zh-TW":"zh-CN":"en"}function cD(a){return a==="system"?_1():a}const xO=_1();we.use(TO).init({resources:Ec,lng:xO,fallbackLng:"en",ns:Array.from(p1),defaultNS:"common",interpolation:{escapeValue:!1},returnNull:!1});let ca=null;function wO(){if(ca)return ca;const a=typeof navigator<"u"?navigator.userAgent.toLowerCase():"";return a.includes("mac")?ca="macos":a.includes("win")?ca="windows":ca="linux",ca}const em=["fn","ctrl","alt","shift","meta"],Ti=["dictate_ptt","translate","show_main_window","open_toolbox","edit_last_record"];function EO(a){let i,o;return a==="macos"?(i={kind:"modifierOnly",mods:["fn","ctrl"],code:"",modSides:{ctrl:"left"}},o={kind:"modifierOnly",mods:["fn","shift"],code:"",modSides:{shift:"left"}}):a==="windows"?(i={kind:"modifierOnly",mods:["alt","meta"],code:"",modSides:{alt:"left",meta:"left"}},o={kind:"modifierOnly",mods:["alt","meta"],code:"",modSides:{alt:"right",meta:"right"}}):(i={kind:"modifierOnly",mods:["ctrl","meta"],code:"",modSides:{ctrl:"left",meta:"left"}},o={kind:"modifierOnly",mods:["alt","meta"],code:"",modSides:{alt:"left",meta:"left"}}),{dictate_ptt:i,translate:o,show_main_window:{kind:"combo",mods:["shift","meta"],code:"KeyO",modSides:{shift:"left",meta:"left"}},open_toolbox:a==="windows"?{kind:"combo",mods:["ctrl","alt"],code:"KeyT",modSides:{ctrl:"left",alt:"left"}}:{kind:"combo",mods:["shift","meta"],code:"KeyT",modSides:{shift:"left",meta:"left"}},edit_last_record:a==="macos"?{kind:"combo",mods:["shift","meta"],code:"KeyE",modSides:{shift:"left",meta:"left"}}:{kind:"combo",mods:["ctrl","shift"],code:"KeyE",modSides:{ctrl:"left",shift:"left"}}}}new Proxy({},{get(a,i){return EO(wO())[i]},has(a,i){return Ti.includes(i)},ownKeys(){return[...Ti]},getOwnPropertyDescriptor(){return{enumerable:!0,configurable:!0}}});const OO=new Proxy({},{get(a,i){if(Ti.includes(i))return we.t(`hotkey:binding.${i}`)},has(a,i){return Ti.includes(i)},ownKeys(){return[...Ti]},getOwnPropertyDescriptor(){return{enumerable:!0,configurable:!0}}});function dD(a){return[...new Set(a)].sort((i,o)=>em.indexOf(i)-em.indexOf(o))}const Jc={ControlLeft:{mod:"ctrl",side:"left"},ControlRight:{mod:"ctrl",side:"right"},AltLeft:{mod:"alt",side:"left"},AltRight:{mod:"alt",side:"right"},ShiftLeft:{mod:"shift",side:"left"},ShiftRight:{mod:"shift",side:"right"},MetaLeft:{mod:"meta",side:"left"},MetaRight:{mod:"meta",side:"right"},OSLeft:{mod:"meta",side:"left"},OSRight:{mod:"meta",side:"right"},Fn:{mod:"fn",side:null}};function CO(a){return Jc[a]?.mod??null}function kO(a){return Jc[a]?.side??null}function RO(a){return a in Jc}function Oc(a,i){return i==="fn"?null:a.modSides?.[i]??"left"}const MO=["Tab","Backspace","Delete","CapsLock","NumLock","ScrollLock"],DO=["Escape","Enter","ArrowUp","ArrowDown","ArrowLeft","ArrowRight"];function LO(a,i,o=!1){return RO(a)?{ok:!1,reason:we.t("hotkey:validation.needs_main_key")}:MO.includes(a)?{ok:!1,reason:we.t("hotkey:validation.combo_disallowed_main")}:!o&&DO.includes(a)?{ok:!1,reason:we.t("hotkey:validation.special_keys_locked")}:i.length===0&&VO(a)?{ok:!1,reason:we.t("hotkey:validation.typing_key_needs_modifier")}:{ok:!0}}function zO(a,i,o=!1){return a.mods.includes("fn")&&i!=="macos"?{ok:!1,reason:we.t("hotkey:validation.fn_macos_only")}:a.kind==="modifierOnly"?a.code!==""?{ok:!1,reason:we.t("hotkey:validation.modifier_only_no_main")}:a.mods.length<1?{ok:!1,reason:we.t("hotkey:validation.modifier_only_min")}:{ok:!0}:a.kind==="doubleTap"?a.code!==""?{ok:!1,reason:we.t("hotkey:validation.double_tap_no_main")}:a.mods.length!==1?{ok:!1,reason:we.t("hotkey:validation.double_tap_single_mod")}:i==="macos"&&a.mods[0]==="fn"?{ok:!1,reason:we.t("hotkey:validation.double_tap_fn_macos")}:{ok:!0}:a.mods.includes("fn")?{ok:!1,reason:we.t("hotkey:validation.combo_no_fn")}:LO(a.code,a.mods,o)}function NO(a,i){return i?`${a}:${i}`:a}function tm(a){const i=new Set;for(const o of a.mods)i.add(NO(o,Oc(a,o)));return i}function gs(a,i){if(a.size>=i.size)return!1;for(const o of a)if(!i.has(o))return!1;return!0}function jO(a,i,o){const l=tm(i),u=new Set(i.mods);for(const d of Ti){if(d===o)continue;const f=a[d];if(!f)continue;if(KO(f,i))return{kind:"equal",with:d};const h=tm(f);if(i.kind==="modifierOnly"&&f.kind==="modifierOnly"&&(gs(l,h)||gs(h,l)))return{kind:"subset_modifier_only",with:d};if(i.kind==="modifierOnly"&&f.kind==="combo"&&(gs(l,h)||l.size===h.size)&&gs(l,h))return{kind:"subset_combo",with:d};if(i.kind==="combo"&&f.kind==="modifierOnly"&&gs(h,l))return{kind:"subset_combo",with:d};if(i.kind==="doubleTap"&&f.kind==="modifierOnly"){const m=i.mods[0];if(m&&f.mods.includes(m))return{kind:"double_tap_overlap_modifier",with:d}}if(i.kind==="modifierOnly"&&f.kind==="doubleTap"){const m=f.mods[0];if(m&&u.has(m))return{kind:"double_tap_overlap_modifier",with:d}}}return null}function fD(a,i,o){const l=[],u=new Set;for(const d of Ti){const f=a[d];if(!f)continue;const h=zO(f,i,o);if(!h.ok){l.push({id:d,error:h.reason??""}),u.add(d);continue}const m=jO(a,f,d);if(m&&!u.has(d)){const _=we.t(`dialogs:hotkey_field.conflict_reason.${m.kind}`,{name:OO[m.with]});l.push({id:d,error:_}),u.add(d)}}return l}function hD(a,i){const o=[];return i==="macos"&&a.kind==="combo"&&a.mods.length===0&&/^F([1-9]|1[0-2])$/.test(a.code)&&o.push("hotkey:warning.f_key_bare"),a.kind==="modifierOnly"&&a.mods.length===1&&o.push(`hotkey:warning.modifier_only_single_${i}`),a.kind==="combo"&&BO(a,i)&&o.push("hotkey:warning.system_shortcut"),o}function VO(a){return/^Key[A-Z]$/.test(a)||/^Digit\d$/.test(a)||/^Numpad\d$/.test(a)||a==="Space"?!0:["Backquote","Minus","Equal","BracketLeft","BracketRight","Backslash","Semicolon","Quote","Comma","Period","Slash","IntlBackslash","IntlRo","IntlYen","NumpadAdd","NumpadSubtract","NumpadMultiply","NumpadDivide","NumpadDecimal"].includes(a)}function BO(a,i){const o=new Set(a.mods),l=(...u)=>o.size===u.length&&u.every(d=>o.has(d));return i==="macos"?!!(l("meta")&&["KeyQ","KeyW","KeyH","KeyM","Tab","Space"].includes(a.code)||l("meta","shift")&&["Digit3","Digit4","Digit5"].includes(a.code)||l("ctrl","meta")&&a.code==="KeyQ"||l("meta","alt")&&a.code==="Escape"):i==="windows"?!!(l("meta")&&["KeyL","KeyD","KeyE","KeyR","Tab","KeyH","KeyI","KeyS"].includes(a.code)||l("alt")&&a.code==="F4"||l("alt")&&a.code==="Tab"||l("ctrl","alt")&&a.code==="Delete"):!1}const UO={ctrl:"Ctrl",alt:"Option",shift:"Shift",meta:"Cmd",fn:"fn"},HO={ctrl:"Ctrl",alt:"Alt",shift:"Shift",meta:"Win",fn:"Fn"},PO={ctrl:"Ctrl",alt:"Alt",shift:"Shift",meta:"Super",fn:"Fn"};function ol(a,i){return i==="macos"?UO[a]:i==="windows"?HO[a]:PO[a]}const nm={Space:"Space",Enter:"Enter",Escape:"Esc",Tab:"Tab",Backspace:"⌫",Delete:"Del",ArrowUp:"↑",ArrowDown:"↓",ArrowLeft:"←",ArrowRight:"→",Backquote:"`",Minus:"-",Equal:"=",BracketLeft:"[",BracketRight:"]",Backslash:"\\",Semicolon:";",Quote:"'",Comma:",",Period:".",Slash:"/",IntlBackslash:"\\",IntlRo:"\\",IntlYen:"¥"};function m1(a){return nm[a]?nm[a]:/^Key([A-Z])$/.test(a)?a.slice(3):/^Digit(\d)$/.test(a)?a.slice(5):/^Numpad(.+)$/.test(a)?`Num${a.slice(6)}`:a}function pD(a,i){if(!a)return we.t("hotkey:format.unbound");const o=i==="macos"?" ":" + ";return a.kind==="modifierOnly"?a.mods.map(u=>ol(u,i)).join(o):a.kind==="doubleTap"?we.t("hotkey:format.double_tap",{mod:ol(a.mods[0],i)}):[...a.mods.map(u=>ol(u,i)),m1(a.code)].join(o)}function KO(a,i){if(a===null&&i===null)return!0;if(a===null||i===null||a.kind!==i.kind||a.code!==i.code||a.mods.length!==i.mods.length||!a.mods.every((o,l)=>o===i.mods[l]))return!1;for(const o of a.mods)if(Oc(a,o)!==Oc(i,o))return!1;return!0}const g1=(...a)=>a.filter((i,o,l)=>!!i&&i.trim()!==""&&l.indexOf(i)===o).join(" ").trim();const qO=a=>a.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();const YO=a=>a.replace(/^([A-Z])|[\s-_]+(\w)/g,(i,o,l)=>l?l.toUpperCase():o.toLowerCase());const im=a=>{const i=YO(a);return i.charAt(0).toUpperCase()+i.slice(1)};var lc={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};const GO=a=>{for(const i in a)if(i.startsWith("aria-")||i==="role"||i==="title")return!0;return!1},IO=Y.createContext({}),$O=()=>Y.useContext(IO),XO=Y.forwardRef(({color:a,size:i,strokeWidth:o,absoluteStrokeWidth:l,className:u="",children:d,iconNode:f,...h},m)=>{const{size:_=24,strokeWidth:g=2,absoluteStrokeWidth:v=!1,color:b="currentColor",className:x=""}=$O()??{},w=l??v?Number(o??g)*24/Number(i??_):o??g;return Y.createElement("svg",{ref:m,...lc,width:i??_??lc.width,height:i??_??lc.height,stroke:a??b,strokeWidth:w,className:g1("lucide",x,u),...!d&&!GO(h)&&{"aria-hidden":"true"},...h},[...f.map(([L,V])=>Y.createElement(L,V)),...Array.isArray(d)?d:[d]])});const wi=(a,i)=>{const o=Y.forwardRef(({className:l,...u},d)=>Y.createElement(XO,{ref:d,iconNode:i,className:g1(`lucide-${qO(im(a))}`,`lucide-${a}`,l),...u}));return o.displayName=im(a),o};const FO=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],_D=wi("check",FO);const QO=[["path",{d:"M15 6v12a3 3 0 1 0 3-3H6a3 3 0 1 0 3 3V6a3 3 0 1 0-3 3h12a3 3 0 1 0-3-3",key:"11bfej"}]],ZO=wi("command",QO);const WO=[["path",{d:"M2.7 10.3a2.41 2.41 0 0 0 0 3.41l7.59 7.59a2.41 2.41 0 0 0 3.41 0l7.59-7.59a2.41 2.41 0 0 0 0-3.41l-7.59-7.59a2.41 2.41 0 0 0-3.41 0Z",key:"1f1r0c"}]],JO=wi("diamond",WO);const eC=[["path",{d:"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z",key:"1s6t7t"}],["circle",{cx:"16.5",cy:"7.5",r:".5",fill:"currentColor",key:"w0ekpg"}]],mD=wi("key-round",eC);const tC=[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]],gD=wi("sparkles",tC);const nC=[["path",{d:"m21.64 3.64-1.28-1.28a1.21 1.21 0 0 0-1.72 0L2.36 18.64a1.21 1.21 0 0 0 0 1.72l1.28 1.28a1.2 1.2 0 0 0 1.72 0L21.64 5.36a1.2 1.2 0 0 0 0-1.72",key:"ul74o6"}],["path",{d:"m14 7 3 3",key:"1r5n42"}],["path",{d:"M5 6v4",key:"ilb8ba"}],["path",{d:"M19 14v4",key:"blhpug"}],["path",{d:"M10 2v2",key:"7u0qdc"}],["path",{d:"M7 8H3",key:"zfb6yr"}],["path",{d:"M21 16h-4",key:"1cnmox"}],["path",{d:"M11 3H9",key:"1obp7u"}]],yD=wi("wand-sparkles",nC);const iC=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],vD=wi("x",iC),ed=Y.createContext({});function td(a){const i=Y.useRef(null);return i.current===null&&(i.current=a()),i.current}const aC=typeof window<"u",y1=aC?Y.useLayoutEffect:Y.useEffect,kl=Y.createContext(null);function nd(a,i){a.indexOf(i)===-1&&a.push(i)}function vl(a,i){const o=a.indexOf(i);o>-1&&a.splice(o,1)}const nn=(a,i,o)=>o>i?i:o<a?a:o;let id=()=>{};const Qn={},v1=a=>/^-?(?:\d+(?:\.\d+)?|\.\d+)$/u.test(a);function b1(a){return typeof a=="object"&&a!==null}const S1=a=>/^0[^.\s]+$/u.test(a);function T1(a){let i;return()=>(i===void 0&&(i=a()),i)}const Pt=a=>a,sC=(a,i)=>o=>i(a(o)),Ms=(...a)=>a.reduce(sC),Os=(a,i,o)=>{const l=i-a;return l===0?1:(o-a)/l};class ad{constructor(){this.subscriptions=[]}add(i){return nd(this.subscriptions,i),()=>vl(this.subscriptions,i)}notify(i,o,l){const u=this.subscriptions.length;if(u)if(u===1)this.subscriptions[0](i,o,l);else for(let d=0;d<u;d++){const f=this.subscriptions[d];f&&f(i,o,l)}}getSize(){return this.subscriptions.length}clear(){this.subscriptions.length=0}}const kt=a=>a*1e3,Ht=a=>a/1e3;function A1(a,i){return i?a*(1e3/i):0}const x1=(a,i,o)=>(((1-3*o+3*i)*a+(3*o-6*i))*a+3*i)*a,oC=1e-7,lC=12;function rC(a,i,o,l,u){let d,f,h=0;do f=i+(o-i)/2,d=x1(f,l,u)-a,d>0?o=f:i=f;while(Math.abs(d)>oC&&++h<lC);return f}function Ds(a,i,o,l){if(a===i&&o===l)return Pt;const u=d=>rC(d,0,1,a,o);return d=>d===0||d===1?d:x1(u(d),i,l)}const w1=a=>i=>i<=.5?a(2*i)/2:(2-a(2*(1-i)))/2,E1=a=>i=>1-a(1-i),O1=Ds(.33,1.53,.69,.99),sd=E1(O1),C1=w1(sd),k1=a=>a>=1?1:(a*=2)<1?.5*sd(a):.5*(2-Math.pow(2,-10*(a-1))),od=a=>1-Math.sin(Math.acos(a)),R1=E1(od),M1=w1(od),uC=Ds(.42,0,1,1),cC=Ds(0,0,.58,1),D1=Ds(.42,0,.58,1),dC=a=>Array.isArray(a)&&typeof a[0]!="number",L1=a=>Array.isArray(a)&&typeof a[0]=="number",fC={linear:Pt,easeIn:uC,easeInOut:D1,easeOut:cC,circIn:od,circInOut:M1,circOut:R1,backIn:sd,backInOut:C1,backOut:O1,anticipate:k1},hC=a=>typeof a=="string",am=a=>{if(L1(a)){id(a.length===4);const[i,o,l,u]=a;return Ds(i,o,l,u)}else if(hC(a))return fC[a];return a},tl=["setup","read","resolveKeyframes","preUpdate","update","preRender","render","postRender"];function pC(a,i){let o=new Set,l=new Set,u=!1,d=!1;const f=new WeakSet;let h={delta:0,timestamp:0,isProcessing:!1};function m(g){f.has(g)&&(_.schedule(g),a()),g(h)}const _={schedule:(g,v=!1,b=!1)=>{const w=b&&u?o:l;return v&&f.add(g),w.add(g),g},cancel:g=>{l.delete(g),f.delete(g)},process:g=>{if(h=g,u){d=!0;return}u=!0;const v=o;o=l,l=v,o.forEach(m),o.clear(),u=!1,d&&(d=!1,_.process(g))}};return _}const _C=40;function z1(a,i){let o=!1,l=!0;const u={delta:0,timestamp:0,isProcessing:!1},d=()=>o=!0,f=tl.reduce((U,H)=>(U[H]=pC(d),U),{}),{setup:h,read:m,resolveKeyframes:_,preUpdate:g,update:v,preRender:b,render:x,postRender:w}=f,L=()=>{const U=Qn.useManualTiming,H=U?u.timestamp:performance.now();o=!1,U||(u.delta=l?1e3/60:Math.max(Math.min(H-u.timestamp,_C),1)),u.timestamp=H,u.isProcessing=!0,h.process(u),m.process(u),_.process(u),g.process(u),v.process(u),b.process(u),x.process(u),w.process(u),u.isProcessing=!1,o&&i&&(l=!1,a(L))},V=()=>{o=!0,l=!0,u.isProcessing||a(L)};return{schedule:tl.reduce((U,H)=>{const I=f[H];return U[H]=(se,W=!1,Z=!1)=>(o||V(),I.schedule(se,W,Z)),U},{}),cancel:U=>{for(let H=0;H<tl.length;H++)f[tl[H]].cancel(U)},state:u,steps:f}}const{schedule:De,cancel:Zn,state:at,steps:rc}=z1(typeof requestAnimationFrame<"u"?requestAnimationFrame:Pt,!0);let ll;function mC(){ll=void 0}const ct={now:()=>(ll===void 0&&ct.set(at.isProcessing||Qn.useManualTiming?at.timestamp:performance.now()),ll),set:a=>{ll=a,queueMicrotask(mC)}},N1=a=>i=>typeof i=="string"&&i.startsWith(a),j1=N1("--"),gC=N1("var(--"),ld=a=>gC(a)?yC.test(a.split("/*")[0].trim()):!1,yC=/var\(--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)$/iu;function sm(a){return typeof a!="string"?!1:a.split("/*")[0].includes("var(--")}const ya={test:a=>typeof a=="number",parse:parseFloat,transform:a=>a},Cs={...ya,transform:a=>nn(0,1,a)},nl={...ya,default:1},Ts=a=>Math.round(a*1e5)/1e5,rd=/-?(?:\d+(?:\.\d+)?|\.\d+)/gu;function vC(a){return a==null}const bC=/^(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))$/iu,ud=(a,i)=>o=>!!(typeof o=="string"&&bC.test(o)&&o.startsWith(a)||i&&!vC(o)&&Object.prototype.hasOwnProperty.call(o,i)),V1=(a,i,o)=>l=>{if(typeof l!="string")return l;const[u,d,f,h]=l.match(rd);return{[a]:parseFloat(u),[i]:parseFloat(d),[o]:parseFloat(f),alpha:h!==void 0?parseFloat(h):1}},SC=a=>nn(0,255,a),uc={...ya,transform:a=>Math.round(SC(a))},bi={test:ud("rgb","red"),parse:V1("red","green","blue"),transform:({red:a,green:i,blue:o,alpha:l=1})=>"rgba("+uc.transform(a)+", "+uc.transform(i)+", "+uc.transform(o)+", "+Ts(Cs.transform(l))+")"};function TC(a){let i="",o="",l="",u="";return a.length>5?(i=a.substring(1,3),o=a.substring(3,5),l=a.substring(5,7),u=a.substring(7,9)):(i=a.substring(1,2),o=a.substring(2,3),l=a.substring(3,4),u=a.substring(4,5),i+=i,o+=o,l+=l,u+=u),{red:parseInt(i,16),green:parseInt(o,16),blue:parseInt(l,16),alpha:u?parseInt(u,16)/255:1}}const Cc={test:ud("#"),parse:TC,transform:bi.transform},Ls=a=>({test:i=>typeof i=="string"&&i.endsWith(a)&&i.split(" ").length===1,parse:parseFloat,transform:i=>`${i}${a}`}),Xn=Ls("deg"),tn=Ls("%"),Q=Ls("px"),AC=Ls("vh"),xC=Ls("vw"),om={...tn,parse:a=>tn.parse(a)/100,transform:a=>tn.transform(a*100)},fa={test:ud("hsl","hue"),parse:V1("hue","saturation","lightness"),transform:({hue:a,saturation:i,lightness:o,alpha:l=1})=>"hsla("+Math.round(a)+", "+tn.transform(Ts(i))+", "+tn.transform(Ts(o))+", "+Ts(Cs.transform(l))+")"},Xe={test:a=>bi.test(a)||Cc.test(a)||fa.test(a),parse:a=>bi.test(a)?bi.parse(a):fa.test(a)?fa.parse(a):Cc.parse(a),transform:a=>typeof a=="string"?a:a.hasOwnProperty("red")?bi.transform(a):fa.transform(a),getAnimatableNone:a=>{const i=Xe.parse(a);return i.alpha=0,Xe.transform(i)}},wC=/(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))/giu;function EC(a){return isNaN(a)&&typeof a=="string"&&(a.match(rd)?.length||0)+(a.match(wC)?.length||0)>0}const B1="number",U1="color",OC="var",CC="var(",lm="${}",kC=/var\s*\(\s*--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)|#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\)|-?(?:\d+(?:\.\d+)?|\.\d+)/giu;function ma(a){const i=a.toString(),o=[],l={color:[],number:[],var:[]},u=[];let d=0;const h=i.replace(kC,m=>(Xe.test(m)?(l.color.push(d),u.push(U1),o.push(Xe.parse(m))):m.startsWith(CC)?(l.var.push(d),u.push(OC),o.push(m)):(l.number.push(d),u.push(B1),o.push(parseFloat(m))),++d,lm)).split(lm);return{values:o,split:h,indexes:l,types:u}}function RC(a){return ma(a).values}function H1({split:a,types:i}){const o=a.length;return l=>{let u="";for(let d=0;d<o;d++)if(u+=a[d],l[d]!==void 0){const f=i[d];f===B1?u+=Ts(l[d]):f===U1?u+=Xe.transform(l[d]):u+=l[d]}return u}}function MC(a){return H1(ma(a))}const DC=a=>typeof a=="number"?0:Xe.test(a)?Xe.getAnimatableNone(a):a,LC=(a,i)=>typeof a=="number"?i?.trim().endsWith("/")?a:0:DC(a);function zC(a){const i=ma(a);return H1(i)(i.values.map((l,u)=>LC(l,i.split[u])))}const $t={test:EC,parse:RC,createTransformer:MC,getAnimatableNone:zC};function cc(a,i,o){return o<0&&(o+=1),o>1&&(o-=1),o<1/6?a+(i-a)*6*o:o<1/2?i:o<2/3?a+(i-a)*(2/3-o)*6:a}function NC({hue:a,saturation:i,lightness:o,alpha:l}){a/=360,i/=100,o/=100;let u=0,d=0,f=0;if(!i)u=d=f=o;else{const h=o<.5?o*(1+i):o+i-o*i,m=2*o-h;u=cc(m,h,a+1/3),d=cc(m,h,a),f=cc(m,h,a-1/3)}return{red:Math.round(u*255),green:Math.round(d*255),blue:Math.round(f*255),alpha:l}}function bl(a,i){return o=>o>0?i:a}const Ne=(a,i,o)=>a+(i-a)*o,dc=(a,i,o)=>{const l=a*a,u=o*(i*i-l)+l;return u<0?0:Math.sqrt(u)},jC=[Cc,bi,fa],VC=a=>jC.find(i=>i.test(a));function rm(a){const i=VC(a);if(!i)return!1;let o=i.parse(a);return i===fa&&(o=NC(o)),o}const um=(a,i)=>{const o=rm(a),l=rm(i);if(!o||!l)return bl(a,i);const u={...o};return d=>(u.red=dc(o.red,l.red,d),u.green=dc(o.green,l.green,d),u.blue=dc(o.blue,l.blue,d),u.alpha=Ne(o.alpha,l.alpha,d),bi.transform(u))},kc=new Set(["none","hidden"]);function BC(a,i){return kc.has(a)?o=>o<=0?a:i:o=>o>=1?i:a}function UC(a,i){return o=>Ne(a,i,o)}function cd(a){return typeof a=="number"?UC:typeof a=="string"?ld(a)?bl:Xe.test(a)?um:KC:Array.isArray(a)?P1:typeof a=="object"?Xe.test(a)?um:HC:bl}function P1(a,i){const o=[...a],l=o.length,u=a.map((d,f)=>cd(d)(d,i[f]));return d=>{for(let f=0;f<l;f++)o[f]=u[f](d);return o}}function HC(a,i){const o={...a,...i},l={};for(const u in o)a[u]!==void 0&&i[u]!==void 0&&(l[u]=cd(a[u])(a[u],i[u]));return u=>{for(const d in l)o[d]=l[d](u);return o}}function PC(a,i){const o=[],l={color:0,var:0,number:0};for(let u=0;u<i.values.length;u++){const d=i.types[u],f=a.indexes[d][l[d]],h=a.values[f]??0;o[u]=h,l[d]++}return o}const KC=(a,i)=>{const o=$t.createTransformer(i),l=ma(a),u=ma(i);return l.indexes.var.length===u.indexes.var.length&&l.indexes.color.length===u.indexes.color.length&&l.indexes.number.length>=u.indexes.number.length?kc.has(a)&&!u.values.length||kc.has(i)&&!l.values.length?BC(a,i):Ms(P1(PC(l,u),u.values),o):bl(a,i)};function K1(a,i,o){return typeof a=="number"&&typeof i=="number"&&typeof o=="number"?Ne(a,i,o):cd(a)(a,i)}const qC=a=>{const i=({timestamp:o})=>a(o);return{start:(o=!0)=>De.update(i,o),stop:()=>Zn(i),now:()=>at.isProcessing?at.timestamp:ct.now()}},q1=(a,i,o=10)=>{let l="";const u=Math.max(Math.round(i/o),2);for(let d=0;d<u;d++)l+=Math.round(a(d/(u-1))*1e4)/1e4+", ";return`linear(${l.substring(0,l.length-2)})`},Sl=2e4;function dd(a){let i=0;const o=50;let l=a.next(i);for(;!l.done&&i<Sl;)i+=o,l=a.next(i);return i>=Sl?1/0:i}function YC(a,i=100,o){const l=o({...a,keyframes:[0,i]}),u=Math.min(dd(l),Sl);return{type:"keyframes",ease:d=>l.next(u*d).value/i,duration:Ht(u)}}const He={stiffness:100,damping:10,mass:1,velocity:0,duration:800,bounce:.3,visualDuration:.3,restSpeed:{granular:.01,default:2},restDelta:{granular:.005,default:.5},minDuration:.01,maxDuration:10,minDamping:.05,maxDamping:1};function Rc(a,i){return a*Math.sqrt(1-i*i)}const GC=12;function IC(a,i,o){let l=o;for(let u=1;u<GC;u++)l=l-a(l)/i(l);return l}const fc=.001;function $C({duration:a=He.duration,bounce:i=He.bounce,velocity:o=He.velocity,mass:l=He.mass}){let u,d,f=1-i;f=nn(He.minDamping,He.maxDamping,f),a=nn(He.minDuration,He.maxDuration,Ht(a)),f<1?(u=_=>{const g=_*f,v=g*a,b=g-o,x=Rc(_,f),w=Math.exp(-v);return fc-b/x*w},d=_=>{const v=_*f*a,b=v*o+o,x=Math.pow(f,2)*Math.pow(_,2)*a,w=Math.exp(-v),L=Rc(Math.pow(_,2),f);return(-u(_)+fc>0?-1:1)*((b-x)*w)/L}):(u=_=>{const g=Math.exp(-_*a),v=(_-o)*a+1;return-fc+g*v},d=_=>{const g=Math.exp(-_*a),v=(o-_)*(a*a);return g*v});const h=5/a,m=IC(u,d,h);if(a=kt(a),isNaN(m))return{stiffness:He.stiffness,damping:He.damping,duration:a};{const _=Math.pow(m,2)*l;return{stiffness:_,damping:f*2*Math.sqrt(l*_),duration:a}}}const XC=["duration","bounce"],FC=["stiffness","damping","mass"];function cm(a,i){return i.some(o=>a[o]!==void 0)}function QC(a){let i={velocity:He.velocity,stiffness:He.stiffness,damping:He.damping,mass:He.mass,isResolvedFromDuration:!1,...a};if(!cm(a,FC)&&cm(a,XC))if(i.velocity=0,a.visualDuration){const o=a.visualDuration,l=2*Math.PI/(o*1.2),u=l*l,d=2*nn(.05,1,1-(a.bounce||0))*Math.sqrt(u);i={...i,mass:He.mass,stiffness:u,damping:d}}else{const o=$C({...a,velocity:0});i={...i,...o,mass:He.mass},i.isResolvedFromDuration=!0}return i}function Tl(a=He.visualDuration,i=He.bounce){const o=typeof a!="object"?{visualDuration:a,keyframes:[0,1],bounce:i}:a;let{restSpeed:l,restDelta:u}=o;const d=o.keyframes[0],f=o.keyframes[o.keyframes.length-1],h={done:!1,value:d},{stiffness:m,damping:_,mass:g,duration:v,velocity:b,isResolvedFromDuration:x}=QC({...o,velocity:-Ht(o.velocity||0)}),w=b||0,L=_/(2*Math.sqrt(m*g)),V=f-d,B=Ht(Math.sqrt(m/g)),P=Math.abs(V)<5;l||(l=P?He.restSpeed.granular:He.restSpeed.default),u||(u=P?He.restDelta.granular:He.restDelta.default);let U,H,I,se,W,Z;if(L<1)I=Rc(B,L),se=(w+L*B*V)/I,U=$=>{const de=Math.exp(-L*B*$);return f-de*(se*Math.sin(I*$)+V*Math.cos(I*$))},W=L*B*se+V*I,Z=L*B*V-se*I,H=$=>Math.exp(-L*B*$)*(W*Math.sin(I*$)+Z*Math.cos(I*$));else if(L===1){U=de=>f-Math.exp(-B*de)*(V+(w+B*V)*de);const $=w+B*V;H=de=>Math.exp(-B*de)*(B*$*de-w)}else{const $=B*Math.sqrt(L*L-1);U=be=>{const je=Math.exp(-L*B*be),R=Math.min($*be,300);return f-je*((w+L*B*V)*Math.sinh(R)+$*V*Math.cosh(R))/$};const de=(w+L*B*V)/$,ye=L*B*de-V*$,ve=L*B*V-de*$;H=be=>{const je=Math.exp(-L*B*be),R=Math.min($*be,300);return je*(ye*Math.sinh(R)+ve*Math.cosh(R))}}const ee={calculatedDuration:x&&v||null,velocity:$=>kt(H($)),next:$=>{if(!x&&L<1){const ye=Math.exp(-L*B*$),ve=Math.sin(I*$),be=Math.cos(I*$),je=f-ye*(se*ve+V*be),R=kt(ye*(W*ve+Z*be));return h.done=Math.abs(R)<=l&&Math.abs(f-je)<=u,h.value=h.done?f:je,h}const de=U($);if(x)h.done=$>=v;else{const ye=kt(H($));h.done=Math.abs(ye)<=l&&Math.abs(f-de)<=u}return h.value=h.done?f:de,h},toString:()=>{const $=Math.min(dd(ee),Sl),de=q1(ye=>ee.next($*ye).value,$,30);return $+"ms "+de},toTransition:()=>{}};return ee}Tl.applyToOptions=a=>{const i=YC(a,100,Tl);return a.ease=i.ease,a.duration=kt(i.duration),a.type="keyframes",a};const ZC=5;function Y1(a,i,o){const l=Math.max(i-ZC,0);return A1(o-a(l),i-l)}function Mc({keyframes:a,velocity:i=0,power:o=.8,timeConstant:l=325,bounceDamping:u=10,bounceStiffness:d=500,modifyTarget:f,min:h,max:m,restDelta:_=.5,restSpeed:g}){const v=a[0],b={done:!1,value:v},x=Z=>h!==void 0&&Z<h||m!==void 0&&Z>m,w=Z=>h===void 0?m:m===void 0||Math.abs(h-Z)<Math.abs(m-Z)?h:m;let L=o*i;const V=v+L,B=f===void 0?V:f(V);B!==V&&(L=B-v);const P=Z=>-L*Math.exp(-Z/l),U=Z=>B+P(Z),H=Z=>{const ee=P(Z),$=U(Z);b.done=Math.abs(ee)<=_,b.value=b.done?B:$};let I,se;const W=Z=>{x(b.value)&&(I=Z,se=Tl({keyframes:[b.value,w(b.value)],velocity:Y1(U,Z,b.value),damping:u,stiffness:d,restDelta:_,restSpeed:g}))};return W(0),{calculatedDuration:null,next:Z=>{let ee=!1;return!se&&I===void 0&&(ee=!0,H(Z),W(Z)),I!==void 0&&Z>=I?se.next(Z-I):(!ee&&H(Z),b)}}}function WC(a,i,o){const l=[],u=o||Qn.mix||K1,d=a.length-1;for(let f=0;f<d;f++){let h=u(a[f],a[f+1]);if(i){const m=Array.isArray(i)?i[f]||Pt:i;h=Ms(m,h)}l.push(h)}return l}function JC(a,i,{clamp:o=!0,ease:l,mixer:u}={}){const d=a.length;if(id(d===i.length),d===1)return()=>i[0];if(d===2&&i[0]===i[1])return()=>i[1];const f=a[0]===a[1];a[0]>a[d-1]&&(a=[...a].reverse(),i=[...i].reverse());const h=WC(i,l,u),m=h.length,_=g=>{if(f&&g<a[0])return i[0];let v=0;if(m>1)for(;v<a.length-2&&!(g<a[v+1]);v++);const b=Os(a[v],a[v+1],g);return h[v](b)};return o?g=>_(nn(a[0],a[d-1],g)):_}function e2(a,i){const o=a[a.length-1];for(let l=1;l<=i;l++){const u=Os(0,i,l);a.push(Ne(o,1,u))}}function t2(a){const i=[0];return e2(i,a.length-1),i}function n2(a,i){return a.map(o=>o*i)}function i2(a,i){return a.map(()=>i||D1).splice(0,a.length-1)}function As({duration:a=300,keyframes:i,times:o,ease:l="easeInOut"}){const u=dC(l)?l.map(am):am(l),d={done:!1,value:i[0]},f=n2(o&&o.length===i.length?o:t2(i),a),h=JC(f,i,{ease:Array.isArray(u)?u:i2(i,u)});return{calculatedDuration:a,next:m=>(d.value=h(m),d.done=m>=a,d)}}const a2=a=>a!==null;function Rl(a,{repeat:i,repeatType:o="loop"},l,u=1){const d=a.filter(a2),h=u<0||i&&o!=="loop"&&i%2===1?0:d.length-1;return!h||l===void 0?d[h]:l}const s2={decay:Mc,inertia:Mc,tween:As,keyframes:As,spring:Tl};function G1(a){typeof a.type=="string"&&(a.type=s2[a.type])}class fd{constructor(){this.updateFinished()}get finished(){return this._finished}updateFinished(){this._finished=new Promise(i=>{this.resolve=i})}notifyFinished(){this.resolve()}then(i,o){return this.finished.then(i,o)}}const o2=a=>a/100;class Al extends fd{constructor(i){super(),this.state="idle",this.startTime=null,this.isStopped=!1,this.currentTime=0,this.holdTime=null,this.playbackSpeed=1,this.delayState={done:!1,value:void 0},this.stop=()=>{const{motionValue:o}=this.options;o&&o.updatedAt!==ct.now()&&this.tick(ct.now()),this.isStopped=!0,this.state!=="idle"&&(this.teardown(),this.options.onStop?.())},this.options=i,this.initAnimation(),this.play(),i.autoplay===!1&&this.pause()}initAnimation(){const{options:i}=this;G1(i);const{type:o=As,repeat:l=0,repeatDelay:u=0,repeatType:d,velocity:f=0}=i;let{keyframes:h}=i;const m=o||As;m!==As&&typeof h[0]!="number"&&(this.mixKeyframes=Ms(o2,K1(h[0],h[1])),h=[0,100]);const _=m({...i,keyframes:h});d==="mirror"&&(this.mirroredGenerator=m({...i,keyframes:[...h].reverse(),velocity:-f})),_.calculatedDuration===null&&(_.calculatedDuration=dd(_));const{calculatedDuration:g}=_;this.calculatedDuration=g,this.resolvedDuration=g+u,this.totalDuration=this.resolvedDuration*(l+1)-u,this.generator=_}updateTime(i){const o=Math.round(i-this.startTime)*this.playbackSpeed;this.holdTime!==null?this.currentTime=this.holdTime:this.currentTime=o}tick(i,o=!1){const{generator:l,totalDuration:u,mixKeyframes:d,mirroredGenerator:f,resolvedDuration:h,calculatedDuration:m}=this;if(this.startTime===null)return l.next(0);const{delay:_=0,keyframes:g,repeat:v,repeatType:b,repeatDelay:x,type:w,onUpdate:L,finalKeyframe:V}=this.options;this.speed>0?this.startTime=Math.min(this.startTime,i):this.speed<0&&(this.startTime=Math.min(i-u/this.speed,this.startTime)),o?this.currentTime=i:this.updateTime(i);const B=this.currentTime-_*(this.playbackSpeed>=0?1:-1),P=this.playbackSpeed>=0?B<0:B>u;this.currentTime=Math.max(B,0),this.state==="finished"&&this.holdTime===null&&(this.currentTime=u);let U=this.currentTime,H=l;if(v){const Z=Math.min(this.currentTime,u)/h;let ee=Math.floor(Z),$=Z%1;!$&&Z>=1&&($=1),$===1&&ee--,ee=Math.min(ee,v+1),ee%2&&(b==="reverse"?($=1-$,x&&($-=x/h)):b==="mirror"&&(H=f)),U=nn(0,1,$)*h}let I;P?(this.delayState.value=g[0],I=this.delayState):I=H.next(U),d&&!P&&(I.value=d(I.value));let{done:se}=I;!P&&m!==null&&(se=this.playbackSpeed>=0?this.currentTime>=u:this.currentTime<=0);const W=this.holdTime===null&&(this.state==="finished"||this.state==="running"&&se);return W&&w!==Mc&&(I.value=Rl(g,this.options,V,this.speed)),L&&L(I.value),W&&this.finish(),I}then(i,o){return this.finished.then(i,o)}get duration(){return Ht(this.calculatedDuration)}get iterationDuration(){const{delay:i=0}=this.options||{};return this.duration+Ht(i)}get time(){return Ht(this.currentTime)}set time(i){i=kt(i),this.currentTime=i,this.startTime===null||this.holdTime!==null||this.playbackSpeed===0?this.holdTime=i:this.driver&&(this.startTime=this.driver.now()-i/this.playbackSpeed),this.driver?this.driver.start(!1):(this.startTime=0,this.state="paused",this.holdTime=i,this.tick(i))}getGeneratorVelocity(){const i=this.currentTime;if(i<=0)return this.options.velocity||0;if(this.generator.velocity)return this.generator.velocity(i);const o=this.generator.next(i).value;return Y1(l=>this.generator.next(l).value,i,o)}get speed(){return this.playbackSpeed}set speed(i){const o=this.playbackSpeed!==i;o&&this.driver&&this.updateTime(ct.now()),this.playbackSpeed=i,o&&this.driver&&(this.time=Ht(this.currentTime))}play(){if(this.isStopped)return;const{driver:i=qC,startTime:o}=this.options;this.driver||(this.driver=i(u=>this.tick(u))),this.options.onPlay?.();const l=this.driver.now();this.state==="finished"?(this.updateFinished(),this.startTime=l):this.holdTime!==null?this.startTime=l-this.holdTime:this.startTime||(this.startTime=o??l),this.state==="finished"&&this.speed<0&&(this.startTime+=this.calculatedDuration),this.holdTime=null,this.state="running",this.driver.start()}pause(){this.state="paused",this.updateTime(ct.now()),this.holdTime=this.currentTime}complete(){this.state!=="running"&&this.play(),this.state="finished",this.holdTime=null}finish(){this.notifyFinished(),this.teardown(),this.state="finished",this.options.onComplete?.()}cancel(){this.holdTime=null,this.startTime=0,this.tick(0),this.teardown(),this.options.onCancel?.()}teardown(){this.state="idle",this.stopDriver(),this.startTime=this.holdTime=null}stopDriver(){this.driver&&(this.driver.stop(),this.driver=void 0)}sample(i){return this.startTime=0,this.tick(i,!0)}attachTimeline(i){return this.options.allowFlatten&&(this.options.type="keyframes",this.options.ease="linear",this.initAnimation()),this.driver?.stop(),i.observe(this)}}function l2(a){for(let i=1;i<a.length;i++)a[i]??(a[i]=a[i-1])}const Si=a=>a*180/Math.PI,Dc=a=>{const i=Si(Math.atan2(a[1],a[0]));return Lc(i)},r2={x:4,y:5,translateX:4,translateY:5,scaleX:0,scaleY:3,scale:a=>(Math.abs(a[0])+Math.abs(a[3]))/2,rotate:Dc,rotateZ:Dc,skewX:a=>Si(Math.atan(a[1])),skewY:a=>Si(Math.atan(a[2])),skew:a=>(Math.abs(a[1])+Math.abs(a[2]))/2},Lc=a=>(a=a%360,a<0&&(a+=360),a),dm=Dc,fm=a=>Math.sqrt(a[0]*a[0]+a[1]*a[1]),hm=a=>Math.sqrt(a[4]*a[4]+a[5]*a[5]),u2={x:12,y:13,z:14,translateX:12,translateY:13,translateZ:14,scaleX:fm,scaleY:hm,scale:a=>(fm(a)+hm(a))/2,rotateX:a=>Lc(Si(Math.atan2(a[6],a[5]))),rotateY:a=>Lc(Si(Math.atan2(-a[2],a[0]))),rotateZ:dm,rotate:dm,skewX:a=>Si(Math.atan(a[4])),skewY:a=>Si(Math.atan(a[1])),skew:a=>(Math.abs(a[1])+Math.abs(a[4]))/2};function zc(a){return a.includes("scale")?1:0}function Nc(a,i){if(!a||a==="none")return zc(i);const o=a.match(/^matrix3d\(([-\d.e\s,]+)\)$/u);let l,u;if(o)l=u2,u=o;else{const h=a.match(/^matrix\(([-\d.e\s,]+)\)$/u);l=r2,u=h}if(!u)return zc(i);const d=l[i],f=u[1].split(",").map(d2);return typeof d=="function"?d(f):f[d]}const c2=(a,i)=>{const{transform:o="none"}=getComputedStyle(a);return Nc(o,i)};function d2(a){return parseFloat(a.trim())}const va=["transformPerspective","x","y","z","translateX","translateY","translateZ","scale","scaleX","scaleY","rotate","rotateX","rotateY","rotateZ","skew","skewX","skewY"],ba=new Set(va),pm=a=>a===ya||a===Q,f2=new Set(["x","y","z"]),h2=va.filter(a=>!f2.has(a));function p2(a){const i=[];return h2.forEach(o=>{const l=a.getValue(o);l!==void 0&&(i.push([o,l.get()]),l.set(o.startsWith("scale")?1:0))}),i}const Fn={width:({x:a},{paddingLeft:i="0",paddingRight:o="0",boxSizing:l})=>{const u=a.max-a.min;return l==="border-box"?u:u-parseFloat(i)-parseFloat(o)},height:({y:a},{paddingTop:i="0",paddingBottom:o="0",boxSizing:l})=>{const u=a.max-a.min;return l==="border-box"?u:u-parseFloat(i)-parseFloat(o)},top:(a,{top:i})=>parseFloat(i),left:(a,{left:i})=>parseFloat(i),bottom:({y:a},{top:i})=>parseFloat(i)+(a.max-a.min),right:({x:a},{left:i})=>parseFloat(i)+(a.max-a.min),x:(a,{transform:i})=>Nc(i,"x"),y:(a,{transform:i})=>Nc(i,"y")};Fn.translateX=Fn.x;Fn.translateY=Fn.y;const Ai=new Set;let jc=!1,Vc=!1,Bc=!1;function I1(){if(Vc){const a=Array.from(Ai).filter(l=>l.needsMeasurement),i=new Set(a.map(l=>l.element)),o=new Map;i.forEach(l=>{const u=p2(l);u.length&&(o.set(l,u),l.render())}),a.forEach(l=>l.measureInitialState()),i.forEach(l=>{l.render();const u=o.get(l);u&&u.forEach(([d,f])=>{l.getValue(d)?.set(f)})}),a.forEach(l=>l.measureEndState()),a.forEach(l=>{l.suspendedScrollY!==void 0&&window.scrollTo(0,l.suspendedScrollY)})}Vc=!1,jc=!1,Ai.forEach(a=>a.complete(Bc)),Ai.clear()}function $1(){Ai.forEach(a=>{a.readKeyframes(),a.needsMeasurement&&(Vc=!0)})}function _2(){Bc=!0,$1(),I1(),Bc=!1}class hd{constructor(i,o,l,u,d,f=!1){this.state="pending",this.isAsync=!1,this.needsMeasurement=!1,this.unresolvedKeyframes=[...i],this.onComplete=o,this.name=l,this.motionValue=u,this.element=d,this.isAsync=f}scheduleResolve(){this.state="scheduled",this.isAsync?(Ai.add(this),jc||(jc=!0,De.read($1),De.resolveKeyframes(I1))):(this.readKeyframes(),this.complete())}readKeyframes(){const{unresolvedKeyframes:i,name:o,element:l,motionValue:u}=this;if(i[0]===null){const d=u?.get(),f=i[i.length-1];if(d!==void 0)i[0]=d;else if(l&&o){const h=l.readValue(o,f);h!=null&&(i[0]=h)}i[0]===void 0&&(i[0]=f),u&&d===void 0&&u.set(i[0])}l2(i)}setFinalKeyframe(){}measureInitialState(){}renderEndStyles(){}measureEndState(){}complete(i=!1){this.state="complete",this.onComplete(this.unresolvedKeyframes,this.finalKeyframe,i),Ai.delete(this)}cancel(){this.state==="scheduled"&&(Ai.delete(this),this.state="pending")}resume(){this.state==="pending"&&this.scheduleResolve()}}const m2=a=>a.startsWith("--");function X1(a,i,o){m2(i)?a.style.setProperty(i,o):a.style[i]=o}const g2={};function pd(a,i){const o=T1(a);return()=>g2[i]??o()}const y2=pd(()=>window.ScrollTimeline!==void 0,"scrollTimeline"),bD=pd(()=>window.ViewTimeline!==void 0,"viewTimeline"),F1=pd(()=>{try{document.createElement("div").animate({opacity:0},{easing:"linear(0, 1)"})}catch{return!1}return!0},"linearEasing"),vs=([a,i,o,l])=>`cubic-bezier(${a}, ${i}, ${o}, ${l})`,_m={linear:"linear",ease:"ease",easeIn:"ease-in",easeOut:"ease-out",easeInOut:"ease-in-out",circIn:vs([0,.65,.55,1]),circOut:vs([.55,0,1,.45]),backIn:vs([.31,.01,.66,-.59]),backOut:vs([.33,1.53,.69,.99])};function Q1(a,i){if(a)return typeof a=="function"?F1()?q1(a,i):"ease-out":L1(a)?vs(a):Array.isArray(a)?a.map(o=>Q1(o,i)||_m.easeOut):_m[a]}function v2(a,i,o,{delay:l=0,duration:u=300,repeat:d=0,repeatType:f="loop",ease:h="easeOut",times:m}={},_=void 0){const g={[i]:o};m&&(g.offset=m);const v=Q1(h,u);Array.isArray(v)&&(g.easing=v);const b={delay:l,duration:u,easing:Array.isArray(v)?"linear":v,fill:"both",iterations:d+1,direction:f==="reverse"?"alternate":"normal"};return _&&(b.pseudoElement=_),a.animate(g,b)}function Z1(a){return typeof a=="function"&&"applyToOptions"in a}function b2({type:a,...i}){return Z1(a)&&F1()?a.applyToOptions(i):(i.duration??(i.duration=300),i.ease??(i.ease="easeOut"),i)}class W1 extends fd{constructor(i){if(super(),this.finishedTime=null,this.isStopped=!1,this.manualStartTime=null,!i)return;const{element:o,name:l,keyframes:u,pseudoElement:d,allowFlatten:f=!1,finalKeyframe:h,onComplete:m}=i;this.isPseudoElement=!!d,this.allowFlatten=f,this.options=i,id(typeof i.type!="string");const _=b2(i);this.animation=v2(o,l,u,_,d),_.autoplay===!1&&this.animation.pause(),this.animation.onfinish=()=>{if(this.finishedTime=this.time,!d){const g=Rl(u,this.options,h,this.speed);this.updateMotionValue&&this.updateMotionValue(g),X1(o,l,g),this.animation.cancel()}m?.(),this.notifyFinished()}}play(){this.isStopped||(this.manualStartTime=null,this.animation.play(),this.state==="finished"&&this.updateFinished())}pause(){this.animation.pause()}complete(){this.animation.finish?.()}cancel(){try{this.animation.cancel()}catch{}}stop(){if(this.isStopped)return;this.isStopped=!0;const{state:i}=this;i==="idle"||i==="finished"||(this.updateMotionValue?this.updateMotionValue():this.commitStyles(),this.isPseudoElement||this.cancel())}commitStyles(){const i=this.options?.element;!this.isPseudoElement&&i?.isConnected&&this.animation.commitStyles?.()}get duration(){const i=this.animation.effect?.getComputedTiming?.().duration||0;return Ht(Number(i))}get iterationDuration(){const{delay:i=0}=this.options||{};return this.duration+Ht(i)}get time(){return Ht(Number(this.animation.currentTime)||0)}set time(i){const o=this.finishedTime!==null;this.manualStartTime=null,this.finishedTime=null,this.animation.currentTime=kt(i),o&&this.animation.pause()}get speed(){return this.animation.playbackRate}set speed(i){i<0&&(this.finishedTime=null),this.animation.playbackRate=i}get state(){return this.finishedTime!==null?"finished":this.animation.playState}get startTime(){return this.manualStartTime??Number(this.animation.startTime)}set startTime(i){this.manualStartTime=this.animation.startTime=i}attachTimeline({timeline:i,rangeStart:o,rangeEnd:l,observe:u}){return this.allowFlatten&&this.animation.effect?.updateTiming({easing:"linear"}),this.animation.onfinish=null,i&&y2()?(this.animation.timeline=i,o&&(this.animation.rangeStart=o),l&&(this.animation.rangeEnd=l),Pt):u(this)}}const J1={anticipate:k1,backInOut:C1,circInOut:M1};function S2(a){return a in J1}function T2(a){typeof a.ease=="string"&&S2(a.ease)&&(a.ease=J1[a.ease])}const hc=10;class A2 extends W1{constructor(i){T2(i),G1(i),super(i),i.startTime!==void 0&&i.autoplay!==!1&&(this.startTime=i.startTime),this.options=i}updateMotionValue(i){const{motionValue:o,onUpdate:l,onComplete:u,element:d,...f}=this.options;if(!o)return;if(i!==void 0){o.set(i);return}const h=new Al({...f,autoplay:!1}),m=Math.max(hc,ct.now()-this.startTime),_=nn(0,hc,m-hc),g=h.sample(m).value,{name:v}=this.options;d&&v&&X1(d,v,g),o.setWithVelocity(h.sample(Math.max(0,m-_)).value,g,_),h.stop()}}const mm=(a,i)=>i==="zIndex"?!1:!!(typeof a=="number"||Array.isArray(a)||typeof a=="string"&&($t.test(a)||a==="0")&&!a.startsWith("url("));function x2(a){const i=a[0];if(a.length===1)return!0;for(let o=0;o<a.length;o++)if(a[o]!==i)return!0}function w2(a,i,o,l){const u=a[0];if(u===null)return!1;if(i==="display"||i==="visibility")return!0;const d=a[a.length-1],f=mm(u,i),h=mm(d,i);return!f||!h?!1:x2(a)||(o==="spring"||Z1(o))&&l}function Uc(a){a.duration=0,a.type="keyframes"}const eT=new Set(["opacity","clipPath","filter","transform"]),E2=/^(?:oklch|oklab|lab|lch|color|color-mix|light-dark)\(/;function O2(a){for(let i=0;i<a.length;i++)if(typeof a[i]=="string"&&E2.test(a[i]))return!0;return!1}const C2=new Set(["color","backgroundColor","outlineColor","fill","stroke","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor"]),k2=T1(()=>Object.hasOwnProperty.call(Element.prototype,"animate"));function R2(a){const{motionValue:i,name:o,repeatDelay:l,repeatType:u,damping:d,type:f,keyframes:h}=a;if(!(i?.owner?.current instanceof HTMLElement))return!1;const{onUpdate:_,transformTemplate:g}=i.owner.getProps();return k2()&&o&&(eT.has(o)||C2.has(o)&&O2(h))&&(o!=="transform"||!g)&&!_&&!l&&u!=="mirror"&&d!==0&&f!=="inertia"}const M2=40;class D2 extends fd{constructor({autoplay:i=!0,delay:o=0,type:l="keyframes",repeat:u=0,repeatDelay:d=0,repeatType:f="loop",keyframes:h,name:m,motionValue:_,element:g,...v}){super(),this.stop=()=>{this._animation&&(this._animation.stop(),this.stopTimeline?.()),this.keyframeResolver?.cancel()},this.createdAt=ct.now();const b={autoplay:i,delay:o,type:l,repeat:u,repeatDelay:d,repeatType:f,name:m,motionValue:_,element:g,...v},x=g?.KeyframeResolver||hd;this.keyframeResolver=new x(h,(w,L,V)=>this.onKeyframesResolved(w,L,b,!V),m,_,g),this.keyframeResolver?.scheduleResolve()}onKeyframesResolved(i,o,l,u){this.keyframeResolver=void 0;const{name:d,type:f,velocity:h,delay:m,isHandoff:_,onUpdate:g}=l;this.resolvedAt=ct.now();let v=!0;w2(i,d,f,h)||(v=!1,(Qn.instantAnimations||!m)&&g?.(Rl(i,l,o)),i[0]=i[i.length-1],Uc(l),l.repeat=0);const x={startTime:u?this.resolvedAt?this.resolvedAt-this.createdAt>M2?this.resolvedAt:this.createdAt:this.createdAt:void 0,finalKeyframe:o,...l,keyframes:i},w=v&&!_&&R2(x),L=x.motionValue?.owner?.current;let V;if(w)try{V=new A2({...x,element:L})}catch{V=new Al(x)}else V=new Al(x);V.finished.then(()=>{this.notifyFinished()}).catch(Pt),this.pendingTimeline&&(this.stopTimeline=V.attachTimeline(this.pendingTimeline),this.pendingTimeline=void 0),this._animation=V}get finished(){return this._animation?this.animation.finished:this._finished}then(i,o){return this.finished.finally(i).then(()=>{})}get animation(){return this._animation||(this.keyframeResolver?.resume(),_2()),this._animation}get duration(){return this.animation.duration}get iterationDuration(){return this.animation.iterationDuration}get time(){return this.animation.time}set time(i){this.animation.time=i}get speed(){return this.animation.speed}get state(){return this.animation.state}set speed(i){this.animation.speed=i}get startTime(){return this.animation.startTime}attachTimeline(i){return this._animation?this.stopTimeline=this.animation.attachTimeline(i):this.pendingTimeline=i,()=>this.stop()}play(){this.animation.play()}pause(){this.animation.pause()}complete(){this.animation.complete()}cancel(){this._animation&&this.animation.cancel(),this.keyframeResolver?.cancel()}}function tT(a,i,o,l=0,u=1){const d=Array.from(a).sort((_,g)=>_.sortNodePosition(g)).indexOf(i),f=a.size,h=(f-1)*l;return typeof o=="function"?o(d,f):u===1?d*l:h-d*l}const L2=/^var\(--(?:([\w-]+)|([\w-]+), ?([a-zA-Z\d ()%#.,-]+))\)/u;function z2(a){const i=L2.exec(a);if(!i)return[,];const[,o,l,u]=i;return[`--${o??l}`,u]}function nT(a,i,o=1){const[l,u]=z2(a);if(!l)return;const d=window.getComputedStyle(i).getPropertyValue(l);if(d){const f=d.trim();return v1(f)?parseFloat(f):f}return ld(u)?nT(u,i,o+1):u}const N2={type:"spring",stiffness:500,damping:25,restSpeed:10},j2=a=>({type:"spring",stiffness:550,damping:a===0?2*Math.sqrt(550):30,restSpeed:10}),V2={type:"keyframes",duration:.8},B2={type:"keyframes",ease:[.25,.1,.35,1],duration:.3},U2=(a,{keyframes:i})=>i.length>2?V2:ba.has(a)?a.startsWith("scale")?j2(i[1]):N2:B2;function iT(a,i){if(a?.inherit&&i){const{inherit:o,...l}=a;return{...i,...l}}return a}function _d(a,i){const o=a?.[i]??a?.default??a;return o!==a?iT(o,a):o}const H2=new Set(["when","delay","delayChildren","staggerChildren","staggerDirection","repeat","repeatType","repeatDelay","from","elapsed"]);function P2(a){for(const i in a)if(!H2.has(i))return!0;return!1}const md=(a,i,o,l={},u,d)=>f=>{const h=_d(l,a)||{},m=h.delay||l.delay||0;let{elapsed:_=0}=l;_=_-kt(m);const g={keyframes:Array.isArray(o)?o:[null,o],ease:"easeOut",velocity:i.getVelocity(),...h,delay:-_,onUpdate:b=>{i.set(b),h.onUpdate&&h.onUpdate(b)},onComplete:()=>{f(),h.onComplete&&h.onComplete()},name:a,motionValue:i,element:d?void 0:u};P2(h)||Object.assign(g,U2(a,g)),g.duration&&(g.duration=kt(g.duration)),g.repeatDelay&&(g.repeatDelay=kt(g.repeatDelay)),g.from!==void 0&&(g.keyframes[0]=g.from);let v=!1;if((g.type===!1||g.duration===0&&!g.repeatDelay)&&(Uc(g),g.delay===0&&(v=!0)),(Qn.instantAnimations||Qn.skipAnimations||u?.shouldSkipAnimations)&&(v=!0,Uc(g),g.delay=0),g.allowFlatten=!h.type&&!h.ease,v&&!d&&i.get()!==void 0){const b=Rl(g.keyframes,h);if(b!==void 0){De.update(()=>{g.onUpdate(b),g.onComplete()});return}}return h.isSync?new Al(g):new D2(g)};function gm(a){const i=[{},{}];return a?.values.forEach((o,l)=>{i[0][l]=o.get(),i[1][l]=o.getVelocity()}),i}function gd(a,i,o,l){if(typeof i=="function"){const[u,d]=gm(l);i=i(o!==void 0?o:a.custom,u,d)}if(typeof i=="string"&&(i=a.variants&&a.variants[i]),typeof i=="function"){const[u,d]=gm(l);i=i(o!==void 0?o:a.custom,u,d)}return i}function xi(a,i,o){const l=a.getProps();return gd(l,i,o!==void 0?o:l.custom,a)}const aT=new Set(["width","height","top","left","right","bottom",...va]),ym=30,K2=a=>!isNaN(parseFloat(a));class q2{constructor(i,o={}){this.canTrackVelocity=null,this.events={},this.updateAndNotify=l=>{const u=ct.now();if(this.updatedAt!==u&&this.setPrevFrameValue(),this.prev=this.current,this.setCurrent(l),this.current!==this.prev&&(this.events.change?.notify(this.current),this.dependents))for(const d of this.dependents)d.dirty()},this.hasAnimated=!1,this.setCurrent(i),this.owner=o.owner}setCurrent(i){this.current=i,this.updatedAt=ct.now(),this.canTrackVelocity===null&&i!==void 0&&(this.canTrackVelocity=K2(this.current))}setPrevFrameValue(i=this.current){this.prevFrameValue=i,this.prevUpdatedAt=this.updatedAt}onChange(i){return this.on("change",i)}on(i,o){this.events[i]||(this.events[i]=new ad);const l=this.events[i].add(o);return i==="change"?()=>{l(),De.read(()=>{this.events.change.getSize()||this.stop()})}:l}clearListeners(){for(const i in this.events)this.events[i].clear()}attach(i,o){this.passiveEffect=i,this.stopPassiveEffect=o}set(i){this.passiveEffect?this.passiveEffect(i,this.updateAndNotify):this.updateAndNotify(i)}setWithVelocity(i,o,l){this.set(o),this.prev=void 0,this.prevFrameValue=i,this.prevUpdatedAt=this.updatedAt-l}jump(i,o=!0){this.updateAndNotify(i),this.prev=i,this.prevUpdatedAt=this.prevFrameValue=void 0,o&&this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}dirty(){this.events.change?.notify(this.current)}addDependent(i){this.dependents||(this.dependents=new Set),this.dependents.add(i)}removeDependent(i){this.dependents&&this.dependents.delete(i)}get(){return this.current}getPrevious(){return this.prev}getVelocity(){const i=ct.now();if(!this.canTrackVelocity||this.prevFrameValue===void 0||i-this.updatedAt>ym)return 0;const o=Math.min(this.updatedAt-this.prevUpdatedAt,ym);return A1(parseFloat(this.current)-parseFloat(this.prevFrameValue),o)}start(i){return this.stop(),new Promise(o=>{this.hasAnimated=!0,this.animation=i(o),this.events.animationStart&&this.events.animationStart.notify()}).then(()=>{this.events.animationComplete&&this.events.animationComplete.notify(),this.clearAnimation()})}stop(){this.animation&&(this.animation.stop(),this.events.animationCancel&&this.events.animationCancel.notify()),this.clearAnimation()}isAnimating(){return!!this.animation}clearAnimation(){delete this.animation}destroy(){this.dependents?.clear(),this.events.destroy?.notify(),this.clearListeners(),this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}}function ga(a,i){return new q2(a,i)}const Hc=a=>Array.isArray(a);function Y2(a,i,o){a.hasValue(i)?a.getValue(i).set(o):a.addValue(i,ga(o))}function G2(a){return Hc(a)?a[a.length-1]||0:a}function I2(a,i){const o=xi(a,i);let{transitionEnd:l={},transition:u={},...d}=o||{};d={...d,...l};for(const f in d){const h=G2(d[f]);Y2(a,f,h)}}const ot=a=>!!(a&&a.getVelocity);function $2(a){return!!(ot(a)&&a.add)}function Pc(a,i){const o=a.getValue("willChange");if($2(o))return o.add(i);if(!o&&Qn.WillChange){const l=new Qn.WillChange("auto");a.addValue("willChange",l),l.add(i)}}function yd(a){return a.replace(/([A-Z])/g,i=>`-${i.toLowerCase()}`)}const X2="framerAppearId",sT="data-"+yd(X2);function oT(a){return a.props[sT]}function F2({protectedKeys:a,needsAnimating:i},o){const l=a.hasOwnProperty(o)&&i[o]!==!0;return i[o]=!1,l}function lT(a,i,{delay:o=0,transitionOverride:l,type:u}={}){let{transition:d,transitionEnd:f,...h}=i;const m=a.getDefaultTransition();d=d?iT(d,m):m;const _=d?.reduceMotion;l&&(d=l);const g=[],v=u&&a.animationState&&a.animationState.getState()[u];for(const b in h){const x=a.getValue(b,a.latestValues[b]??null),w=h[b];if(w===void 0||v&&F2(v,b))continue;const L={delay:o,..._d(d||{},b)},V=x.get();if(V!==void 0&&!x.isAnimating()&&!Array.isArray(w)&&w===V&&!L.velocity){De.update(()=>x.set(w));continue}let B=!1;if(window.MotionHandoffAnimation){const H=oT(a);if(H){const I=window.MotionHandoffAnimation(H,b,De);I!==null&&(L.startTime=I,B=!0)}}Pc(a,b);const P=_??a.shouldReduceMotion;x.start(md(b,x,w,P&&aT.has(b)?{type:!1}:L,a,B));const U=x.animation;U&&g.push(U)}if(f){const b=()=>De.update(()=>{f&&I2(a,f)});g.length?Promise.all(g).then(b):b()}return g}function Kc(a,i,o={}){const l=xi(a,i,o.type==="exit"?a.presenceContext?.custom:void 0);let{transition:u=a.getDefaultTransition()||{}}=l||{};o.transitionOverride&&(u=o.transitionOverride);const d=l?()=>Promise.all(lT(a,l,o)):()=>Promise.resolve(),f=a.variantChildren&&a.variantChildren.size?(m=0)=>{const{delayChildren:_=0,staggerChildren:g,staggerDirection:v}=u;return Q2(a,i,m,_,g,v,o)}:()=>Promise.resolve(),{when:h}=u;if(h){const[m,_]=h==="beforeChildren"?[d,f]:[f,d];return m().then(()=>_())}else return Promise.all([d(),f(o.delay)])}function Q2(a,i,o=0,l=0,u=0,d=1,f){const h=[];for(const m of a.variantChildren)m.notify("AnimationStart",i),h.push(Kc(m,i,{...f,delay:o+(typeof l=="function"?0:l)+tT(a.variantChildren,m,l,u,d)}).then(()=>m.notify("AnimationComplete",i)));return Promise.all(h)}function Z2(a,i,o={}){a.notify("AnimationStart",i);let l;if(Array.isArray(i)){const u=i.map(d=>Kc(a,d,o));l=Promise.all(u)}else if(typeof i=="string")l=Kc(a,i,o);else{const u=typeof i=="function"?xi(a,i,o.custom):i;l=Promise.all(lT(a,u,o))}return l.then(()=>{a.notify("AnimationComplete",i)})}const W2={test:a=>a==="auto",parse:a=>a},rT=a=>i=>i.test(a),uT=[ya,Q,tn,Xn,xC,AC,W2],vm=a=>uT.find(rT(a));function J2(a){return typeof a=="number"?a===0:a!==null?a==="none"||a==="0"||S1(a):!0}const ek=new Set(["brightness","contrast","saturate","opacity"]);function tk(a){const[i,o]=a.slice(0,-1).split("(");if(i==="drop-shadow")return a;const[l]=o.match(rd)||[];if(!l)return a;const u=o.replace(l,"");let d=ek.has(i)?1:0;return l!==o&&(d*=100),i+"("+d+u+")"}const nk=/\b([a-z-]*)\(.*?\)/gu,qc={...$t,getAnimatableNone:a=>{const i=a.match(nk);return i?i.map(tk).join(" "):a}},Yc={...$t,getAnimatableNone:a=>{const i=$t.parse(a);return $t.createTransformer(a)(i.map(l=>typeof l=="number"?0:typeof l=="object"?{...l,alpha:1}:l))}},bm={...ya,transform:Math.round},ik={rotate:Xn,rotateX:Xn,rotateY:Xn,rotateZ:Xn,scale:nl,scaleX:nl,scaleY:nl,scaleZ:nl,skew:Xn,skewX:Xn,skewY:Xn,distance:Q,translateX:Q,translateY:Q,translateZ:Q,x:Q,y:Q,z:Q,perspective:Q,transformPerspective:Q,opacity:Cs,originX:om,originY:om,originZ:Q},vd={borderWidth:Q,borderTopWidth:Q,borderRightWidth:Q,borderBottomWidth:Q,borderLeftWidth:Q,borderRadius:Q,borderTopLeftRadius:Q,borderTopRightRadius:Q,borderBottomRightRadius:Q,borderBottomLeftRadius:Q,width:Q,maxWidth:Q,height:Q,maxHeight:Q,top:Q,right:Q,bottom:Q,left:Q,inset:Q,insetBlock:Q,insetBlockStart:Q,insetBlockEnd:Q,insetInline:Q,insetInlineStart:Q,insetInlineEnd:Q,padding:Q,paddingTop:Q,paddingRight:Q,paddingBottom:Q,paddingLeft:Q,paddingBlock:Q,paddingBlockStart:Q,paddingBlockEnd:Q,paddingInline:Q,paddingInlineStart:Q,paddingInlineEnd:Q,margin:Q,marginTop:Q,marginRight:Q,marginBottom:Q,marginLeft:Q,marginBlock:Q,marginBlockStart:Q,marginBlockEnd:Q,marginInline:Q,marginInlineStart:Q,marginInlineEnd:Q,fontSize:Q,backgroundPositionX:Q,backgroundPositionY:Q,...ik,zIndex:bm,fillOpacity:Cs,strokeOpacity:Cs,numOctaves:bm},ak={...vd,color:Xe,backgroundColor:Xe,outlineColor:Xe,fill:Xe,stroke:Xe,borderColor:Xe,borderTopColor:Xe,borderRightColor:Xe,borderBottomColor:Xe,borderLeftColor:Xe,filter:qc,WebkitFilter:qc,mask:Yc,WebkitMask:Yc},cT=a=>ak[a],sk=new Set([qc,Yc]);function dT(a,i){let o=cT(a);return sk.has(o)||(o=$t),o.getAnimatableNone?o.getAnimatableNone(i):void 0}const ok=new Set(["auto","none","0"]);function lk(a,i,o){let l=0,u;for(;l<a.length&&!u;){const d=a[l];typeof d=="string"&&!ok.has(d)&&ma(d).values.length&&(u=a[l]),l++}if(u&&o)for(const d of i)a[d]=dT(o,u)}class rk extends hd{constructor(i,o,l,u,d){super(i,o,l,u,d,!0)}readKeyframes(){const{unresolvedKeyframes:i,element:o,name:l}=this;if(!o||!o.current)return;super.readKeyframes();for(let g=0;g<i.length;g++){let v=i[g];if(typeof v=="string"&&(v=v.trim(),ld(v))){const b=nT(v,o.current);b!==void 0&&(i[g]=b),g===i.length-1&&(this.finalKeyframe=v)}}if(this.resolveNoneKeyframes(),!aT.has(l)||i.length!==2)return;const[u,d]=i,f=vm(u),h=vm(d),m=sm(u),_=sm(d);if(m!==_&&Fn[l]){this.needsMeasurement=!0;return}if(f!==h)if(pm(f)&&pm(h))for(let g=0;g<i.length;g++){const v=i[g];typeof v=="string"&&(i[g]=parseFloat(v))}else Fn[l]&&(this.needsMeasurement=!0)}resolveNoneKeyframes(){const{unresolvedKeyframes:i,name:o}=this,l=[];for(let u=0;u<i.length;u++)(i[u]===null||J2(i[u]))&&l.push(u);l.length&&lk(i,l,o)}measureInitialState(){const{element:i,unresolvedKeyframes:o,name:l}=this;if(!i||!i.current)return;l==="height"&&(this.suspendedScrollY=window.pageYOffset),this.measuredOrigin=Fn[l](i.measureViewportBox(),window.getComputedStyle(i.current)),o[0]=this.measuredOrigin;const u=o[o.length-1];u!==void 0&&i.getValue(l,u).jump(u,!1)}measureEndState(){const{element:i,name:o,unresolvedKeyframes:l}=this;if(!i||!i.current)return;const u=i.getValue(o);u&&u.jump(this.measuredOrigin,!1);const d=l.length-1,f=l[d];l[d]=Fn[o](i.measureViewportBox(),window.getComputedStyle(i.current)),f!==null&&this.finalKeyframe===void 0&&(this.finalKeyframe=f),this.removedTransforms?.length&&this.removedTransforms.forEach(([h,m])=>{i.getValue(h).set(m)}),this.resolveNoneKeyframes()}}function fT(a,i,o){if(a==null)return[];if(a instanceof EventTarget)return[a];if(typeof a=="string"){const u=document.querySelectorAll(a);return u?Array.from(u):[]}return Array.from(a).filter(l=>l!=null)}const hT=(a,i)=>i&&typeof a=="number"?i.transform(a):a;function rl(a){return b1(a)&&"offsetHeight"in a&&!("ownerSVGElement"in a)}const{schedule:bd}=z1(queueMicrotask,!1),It={x:!1,y:!1};function pT(){return It.x||It.y}function uk(a){return a==="x"||a==="y"?It[a]?null:(It[a]=!0,()=>{It[a]=!1}):It.x||It.y?null:(It.x=It.y=!0,()=>{It.x=It.y=!1})}function _T(a,i){const o=fT(a),l=new AbortController,u={passive:!0,...i,signal:l.signal};return[o,u,()=>l.abort()]}function ck(a){return!(a.pointerType==="touch"||pT())}function dk(a,i,o={}){const[l,u,d]=_T(a,o);return l.forEach(f=>{let h=!1,m=!1,_;const g=()=>{f.removeEventListener("pointerleave",w)},v=V=>{_&&(_(V),_=void 0),g()},b=V=>{h=!1,window.removeEventListener("pointerup",b),window.removeEventListener("pointercancel",b),m&&(m=!1,v(V))},x=()=>{h=!0,window.addEventListener("pointerup",b,u),window.addEventListener("pointercancel",b,u)},w=V=>{if(V.pointerType!=="touch"){if(h){m=!0;return}v(V)}},L=V=>{if(!ck(V))return;m=!1;const B=i(f,V);typeof B=="function"&&(_=B,f.addEventListener("pointerleave",w,u))};f.addEventListener("pointerenter",L,u),f.addEventListener("pointerdown",x,u)}),d}const mT=(a,i)=>i?a===i?!0:mT(a,i.parentElement):!1,Sd=a=>a.pointerType==="mouse"?typeof a.button!="number"||a.button<=0:a.isPrimary!==!1,fk=new Set(["BUTTON","INPUT","SELECT","TEXTAREA","A"]);function hk(a){return fk.has(a.tagName)||a.isContentEditable===!0}const pk=new Set(["INPUT","SELECT","TEXTAREA"]);function _k(a){return pk.has(a.tagName)||a.isContentEditable===!0}const ul=new WeakSet;function Sm(a){return i=>{i.key==="Enter"&&a(i)}}function pc(a,i){a.dispatchEvent(new PointerEvent("pointer"+i,{isPrimary:!0,bubbles:!0}))}const mk=(a,i)=>{const o=a.currentTarget;if(!o)return;const l=Sm(()=>{if(ul.has(o))return;pc(o,"down");const u=Sm(()=>{pc(o,"up")}),d=()=>pc(o,"cancel");o.addEventListener("keyup",u,i),o.addEventListener("blur",d,i)});o.addEventListener("keydown",l,i),o.addEventListener("blur",()=>o.removeEventListener("keydown",l),i)};function Tm(a){return Sd(a)&&!pT()}const Am=new WeakSet;function gk(a,i,o={}){const[l,u,d]=_T(a,o),f=h=>{const m=h.currentTarget;if(!Tm(h)||Am.has(h))return;ul.add(m),o.stopPropagation&&Am.add(h);const _=i(m,h),g=(x,w)=>{window.removeEventListener("pointerup",v),window.removeEventListener("pointercancel",b),ul.has(m)&&ul.delete(m),Tm(x)&&typeof _=="function"&&_(x,{success:w})},v=x=>{g(x,m===window||m===document||o.useGlobalTarget||mT(m,x.target))},b=x=>{g(x,!1)};window.addEventListener("pointerup",v,u),window.addEventListener("pointercancel",b,u)};return l.forEach(h=>{(o.useGlobalTarget?window:h).addEventListener("pointerdown",f,u),rl(h)&&(h.addEventListener("focus",_=>mk(_,u)),!hk(h)&&!h.hasAttribute("tabindex")&&(h.tabIndex=0))}),d}function Td(a){return b1(a)&&"ownerSVGElement"in a}const cl=new WeakMap;let dl;const gT=(a,i,o)=>(l,u)=>u&&u[0]?u[0][a+"Size"]:Td(l)&&"getBBox"in l?l.getBBox()[i]:l[o],yk=gT("inline","width","offsetWidth"),vk=gT("block","height","offsetHeight");function bk({target:a,borderBoxSize:i}){cl.get(a)?.forEach(o=>{o(a,{get width(){return yk(a,i)},get height(){return vk(a,i)}})})}function Sk(a){a.forEach(bk)}function Tk(){typeof ResizeObserver>"u"||(dl=new ResizeObserver(Sk))}function Ak(a,i){dl||Tk();const o=fT(a);return o.forEach(l=>{let u=cl.get(l);u||(u=new Set,cl.set(l,u)),u.add(i),dl?.observe(l)}),()=>{o.forEach(l=>{const u=cl.get(l);u?.delete(i),u?.size||dl?.unobserve(l)})}}const fl=new Set;let ha;function xk(){ha=()=>{const a={get width(){return window.innerWidth},get height(){return window.innerHeight}};fl.forEach(i=>i(a))},window.addEventListener("resize",ha)}function wk(a){return fl.add(a),ha||xk(),()=>{fl.delete(a),!fl.size&&typeof ha=="function"&&(window.removeEventListener("resize",ha),ha=void 0)}}function xm(a,i){return typeof a=="function"?wk(a):Ak(a,i)}function Ek(a){return Td(a)&&a.tagName==="svg"}const Ok=[...uT,Xe,$t],Ck=a=>Ok.find(rT(a)),wm=()=>({translate:0,scale:1,origin:0,originPoint:0}),pa=()=>({x:wm(),y:wm()}),Em=()=>({min:0,max:0}),Qe=()=>({x:Em(),y:Em()}),kk=new WeakMap;function Ml(a){return a!==null&&typeof a=="object"&&typeof a.start=="function"}function ks(a){return typeof a=="string"||Array.isArray(a)}const Ad=["animate","whileInView","whileFocus","whileHover","whileTap","whileDrag","exit"],xd=["initial",...Ad];function Dl(a){return Ml(a.animate)||xd.some(i=>ks(a[i]))}function yT(a){return!!(Dl(a)||a.variants)}function Rk(a,i,o){for(const l in i){const u=i[l],d=o[l];if(ot(u))a.addValue(l,u);else if(ot(d))a.addValue(l,ga(u,{owner:a}));else if(d!==u)if(a.hasValue(l)){const f=a.getValue(l);f.liveStyle===!0?f.jump(u):f.hasAnimated||f.set(u)}else{const f=a.getStaticValue(l);a.addValue(l,ga(f!==void 0?f:u,{owner:a}))}}for(const l in o)i[l]===void 0&&a.removeValue(l);return i}const Gc={current:null},vT={current:!1},Mk=typeof window<"u";function Dk(){if(vT.current=!0,!!Mk)if(window.matchMedia){const a=window.matchMedia("(prefers-reduced-motion)"),i=()=>Gc.current=a.matches;a.addEventListener("change",i),i()}else Gc.current=!1}const Om=["AnimationStart","AnimationComplete","Update","BeforeLayoutMeasure","LayoutMeasure","LayoutAnimationStart","LayoutAnimationComplete"];let xl={};function bT(a){xl=a}function Lk(){return xl}class zk{scrapeMotionValuesFromProps(i,o,l){return{}}constructor({parent:i,props:o,presenceContext:l,reducedMotionConfig:u,skipAnimations:d,blockInitialAnimation:f,visualState:h},m={}){this.current=null,this.children=new Set,this.isVariantNode=!1,this.isControllingVariants=!1,this.shouldReduceMotion=null,this.shouldSkipAnimations=!1,this.values=new Map,this.KeyframeResolver=hd,this.features={},this.valueSubscriptions=new Map,this.prevMotionValues={},this.hasBeenMounted=!1,this.events={},this.propEventSubscriptions={},this.notifyUpdate=()=>this.notify("Update",this.latestValues),this.render=()=>{this.current&&(this.triggerBuild(),this.renderInstance(this.current,this.renderState,this.props.style,this.projection))},this.renderScheduledAt=0,this.scheduleRender=()=>{const x=ct.now();this.renderScheduledAt<x&&(this.renderScheduledAt=x,De.render(this.render,!1,!0))};const{latestValues:_,renderState:g}=h;this.latestValues=_,this.baseTarget={..._},this.initialValues=o.initial?{..._}:{},this.renderState=g,this.parent=i,this.props=o,this.presenceContext=l,this.depth=i?i.depth+1:0,this.reducedMotionConfig=u,this.skipAnimationsConfig=d,this.options=m,this.blockInitialAnimation=!!f,this.isControllingVariants=Dl(o),this.isVariantNode=yT(o),this.isVariantNode&&(this.variantChildren=new Set),this.manuallyAnimateOnMount=!!(i&&i.current);const{willChange:v,...b}=this.scrapeMotionValuesFromProps(o,{},this);for(const x in b){const w=b[x];_[x]!==void 0&&ot(w)&&w.set(_[x])}}mount(i){if(this.hasBeenMounted)for(const o in this.initialValues)this.values.get(o)?.jump(this.initialValues[o]),this.latestValues[o]=this.initialValues[o];this.current=i,kk.set(i,this),this.projection&&!this.projection.instance&&this.projection.mount(i),this.parent&&this.isVariantNode&&!this.isControllingVariants&&(this.removeFromVariantTree=this.parent.addVariantChild(this)),this.values.forEach((o,l)=>this.bindToMotionValue(l,o)),this.reducedMotionConfig==="never"?this.shouldReduceMotion=!1:this.reducedMotionConfig==="always"?this.shouldReduceMotion=!0:(vT.current||Dk(),this.shouldReduceMotion=Gc.current),this.shouldSkipAnimations=this.skipAnimationsConfig??!1,this.parent?.addChild(this),this.update(this.props,this.presenceContext),this.hasBeenMounted=!0}unmount(){this.projection&&this.projection.unmount(),Zn(this.notifyUpdate),Zn(this.render),this.valueSubscriptions.forEach(i=>i()),this.valueSubscriptions.clear(),this.removeFromVariantTree&&this.removeFromVariantTree(),this.parent?.removeChild(this);for(const i in this.events)this.events[i].clear();for(const i in this.features){const o=this.features[i];o&&(o.unmount(),o.isMounted=!1)}this.current=null}addChild(i){this.children.add(i),this.enteringChildren??(this.enteringChildren=new Set),this.enteringChildren.add(i)}removeChild(i){this.children.delete(i),this.enteringChildren&&this.enteringChildren.delete(i)}bindToMotionValue(i,o){if(this.valueSubscriptions.has(i)&&this.valueSubscriptions.get(i)(),o.accelerate&&eT.has(i)&&this.current instanceof HTMLElement){const{factory:f,keyframes:h,times:m,ease:_,duration:g}=o.accelerate,v=new W1({element:this.current,name:i,keyframes:h,times:m,ease:_,duration:kt(g)}),b=f(v);this.valueSubscriptions.set(i,()=>{b(),v.cancel()});return}const l=ba.has(i);l&&this.onBindTransform&&this.onBindTransform();const u=o.on("change",f=>{this.latestValues[i]=f,this.props.onUpdate&&De.preRender(this.notifyUpdate),l&&this.projection&&(this.projection.isTransformDirty=!0),this.scheduleRender()});let d;typeof window<"u"&&window.MotionCheckAppearSync&&(d=window.MotionCheckAppearSync(this,i,o)),this.valueSubscriptions.set(i,()=>{u(),d&&d(),o.owner&&o.stop()})}sortNodePosition(i){return!this.current||!this.sortInstanceNodePosition||this.type!==i.type?0:this.sortInstanceNodePosition(this.current,i.current)}updateFeatures(){let i="animation";for(i in xl){const o=xl[i];if(!o)continue;const{isEnabled:l,Feature:u}=o;if(!this.features[i]&&u&&l(this.props)&&(this.features[i]=new u(this)),this.features[i]){const d=this.features[i];d.isMounted?d.update():(d.mount(),d.isMounted=!0)}}}triggerBuild(){this.build(this.renderState,this.latestValues,this.props)}measureViewportBox(){return this.current?this.measureInstanceViewportBox(this.current,this.props):Qe()}getStaticValue(i){return this.latestValues[i]}setStaticValue(i,o){this.latestValues[i]=o}update(i,o){(i.transformTemplate||this.props.transformTemplate)&&this.scheduleRender(),this.prevProps=this.props,this.props=i,this.prevPresenceContext=this.presenceContext,this.presenceContext=o;for(let l=0;l<Om.length;l++){const u=Om[l];this.propEventSubscriptions[u]&&(this.propEventSubscriptions[u](),delete this.propEventSubscriptions[u]);const d="on"+u,f=i[d];f&&(this.propEventSubscriptions[u]=this.on(u,f))}this.prevMotionValues=Rk(this,this.scrapeMotionValuesFromProps(i,this.prevProps||{},this),this.prevMotionValues),this.handleChildMotionValue&&this.handleChildMotionValue()}getProps(){return this.props}getVariant(i){return this.props.variants?this.props.variants[i]:void 0}getDefaultTransition(){return this.props.transition}getTransformPagePoint(){return this.props.transformPagePoint}getClosestVariantNode(){return this.isVariantNode?this:this.parent?this.parent.getClosestVariantNode():void 0}addVariantChild(i){const o=this.getClosestVariantNode();if(o)return o.variantChildren&&o.variantChildren.add(i),()=>o.variantChildren.delete(i)}addValue(i,o){const l=this.values.get(i);o!==l&&(l&&this.removeValue(i),this.bindToMotionValue(i,o),this.values.set(i,o),this.latestValues[i]=o.get())}removeValue(i){this.values.delete(i);const o=this.valueSubscriptions.get(i);o&&(o(),this.valueSubscriptions.delete(i)),delete this.latestValues[i],this.removeValueFromRenderState(i,this.renderState)}hasValue(i){return this.values.has(i)}getValue(i,o){if(this.props.values&&this.props.values[i])return this.props.values[i];let l=this.values.get(i);return l===void 0&&o!==void 0&&(l=ga(o===null?void 0:o,{owner:this}),this.addValue(i,l)),l}readValue(i,o){let l=this.latestValues[i]!==void 0||!this.current?this.latestValues[i]:this.getBaseTargetFromProps(this.props,i)??this.readValueFromInstance(this.current,i,this.options);return l!=null&&(typeof l=="string"&&(v1(l)||S1(l))?l=parseFloat(l):!Ck(l)&&$t.test(o)&&(l=dT(i,o)),this.setBaseTarget(i,ot(l)?l.get():l)),ot(l)?l.get():l}setBaseTarget(i,o){this.baseTarget[i]=o}getBaseTarget(i){const{initial:o}=this.props;let l;if(typeof o=="string"||typeof o=="object"){const d=gd(this.props,o,this.presenceContext?.custom);d&&(l=d[i])}if(o&&l!==void 0)return l;const u=this.getBaseTargetFromProps(this.props,i);return u!==void 0&&!ot(u)?u:this.initialValues[i]!==void 0&&l===void 0?void 0:this.baseTarget[i]}on(i,o){return this.events[i]||(this.events[i]=new ad),this.events[i].add(o)}notify(i,...o){this.events[i]&&this.events[i].notify(...o)}scheduleRenderMicrotask(){bd.render(this.render)}}class ST extends zk{constructor(){super(...arguments),this.KeyframeResolver=rk}sortInstanceNodePosition(i,o){return i.compareDocumentPosition(o)&2?1:-1}getBaseTargetFromProps(i,o){const l=i.style;return l?l[o]:void 0}removeValueFromRenderState(i,{vars:o,style:l}){delete o[i],delete l[i]}handleChildMotionValue(){this.childSubscription&&(this.childSubscription(),delete this.childSubscription);const{children:i}=this.props;ot(i)&&(this.childSubscription=i.on("change",o=>{this.current&&(this.current.textContent=`${o}`)}))}}class Wn{constructor(i){this.isMounted=!1,this.node=i}update(){}}function TT({top:a,left:i,right:o,bottom:l}){return{x:{min:i,max:o},y:{min:a,max:l}}}function Nk({x:a,y:i}){return{top:i.min,right:a.max,bottom:i.max,left:a.min}}function jk(a,i){if(!i)return a;const o=i({x:a.left,y:a.top}),l=i({x:a.right,y:a.bottom});return{top:o.y,left:o.x,bottom:l.y,right:l.x}}function _c(a){return a===void 0||a===1}function Ic({scale:a,scaleX:i,scaleY:o}){return!_c(a)||!_c(i)||!_c(o)}function vi(a){return Ic(a)||AT(a)||a.z||a.rotate||a.rotateX||a.rotateY||a.skewX||a.skewY}function AT(a){return Cm(a.x)||Cm(a.y)}function Cm(a){return a&&a!=="0%"}function wl(a,i,o){const l=a-o,u=i*l;return o+u}function km(a,i,o,l,u){return u!==void 0&&(a=wl(a,u,l)),wl(a,o,l)+i}function $c(a,i=0,o=1,l,u){a.min=km(a.min,i,o,l,u),a.max=km(a.max,i,o,l,u)}function xT(a,{x:i,y:o}){$c(a.x,i.translate,i.scale,i.originPoint),$c(a.y,o.translate,o.scale,o.originPoint)}const Rm=.999999999999,Mm=1.0000000000001;function Vk(a,i,o,l=!1){const u=o.length;if(!u)return;i.x=i.y=1;let d,f;for(let h=0;h<u;h++){d=o[h],f=d.projectionDelta;const{visualElement:m}=d.options;m&&m.props.style&&m.props.style.display==="contents"||(l&&d.options.layoutScroll&&d.scroll&&d!==d.root&&(Jt(a.x,-d.scroll.offset.x),Jt(a.y,-d.scroll.offset.y)),f&&(i.x*=f.x.scale,i.y*=f.y.scale,xT(a,f)),l&&vi(d.latestValues)&&hl(a,d.latestValues,d.layout?.layoutBox))}i.x<Mm&&i.x>Rm&&(i.x=1),i.y<Mm&&i.y>Rm&&(i.y=1)}function Jt(a,i){a.min+=i,a.max+=i}function Dm(a,i,o,l,u=.5){const d=Ne(a.min,a.max,u);$c(a,i,o,d,l)}function Lm(a,i){return typeof a=="string"?parseFloat(a)/100*(i.max-i.min):a}function hl(a,i,o){const l=o??a;Dm(a.x,Lm(i.x,l.x),i.scaleX,i.scale,i.originX),Dm(a.y,Lm(i.y,l.y),i.scaleY,i.scale,i.originY)}function wT(a,i){return TT(jk(a.getBoundingClientRect(),i))}function Bk(a,i,o){const l=wT(a,o),{scroll:u}=i;return u&&(Jt(l.x,u.offset.x),Jt(l.y,u.offset.y)),l}const Uk={x:"translateX",y:"translateY",z:"translateZ",transformPerspective:"perspective"},Hk=va.length;function Pk(a,i,o){let l="",u=!0;for(let d=0;d<Hk;d++){const f=va[d],h=a[f];if(h===void 0)continue;let m=!0;if(typeof h=="number")m=h===(f.startsWith("scale")?1:0);else{const _=parseFloat(h);m=f.startsWith("scale")?_===1:_===0}if(!m||o){const _=hT(h,vd[f]);if(!m){u=!1;const g=Uk[f]||f;l+=`${g}(${_}) `}o&&(i[f]=_)}}return l=l.trim(),o?l=o(i,u?"":l):u&&(l="none"),l}function wd(a,i,o){const{style:l,vars:u,transformOrigin:d}=a;let f=!1,h=!1;for(const m in i){const _=i[m];if(ba.has(m)){f=!0;continue}else if(j1(m)){u[m]=_;continue}else{const g=hT(_,vd[m]);m.startsWith("origin")?(h=!0,d[m]=g):l[m]=g}}if(i.transform||(f||o?l.transform=Pk(i,a.transform,o):l.transform&&(l.transform="none")),h){const{originX:m="50%",originY:_="50%",originZ:g=0}=d;l.transformOrigin=`${m} ${_} ${g}`}}function ET(a,{style:i,vars:o},l,u){const d=a.style;let f;for(f in i)d[f]=i[f];u?.applyProjectionStyles(d,l);for(f in o)d.setProperty(f,o[f])}function zm(a,i){return i.max===i.min?0:a/(i.max-i.min)*100}const ys={correct:(a,i)=>{if(!i.target)return a;if(typeof a=="string")if(Q.test(a))a=parseFloat(a);else return a;const o=zm(a,i.target.x),l=zm(a,i.target.y);return`${o}% ${l}%`}},Kk={correct:(a,{treeScale:i,projectionDelta:o})=>{const l=a,u=$t.parse(a);if(u.length>5)return l;const d=$t.createTransformer(a),f=typeof u[0]!="number"?1:0,h=o.x.scale*i.x,m=o.y.scale*i.y;u[0+f]/=h,u[1+f]/=m;const _=Ne(h,m,.5);return typeof u[2+f]=="number"&&(u[2+f]/=_),typeof u[3+f]=="number"&&(u[3+f]/=_),d(u)}},Xc={borderRadius:{...ys,applyTo:["borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius"]},borderTopLeftRadius:ys,borderTopRightRadius:ys,borderBottomLeftRadius:ys,borderBottomRightRadius:ys,boxShadow:Kk};function OT(a,{layout:i,layoutId:o}){return ba.has(a)||a.startsWith("origin")||(i||o!==void 0)&&(!!Xc[a]||a==="opacity")}function Ed(a,i,o){const l=a.style,u=i?.style,d={};if(!l)return d;for(const f in l)(ot(l[f])||u&&ot(u[f])||OT(f,a)||o?.getValue(f)?.liveStyle!==void 0)&&(d[f]=l[f]);return d}function qk(a){return window.getComputedStyle(a)}class Yk extends ST{constructor(){super(...arguments),this.type="html",this.renderInstance=ET}readValueFromInstance(i,o){if(ba.has(o))return this.projection?.isProjecting?zc(o):c2(i,o);{const l=qk(i),u=(j1(o)?l.getPropertyValue(o):l[o])||0;return typeof u=="string"?u.trim():u}}measureInstanceViewportBox(i,{transformPagePoint:o}){return wT(i,o)}build(i,o,l){wd(i,o,l.transformTemplate)}scrapeMotionValuesFromProps(i,o,l){return Ed(i,o,l)}}const Gk={offset:"stroke-dashoffset",array:"stroke-dasharray"},Ik={offset:"strokeDashoffset",array:"strokeDasharray"};function $k(a,i,o=1,l=0,u=!0){a.pathLength=1;const d=u?Gk:Ik;a[d.offset]=`${-l}`,a[d.array]=`${i} ${o}`}const Xk=["offsetDistance","offsetPath","offsetRotate","offsetAnchor"];function CT(a,{attrX:i,attrY:o,attrScale:l,pathLength:u,pathSpacing:d=1,pathOffset:f=0,...h},m,_,g){if(wd(a,h,_),m){a.style.viewBox&&(a.attrs.viewBox=a.style.viewBox);return}a.attrs=a.style,a.style={};const{attrs:v,style:b}=a;v.transform&&(b.transform=v.transform,delete v.transform),(b.transform||v.transformOrigin)&&(b.transformOrigin=v.transformOrigin??"50% 50%",delete v.transformOrigin),b.transform&&(b.transformBox=g?.transformBox??"fill-box",delete v.transformBox);for(const x of Xk)v[x]!==void 0&&(b[x]=v[x],delete v[x]);i!==void 0&&(v.x=i),o!==void 0&&(v.y=o),l!==void 0&&(v.scale=l),u!==void 0&&$k(v,u,d,f,!1)}const kT=new Set(["baseFrequency","diffuseConstant","kernelMatrix","kernelUnitLength","keySplines","keyTimes","limitingConeAngle","markerHeight","markerWidth","numOctaves","targetX","targetY","surfaceScale","specularConstant","specularExponent","stdDeviation","tableValues","viewBox","gradientTransform","pathLength","startOffset","textLength","lengthAdjust"]),RT=a=>typeof a=="string"&&a.toLowerCase()==="svg";function Fk(a,i,o,l){ET(a,i,void 0,l);for(const u in i.attrs)a.setAttribute(kT.has(u)?u:yd(u),i.attrs[u])}function MT(a,i,o){const l=Ed(a,i,o);for(const u in a)if(ot(a[u])||ot(i[u])){const d=va.indexOf(u)!==-1?"attr"+u.charAt(0).toUpperCase()+u.substring(1):u;l[d]=a[u]}return l}class Qk extends ST{constructor(){super(...arguments),this.type="svg",this.isSVGTag=!1,this.measureInstanceViewportBox=Qe}getBaseTargetFromProps(i,o){return i[o]}readValueFromInstance(i,o){if(ba.has(o)){const l=cT(o);return l&&l.default||0}return o=kT.has(o)?o:yd(o),i.getAttribute(o)}scrapeMotionValuesFromProps(i,o,l){return MT(i,o,l)}build(i,o,l){CT(i,o,this.isSVGTag,l.transformTemplate,l.style)}renderInstance(i,o,l,u){Fk(i,o,l,u)}mount(i){this.isSVGTag=RT(i.tagName),super.mount(i)}}const Zk=xd.length;function DT(a){if(!a)return;if(!a.isControllingVariants){const o=a.parent?DT(a.parent)||{}:{};return a.props.initial!==void 0&&(o.initial=a.props.initial),o}const i={};for(let o=0;o<Zk;o++){const l=xd[o],u=a.props[l];(ks(u)||u===!1)&&(i[l]=u)}return i}function LT(a,i){if(!Array.isArray(i))return!1;const o=i.length;if(o!==a.length)return!1;for(let l=0;l<o;l++)if(i[l]!==a[l])return!1;return!0}const Wk=[...Ad].reverse(),Jk=Ad.length;function eR(a){return i=>Promise.all(i.map(({animation:o,options:l})=>Z2(a,o,l)))}function tR(a){let i=eR(a),o=Nm(),l=!0,u=!1;const d=_=>(g,v)=>{const b=xi(a,v,_==="exit"?a.presenceContext?.custom:void 0);if(b){const{transition:x,transitionEnd:w,...L}=b;g={...g,...L,...w}}return g};function f(_){i=_(a)}function h(_){const{props:g}=a,v=DT(a.parent)||{},b=[],x=new Set;let w={},L=1/0;for(let B=0;B<Jk;B++){const P=Wk[B],U=o[P],H=g[P]!==void 0?g[P]:v[P],I=ks(H),se=P===_?U.isActive:null;se===!1&&(L=B);let W=H===v[P]&&H!==g[P]&&I;if(W&&(l||u)&&a.manuallyAnimateOnMount&&(W=!1),U.protectedKeys={...w},!U.isActive&&se===null||!H&&!U.prevProp||Ml(H)||typeof H=="boolean")continue;if(P==="exit"&&U.isActive&&se!==!0){U.prevResolvedValues&&(w={...w,...U.prevResolvedValues});continue}const Z=nR(U.prevProp,H);let ee=Z||P===_&&U.isActive&&!W&&I||B>L&&I,$=!1;const de=Array.isArray(H)?H:[H];let ye=de.reduce(d(P),{});se===!1&&(ye={});const{prevResolvedValues:ve={}}=U,be={...ve,...ye},je=G=>{ee=!0,x.has(G)&&($=!0,x.delete(G)),U.needsAnimating[G]=!0;const ae=a.getValue(G);ae&&(ae.liveStyle=!1)};for(const G in be){const ae=ye[G],ce=ve[G];if(w.hasOwnProperty(G))continue;let T=!1;Hc(ae)&&Hc(ce)?T=!LT(ae,ce):T=ae!==ce,T?ae!=null?je(G):x.add(G):ae!==void 0&&x.has(G)?je(G):U.protectedKeys[G]=!0}U.prevProp=H,U.prevResolvedValues=ye,U.isActive&&(w={...w,...ye}),(l||u)&&a.blockInitialAnimation&&(ee=!1);const R=W&&Z;ee&&(!R||$)&&b.push(...de.map(G=>{const ae={type:P};if(typeof G=="string"&&(l||u)&&!R&&a.manuallyAnimateOnMount&&a.parent){const{parent:ce}=a,T=xi(ce,G);if(ce.enteringChildren&&T){const{delayChildren:z}=T.transition||{};ae.delay=tT(ce.enteringChildren,a,z)}}return{animation:G,options:ae}}))}if(x.size){const B={};if(typeof g.initial!="boolean"){const P=xi(a,Array.isArray(g.initial)?g.initial[0]:g.initial);P&&P.transition&&(B.transition=P.transition)}x.forEach(P=>{const U=a.getBaseTarget(P),H=a.getValue(P);H&&(H.liveStyle=!0),B[P]=U??null}),b.push({animation:B})}let V=!!b.length;return l&&(g.initial===!1||g.initial===g.animate)&&!a.manuallyAnimateOnMount&&(V=!1),l=!1,u=!1,V?i(b):Promise.resolve()}function m(_,g){if(o[_].isActive===g)return Promise.resolve();a.variantChildren?.forEach(b=>b.animationState?.setActive(_,g)),o[_].isActive=g;const v=h(_);for(const b in o)o[b].protectedKeys={};return v}return{animateChanges:h,setActive:m,setAnimateFunction:f,getState:()=>o,reset:()=>{o=Nm(),u=!0}}}function nR(a,i){return typeof i=="string"?i!==a:Array.isArray(i)?!LT(i,a):!1}function yi(a=!1){return{isActive:a,protectedKeys:{},needsAnimating:{},prevResolvedValues:{}}}function Nm(){return{animate:yi(!0),whileInView:yi(),whileHover:yi(),whileTap:yi(),whileDrag:yi(),whileFocus:yi(),exit:yi()}}function Fc(a,i){a.min=i.min,a.max=i.max}function Gt(a,i){Fc(a.x,i.x),Fc(a.y,i.y)}function jm(a,i){a.translate=i.translate,a.scale=i.scale,a.originPoint=i.originPoint,a.origin=i.origin}const zT=1e-4,iR=1-zT,aR=1+zT,NT=.01,sR=0-NT,oR=0+NT;function dt(a){return a.max-a.min}function lR(a,i,o){return Math.abs(a-i)<=o}function Vm(a,i,o,l=.5){a.origin=l,a.originPoint=Ne(i.min,i.max,a.origin),a.scale=dt(o)/dt(i),a.translate=Ne(o.min,o.max,a.origin)-a.originPoint,(a.scale>=iR&&a.scale<=aR||isNaN(a.scale))&&(a.scale=1),(a.translate>=sR&&a.translate<=oR||isNaN(a.translate))&&(a.translate=0)}function xs(a,i,o,l){Vm(a.x,i.x,o.x,l?l.originX:void 0),Vm(a.y,i.y,o.y,l?l.originY:void 0)}function Bm(a,i,o,l=0){const u=l?Ne(o.min,o.max,l):o.min;a.min=u+i.min,a.max=a.min+dt(i)}function rR(a,i,o,l){Bm(a.x,i.x,o.x,l?.x),Bm(a.y,i.y,o.y,l?.y)}function Um(a,i,o,l=0){const u=l?Ne(o.min,o.max,l):o.min;a.min=i.min-u,a.max=a.min+dt(i)}function El(a,i,o,l){Um(a.x,i.x,o.x,l?.x),Um(a.y,i.y,o.y,l?.y)}function Hm(a,i,o,l,u){return a-=i,a=wl(a,1/o,l),u!==void 0&&(a=wl(a,1/u,l)),a}function uR(a,i=0,o=1,l=.5,u,d=a,f=a){if(tn.test(i)&&(i=parseFloat(i),i=Ne(f.min,f.max,i/100)-f.min),typeof i!="number")return;let h=Ne(d.min,d.max,l);a===d&&(h-=i),a.min=Hm(a.min,i,o,h,u),a.max=Hm(a.max,i,o,h,u)}function Pm(a,i,[o,l,u],d,f){uR(a,i[o],i[l],i[u],i.scale,d,f)}const cR=["x","scaleX","originX"],dR=["y","scaleY","originY"];function Km(a,i,o,l){Pm(a.x,i,cR,o?o.x:void 0,l?l.x:void 0),Pm(a.y,i,dR,o?o.y:void 0,l?l.y:void 0)}function qm(a){return a.translate===0&&a.scale===1}function jT(a){return qm(a.x)&&qm(a.y)}function Ym(a,i){return a.min===i.min&&a.max===i.max}function fR(a,i){return Ym(a.x,i.x)&&Ym(a.y,i.y)}function Gm(a,i){return Math.round(a.min)===Math.round(i.min)&&Math.round(a.max)===Math.round(i.max)}function VT(a,i){return Gm(a.x,i.x)&&Gm(a.y,i.y)}function Im(a){return dt(a.x)/dt(a.y)}function $m(a,i){return a.translate===i.translate&&a.scale===i.scale&&a.originPoint===i.originPoint}function Wt(a){return[a("x"),a("y")]}function hR(a,i,o){let l="";const u=a.x.translate/i.x,d=a.y.translate/i.y,f=o?.z||0;if((u||d||f)&&(l=`translate3d(${u}px, ${d}px, ${f}px) `),(i.x!==1||i.y!==1)&&(l+=`scale(${1/i.x}, ${1/i.y}) `),o){const{transformPerspective:_,rotate:g,rotateX:v,rotateY:b,skewX:x,skewY:w}=o;_&&(l=`perspective(${_}px) ${l}`),g&&(l+=`rotate(${g}deg) `),v&&(l+=`rotateX(${v}deg) `),b&&(l+=`rotateY(${b}deg) `),x&&(l+=`skewX(${x}deg) `),w&&(l+=`skewY(${w}deg) `)}const h=a.x.scale*i.x,m=a.y.scale*i.y;return(h!==1||m!==1)&&(l+=`scale(${h}, ${m})`),l||"none"}const BT=["borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius"],pR=BT.length,Xm=a=>typeof a=="string"?parseFloat(a):a,Fm=a=>typeof a=="number"||Q.test(a);function _R(a,i,o,l,u,d){u?(a.opacity=Ne(0,o.opacity??1,mR(l)),a.opacityExit=Ne(i.opacity??1,0,gR(l))):d&&(a.opacity=Ne(i.opacity??1,o.opacity??1,l));for(let f=0;f<pR;f++){const h=BT[f];let m=Qm(i,h),_=Qm(o,h);if(m===void 0&&_===void 0)continue;m||(m=0),_||(_=0),m===0||_===0||Fm(m)===Fm(_)?(a[h]=Math.max(Ne(Xm(m),Xm(_),l),0),(tn.test(_)||tn.test(m))&&(a[h]+="%")):a[h]=_}(i.rotate||o.rotate)&&(a.rotate=Ne(i.rotate||0,o.rotate||0,l))}function Qm(a,i){return a[i]!==void 0?a[i]:a.borderRadius}const mR=UT(0,.5,R1),gR=UT(.5,.95,Pt);function UT(a,i,o){return l=>l<a?0:l>i?1:o(Os(a,i,l))}function yR(a,i,o){const l=ot(a)?a:ga(a);return l.start(md("",l,i,o)),l.animation}function Rs(a,i,o,l={passive:!0}){return a.addEventListener(i,o,l),()=>a.removeEventListener(i,o)}const vR=(a,i)=>a.depth-i.depth;class bR{constructor(){this.children=[],this.isDirty=!1}add(i){nd(this.children,i),this.isDirty=!0}remove(i){vl(this.children,i),this.isDirty=!0}forEach(i){this.isDirty&&this.children.sort(vR),this.isDirty=!1,this.children.forEach(i)}}function SR(a,i){const o=ct.now(),l=({timestamp:u})=>{const d=u-o;d>=i&&(Zn(l),a(d-i))};return De.setup(l,!0),()=>Zn(l)}function pl(a){return ot(a)?a.get():a}class TR{constructor(){this.members=[]}add(i){nd(this.members,i);for(let o=this.members.length-1;o>=0;o--){const l=this.members[o];if(l===i||l===this.lead||l===this.prevLead)continue;const u=l.instance;(!u||u.isConnected===!1)&&!l.snapshot&&(vl(this.members,l),l.unmount())}i.scheduleRender()}remove(i){if(vl(this.members,i),i===this.prevLead&&(this.prevLead=void 0),i===this.lead){const o=this.members[this.members.length-1];o&&this.promote(o)}}relegate(i){for(let o=this.members.indexOf(i)-1;o>=0;o--){const l=this.members[o];if(l.isPresent!==!1&&l.instance?.isConnected!==!1)return this.promote(l),!0}return!1}promote(i,o){const l=this.lead;if(i!==l&&(this.prevLead=l,this.lead=i,i.show(),l)){l.updateSnapshot(),i.scheduleRender();const{layoutDependency:u}=l.options,{layoutDependency:d}=i.options;(u===void 0||u!==d)&&(i.resumeFrom=l,o&&(l.preserveOpacity=!0),l.snapshot&&(i.snapshot=l.snapshot,i.snapshot.latestValues=l.animationValues||l.latestValues),i.root?.isUpdating&&(i.isLayoutDirty=!0)),i.options.crossfade===!1&&l.hide()}}exitAnimationComplete(){this.members.forEach(i=>{i.options.onExitComplete?.(),i.resumingFrom?.options.onExitComplete?.()})}scheduleRender(){this.members.forEach(i=>i.instance&&i.scheduleRender(!1))}removeLeadSnapshot(){this.lead?.snapshot&&(this.lead.snapshot=void 0)}}const _l={hasAnimatedSinceResize:!0,hasEverUpdated:!1},mc=["","X","Y","Z"],AR=1e3;let xR=0;function gc(a,i,o,l){const{latestValues:u}=i;u[a]&&(o[a]=u[a],i.setStaticValue(a,0),l&&(l[a]=0))}function HT(a){if(a.hasCheckedOptimisedAppear=!0,a.root===a)return;const{visualElement:i}=a.options;if(!i)return;const o=oT(i);if(window.MotionHasOptimisedAnimation(o,"transform")){const{layout:u,layoutId:d}=a.options;window.MotionCancelOptimisedAnimation(o,"transform",De,!(u||d))}const{parent:l}=a;l&&!l.hasCheckedOptimisedAppear&&HT(l)}function PT({attachResizeListener:a,defaultParent:i,measureScroll:o,checkIsScrollRoot:l,resetTransform:u}){return class{constructor(f={},h=i?.()){this.id=xR++,this.animationId=0,this.animationCommitId=0,this.children=new Set,this.options={},this.isTreeAnimating=!1,this.isAnimationBlocked=!1,this.isLayoutDirty=!1,this.isProjectionDirty=!1,this.isSharedProjectionDirty=!1,this.isTransformDirty=!1,this.updateManuallyBlocked=!1,this.updateBlockedByResize=!1,this.isUpdating=!1,this.isSVG=!1,this.needsReset=!1,this.shouldResetTransform=!1,this.hasCheckedOptimisedAppear=!1,this.treeScale={x:1,y:1},this.eventHandlers=new Map,this.hasTreeAnimated=!1,this.layoutVersion=0,this.updateScheduled=!1,this.scheduleUpdate=()=>this.update(),this.projectionUpdateScheduled=!1,this.checkUpdateFailed=()=>{this.isUpdating&&(this.isUpdating=!1,this.clearAllSnapshots())},this.updateProjection=()=>{this.projectionUpdateScheduled=!1,this.nodes.forEach(OR),this.nodes.forEach(LR),this.nodes.forEach(zR),this.nodes.forEach(CR)},this.resolvedRelativeTargetAt=0,this.linkedParentVersion=0,this.hasProjected=!1,this.isVisible=!0,this.animationProgress=0,this.sharedNodes=new Map,this.latestValues=f,this.root=h?h.root||h:this,this.path=h?[...h.path,h]:[],this.parent=h,this.depth=h?h.depth+1:0;for(let m=0;m<this.path.length;m++)this.path[m].shouldResetTransform=!0;this.root===this&&(this.nodes=new bR)}addEventListener(f,h){return this.eventHandlers.has(f)||this.eventHandlers.set(f,new ad),this.eventHandlers.get(f).add(h)}notifyListeners(f,...h){const m=this.eventHandlers.get(f);m&&m.notify(...h)}hasListeners(f){return this.eventHandlers.has(f)}mount(f){if(this.instance)return;this.isSVG=Td(f)&&!Ek(f),this.instance=f;const{layoutId:h,layout:m,visualElement:_}=this.options;if(_&&!_.current&&_.mount(f),this.root.nodes.add(this),this.parent&&this.parent.children.add(this),this.root.hasTreeAnimated&&(m||h)&&(this.isLayoutDirty=!0),a){let g,v=0;const b=()=>this.root.updateBlockedByResize=!1;De.read(()=>{v=window.innerWidth}),a(f,()=>{const x=window.innerWidth;x!==v&&(v=x,this.root.updateBlockedByResize=!0,g&&g(),g=SR(b,250),_l.hasAnimatedSinceResize&&(_l.hasAnimatedSinceResize=!1,this.nodes.forEach(Jm)))})}h&&this.root.registerSharedNode(h,this),this.options.animate!==!1&&_&&(h||m)&&this.addEventListener("didUpdate",({delta:g,hasLayoutChanged:v,hasRelativeLayoutChanged:b,layout:x})=>{if(this.isTreeAnimationBlocked()){this.target=void 0,this.relativeTarget=void 0;return}const w=this.options.transition||_.getDefaultTransition()||UR,{onLayoutAnimationStart:L,onLayoutAnimationComplete:V}=_.getProps(),B=!this.targetLayout||!VT(this.targetLayout,x),P=!v&&b;if(this.options.layoutRoot||this.resumeFrom||P||v&&(B||!this.currentAnimation)){this.resumeFrom&&(this.resumingFrom=this.resumeFrom,this.resumingFrom.resumingFrom=void 0);const U={..._d(w,"layout"),onPlay:L,onComplete:V};(_.shouldReduceMotion||this.options.layoutRoot)&&(U.delay=0,U.type=!1),this.startAnimation(U),this.setAnimationOrigin(g,P)}else v||Jm(this),this.isLead()&&this.options.onExitComplete&&this.options.onExitComplete();this.targetLayout=x})}unmount(){this.options.layoutId&&this.willUpdate(),this.root.nodes.remove(this);const f=this.getStack();f&&f.remove(this),this.parent&&this.parent.children.delete(this),this.instance=void 0,this.eventHandlers.clear(),Zn(this.updateProjection)}blockUpdate(){this.updateManuallyBlocked=!0}unblockUpdate(){this.updateManuallyBlocked=!1}isUpdateBlocked(){return this.updateManuallyBlocked||this.updateBlockedByResize}isTreeAnimationBlocked(){return this.isAnimationBlocked||this.parent&&this.parent.isTreeAnimationBlocked()||!1}startUpdate(){this.isUpdateBlocked()||(this.isUpdating=!0,this.nodes&&this.nodes.forEach(NR),this.animationId++)}getTransformTemplate(){const{visualElement:f}=this.options;return f&&f.getProps().transformTemplate}willUpdate(f=!0){if(this.root.hasTreeAnimated=!0,this.root.isUpdateBlocked()){this.options.onExitComplete&&this.options.onExitComplete();return}if(window.MotionCancelOptimisedAnimation&&!this.hasCheckedOptimisedAppear&&HT(this),!this.root.isUpdating&&this.root.startUpdate(),this.isLayoutDirty)return;this.isLayoutDirty=!0;for(let g=0;g<this.path.length;g++){const v=this.path[g];v.shouldResetTransform=!0,(typeof v.latestValues.x=="string"||typeof v.latestValues.y=="string")&&(v.isLayoutDirty=!0),v.updateScroll("snapshot"),v.options.layoutRoot&&v.willUpdate(!1)}const{layoutId:h,layout:m}=this.options;if(h===void 0&&!m)return;const _=this.getTransformTemplate();this.prevTransformTemplateValue=_?_(this.latestValues,""):void 0,this.updateSnapshot(),f&&this.notifyListeners("willUpdate")}update(){if(this.updateScheduled=!1,this.isUpdateBlocked()){const m=this.updateBlockedByResize;this.unblockUpdate(),this.updateBlockedByResize=!1,this.clearAllSnapshots(),m&&this.nodes.forEach(RR),this.nodes.forEach(Zm);return}if(this.animationId<=this.animationCommitId){this.nodes.forEach(Wm);return}this.animationCommitId=this.animationId,this.isUpdating?(this.isUpdating=!1,this.nodes.forEach(MR),this.nodes.forEach(DR),this.nodes.forEach(wR),this.nodes.forEach(ER)):this.nodes.forEach(Wm),this.clearAllSnapshots();const h=ct.now();at.delta=nn(0,1e3/60,h-at.timestamp),at.timestamp=h,at.isProcessing=!0,rc.update.process(at),rc.preRender.process(at),rc.render.process(at),at.isProcessing=!1}didUpdate(){this.updateScheduled||(this.updateScheduled=!0,bd.read(this.scheduleUpdate))}clearAllSnapshots(){this.nodes.forEach(kR),this.sharedNodes.forEach(jR)}scheduleUpdateProjection(){this.projectionUpdateScheduled||(this.projectionUpdateScheduled=!0,De.preRender(this.updateProjection,!1,!0))}scheduleCheckAfterUnmount(){De.postRender(()=>{this.isLayoutDirty?this.root.didUpdate():this.root.checkUpdateFailed()})}updateSnapshot(){this.snapshot||!this.instance||(this.snapshot=this.measure(),this.snapshot&&!dt(this.snapshot.measuredBox.x)&&!dt(this.snapshot.measuredBox.y)&&(this.snapshot=void 0))}updateLayout(){if(!this.instance||(this.updateScroll(),!(this.options.alwaysMeasureLayout&&this.isLead())&&!this.isLayoutDirty))return;if(this.resumeFrom&&!this.resumeFrom.instance)for(let m=0;m<this.path.length;m++)this.path[m].updateScroll();const f=this.layout;this.layout=this.measure(!1),this.layoutVersion++,this.layoutCorrected||(this.layoutCorrected=Qe()),this.isLayoutDirty=!1,this.projectionDelta=void 0,this.notifyListeners("measure",this.layout.layoutBox);const{visualElement:h}=this.options;h&&h.notify("LayoutMeasure",this.layout.layoutBox,f?f.layoutBox:void 0)}updateScroll(f="measure"){let h=!!(this.options.layoutScroll&&this.instance);if(this.scroll&&this.scroll.animationId===this.root.animationId&&this.scroll.phase===f&&(h=!1),h&&this.instance){const m=l(this.instance);this.scroll={animationId:this.root.animationId,phase:f,isRoot:m,offset:o(this.instance),wasRoot:this.scroll?this.scroll.isRoot:m}}}resetTransform(){if(!u)return;const f=this.isLayoutDirty||this.shouldResetTransform||this.options.alwaysMeasureLayout,h=this.projectionDelta&&!jT(this.projectionDelta),m=this.getTransformTemplate(),_=m?m(this.latestValues,""):void 0,g=_!==this.prevTransformTemplateValue;f&&this.instance&&(h||vi(this.latestValues)||g)&&(u(this.instance,_),this.shouldResetTransform=!1,this.scheduleRender())}measure(f=!0){const h=this.measurePageBox();let m=this.removeElementScroll(h);return f&&(m=this.removeTransform(m)),HR(m),{animationId:this.root.animationId,measuredBox:h,layoutBox:m,latestValues:{},source:this.id}}measurePageBox(){const{visualElement:f}=this.options;if(!f)return Qe();const h=f.measureViewportBox();if(!(this.scroll?.wasRoot||this.path.some(PR))){const{scroll:_}=this.root;_&&(Jt(h.x,_.offset.x),Jt(h.y,_.offset.y))}return h}removeElementScroll(f){const h=Qe();if(Gt(h,f),this.scroll?.wasRoot)return h;for(let m=0;m<this.path.length;m++){const _=this.path[m],{scroll:g,options:v}=_;_!==this.root&&g&&v.layoutScroll&&(g.wasRoot&&Gt(h,f),Jt(h.x,g.offset.x),Jt(h.y,g.offset.y))}return h}applyTransform(f,h=!1,m){const _=m||Qe();Gt(_,f);for(let g=0;g<this.path.length;g++){const v=this.path[g];!h&&v.options.layoutScroll&&v.scroll&&v!==v.root&&(Jt(_.x,-v.scroll.offset.x),Jt(_.y,-v.scroll.offset.y)),vi(v.latestValues)&&hl(_,v.latestValues,v.layout?.layoutBox)}return vi(this.latestValues)&&hl(_,this.latestValues,this.layout?.layoutBox),_}removeTransform(f){const h=Qe();Gt(h,f);for(let m=0;m<this.path.length;m++){const _=this.path[m];if(!vi(_.latestValues))continue;let g;_.instance&&(Ic(_.latestValues)&&_.updateSnapshot(),g=Qe(),Gt(g,_.measurePageBox())),Km(h,_.latestValues,_.snapshot?.layoutBox,g)}return vi(this.latestValues)&&Km(h,this.latestValues),h}setTargetDelta(f){this.targetDelta=f,this.root.scheduleUpdateProjection(),this.isProjectionDirty=!0}setOptions(f){this.options={...this.options,...f,crossfade:f.crossfade!==void 0?f.crossfade:!0}}clearMeasurements(){this.scroll=void 0,this.layout=void 0,this.snapshot=void 0,this.prevTransformTemplateValue=void 0,this.targetDelta=void 0,this.target=void 0,this.isLayoutDirty=!1}forceRelativeParentToResolveTarget(){this.relativeParent&&this.relativeParent.resolvedRelativeTargetAt!==at.timestamp&&this.relativeParent.resolveTargetDelta(!0)}resolveTargetDelta(f=!1){const h=this.getLead();this.isProjectionDirty||(this.isProjectionDirty=h.isProjectionDirty),this.isTransformDirty||(this.isTransformDirty=h.isTransformDirty),this.isSharedProjectionDirty||(this.isSharedProjectionDirty=h.isSharedProjectionDirty);const m=!!this.resumingFrom||this!==h;if(!(f||m&&this.isSharedProjectionDirty||this.isProjectionDirty||this.parent?.isProjectionDirty||this.attemptToResolveRelativeTarget||this.root.updateBlockedByResize))return;const{layout:g,layoutId:v}=this.options;if(!this.layout||!(g||v))return;this.resolvedRelativeTargetAt=at.timestamp;const b=this.getClosestProjectingParent();b&&this.linkedParentVersion!==b.layoutVersion&&!b.options.layoutRoot&&this.removeRelativeTarget(),!this.targetDelta&&!this.relativeTarget&&(this.options.layoutAnchor!==!1&&b&&b.layout?this.createRelativeTarget(b,this.layout.layoutBox,b.layout.layoutBox):this.removeRelativeTarget()),!(!this.relativeTarget&&!this.targetDelta)&&(this.target||(this.target=Qe(),this.targetWithTransforms=Qe()),this.relativeTarget&&this.relativeTargetOrigin&&this.relativeParent&&this.relativeParent.target?(this.forceRelativeParentToResolveTarget(),rR(this.target,this.relativeTarget,this.relativeParent.target,this.options.layoutAnchor||void 0)):this.targetDelta?(this.resumingFrom?this.applyTransform(this.layout.layoutBox,!1,this.target):Gt(this.target,this.layout.layoutBox),xT(this.target,this.targetDelta)):Gt(this.target,this.layout.layoutBox),this.attemptToResolveRelativeTarget&&(this.attemptToResolveRelativeTarget=!1,this.options.layoutAnchor!==!1&&b&&!!b.resumingFrom==!!this.resumingFrom&&!b.options.layoutScroll&&b.target&&this.animationProgress!==1?this.createRelativeTarget(b,this.target,b.target):this.relativeParent=this.relativeTarget=void 0))}getClosestProjectingParent(){if(!(!this.parent||Ic(this.parent.latestValues)||AT(this.parent.latestValues)))return this.parent.isProjecting()?this.parent:this.parent.getClosestProjectingParent()}isProjecting(){return!!((this.relativeTarget||this.targetDelta||this.options.layoutRoot)&&this.layout)}createRelativeTarget(f,h,m){this.relativeParent=f,this.linkedParentVersion=f.layoutVersion,this.forceRelativeParentToResolveTarget(),this.relativeTarget=Qe(),this.relativeTargetOrigin=Qe(),El(this.relativeTargetOrigin,h,m,this.options.layoutAnchor||void 0),Gt(this.relativeTarget,this.relativeTargetOrigin)}removeRelativeTarget(){this.relativeParent=this.relativeTarget=void 0}calcProjection(){const f=this.getLead(),h=!!this.resumingFrom||this!==f;let m=!0;if((this.isProjectionDirty||this.parent?.isProjectionDirty)&&(m=!1),h&&(this.isSharedProjectionDirty||this.isTransformDirty)&&(m=!1),this.resolvedRelativeTargetAt===at.timestamp&&(m=!1),m)return;const{layout:_,layoutId:g}=this.options;if(this.isTreeAnimating=!!(this.parent&&this.parent.isTreeAnimating||this.currentAnimation||this.pendingAnimation),this.isTreeAnimating||(this.targetDelta=this.relativeTarget=void 0),!this.layout||!(_||g))return;Gt(this.layoutCorrected,this.layout.layoutBox);const v=this.treeScale.x,b=this.treeScale.y;Vk(this.layoutCorrected,this.treeScale,this.path,h),f.layout&&!f.target&&(this.treeScale.x!==1||this.treeScale.y!==1)&&(f.target=f.layout.layoutBox,f.targetWithTransforms=Qe());const{target:x}=f;if(!x){this.prevProjectionDelta&&(this.createProjectionDeltas(),this.scheduleRender());return}!this.projectionDelta||!this.prevProjectionDelta?this.createProjectionDeltas():(jm(this.prevProjectionDelta.x,this.projectionDelta.x),jm(this.prevProjectionDelta.y,this.projectionDelta.y)),xs(this.projectionDelta,this.layoutCorrected,x,this.latestValues),(this.treeScale.x!==v||this.treeScale.y!==b||!$m(this.projectionDelta.x,this.prevProjectionDelta.x)||!$m(this.projectionDelta.y,this.prevProjectionDelta.y))&&(this.hasProjected=!0,this.scheduleRender(),this.notifyListeners("projectionUpdate",x))}hide(){this.isVisible=!1}show(){this.isVisible=!0}scheduleRender(f=!0){if(this.options.visualElement?.scheduleRender(),f){const h=this.getStack();h&&h.scheduleRender()}this.resumingFrom&&!this.resumingFrom.instance&&(this.resumingFrom=void 0)}createProjectionDeltas(){this.prevProjectionDelta=pa(),this.projectionDelta=pa(),this.projectionDeltaWithTransform=pa()}setAnimationOrigin(f,h=!1){const m=this.snapshot,_=m?m.latestValues:{},g={...this.latestValues},v=pa();(!this.relativeParent||!this.relativeParent.options.layoutRoot)&&(this.relativeTarget=this.relativeTargetOrigin=void 0),this.attemptToResolveRelativeTarget=!h;const b=Qe(),x=m?m.source:void 0,w=this.layout?this.layout.source:void 0,L=x!==w,V=this.getStack(),B=!V||V.members.length<=1,P=!!(L&&!B&&this.options.crossfade===!0&&!this.path.some(BR));this.animationProgress=0;let U;this.mixTargetDelta=H=>{const I=H/1e3;eg(v.x,f.x,I),eg(v.y,f.y,I),this.setTargetDelta(v),this.relativeTarget&&this.relativeTargetOrigin&&this.layout&&this.relativeParent&&this.relativeParent.layout&&(El(b,this.layout.layoutBox,this.relativeParent.layout.layoutBox,this.options.layoutAnchor||void 0),VR(this.relativeTarget,this.relativeTargetOrigin,b,I),U&&fR(this.relativeTarget,U)&&(this.isProjectionDirty=!1),U||(U=Qe()),Gt(U,this.relativeTarget)),L&&(this.animationValues=g,_R(g,_,this.latestValues,I,P,B)),this.root.scheduleUpdateProjection(),this.scheduleRender(),this.animationProgress=I},this.mixTargetDelta(this.options.layoutRoot?1e3:0)}startAnimation(f){this.notifyListeners("animationStart"),this.currentAnimation?.stop(),this.resumingFrom?.currentAnimation?.stop(),this.pendingAnimation&&(Zn(this.pendingAnimation),this.pendingAnimation=void 0),this.pendingAnimation=De.update(()=>{_l.hasAnimatedSinceResize=!0,this.motionValue||(this.motionValue=ga(0)),this.motionValue.jump(0,!1),this.currentAnimation=yR(this.motionValue,[0,1e3],{...f,velocity:0,isSync:!0,onUpdate:h=>{this.mixTargetDelta(h),f.onUpdate&&f.onUpdate(h)},onStop:()=>{},onComplete:()=>{f.onComplete&&f.onComplete(),this.completeAnimation()}}),this.resumingFrom&&(this.resumingFrom.currentAnimation=this.currentAnimation),this.pendingAnimation=void 0})}completeAnimation(){this.resumingFrom&&(this.resumingFrom.currentAnimation=void 0,this.resumingFrom.preserveOpacity=void 0);const f=this.getStack();f&&f.exitAnimationComplete(),this.resumingFrom=this.currentAnimation=this.animationValues=void 0,this.notifyListeners("animationComplete")}finishAnimation(){this.currentAnimation&&(this.mixTargetDelta&&this.mixTargetDelta(AR),this.currentAnimation.stop()),this.completeAnimation()}applyTransformsToTarget(){const f=this.getLead();let{targetWithTransforms:h,target:m,layout:_,latestValues:g}=f;if(!(!h||!m||!_)){if(this!==f&&this.layout&&_&&KT(this.options.animationType,this.layout.layoutBox,_.layoutBox)){m=this.target||Qe();const v=dt(this.layout.layoutBox.x);m.x.min=f.target.x.min,m.x.max=m.x.min+v;const b=dt(this.layout.layoutBox.y);m.y.min=f.target.y.min,m.y.max=m.y.min+b}Gt(h,m),hl(h,g),xs(this.projectionDeltaWithTransform,this.layoutCorrected,h,g)}}registerSharedNode(f,h){this.sharedNodes.has(f)||this.sharedNodes.set(f,new TR),this.sharedNodes.get(f).add(h);const _=h.options.initialPromotionConfig;h.promote({transition:_?_.transition:void 0,preserveFollowOpacity:_&&_.shouldPreserveFollowOpacity?_.shouldPreserveFollowOpacity(h):void 0})}isLead(){const f=this.getStack();return f?f.lead===this:!0}getLead(){const{layoutId:f}=this.options;return f?this.getStack()?.lead||this:this}getPrevLead(){const{layoutId:f}=this.options;return f?this.getStack()?.prevLead:void 0}getStack(){const{layoutId:f}=this.options;if(f)return this.root.sharedNodes.get(f)}promote({needsReset:f,transition:h,preserveFollowOpacity:m}={}){const _=this.getStack();_&&_.promote(this,m),f&&(this.projectionDelta=void 0,this.needsReset=!0),h&&this.setOptions({transition:h})}relegate(){const f=this.getStack();return f?f.relegate(this):!1}resetSkewAndRotation(){const{visualElement:f}=this.options;if(!f)return;let h=!1;const{latestValues:m}=f;if((m.z||m.rotate||m.rotateX||m.rotateY||m.rotateZ||m.skewX||m.skewY)&&(h=!0),!h)return;const _={};m.z&&gc("z",f,_,this.animationValues);for(let g=0;g<mc.length;g++)gc(`rotate${mc[g]}`,f,_,this.animationValues),gc(`skew${mc[g]}`,f,_,this.animationValues);f.render();for(const g in _)f.setStaticValue(g,_[g]),this.animationValues&&(this.animationValues[g]=_[g]);f.scheduleRender()}applyProjectionStyles(f,h){if(!this.instance||this.isSVG)return;if(!this.isVisible){f.visibility="hidden";return}const m=this.getTransformTemplate();if(this.needsReset){this.needsReset=!1,f.visibility="",f.opacity="",f.pointerEvents=pl(h?.pointerEvents)||"",f.transform=m?m(this.latestValues,""):"none";return}const _=this.getLead();if(!this.projectionDelta||!this.layout||!_.target){this.options.layoutId&&(f.opacity=this.latestValues.opacity!==void 0?this.latestValues.opacity:1,f.pointerEvents=pl(h?.pointerEvents)||""),this.hasProjected&&!vi(this.latestValues)&&(f.transform=m?m({},""):"none",this.hasProjected=!1);return}f.visibility="";const g=_.animationValues||_.latestValues;this.applyTransformsToTarget();let v=hR(this.projectionDeltaWithTransform,this.treeScale,g);m&&(v=m(g,v)),f.transform=v;const{x:b,y:x}=this.projectionDelta;f.transformOrigin=`${b.origin*100}% ${x.origin*100}% 0`,_.animationValues?f.opacity=_===this?g.opacity??this.latestValues.opacity??1:this.preserveOpacity?this.latestValues.opacity:g.opacityExit:f.opacity=_===this?g.opacity!==void 0?g.opacity:"":g.opacityExit!==void 0?g.opacityExit:0;for(const w in Xc){if(g[w]===void 0)continue;const{correct:L,applyTo:V,isCSSVariable:B}=Xc[w],P=v==="none"?g[w]:L(g[w],_);if(V){const U=V.length;for(let H=0;H<U;H++)f[V[H]]=P}else B?this.options.visualElement.renderState.vars[w]=P:f[w]=P}this.options.layoutId&&(f.pointerEvents=_===this?pl(h?.pointerEvents)||"":"none")}clearSnapshot(){this.resumeFrom=this.snapshot=void 0}resetTree(){this.root.nodes.forEach(f=>f.currentAnimation?.stop()),this.root.nodes.forEach(Zm),this.root.sharedNodes.clear()}}}function wR(a){a.updateLayout()}function ER(a){const i=a.resumeFrom?.snapshot||a.snapshot;if(a.isLead()&&a.layout&&i&&a.hasListeners("didUpdate")){const{layoutBox:o,measuredBox:l}=a.layout,{animationType:u}=a.options,d=i.source!==a.layout.source;if(u==="size")Wt(g=>{const v=d?i.measuredBox[g]:i.layoutBox[g],b=dt(v);v.min=o[g].min,v.max=v.min+b});else if(u==="x"||u==="y"){const g=u==="x"?"y":"x";Fc(d?i.measuredBox[g]:i.layoutBox[g],o[g])}else KT(u,i.layoutBox,o)&&Wt(g=>{const v=d?i.measuredBox[g]:i.layoutBox[g],b=dt(o[g]);v.max=v.min+b,a.relativeTarget&&!a.currentAnimation&&(a.isProjectionDirty=!0,a.relativeTarget[g].max=a.relativeTarget[g].min+b)});const f=pa();xs(f,o,i.layoutBox);const h=pa();d?xs(h,a.applyTransform(l,!0),i.measuredBox):xs(h,o,i.layoutBox);const m=!jT(f);let _=!1;if(!a.resumeFrom){const g=a.getClosestProjectingParent();if(g&&!g.resumeFrom){const{snapshot:v,layout:b}=g;if(v&&b){const x=a.options.layoutAnchor||void 0,w=Qe();El(w,i.layoutBox,v.layoutBox,x);const L=Qe();El(L,o,b.layoutBox,x),VT(w,L)||(_=!0),g.options.layoutRoot&&(a.relativeTarget=L,a.relativeTargetOrigin=w,a.relativeParent=g)}}}a.notifyListeners("didUpdate",{layout:o,snapshot:i,delta:h,layoutDelta:f,hasLayoutChanged:m,hasRelativeLayoutChanged:_})}else if(a.isLead()){const{onExitComplete:o}=a.options;o&&o()}a.options.transition=void 0}function OR(a){a.parent&&(a.isProjecting()||(a.isProjectionDirty=a.parent.isProjectionDirty),a.isSharedProjectionDirty||(a.isSharedProjectionDirty=!!(a.isProjectionDirty||a.parent.isProjectionDirty||a.parent.isSharedProjectionDirty)),a.isTransformDirty||(a.isTransformDirty=a.parent.isTransformDirty))}function CR(a){a.isProjectionDirty=a.isSharedProjectionDirty=a.isTransformDirty=!1}function kR(a){a.clearSnapshot()}function Zm(a){a.clearMeasurements()}function RR(a){a.isLayoutDirty=!0,a.updateLayout()}function Wm(a){a.isLayoutDirty=!1}function MR(a){a.isAnimationBlocked&&a.layout&&!a.isLayoutDirty&&(a.snapshot=a.layout,a.isLayoutDirty=!0)}function DR(a){const{visualElement:i}=a.options;i&&i.getProps().onBeforeLayoutMeasure&&i.notify("BeforeLayoutMeasure"),a.resetTransform()}function Jm(a){a.finishAnimation(),a.targetDelta=a.relativeTarget=a.target=void 0,a.isProjectionDirty=!0}function LR(a){a.resolveTargetDelta()}function zR(a){a.calcProjection()}function NR(a){a.resetSkewAndRotation()}function jR(a){a.removeLeadSnapshot()}function eg(a,i,o){a.translate=Ne(i.translate,0,o),a.scale=Ne(i.scale,1,o),a.origin=i.origin,a.originPoint=i.originPoint}function tg(a,i,o,l){a.min=Ne(i.min,o.min,l),a.max=Ne(i.max,o.max,l)}function VR(a,i,o,l){tg(a.x,i.x,o.x,l),tg(a.y,i.y,o.y,l)}function BR(a){return a.animationValues&&a.animationValues.opacityExit!==void 0}const UR={duration:.45,ease:[.4,0,.1,1]},ng=a=>typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().includes(a),ig=ng("applewebkit/")&&!ng("chrome/")?Math.round:Pt;function ag(a){a.min=ig(a.min),a.max=ig(a.max)}function HR(a){ag(a.x),ag(a.y)}function KT(a,i,o){return a==="position"||a==="preserve-aspect"&&!lR(Im(i),Im(o),.2)}function PR(a){return a!==a.root&&a.scroll?.wasRoot}const KR=PT({attachResizeListener:(a,i)=>Rs(a,"resize",i),measureScroll:()=>({x:document.documentElement.scrollLeft||document.body?.scrollLeft||0,y:document.documentElement.scrollTop||document.body?.scrollTop||0}),checkIsScrollRoot:()=>!0}),yc={current:void 0},qT=PT({measureScroll:a=>({x:a.scrollLeft,y:a.scrollTop}),defaultParent:()=>{if(!yc.current){const a=new KR({});a.mount(window),a.setOptions({layoutScroll:!0}),yc.current=a}return yc.current},resetTransform:(a,i)=>{a.style.transform=i!==void 0?i:"none"},checkIsScrollRoot:a=>window.getComputedStyle(a).position==="fixed"}),Od=Y.createContext({transformPagePoint:a=>a,isStatic:!1,reducedMotion:"never"});function sg(a,i){if(typeof a=="function")return a(i);a!=null&&(a.current=i)}function qR(...a){return i=>{let o=!1;const l=a.map(u=>{const d=sg(u,i);return!o&&typeof d=="function"&&(o=!0),d});if(o)return()=>{for(let u=0;u<l.length;u++){const d=l[u];typeof d=="function"?d():sg(a[u],null)}}}}function YR(...a){return Y.useCallback(qR(...a),a)}class GR extends Y.Component{getSnapshotBeforeUpdate(i){const o=this.props.childRef.current;if(rl(o)&&i.isPresent&&!this.props.isPresent&&this.props.pop!==!1){const l=o.offsetParent,u=rl(l)&&l.offsetWidth||0,d=rl(l)&&l.offsetHeight||0,f=getComputedStyle(o),h=this.props.sizeRef.current;h.height=parseFloat(f.height),h.width=parseFloat(f.width),h.top=o.offsetTop,h.left=o.offsetLeft,h.right=u-h.width-h.left,h.bottom=d-h.height-h.top}return null}componentDidUpdate(){}render(){return this.props.children}}function IR({children:a,isPresent:i,anchorX:o,anchorY:l,root:u,pop:d}){const f=Y.useId(),h=Y.useRef(null),m=Y.useRef({width:0,height:0,top:0,left:0,right:0,bottom:0}),{nonce:_}=Y.useContext(Od),g=a.props?.ref??a?.ref,v=YR(h,g);return Y.useInsertionEffect(()=>{const{width:b,height:x,top:w,left:L,right:V,bottom:B}=m.current;if(i||d===!1||!h.current||!b||!x)return;const P=o==="left"?`left: ${L}`:`right: ${V}`,U=l==="bottom"?`bottom: ${B}`:`top: ${w}`;h.current.dataset.motionPopId=f;const H=document.createElement("style");_&&(H.nonce=_);const I=u??document.head;return I.appendChild(H),H.sheet&&H.sheet.insertRule(`
16
16
  [data-motion-pop-id="${f}"] {
17
17
  position: absolute !important;
18
18
  width: ${b}px !important;
@@ -20,4 +20,4 @@ AI 會自動挑出專有名詞、術語、人名、專案名,跳過日常常
20
20
  ${P}px !important;
21
21
  ${U}px !important;
22
22
  }
23
- `),()=>{h.current?.removeAttribute("data-motion-pop-id"),I.contains(H)&&I.removeChild(H)}},[i]),st.jsx(GR,{isPresent:i,childRef:h,sizeRef:m,pop:d,children:d===!1?a:Y.cloneElement(a,{ref:v})})}const $R=({children:a,initial:i,isPresent:o,onExitComplete:l,custom:u,presenceAffectsLayout:d,mode:f,anchorX:h,anchorY:m,root:_})=>{const g=td(XR),v=Y.useId();let b=!0,x=Y.useMemo(()=>(b=!1,{id:v,initial:i,isPresent:o,custom:u,onExitComplete:w=>{g.set(w,!0);for(const L of g.values())if(!L)return;l&&l()},register:w=>(g.set(w,!1),()=>g.delete(w))}),[o,g,l]);return d&&b&&(x={...x}),Y.useMemo(()=>{g.forEach((w,L)=>g.set(L,!1))},[o]),Y.useEffect(()=>{!o&&!g.size&&l&&l()},[o]),a=st.jsx(IR,{pop:f==="popLayout",isPresent:o,anchorX:h,anchorY:m,root:_,children:a}),st.jsx(kl.Provider,{value:x,children:a})};function XR(){return new Map}function YT(a=!0){const i=Y.useContext(kl);if(i===null)return[!0,null];const{isPresent:o,onExitComplete:l,register:u}=i,d=Y.useId();Y.useEffect(()=>{if(a)return u(d)},[a]);const f=Y.useCallback(()=>a&&l&&l(d),[d,l,a]);return!o&&l?[!1,f]:[!0]}const il=a=>a.key||"";function og(a){const i=[];return Y.Children.forEach(a,o=>{Y.isValidElement(o)&&i.push(o)}),i}const TD=({children:a,custom:i,initial:o=!0,onExitComplete:l,presenceAffectsLayout:u=!0,mode:d="sync",propagate:f=!1,anchorX:h="left",anchorY:m="top",root:_})=>{const[g,v]=YT(f),b=Y.useMemo(()=>og(a),[a]),x=f&&!g?[]:b.map(il),w=Y.useRef(!0),L=Y.useRef(b),V=td(()=>new Map),B=Y.useRef(new Set),[P,U]=Y.useState(b),[H,I]=Y.useState(b);y1(()=>{w.current=!1,L.current=b;for(let Z=0;Z<H.length;Z++){const ee=il(H[Z]);x.includes(ee)?(V.delete(ee),B.current.delete(ee)):V.get(ee)!==!0&&V.set(ee,!1)}},[H,x.length,x.join("-")]);const se=[];if(b!==P){let Z=[...b];for(let ee=0;ee<H.length;ee++){const $=H[ee],de=il($);x.includes(de)||(Z.splice(ee,0,$),se.push($))}return d==="wait"&&se.length&&(Z=se),I(og(Z)),U(b),null}const{forceRender:W}=Y.useContext(ed);return st.jsx(st.Fragment,{children:H.map(Z=>{const ee=il(Z),$=f&&!g?!1:b===H||x.includes(ee),de=()=>{if(B.current.has(ee))return;if(V.has(ee))B.current.add(ee),V.set(ee,!0);else return;let ye=!0;V.forEach(ve=>{ve||(ye=!1)}),ye&&(W?.(),I(L.current),f&&v?.(),l&&l())};return st.jsx($R,{isPresent:$,initial:!w.current||o?void 0:!1,custom:i,presenceAffectsLayout:u,mode:d,root:_,onExitComplete:$?void 0:de,anchorX:h,anchorY:m,children:Z},ee)})})},GT=Y.createContext({strict:!1}),lg={animation:["animate","variants","whileHover","whileTap","exit","whileInView","whileFocus","whileDrag"],exit:["exit"],drag:["drag","dragControls"],focus:["whileFocus"],hover:["whileHover","onHoverStart","onHoverEnd"],tap:["whileTap","onTap","onTapStart","onTapCancel"],pan:["onPan","onPanStart","onPanSessionStart","onPanEnd"],inView:["whileInView","onViewportEnter","onViewportLeave"],layout:["layout","layoutId"]};let rg=!1;function FR(){if(rg)return;const a={};for(const i in lg)a[i]={isEnabled:o=>lg[i].some(l=>!!o[l])};bT(a),rg=!0}function IT(){return FR(),Lk()}function QR(a){const i=IT();for(const o in a)i[o]={...i[o],...a[o]};bT(i)}const ZR=new Set(["animate","exit","variants","initial","style","values","variants","transition","transformTemplate","custom","inherit","onBeforeLayoutMeasure","onAnimationStart","onAnimationComplete","onUpdate","onDragStart","onDrag","onDragEnd","onMeasureDragConstraints","onDirectionLock","onDragTransitionEnd","_dragX","_dragY","onHoverStart","onHoverEnd","onViewportEnter","onViewportLeave","globalTapTarget","propagate","ignoreStrict","viewport"]);function Ol(a){return a.startsWith("while")||a.startsWith("drag")&&a!=="draggable"||a.startsWith("layout")||a.startsWith("onTap")||a.startsWith("onPan")||a.startsWith("onLayout")||ZR.has(a)}let $T=a=>!Ol(a);function WR(a){typeof a=="function"&&($T=i=>i.startsWith("on")?!Ol(i):a(i))}try{WR(require("@emotion/is-prop-valid").default)}catch{}function JR(a,i,o){const l={};for(const u in a)u==="values"&&typeof a.values=="object"||ot(a[u])||($T(u)||o===!0&&Ol(u)||!i&&!Ol(u)||a.draggable&&u.startsWith("onDrag"))&&(l[u]=a[u]);return l}const Ll=Y.createContext({});function eM(a,i){if(Dl(a)){const{initial:o,animate:l}=a;return{initial:o===!1||ks(o)?o:void 0,animate:ks(l)?l:void 0}}return a.inherit!==!1?i:{}}function tM(a){const{initial:i,animate:o}=eM(a,Y.useContext(Ll));return Y.useMemo(()=>({initial:i,animate:o}),[ug(i),ug(o)])}function ug(a){return Array.isArray(a)?a.join(" "):a}const Cd=()=>({style:{},transform:{},transformOrigin:{},vars:{}});function XT(a,i,o){for(const l in i)!ot(i[l])&&!OT(l,o)&&(a[l]=i[l])}function nM({transformTemplate:a},i){return Y.useMemo(()=>{const o=Cd();return wd(o,i,a),Object.assign({},o.vars,o.style)},[i])}function iM(a,i){const o=a.style||{},l={};return XT(l,o,a),Object.assign(l,nM(a,i)),l}function aM(a,i){const o={},l=iM(a,i);return a.drag&&a.dragListener!==!1&&(o.draggable=!1,l.userSelect=l.WebkitUserSelect=l.WebkitTouchCallout="none",l.touchAction=a.drag===!0?"none":`pan-${a.drag==="x"?"y":"x"}`),a.tabIndex===void 0&&(a.onTap||a.onTapStart||a.whileTap)&&(o.tabIndex=0),o.style=l,o}const FT=()=>({...Cd(),attrs:{}});function sM(a,i,o,l){const u=Y.useMemo(()=>{const d=FT();return CT(d,i,RT(l),a.transformTemplate,a.style),{...d.attrs,style:{...d.style}}},[i]);if(a.style){const d={};XT(d,a.style,a),u.style={...d,...u.style}}return u}const oM=["animate","circle","defs","desc","ellipse","g","image","line","filter","marker","mask","metadata","path","pattern","polygon","polyline","rect","stop","switch","symbol","svg","text","tspan","use","view"];function kd(a){return typeof a!="string"||a.includes("-")?!1:!!(oM.indexOf(a)>-1||/[A-Z]/u.test(a))}function lM(a,i,o,{latestValues:l},u,d=!1,f){const m=(f??kd(a)?sM:aM)(i,l,u,a),_=JR(i,typeof a=="string",d),g=a!==Y.Fragment?{..._,...m,ref:o}:{},{children:v}=i,b=Y.useMemo(()=>ot(v)?v.get():v,[v]);return Y.createElement(a,{...g,children:b})}function rM({scrapeMotionValuesFromProps:a,createRenderState:i},o,l,u){return{latestValues:uM(o,l,u,a),renderState:i()}}function uM(a,i,o,l){const u={},d=l(a,{});for(const b in d)u[b]=pl(d[b]);let{initial:f,animate:h}=a;const m=Dl(a),_=yT(a);i&&_&&!m&&a.inherit!==!1&&(f===void 0&&(f=i.initial),h===void 0&&(h=i.animate));let g=o?o.initial===!1:!1;g=g||f===!1;const v=g?h:f;if(v&&typeof v!="boolean"&&!Ml(v)){const b=Array.isArray(v)?v:[v];for(let x=0;x<b.length;x++){const w=gd(a,b[x]);if(w){const{transitionEnd:L,transition:V,...B}=w;for(const P in B){let U=B[P];if(Array.isArray(U)){const H=g?U.length-1:0;U=U[H]}U!==null&&(u[P]=U)}for(const P in L)u[P]=L[P]}}}return u}const QT=a=>(i,o)=>{const l=Y.useContext(Ll),u=Y.useContext(kl),d=()=>rM(a,i,l,u);return o?d():td(d)},cM=QT({scrapeMotionValuesFromProps:Ed,createRenderState:Cd}),dM=QT({scrapeMotionValuesFromProps:MT,createRenderState:FT}),fM=Symbol.for("motionComponentSymbol");function hM(a,i,o){const l=Y.useRef(o);Y.useInsertionEffect(()=>{l.current=o});const u=Y.useRef(null);return Y.useCallback(d=>{d&&a.onMount?.(d);const f=l.current;if(typeof f=="function")if(d){const h=f(d);typeof h=="function"&&(u.current=h)}else u.current?(u.current(),u.current=null):f(d);else f&&(f.current=d);i&&(d?i.mount(d):i.unmount())},[i])}const ZT=Y.createContext({});function da(a){return a&&typeof a=="object"&&Object.prototype.hasOwnProperty.call(a,"current")}function pM(a,i,o,l,u,d){const{visualElement:f}=Y.useContext(Ll),h=Y.useContext(GT),m=Y.useContext(kl),_=Y.useContext(Od),g=_.reducedMotion,v=_.skipAnimations,b=Y.useRef(null),x=Y.useRef(!1);l=l||h.renderer,!b.current&&l&&(b.current=l(a,{visualState:i,parent:f,props:o,presenceContext:m,blockInitialAnimation:m?m.initial===!1:!1,reducedMotionConfig:g,skipAnimations:v,isSVG:d}),x.current&&b.current&&(b.current.manuallyAnimateOnMount=!0));const w=b.current,L=Y.useContext(ZT);w&&!w.projection&&u&&(w.type==="html"||w.type==="svg")&&_M(b.current,o,u,L);const V=Y.useRef(!1);Y.useInsertionEffect(()=>{w&&V.current&&w.update(o,m)});const B=o[sT],P=Y.useRef(!!B&&typeof window<"u"&&!window.MotionHandoffIsComplete?.(B)&&window.MotionHasOptimisedAnimation?.(B));return y1(()=>{x.current=!0,w&&(V.current=!0,window.MotionIsMounted=!0,w.updateFeatures(),w.scheduleRenderMicrotask(),P.current&&w.animationState&&w.animationState.animateChanges())}),Y.useEffect(()=>{w&&(!P.current&&w.animationState&&w.animationState.animateChanges(),P.current&&(queueMicrotask(()=>{window.MotionHandoffMarkAsComplete?.(B)}),P.current=!1),w.enteringChildren=void 0)}),w}function _M(a,i,o,l){const{layoutId:u,layout:d,drag:f,dragConstraints:h,layoutScroll:m,layoutRoot:_,layoutAnchor:g,layoutCrossfade:v}=i;a.projection=new o(a.latestValues,i["data-framer-portal-id"]?void 0:WT(a.parent)),a.projection.setOptions({layoutId:u,layout:d,alwaysMeasureLayout:!!f||h&&da(h),visualElement:a,animationType:typeof d=="string"?d:"both",initialPromotionConfig:l,crossfade:v,layoutScroll:m,layoutRoot:_,layoutAnchor:g})}function WT(a){if(a)return a.options.allowProjection!==!1?a.projection:WT(a.parent)}function vc(a,{forwardMotionProps:i=!1,type:o}={},l,u){l&&QR(l);const d=o?o==="svg":kd(a),f=d?dM:cM;function h(_,g){let v;const b={...Y.useContext(Od),..._,layoutId:mM(_)},{isStatic:x}=b,w=tM(_),L=f(_,x);if(!x&&typeof window<"u"){gM();const V=yM(b);v=V.MeasureLayout,w.visualElement=pM(a,L,b,u,V.ProjectionNode,d)}return st.jsxs(Ll.Provider,{value:w,children:[v&&w.visualElement?st.jsx(v,{visualElement:w.visualElement,...b}):null,lM(a,_,hM(L,w.visualElement,g),L,x,i,d)]})}h.displayName=`motion.${typeof a=="string"?a:`create(${a.displayName??a.name??""})`}`;const m=Y.forwardRef(h);return m[fM]=a,m}function mM({layoutId:a}){const i=Y.useContext(ed).id;return i&&a!==void 0?i+"-"+a:a}function gM(a,i){Y.useContext(GT).strict}function yM(a){const i=IT(),{drag:o,layout:l}=i;if(!o&&!l)return{};const u={...o,...l};return{MeasureLayout:o?.isEnabled(a)||l?.isEnabled(a)?u.MeasureLayout:void 0,ProjectionNode:u.ProjectionNode}}function vM(a,i){if(typeof Proxy>"u")return vc;const o=new Map,l=(d,f)=>vc(d,f,a,i),u=(d,f)=>l(d,f);return new Proxy(u,{get:(d,f)=>f==="create"?l:(o.has(f)||o.set(f,vc(f,void 0,a,i)),o.get(f))})}const bM=(a,i)=>i.isSVG??kd(a)?new Qk(i):new Yk(i,{allowProjection:a!==Y.Fragment});class SM extends Wn{constructor(i){super(i),i.animationState||(i.animationState=tR(i))}updateAnimationControlsSubscription(){const{animate:i}=this.node.getProps();Ml(i)&&(this.unmountControls=i.subscribe(this.node))}mount(){this.updateAnimationControlsSubscription()}update(){const{animate:i}=this.node.getProps(),{animate:o}=this.node.prevProps||{};i!==o&&this.updateAnimationControlsSubscription()}unmount(){this.node.animationState.reset(),this.unmountControls?.()}}let TM=0;class AM extends Wn{constructor(){super(...arguments),this.id=TM++,this.isExitComplete=!1}update(){if(!this.node.presenceContext)return;const{isPresent:i,onExitComplete:o}=this.node.presenceContext,{isPresent:l}=this.node.prevPresenceContext||{};if(!this.node.animationState||i===l)return;if(i&&l===!1){if(this.isExitComplete){const{initial:d,custom:f}=this.node.getProps();if(typeof d=="string"){const h=xi(this.node,d,f);if(h){const{transition:m,transitionEnd:_,...g}=h;for(const v in g)this.node.getValue(v)?.jump(g[v])}}this.node.animationState.reset(),this.node.animationState.animateChanges()}else this.node.animationState.setActive("exit",!1);this.isExitComplete=!1;return}const u=this.node.animationState.setActive("exit",!i);o&&!i&&u.then(()=>{this.isExitComplete=!0,o(this.id)})}mount(){const{register:i,onExitComplete:o}=this.node.presenceContext||{};o&&o(this.id),i&&(this.unmount=i(this.id))}unmount(){}}const xM={animation:{Feature:SM},exit:{Feature:AM}};function zs(a){return{point:{x:a.pageX,y:a.pageY}}}const wM=a=>i=>Sd(i)&&a(i,zs(i));function ws(a,i,o,l){return Rs(a,i,wM(o),l)}const JT=({current:a})=>a?a.ownerDocument.defaultView:null,cg=(a,i)=>Math.abs(a-i);function EM(a,i){const o=cg(a.x,i.x),l=cg(a.y,i.y);return Math.sqrt(o**2+l**2)}const dg=new Set(["auto","scroll"]);class eA{constructor(i,o,{transformPagePoint:l,contextWindow:u=window,dragSnapToOrigin:d=!1,distanceThreshold:f=3,element:h}={}){if(this.startEvent=null,this.lastMoveEvent=null,this.lastMoveEventInfo=null,this.lastRawMoveEventInfo=null,this.handlers={},this.contextWindow=window,this.scrollPositions=new Map,this.removeScrollListeners=null,this.onElementScroll=x=>{this.handleScroll(x.target)},this.onWindowScroll=()=>{this.handleScroll(window)},this.updatePoint=()=>{if(!(this.lastMoveEvent&&this.lastMoveEventInfo))return;this.lastRawMoveEventInfo&&(this.lastMoveEventInfo=al(this.lastRawMoveEventInfo,this.transformPagePoint));const x=bc(this.lastMoveEventInfo,this.history),w=this.startEvent!==null,L=EM(x.offset,{x:0,y:0})>=this.distanceThreshold;if(!w&&!L)return;const{point:V}=x,{timestamp:B}=at;this.history.push({...V,timestamp:B});const{onStart:P,onMove:U}=this.handlers;w||(P&&P(this.lastMoveEvent,x),this.startEvent=this.lastMoveEvent),U&&U(this.lastMoveEvent,x)},this.handlePointerMove=(x,w)=>{this.lastMoveEvent=x,this.lastRawMoveEventInfo=w,this.lastMoveEventInfo=al(w,this.transformPagePoint),De.update(this.updatePoint,!0)},this.handlePointerUp=(x,w)=>{this.end();const{onEnd:L,onSessionEnd:V,resumeAnimation:B}=this.handlers;if((this.dragSnapToOrigin||!this.startEvent)&&B&&B(),!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const P=bc(x.type==="pointercancel"?this.lastMoveEventInfo:al(w,this.transformPagePoint),this.history);this.startEvent&&L&&L(x,P),V&&V(x,P)},!Sd(i))return;this.dragSnapToOrigin=d,this.handlers=o,this.transformPagePoint=l,this.distanceThreshold=f,this.contextWindow=u||window;const m=zs(i),_=al(m,this.transformPagePoint),{point:g}=_,{timestamp:v}=at;this.history=[{...g,timestamp:v}];const{onSessionStart:b}=o;b&&b(i,bc(_,this.history)),this.removeListeners=Ms(ws(this.contextWindow,"pointermove",this.handlePointerMove),ws(this.contextWindow,"pointerup",this.handlePointerUp),ws(this.contextWindow,"pointercancel",this.handlePointerUp)),h&&this.startScrollTracking(h)}startScrollTracking(i){let o=i.parentElement;for(;o;){const l=getComputedStyle(o);(dg.has(l.overflowX)||dg.has(l.overflowY))&&this.scrollPositions.set(o,{x:o.scrollLeft,y:o.scrollTop}),o=o.parentElement}this.scrollPositions.set(window,{x:window.scrollX,y:window.scrollY}),window.addEventListener("scroll",this.onElementScroll,{capture:!0}),window.addEventListener("scroll",this.onWindowScroll),this.removeScrollListeners=()=>{window.removeEventListener("scroll",this.onElementScroll,{capture:!0}),window.removeEventListener("scroll",this.onWindowScroll)}}handleScroll(i){const o=this.scrollPositions.get(i);if(!o)return;const l=i===window,u=l?{x:window.scrollX,y:window.scrollY}:{x:i.scrollLeft,y:i.scrollTop},d={x:u.x-o.x,y:u.y-o.y};d.x===0&&d.y===0||(l?this.lastMoveEventInfo&&(this.lastMoveEventInfo.point.x+=d.x,this.lastMoveEventInfo.point.y+=d.y):this.history.length>0&&(this.history[0].x-=d.x,this.history[0].y-=d.y),this.scrollPositions.set(i,u),De.update(this.updatePoint,!0))}updateHandlers(i){this.handlers=i}end(){this.removeListeners&&this.removeListeners(),this.removeScrollListeners&&this.removeScrollListeners(),this.scrollPositions.clear(),Zn(this.updatePoint)}}function al(a,i){return i?{point:i(a.point)}:a}function fg(a,i){return{x:a.x-i.x,y:a.y-i.y}}function bc({point:a},i){return{point:a,delta:fg(a,tA(i)),offset:fg(a,OM(i)),velocity:CM(i,.1)}}function OM(a){return a[0]}function tA(a){return a[a.length-1]}function CM(a,i){if(a.length<2)return{x:0,y:0};let o=a.length-1,l=null;const u=tA(a);for(;o>=0&&(l=a[o],!(u.timestamp-l.timestamp>kt(i)));)o--;if(!l)return{x:0,y:0};l===a[0]&&a.length>2&&u.timestamp-l.timestamp>kt(i)*2&&(l=a[1]);const d=Ht(u.timestamp-l.timestamp);if(d===0)return{x:0,y:0};const f={x:(u.x-l.x)/d,y:(u.y-l.y)/d};return f.x===1/0&&(f.x=0),f.y===1/0&&(f.y=0),f}function kM(a,{min:i,max:o},l){return i!==void 0&&a<i?a=l?Ne(i,a,l.min):Math.max(a,i):o!==void 0&&a>o&&(a=l?Ne(o,a,l.max):Math.min(a,o)),a}function hg(a,i,o){return{min:i!==void 0?a.min+i:void 0,max:o!==void 0?a.max+o-(a.max-a.min):void 0}}function RM(a,{top:i,left:o,bottom:l,right:u}){return{x:hg(a.x,o,u),y:hg(a.y,i,l)}}function pg(a,i){let o=i.min-a.min,l=i.max-a.max;return i.max-i.min<a.max-a.min&&([o,l]=[l,o]),{min:o,max:l}}function MM(a,i){return{x:pg(a.x,i.x),y:pg(a.y,i.y)}}function DM(a,i){let o=.5;const l=dt(a),u=dt(i);return u>l?o=Os(i.min,i.max-l,a.min):l>u&&(o=Os(a.min,a.max-u,i.min)),nn(0,1,o)}function LM(a,i){const o={};return i.min!==void 0&&(o.min=i.min-a.min),i.max!==void 0&&(o.max=i.max-a.min),o}const Qc=.35;function zM(a=Qc){return a===!1?a=0:a===!0&&(a=Qc),{x:_g(a,"left","right"),y:_g(a,"top","bottom")}}function _g(a,i,o){return{min:mg(a,i),max:mg(a,o)}}function mg(a,i){return typeof a=="number"?a:a[i]||0}const NM=new WeakMap;class jM{constructor(i){this.openDragLock=null,this.isDragging=!1,this.currentDirection=null,this.originPoint={x:0,y:0},this.constraints=!1,this.hasMutatedConstraints=!1,this.elastic=Qe(),this.latestPointerEvent=null,this.latestPanInfo=null,this.visualElement=i}start(i,{snapToCursor:o=!1,distanceThreshold:l}={}){const{presenceContext:u}=this.visualElement;if(u&&u.isPresent===!1)return;const d=v=>{o&&this.snapToCursor(zs(v).point),this.stopAnimation()},f=(v,b)=>{const{drag:x,dragPropagation:w,onDragStart:L}=this.getProps();if(x&&!w&&(this.openDragLock&&this.openDragLock(),this.openDragLock=uk(x),!this.openDragLock))return;this.latestPointerEvent=v,this.latestPanInfo=b,this.isDragging=!0,this.currentDirection=null,this.resolveConstraints(),this.visualElement.projection&&(this.visualElement.projection.isAnimationBlocked=!0,this.visualElement.projection.target=void 0),Wt(B=>{let P=this.getAxisMotionValue(B).get()||0;if(tn.test(P)){const{projection:U}=this.visualElement;if(U&&U.layout){const H=U.layout.layoutBox[B];H&&(P=dt(H)*(parseFloat(P)/100))}}this.originPoint[B]=P}),L&&De.update(()=>L(v,b),!1,!0),Pc(this.visualElement,"transform");const{animationState:V}=this.visualElement;V&&V.setActive("whileDrag",!0)},h=(v,b)=>{this.latestPointerEvent=v,this.latestPanInfo=b;const{dragPropagation:x,dragDirectionLock:w,onDirectionLock:L,onDrag:V}=this.getProps();if(!x&&!this.openDragLock)return;const{offset:B}=b;if(w&&this.currentDirection===null){this.currentDirection=BM(B),this.currentDirection!==null&&L&&L(this.currentDirection);return}this.updateAxis("x",b.point,B),this.updateAxis("y",b.point,B),this.visualElement.render(),V&&De.update(()=>V(v,b),!1,!0)},m=(v,b)=>{this.latestPointerEvent=v,this.latestPanInfo=b,this.stop(v,b),this.latestPointerEvent=null,this.latestPanInfo=null},_=()=>{const{dragSnapToOrigin:v}=this.getProps();(v||this.constraints)&&this.startAnimation({x:0,y:0})},{dragSnapToOrigin:g}=this.getProps();this.panSession=new eA(i,{onSessionStart:d,onStart:f,onMove:h,onSessionEnd:m,resumeAnimation:_},{transformPagePoint:this.visualElement.getTransformPagePoint(),dragSnapToOrigin:g,distanceThreshold:l,contextWindow:JT(this.visualElement),element:this.visualElement.current})}stop(i,o){const l=i||this.latestPointerEvent,u=o||this.latestPanInfo,d=this.isDragging;if(this.cancel(),!d||!u||!l)return;const{velocity:f}=u;this.startAnimation(f);const{onDragEnd:h}=this.getProps();h&&De.postRender(()=>h(l,u))}cancel(){this.isDragging=!1;const{projection:i,animationState:o}=this.visualElement;i&&(i.isAnimationBlocked=!1),this.endPanSession();const{dragPropagation:l}=this.getProps();!l&&this.openDragLock&&(this.openDragLock(),this.openDragLock=null),o&&o.setActive("whileDrag",!1)}endPanSession(){this.panSession&&this.panSession.end(),this.panSession=void 0}updateAxis(i,o,l){const{drag:u}=this.getProps();if(!l||!sl(i,u,this.currentDirection))return;const d=this.getAxisMotionValue(i);let f=this.originPoint[i]+l[i];this.constraints&&this.constraints[i]&&(f=kM(f,this.constraints[i],this.elastic[i])),d.set(f)}resolveConstraints(){const{dragConstraints:i,dragElastic:o}=this.getProps(),l=this.visualElement.projection&&!this.visualElement.projection.layout?this.visualElement.projection.measure(!1):this.visualElement.projection?.layout,u=this.constraints;i&&da(i)?this.constraints||(this.constraints=this.resolveRefConstraints()):i&&l?this.constraints=RM(l.layoutBox,i):this.constraints=!1,this.elastic=zM(o),u!==this.constraints&&!da(i)&&l&&this.constraints&&!this.hasMutatedConstraints&&Wt(d=>{this.constraints!==!1&&this.getAxisMotionValue(d)&&(this.constraints[d]=LM(l.layoutBox[d],this.constraints[d]))})}resolveRefConstraints(){const{dragConstraints:i,onMeasureDragConstraints:o}=this.getProps();if(!i||!da(i))return!1;const l=i.current,{projection:u}=this.visualElement;if(!u||!u.layout)return!1;const d=Bk(l,u.root,this.visualElement.getTransformPagePoint());let f=MM(u.layout.layoutBox,d);if(o){const h=o(Nk(f));this.hasMutatedConstraints=!!h,h&&(f=TT(h))}return f}startAnimation(i){const{drag:o,dragMomentum:l,dragElastic:u,dragTransition:d,dragSnapToOrigin:f,onDragTransitionEnd:h}=this.getProps(),m=this.constraints||{},_=Wt(g=>{if(!sl(g,o,this.currentDirection))return;let v=m&&m[g]||{};(f===!0||f===g)&&(v={min:0,max:0});const b=u?200:1e6,x=u?40:1e7,w={type:"inertia",velocity:l?i[g]:0,bounceStiffness:b,bounceDamping:x,timeConstant:750,restDelta:1,restSpeed:10,...d,...v};return this.startAxisValueAnimation(g,w)});return Promise.all(_).then(h)}startAxisValueAnimation(i,o){const l=this.getAxisMotionValue(i);return Pc(this.visualElement,i),l.start(md(i,l,0,o,this.visualElement,!1))}stopAnimation(){Wt(i=>this.getAxisMotionValue(i).stop())}getAxisMotionValue(i){const o=`_drag${i.toUpperCase()}`,l=this.visualElement.getProps(),u=l[o];return u||this.visualElement.getValue(i,(l.initial?l.initial[i]:void 0)||0)}snapToCursor(i){Wt(o=>{const{drag:l}=this.getProps();if(!sl(o,l,this.currentDirection))return;const{projection:u}=this.visualElement,d=this.getAxisMotionValue(o);if(u&&u.layout){const{min:f,max:h}=u.layout.layoutBox[o],m=d.get()||0;d.set(i[o]-Ne(f,h,.5)+m)}})}scalePositionWithinConstraints(){if(!this.visualElement.current)return;const{drag:i,dragConstraints:o}=this.getProps(),{projection:l}=this.visualElement;if(!da(o)||!l||!this.constraints)return;this.stopAnimation();const u={x:0,y:0};Wt(f=>{const h=this.getAxisMotionValue(f);if(h&&this.constraints!==!1){const m=h.get();u[f]=DM({min:m,max:m},this.constraints[f])}});const{transformTemplate:d}=this.visualElement.getProps();this.visualElement.current.style.transform=d?d({},""):"none",l.root&&l.root.updateScroll(),l.updateLayout(),this.constraints=!1,this.resolveConstraints(),Wt(f=>{if(!sl(f,i,null))return;const h=this.getAxisMotionValue(f),{min:m,max:_}=this.constraints[f];h.set(Ne(m,_,u[f]))}),this.visualElement.render()}addListeners(){if(!this.visualElement.current)return;NM.set(this.visualElement,this);const i=this.visualElement.current,o=ws(i,"pointerdown",_=>{const{drag:g,dragListener:v=!0}=this.getProps(),b=_.target,x=b!==i&&_k(b);g&&v&&!x&&this.start(_)});let l;const u=()=>{const{dragConstraints:_}=this.getProps();da(_)&&_.current&&(this.constraints=this.resolveRefConstraints(),l||(l=VM(i,_.current,()=>this.scalePositionWithinConstraints())))},{projection:d}=this.visualElement,f=d.addEventListener("measure",u);d&&!d.layout&&(d.root&&d.root.updateScroll(),d.updateLayout()),De.read(u);const h=Rs(window,"resize",()=>this.scalePositionWithinConstraints()),m=d.addEventListener("didUpdate",(({delta:_,hasLayoutChanged:g})=>{this.isDragging&&g&&(Wt(v=>{const b=this.getAxisMotionValue(v);b&&(this.originPoint[v]+=_[v].translate,b.set(b.get()+_[v].translate))}),this.visualElement.render())}));return()=>{h(),o(),f(),m&&m(),l&&l()}}getProps(){const i=this.visualElement.getProps(),{drag:o=!1,dragDirectionLock:l=!1,dragPropagation:u=!1,dragConstraints:d=!1,dragElastic:f=Qc,dragMomentum:h=!0}=i;return{...i,drag:o,dragDirectionLock:l,dragPropagation:u,dragConstraints:d,dragElastic:f,dragMomentum:h}}}function gg(a){let i=!0;return()=>{if(i){i=!1;return}a()}}function VM(a,i,o){const l=xm(a,gg(o)),u=xm(i,gg(o));return()=>{l(),u()}}function sl(a,i,o){return(i===!0||i===a)&&(o===null||o===a)}function BM(a,i=10){let o=null;return Math.abs(a.y)>i?o="y":Math.abs(a.x)>i&&(o="x"),o}class UM extends Wn{constructor(i){super(i),this.removeGroupControls=Pt,this.removeListeners=Pt,this.controls=new jM(i)}mount(){const{dragControls:i}=this.node.getProps();i&&(this.removeGroupControls=i.subscribe(this.controls)),this.removeListeners=this.controls.addListeners()||Pt}update(){const{dragControls:i}=this.node.getProps(),{dragControls:o}=this.node.prevProps||{};i!==o&&(this.removeGroupControls(),i&&(this.removeGroupControls=i.subscribe(this.controls)))}unmount(){this.removeGroupControls(),this.removeListeners(),this.controls.isDragging||this.controls.endPanSession()}}const Sc=a=>(i,o)=>{a&&De.update(()=>a(i,o),!1,!0)};class HM extends Wn{constructor(){super(...arguments),this.removePointerDownListener=Pt}onPointerDown(i){this.session=new eA(i,this.createPanHandlers(),{transformPagePoint:this.node.getTransformPagePoint(),contextWindow:JT(this.node)})}createPanHandlers(){const{onPanSessionStart:i,onPanStart:o,onPan:l,onPanEnd:u}=this.node.getProps();return{onSessionStart:Sc(i),onStart:Sc(o),onMove:Sc(l),onEnd:(d,f)=>{delete this.session,u&&De.postRender(()=>u(d,f))}}}mount(){this.removePointerDownListener=ws(this.node.current,"pointerdown",i=>this.onPointerDown(i))}update(){this.session&&this.session.updateHandlers(this.createPanHandlers())}unmount(){this.removePointerDownListener(),this.session&&this.session.end()}}let Tc=!1;class PM extends Y.Component{componentDidMount(){const{visualElement:i,layoutGroup:o,switchLayoutGroup:l,layoutId:u}=this.props,{projection:d}=i;d&&(o.group&&o.group.add(d),l&&l.register&&u&&l.register(d),Tc&&d.root.didUpdate(),d.addEventListener("animationComplete",()=>{this.safeToRemove()}),d.setOptions({...d.options,layoutDependency:this.props.layoutDependency,onExitComplete:()=>this.safeToRemove()})),_l.hasEverUpdated=!0}getSnapshotBeforeUpdate(i){const{layoutDependency:o,visualElement:l,drag:u,isPresent:d}=this.props,{projection:f}=l;return f&&(f.isPresent=d,i.layoutDependency!==o&&f.setOptions({...f.options,layoutDependency:o}),Tc=!0,u||i.layoutDependency!==o||o===void 0||i.isPresent!==d?f.willUpdate():this.safeToRemove(),i.isPresent!==d&&(d?f.promote():f.relegate()||De.postRender(()=>{const h=f.getStack();(!h||!h.members.length)&&this.safeToRemove()}))),null}componentDidUpdate(){const{visualElement:i,layoutAnchor:o}=this.props,{projection:l}=i;l&&(l.options.layoutAnchor=o,l.root.didUpdate(),bd.postRender(()=>{!l.currentAnimation&&l.isLead()&&this.safeToRemove()}))}componentWillUnmount(){const{visualElement:i,layoutGroup:o,switchLayoutGroup:l}=this.props,{projection:u}=i;Tc=!0,u&&(u.scheduleCheckAfterUnmount(),o&&o.group&&o.group.remove(u),l&&l.deregister&&l.deregister(u))}safeToRemove(){const{safeToRemove:i}=this.props;i&&i()}render(){return null}}function nA(a){const[i,o]=YT(),l=Y.useContext(ed);return st.jsx(PM,{...a,layoutGroup:l,switchLayoutGroup:Y.useContext(ZT),isPresent:i,safeToRemove:o})}const KM={pan:{Feature:HM},drag:{Feature:UM,ProjectionNode:qT,MeasureLayout:nA}};function yg(a,i,o){const{props:l}=a;a.animationState&&l.whileHover&&a.animationState.setActive("whileHover",o==="Start");const u="onHover"+o,d=l[u];d&&De.postRender(()=>d(i,zs(i)))}class qM extends Wn{mount(){const{current:i}=this.node;i&&(this.unmount=dk(i,(o,l)=>(yg(this.node,l,"Start"),u=>yg(this.node,u,"End"))))}unmount(){}}class YM extends Wn{constructor(){super(...arguments),this.isActive=!1}onFocus(){let i=!1;try{i=this.node.current.matches(":focus-visible")}catch{i=!0}!i||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!0),this.isActive=!0)}onBlur(){!this.isActive||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!1),this.isActive=!1)}mount(){this.unmount=Ms(Rs(this.node.current,"focus",()=>this.onFocus()),Rs(this.node.current,"blur",()=>this.onBlur()))}unmount(){}}function vg(a,i,o){const{props:l}=a;if(a.current instanceof HTMLButtonElement&&a.current.disabled)return;a.animationState&&l.whileTap&&a.animationState.setActive("whileTap",o==="Start");const u="onTap"+(o==="End"?"":o),d=l[u];d&&De.postRender(()=>d(i,zs(i)))}class GM extends Wn{mount(){const{current:i}=this.node;if(!i)return;const{globalTapTarget:o,propagate:l}=this.node.props;this.unmount=gk(i,(u,d)=>(vg(this.node,d,"Start"),(f,{success:h})=>vg(this.node,f,h?"End":"Cancel")),{useGlobalTarget:o,stopPropagation:l?.tap===!1})}unmount(){}}const Zc=new WeakMap,Ac=new WeakMap,IM=a=>{const i=Zc.get(a.target);i&&i(a)},$M=a=>{a.forEach(IM)};function XM({root:a,...i}){const o=a||document;Ac.has(o)||Ac.set(o,{});const l=Ac.get(o),u=JSON.stringify(i);return l[u]||(l[u]=new IntersectionObserver($M,{root:a,...i})),l[u]}function FM(a,i,o){const l=XM(i);return Zc.set(a,o),l.observe(a),()=>{Zc.delete(a),l.unobserve(a)}}const QM={some:0,all:1};class ZM extends Wn{constructor(){super(...arguments),this.hasEnteredView=!1,this.isInView=!1}startObserver(){this.stopObserver?.();const{viewport:i={}}=this.node.getProps(),{root:o,margin:l,amount:u="some",once:d}=i,f={root:o?o.current:void 0,rootMargin:l,threshold:typeof u=="number"?u:QM[u]},h=m=>{const{isIntersecting:_}=m;if(this.isInView===_||(this.isInView=_,d&&!_&&this.hasEnteredView))return;_&&(this.hasEnteredView=!0),this.node.animationState&&this.node.animationState.setActive("whileInView",_);const{onViewportEnter:g,onViewportLeave:v}=this.node.getProps(),b=_?g:v;b&&b(m)};this.stopObserver=FM(this.node.current,f,h)}mount(){this.startObserver()}update(){if(typeof IntersectionObserver>"u")return;const{props:i,prevProps:o}=this.node;["amount","margin","root"].some(WM(i,o))&&this.startObserver()}unmount(){this.stopObserver?.(),this.hasEnteredView=!1,this.isInView=!1}}function WM({viewport:a={}},{viewport:i={}}={}){return o=>a[o]!==i[o]}const JM={inView:{Feature:ZM},tap:{Feature:GM},focus:{Feature:YM},hover:{Feature:qM}},eD={layout:{ProjectionNode:qT,MeasureLayout:nA}},tD={...xM,...JM,...KM,...eD},AD=vM(tD,bM);function iA(a,i){return!(a==="fn"||a==="meta"&&i==="windows")}function xD(a,i,o){return o&&iA(a,i)?o:null}function nD({size:a=14}){return st.jsxs("svg",{width:a,height:a,viewBox:"0 0 16 16",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg","aria-hidden":!0,children:[st.jsx("path",{d:"M1 3.5l5.5-.75v5.5H1V3.5z"}),st.jsx("path",{d:"M7.5 2.5L15 1v7H7.5V2.5z"}),st.jsx("path",{d:"M1 9h5.5v5.5L1 13.5V9z"}),st.jsx("path",{d:"M7.5 9H15v7l-7.5-1.5V9z"})]})}function wD(a,i,o=14){return a==="fn"?null:i==="macos"?a==="ctrl"?"⌃":a==="shift"?"⇧":a==="alt"?"⌥":a==="meta"?st.jsx(ZO,{size:o,strokeWidth:2.5}):null:a==="meta"?i==="windows"?st.jsx(nD,{size:o}):st.jsx(JO,{size:Math.max(o-2,8),strokeWidth:2.5}):null}const iD={Enter:"↵",Escape:"⎋",Tab:"⇥",Delete:"⌦",Space:"␣"};function ED(a){return iD[a]??null}const bg={Space:"Space",Enter:"Enter",Escape:"Esc",Tab:"Tab",Backspace:"Backspace",Delete:"Del",CapsLock:"Caps",ArrowUp:"↑",ArrowDown:"↓",ArrowLeft:"←",ArrowRight:"→"};function OD(a,i){const o=CO(a);if(o){const l=ol(o,i),u=kO(a);return u&&iA(o,i)?`${u==="left"?"Left":"Right"} ${l}`:l}return bg[a]?bg[a]:m1(a)}export{JC as $,TD as A,Ti as B,AD as C,xD as D,ol as E,Oc as F,m1 as G,wD as H,_D as I,aD as J,ED as K,OD as L,iD as M,mD as N,fD as O,oD as P,De as Q,sD as R,uD as S,Zn as T,bD as U,y2 as V,yD as W,vD as X,Os as Y,A1 as Z,rl as _,Nw as a,t2 as a0,nn as a1,Pt as a2,xm as a3,at as a4,td as a5,y1 as a6,id as a7,ga as a8,vT as a9,Dk as aa,Gc as ab,nD as ac,JO as ad,Mw as b,lD as c,rD as d,Wc as e,EO as f,Sg as g,wO as h,we as i,cD as j,_a as k,wi as l,gD as m,pD as n,st as o,RO as p,CO as q,Y as r,kO as s,dD as t,vO as u,LO as v,zO as w,jO as x,hD as y,OO as z};
23
+ `),()=>{h.current?.removeAttribute("data-motion-pop-id"),I.contains(H)&&I.removeChild(H)}},[i]),st.jsx(GR,{isPresent:i,childRef:h,sizeRef:m,pop:d,children:d===!1?a:Y.cloneElement(a,{ref:v})})}const $R=({children:a,initial:i,isPresent:o,onExitComplete:l,custom:u,presenceAffectsLayout:d,mode:f,anchorX:h,anchorY:m,root:_})=>{const g=td(XR),v=Y.useId();let b=!0,x=Y.useMemo(()=>(b=!1,{id:v,initial:i,isPresent:o,custom:u,onExitComplete:w=>{g.set(w,!0);for(const L of g.values())if(!L)return;l&&l()},register:w=>(g.set(w,!1),()=>g.delete(w))}),[o,g,l]);return d&&b&&(x={...x}),Y.useMemo(()=>{g.forEach((w,L)=>g.set(L,!1))},[o]),Y.useEffect(()=>{!o&&!g.size&&l&&l()},[o]),a=st.jsx(IR,{pop:f==="popLayout",isPresent:o,anchorX:h,anchorY:m,root:_,children:a}),st.jsx(kl.Provider,{value:x,children:a})};function XR(){return new Map}function YT(a=!0){const i=Y.useContext(kl);if(i===null)return[!0,null];const{isPresent:o,onExitComplete:l,register:u}=i,d=Y.useId();Y.useEffect(()=>{if(a)return u(d)},[a]);const f=Y.useCallback(()=>a&&l&&l(d),[d,l,a]);return!o&&l?[!1,f]:[!0]}const il=a=>a.key||"";function og(a){const i=[];return Y.Children.forEach(a,o=>{Y.isValidElement(o)&&i.push(o)}),i}const TD=({children:a,custom:i,initial:o=!0,onExitComplete:l,presenceAffectsLayout:u=!0,mode:d="sync",propagate:f=!1,anchorX:h="left",anchorY:m="top",root:_})=>{const[g,v]=YT(f),b=Y.useMemo(()=>og(a),[a]),x=f&&!g?[]:b.map(il),w=Y.useRef(!0),L=Y.useRef(b),V=td(()=>new Map),B=Y.useRef(new Set),[P,U]=Y.useState(b),[H,I]=Y.useState(b);y1(()=>{w.current=!1,L.current=b;for(let Z=0;Z<H.length;Z++){const ee=il(H[Z]);x.includes(ee)?(V.delete(ee),B.current.delete(ee)):V.get(ee)!==!0&&V.set(ee,!1)}},[H,x.length,x.join("-")]);const se=[];if(b!==P){let Z=[...b];for(let ee=0;ee<H.length;ee++){const $=H[ee],de=il($);x.includes(de)||(Z.splice(ee,0,$),se.push($))}return d==="wait"&&se.length&&(Z=se),I(og(Z)),U(b),null}const{forceRender:W}=Y.useContext(ed);return st.jsx(st.Fragment,{children:H.map(Z=>{const ee=il(Z),$=f&&!g?!1:b===H||x.includes(ee),de=()=>{if(B.current.has(ee))return;if(V.has(ee))B.current.add(ee),V.set(ee,!0);else return;let ye=!0;V.forEach(ve=>{ve||(ye=!1)}),ye&&(W?.(),I(L.current),f&&v?.(),l&&l())};return st.jsx($R,{isPresent:$,initial:!w.current||o?void 0:!1,custom:i,presenceAffectsLayout:u,mode:d,root:_,onExitComplete:$?void 0:de,anchorX:h,anchorY:m,children:Z},ee)})})},GT=Y.createContext({strict:!1}),lg={animation:["animate","variants","whileHover","whileTap","exit","whileInView","whileFocus","whileDrag"],exit:["exit"],drag:["drag","dragControls"],focus:["whileFocus"],hover:["whileHover","onHoverStart","onHoverEnd"],tap:["whileTap","onTap","onTapStart","onTapCancel"],pan:["onPan","onPanStart","onPanSessionStart","onPanEnd"],inView:["whileInView","onViewportEnter","onViewportLeave"],layout:["layout","layoutId"]};let rg=!1;function FR(){if(rg)return;const a={};for(const i in lg)a[i]={isEnabled:o=>lg[i].some(l=>!!o[l])};bT(a),rg=!0}function IT(){return FR(),Lk()}function QR(a){const i=IT();for(const o in a)i[o]={...i[o],...a[o]};bT(i)}const ZR=new Set(["animate","exit","variants","initial","style","values","variants","transition","transformTemplate","custom","inherit","onBeforeLayoutMeasure","onAnimationStart","onAnimationComplete","onUpdate","onDragStart","onDrag","onDragEnd","onMeasureDragConstraints","onDirectionLock","onDragTransitionEnd","_dragX","_dragY","onHoverStart","onHoverEnd","onViewportEnter","onViewportLeave","globalTapTarget","propagate","ignoreStrict","viewport"]);function Ol(a){return a.startsWith("while")||a.startsWith("drag")&&a!=="draggable"||a.startsWith("layout")||a.startsWith("onTap")||a.startsWith("onPan")||a.startsWith("onLayout")||ZR.has(a)}let $T=a=>!Ol(a);function WR(a){typeof a=="function"&&($T=i=>i.startsWith("on")?!Ol(i):a(i))}try{WR(require("@emotion/is-prop-valid").default)}catch{}function JR(a,i,o){const l={};for(const u in a)u==="values"&&typeof a.values=="object"||ot(a[u])||($T(u)||o===!0&&Ol(u)||!i&&!Ol(u)||a.draggable&&u.startsWith("onDrag"))&&(l[u]=a[u]);return l}const Ll=Y.createContext({});function eM(a,i){if(Dl(a)){const{initial:o,animate:l}=a;return{initial:o===!1||ks(o)?o:void 0,animate:ks(l)?l:void 0}}return a.inherit!==!1?i:{}}function tM(a){const{initial:i,animate:o}=eM(a,Y.useContext(Ll));return Y.useMemo(()=>({initial:i,animate:o}),[ug(i),ug(o)])}function ug(a){return Array.isArray(a)?a.join(" "):a}const Cd=()=>({style:{},transform:{},transformOrigin:{},vars:{}});function XT(a,i,o){for(const l in i)!ot(i[l])&&!OT(l,o)&&(a[l]=i[l])}function nM({transformTemplate:a},i){return Y.useMemo(()=>{const o=Cd();return wd(o,i,a),Object.assign({},o.vars,o.style)},[i])}function iM(a,i){const o=a.style||{},l={};return XT(l,o,a),Object.assign(l,nM(a,i)),l}function aM(a,i){const o={},l=iM(a,i);return a.drag&&a.dragListener!==!1&&(o.draggable=!1,l.userSelect=l.WebkitUserSelect=l.WebkitTouchCallout="none",l.touchAction=a.drag===!0?"none":`pan-${a.drag==="x"?"y":"x"}`),a.tabIndex===void 0&&(a.onTap||a.onTapStart||a.whileTap)&&(o.tabIndex=0),o.style=l,o}const FT=()=>({...Cd(),attrs:{}});function sM(a,i,o,l){const u=Y.useMemo(()=>{const d=FT();return CT(d,i,RT(l),a.transformTemplate,a.style),{...d.attrs,style:{...d.style}}},[i]);if(a.style){const d={};XT(d,a.style,a),u.style={...d,...u.style}}return u}const oM=["animate","circle","defs","desc","ellipse","g","image","line","filter","marker","mask","metadata","path","pattern","polygon","polyline","rect","stop","switch","symbol","svg","text","tspan","use","view"];function kd(a){return typeof a!="string"||a.includes("-")?!1:!!(oM.indexOf(a)>-1||/[A-Z]/u.test(a))}function lM(a,i,o,{latestValues:l},u,d=!1,f){const m=(f??kd(a)?sM:aM)(i,l,u,a),_=JR(i,typeof a=="string",d),g=a!==Y.Fragment?{..._,...m,ref:o}:{},{children:v}=i,b=Y.useMemo(()=>ot(v)?v.get():v,[v]);return Y.createElement(a,{...g,children:b})}function rM({scrapeMotionValuesFromProps:a,createRenderState:i},o,l,u){return{latestValues:uM(o,l,u,a),renderState:i()}}function uM(a,i,o,l){const u={},d=l(a,{});for(const b in d)u[b]=pl(d[b]);let{initial:f,animate:h}=a;const m=Dl(a),_=yT(a);i&&_&&!m&&a.inherit!==!1&&(f===void 0&&(f=i.initial),h===void 0&&(h=i.animate));let g=o?o.initial===!1:!1;g=g||f===!1;const v=g?h:f;if(v&&typeof v!="boolean"&&!Ml(v)){const b=Array.isArray(v)?v:[v];for(let x=0;x<b.length;x++){const w=gd(a,b[x]);if(w){const{transitionEnd:L,transition:V,...B}=w;for(const P in B){let U=B[P];if(Array.isArray(U)){const H=g?U.length-1:0;U=U[H]}U!==null&&(u[P]=U)}for(const P in L)u[P]=L[P]}}}return u}const QT=a=>(i,o)=>{const l=Y.useContext(Ll),u=Y.useContext(kl),d=()=>rM(a,i,l,u);return o?d():td(d)},cM=QT({scrapeMotionValuesFromProps:Ed,createRenderState:Cd}),dM=QT({scrapeMotionValuesFromProps:MT,createRenderState:FT}),fM=Symbol.for("motionComponentSymbol");function hM(a,i,o){const l=Y.useRef(o);Y.useInsertionEffect(()=>{l.current=o});const u=Y.useRef(null);return Y.useCallback(d=>{d&&a.onMount?.(d);const f=l.current;if(typeof f=="function")if(d){const h=f(d);typeof h=="function"&&(u.current=h)}else u.current?(u.current(),u.current=null):f(d);else f&&(f.current=d);i&&(d?i.mount(d):i.unmount())},[i])}const ZT=Y.createContext({});function da(a){return a&&typeof a=="object"&&Object.prototype.hasOwnProperty.call(a,"current")}function pM(a,i,o,l,u,d){const{visualElement:f}=Y.useContext(Ll),h=Y.useContext(GT),m=Y.useContext(kl),_=Y.useContext(Od),g=_.reducedMotion,v=_.skipAnimations,b=Y.useRef(null),x=Y.useRef(!1);l=l||h.renderer,!b.current&&l&&(b.current=l(a,{visualState:i,parent:f,props:o,presenceContext:m,blockInitialAnimation:m?m.initial===!1:!1,reducedMotionConfig:g,skipAnimations:v,isSVG:d}),x.current&&b.current&&(b.current.manuallyAnimateOnMount=!0));const w=b.current,L=Y.useContext(ZT);w&&!w.projection&&u&&(w.type==="html"||w.type==="svg")&&_M(b.current,o,u,L);const V=Y.useRef(!1);Y.useInsertionEffect(()=>{w&&V.current&&w.update(o,m)});const B=o[sT],P=Y.useRef(!!B&&typeof window<"u"&&!window.MotionHandoffIsComplete?.(B)&&window.MotionHasOptimisedAnimation?.(B));return y1(()=>{x.current=!0,w&&(V.current=!0,window.MotionIsMounted=!0,w.updateFeatures(),w.scheduleRenderMicrotask(),P.current&&w.animationState&&w.animationState.animateChanges())}),Y.useEffect(()=>{w&&(!P.current&&w.animationState&&w.animationState.animateChanges(),P.current&&(queueMicrotask(()=>{window.MotionHandoffMarkAsComplete?.(B)}),P.current=!1),w.enteringChildren=void 0)}),w}function _M(a,i,o,l){const{layoutId:u,layout:d,drag:f,dragConstraints:h,layoutScroll:m,layoutRoot:_,layoutAnchor:g,layoutCrossfade:v}=i;a.projection=new o(a.latestValues,i["data-framer-portal-id"]?void 0:WT(a.parent)),a.projection.setOptions({layoutId:u,layout:d,alwaysMeasureLayout:!!f||h&&da(h),visualElement:a,animationType:typeof d=="string"?d:"both",initialPromotionConfig:l,crossfade:v,layoutScroll:m,layoutRoot:_,layoutAnchor:g})}function WT(a){if(a)return a.options.allowProjection!==!1?a.projection:WT(a.parent)}function vc(a,{forwardMotionProps:i=!1,type:o}={},l,u){l&&QR(l);const d=o?o==="svg":kd(a),f=d?dM:cM;function h(_,g){let v;const b={...Y.useContext(Od),..._,layoutId:mM(_)},{isStatic:x}=b,w=tM(_),L=f(_,x);if(!x&&typeof window<"u"){gM();const V=yM(b);v=V.MeasureLayout,w.visualElement=pM(a,L,b,u,V.ProjectionNode,d)}return st.jsxs(Ll.Provider,{value:w,children:[v&&w.visualElement?st.jsx(v,{visualElement:w.visualElement,...b}):null,lM(a,_,hM(L,w.visualElement,g),L,x,i,d)]})}h.displayName=`motion.${typeof a=="string"?a:`create(${a.displayName??a.name??""})`}`;const m=Y.forwardRef(h);return m[fM]=a,m}function mM({layoutId:a}){const i=Y.useContext(ed).id;return i&&a!==void 0?i+"-"+a:a}function gM(a,i){Y.useContext(GT).strict}function yM(a){const i=IT(),{drag:o,layout:l}=i;if(!o&&!l)return{};const u={...o,...l};return{MeasureLayout:o?.isEnabled(a)||l?.isEnabled(a)?u.MeasureLayout:void 0,ProjectionNode:u.ProjectionNode}}function vM(a,i){if(typeof Proxy>"u")return vc;const o=new Map,l=(d,f)=>vc(d,f,a,i),u=(d,f)=>l(d,f);return new Proxy(u,{get:(d,f)=>f==="create"?l:(o.has(f)||o.set(f,vc(f,void 0,a,i)),o.get(f))})}const bM=(a,i)=>i.isSVG??kd(a)?new Qk(i):new Yk(i,{allowProjection:a!==Y.Fragment});class SM extends Wn{constructor(i){super(i),i.animationState||(i.animationState=tR(i))}updateAnimationControlsSubscription(){const{animate:i}=this.node.getProps();Ml(i)&&(this.unmountControls=i.subscribe(this.node))}mount(){this.updateAnimationControlsSubscription()}update(){const{animate:i}=this.node.getProps(),{animate:o}=this.node.prevProps||{};i!==o&&this.updateAnimationControlsSubscription()}unmount(){this.node.animationState.reset(),this.unmountControls?.()}}let TM=0;class AM extends Wn{constructor(){super(...arguments),this.id=TM++,this.isExitComplete=!1}update(){if(!this.node.presenceContext)return;const{isPresent:i,onExitComplete:o}=this.node.presenceContext,{isPresent:l}=this.node.prevPresenceContext||{};if(!this.node.animationState||i===l)return;if(i&&l===!1){if(this.isExitComplete){const{initial:d,custom:f}=this.node.getProps();if(typeof d=="string"){const h=xi(this.node,d,f);if(h){const{transition:m,transitionEnd:_,...g}=h;for(const v in g)this.node.getValue(v)?.jump(g[v])}}this.node.animationState.reset(),this.node.animationState.animateChanges()}else this.node.animationState.setActive("exit",!1);this.isExitComplete=!1;return}const u=this.node.animationState.setActive("exit",!i);o&&!i&&u.then(()=>{this.isExitComplete=!0,o(this.id)})}mount(){const{register:i,onExitComplete:o}=this.node.presenceContext||{};o&&o(this.id),i&&(this.unmount=i(this.id))}unmount(){}}const xM={animation:{Feature:SM},exit:{Feature:AM}};function zs(a){return{point:{x:a.pageX,y:a.pageY}}}const wM=a=>i=>Sd(i)&&a(i,zs(i));function ws(a,i,o,l){return Rs(a,i,wM(o),l)}const JT=({current:a})=>a?a.ownerDocument.defaultView:null,cg=(a,i)=>Math.abs(a-i);function EM(a,i){const o=cg(a.x,i.x),l=cg(a.y,i.y);return Math.sqrt(o**2+l**2)}const dg=new Set(["auto","scroll"]);class eA{constructor(i,o,{transformPagePoint:l,contextWindow:u=window,dragSnapToOrigin:d=!1,distanceThreshold:f=3,element:h}={}){if(this.startEvent=null,this.lastMoveEvent=null,this.lastMoveEventInfo=null,this.lastRawMoveEventInfo=null,this.handlers={},this.contextWindow=window,this.scrollPositions=new Map,this.removeScrollListeners=null,this.onElementScroll=x=>{this.handleScroll(x.target)},this.onWindowScroll=()=>{this.handleScroll(window)},this.updatePoint=()=>{if(!(this.lastMoveEvent&&this.lastMoveEventInfo))return;this.lastRawMoveEventInfo&&(this.lastMoveEventInfo=al(this.lastRawMoveEventInfo,this.transformPagePoint));const x=bc(this.lastMoveEventInfo,this.history),w=this.startEvent!==null,L=EM(x.offset,{x:0,y:0})>=this.distanceThreshold;if(!w&&!L)return;const{point:V}=x,{timestamp:B}=at;this.history.push({...V,timestamp:B});const{onStart:P,onMove:U}=this.handlers;w||(P&&P(this.lastMoveEvent,x),this.startEvent=this.lastMoveEvent),U&&U(this.lastMoveEvent,x)},this.handlePointerMove=(x,w)=>{this.lastMoveEvent=x,this.lastRawMoveEventInfo=w,this.lastMoveEventInfo=al(w,this.transformPagePoint),De.update(this.updatePoint,!0)},this.handlePointerUp=(x,w)=>{this.end();const{onEnd:L,onSessionEnd:V,resumeAnimation:B}=this.handlers;if((this.dragSnapToOrigin||!this.startEvent)&&B&&B(),!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const P=bc(x.type==="pointercancel"?this.lastMoveEventInfo:al(w,this.transformPagePoint),this.history);this.startEvent&&L&&L(x,P),V&&V(x,P)},!Sd(i))return;this.dragSnapToOrigin=d,this.handlers=o,this.transformPagePoint=l,this.distanceThreshold=f,this.contextWindow=u||window;const m=zs(i),_=al(m,this.transformPagePoint),{point:g}=_,{timestamp:v}=at;this.history=[{...g,timestamp:v}];const{onSessionStart:b}=o;b&&b(i,bc(_,this.history)),this.removeListeners=Ms(ws(this.contextWindow,"pointermove",this.handlePointerMove),ws(this.contextWindow,"pointerup",this.handlePointerUp),ws(this.contextWindow,"pointercancel",this.handlePointerUp)),h&&this.startScrollTracking(h)}startScrollTracking(i){let o=i.parentElement;for(;o;){const l=getComputedStyle(o);(dg.has(l.overflowX)||dg.has(l.overflowY))&&this.scrollPositions.set(o,{x:o.scrollLeft,y:o.scrollTop}),o=o.parentElement}this.scrollPositions.set(window,{x:window.scrollX,y:window.scrollY}),window.addEventListener("scroll",this.onElementScroll,{capture:!0}),window.addEventListener("scroll",this.onWindowScroll),this.removeScrollListeners=()=>{window.removeEventListener("scroll",this.onElementScroll,{capture:!0}),window.removeEventListener("scroll",this.onWindowScroll)}}handleScroll(i){const o=this.scrollPositions.get(i);if(!o)return;const l=i===window,u=l?{x:window.scrollX,y:window.scrollY}:{x:i.scrollLeft,y:i.scrollTop},d={x:u.x-o.x,y:u.y-o.y};d.x===0&&d.y===0||(l?this.lastMoveEventInfo&&(this.lastMoveEventInfo.point.x+=d.x,this.lastMoveEventInfo.point.y+=d.y):this.history.length>0&&(this.history[0].x-=d.x,this.history[0].y-=d.y),this.scrollPositions.set(i,u),De.update(this.updatePoint,!0))}updateHandlers(i){this.handlers=i}end(){this.removeListeners&&this.removeListeners(),this.removeScrollListeners&&this.removeScrollListeners(),this.scrollPositions.clear(),Zn(this.updatePoint)}}function al(a,i){return i?{point:i(a.point)}:a}function fg(a,i){return{x:a.x-i.x,y:a.y-i.y}}function bc({point:a},i){return{point:a,delta:fg(a,tA(i)),offset:fg(a,OM(i)),velocity:CM(i,.1)}}function OM(a){return a[0]}function tA(a){return a[a.length-1]}function CM(a,i){if(a.length<2)return{x:0,y:0};let o=a.length-1,l=null;const u=tA(a);for(;o>=0&&(l=a[o],!(u.timestamp-l.timestamp>kt(i)));)o--;if(!l)return{x:0,y:0};l===a[0]&&a.length>2&&u.timestamp-l.timestamp>kt(i)*2&&(l=a[1]);const d=Ht(u.timestamp-l.timestamp);if(d===0)return{x:0,y:0};const f={x:(u.x-l.x)/d,y:(u.y-l.y)/d};return f.x===1/0&&(f.x=0),f.y===1/0&&(f.y=0),f}function kM(a,{min:i,max:o},l){return i!==void 0&&a<i?a=l?Ne(i,a,l.min):Math.max(a,i):o!==void 0&&a>o&&(a=l?Ne(o,a,l.max):Math.min(a,o)),a}function hg(a,i,o){return{min:i!==void 0?a.min+i:void 0,max:o!==void 0?a.max+o-(a.max-a.min):void 0}}function RM(a,{top:i,left:o,bottom:l,right:u}){return{x:hg(a.x,o,u),y:hg(a.y,i,l)}}function pg(a,i){let o=i.min-a.min,l=i.max-a.max;return i.max-i.min<a.max-a.min&&([o,l]=[l,o]),{min:o,max:l}}function MM(a,i){return{x:pg(a.x,i.x),y:pg(a.y,i.y)}}function DM(a,i){let o=.5;const l=dt(a),u=dt(i);return u>l?o=Os(i.min,i.max-l,a.min):l>u&&(o=Os(a.min,a.max-u,i.min)),nn(0,1,o)}function LM(a,i){const o={};return i.min!==void 0&&(o.min=i.min-a.min),i.max!==void 0&&(o.max=i.max-a.min),o}const Qc=.35;function zM(a=Qc){return a===!1?a=0:a===!0&&(a=Qc),{x:_g(a,"left","right"),y:_g(a,"top","bottom")}}function _g(a,i,o){return{min:mg(a,i),max:mg(a,o)}}function mg(a,i){return typeof a=="number"?a:a[i]||0}const NM=new WeakMap;class jM{constructor(i){this.openDragLock=null,this.isDragging=!1,this.currentDirection=null,this.originPoint={x:0,y:0},this.constraints=!1,this.hasMutatedConstraints=!1,this.elastic=Qe(),this.latestPointerEvent=null,this.latestPanInfo=null,this.visualElement=i}start(i,{snapToCursor:o=!1,distanceThreshold:l}={}){const{presenceContext:u}=this.visualElement;if(u&&u.isPresent===!1)return;const d=v=>{o&&this.snapToCursor(zs(v).point),this.stopAnimation()},f=(v,b)=>{const{drag:x,dragPropagation:w,onDragStart:L}=this.getProps();if(x&&!w&&(this.openDragLock&&this.openDragLock(),this.openDragLock=uk(x),!this.openDragLock))return;this.latestPointerEvent=v,this.latestPanInfo=b,this.isDragging=!0,this.currentDirection=null,this.resolveConstraints(),this.visualElement.projection&&(this.visualElement.projection.isAnimationBlocked=!0,this.visualElement.projection.target=void 0),Wt(B=>{let P=this.getAxisMotionValue(B).get()||0;if(tn.test(P)){const{projection:U}=this.visualElement;if(U&&U.layout){const H=U.layout.layoutBox[B];H&&(P=dt(H)*(parseFloat(P)/100))}}this.originPoint[B]=P}),L&&De.update(()=>L(v,b),!1,!0),Pc(this.visualElement,"transform");const{animationState:V}=this.visualElement;V&&V.setActive("whileDrag",!0)},h=(v,b)=>{this.latestPointerEvent=v,this.latestPanInfo=b;const{dragPropagation:x,dragDirectionLock:w,onDirectionLock:L,onDrag:V}=this.getProps();if(!x&&!this.openDragLock)return;const{offset:B}=b;if(w&&this.currentDirection===null){this.currentDirection=BM(B),this.currentDirection!==null&&L&&L(this.currentDirection);return}this.updateAxis("x",b.point,B),this.updateAxis("y",b.point,B),this.visualElement.render(),V&&De.update(()=>V(v,b),!1,!0)},m=(v,b)=>{this.latestPointerEvent=v,this.latestPanInfo=b,this.stop(v,b),this.latestPointerEvent=null,this.latestPanInfo=null},_=()=>{const{dragSnapToOrigin:v}=this.getProps();(v||this.constraints)&&this.startAnimation({x:0,y:0})},{dragSnapToOrigin:g}=this.getProps();this.panSession=new eA(i,{onSessionStart:d,onStart:f,onMove:h,onSessionEnd:m,resumeAnimation:_},{transformPagePoint:this.visualElement.getTransformPagePoint(),dragSnapToOrigin:g,distanceThreshold:l,contextWindow:JT(this.visualElement),element:this.visualElement.current})}stop(i,o){const l=i||this.latestPointerEvent,u=o||this.latestPanInfo,d=this.isDragging;if(this.cancel(),!d||!u||!l)return;const{velocity:f}=u;this.startAnimation(f);const{onDragEnd:h}=this.getProps();h&&De.postRender(()=>h(l,u))}cancel(){this.isDragging=!1;const{projection:i,animationState:o}=this.visualElement;i&&(i.isAnimationBlocked=!1),this.endPanSession();const{dragPropagation:l}=this.getProps();!l&&this.openDragLock&&(this.openDragLock(),this.openDragLock=null),o&&o.setActive("whileDrag",!1)}endPanSession(){this.panSession&&this.panSession.end(),this.panSession=void 0}updateAxis(i,o,l){const{drag:u}=this.getProps();if(!l||!sl(i,u,this.currentDirection))return;const d=this.getAxisMotionValue(i);let f=this.originPoint[i]+l[i];this.constraints&&this.constraints[i]&&(f=kM(f,this.constraints[i],this.elastic[i])),d.set(f)}resolveConstraints(){const{dragConstraints:i,dragElastic:o}=this.getProps(),l=this.visualElement.projection&&!this.visualElement.projection.layout?this.visualElement.projection.measure(!1):this.visualElement.projection?.layout,u=this.constraints;i&&da(i)?this.constraints||(this.constraints=this.resolveRefConstraints()):i&&l?this.constraints=RM(l.layoutBox,i):this.constraints=!1,this.elastic=zM(o),u!==this.constraints&&!da(i)&&l&&this.constraints&&!this.hasMutatedConstraints&&Wt(d=>{this.constraints!==!1&&this.getAxisMotionValue(d)&&(this.constraints[d]=LM(l.layoutBox[d],this.constraints[d]))})}resolveRefConstraints(){const{dragConstraints:i,onMeasureDragConstraints:o}=this.getProps();if(!i||!da(i))return!1;const l=i.current,{projection:u}=this.visualElement;if(!u||!u.layout)return!1;const d=Bk(l,u.root,this.visualElement.getTransformPagePoint());let f=MM(u.layout.layoutBox,d);if(o){const h=o(Nk(f));this.hasMutatedConstraints=!!h,h&&(f=TT(h))}return f}startAnimation(i){const{drag:o,dragMomentum:l,dragElastic:u,dragTransition:d,dragSnapToOrigin:f,onDragTransitionEnd:h}=this.getProps(),m=this.constraints||{},_=Wt(g=>{if(!sl(g,o,this.currentDirection))return;let v=m&&m[g]||{};(f===!0||f===g)&&(v={min:0,max:0});const b=u?200:1e6,x=u?40:1e7,w={type:"inertia",velocity:l?i[g]:0,bounceStiffness:b,bounceDamping:x,timeConstant:750,restDelta:1,restSpeed:10,...d,...v};return this.startAxisValueAnimation(g,w)});return Promise.all(_).then(h)}startAxisValueAnimation(i,o){const l=this.getAxisMotionValue(i);return Pc(this.visualElement,i),l.start(md(i,l,0,o,this.visualElement,!1))}stopAnimation(){Wt(i=>this.getAxisMotionValue(i).stop())}getAxisMotionValue(i){const o=`_drag${i.toUpperCase()}`,l=this.visualElement.getProps(),u=l[o];return u||this.visualElement.getValue(i,(l.initial?l.initial[i]:void 0)||0)}snapToCursor(i){Wt(o=>{const{drag:l}=this.getProps();if(!sl(o,l,this.currentDirection))return;const{projection:u}=this.visualElement,d=this.getAxisMotionValue(o);if(u&&u.layout){const{min:f,max:h}=u.layout.layoutBox[o],m=d.get()||0;d.set(i[o]-Ne(f,h,.5)+m)}})}scalePositionWithinConstraints(){if(!this.visualElement.current)return;const{drag:i,dragConstraints:o}=this.getProps(),{projection:l}=this.visualElement;if(!da(o)||!l||!this.constraints)return;this.stopAnimation();const u={x:0,y:0};Wt(f=>{const h=this.getAxisMotionValue(f);if(h&&this.constraints!==!1){const m=h.get();u[f]=DM({min:m,max:m},this.constraints[f])}});const{transformTemplate:d}=this.visualElement.getProps();this.visualElement.current.style.transform=d?d({},""):"none",l.root&&l.root.updateScroll(),l.updateLayout(),this.constraints=!1,this.resolveConstraints(),Wt(f=>{if(!sl(f,i,null))return;const h=this.getAxisMotionValue(f),{min:m,max:_}=this.constraints[f];h.set(Ne(m,_,u[f]))}),this.visualElement.render()}addListeners(){if(!this.visualElement.current)return;NM.set(this.visualElement,this);const i=this.visualElement.current,o=ws(i,"pointerdown",_=>{const{drag:g,dragListener:v=!0}=this.getProps(),b=_.target,x=b!==i&&_k(b);g&&v&&!x&&this.start(_)});let l;const u=()=>{const{dragConstraints:_}=this.getProps();da(_)&&_.current&&(this.constraints=this.resolveRefConstraints(),l||(l=VM(i,_.current,()=>this.scalePositionWithinConstraints())))},{projection:d}=this.visualElement,f=d.addEventListener("measure",u);d&&!d.layout&&(d.root&&d.root.updateScroll(),d.updateLayout()),De.read(u);const h=Rs(window,"resize",()=>this.scalePositionWithinConstraints()),m=d.addEventListener("didUpdate",(({delta:_,hasLayoutChanged:g})=>{this.isDragging&&g&&(Wt(v=>{const b=this.getAxisMotionValue(v);b&&(this.originPoint[v]+=_[v].translate,b.set(b.get()+_[v].translate))}),this.visualElement.render())}));return()=>{h(),o(),f(),m&&m(),l&&l()}}getProps(){const i=this.visualElement.getProps(),{drag:o=!1,dragDirectionLock:l=!1,dragPropagation:u=!1,dragConstraints:d=!1,dragElastic:f=Qc,dragMomentum:h=!0}=i;return{...i,drag:o,dragDirectionLock:l,dragPropagation:u,dragConstraints:d,dragElastic:f,dragMomentum:h}}}function gg(a){let i=!0;return()=>{if(i){i=!1;return}a()}}function VM(a,i,o){const l=xm(a,gg(o)),u=xm(i,gg(o));return()=>{l(),u()}}function sl(a,i,o){return(i===!0||i===a)&&(o===null||o===a)}function BM(a,i=10){let o=null;return Math.abs(a.y)>i?o="y":Math.abs(a.x)>i&&(o="x"),o}class UM extends Wn{constructor(i){super(i),this.removeGroupControls=Pt,this.removeListeners=Pt,this.controls=new jM(i)}mount(){const{dragControls:i}=this.node.getProps();i&&(this.removeGroupControls=i.subscribe(this.controls)),this.removeListeners=this.controls.addListeners()||Pt}update(){const{dragControls:i}=this.node.getProps(),{dragControls:o}=this.node.prevProps||{};i!==o&&(this.removeGroupControls(),i&&(this.removeGroupControls=i.subscribe(this.controls)))}unmount(){this.removeGroupControls(),this.removeListeners(),this.controls.isDragging||this.controls.endPanSession()}}const Sc=a=>(i,o)=>{a&&De.update(()=>a(i,o),!1,!0)};class HM extends Wn{constructor(){super(...arguments),this.removePointerDownListener=Pt}onPointerDown(i){this.session=new eA(i,this.createPanHandlers(),{transformPagePoint:this.node.getTransformPagePoint(),contextWindow:JT(this.node)})}createPanHandlers(){const{onPanSessionStart:i,onPanStart:o,onPan:l,onPanEnd:u}=this.node.getProps();return{onSessionStart:Sc(i),onStart:Sc(o),onMove:Sc(l),onEnd:(d,f)=>{delete this.session,u&&De.postRender(()=>u(d,f))}}}mount(){this.removePointerDownListener=ws(this.node.current,"pointerdown",i=>this.onPointerDown(i))}update(){this.session&&this.session.updateHandlers(this.createPanHandlers())}unmount(){this.removePointerDownListener(),this.session&&this.session.end()}}let Tc=!1;class PM extends Y.Component{componentDidMount(){const{visualElement:i,layoutGroup:o,switchLayoutGroup:l,layoutId:u}=this.props,{projection:d}=i;d&&(o.group&&o.group.add(d),l&&l.register&&u&&l.register(d),Tc&&d.root.didUpdate(),d.addEventListener("animationComplete",()=>{this.safeToRemove()}),d.setOptions({...d.options,layoutDependency:this.props.layoutDependency,onExitComplete:()=>this.safeToRemove()})),_l.hasEverUpdated=!0}getSnapshotBeforeUpdate(i){const{layoutDependency:o,visualElement:l,drag:u,isPresent:d}=this.props,{projection:f}=l;return f&&(f.isPresent=d,i.layoutDependency!==o&&f.setOptions({...f.options,layoutDependency:o}),Tc=!0,u||i.layoutDependency!==o||o===void 0||i.isPresent!==d?f.willUpdate():this.safeToRemove(),i.isPresent!==d&&(d?f.promote():f.relegate()||De.postRender(()=>{const h=f.getStack();(!h||!h.members.length)&&this.safeToRemove()}))),null}componentDidUpdate(){const{visualElement:i,layoutAnchor:o}=this.props,{projection:l}=i;l&&(l.options.layoutAnchor=o,l.root.didUpdate(),bd.postRender(()=>{!l.currentAnimation&&l.isLead()&&this.safeToRemove()}))}componentWillUnmount(){const{visualElement:i,layoutGroup:o,switchLayoutGroup:l}=this.props,{projection:u}=i;Tc=!0,u&&(u.scheduleCheckAfterUnmount(),o&&o.group&&o.group.remove(u),l&&l.deregister&&l.deregister(u))}safeToRemove(){const{safeToRemove:i}=this.props;i&&i()}render(){return null}}function nA(a){const[i,o]=YT(),l=Y.useContext(ed);return st.jsx(PM,{...a,layoutGroup:l,switchLayoutGroup:Y.useContext(ZT),isPresent:i,safeToRemove:o})}const KM={pan:{Feature:HM},drag:{Feature:UM,ProjectionNode:qT,MeasureLayout:nA}};function yg(a,i,o){const{props:l}=a;a.animationState&&l.whileHover&&a.animationState.setActive("whileHover",o==="Start");const u="onHover"+o,d=l[u];d&&De.postRender(()=>d(i,zs(i)))}class qM extends Wn{mount(){const{current:i}=this.node;i&&(this.unmount=dk(i,(o,l)=>(yg(this.node,l,"Start"),u=>yg(this.node,u,"End"))))}unmount(){}}class YM extends Wn{constructor(){super(...arguments),this.isActive=!1}onFocus(){let i=!1;try{i=this.node.current.matches(":focus-visible")}catch{i=!0}!i||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!0),this.isActive=!0)}onBlur(){!this.isActive||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!1),this.isActive=!1)}mount(){this.unmount=Ms(Rs(this.node.current,"focus",()=>this.onFocus()),Rs(this.node.current,"blur",()=>this.onBlur()))}unmount(){}}function vg(a,i,o){const{props:l}=a;if(a.current instanceof HTMLButtonElement&&a.current.disabled)return;a.animationState&&l.whileTap&&a.animationState.setActive("whileTap",o==="Start");const u="onTap"+(o==="End"?"":o),d=l[u];d&&De.postRender(()=>d(i,zs(i)))}class GM extends Wn{mount(){const{current:i}=this.node;if(!i)return;const{globalTapTarget:o,propagate:l}=this.node.props;this.unmount=gk(i,(u,d)=>(vg(this.node,d,"Start"),(f,{success:h})=>vg(this.node,f,h?"End":"Cancel")),{useGlobalTarget:o,stopPropagation:l?.tap===!1})}unmount(){}}const Zc=new WeakMap,Ac=new WeakMap,IM=a=>{const i=Zc.get(a.target);i&&i(a)},$M=a=>{a.forEach(IM)};function XM({root:a,...i}){const o=a||document;Ac.has(o)||Ac.set(o,{});const l=Ac.get(o),u=JSON.stringify(i);return l[u]||(l[u]=new IntersectionObserver($M,{root:a,...i})),l[u]}function FM(a,i,o){const l=XM(i);return Zc.set(a,o),l.observe(a),()=>{Zc.delete(a),l.unobserve(a)}}const QM={some:0,all:1};class ZM extends Wn{constructor(){super(...arguments),this.hasEnteredView=!1,this.isInView=!1}startObserver(){this.stopObserver?.();const{viewport:i={}}=this.node.getProps(),{root:o,margin:l,amount:u="some",once:d}=i,f={root:o?o.current:void 0,rootMargin:l,threshold:typeof u=="number"?u:QM[u]},h=m=>{const{isIntersecting:_}=m;if(this.isInView===_||(this.isInView=_,d&&!_&&this.hasEnteredView))return;_&&(this.hasEnteredView=!0),this.node.animationState&&this.node.animationState.setActive("whileInView",_);const{onViewportEnter:g,onViewportLeave:v}=this.node.getProps(),b=_?g:v;b&&b(m)};this.stopObserver=FM(this.node.current,f,h)}mount(){this.startObserver()}update(){if(typeof IntersectionObserver>"u")return;const{props:i,prevProps:o}=this.node;["amount","margin","root"].some(WM(i,o))&&this.startObserver()}unmount(){this.stopObserver?.(),this.hasEnteredView=!1,this.isInView=!1}}function WM({viewport:a={}},{viewport:i={}}={}){return o=>a[o]!==i[o]}const JM={inView:{Feature:ZM},tap:{Feature:GM},focus:{Feature:YM},hover:{Feature:qM}},eD={layout:{ProjectionNode:qT,MeasureLayout:nA}},tD={...xM,...JM,...KM,...eD},AD=vM(tD,bM);function iA(a,i){return a!=="fn"}function xD(a,i,o){return o&&iA(a)?o:null}function nD({size:a=14}){return st.jsxs("svg",{width:a,height:a,viewBox:"0 0 16 16",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg","aria-hidden":!0,children:[st.jsx("path",{d:"M1 3.5l5.5-.75v5.5H1V3.5z"}),st.jsx("path",{d:"M7.5 2.5L15 1v7H7.5V2.5z"}),st.jsx("path",{d:"M1 9h5.5v5.5L1 13.5V9z"}),st.jsx("path",{d:"M7.5 9H15v7l-7.5-1.5V9z"})]})}function wD(a,i,o=14){return a==="fn"?null:i==="macos"?a==="ctrl"?"⌃":a==="shift"?"⇧":a==="alt"?"⌥":a==="meta"?st.jsx(ZO,{size:o,strokeWidth:2.5}):null:a==="meta"?i==="windows"?st.jsx(nD,{size:o}):st.jsx(JO,{size:Math.max(o-2,8),strokeWidth:2.5}):null}const iD={Enter:"↵",Escape:"⎋",Tab:"⇥",Delete:"⌦",Space:"␣"};function ED(a){return iD[a]??null}const bg={Space:"Space",Enter:"Enter",Escape:"Esc",Tab:"Tab",Backspace:"Backspace",Delete:"Del",CapsLock:"Caps",ArrowUp:"↑",ArrowDown:"↓",ArrowLeft:"←",ArrowRight:"→"};function OD(a,i){const o=CO(a);if(o){const l=ol(o,i),u=kO(a);return u&&iA(o)?`${u==="left"?"Left":"Right"} ${l}`:l}return bg[a]?bg[a]:m1(a)}export{JC as $,TD as A,Ti as B,AD as C,xD as D,ol as E,Oc as F,m1 as G,wD as H,_D as I,aD as J,ED as K,OD as L,iD as M,mD as N,fD as O,oD as P,De as Q,sD as R,uD as S,Zn as T,bD as U,y2 as V,yD as W,vD as X,Os as Y,A1 as Z,rl as _,Nw as a,t2 as a0,nn as a1,Pt as a2,xm as a3,at as a4,td as a5,y1 as a6,id as a7,ga as a8,vT as a9,Dk as aa,Gc as ab,nD as ac,JO as ad,Mw as b,lD as c,rD as d,Wc as e,EO as f,Sg as g,wO as h,we as i,cD as j,_a as k,wi as l,gD as m,pD as n,st as o,RO as p,CO as q,Y as r,kO as s,dD as t,vO as u,LO as v,zO as w,jO as x,hD as y,OO as z};