From 6e9f5dd407489291ed377edfec1ed1f22f8318ce Mon Sep 17 00:00:00 2001 From: "DAL\\Administrator" <3452720699@qq.com> Date: Tue, 15 Sep 2026 15:36:32 +0800 Subject: [PATCH 1/4] fix(sync): skip isolated metadata failures and prepare v1.0.3 --- CHANGELOG.md | 12 + README.md | 10 +- .../e2e/desktop-production-boundary.spec.mjs | 74 ++++ apps/desktop/e2e/desktop-sync-switch.spec.mjs | 4 +- apps/desktop/package.json | 2 +- apps/desktop/src/main/diagnostics-export.ts | 17 +- apps/desktop/src/main/index.ts | 3 +- .../desktop/src/main/operation-log-service.ts | 22 +- .../desktop/src/shared/operation-log-types.ts | 6 +- .../src/shared/operation-log-validation.ts | 7 +- apps/desktop/src/shared/runtime-protocol.ts | 6 +- .../desktop/tests/metadata-error-log.test.mjs | 30 ++ apps/desktop/tests/provider-skip-log.test.mjs | 44 ++ .../CodexProviderSync.App.csproj | 6 +- .../CodexProviderSync.Application.csproj | 6 +- .../CodexProviderSync.Automation.csproj | 6 +- .../CodexProviderSync.Core.csproj | 6 +- .../CodexProviderSync.GuiE2E.csproj | 6 +- .../CodexProviderSync.Mac.csproj | 6 +- docs/README_CLI_ZH.md | 8 + docs/README_DESKTOP_EN.md | 8 + docs/README_DESKTOP_ZH.md | 10 +- docs/README_EN.md | 8 + docs/README_JA.md | 6 + docs/README_KO.md | 6 + docs/README_WEB_UI_ZH.md | 8 + docs/WINDOWS_ELECTRON_RELEASE_ZH.md | 8 +- docs/WORKING_PRINCIPLE_ZH.md | 6 +- ...-history-and-provider-preparation-facts.md | 4 + ...0043-status-provider-relevant-revisions.md | 4 + docs/adr/0044-large-session-metadata.md | 25 ++ docs/adr/0045-isolated-provider-data-skips.md | 39 ++ .../architecture/NODE_CORE_ARCHITECTURE_ZH.md | 6 +- .../architecture/contracts/CLI_CONTRACT_ZH.md | 4 + .../contracts/CORE_EXTERNAL_BEHAVIOR_ZH.md | 4 + docs/architecture/contracts/ERROR_CODES_ZH.md | 4 + docs/migration/BEHAVIOR_FIXTURES_ZH.md | 8 + docs/release-notes/v1.0.3-zh.md | 49 +++ package-lock.json | 6 +- package.json | 4 +- .../operation-logs/OperationLogsPage.tsx | 6 +- .../operations/OperationResultDialog.tsx | 10 +- .../src/features/operations/PlanReview.tsx | 2 + .../src/features/operations/SkipDetails.tsx | 22 + .../src/features/overview/OverviewPage.tsx | 3 + packages/app-ui/src/i18n.ts | 10 + packages/app-ui/src/types.ts | 6 +- .../app-ui/tests/metadata-errors.vitest.tsx | 19 + .../app-ui/tests/partial-feedback.vitest.tsx | 13 + packages/app-ui/tests/skip-details.vitest.tsx | 18 + packages/contracts/dist/errors.d.ts | 2 +- packages/contracts/dist/errors.js | 6 +- packages/contracts/dist/index.d.ts | 1 + packages/contracts/dist/index.js | 1 + packages/contracts/dist/protocol.js | 6 + packages/contracts/dist/skip-summary.d.ts | 24 ++ packages/contracts/dist/skip-summary.js | 32 ++ packages/contracts/src/errors.ts | 6 +- packages/contracts/src/index.ts | 1 + packages/contracts/src/protocol.ts | 6 + packages/contracts/src/skip-summary.ts | 47 ++ .../core/src/application/operation-result.js | 1 + .../src/application/ordinary-write-runtime.js | 3 + packages/core/src/application/plan-context.js | 8 +- .../core/src/application/provider-sync.js | 178 ++++++-- packages/core/src/application/status.js | 1 + .../core/src/application/watch-runtime.js | 3 +- packages/core/src/index.js | 10 +- .../src/infrastructure/node-core-ports.js | 5 + src/backup.js | 26 +- src/cli-json.js | 13 +- src/cli.js | 10 + src/constants.js | 2 + src/core-error.js | 2 + src/operation-revision.js | 94 +++- src/provider-skips.js | 121 ++++++ src/session-files.js | 400 +++++++++++++----- src/sqlite-state.js | 66 ++- src/web-core-adapter.js | 1 + src/windows-provider-bytes.cs | 10 +- test/cli-json.test.js | 11 + test/large-session-metadata.test.js | 212 ++++++++++ test/plan-apply.test.js | 36 +- test/provider-header-validation.test.js | 227 ++++++++++ test/provider-preparation-facts.test.js | 22 +- test/provider-skip-associations.test.js | 42 ++ test/provider-skip-data.test.js | 190 +++++++++ test/provider-sync-lite.test.js | 2 +- test/status-coordination.test.js | 16 +- test/sync-service.test.js | 11 +- test/windows-provider-bytes.ps1 | 27 +- test/windows-rewrite-worker.test.js | 2 +- web/dist/assets/index-B_v6pRZ5.css | 2 - web/dist/assets/index-Bp6DrQQ2.js | 143 ------- web/dist/assets/index-CmcveSDP.css | 2 + web/dist/assets/index-D-VUimW_.js | 143 +++++++ web/dist/index.html | 4 +- 97 files changed, 2348 insertions(+), 437 deletions(-) create mode 100644 apps/desktop/tests/metadata-error-log.test.mjs create mode 100644 apps/desktop/tests/provider-skip-log.test.mjs create mode 100644 docs/adr/0044-large-session-metadata.md create mode 100644 docs/adr/0045-isolated-provider-data-skips.md create mode 100644 docs/release-notes/v1.0.3-zh.md create mode 100644 packages/app-ui/src/features/operations/SkipDetails.tsx create mode 100644 packages/app-ui/tests/metadata-errors.vitest.tsx create mode 100644 packages/app-ui/tests/skip-details.vitest.tsx create mode 100644 packages/contracts/dist/skip-summary.d.ts create mode 100644 packages/contracts/dist/skip-summary.js create mode 100644 packages/contracts/src/skip-summary.ts create mode 100644 src/provider-skips.js create mode 100644 test/large-session-metadata.test.js create mode 100644 test/provider-header-validation.test.js create mode 100644 test/provider-skip-associations.test.js create mode 100644 test/provider-skip-data.test.js delete mode 100644 web/dist/assets/index-B_v6pRZ5.css delete mode 100644 web/dist/assets/index-Bp6DrQQ2.js create mode 100644 web/dist/assets/index-CmcveSDP.css create mode 100644 web/dist/assets/index-D-VUimW_.js diff --git a/CHANGELOG.md b/CHANGELOG.md index c12670b..31eedc1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,18 @@ 本文件记录面向用户和集成方的重要变化。完整的发布叙事、升级说明和下载入口见对应版本的中文发布说明;实现证据和测试门禁见技术发布说明。 +## [Unreleased] + +## [1.0.3] - 2026-09-15 + +- 修复非法 UTF-8 被静默替换、数组 payload 误报同步成功、深层 JSON 导致整次准备中止:现在逐文件跳过并保留关联索引,日志显示具体原因。 + +- Node Sync/Switch/Watch 逐条跳过问题会话并保留关联或不确定 SQLite 行,正常数据继续;预览冻结候选与排除集合,写后收窄恢复范围。 +- 部分完成显示成功、跳过及未确认数量,最多 200 条本机路径/原因明细;诊断导出单独脱敏。全部历史跳过时仍可切换配置。 + +- Node Core(Electron、CLI、Web)支持最高 128 MiB 的会话首行元数据;分块读取与原地资格检查可处理长指令,避免重复复制和正则栈溢出。 +- 首行超限或无效分别提示实际原因,不再误报“会话发生变化”并建议无效重试。保持正文不变和备份保护,Legacy .NET 不受此次修改影响。 + ## [1.0.2] - 2026-09-11 - 修复 Windows 安装版点击“检查更新”立即失败的问题:正确加载更新器的 CommonJS 导出。 diff --git a/README.md b/README.md index 920934f..41ea00a 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,9 @@
{t(selected.partialReason === "locked-session" ? "operationResult.retryAfterSession" : "operationResult.retryFreshPlan")}
: null} +{t(selected.partialReason === "locked-session" ? "operationResult.retryAfterSession" : "operationResult.retryFreshPlan")}
: null} {(selected.backupId || selected.retryRecommended) && (openBackupRestore || reviewOperation) ? selected.profileId === profileId && selected.profileRevision !== undefined && selected.profileRevision === profileRevision ?{t("logs.profileMismatch")}
: null} {previewCounts.length ?{t("logs.switchPlanPartial")}
: null}{t("logs.switchPlanUnavailable")}
: null} diff --git a/packages/app-ui/src/features/operations/OperationResultDialog.tsx b/packages/app-ui/src/features/operations/OperationResultDialog.tsx index 2696bab..12efe4b 100644 --- a/packages/app-ui/src/features/operations/OperationResultDialog.tsx +++ b/packages/app-ui/src/features/operations/OperationResultDialog.tsx @@ -1,3 +1,5 @@ +import { SkipDetails } from "./SkipDetails.js"; +import { publicSkipSummary } from "@codex-provider-sync/contracts"; import type { OperationOutcome, OperationResult } from "@codex-provider-sync/contracts"; import { Fragment } from "react"; import { useTranslation } from "react-i18next"; @@ -37,6 +39,7 @@ function publicResultEntries(value: OperationResult["result"]): Array<[string, s "partialReason", "failedStage", "failureCode" ]); const numbers = new Set([ + "unconfirmedSessionFiles", "changedSessionFiles", "sqliteRowsUpdated", "sqliteProviderRowsUpdated", @@ -122,7 +125,8 @@ export function OperationResultDialog({ result, postWriteStatus, close, closeDis const entries = result ? publicResultEntries(result.result) : []; const skipped = result ? skippedRollouts(result.result) : []; const skippedChanged = result ? skippedChangedRollouts(result.result) : []; - const skippedCount = skipped.length + skippedChanged.length; + const summary = publicSkipSummary(result?.result && typeof result.result === "object" && !Array.isArray(result.result) ? result.result.skipSummary : undefined); + const skippedCount = summary ? 0 : skipped.length + skippedChanged.length; const partialReason = result?.result && typeof result.result === "object" && !Array.isArray(result.result) @@ -161,8 +165,10 @@ export function OperationResultDialog({ result, postWriteStatus, close, closeDis : null} {hasManyRewrittenSessions(result.operation, result.result) ?{t("skips.configSwitched", { count: result.result.changedSessionFiles ?? 0 })}
: null} {skippedCount ?{t("operationResult.skippedCount", { count: skippedCount })}
: null} - {retryRecommended ?{t(partialReason === "locked-session" ? "operationResult.retryAfterSession" : "operationResult.retryFreshPlan")}
: null} + {retryRecommended && (partialReason === "mutation-failed" || !summary || (!summary.total && !summary.unconfirmed)) ?{t(partialReason === "locked-session" ? "operationResult.retryAfterSession" : "operationResult.retryFreshPlan")}
: null} {retryRecommended && reviewOperation ? : null} {resultVerification ?{t(`operationResult.verification.status.${resultVerification.status}`)}
{resultVerification.status === "remaining" ?{t("operationResult.changeCountersHint")}
: null} diff --git a/packages/app-ui/src/features/operations/PlanReview.tsx b/packages/app-ui/src/features/operations/PlanReview.tsx index 9b2a29c..8207f2c 100644 --- a/packages/app-ui/src/features/operations/PlanReview.tsx +++ b/packages/app-ui/src/features/operations/PlanReview.tsx @@ -1,3 +1,4 @@ +import { SkipDetails } from "./SkipDetails.js"; import type { PlanSummary, ProgressEvent } from "@codex-provider-sync/contracts"; import { Fragment, useEffect, useMemo, useState } from "react"; import { useTranslation } from "react-i18next"; @@ -164,6 +165,7 @@ export function PlanReview({ {cancelling ?{t("plan.cancelPending")}
: null} : plan ? ({t("skips.counts", { total: summary.total, files: summary.rolloutFiles, rows: summary.sqliteRows, unknown: summary.unconfirmed })}
+{t(summary.retryRecommended ? "skips.retry" : "skips.fix")}
+{t("skips.shown", { shown: summary.items.length, omitted: summary.omitted, total: summary.total })}
+{t("skips.incomplete")}
: null} +{t("ux.previousSnapshot")}
: null} {hasSnapshot ?t.length,o;r&&t.push(i);try{o=e.apply(this,t)}catch(e){let t=e;if(r&&n)throw t;return i(t)}r||(o&&o.then&&typeof o.then==`function`?o.then(a,i):o instanceof Error?i(o):a(o))}function i(e,...r){n||(n=!0,t(e,...r))}function a(e){i(null,e)}}var ME={basename:NE,dirname:PE,extname:FE,join:IE,sep:`/`};function NE(e,t){if(t!==void 0&&typeof t!=`string`)throw TypeError(`"ext" argument must be a string`);zE(e);let n=0,r=-1,i=e.length,a;if(t===void 0||t.length===0||t.length>e.length){for(;i--;)if(e.codePointAt(i)===47){if(a){n=i+1;break}}else r<0&&(a=!0,r=i+1);return r<0?``:e.slice(n,r)}if(t===e)return``;let o=-1,s=t.length-1;for(;i--;)if(e.codePointAt(i)===47){if(a){n=i+1;break}}else o<0&&(a=!0,o=i+1),s>-1&&(e.codePointAt(i)===t.codePointAt(s--)?s<0&&(r=i):(s=-1,r=o));return n===r?r=o:r<0&&(r=e.length),e.slice(n,r)}function PE(e){if(zE(e),e.length===0)return`.`;let t=-1,n=e.length,r;for(;--n;)if(e.codePointAt(n)===47){if(r){t=n;break}}else r||=!0;return t<0?e.codePointAt(0)===47?`/`:`.`:t===1&&e.codePointAt(0)===47?`//`:e.slice(0,t)}function FE(e){zE(e);let t=e.length,n=-1,r=0,i=-1,a=0,o;for(;t--;){let s=e.codePointAt(t);if(s===47){if(o){r=t+1;break}continue}n<0&&(o=!0,n=t+1),s===46?i<0?i=t:a!==1&&(a=1):i>-1&&(a=-1)}return i<0||n<0||a===0||a===1&&i===n-1&&i===r+1?``:e.slice(i,n)}function IE(...e){let t=-1,n;for(;++t t.length,o;r&&t.push(i);try{o=e.apply(this,t)}catch(e){let t=e;if(r&&n)throw t;return i(t)}r||(o&&o.then&&typeof o.then==`function`?o.then(a,i):o instanceof Error?i(o):a(o))}function i(e,...r){n||(n=!0,t(e,...r))}function a(e){i(null,e)}}var BE={basename:VE,dirname:HE,extname:UE,join:WE,sep:`/`};function VE(e,t){if(t!==void 0&&typeof t!=`string`)throw TypeError(`"ext" argument must be a string`);qE(e);let n=0,r=-1,i=e.length,a;if(t===void 0||t.length===0||t.length>e.length){for(;i--;)if(e.codePointAt(i)===47){if(a){n=i+1;break}}else r<0&&(a=!0,r=i+1);return r<0?``:e.slice(n,r)}if(t===e)return``;let o=-1,s=t.length-1;for(;i--;)if(e.codePointAt(i)===47){if(a){n=i+1;break}}else o<0&&(a=!0,o=i+1),s>-1&&(e.codePointAt(i)===t.codePointAt(s--)?s<0&&(r=i):(s=-1,r=o));return n===r?r=o:r<0&&(r=e.length),e.slice(n,r)}function HE(e){if(qE(e),e.length===0)return`.`;let t=-1,n=e.length,r;for(;--n;)if(e.codePointAt(n)===47){if(r){t=n;break}}else r||=!0;return t<0?e.codePointAt(0)===47?`/`:`.`:t===1&&e.codePointAt(0)===47?`//`:e.slice(0,t)}function UE(e){qE(e);let t=e.length,n=-1,r=0,i=-1,a=0,o;for(;t--;){let s=e.codePointAt(t);if(s===47){if(o){r=t+1;break}continue}n<0&&(o=!0,n=t+1),s===46?i<0?i=t:a!==1&&(a=1):i>-1&&(a=-1)}return i<0||n<0||a===0||a===1&&i===n-1&&i===r+1?``:e.slice(i,n)}function WE(...e){let t=-1,n;for(;++t`u`?null:document;function Tf(e,t,n){var r=wf;if(r&&typeof t==`string`&&t){var i=Ft(t);i=`link[rel="`+e+`"][href="`+i+`"]`,typeof n==`string`&&(i+=`[crossorigin="`+n+`"]`),yf.has(i)||(yf.add(i),e={rel:e,crossOrigin:n,href:t},r.querySelector(i)===null&&(t=r.createElement(`link`),Rd(t,`link`,e),gt(t),r.head.appendChild(t)))}}function Ef(e){xf.D(e),Tf(`dns-prefetch`,e,null)}function Df(e,t){xf.C(e,t),Tf(`preconnect`,e,t)}function Of(e,t,n){xf.L(e,t,n);var r=wf;if(r&&e&&t){var i=`link[rel="preload"][as="`+Ft(t)+`"]`;t===`image`&&n&&n.imageSrcSet?(i+=`[imagesrcset="`+Ft(n.imageSrcSet)+`"]`,typeof n.imageSizes==`string`&&(i+=`[imagesizes="`+Ft(n.imageSizes)+`"]`)):i+=`[href="`+Ft(e)+`"]`;var a=i;switch(t){case`style`:a=Pf(e);break;case`script`:a=Rf(e)}vf.has(a)||(e=f({rel:`preload`,href:t===`image`&&n&&n.imageSrcSet?void 0:e,as:t},n),vf.set(a,e),r.querySelector(i)!==null||t===`style`&&r.querySelector(Ff(a))||t===`script`&&r.querySelector(zf(a))||(t=r.createElement(`link`),Rd(t,`link`,e),gt(t),r.head.appendChild(t)))}}function kf(e,t){xf.m(e,t);var n=wf;if(n&&e){var r=t&&typeof t.as==`string`?t.as:`script`,i=`link[rel="modulepreload"][as="`+Ft(r)+`"][href="`+Ft(e)+`"]`,a=i;switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:a=Rf(e)}if(!vf.has(a)&&(e=f({rel:`modulepreload`,href:e},t),vf.set(a,e),n.querySelector(i)===null)){switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:if(n.querySelector(zf(a)))return}r=n.createElement(`link`),Rd(r,`link`,e),gt(r),n.head.appendChild(r)}}}function Af(e,t,n){xf.S(e,t,n);var r=wf;if(r&&e){var i=ht(r).hoistableStyles,a=Pf(e);t||=`default`;var o=i.get(a);if(!o){var s={loading:0,preload:null};if(o=r.querySelector(Ff(a)))s.loading=5;else{e=f({rel:`stylesheet`,href:e,"data-precedence":t},n),(n=vf.get(a))&&Hf(e,n);var c=o=r.createElement(`link`);gt(c),Rd(c,`link`,e),c._p=new Promise(function(e,t){c.onload=e,c.onerror=t}),c.addEventListener(`load`,function(){s.loading|=1}),c.addEventListener(`error`,function(){s.loading|=2}),s.loading|=4,Vf(o,t,r)}o={type:`stylesheet`,instance:o,count:1,state:s},i.set(a,o)}}}function jf(e,t){xf.X(e,t);var n=wf;if(n&&e){var r=ht(n).hoistableScripts,i=Rf(e),a=r.get(i);a||(a=n.querySelector(zf(i)),a||(e=f({src:e,async:!0},t),(t=vf.get(i))&&Uf(e,t),a=n.createElement(`script`),gt(a),Rd(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Mf(e,t){xf.M(e,t);var n=wf;if(n&&e){var r=ht(n).hoistableScripts,i=Rf(e),a=r.get(i);a||(a=n.querySelector(zf(i)),a||(e=f({src:e,async:!0,type:`module`},t),(t=vf.get(i))&&Uf(e,t),a=n.createElement(`script`),gt(a),Rd(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Nf(e,t,n,r){var a=(a=oe.current)?bf(a):null;if(!a)throw Error(i(446));switch(e){case`meta`:case`title`:return null;case`style`:return typeof n.precedence==`string`&&typeof n.href==`string`?(t=Pf(n.href),n=ht(a).hoistableStyles,r=n.get(t),r||(r={type:`style`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};case`link`:if(n.rel===`stylesheet`&&typeof n.href==`string`&&typeof n.precedence==`string`){e=Pf(n.href);var o=ht(a).hoistableStyles,s=o.get(e);if(s||(a=a.ownerDocument||a,s={type:`stylesheet`,instance:null,count:0,state:{loading:0,preload:null}},o.set(e,s),(o=a.querySelector(Ff(e)))&&!o._p&&(s.instance=o,s.state.loading=5),vf.has(e)||(n={rel:`preload`,as:`style`,href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},vf.set(e,n),o||Lf(a,e,n,s.state))),t&&r===null)throw Error(i(528,``));return s}if(t&&r!==null)throw Error(i(529,``));return null;case`script`:return t=n.async,n=n.src,typeof n==`string`&&t&&typeof t!=`function`&&typeof t!=`symbol`?(t=Rf(n),n=ht(a).hoistableScripts,r=n.get(t),r||(r={type:`script`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};default:throw Error(i(444,e))}}function Pf(e){return`href="`+Ft(e)+`"`}function Ff(e){return`link[rel="stylesheet"][`+e+`]`}function If(e){return f({},e,{"data-precedence":e.precedence,precedence:null})}function Lf(e,t,n,r){e.querySelector(`link[rel="preload"][as="style"][`+t+`]`)?r.loading=1:(t=e.createElement(`link`),r.preload=t,t.addEventListener(`load`,function(){return r.loading|=1}),t.addEventListener(`error`,function(){return r.loading|=2}),Rd(t,`link`,n),gt(t),e.head.appendChild(t))}function Rf(e){return`[src="`+Ft(e)+`"]`}function zf(e){return`script[async]`+e}function Bf(e,t,n){if(t.count++,t.instance===null)switch(t.type){case`style`:var r=e.querySelector(`style[data-href~="`+Ft(n.href)+`"]`);if(r)return t.instance=r,gt(r),r;var a=f({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return r=(e.ownerDocument||e).createElement(`style`),gt(r),Rd(r,`style`,a),Vf(r,n.precedence,e),t.instance=r;case`stylesheet`:a=Pf(n.href);var o=e.querySelector(Ff(a));if(o)return t.state.loading|=4,t.instance=o,gt(o),o;r=If(n),(a=vf.get(a))&&Hf(r,a),o=(e.ownerDocument||e).createElement(`link`),gt(o);var s=o;return s._p=new Promise(function(e,t){s.onload=e,s.onerror=t}),Rd(o,`link`,r),t.state.loading|=4,Vf(o,n.precedence,e),t.instance=o;case`script`:return o=Rf(n.src),(a=e.querySelector(zf(o)))?(t.instance=a,gt(a),a):(r=n,(a=vf.get(o))&&(r=f({},n),Uf(r,a)),e=e.ownerDocument||e,a=e.createElement(`script`),gt(a),Rd(a,`link`,r),e.head.appendChild(a),t.instance=a);case`void`:return null;default:throw Error(i(443,t.type))}else t.type===`stylesheet`&&!(t.state.loading&4)&&(r=t.instance,t.state.loading|=4,Vf(r,n.precedence,e));return t.instance}function Vf(e,t,n){for(var r=n.querySelectorAll(`link[rel="stylesheet"][data-precedence],style[data-precedence]`),i=r.length?r[r.length-1]:null,a=i,o=0;o{let d=W(r,t);if(d){if(E(t)||D(t))return;let r=fa(W(a,t)),f=W(a,t,fa(l)?W(i,t):l);fa(f)||u&&u.defaultChecked||c?_a(a,t,c?f:ho(d._f)):re(t,f),o.mount&&!o.action&&(b(),r&&n.isDirty&&(m.isDirty||h.isDirty)&&(F()||(n.isDirty=!1,g.state.next({...n}))),e.shouldUnregister&&r&&!fa(W(a,t))&&ka(t,s)&&(o.watch=!0))}},ee=(e,o,s,c,l)=>{let u=!1,d=!1,f={name:e};if(!t.disabled||c===!0){if(!s||c){let t=wa(W(i,e),o);(m.isDirty||h.isDirty)&&(d=n.isDirty,n.isDirty=f.isDirty=!t||F(),u=d!==f.isDirty),d=!!W(n.dirtyFields,e),t===n.isDirty?t?Ya(n.dirtyFields,e):_a(n.dirtyFields,e,!0):Oo(n.dirtyFields,fo(i,a,void 0,r)),f.dirtyFields=n.dirtyFields,u||=(m.dirtyFields||h.dirtyFields)&&d!==!t}if(s){let t=W(n.touchedFields,e);t||(_a(n.touchedFields,e,s),f.touchedFields=n.touchedFields,u||=(m.touchedFields||h.touchedFields)&&t!==s)}u&&l&&g.state.next(f)}return u?f:{}},k=(e,r,i,a)=>{let o=W(n.errors,e),s=(m.isValid||h.isValid)&&ha(r)&&n.isValid!==r;if(t.delayError&&i?(c[e]=y(e,()=>w(e,i)),c[e](t.delayError)):(clearTimeout(l[e]),delete c[e],i?_a(n.errors,e,i):Ya(n.errors,e),n.errors={...n.errors}),(i?!wa(o,i):o)||!Ma(a)||s){let t={...a,...s&&ha(r)?{isValid:r}:{},errors:n.errors,name:e};g.state.next(t)}},A=async e=>(x(e,!0),await t.resolver(a,t.context,go(e||s.mount,r,t.criteriaMode,t.shouldUseNativeValidation))),j=async e=>{let{errors:t}=await A(e);if(x(e),e){for(let r of e){let e=W(t,r);e?s.array.has(r)&&ea(e)&&!Object.keys(e).some(e=>!Number.isNaN(Number(e)))?ja(n.errors,{[r]:e},r):_a(n.errors,r,e):Ya(n.errors,r)}n.errors={...n.errors}}else n.errors=t;return t},M=async({name:t,eventType:r})=>{if(e.validate){let i=await e.validate({formValues:a,formState:n,name:t,eventType:r});if(ea(i))for(let e in i){let t=i[e];t&&pe(`${Do}.${e}`,{message:Ea(t.message)?t.message:``,type:t.type||sa.validate})}else Ea(i)||!i?pe(Do,{message:i||``,type:sa.validate}):fe(Do);return i}return!0},N=async({fields:r,onlyCheckValid:i,name:o,eventType:c,context:l={valid:!0,runRootValidation:!1}})=>{if(e.validate&&(l.runRootValidation=!0,!await M({name:o,eventType:c})&&(l.valid=!1,i)))return l.valid;for(let o in r){let u=r[o];if(u){let{_f:r,...d}=u;if(r){let o=s.array.has(r.name),c=u._f&&yo(u._f),d=m.validatingFields||m.isValidating||h.validatingFields||h.isValidating;c&&d&&x([r.name],!0);let f=await Wa(u,s.disabled,a,v,t.shouldUseNativeValidation&&!i,o);if(c&&d&&x([r.name]),f[r.name]&&(l.valid=!1,i)||(!i&&(W(f,r.name)?o?ja(n.errors,f,r.name):_a(n.errors,r.name,f[r.name]):Ya(n.errors,r.name)),e.shouldUseNativeValidation&&f[r.name]))break}!Ma(d)&&await N({context:l,onlyCheckValid:i,fields:d,name:o,eventType:c})}}return l.valid},P=()=>{for(let e of s.unMount){let t=W(r,e);t&&(t._f.refs?t._f.refs.every(e=>!ro(e)):!ro(t._f.ref))&&_e(e)}s.unMount=new Set},F=(e,t)=>(e&&t&&_a(a,e,t),!wa(o.mount?a:i,i)),te=(e,t,n)=>Da(e,s,{...o.mount?a:fa(t)||Ea(e)?i:t},n,t),ne=e=>Ka(W(o.mount?a:i,e,t.shouldUnregister?W(i,e,[]):[])),re=(e,t,n={},i=!1,o=!1,s=!1)=>{let c=W(r,e),l=t;if(c){let n=c._f;n&&(!n.disabled&&_a(a,e,mo(t,n)),l=Na(n.ref)&&Qi(t)?``:t,to(n.ref)?[...n.ref.options].forEach(e=>e.selected=l.includes(e.value)):n.refs?Yi(n.ref)?n.refs.forEach(e=>{(!e.defaultChecked||!e.disabled)&&(e.checked=Array.isArray(l)?!!l.find(t=>t===e.value):l===e.value||!!l)}):n.refs.forEach(e=>e.checked=e.value===l):Xi(n.ref)?n.ref.value=``:(n.ref.value=l,!n.ref.type&&!o&&!s&&g.state.next({name:e,values:i?a:ia(a)})))}(n.shouldDirty||n.shouldTouch)&&ee(e,l,n.shouldTouch,n.shouldDirty,!o),n.shouldValidate&&ce(e,{delayError:n.delayError})},ie=(e,t,n,i=!1,o=!1,c=!1)=>{s.array.has(e)&&g.array.next({name:e,values:i?a:ia(a)});for(let a in t){if(!t.hasOwnProperty(a))return;let l=t[a],u=e+`.`+a,d=W(r,u);(s.array.has(e)||ea(l)||d&&!d._f)&&!Zi(l)?ie(u,l,n,i,o,c):re(u,l,n,i,o,c)}},I=(e,t,i,c,l=!1)=>{let u=W(r,e),d=s.array.has(e),f=c?t:ia(t),p=wa(W(a,e),f);if(p||_a(a,e,f),d)g.array.next({name:e,values:c?a:ia(a)}),(m.isDirty||m.dirtyFields||h.isDirty||h.dirtyFields)&&i.shouldDirty&&(S(),l||g.state.next({name:e,dirtyFields:n.dirtyFields,isDirty:F(e,f)}));else{let t=Array.isArray(f)&&!f.length||Ma(f),n=!p&&!l;!u||u._f||Qi(f)||t?re(e,f,i,c,l,n):ie(e,f,i,c,l,n)}if(!p&&!l){let t=ka(e,s),r=c?a:ia(a);if(g.state.next({...t&&n,name:o.mount||t?e:void 0,values:r}),!d)for(let t of po(s.array,e))g.state.next({name:t,values:r})}},L=(e,t,n={})=>I(e,t,n,!1),ae=(e,t={})=>{let r=ga(e)?e(a):e;if(!wa(a,r)){a={...a,...r};for(let e of s.mount)eo(r,e)&&I(e,W(r,e),t,!0,!0);g.state.next({...n,name:void 0,type:void 0,...u?{values:a}:{}}),t.shouldValidate&&b()}},oe=async i=>{o.mount=!0;let l=i.target,p=l.name,_=!0,y=W(r,p),S=e=>{_=Number.isNaN(e)||Zi(e)&&isNaN(e.getTime())||wa(e,W(a,p,e))};if(y){let o,C,w=l.type?ho(y._f):ta(i),T=i.type===aa.BLUR||i.type===aa.FOCUS_OUT,E=!bo(y._f)&&!e.validate&&!t.resolver&&!W(n.errors,p)&&!y._f.deps,D=E||wo(T,W(n.touchedFields,p),n.isSubmitted,f,d),O=ka(p,s,T);if(_a(a,p,w),T){if(!l||!l.readOnly){y._f.onBlur&&y._f.onBlur(i);let e=c[p];e&&e(0)}}else y._f.onChange&&y._f.onChange(i);let j=ee(p,w,T),P=!Ma(j)||O;if(!T&&g.state.next({name:p,type:i.type,...u?{values:ia(a)}:{}}),D)return(!E||!n.isValid)&&(m.isValid||h.isValid)&&(t.mode===`onBlur`?T&&b():T||b()),P&&g.state.next({name:p,...O?{}:j});if(!t.resolver&&e.validate&&await M({name:p,eventType:i.type}),!T&&O&&g.state.next({...n}),t.resolver){let{errors:e}=await A([p]);if(x([p]),S(w),!_){!Ma(j)&&g.state.next(j);return}let t=xo(n.errors,r,p),i=xo(e,r,t.name||p);o=i.error,p=i.name,C=Ma(e)}else x([p],!0),o=(await Wa(y,s.disabled,a,v,t.shouldUseNativeValidation))[p],x([p]),S(w),_&&(o?C=!1:(m.isValid||h.isValid)&&(C=await N({fields:r,onlyCheckValid:!0,name:p,eventType:i.type})));_&&(y._f.deps&&(!Array.isArray(y._f.deps)||y._f.deps.length>0)&&ce(y._f.deps),k(p,C,o,j))}},se=(e,t)=>{if(W(n.errors,t)&&e.focus)return e.focus(),1},ce=async(e,i={})=>{let a,o,u=Ga(e);if(t.resolver){let t=await j(fa(e)?e:u);a=Ma(t),o=e?!u.some(e=>W(t,e)):a}else e?(o=(await Promise.all(u.map(async e=>{let t=W(r,e);return await N({fields:t&&t._f?{[e]:t}:t,eventType:aa.TRIGGER})}))).every(Boolean),!(!o&&!n.isValid)&&b()):o=a=await N({fields:r,name:e,eventType:aa.TRIGGER});if(i.delayError&&t.delayError&&Ea(e)){let r=W(n.errors,e);r?(Ya(n.errors,e),c[e]=y(e,()=>w(e,r)),c[e](t.delayError)):(clearTimeout(l[e]),delete c[e])}return g.state.next({...!Ea(e)||(m.isValid||h.isValid)&&a!==n.isValid?{}:{name:e},...t.resolver||!e?{isValid:a}:{},errors:n.errors}),i.shouldFocus&&!o&&Aa(r,se,e?u:s.mount),o},le=(e,t)=>{let r={...o.mount?a:i};return t&&(r=Qa(t.dirtyFields?n.dirtyFields:n.touchedFields,r)),fa(e)?r:Ea(e)?W(r,e):e.map(e=>W(r,e))},ue=e=>fa(e)?{...n.errors}:Ea(e)?W(n.errors,e):e.map(e=>W(n.errors,e)),de=(e,t)=>{let r=t||n,i=W(r.errors,e);return{invalid:!!i,isDirty:!!W(r.dirtyFields,e),error:i,isValidating:!!W(n.validatingFields,e),isTouched:!!W(r.touchedFields,e)}},fe=e=>{let t=e?Ga(e):void 0;t?.forEach(e=>Ya(n.errors,e)),t?t.forEach(e=>{g.state.next({name:e,errors:n.errors})}):(n.errors={},g.state.next({errors:n.errors}))},pe=(e,t,i)=>{let a=(W(r,e,{_f:{}})._f||{}).ref,{ref:o,message:s,type:c,...l}=W(n.errors,e)||{};_a(n.errors,e,{...l,...t,ref:a}),g.state.next({name:e,errors:n.errors,isValid:!1}),i&&i.shouldFocus&&a&&a.focus&&a.focus()},me=(e,t)=>{if(ga(e)){u++;let{unsubscribe:n}=g.state.subscribe({next:n=>`values`in n&&e(n.values||te(void 0,t),n)}),r=!1;return{unsubscribe:()=>{r||(r=!0,u--,n())}}}return te(e,t,!0)},he=e=>{let t=!!e.formState?.values;t&&u++;let{unsubscribe:r}=g.state.subscribe({next:t=>{if(Co(e.name,t.name,e.exact)&&So(t,e.formState||m,Ee,e.reRenderRoot)){let r={...a};e.callback({values:r,...n,...t,defaultValues:i})}}});if(!t)return r;let o=!1;return()=>{o||(o=!0,u--,r())}},ge=e=>(o.mount=!0,h={...h,...e.formState},he({...e,formState:{...p,...e.formState}})),_e=(e,o={})=>{for(let c of e?Ga(e):s.mount)s.mount.delete(c),s.array.delete(c),o.keepValue||(Ya(r,c),Ya(a,c)),!o.keepError&&Ya(n.errors,c),!o.keepDirty&&Ya(n.dirtyFields,c),!o.keepTouched&&Ya(n.touchedFields,c),!o.keepIsValidating&&Ya(n.validatingFields,c),!t.shouldUnregister&&!o.keepDefaultValue&&Ya(i,c);u&&g.state.next({values:ia(a)}),g.state.next({...n,...o.keepDirty?{}:{isDirty:F()}}),!o.keepIsValid&&b()},ve=({disabled:e,name:t})=>{if(ha(e)&&o.mount||e||s.disabled.has(t)){let n=s.disabled.has(t)!==!!e;e?s.disabled.add(t):s.disabled.delete(t),n&&o.mount&&!o.action&&b()}},ye=(e,n={})=>{let a=W(r,e),c=ha(n.disabled)||ha(t.disabled),l=!s.registerName.has(e)&&a&&a._f&&!a._f.mount;return _a(r,e,{...a||{},_f:{...a&&a._f?a._f:{ref:{name:e}},name:e,mount:!0,...n}}),s.mount.add(e),a&&!l?ve({disabled:ha(n.disabled)?n.disabled:t.disabled,name:e}):O(e,!0,n.value),{...c?{disabled:n.disabled||t.disabled}:{},...t.progressive?{required:!!n.required,min:_o(n.min),max:_o(n.max),minLength:_o(n.minLength),maxLength:_o(n.maxLength),pattern:_o(n.pattern)}:{},name:e,onChange:oe,onBlur:oe,ref:c=>{if(c){s.registerName.add(e),ye(e,n),s.registerName.delete(e),a=W(r,e);let t=fa(c.value)&&c.querySelectorAll&&c.querySelectorAll(`input,select,textarea`)[0]||c,o=no(t),l=a._f.refs||[];if(o?l.find(e=>e===t):t===a._f.ref)return;let u={...a._f};o?(u.refs=[...l.filter(ro),t,...Array.isArray(W(i,e))?[{}]:[]],u.ref={type:t.type,name:e}):(u.ref=t,delete u.refs),_a(r,e,{_f:u}),O(e,!1,void 0,t)}else a=W(r,e,{}),a._f&&(a._f.mount=!1),(t.shouldUnregister||n.shouldUnregister)&&!(na(s.array,e)&&o.action)&&s.unMount.add(e)}}},be=()=>t.shouldFocusError&&!t.shouldUseNativeValidation&&Aa(r,se,s.mount),xe=e=>{ha(e)&&(g.state.next({disabled:e}),Aa(r,(t,n)=>{let i=W(r,n);i&&(t.disabled=i._f.disabled||e,Array.isArray(i._f.refs)&&i._f.refs.forEach(t=>{t.disabled=i._f.disabled||e}))},0,!1))},Se=(e,i)=>async o=>{let c,l;o&&(o.preventDefault&&o.preventDefault(),o.persist&&o.persist());let u=ia(a);if(g.state.next({isSubmitting:!0}),t.resolver){let{errors:e,values:t}=await A();x(),n.errors=e,u=ia(t)}else await N({fields:r,eventType:aa.SUBMIT});if(s.disabled.size)for(let e of s.disabled)Ya(u,e);if(Ya(n.errors,ca),Ma(n.errors)){g.state.next({errors:{}});try{c=await e(u,o)}catch(e){l=e}}else i&&await i({...n.errors},o),be(),setTimeout(be);if(g.state.next({isSubmitted:!0,isSubmitting:!1,isSubmitSuccessful:Ma(n.errors)&&!l,submitCount:n.submitCount+1,errors:n.errors}),l)throw l;return c},R=(e,t={})=>{W(r,e)&&(fa(t.defaultValue)?L(e,ia(W(i,e))):(L(e,t.defaultValue),_a(i,e,ia(t.defaultValue))),t.keepTouched||Ya(n.touchedFields,e),t.keepDirty||(Ya(n.dirtyFields,e),n.isDirty=t.defaultValue?F(e,ia(W(i,e))):F()),t.keepError||(Ya(n.errors,e),m.isValid&&b()),g.state.next({...n}))},Ce=(e,c={})=>{let l=e?ia(e):i,u=ia(l),d=Ma(e),f=u,p=r;if(c.keepDefaultValues||(i=l),!c.keepValues){if(c.keepDirtyValues){let e=new Set([...s.mount,...ao(fo(i,a,void 0,p),n.dirtyFields)]);for(let t of e){let e=W(n.dirtyFields,t),r=W(a,t),i=W(f,t);e&&!fa(r)?_a(f,t,r):!e&&!fa(i)&&L(t,i)}}else{if(ra&&fa(e))for(let e of s.mount){let t=W(r,e);if(t&&t._f){let e=Array.isArray(t._f.refs)?t._f.refs[0]:t._f.ref;if(Na(e)){let t=e.closest(`form`);if(t){t.reset();break}}}}if(c.keepFieldsRef)for(let e of s.mount)L(e,W(f,e));else r={}}if(t.shouldUnregister){if(a=c.keepDefaultValues?ia(i):{},c.keepFieldsRef)for(let e of s.mount)_a(a,e,W(f,e))}else a=ia(f);g.array.next({values:{...f}}),g.state.next({name:void 0,type:void 0,values:{...f}})}s={mount:c.keepDirtyValues?s.mount:new Set,unMount:new Set,array:new Set,registerName:new Set,disabled:new Set,watch:new Set,watchAll:!1,focus:``},o.mount=!m.isValid||!!c.keepIsValid||!!c.keepDirtyValues||!t.shouldUnregister&&!Ma(f),o.watch=!!t.shouldUnregister,o.keepIsValid=!!c.keepIsValid,o.action=!1,o.actionArrayLengths.clear(),c.keepErrors||(n.errors={}),g.state.next({submitCount:c.keepSubmitCount?n.submitCount:0,isDirty:d?!1:c.keepDirty?n.isDirty:c.keepValues?F():!!(c.keepDefaultValues&&!wa(e,i)),isSubmitted:c.keepIsSubmitted?n.isSubmitted:!1,dirtyFields:d?{}:c.keepDirtyValues?c.keepDefaultValues&&a?fo(i,a,void 0,p):n.dirtyFields:c.keepDefaultValues&&e?fo(i,e,void 0,p):c.keepDirty?n.dirtyFields:{},touchedFields:c.keepTouched?n.touchedFields:{},errors:c.keepErrors?n.errors:{},isSubmitSuccessful:c.keepIsSubmitSuccessful?n.isSubmitSuccessful:!1,isSubmitting:!1,defaultValues:i})},we=(e,n)=>Ce(ga(e)?e(a):e,{...t.resetOptions,...n}),Te=(e,t={})=>{let n=W(r,e),i=n&&n._f;if(i){let e=i.refs?i.refs[0]:i.ref;e.focus&&setTimeout(()=>{e.focus(),t.shouldSelect&&ga(e.select)&&e.select()})}},Ee=e=>{let{name:t,type:r,values:i,...a}=e;n={...n,...a}};g.state.subscribe({next:Ee});let De={control:{register:ye,unregister:_e,getFieldState:de,handleSubmit:Se,setError:pe,_subscribe:he,_runSchema:A,_updateIsValidating:x,_focusError:be,_getWatch:te,_getDirty:F,_setValid:b,_setFieldArray:C,_setDisabledField:ve,_setErrors:T,_getFieldArray:ne,_reset:Ce,_resetDefaultValues:()=>ga(t.defaultValues)&&t.defaultValues().then(e=>{we(e,t.resetOptions),g.state.next({isLoading:!1})}),_removeUnmounted:P,_disableForm:xe,_subjects:g,_proxyFormState:m,get _fields(){return r},get _formValues(){return a},get _state(){return o},set _state(e){o=e},get _defaultValues(){return i},get _names(){return s},set _names(e){s=e},get _formState(){return n},get _options(){return t},set _options(e){t={...t,...e},d=Oa(t.mode),f=Oa(t.reValidateMode)}},subscribe:ge,trigger:ce,register:ye,handleSubmit:Se,watch:me,setValue:L,setValues:ae,getValues:le,getErrors:ue,reset:we,resetField:R,resetDefaultValues:(e,t={})=>{if(i=ia(e),!t.keepDirty){let e=fo(i,a,void 0,r);n.dirtyFields=e,n.isDirty=!Ma(e)}t.keepIsValid||b(),g.state.next({...n,defaultValues:i})},clearErrors:fe,unregister:_e,setError:pe,setFocus:Te,getFieldState:de};return{...De,formControl:De}}function jo(e={}){let t=m.useRef(void 0),n=m.useRef(void 0),r=m.useRef(e.formControl),[i,a]=m.useState(()=>({...ia(ko),isLoading:ga(e.defaultValues),errors:e.errors||{},disabled:e.disabled||!1,defaultValues:ga(e.defaultValues)?void 0:e.defaultValues}));if(!t.current||e.formControl&&r.current!==e.formControl){if(r.current=e.formControl,e.formControl)t.current={...e.formControl,formState:i},e.defaultValues&&!ga(e.defaultValues)&&e.formControl.reset(e.defaultValues,e.resetOptions);else{let{formControl:n,...r}=Ao(e);t.current={...r,formState:i}}}let o=t.current.control;o._options=e;let{resyncIfNeeded:s,snapshot:c}=Ta();return ba(()=>{let e=()=>({...o._formState,defaultValues:o._defaultValues});s(!0,e,a);let t=o._subscribe({formState:o._proxyFormState,callback:()=>a({...o._formState,defaultValues:o._defaultValues}),reRenderRoot:!0});return a(e=>({...e,isReady:!0})),o._formState.isReady=!0,()=>{t(),c(!0,e)}},[o,s,c]),m.useEffect(()=>o._disableForm(e.disabled),[o,e.disabled]),m.useEffect(()=>{e.mode&&(o._options.mode=e.mode),e.reValidateMode&&(o._options.reValidateMode=e.reValidateMode)},[o,e.mode,e.reValidateMode]),m.useEffect(()=>{e.errors&&(o._setErrors(e.errors),o._focusError())},[o,e.errors]),m.useEffect(()=>{e.shouldUnregister&&o._subjects.state.next({values:o._getWatch()})},[o,e.shouldUnregister]),m.useEffect(()=>{if(o._proxyFormState.isDirty){let e=o._getDirty();e!==i.isDirty&&o._subjects.state.next({isDirty:e})}},[o,i.isDirty]),m.useEffect(()=>{e.values&&!wa(e.values,n.current)?(o._reset(e.values,{keepFieldsRef:!0,...o._options.resetOptions}),o._options.resetOptions?.keepIsValid||o._setValid(),n.current=e.values,a(e=>({...e}))):o._resetDefaultValues()},[o,e.values]),m.useEffect(()=>{o._state.mount||(o._setValid(),o._state.mount=!0),o._state.watch&&(o._state.watch=!1,o._subjects.state.next({...o._formState})),o._removeUnmounted()}),t.current.formState=m.useMemo(()=>ya(i,o),[o,i]),t.current}var Mo=(e,t,n)=>{if(e&&`reportValidity`in e){let r=W(n,t);e.setCustomValidity(r&&r.message||``),e.reportValidity()}},No=(e,t)=>{for(let n in t.fields){let r=t.fields[n];r&&r.ref&&`reportValidity`in r.ref?Mo(r.ref,n,e):r&&r.refs&&r.refs.forEach(t=>Mo(t,n,e))}},Po=(e,t)=>{t.shouldUseNativeValidation&&No(e,t);let n={};for(let r in e){let i=W(t.fields,r),a=Object.assign(e[r]||{},{ref:i&&i.refs?i.refs[0]:i&&i.ref});if(Fo(t.names||Object.keys(e),r)){let e=Object.assign({},W(n,r));_a(e,`root`,a),_a(n,r,e)}else _a(n,r,a)}return n},Fo=(e,t)=>{let n=Io(t).replace(/[.*+?^${}()|\\]/g,`\\$&`);return e.some(e=>Io(e).match(`^${n}\\.\\d+`))};function Io(e){return e.replace(/\[(\d+)]/g,`.$1`).replace(/[[\]]/g,``)}function Lo(){return Lo=Object.assign?Object.assign.bind():function(e){for(var t=1;te.slice(1,-1).indexOf(`:`)===-1?void 0:(()=>{let t=e.slice(1,-1),n=t.indexOf(`:`),r=t.slice(0,n);return r?zv+r:void 0})(),Uv=e=>{let{theme:t,classGroups:n}=e;return Wv(n,t)},Wv=(e,t)=>{let n=Iv();for(let r in e){let i=e[r];Gv(i,n,r,t)}return n},Gv=(e,t,n,r)=>{let i=e.length;for(let a=0;a{if(typeof e==`string`){qv(e,t,n);return}if(typeof e==`function`){Jv(e,t,n,r);return}Yv(e,t,n,r)},qv=(e,t,n)=>{let r=e===``?t:Xv(t,e);r.classGroupId=n},Jv=(e,t,n,r)=>{if(Zv(e)){Gv(e(r),t,n,r);return}t.validators===null&&(t.validators=[]),t.validators.push(Fv(n,e))},Yv=(e,t,n,r)=>{let i=Object.entries(e),a=i.length;for(let e=0;e{let n=e,r=t.split(Lv),i=r.length;for(let e=0;e`isThemeGetter`in e&&e.isThemeGetter===!0,Qv=e=>{if(e<1)return{get:()=>void 0,set:()=>{}};let t=0,n=Object.create(null),r=Object.create(null),i=(i,a)=>{n[i]=a,t++,t>e&&(t=0,r=n,n=Object.create(null))};return{get(e){let t=n[e];if(t!==void 0)return t;if((t=r[e])!==void 0)return i(e,t),t},set(e,t){e in n?n[e]=t:i(e,t)}}},$v=`!`,ey=`:`,ty=[],ny=(e,t,n,r,i)=>({modifiers:e,hasImportantModifier:t,baseClassName:n,maybePostfixModifierPosition:r,isExternal:i}),ry=e=>{let{prefix:t,experimentalParseClassName:n}=e,r=e=>{let t=[],n=0,r=0,i=0,a,o=e.length;for(let s=0;s