diff --git a/CHANGELOG.md b/CHANGELOG.md index 93aa1ced..a26a08bd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -35,6 +35,14 @@ Preserve Intel macOS builds by excluding the unavailable ONNX runtime on that target; native document processing remains available and managed OCR reports an explicit unsupported-platform error before downloading model weights. + The graph viewer now exposes combined/native/OCR evidence tabs, confidence + and page/slide/sheet locators, bounded OCR region previews, coverage warnings, + and a managed model status/install card during initialization. + +- Make semantic provider choice explicit and repeatable with `--backend`, + `--model`, `COMPASS_BACKEND`, and `COMPASS_MODEL`. Credential guidance now + covers all built-in providers and custom provider environment keys without + exposing secrets in Compass configuration or artifacts. - Hard-cut Swift, Dart, Scala, and Groovy/Gradle onto version-1 qualifying universal evidence pipelines. The bounded AST-first producer publishes diff --git a/COMPATIBILITY.md b/COMPATIBILITY.md index 3d16db63..1857d13a 100644 --- a/COMPATIBILITY.md +++ b/COMPATIBILITY.md @@ -77,6 +77,12 @@ with exact source owner, geometry, confidence, and model provenance. Partial visual coverage is never labeled complete or finalized as a complete document cache entry. +Semantic enrichment accepts explicit provider/model selection through +`--backend`/`--model` or the non-secret `COMPASS_BACKEND`/`COMPASS_MODEL` +environment defaults. Provider credentials remain provider-specific +environment or secret-store values and are excluded from graph artifacts, +history profiles, and cache identities. + ## Evolving contracts The Grounded Agent Graph feature is additive and opt-in. It does not change @@ -193,6 +199,11 @@ Standalone HTML may additionally embed optional, presentation-only source navigation metadata for a recognized Git forge and full source commit. This metadata is outside `compass.viewer.workbench/1`; `workbench-json` and the versioned graph/view contracts are unchanged. +Rich document nodes may carry an optional additive `document` object in +`compass.viewer.graph/1`. It contains bounded native/OCR provenance, typed +page/slide/sheet locators, confidence, and OCR geometry for the viewer; older +readers may ignore the field, while strict readers should preserve unknown +nested fields and fail closed only on an unknown contract major. Structural builds publish a validated `store.sqlite3` sidecar and typed `store.ref` selector by default; `--store json` explicitly opts out. Typed code queries prefer that validated sidecar by default, while `--engine json` diff --git a/crates/compass-cli/src/help.rs b/crates/compass-cli/src/help.rs index 43d71c62..f44f58a4 100644 --- a/crates/compass-cli/src/help.rs +++ b/crates/compass-cli/src/help.rs @@ -749,9 +749,9 @@ const PAGES: &[Page] = &[ ), page!( "provider", - "Manage custom semantic model providers", + "Choose built-in or custom semantic model providers", ["compass provider "], - "Examples:\n compass provider list\n compass provider show local\n\nTips:\n Run `compass help provider add` for endpoint and credential configuration." + "Examples:\n compass provider list\n compass provider show local\n COMPASS_BACKEND=gemini GEMINI_API_KEY=… compass extract ./docs\n\nBuilt-in providers include claude, kimi, ollama, gemini, openai, deepseek, azure, bedrock, and claude-cli. Use `--backend ` (or `COMPASS_BACKEND`) when more than one credential is available.\n\nTips:\n Run `compass help provider add` for custom OpenAI-compatible endpoints and credential configuration. Keys are read from environment variables only; they are not stored in `.compass/config.toml`, provider registries, history profiles, or graph artifacts." ), page!( "provider add", @@ -765,7 +765,7 @@ const PAGES: &[Page] = &[ "provider list", "List registered custom providers", ["compass provider list"], - "Examples:\n compass provider list" + "Examples:\n compass provider list\n\nNotes:\n This lists custom providers registered in `~/.compass/providers.json`. Built-in providers are selected with `--backend` or `COMPASS_BACKEND`; see `compass help extract` for the supported credential variables." ), page!( "provider show", diff --git a/crates/compass-cli/src/lib.rs b/crates/compass-cli/src/lib.rs index 469d6535..1559ea11 100644 --- a/crates/compass-cli/src/lib.rs +++ b/crates/compass-cli/src/lib.rs @@ -2097,6 +2097,13 @@ fn command_build_with_validation_inner( "error: must specify a path to scan or a --postgres DSN".to_owned(), ); } + if extract { + // Explicit flags win over environment configuration. The generic + // selector is intentionally non-secret: provider transports still + // read only their documented provider-specific credential variable. + let environment = std::env::vars().collect::>(); + apply_provider_environment_defaults(&mut backend, &mut model, &environment); + } let root = if extract && !has_explicit_root { PathBuf::from(".") } else { @@ -2508,11 +2515,32 @@ fn no_llm_api_key_message(semantic_count: usize, dedup_llm: bool) -> String { "" }; format!( - "no LLM API key found ({}). Set GEMINI_API_KEY or GOOGLE_API_KEY (gemini), MOONSHOT_API_KEY (kimi), ANTHROPIC_API_KEY (claude), OPENAI_API_KEY (openai), DEEPSEEK_API_KEY (deepseek), or pass --backend. A code-only corpus needs no key.{hint}", + "no LLM API key found ({}). Choose a provider with --backend or COMPASS_BACKEND and set its credential: GEMINI_API_KEY/GOOGLE_API_KEY (gemini), MOONSHOT_API_KEY (kimi), ANTHROPIC_API_KEY (claude), OPENAI_API_KEY (openai), DEEPSEEK_API_KEY (deepseek), AZURE_OPENAI_API_KEY plus AZURE_OPENAI_ENDPOINT (azure), AWS credentials (bedrock), OLLAMA_BASE_URL for local Ollama, or the env key registered with `compass provider add`. A code-only corpus needs no key.{hint}", reasons.join("; ") ) } +fn apply_provider_environment_defaults( + backend: &mut Option, + model: &mut Option, + environment: &HashMap, +) { + if backend.is_none() { + *backend = environment_value(environment, "COMPASS_BACKEND"); + } + if model.is_none() { + *model = environment_value(environment, "COMPASS_MODEL"); + } +} + +fn environment_value(environment: &HashMap, key: &str) -> Option { + environment + .get(key) + .map(|value| value.trim()) + .filter(|value| !value.is_empty()) + .map(str::to_owned) +} + fn command_hook_refresh(frontend: Frontend, args: &[String]) -> Outcome { let launch_root = args .iter() @@ -3002,7 +3030,7 @@ fn executable_on_path(name: &str) -> bool { } fn extract_help() -> String { - "Usage: compass extract [PATH] [--program] [--program-artifact PATH] [--no-program] [--store json|sqlite] [--inference-level low|medium|high|max] [--code-only] [--cargo] [--google-workspace] [--postgres DSN] [--backend NAME] [--model MODEL] [--mode deep] [--ocr off|auto|always] [--ocr-profile NAME] [--ocr-language BCP47] [--token-budget N] [--max-concurrency N] [--max-workers N] [--max-source-bytes N] [--api-timeout SECONDS] [--allow-partial] [--dedup-llm] [--timing] [--out DIR] [--no-cluster] [--force] [--no-viz] [--no-gitignore] [--exclude PATTERN] [--resolution N] [--exclude-hubs N]".to_owned() + "Usage: compass extract [PATH] [--program] [--program-artifact PATH] [--no-program] [--store json|sqlite] [--inference-level low|medium|high|max] [--code-only] [--cargo] [--google-workspace] [--postgres DSN] [--backend NAME] [--model MODEL] [--mode deep] [--ocr off|auto|always] [--ocr-profile NAME] [--ocr-language BCP47] [--token-budget N] [--max-concurrency N] [--max-workers N] [--max-source-bytes N] [--api-timeout SECONDS] [--allow-partial] [--dedup-llm] [--timing] [--out DIR] [--no-cluster] [--force] [--no-viz] [--no-gitignore] [--exclude PATTERN] [--resolution N] [--exclude-hubs N]\nProvider selection: --backend/--model override COMPASS_BACKEND/COMPASS_MODEL. Built-ins: claude, kimi, ollama, gemini, openai, deepseek, azure, bedrock, claude-cli. Set the selected provider's documented credential variable; custom providers use `compass provider add`. Credentials are never written to Compass artifacts.".to_owned() } fn saved_graph_root() -> Option { @@ -6580,4 +6608,24 @@ mod mcp_option_tests { assert!(extract_help().contains("--inference-level low|medium|high|max")); Ok(()) } + + #[test] + fn provider_environment_defaults_are_non_secret_and_flags_win() { + let environment = HashMap::from([ + ("COMPASS_BACKEND".to_owned(), " gemini ".to_owned()), + ("COMPASS_MODEL".to_owned(), " gemini-test ".to_owned()), + ]); + let mut backend = None; + let mut model = None; + apply_provider_environment_defaults(&mut backend, &mut model, &environment); + assert_eq!(backend.as_deref(), Some("gemini")); + assert_eq!(model.as_deref(), Some("gemini-test")); + + let mut backend = Some("openai".to_owned()); + let mut model = Some("gpt-test".to_owned()); + apply_provider_environment_defaults(&mut backend, &mut model, &environment); + assert_eq!(backend.as_deref(), Some("openai")); + assert_eq!(model.as_deref(), Some("gpt-test")); + assert!(extract_help().contains("COMPASS_BACKEND/COMPASS_MODEL")); + } } diff --git a/crates/compass-cli/tests/dedup_extract.rs b/crates/compass-cli/tests/dedup_extract.rs index 817e8c95..041bf37e 100644 --- a/crates/compass-cli/tests/dedup_extract.rs +++ b/crates/compass-cli/tests/dedup_extract.rs @@ -23,6 +23,8 @@ const BACKEND_ENVIRONMENT: &[&str] = &[ "AWS_DEFAULT_REGION", "AWS_ACCESS_KEY_ID", "OLLAMA_BASE_URL", + "COMPASS_BACKEND", + "COMPASS_MODEL", ]; #[test] @@ -49,7 +51,7 @@ fn dedup_llm_without_backend_has_actionable_diagnostic() -> Result<(), Box or COMPASS_BACKEND and set its credential: GEMINI_API_KEY/GOOGLE_API_KEY (gemini), MOONSHOT_API_KEY (kimi), ANTHROPIC_API_KEY (claude), OPENAI_API_KEY (openai), DEEPSEEK_API_KEY (deepseek), AZURE_OPENAI_API_KEY plus AZURE_OPENAI_ENDPOINT (azure), AWS credentials (bedrock), OLLAMA_BASE_URL for local Ollama, or the env key registered with `compass provider add`. A code-only corpus needs no key.\n" )); assert!(stderr.contains("Compass extract failed after ")); Ok(()) diff --git a/crates/compass-core/src/document_processing.rs b/crates/compass-core/src/document_processing.rs index 2c1c5d24..9acc684a 100644 --- a/crates/compass-core/src/document_processing.rs +++ b/crates/compass-core/src/document_processing.rs @@ -42,6 +42,7 @@ pub struct PreparedDocument { pub artifact: Arc, pub semantic_text: Arc, pub cache_identity: String, + pub ocr_mode: OcrMode, } #[derive(Clone, Debug)] @@ -152,6 +153,7 @@ pub fn prepare_document_set( artifact: Arc::new(artifact), semantic_text: Arc::::from(semantic_text), cache_identity: cache_identity.clone(), + ocr_mode: options.ocr_mode, }, ); } @@ -252,6 +254,7 @@ pub(crate) fn project_document( path: &Path, artifact: &DocumentArtifact, cache_identity: &str, + ocr_mode: OcrMode, ) -> Result { artifact.validate().map_err(|error| error.to_string())?; let file_id = compass_languages::make_id(&[source_file]); @@ -294,6 +297,10 @@ pub(crate) fn project_document( "document_visual_coverage".to_owned(), serde_json::to_value(artifact.visual_coverage).map_err(|error| error.to_string())?, ); + root.insert( + "document_ocr_mode".to_owned(), + serde_json::to_value(ocr_mode).map_err(|error| error.to_string())?, + ); if !artifact.metadata.is_empty() { root.insert( "document_metadata".to_owned(), @@ -486,6 +493,7 @@ mod tests { Path::new("report.docx"), &artifact, "fixture-identity", + OcrMode::Off, )?; assert_eq!(extraction.nodes.len(), 2); assert_eq!(extraction.edges.len(), 1); @@ -496,6 +504,10 @@ mod tests { .and_then(serde_json::Value::as_str), Some("Projected sentinel") ); + assert_eq!( + extraction.nodes[0].attributes.get("document_ocr_mode"), + Some(&serde_json::json!("off")) + ); assert_eq!( extraction.extensions.get("document_cache_identity"), Some(&serde_json::json!("fixture-identity")) diff --git a/crates/compass-core/src/pipeline.rs b/crates/compass-core/src/pipeline.rs index 4c2d4caa..d9da195b 100644 --- a/crates/compass-core/src/pipeline.rs +++ b/crates/compass-core/src/pipeline.rs @@ -2907,6 +2907,7 @@ fn build_graph_inner_unscoped( path, &prepared.artifact, &prepared.cache_identity, + prepared.ocr_mode, ) .map_err(|detail| { compass_languages::ExtractError::InvalidDocumentEvidence { diff --git a/crates/compass-output/assets/viewer/graph.js b/crates/compass-output/assets/viewer/graph.js index 4df7240c..feb4bc76 100644 --- a/crates/compass-output/assets/viewer/graph.js +++ b/crates/compass-output/assets/viewer/graph.js @@ -1,14 +1,14 @@ -(function(){"use strict";function nN(n,e){for(var t=0;ti[o]})}}}return Object.freeze(Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}))}function iN(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}var Fl={exports:{}},kr={};var xp;function gN(){if(xp)return kr;xp=1;var n=Symbol.for("react.transitional.element"),e=Symbol.for("react.fragment");function t(i,o,r){var A=null;if(r!==void 0&&(A=""+r),o.key!==void 0&&(A=""+o.key),"key"in o){r={};for(var I in o)I!=="key"&&(r[I]=o[I])}else r=o;return o=r.ref,{$$typeof:n,type:i,key:A,ref:o!==void 0?o:null,props:r}}return kr.Fragment=e,kr.jsx=t,kr.jsxs=t,kr}var Ep;function oN(){return Ep||(Ep=1,Fl.exports=gN()),Fl.exports}var f=oN(),Vl={exports:{}},zr={},Ul={exports:{}},Yl={};var Sp;function sN(){return Sp||(Sp=1,(function(n){function e(R,Q){var H=R.length;R.push(Q);e:for(;0>>1,ee=R[ge];if(0>>1;geo(ie,H))aeo(ue,ie)?(R[ge]=ue,R[ae]=H,ge=ae):(R[ge]=ie,R[U]=H,ge=U);else if(aeo(ue,H))R[ge]=ue,R[ae]=H,ge=ae;else break e}}return Q}function o(R,Q){var H=R.sortIndex-Q.sortIndex;return H!==0?H:R.id-Q.id}if(n.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var r=performance;n.unstable_now=function(){return r.now()}}else{var A=Date,I=A.now();n.unstable_now=function(){return A.now()-I}}var l=[],c=[],h=1,p=null,m=3,b=!1,w=!1,O=!1,x=!1,S=typeof setTimeout=="function"?setTimeout:null,E=typeof clearTimeout=="function"?clearTimeout:null,_=typeof setImmediate<"u"?setImmediate:null;function j(R){for(var Q=t(c);Q!==null;){if(Q.callback===null)i(c);else if(Q.startTime<=R)i(c),Q.sortIndex=Q.expirationTime,e(l,Q);else break;Q=t(c)}}function X(R){if(O=!1,j(R),!w)if(t(l)!==null)w=!0,ne||(ne=!0,xe());else{var Q=t(c);Q!==null&&le(X,Q.startTime-R)}}var ne=!1,F=-1,V=5,Ie=-1;function Ee(){return x?!0:!(n.unstable_now()-IeR&&Ee());){var ge=p.callback;if(typeof ge=="function"){p.callback=null,m=p.priorityLevel;var ee=ge(p.expirationTime<=R);if(R=n.unstable_now(),typeof ee=="function"){p.callback=ee,j(R),Q=!0;break t}p===t(l)&&i(l),j(R)}else i(l);p=t(l)}if(p!==null)Q=!0;else{var T=t(c);T!==null&&le(X,T.startTime-R),Q=!1}}break e}finally{p=null,m=H,b=!1}Q=void 0}}finally{Q?xe():ne=!1}}}var xe;if(typeof _=="function")xe=function(){_(Ze)};else if(typeof MessageChannel<"u"){var He=new MessageChannel,Fe=He.port2;He.port1.onmessage=Ze,xe=function(){Fe.postMessage(null)}}else xe=function(){S(Ze,0)};function le(R,Q){F=S(function(){R(n.unstable_now())},Q)}n.unstable_IdlePriority=5,n.unstable_ImmediatePriority=1,n.unstable_LowPriority=4,n.unstable_NormalPriority=3,n.unstable_Profiling=null,n.unstable_UserBlockingPriority=2,n.unstable_cancelCallback=function(R){R.callback=null},n.unstable_forceFrameRate=function(R){0>R||125ge?(R.sortIndex=H,e(c,R),t(l)===null&&R===t(c)&&(O?(E(F),F=-1):O=!0,le(X,H-ge))):(R.sortIndex=ee,e(l,R),w||b||(w=!0,ne||(ne=!0,xe()))),R},n.unstable_shouldYield=Ee,n.unstable_wrapCallback=function(R){var Q=m;return function(){var H=m;m=Q;try{return R.apply(this,arguments)}finally{m=H}}}})(Yl)),Yl}var Tp;function rN(){return Tp||(Tp=1,Ul.exports=sN()),Ul.exports}var Hl={exports:{}},Pe={};var Op;function aN(){if(Op)return Pe;Op=1;var n=Symbol.for("react.transitional.element"),e=Symbol.for("react.portal"),t=Symbol.for("react.fragment"),i=Symbol.for("react.strict_mode"),o=Symbol.for("react.profiler"),r=Symbol.for("react.consumer"),A=Symbol.for("react.context"),I=Symbol.for("react.forward_ref"),l=Symbol.for("react.suspense"),c=Symbol.for("react.memo"),h=Symbol.for("react.lazy"),p=Symbol.for("react.activity"),m=Symbol.iterator;function b(T){return T===null||typeof T!="object"?null:(T=m&&T[m]||T["@@iterator"],typeof T=="function"?T:null)}var w={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},O=Object.assign,x={};function S(T,U,ie){this.props=T,this.context=U,this.refs=x,this.updater=ie||w}S.prototype.isReactComponent={},S.prototype.setState=function(T,U){if(typeof T!="object"&&typeof T!="function"&&T!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,T,U,"setState")},S.prototype.forceUpdate=function(T){this.updater.enqueueForceUpdate(this,T,"forceUpdate")};function E(){}E.prototype=S.prototype;function _(T,U,ie){this.props=T,this.context=U,this.refs=x,this.updater=ie||w}var j=_.prototype=new E;j.constructor=_,O(j,S.prototype),j.isPureReactComponent=!0;var X=Array.isArray;function ne(){}var F={H:null,A:null,T:null,S:null},V=Object.prototype.hasOwnProperty;function Ie(T,U,ie){var ae=ie.ref;return{$$typeof:n,type:T,key:U,ref:ae!==void 0?ae:null,props:ie}}function Ee(T,U){return Ie(T.type,U,T.props)}function Ze(T){return typeof T=="object"&&T!==null&&T.$$typeof===n}function xe(T){var U={"=":"=0",":":"=2"};return"$"+T.replace(/[=:]/g,function(ie){return U[ie]})}var He=/\/+/g;function Fe(T,U){return typeof T=="object"&&T!==null&&T.key!=null?xe(""+T.key):U.toString(36)}function le(T){switch(T.status){case"fulfilled":return T.value;case"rejected":throw T.reason;default:switch(typeof T.status=="string"?T.then(ne,ne):(T.status="pending",T.then(function(U){T.status==="pending"&&(T.status="fulfilled",T.value=U)},function(U){T.status==="pending"&&(T.status="rejected",T.reason=U)})),T.status){case"fulfilled":return T.value;case"rejected":throw T.reason}}throw T}function R(T,U,ie,ae,ue){var me=typeof T;(me==="undefined"||me==="boolean")&&(T=null);var Le=!1;if(T===null)Le=!0;else switch(me){case"bigint":case"string":case"number":Le=!0;break;case"object":switch(T.$$typeof){case n:case e:Le=!0;break;case h:return Le=T._init,R(Le(T._payload),U,ie,ae,ue)}}if(Le)return ue=ue(T),Le=ae===""?"."+Fe(T,0):ae,X(ue)?(ie="",Le!=null&&(ie=Le.replace(He,"$&/")+"/"),R(ue,U,ie,"",function(en){return en})):ue!=null&&(Ze(ue)&&(ue=Ee(ue,ie+(ue.key==null||T&&T.key===ue.key?"":(""+ue.key).replace(He,"$&/")+"/")+Le)),U.push(ue)),1;Le=0;var ut=ae===""?".":ae+":";if(X(T))for(var _e=0;_e"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}return n(),Wl.exports=AN(),Wl.exports}var Rp;function IN(){if(Rp)return zr;Rp=1;var n=rN(),e=Kl(),t=CN();function i(g){var s="https://react.dev/errors/"+g;if(1ee||(g.current=ge[ee],ge[ee]=null,ee--)}function ie(g,s){ee++,ge[ee]=g.current,g.current=s}var ae=T(null),ue=T(null),me=T(null),Le=T(null);function ut(g,s){switch(ie(me,s),ie(ue,g),ie(ae,null),s.nodeType){case 9:case 11:g=(g=s.documentElement)&&(g=g.namespaceURI)?EO(g):0;break;default:if(g=s.tagName,s=s.namespaceURI)s=EO(s),g=SO(s,g);else switch(g){case"svg":g=1;break;case"math":g=2;break;default:g=0}}U(ae),ie(ae,g)}function _e(){U(ae),U(ue),U(me)}function en(g){g.memoizedState!==null&&ie(Le,g);var s=ae.current,a=SO(s,g.type);s!==a&&(ie(ue,g),ie(ae,a))}function pn(g){ue.current===g&&(U(ae),U(ue)),Le.current===g&&(U(Le),zA._currentValue=H)}var k,de;function Oe(g){if(k===void 0)try{throw Error()}catch(a){var s=a.stack.trim().match(/\n( *(at )?)/);k=s&&s[1]||"",de=-1i[o]})}}}return Object.freeze(Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}))}function fN(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}var Kl={exports:{}},jr={};var Dp;function pN(){if(Dp)return jr;Dp=1;var n=Symbol.for("react.transitional.element"),e=Symbol.for("react.fragment");function t(i,o,r){var A=null;if(r!==void 0&&(A=""+r),o.key!==void 0&&(A=""+o.key),"key"in o){r={};for(var I in o)I!=="key"&&(r[I]=o[I])}else r=o;return o=r.ref,{$$typeof:n,type:i,key:A,ref:o!==void 0?o:null,props:r}}return jr.Fragment=e,jr.jsx=t,jr.jsxs=t,jr}var kp;function mN(){return kp||(kp=1,Kl.exports=pN()),Kl.exports}var f=mN(),Wl={exports:{}},Pr={},Ql={exports:{}},Xl={};var Mp;function vN(){return Mp||(Mp=1,(function(n){function e(M,Q){var se=M.length;M.push(Q);e:for(;0>>1,q=M[K];if(0>>1;Ko(ie,se))aeo(ue,ie)?(M[K]=ue,M[ae]=se,K=ae):(M[K]=ie,M[U]=se,K=U);else if(aeo(ue,se))M[K]=ue,M[ae]=se,K=ae;else break e}}return Q}function o(M,Q){var se=M.sortIndex-Q.sortIndex;return se!==0?se:M.id-Q.id}if(n.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var r=performance;n.unstable_now=function(){return r.now()}}else{var A=Date,I=A.now();n.unstable_now=function(){return A.now()-I}}var l=[],c=[],h=1,p=null,m=3,v=!1,x=!1,O=!1,y=!1,S=typeof setTimeout=="function"?setTimeout:null,E=typeof clearTimeout=="function"?clearTimeout:null,_=typeof setImmediate<"u"?setImmediate:null;function j(M){for(var Q=t(c);Q!==null;){if(Q.callback===null)i(c);else if(Q.startTime<=M)i(c),Q.sortIndex=Q.expirationTime,e(l,Q);else break;Q=t(c)}}function X(M){if(O=!1,j(M),!x)if(t(l)!==null)x=!0,ne||(ne=!0,xe());else{var Q=t(c);Q!==null&&le(X,Q.startTime-M)}}var ne=!1,F=-1,V=5,Ie=-1;function Ee(){return y?!0:!(n.unstable_now()-IeM&&Ee());){var K=p.callback;if(typeof K=="function"){p.callback=null,m=p.priorityLevel;var q=K(p.expirationTime<=M);if(M=n.unstable_now(),typeof q=="function"){p.callback=q,j(M),Q=!0;break t}p===t(l)&&i(l),j(M)}else i(l);p=t(l)}if(p!==null)Q=!0;else{var T=t(c);T!==null&&le(X,T.startTime-M),Q=!1}}break e}finally{p=null,m=se,v=!1}Q=void 0}}finally{Q?xe():ne=!1}}}var xe;if(typeof _=="function")xe=function(){_(Be)};else if(typeof MessageChannel<"u"){var Ue=new MessageChannel,Le=Ue.port2;Ue.port1.onmessage=Be,xe=function(){Le.postMessage(null)}}else xe=function(){S(Be,0)};function le(M,Q){F=S(function(){M(n.unstable_now())},Q)}n.unstable_IdlePriority=5,n.unstable_ImmediatePriority=1,n.unstable_LowPriority=4,n.unstable_NormalPriority=3,n.unstable_Profiling=null,n.unstable_UserBlockingPriority=2,n.unstable_cancelCallback=function(M){M.callback=null},n.unstable_forceFrameRate=function(M){0>M||125K?(M.sortIndex=se,e(c,M),t(l)===null&&M===t(c)&&(O?(E(F),F=-1):O=!0,le(X,se-K))):(M.sortIndex=q,e(l,M),x||v||(x=!0,ne||(ne=!0,xe()))),M},n.unstable_shouldYield=Ee,n.unstable_wrapCallback=function(M){var Q=m;return function(){var se=m;m=Q;try{return M.apply(this,arguments)}finally{m=se}}}})(Xl)),Xl}var Rp;function bN(){return Rp||(Rp=1,Ql.exports=vN()),Ql.exports}var $l={exports:{}},Ze={};var zp;function yN(){if(zp)return Ze;zp=1;var n=Symbol.for("react.transitional.element"),e=Symbol.for("react.portal"),t=Symbol.for("react.fragment"),i=Symbol.for("react.strict_mode"),o=Symbol.for("react.profiler"),r=Symbol.for("react.consumer"),A=Symbol.for("react.context"),I=Symbol.for("react.forward_ref"),l=Symbol.for("react.suspense"),c=Symbol.for("react.memo"),h=Symbol.for("react.lazy"),p=Symbol.for("react.activity"),m=Symbol.iterator;function v(T){return T===null||typeof T!="object"?null:(T=m&&T[m]||T["@@iterator"],typeof T=="function"?T:null)}var x={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},O=Object.assign,y={};function S(T,U,ie){this.props=T,this.context=U,this.refs=y,this.updater=ie||x}S.prototype.isReactComponent={},S.prototype.setState=function(T,U){if(typeof T!="object"&&typeof T!="function"&&T!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,T,U,"setState")},S.prototype.forceUpdate=function(T){this.updater.enqueueForceUpdate(this,T,"forceUpdate")};function E(){}E.prototype=S.prototype;function _(T,U,ie){this.props=T,this.context=U,this.refs=y,this.updater=ie||x}var j=_.prototype=new E;j.constructor=_,O(j,S.prototype),j.isPureReactComponent=!0;var X=Array.isArray;function ne(){}var F={H:null,A:null,T:null,S:null},V=Object.prototype.hasOwnProperty;function Ie(T,U,ie){var ae=ie.ref;return{$$typeof:n,type:T,key:U,ref:ae!==void 0?ae:null,props:ie}}function Ee(T,U){return Ie(T.type,U,T.props)}function Be(T){return typeof T=="object"&&T!==null&&T.$$typeof===n}function xe(T){var U={"=":"=0",":":"=2"};return"$"+T.replace(/[=:]/g,function(ie){return U[ie]})}var Ue=/\/+/g;function Le(T,U){return typeof T=="object"&&T!==null&&T.key!=null?xe(""+T.key):U.toString(36)}function le(T){switch(T.status){case"fulfilled":return T.value;case"rejected":throw T.reason;default:switch(typeof T.status=="string"?T.then(ne,ne):(T.status="pending",T.then(function(U){T.status==="pending"&&(T.status="fulfilled",T.value=U)},function(U){T.status==="pending"&&(T.status="rejected",T.reason=U)})),T.status){case"fulfilled":return T.value;case"rejected":throw T.reason}}throw T}function M(T,U,ie,ae,ue){var me=typeof T;(me==="undefined"||me==="boolean")&&(T=null);var Ge=!1;if(T===null)Ge=!0;else switch(me){case"bigint":case"string":case"number":Ge=!0;break;case"object":switch(T.$$typeof){case n:case e:Ge=!0;break;case h:return Ge=T._init,M(Ge(T._payload),U,ie,ae,ue)}}if(Ge)return ue=ue(T),Ge=ae===""?"."+Le(T,0):ae,X(ue)?(ie="",Ge!=null&&(ie=Ge.replace(Ue,"$&/")+"/"),M(ue,U,ie,"",function(en){return en})):ue!=null&&(Be(ue)&&(ue=Ee(ue,ie+(ue.key==null||T&&T.key===ue.key?"":(""+ue.key).replace(Ue,"$&/")+"/")+Ge)),U.push(ue)),1;Ge=0;var ut=ae===""?".":ae+":";if(X(T))for(var Pe=0;Pe"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}return n(),Jl.exports=wN(),Jl.exports}var Bp;function EN(){if(Bp)return Pr;Bp=1;var n=bN(),e=ql(),t=xN();function i(g){var s="https://react.dev/errors/"+g;if(1q||(g.current=K[q],K[q]=null,q--)}function ie(g,s){q++,K[q]=g.current,g.current=s}var ae=T(null),ue=T(null),me=T(null),Ge=T(null);function ut(g,s){switch(ie(me,s),ie(ue,g),ie(ae,null),s.nodeType){case 9:case 11:g=(g=s.documentElement)&&(g=g.namespaceURI)?ZO(g):0;break;default:if(g=s.tagName,s=s.namespaceURI)s=ZO(s),g=LO(s,g);else switch(g){case"svg":g=1;break;case"math":g=2;break;default:g=0}}U(ae),ie(ae,g)}function Pe(){U(ae),U(ue),U(me)}function en(g){g.memoizedState!==null&&ie(Ge,g);var s=ae.current,a=LO(s,g.type);s!==a&&(ie(ue,g),ie(ae,a))}function pn(g){ue.current===g&&(U(ae),U(ue)),Ge.current===g&&(U(Ge),LA._currentValue=se)}var R,de;function Oe(g){if(R===void 0)try{throw Error()}catch(a){var s=a.stack.trim().match(/\n( *(at )?)/);R=s&&s[1]||"",de=-1)":-1d||N[C]!==P[d]){var $=` -`+N[C].replace(" at new "," at ");return g.displayName&&$.includes("")&&($=$.replace("",g.displayName)),$}while(1<=C&&0<=d);break}}}finally{Je=!1,Error.prepareStackTrace=a}return(a=g?g.displayName||g.name:"")?Oe(a):""}function Bt(g,s){switch(g.tag){case 26:case 27:case 5:return Oe(g.type);case 16:return Oe("Lazy");case 13:return g.child!==s&&s!==null?Oe("Suspense Fallback"):Oe("Suspense");case 19:return Oe("SuspenseList");case 0:case 15:return Dt(g.type,!1);case 11:return Dt(g.type.render,!1);case 1:return Dt(g.type,!0);case 31:return Oe("Activity");default:return""}}function re(g){try{var s="",a=null;do s+=Bt(g,a),a=g,g=g.return;while(g);return s}catch(C){return` +`+R+g+de}var et=!1;function Dt(g,s){if(!g||et)return"";et=!0;var a=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var C={DetermineComponentFrameRoot:function(){try{if(s){var te=function(){throw Error()};if(Object.defineProperty(te.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(te,[])}catch(H){var G=H}Reflect.construct(g,[],te)}else{try{te.call()}catch(H){G=H}g.call(te.prototype)}}else{try{throw Error()}catch(H){G=H}(te=g())&&typeof te.catch=="function"&&te.catch(function(){})}}catch(H){if(H&&G&&typeof H.stack=="string")return[H.stack,G.stack]}return[null,null]}};C.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var d=Object.getOwnPropertyDescriptor(C.DetermineComponentFrameRoot,"name");d&&d.configurable&&Object.defineProperty(C.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var u=C.DetermineComponentFrameRoot(),b=u[0],w=u[1];if(b&&w){var N=b.split(` +`),L=w.split(` +`);for(d=C=0;Cd||N[C]!==L[d]){var $=` +`+N[C].replace(" at new "," at ");return g.displayName&&$.includes("")&&($=$.replace("",g.displayName)),$}while(1<=C&&0<=d);break}}}finally{et=!1,Error.prepareStackTrace=a}return(a=g?g.displayName||g.name:"")?Oe(a):""}function Zt(g,s){switch(g.tag){case 26:case 27:case 5:return Oe(g.type);case 16:return Oe("Lazy");case 13:return g.child!==s&&s!==null?Oe("Suspense Fallback"):Oe("Suspense");case 19:return Oe("SuspenseList");case 0:case 15:return Dt(g.type,!1);case 11:return Dt(g.type.render,!1);case 1:return Dt(g.type,!0);case 31:return Oe("Activity");default:return""}}function re(g){try{var s="",a=null;do s+=Zt(g,a),a=g,g=g.return;while(g);return s}catch(C){return` Error generating stack: `+C.message+` -`+C.stack}}var Me=Object.prototype.hasOwnProperty,ze=n.unstable_scheduleCallback,Lt=n.unstable_cancelCallback,Sn=n.unstable_shouldYield,Y=n.unstable_requestPaint,Ae=n.unstable_now,We=n.unstable_getCurrentPriorityLevel,Et=n.unstable_ImmediatePriority,wt=n.unstable_UserBlockingPriority,Rn=n.unstable_NormalPriority,EI=n.unstable_LowPriority,oE=n.unstable_IdlePriority,vne=n.log,bne=n.unstable_setDisableYieldValue,Ha=null,Kn=null;function Kg(g){if(typeof vne=="function"&&bne(g),Kn&&typeof Kn.setStrictMode=="function")try{Kn.setStrictMode(Ha,g)}catch{}}var Wn=Math.clz32?Math.clz32:xne,yne=Math.log,wne=Math.LN2;function xne(g){return g>>>=0,g===0?32:31-(yne(g)/wne|0)|0}var SI=256,TI=262144,OI=4194304;function Vo(g){var s=g&42;if(s!==0)return s;switch(g&-g){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return g&261888;case 262144:case 524288:case 1048576:case 2097152:return g&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return g&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return g}}function NI(g,s,a){var C=g.pendingLanes;if(C===0)return 0;var d=0,u=g.suspendedLanes,v=g.pingedLanes;g=g.warmLanes;var y=C&134217727;return y!==0?(C=y&~u,C!==0?d=Vo(C):(v&=y,v!==0?d=Vo(v):a||(a=y&~g,a!==0&&(d=Vo(a))))):(y=C&~u,y!==0?d=Vo(y):v!==0?d=Vo(v):a||(a=C&~g,a!==0&&(d=Vo(a)))),d===0?0:s!==0&&s!==d&&(s&u)===0&&(u=d&-d,a=s&-s,u>=a||u===32&&(a&4194048)!==0)?s:d}function Ka(g,s){return(g.pendingLanes&~(g.suspendedLanes&~g.pingedLanes)&s)===0}function Ene(g,s){switch(g){case 1:case 2:case 4:case 8:case 64:return s+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return s+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function sE(){var g=OI;return OI<<=1,(OI&62914560)===0&&(OI=4194304),g}function Ih(g){for(var s=[],a=0;31>a;a++)s.push(g);return s}function Wa(g,s){g.pendingLanes|=s,s!==268435456&&(g.suspendedLanes=0,g.pingedLanes=0,g.warmLanes=0)}function Sne(g,s,a,C,d,u){var v=g.pendingLanes;g.pendingLanes=a,g.suspendedLanes=0,g.pingedLanes=0,g.warmLanes=0,g.expiredLanes&=a,g.entangledLanes&=a,g.errorRecoveryDisabledLanes&=a,g.shellSuspendCounter=0;var y=g.entanglements,N=g.expirationTimes,P=g.hiddenUpdates;for(a=v&~a;0"u")return null;try{return g.activeElement||g.body}catch{return g.body}}var Rne=/[\n"\\]/g;function Ci(g){return g.replace(Rne,function(s){return"\\"+s.charCodeAt(0).toString(16)+" "})}function fh(g,s,a,C,d,u,v,y){g.name="",v!=null&&typeof v!="function"&&typeof v!="symbol"&&typeof v!="boolean"?g.type=v:g.removeAttribute("type"),s!=null?v==="number"?(s===0&&g.value===""||g.value!=s)&&(g.value=""+Ai(s)):g.value!==""+Ai(s)&&(g.value=""+Ai(s)):v!=="submit"&&v!=="reset"||g.removeAttribute("value"),s!=null?ph(g,v,Ai(s)):a!=null?ph(g,v,Ai(a)):C!=null&&g.removeAttribute("value"),d==null&&u!=null&&(g.defaultChecked=!!u),d!=null&&(g.checked=d&&typeof d!="function"&&typeof d!="symbol"),y!=null&&typeof y!="function"&&typeof y!="symbol"&&typeof y!="boolean"?g.name=""+Ai(y):g.removeAttribute("name")}function mE(g,s,a,C,d,u,v,y){if(u!=null&&typeof u!="function"&&typeof u!="symbol"&&typeof u!="boolean"&&(g.type=u),s!=null||a!=null){if(!(u!=="submit"&&u!=="reset"||s!=null)){hh(g);return}a=a!=null?""+Ai(a):"",s=s!=null?""+Ai(s):a,y||s===g.value||(g.value=s),g.defaultValue=s}C=C??d,C=typeof C!="function"&&typeof C!="symbol"&&!!C,g.checked=y?g.checked:!!C,g.defaultChecked=!!C,v!=null&&typeof v!="function"&&typeof v!="symbol"&&typeof v!="boolean"&&(g.name=v),hh(g)}function ph(g,s,a){s==="number"&&RI(g.ownerDocument)===g||g.defaultValue===""+a||(g.defaultValue=""+a)}function er(g,s,a,C){if(g=g.options,s){s={};for(var d=0;d"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),wh=!1;if(ag)try{var qa={};Object.defineProperty(qa,"passive",{get:function(){wh=!0}}),window.addEventListener("test",qa,qa),window.removeEventListener("test",qa,qa)}catch{wh=!1}var Qg=null,xh=null,zI=null;function SE(){if(zI)return zI;var g,s=xh,a=s.length,C,d="value"in Qg?Qg.value:Qg.textContent,u=d.length;for(g=0;g=tA),RE=" ",kE=!1;function zE(g,s){switch(g){case"keyup":return sie.indexOf(s.keyCode)!==-1;case"keydown":return s.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function _E(g){return g=g.detail,typeof g=="object"&&"data"in g?g.data:null}var gr=!1;function aie(g,s){switch(g){case"compositionend":return _E(s);case"keypress":return s.which!==32?null:(kE=!0,RE);case"textInput":return g=s.data,g===RE&&kE?null:g;default:return null}}function Aie(g,s){if(gr)return g==="compositionend"||!Nh&&zE(g,s)?(g=SE(),zI=xh=Qg=null,gr=!1,g):null;switch(g){case"paste":return null;case"keypress":if(!(s.ctrlKey||s.altKey||s.metaKey)||s.ctrlKey&&s.altKey){if(s.char&&1=s)return{node:a,offset:s-g};g=C}e:{for(;a;){if(a.nextSibling){a=a.nextSibling;break e}a=a.parentNode}a=void 0}a=VE(a)}}function YE(g,s){return g&&s?g===s?!0:g&&g.nodeType===3?!1:s&&s.nodeType===3?YE(g,s.parentNode):"contains"in g?g.contains(s):g.compareDocumentPosition?!!(g.compareDocumentPosition(s)&16):!1:!1}function HE(g){g=g!=null&&g.ownerDocument!=null&&g.ownerDocument.defaultView!=null?g.ownerDocument.defaultView:window;for(var s=RI(g.document);s instanceof g.HTMLIFrameElement;){try{var a=typeof s.contentWindow.location.href=="string"}catch{a=!1}if(a)g=s.contentWindow;else break;s=RI(g.document)}return s}function Rh(g){var s=g&&g.nodeName&&g.nodeName.toLowerCase();return s&&(s==="input"&&(g.type==="text"||g.type==="search"||g.type==="tel"||g.type==="url"||g.type==="password")||s==="textarea"||g.contentEditable==="true")}var fie=ag&&"documentMode"in document&&11>=document.documentMode,or=null,kh=null,oA=null,zh=!1;function KE(g,s,a){var C=a.window===a?a.document:a.nodeType===9?a:a.ownerDocument;zh||or==null||or!==RI(C)||(C=or,"selectionStart"in C&&Rh(C)?C={start:C.selectionStart,end:C.selectionEnd}:(C=(C.ownerDocument&&C.ownerDocument.defaultView||window).getSelection(),C={anchorNode:C.anchorNode,anchorOffset:C.anchorOffset,focusNode:C.focusNode,focusOffset:C.focusOffset}),oA&&gA(oA,C)||(oA=C,C=Tl(kh,"onSelect"),0>=v,d-=v,Vi=1<<32-Wn(s)+d|a<Ve?(qe=be,be=null):qe=be.sibling;var st=G(z,be,Z[Ve],J);if(st===null){be===null&&(be=qe);break}g&&be&&st.alternate===null&&s(z,be),D=u(st,D,Ve),ot===null?Se=st:ot.sibling=st,ot=st,be=qe}if(Ve===Z.length)return a(z,be),et&&Cg(z,Ve),Se;if(be===null){for(;VeVe?(qe=be,be=null):qe=be.sibling;var po=G(z,be,st.value,J);if(po===null){be===null&&(be=qe);break}g&&be&&po.alternate===null&&s(z,be),D=u(po,D,Ve),ot===null?Se=po:ot.sibling=po,ot=po,be=qe}if(st.done)return a(z,be),et&&Cg(z,Ve),Se;if(be===null){for(;!st.done;Ve++,st=Z.next())st=te(z,st.value,J),st!==null&&(D=u(st,D,Ve),ot===null?Se=st:ot.sibling=st,ot=st);return et&&Cg(z,Ve),Se}for(be=C(be);!st.done;Ve++,st=Z.next())st=K(be,z,Ve,st.value,J),st!==null&&(g&&st.alternate!==null&&be.delete(st.key===null?Ve:st.key),D=u(st,D,Ve),ot===null?Se=st:ot.sibling=st,ot=st);return g&&be.forEach(function(Zge){return s(z,Zge)}),et&&Cg(z,Ve),Se}function pt(z,D,Z,J){if(typeof Z=="object"&&Z!==null&&Z.type===O&&Z.key===null&&(Z=Z.props.children),typeof Z=="object"&&Z!==null){switch(Z.$$typeof){case b:e:{for(var Se=Z.key;D!==null;){if(D.key===Se){if(Se=Z.type,Se===O){if(D.tag===7){a(z,D.sibling),J=d(D,Z.props.children),J.return=z,z=J;break e}}else if(D.elementType===Se||typeof Se=="object"&&Se!==null&&Se.$$typeof===V&&es(Se)===D.type){a(z,D.sibling),J=d(D,Z.props),IA(J,Z),J.return=z,z=J;break e}a(z,D);break}else s(z,D);D=D.sibling}Z.type===O?(J=Qo(Z.props.children,z.mode,J,Z.key),J.return=z,z=J):(J=UI(Z.type,Z.key,Z.props,null,z.mode,J),IA(J,Z),J.return=z,z=J)}return v(z);case w:e:{for(Se=Z.key;D!==null;){if(D.key===Se)if(D.tag===4&&D.stateNode.containerInfo===Z.containerInfo&&D.stateNode.implementation===Z.implementation){a(z,D.sibling),J=d(D,Z.children||[]),J.return=z,z=J;break e}else{a(z,D);break}else s(z,D);D=D.sibling}J=Gh(Z,z.mode,J),J.return=z,z=J}return v(z);case V:return Z=es(Z),pt(z,D,Z,J)}if(le(Z))return pe(z,D,Z,J);if(xe(Z)){if(Se=xe(Z),typeof Se!="function")throw Error(i(150));return Z=Se.call(Z),Re(z,D,Z,J)}if(typeof Z.then=="function")return pt(z,D,$I(Z),J);if(Z.$$typeof===_)return pt(z,D,KI(z,Z),J);qI(z,Z)}return typeof Z=="string"&&Z!==""||typeof Z=="number"||typeof Z=="bigint"?(Z=""+Z,D!==null&&D.tag===6?(a(z,D.sibling),J=d(D,Z),J.return=z,z=J):(a(z,D),J=Lh(Z,z.mode,J),J.return=z,z=J),v(z)):a(z,D)}return function(z,D,Z,J){try{CA=0;var Se=pt(z,D,Z,J);return hr=null,Se}catch(be){if(be===ur||be===QI)throw be;var ot=Xn(29,be,null,z.mode);return ot.lanes=J,ot.return=z,ot}}}var ns=hS(!0),fS=hS(!1),eo=!1;function Jh(g){g.updateQueue={baseState:g.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function ef(g,s){g=g.updateQueue,s.updateQueue===g&&(s.updateQueue={baseState:g.baseState,firstBaseUpdate:g.firstBaseUpdate,lastBaseUpdate:g.lastBaseUpdate,shared:g.shared,callbacks:null})}function to(g){return{lane:g,tag:0,payload:null,callback:null,next:null}}function no(g,s,a){var C=g.updateQueue;if(C===null)return null;if(C=C.shared,(At&2)!==0){var d=C.pending;return d===null?s.next=s:(s.next=d.next,d.next=s),C.pending=s,s=VI(g),eS(g,null,a),s}return FI(g,C,s,a),VI(g)}function lA(g,s,a){if(s=s.updateQueue,s!==null&&(s=s.shared,(a&4194048)!==0)){var C=s.lanes;C&=g.pendingLanes,a|=C,s.lanes=a,aE(g,a)}}function tf(g,s){var a=g.updateQueue,C=g.alternate;if(C!==null&&(C=C.updateQueue,a===C)){var d=null,u=null;if(a=a.firstBaseUpdate,a!==null){do{var v={lane:a.lane,tag:a.tag,payload:a.payload,callback:null,next:null};u===null?d=u=v:u=u.next=v,a=a.next}while(a!==null);u===null?d=u=s:u=u.next=s}else d=u=s;a={baseState:C.baseState,firstBaseUpdate:d,lastBaseUpdate:u,shared:C.shared,callbacks:C.callbacks},g.updateQueue=a;return}g=a.lastBaseUpdate,g===null?a.firstBaseUpdate=s:g.next=s,a.lastBaseUpdate=s}var nf=!1;function cA(){if(nf){var g=dr;if(g!==null)throw g}}function dA(g,s,a,C){nf=!1;var d=g.updateQueue;eo=!1;var u=d.firstBaseUpdate,v=d.lastBaseUpdate,y=d.shared.pending;if(y!==null){d.shared.pending=null;var N=y,P=N.next;N.next=null,v===null?u=P:v.next=P,v=N;var $=g.alternate;$!==null&&($=$.updateQueue,y=$.lastBaseUpdate,y!==v&&(y===null?$.firstBaseUpdate=P:y.next=P,$.lastBaseUpdate=N))}if(u!==null){var te=d.baseState;v=0,$=P=N=null,y=u;do{var G=y.lane&-536870913,K=G!==y.lane;if(K?($e&G)===G:(C&G)===G){G!==0&&G===cr&&(nf=!0),$!==null&&($=$.next={lane:0,tag:y.tag,payload:y.payload,callback:null,next:null});e:{var pe=g,Re=y;G=s;var pt=a;switch(Re.tag){case 1:if(pe=Re.payload,typeof pe=="function"){te=pe.call(pt,te,G);break e}te=pe;break e;case 3:pe.flags=pe.flags&-65537|128;case 0:if(pe=Re.payload,G=typeof pe=="function"?pe.call(pt,te,G):pe,G==null)break e;te=p({},te,G);break e;case 2:eo=!0}}G=y.callback,G!==null&&(g.flags|=64,K&&(g.flags|=8192),K=d.callbacks,K===null?d.callbacks=[G]:K.push(G))}else K={lane:G,tag:y.tag,payload:y.payload,callback:y.callback,next:null},$===null?(P=$=K,N=te):$=$.next=K,v|=G;if(y=y.next,y===null){if(y=d.shared.pending,y===null)break;K=y,y=K.next,K.next=null,d.lastBaseUpdate=K,d.shared.pending=null}}while(!0);$===null&&(N=te),d.baseState=N,d.firstBaseUpdate=P,d.lastBaseUpdate=$,u===null&&(d.shared.lanes=0),ro|=v,g.lanes=v,g.memoizedState=te}}function pS(g,s){if(typeof g!="function")throw Error(i(191,g));g.call(s)}function mS(g,s){var a=g.callbacks;if(a!==null)for(g.callbacks=null,g=0;gu?u:8;var v=R.T,y={};R.T=y,yf(g,!1,s,a);try{var N=d(),P=R.S;if(P!==null&&P(y,N),N!==null&&typeof N=="object"&&typeof N.then=="function"){var $=Sie(N,C);fA(g,s,$,ti(g))}else fA(g,s,C,ti(g))}catch(te){fA(g,s,{then:function(){},status:"rejected",reason:te},ti())}finally{Q.p=u,v!==null&&y.types!==null&&(v.types=y.types),R.T=v}}function Rie(){}function vf(g,s,a,C){if(g.tag!==5)throw Error(i(476));var d=$S(g).queue;XS(g,d,s,H,a===null?Rie:function(){return qS(g),a(C)})}function $S(g){var s=g.memoizedState;if(s!==null)return s;s={memoizedState:H,baseState:H,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:dg,lastRenderedState:H},next:null};var a={};return s.next={memoizedState:a,baseState:a,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:dg,lastRenderedState:a},next:null},g.memoizedState=s,g=g.alternate,g!==null&&(g.memoizedState=s),s}function qS(g){var s=$S(g);s.next===null&&(s=g.alternate.memoizedState),fA(g,s.next.queue,{},ti())}function bf(){return bn(zA)}function JS(){return Wt().memoizedState}function eT(){return Wt().memoizedState}function kie(g){for(var s=g.return;s!==null;){switch(s.tag){case 24:case 3:var a=ti();g=to(a);var C=no(s,g,a);C!==null&&(Un(C,s,a),lA(C,s,a)),s={cache:Qh()},g.payload=s;return}s=s.return}}function zie(g,s,a){var C=ti();a={lane:C,revertLane:0,gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null},al(g)?nT(s,a):(a=Ph(g,s,a,C),a!==null&&(Un(a,g,C),iT(a,s,C)))}function tT(g,s,a){var C=ti();fA(g,s,a,C)}function fA(g,s,a,C){var d={lane:C,revertLane:0,gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null};if(al(g))nT(s,d);else{var u=g.alternate;if(g.lanes===0&&(u===null||u.lanes===0)&&(u=s.lastRenderedReducer,u!==null))try{var v=s.lastRenderedState,y=u(v,a);if(d.hasEagerState=!0,d.eagerState=y,Qn(y,v))return FI(g,s,d,0),mt===null&&GI(),!1}catch{}if(a=Ph(g,s,d,C),a!==null)return Un(a,g,C),iT(a,s,C),!0}return!1}function yf(g,s,a,C){if(C={lane:2,revertLane:ep(),gesture:null,action:C,hasEagerState:!1,eagerState:null,next:null},al(g)){if(s)throw Error(i(479))}else s=Ph(g,a,C,2),s!==null&&Un(s,g,2)}function al(g){var s=g.alternate;return g===Ge||s!==null&&s===Ge}function nT(g,s){pr=tl=!0;var a=g.pending;a===null?s.next=s:(s.next=a.next,a.next=s),g.pending=s}function iT(g,s,a){if((a&4194048)!==0){var C=s.lanes;C&=g.pendingLanes,a|=C,s.lanes=a,aE(g,a)}}var pA={readContext:bn,use:gl,useCallback:Gt,useContext:Gt,useEffect:Gt,useImperativeHandle:Gt,useLayoutEffect:Gt,useInsertionEffect:Gt,useMemo:Gt,useReducer:Gt,useRef:Gt,useState:Gt,useDebugValue:Gt,useDeferredValue:Gt,useTransition:Gt,useSyncExternalStore:Gt,useId:Gt,useHostTransitionStatus:Gt,useFormState:Gt,useActionState:Gt,useOptimistic:Gt,useMemoCache:Gt,useCacheRefresh:Gt};pA.useEffectEvent=Gt;var gT={readContext:bn,use:gl,useCallback:function(g,s){return kn().memoizedState=[g,s===void 0?null:s],g},useContext:bn,useEffect:GS,useImperativeHandle:function(g,s,a){a=a!=null?a.concat([g]):null,sl(4194308,4,YS.bind(null,s,g),a)},useLayoutEffect:function(g,s){return sl(4194308,4,g,s)},useInsertionEffect:function(g,s){sl(4,2,g,s)},useMemo:function(g,s){var a=kn();s=s===void 0?null:s;var C=g();if(is){Kg(!0);try{g()}finally{Kg(!1)}}return a.memoizedState=[C,s],C},useReducer:function(g,s,a){var C=kn();if(a!==void 0){var d=a(s);if(is){Kg(!0);try{a(s)}finally{Kg(!1)}}}else d=s;return C.memoizedState=C.baseState=d,g={pending:null,lanes:0,dispatch:null,lastRenderedReducer:g,lastRenderedState:d},C.queue=g,g=g.dispatch=zie.bind(null,Ge,g),[C.memoizedState,g]},useRef:function(g){var s=kn();return g={current:g},s.memoizedState=g},useState:function(g){g=uf(g);var s=g.queue,a=tT.bind(null,Ge,s);return s.dispatch=a,[g.memoizedState,a]},useDebugValue:pf,useDeferredValue:function(g,s){var a=kn();return mf(a,g,s)},useTransition:function(){var g=uf(!1);return g=XS.bind(null,Ge,g.queue,!0,!1),kn().memoizedState=g,[!1,g]},useSyncExternalStore:function(g,s,a){var C=Ge,d=kn();if(et){if(a===void 0)throw Error(i(407));a=a()}else{if(a=s(),mt===null)throw Error(i(349));($e&127)!==0||ES(C,s,a)}d.memoizedState=a;var u={value:a,getSnapshot:s};return d.queue=u,GS(TS.bind(null,C,u,g),[g]),C.flags|=2048,vr(9,{destroy:void 0},SS.bind(null,C,u,a,s),null),a},useId:function(){var g=kn(),s=mt.identifierPrefix;if(et){var a=Ui,C=Vi;a=(C&~(1<<32-Wn(C)-1)).toString(32)+a,s="_"+s+"R_"+a,a=nl++,0<\/script>",u=u.removeChild(u.firstChild);break;case"select":u=typeof C.is=="string"?v.createElement("select",{is:C.is}):v.createElement("select"),C.multiple?u.multiple=!0:C.size&&(u.size=C.size);break;default:u=typeof C.is=="string"?v.createElement(d,{is:C.is}):v.createElement(d)}}u[mn]=s,u[Pn]=C;e:for(v=s.child;v!==null;){if(v.tag===5||v.tag===6)u.appendChild(v.stateNode);else if(v.tag!==4&&v.tag!==27&&v.child!==null){v.child.return=v,v=v.child;continue}if(v===s)break e;for(;v.sibling===null;){if(v.return===null||v.return===s)break e;v=v.return}v.sibling.return=v.return,v=v.sibling}s.stateNode=u;e:switch(wn(u,d,C),d){case"button":case"input":case"select":case"textarea":C=!!C.autoFocus;break e;case"img":C=!0;break e;default:C=!1}C&&hg(s)}}return Tt(s),jf(s,s.type,g===null?null:g.memoizedProps,s.pendingProps,a),null;case 6:if(g&&s.stateNode!=null)g.memoizedProps!==C&&hg(s);else{if(typeof C!="string"&&s.stateNode===null)throw Error(i(166));if(g=me.current,Ir(s)){if(g=s.stateNode,a=s.memoizedProps,C=null,d=vn,d!==null)switch(d.tag){case 27:case 5:C=d.memoizedProps}g[mn]=s,g=!!(g.nodeValue===a||C!==null&&C.suppressHydrationWarning===!0||wO(g.nodeValue,a)),g||qg(s,!0)}else g=Ol(g).createTextNode(C),g[mn]=s,s.stateNode=g}return Tt(s),null;case 31:if(a=s.memoizedState,g===null||g.memoizedState!==null){if(C=Ir(s),a!==null){if(g===null){if(!C)throw Error(i(318));if(g=s.memoizedState,g=g!==null?g.dehydrated:null,!g)throw Error(i(557));g[mn]=s}else Xo(),(s.flags&128)===0&&(s.memoizedState=null),s.flags|=4;Tt(s),g=!1}else a=Yh(),g!==null&&g.memoizedState!==null&&(g.memoizedState.hydrationErrors=a),g=!0;if(!g)return s.flags&256?(qn(s),s):(qn(s),null);if((s.flags&128)!==0)throw Error(i(558))}return Tt(s),null;case 13:if(C=s.memoizedState,g===null||g.memoizedState!==null&&g.memoizedState.dehydrated!==null){if(d=Ir(s),C!==null&&C.dehydrated!==null){if(g===null){if(!d)throw Error(i(318));if(d=s.memoizedState,d=d!==null?d.dehydrated:null,!d)throw Error(i(317));d[mn]=s}else Xo(),(s.flags&128)===0&&(s.memoizedState=null),s.flags|=4;Tt(s),d=!1}else d=Yh(),g!==null&&g.memoizedState!==null&&(g.memoizedState.hydrationErrors=d),d=!0;if(!d)return s.flags&256?(qn(s),s):(qn(s),null)}return qn(s),(s.flags&128)!==0?(s.lanes=a,s):(a=C!==null,g=g!==null&&g.memoizedState!==null,a&&(C=s.child,d=null,C.alternate!==null&&C.alternate.memoizedState!==null&&C.alternate.memoizedState.cachePool!==null&&(d=C.alternate.memoizedState.cachePool.pool),u=null,C.memoizedState!==null&&C.memoizedState.cachePool!==null&&(u=C.memoizedState.cachePool.pool),u!==d&&(C.flags|=2048)),a!==g&&a&&(s.child.flags|=8192),cl(s,s.updateQueue),Tt(s),null);case 4:return _e(),g===null&&gp(s.stateNode.containerInfo),Tt(s),null;case 10:return lg(s.type),Tt(s),null;case 19:if(U(Kt),C=s.memoizedState,C===null)return Tt(s),null;if(d=(s.flags&128)!==0,u=C.rendering,u===null)if(d)vA(C,!1);else{if(Ft!==0||g!==null&&(g.flags&128)!==0)for(g=s.child;g!==null;){if(u=el(g),u!==null){for(s.flags|=128,vA(C,!1),g=u.updateQueue,s.updateQueue=g,cl(s,g),s.subtreeFlags=0,g=a,a=s.child;a!==null;)tS(a,g),a=a.sibling;return ie(Kt,Kt.current&1|2),et&&Cg(s,C.treeForkCount),s.child}g=g.sibling}C.tail!==null&&Ae()>pl&&(s.flags|=128,d=!0,vA(C,!1),s.lanes=4194304)}else{if(!d)if(g=el(u),g!==null){if(s.flags|=128,d=!0,g=g.updateQueue,s.updateQueue=g,cl(s,g),vA(C,!0),C.tail===null&&C.tailMode==="hidden"&&!u.alternate&&!et)return Tt(s),null}else 2*Ae()-C.renderingStartTime>pl&&a!==536870912&&(s.flags|=128,d=!0,vA(C,!1),s.lanes=4194304);C.isBackwards?(u.sibling=s.child,s.child=u):(g=C.last,g!==null?g.sibling=u:s.child=u,C.last=u)}return C.tail!==null?(g=C.tail,C.rendering=g,C.tail=g.sibling,C.renderingStartTime=Ae(),g.sibling=null,a=Kt.current,ie(Kt,d?a&1|2:a&1),et&&Cg(s,C.treeForkCount),g):(Tt(s),null);case 22:case 23:return qn(s),of(),C=s.memoizedState!==null,g!==null?g.memoizedState!==null!==C&&(s.flags|=8192):C&&(s.flags|=8192),C?(a&536870912)!==0&&(s.flags&128)===0&&(Tt(s),s.subtreeFlags&6&&(s.flags|=8192)):Tt(s),a=s.updateQueue,a!==null&&cl(s,a.retryQueue),a=null,g!==null&&g.memoizedState!==null&&g.memoizedState.cachePool!==null&&(a=g.memoizedState.cachePool.pool),C=null,s.memoizedState!==null&&s.memoizedState.cachePool!==null&&(C=s.memoizedState.cachePool.pool),C!==a&&(s.flags|=2048),g!==null&&U(Jo),null;case 24:return a=null,g!==null&&(a=g.memoizedState.cache),s.memoizedState.cache!==a&&(s.flags|=2048),lg(tn),Tt(s),null;case 25:return null;case 30:return null}throw Error(i(156,s.tag))}function Bie(g,s){switch(Vh(s),s.tag){case 1:return g=s.flags,g&65536?(s.flags=g&-65537|128,s):null;case 3:return lg(tn),_e(),g=s.flags,(g&65536)!==0&&(g&128)===0?(s.flags=g&-65537|128,s):null;case 26:case 27:case 5:return pn(s),null;case 31:if(s.memoizedState!==null){if(qn(s),s.alternate===null)throw Error(i(340));Xo()}return g=s.flags,g&65536?(s.flags=g&-65537|128,s):null;case 13:if(qn(s),g=s.memoizedState,g!==null&&g.dehydrated!==null){if(s.alternate===null)throw Error(i(340));Xo()}return g=s.flags,g&65536?(s.flags=g&-65537|128,s):null;case 19:return U(Kt),null;case 4:return _e(),null;case 10:return lg(s.type),null;case 22:case 23:return qn(s),of(),g!==null&&U(Jo),g=s.flags,g&65536?(s.flags=g&-65537|128,s):null;case 24:return lg(tn),null;case 25:return null;default:return null}}function OT(g,s){switch(Vh(s),s.tag){case 3:lg(tn),_e();break;case 26:case 27:case 5:pn(s);break;case 4:_e();break;case 31:s.memoizedState!==null&&qn(s);break;case 13:qn(s);break;case 19:U(Kt);break;case 10:lg(s.type);break;case 22:case 23:qn(s),of(),g!==null&&U(Jo);break;case 24:lg(tn)}}function bA(g,s){try{var a=s.updateQueue,C=a!==null?a.lastEffect:null;if(C!==null){var d=C.next;a=d;do{if((a.tag&g)===g){C=void 0;var u=a.create,v=a.inst;C=u(),v.destroy=C}a=a.next}while(a!==d)}}catch(y){dt(s,s.return,y)}}function oo(g,s,a){try{var C=s.updateQueue,d=C!==null?C.lastEffect:null;if(d!==null){var u=d.next;C=u;do{if((C.tag&g)===g){var v=C.inst,y=v.destroy;if(y!==void 0){v.destroy=void 0,d=s;var N=a,P=y;try{P()}catch($){dt(d,N,$)}}}C=C.next}while(C!==u)}}catch($){dt(s,s.return,$)}}function NT(g){var s=g.updateQueue;if(s!==null){var a=g.stateNode;try{mS(s,a)}catch(C){dt(g,g.return,C)}}}function DT(g,s,a){a.props=gs(g.type,g.memoizedProps),a.state=g.memoizedState;try{a.componentWillUnmount()}catch(C){dt(g,s,C)}}function yA(g,s){try{var a=g.ref;if(a!==null){switch(g.tag){case 26:case 27:case 5:var C=g.stateNode;break;case 30:C=g.stateNode;break;default:C=g.stateNode}typeof a=="function"?g.refCleanup=a(C):a.current=C}}catch(d){dt(g,s,d)}}function Yi(g,s){var a=g.ref,C=g.refCleanup;if(a!==null)if(typeof C=="function")try{C()}catch(d){dt(g,s,d)}finally{g.refCleanup=null,g=g.alternate,g!=null&&(g.refCleanup=null)}else if(typeof a=="function")try{a(null)}catch(d){dt(g,s,d)}else a.current=null}function MT(g){var s=g.type,a=g.memoizedProps,C=g.stateNode;try{e:switch(s){case"button":case"input":case"select":case"textarea":a.autoFocus&&C.focus();break e;case"img":a.src?C.src=a.src:a.srcSet&&(C.srcset=a.srcSet)}}catch(d){dt(g,g.return,d)}}function Zf(g,s,a){try{var C=g.stateNode;rge(C,g.type,a,s),C[Pn]=s}catch(d){dt(g,g.return,d)}}function RT(g){return g.tag===5||g.tag===3||g.tag===26||g.tag===27&&lo(g.type)||g.tag===4}function Pf(g){e:for(;;){for(;g.sibling===null;){if(g.return===null||RT(g.return))return null;g=g.return}for(g.sibling.return=g.return,g=g.sibling;g.tag!==5&&g.tag!==6&&g.tag!==18;){if(g.tag===27&&lo(g.type)||g.flags&2||g.child===null||g.tag===4)continue e;g.child.return=g,g=g.child}if(!(g.flags&2))return g.stateNode}}function Bf(g,s,a){var C=g.tag;if(C===5||C===6)g=g.stateNode,s?(a.nodeType===9?a.body:a.nodeName==="HTML"?a.ownerDocument.body:a).insertBefore(g,s):(s=a.nodeType===9?a.body:a.nodeName==="HTML"?a.ownerDocument.body:a,s.appendChild(g),a=a._reactRootContainer,a!=null||s.onclick!==null||(s.onclick=rg));else if(C!==4&&(C===27&&lo(g.type)&&(a=g.stateNode,s=null),g=g.child,g!==null))for(Bf(g,s,a),g=g.sibling;g!==null;)Bf(g,s,a),g=g.sibling}function dl(g,s,a){var C=g.tag;if(C===5||C===6)g=g.stateNode,s?a.insertBefore(g,s):a.appendChild(g);else if(C!==4&&(C===27&&lo(g.type)&&(a=g.stateNode),g=g.child,g!==null))for(dl(g,s,a),g=g.sibling;g!==null;)dl(g,s,a),g=g.sibling}function kT(g){var s=g.stateNode,a=g.memoizedProps;try{for(var C=g.type,d=s.attributes;d.length;)s.removeAttributeNode(d[0]);wn(s,C,a),s[mn]=g,s[Pn]=a}catch(u){dt(g,g.return,u)}}var fg=!1,on=!1,Lf=!1,zT=typeof WeakSet=="function"?WeakSet:Set,cn=null;function Lie(g,s){if(g=g.containerInfo,rp=_l,g=HE(g),Rh(g)){if("selectionStart"in g)var a={start:g.selectionStart,end:g.selectionEnd};else e:{a=(a=g.ownerDocument)&&a.defaultView||window;var C=a.getSelection&&a.getSelection();if(C&&C.rangeCount!==0){a=C.anchorNode;var d=C.anchorOffset,u=C.focusNode;C=C.focusOffset;try{a.nodeType,u.nodeType}catch{a=null;break e}var v=0,y=-1,N=-1,P=0,$=0,te=g,G=null;t:for(;;){for(var K;te!==a||d!==0&&te.nodeType!==3||(y=v+d),te!==u||C!==0&&te.nodeType!==3||(N=v+C),te.nodeType===3&&(v+=te.nodeValue.length),(K=te.firstChild)!==null;)G=te,te=K;for(;;){if(te===g)break t;if(G===a&&++P===d&&(y=v),G===u&&++$===C&&(N=v),(K=te.nextSibling)!==null)break;te=G,G=te.parentNode}te=K}a=y===-1||N===-1?null:{start:y,end:N}}else a=null}a=a||{start:0,end:0}}else a=null;for(ap={focusedElem:g,selectionRange:a},_l=!1,cn=s;cn!==null;)if(s=cn,g=s.child,(s.subtreeFlags&1028)!==0&&g!==null)g.return=s,cn=g;else for(;cn!==null;){switch(s=cn,u=s.alternate,g=s.flags,s.tag){case 0:if((g&4)!==0&&(g=s.updateQueue,g=g!==null?g.events:null,g!==null))for(a=0;a title"))),wn(u,C,a),u[mn]=g,ln(u),C=u;break e;case"link":var v=LO("link","href",d).get(C+(a.href||""));if(v){for(var y=0;ypt&&(v=pt,pt=Re,Re=v);var z=UE(y,Re),D=UE(y,pt);if(z&&D&&(K.rangeCount!==1||K.anchorNode!==z.node||K.anchorOffset!==z.offset||K.focusNode!==D.node||K.focusOffset!==D.offset)){var Z=te.createRange();Z.setStart(z.node,z.offset),K.removeAllRanges(),Re>pt?(K.addRange(Z),K.extend(D.node,D.offset)):(Z.setEnd(D.node,D.offset),K.addRange(Z))}}}}for(te=[],K=y;K=K.parentNode;)K.nodeType===1&&te.push({element:K,left:K.scrollLeft,top:K.scrollTop});for(typeof y.focus=="function"&&y.focus(),y=0;ya?32:a,R.T=null,a=Kf,Kf=null;var u=Ao,v=yg;if(An=0,Er=Ao=null,yg=0,(At&6)!==0)throw Error(i(331));var y=At;if(At|=4,YT(u.current),FT(u,u.current,v,a),At=y,OA(0,!1),Kn&&typeof Kn.onPostCommitFiberRoot=="function")try{Kn.onPostCommitFiberRoot(Ha,u)}catch{}return!0}finally{Q.p=d,R.T=C,AO(g,s)}}function IO(g,s,a){s=li(a,s),s=Sf(g.stateNode,s,2),g=no(g,s,2),g!==null&&(Wa(g,2),Hi(g))}function dt(g,s,a){if(g.tag===3)IO(g,g,a);else for(;s!==null;){if(s.tag===3){IO(s,g,a);break}else if(s.tag===1){var C=s.stateNode;if(typeof s.type.getDerivedStateFromError=="function"||typeof C.componentDidCatch=="function"&&(ao===null||!ao.has(C))){g=li(a,g),a=lT(2),C=no(s,a,2),C!==null&&(cT(a,C,s,g),Wa(C,2),Hi(C));break}}s=s.return}}function $f(g,s,a){var C=g.pingCache;if(C===null){C=g.pingCache=new Vie;var d=new Set;C.set(s,d)}else d=C.get(s),d===void 0&&(d=new Set,C.set(s,d));d.has(a)||(Vf=!0,d.add(a),g=Wie.bind(null,g,s,a),s.then(g,g))}function Wie(g,s,a){var C=g.pingCache;C!==null&&C.delete(s),g.pingedLanes|=g.suspendedLanes&a,g.warmLanes&=~a,mt===g&&($e&a)===a&&(Ft===4||Ft===3&&($e&62914560)===$e&&300>Ae()-fl?(At&2)===0&&Sr(g,0):Uf|=a,xr===$e&&(xr=0)),Hi(g)}function lO(g,s){s===0&&(s=sE()),g=Wo(g,s),g!==null&&(Wa(g,s),Hi(g))}function Qie(g){var s=g.memoizedState,a=0;s!==null&&(a=s.retryLane),lO(g,a)}function Xie(g,s){var a=0;switch(g.tag){case 31:case 13:var C=g.stateNode,d=g.memoizedState;d!==null&&(a=d.retryLane);break;case 19:C=g.stateNode;break;case 22:C=g.stateNode._retryCache;break;default:throw Error(i(314))}C!==null&&C.delete(s),lO(g,a)}function $ie(g,s){return ze(g,s)}var xl=null,Or=null,qf=!1,El=!1,Jf=!1,Io=0;function Hi(g){g!==Or&&g.next===null&&(Or===null?xl=Or=g:Or=Or.next=g),El=!0,qf||(qf=!0,Jie())}function OA(g,s){if(!Jf&&El){Jf=!0;do for(var a=!1,C=xl;C!==null;){if(g!==0){var d=C.pendingLanes;if(d===0)var u=0;else{var v=C.suspendedLanes,y=C.pingedLanes;u=(1<<31-Wn(42|g)+1)-1,u&=d&~(v&~y),u=u&201326741?u&201326741|1:u?u|2:0}u!==0&&(a=!0,hO(C,u))}else u=$e,u=NI(C,C===mt?u:0,C.cancelPendingCommit!==null||C.timeoutHandle!==-1),(u&3)===0||Ka(C,u)||(a=!0,hO(C,u));C=C.next}while(a);Jf=!1}}function qie(){cO()}function cO(){El=qf=!1;var g=0;Io!==0&&Age()&&(g=Io);for(var s=Ae(),a=null,C=xl;C!==null;){var d=C.next,u=dO(C,s);u===0?(C.next=null,a===null?xl=d:a.next=d,d===null&&(Or=a)):(a=C,(g!==0||(u&3)!==0)&&(El=!0)),C=d}An!==0&&An!==5||OA(g),Io!==0&&(Io=0)}function dO(g,s){for(var a=g.suspendedLanes,C=g.pingedLanes,d=g.expirationTimes,u=g.pendingLanes&-62914561;0y)break;var $=N.transferSize,te=N.initiatorType;$&&xO(te)&&(N=N.responseEnd,v+=$*(N"u"?null:document;function jO(g,s,a){var C=Nr;if(C&&typeof s=="string"&&s){var d=Ci(s);d='link[rel="'+g+'"][href="'+d+'"]',typeof a=="string"&&(d+='[crossorigin="'+a+'"]'),_O.has(d)||(_O.add(d),g={rel:g,crossOrigin:a,href:s},C.querySelector(d)===null&&(s=C.createElement("link"),wn(s,"link",g),ln(s),C.head.appendChild(s)))}}function pge(g){wg.D(g),jO("dns-prefetch",g,null)}function mge(g,s){wg.C(g,s),jO("preconnect",g,s)}function vge(g,s,a){wg.L(g,s,a);var C=Nr;if(C&&g&&s){var d='link[rel="preload"][as="'+Ci(s)+'"]';s==="image"&&a&&a.imageSrcSet?(d+='[imagesrcset="'+Ci(a.imageSrcSet)+'"]',typeof a.imageSizes=="string"&&(d+='[imagesizes="'+Ci(a.imageSizes)+'"]')):d+='[href="'+Ci(g)+'"]';var u=d;switch(s){case"style":u=Dr(g);break;case"script":u=Mr(g)}pi.has(u)||(g=p({rel:"preload",href:s==="image"&&a&&a.imageSrcSet?void 0:g,as:s},a),pi.set(u,g),C.querySelector(d)!==null||s==="style"&&C.querySelector(RA(u))||s==="script"&&C.querySelector(kA(u))||(s=C.createElement("link"),wn(s,"link",g),ln(s),C.head.appendChild(s)))}}function bge(g,s){wg.m(g,s);var a=Nr;if(a&&g){var C=s&&typeof s.as=="string"?s.as:"script",d='link[rel="modulepreload"][as="'+Ci(C)+'"][href="'+Ci(g)+'"]',u=d;switch(C){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":u=Mr(g)}if(!pi.has(u)&&(g=p({rel:"modulepreload",href:g},s),pi.set(u,g),a.querySelector(d)===null)){switch(C){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(a.querySelector(kA(u)))return}C=a.createElement("link"),wn(C,"link",g),ln(C),a.head.appendChild(C)}}}function yge(g,s,a){wg.S(g,s,a);var C=Nr;if(C&&g){var d=qs(C).hoistableStyles,u=Dr(g);s=s||"default";var v=d.get(u);if(!v){var y={loading:0,preload:null};if(v=C.querySelector(RA(u)))y.loading=5;else{g=p({rel:"stylesheet",href:g,"data-precedence":s},a),(a=pi.get(u))&&up(g,a);var N=v=C.createElement("link");ln(N),wn(N,"link",g),N._p=new Promise(function(P,$){N.onload=P,N.onerror=$}),N.addEventListener("load",function(){y.loading|=1}),N.addEventListener("error",function(){y.loading|=2}),y.loading|=4,Dl(v,s,C)}v={type:"stylesheet",instance:v,count:1,state:y},d.set(u,v)}}}function wge(g,s){wg.X(g,s);var a=Nr;if(a&&g){var C=qs(a).hoistableScripts,d=Mr(g),u=C.get(d);u||(u=a.querySelector(kA(d)),u||(g=p({src:g,async:!0},s),(s=pi.get(d))&&hp(g,s),u=a.createElement("script"),ln(u),wn(u,"link",g),a.head.appendChild(u)),u={type:"script",instance:u,count:1,state:null},C.set(d,u))}}function xge(g,s){wg.M(g,s);var a=Nr;if(a&&g){var C=qs(a).hoistableScripts,d=Mr(g),u=C.get(d);u||(u=a.querySelector(kA(d)),u||(g=p({src:g,async:!0,type:"module"},s),(s=pi.get(d))&&hp(g,s),u=a.createElement("script"),ln(u),wn(u,"link",g),a.head.appendChild(u)),u={type:"script",instance:u,count:1,state:null},C.set(d,u))}}function ZO(g,s,a,C){var d=(d=me.current)?Nl(d):null;if(!d)throw Error(i(446));switch(g){case"meta":case"title":return null;case"style":return typeof a.precedence=="string"&&typeof a.href=="string"?(s=Dr(a.href),a=qs(d).hoistableStyles,C=a.get(s),C||(C={type:"style",instance:null,count:0,state:null},a.set(s,C)),C):{type:"void",instance:null,count:0,state:null};case"link":if(a.rel==="stylesheet"&&typeof a.href=="string"&&typeof a.precedence=="string"){g=Dr(a.href);var u=qs(d).hoistableStyles,v=u.get(g);if(v||(d=d.ownerDocument||d,v={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},u.set(g,v),(u=d.querySelector(RA(g)))&&!u._p&&(v.instance=u,v.state.loading=5),pi.has(g)||(a={rel:"preload",as:"style",href:a.href,crossOrigin:a.crossOrigin,integrity:a.integrity,media:a.media,hrefLang:a.hrefLang,referrerPolicy:a.referrerPolicy},pi.set(g,a),u||Ege(d,g,a,v.state))),s&&C===null)throw Error(i(528,""));return v}if(s&&C!==null)throw Error(i(529,""));return null;case"script":return s=a.async,a=a.src,typeof a=="string"&&s&&typeof s!="function"&&typeof s!="symbol"?(s=Mr(a),a=qs(d).hoistableScripts,C=a.get(s),C||(C={type:"script",instance:null,count:0,state:null},a.set(s,C)),C):{type:"void",instance:null,count:0,state:null};default:throw Error(i(444,g))}}function Dr(g){return'href="'+Ci(g)+'"'}function RA(g){return'link[rel="stylesheet"]['+g+"]"}function PO(g){return p({},g,{"data-precedence":g.precedence,precedence:null})}function Ege(g,s,a,C){g.querySelector('link[rel="preload"][as="style"]['+s+"]")?C.loading=1:(s=g.createElement("link"),C.preload=s,s.addEventListener("load",function(){return C.loading|=1}),s.addEventListener("error",function(){return C.loading|=2}),wn(s,"link",a),ln(s),g.head.appendChild(s))}function Mr(g){return'[src="'+Ci(g)+'"]'}function kA(g){return"script[async]"+g}function BO(g,s,a){if(s.count++,s.instance===null)switch(s.type){case"style":var C=g.querySelector('style[data-href~="'+Ci(a.href)+'"]');if(C)return s.instance=C,ln(C),C;var d=p({},a,{"data-href":a.href,"data-precedence":a.precedence,href:null,precedence:null});return C=(g.ownerDocument||g).createElement("style"),ln(C),wn(C,"style",d),Dl(C,a.precedence,g),s.instance=C;case"stylesheet":d=Dr(a.href);var u=g.querySelector(RA(d));if(u)return s.state.loading|=4,s.instance=u,ln(u),u;C=PO(a),(d=pi.get(d))&&up(C,d),u=(g.ownerDocument||g).createElement("link"),ln(u);var v=u;return v._p=new Promise(function(y,N){v.onload=y,v.onerror=N}),wn(u,"link",C),s.state.loading|=4,Dl(u,a.precedence,g),s.instance=u;case"script":return u=Mr(a.src),(d=g.querySelector(kA(u)))?(s.instance=d,ln(d),d):(C=a,(d=pi.get(u))&&(C=p({},a),hp(C,d)),g=g.ownerDocument||g,d=g.createElement("script"),ln(d),wn(d,"link",C),g.head.appendChild(d),s.instance=d);case"void":return null;default:throw Error(i(443,s.type))}else s.type==="stylesheet"&&(s.state.loading&4)===0&&(C=s.instance,s.state.loading|=4,Dl(C,a.precedence,g));return s.instance}function Dl(g,s,a){for(var C=a.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),d=C.length?C[C.length-1]:null,u=d,v=0;v title"):null)}function Sge(g,s,a){if(a===1||s.itemProp!=null)return!1;switch(g){case"meta":case"title":return!0;case"style":if(typeof s.precedence!="string"||typeof s.href!="string"||s.href==="")break;return!0;case"link":if(typeof s.rel!="string"||typeof s.href!="string"||s.href===""||s.onLoad||s.onError)break;return s.rel==="stylesheet"?(g=s.disabled,typeof s.precedence=="string"&&g==null):!0;case"script":if(s.async&&typeof s.async!="function"&&typeof s.async!="symbol"&&!s.onLoad&&!s.onError&&s.src&&typeof s.src=="string")return!0}return!1}function FO(g){return!(g.type==="stylesheet"&&(g.state.loading&3)===0)}function Tge(g,s,a,C){if(a.type==="stylesheet"&&(typeof C.media!="string"||matchMedia(C.media).matches!==!1)&&(a.state.loading&4)===0){if(a.instance===null){var d=Dr(C.href),u=s.querySelector(RA(d));if(u){s=u._p,s!==null&&typeof s=="object"&&typeof s.then=="function"&&(g.count++,g=Rl.bind(g),s.then(g,g)),a.state.loading|=4,a.instance=u,ln(u);return}u=s.ownerDocument||s,C=PO(C),(d=pi.get(d))&&up(C,d),u=u.createElement("link"),ln(u);var v=u;v._p=new Promise(function(y,N){v.onload=y,v.onerror=N}),wn(u,"link",C),a.instance=u}g.stylesheets===null&&(g.stylesheets=new Map),g.stylesheets.set(a,s),(s=a.state.preload)&&(a.state.loading&3)===0&&(g.count++,a=Rl.bind(g),s.addEventListener("load",a),s.addEventListener("error",a))}}var fp=0;function Oge(g,s){return g.stylesheets&&g.count===0&&zl(g,g.stylesheets),0fp?50:800)+s);return g.unsuspend=a,function(){g.unsuspend=null,clearTimeout(C),clearTimeout(d)}}:null}function Rl(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)zl(this,this.stylesheets);else if(this.unsuspend){var g=this.unsuspend;this.unsuspend=null,g()}}}var kl=null;function zl(g,s){g.stylesheets=null,g.unsuspend!==null&&(g.count++,kl=new Map,s.forEach(Nge,g),kl=null,Rl.call(g))}function Nge(g,s){if(!(s.state.loading&4)){var a=kl.get(g);if(a)var C=a.get(null);else{a=new Map,kl.set(g,a);for(var d=g.querySelectorAll("link[data-precedence],style[data-precedence]"),u=0;u"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}return n(),Vl.exports=IN(),Vl.exports}var cN=lN(),zp;function q(n,e,t){function i(I,l){if(I._zod||Object.defineProperty(I,"_zod",{value:{def:l,constr:A,traits:new Set},enumerable:!1}),I._zod.traits.has(n))return;I._zod.traits.add(n),e(I,l);const c=A.prototype,h=Object.keys(c);for(let p=0;pt?.Parent&&I instanceof t.Parent?!0:I?._zod?.traits?.has(n)}),Object.defineProperty(A,"name",{value:n}),A}class rs extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}}class _p extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`),this.name="ZodEncodeError"}}(zp=globalThis).__zod_globalConfig??(zp.__zod_globalConfig={});const Ql=globalThis.__zod_globalConfig;function Ki(n){return Ql}function jp(n){const e=Object.values(n).filter(i=>typeof i=="number");return Object.entries(n).filter(([i,o])=>e.indexOf(+i)===-1).map(([i,o])=>o)}function Xl(n,e){return typeof e=="bigint"?e.toString():e}function PA(n){return{get value(){{const e=n();return Object.defineProperty(this,"value",{value:e}),e}}}}function $l(n){return n==null}function ql(n){const e=n.startsWith("^")?1:0,t=n.endsWith("$")?n.length-1:n.length;return n.slice(e,t)}function dN(n,e){const t=n/e,i=Math.round(t),o=Number.EPSILON*Math.max(Math.abs(t),1);return Math.abs(t-i){};function _r(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)}const hN=PA(()=>{if(Ql.jitless||typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{const n=Function;return new n(""),!0}catch{return!1}});function as(n){if(_r(n)===!1)return!1;const e=n.constructor;if(e===void 0||typeof e!="function")return!0;const t=e.prototype;return!(_r(t)===!1||Object.prototype.hasOwnProperty.call(t,"isPrototypeOf")===!1)}function Lp(n){return as(n)?{...n}:Array.isArray(n)?[...n]:n instanceof Map?new Map(n):n instanceof Set?new Set(n):n}const fN=new Set(["string","number","symbol"]);function As(n){return n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Eg(n,e,t){const i=new n._zod.constr(e??n._zod.def);return(!e||t?.parent)&&(i._zod.parent=n),i}function ye(n){const e=n;if(!e)return{};if(typeof e=="string")return{error:()=>e};if(e?.message!==void 0){if(e?.error!==void 0)throw new Error("Cannot specify both `message` and `error` params");e.error=e.message}return delete e.message,typeof e.error=="string"?{...e,error:()=>e.error}:e}function pN(n){return Object.keys(n).filter(e=>n[e]._zod.optin==="optional"&&n[e]._zod.optout==="optional")}const mN={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function vN(n,e){const t=n._zod.def,i=t.checks;if(i&&i.length>0)throw new Error(".pick() cannot be used on object schemas containing refinements");const r=xg(n._zod.def,{get shape(){const A={};for(const I in e){if(!(I in t.shape))throw new Error(`Unrecognized key: "${I}"`);e[I]&&(A[I]=t.shape[I])}return mo(this,"shape",A),A},checks:[]});return Eg(n,r)}function bN(n,e){const t=n._zod.def,i=t.checks;if(i&&i.length>0)throw new Error(".omit() cannot be used on object schemas containing refinements");const r=xg(n._zod.def,{get shape(){const A={...n._zod.def.shape};for(const I in e){if(!(I in t.shape))throw new Error(`Unrecognized key: "${I}"`);e[I]&&delete A[I]}return mo(this,"shape",A),A},checks:[]});return Eg(n,r)}function yN(n,e){if(!as(e))throw new Error("Invalid input to extend: expected a plain object");const t=n._zod.def.checks;if(t&&t.length>0){const r=n._zod.def.shape;for(const A in e)if(Object.getOwnPropertyDescriptor(r,A)!==void 0)throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}const o=xg(n._zod.def,{get shape(){const r={...n._zod.def.shape,...e};return mo(this,"shape",r),r}});return Eg(n,o)}function wN(n,e){if(!as(e))throw new Error("Invalid input to safeExtend: expected a plain object");const t=xg(n._zod.def,{get shape(){const i={...n._zod.def.shape,...e};return mo(this,"shape",i),i}});return Eg(n,t)}function xN(n,e){if(n._zod.def.checks?.length)throw new Error(".merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.");const t=xg(n._zod.def,{get shape(){const i={...n._zod.def.shape,...e._zod.def.shape};return mo(this,"shape",i),i},get catchall(){return e._zod.def.catchall},checks:e._zod.def.checks??[]});return Eg(n,t)}function EN(n,e,t){const o=e._zod.def.checks;if(o&&o.length>0)throw new Error(".partial() cannot be used on object schemas containing refinements");const A=xg(e._zod.def,{get shape(){const I=e._zod.def.shape,l={...I};if(t)for(const c in t){if(!(c in I))throw new Error(`Unrecognized key: "${c}"`);t[c]&&(l[c]=n?new n({type:"optional",innerType:I[c]}):I[c])}else for(const c in I)l[c]=n?new n({type:"optional",innerType:I[c]}):I[c];return mo(this,"shape",l),l},checks:[]});return Eg(e,A)}function SN(n,e,t){const i=xg(e._zod.def,{get shape(){const o=e._zod.def.shape,r={...o};if(t)for(const A in t){if(!(A in r))throw new Error(`Unrecognized key: "${A}"`);t[A]&&(r[A]=new n({type:"nonoptional",innerType:o[A]}))}else for(const A in o)r[A]=new n({type:"nonoptional",innerType:o[A]});return mo(this,"shape",r),r}});return Eg(e,i)}function Cs(n,e=0){if(n.aborted===!0)return!0;for(let t=e;t{var i;return(i=t).path??(i.path=[]),t.path.unshift(n),t})}function BA(n){return typeof n=="string"?n:n?.message}function Wi(n,e,t){const i=n.message?n.message:BA(n.inst?._zod.def?.error?.(n))??BA(e?.error?.(n))??BA(t.customError?.(n))??BA(t.localeError?.(n))??"Invalid input",{inst:o,continue:r,input:A,...I}=n;return I.path??(I.path=[]),I.message=i,e?.reportInput&&(I.input=A),I}function Jl(n){return Array.isArray(n)?"array":typeof n=="string"?"string":"unknown"}function jr(...n){const[e,t,i]=n;return typeof e=="string"?{message:e,code:"custom",input:t,inst:i}:{...e}}const Gp=(n,e)=>{n.name="$ZodError",Object.defineProperty(n,"_zod",{value:n._zod,enumerable:!1}),Object.defineProperty(n,"issues",{value:e,enumerable:!1}),n.message=JSON.stringify(e,Xl,2),Object.defineProperty(n,"toString",{value:()=>n.message,enumerable:!1})},Fp=q("$ZodError",Gp),Vp=q("$ZodError",Gp,{Parent:Error});function ON(n,e=t=>t.message){const t={},i=[];for(const o of n.issues)o.path.length>0?(t[o.path[0]]=t[o.path[0]]||[],t[o.path[0]].push(e(o))):i.push(e(o));return{formErrors:i,fieldErrors:t}}function NN(n,e=t=>t.message){const t={_errors:[]},i=(o,r=[])=>{for(const A of o.issues)if(A.code==="invalid_union"&&A.errors.length)A.errors.map(I=>i({issues:I},[...r,...A.path]));else if(A.code==="invalid_key")i({issues:A.issues},[...r,...A.path]);else if(A.code==="invalid_element")i({issues:A.issues},[...r,...A.path]);else{const I=[...r,...A.path];if(I.length===0)t._errors.push(e(A));else{let l=t,c=0;for(;c(e,t,i,o)=>{const r=i?{...i,async:!1}:{async:!1},A=e._zod.run({value:t,issues:[]},r);if(A instanceof Promise)throw new rs;if(A.issues.length){const I=new(o?.Err??n)(A.issues.map(l=>Wi(l,r,Ki())));throw Bp(I,o?.callee),I}return A.value},tc=n=>async(e,t,i,o)=>{const r=i?{...i,async:!0}:{async:!0};let A=e._zod.run({value:t,issues:[]},r);if(A instanceof Promise&&(A=await A),A.issues.length){const I=new(o?.Err??n)(A.issues.map(l=>Wi(l,r,Ki())));throw Bp(I,o?.callee),I}return A.value},LA=n=>(e,t,i)=>{const o=i?{...i,async:!1}:{async:!1},r=e._zod.run({value:t,issues:[]},o);if(r instanceof Promise)throw new rs;return r.issues.length?{success:!1,error:new(n??Fp)(r.issues.map(A=>Wi(A,o,Ki())))}:{success:!0,data:r.value}},DN=LA(Vp),GA=n=>async(e,t,i)=>{const o=i?{...i,async:!0}:{async:!0};let r=e._zod.run({value:t,issues:[]},o);return r instanceof Promise&&(r=await r),r.issues.length?{success:!1,error:new n(r.issues.map(A=>Wi(A,o,Ki())))}:{success:!0,data:r.value}},MN=GA(Vp),RN=n=>(e,t,i)=>{const o=i?{...i,direction:"backward"}:{direction:"backward"};return ec(n)(e,t,o)},kN=n=>(e,t,i)=>ec(n)(e,t,i),zN=n=>async(e,t,i)=>{const o=i?{...i,direction:"backward"}:{direction:"backward"};return tc(n)(e,t,o)},_N=n=>async(e,t,i)=>tc(n)(e,t,i),jN=n=>(e,t,i)=>{const o=i?{...i,direction:"backward"}:{direction:"backward"};return LA(n)(e,t,o)},ZN=n=>(e,t,i)=>LA(n)(e,t,i),PN=n=>async(e,t,i)=>{const o=i?{...i,direction:"backward"}:{direction:"backward"};return GA(n)(e,t,o)},BN=n=>async(e,t,i)=>GA(n)(e,t,i),LN=/^[cC][0-9a-z]{6,}$/,GN=/^[0-9a-z]+$/,FN=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,VN=/^[0-9a-vA-V]{20}$/,UN=/^[A-Za-z0-9]{27}$/,YN=/^[a-zA-Z0-9_-]{21}$/,HN=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,KN=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,Up=n=>n?new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${n}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,WN=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,QN="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";function XN(){return new RegExp(QN,"u")}const $N=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,qN=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,JN=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,eD=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,tD=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,Yp=/^[A-Za-z0-9_-]*$/,nD=/^https?$/,iD=/^\+[1-9]\d{6,14}$/,Hp="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",gD=new RegExp(`^${Hp}$`);function Kp(n){const e="(?:[01]\\d|2[0-3]):[0-5]\\d";return typeof n.precision=="number"?n.precision===-1?`${e}`:n.precision===0?`${e}:[0-5]\\d`:`${e}:[0-5]\\d\\.\\d{${n.precision}}`:`${e}(?::[0-5]\\d(?:\\.\\d+)?)?`}function oD(n){return new RegExp(`^${Kp(n)}$`)}function sD(n){const e=Kp({precision:n.precision}),t=["Z"];n.local&&t.push(""),n.offset&&t.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");const i=`${e}(?:${t.join("|")})`;return new RegExp(`^${Hp}T(?:${i})$`)}const rD=n=>{const e=n?`[\\s\\S]{${n?.minimum??0},${n?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${e}$`)},aD=/^-?\d+$/,Wp=/^-?\d+(?:\.\d+)?$/,AD=/^(?:true|false)$/i,CD=/^[^A-Z]*$/,ID=/^[^a-z]*$/,zn=q("$ZodCheck",(n,e)=>{var t;n._zod??(n._zod={}),n._zod.def=e,(t=n._zod).onattach??(t.onattach=[])}),Qp={number:"number",bigint:"bigint",object:"date"},Xp=q("$ZodCheckLessThan",(n,e)=>{zn.init(n,e);const t=Qp[typeof e.value];n._zod.onattach.push(i=>{const o=i._zod.bag,r=(e.inclusive?o.maximum:o.exclusiveMaximum)??Number.POSITIVE_INFINITY;e.value{(e.inclusive?i.value<=e.value:i.value{zn.init(n,e);const t=Qp[typeof e.value];n._zod.onattach.push(i=>{const o=i._zod.bag,r=(e.inclusive?o.minimum:o.exclusiveMinimum)??Number.NEGATIVE_INFINITY;e.value>r&&(e.inclusive?o.minimum=e.value:o.exclusiveMinimum=e.value)}),n._zod.check=i=>{(e.inclusive?i.value>=e.value:i.value>e.value)||i.issues.push({origin:t,code:"too_small",minimum:typeof e.value=="object"?e.value.getTime():e.value,input:i.value,inclusive:e.inclusive,inst:n,continue:!e.abort})}}),lD=q("$ZodCheckMultipleOf",(n,e)=>{zn.init(n,e),n._zod.onattach.push(t=>{var i;(i=t._zod.bag).multipleOf??(i.multipleOf=e.value)}),n._zod.check=t=>{if(typeof t.value!=typeof e.value)throw new Error("Cannot mix number and bigint in multiple_of check.");(typeof t.value=="bigint"?t.value%e.value===BigInt(0):dN(t.value,e.value)===0)||t.issues.push({origin:typeof t.value,code:"not_multiple_of",divisor:e.value,input:t.value,inst:n,continue:!e.abort})}}),cD=q("$ZodCheckNumberFormat",(n,e)=>{zn.init(n,e),e.format=e.format||"float64";const t=e.format?.includes("int"),i=t?"int":"number",[o,r]=mN[e.format];n._zod.onattach.push(A=>{const I=A._zod.bag;I.format=e.format,I.minimum=o,I.maximum=r,t&&(I.pattern=aD)}),n._zod.check=A=>{const I=A.value;if(t){if(!Number.isInteger(I)){A.issues.push({expected:i,format:e.format,code:"invalid_type",continue:!1,input:I,inst:n});return}if(!Number.isSafeInteger(I)){I>0?A.issues.push({input:I,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:n,origin:i,inclusive:!0,continue:!e.abort}):A.issues.push({input:I,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:n,origin:i,inclusive:!0,continue:!e.abort});return}}Ir&&A.issues.push({origin:"number",input:I,code:"too_big",maximum:r,inclusive:!0,inst:n,continue:!e.abort})}}),dD=q("$ZodCheckMaxLength",(n,e)=>{var t;zn.init(n,e),(t=n._zod.def).when??(t.when=i=>{const o=i.value;return!$l(o)&&o.length!==void 0}),n._zod.onattach.push(i=>{const o=i._zod.bag.maximum??Number.POSITIVE_INFINITY;e.maximum{const o=i.value;if(o.length<=e.maximum)return;const A=Jl(o);i.issues.push({origin:A,code:"too_big",maximum:e.maximum,inclusive:!0,input:o,inst:n,continue:!e.abort})}}),uD=q("$ZodCheckMinLength",(n,e)=>{var t;zn.init(n,e),(t=n._zod.def).when??(t.when=i=>{const o=i.value;return!$l(o)&&o.length!==void 0}),n._zod.onattach.push(i=>{const o=i._zod.bag.minimum??Number.NEGATIVE_INFINITY;e.minimum>o&&(i._zod.bag.minimum=e.minimum)}),n._zod.check=i=>{const o=i.value;if(o.length>=e.minimum)return;const A=Jl(o);i.issues.push({origin:A,code:"too_small",minimum:e.minimum,inclusive:!0,input:o,inst:n,continue:!e.abort})}}),hD=q("$ZodCheckLengthEquals",(n,e)=>{var t;zn.init(n,e),(t=n._zod.def).when??(t.when=i=>{const o=i.value;return!$l(o)&&o.length!==void 0}),n._zod.onattach.push(i=>{const o=i._zod.bag;o.minimum=e.length,o.maximum=e.length,o.length=e.length}),n._zod.check=i=>{const o=i.value,r=o.length;if(r===e.length)return;const A=Jl(o),I=r>e.length;i.issues.push({origin:A,...I?{code:"too_big",maximum:e.length}:{code:"too_small",minimum:e.length},inclusive:!0,exact:!0,input:i.value,inst:n,continue:!e.abort})}}),FA=q("$ZodCheckStringFormat",(n,e)=>{var t,i;zn.init(n,e),n._zod.onattach.push(o=>{const r=o._zod.bag;r.format=e.format,e.pattern&&(r.patterns??(r.patterns=new Set),r.patterns.add(e.pattern))}),e.pattern?(t=n._zod).check??(t.check=o=>{e.pattern.lastIndex=0,!e.pattern.test(o.value)&&o.issues.push({origin:"string",code:"invalid_format",format:e.format,input:o.value,...e.pattern?{pattern:e.pattern.toString()}:{},inst:n,continue:!e.abort})}):(i=n._zod).check??(i.check=()=>{})}),fD=q("$ZodCheckRegex",(n,e)=>{FA.init(n,e),n._zod.check=t=>{e.pattern.lastIndex=0,!e.pattern.test(t.value)&&t.issues.push({origin:"string",code:"invalid_format",format:"regex",input:t.value,pattern:e.pattern.toString(),inst:n,continue:!e.abort})}}),pD=q("$ZodCheckLowerCase",(n,e)=>{e.pattern??(e.pattern=CD),FA.init(n,e)}),mD=q("$ZodCheckUpperCase",(n,e)=>{e.pattern??(e.pattern=ID),FA.init(n,e)}),vD=q("$ZodCheckIncludes",(n,e)=>{zn.init(n,e);const t=As(e.includes),i=new RegExp(typeof e.position=="number"?`^.{${e.position}}${t}`:t);e.pattern=i,n._zod.onattach.push(o=>{const r=o._zod.bag;r.patterns??(r.patterns=new Set),r.patterns.add(i)}),n._zod.check=o=>{o.value.includes(e.includes,e.position)||o.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:e.includes,input:o.value,inst:n,continue:!e.abort})}}),bD=q("$ZodCheckStartsWith",(n,e)=>{zn.init(n,e);const t=new RegExp(`^${As(e.prefix)}.*`);e.pattern??(e.pattern=t),n._zod.onattach.push(i=>{const o=i._zod.bag;o.patterns??(o.patterns=new Set),o.patterns.add(t)}),n._zod.check=i=>{i.value.startsWith(e.prefix)||i.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:e.prefix,input:i.value,inst:n,continue:!e.abort})}}),yD=q("$ZodCheckEndsWith",(n,e)=>{zn.init(n,e);const t=new RegExp(`.*${As(e.suffix)}$`);e.pattern??(e.pattern=t),n._zod.onattach.push(i=>{const o=i._zod.bag;o.patterns??(o.patterns=new Set),o.patterns.add(t)}),n._zod.check=i=>{i.value.endsWith(e.suffix)||i.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:e.suffix,input:i.value,inst:n,continue:!e.abort})}}),wD=q("$ZodCheckOverwrite",(n,e)=>{zn.init(n,e),n._zod.check=t=>{t.value=e.tx(t.value)}});class xD{constructor(e=[]){this.content=[],this.indent=0,this&&(this.args=e)}indented(e){this.indent+=1,e(this),this.indent-=1}write(e){if(typeof e=="function"){e(this,{execution:"sync"}),e(this,{execution:"async"});return}const i=e.split(` +`+C.stack}}var Me=Object.prototype.hasOwnProperty,_e=n.unstable_scheduleCallback,Lt=n.unstable_cancelCallback,Tn=n.unstable_shouldYield,Y=n.unstable_requestPaint,Ae=n.unstable_now,Qe=n.unstable_getCurrentPriorityLevel,Et=n.unstable_ImmediatePriority,wt=n.unstable_UserBlockingPriority,Rn=n.unstable_NormalPriority,DI=n.unstable_LowPriority,mE=n.unstable_IdlePriority,eie=n.log,tie=n.unstable_setDisableYieldValue,qa=null,Wn=null;function Qg(g){if(typeof eie=="function"&&tie(g),Wn&&typeof Wn.setStrictMode=="function")try{Wn.setStrictMode(qa,g)}catch{}}var Qn=Math.clz32?Math.clz32:gie,nie=Math.log,iie=Math.LN2;function gie(g){return g>>>=0,g===0?32:31-(nie(g)/iie|0)|0}var kI=256,MI=262144,RI=4194304;function Yo(g){var s=g&42;if(s!==0)return s;switch(g&-g){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return g&261888;case 262144:case 524288:case 1048576:case 2097152:return g&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return g&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return g}}function zI(g,s,a){var C=g.pendingLanes;if(C===0)return 0;var d=0,u=g.suspendedLanes,b=g.pingedLanes;g=g.warmLanes;var w=C&134217727;return w!==0?(C=w&~u,C!==0?d=Yo(C):(b&=w,b!==0?d=Yo(b):a||(a=w&~g,a!==0&&(d=Yo(a))))):(w=C&~u,w!==0?d=Yo(w):b!==0?d=Yo(b):a||(a=C&~g,a!==0&&(d=Yo(a)))),d===0?0:s!==0&&s!==d&&(s&u)===0&&(u=d&-d,a=s&-s,u>=a||u===32&&(a&4194048)!==0)?s:d}function Ja(g,s){return(g.pendingLanes&~(g.suspendedLanes&~g.pingedLanes)&s)===0}function oie(g,s){switch(g){case 1:case 2:case 4:case 8:case 64:return s+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return s+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function vE(){var g=RI;return RI<<=1,(RI&62914560)===0&&(RI=4194304),g}function fh(g){for(var s=[],a=0;31>a;a++)s.push(g);return s}function eA(g,s){g.pendingLanes|=s,s!==268435456&&(g.suspendedLanes=0,g.pingedLanes=0,g.warmLanes=0)}function sie(g,s,a,C,d,u){var b=g.pendingLanes;g.pendingLanes=a,g.suspendedLanes=0,g.pingedLanes=0,g.warmLanes=0,g.expiredLanes&=a,g.entangledLanes&=a,g.errorRecoveryDisabledLanes&=a,g.shellSuspendCounter=0;var w=g.entanglements,N=g.expirationTimes,L=g.hiddenUpdates;for(a=b&~a;0"u")return null;try{return g.activeElement||g.body}catch{return g.body}}var lie=/[\n"\\]/g;function Ii(g){return g.replace(lie,function(s){return"\\"+s.charCodeAt(0).toString(16)+" "})}function wh(g,s,a,C,d,u,b,w){g.name="",b!=null&&typeof b!="function"&&typeof b!="symbol"&&typeof b!="boolean"?g.type=b:g.removeAttribute("type"),s!=null?b==="number"?(s===0&&g.value===""||g.value!=s)&&(g.value=""+Ci(s)):g.value!==""+Ci(s)&&(g.value=""+Ci(s)):b!=="submit"&&b!=="reset"||g.removeAttribute("value"),s!=null?xh(g,b,Ci(s)):a!=null?xh(g,b,Ci(a)):C!=null&&g.removeAttribute("value"),d==null&&u!=null&&(g.defaultChecked=!!u),d!=null&&(g.checked=d&&typeof d!="function"&&typeof d!="symbol"),w!=null&&typeof w!="function"&&typeof w!="symbol"&&typeof w!="boolean"?g.name=""+Ci(w):g.removeAttribute("name")}function RE(g,s,a,C,d,u,b,w){if(u!=null&&typeof u!="function"&&typeof u!="symbol"&&typeof u!="boolean"&&(g.type=u),s!=null||a!=null){if(!(u!=="submit"&&u!=="reset"||s!=null)){yh(g);return}a=a!=null?""+Ci(a):"",s=s!=null?""+Ci(s):a,w||s===g.value||(g.value=s),g.defaultValue=s}C=C??d,C=typeof C!="function"&&typeof C!="symbol"&&!!C,g.checked=w?g.checked:!!C,g.defaultChecked=!!C,b!=null&&typeof b!="function"&&typeof b!="symbol"&&typeof b!="boolean"&&(g.name=b),yh(g)}function xh(g,s,a){s==="number"&&PI(g.ownerDocument)===g||g.defaultValue===""+a||(g.defaultValue=""+a)}function ir(g,s,a,C){if(g=g.options,s){s={};for(var d=0;d"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Nh=!1;if(Ig)try{var gA={};Object.defineProperty(gA,"passive",{get:function(){Nh=!0}}),window.addEventListener("test",gA,gA),window.removeEventListener("test",gA,gA)}catch{Nh=!1}var $g=null,Dh=null,ZI=null;function LE(){if(ZI)return ZI;var g,s=Dh,a=s.length,C,d="value"in $g?$g.value:$g.textContent,u=d.length;for(g=0;g=rA),HE=" ",KE=!1;function WE(g,s){switch(g){case"keyup":return Lie.indexOf(s.keyCode)!==-1;case"keydown":return s.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function QE(g){return g=g.detail,typeof g=="object"&&"data"in g?g.data:null}var rr=!1;function Fie(g,s){switch(g){case"compositionend":return QE(s);case"keypress":return s.which!==32?null:(KE=!0,HE);case"textInput":return g=s.data,g===HE&&KE?null:g;default:return null}}function Vie(g,s){if(rr)return g==="compositionend"||!_h&&WE(g,s)?(g=LE(),ZI=Dh=$g=null,rr=!1,g):null;switch(g){case"paste":return null;case"keypress":if(!(s.ctrlKey||s.altKey||s.metaKey)||s.ctrlKey&&s.altKey){if(s.char&&1=s)return{node:a,offset:s-g};g=C}e:{for(;a;){if(a.nextSibling){a=a.nextSibling;break e}a=a.parentNode}a=void 0}a=iS(a)}}function oS(g,s){return g&&s?g===s?!0:g&&g.nodeType===3?!1:s&&s.nodeType===3?oS(g,s.parentNode):"contains"in g?g.contains(s):g.compareDocumentPosition?!!(g.compareDocumentPosition(s)&16):!1:!1}function sS(g){g=g!=null&&g.ownerDocument!=null&&g.ownerDocument.defaultView!=null?g.ownerDocument.defaultView:window;for(var s=PI(g.document);s instanceof g.HTMLIFrameElement;){try{var a=typeof s.contentWindow.location.href=="string"}catch{a=!1}if(a)g=s.contentWindow;else break;s=PI(g.document)}return s}function Bh(g){var s=g&&g.nodeName&&g.nodeName.toLowerCase();return s&&(s==="input"&&(g.type==="text"||g.type==="search"||g.type==="tel"||g.type==="url"||g.type==="password")||s==="textarea"||g.contentEditable==="true")}var $ie=Ig&&"documentMode"in document&&11>=document.documentMode,ar=null,Zh=null,IA=null,Lh=!1;function rS(g,s,a){var C=a.window===a?a.document:a.nodeType===9?a:a.ownerDocument;Lh||ar==null||ar!==PI(C)||(C=ar,"selectionStart"in C&&Bh(C)?C={start:C.selectionStart,end:C.selectionEnd}:(C=(C.ownerDocument&&C.ownerDocument.defaultView||window).getSelection(),C={anchorNode:C.anchorNode,anchorOffset:C.anchorOffset,focusNode:C.focusNode,focusOffset:C.focusOffset}),IA&&CA(IA,C)||(IA=C,C=Ml(Zh,"onSelect"),0>=b,d-=b,Ui=1<<32-Qn(s)+d|a<Ve?(Je=be,be=null):Je=be.sibling;var st=G(z,be,Z[Ve],ee);if(st===null){be===null&&(be=Je);break}g&&be&&st.alternate===null&&s(z,be),k=u(st,k,Ve),ot===null?Se=st:ot.sibling=st,ot=st,be=Je}if(Ve===Z.length)return a(z,be),tt&&cg(z,Ve),Se;if(be===null){for(;VeVe?(Je=be,be=null):Je=be.sibling;var vo=G(z,be,st.value,ee);if(vo===null){be===null&&(be=Je);break}g&&be&&vo.alternate===null&&s(z,be),k=u(vo,k,Ve),ot===null?Se=vo:ot.sibling=vo,ot=vo,be=Je}if(st.done)return a(z,be),tt&&cg(z,Ve),Se;if(be===null){for(;!st.done;Ve++,st=Z.next())st=te(z,st.value,ee),st!==null&&(k=u(st,k,Ve),ot===null?Se=st:ot.sibling=st,ot=st);return tt&&cg(z,Ve),Se}for(be=C(be);!st.done;Ve++,st=Z.next())st=H(be,z,Ve,st.value,ee),st!==null&&(g&&st.alternate!==null&&be.delete(st.key===null?Ve:st.key),k=u(st,k,Ve),ot===null?Se=st:ot.sibling=st,ot=st);return g&&be.forEach(function(foe){return s(z,foe)}),tt&&cg(z,Ve),Se}function pt(z,k,Z,ee){if(typeof Z=="object"&&Z!==null&&Z.type===O&&Z.key===null&&(Z=Z.props.children),typeof Z=="object"&&Z!==null){switch(Z.$$typeof){case v:e:{for(var Se=Z.key;k!==null;){if(k.key===Se){if(Se=Z.type,Se===O){if(k.tag===7){a(z,k.sibling),ee=d(k,Z.props.children),ee.return=z,z=ee;break e}}else if(k.elementType===Se||typeof Se=="object"&&Se!==null&&Se.$$typeof===V&&ns(Se)===k.type){a(z,k.sibling),ee=d(k,Z.props),fA(ee,Z),ee.return=z,z=ee;break e}a(z,k);break}else s(z,k);k=k.sibling}Z.type===O?(ee=$o(Z.props.children,z.mode,ee,Z.key),ee.return=z,z=ee):(ee=QI(Z.type,Z.key,Z.props,null,z.mode,ee),fA(ee,Z),ee.return=z,z=ee)}return b(z);case x:e:{for(Se=Z.key;k!==null;){if(k.key===Se)if(k.tag===4&&k.stateNode.containerInfo===Z.containerInfo&&k.stateNode.implementation===Z.implementation){a(z,k.sibling),ee=d(k,Z.children||[]),ee.return=z,z=ee;break e}else{a(z,k);break}else s(z,k);k=k.sibling}ee=Kh(Z,z.mode,ee),ee.return=z,z=ee}return b(z);case V:return Z=ns(Z),pt(z,k,Z,ee)}if(le(Z))return pe(z,k,Z,ee);if(xe(Z)){if(Se=xe(Z),typeof Se!="function")throw Error(i(150));return Z=Se.call(Z),Re(z,k,Z,ee)}if(typeof Z.then=="function")return pt(z,k,nl(Z),ee);if(Z.$$typeof===_)return pt(z,k,qI(z,Z),ee);il(z,Z)}return typeof Z=="string"&&Z!==""||typeof Z=="number"||typeof Z=="bigint"?(Z=""+Z,k!==null&&k.tag===6?(a(z,k.sibling),ee=d(k,Z),ee.return=z,z=ee):(a(z,k),ee=Hh(Z,z.mode,ee),ee.return=z,z=ee),b(z)):a(z,k)}return function(z,k,Z,ee){try{hA=0;var Se=pt(z,k,Z,ee);return mr=null,Se}catch(be){if(be===pr||be===el)throw be;var ot=$n(29,be,null,z.mode);return ot.lanes=ee,ot.return=z,ot}}}var gs=DS(!0),kS=DS(!1),no=!1;function sf(g){g.updateQueue={baseState:g.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function rf(g,s){g=g.updateQueue,s.updateQueue===g&&(s.updateQueue={baseState:g.baseState,firstBaseUpdate:g.firstBaseUpdate,lastBaseUpdate:g.lastBaseUpdate,shared:g.shared,callbacks:null})}function io(g){return{lane:g,tag:0,payload:null,callback:null,next:null}}function go(g,s,a){var C=g.updateQueue;if(C===null)return null;if(C=C.shared,(At&2)!==0){var d=C.pending;return d===null?s.next=s:(s.next=d.next,d.next=s),C.pending=s,s=WI(g),dS(g,null,a),s}return KI(g,C,s,a),WI(g)}function pA(g,s,a){if(s=s.updateQueue,s!==null&&(s=s.shared,(a&4194048)!==0)){var C=s.lanes;C&=g.pendingLanes,a|=C,s.lanes=a,yE(g,a)}}function af(g,s){var a=g.updateQueue,C=g.alternate;if(C!==null&&(C=C.updateQueue,a===C)){var d=null,u=null;if(a=a.firstBaseUpdate,a!==null){do{var b={lane:a.lane,tag:a.tag,payload:a.payload,callback:null,next:null};u===null?d=u=b:u=u.next=b,a=a.next}while(a!==null);u===null?d=u=s:u=u.next=s}else d=u=s;a={baseState:C.baseState,firstBaseUpdate:d,lastBaseUpdate:u,shared:C.shared,callbacks:C.callbacks},g.updateQueue=a;return}g=a.lastBaseUpdate,g===null?a.firstBaseUpdate=s:g.next=s,a.lastBaseUpdate=s}var Af=!1;function mA(){if(Af){var g=fr;if(g!==null)throw g}}function vA(g,s,a,C){Af=!1;var d=g.updateQueue;no=!1;var u=d.firstBaseUpdate,b=d.lastBaseUpdate,w=d.shared.pending;if(w!==null){d.shared.pending=null;var N=w,L=N.next;N.next=null,b===null?u=L:b.next=L,b=N;var $=g.alternate;$!==null&&($=$.updateQueue,w=$.lastBaseUpdate,w!==b&&(w===null?$.firstBaseUpdate=L:w.next=L,$.lastBaseUpdate=N))}if(u!==null){var te=d.baseState;b=0,$=L=N=null,w=u;do{var G=w.lane&-536870913,H=G!==w.lane;if(H?(qe&G)===G:(C&G)===G){G!==0&&G===hr&&(Af=!0),$!==null&&($=$.next={lane:0,tag:w.tag,payload:w.payload,callback:null,next:null});e:{var pe=g,Re=w;G=s;var pt=a;switch(Re.tag){case 1:if(pe=Re.payload,typeof pe=="function"){te=pe.call(pt,te,G);break e}te=pe;break e;case 3:pe.flags=pe.flags&-65537|128;case 0:if(pe=Re.payload,G=typeof pe=="function"?pe.call(pt,te,G):pe,G==null)break e;te=p({},te,G);break e;case 2:no=!0}}G=w.callback,G!==null&&(g.flags|=64,H&&(g.flags|=8192),H=d.callbacks,H===null?d.callbacks=[G]:H.push(G))}else H={lane:G,tag:w.tag,payload:w.payload,callback:w.callback,next:null},$===null?(L=$=H,N=te):$=$.next=H,b|=G;if(w=w.next,w===null){if(w=d.shared.pending,w===null)break;H=w,w=H.next,H.next=null,d.lastBaseUpdate=H,d.shared.pending=null}}while(!0);$===null&&(N=te),d.baseState=N,d.firstBaseUpdate=L,d.lastBaseUpdate=$,u===null&&(d.shared.lanes=0),Ao|=b,g.lanes=b,g.memoizedState=te}}function MS(g,s){if(typeof g!="function")throw Error(i(191,g));g.call(s)}function RS(g,s){var a=g.callbacks;if(a!==null)for(g.callbacks=null,g=0;gu?u:8;var b=M.T,w={};M.T=w,Of(g,!1,s,a);try{var N=d(),L=M.S;if(L!==null&&L(w,N),N!==null&&typeof N=="object"&&typeof N.then=="function"){var $=sge(N,C);wA(g,s,$,ni(g))}else wA(g,s,C,ni(g))}catch(te){wA(g,s,{then:function(){},status:"rejected",reason:te},ni())}finally{Q.p=u,b!==null&&w.types!==null&&(b.types=w.types),M.T=b}}function lge(){}function Sf(g,s,a,C){if(g.tag!==5)throw Error(i(476));var d=IT(g).queue;CT(g,d,s,se,a===null?lge:function(){return lT(g),a(C)})}function IT(g){var s=g.memoizedState;if(s!==null)return s;s={memoizedState:se,baseState:se,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:fg,lastRenderedState:se},next:null};var a={};return s.next={memoizedState:a,baseState:a,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:fg,lastRenderedState:a},next:null},g.memoizedState=s,g=g.alternate,g!==null&&(g.memoizedState=s),s}function lT(g){var s=IT(g);s.next===null&&(s=g.alternate.memoizedState),wA(g,s.next.queue,{},ni())}function Tf(){return bn(LA)}function cT(){return Wt().memoizedState}function dT(){return Wt().memoizedState}function cge(g){for(var s=g.return;s!==null;){switch(s.tag){case 24:case 3:var a=ni();g=io(a);var C=go(s,g,a);C!==null&&(Yn(C,s,a),pA(C,s,a)),s={cache:tf()},g.payload=s;return}s=s.return}}function dge(g,s,a){var C=ni();a={lane:C,revertLane:0,gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null},cl(g)?hT(s,a):(a=Uh(g,s,a,C),a!==null&&(Yn(a,g,C),fT(a,s,C)))}function uT(g,s,a){var C=ni();wA(g,s,a,C)}function wA(g,s,a,C){var d={lane:C,revertLane:0,gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null};if(cl(g))hT(s,d);else{var u=g.alternate;if(g.lanes===0&&(u===null||u.lanes===0)&&(u=s.lastRenderedReducer,u!==null))try{var b=s.lastRenderedState,w=u(b,a);if(d.hasEagerState=!0,d.eagerState=w,Xn(w,b))return KI(g,s,d,0),mt===null&&HI(),!1}catch{}if(a=Uh(g,s,d,C),a!==null)return Yn(a,g,C),fT(a,s,C),!0}return!1}function Of(g,s,a,C){if(C={lane:2,revertLane:sp(),gesture:null,action:C,hasEagerState:!1,eagerState:null,next:null},cl(g)){if(s)throw Error(i(479))}else s=Uh(g,a,C,2),s!==null&&Yn(s,g,2)}function cl(g){var s=g.alternate;return g===Fe||s!==null&&s===Fe}function hT(g,s){br=sl=!0;var a=g.pending;a===null?s.next=s:(s.next=a.next,a.next=s),g.pending=s}function fT(g,s,a){if((a&4194048)!==0){var C=s.lanes;C&=g.pendingLanes,a|=C,s.lanes=a,yE(g,a)}}var xA={readContext:bn,use:Al,useCallback:Gt,useContext:Gt,useEffect:Gt,useImperativeHandle:Gt,useLayoutEffect:Gt,useInsertionEffect:Gt,useMemo:Gt,useReducer:Gt,useRef:Gt,useState:Gt,useDebugValue:Gt,useDeferredValue:Gt,useTransition:Gt,useSyncExternalStore:Gt,useId:Gt,useHostTransitionStatus:Gt,useFormState:Gt,useActionState:Gt,useOptimistic:Gt,useMemoCache:Gt,useCacheRefresh:Gt};xA.useEffectEvent=Gt;var pT={readContext:bn,use:Al,useCallback:function(g,s){return zn().memoizedState=[g,s===void 0?null:s],g},useContext:bn,useEffect:tT,useImperativeHandle:function(g,s,a){a=a!=null?a.concat([g]):null,Il(4194308,4,oT.bind(null,s,g),a)},useLayoutEffect:function(g,s){return Il(4194308,4,g,s)},useInsertionEffect:function(g,s){Il(4,2,g,s)},useMemo:function(g,s){var a=zn();s=s===void 0?null:s;var C=g();if(os){Qg(!0);try{g()}finally{Qg(!1)}}return a.memoizedState=[C,s],C},useReducer:function(g,s,a){var C=zn();if(a!==void 0){var d=a(s);if(os){Qg(!0);try{a(s)}finally{Qg(!1)}}}else d=s;return C.memoizedState=C.baseState=d,g={pending:null,lanes:0,dispatch:null,lastRenderedReducer:g,lastRenderedState:d},C.queue=g,g=g.dispatch=dge.bind(null,Fe,g),[C.memoizedState,g]},useRef:function(g){var s=zn();return g={current:g},s.memoizedState=g},useState:function(g){g=bf(g);var s=g.queue,a=uT.bind(null,Fe,s);return s.dispatch=a,[g.memoizedState,a]},useDebugValue:xf,useDeferredValue:function(g,s){var a=zn();return Ef(a,g,s)},useTransition:function(){var g=bf(!1);return g=CT.bind(null,Fe,g.queue,!0,!1),zn().memoizedState=g,[!1,g]},useSyncExternalStore:function(g,s,a){var C=Fe,d=zn();if(tt){if(a===void 0)throw Error(i(407));a=a()}else{if(a=s(),mt===null)throw Error(i(349));(qe&127)!==0||ZS(C,s,a)}d.memoizedState=a;var u={value:a,getSnapshot:s};return d.queue=u,tT(GS.bind(null,C,u,g),[g]),C.flags|=2048,wr(9,{destroy:void 0},LS.bind(null,C,u,a,s),null),a},useId:function(){var g=zn(),s=mt.identifierPrefix;if(tt){var a=Yi,C=Ui;a=(C&~(1<<32-Qn(C)-1)).toString(32)+a,s="_"+s+"R_"+a,a=rl++,0<\/script>",u=u.removeChild(u.firstChild);break;case"select":u=typeof C.is=="string"?b.createElement("select",{is:C.is}):b.createElement("select"),C.multiple?u.multiple=!0:C.size&&(u.size=C.size);break;default:u=typeof C.is=="string"?b.createElement(d,{is:C.is}):b.createElement(d)}}u[mn]=s,u[Zn]=C;e:for(b=s.child;b!==null;){if(b.tag===5||b.tag===6)u.appendChild(b.stateNode);else if(b.tag!==4&&b.tag!==27&&b.child!==null){b.child.return=b,b=b.child;continue}if(b===s)break e;for(;b.sibling===null;){if(b.return===null||b.return===s)break e;b=b.return}b.sibling.return=b.return,b=b.sibling}s.stateNode=u;e:switch(wn(u,d,C),d){case"button":case"input":case"select":case"textarea":C=!!C.autoFocus;break e;case"img":C=!0;break e;default:C=!1}C&&mg(s)}}return Tt(s),Ff(s,s.type,g===null?null:g.memoizedProps,s.pendingProps,a),null;case 6:if(g&&s.stateNode!=null)g.memoizedProps!==C&&mg(s);else{if(typeof C!="string"&&s.stateNode===null)throw Error(i(166));if(g=me.current,dr(s)){if(g=s.stateNode,a=s.memoizedProps,C=null,d=vn,d!==null)switch(d.tag){case 27:case 5:C=d.memoizedProps}g[mn]=s,g=!!(g.nodeValue===a||C!==null&&C.suppressHydrationWarning===!0||PO(g.nodeValue,a)),g||eo(s,!0)}else g=Rl(g).createTextNode(C),g[mn]=s,s.stateNode=g}return Tt(s),null;case 31:if(a=s.memoizedState,g===null||g.memoizedState!==null){if(C=dr(s),a!==null){if(g===null){if(!C)throw Error(i(318));if(g=s.memoizedState,g=g!==null?g.dehydrated:null,!g)throw Error(i(557));g[mn]=s}else qo(),(s.flags&128)===0&&(s.memoizedState=null),s.flags|=4;Tt(s),g=!1}else a=$h(),g!==null&&g.memoizedState!==null&&(g.memoizedState.hydrationErrors=a),g=!0;if(!g)return s.flags&256?(Jn(s),s):(Jn(s),null);if((s.flags&128)!==0)throw Error(i(558))}return Tt(s),null;case 13:if(C=s.memoizedState,g===null||g.memoizedState!==null&&g.memoizedState.dehydrated!==null){if(d=dr(s),C!==null&&C.dehydrated!==null){if(g===null){if(!d)throw Error(i(318));if(d=s.memoizedState,d=d!==null?d.dehydrated:null,!d)throw Error(i(317));d[mn]=s}else qo(),(s.flags&128)===0&&(s.memoizedState=null),s.flags|=4;Tt(s),d=!1}else d=$h(),g!==null&&g.memoizedState!==null&&(g.memoizedState.hydrationErrors=d),d=!0;if(!d)return s.flags&256?(Jn(s),s):(Jn(s),null)}return Jn(s),(s.flags&128)!==0?(s.lanes=a,s):(a=C!==null,g=g!==null&&g.memoizedState!==null,a&&(C=s.child,d=null,C.alternate!==null&&C.alternate.memoizedState!==null&&C.alternate.memoizedState.cachePool!==null&&(d=C.alternate.memoizedState.cachePool.pool),u=null,C.memoizedState!==null&&C.memoizedState.cachePool!==null&&(u=C.memoizedState.cachePool.pool),u!==d&&(C.flags|=2048)),a!==g&&a&&(s.child.flags|=8192),pl(s,s.updateQueue),Tt(s),null);case 4:return Pe(),g===null&&Cp(s.stateNode.containerInfo),Tt(s),null;case 10:return ug(s.type),Tt(s),null;case 19:if(U(Kt),C=s.memoizedState,C===null)return Tt(s),null;if(d=(s.flags&128)!==0,u=C.rendering,u===null)if(d)SA(C,!1);else{if(Ft!==0||g!==null&&(g.flags&128)!==0)for(g=s.child;g!==null;){if(u=ol(g),u!==null){for(s.flags|=128,SA(C,!1),g=u.updateQueue,s.updateQueue=g,pl(s,g),s.subtreeFlags=0,g=a,a=s.child;a!==null;)uS(a,g),a=a.sibling;return ie(Kt,Kt.current&1|2),tt&&cg(s,C.treeForkCount),s.child}g=g.sibling}C.tail!==null&&Ae()>wl&&(s.flags|=128,d=!0,SA(C,!1),s.lanes=4194304)}else{if(!d)if(g=ol(u),g!==null){if(s.flags|=128,d=!0,g=g.updateQueue,s.updateQueue=g,pl(s,g),SA(C,!0),C.tail===null&&C.tailMode==="hidden"&&!u.alternate&&!tt)return Tt(s),null}else 2*Ae()-C.renderingStartTime>wl&&a!==536870912&&(s.flags|=128,d=!0,SA(C,!1),s.lanes=4194304);C.isBackwards?(u.sibling=s.child,s.child=u):(g=C.last,g!==null?g.sibling=u:s.child=u,C.last=u)}return C.tail!==null?(g=C.tail,C.rendering=g,C.tail=g.sibling,C.renderingStartTime=Ae(),g.sibling=null,a=Kt.current,ie(Kt,d?a&1|2:a&1),tt&&cg(s,C.treeForkCount),g):(Tt(s),null);case 22:case 23:return Jn(s),If(),C=s.memoizedState!==null,g!==null?g.memoizedState!==null!==C&&(s.flags|=8192):C&&(s.flags|=8192),C?(a&536870912)!==0&&(s.flags&128)===0&&(Tt(s),s.subtreeFlags&6&&(s.flags|=8192)):Tt(s),a=s.updateQueue,a!==null&&pl(s,a.retryQueue),a=null,g!==null&&g.memoizedState!==null&&g.memoizedState.cachePool!==null&&(a=g.memoizedState.cachePool.pool),C=null,s.memoizedState!==null&&s.memoizedState.cachePool!==null&&(C=s.memoizedState.cachePool.pool),C!==a&&(s.flags|=2048),g!==null&&U(ts),null;case 24:return a=null,g!==null&&(a=g.memoizedState.cache),s.memoizedState.cache!==a&&(s.flags|=2048),ug(tn),Tt(s),null;case 25:return null;case 30:return null}throw Error(i(156,s.tag))}function mge(g,s){switch(Qh(s),s.tag){case 1:return g=s.flags,g&65536?(s.flags=g&-65537|128,s):null;case 3:return ug(tn),Pe(),g=s.flags,(g&65536)!==0&&(g&128)===0?(s.flags=g&-65537|128,s):null;case 26:case 27:case 5:return pn(s),null;case 31:if(s.memoizedState!==null){if(Jn(s),s.alternate===null)throw Error(i(340));qo()}return g=s.flags,g&65536?(s.flags=g&-65537|128,s):null;case 13:if(Jn(s),g=s.memoizedState,g!==null&&g.dehydrated!==null){if(s.alternate===null)throw Error(i(340));qo()}return g=s.flags,g&65536?(s.flags=g&-65537|128,s):null;case 19:return U(Kt),null;case 4:return Pe(),null;case 10:return ug(s.type),null;case 22:case 23:return Jn(s),If(),g!==null&&U(ts),g=s.flags,g&65536?(s.flags=g&-65537|128,s):null;case 24:return ug(tn),null;case 25:return null;default:return null}}function FT(g,s){switch(Qh(s),s.tag){case 3:ug(tn),Pe();break;case 26:case 27:case 5:pn(s);break;case 4:Pe();break;case 31:s.memoizedState!==null&&Jn(s);break;case 13:Jn(s);break;case 19:U(Kt);break;case 10:ug(s.type);break;case 22:case 23:Jn(s),If(),g!==null&&U(ts);break;case 24:ug(tn)}}function TA(g,s){try{var a=s.updateQueue,C=a!==null?a.lastEffect:null;if(C!==null){var d=C.next;a=d;do{if((a.tag&g)===g){C=void 0;var u=a.create,b=a.inst;C=u(),b.destroy=C}a=a.next}while(a!==d)}}catch(w){dt(s,s.return,w)}}function ro(g,s,a){try{var C=s.updateQueue,d=C!==null?C.lastEffect:null;if(d!==null){var u=d.next;C=u;do{if((C.tag&g)===g){var b=C.inst,w=b.destroy;if(w!==void 0){b.destroy=void 0,d=s;var N=a,L=w;try{L()}catch($){dt(d,N,$)}}}C=C.next}while(C!==u)}}catch($){dt(s,s.return,$)}}function VT(g){var s=g.updateQueue;if(s!==null){var a=g.stateNode;try{RS(s,a)}catch(C){dt(g,g.return,C)}}}function UT(g,s,a){a.props=ss(g.type,g.memoizedProps),a.state=g.memoizedState;try{a.componentWillUnmount()}catch(C){dt(g,s,C)}}function OA(g,s){try{var a=g.ref;if(a!==null){switch(g.tag){case 26:case 27:case 5:var C=g.stateNode;break;case 30:C=g.stateNode;break;default:C=g.stateNode}typeof a=="function"?g.refCleanup=a(C):a.current=C}}catch(d){dt(g,s,d)}}function Hi(g,s){var a=g.ref,C=g.refCleanup;if(a!==null)if(typeof C=="function")try{C()}catch(d){dt(g,s,d)}finally{g.refCleanup=null,g=g.alternate,g!=null&&(g.refCleanup=null)}else if(typeof a=="function")try{a(null)}catch(d){dt(g,s,d)}else a.current=null}function YT(g){var s=g.type,a=g.memoizedProps,C=g.stateNode;try{e:switch(s){case"button":case"input":case"select":case"textarea":a.autoFocus&&C.focus();break e;case"img":a.src?C.src=a.src:a.srcSet&&(C.srcset=a.srcSet)}}catch(d){dt(g,g.return,d)}}function Vf(g,s,a){try{var C=g.stateNode;Gge(C,g.type,a,s),C[Zn]=s}catch(d){dt(g,g.return,d)}}function HT(g){return g.tag===5||g.tag===3||g.tag===26||g.tag===27&&uo(g.type)||g.tag===4}function Uf(g){e:for(;;){for(;g.sibling===null;){if(g.return===null||HT(g.return))return null;g=g.return}for(g.sibling.return=g.return,g=g.sibling;g.tag!==5&&g.tag!==6&&g.tag!==18;){if(g.tag===27&&uo(g.type)||g.flags&2||g.child===null||g.tag===4)continue e;g.child.return=g,g=g.child}if(!(g.flags&2))return g.stateNode}}function Yf(g,s,a){var C=g.tag;if(C===5||C===6)g=g.stateNode,s?(a.nodeType===9?a.body:a.nodeName==="HTML"?a.ownerDocument.body:a).insertBefore(g,s):(s=a.nodeType===9?a.body:a.nodeName==="HTML"?a.ownerDocument.body:a,s.appendChild(g),a=a._reactRootContainer,a!=null||s.onclick!==null||(s.onclick=Cg));else if(C!==4&&(C===27&&uo(g.type)&&(a=g.stateNode,s=null),g=g.child,g!==null))for(Yf(g,s,a),g=g.sibling;g!==null;)Yf(g,s,a),g=g.sibling}function ml(g,s,a){var C=g.tag;if(C===5||C===6)g=g.stateNode,s?a.insertBefore(g,s):a.appendChild(g);else if(C!==4&&(C===27&&uo(g.type)&&(a=g.stateNode),g=g.child,g!==null))for(ml(g,s,a),g=g.sibling;g!==null;)ml(g,s,a),g=g.sibling}function KT(g){var s=g.stateNode,a=g.memoizedProps;try{for(var C=g.type,d=s.attributes;d.length;)s.removeAttributeNode(d[0]);wn(s,C,a),s[mn]=g,s[Zn]=a}catch(u){dt(g,g.return,u)}}var vg=!1,on=!1,Hf=!1,WT=typeof WeakSet=="function"?WeakSet:Set,dn=null;function vge(g,s){if(g=g.containerInfo,cp=Ll,g=sS(g),Bh(g)){if("selectionStart"in g)var a={start:g.selectionStart,end:g.selectionEnd};else e:{a=(a=g.ownerDocument)&&a.defaultView||window;var C=a.getSelection&&a.getSelection();if(C&&C.rangeCount!==0){a=C.anchorNode;var d=C.anchorOffset,u=C.focusNode;C=C.focusOffset;try{a.nodeType,u.nodeType}catch{a=null;break e}var b=0,w=-1,N=-1,L=0,$=0,te=g,G=null;t:for(;;){for(var H;te!==a||d!==0&&te.nodeType!==3||(w=b+d),te!==u||C!==0&&te.nodeType!==3||(N=b+C),te.nodeType===3&&(b+=te.nodeValue.length),(H=te.firstChild)!==null;)G=te,te=H;for(;;){if(te===g)break t;if(G===a&&++L===d&&(w=b),G===u&&++$===C&&(N=b),(H=te.nextSibling)!==null)break;te=G,G=te.parentNode}te=H}a=w===-1||N===-1?null:{start:w,end:N}}else a=null}a=a||{start:0,end:0}}else a=null;for(dp={focusedElem:g,selectionRange:a},Ll=!1,dn=s;dn!==null;)if(s=dn,g=s.child,(s.subtreeFlags&1028)!==0&&g!==null)g.return=s,dn=g;else for(;dn!==null;){switch(s=dn,u=s.alternate,g=s.flags,s.tag){case 0:if((g&4)!==0&&(g=s.updateQueue,g=g!==null?g.events:null,g!==null))for(a=0;a title"))),wn(u,C,a),u[mn]=g,cn(u),C=u;break e;case"link":var b=eN("link","href",d).get(C+(a.href||""));if(b){for(var w=0;wpt&&(b=pt,pt=Re,Re=b);var z=gS(w,Re),k=gS(w,pt);if(z&&k&&(H.rangeCount!==1||H.anchorNode!==z.node||H.anchorOffset!==z.offset||H.focusNode!==k.node||H.focusOffset!==k.offset)){var Z=te.createRange();Z.setStart(z.node,z.offset),H.removeAllRanges(),Re>pt?(H.addRange(Z),H.extend(k.node,k.offset)):(Z.setEnd(k.node,k.offset),H.addRange(Z))}}}}for(te=[],H=w;H=H.parentNode;)H.nodeType===1&&te.push({element:H,left:H.scrollLeft,top:H.scrollTop});for(typeof w.focus=="function"&&w.focus(),w=0;wa?32:a,M.T=null,a=Jf,Jf=null;var u=Io,b=Eg;if(An=0,Or=Io=null,Eg=0,(At&6)!==0)throw Error(i(331));var w=At;if(At|=4,oO(u.current),nO(u,u.current,b,a),At=w,zA(0,!1),Wn&&typeof Wn.onPostCommitFiberRoot=="function")try{Wn.onPostCommitFiberRoot(qa,u)}catch{}return!0}finally{Q.p=d,M.T=C,wO(g,s)}}function EO(g,s,a){s=ci(a,s),s=Mf(g.stateNode,s,2),g=go(g,s,2),g!==null&&(eA(g,2),Ki(g))}function dt(g,s,a){if(g.tag===3)EO(g,g,a);else for(;s!==null;){if(s.tag===3){EO(s,g,a);break}else if(s.tag===1){var C=s.stateNode;if(typeof s.type.getDerivedStateFromError=="function"||typeof C.componentDidCatch=="function"&&(Co===null||!Co.has(C))){g=ci(a,g),a=ST(2),C=go(s,a,2),C!==null&&(TT(a,C,s,g),eA(C,2),Ki(C));break}}s=s.return}}function ip(g,s,a){var C=g.pingCache;if(C===null){C=g.pingCache=new wge;var d=new Set;C.set(s,d)}else d=C.get(s),d===void 0&&(d=new Set,C.set(s,d));d.has(a)||(Qf=!0,d.add(a),g=Oge.bind(null,g,s,a),s.then(g,g))}function Oge(g,s,a){var C=g.pingCache;C!==null&&C.delete(s),g.pingedLanes|=g.suspendedLanes&a,g.warmLanes&=~a,mt===g&&(qe&a)===a&&(Ft===4||Ft===3&&(qe&62914560)===qe&&300>Ae()-yl?(At&2)===0&&Nr(g,0):Xf|=a,Tr===qe&&(Tr=0)),Ki(g)}function SO(g,s){s===0&&(s=vE()),g=Xo(g,s),g!==null&&(eA(g,s),Ki(g))}function Nge(g){var s=g.memoizedState,a=0;s!==null&&(a=s.retryLane),SO(g,a)}function Dge(g,s){var a=0;switch(g.tag){case 31:case 13:var C=g.stateNode,d=g.memoizedState;d!==null&&(a=d.retryLane);break;case 19:C=g.stateNode;break;case 22:C=g.stateNode._retryCache;break;default:throw Error(i(314))}C!==null&&C.delete(s),SO(g,a)}function kge(g,s){return _e(g,s)}var Nl=null,kr=null,gp=!1,Dl=!1,op=!1,co=0;function Ki(g){g!==kr&&g.next===null&&(kr===null?Nl=kr=g:kr=kr.next=g),Dl=!0,gp||(gp=!0,Rge())}function zA(g,s){if(!op&&Dl){op=!0;do for(var a=!1,C=Nl;C!==null;){if(g!==0){var d=C.pendingLanes;if(d===0)var u=0;else{var b=C.suspendedLanes,w=C.pingedLanes;u=(1<<31-Qn(42|g)+1)-1,u&=d&~(b&~w),u=u&201326741?u&201326741|1:u?u|2:0}u!==0&&(a=!0,DO(C,u))}else u=qe,u=zI(C,C===mt?u:0,C.cancelPendingCommit!==null||C.timeoutHandle!==-1),(u&3)===0||Ja(C,u)||(a=!0,DO(C,u));C=C.next}while(a);op=!1}}function Mge(){TO()}function TO(){Dl=gp=!1;var g=0;co!==0&&Vge()&&(g=co);for(var s=Ae(),a=null,C=Nl;C!==null;){var d=C.next,u=OO(C,s);u===0?(C.next=null,a===null?Nl=d:a.next=d,d===null&&(kr=a)):(a=C,(g!==0||(u&3)!==0)&&(Dl=!0)),C=d}An!==0&&An!==5||zA(g),co!==0&&(co=0)}function OO(g,s){for(var a=g.suspendedLanes,C=g.pingedLanes,d=g.expirationTimes,u=g.pendingLanes&-62914561;0w)break;var $=N.transferSize,te=N.initiatorType;$&&BO(te)&&(N=N.responseEnd,b+=$*(N"u"?null:document;function XO(g,s,a){var C=Mr;if(C&&typeof s=="string"&&s){var d=Ii(s);d='link[rel="'+g+'"][href="'+d+'"]',typeof a=="string"&&(d+='[crossorigin="'+a+'"]'),QO.has(d)||(QO.add(d),g={rel:g,crossOrigin:a,href:s},C.querySelector(d)===null&&(s=C.createElement("link"),wn(s,"link",g),cn(s),C.head.appendChild(s)))}}function qge(g){Sg.D(g),XO("dns-prefetch",g,null)}function Jge(g,s){Sg.C(g,s),XO("preconnect",g,s)}function eoe(g,s,a){Sg.L(g,s,a);var C=Mr;if(C&&g&&s){var d='link[rel="preload"][as="'+Ii(s)+'"]';s==="image"&&a&&a.imageSrcSet?(d+='[imagesrcset="'+Ii(a.imageSrcSet)+'"]',typeof a.imageSizes=="string"&&(d+='[imagesizes="'+Ii(a.imageSizes)+'"]')):d+='[href="'+Ii(g)+'"]';var u=d;switch(s){case"style":u=Rr(g);break;case"script":u=zr(g)}mi.has(u)||(g=p({rel:"preload",href:s==="image"&&a&&a.imageSrcSet?void 0:g,as:s},a),mi.set(u,g),C.querySelector(d)!==null||s==="style"&&C.querySelector(BA(u))||s==="script"&&C.querySelector(ZA(u))||(s=C.createElement("link"),wn(s,"link",g),cn(s),C.head.appendChild(s)))}}function toe(g,s){Sg.m(g,s);var a=Mr;if(a&&g){var C=s&&typeof s.as=="string"?s.as:"script",d='link[rel="modulepreload"][as="'+Ii(C)+'"][href="'+Ii(g)+'"]',u=d;switch(C){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":u=zr(g)}if(!mi.has(u)&&(g=p({rel:"modulepreload",href:g},s),mi.set(u,g),a.querySelector(d)===null)){switch(C){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(a.querySelector(ZA(u)))return}C=a.createElement("link"),wn(C,"link",g),cn(C),a.head.appendChild(C)}}}function noe(g,s,a){Sg.S(g,s,a);var C=Mr;if(C&&g){var d=tr(C).hoistableStyles,u=Rr(g);s=s||"default";var b=d.get(u);if(!b){var w={loading:0,preload:null};if(b=C.querySelector(BA(u)))w.loading=5;else{g=p({rel:"stylesheet",href:g,"data-precedence":s},a),(a=mi.get(u))&&bp(g,a);var N=b=C.createElement("link");cn(N),wn(N,"link",g),N._p=new Promise(function(L,$){N.onload=L,N.onerror=$}),N.addEventListener("load",function(){w.loading|=1}),N.addEventListener("error",function(){w.loading|=2}),w.loading|=4,_l(b,s,C)}b={type:"stylesheet",instance:b,count:1,state:w},d.set(u,b)}}}function ioe(g,s){Sg.X(g,s);var a=Mr;if(a&&g){var C=tr(a).hoistableScripts,d=zr(g),u=C.get(d);u||(u=a.querySelector(ZA(d)),u||(g=p({src:g,async:!0},s),(s=mi.get(d))&&yp(g,s),u=a.createElement("script"),cn(u),wn(u,"link",g),a.head.appendChild(u)),u={type:"script",instance:u,count:1,state:null},C.set(d,u))}}function goe(g,s){Sg.M(g,s);var a=Mr;if(a&&g){var C=tr(a).hoistableScripts,d=zr(g),u=C.get(d);u||(u=a.querySelector(ZA(d)),u||(g=p({src:g,async:!0,type:"module"},s),(s=mi.get(d))&&yp(g,s),u=a.createElement("script"),cn(u),wn(u,"link",g),a.head.appendChild(u)),u={type:"script",instance:u,count:1,state:null},C.set(d,u))}}function $O(g,s,a,C){var d=(d=me.current)?zl(d):null;if(!d)throw Error(i(446));switch(g){case"meta":case"title":return null;case"style":return typeof a.precedence=="string"&&typeof a.href=="string"?(s=Rr(a.href),a=tr(d).hoistableStyles,C=a.get(s),C||(C={type:"style",instance:null,count:0,state:null},a.set(s,C)),C):{type:"void",instance:null,count:0,state:null};case"link":if(a.rel==="stylesheet"&&typeof a.href=="string"&&typeof a.precedence=="string"){g=Rr(a.href);var u=tr(d).hoistableStyles,b=u.get(g);if(b||(d=d.ownerDocument||d,b={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},u.set(g,b),(u=d.querySelector(BA(g)))&&!u._p&&(b.instance=u,b.state.loading=5),mi.has(g)||(a={rel:"preload",as:"style",href:a.href,crossOrigin:a.crossOrigin,integrity:a.integrity,media:a.media,hrefLang:a.hrefLang,referrerPolicy:a.referrerPolicy},mi.set(g,a),u||ooe(d,g,a,b.state))),s&&C===null)throw Error(i(528,""));return b}if(s&&C!==null)throw Error(i(529,""));return null;case"script":return s=a.async,a=a.src,typeof a=="string"&&s&&typeof s!="function"&&typeof s!="symbol"?(s=zr(a),a=tr(d).hoistableScripts,C=a.get(s),C||(C={type:"script",instance:null,count:0,state:null},a.set(s,C)),C):{type:"void",instance:null,count:0,state:null};default:throw Error(i(444,g))}}function Rr(g){return'href="'+Ii(g)+'"'}function BA(g){return'link[rel="stylesheet"]['+g+"]"}function qO(g){return p({},g,{"data-precedence":g.precedence,precedence:null})}function ooe(g,s,a,C){g.querySelector('link[rel="preload"][as="style"]['+s+"]")?C.loading=1:(s=g.createElement("link"),C.preload=s,s.addEventListener("load",function(){return C.loading|=1}),s.addEventListener("error",function(){return C.loading|=2}),wn(s,"link",a),cn(s),g.head.appendChild(s))}function zr(g){return'[src="'+Ii(g)+'"]'}function ZA(g){return"script[async]"+g}function JO(g,s,a){if(s.count++,s.instance===null)switch(s.type){case"style":var C=g.querySelector('style[data-href~="'+Ii(a.href)+'"]');if(C)return s.instance=C,cn(C),C;var d=p({},a,{"data-href":a.href,"data-precedence":a.precedence,href:null,precedence:null});return C=(g.ownerDocument||g).createElement("style"),cn(C),wn(C,"style",d),_l(C,a.precedence,g),s.instance=C;case"stylesheet":d=Rr(a.href);var u=g.querySelector(BA(d));if(u)return s.state.loading|=4,s.instance=u,cn(u),u;C=qO(a),(d=mi.get(d))&&bp(C,d),u=(g.ownerDocument||g).createElement("link"),cn(u);var b=u;return b._p=new Promise(function(w,N){b.onload=w,b.onerror=N}),wn(u,"link",C),s.state.loading|=4,_l(u,a.precedence,g),s.instance=u;case"script":return u=zr(a.src),(d=g.querySelector(ZA(u)))?(s.instance=d,cn(d),d):(C=a,(d=mi.get(u))&&(C=p({},a),yp(C,d)),g=g.ownerDocument||g,d=g.createElement("script"),cn(d),wn(d,"link",C),g.head.appendChild(d),s.instance=d);case"void":return null;default:throw Error(i(443,s.type))}else s.type==="stylesheet"&&(s.state.loading&4)===0&&(C=s.instance,s.state.loading|=4,_l(C,a.precedence,g));return s.instance}function _l(g,s,a){for(var C=a.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),d=C.length?C[C.length-1]:null,u=d,b=0;b title"):null)}function soe(g,s,a){if(a===1||s.itemProp!=null)return!1;switch(g){case"meta":case"title":return!0;case"style":if(typeof s.precedence!="string"||typeof s.href!="string"||s.href==="")break;return!0;case"link":if(typeof s.rel!="string"||typeof s.href!="string"||s.href===""||s.onLoad||s.onError)break;return s.rel==="stylesheet"?(g=s.disabled,typeof s.precedence=="string"&&g==null):!0;case"script":if(s.async&&typeof s.async!="function"&&typeof s.async!="symbol"&&!s.onLoad&&!s.onError&&s.src&&typeof s.src=="string")return!0}return!1}function nN(g){return!(g.type==="stylesheet"&&(g.state.loading&3)===0)}function roe(g,s,a,C){if(a.type==="stylesheet"&&(typeof C.media!="string"||matchMedia(C.media).matches!==!1)&&(a.state.loading&4)===0){if(a.instance===null){var d=Rr(C.href),u=s.querySelector(BA(d));if(u){s=u._p,s!==null&&typeof s=="object"&&typeof s.then=="function"&&(g.count++,g=Pl.bind(g),s.then(g,g)),a.state.loading|=4,a.instance=u,cn(u);return}u=s.ownerDocument||s,C=qO(C),(d=mi.get(d))&&bp(C,d),u=u.createElement("link"),cn(u);var b=u;b._p=new Promise(function(w,N){b.onload=w,b.onerror=N}),wn(u,"link",C),a.instance=u}g.stylesheets===null&&(g.stylesheets=new Map),g.stylesheets.set(a,s),(s=a.state.preload)&&(a.state.loading&3)===0&&(g.count++,a=Pl.bind(g),s.addEventListener("load",a),s.addEventListener("error",a))}}var wp=0;function aoe(g,s){return g.stylesheets&&g.count===0&&Zl(g,g.stylesheets),0wp?50:800)+s);return g.unsuspend=a,function(){g.unsuspend=null,clearTimeout(C),clearTimeout(d)}}:null}function Pl(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Zl(this,this.stylesheets);else if(this.unsuspend){var g=this.unsuspend;this.unsuspend=null,g()}}}var Bl=null;function Zl(g,s){g.stylesheets=null,g.unsuspend!==null&&(g.count++,Bl=new Map,s.forEach(Aoe,g),Bl=null,Pl.call(g))}function Aoe(g,s){if(!(s.state.loading&4)){var a=Bl.get(g);if(a)var C=a.get(null);else{a=new Map,Bl.set(g,a);for(var d=g.querySelectorAll("link[data-precedence],style[data-precedence]"),u=0;u"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}return n(),Wl.exports=EN(),Wl.exports}var TN=SN(),Lp;function J(n,e,t){function i(I,l){if(I._zod||Object.defineProperty(I,"_zod",{value:{def:l,constr:A,traits:new Set},enumerable:!1}),I._zod.traits.has(n))return;I._zod.traits.add(n),e(I,l);const c=A.prototype,h=Object.keys(c);for(let p=0;pt?.Parent&&I instanceof t.Parent?!0:I?._zod?.traits?.has(n)}),Object.defineProperty(A,"name",{value:n}),A}class As extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}}class Gp extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`),this.name="ZodEncodeError"}}(Lp=globalThis).__zod_globalConfig??(Lp.__zod_globalConfig={});const ec=globalThis.__zod_globalConfig;function Wi(n){return ec}function Fp(n){const e=Object.values(n).filter(i=>typeof i=="number");return Object.entries(n).filter(([i,o])=>e.indexOf(+i)===-1).map(([i,o])=>o)}function tc(n,e){return typeof e=="bigint"?e.toString():e}function UA(n){return{get value(){{const e=n();return Object.defineProperty(this,"value",{value:e}),e}}}}function nc(n){return n==null}function ic(n){const e=n.startsWith("^")?1:0,t=n.endsWith("$")?n.length-1:n.length;return n.slice(e,t)}function ON(n,e){const t=n/e,i=Math.round(t),o=Number.EPSILON*Math.max(Math.abs(t),1);return Math.abs(t-i){};function Br(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)}const DN=UA(()=>{if(ec.jitless||typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{const n=Function;return new n(""),!0}catch{return!1}});function Cs(n){if(Br(n)===!1)return!1;const e=n.constructor;if(e===void 0||typeof e!="function")return!0;const t=e.prototype;return!(Br(t)===!1||Object.prototype.hasOwnProperty.call(t,"isPrototypeOf")===!1)}function Hp(n){return Cs(n)?{...n}:Array.isArray(n)?[...n]:n instanceof Map?new Map(n):n instanceof Set?new Set(n):n}const kN=new Set(["string","number","symbol"]);function Is(n){return n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Og(n,e,t){const i=new n._zod.constr(e??n._zod.def);return(!e||t?.parent)&&(i._zod.parent=n),i}function ye(n){const e=n;if(!e)return{};if(typeof e=="string")return{error:()=>e};if(e?.message!==void 0){if(e?.error!==void 0)throw new Error("Cannot specify both `message` and `error` params");e.error=e.message}return delete e.message,typeof e.error=="string"?{...e,error:()=>e.error}:e}function MN(n){return Object.keys(n).filter(e=>n[e]._zod.optin==="optional"&&n[e]._zod.optout==="optional")}const RN={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function zN(n,e){const t=n._zod.def,i=t.checks;if(i&&i.length>0)throw new Error(".pick() cannot be used on object schemas containing refinements");const r=Tg(n._zod.def,{get shape(){const A={};for(const I in e){if(!(I in t.shape))throw new Error(`Unrecognized key: "${I}"`);e[I]&&(A[I]=t.shape[I])}return bo(this,"shape",A),A},checks:[]});return Og(n,r)}function _N(n,e){const t=n._zod.def,i=t.checks;if(i&&i.length>0)throw new Error(".omit() cannot be used on object schemas containing refinements");const r=Tg(n._zod.def,{get shape(){const A={...n._zod.def.shape};for(const I in e){if(!(I in t.shape))throw new Error(`Unrecognized key: "${I}"`);e[I]&&delete A[I]}return bo(this,"shape",A),A},checks:[]});return Og(n,r)}function jN(n,e){if(!Cs(e))throw new Error("Invalid input to extend: expected a plain object");const t=n._zod.def.checks;if(t&&t.length>0){const r=n._zod.def.shape;for(const A in e)if(Object.getOwnPropertyDescriptor(r,A)!==void 0)throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}const o=Tg(n._zod.def,{get shape(){const r={...n._zod.def.shape,...e};return bo(this,"shape",r),r}});return Og(n,o)}function PN(n,e){if(!Cs(e))throw new Error("Invalid input to safeExtend: expected a plain object");const t=Tg(n._zod.def,{get shape(){const i={...n._zod.def.shape,...e};return bo(this,"shape",i),i}});return Og(n,t)}function BN(n,e){if(n._zod.def.checks?.length)throw new Error(".merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.");const t=Tg(n._zod.def,{get shape(){const i={...n._zod.def.shape,...e._zod.def.shape};return bo(this,"shape",i),i},get catchall(){return e._zod.def.catchall},checks:e._zod.def.checks??[]});return Og(n,t)}function ZN(n,e,t){const o=e._zod.def.checks;if(o&&o.length>0)throw new Error(".partial() cannot be used on object schemas containing refinements");const A=Tg(e._zod.def,{get shape(){const I=e._zod.def.shape,l={...I};if(t)for(const c in t){if(!(c in I))throw new Error(`Unrecognized key: "${c}"`);t[c]&&(l[c]=n?new n({type:"optional",innerType:I[c]}):I[c])}else for(const c in I)l[c]=n?new n({type:"optional",innerType:I[c]}):I[c];return bo(this,"shape",l),l},checks:[]});return Og(e,A)}function LN(n,e,t){const i=Tg(e._zod.def,{get shape(){const o=e._zod.def.shape,r={...o};if(t)for(const A in t){if(!(A in r))throw new Error(`Unrecognized key: "${A}"`);t[A]&&(r[A]=new n({type:"nonoptional",innerType:o[A]}))}else for(const A in o)r[A]=new n({type:"nonoptional",innerType:o[A]});return bo(this,"shape",r),r}});return Og(e,i)}function ls(n,e=0){if(n.aborted===!0)return!0;for(let t=e;t{var i;return(i=t).path??(i.path=[]),t.path.unshift(n),t})}function YA(n){return typeof n=="string"?n:n?.message}function Qi(n,e,t){const i=n.message?n.message:YA(n.inst?._zod.def?.error?.(n))??YA(e?.error?.(n))??YA(t.customError?.(n))??YA(t.localeError?.(n))??"Invalid input",{inst:o,continue:r,input:A,...I}=n;return I.path??(I.path=[]),I.message=i,e?.reportInput&&(I.input=A),I}function gc(n){return Array.isArray(n)?"array":typeof n=="string"?"string":"unknown"}function Zr(...n){const[e,t,i]=n;return typeof e=="string"?{message:e,code:"custom",input:t,inst:i}:{...e}}const Kp=(n,e)=>{n.name="$ZodError",Object.defineProperty(n,"_zod",{value:n._zod,enumerable:!1}),Object.defineProperty(n,"issues",{value:e,enumerable:!1}),n.message=JSON.stringify(e,tc,2),Object.defineProperty(n,"toString",{value:()=>n.message,enumerable:!1})},Wp=J("$ZodError",Kp),Qp=J("$ZodError",Kp,{Parent:Error});function FN(n,e=t=>t.message){const t={},i=[];for(const o of n.issues)o.path.length>0?(t[o.path[0]]=t[o.path[0]]||[],t[o.path[0]].push(e(o))):i.push(e(o));return{formErrors:i,fieldErrors:t}}function VN(n,e=t=>t.message){const t={_errors:[]},i=(o,r=[])=>{for(const A of o.issues)if(A.code==="invalid_union"&&A.errors.length)A.errors.map(I=>i({issues:I},[...r,...A.path]));else if(A.code==="invalid_key")i({issues:A.issues},[...r,...A.path]);else if(A.code==="invalid_element")i({issues:A.issues},[...r,...A.path]);else{const I=[...r,...A.path];if(I.length===0)t._errors.push(e(A));else{let l=t,c=0;for(;c(e,t,i,o)=>{const r=i?{...i,async:!1}:{async:!1},A=e._zod.run({value:t,issues:[]},r);if(A instanceof Promise)throw new As;if(A.issues.length){const I=new(o?.Err??n)(A.issues.map(l=>Qi(l,r,Wi())));throw Yp(I,o?.callee),I}return A.value},sc=n=>async(e,t,i,o)=>{const r=i?{...i,async:!0}:{async:!0};let A=e._zod.run({value:t,issues:[]},r);if(A instanceof Promise&&(A=await A),A.issues.length){const I=new(o?.Err??n)(A.issues.map(l=>Qi(l,r,Wi())));throw Yp(I,o?.callee),I}return A.value},HA=n=>(e,t,i)=>{const o=i?{...i,async:!1}:{async:!1},r=e._zod.run({value:t,issues:[]},o);if(r instanceof Promise)throw new As;return r.issues.length?{success:!1,error:new(n??Wp)(r.issues.map(A=>Qi(A,o,Wi())))}:{success:!0,data:r.value}},UN=HA(Qp),KA=n=>async(e,t,i)=>{const o=i?{...i,async:!0}:{async:!0};let r=e._zod.run({value:t,issues:[]},o);return r instanceof Promise&&(r=await r),r.issues.length?{success:!1,error:new n(r.issues.map(A=>Qi(A,o,Wi())))}:{success:!0,data:r.value}},YN=KA(Qp),HN=n=>(e,t,i)=>{const o=i?{...i,direction:"backward"}:{direction:"backward"};return oc(n)(e,t,o)},KN=n=>(e,t,i)=>oc(n)(e,t,i),WN=n=>async(e,t,i)=>{const o=i?{...i,direction:"backward"}:{direction:"backward"};return sc(n)(e,t,o)},QN=n=>async(e,t,i)=>sc(n)(e,t,i),XN=n=>(e,t,i)=>{const o=i?{...i,direction:"backward"}:{direction:"backward"};return HA(n)(e,t,o)},$N=n=>(e,t,i)=>HA(n)(e,t,i),qN=n=>async(e,t,i)=>{const o=i?{...i,direction:"backward"}:{direction:"backward"};return KA(n)(e,t,o)},JN=n=>async(e,t,i)=>KA(n)(e,t,i),eD=/^[cC][0-9a-z]{6,}$/,tD=/^[0-9a-z]+$/,nD=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,iD=/^[0-9a-vA-V]{20}$/,gD=/^[A-Za-z0-9]{27}$/,oD=/^[a-zA-Z0-9_-]{21}$/,sD=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,rD=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,Xp=n=>n?new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${n}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,aD=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,AD="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";function CD(){return new RegExp(AD,"u")}const ID=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,lD=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,cD=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,dD=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,uD=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,$p=/^[A-Za-z0-9_-]*$/,hD=/^https?$/,fD=/^\+[1-9]\d{6,14}$/,qp="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",pD=new RegExp(`^${qp}$`);function Jp(n){const e="(?:[01]\\d|2[0-3]):[0-5]\\d";return typeof n.precision=="number"?n.precision===-1?`${e}`:n.precision===0?`${e}:[0-5]\\d`:`${e}:[0-5]\\d\\.\\d{${n.precision}}`:`${e}(?::[0-5]\\d(?:\\.\\d+)?)?`}function mD(n){return new RegExp(`^${Jp(n)}$`)}function vD(n){const e=Jp({precision:n.precision}),t=["Z"];n.local&&t.push(""),n.offset&&t.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");const i=`${e}(?:${t.join("|")})`;return new RegExp(`^${qp}T(?:${i})$`)}const bD=n=>{const e=n?`[\\s\\S]{${n?.minimum??0},${n?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${e}$`)},yD=/^-?\d+$/,em=/^-?\d+(?:\.\d+)?$/,wD=/^(?:true|false)$/i,xD=/^[^A-Z]*$/,ED=/^[^a-z]*$/,_n=J("$ZodCheck",(n,e)=>{var t;n._zod??(n._zod={}),n._zod.def=e,(t=n._zod).onattach??(t.onattach=[])}),tm={number:"number",bigint:"bigint",object:"date"},nm=J("$ZodCheckLessThan",(n,e)=>{_n.init(n,e);const t=tm[typeof e.value];n._zod.onattach.push(i=>{const o=i._zod.bag,r=(e.inclusive?o.maximum:o.exclusiveMaximum)??Number.POSITIVE_INFINITY;e.value{(e.inclusive?i.value<=e.value:i.value{_n.init(n,e);const t=tm[typeof e.value];n._zod.onattach.push(i=>{const o=i._zod.bag,r=(e.inclusive?o.minimum:o.exclusiveMinimum)??Number.NEGATIVE_INFINITY;e.value>r&&(e.inclusive?o.minimum=e.value:o.exclusiveMinimum=e.value)}),n._zod.check=i=>{(e.inclusive?i.value>=e.value:i.value>e.value)||i.issues.push({origin:t,code:"too_small",minimum:typeof e.value=="object"?e.value.getTime():e.value,input:i.value,inclusive:e.inclusive,inst:n,continue:!e.abort})}}),SD=J("$ZodCheckMultipleOf",(n,e)=>{_n.init(n,e),n._zod.onattach.push(t=>{var i;(i=t._zod.bag).multipleOf??(i.multipleOf=e.value)}),n._zod.check=t=>{if(typeof t.value!=typeof e.value)throw new Error("Cannot mix number and bigint in multiple_of check.");(typeof t.value=="bigint"?t.value%e.value===BigInt(0):ON(t.value,e.value)===0)||t.issues.push({origin:typeof t.value,code:"not_multiple_of",divisor:e.value,input:t.value,inst:n,continue:!e.abort})}}),TD=J("$ZodCheckNumberFormat",(n,e)=>{_n.init(n,e),e.format=e.format||"float64";const t=e.format?.includes("int"),i=t?"int":"number",[o,r]=RN[e.format];n._zod.onattach.push(A=>{const I=A._zod.bag;I.format=e.format,I.minimum=o,I.maximum=r,t&&(I.pattern=yD)}),n._zod.check=A=>{const I=A.value;if(t){if(!Number.isInteger(I)){A.issues.push({expected:i,format:e.format,code:"invalid_type",continue:!1,input:I,inst:n});return}if(!Number.isSafeInteger(I)){I>0?A.issues.push({input:I,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:n,origin:i,inclusive:!0,continue:!e.abort}):A.issues.push({input:I,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:n,origin:i,inclusive:!0,continue:!e.abort});return}}Ir&&A.issues.push({origin:"number",input:I,code:"too_big",maximum:r,inclusive:!0,inst:n,continue:!e.abort})}}),OD=J("$ZodCheckMaxLength",(n,e)=>{var t;_n.init(n,e),(t=n._zod.def).when??(t.when=i=>{const o=i.value;return!nc(o)&&o.length!==void 0}),n._zod.onattach.push(i=>{const o=i._zod.bag.maximum??Number.POSITIVE_INFINITY;e.maximum{const o=i.value;if(o.length<=e.maximum)return;const A=gc(o);i.issues.push({origin:A,code:"too_big",maximum:e.maximum,inclusive:!0,input:o,inst:n,continue:!e.abort})}}),ND=J("$ZodCheckMinLength",(n,e)=>{var t;_n.init(n,e),(t=n._zod.def).when??(t.when=i=>{const o=i.value;return!nc(o)&&o.length!==void 0}),n._zod.onattach.push(i=>{const o=i._zod.bag.minimum??Number.NEGATIVE_INFINITY;e.minimum>o&&(i._zod.bag.minimum=e.minimum)}),n._zod.check=i=>{const o=i.value;if(o.length>=e.minimum)return;const A=gc(o);i.issues.push({origin:A,code:"too_small",minimum:e.minimum,inclusive:!0,input:o,inst:n,continue:!e.abort})}}),DD=J("$ZodCheckLengthEquals",(n,e)=>{var t;_n.init(n,e),(t=n._zod.def).when??(t.when=i=>{const o=i.value;return!nc(o)&&o.length!==void 0}),n._zod.onattach.push(i=>{const o=i._zod.bag;o.minimum=e.length,o.maximum=e.length,o.length=e.length}),n._zod.check=i=>{const o=i.value,r=o.length;if(r===e.length)return;const A=gc(o),I=r>e.length;i.issues.push({origin:A,...I?{code:"too_big",maximum:e.length}:{code:"too_small",minimum:e.length},inclusive:!0,exact:!0,input:i.value,inst:n,continue:!e.abort})}}),WA=J("$ZodCheckStringFormat",(n,e)=>{var t,i;_n.init(n,e),n._zod.onattach.push(o=>{const r=o._zod.bag;r.format=e.format,e.pattern&&(r.patterns??(r.patterns=new Set),r.patterns.add(e.pattern))}),e.pattern?(t=n._zod).check??(t.check=o=>{e.pattern.lastIndex=0,!e.pattern.test(o.value)&&o.issues.push({origin:"string",code:"invalid_format",format:e.format,input:o.value,...e.pattern?{pattern:e.pattern.toString()}:{},inst:n,continue:!e.abort})}):(i=n._zod).check??(i.check=()=>{})}),kD=J("$ZodCheckRegex",(n,e)=>{WA.init(n,e),n._zod.check=t=>{e.pattern.lastIndex=0,!e.pattern.test(t.value)&&t.issues.push({origin:"string",code:"invalid_format",format:"regex",input:t.value,pattern:e.pattern.toString(),inst:n,continue:!e.abort})}}),MD=J("$ZodCheckLowerCase",(n,e)=>{e.pattern??(e.pattern=xD),WA.init(n,e)}),RD=J("$ZodCheckUpperCase",(n,e)=>{e.pattern??(e.pattern=ED),WA.init(n,e)}),zD=J("$ZodCheckIncludes",(n,e)=>{_n.init(n,e);const t=Is(e.includes),i=new RegExp(typeof e.position=="number"?`^.{${e.position}}${t}`:t);e.pattern=i,n._zod.onattach.push(o=>{const r=o._zod.bag;r.patterns??(r.patterns=new Set),r.patterns.add(i)}),n._zod.check=o=>{o.value.includes(e.includes,e.position)||o.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:e.includes,input:o.value,inst:n,continue:!e.abort})}}),_D=J("$ZodCheckStartsWith",(n,e)=>{_n.init(n,e);const t=new RegExp(`^${Is(e.prefix)}.*`);e.pattern??(e.pattern=t),n._zod.onattach.push(i=>{const o=i._zod.bag;o.patterns??(o.patterns=new Set),o.patterns.add(t)}),n._zod.check=i=>{i.value.startsWith(e.prefix)||i.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:e.prefix,input:i.value,inst:n,continue:!e.abort})}}),jD=J("$ZodCheckEndsWith",(n,e)=>{_n.init(n,e);const t=new RegExp(`.*${Is(e.suffix)}$`);e.pattern??(e.pattern=t),n._zod.onattach.push(i=>{const o=i._zod.bag;o.patterns??(o.patterns=new Set),o.patterns.add(t)}),n._zod.check=i=>{i.value.endsWith(e.suffix)||i.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:e.suffix,input:i.value,inst:n,continue:!e.abort})}}),PD=J("$ZodCheckOverwrite",(n,e)=>{_n.init(n,e),n._zod.check=t=>{t.value=e.tx(t.value)}});class BD{constructor(e=[]){this.content=[],this.indent=0,this&&(this.args=e)}indented(e){this.indent+=1,e(this),this.indent-=1}write(e){if(typeof e=="function"){e(this,{execution:"sync"}),e(this,{execution:"async"});return}const i=e.split(` `).filter(A=>A),o=Math.min(...i.map(A=>A.length-A.trimStart().length)),r=i.map(A=>A.slice(o)).map(A=>" ".repeat(this.indent*2)+A);for(const A of r)this.content.push(A)}compile(){const e=Function,t=this?.args,o=[...(this?.content??[""]).map(r=>` ${r}`)];return new e(...t,o.join(` -`))}}const ED={major:4,minor:4,patch:3},Rt=q("$ZodType",(n,e)=>{var t;n??(n={}),n._zod.def=e,n._zod.bag=n._zod.bag||{},n._zod.version=ED;const i=[...n._zod.def.checks??[]];n._zod.traits.has("$ZodCheck")&&i.unshift(n);for(const o of i)for(const r of o._zod.onattach)r(n);if(i.length===0)(t=n._zod).deferred??(t.deferred=[]),n._zod.deferred?.push(()=>{n._zod.run=n._zod.parse});else{const o=(A,I,l)=>{let c=Cs(A),h;for(const p of I){if(p._zod.def.when){if(TN(A)||!p._zod.def.when(A))continue}else if(c)continue;const m=A.issues.length,b=p._zod.check(A);if(b instanceof Promise&&l?.async===!1)throw new rs;if(h||b instanceof Promise)h=(h??Promise.resolve()).then(async()=>{await b,A.issues.length!==m&&(c||(c=Cs(A,m)))});else{if(A.issues.length===m)continue;c||(c=Cs(A,m))}}return h?h.then(()=>A):A},r=(A,I,l)=>{if(Cs(A))return A.aborted=!0,A;const c=o(I,i,l);if(c instanceof Promise){if(l.async===!1)throw new rs;return c.then(h=>n._zod.parse(h,l))}return n._zod.parse(c,l)};n._zod.run=(A,I)=>{if(I.skipChecks)return n._zod.parse(A,I);if(I.direction==="backward"){const c=n._zod.parse({value:A.value,issues:[]},{...I,skipChecks:!0});return c instanceof Promise?c.then(h=>r(h,A,I)):r(c,A,I)}const l=n._zod.parse(A,I);if(l instanceof Promise){if(I.async===!1)throw new rs;return l.then(c=>o(c,i,I))}return o(l,i,I)}}It(n,"~standard",()=>({validate:o=>{try{const r=DN(n,o);return r.success?{value:r.data}:{issues:r.error?.issues}}catch{return MN(n,o).then(A=>A.success?{value:A.data}:{issues:A.error?.issues})}},vendor:"zod",version:1}))}),nc=q("$ZodString",(n,e)=>{Rt.init(n,e),n._zod.pattern=[...n?._zod.bag?.patterns??[]].pop()??rD(n._zod.bag),n._zod.parse=(t,i)=>{if(e.coerce)try{t.value=String(t.value)}catch{}return typeof t.value=="string"||t.issues.push({expected:"string",code:"invalid_type",input:t.value,inst:n}),t}}),Ot=q("$ZodStringFormat",(n,e)=>{FA.init(n,e),nc.init(n,e)}),SD=q("$ZodGUID",(n,e)=>{e.pattern??(e.pattern=KN),Ot.init(n,e)}),TD=q("$ZodUUID",(n,e)=>{if(e.version){const i={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[e.version];if(i===void 0)throw new Error(`Invalid UUID version: "${e.version}"`);e.pattern??(e.pattern=Up(i))}else e.pattern??(e.pattern=Up());Ot.init(n,e)}),OD=q("$ZodEmail",(n,e)=>{e.pattern??(e.pattern=WN),Ot.init(n,e)}),ND=q("$ZodURL",(n,e)=>{Ot.init(n,e),n._zod.check=t=>{try{const i=t.value.trim();if(!e.normalize&&e.protocol?.source===nD.source&&!/^https?:\/\//i.test(i)){t.issues.push({code:"invalid_format",format:"url",note:"Invalid URL format",input:t.value,inst:n,continue:!e.abort});return}const o=new URL(i);e.hostname&&(e.hostname.lastIndex=0,e.hostname.test(o.hostname)||t.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:e.hostname.source,input:t.value,inst:n,continue:!e.abort})),e.protocol&&(e.protocol.lastIndex=0,e.protocol.test(o.protocol.endsWith(":")?o.protocol.slice(0,-1):o.protocol)||t.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:e.protocol.source,input:t.value,inst:n,continue:!e.abort})),e.normalize?t.value=o.href:t.value=i;return}catch{t.issues.push({code:"invalid_format",format:"url",input:t.value,inst:n,continue:!e.abort})}}}),DD=q("$ZodEmoji",(n,e)=>{e.pattern??(e.pattern=XN()),Ot.init(n,e)}),MD=q("$ZodNanoID",(n,e)=>{e.pattern??(e.pattern=YN),Ot.init(n,e)}),RD=q("$ZodCUID",(n,e)=>{e.pattern??(e.pattern=LN),Ot.init(n,e)}),kD=q("$ZodCUID2",(n,e)=>{e.pattern??(e.pattern=GN),Ot.init(n,e)}),zD=q("$ZodULID",(n,e)=>{e.pattern??(e.pattern=FN),Ot.init(n,e)}),_D=q("$ZodXID",(n,e)=>{e.pattern??(e.pattern=VN),Ot.init(n,e)}),jD=q("$ZodKSUID",(n,e)=>{e.pattern??(e.pattern=UN),Ot.init(n,e)}),ZD=q("$ZodISODateTime",(n,e)=>{e.pattern??(e.pattern=sD(e)),Ot.init(n,e)}),PD=q("$ZodISODate",(n,e)=>{e.pattern??(e.pattern=gD),Ot.init(n,e)}),BD=q("$ZodISOTime",(n,e)=>{e.pattern??(e.pattern=oD(e)),Ot.init(n,e)}),LD=q("$ZodISODuration",(n,e)=>{e.pattern??(e.pattern=HN),Ot.init(n,e)}),GD=q("$ZodIPv4",(n,e)=>{e.pattern??(e.pattern=$N),Ot.init(n,e),n._zod.bag.format="ipv4"}),FD=q("$ZodIPv6",(n,e)=>{e.pattern??(e.pattern=qN),Ot.init(n,e),n._zod.bag.format="ipv6",n._zod.check=t=>{try{new URL(`http://[${t.value}]`)}catch{t.issues.push({code:"invalid_format",format:"ipv6",input:t.value,inst:n,continue:!e.abort})}}}),VD=q("$ZodCIDRv4",(n,e)=>{e.pattern??(e.pattern=JN),Ot.init(n,e)}),UD=q("$ZodCIDRv6",(n,e)=>{e.pattern??(e.pattern=eD),Ot.init(n,e),n._zod.check=t=>{const i=t.value.split("/");try{if(i.length!==2)throw new Error;const[o,r]=i;if(!r)throw new Error;const A=Number(r);if(`${A}`!==r)throw new Error;if(A<0||A>128)throw new Error;new URL(`http://[${o}]`)}catch{t.issues.push({code:"invalid_format",format:"cidrv6",input:t.value,inst:n,continue:!e.abort})}}});function qp(n){if(n==="")return!0;if(/\s/.test(n)||n.length%4!==0)return!1;try{return atob(n),!0}catch{return!1}}const YD=q("$ZodBase64",(n,e)=>{e.pattern??(e.pattern=tD),Ot.init(n,e),n._zod.bag.contentEncoding="base64",n._zod.check=t=>{qp(t.value)||t.issues.push({code:"invalid_format",format:"base64",input:t.value,inst:n,continue:!e.abort})}});function HD(n){if(!Yp.test(n))return!1;const e=n.replace(/[-_]/g,i=>i==="-"?"+":"/"),t=e.padEnd(Math.ceil(e.length/4)*4,"=");return qp(t)}const KD=q("$ZodBase64URL",(n,e)=>{e.pattern??(e.pattern=Yp),Ot.init(n,e),n._zod.bag.contentEncoding="base64url",n._zod.check=t=>{HD(t.value)||t.issues.push({code:"invalid_format",format:"base64url",input:t.value,inst:n,continue:!e.abort})}}),WD=q("$ZodE164",(n,e)=>{e.pattern??(e.pattern=iD),Ot.init(n,e)});function QD(n,e=null){try{const t=n.split(".");if(t.length!==3)return!1;const[i]=t;if(!i)return!1;const o=JSON.parse(atob(i));return!("typ"in o&&o?.typ!=="JWT"||!o.alg||e&&(!("alg"in o)||o.alg!==e))}catch{return!1}}const XD=q("$ZodJWT",(n,e)=>{Ot.init(n,e),n._zod.check=t=>{QD(t.value,e.alg)||t.issues.push({code:"invalid_format",format:"jwt",input:t.value,inst:n,continue:!e.abort})}}),Jp=q("$ZodNumber",(n,e)=>{Rt.init(n,e),n._zod.pattern=n._zod.bag.pattern??Wp,n._zod.parse=(t,i)=>{if(e.coerce)try{t.value=Number(t.value)}catch{}const o=t.value;if(typeof o=="number"&&!Number.isNaN(o)&&Number.isFinite(o))return t;const r=typeof o=="number"?Number.isNaN(o)?"NaN":Number.isFinite(o)?void 0:"Infinity":void 0;return t.issues.push({expected:"number",code:"invalid_type",input:o,inst:n,...r?{received:r}:{}}),t}}),$D=q("$ZodNumberFormat",(n,e)=>{cD.init(n,e),Jp.init(n,e)}),qD=q("$ZodBoolean",(n,e)=>{Rt.init(n,e),n._zod.pattern=AD,n._zod.parse=(t,i)=>{if(e.coerce)try{t.value=!!t.value}catch{}const o=t.value;return typeof o=="boolean"||t.issues.push({expected:"boolean",code:"invalid_type",input:o,inst:n}),t}}),JD=q("$ZodUnknown",(n,e)=>{Rt.init(n,e),n._zod.parse=t=>t}),eM=q("$ZodNever",(n,e)=>{Rt.init(n,e),n._zod.parse=(t,i)=>(t.issues.push({expected:"never",code:"invalid_type",input:t.value,inst:n}),t)});function em(n,e,t){n.issues.length&&e.issues.push(...Is(t,n.issues)),e.value[t]=n.value}const tM=q("$ZodArray",(n,e)=>{Rt.init(n,e),n._zod.parse=(t,i)=>{const o=t.value;if(!Array.isArray(o))return t.issues.push({expected:"array",code:"invalid_type",input:o,inst:n}),t;t.value=Array(o.length);const r=[];for(let A=0;Aem(c,t,A))):em(l,t,A)}return r.length?Promise.all(r).then(()=>t):t}});function VA(n,e,t,i,o,r){const A=t in i;if(n.issues.length){if(o&&r&&!A)return;e.issues.push(...Is(t,n.issues))}if(!A&&!o){n.issues.length||e.issues.push({code:"invalid_type",expected:"nonoptional",input:void 0,path:[t]});return}n.value===void 0?A&&(e.value[t]=void 0):e.value[t]=n.value}function tm(n){const e=Object.keys(n.shape);for(const i of e)if(!n.shape?.[i]?._zod?.traits?.has("$ZodType"))throw new Error(`Invalid element at key "${i}": expected a Zod schema`);const t=pN(n.shape);return{...n,keys:e,keySet:new Set(e),numKeys:e.length,optionalKeys:new Set(t)}}function nm(n,e,t,i,o,r){const A=[],I=o.keySet,l=o.catchall._zod,c=l.def.type,h=l.optin==="optional",p=l.optout==="optional";for(const m in e){if(m==="__proto__"||I.has(m))continue;if(c==="never"){A.push(m);continue}const b=l.run({value:e[m],issues:[]},i);b instanceof Promise?n.push(b.then(w=>VA(w,t,m,e,h,p))):VA(b,t,m,e,h,p)}return A.length&&t.issues.push({code:"unrecognized_keys",keys:A,input:e,inst:r}),n.length?Promise.all(n).then(()=>t):t}const nM=q("$ZodObject",(n,e)=>{if(Rt.init(n,e),!Object.getOwnPropertyDescriptor(e,"shape")?.get){const I=e.shape;Object.defineProperty(e,"shape",{get:()=>{const l={...I};return Object.defineProperty(e,"shape",{value:l}),l}})}const i=PA(()=>tm(e));It(n._zod,"propValues",()=>{const I=e.shape,l={};for(const c in I){const h=I[c]._zod;if(h.values){l[c]??(l[c]=new Set);for(const p of h.values)l[c].add(p)}}return l});const o=_r,r=e.catchall;let A;n._zod.parse=(I,l)=>{A??(A=i.value);const c=I.value;if(!o(c))return I.issues.push({expected:"object",code:"invalid_type",input:c,inst:n}),I;I.value={};const h=[],p=A.shape;for(const m of A.keys){const b=p[m],w=b._zod.optin==="optional",O=b._zod.optout==="optional",x=b._zod.run({value:c[m],issues:[]},l);x instanceof Promise?h.push(x.then(S=>VA(S,I,m,c,w,O))):VA(x,I,m,c,w,O)}return r?nm(h,c,I,l,i.value,n):h.length?Promise.all(h).then(()=>I):I}}),iM=q("$ZodObjectJIT",(n,e)=>{nM.init(n,e);const t=n._zod.parse,i=PA(()=>tm(e)),o=m=>{const b=new xD(["shape","payload","ctx"]),w=i.value,O=_=>{const j=Pp(_);return`shape[${j}]._zod.run({ value: input[${j}], issues: [] }, ctx)`};b.write("const input = payload.value;");const x=Object.create(null);let S=0;for(const _ of w.keys)x[_]=`key_${S++}`;b.write("const newResult = {};");for(const _ of w.keys){const j=x[_],X=Pp(_),ne=m[_],F=ne?._zod?.optin==="optional",V=ne?._zod?.optout==="optional";b.write(`const ${j} = ${O(_)};`),F&&V?b.write(` +`))}}const ZD={major:4,minor:4,patch:3},Mt=J("$ZodType",(n,e)=>{var t;n??(n={}),n._zod.def=e,n._zod.bag=n._zod.bag||{},n._zod.version=ZD;const i=[...n._zod.def.checks??[]];n._zod.traits.has("$ZodCheck")&&i.unshift(n);for(const o of i)for(const r of o._zod.onattach)r(n);if(i.length===0)(t=n._zod).deferred??(t.deferred=[]),n._zod.deferred?.push(()=>{n._zod.run=n._zod.parse});else{const o=(A,I,l)=>{let c=ls(A),h;for(const p of I){if(p._zod.def.when){if(GN(A)||!p._zod.def.when(A))continue}else if(c)continue;const m=A.issues.length,v=p._zod.check(A);if(v instanceof Promise&&l?.async===!1)throw new As;if(h||v instanceof Promise)h=(h??Promise.resolve()).then(async()=>{await v,A.issues.length!==m&&(c||(c=ls(A,m)))});else{if(A.issues.length===m)continue;c||(c=ls(A,m))}}return h?h.then(()=>A):A},r=(A,I,l)=>{if(ls(A))return A.aborted=!0,A;const c=o(I,i,l);if(c instanceof Promise){if(l.async===!1)throw new As;return c.then(h=>n._zod.parse(h,l))}return n._zod.parse(c,l)};n._zod.run=(A,I)=>{if(I.skipChecks)return n._zod.parse(A,I);if(I.direction==="backward"){const c=n._zod.parse({value:A.value,issues:[]},{...I,skipChecks:!0});return c instanceof Promise?c.then(h=>r(h,A,I)):r(c,A,I)}const l=n._zod.parse(A,I);if(l instanceof Promise){if(I.async===!1)throw new As;return l.then(c=>o(c,i,I))}return o(l,i,I)}}It(n,"~standard",()=>({validate:o=>{try{const r=UN(n,o);return r.success?{value:r.data}:{issues:r.error?.issues}}catch{return YN(n,o).then(A=>A.success?{value:A.data}:{issues:A.error?.issues})}},vendor:"zod",version:1}))}),rc=J("$ZodString",(n,e)=>{Mt.init(n,e),n._zod.pattern=[...n?._zod.bag?.patterns??[]].pop()??bD(n._zod.bag),n._zod.parse=(t,i)=>{if(e.coerce)try{t.value=String(t.value)}catch{}return typeof t.value=="string"||t.issues.push({expected:"string",code:"invalid_type",input:t.value,inst:n}),t}}),Ot=J("$ZodStringFormat",(n,e)=>{WA.init(n,e),rc.init(n,e)}),LD=J("$ZodGUID",(n,e)=>{e.pattern??(e.pattern=rD),Ot.init(n,e)}),GD=J("$ZodUUID",(n,e)=>{if(e.version){const i={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[e.version];if(i===void 0)throw new Error(`Invalid UUID version: "${e.version}"`);e.pattern??(e.pattern=Xp(i))}else e.pattern??(e.pattern=Xp());Ot.init(n,e)}),FD=J("$ZodEmail",(n,e)=>{e.pattern??(e.pattern=aD),Ot.init(n,e)}),VD=J("$ZodURL",(n,e)=>{Ot.init(n,e),n._zod.check=t=>{try{const i=t.value.trim();if(!e.normalize&&e.protocol?.source===hD.source&&!/^https?:\/\//i.test(i)){t.issues.push({code:"invalid_format",format:"url",note:"Invalid URL format",input:t.value,inst:n,continue:!e.abort});return}const o=new URL(i);e.hostname&&(e.hostname.lastIndex=0,e.hostname.test(o.hostname)||t.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:e.hostname.source,input:t.value,inst:n,continue:!e.abort})),e.protocol&&(e.protocol.lastIndex=0,e.protocol.test(o.protocol.endsWith(":")?o.protocol.slice(0,-1):o.protocol)||t.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:e.protocol.source,input:t.value,inst:n,continue:!e.abort})),e.normalize?t.value=o.href:t.value=i;return}catch{t.issues.push({code:"invalid_format",format:"url",input:t.value,inst:n,continue:!e.abort})}}}),UD=J("$ZodEmoji",(n,e)=>{e.pattern??(e.pattern=CD()),Ot.init(n,e)}),YD=J("$ZodNanoID",(n,e)=>{e.pattern??(e.pattern=oD),Ot.init(n,e)}),HD=J("$ZodCUID",(n,e)=>{e.pattern??(e.pattern=eD),Ot.init(n,e)}),KD=J("$ZodCUID2",(n,e)=>{e.pattern??(e.pattern=tD),Ot.init(n,e)}),WD=J("$ZodULID",(n,e)=>{e.pattern??(e.pattern=nD),Ot.init(n,e)}),QD=J("$ZodXID",(n,e)=>{e.pattern??(e.pattern=iD),Ot.init(n,e)}),XD=J("$ZodKSUID",(n,e)=>{e.pattern??(e.pattern=gD),Ot.init(n,e)}),$D=J("$ZodISODateTime",(n,e)=>{e.pattern??(e.pattern=vD(e)),Ot.init(n,e)}),qD=J("$ZodISODate",(n,e)=>{e.pattern??(e.pattern=pD),Ot.init(n,e)}),JD=J("$ZodISOTime",(n,e)=>{e.pattern??(e.pattern=mD(e)),Ot.init(n,e)}),ek=J("$ZodISODuration",(n,e)=>{e.pattern??(e.pattern=sD),Ot.init(n,e)}),tk=J("$ZodIPv4",(n,e)=>{e.pattern??(e.pattern=ID),Ot.init(n,e),n._zod.bag.format="ipv4"}),nk=J("$ZodIPv6",(n,e)=>{e.pattern??(e.pattern=lD),Ot.init(n,e),n._zod.bag.format="ipv6",n._zod.check=t=>{try{new URL(`http://[${t.value}]`)}catch{t.issues.push({code:"invalid_format",format:"ipv6",input:t.value,inst:n,continue:!e.abort})}}}),ik=J("$ZodCIDRv4",(n,e)=>{e.pattern??(e.pattern=cD),Ot.init(n,e)}),gk=J("$ZodCIDRv6",(n,e)=>{e.pattern??(e.pattern=dD),Ot.init(n,e),n._zod.check=t=>{const i=t.value.split("/");try{if(i.length!==2)throw new Error;const[o,r]=i;if(!r)throw new Error;const A=Number(r);if(`${A}`!==r)throw new Error;if(A<0||A>128)throw new Error;new URL(`http://[${o}]`)}catch{t.issues.push({code:"invalid_format",format:"cidrv6",input:t.value,inst:n,continue:!e.abort})}}});function gm(n){if(n==="")return!0;if(/\s/.test(n)||n.length%4!==0)return!1;try{return atob(n),!0}catch{return!1}}const ok=J("$ZodBase64",(n,e)=>{e.pattern??(e.pattern=uD),Ot.init(n,e),n._zod.bag.contentEncoding="base64",n._zod.check=t=>{gm(t.value)||t.issues.push({code:"invalid_format",format:"base64",input:t.value,inst:n,continue:!e.abort})}});function sk(n){if(!$p.test(n))return!1;const e=n.replace(/[-_]/g,i=>i==="-"?"+":"/"),t=e.padEnd(Math.ceil(e.length/4)*4,"=");return gm(t)}const rk=J("$ZodBase64URL",(n,e)=>{e.pattern??(e.pattern=$p),Ot.init(n,e),n._zod.bag.contentEncoding="base64url",n._zod.check=t=>{sk(t.value)||t.issues.push({code:"invalid_format",format:"base64url",input:t.value,inst:n,continue:!e.abort})}}),ak=J("$ZodE164",(n,e)=>{e.pattern??(e.pattern=fD),Ot.init(n,e)});function Ak(n,e=null){try{const t=n.split(".");if(t.length!==3)return!1;const[i]=t;if(!i)return!1;const o=JSON.parse(atob(i));return!("typ"in o&&o?.typ!=="JWT"||!o.alg||e&&(!("alg"in o)||o.alg!==e))}catch{return!1}}const Ck=J("$ZodJWT",(n,e)=>{Ot.init(n,e),n._zod.check=t=>{Ak(t.value,e.alg)||t.issues.push({code:"invalid_format",format:"jwt",input:t.value,inst:n,continue:!e.abort})}}),om=J("$ZodNumber",(n,e)=>{Mt.init(n,e),n._zod.pattern=n._zod.bag.pattern??em,n._zod.parse=(t,i)=>{if(e.coerce)try{t.value=Number(t.value)}catch{}const o=t.value;if(typeof o=="number"&&!Number.isNaN(o)&&Number.isFinite(o))return t;const r=typeof o=="number"?Number.isNaN(o)?"NaN":Number.isFinite(o)?void 0:"Infinity":void 0;return t.issues.push({expected:"number",code:"invalid_type",input:o,inst:n,...r?{received:r}:{}}),t}}),Ik=J("$ZodNumberFormat",(n,e)=>{TD.init(n,e),om.init(n,e)}),lk=J("$ZodBoolean",(n,e)=>{Mt.init(n,e),n._zod.pattern=wD,n._zod.parse=(t,i)=>{if(e.coerce)try{t.value=!!t.value}catch{}const o=t.value;return typeof o=="boolean"||t.issues.push({expected:"boolean",code:"invalid_type",input:o,inst:n}),t}}),ck=J("$ZodUnknown",(n,e)=>{Mt.init(n,e),n._zod.parse=t=>t}),dk=J("$ZodNever",(n,e)=>{Mt.init(n,e),n._zod.parse=(t,i)=>(t.issues.push({expected:"never",code:"invalid_type",input:t.value,inst:n}),t)});function sm(n,e,t){n.issues.length&&e.issues.push(...cs(t,n.issues)),e.value[t]=n.value}const uk=J("$ZodArray",(n,e)=>{Mt.init(n,e),n._zod.parse=(t,i)=>{const o=t.value;if(!Array.isArray(o))return t.issues.push({expected:"array",code:"invalid_type",input:o,inst:n}),t;t.value=Array(o.length);const r=[];for(let A=0;Asm(c,t,A))):sm(l,t,A)}return r.length?Promise.all(r).then(()=>t):t}});function QA(n,e,t,i,o,r){const A=t in i;if(n.issues.length){if(o&&r&&!A)return;e.issues.push(...cs(t,n.issues))}if(!A&&!o){n.issues.length||e.issues.push({code:"invalid_type",expected:"nonoptional",input:void 0,path:[t]});return}n.value===void 0?A&&(e.value[t]=void 0):e.value[t]=n.value}function rm(n){const e=Object.keys(n.shape);for(const i of e)if(!n.shape?.[i]?._zod?.traits?.has("$ZodType"))throw new Error(`Invalid element at key "${i}": expected a Zod schema`);const t=MN(n.shape);return{...n,keys:e,keySet:new Set(e),numKeys:e.length,optionalKeys:new Set(t)}}function am(n,e,t,i,o,r){const A=[],I=o.keySet,l=o.catchall._zod,c=l.def.type,h=l.optin==="optional",p=l.optout==="optional";for(const m in e){if(m==="__proto__"||I.has(m))continue;if(c==="never"){A.push(m);continue}const v=l.run({value:e[m],issues:[]},i);v instanceof Promise?n.push(v.then(x=>QA(x,t,m,e,h,p))):QA(v,t,m,e,h,p)}return A.length&&t.issues.push({code:"unrecognized_keys",keys:A,input:e,inst:r}),n.length?Promise.all(n).then(()=>t):t}const hk=J("$ZodObject",(n,e)=>{if(Mt.init(n,e),!Object.getOwnPropertyDescriptor(e,"shape")?.get){const I=e.shape;Object.defineProperty(e,"shape",{get:()=>{const l={...I};return Object.defineProperty(e,"shape",{value:l}),l}})}const i=UA(()=>rm(e));It(n._zod,"propValues",()=>{const I=e.shape,l={};for(const c in I){const h=I[c]._zod;if(h.values){l[c]??(l[c]=new Set);for(const p of h.values)l[c].add(p)}}return l});const o=Br,r=e.catchall;let A;n._zod.parse=(I,l)=>{A??(A=i.value);const c=I.value;if(!o(c))return I.issues.push({expected:"object",code:"invalid_type",input:c,inst:n}),I;I.value={};const h=[],p=A.shape;for(const m of A.keys){const v=p[m],x=v._zod.optin==="optional",O=v._zod.optout==="optional",y=v._zod.run({value:c[m],issues:[]},l);y instanceof Promise?h.push(y.then(S=>QA(S,I,m,c,x,O))):QA(y,I,m,c,x,O)}return r?am(h,c,I,l,i.value,n):h.length?Promise.all(h).then(()=>I):I}}),fk=J("$ZodObjectJIT",(n,e)=>{hk.init(n,e);const t=n._zod.parse,i=UA(()=>rm(e)),o=m=>{const v=new BD(["shape","payload","ctx"]),x=i.value,O=_=>{const j=Up(_);return`shape[${j}]._zod.run({ value: input[${j}], issues: [] }, ctx)`};v.write("const input = payload.value;");const y=Object.create(null);let S=0;for(const _ of x.keys)y[_]=`key_${S++}`;v.write("const newResult = {};");for(const _ of x.keys){const j=y[_],X=Up(_),ne=m[_],F=ne?._zod?.optin==="optional",V=ne?._zod?.optout==="optional";v.write(`const ${j} = ${O(_)};`),F&&V?v.write(` if (${j}.issues.length) { if (${X} in input) { payload.issues = payload.issues.concat(${j}.issues.map(iss => ({ @@ -26,7 +26,7 @@ Error generating stack: `+C.message+` newResult[${X}] = ${j}.value; } - `):F?b.write(` + `):F?v.write(` if (${j}.issues.length) { payload.issues = payload.issues.concat(${j}.issues.map(iss => ({ ...iss, @@ -42,7 +42,7 @@ Error generating stack: `+C.message+` newResult[${X}] = ${j}.value; } - `):b.write(` + `):v.write(` const ${j}_present = ${X} in input; if (${j}.issues.length) { payload.issues = payload.issues.concat(${j}.issues.map(iss => ({ @@ -67,9 +67,9 @@ Error generating stack: `+C.message+` } } - `)}b.write("payload.value = newResult;"),b.write("return payload;");const E=b.compile();return(_,j)=>E(m,_,j)};let r;const A=_r,I=!Ql.jitless,c=I&&hN.value,h=e.catchall;let p;n._zod.parse=(m,b)=>{p??(p=i.value);const w=m.value;return A(w)?I&&c&&b?.async===!1&&b.jitless!==!0?(r||(r=o(e.shape)),m=r(m,b),h?nm([],w,m,b,p,n):m):t(m,b):(m.issues.push({expected:"object",code:"invalid_type",input:w,inst:n}),m)}});function im(n,e,t,i){for(const r of n)if(r.issues.length===0)return e.value=r.value,e;const o=n.filter(r=>!Cs(r));return o.length===1?(e.value=o[0].value,o[0]):(e.issues.push({code:"invalid_union",input:e.value,inst:t,errors:n.map(r=>r.issues.map(A=>Wi(A,i,Ki())))}),e)}const gm=q("$ZodUnion",(n,e)=>{Rt.init(n,e),It(n._zod,"optin",()=>e.options.some(i=>i._zod.optin==="optional")?"optional":void 0),It(n._zod,"optout",()=>e.options.some(i=>i._zod.optout==="optional")?"optional":void 0),It(n._zod,"values",()=>{if(e.options.every(i=>i._zod.values))return new Set(e.options.flatMap(i=>Array.from(i._zod.values)))}),It(n._zod,"pattern",()=>{if(e.options.every(i=>i._zod.pattern)){const i=e.options.map(o=>o._zod.pattern);return new RegExp(`^(${i.map(o=>ql(o.source)).join("|")})$`)}});const t=e.options.length===1?e.options[0]._zod.run:null;n._zod.parse=(i,o)=>{if(t)return t(i,o);let r=!1;const A=[];for(const I of e.options){const l=I._zod.run({value:i.value,issues:[]},o);if(l instanceof Promise)A.push(l),r=!0;else{if(l.issues.length===0)return l;A.push(l)}}return r?Promise.all(A).then(I=>im(I,i,n,o)):im(A,i,n,o)}}),gM=q("$ZodDiscriminatedUnion",(n,e)=>{e.inclusive=!1,gm.init(n,e);const t=n._zod.parse;It(n._zod,"propValues",()=>{const o={};for(const r of e.options){const A=r._zod.propValues;if(!A||Object.keys(A).length===0)throw new Error(`Invalid discriminated union option at index "${e.options.indexOf(r)}"`);for(const[I,l]of Object.entries(A)){o[I]||(o[I]=new Set);for(const c of l)o[I].add(c)}}return o});const i=PA(()=>{const o=e.options,r=new Map;for(const A of o){const I=A._zod.propValues?.[e.discriminator];if(!I||I.size===0)throw new Error(`Invalid discriminated union option at index "${e.options.indexOf(A)}"`);for(const l of I){if(r.has(l))throw new Error(`Duplicate discriminator value "${String(l)}"`);r.set(l,A)}}return r});n._zod.parse=(o,r)=>{const A=o.value;if(!_r(A))return o.issues.push({code:"invalid_type",expected:"object",input:A,inst:n}),o;const I=i.value.get(A?.[e.discriminator]);return I?I._zod.run(o,r):e.unionFallback||r.direction==="backward"?t(o,r):(o.issues.push({code:"invalid_union",errors:[],note:"No matching discriminator",discriminator:e.discriminator,options:Array.from(i.value.keys()),input:A,path:[e.discriminator],inst:n}),o)}}),oM=q("$ZodIntersection",(n,e)=>{Rt.init(n,e),n._zod.parse=(t,i)=>{const o=t.value,r=e.left._zod.run({value:o,issues:[]},i),A=e.right._zod.run({value:o,issues:[]},i);return r instanceof Promise||A instanceof Promise?Promise.all([r,A]).then(([l,c])=>om(t,l,c)):om(t,r,A)}});function ic(n,e){if(n===e)return{valid:!0,data:n};if(n instanceof Date&&e instanceof Date&&+n==+e)return{valid:!0,data:n};if(as(n)&&as(e)){const t=Object.keys(e),i=Object.keys(n).filter(r=>t.indexOf(r)!==-1),o={...n,...e};for(const r of i){const A=ic(n[r],e[r]);if(!A.valid)return{valid:!1,mergeErrorPath:[r,...A.mergeErrorPath]};o[r]=A.data}return{valid:!0,data:o}}if(Array.isArray(n)&&Array.isArray(e)){if(n.length!==e.length)return{valid:!1,mergeErrorPath:[]};const t=[];for(let i=0;iI.l&&I.r).map(([I])=>I);if(r.length&&o&&n.issues.push({...o,keys:r}),Cs(n))return n;const A=ic(e.value,t.value);if(!A.valid)throw new Error(`Unmergable intersection. Error path: ${JSON.stringify(A.mergeErrorPath)}`);return n.value=A.data,n}const sM=q("$ZodRecord",(n,e)=>{Rt.init(n,e),n._zod.parse=(t,i)=>{const o=t.value;if(!as(o))return t.issues.push({expected:"record",code:"invalid_type",input:o,inst:n}),t;const r=[],A=e.keyType._zod.values;if(A){t.value={};const I=new Set;for(const c of A)if(typeof c=="string"||typeof c=="number"||typeof c=="symbol"){I.add(typeof c=="number"?c.toString():c);const h=e.keyType._zod.run({value:c,issues:[]},i);if(h instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(h.issues.length){t.issues.push({code:"invalid_key",origin:"record",issues:h.issues.map(b=>Wi(b,i,Ki())),input:c,path:[c],inst:n});continue}const p=h.value,m=e.valueType._zod.run({value:o[c],issues:[]},i);m instanceof Promise?r.push(m.then(b=>{b.issues.length&&t.issues.push(...Is(c,b.issues)),t.value[p]=b.value})):(m.issues.length&&t.issues.push(...Is(c,m.issues)),t.value[p]=m.value)}let l;for(const c in o)I.has(c)||(l=l??[],l.push(c));l&&l.length>0&&t.issues.push({code:"unrecognized_keys",input:o,inst:n,keys:l})}else{t.value={};for(const I of Reflect.ownKeys(o)){if(I==="__proto__"||!Object.prototype.propertyIsEnumerable.call(o,I))continue;let l=e.keyType._zod.run({value:I,issues:[]},i);if(l instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(typeof I=="string"&&Wp.test(I)&&l.issues.length){const p=e.keyType._zod.run({value:Number(I),issues:[]},i);if(p instanceof Promise)throw new Error("Async schemas not supported in object keys currently");p.issues.length===0&&(l=p)}if(l.issues.length){e.mode==="loose"?t.value[I]=o[I]:t.issues.push({code:"invalid_key",origin:"record",issues:l.issues.map(p=>Wi(p,i,Ki())),input:I,path:[I],inst:n});continue}const h=e.valueType._zod.run({value:o[I],issues:[]},i);h instanceof Promise?r.push(h.then(p=>{p.issues.length&&t.issues.push(...Is(I,p.issues)),t.value[l.value]=p.value})):(h.issues.length&&t.issues.push(...Is(I,h.issues)),t.value[l.value]=h.value)}}return r.length?Promise.all(r).then(()=>t):t}}),rM=q("$ZodEnum",(n,e)=>{Rt.init(n,e);const t=jp(e.entries),i=new Set(t);n._zod.values=i,n._zod.pattern=new RegExp(`^(${t.filter(o=>fN.has(typeof o)).map(o=>typeof o=="string"?As(o):o.toString()).join("|")})$`),n._zod.parse=(o,r)=>{const A=o.value;return i.has(A)||o.issues.push({code:"invalid_value",values:t,input:A,inst:n}),o}}),aM=q("$ZodLiteral",(n,e)=>{if(Rt.init(n,e),e.values.length===0)throw new Error("Cannot create literal schema with no valid values");const t=new Set(e.values);n._zod.values=t,n._zod.pattern=new RegExp(`^(${e.values.map(i=>typeof i=="string"?As(i):i?As(i.toString()):String(i)).join("|")})$`),n._zod.parse=(i,o)=>{const r=i.value;return t.has(r)||i.issues.push({code:"invalid_value",values:e.values,input:r,inst:n}),i}}),AM=q("$ZodTransform",(n,e)=>{Rt.init(n,e),n._zod.optin="optional",n._zod.parse=(t,i)=>{if(i.direction==="backward")throw new _p(n.constructor.name);const o=e.transform(t.value,t);if(i.async)return(o instanceof Promise?o:Promise.resolve(o)).then(A=>(t.value=A,t.fallback=!0,t));if(o instanceof Promise)throw new rs;return t.value=o,t.fallback=!0,t}});function sm(n,e){return e===void 0&&(n.issues.length||n.fallback)?{issues:[],value:void 0}:n}const rm=q("$ZodOptional",(n,e)=>{Rt.init(n,e),n._zod.optin="optional",n._zod.optout="optional",It(n._zod,"values",()=>e.innerType._zod.values?new Set([...e.innerType._zod.values,void 0]):void 0),It(n._zod,"pattern",()=>{const t=e.innerType._zod.pattern;return t?new RegExp(`^(${ql(t.source)})?$`):void 0}),n._zod.parse=(t,i)=>{if(e.innerType._zod.optin==="optional"){const o=t.value,r=e.innerType._zod.run(t,i);return r instanceof Promise?r.then(A=>sm(A,o)):sm(r,o)}return t.value===void 0?t:e.innerType._zod.run(t,i)}}),CM=q("$ZodExactOptional",(n,e)=>{rm.init(n,e),It(n._zod,"values",()=>e.innerType._zod.values),It(n._zod,"pattern",()=>e.innerType._zod.pattern),n._zod.parse=(t,i)=>e.innerType._zod.run(t,i)}),IM=q("$ZodNullable",(n,e)=>{Rt.init(n,e),It(n._zod,"optin",()=>e.innerType._zod.optin),It(n._zod,"optout",()=>e.innerType._zod.optout),It(n._zod,"pattern",()=>{const t=e.innerType._zod.pattern;return t?new RegExp(`^(${ql(t.source)}|null)$`):void 0}),It(n._zod,"values",()=>e.innerType._zod.values?new Set([...e.innerType._zod.values,null]):void 0),n._zod.parse=(t,i)=>t.value===null?t:e.innerType._zod.run(t,i)}),lM=q("$ZodDefault",(n,e)=>{Rt.init(n,e),n._zod.optin="optional",It(n._zod,"values",()=>e.innerType._zod.values),n._zod.parse=(t,i)=>{if(i.direction==="backward")return e.innerType._zod.run(t,i);if(t.value===void 0)return t.value=e.defaultValue,t;const o=e.innerType._zod.run(t,i);return o instanceof Promise?o.then(r=>am(r,e)):am(o,e)}});function am(n,e){return n.value===void 0&&(n.value=e.defaultValue),n}const cM=q("$ZodPrefault",(n,e)=>{Rt.init(n,e),n._zod.optin="optional",It(n._zod,"values",()=>e.innerType._zod.values),n._zod.parse=(t,i)=>(i.direction==="backward"||t.value===void 0&&(t.value=e.defaultValue),e.innerType._zod.run(t,i))}),dM=q("$ZodNonOptional",(n,e)=>{Rt.init(n,e),It(n._zod,"values",()=>{const t=e.innerType._zod.values;return t?new Set([...t].filter(i=>i!==void 0)):void 0}),n._zod.parse=(t,i)=>{const o=e.innerType._zod.run(t,i);return o instanceof Promise?o.then(r=>Am(r,n)):Am(o,n)}});function Am(n,e){return!n.issues.length&&n.value===void 0&&n.issues.push({code:"invalid_type",expected:"nonoptional",input:n.value,inst:e}),n}const uM=q("$ZodCatch",(n,e)=>{Rt.init(n,e),n._zod.optin="optional",It(n._zod,"optout",()=>e.innerType._zod.optout),It(n._zod,"values",()=>e.innerType._zod.values),n._zod.parse=(t,i)=>{if(i.direction==="backward")return e.innerType._zod.run(t,i);const o=e.innerType._zod.run(t,i);return o instanceof Promise?o.then(r=>(t.value=r.value,r.issues.length&&(t.value=e.catchValue({...t,error:{issues:r.issues.map(A=>Wi(A,i,Ki()))},input:t.value}),t.issues=[],t.fallback=!0),t)):(t.value=o.value,o.issues.length&&(t.value=e.catchValue({...t,error:{issues:o.issues.map(r=>Wi(r,i,Ki()))},input:t.value}),t.issues=[],t.fallback=!0),t)}}),hM=q("$ZodPipe",(n,e)=>{Rt.init(n,e),It(n._zod,"values",()=>e.in._zod.values),It(n._zod,"optin",()=>e.in._zod.optin),It(n._zod,"optout",()=>e.out._zod.optout),It(n._zod,"propValues",()=>e.in._zod.propValues),n._zod.parse=(t,i)=>{if(i.direction==="backward"){const r=e.out._zod.run(t,i);return r instanceof Promise?r.then(A=>UA(A,e.in,i)):UA(r,e.in,i)}const o=e.in._zod.run(t,i);return o instanceof Promise?o.then(r=>UA(r,e.out,i)):UA(o,e.out,i)}});function UA(n,e,t){return n.issues.length?(n.aborted=!0,n):e._zod.run({value:n.value,issues:n.issues,fallback:n.fallback},t)}const fM=q("$ZodReadonly",(n,e)=>{Rt.init(n,e),It(n._zod,"propValues",()=>e.innerType._zod.propValues),It(n._zod,"values",()=>e.innerType._zod.values),It(n._zod,"optin",()=>e.innerType?._zod?.optin),It(n._zod,"optout",()=>e.innerType?._zod?.optout),n._zod.parse=(t,i)=>{if(i.direction==="backward")return e.innerType._zod.run(t,i);const o=e.innerType._zod.run(t,i);return o instanceof Promise?o.then(Cm):Cm(o)}});function Cm(n){return n.value=Object.freeze(n.value),n}const pM=q("$ZodCustom",(n,e)=>{zn.init(n,e),Rt.init(n,e),n._zod.parse=(t,i)=>t,n._zod.check=t=>{const i=t.value,o=e.fn(i);if(o instanceof Promise)return o.then(r=>Im(r,t,i,n));Im(o,t,i,n)}});function Im(n,e,t,i){if(!n){const o={code:"custom",input:t,inst:i,path:[...i._zod.def.path??[]],continue:!i._zod.def.abort};i._zod.def.params&&(o.params=i._zod.def.params),e.issues.push(jr(o))}}var lm;class mM{constructor(){this._map=new WeakMap,this._idmap=new Map}add(e,...t){const i=t[0];return this._map.set(e,i),i&&typeof i=="object"&&"id"in i&&this._idmap.set(i.id,e),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(e){const t=this._map.get(e);return t&&typeof t=="object"&&"id"in t&&this._idmap.delete(t.id),this._map.delete(e),this}get(e){const t=e._zod.parent;if(t){const i={...this.get(t)??{}};delete i.id;const o={...i,...this._map.get(e)};return Object.keys(o).length?o:void 0}return this._map.get(e)}has(e){return this._map.has(e)}}function vM(){return new mM}(lm=globalThis).__zod_globalRegistry??(lm.__zod_globalRegistry=vM());const Zr=globalThis.__zod_globalRegistry;function bM(n,e){return new n({type:"string",...ye(e)})}function yM(n,e){return new n({type:"string",format:"email",check:"string_format",abort:!1,...ye(e)})}function cm(n,e){return new n({type:"string",format:"guid",check:"string_format",abort:!1,...ye(e)})}function wM(n,e){return new n({type:"string",format:"uuid",check:"string_format",abort:!1,...ye(e)})}function xM(n,e){return new n({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...ye(e)})}function EM(n,e){return new n({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...ye(e)})}function SM(n,e){return new n({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...ye(e)})}function TM(n,e){return new n({type:"string",format:"url",check:"string_format",abort:!1,...ye(e)})}function OM(n,e){return new n({type:"string",format:"emoji",check:"string_format",abort:!1,...ye(e)})}function NM(n,e){return new n({type:"string",format:"nanoid",check:"string_format",abort:!1,...ye(e)})}function DM(n,e){return new n({type:"string",format:"cuid",check:"string_format",abort:!1,...ye(e)})}function MM(n,e){return new n({type:"string",format:"cuid2",check:"string_format",abort:!1,...ye(e)})}function RM(n,e){return new n({type:"string",format:"ulid",check:"string_format",abort:!1,...ye(e)})}function kM(n,e){return new n({type:"string",format:"xid",check:"string_format",abort:!1,...ye(e)})}function zM(n,e){return new n({type:"string",format:"ksuid",check:"string_format",abort:!1,...ye(e)})}function _M(n,e){return new n({type:"string",format:"ipv4",check:"string_format",abort:!1,...ye(e)})}function jM(n,e){return new n({type:"string",format:"ipv6",check:"string_format",abort:!1,...ye(e)})}function ZM(n,e){return new n({type:"string",format:"cidrv4",check:"string_format",abort:!1,...ye(e)})}function PM(n,e){return new n({type:"string",format:"cidrv6",check:"string_format",abort:!1,...ye(e)})}function BM(n,e){return new n({type:"string",format:"base64",check:"string_format",abort:!1,...ye(e)})}function LM(n,e){return new n({type:"string",format:"base64url",check:"string_format",abort:!1,...ye(e)})}function GM(n,e){return new n({type:"string",format:"e164",check:"string_format",abort:!1,...ye(e)})}function FM(n,e){return new n({type:"string",format:"jwt",check:"string_format",abort:!1,...ye(e)})}function VM(n,e){return new n({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...ye(e)})}function UM(n,e){return new n({type:"string",format:"date",check:"string_format",...ye(e)})}function YM(n,e){return new n({type:"string",format:"time",check:"string_format",precision:null,...ye(e)})}function HM(n,e){return new n({type:"string",format:"duration",check:"string_format",...ye(e)})}function KM(n,e){return new n({type:"number",checks:[],...ye(e)})}function WM(n,e){return new n({type:"number",check:"number_format",abort:!1,format:"safeint",...ye(e)})}function QM(n,e){return new n({type:"boolean",...ye(e)})}function XM(n){return new n({type:"unknown"})}function $M(n,e){return new n({type:"never",...ye(e)})}function dm(n,e){return new Xp({check:"less_than",...ye(e),value:n,inclusive:!1})}function gc(n,e){return new Xp({check:"less_than",...ye(e),value:n,inclusive:!0})}function um(n,e){return new $p({check:"greater_than",...ye(e),value:n,inclusive:!1})}function oc(n,e){return new $p({check:"greater_than",...ye(e),value:n,inclusive:!0})}function hm(n,e){return new lD({check:"multiple_of",...ye(e),value:n})}function fm(n,e){return new dD({check:"max_length",...ye(e),maximum:n})}function YA(n,e){return new uD({check:"min_length",...ye(e),minimum:n})}function pm(n,e){return new hD({check:"length_equals",...ye(e),length:n})}function qM(n,e){return new fD({check:"string_format",format:"regex",...ye(e),pattern:n})}function JM(n){return new pD({check:"string_format",format:"lowercase",...ye(n)})}function eR(n){return new mD({check:"string_format",format:"uppercase",...ye(n)})}function tR(n,e){return new vD({check:"string_format",format:"includes",...ye(e),includes:n})}function nR(n,e){return new bD({check:"string_format",format:"starts_with",...ye(e),prefix:n})}function iR(n,e){return new yD({check:"string_format",format:"ends_with",...ye(e),suffix:n})}function ls(n){return new wD({check:"overwrite",tx:n})}function gR(n){return ls(e=>e.normalize(n))}function oR(){return ls(n=>n.trim())}function sR(){return ls(n=>n.toLowerCase())}function rR(){return ls(n=>n.toUpperCase())}function aR(){return ls(n=>uN(n))}function AR(n,e,t){return new n({type:"array",element:e,...ye(t)})}function CR(n,e,t){return new n({type:"custom",check:"custom",fn:e,...ye(t)})}function IR(n,e){const t=lR(i=>(i.addIssue=o=>{if(typeof o=="string")i.issues.push(jr(o,i.value,t._zod.def));else{const r=o;r.fatal&&(r.continue=!1),r.code??(r.code="custom"),r.input??(r.input=i.value),r.inst??(r.inst=t),r.continue??(r.continue=!t._zod.def.abort),i.issues.push(jr(r))}},n(i.value,i)),e);return t}function lR(n,e){const t=new zn({check:"custom",...ye(e)});return t._zod.check=n,t}function mm(n){let e=n?.target??"draft-2020-12";return e==="draft-4"&&(e="draft-04"),e==="draft-7"&&(e="draft-07"),{processors:n.processors??{},metadataRegistry:n?.metadata??Zr,target:e,unrepresentable:n?.unrepresentable??"throw",override:n?.override??(()=>{}),io:n?.io??"output",counter:0,seen:new Map,cycles:n?.cycles??"ref",reused:n?.reused??"inline",external:n?.external??void 0}}function Qt(n,e,t={path:[],schemaPath:[]}){var i;const o=n._zod.def,r=e.seen.get(n);if(r)return r.count++,t.schemaPath.includes(n)&&(r.cycle=t.path),r.schema;const A={schema:{},count:1,cycle:void 0,path:t.path};e.seen.set(n,A);const I=n._zod.toJSONSchema?.();if(I)A.schema=I;else{const h={...t,schemaPath:[...t.schemaPath,n],path:t.path};if(n._zod.processJSONSchema)n._zod.processJSONSchema(e,A.schema,h);else{const m=A.schema,b=e.processors[o.type];if(!b)throw new Error(`[toJSONSchema]: Non-representable type encountered: ${o.type}`);b(n,e,m,h)}const p=n._zod.parent;p&&(A.ref||(A.ref=p),Qt(p,e,h),e.seen.get(p).isParent=!0)}const l=e.metadataRegistry.get(n);return l&&Object.assign(A.schema,l),e.io==="input"&&Tn(n)&&(delete A.schema.examples,delete A.schema.default),e.io==="input"&&"_prefault"in A.schema&&((i=A.schema).default??(i.default=A.schema._prefault)),delete A.schema._prefault,e.seen.get(n).schema}function vm(n,e){const t=n.seen.get(e);if(!t)throw new Error("Unprocessed schema. This is a bug in Zod.");const i=new Map;for(const A of n.seen.entries()){const I=n.metadataRegistry.get(A[0])?.id;if(I){const l=i.get(I);if(l&&l!==A[0])throw new Error(`Duplicate schema id "${I}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);i.set(I,A[0])}}const o=A=>{const I=n.target==="draft-2020-12"?"$defs":"definitions";if(n.external){const p=n.external.registry.get(A[0])?.id,m=n.external.uri??(w=>w);if(p)return{ref:m(p)};const b=A[1].defId??A[1].schema.id??`schema${n.counter++}`;return A[1].defId=b,{defId:b,ref:`${m("__shared")}#/${I}/${b}`}}if(A[1]===t)return{ref:"#"};const c=`#/${I}/`,h=A[1].schema.id??`__schema${n.counter++}`;return{defId:h,ref:c+h}},r=A=>{if(A[1].schema.$ref)return;const I=A[1],{ref:l,defId:c}=o(A);I.def={...I.schema},c&&(I.defId=c);const h=I.schema;for(const p in h)delete h[p];h.$ref=l};if(n.cycles==="throw")for(const A of n.seen.entries()){const I=A[1];if(I.cycle)throw new Error(`Cycle detected: #/${I.cycle?.join("/")}/ + `)}v.write("payload.value = newResult;"),v.write("return payload;");const E=v.compile();return(_,j)=>E(m,_,j)};let r;const A=Br,I=!ec.jitless,c=I&&DN.value,h=e.catchall;let p;n._zod.parse=(m,v)=>{p??(p=i.value);const x=m.value;return A(x)?I&&c&&v?.async===!1&&v.jitless!==!0?(r||(r=o(e.shape)),m=r(m,v),h?am([],x,m,v,p,n):m):t(m,v):(m.issues.push({expected:"object",code:"invalid_type",input:x,inst:n}),m)}});function Am(n,e,t,i){for(const r of n)if(r.issues.length===0)return e.value=r.value,e;const o=n.filter(r=>!ls(r));return o.length===1?(e.value=o[0].value,o[0]):(e.issues.push({code:"invalid_union",input:e.value,inst:t,errors:n.map(r=>r.issues.map(A=>Qi(A,i,Wi())))}),e)}const Cm=J("$ZodUnion",(n,e)=>{Mt.init(n,e),It(n._zod,"optin",()=>e.options.some(i=>i._zod.optin==="optional")?"optional":void 0),It(n._zod,"optout",()=>e.options.some(i=>i._zod.optout==="optional")?"optional":void 0),It(n._zod,"values",()=>{if(e.options.every(i=>i._zod.values))return new Set(e.options.flatMap(i=>Array.from(i._zod.values)))}),It(n._zod,"pattern",()=>{if(e.options.every(i=>i._zod.pattern)){const i=e.options.map(o=>o._zod.pattern);return new RegExp(`^(${i.map(o=>ic(o.source)).join("|")})$`)}});const t=e.options.length===1?e.options[0]._zod.run:null;n._zod.parse=(i,o)=>{if(t)return t(i,o);let r=!1;const A=[];for(const I of e.options){const l=I._zod.run({value:i.value,issues:[]},o);if(l instanceof Promise)A.push(l),r=!0;else{if(l.issues.length===0)return l;A.push(l)}}return r?Promise.all(A).then(I=>Am(I,i,n,o)):Am(A,i,n,o)}}),pk=J("$ZodDiscriminatedUnion",(n,e)=>{e.inclusive=!1,Cm.init(n,e);const t=n._zod.parse;It(n._zod,"propValues",()=>{const o={};for(const r of e.options){const A=r._zod.propValues;if(!A||Object.keys(A).length===0)throw new Error(`Invalid discriminated union option at index "${e.options.indexOf(r)}"`);for(const[I,l]of Object.entries(A)){o[I]||(o[I]=new Set);for(const c of l)o[I].add(c)}}return o});const i=UA(()=>{const o=e.options,r=new Map;for(const A of o){const I=A._zod.propValues?.[e.discriminator];if(!I||I.size===0)throw new Error(`Invalid discriminated union option at index "${e.options.indexOf(A)}"`);for(const l of I){if(r.has(l))throw new Error(`Duplicate discriminator value "${String(l)}"`);r.set(l,A)}}return r});n._zod.parse=(o,r)=>{const A=o.value;if(!Br(A))return o.issues.push({code:"invalid_type",expected:"object",input:A,inst:n}),o;const I=i.value.get(A?.[e.discriminator]);return I?I._zod.run(o,r):e.unionFallback||r.direction==="backward"?t(o,r):(o.issues.push({code:"invalid_union",errors:[],note:"No matching discriminator",discriminator:e.discriminator,options:Array.from(i.value.keys()),input:A,path:[e.discriminator],inst:n}),o)}}),mk=J("$ZodIntersection",(n,e)=>{Mt.init(n,e),n._zod.parse=(t,i)=>{const o=t.value,r=e.left._zod.run({value:o,issues:[]},i),A=e.right._zod.run({value:o,issues:[]},i);return r instanceof Promise||A instanceof Promise?Promise.all([r,A]).then(([l,c])=>Im(t,l,c)):Im(t,r,A)}});function ac(n,e){if(n===e)return{valid:!0,data:n};if(n instanceof Date&&e instanceof Date&&+n==+e)return{valid:!0,data:n};if(Cs(n)&&Cs(e)){const t=Object.keys(e),i=Object.keys(n).filter(r=>t.indexOf(r)!==-1),o={...n,...e};for(const r of i){const A=ac(n[r],e[r]);if(!A.valid)return{valid:!1,mergeErrorPath:[r,...A.mergeErrorPath]};o[r]=A.data}return{valid:!0,data:o}}if(Array.isArray(n)&&Array.isArray(e)){if(n.length!==e.length)return{valid:!1,mergeErrorPath:[]};const t=[];for(let i=0;iI.l&&I.r).map(([I])=>I);if(r.length&&o&&n.issues.push({...o,keys:r}),ls(n))return n;const A=ac(e.value,t.value);if(!A.valid)throw new Error(`Unmergable intersection. Error path: ${JSON.stringify(A.mergeErrorPath)}`);return n.value=A.data,n}const vk=J("$ZodRecord",(n,e)=>{Mt.init(n,e),n._zod.parse=(t,i)=>{const o=t.value;if(!Cs(o))return t.issues.push({expected:"record",code:"invalid_type",input:o,inst:n}),t;const r=[],A=e.keyType._zod.values;if(A){t.value={};const I=new Set;for(const c of A)if(typeof c=="string"||typeof c=="number"||typeof c=="symbol"){I.add(typeof c=="number"?c.toString():c);const h=e.keyType._zod.run({value:c,issues:[]},i);if(h instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(h.issues.length){t.issues.push({code:"invalid_key",origin:"record",issues:h.issues.map(v=>Qi(v,i,Wi())),input:c,path:[c],inst:n});continue}const p=h.value,m=e.valueType._zod.run({value:o[c],issues:[]},i);m instanceof Promise?r.push(m.then(v=>{v.issues.length&&t.issues.push(...cs(c,v.issues)),t.value[p]=v.value})):(m.issues.length&&t.issues.push(...cs(c,m.issues)),t.value[p]=m.value)}let l;for(const c in o)I.has(c)||(l=l??[],l.push(c));l&&l.length>0&&t.issues.push({code:"unrecognized_keys",input:o,inst:n,keys:l})}else{t.value={};for(const I of Reflect.ownKeys(o)){if(I==="__proto__"||!Object.prototype.propertyIsEnumerable.call(o,I))continue;let l=e.keyType._zod.run({value:I,issues:[]},i);if(l instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(typeof I=="string"&&em.test(I)&&l.issues.length){const p=e.keyType._zod.run({value:Number(I),issues:[]},i);if(p instanceof Promise)throw new Error("Async schemas not supported in object keys currently");p.issues.length===0&&(l=p)}if(l.issues.length){e.mode==="loose"?t.value[I]=o[I]:t.issues.push({code:"invalid_key",origin:"record",issues:l.issues.map(p=>Qi(p,i,Wi())),input:I,path:[I],inst:n});continue}const h=e.valueType._zod.run({value:o[I],issues:[]},i);h instanceof Promise?r.push(h.then(p=>{p.issues.length&&t.issues.push(...cs(I,p.issues)),t.value[l.value]=p.value})):(h.issues.length&&t.issues.push(...cs(I,h.issues)),t.value[l.value]=h.value)}}return r.length?Promise.all(r).then(()=>t):t}}),bk=J("$ZodEnum",(n,e)=>{Mt.init(n,e);const t=Fp(e.entries),i=new Set(t);n._zod.values=i,n._zod.pattern=new RegExp(`^(${t.filter(o=>kN.has(typeof o)).map(o=>typeof o=="string"?Is(o):o.toString()).join("|")})$`),n._zod.parse=(o,r)=>{const A=o.value;return i.has(A)||o.issues.push({code:"invalid_value",values:t,input:A,inst:n}),o}}),yk=J("$ZodLiteral",(n,e)=>{if(Mt.init(n,e),e.values.length===0)throw new Error("Cannot create literal schema with no valid values");const t=new Set(e.values);n._zod.values=t,n._zod.pattern=new RegExp(`^(${e.values.map(i=>typeof i=="string"?Is(i):i?Is(i.toString()):String(i)).join("|")})$`),n._zod.parse=(i,o)=>{const r=i.value;return t.has(r)||i.issues.push({code:"invalid_value",values:e.values,input:r,inst:n}),i}}),wk=J("$ZodTransform",(n,e)=>{Mt.init(n,e),n._zod.optin="optional",n._zod.parse=(t,i)=>{if(i.direction==="backward")throw new Gp(n.constructor.name);const o=e.transform(t.value,t);if(i.async)return(o instanceof Promise?o:Promise.resolve(o)).then(A=>(t.value=A,t.fallback=!0,t));if(o instanceof Promise)throw new As;return t.value=o,t.fallback=!0,t}});function lm(n,e){return e===void 0&&(n.issues.length||n.fallback)?{issues:[],value:void 0}:n}const cm=J("$ZodOptional",(n,e)=>{Mt.init(n,e),n._zod.optin="optional",n._zod.optout="optional",It(n._zod,"values",()=>e.innerType._zod.values?new Set([...e.innerType._zod.values,void 0]):void 0),It(n._zod,"pattern",()=>{const t=e.innerType._zod.pattern;return t?new RegExp(`^(${ic(t.source)})?$`):void 0}),n._zod.parse=(t,i)=>{if(e.innerType._zod.optin==="optional"){const o=t.value,r=e.innerType._zod.run(t,i);return r instanceof Promise?r.then(A=>lm(A,o)):lm(r,o)}return t.value===void 0?t:e.innerType._zod.run(t,i)}}),xk=J("$ZodExactOptional",(n,e)=>{cm.init(n,e),It(n._zod,"values",()=>e.innerType._zod.values),It(n._zod,"pattern",()=>e.innerType._zod.pattern),n._zod.parse=(t,i)=>e.innerType._zod.run(t,i)}),Ek=J("$ZodNullable",(n,e)=>{Mt.init(n,e),It(n._zod,"optin",()=>e.innerType._zod.optin),It(n._zod,"optout",()=>e.innerType._zod.optout),It(n._zod,"pattern",()=>{const t=e.innerType._zod.pattern;return t?new RegExp(`^(${ic(t.source)}|null)$`):void 0}),It(n._zod,"values",()=>e.innerType._zod.values?new Set([...e.innerType._zod.values,null]):void 0),n._zod.parse=(t,i)=>t.value===null?t:e.innerType._zod.run(t,i)}),Sk=J("$ZodDefault",(n,e)=>{Mt.init(n,e),n._zod.optin="optional",It(n._zod,"values",()=>e.innerType._zod.values),n._zod.parse=(t,i)=>{if(i.direction==="backward")return e.innerType._zod.run(t,i);if(t.value===void 0)return t.value=e.defaultValue,t;const o=e.innerType._zod.run(t,i);return o instanceof Promise?o.then(r=>dm(r,e)):dm(o,e)}});function dm(n,e){return n.value===void 0&&(n.value=e.defaultValue),n}const Tk=J("$ZodPrefault",(n,e)=>{Mt.init(n,e),n._zod.optin="optional",It(n._zod,"values",()=>e.innerType._zod.values),n._zod.parse=(t,i)=>(i.direction==="backward"||t.value===void 0&&(t.value=e.defaultValue),e.innerType._zod.run(t,i))}),Ok=J("$ZodNonOptional",(n,e)=>{Mt.init(n,e),It(n._zod,"values",()=>{const t=e.innerType._zod.values;return t?new Set([...t].filter(i=>i!==void 0)):void 0}),n._zod.parse=(t,i)=>{const o=e.innerType._zod.run(t,i);return o instanceof Promise?o.then(r=>um(r,n)):um(o,n)}});function um(n,e){return!n.issues.length&&n.value===void 0&&n.issues.push({code:"invalid_type",expected:"nonoptional",input:n.value,inst:e}),n}const Nk=J("$ZodCatch",(n,e)=>{Mt.init(n,e),n._zod.optin="optional",It(n._zod,"optout",()=>e.innerType._zod.optout),It(n._zod,"values",()=>e.innerType._zod.values),n._zod.parse=(t,i)=>{if(i.direction==="backward")return e.innerType._zod.run(t,i);const o=e.innerType._zod.run(t,i);return o instanceof Promise?o.then(r=>(t.value=r.value,r.issues.length&&(t.value=e.catchValue({...t,error:{issues:r.issues.map(A=>Qi(A,i,Wi()))},input:t.value}),t.issues=[],t.fallback=!0),t)):(t.value=o.value,o.issues.length&&(t.value=e.catchValue({...t,error:{issues:o.issues.map(r=>Qi(r,i,Wi()))},input:t.value}),t.issues=[],t.fallback=!0),t)}}),Dk=J("$ZodPipe",(n,e)=>{Mt.init(n,e),It(n._zod,"values",()=>e.in._zod.values),It(n._zod,"optin",()=>e.in._zod.optin),It(n._zod,"optout",()=>e.out._zod.optout),It(n._zod,"propValues",()=>e.in._zod.propValues),n._zod.parse=(t,i)=>{if(i.direction==="backward"){const r=e.out._zod.run(t,i);return r instanceof Promise?r.then(A=>XA(A,e.in,i)):XA(r,e.in,i)}const o=e.in._zod.run(t,i);return o instanceof Promise?o.then(r=>XA(r,e.out,i)):XA(o,e.out,i)}});function XA(n,e,t){return n.issues.length?(n.aborted=!0,n):e._zod.run({value:n.value,issues:n.issues,fallback:n.fallback},t)}const kk=J("$ZodReadonly",(n,e)=>{Mt.init(n,e),It(n._zod,"propValues",()=>e.innerType._zod.propValues),It(n._zod,"values",()=>e.innerType._zod.values),It(n._zod,"optin",()=>e.innerType?._zod?.optin),It(n._zod,"optout",()=>e.innerType?._zod?.optout),n._zod.parse=(t,i)=>{if(i.direction==="backward")return e.innerType._zod.run(t,i);const o=e.innerType._zod.run(t,i);return o instanceof Promise?o.then(hm):hm(o)}});function hm(n){return n.value=Object.freeze(n.value),n}const Mk=J("$ZodCustom",(n,e)=>{_n.init(n,e),Mt.init(n,e),n._zod.parse=(t,i)=>t,n._zod.check=t=>{const i=t.value,o=e.fn(i);if(o instanceof Promise)return o.then(r=>fm(r,t,i,n));fm(o,t,i,n)}});function fm(n,e,t,i){if(!n){const o={code:"custom",input:t,inst:i,path:[...i._zod.def.path??[]],continue:!i._zod.def.abort};i._zod.def.params&&(o.params=i._zod.def.params),e.issues.push(Zr(o))}}var pm;class Rk{constructor(){this._map=new WeakMap,this._idmap=new Map}add(e,...t){const i=t[0];return this._map.set(e,i),i&&typeof i=="object"&&"id"in i&&this._idmap.set(i.id,e),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(e){const t=this._map.get(e);return t&&typeof t=="object"&&"id"in t&&this._idmap.delete(t.id),this._map.delete(e),this}get(e){const t=e._zod.parent;if(t){const i={...this.get(t)??{}};delete i.id;const o={...i,...this._map.get(e)};return Object.keys(o).length?o:void 0}return this._map.get(e)}has(e){return this._map.has(e)}}function zk(){return new Rk}(pm=globalThis).__zod_globalRegistry??(pm.__zod_globalRegistry=zk());const Lr=globalThis.__zod_globalRegistry;function _k(n,e){return new n({type:"string",...ye(e)})}function jk(n,e){return new n({type:"string",format:"email",check:"string_format",abort:!1,...ye(e)})}function mm(n,e){return new n({type:"string",format:"guid",check:"string_format",abort:!1,...ye(e)})}function Pk(n,e){return new n({type:"string",format:"uuid",check:"string_format",abort:!1,...ye(e)})}function Bk(n,e){return new n({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...ye(e)})}function Zk(n,e){return new n({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...ye(e)})}function Lk(n,e){return new n({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...ye(e)})}function Gk(n,e){return new n({type:"string",format:"url",check:"string_format",abort:!1,...ye(e)})}function Fk(n,e){return new n({type:"string",format:"emoji",check:"string_format",abort:!1,...ye(e)})}function Vk(n,e){return new n({type:"string",format:"nanoid",check:"string_format",abort:!1,...ye(e)})}function Uk(n,e){return new n({type:"string",format:"cuid",check:"string_format",abort:!1,...ye(e)})}function Yk(n,e){return new n({type:"string",format:"cuid2",check:"string_format",abort:!1,...ye(e)})}function Hk(n,e){return new n({type:"string",format:"ulid",check:"string_format",abort:!1,...ye(e)})}function Kk(n,e){return new n({type:"string",format:"xid",check:"string_format",abort:!1,...ye(e)})}function Wk(n,e){return new n({type:"string",format:"ksuid",check:"string_format",abort:!1,...ye(e)})}function Qk(n,e){return new n({type:"string",format:"ipv4",check:"string_format",abort:!1,...ye(e)})}function Xk(n,e){return new n({type:"string",format:"ipv6",check:"string_format",abort:!1,...ye(e)})}function $k(n,e){return new n({type:"string",format:"cidrv4",check:"string_format",abort:!1,...ye(e)})}function qk(n,e){return new n({type:"string",format:"cidrv6",check:"string_format",abort:!1,...ye(e)})}function Jk(n,e){return new n({type:"string",format:"base64",check:"string_format",abort:!1,...ye(e)})}function eM(n,e){return new n({type:"string",format:"base64url",check:"string_format",abort:!1,...ye(e)})}function tM(n,e){return new n({type:"string",format:"e164",check:"string_format",abort:!1,...ye(e)})}function nM(n,e){return new n({type:"string",format:"jwt",check:"string_format",abort:!1,...ye(e)})}function iM(n,e){return new n({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...ye(e)})}function gM(n,e){return new n({type:"string",format:"date",check:"string_format",...ye(e)})}function oM(n,e){return new n({type:"string",format:"time",check:"string_format",precision:null,...ye(e)})}function sM(n,e){return new n({type:"string",format:"duration",check:"string_format",...ye(e)})}function rM(n,e){return new n({type:"number",checks:[],...ye(e)})}function aM(n,e){return new n({type:"number",check:"number_format",abort:!1,format:"safeint",...ye(e)})}function AM(n,e){return new n({type:"boolean",...ye(e)})}function CM(n){return new n({type:"unknown"})}function IM(n,e){return new n({type:"never",...ye(e)})}function vm(n,e){return new nm({check:"less_than",...ye(e),value:n,inclusive:!1})}function Ac(n,e){return new nm({check:"less_than",...ye(e),value:n,inclusive:!0})}function bm(n,e){return new im({check:"greater_than",...ye(e),value:n,inclusive:!1})}function Cc(n,e){return new im({check:"greater_than",...ye(e),value:n,inclusive:!0})}function ym(n,e){return new SD({check:"multiple_of",...ye(e),value:n})}function wm(n,e){return new OD({check:"max_length",...ye(e),maximum:n})}function $A(n,e){return new ND({check:"min_length",...ye(e),minimum:n})}function xm(n,e){return new DD({check:"length_equals",...ye(e),length:n})}function lM(n,e){return new kD({check:"string_format",format:"regex",...ye(e),pattern:n})}function cM(n){return new MD({check:"string_format",format:"lowercase",...ye(n)})}function dM(n){return new RD({check:"string_format",format:"uppercase",...ye(n)})}function uM(n,e){return new zD({check:"string_format",format:"includes",...ye(e),includes:n})}function hM(n,e){return new _D({check:"string_format",format:"starts_with",...ye(e),prefix:n})}function fM(n,e){return new jD({check:"string_format",format:"ends_with",...ye(e),suffix:n})}function ds(n){return new PD({check:"overwrite",tx:n})}function pM(n){return ds(e=>e.normalize(n))}function mM(){return ds(n=>n.trim())}function vM(){return ds(n=>n.toLowerCase())}function bM(){return ds(n=>n.toUpperCase())}function yM(){return ds(n=>NN(n))}function wM(n,e,t){return new n({type:"array",element:e,...ye(t)})}function xM(n,e,t){return new n({type:"custom",check:"custom",fn:e,...ye(t)})}function EM(n,e){const t=SM(i=>(i.addIssue=o=>{if(typeof o=="string")i.issues.push(Zr(o,i.value,t._zod.def));else{const r=o;r.fatal&&(r.continue=!1),r.code??(r.code="custom"),r.input??(r.input=i.value),r.inst??(r.inst=t),r.continue??(r.continue=!t._zod.def.abort),i.issues.push(Zr(r))}},n(i.value,i)),e);return t}function SM(n,e){const t=new _n({check:"custom",...ye(e)});return t._zod.check=n,t}function Em(n){let e=n?.target??"draft-2020-12";return e==="draft-4"&&(e="draft-04"),e==="draft-7"&&(e="draft-07"),{processors:n.processors??{},metadataRegistry:n?.metadata??Lr,target:e,unrepresentable:n?.unrepresentable??"throw",override:n?.override??(()=>{}),io:n?.io??"output",counter:0,seen:new Map,cycles:n?.cycles??"ref",reused:n?.reused??"inline",external:n?.external??void 0}}function Qt(n,e,t={path:[],schemaPath:[]}){var i;const o=n._zod.def,r=e.seen.get(n);if(r)return r.count++,t.schemaPath.includes(n)&&(r.cycle=t.path),r.schema;const A={schema:{},count:1,cycle:void 0,path:t.path};e.seen.set(n,A);const I=n._zod.toJSONSchema?.();if(I)A.schema=I;else{const h={...t,schemaPath:[...t.schemaPath,n],path:t.path};if(n._zod.processJSONSchema)n._zod.processJSONSchema(e,A.schema,h);else{const m=A.schema,v=e.processors[o.type];if(!v)throw new Error(`[toJSONSchema]: Non-representable type encountered: ${o.type}`);v(n,e,m,h)}const p=n._zod.parent;p&&(A.ref||(A.ref=p),Qt(p,e,h),e.seen.get(p).isParent=!0)}const l=e.metadataRegistry.get(n);return l&&Object.assign(A.schema,l),e.io==="input"&&On(n)&&(delete A.schema.examples,delete A.schema.default),e.io==="input"&&"_prefault"in A.schema&&((i=A.schema).default??(i.default=A.schema._prefault)),delete A.schema._prefault,e.seen.get(n).schema}function Sm(n,e){const t=n.seen.get(e);if(!t)throw new Error("Unprocessed schema. This is a bug in Zod.");const i=new Map;for(const A of n.seen.entries()){const I=n.metadataRegistry.get(A[0])?.id;if(I){const l=i.get(I);if(l&&l!==A[0])throw new Error(`Duplicate schema id "${I}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);i.set(I,A[0])}}const o=A=>{const I=n.target==="draft-2020-12"?"$defs":"definitions";if(n.external){const p=n.external.registry.get(A[0])?.id,m=n.external.uri??(x=>x);if(p)return{ref:m(p)};const v=A[1].defId??A[1].schema.id??`schema${n.counter++}`;return A[1].defId=v,{defId:v,ref:`${m("__shared")}#/${I}/${v}`}}if(A[1]===t)return{ref:"#"};const c=`#/${I}/`,h=A[1].schema.id??`__schema${n.counter++}`;return{defId:h,ref:c+h}},r=A=>{if(A[1].schema.$ref)return;const I=A[1],{ref:l,defId:c}=o(A);I.def={...I.schema},c&&(I.defId=c);const h=I.schema;for(const p in h)delete h[p];h.$ref=l};if(n.cycles==="throw")for(const A of n.seen.entries()){const I=A[1];if(I.cycle)throw new Error(`Cycle detected: #/${I.cycle?.join("/")}/ -Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(const A of n.seen.entries()){const I=A[1];if(e===A[0]){r(A);continue}if(n.external){const c=n.external.registry.get(A[0])?.id;if(e!==A[0]&&c){r(A);continue}}if(n.metadataRegistry.get(A[0])?.id){r(A);continue}if(I.cycle){r(A);continue}if(I.count>1&&n.reused==="ref"){r(A);continue}}}function bm(n,e){const t=n.seen.get(e);if(!t)throw new Error("Unprocessed schema. This is a bug in Zod.");const i=I=>{const l=n.seen.get(I);if(l.ref===null)return;const c=l.def??l.schema,h={...c},p=l.ref;if(l.ref=null,p){i(p);const b=n.seen.get(p),w=b.schema;if(w.$ref&&(n.target==="draft-07"||n.target==="draft-04"||n.target==="openapi-3.0")?(c.allOf=c.allOf??[],c.allOf.push(w)):Object.assign(c,w),Object.assign(c,h),I._zod.parent===p)for(const x in c)x==="$ref"||x==="allOf"||x in h||delete c[x];if(w.$ref&&b.def)for(const x in c)x==="$ref"||x==="allOf"||x in b.def&&JSON.stringify(c[x])===JSON.stringify(b.def[x])&&delete c[x]}const m=I._zod.parent;if(m&&m!==p){i(m);const b=n.seen.get(m);if(b?.schema.$ref&&(c.$ref=b.schema.$ref,b.def))for(const w in c)w==="$ref"||w==="allOf"||w in b.def&&JSON.stringify(c[w])===JSON.stringify(b.def[w])&&delete c[w]}n.override({zodSchema:I,jsonSchema:c,path:l.path??[]})};for(const I of[...n.seen.entries()].reverse())i(I[0]);const o={};if(n.target==="draft-2020-12"?o.$schema="https://json-schema.org/draft/2020-12/schema":n.target==="draft-07"?o.$schema="http://json-schema.org/draft-07/schema#":n.target==="draft-04"?o.$schema="http://json-schema.org/draft-04/schema#":n.target,n.external?.uri){const I=n.external.registry.get(e)?.id;if(!I)throw new Error("Schema is missing an `id` property");o.$id=n.external.uri(I)}Object.assign(o,t.def??t.schema);const r=n.metadataRegistry.get(e)?.id;r!==void 0&&o.id===r&&delete o.id;const A=n.external?.defs??{};for(const I of n.seen.entries()){const l=I[1];l.def&&l.defId&&(l.def.id===l.defId&&delete l.def.id,A[l.defId]=l.def)}n.external||Object.keys(A).length>0&&(n.target==="draft-2020-12"?o.$defs=A:o.definitions=A);try{const I=JSON.parse(JSON.stringify(o));return Object.defineProperty(I,"~standard",{value:{...e["~standard"],jsonSchema:{input:HA(e,"input",n.processors),output:HA(e,"output",n.processors)}},enumerable:!1,writable:!1}),I}catch{throw new Error("Error converting schema to JSON.")}}function Tn(n,e){const t=e??{seen:new Set};if(t.seen.has(n))return!1;t.seen.add(n);const i=n._zod.def;if(i.type==="transform")return!0;if(i.type==="array")return Tn(i.element,t);if(i.type==="set")return Tn(i.valueType,t);if(i.type==="lazy")return Tn(i.getter(),t);if(i.type==="promise"||i.type==="optional"||i.type==="nonoptional"||i.type==="nullable"||i.type==="readonly"||i.type==="default"||i.type==="prefault")return Tn(i.innerType,t);if(i.type==="intersection")return Tn(i.left,t)||Tn(i.right,t);if(i.type==="record"||i.type==="map")return Tn(i.keyType,t)||Tn(i.valueType,t);if(i.type==="pipe")return n._zod.traits.has("$ZodCodec")?!0:Tn(i.in,t)||Tn(i.out,t);if(i.type==="object"){for(const o in i.shape)if(Tn(i.shape[o],t))return!0;return!1}if(i.type==="union"){for(const o of i.options)if(Tn(o,t))return!0;return!1}if(i.type==="tuple"){for(const o of i.items)if(Tn(o,t))return!0;return!!(i.rest&&Tn(i.rest,t))}return!1}const cR=(n,e={})=>t=>{const i=mm({...t,processors:e});return Qt(n,i),vm(i,n),bm(i,n)},HA=(n,e,t={})=>i=>{const{libraryOptions:o,target:r}=i??{},A=mm({...o??{},target:r,io:e,processors:t});return Qt(n,A),vm(A,n),bm(A,n)},dR={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},uR=(n,e,t,i)=>{const o=t;o.type="string";const{minimum:r,maximum:A,format:I,patterns:l,contentEncoding:c}=n._zod.bag;if(typeof r=="number"&&(o.minLength=r),typeof A=="number"&&(o.maxLength=A),I&&(o.format=dR[I]??I,o.format===""&&delete o.format,I==="time"&&delete o.format),c&&(o.contentEncoding=c),l&&l.size>0){const h=[...l];h.length===1?o.pattern=h[0].source:h.length>1&&(o.allOf=[...h.map(p=>({...e.target==="draft-07"||e.target==="draft-04"||e.target==="openapi-3.0"?{type:"string"}:{},pattern:p.source}))])}},hR=(n,e,t,i)=>{const o=t,{minimum:r,maximum:A,format:I,multipleOf:l,exclusiveMaximum:c,exclusiveMinimum:h}=n._zod.bag;typeof I=="string"&&I.includes("int")?o.type="integer":o.type="number";const p=typeof h=="number"&&h>=(r??Number.NEGATIVE_INFINITY),m=typeof c=="number"&&c<=(A??Number.POSITIVE_INFINITY),b=e.target==="draft-04"||e.target==="openapi-3.0";p?b?(o.minimum=h,o.exclusiveMinimum=!0):o.exclusiveMinimum=h:typeof r=="number"&&(o.minimum=r),m?b?(o.maximum=c,o.exclusiveMaximum=!0):o.exclusiveMaximum=c:typeof A=="number"&&(o.maximum=A),typeof l=="number"&&(o.multipleOf=l)},fR=(n,e,t,i)=>{t.type="boolean"},pR=(n,e,t,i)=>{t.not={}},mR=(n,e,t,i)=>{},vR=(n,e,t,i)=>{const o=n._zod.def,r=jp(o.entries);r.every(A=>typeof A=="number")&&(t.type="number"),r.every(A=>typeof A=="string")&&(t.type="string"),t.enum=r},bR=(n,e,t,i)=>{const o=n._zod.def,r=[];for(const A of o.values)if(A===void 0){if(e.unrepresentable==="throw")throw new Error("Literal `undefined` cannot be represented in JSON Schema")}else if(typeof A=="bigint"){if(e.unrepresentable==="throw")throw new Error("BigInt literals cannot be represented in JSON Schema");r.push(Number(A))}else r.push(A);if(r.length!==0)if(r.length===1){const A=r[0];t.type=A===null?"null":typeof A,e.target==="draft-04"||e.target==="openapi-3.0"?t.enum=[A]:t.const=A}else r.every(A=>typeof A=="number")&&(t.type="number"),r.every(A=>typeof A=="string")&&(t.type="string"),r.every(A=>typeof A=="boolean")&&(t.type="boolean"),r.every(A=>A===null)&&(t.type="null"),t.enum=r},yR=(n,e,t,i)=>{if(e.unrepresentable==="throw")throw new Error("Custom types cannot be represented in JSON Schema")},wR=(n,e,t,i)=>{if(e.unrepresentable==="throw")throw new Error("Transforms cannot be represented in JSON Schema")},xR=(n,e,t,i)=>{const o=t,r=n._zod.def,{minimum:A,maximum:I}=n._zod.bag;typeof A=="number"&&(o.minItems=A),typeof I=="number"&&(o.maxItems=I),o.type="array",o.items=Qt(r.element,e,{...i,path:[...i.path,"items"]})},ER=(n,e,t,i)=>{const o=t,r=n._zod.def;o.type="object",o.properties={};const A=r.shape;for(const c in A)o.properties[c]=Qt(A[c],e,{...i,path:[...i.path,"properties",c]});const I=new Set(Object.keys(A)),l=new Set([...I].filter(c=>{const h=r.shape[c]._zod;return e.io==="input"?h.optin===void 0:h.optout===void 0}));l.size>0&&(o.required=Array.from(l)),r.catchall?._zod.def.type==="never"?o.additionalProperties=!1:r.catchall?r.catchall&&(o.additionalProperties=Qt(r.catchall,e,{...i,path:[...i.path,"additionalProperties"]})):e.io==="output"&&(o.additionalProperties=!1)},SR=(n,e,t,i)=>{const o=n._zod.def,r=o.inclusive===!1,A=o.options.map((I,l)=>Qt(I,e,{...i,path:[...i.path,r?"oneOf":"anyOf",l]}));r?t.oneOf=A:t.anyOf=A},TR=(n,e,t,i)=>{const o=n._zod.def,r=Qt(o.left,e,{...i,path:[...i.path,"allOf",0]}),A=Qt(o.right,e,{...i,path:[...i.path,"allOf",1]}),I=c=>"allOf"in c&&Object.keys(c).length===1,l=[...I(r)?r.allOf:[r],...I(A)?A.allOf:[A]];t.allOf=l},OR=(n,e,t,i)=>{const o=t,r=n._zod.def;o.type="object";const A=r.keyType,l=A._zod.bag?.patterns;if(r.mode==="loose"&&l&&l.size>0){const h=Qt(r.valueType,e,{...i,path:[...i.path,"patternProperties","*"]});o.patternProperties={};for(const p of l)o.patternProperties[p.source]=h}else(e.target==="draft-07"||e.target==="draft-2020-12")&&(o.propertyNames=Qt(r.keyType,e,{...i,path:[...i.path,"propertyNames"]})),o.additionalProperties=Qt(r.valueType,e,{...i,path:[...i.path,"additionalProperties"]});const c=A._zod.values;if(c){const h=[...c].filter(p=>typeof p=="string"||typeof p=="number");h.length>0&&(o.required=h)}},NR=(n,e,t,i)=>{const o=n._zod.def,r=Qt(o.innerType,e,i),A=e.seen.get(n);e.target==="openapi-3.0"?(A.ref=o.innerType,t.nullable=!0):t.anyOf=[r,{type:"null"}]},DR=(n,e,t,i)=>{const o=n._zod.def;Qt(o.innerType,e,i);const r=e.seen.get(n);r.ref=o.innerType},MR=(n,e,t,i)=>{const o=n._zod.def;Qt(o.innerType,e,i);const r=e.seen.get(n);r.ref=o.innerType,t.default=JSON.parse(JSON.stringify(o.defaultValue))},RR=(n,e,t,i)=>{const o=n._zod.def;Qt(o.innerType,e,i);const r=e.seen.get(n);r.ref=o.innerType,e.io==="input"&&(t._prefault=JSON.parse(JSON.stringify(o.defaultValue)))},kR=(n,e,t,i)=>{const o=n._zod.def;Qt(o.innerType,e,i);const r=e.seen.get(n);r.ref=o.innerType;let A;try{A=o.catchValue(void 0)}catch{throw new Error("Dynamic catch values are not supported in JSON Schema")}t.default=A},zR=(n,e,t,i)=>{const o=n._zod.def,r=o.in._zod.traits.has("$ZodTransform"),A=e.io==="input"?r?o.out:o.in:o.out;Qt(A,e,i);const I=e.seen.get(n);I.ref=A},_R=(n,e,t,i)=>{const o=n._zod.def;Qt(o.innerType,e,i);const r=e.seen.get(n);r.ref=o.innerType,t.readOnly=!0},ym=(n,e,t,i)=>{const o=n._zod.def;Qt(o.innerType,e,i);const r=e.seen.get(n);r.ref=o.innerType},jR=q("ZodISODateTime",(n,e)=>{ZD.init(n,e),zt.init(n,e)});function ZR(n){return VM(jR,n)}const PR=q("ZodISODate",(n,e)=>{PD.init(n,e),zt.init(n,e)});function BR(n){return UM(PR,n)}const LR=q("ZodISOTime",(n,e)=>{BD.init(n,e),zt.init(n,e)});function GR(n){return YM(LR,n)}const FR=q("ZodISODuration",(n,e)=>{LD.init(n,e),zt.init(n,e)});function VR(n){return HM(FR,n)}const ni=q("ZodError",(n,e)=>{Fp.init(n,e),n.name="ZodError",Object.defineProperties(n,{format:{value:t=>NN(n,t)},flatten:{value:t=>ON(n,t)},addIssue:{value:t=>{n.issues.push(t),n.message=JSON.stringify(n.issues,Xl,2)}},addIssues:{value:t=>{n.issues.push(...t),n.message=JSON.stringify(n.issues,Xl,2)}},isEmpty:{get(){return n.issues.length===0}}})},{Parent:Error}),UR=ec(ni),YR=tc(ni),HR=LA(ni),KR=GA(ni),WR=RN(ni),QR=kN(ni),XR=zN(ni),$R=_N(ni),qR=jN(ni),JR=ZN(ni),ek=PN(ni),tk=BN(ni),wm=new WeakMap;function Pr(n,e,t){const i=Object.getPrototypeOf(n);let o=wm.get(i);if(o||(o=new Set,wm.set(i,o)),!o.has(e)){o.add(e);for(const r in t){const A=t[r];Object.defineProperty(i,r,{configurable:!0,enumerable:!1,get(){const I=A.bind(this);return Object.defineProperty(this,r,{configurable:!0,writable:!0,enumerable:!0,value:I}),I},set(I){Object.defineProperty(this,r,{configurable:!0,writable:!0,enumerable:!0,value:I})}})}}}const kt=q("ZodType",(n,e)=>(Rt.init(n,e),Object.assign(n["~standard"],{jsonSchema:{input:HA(n,"input"),output:HA(n,"output")}}),n.toJSONSchema=cR(n,{}),n.def=e,n.type=e.type,Object.defineProperty(n,"_def",{value:e}),n.parse=(t,i)=>UR(n,t,i,{callee:n.parse}),n.safeParse=(t,i)=>HR(n,t,i),n.parseAsync=async(t,i)=>YR(n,t,i,{callee:n.parseAsync}),n.safeParseAsync=async(t,i)=>KR(n,t,i),n.spa=n.safeParseAsync,n.encode=(t,i)=>WR(n,t,i),n.decode=(t,i)=>QR(n,t,i),n.encodeAsync=async(t,i)=>XR(n,t,i),n.decodeAsync=async(t,i)=>$R(n,t,i),n.safeEncode=(t,i)=>qR(n,t,i),n.safeDecode=(t,i)=>JR(n,t,i),n.safeEncodeAsync=async(t,i)=>ek(n,t,i),n.safeDecodeAsync=async(t,i)=>tk(n,t,i),Pr(n,"ZodType",{check(...t){const i=this.def;return this.clone(xg(i,{checks:[...i.checks??[],...t.map(o=>typeof o=="function"?{_zod:{check:o,def:{check:"custom"},onattach:[]}}:o)]}),{parent:!0})},with(...t){return this.check(...t)},clone(t,i){return Eg(this,t,i)},brand(){return this},register(t,i){return t.add(this,i),this},refine(t,i){return this.check(Yk(t,i))},superRefine(t,i){return this.check(Hk(t,i))},overwrite(t){return this.check(ls(t))},optional(){return zm(this)},exactOptional(){return Rk(this)},nullable(){return _m(this)},nullish(){return zm(_m(this))},nonoptional(t){return Pk(this,t)},array(){return Te(this)},or(t){return Mm([this,t])},and(t){return Tk(this,t)},transform(t){return Zm(this,Dk(t))},default(t){return _k(this,t)},prefault(t){return Zk(this,t)},catch(t){return Lk(this,t)},pipe(t){return Zm(this,t)},readonly(){return Vk(this)},describe(t){const i=this.clone();return Zr.add(i,{description:t}),i},meta(...t){if(t.length===0)return Zr.get(this);const i=this.clone();return Zr.add(i,t[0]),i},isOptional(){return this.safeParse(void 0).success},isNullable(){return this.safeParse(null).success},apply(t){return t(this)}}),Object.defineProperty(n,"description",{get(){return Zr.get(n)?.description},configurable:!0}),n)),xm=q("_ZodString",(n,e)=>{nc.init(n,e),kt.init(n,e),n._zod.processJSONSchema=(i,o,r)=>uR(n,i,o);const t=n._zod.bag;n.format=t.format??null,n.minLength=t.minimum??null,n.maxLength=t.maximum??null,Pr(n,"_ZodString",{regex(...i){return this.check(qM(...i))},includes(...i){return this.check(tR(...i))},startsWith(...i){return this.check(nR(...i))},endsWith(...i){return this.check(iR(...i))},min(...i){return this.check(YA(...i))},max(...i){return this.check(fm(...i))},length(...i){return this.check(pm(...i))},nonempty(...i){return this.check(YA(1,...i))},lowercase(i){return this.check(JM(i))},uppercase(i){return this.check(eR(i))},trim(){return this.check(oR())},normalize(...i){return this.check(gR(...i))},toLowerCase(){return this.check(sR())},toUpperCase(){return this.check(rR())},slugify(){return this.check(aR())}})}),nk=q("ZodString",(n,e)=>{nc.init(n,e),xm.init(n,e),n.email=t=>n.check(yM(ik,t)),n.url=t=>n.check(TM(gk,t)),n.jwt=t=>n.check(FM(mk,t)),n.emoji=t=>n.check(OM(ok,t)),n.guid=t=>n.check(cm(Em,t)),n.uuid=t=>n.check(wM(KA,t)),n.uuidv4=t=>n.check(xM(KA,t)),n.uuidv6=t=>n.check(EM(KA,t)),n.uuidv7=t=>n.check(SM(KA,t)),n.nanoid=t=>n.check(NM(sk,t)),n.guid=t=>n.check(cm(Em,t)),n.cuid=t=>n.check(DM(rk,t)),n.cuid2=t=>n.check(MM(ak,t)),n.ulid=t=>n.check(RM(Ak,t)),n.base64=t=>n.check(BM(hk,t)),n.base64url=t=>n.check(LM(fk,t)),n.xid=t=>n.check(kM(Ck,t)),n.ksuid=t=>n.check(zM(Ik,t)),n.ipv4=t=>n.check(_M(lk,t)),n.ipv6=t=>n.check(jM(ck,t)),n.cidrv4=t=>n.check(ZM(dk,t)),n.cidrv6=t=>n.check(PM(uk,t)),n.e164=t=>n.check(GM(pk,t)),n.datetime=t=>n.check(ZR(t)),n.date=t=>n.check(BR(t)),n.time=t=>n.check(GR(t)),n.duration=t=>n.check(VR(t))});function M(n){return bM(nk,n)}const zt=q("ZodStringFormat",(n,e)=>{Ot.init(n,e),xm.init(n,e)}),ik=q("ZodEmail",(n,e)=>{OD.init(n,e),zt.init(n,e)}),Em=q("ZodGUID",(n,e)=>{SD.init(n,e),zt.init(n,e)}),KA=q("ZodUUID",(n,e)=>{TD.init(n,e),zt.init(n,e)}),gk=q("ZodURL",(n,e)=>{ND.init(n,e),zt.init(n,e)}),ok=q("ZodEmoji",(n,e)=>{DD.init(n,e),zt.init(n,e)}),sk=q("ZodNanoID",(n,e)=>{MD.init(n,e),zt.init(n,e)}),rk=q("ZodCUID",(n,e)=>{RD.init(n,e),zt.init(n,e)}),ak=q("ZodCUID2",(n,e)=>{kD.init(n,e),zt.init(n,e)}),Ak=q("ZodULID",(n,e)=>{zD.init(n,e),zt.init(n,e)}),Ck=q("ZodXID",(n,e)=>{_D.init(n,e),zt.init(n,e)}),Ik=q("ZodKSUID",(n,e)=>{jD.init(n,e),zt.init(n,e)}),lk=q("ZodIPv4",(n,e)=>{GD.init(n,e),zt.init(n,e)}),ck=q("ZodIPv6",(n,e)=>{FD.init(n,e),zt.init(n,e)}),dk=q("ZodCIDRv4",(n,e)=>{VD.init(n,e),zt.init(n,e)}),uk=q("ZodCIDRv6",(n,e)=>{UD.init(n,e),zt.init(n,e)}),hk=q("ZodBase64",(n,e)=>{YD.init(n,e),zt.init(n,e)}),fk=q("ZodBase64URL",(n,e)=>{KD.init(n,e),zt.init(n,e)}),pk=q("ZodE164",(n,e)=>{WD.init(n,e),zt.init(n,e)}),mk=q("ZodJWT",(n,e)=>{XD.init(n,e),zt.init(n,e)}),Sm=q("ZodNumber",(n,e)=>{Jp.init(n,e),kt.init(n,e),n._zod.processJSONSchema=(i,o,r)=>hR(n,i,o),Pr(n,"ZodNumber",{gt(i,o){return this.check(um(i,o))},gte(i,o){return this.check(oc(i,o))},min(i,o){return this.check(oc(i,o))},lt(i,o){return this.check(dm(i,o))},lte(i,o){return this.check(gc(i,o))},max(i,o){return this.check(gc(i,o))},int(i){return this.check(Tm(i))},safe(i){return this.check(Tm(i))},positive(i){return this.check(um(0,i))},nonnegative(i){return this.check(oc(0,i))},negative(i){return this.check(dm(0,i))},nonpositive(i){return this.check(gc(0,i))},multipleOf(i,o){return this.check(hm(i,o))},step(i,o){return this.check(hm(i,o))},finite(){return this}});const t=n._zod.bag;n.minValue=Math.max(t.minimum??Number.NEGATIVE_INFINITY,t.exclusiveMinimum??Number.NEGATIVE_INFINITY)??null,n.maxValue=Math.min(t.maximum??Number.POSITIVE_INFINITY,t.exclusiveMaximum??Number.POSITIVE_INFINITY)??null,n.isInt=(t.format??"").includes("int")||Number.isSafeInteger(t.multipleOf??.5),n.isFinite=!0,n.format=t.format??null});function B(n){return KM(Sm,n)}const vk=q("ZodNumberFormat",(n,e)=>{$D.init(n,e),Sm.init(n,e)});function Tm(n){return WM(vk,n)}const bk=q("ZodBoolean",(n,e)=>{qD.init(n,e),kt.init(n,e),n._zod.processJSONSchema=(t,i,o)=>fR(n,t,i)});function dn(n){return QM(bk,n)}const yk=q("ZodUnknown",(n,e)=>{JD.init(n,e),kt.init(n,e),n._zod.processJSONSchema=(t,i,o)=>mR()});function Sg(){return XM(yk)}const wk=q("ZodNever",(n,e)=>{eM.init(n,e),kt.init(n,e),n._zod.processJSONSchema=(t,i,o)=>pR(n,t,i)});function Om(n){return $M(wk,n)}const xk=q("ZodArray",(n,e)=>{tM.init(n,e),kt.init(n,e),n._zod.processJSONSchema=(t,i,o)=>xR(n,t,i,o),n.element=e.element,Pr(n,"ZodArray",{min(t,i){return this.check(YA(t,i))},nonempty(t){return this.check(YA(1,t))},max(t,i){return this.check(fm(t,i))},length(t,i){return this.check(pm(t,i))},unwrap(){return this.element}})});function Te(n,e){return AR(xk,n,e)}const Nm=q("ZodObject",(n,e)=>{iM.init(n,e),kt.init(n,e),n._zod.processJSONSchema=(t,i,o)=>ER(n,t,i,o),It(n,"shape",()=>e.shape),Pr(n,"ZodObject",{keyof(){return Be(Object.keys(this._zod.def.shape))},catchall(t){return this.clone({...this._zod.def,catchall:t})},passthrough(){return this.clone({...this._zod.def,catchall:Sg()})},loose(){return this.clone({...this._zod.def,catchall:Sg()})},strict(){return this.clone({...this._zod.def,catchall:Om()})},strip(){return this.clone({...this._zod.def,catchall:void 0})},extend(t){return yN(this,t)},safeExtend(t){return wN(this,t)},merge(t){return xN(this,t)},pick(t){return vN(this,t)},omit(t){return bN(this,t)},partial(...t){return EN(km,this,t[0])},required(...t){return SN(jm,this,t[0])}})});function tt(n,e){const t={type:"object",shape:n??{},...ye(e)};return new Nm(t)}function ce(n,e){return new Nm({type:"object",shape:n,catchall:Om(),...ye(e)})}const Dm=q("ZodUnion",(n,e)=>{gm.init(n,e),kt.init(n,e),n._zod.processJSONSchema=(t,i,o)=>SR(n,t,i,o),n.options=e.options});function Mm(n,e){return new Dm({type:"union",options:n,...ye(e)})}const Ek=q("ZodDiscriminatedUnion",(n,e)=>{Dm.init(n,e),gM.init(n,e)});function WA(n,e,t){return new Ek({type:"union",options:e,discriminator:n,...ye(t)})}const Sk=q("ZodIntersection",(n,e)=>{oM.init(n,e),kt.init(n,e),n._zod.processJSONSchema=(t,i,o)=>TR(n,t,i,o)});function Tk(n,e){return new Sk({type:"intersection",left:n,right:e})}const Rm=q("ZodRecord",(n,e)=>{sM.init(n,e),kt.init(n,e),n._zod.processJSONSchema=(t,i,o)=>OR(n,t,i,o),n.keyType=e.keyType,n.valueType=e.valueType});function sc(n,e,t){return!e||!e._zod?new Rm({type:"record",keyType:M(),valueType:n,...ye(e)}):new Rm({type:"record",keyType:n,valueType:e,...ye(t)})}const rc=q("ZodEnum",(n,e)=>{rM.init(n,e),kt.init(n,e),n._zod.processJSONSchema=(i,o,r)=>vR(n,i,o),n.enum=e.entries,n.options=Object.values(e.entries);const t=new Set(Object.keys(e.entries));n.extract=(i,o)=>{const r={};for(const A of i)if(t.has(A))r[A]=e.entries[A];else throw new Error(`Key ${A} not found in enum`);return new rc({...e,checks:[],...ye(o),entries:r})},n.exclude=(i,o)=>{const r={...e.entries};for(const A of i)if(t.has(A))delete r[A];else throw new Error(`Key ${A} not found in enum`);return new rc({...e,checks:[],...ye(o),entries:r})}});function Be(n,e){const t=Array.isArray(n)?Object.fromEntries(n.map(i=>[i,i])):n;return new rc({type:"enum",entries:t,...ye(e)})}const Ok=q("ZodLiteral",(n,e)=>{aM.init(n,e),kt.init(n,e),n._zod.processJSONSchema=(t,i,o)=>bR(n,t,i),n.values=new Set(e.values),Object.defineProperty(n,"value",{get(){if(e.values.length>1)throw new Error("This schema contains multiple valid literal values. Use `.values` instead.");return e.values[0]}})});function it(n,e){return new Ok({type:"literal",values:Array.isArray(n)?n:[n],...ye(e)})}const Nk=q("ZodTransform",(n,e)=>{AM.init(n,e),kt.init(n,e),n._zod.processJSONSchema=(t,i,o)=>wR(n,t),n._zod.parse=(t,i)=>{if(i.direction==="backward")throw new _p(n.constructor.name);t.addIssue=r=>{if(typeof r=="string")t.issues.push(jr(r,t.value,e));else{const A=r;A.fatal&&(A.continue=!1),A.code??(A.code="custom"),A.input??(A.input=t.value),A.inst??(A.inst=n),t.issues.push(jr(A))}};const o=e.transform(t.value,t);return o instanceof Promise?o.then(r=>(t.value=r,t.fallback=!0,t)):(t.value=o,t.fallback=!0,t)}});function Dk(n){return new Nk({type:"transform",transform:n})}const km=q("ZodOptional",(n,e)=>{rm.init(n,e),kt.init(n,e),n._zod.processJSONSchema=(t,i,o)=>ym(n,t,i,o),n.unwrap=()=>n._zod.def.innerType});function zm(n){return new km({type:"optional",innerType:n})}const Mk=q("ZodExactOptional",(n,e)=>{CM.init(n,e),kt.init(n,e),n._zod.processJSONSchema=(t,i,o)=>ym(n,t,i,o),n.unwrap=()=>n._zod.def.innerType});function Rk(n){return new Mk({type:"optional",innerType:n})}const kk=q("ZodNullable",(n,e)=>{IM.init(n,e),kt.init(n,e),n._zod.processJSONSchema=(t,i,o)=>NR(n,t,i,o),n.unwrap=()=>n._zod.def.innerType});function _m(n){return new kk({type:"nullable",innerType:n})}const zk=q("ZodDefault",(n,e)=>{lM.init(n,e),kt.init(n,e),n._zod.processJSONSchema=(t,i,o)=>MR(n,t,i,o),n.unwrap=()=>n._zod.def.innerType,n.removeDefault=n.unwrap});function _k(n,e){return new zk({type:"default",innerType:n,get defaultValue(){return typeof e=="function"?e():Lp(e)}})}const jk=q("ZodPrefault",(n,e)=>{cM.init(n,e),kt.init(n,e),n._zod.processJSONSchema=(t,i,o)=>RR(n,t,i,o),n.unwrap=()=>n._zod.def.innerType});function Zk(n,e){return new jk({type:"prefault",innerType:n,get defaultValue(){return typeof e=="function"?e():Lp(e)}})}const jm=q("ZodNonOptional",(n,e)=>{dM.init(n,e),kt.init(n,e),n._zod.processJSONSchema=(t,i,o)=>DR(n,t,i,o),n.unwrap=()=>n._zod.def.innerType});function Pk(n,e){return new jm({type:"nonoptional",innerType:n,...ye(e)})}const Bk=q("ZodCatch",(n,e)=>{uM.init(n,e),kt.init(n,e),n._zod.processJSONSchema=(t,i,o)=>kR(n,t,i,o),n.unwrap=()=>n._zod.def.innerType,n.removeCatch=n.unwrap});function Lk(n,e){return new Bk({type:"catch",innerType:n,catchValue:typeof e=="function"?e:()=>e})}const Gk=q("ZodPipe",(n,e)=>{hM.init(n,e),kt.init(n,e),n._zod.processJSONSchema=(t,i,o)=>zR(n,t,i,o),n.in=e.in,n.out=e.out});function Zm(n,e){return new Gk({type:"pipe",in:n,out:e})}const Fk=q("ZodReadonly",(n,e)=>{fM.init(n,e),kt.init(n,e),n._zod.processJSONSchema=(t,i,o)=>_R(n,t,i,o),n.unwrap=()=>n._zod.def.innerType});function Vk(n){return new Fk({type:"readonly",innerType:n})}const Uk=q("ZodCustom",(n,e)=>{pM.init(n,e),kt.init(n,e),n._zod.processJSONSchema=(t,i,o)=>yR(n,t)});function Yk(n,e={}){return CR(Uk,n,e)}function Hk(n,e){return IR(n,e)}const Kk="compass.query/1",Wk=["file","module","package","namespace","class","struct","interface","trait","protocol","enum","enum_member","type_alias","function","method","constructor","property","field","variable","constant","parameter","import","export","macro","annotation","route","component","event","message","topic","queue","job","resource","schema","query","migration","config_key","database","database_schema","database_table","database_view","database_column","database_index","database_constraint","database_procedure","database_trigger"],Qk=["contains","calls","imports","exports","extends","implements","references","type_of","returns","instantiates","overrides","decorates","routes_to","reads","writes","aliases","registers","handles","publishes","subscribes","produces","consumes","schedules","triggers","tests","depends_on","documents","maps_to"],Xk=["controller","route_handler","middleware","service","resolver","consumer","producer","subscriber","repository","model","test","fixture","generated"],$k=["search","callers","callees","impact","explore","node_trail"],ac=M().min(1).refine(n=>n.includes("\\")||n.startsWith("/")||/^[A-Za-z]:/.test(n)?!1:n.split("/").every(e=>e!==""&&e!=="."&&e!==".."),"source path must be a safe repository-relative path"),Br=ce({file:ac,startByte:B().int().nonnegative(),endByte:B().int().nonnegative(),startLine:B().int().positive(),startColumn:B().int().nonnegative(),endLine:B().int().positive(),endColumn:B().int().nonnegative()}).refine(n=>n.endByte>=n.startByte&&(n.endLine>n.startLine||n.endLine===n.startLine&&n.endColumn>=n.startColumn),"source anchor must be ordered"),qk=Be(Wk),Jk=Be(Qk),ez=Be(Xk),tz=Be($k),nz=Be(["structural_graph","program_ir"]),iz=Be(["ast","config","convention","artifact","heuristic"]),Ac=Be(["exact","inferred","ambiguous"]),Cc=Be(["exact","ambiguous","unresolved"]),gz=ce({nodeId:M().min(1),reason:M().min(1),confidence:Ac,score:B().finite().nullable().optional(),anchor:Br.nullable().optional()}),QA=ce({layer:nz,origin:iz,extractor:M().min(1),confidence:Ac,anchor:Br.nullable(),rule:M().min(1).nullable(),wiringSite:Br.nullable(),resolution:Cc,candidates:Te(gz).max(20).default([])}),oz=ce({type:it("file"),data:ce({contentDigest:M().min(1),byteSize:B().int().nonnegative(),generated:dn()})}),sz=ce({type:it("symbol"),data:ce({signature:M().nullable().optional(),modifiers:Te(M()).default([]),overloadDiscriminator:M().nullable().optional(),declaringType:M().nullable().optional(),signatureDigest:M().nullable().optional(),implementationDigest:M().nullable().optional(),sourceDigest:M().nullable().optional()})}),rz=ce({type:it("import_export"),data:ce({specifier:M(),importedName:M().nullable().optional(),localName:M().nullable().optional(),typeOnly:dn()})}),az=ce({type:it("route"),data:ce({operation:M(),path:M(),originalPath:M().nullable().optional(),declaringScope:M(),resolution:Cc,middlewareCount:B().int().nonnegative()})}),Az=ce({type:it("component"),data:ce({componentType:M()})}),Cz=ce({type:it("resource"),data:ce({resourceKind:Be(["document","paper","image","concept","rationale"]),uri:M().nullable().optional(),mediaType:M().nullable().optional()})}),Iz=ce({type:it("messaging"),data:ce({transport:M(),subject:M(),declaringScope:M()})}),lz=ce({type:it("job"),data:ce({schedule:M().nullable().optional(),queue:M().nullable().optional()})}),cz=ce({type:it("schema"),data:ce({dialect:M().nullable().optional(),logicalDatabase:M().nullable().optional(),namespace:M().nullable().optional()})}),dz=ce({type:it("query"),data:ce({dialect:M().nullable().optional(),operation:M().nullable().optional(),textDigest:M().nullable().optional()})}),uz=ce({type:it("config"),data:ce({format:M(),keyPath:M()})}),hz=ce({type:it("database"),data:ce({logicalDatabase:M(),databaseSchema:M().nullable().optional()})}),fz=WA("type",[oz,sz,rz,az,Az,Cz,Iz,lz,cz,dz,uz,hz]),pz=ce({type:it("call"),data:ce({dispatch:Be(["static","virtual","dynamic"]),receiverType:M().nullable().optional(),argumentCount:B().int().nonnegative().nullable().optional()})}),mz=ce({type:it("route"),data:ce({stage:Be(["middleware","handler"]),position:B().int().nonnegative().nullable().optional(),operation:M().nullable().optional()})}),vz=ce({type:it("messaging"),data:ce({transport:M(),subject:M()})}),bz=ce({type:it("schedule"),data:ce({expression:M().nullable().optional()})}),yz=ce({type:it("mapping"),data:ce({mappingKind:M()})}),Pm=WA("type",[pz,mz,vz,bz,yz]),wz=ce({maxDepth:B().int().positive(),maxNodes:B().int().positive(),maxEdges:B().int().positive(),maxPaths:B().int().positive(),maxCandidates:B().int().positive(),maxSourceBytes:B().int().positive(),maxResponseBytes:B().int().positive()}),xz=ce({nodeId:M().min(1),score:B().finite(),matchedFields:Te(M())}),Ez=ce({id:M().min(1),kind:qk,roles:Te(ez),name:M().min(1),qualifiedName:M().min(1),language:M().nullable(),framework:M().nullable(),source:Br.nullable(),details:fz.nullable(),evidence:Te(QA)}),Sz=ce({id:M().min(1),source:M().min(1),target:M().min(1),kind:Jk,relationshipSite:Br.nullable(),details:Pm.nullable(),evidence:Te(QA)}),Tz=ce({path:ac,contentDigest:M().min(1),source:M().nullable(),truncated:dn()}),Oz=ce({id:M().min(1),nodeIds:Te(M().min(1)),edgeIds:Te(M().min(1)),weakestResolution:Cc,weakestConfidence:Ac}),Nz=ce({code:Be(["no_match","ambiguous_match","direction_mismatch","unresolved_handler","incomplete_coverage","stale_source_digest","bounded_truncation","program_orphan","program_conflict","program_unavailable"]),message:M().min(1),nodeId:M().nullable(),path:ac.nullable()}),Dz=ce({schema:it(Kk),operation:tz,results:Te(xz),nodes:Te(Ez),edges:Te(Sz),files:Te(Tz),paths:Te(Oz),diagnostics:Te(Nz),limits:wz,truncated:dn()}),Mz="compass.viewer.graph/1",Ic=tt({file:M(),startLine:B().int().positive().optional(),endLine:B().int().positive().optional(),startByte:B().int().nonnegative().optional(),endByte:B().int().nonnegative().optional()}).passthrough(),Rz=tt({field:M().min(1),before:Sg().optional(),after:Sg().optional()}),Bm=tt({before:sc(M(),Sg()).optional(),after:sc(M(),Sg()).optional(),fields:Te(Rz)}),Lm=tt({challenge:M().startsWith("challenge:"),targetId:M().min(1),effect:Be(["flag","mask"]),masked:dn(),certificateDigest:M().regex(/^[0-9a-f]{64}$/),summary:M()}).strict(),kz=tt({total:B().int().nonnegative(),examples:Te(tt({kind:Be(["assertion","challenge"]),id:M().min(1),reasonCode:M().min(1),explanation:M(),sequence:B().int().nonnegative()}).strict()),omittedExamples:B().int().nonnegative()}).strict(),zz=tt({id:M().min(1),label:M(),kind:M().optional(),community:B().int(),communityName:M().optional(),degree:B().int().nonnegative().optional(),language:M().optional(),signature:M().optional(),size:B().positive().optional(),memberCount:B().int().nonnegative().optional(),detailAvailable:dn().optional(),learningStatus:M().optional(),learningStale:dn().optional(),depth:B().int().nonnegative().optional(),root:dn().optional(),agentAssertion:M().startsWith("assertion:").optional(),agentSummary:M().optional(),groundingStatus:it("GROUNDED").optional(),challenged:dn().optional(),challenge:Lm.optional(),change:Be(["added","removed","changed","unchanged"]).optional(),evidence:Bm.optional(),codeEvidence:Te(QA).optional(),source:Ic.optional(),color:tt({background:M(),border:M()}).passthrough().optional()}).passthrough(),_z=tt({id:M().min(1),source:M().min(1),target:M().min(1),relation:M(),weight:B().int().positive().optional(),change:Be(["added","removed","changed","unchanged"]).optional(),evidence:Bm.optional(),codeEvidence:Te(QA).optional(),details:Pm.nullable().optional(),relationshipSite:Ic.optional(),confidence:Be(["extracted","inferred","ambiguous","aggregated"]).optional(),agentAssertion:M().startsWith("assertion:").optional(),agentSummary:M().optional(),groundingStatus:it("GROUNDED").optional(),challenged:dn().optional(),challenge:Lm.optional()}).passthrough(),jz=tt({id:B().int(),label:M(),color:M(),hidden:dn().default(!1)}).passthrough(),Tg=tt({schema:it(Mz),title:M(),stats:tt({nodes:B().int().nonnegative(),edges:B().int().nonnegative(),communities:B().int().nonnegative(),aggregated:dn()}).passthrough(),nodes:Te(zz),edges:Te(_z),communities:Te(jz),hyperedges:Te(Sg()).default([]),effectiveGraph:tt({effectiveIdentity:M().regex(/^[0-9a-f]{64}$/),baseGeneration:tt({generationId:M().min(1),graphDigest:M().regex(/^[0-9a-f]{64}$/)}).strict(),overlayRevision:M().regex(/^[0-9a-f]{64}$/),compositionProfile:Be(["augment","curated"]),retractions:kz,omissions:tt({total:B().int().nonnegative(),direct:B().int().nonnegative(),cascaded:B().int().nonnegative(),examples:Te(Sg()),omittedExamples:B().int().nonnegative()}).strict()}).strict().optional()}).passthrough(),Zz=Be(["resolved","inferred","ambiguous","unresolved"]),Gm=tt({source_file:M(),start_byte:B().int().nonnegative(),end_byte:B().int().nonnegative()}),Pz=tt({id:M(),symbol:M().nullable(),name:M(),file:M().nullable(),anchor:Gm.nullable().optional(),startLine:B().int().positive().nullable().optional(),endLine:B().int().positive().nullable().optional(),startByte:B().int().nonnegative().nullable().optional(),endByte:B().int().nonnegative().nullable().optional(),graphNodeId:M().nullable(),unresolved:dn(),evidenceLayer:Be(["structural_graph","program_ir","combined"]).optional()}),Bz=Mm([tt({anchor:Gm,evidence:Te(M())}),tt({sourceFile:M().nullable(),line:B().int().positive().nullable(),startByte:B().int().nonnegative().nullable(),endByte:B().int().nonnegative().nullable(),evidence:Te(M())})]),Lz=tt({id:M(),source:M(),target:M(),callee:M(),resolution:Zz,confidence:M().nullable().optional(),callSites:Te(Bz),evidenceLayer:Be(["structural_graph","program_ir","combined"]).optional()}),Gz=tt({schema:Be(["compass.program.call_graph/1","compass.call_graph/1"]),rootSymbol:M(),direction:Be(["callers","callees","both"]),depth:B().int().positive(),nodes:Te(Pz),edges:Te(Lz),truncated:dn(),continuations:Te(tt({symbol:M(),direction:Be(["callers","callees","both"]),nextDepth:B().int().positive()})),coverage:tt({resolved:B().int().nonnegative(),inferred:B().int().nonnegative(),ambiguous:B().int().nonnegative(),unresolved:B().int().nonnegative(),evidenceLayer:Be(["structural_graph","program_ir","combined"]).optional(),partial:dn().optional(),limitations:Te(M()).optional(),warning:M()})}),Fz="compass.viewer.architecture/1",Vz=Be(["production","all_code"]),Fm=Be(["execution","dependency","type","structure","contextual","unknown"]),Vm=Be(["architecture","execution","dependency","type","structure","all"]),Uz=Be(["owner","subsystem"]),Yz=Be(["overview","detail"]),Hz=Be(["overlay","persisted","owner","path","declaration","hub","provider","fallback"]),Kz=Be(["good","degraded","insufficient"]),Wz=Be(["info","warning","error"]),Qz=Be(["production","test","generated","vendor","documentation","unknown"]),Um=ce({production:B().int().nonnegative(),test:B().int().nonnegative(),generated:B().int().nonnegative(),vendor:B().int().nonnegative(),documentation:B().int().nonnegative(),unknown:B().int().nonnegative()}),Ym=ce({execution:B().int().nonnegative(),dependency:B().int().nonnegative(),type:B().int().nonnegative(),structure:B().int().nonnegative(),contextual:B().int().nonnegative(),unknown:B().int().nonnegative()}),Xz=ce({extracted:B().int().nonnegative(),inferred:B().int().nonnegative(),ambiguous:B().int().nonnegative()}),$z=ce({id:M().min(1),label:M(),kind:M(),sourceFile:M().nullable(),sourceScope:Qz,scopeReason:M().min(1),community:B().int().nonnegative().nullable()}),qz=ce({id:M().min(1),source:M().min(1),target:M().min(1),relation:M(),relationClass:Fm,confidence:Be(["extracted","inferred","ambiguous"])}),Jz=ce({value:M().min(1),provenance:Hz,membershipSignature:M().min(1),quality:B().int().min(0).max(100),evidence:Te(M())}),e3=ce({id:M().min(1),parentId:M().nullable(),kind:Uz,rank:B().int().positive(),name:Jz,ownerKey:M().min(1),communityIds:Te(B().int().nonnegative()),nodeCount:B().int().nonnegative(),relationshipCount:B().int().nonnegative(),neighborCount:B().int().nonnegative(),cohesion:B().finite(),sourceScopes:Um,pinned:dn()}),t3=ce({nodeIndex:B().int().nonnegative(),groupIndex:B().int().nonnegative()}),n3=ce({id:M().min(1),level:Yz,ownerId:M().nullable(),sourceGroup:M().min(1),targetGroup:M().min(1),relationshipCount:B().int().nonnegative(),relationClasses:Ym,evidence:Xz}),i3=ce({admitted:B().int().nonnegative(),internal:B().int().nonnegative(),crossGroup:B().int().nonnegative(),unassigned:B().int().nonnegative(),relationClasses:Ym}),Hm=ce({totalGroups:B().int().nonnegative(),shownGroups:B().int().nonnegative(),omittedGroups:B().int().nonnegative(),representedNodes:B().int().nonnegative(),omittedNodes:B().int().nonnegative(),representedRelationships:B().int().nonnegative(),omittedRelationships:B().int().nonnegative(),witnessGroupIds:Te(M()),maxOverviewGroups:B().int().positive(),maxOverviewRoutes:B().int().positive()}),g3=ce({code:M().min(1),severity:Wz,message:M(),observed:B().nullable(),threshold:B().nullable(),witnesses:Te(M()),recommendedAction:M()}),Km=ce({status:Kz,metrics:ce({sourceScopes:Um,unknownSourceFraction:B().min(0).max(1),generatedVendorLeakage:B().int().nonnegative(),representedNodeFraction:B().min(0).max(1),representedRelationshipFraction:B().min(0).max(1),duplicateNames:B().int().nonnegative(),fallbackNames:B().int().nonnegative(),largestGroupFraction:B().min(0).max(1),unknownRelations:B().int().nonnegative(),unassignedNodes:B().int().nonnegative(),unassignedRelationships:B().int().nonnegative()}),diagnostics:Te(g3)}),o3=ce({scope:Vz,defaultLens:Vm,groups:Te(e3),memberships:Te(t3),routes:Te(n3),overviewGroupIds:Te(M()),overviewRouteIds:Te(M()),coverage:i3,omissions:Hm,quality:Km}),s3=ce({maxNodes:B().int().positive(),maxRelationships:B().int().positive(),maxGroups:B().int().positive(),maxRoutes:B().int().positive(),maxOverviewGroups:B().int().positive(),maxOverviewRoutes:B().int().positive(),maxNameCandidates:B().int().positive(),maxNameEvidence:B().int().positive(),maxDiagnostics:B().int().positive(),maxOmissionWitnesses:B().int().positive()}),r3=ce({schema:it(Fz),title:M(),nodes:Te($z),relationships:Te(qz),projections:Te(o3).min(1),statistics:ce({nodes:B().int().nonnegative(),relationships:B().int().nonnegative(),communities:B().int().nonnegative(),extracted:B().int().nonnegative(),inferred:B().int().nonnegative(),ambiguous:B().int().nonnegative()}),provenance:ce({projectName:M(),builtAtCommit:M().nullable(),generatedAt:M().nullable()}),limits:s3}).superRefine((n,e)=>{const t=new Set(n.nodes.map(i=>i.id));t.size!==n.nodes.length&&e.addIssue({code:"custom",path:["nodes"],message:"node IDs must be unique"});for(const[i,o]of n.relationships.entries())(!t.has(o.source)||!t.has(o.target))&&e.addIssue({code:"custom",path:["relationships",i],message:"relationship endpoints must identify included nodes"});for(const[i,o]of n.projections.entries()){const r=new Set(o.groups.map(A=>A.id));for(const[A,I]of o.memberships.entries())(I.nodeIndex>=n.nodes.length||I.groupIndex>=o.groups.length)&&e.addIssue({code:"custom",path:["projections",i,"memberships",A],message:"membership indexes must identify an included node and group"});for(const[A,I]of o.routes.entries())(!r.has(I.sourceGroup)||!r.has(I.targetGroup))&&e.addIssue({code:"custom",path:["projections",i,"routes",A],message:"route endpoints must identify included groups"})}}),a3=Be(["production","all"]),A3=Be(["all","extracted","inferred","ambiguous"]),C3=Be(["production","test","generated","vendor","documentation","unknown"]),I3=Be(["extracted","inferred","ambiguous"]),l3=tt({production:B().int().nonnegative(),test:B().int().nonnegative(),generated:B().int().nonnegative(),vendor:B().int().nonnegative(),documentation:B().int().nonnegative(),unknown:B().int().nonnegative()}),c3=tt({id:M(),name:M(),nodeCount:B().int().nonnegative(),totalNodeCount:B().int().nonnegative(),internalRelationshipCount:B().int().nonnegative(),incomingRelationships:B().int().nonnegative(),outgoingRelationships:B().int().nonnegative(),scopes:l3}),d3=tt({id:M(),sourceGroup:M(),targetGroup:M(),relationships:B().int().nonnegative(),extracted:B().int().nonnegative(),inferred:B().int().nonnegative(),ambiguous:B().int().nonnegative()});tt({title:M(),scope:a3,evidence:A3,lens:Vm,groups:Te(c3),routes:Te(d3),statistics:tt({visibleNodes:B().int().nonnegative(),totalNodes:B().int().nonnegative(),visibleRelationships:B().int().nonnegative(),totalRelationships:B().int().nonnegative(),communities:B().int().nonnegative(),extracted:B().int().nonnegative(),inferred:B().int().nonnegative(),ambiguous:B().int().nonnegative()}),coverage:tt({internal:B().int().nonnegative(),crossGroup:B().int().nonnegative(),unassigned:B().int().nonnegative()}),omissions:Hm,quality:Km,provenance:tt({projectName:M(),builtAtCommit:M().nullable(),generatedAt:M().nullable()})});const u3=tt({id:M(),label:M(),kind:M(),sourceFile:M().nullable(),scope:C3,groupId:M()}),Wm=tt({id:M(),source:M(),target:M(),sourceLabel:M(),targetLabel:M(),sourceFile:M().nullable(),targetFile:M().nullable(),sourceGroup:M(),targetGroup:M(),relation:M(),relationClass:Fm,confidence:I3}),XA=tt({page:B().int().positive(),pageSize:B().int().min(1).max(100),pageCount:B().int().positive(),total:B().int().nonnegative(),start:B().int().nonnegative(),end:B().int().nonnegative()});WA("kind",[XA.extend({kind:it("symbols"),groupId:M(),items:Te(u3)}),XA.extend({kind:it("relationships"),groupId:M(),items:Te(Wm)})]),XA.extend({routeId:M(),sourceGroup:M(),targetGroup:M(),items:Te(Wm)});const h3=tt({id:M(),kind:Be(["group","symbol","relationship"]),label:M(),detail:M(),groupId:M().nullable(),routeId:M().nullable(),sourceFile:M().nullable()});XA.extend({query:M(),items:Te(h3)});const f3="compass.viewer.workbench/1",p3=ce({status:Be(["complete","summary","partial"]),truncated:dn(),nodes:B().int().nonnegative(),edges:B().int().nonnegative(),limitations:Te(M()).default([])}),vo={id:M().min(1),title:M().min(1),description:M(),coverage:p3},m3=Be(["dependencies","routes","data","messaging","tests","provenance"]),v3=WA("kind",[ce({...vo,kind:it("code"),model:Tg,communityDetails:sc(M(),Tg).default({})}),ce({...vo,kind:it("call"),root:M(),graph:Gz}),ce({...vo,kind:it("impact"),root:M(),result:Dz}),ce({...vo,kind:it("architecture"),model:r3}),ce({...vo,kind:it("history"),baseRevision:M(),targetRevision:M(),before:Tg,after:Tg}),ce({...vo,kind:it("affected"),root:M(),relations:Te(M()),depth:B().int().nonnegative(),model:Tg}),ce({...vo,kind:it("artifact"),lens:m3,relations:Te(M()),model:Tg})]),b3=ce({schema:it(f3),title:M(),graphIdentity:M().min(1),defaultView:M(),views:Te(v3).min(1)}).superRefine((n,e)=>{const t=new Set;for(const[i,o]of n.views.entries())t.has(o.id)&&e.addIssue({code:"custom",path:["views",i,"id"],message:`duplicate workbench view id '${o.id}'`}),t.add(o.id);t.has(n.defaultView)||e.addIssue({code:"custom",path:["defaultView"],message:"defaultView must identify one included view"})});var L=Kl();const y3=nN({__proto__:null,default:iN(L)},[L]);const w3=n=>n.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),x3=n=>n.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,i)=>i?i.toUpperCase():t.toLowerCase()),Qm=n=>{const e=x3(n);return e.charAt(0).toUpperCase()+e.slice(1)},Xm=(...n)=>n.filter((e,t,i)=>!!e&&e.trim()!==""&&i.indexOf(e)===t).join(" ").trim(),E3=n=>{for(const e in n)if(e.startsWith("aria-")||e==="role"||e==="title")return!0};var S3={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 T3=L.forwardRef(({color:n="currentColor",size:e=24,strokeWidth:t=2,absoluteStrokeWidth:i,className:o="",children:r,iconNode:A,...I},l)=>L.createElement("svg",{ref:l,...S3,width:e,height:e,stroke:n,strokeWidth:i?Number(t)*24/Number(e):t,className:Xm("lucide",o),...!r&&!E3(I)&&{"aria-hidden":"true"},...I},[...A.map(([c,h])=>L.createElement(c,h)),...Array.isArray(r)?r:[r]]));const je=(n,e)=>{const t=L.forwardRef(({className:i,...o},r)=>L.createElement(T3,{ref:r,iconNode:e,className:Xm(`lucide-${w3(Qm(n))}`,`lucide-${n}`,i),...o}));return t.displayName=Qm(n),t};const O3=je("arrow-down",[["path",{d:"M12 5v14",key:"s699le"}],["path",{d:"m19 12-7 7-7-7",key:"1idqje"}]]);const N3=je("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);const D3=je("arrow-right",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]);const M3=je("arrow-up",[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]]);const R3=je("badge-check",[["path",{d:"M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z",key:"3c2336"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);const k3=je("boxes",[["path",{d:"M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z",key:"lc1i9w"}],["path",{d:"m7 16.5-4.74-2.85",key:"1o9zyk"}],["path",{d:"m7 16.5 5-3",key:"va8pkn"}],["path",{d:"M7 16.5v5.17",key:"jnp8gn"}],["path",{d:"M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z",key:"8zsnat"}],["path",{d:"m17 16.5-5-3",key:"8arw3v"}],["path",{d:"m17 16.5 4.74-2.85",key:"8rfmw"}],["path",{d:"M17 16.5v5.17",key:"k6z78m"}],["path",{d:"M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z",key:"1xygjf"}],["path",{d:"M12 8 7.26 5.15",key:"1vbdud"}],["path",{d:"m12 8 4.74-2.85",key:"3rx089"}],["path",{d:"M12 13.5V8",key:"1io7kd"}]]);const z3=je("braces",[["path",{d:"M8 3H7a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2 2 2 0 0 1 2 2v5c0 1.1.9 2 2 2h1",key:"ezmyqa"}],["path",{d:"M16 21h1a2 2 0 0 0 2-2v-5c0-1.1.9-2 2-2a2 2 0 0 1-2-2V5a2 2 0 0 0-2-2h-1",key:"e1hn23"}]]);const _3=je("circle-dot-dashed",[["path",{d:"M10.1 2.18a9.93 9.93 0 0 1 3.8 0",key:"1qdqn0"}],["path",{d:"M17.6 3.71a9.95 9.95 0 0 1 2.69 2.7",key:"1bq7p6"}],["path",{d:"M21.82 10.1a9.93 9.93 0 0 1 0 3.8",key:"1rlaqf"}],["path",{d:"M20.29 17.6a9.95 9.95 0 0 1-2.7 2.69",key:"1xk03u"}],["path",{d:"M13.9 21.82a9.94 9.94 0 0 1-3.8 0",key:"l7re25"}],["path",{d:"M6.4 20.29a9.95 9.95 0 0 1-2.69-2.7",key:"1v18p6"}],["path",{d:"M2.18 13.9a9.93 9.93 0 0 1 0-3.8",key:"xdo6bj"}],["path",{d:"M3.71 6.4a9.95 9.95 0 0 1 2.7-2.69",key:"1jjmaz"}],["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}]]);const $m=je("circle-question-mark",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);const j3=je("compass",[["path",{d:"m16.24 7.76-1.804 5.411a2 2 0 0 1-1.265 1.265L7.76 16.24l1.804-5.411a2 2 0 0 1 1.265-1.265z",key:"9ktpf1"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);const $A=je("external-link",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]);const Z3=je("file-code-2",[["path",{d:"M4 22h14a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v4",key:"1pf5j1"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"m5 12-3 3 3 3",key:"oke12k"}],["path",{d:"m9 18 3-3-3-3",key:"112psh"}]]);const P3=je("file-cog",[["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"m2.305 15.53.923-.382",key:"yfp9st"}],["path",{d:"m3.228 12.852-.924-.383",key:"bckynb"}],["path",{d:"M4.677 21.5a2 2 0 0 0 1.313.5H18a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v2.5",key:"1yo3oz"}],["path",{d:"m4.852 11.228-.383-.923",key:"1j88i9"}],["path",{d:"m4.852 16.772-.383.924",key:"sag1dv"}],["path",{d:"m7.148 11.228.383-.923",key:"rj39hk"}],["path",{d:"m7.53 17.696-.382-.924",key:"1uu5cs"}],["path",{d:"m8.772 12.852.923-.383",key:"13811l"}],["path",{d:"m8.772 15.148.923.383",key:"z1a5l0"}],["circle",{cx:"6",cy:"14",r:"3",key:"a1xfv6"}]]);const B3=je("focus",[["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}],["path",{d:"M3 7V5a2 2 0 0 1 2-2h2",key:"aa7l1z"}],["path",{d:"M17 3h2a2 2 0 0 1 2 2v2",key:"4qcy5o"}],["path",{d:"M21 17v2a2 2 0 0 1-2 2h-2",key:"6vwrx8"}],["path",{d:"M7 21H5a2 2 0 0 1-2-2v-2",key:"ioqczr"}]]);const qm=je("git-branch",[["line",{x1:"6",x2:"6",y1:"3",y2:"15",key:"17qcm7"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["path",{d:"M18 9a9 9 0 0 1-9 9",key:"n2h4wq"}]]);const Jm=je("git-compare-arrows",[["circle",{cx:"5",cy:"6",r:"3",key:"1qnov2"}],["path",{d:"M12 6h5a2 2 0 0 1 2 2v7",key:"1yj91y"}],["path",{d:"m15 9-3-3 3-3",key:"1lwv8l"}],["circle",{cx:"19",cy:"18",r:"3",key:"1qljk2"}],["path",{d:"M12 18H7a2 2 0 0 1-2-2V9",key:"16sdep"}],["path",{d:"m9 15 3 3-3 3",key:"1m3kbl"}]]);const lc=je("git-fork",[["circle",{cx:"12",cy:"18",r:"3",key:"1mpf1b"}],["circle",{cx:"6",cy:"6",r:"3",key:"1lh9wr"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["path",{d:"M18 9v2c0 .6-.4 1-1 1H7c-.6 0-1-.4-1-1V9",key:"1uq4wg"}],["path",{d:"M12 12v3",key:"158kv8"}]]);const L3=je("keyboard",[["path",{d:"M10 8h.01",key:"1r9ogq"}],["path",{d:"M12 12h.01",key:"1mp3jc"}],["path",{d:"M14 8h.01",key:"1primd"}],["path",{d:"M16 12h.01",key:"1l6xoz"}],["path",{d:"M18 8h.01",key:"emo2bl"}],["path",{d:"M6 8h.01",key:"x9i8wu"}],["path",{d:"M7 16h10",key:"wp8him"}],["path",{d:"M8 12h.01",key:"czm47f"}],["rect",{width:"20",height:"16",x:"2",y:"4",rx:"2",key:"18n3k1"}]]);const G3=je("layout-grid",[["rect",{width:"7",height:"7",x:"3",y:"3",rx:"1",key:"1g98yp"}],["rect",{width:"7",height:"7",x:"14",y:"3",rx:"1",key:"6d4xhi"}],["rect",{width:"7",height:"7",x:"14",y:"14",rx:"1",key:"nxv5o0"}],["rect",{width:"7",height:"7",x:"3",y:"14",rx:"1",key:"1bb6yr"}]]);const F3=je("map",[["path",{d:"M14.106 5.553a2 2 0 0 0 1.788 0l3.659-1.83A1 1 0 0 1 21 4.619v12.764a1 1 0 0 1-.553.894l-4.553 2.277a2 2 0 0 1-1.788 0l-4.212-2.106a2 2 0 0 0-1.788 0l-3.659 1.83A1 1 0 0 1 3 19.381V6.618a1 1 0 0 1 .553-.894l4.553-2.277a2 2 0 0 1 1.788 0z",key:"169xi5"}],["path",{d:"M15 5.764v15",key:"1pn4in"}],["path",{d:"M9 3.236v15",key:"1uimfh"}]]);const ev=je("maximize-2",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"m21 3-7 7",key:"1l2asr"}],["path",{d:"m3 21 7-7",key:"tjx5ai"}],["path",{d:"M9 21H3v-6",key:"wtvkvv"}]]);const V3=je("minus",[["path",{d:"M5 12h14",key:"1ays0h"}]]);const U3=je("move",[["path",{d:"M12 2v20",key:"t6zp3m"}],["path",{d:"m15 19-3 3-3-3",key:"11eu04"}],["path",{d:"m19 9 3 3-3 3",key:"1mg7y2"}],["path",{d:"M2 12h20",key:"9i4pu4"}],["path",{d:"m5 9-3 3 3 3",key:"j64kie"}],["path",{d:"m9 5 3-3 3 3",key:"l8vdw6"}]]);const cc=je("network",[["rect",{x:"16",y:"16",width:"6",height:"6",rx:"1",key:"4q2zg0"}],["rect",{x:"2",y:"16",width:"6",height:"6",rx:"1",key:"8cvhb9"}],["rect",{x:"9",y:"2",width:"6",height:"6",rx:"1",key:"1egb70"}],["path",{d:"M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3",key:"1jsf9p"}],["path",{d:"M12 12V8",key:"2874zd"}]]);const Y3=je("panel-left-close",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m16 15-3-3 3-3",key:"14y99z"}]]);const H3=je("panel-left-open",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m14 9 3 3-3 3",key:"8010ee"}]]);const tv=je("panel-right-close",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M15 3v18",key:"14nvp0"}],["path",{d:"m8 9 3 3-3 3",key:"12hl5m"}]]);const K3=je("panel-right-open",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M15 3v18",key:"14nvp0"}],["path",{d:"m10 15-3-3 3-3",key:"1pgupc"}]]);const nv=je("pause",[["rect",{x:"14",y:"3",width:"5",height:"18",rx:"1",key:"kaeet6"}],["rect",{x:"5",y:"3",width:"5",height:"18",rx:"1",key:"1wsw3u"}]]);const W3=je("play",[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]]);const iv=je("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);const gv=je("rotate-ccw",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]]);const ov=je("route",[["circle",{cx:"6",cy:"19",r:"3",key:"1kj8tv"}],["path",{d:"M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15",key:"1d8sl"}],["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}]]);const sv=je("scan-search",[["path",{d:"M3 7V5a2 2 0 0 1 2-2h2",key:"aa7l1z"}],["path",{d:"M17 3h2a2 2 0 0 1 2 2v2",key:"4qcy5o"}],["path",{d:"M21 17v2a2 2 0 0 1-2 2h-2",key:"6vwrx8"}],["path",{d:"M7 21H5a2 2 0 0 1-2-2v-2",key:"ioqczr"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}],["path",{d:"m16 16-1.9-1.9",key:"1dq9hf"}]]);const Q3=je("search-code",[["path",{d:"m13 13.5 2-2.5-2-2.5",key:"1rvxrh"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}],["path",{d:"M9 8.5 7 11l2 2.5",key:"6ffwbx"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]]);const rv=je("search",[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]]);const X3=je("settings",[["path",{d:"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",key:"1i5ecw"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);const $3=je("shield-check",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);const q3=je("signpost",[["path",{d:"M12 13v8",key:"1l5pq0"}],["path",{d:"M12 3v3",key:"1n5kay"}],["path",{d:"M18 6a2 2 0 0 1 1.387.56l2.307 2.22a1 1 0 0 1 0 1.44l-2.307 2.22A2 2 0 0 1 18 13H6a2 2 0 0 1-1.387-.56l-2.306-2.22a1 1 0 0 1 0-1.44l2.306-2.22A2 2 0 0 1 6 6z",key:"gqqp9m"}]]);const J3=je("sliders-horizontal",[["path",{d:"M10 5H3",key:"1qgfaw"}],["path",{d:"M12 19H3",key:"yhmn1j"}],["path",{d:"M14 3v4",key:"1sua03"}],["path",{d:"M16 17v4",key:"1q0r14"}],["path",{d:"M21 12h-9",key:"1o4lsq"}],["path",{d:"M21 19h-5",key:"1rlt1p"}],["path",{d:"M21 5h-7",key:"1oszz2"}],["path",{d:"M8 10v4",key:"tgpxqk"}],["path",{d:"M8 12H3",key:"a7s4jb"}]]);const e_=je("tags",[["path",{d:"M13.172 2a2 2 0 0 1 1.414.586l6.71 6.71a2.4 2.4 0 0 1 0 3.408l-4.592 4.592a2.4 2.4 0 0 1-3.408 0l-6.71-6.71A2 2 0 0 1 6 9.172V3a1 1 0 0 1 1-1z",key:"16rjxf"}],["path",{d:"M2 7v6.172a2 2 0 0 0 .586 1.414l6.71 6.71a2.4 2.4 0 0 0 3.191.193",key:"178nd4"}],["circle",{cx:"10.5",cy:"6.5",r:".5",fill:"currentColor",key:"12ikhr"}]]);const qA=je("triangle-alert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);const t_=je("waypoints",[["circle",{cx:"12",cy:"4.5",r:"2.5",key:"r5ysbb"}],["path",{d:"m10.2 6.3-3.9 3.9",key:"1nzqf6"}],["circle",{cx:"4.5",cy:"12",r:"2.5",key:"jydg6v"}],["path",{d:"M7 12h10",key:"b7w52i"}],["circle",{cx:"19.5",cy:"12",r:"2.5",key:"1piiel"}],["path",{d:"m13.8 17.7 3.9-3.9",key:"1wyg1y"}],["circle",{cx:"12",cy:"19.5",r:"2.5",key:"13o1pw"}]]);const n_=je("zoom-in",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["line",{x1:"21",x2:"16.65",y1:"21",y2:"16.65",key:"13gj7c"}],["line",{x1:"11",x2:"11",y1:"8",y2:"14",key:"1vmskp"}],["line",{x1:"8",x2:"14",y1:"11",y2:"11",key:"durymu"}]]);const i_=je("zoom-out",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["line",{x1:"21",x2:"16.65",y1:"21",y2:"16.65",key:"13gj7c"}],["line",{x1:"8",x2:"14",y1:"11",y2:"11",key:"durymu"}]]),av=new Set(["color","change","evidence"]),g_=new Set(["anchor","anchors","columnEnd","columnStart","community","communityName","community_name","degree","endByte","endColumn","endLine","lineEnd","lineStart","line_end","line_start","location","normLabel","norm_label","relationshipSite","relationship_site","size","sourceDigest","sourceFile","sourceHash","source_digest","source_file","source_hash","startByte","startColumn","startLine","wiringSite","wiring_site"]);function JA(n,e){const t=eC(n),i=eC(e);return{...t?{before:t}:{},...i?{after:i}:{},fields:uc(t,i)}}function Av(n,e,t){const i=eC(n),o=eC(e),r=dc(n,t),A=dc(e,t);return{...i?{before:i}:{},...o?{after:o}:{},fields:uc(r,A)}}function o_(n,e){return dc(n,e)??{}}function s_(n,e=240){const t=n===void 0?"Not recorded":typeof n=="string"?n:JSON.stringify(n,null,Lr(n)?2:void 0)??String(n);return t.length<=e?{text:t,truncated:!1}:{text:`${t.slice(0,Math.max(0,e-1)).trimEnd()}…`,truncated:!0}}function eC(n){if(n)return lv(n)}function dc(n,e){return n?Iv(n,e==="node"?new Set(["source"]):new Set(["id","key"])):void 0}function Cv(n){return Array.isArray(n)?n.map(Cv):Lr(n)?Iv(n):n}function Iv(n,e=new Set){return Object.fromEntries(Object.keys(n).filter(t=>!av.has(t)&&!g_.has(t)&&!e.has(t)).sort((t,i)=>t.localeCompare(i)).map(t=>[t,Cv(n[t])]))}function tC(n){return Array.isArray(n)?n.map(tC):Lr(n)?lv(n):n}function lv(n){return Object.fromEntries(Object.keys(n).filter(e=>!av.has(e)).sort((e,t)=>e.localeCompare(t)).map(e=>[e,tC(n[e])]))}function uc(n,e,t=""){const i=new Set([...Object.keys(n??{}),...Object.keys(e??{})]),o=[];for(const r of[...i].sort((A,I)=>A.localeCompare(I))){const A=t?`${t}.${r}`:r,I=n?.[r],l=e?.[r];Lr(I)&&Lr(l)?o.push(...uc(I,l,A)):r_(I,l)||o.push({field:A,...I!==void 0?{before:I}:{},...l!==void 0?{after:l}:{}})}return o}function r_(n,e){return JSON.stringify(tC(n))===JSON.stringify(tC(e))}function Lr(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)}function a_({node:n,edges:e,nodes:t,sourceRevisions:i,onFocus:o,onOpenSource:r}){const A=uv(n.evidence?.before),I=uv(n.evidence?.after);return f.jsxs(f.Fragment,{children:[n.evidence?.fields.length?f.jsxs("section",{className:"compass-record-evidence","aria-labelledby":"compass-node-changes-title",children:[f.jsxs("div",{className:"compass-evidence-heading",children:[f.jsx("h3",{id:"compass-node-changes-title",children:A_(n.change)}),f.jsxs("span",{children:[n.evidence.fields.length," fields"]})]}),f.jsx(cv,{fields:n.evidence.fields}),n.change==="changed"&&(A||I)&&f.jsxs("div",{className:"compass-evidence-source-actions",children:[A&&f.jsxs("button",{type:"button",onClick:()=>r(A,i?.before),children:[f.jsx($A,{"aria-hidden":"true"}),"Open before"]}),I&&f.jsxs("button",{type:"button",onClick:()=>r(I,i?.after),children:[f.jsx($A,{"aria-hidden":"true"}),"Open after"]})]})]}):null,f.jsxs("section",{className:"compass-relationship-evidence","aria-labelledby":"compass-relationships-title",children:[f.jsxs("div",{className:"compass-neighbors-heading",children:[f.jsx("span",{id:"compass-relationships-title",children:"Relationships"}),f.jsx("strong",{children:e.length})]}),e.length?f.jsx("div",{className:"compass-relationship-list",children:e.map(l=>{const c=l.source===n.id?l.target:l.source,h=t.get(c);return f.jsxs("details",{children:[f.jsxs("summary",{children:[f.jsx("span",{className:"compass-change-badge","data-change":l.change,children:hv(l.change)}),f.jsx("span",{className:"compass-relationship-target",children:h?.label??c}),f.jsx("small",{children:l.relation}),l.confidence&&f.jsx("i",{children:l.confidence})]}),f.jsxs("div",{className:"compass-relationship-detail",children:[l.change==="changed"&&l.evidence?.fields.length?f.jsx(cv,{fields:l.evidence.fields}):f.jsxs("p",{children:[hv(l.change)," relationship: ",l.source," → ",l.target]}),f.jsxs("button",{type:"button",onClick:()=>o(c),children:["Focus ",h?.label??c]})]})]},l.id)})}):f.jsx("span",{className:"compass-empty",children:"No connected relationships"})]})]})}function cv({fields:n}){return f.jsx("div",{className:"compass-field-table-wrap",children:f.jsxs("table",{className:"compass-field-table",children:[f.jsx("thead",{children:f.jsxs("tr",{children:[f.jsx("th",{children:"Field"}),f.jsx("th",{children:"Before"}),f.jsx("th",{children:"After"})]})}),f.jsx("tbody",{children:n.map(e=>f.jsxs("tr",{children:[f.jsx("th",{scope:"row",children:e.field}),f.jsx(dv,{value:e.before}),f.jsx(dv,{value:e.after})]},e.field))})]})})}function dv({value:n}){const e=s_(n);return f.jsxs("td",{children:[f.jsx("code",{children:e.text}),e.truncated&&f.jsx("span",{className:"compass-value-truncated",children:"Value shortened"})]})}function uv(n){const e=Ic.safeParse(n?.source);return e.success?e.data:void 0}function hv(n){return!n||n==="unchanged"?"Context":`${n[0]?.toLocaleUpperCase()}${n.slice(1)}`}function A_(n){return n==="added"?"Added symbol metadata":n==="removed"?"Removed symbol metadata":"What changed"}const fv=100,pv={changed:0,added:1,removed:2,unchanged:3};function C_({nodes:n,query:e,selectedId:t,onFocus:i}){const[o,r]=L.useState(!1),A=e.trim().toLocaleLowerCase(),I=n.filter(c=>c.change&&c.change!=="unchanged").filter(c=>!A||c.label.toLocaleLowerCase().includes(A)||c.kind?.toLocaleLowerCase().includes(A)||c.source?.file.toLocaleLowerCase().includes(A)).sort((c,h)=>pv[c.change??"unchanged"]-pv[h.change??"unchanged"]||c.label.localeCompare(h.label)||c.id.localeCompare(h.id)),l=o?I:I.slice(0,fv);return f.jsxs("section",{className:"compass-changed-symbols","aria-labelledby":"compass-changed-symbols-title",children:[f.jsxs("div",{className:"compass-section-heading",children:[f.jsx("h2",{id:"compass-changed-symbols-title",children:"Changed symbols"}),f.jsx("span",{children:I.length})]}),l.length?f.jsx("div",{className:"compass-changed-symbol-list",children:l.map(c=>f.jsxs("button",{type:"button","aria-pressed":c.id===t,"data-change":c.change,onClick:()=>i(c.id),children:[f.jsx("span",{className:"compass-changed-symbol-status",children:I_(c.change)}),f.jsx("strong",{children:c.label}),f.jsx("small",{children:c.source?.file??c.kind??"Graph symbol"})]},c.id))}):f.jsx("p",{className:"compass-empty",children:A?"No affected symbols match this search.":"No symbol changes."}),!o&&I.length>fv&&f.jsxs("button",{className:"compass-changed-symbol-expand",type:"button",onClick:()=>r(!0),children:["Show all ",I.length.toLocaleString()," affected symbols"]})]})}function I_(n){return!n||n==="unchanged"?"Context":`${n[0]?.toLocaleUpperCase()}${n.slice(1)}`}function mv({evidence:n,diagnostics:e=[],truncated:t=!1,title:i="Trust evidence",onOpenSource:o}){return!n.length&&!e.length&&!t?null:f.jsxs("section",{className:"compass-code-evidence","aria-label":i,children:[f.jsxs("div",{className:"compass-evidence-heading",children:[f.jsx("h3",{children:i}),f.jsxs("span",{children:[n.length," ",n.length===1?"record":"records"]})]}),t&&f.jsxs("p",{className:"compass-code-diagnostic","data-severity":"warning",role:"status",children:[f.jsx(qA,{"aria-hidden":"true"}),"Results reached a configured limit. Narrow the query or raise one bound."]}),e.map(r=>f.jsxs("p",{className:"compass-code-diagnostic","data-severity":r.code==="no_match"?"info":"warning",role:"status",children:[r.code==="no_match"?f.jsx($m,{"aria-hidden":"true"}):f.jsx(qA,{"aria-hidden":"true"}),f.jsxs("span",{children:[f.jsx("strong",{children:d_(r.code)}),r.message]})]},`${r.code}:${r.message}`)),f.jsx("div",{className:"compass-code-evidence-ledger",children:n.map((r,A)=>{const I=c_(r),l=r.wiringSite??r.anchor;return f.jsxs("article",{className:"compass-code-evidence-entry","data-status":I.key,children:[f.jsx("span",{className:"compass-code-evidence-icon","aria-hidden":"true",children:f.jsx(l_,{item:r})}),f.jsxs("div",{className:"compass-code-evidence-copy",children:[f.jsxs("div",{className:"compass-code-evidence-status",children:[f.jsx("strong",{children:I.label}),f.jsx("span",{children:r.layer==="program_ir"?"Program IR":"Code graph"})]}),f.jsxs("dl",{children:[f.jsxs("div",{children:[f.jsx("dt",{children:"Extractor"}),f.jsx("dd",{children:r.extractor})]}),f.jsxs("div",{children:[f.jsx("dt",{children:"Confidence"}),f.jsx("dd",{children:r.confidence})]}),r.rule&&f.jsxs("div",{children:[f.jsx("dt",{children:"Rule"}),f.jsx("dd",{children:r.rule})]})]}),l&&(o?f.jsxs("button",{className:"compass-code-evidence-source",type:"button",onClick:()=>o(l),children:[f.jsx($A,{"aria-hidden":"true"}),vv(r,l)]}):f.jsx("span",{className:"compass-code-evidence-source",children:vv(r,l)})),r.candidates.length>0&&f.jsxs("div",{className:"compass-code-candidates",children:[f.jsx("span",{children:"Retained candidates"}),f.jsx("ul",{children:r.candidates.map(c=>f.jsxs("li",{children:[f.jsx("code",{children:c.nodeId}),f.jsx("span",{children:c.reason}),f.jsx("small",{children:c.confidence})]},`${c.nodeId}:${c.reason}`))})]})]})]},`${r.layer}:${r.extractor}:${A}`)})})]})}function l_({item:n}){return n.resolution==="unresolved"?f.jsx($m,{}):n.resolution==="ambiguous"||n.confidence==="ambiguous"?f.jsx(qA,{}):n.origin==="heuristic"?f.jsx(lc,{}):n.origin==="config"?f.jsx(P3,{}):n.origin==="convention"?f.jsx(q3,{}):f.jsx(R3,{})}function c_(n){return n.resolution==="unresolved"?{key:"unresolved",label:"Unresolved"}:n.resolution==="ambiguous"||n.confidence==="ambiguous"?{key:"ambiguous",label:"Ambiguous"}:n.origin==="heuristic"?{key:"heuristic",label:"Heuristic"}:n.origin==="config"?{key:"config",label:"Configuration"}:n.origin==="convention"?{key:"convention",label:"Convention"}:{key:"exact",label:"Exact"}}function vv(n,e){return`${n.origin==="heuristic"?"Wired at":"Evidence at"} ${e.file}:${e.startLine}`}function d_(n){return`${n.replaceAll("_"," ")}: `}function bv(n){return wv(n.source)}function yv(n){return wv(n.relationshipSite)}function wv(n){return n?.file.trim()&&(n.startLine!==void 0||n.endLine!==void 0||n.startByte!==void 0||n.endByte!==void 0)?n:void 0}const xv=200;function u_(n,e){const t=e.trim().toLocaleLowerCase();return(t?n.filter(o=>o.label.toLocaleLowerCase().includes(t)||String(o.id).includes(t)):n).slice(0,xv)}function h_(n){const e=n.source?.startLine,t=n.source?.endLine;if(e!==void 0)return t!==void 0&&t!==e?`${e}–${t}`:String(e)}function Ev(n){const e=n.source?.startLine,t=n.source?.endLine;if(e!==void 0)return t!==void 0&&t!==e?{text:`Lines ${e}–${t}`,action:`at lines ${e}–${t}`}:{text:`Line ${e}`,action:`at line ${e}`};const i=n.source?.startByte,o=n.source?.endByte;if(i!==void 0)return o!==void 0&&o!==i?{text:`Bytes ${i}–${o}`,action:`at bytes ${i}–${o}`}:{text:`Byte ${i}`,action:`at byte ${i}`}}function Sv(n,e){const t=Ev(n);return`Open source ${e.file}${t?` ${t.action}`:""}`}function Tv(n){return n==="unchanged"?"Context":n?`${n[0]?.toLocaleUpperCase()}${n.slice(1)}`:void 0}function f_(n){if(n)return{added:"var(--vscode-gitDecoration-addedResourceForeground, #2ea043)",removed:"var(--vscode-gitDecoration-deletedResourceForeground, #f85149)",changed:"var(--vscode-gitDecoration-modifiedResourceForeground, #d29922)",unchanged:"var(--vscode-descriptionForeground, #6e7781)"}[n]}function p_({model:n,selected:e,neighbors:t,connectedEdges:i,query:o,matches:r,hiddenCommunities:A,comparisonMode:I,sourceRevisions:l,queryResult:c,renderedEdgeCount:h,showHeader:p,onQueryChange:m,onFocus:b,onOpenSource:w,onOpenCommunity:O,onQueryNode:x,onToggleCommunity:S,onSetAllVisible:E,collapsed:_,onToggleCollapsed:j}){const[X,ne]=L.useState(0),F=e?bv(e):void 0,V=e?h_(e):void 0,Ie=e?Ev(e):void 0,Ee=L.useMemo(()=>{const H=new Map;for(const ge of n.nodes)H.set(ge.community,(H.get(ge.community)??0)+1);return H},[n.nodes]),Ze=A.size===0,xe=L.useMemo(()=>new Map(n.nodes.map(H=>[H.id,H])),[n.nodes]),Fe=(e?c?.nodes.find(H=>H.id===e.id):void 0)?.evidence??e?.codeEvidence??[],le=e?c?c.edges.filter(H=>H.source===e.id||H.target===e.id).flatMap(H=>H.evidence):i.flatMap(H=>H.codeEvidence??[]):[],R=H=>{b(H.id),m(""),ne(0)},Q=H=>{!r.length&&H.key!=="Escape"||(H.key==="ArrowDown"?(H.preventDefault(),ne((X+1)%r.length)):H.key==="ArrowUp"?(H.preventDefault(),ne((X-1+r.length)%r.length)):H.key==="Enter"&&r[X]?(H.preventDefault(),R(r[X])):H.key==="Escape"&&(m(""),ne(0)))};return _?f.jsxs("aside",{className:"compass-graph-inspector compass-graph-inspector-collapsed","aria-label":"Graph inspector",children:[f.jsx("button",{className:"compass-inspector-disclosure compass-inspector-expand",type:"button","aria-label":"Expand graph inspector",title:"Expand graph inspector",onClick:j,children:f.jsx(K3,{"aria-hidden":"true"})}),f.jsx("span",{className:"compass-inspector-rail-label","aria-hidden":"true",children:"Inspector"})]}):f.jsxs("aside",{className:"compass-graph-inspector","aria-label":"Graph inspector",children:[p&&f.jsxs("header",{className:"compass-inspector-header",children:[f.jsx("span",{className:"compass-product-mark","aria-hidden":"true",children:f.jsx(j3,{})}),f.jsxs("span",{className:"compass-inspector-title",children:[f.jsx("strong",{children:"Compass"}),f.jsx("small",{children:n.title})]}),f.jsx("button",{className:"compass-inspector-disclosure",type:"button","aria-label":"Collapse graph inspector",title:"Collapse graph inspector",onClick:j,children:f.jsx(tv,{"aria-hidden":"true"})})]}),f.jsxs("div",{className:"compass-inspector-search",role:"search",children:[f.jsx("label",{className:"sr-only",htmlFor:"compass-node-search",children:"Search graph nodes"}),f.jsxs("div",{className:"compass-inspector-search-row",children:[f.jsxs("div",{className:"compass-search-field",children:[f.jsx(rv,{"aria-hidden":"true"}),f.jsx("input",{id:"compass-node-search",type:"search",role:"combobox",value:o,placeholder:"Search nodes and files",autoComplete:"off","aria-controls":"compass-search-results","aria-autocomplete":"list","aria-expanded":r.length>0,"aria-activedescendant":r[X]?`compass-search-result-${X}`:void 0,onChange:H=>{m(H.target.value),ne(0)},onKeyDown:Q})]}),!p&&f.jsx("button",{className:"compass-inspector-disclosure compass-inspector-search-disclosure",type:"button","aria-label":"Collapse graph inspector",title:"Collapse graph inspector",onClick:j,children:f.jsx(tv,{"aria-hidden":"true"})})]}),r.length>0&&f.jsx("div",{id:"compass-search-results",className:"compass-search-results",role:"listbox","aria-label":"Matching nodes",children:r.map((H,ge)=>f.jsxs("button",{id:`compass-search-result-${ge}`,type:"button",role:"option","aria-selected":ge===X,className:"compass-search-item",onMouseEnter:()=>ne(ge),onClick:()=>R(H),children:[f.jsx("strong",{children:H.label}),f.jsx("span",{children:H.source?.file??H.kind??"Graph node"})]},H.id))})]}),f.jsxs("section",{className:"compass-info-panel","aria-labelledby":"compass-info-title",children:[f.jsxs("div",{className:"compass-section-heading",children:[f.jsx("h2",{id:"compass-info-title",children:"Inspector"}),f.jsx("span",{children:e?"Pinned":"Node details"})]}),e?f.jsxs("div",{className:"compass-info-content",children:[f.jsxs("div",{className:"compass-node-identity",children:[f.jsx("span",{className:"compass-node-swatch","aria-hidden":"true",style:{background:f_(e.change)??e.color?.background??n.communities.find(H=>H.id===e.community)?.color}}),f.jsxs("span",{children:[f.jsx("strong",{children:e.label}),f.jsx("small",{children:e.kind??"Symbol"})]}),Tv(e.change)&&f.jsx("span",{className:"compass-change-badge","data-change":e.change,children:Tv(e.change)})]}),f.jsxs("dl",{className:"compass-metadata-grid",children:[f.jsxs("div",{children:[f.jsx("dt",{children:"Community"}),f.jsx("dd",{children:e.communityName??n.communities.find(H=>H.id===e.community)?.label??e.community})]}),f.jsxs("div",{children:[f.jsx("dt",{children:"Degree"}),f.jsx("dd",{children:e.degree??t.length})]}),e.language&&f.jsxs("div",{children:[f.jsx("dt",{children:"Language"}),f.jsx("dd",{children:e.language})]}),V&&f.jsxs("div",{children:[f.jsx("dt",{children:"Lines"}),f.jsx("dd",{children:V})]}),f.jsx("div",{className:"compass-metadata-wide compass-source-metadata","data-interactive":F!==void 0,children:F?f.jsxs(f.Fragment,{children:[f.jsx("dt",{className:"sr-only",children:"Source"}),f.jsx("dd",{children:f.jsxs("button",{className:"compass-source-card",type:"button","aria-label":Sv(e,F),title:Sv(e,F),onClick:()=>w(F,e.change==="removed"?l?.before:l?.after),children:[f.jsxs("span",{className:"compass-source-copy",children:[f.jsx("span",{className:"compass-source-eyebrow","aria-hidden":"true",children:"Source"}),f.jsx("span",{className:"compass-source-path",children:F.file}),Ie&&f.jsx("span",{className:"compass-source-range",children:Ie.text})]}),f.jsx($A,{"aria-hidden":"true"})]})})]}):f.jsxs(f.Fragment,{children:[f.jsx("dt",{children:"Source"}),f.jsx("dd",{title:e.source?.file??"Not recorded",children:e.source?.file??"Not recorded"})]})})]}),e.signature&&f.jsx("code",{className:"compass-signature-block",children:e.signature}),x&&f.jsxs("div",{className:"compass-code-query-actions","aria-label":"Code graph queries",children:[f.jsx("button",{type:"button",onClick:()=>x("callers",e.id),children:"Callers"}),f.jsx("button",{type:"button",onClick:()=>x("callees",e.id),children:"Callees"}),f.jsx("button",{type:"button",onClick:()=>x("impact",e.id),children:"Impact"})]}),f.jsx(mv,{evidence:Fe,diagnostics:c?.diagnostics,truncated:c?.truncated,title:"Node evidence",onOpenSource:w}),f.jsx(mv,{evidence:le,title:"Relationship evidence",onOpenSource:w}),n.stats.aggregated&&e.memberCount!==void 0&&e.detailAvailable!==!1&&O&&f.jsxs("button",{className:"compass-inspector-action",type:"button",onClick:()=>O(e.community),children:[I?"Inspect changes":"Open community",f.jsxs("span",{children:[e.memberCount.toLocaleString()," ",I?"current symbols":"members"]})]}),n.stats.aggregated&&e.memberCount!==void 0&&e.detailAvailable===!1&&f.jsx("p",{className:"compass-empty",children:"This community detail was omitted to keep the standalone HTML export bounded. Open the graph in VS Code or export this community as JSON for full inspection."}),I?f.jsx(a_,{node:e,edges:i,nodes:xe,sourceRevisions:l,onFocus:b,onOpenSource:w}):f.jsxs(f.Fragment,{children:[f.jsxs("div",{className:"compass-neighbors-heading",children:[f.jsx("span",{children:"Connected nodes"}),f.jsx("strong",{children:t.length})]}),f.jsx("div",{className:"compass-neighbors-list",children:t.length?t.map(H=>f.jsxs("button",{type:"button",className:"compass-neighbor-link",title:H.label,onClick:()=>b(H.id),children:[f.jsx("span",{className:"compass-neighbor-dot","aria-hidden":"true",style:{background:H.color?.background??n.communities.find(ge=>ge.id===H.community)?.color??"var(--border)"}}),f.jsx("span",{className:"compass-neighbor-label",children:H.label})]},H.id)):f.jsx("span",{className:"compass-empty",children:"No connected nodes"})})]})]}):f.jsx("p",{className:"compass-empty",children:"Select a node to inspect its relationships."})]}),I&&!n.stats.aggregated&&f.jsx(C_,{nodes:n.nodes,query:o,selectedId:e?.id,onFocus:b}),n.effectiveGraph&&f.jsxs("section",{className:"compass-info-panel","aria-labelledby":"compass-agent-overlay-title",children:[f.jsxs("div",{className:"compass-section-heading",children:[f.jsx("h2",{id:"compass-agent-overlay-title",children:"Agent overlay"}),f.jsx("span",{children:"Exact revision"})]}),f.jsxs("dl",{className:"compass-metadata-grid",children:[f.jsxs("div",{children:[f.jsx("dt",{children:"Pinned profile"}),f.jsx("dd",{children:n.effectiveGraph.compositionProfile})]}),f.jsxs("div",{children:[f.jsx("dt",{children:"Retractions"}),f.jsx("dd",{children:n.effectiveGraph.retractions.total.toLocaleString()})]}),f.jsxs("div",{children:[f.jsx("dt",{children:"Omissions"}),f.jsx("dd",{children:n.effectiveGraph.omissions.total.toLocaleString()})]}),f.jsxs("div",{className:"compass-metadata-wide",children:[f.jsx("dt",{children:"Overlay revision"}),f.jsx("dd",{title:n.effectiveGraph.overlayRevision,children:f.jsx("code",{children:n.effectiveGraph.overlayRevision.slice(0,12)})})]})]}),n.effectiveGraph.retractions.examples.length>0&&f.jsxs("details",{children:[f.jsxs("summary",{children:["Retraction history",f.jsx("span",{children:n.effectiveGraph.retractions.examples.length})]}),f.jsx("ul",{children:n.effectiveGraph.retractions.examples.map(H=>f.jsxs("li",{children:[f.jsx("strong",{children:H.kind})," ",f.jsx("code",{children:H.id})," — ",H.reasonCode,": ",H.explanation]},`${H.kind}:${H.id}`))}),n.effectiveGraph.retractions.omittedExamples>0&&f.jsxs("p",{className:"compass-empty",children:[n.effectiveGraph.retractions.omittedExamples.toLocaleString()," additional Retractions omitted by the response bound."]})]}),f.jsx("p",{className:"compass-empty",children:"Changing augment or curated profile requires a new exact Effective Graph read; this viewer never relabels one identity as another."})]}),f.jsx("section",{className:"compass-community-panel","aria-labelledby":"compass-communities-title","data-secondary":I,children:I?f.jsxs("details",{children:[f.jsxs("summary",{id:"compass-communities-title",children:["Communities",f.jsx("span",{children:n.communities.length})]}),f.jsx(Ov,{model:n,communityCounts:Ee,hiddenCommunities:A,allVisible:Ze,onSetAllVisible:E,onToggleCommunity:S})]}):f.jsxs(f.Fragment,{children:[f.jsx("h2",{id:"compass-communities-title",children:"Communities"}),f.jsx(Ov,{model:n,communityCounts:Ee,hiddenCommunities:A,allVisible:Ze,onSetAllVisible:E,onToggleCommunity:S})]})}),f.jsxs("footer",{className:"compass-graph-stats",children:[n.stats.nodes.toLocaleString()," nodes · ",n.stats.edges.toLocaleString()," edges",hu_(n.communities,A),[n.communities,A]),c=L.useMemo(()=>{const h=A.trim().toLocaleLowerCase();return h?n.communities.filter(p=>p.label.toLocaleLowerCase().includes(h)||String(p.id).includes(h)).length:n.communities.length},[n.communities,A]);return f.jsxs("div",{className:"compass-community-controls",children:[f.jsxs("label",{className:"compass-community-control",children:[f.jsx("input",{type:"checkbox",checked:i,onChange:h=>o(h.target.checked)}),f.jsx("span",{children:"Select all"})]}),n.communities.length>xv&&f.jsxs("label",{className:"compass-community-search",children:[f.jsx("span",{className:"sr-only",children:"Filter communities"}),f.jsx(rv,{"aria-hidden":"true"}),f.jsx("input",{type:"search",value:A,placeholder:"Filter communities",onChange:h=>I(h.target.value)})]}),f.jsx("div",{className:"compass-community-list",children:l.map(h=>{const p=!t.has(h.id);return f.jsxs("label",{className:"compass-community-item","data-hidden":!p,children:[f.jsx("input",{type:"checkbox",checked:p,onChange:()=>r(h.id)}),f.jsx("span",{className:"compass-community-dot","aria-hidden":"true",style:{background:h.color}}),f.jsx("span",{className:"compass-community-label",children:h.label}),f.jsx("small",{children:e.get(h.id)??0})]},h.id)})}),c>l.length&&f.jsxs("p",{className:"compass-community-limit",role:"status",children:["Showing ",l.length.toLocaleString()," of"," ",c.toLocaleString()," communities. Filter to find another community."]})]})}function m_({className:n="compass-load-logo"}){return f.jsx("svg",{className:n,viewBox:"0 0 24 24",fill:"none","aria-hidden":"true",children:f.jsx("path",{fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd",d:"M3.554 21.529c1.797 1.221 4.943-.038 11.236-2.554 1.342-.537 2.013-.806 2.54-1.267q.201-.177.378-.378c.461-.527.73-1.198 1.267-2.54 2.515-6.293 3.775-9.44 2.554-11.236a4.1 4.1 0 0 0-1.083-1.083c-1.797-1.221-4.944.037-11.236 2.554-1.342.537-2.013.806-2.54 1.267q-.201.177-.378.378c-.461.527-.73 1.198-1.267 2.54-2.517 6.292-3.775 9.439-2.554 11.236.29.426.657.793 1.083 1.083M8.25 12a3.75 3.75 0 1 1 7.5 0 3.75 3.75 0 0 1-7.5 0m1.5 0a2.25 2.25 0 1 1 4.5 0 2.25 2.25 0 0 1-4.5 0"})})}const v_=1e4;function Nv(n){const[e,t]=L.useState(!1);L.useEffect(()=>{if(n.kind!=="layout"){t(!1);return}const A=window.setTimeout(()=>{t(!0)},v_);return()=>window.clearTimeout(A)},[n.kind]);const i=n.kind==="community",o=i?`Opening ${n.communityLabel}`:e?"Still arranging this graph":"Arranging graph layout",r=i?"Fetching symbols and relationships for this community.":e?"This graph is taking longer than expected. You can open the current layout now.":"Positioning nodes and relationships for a readable first view.";return f.jsxs("section",{className:"compass-graph-transition","data-kind":n.kind,role:"status","aria-live":"polite","aria-atomic":"true",children:[f.jsxs("div",{className:"compass-load-visual","data-state":"loading","aria-hidden":"true",children:[f.jsx("span",{className:"compass-load-mark",children:f.jsx(m_,{})}),f.jsx("span",{className:"compass-load-progress",children:f.jsx("i",{})})]}),f.jsxs("div",{className:"compass-load-copy",children:[f.jsx("span",{className:"compass-load-eyebrow",children:"Compass graph"}),f.jsx("h1",{children:o}),f.jsx("p",{className:"compass-graph-transition-description",children:r}),!i&&e&&f.jsx("div",{className:"compass-load-actions",children:f.jsx("button",{className:"compass-load-action compass-load-action-primary",type:"button",onClick:n.onShowGraph,children:"Show graph now"})})]})]})}function b_(n){return n instanceof HTMLElement&&(n.isContentEditable||n.tagName==="INPUT"||n.tagName==="TEXTAREA"||n.tagName==="SELECT")}function y_({status:n,physicsRunning:e,layoutStyle:t,forceLabels:i,showEdgeLabels:o,hasSelection:r,isolateSelection:A,neighborhoodDepth:I,edgeDirection:l,layoutSpacing:c,showMinimap:h,leadingControls:p,leadingPanel:m,leadingPanelOpen:b,onLeadingPanelClose:w,onTogglePhysics:O,onLayoutChange:x,onZoomOut:S,onResetZoom:E,onZoomIn:_,onFit:j,onFitSelection:X,onReset:ne,onToggleLabels:F,onToggleEdgeLabels:V,onToggleIsolation:Ie,onNeighborhoodDepthChange:Ee,onEdgeDirectionChange:Ze,onLayoutSpacingChange:xe,onToggleMinimap:He,onBack:Fe}){const[le,R]=L.useState(!1),Q=L.useId(),H=L.useRef(null),ge=L.useRef(null),ee=L.useRef(!1);return L.useEffect(()=>{b&&R(!1)},[b]),L.useEffect(()=>{le||!ee.current||(ee.current=!1,ge.current?.focus())},[le]),L.useEffect(()=>{const T=ie=>{if(ie.key==="Escape"){le&&(ee.current=!0,R(!1));return}ie.key!=="?"||b_(ie.target)||(ie.preventDefault(),w?.(),R(!0))},U=ie=>{H.current?.contains(ie.target)||R(!1)};return document.addEventListener("keydown",T),document.addEventListener("pointerdown",U),()=>{document.removeEventListener("keydown",T),document.removeEventListener("pointerdown",U)}},[w,le]),f.jsxs("div",{ref:H,className:"compass-graph-toolbar compass-glass-panel",role:"toolbar","aria-label":"Graph controls",children:[f.jsxs("div",{className:"compass-viewer-status","data-state":e?"running":"paused",role:"status","aria-live":"polite",children:[f.jsx("span",{className:"compass-viewer-status-dot","aria-hidden":"true"}),f.jsx("span",{className:"compass-viewer-status-text",children:n})]}),f.jsxs("div",{className:"compass-toolbar-actions",children:[Fe&&f.jsxs("button",{className:"compass-tool-button",type:"button","aria-label":"Back to community overview",onClick:Fe,children:[f.jsx(N3,{}),f.jsx("span",{children:"Overview"})]}),f.jsxs("label",{className:"compass-layout-picker",children:[f.jsx(G3,{"aria-hidden":"true"}),f.jsx("span",{className:"sr-only",children:"Graph layout"}),f.jsxs("select",{"aria-label":"Graph layout",value:t,onChange:T=>x(T.target.value),children:[f.jsx("option",{value:"automatic",children:"Automatic"}),f.jsx("option",{value:"circle",children:"Circle"}),f.jsx("option",{value:"concentric",children:"Concentric"}),f.jsx("option",{value:"spiral",children:"Spiral"}),f.jsx("option",{value:"grid",children:"Square grid"})]})]}),f.jsxs("button",{className:"compass-tool-button compass-physics-button",type:"button","aria-label":e?"Stop layout":t==="automatic"?"Run layout":"Fixed layout","aria-pressed":e,disabled:t!=="automatic",title:t==="automatic"?e?"Stop layout":"Run layout":"Physics is available in Automatic layout",onClick:O,children:[e?f.jsx(nv,{}):t==="automatic"?f.jsx(W3,{}):f.jsx(nv,{}),f.jsx("span",{children:e?"Stop":t==="automatic"?"Layout":"Fixed"})]}),f.jsx("span",{className:"compass-toolbar-separator","aria-hidden":"true"}),f.jsxs("div",{className:"compass-zoom-controls",role:"group","aria-label":"Zoom controls",children:[f.jsx("button",{className:"compass-tool-button compass-tool-icon-button",type:"button","aria-label":"Zoom out",title:"Zoom out",onClick:S,children:f.jsx(i_,{})}),f.jsx("button",{className:"compass-tool-button compass-zoom-reset",type:"button","aria-label":"Reset zoom to 100%",title:"Reset zoom to 100%",onClick:E,children:"100%"}),f.jsx("button",{className:"compass-tool-button compass-tool-icon-button",type:"button","aria-label":"Zoom in",title:"Zoom in",onClick:_,children:f.jsx(n_,{})})]}),f.jsx("button",{className:"compass-tool-button compass-tool-icon-button",type:"button","aria-label":"Fit graph in view",title:"Fit graph in view",onClick:j,children:f.jsx(ev,{})}),f.jsx("button",{className:"compass-tool-button compass-tool-icon-button",type:"button","aria-label":"Fit selected neighborhood",title:r?`Fit the selected node and its ${I}-hop neighborhood`:"Select a node to fit its neighborhood",disabled:!r,onClick:X,children:f.jsx(B3,{})}),f.jsx("button",{className:"compass-tool-button compass-tool-icon-button",type:"button","aria-label":"Reset graph view",title:"Reset graph view",onClick:ne,children:f.jsx(gv,{})}),f.jsx("button",{className:"compass-tool-button compass-tool-icon-button",type:"button","aria-label":i?"Hide labels":"Show labels","aria-pressed":i,title:i?"Hide node labels":"Show all node labels",onClick:F,children:f.jsx(e_,{})}),f.jsx("button",{className:"compass-tool-button compass-tool-icon-button",type:"button","aria-label":o?"Hide relationship labels":"Show relationship labels","aria-pressed":o,title:o?"Hide relationship labels":"Show relationship labels",onClick:V,children:f.jsx(ov,{})}),f.jsx("button",{ref:ge,className:"compass-tool-button compass-tool-icon-button",type:"button","aria-label":"Graph settings","aria-expanded":le,"aria-controls":Q,title:"Graph settings (?)",onClick:()=>R(T=>{const U=!T;return U&&w?.(),U}),children:f.jsx(X3,{})}),p?f.jsx("div",{className:"compass-toolbar-leading",children:p}):null]}),m,le?f.jsxs("div",{id:Q,className:"compass-explore-panel compass-glass-panel",role:"region","aria-label":"Graph exploration controls",children:[f.jsxs("div",{className:"compass-explore-heading",children:[f.jsxs("div",{children:[f.jsx("strong",{children:"Graph settings"}),f.jsx("span",{children:r?"Tune the selected neighborhood and canvas":"Set the next neighborhood, then select a node"})]}),f.jsx("kbd",{children:"?"})]}),r?null:f.jsxs("div",{className:"compass-selection-prompt",role:"note",children:[f.jsx(sv,{"aria-hidden":"true"}),f.jsxs("span",{children:[f.jsx("strong",{children:"Select a node to isolate it"}),f.jsx("small",{children:"Use the canvas or node search. Depth and direction can be set now."})]})]}),f.jsxs("button",{className:"compass-explore-toggle",type:"button","aria-label":"Isolate selection","aria-pressed":A,disabled:!r,onClick:Ie,children:[f.jsx(sv,{"aria-hidden":"true"}),f.jsxs("span",{children:[f.jsx("strong",{children:"Isolate selection"}),f.jsx("small",{children:"Hide everything outside the traversal"})]}),f.jsx("i",{"aria-hidden":"true"})]}),f.jsxs("fieldset",{className:"compass-explore-field",children:[f.jsx("legend",{children:"Neighborhood depth"}),f.jsx("div",{className:"compass-segmented-control","aria-label":"Neighborhood depth",children:[1,2,3,4].map(T=>f.jsx("button",{type:"button","aria-label":`${T} hop${T===1?"":"s"}`,"aria-pressed":I===T,onClick:()=>Ee(T),children:T},T))})]}),f.jsxs("fieldset",{className:"compass-explore-field",children:[f.jsx("legend",{children:"Edge direction"}),f.jsx("div",{className:"compass-segmented-control","aria-label":"Edge direction",children:[["both","Both"],["outgoing","Out"],["incoming","In"]].map(([T,U])=>f.jsx("button",{type:"button","aria-label":`${U==="Both"?"Both directions":U==="Out"?"Outgoing edges":"Incoming edges"}`,"aria-pressed":l===T,onClick:()=>Ze(T),children:U},T))})]}),f.jsxs("label",{className:"compass-explore-select",children:[f.jsx("span",{children:"Layout spacing"}),f.jsxs("select",{"aria-label":"Layout spacing",value:c,onChange:T=>xe(Number(T.target.value)),children:[f.jsx("option",{value:.75,children:"Compact · 75%"}),f.jsx("option",{value:1,children:"Default · 100%"}),f.jsx("option",{value:1.25,children:"Airy · 125%"}),f.jsx("option",{value:1.5,children:"Wide · 150%"})]})]}),f.jsxs("button",{className:"compass-explore-toggle",type:"button","aria-label":"Show minimap","aria-pressed":h,onClick:He,children:[f.jsx(F3,{"aria-hidden":"true"}),f.jsxs("span",{children:[f.jsx("strong",{children:"Show minimap"}),f.jsx("small",{children:"Track and reposition the visible viewport"})]}),f.jsx("i",{"aria-hidden":"true"})]}),f.jsxs("div",{className:"compass-shortcut-guide","aria-label":"Graph keyboard shortcuts",children:[f.jsxs("div",{className:"compass-shortcut-title",children:[f.jsx(L3,{"aria-hidden":"true"}),f.jsx("strong",{children:"Keyboard"})]}),f.jsxs("dl",{children:[f.jsxs("div",{children:[f.jsx("dt",{children:f.jsx("kbd",{children:"F"})}),f.jsx("dd",{children:"Fit graph"})]}),f.jsxs("div",{children:[f.jsx("dt",{children:f.jsx("kbd",{children:"⇧ F"})}),f.jsx("dd",{children:"Fit selection"})]}),f.jsxs("div",{children:[f.jsxs("dt",{children:[f.jsx("kbd",{children:"+"})," ",f.jsx("kbd",{children:"−"})]}),f.jsx("dd",{children:"Zoom"})]}),f.jsxs("div",{children:[f.jsx("dt",{children:f.jsx("kbd",{children:"0"})}),f.jsx("dd",{children:"100% zoom"})]}),f.jsxs("div",{children:[f.jsx("dt",{children:f.jsx("kbd",{children:"I"})}),f.jsx("dd",{children:"Isolate"})]}),f.jsxs("div",{children:[f.jsxs("dt",{children:[f.jsx("kbd",{children:"["})," ",f.jsx("kbd",{children:"]"})]}),f.jsx("dd",{children:"Depth"})]}),f.jsxs("div",{children:[f.jsx("dt",{children:f.jsx("kbd",{children:"D"})}),f.jsx("dd",{children:"Direction"})]}),f.jsxs("div",{children:[f.jsx("dt",{children:f.jsx("kbd",{children:"M"})}),f.jsx("dd",{children:"Minimap"})]})]})]})]}):null]})}const w_=["callable","type","module","boundary","other"],x_=["execution","dependency","structure","flow","other"],E_=new Set(["closure","constructor","function","lambda","macro","method","procedure","subroutine","database_procedure"]),S_=new Set(["class","component","enum","interface","annotation","protocol","struct","trait","type","type_alias","union"]),T_=new Set(["directory","document","export","file","folder","import","migration","module","namespace","package"]),O_=new Set(["command","config_key","database","database_column","database_constraint","database_index","database_schema","database_table","database_trigger","database_view","endpoint","event","job","message","query","queue","resource","route","schema","table","topic"]),N_=new Set(["awaits","calls","dispatches","executes","handles","instantiates","invokes","schedules","tests","triggers","spawns"]),D_=new Set(["depends_on","exports","imports","imports_from","links","re_exports","references","returns","type_of","aliases","uses"]),M_=new Set(["contains","decorates","declares","documents","embeds","extends","implements","inherits","member_of","mixes_in","overrides","renders","owns"]),R_=new Set(["consumes","emits","maps_to","produces","publishes","reads","receives","registers","routes_to","sends","subscribes","writes"]);function Dv(n){return(n??"").trim().toLowerCase().replace(/[^a-z0-9]+/g,"_").replace(/^_+|_+$/g,"")}function cs(n){const e=Dv(n);return E_.has(e)?"callable":S_.has(e)?"type":T_.has(e)?"module":O_.has(e)?"boundary":"other"}function hc(n){const e=Dv(n);return N_.has(e)?"execution":D_.has(e)?"dependency":M_.has(e)?"structure":R_.has(e)?"flow":"other"}function k_(n){return n==="type"?"diamond":n==="module"?"square":n==="boundary"?"triangle":"dot"}function z_(n){return n==="callable"?"var(--vscode-symbolIcon-functionForeground, #5fa8ff)":n==="type"?"var(--vscode-symbolIcon-classForeground, #e3b341)":n==="module"?"var(--vscode-symbolIcon-moduleForeground, #56d4b4)":n==="boundary"?"var(--vscode-symbolIcon-eventForeground, #ff9b87)":"var(--vscode-descriptionForeground, #8b949e)"}const __={callable:"Callable",type:"Type",module:"Module / file",boundary:"Boundary / data",other:"Other"},j_={execution:"Execution",dependency:"Dependency",structure:"Structure",flow:"Data / event flow",other:"Other"};function Z_({model:n}){const e=L.useMemo(()=>{const i=new Map;for(const o of n.nodes){const r=cs(o.kind);i.set(r,(i.get(r)??0)+1)}return i},[n.nodes]),t=L.useMemo(()=>{const i=new Map;for(const o of n.edges){const r=hc(o.relation);i.set(r,(i.get(r)??0)+1)}return i},[n.edges]);return f.jsxs("aside",{className:"compass-semantic-legend compass-glass-panel","aria-label":"Graph visual legend",children:[f.jsxs("section",{"aria-label":"Node categories",children:[f.jsx("strong",{children:"Nodes"}),w_.filter(i=>(e.get(i)??0)>0).map(i=>f.jsxs("span",{className:"compass-semantic-legend-item",children:[f.jsx("i",{"data-node-category":i,"aria-hidden":"true"}),__[i],f.jsx("small",{children:e.get(i)})]},i))]}),n.edges.length>0?f.jsxs("section",{"aria-label":"Relationship categories",children:[f.jsx("strong",{children:"Edges"}),x_.filter(i=>(t.get(i)??0)>0).map(i=>f.jsxs("span",{className:"compass-semantic-legend-item",children:[f.jsx("i",{"data-edge-category":i,"aria-hidden":"true"}),j_[i],f.jsx("small",{children:t.get(i)})]},i))]}):null]})}const Mv=280,Rv=560,kv=24,fc={width:340,collapsed:!1};function Gr(n){return Number.isFinite(n)?Math.min(Rv,Math.max(Mv,Math.round(n))):fc.width}function zv(n){return{width:Gr(n?.width??fc.width),collapsed:n?.collapsed??fc.collapsed}}function P_(n,e){return Gr(n-e)}function B_(n,e){return Gr(e==="ArrowLeft"?n+kv:e==="ArrowRight"?n-kv:n)}function L_({width:n,onResize:e}){const t=L.useRef(!1),i=o=>{t.current=!1,o.currentTarget.hasPointerCapture(o.pointerId)&&o.currentTarget.releasePointerCapture(o.pointerId)};return f.jsx("div",{className:"compass-inspector-resizer",role:"separator","aria-label":"Resize graph inspector","aria-orientation":"vertical","aria-valuemin":Mv,"aria-valuemax":Rv,"aria-valuenow":n,tabIndex:0,onPointerDown:o=>{t.current=!0,o.currentTarget.setPointerCapture(o.pointerId)},onPointerMove:o=>{if(!t.current)return;const r=o.currentTarget.parentElement;r&&e(P_(r.getBoundingClientRect().right,o.clientX))},onPointerUp:i,onPointerCancel:i,onKeyDown:o=>{o.key!=="ArrowLeft"&&o.key!=="ArrowRight"||(o.preventDefault(),e(B_(n,o.key)))},children:f.jsx("span",{"aria-hidden":"true"})})}function _v(n,e,t){if(t===void 0&&n.stats.aggregated&&e.memberCount!==void 0&&e.detailAvailable!==!1)return{type:"community",communityId:e.community};const i=bv(e);return i?{type:"source",source:i}:{type:"none"}}function G_(n){const e=n.source?.startLine,t=n.source?.endLine;if(e!==void 0)return t!==void 0&&t!==e?`${e}–${t}`:String(e)}function F_({node:n,hover:e,activation:t}){const i={"--compass-hover-x":`${e.x+18}px`,"--compass-hover-y":`${e.y-42}px`},o=G_(n);return f.jsxs("div",{className:"compass-node-hover-card",role:"tooltip",style:i,children:[f.jsxs("div",{className:"compass-hover-heading",children:[f.jsx("strong",{children:n.label}),f.jsx("span",{children:(n.kind??"symbol").toLocaleUpperCase()})]}),n.change&&f.jsx("span",{className:"compass-change-badge","data-change":n.change,children:n.change==="unchanged"?"Context":`${n.change[0]?.toLocaleUpperCase()}${n.change.slice(1)}`}),n.groundingStatus==="GROUNDED"&&f.jsx("span",{className:"compass-change-badge","data-grounding":"grounded",children:"GROUNDED · agent-authored"}),n.agentSummary&&f.jsx("p",{children:n.agentSummary}),n.challenge&&f.jsxs("p",{children:["Challenge (",n.challenge.effect,"): ",n.challenge.summary]}),n.challenged&&!n.challenge&&f.jsx("p",{children:"Challenge: this Base Graph fact is disputed."}),n.memberCount!==void 0?f.jsxs("p",{children:[n.memberCount.toLocaleString()," symbols"]}):f.jsxs(f.Fragment,{children:[n.language&&f.jsxs("p",{children:["Language: ",n.language]}),n.source?.file&&f.jsx("p",{className:"compass-hover-source",children:n.source.file}),o&&f.jsxs("p",{children:["Lines: ",o]}),n.signature&&f.jsx("code",{children:n.signature})]}),t.type!=="none"&&f.jsxs("p",{className:"compass-hover-hint",children:[t.type==="community"?f.jsx(cc,{"aria-hidden":"true"}):f.jsx(Z3,{"aria-hidden":"true"}),f.jsxs("span",{children:[f.jsx("strong",{children:"Double-click"})," ",t.type==="community"?"to open community subgraph":"to open source code"]})]})]})}const V_={routes_to:"routes to",publishes:"publishes",subscribes:"subscribes",produces:"produces",consumes:"consumes",schedules:"schedules",triggers:"triggers",handles:"handles",registers:"registers",reads:"reads",writes:"writes",maps_to:"maps to",depends_on:"depends on",renders:"renders"};function U_(n){const e=n.relation.trim(),t=V_[e]??e,i=n.details?.type==="route"?n.details.data:void 0,o=i?`${i.stage}${i.position===null||i.position===void 0?"":` ${i.position+1}`}`:void 0;return[t,o,i?.operation].filter(r=>r!==void 0&&r!=="").join(" · ")}function Y_(n){if(!n?.file.trim())return"";const e=n.startLine,t=n.endLine;if(e!==void 0){const i=t!==void 0&&t!==e?`${e}–${t}`:String(e);return`${n.file}:${i}`}return n.startByte!==void 0?`${n.file}:byte ${n.startByte}`:n.file}function H_(n){const e=n.confidence;return e?`${e[0]?.toLocaleUpperCase()}${e.slice(1)}`:"Unspecified"}function K_(n){if(n)return n==="unchanged"?"Context":`${n[0]?.toLocaleUpperCase()}${n.slice(1)}`}function W_({edge:n,sourceNode:e,targetNode:t,hover:i}){const o={"--compass-hover-x":`${i.x+18}px`,"--compass-hover-y":`${i.y-52}px`},r=Y_(n.relationshipSite),A=n.codeEvidence?.[0],I=K_(n.change),l=yv(n)!==void 0;return f.jsxs("div",{className:"compass-edge-hover-card",role:"tooltip",style:o,children:[f.jsxs("div",{className:"compass-edge-hover-heading",children:[f.jsxs("span",{className:"compass-edge-hover-eyebrow",children:[f.jsx(qm,{"aria-hidden":"true"}),"Relationship"]}),f.jsx("span",{className:"compass-edge-confidence","data-confidence":n.confidence??"unspecified",children:H_(n)})]}),f.jsxs("div",{className:"compass-edge-trace","aria-label":`${e.label} to ${t.label}`,children:[f.jsx("strong",{children:e.label}),f.jsx("span",{"aria-hidden":"true",children:f.jsx(D3,{})}),f.jsx("strong",{children:t.label})]}),f.jsxs("div",{className:"compass-edge-relation-row",children:[f.jsx("strong",{children:U_(n)||"Relationship"}),I&&f.jsx("span",{className:"compass-change-badge","data-change":n.change,children:I}),n.groundingStatus==="GROUNDED"&&f.jsx("span",{className:"compass-change-badge","data-grounding":"grounded",children:"GROUNDED · agent-authored"})]}),n.agentSummary&&f.jsx("p",{children:n.agentSummary}),n.challenge&&f.jsxs("p",{children:["Challenge (",n.challenge.effect,"): ",n.challenge.summary]}),n.challenged&&!n.challenge&&f.jsx("p",{children:"Challenge: this Base Graph relationship is disputed."}),(A||r)&&f.jsxs("div",{className:"compass-edge-metadata",children:[A&&f.jsxs("p",{children:[f.jsx("span",{children:"Evidence"}),f.jsx("code",{children:A.rule??A.origin})]}),r&&f.jsxs("p",{children:[f.jsx("span",{children:"Source"}),f.jsx("code",{children:r})]})]}),l&&f.jsxs("p",{className:"compass-hover-hint",children:[f.jsx(qm,{"aria-hidden":"true"}),f.jsxs("span",{children:[f.jsx("strong",{children:"Double-click"})," to open relationship source"]})]})]})}var pc=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Ne(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}var nC=function(n){return n&&n.Math===Math&&n},jt=nC(typeof globalThis=="object"&&globalThis)||nC(typeof window=="object"&&window)||nC(typeof self=="object"&&self)||nC(typeof pc=="object"&&pc)||(function(){return this})()||pc||Function("return this")(),rt=function(n){try{return!!n()}catch{return!0}},Q_=rt,Fr=!Q_(function(){var n=(function(){}).bind();return typeof n!="function"||n.hasOwnProperty("prototype")}),X_=Fr,jv=Function.prototype,Zv=jv.apply,Pv=jv.call,iC=typeof Reflect=="object"&&Reflect.apply||(X_?Pv.bind(Zv):function(){return Pv.apply(Zv,arguments)}),Bv=Fr,Lv=Function.prototype,mc=Lv.call,$_=Bv&&Lv.bind.bind(mc,mc),at=Bv?$_:function(n){return function(){return mc.apply(n,arguments)}},Gv=at,q_=Gv({}.toString),J_=Gv("".slice),Qi=function(n){return J_(q_(n),8,-1)},ej=Qi,tj=at,vc=function(n){if(ej(n)==="Function")return tj(n)},bc=typeof document=="object"&&document.all,nj=typeof bc>"u"&&bc!==void 0,Fv={all:bc,IS_HTMLDDA:nj},Vv=Fv,ij=Vv.all,un=Vv.IS_HTMLDDA?function(n){return typeof n=="function"||n===ij}:function(n){return typeof n=="function"},Vr={},gj=rt,sn=!gj(function(){return Object.defineProperty({},1,{get:function(){return 7}})[1]!==7}),oj=Fr,gC=Function.prototype.call,mi=oj?gC.bind(gC):function(){return gC.apply(gC,arguments)},Ur={},Uv={}.propertyIsEnumerable,Yv=Object.getOwnPropertyDescriptor,sj=Yv&&!Uv.call({1:2},1);Ur.f=sj?function(e){var t=Yv(this,e);return!!t&&t.enumerable}:Uv;var Yr=function(n,e){return{enumerable:!(n&1),configurable:!(n&2),writable:!(n&4),value:e}},rj=at,aj=rt,Aj=Qi,yc=Object,Cj=rj("".split),oC=aj(function(){return!yc("z").propertyIsEnumerable(0)})?function(n){return Aj(n)==="String"?Cj(n,""):yc(n)}:yc,ds=function(n){return n==null},Ij=ds,lj=TypeError,Hr=function(n){if(Ij(n))throw new lj("Can't call method on "+n);return n},cj=oC,dj=Hr,vi=function(n){return cj(dj(n))},Hv=un,Kv=Fv,uj=Kv.all,En=Kv.IS_HTMLDDA?function(n){return typeof n=="object"?n!==null:Hv(n)||n===uj}:function(n){return typeof n=="object"?n!==null:Hv(n)},Ct={},wc=Ct,xc=jt,hj=un,Wv=function(n){return hj(n)?n:void 0},bi=function(n,e){return arguments.length<2?Wv(wc[n])||Wv(xc[n]):wc[n]&&wc[n][e]||xc[n]&&xc[n][e]},fj=at,Zt=fj({}.isPrototypeOf),Kr=typeof navigator<"u"&&String(navigator.userAgent)||"",Qv=jt,Ec=Kr,Xv=Qv.process,$v=Qv.Deno,qv=Xv&&Xv.versions||$v&&$v.version,Jv=qv&&qv.v8,yi,sC;Jv&&(yi=Jv.split("."),sC=yi[0]>0&&yi[0]<4?1:+(yi[0]+yi[1])),!sC&&Ec&&(yi=Ec.match(/Edge\/(\d+)/),(!yi||yi[1]>=74)&&(yi=Ec.match(/Chrome\/(\d+)/),yi&&(sC=+yi[1])));var Wr=sC,eb=Wr,pj=rt,mj=jt,vj=mj.String,us=!!Object.getOwnPropertySymbols&&!pj(function(){var n=Symbol("symbol detection");return!vj(n)||!(Object(n)instanceof Symbol)||!Symbol.sham&&eb&&eb<41}),bj=us,tb=bj&&!Symbol.sham&&typeof Symbol.iterator=="symbol",yj=bi,wj=un,xj=Zt,Ej=tb,Sj=Object,Qr=Ej?function(n){return typeof n=="symbol"}:function(n){var e=yj("Symbol");return wj(e)&&xj(e.prototype,Sj(n))},Tj=String,Xr=function(n){try{return Tj(n)}catch{return"Object"}},Oj=un,Nj=Xr,Dj=TypeError,bo=function(n){if(Oj(n))return n;throw new Dj(Nj(n)+" is not a function")},Mj=bo,Rj=ds,Sc=function(n,e){var t=n[e];return Rj(t)?void 0:Mj(t)},Tc=mi,Oc=un,Nc=En,kj=TypeError,zj=function(n,e){var t,i;if(e==="string"&&Oc(t=n.toString)&&!Nc(i=Tc(t,n))||Oc(t=n.valueOf)&&!Nc(i=Tc(t,n))||e!=="string"&&Oc(t=n.toString)&&!Nc(i=Tc(t,n)))return i;throw new kj("Can't convert object to primitive value")},nb={exports:{}},ib=jt,_j=Object.defineProperty,jj=function(n,e){try{_j(ib,n,{value:e,configurable:!0,writable:!0})}catch{ib[n]=e}return e},Zj=jt,Pj=jj,gb="__core-js_shared__",Bj=Zj[gb]||Pj(gb,{}),Dc=Bj,ob=Dc;(nb.exports=function(n,e){return ob[n]||(ob[n]=e!==void 0?e:{})})("versions",[]).push({version:"3.33.0",mode:"pure",copyright:"© 2014-2023 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.33.0/LICENSE",source:"https://github.com/zloirock/core-js"});var hs=nb.exports,Lj=Hr,Gj=Object,Yn=function(n){return Gj(Lj(n))},Fj=at,Vj=Yn,Uj=Fj({}.hasOwnProperty),rn=Object.hasOwn||function(e,t){return Uj(Vj(e),t)},Yj=at,Hj=0,Kj=Math.random(),Wj=Yj(1 .toString),rC=function(n){return"Symbol("+(n===void 0?"":n)+")_"+Wj(++Hj+Kj,36)},Qj=jt,Xj=hs,sb=rn,$j=rC,qj=us,Jj=tb,fs=Qj.Symbol,Mc=Xj("wks"),e5=Jj?fs.for||fs:fs&&fs.withoutSetter||$j,Ut=function(n){return sb(Mc,n)||(Mc[n]=qj&&sb(fs,n)?fs[n]:e5("Symbol."+n)),Mc[n]},t5=mi,rb=En,ab=Qr,n5=Sc,i5=zj,g5=Ut,o5=TypeError,s5=g5("toPrimitive"),r5=function(n,e){if(!rb(n)||ab(n))return n;var t=n5(n,s5),i;if(t){if(e===void 0&&(e="default"),i=t5(t,n,e),!rb(i)||ab(i))return i;throw new o5("Can't convert object to primitive value")}return e===void 0&&(e="number"),i5(n,e)},a5=r5,A5=Qr,aC=function(n){var e=a5(n,"string");return A5(e)?e:e+""},C5=jt,Ab=En,Rc=C5.document,I5=Ab(Rc)&&Ab(Rc.createElement),Cb=function(n){return I5?Rc.createElement(n):{}},l5=sn,c5=rt,d5=Cb,Ib=!l5&&!c5(function(){return Object.defineProperty(d5("div"),"a",{get:function(){return 7}}).a!==7}),u5=sn,h5=mi,f5=Ur,p5=Yr,m5=vi,v5=aC,b5=rn,y5=Ib,lb=Object.getOwnPropertyDescriptor;Vr.f=u5?lb:function(e,t){if(e=m5(e),t=v5(t),y5)try{return lb(e,t)}catch{}if(b5(e,t))return p5(!h5(f5.f,e,t),e[t])};var w5=rt,x5=un,E5=/#|\.prototype\./,$r=function(n,e){var t=T5[S5(n)];return t===N5?!0:t===O5?!1:x5(e)?w5(e):!!e},S5=$r.normalize=function(n){return String(n).replace(E5,".").toLowerCase()},T5=$r.data={},O5=$r.NATIVE="N",N5=$r.POLYFILL="P",D5=$r,cb=vc,M5=bo,R5=Fr,k5=cb(cb.bind),qr=function(n,e){return M5(n),e===void 0?n:R5?k5(n,e):function(){return n.apply(e,arguments)}},Hn={},z5=sn,_5=rt,db=z5&&_5(function(){return Object.defineProperty(function(){},"prototype",{value:42,writable:!1}).prototype!==42}),j5=En,Z5=String,P5=TypeError,Xi=function(n){if(j5(n))return n;throw new P5(Z5(n)+" is not an object")},B5=sn,L5=Ib,G5=db,AC=Xi,ub=aC,F5=TypeError,kc=Object.defineProperty,V5=Object.getOwnPropertyDescriptor,zc="enumerable",_c="configurable",jc="writable";Hn.f=B5?G5?function(e,t,i){if(AC(e),t=ub(t),AC(i),typeof e=="function"&&t==="prototype"&&"value"in i&&jc in i&&!i[jc]){var o=V5(e,t);o&&o[jc]&&(e[t]=i.value,i={configurable:_c in i?i[_c]:o[_c],enumerable:zc in i?i[zc]:o[zc],writable:!1})}return kc(e,t,i)}:kc:function(e,t,i){if(AC(e),t=ub(t),AC(i),L5)try{return kc(e,t,i)}catch{}if("get"in i||"set"in i)throw new F5("Accessors not supported");return"value"in i&&(e[t]=i.value),e};var U5=sn,Y5=Hn,H5=Yr,ps=U5?function(n,e,t){return Y5.f(n,e,H5(1,t))}:function(n,e,t){return n[e]=t,n},CC=jt,K5=iC,W5=vc,Q5=un,X5=Vr.f,$5=D5,ms=Ct,q5=qr,vs=ps,hb=rn,J5=function(n){var e=function(t,i,o){if(this instanceof e){switch(arguments.length){case 0:return new n;case 1:return new n(t);case 2:return new n(t,i)}return new n(t,i,o)}return K5(n,this,arguments)};return e.prototype=n.prototype,e},ke=function(n,e){var t=n.target,i=n.global,o=n.stat,r=n.proto,A=i?CC:o?CC[t]:(CC[t]||{}).prototype,I=i?ms:ms[t]||vs(ms,t,{})[t],l=I.prototype,c,h,p,m,b,w,O,x,S;for(m in e)c=$5(i?m:t+(o?".":"#")+m,n.forced),h=!c&&A&&hb(A,m),w=I[m],h&&(n.dontCallGetSet?(S=X5(A,m),O=S&&S.value):O=A[m]),b=h&&O?O:e[m],!(h&&typeof w==typeof b)&&(n.bind&&h?x=q5(b,CC):n.wrap&&h?x=J5(b):r&&Q5(b)?x=W5(b):x=b,(n.sham||b&&b.sham||w&&w.sham)&&vs(x,"sham",!0),vs(I,m,x),r&&(p=t+"Prototype",hb(ms,p)||vs(ms,p,{}),vs(ms[p],m,b),n.real&&l&&(c||!l[m])&&vs(l,m,b)))},e4=Math.ceil,t4=Math.floor,n4=Math.trunc||function(e){var t=+e;return(t>0?t4:e4)(t)},i4=n4,IC=function(n){var e=+n;return e!==e||e===0?0:i4(e)},g4=IC,o4=Math.max,s4=Math.min,Jr=function(n,e){var t=g4(n);return t<0?o4(t+e,0):s4(t,e)},r4=IC,a4=Math.min,A4=function(n){return n>0?a4(r4(n),9007199254740991):0},C4=A4,ii=function(n){return C4(n.length)},I4=vi,l4=Jr,c4=ii,fb=function(n){return function(e,t,i){var o=I4(e),r=c4(o),A=l4(i,r),I;if(n&&t!==t){for(;r>A;)if(I=o[A++],I!==I)return!0}else for(;r>A;A++)if((n||A in o)&&o[A]===t)return n||A||0;return!n&&-1}},Zc={includes:fb(!0),indexOf:fb(!1)},ea={},d4=at,Pc=rn,u4=vi,h4=Zc.indexOf,f4=ea,pb=d4([].push),mb=function(n,e){var t=u4(n),i=0,o=[],r;for(r in t)!Pc(f4,r)&&Pc(t,r)&&pb(o,r);for(;e.length>i;)Pc(t,r=e[i++])&&(~h4(o,r)||pb(o,r));return o},Bc=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],p4=mb,m4=Bc,ta=Object.keys||function(e){return p4(e,m4)},na={};na.f=Object.getOwnPropertySymbols;var vb=sn,v4=at,b4=mi,y4=rt,Lc=ta,w4=na,x4=Ur,E4=Yn,S4=oC,bs=Object.assign,bb=Object.defineProperty,T4=v4([].concat),O4=!bs||y4(function(){if(vb&&bs({b:1},bs(bb({},"a",{enumerable:!0,get:function(){bb(this,"b",{value:3,enumerable:!1})}}),{b:2})).b!==1)return!0;var n={},e={},t=Symbol("assign detection"),i="abcdefghijklmnopqrst";return n[t]=7,i.split("").forEach(function(o){e[o]=o}),bs({},n)[t]!==7||Lc(bs({},e)).join("")!==i})?function(e,t){for(var i=E4(e),o=arguments.length,r=1,A=w4.f,I=x4.f;o>r;)for(var l=S4(arguments[r++]),c=A?T4(Lc(l),A(l)):Lc(l),h=c.length,p=0,m;h>p;)m=c[p++],(!vb||b4(I,l,m))&&(i[m]=l[m]);return i}:bs,N4=ke,yb=O4;N4({target:"Object",stat:!0,forced:Object.assign!==yb},{assign:yb});var D4=Ct,M4=D4.Object.assign,R4=M4,k4=R4,z4=k4,Yt=Ne(z4),_4=at,lC=_4([].slice),wb=at,j4=bo,Z4=En,P4=rn,xb=lC,B4=Fr,Eb=Function,L4=wb([].concat),G4=wb([].join),Gc={},F4=function(n,e,t){if(!P4(Gc,e)){for(var i=[],o=0;o=.1;)w=+r[p++%A],w>h&&(w=h),b=Math.sqrt(w*w/(1+c*c)),b=I<0?-b:b,e+=b,t+=c*b,m===!0?n.lineTo(e,t):n.moveTo(e,t),h-=w,m=!m}function oZ(n,e,t,i){n.beginPath();const o=6,r=Math.PI*2/o;n.moveTo(e+i,t);for(let A=1;A1?t-1:0),o=1;o"u")){var i=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css",t==="top"&&i.firstChild?i.insertBefore(o,i.firstChild):i.appendChild(o),o.styleSheet?o.styleSheet.cssText=n:o.appendChild(document.createTextNode(n))}}var rZ=`.vis-overlay { +Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(const A of n.seen.entries()){const I=A[1];if(e===A[0]){r(A);continue}if(n.external){const c=n.external.registry.get(A[0])?.id;if(e!==A[0]&&c){r(A);continue}}if(n.metadataRegistry.get(A[0])?.id){r(A);continue}if(I.cycle){r(A);continue}if(I.count>1&&n.reused==="ref"){r(A);continue}}}function Tm(n,e){const t=n.seen.get(e);if(!t)throw new Error("Unprocessed schema. This is a bug in Zod.");const i=I=>{const l=n.seen.get(I);if(l.ref===null)return;const c=l.def??l.schema,h={...c},p=l.ref;if(l.ref=null,p){i(p);const v=n.seen.get(p),x=v.schema;if(x.$ref&&(n.target==="draft-07"||n.target==="draft-04"||n.target==="openapi-3.0")?(c.allOf=c.allOf??[],c.allOf.push(x)):Object.assign(c,x),Object.assign(c,h),I._zod.parent===p)for(const y in c)y==="$ref"||y==="allOf"||y in h||delete c[y];if(x.$ref&&v.def)for(const y in c)y==="$ref"||y==="allOf"||y in v.def&&JSON.stringify(c[y])===JSON.stringify(v.def[y])&&delete c[y]}const m=I._zod.parent;if(m&&m!==p){i(m);const v=n.seen.get(m);if(v?.schema.$ref&&(c.$ref=v.schema.$ref,v.def))for(const x in c)x==="$ref"||x==="allOf"||x in v.def&&JSON.stringify(c[x])===JSON.stringify(v.def[x])&&delete c[x]}n.override({zodSchema:I,jsonSchema:c,path:l.path??[]})};for(const I of[...n.seen.entries()].reverse())i(I[0]);const o={};if(n.target==="draft-2020-12"?o.$schema="https://json-schema.org/draft/2020-12/schema":n.target==="draft-07"?o.$schema="http://json-schema.org/draft-07/schema#":n.target==="draft-04"?o.$schema="http://json-schema.org/draft-04/schema#":n.target,n.external?.uri){const I=n.external.registry.get(e)?.id;if(!I)throw new Error("Schema is missing an `id` property");o.$id=n.external.uri(I)}Object.assign(o,t.def??t.schema);const r=n.metadataRegistry.get(e)?.id;r!==void 0&&o.id===r&&delete o.id;const A=n.external?.defs??{};for(const I of n.seen.entries()){const l=I[1];l.def&&l.defId&&(l.def.id===l.defId&&delete l.def.id,A[l.defId]=l.def)}n.external||Object.keys(A).length>0&&(n.target==="draft-2020-12"?o.$defs=A:o.definitions=A);try{const I=JSON.parse(JSON.stringify(o));return Object.defineProperty(I,"~standard",{value:{...e["~standard"],jsonSchema:{input:qA(e,"input",n.processors),output:qA(e,"output",n.processors)}},enumerable:!1,writable:!1}),I}catch{throw new Error("Error converting schema to JSON.")}}function On(n,e){const t=e??{seen:new Set};if(t.seen.has(n))return!1;t.seen.add(n);const i=n._zod.def;if(i.type==="transform")return!0;if(i.type==="array")return On(i.element,t);if(i.type==="set")return On(i.valueType,t);if(i.type==="lazy")return On(i.getter(),t);if(i.type==="promise"||i.type==="optional"||i.type==="nonoptional"||i.type==="nullable"||i.type==="readonly"||i.type==="default"||i.type==="prefault")return On(i.innerType,t);if(i.type==="intersection")return On(i.left,t)||On(i.right,t);if(i.type==="record"||i.type==="map")return On(i.keyType,t)||On(i.valueType,t);if(i.type==="pipe")return n._zod.traits.has("$ZodCodec")?!0:On(i.in,t)||On(i.out,t);if(i.type==="object"){for(const o in i.shape)if(On(i.shape[o],t))return!0;return!1}if(i.type==="union"){for(const o of i.options)if(On(o,t))return!0;return!1}if(i.type==="tuple"){for(const o of i.items)if(On(o,t))return!0;return!!(i.rest&&On(i.rest,t))}return!1}const TM=(n,e={})=>t=>{const i=Em({...t,processors:e});return Qt(n,i),Sm(i,n),Tm(i,n)},qA=(n,e,t={})=>i=>{const{libraryOptions:o,target:r}=i??{},A=Em({...o??{},target:r,io:e,processors:t});return Qt(n,A),Sm(A,n),Tm(A,n)},OM={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},NM=(n,e,t,i)=>{const o=t;o.type="string";const{minimum:r,maximum:A,format:I,patterns:l,contentEncoding:c}=n._zod.bag;if(typeof r=="number"&&(o.minLength=r),typeof A=="number"&&(o.maxLength=A),I&&(o.format=OM[I]??I,o.format===""&&delete o.format,I==="time"&&delete o.format),c&&(o.contentEncoding=c),l&&l.size>0){const h=[...l];h.length===1?o.pattern=h[0].source:h.length>1&&(o.allOf=[...h.map(p=>({...e.target==="draft-07"||e.target==="draft-04"||e.target==="openapi-3.0"?{type:"string"}:{},pattern:p.source}))])}},DM=(n,e,t,i)=>{const o=t,{minimum:r,maximum:A,format:I,multipleOf:l,exclusiveMaximum:c,exclusiveMinimum:h}=n._zod.bag;typeof I=="string"&&I.includes("int")?o.type="integer":o.type="number";const p=typeof h=="number"&&h>=(r??Number.NEGATIVE_INFINITY),m=typeof c=="number"&&c<=(A??Number.POSITIVE_INFINITY),v=e.target==="draft-04"||e.target==="openapi-3.0";p?v?(o.minimum=h,o.exclusiveMinimum=!0):o.exclusiveMinimum=h:typeof r=="number"&&(o.minimum=r),m?v?(o.maximum=c,o.exclusiveMaximum=!0):o.exclusiveMaximum=c:typeof A=="number"&&(o.maximum=A),typeof l=="number"&&(o.multipleOf=l)},kM=(n,e,t,i)=>{t.type="boolean"},MM=(n,e,t,i)=>{t.not={}},RM=(n,e,t,i)=>{},zM=(n,e,t,i)=>{const o=n._zod.def,r=Fp(o.entries);r.every(A=>typeof A=="number")&&(t.type="number"),r.every(A=>typeof A=="string")&&(t.type="string"),t.enum=r},_M=(n,e,t,i)=>{const o=n._zod.def,r=[];for(const A of o.values)if(A===void 0){if(e.unrepresentable==="throw")throw new Error("Literal `undefined` cannot be represented in JSON Schema")}else if(typeof A=="bigint"){if(e.unrepresentable==="throw")throw new Error("BigInt literals cannot be represented in JSON Schema");r.push(Number(A))}else r.push(A);if(r.length!==0)if(r.length===1){const A=r[0];t.type=A===null?"null":typeof A,e.target==="draft-04"||e.target==="openapi-3.0"?t.enum=[A]:t.const=A}else r.every(A=>typeof A=="number")&&(t.type="number"),r.every(A=>typeof A=="string")&&(t.type="string"),r.every(A=>typeof A=="boolean")&&(t.type="boolean"),r.every(A=>A===null)&&(t.type="null"),t.enum=r},jM=(n,e,t,i)=>{if(e.unrepresentable==="throw")throw new Error("Custom types cannot be represented in JSON Schema")},PM=(n,e,t,i)=>{if(e.unrepresentable==="throw")throw new Error("Transforms cannot be represented in JSON Schema")},BM=(n,e,t,i)=>{const o=t,r=n._zod.def,{minimum:A,maximum:I}=n._zod.bag;typeof A=="number"&&(o.minItems=A),typeof I=="number"&&(o.maxItems=I),o.type="array",o.items=Qt(r.element,e,{...i,path:[...i.path,"items"]})},ZM=(n,e,t,i)=>{const o=t,r=n._zod.def;o.type="object",o.properties={};const A=r.shape;for(const c in A)o.properties[c]=Qt(A[c],e,{...i,path:[...i.path,"properties",c]});const I=new Set(Object.keys(A)),l=new Set([...I].filter(c=>{const h=r.shape[c]._zod;return e.io==="input"?h.optin===void 0:h.optout===void 0}));l.size>0&&(o.required=Array.from(l)),r.catchall?._zod.def.type==="never"?o.additionalProperties=!1:r.catchall?r.catchall&&(o.additionalProperties=Qt(r.catchall,e,{...i,path:[...i.path,"additionalProperties"]})):e.io==="output"&&(o.additionalProperties=!1)},LM=(n,e,t,i)=>{const o=n._zod.def,r=o.inclusive===!1,A=o.options.map((I,l)=>Qt(I,e,{...i,path:[...i.path,r?"oneOf":"anyOf",l]}));r?t.oneOf=A:t.anyOf=A},GM=(n,e,t,i)=>{const o=n._zod.def,r=Qt(o.left,e,{...i,path:[...i.path,"allOf",0]}),A=Qt(o.right,e,{...i,path:[...i.path,"allOf",1]}),I=c=>"allOf"in c&&Object.keys(c).length===1,l=[...I(r)?r.allOf:[r],...I(A)?A.allOf:[A]];t.allOf=l},FM=(n,e,t,i)=>{const o=t,r=n._zod.def;o.type="object";const A=r.keyType,l=A._zod.bag?.patterns;if(r.mode==="loose"&&l&&l.size>0){const h=Qt(r.valueType,e,{...i,path:[...i.path,"patternProperties","*"]});o.patternProperties={};for(const p of l)o.patternProperties[p.source]=h}else(e.target==="draft-07"||e.target==="draft-2020-12")&&(o.propertyNames=Qt(r.keyType,e,{...i,path:[...i.path,"propertyNames"]})),o.additionalProperties=Qt(r.valueType,e,{...i,path:[...i.path,"additionalProperties"]});const c=A._zod.values;if(c){const h=[...c].filter(p=>typeof p=="string"||typeof p=="number");h.length>0&&(o.required=h)}},VM=(n,e,t,i)=>{const o=n._zod.def,r=Qt(o.innerType,e,i),A=e.seen.get(n);e.target==="openapi-3.0"?(A.ref=o.innerType,t.nullable=!0):t.anyOf=[r,{type:"null"}]},UM=(n,e,t,i)=>{const o=n._zod.def;Qt(o.innerType,e,i);const r=e.seen.get(n);r.ref=o.innerType},YM=(n,e,t,i)=>{const o=n._zod.def;Qt(o.innerType,e,i);const r=e.seen.get(n);r.ref=o.innerType,t.default=JSON.parse(JSON.stringify(o.defaultValue))},HM=(n,e,t,i)=>{const o=n._zod.def;Qt(o.innerType,e,i);const r=e.seen.get(n);r.ref=o.innerType,e.io==="input"&&(t._prefault=JSON.parse(JSON.stringify(o.defaultValue)))},KM=(n,e,t,i)=>{const o=n._zod.def;Qt(o.innerType,e,i);const r=e.seen.get(n);r.ref=o.innerType;let A;try{A=o.catchValue(void 0)}catch{throw new Error("Dynamic catch values are not supported in JSON Schema")}t.default=A},WM=(n,e,t,i)=>{const o=n._zod.def,r=o.in._zod.traits.has("$ZodTransform"),A=e.io==="input"?r?o.out:o.in:o.out;Qt(A,e,i);const I=e.seen.get(n);I.ref=A},QM=(n,e,t,i)=>{const o=n._zod.def;Qt(o.innerType,e,i);const r=e.seen.get(n);r.ref=o.innerType,t.readOnly=!0},Om=(n,e,t,i)=>{const o=n._zod.def;Qt(o.innerType,e,i);const r=e.seen.get(n);r.ref=o.innerType},XM=J("ZodISODateTime",(n,e)=>{$D.init(n,e),zt.init(n,e)});function $M(n){return iM(XM,n)}const qM=J("ZodISODate",(n,e)=>{qD.init(n,e),zt.init(n,e)});function JM(n){return gM(qM,n)}const eR=J("ZodISOTime",(n,e)=>{JD.init(n,e),zt.init(n,e)});function tR(n){return oM(eR,n)}const nR=J("ZodISODuration",(n,e)=>{ek.init(n,e),zt.init(n,e)});function iR(n){return sM(nR,n)}const ii=J("ZodError",(n,e)=>{Wp.init(n,e),n.name="ZodError",Object.defineProperties(n,{format:{value:t=>VN(n,t)},flatten:{value:t=>FN(n,t)},addIssue:{value:t=>{n.issues.push(t),n.message=JSON.stringify(n.issues,tc,2)}},addIssues:{value:t=>{n.issues.push(...t),n.message=JSON.stringify(n.issues,tc,2)}},isEmpty:{get(){return n.issues.length===0}}})},{Parent:Error}),gR=oc(ii),oR=sc(ii),sR=HA(ii),rR=KA(ii),aR=HN(ii),AR=KN(ii),CR=WN(ii),IR=QN(ii),lR=XN(ii),cR=$N(ii),dR=qN(ii),uR=JN(ii),Nm=new WeakMap;function Gr(n,e,t){const i=Object.getPrototypeOf(n);let o=Nm.get(i);if(o||(o=new Set,Nm.set(i,o)),!o.has(e)){o.add(e);for(const r in t){const A=t[r];Object.defineProperty(i,r,{configurable:!0,enumerable:!1,get(){const I=A.bind(this);return Object.defineProperty(this,r,{configurable:!0,writable:!0,enumerable:!0,value:I}),I},set(I){Object.defineProperty(this,r,{configurable:!0,writable:!0,enumerable:!0,value:I})}})}}}const Rt=J("ZodType",(n,e)=>(Mt.init(n,e),Object.assign(n["~standard"],{jsonSchema:{input:qA(n,"input"),output:qA(n,"output")}}),n.toJSONSchema=TM(n,{}),n.def=e,n.type=e.type,Object.defineProperty(n,"_def",{value:e}),n.parse=(t,i)=>gR(n,t,i,{callee:n.parse}),n.safeParse=(t,i)=>sR(n,t,i),n.parseAsync=async(t,i)=>oR(n,t,i,{callee:n.parseAsync}),n.safeParseAsync=async(t,i)=>rR(n,t,i),n.spa=n.safeParseAsync,n.encode=(t,i)=>aR(n,t,i),n.decode=(t,i)=>AR(n,t,i),n.encodeAsync=async(t,i)=>CR(n,t,i),n.decodeAsync=async(t,i)=>IR(n,t,i),n.safeEncode=(t,i)=>lR(n,t,i),n.safeDecode=(t,i)=>cR(n,t,i),n.safeEncodeAsync=async(t,i)=>dR(n,t,i),n.safeDecodeAsync=async(t,i)=>uR(n,t,i),Gr(n,"ZodType",{check(...t){const i=this.def;return this.clone(Tg(i,{checks:[...i.checks??[],...t.map(o=>typeof o=="function"?{_zod:{check:o,def:{check:"custom"},onattach:[]}}:o)]}),{parent:!0})},with(...t){return this.check(...t)},clone(t,i){return Og(this,t,i)},brand(){return this},register(t,i){return t.add(this,i),this},refine(t,i){return this.check(oz(t,i))},superRefine(t,i){return this.check(sz(t,i))},overwrite(t){return this.check(ds(t))},optional(){return Lm(this)},exactOptional(){return HR(this)},nullable(){return Gm(this)},nullish(){return Lm(Gm(this))},nonoptional(t){return qR(this,t)},array(){return Te(this)},or(t){return Pm([this,t])},and(t){return GR(this,t)},transform(t){return Vm(this,UR(t))},default(t){return QR(this,t)},prefault(t){return $R(this,t)},catch(t){return ez(this,t)},pipe(t){return Vm(this,t)},readonly(){return iz(this)},describe(t){const i=this.clone();return Lr.add(i,{description:t}),i},meta(...t){if(t.length===0)return Lr.get(this);const i=this.clone();return Lr.add(i,t[0]),i},isOptional(){return this.safeParse(void 0).success},isNullable(){return this.safeParse(null).success},apply(t){return t(this)}}),Object.defineProperty(n,"description",{get(){return Lr.get(n)?.description},configurable:!0}),n)),Dm=J("_ZodString",(n,e)=>{rc.init(n,e),Rt.init(n,e),n._zod.processJSONSchema=(i,o,r)=>NM(n,i,o);const t=n._zod.bag;n.format=t.format??null,n.minLength=t.minimum??null,n.maxLength=t.maximum??null,Gr(n,"_ZodString",{regex(...i){return this.check(lM(...i))},includes(...i){return this.check(uM(...i))},startsWith(...i){return this.check(hM(...i))},endsWith(...i){return this.check(fM(...i))},min(...i){return this.check($A(...i))},max(...i){return this.check(wm(...i))},length(...i){return this.check(xm(...i))},nonempty(...i){return this.check($A(1,...i))},lowercase(i){return this.check(cM(i))},uppercase(i){return this.check(dM(i))},trim(){return this.check(mM())},normalize(...i){return this.check(pM(...i))},toLowerCase(){return this.check(vM())},toUpperCase(){return this.check(bM())},slugify(){return this.check(yM())}})}),hR=J("ZodString",(n,e)=>{rc.init(n,e),Dm.init(n,e),n.email=t=>n.check(jk(fR,t)),n.url=t=>n.check(Gk(pR,t)),n.jwt=t=>n.check(nM(RR,t)),n.emoji=t=>n.check(Fk(mR,t)),n.guid=t=>n.check(mm(km,t)),n.uuid=t=>n.check(Pk(JA,t)),n.uuidv4=t=>n.check(Bk(JA,t)),n.uuidv6=t=>n.check(Zk(JA,t)),n.uuidv7=t=>n.check(Lk(JA,t)),n.nanoid=t=>n.check(Vk(vR,t)),n.guid=t=>n.check(mm(km,t)),n.cuid=t=>n.check(Uk(bR,t)),n.cuid2=t=>n.check(Yk(yR,t)),n.ulid=t=>n.check(Hk(wR,t)),n.base64=t=>n.check(Jk(DR,t)),n.base64url=t=>n.check(eM(kR,t)),n.xid=t=>n.check(Kk(xR,t)),n.ksuid=t=>n.check(Wk(ER,t)),n.ipv4=t=>n.check(Qk(SR,t)),n.ipv6=t=>n.check(Xk(TR,t)),n.cidrv4=t=>n.check($k(OR,t)),n.cidrv6=t=>n.check(qk(NR,t)),n.e164=t=>n.check(tM(MR,t)),n.datetime=t=>n.check($M(t)),n.date=t=>n.check(JM(t)),n.time=t=>n.check(tR(t)),n.duration=t=>n.check(iR(t))});function D(n){return _k(hR,n)}const zt=J("ZodStringFormat",(n,e)=>{Ot.init(n,e),Dm.init(n,e)}),fR=J("ZodEmail",(n,e)=>{FD.init(n,e),zt.init(n,e)}),km=J("ZodGUID",(n,e)=>{LD.init(n,e),zt.init(n,e)}),JA=J("ZodUUID",(n,e)=>{GD.init(n,e),zt.init(n,e)}),pR=J("ZodURL",(n,e)=>{VD.init(n,e),zt.init(n,e)}),mR=J("ZodEmoji",(n,e)=>{UD.init(n,e),zt.init(n,e)}),vR=J("ZodNanoID",(n,e)=>{YD.init(n,e),zt.init(n,e)}),bR=J("ZodCUID",(n,e)=>{HD.init(n,e),zt.init(n,e)}),yR=J("ZodCUID2",(n,e)=>{KD.init(n,e),zt.init(n,e)}),wR=J("ZodULID",(n,e)=>{WD.init(n,e),zt.init(n,e)}),xR=J("ZodXID",(n,e)=>{QD.init(n,e),zt.init(n,e)}),ER=J("ZodKSUID",(n,e)=>{XD.init(n,e),zt.init(n,e)}),SR=J("ZodIPv4",(n,e)=>{tk.init(n,e),zt.init(n,e)}),TR=J("ZodIPv6",(n,e)=>{nk.init(n,e),zt.init(n,e)}),OR=J("ZodCIDRv4",(n,e)=>{ik.init(n,e),zt.init(n,e)}),NR=J("ZodCIDRv6",(n,e)=>{gk.init(n,e),zt.init(n,e)}),DR=J("ZodBase64",(n,e)=>{ok.init(n,e),zt.init(n,e)}),kR=J("ZodBase64URL",(n,e)=>{rk.init(n,e),zt.init(n,e)}),MR=J("ZodE164",(n,e)=>{ak.init(n,e),zt.init(n,e)}),RR=J("ZodJWT",(n,e)=>{Ck.init(n,e),zt.init(n,e)}),Mm=J("ZodNumber",(n,e)=>{om.init(n,e),Rt.init(n,e),n._zod.processJSONSchema=(i,o,r)=>DM(n,i,o),Gr(n,"ZodNumber",{gt(i,o){return this.check(bm(i,o))},gte(i,o){return this.check(Cc(i,o))},min(i,o){return this.check(Cc(i,o))},lt(i,o){return this.check(vm(i,o))},lte(i,o){return this.check(Ac(i,o))},max(i,o){return this.check(Ac(i,o))},int(i){return this.check(Rm(i))},safe(i){return this.check(Rm(i))},positive(i){return this.check(bm(0,i))},nonnegative(i){return this.check(Cc(0,i))},negative(i){return this.check(vm(0,i))},nonpositive(i){return this.check(Ac(0,i))},multipleOf(i,o){return this.check(ym(i,o))},step(i,o){return this.check(ym(i,o))},finite(){return this}});const t=n._zod.bag;n.minValue=Math.max(t.minimum??Number.NEGATIVE_INFINITY,t.exclusiveMinimum??Number.NEGATIVE_INFINITY)??null,n.maxValue=Math.min(t.maximum??Number.POSITIVE_INFINITY,t.exclusiveMaximum??Number.POSITIVE_INFINITY)??null,n.isInt=(t.format??"").includes("int")||Number.isSafeInteger(t.multipleOf??.5),n.isFinite=!0,n.format=t.format??null});function B(n){return rM(Mm,n)}const zR=J("ZodNumberFormat",(n,e)=>{Ik.init(n,e),Mm.init(n,e)});function Rm(n){return aM(zR,n)}const _R=J("ZodBoolean",(n,e)=>{lk.init(n,e),Rt.init(n,e),n._zod.processJSONSchema=(t,i,o)=>kM(n,t,i)});function Cn(n){return AM(_R,n)}const jR=J("ZodUnknown",(n,e)=>{ck.init(n,e),Rt.init(n,e),n._zod.processJSONSchema=(t,i,o)=>RM()});function Xi(){return CM(jR)}const PR=J("ZodNever",(n,e)=>{dk.init(n,e),Rt.init(n,e),n._zod.processJSONSchema=(t,i,o)=>MM(n,t,i)});function zm(n){return IM(PR,n)}const BR=J("ZodArray",(n,e)=>{uk.init(n,e),Rt.init(n,e),n._zod.processJSONSchema=(t,i,o)=>BM(n,t,i,o),n.element=e.element,Gr(n,"ZodArray",{min(t,i){return this.check($A(t,i))},nonempty(t){return this.check($A(1,t))},max(t,i){return this.check(wm(t,i))},length(t,i){return this.check(xm(t,i))},unwrap(){return this.element}})});function Te(n,e){return wM(BR,n,e)}const _m=J("ZodObject",(n,e)=>{fk.init(n,e),Rt.init(n,e),n._zod.processJSONSchema=(t,i,o)=>ZM(n,t,i,o),It(n,"shape",()=>e.shape),Gr(n,"ZodObject",{keyof(){return je(Object.keys(this._zod.def.shape))},catchall(t){return this.clone({...this._zod.def,catchall:t})},passthrough(){return this.clone({...this._zod.def,catchall:Xi()})},loose(){return this.clone({...this._zod.def,catchall:Xi()})},strict(){return this.clone({...this._zod.def,catchall:zm()})},strip(){return this.clone({...this._zod.def,catchall:void 0})},extend(t){return jN(this,t)},safeExtend(t){return PN(this,t)},merge(t){return BN(this,t)},pick(t){return zN(this,t)},omit(t){return _N(this,t)},partial(...t){return ZN(Zm,this,t[0])},required(...t){return LN(Fm,this,t[0])}})});function Ke(n,e){const t={type:"object",shape:n??{},...ye(e)};return new _m(t)}function ce(n,e){return new _m({type:"object",shape:n,catchall:zm(),...ye(e)})}const jm=J("ZodUnion",(n,e)=>{Cm.init(n,e),Rt.init(n,e),n._zod.processJSONSchema=(t,i,o)=>LM(n,t,i,o),n.options=e.options});function Pm(n,e){return new jm({type:"union",options:n,...ye(e)})}const ZR=J("ZodDiscriminatedUnion",(n,e)=>{jm.init(n,e),pk.init(n,e)});function Fr(n,e,t){return new ZR({type:"union",options:e,discriminator:n,...ye(t)})}const LR=J("ZodIntersection",(n,e)=>{mk.init(n,e),Rt.init(n,e),n._zod.processJSONSchema=(t,i,o)=>GM(n,t,i,o)});function GR(n,e){return new LR({type:"intersection",left:n,right:e})}const Bm=J("ZodRecord",(n,e)=>{vk.init(n,e),Rt.init(n,e),n._zod.processJSONSchema=(t,i,o)=>FM(n,t,i,o),n.keyType=e.keyType,n.valueType=e.valueType});function eC(n,e,t){return!e||!e._zod?new Bm({type:"record",keyType:D(),valueType:n,...ye(e)}):new Bm({type:"record",keyType:n,valueType:e,...ye(t)})}const Ic=J("ZodEnum",(n,e)=>{bk.init(n,e),Rt.init(n,e),n._zod.processJSONSchema=(i,o,r)=>zM(n,i,o),n.enum=e.entries,n.options=Object.values(e.entries);const t=new Set(Object.keys(e.entries));n.extract=(i,o)=>{const r={};for(const A of i)if(t.has(A))r[A]=e.entries[A];else throw new Error(`Key ${A} not found in enum`);return new Ic({...e,checks:[],...ye(o),entries:r})},n.exclude=(i,o)=>{const r={...e.entries};for(const A of i)if(t.has(A))delete r[A];else throw new Error(`Key ${A} not found in enum`);return new Ic({...e,checks:[],...ye(o),entries:r})}});function je(n,e){const t=Array.isArray(n)?Object.fromEntries(n.map(i=>[i,i])):n;return new Ic({type:"enum",entries:t,...ye(e)})}const FR=J("ZodLiteral",(n,e)=>{yk.init(n,e),Rt.init(n,e),n._zod.processJSONSchema=(t,i,o)=>_M(n,t,i),n.values=new Set(e.values),Object.defineProperty(n,"value",{get(){if(e.values.length>1)throw new Error("This schema contains multiple valid literal values. Use `.values` instead.");return e.values[0]}})});function nt(n,e){return new FR({type:"literal",values:Array.isArray(n)?n:[n],...ye(e)})}const VR=J("ZodTransform",(n,e)=>{wk.init(n,e),Rt.init(n,e),n._zod.processJSONSchema=(t,i,o)=>PM(n,t),n._zod.parse=(t,i)=>{if(i.direction==="backward")throw new Gp(n.constructor.name);t.addIssue=r=>{if(typeof r=="string")t.issues.push(Zr(r,t.value,e));else{const A=r;A.fatal&&(A.continue=!1),A.code??(A.code="custom"),A.input??(A.input=t.value),A.inst??(A.inst=n),t.issues.push(Zr(A))}};const o=e.transform(t.value,t);return o instanceof Promise?o.then(r=>(t.value=r,t.fallback=!0,t)):(t.value=o,t.fallback=!0,t)}});function UR(n){return new VR({type:"transform",transform:n})}const Zm=J("ZodOptional",(n,e)=>{cm.init(n,e),Rt.init(n,e),n._zod.processJSONSchema=(t,i,o)=>Om(n,t,i,o),n.unwrap=()=>n._zod.def.innerType});function Lm(n){return new Zm({type:"optional",innerType:n})}const YR=J("ZodExactOptional",(n,e)=>{xk.init(n,e),Rt.init(n,e),n._zod.processJSONSchema=(t,i,o)=>Om(n,t,i,o),n.unwrap=()=>n._zod.def.innerType});function HR(n){return new YR({type:"optional",innerType:n})}const KR=J("ZodNullable",(n,e)=>{Ek.init(n,e),Rt.init(n,e),n._zod.processJSONSchema=(t,i,o)=>VM(n,t,i,o),n.unwrap=()=>n._zod.def.innerType});function Gm(n){return new KR({type:"nullable",innerType:n})}const WR=J("ZodDefault",(n,e)=>{Sk.init(n,e),Rt.init(n,e),n._zod.processJSONSchema=(t,i,o)=>YM(n,t,i,o),n.unwrap=()=>n._zod.def.innerType,n.removeDefault=n.unwrap});function QR(n,e){return new WR({type:"default",innerType:n,get defaultValue(){return typeof e=="function"?e():Hp(e)}})}const XR=J("ZodPrefault",(n,e)=>{Tk.init(n,e),Rt.init(n,e),n._zod.processJSONSchema=(t,i,o)=>HM(n,t,i,o),n.unwrap=()=>n._zod.def.innerType});function $R(n,e){return new XR({type:"prefault",innerType:n,get defaultValue(){return typeof e=="function"?e():Hp(e)}})}const Fm=J("ZodNonOptional",(n,e)=>{Ok.init(n,e),Rt.init(n,e),n._zod.processJSONSchema=(t,i,o)=>UM(n,t,i,o),n.unwrap=()=>n._zod.def.innerType});function qR(n,e){return new Fm({type:"nonoptional",innerType:n,...ye(e)})}const JR=J("ZodCatch",(n,e)=>{Nk.init(n,e),Rt.init(n,e),n._zod.processJSONSchema=(t,i,o)=>KM(n,t,i,o),n.unwrap=()=>n._zod.def.innerType,n.removeCatch=n.unwrap});function ez(n,e){return new JR({type:"catch",innerType:n,catchValue:typeof e=="function"?e:()=>e})}const tz=J("ZodPipe",(n,e)=>{Dk.init(n,e),Rt.init(n,e),n._zod.processJSONSchema=(t,i,o)=>WM(n,t,i,o),n.in=e.in,n.out=e.out});function Vm(n,e){return new tz({type:"pipe",in:n,out:e})}const nz=J("ZodReadonly",(n,e)=>{kk.init(n,e),Rt.init(n,e),n._zod.processJSONSchema=(t,i,o)=>QM(n,t,i,o),n.unwrap=()=>n._zod.def.innerType});function iz(n){return new nz({type:"readonly",innerType:n})}const gz=J("ZodCustom",(n,e)=>{Mk.init(n,e),Rt.init(n,e),n._zod.processJSONSchema=(t,i,o)=>jM(n,t)});function oz(n,e={}){return xM(gz,n,e)}function sz(n,e){return EM(n,e)}const rz="compass.query/1",az=["file","module","package","namespace","class","struct","interface","trait","protocol","enum","enum_member","type_alias","function","method","constructor","property","field","variable","constant","parameter","import","export","macro","annotation","route","component","event","message","topic","queue","job","resource","schema","query","migration","config_key","database","database_schema","database_table","database_view","database_column","database_index","database_constraint","database_procedure","database_trigger"],Az=["contains","calls","imports","exports","extends","implements","references","type_of","returns","instantiates","overrides","decorates","routes_to","reads","writes","aliases","registers","handles","publishes","subscribes","produces","consumes","schedules","triggers","tests","depends_on","documents","maps_to"],Cz=["controller","route_handler","middleware","service","resolver","consumer","producer","subscriber","repository","model","test","fixture","generated"],Iz=["search","callers","callees","impact","explore","node_trail"],lc=D().min(1).refine(n=>n.includes("\\")||n.startsWith("/")||/^[A-Za-z]:/.test(n)?!1:n.split("/").every(e=>e!==""&&e!=="."&&e!==".."),"source path must be a safe repository-relative path"),Vr=ce({file:lc,startByte:B().int().nonnegative(),endByte:B().int().nonnegative(),startLine:B().int().positive(),startColumn:B().int().nonnegative(),endLine:B().int().positive(),endColumn:B().int().nonnegative()}).refine(n=>n.endByte>=n.startByte&&(n.endLine>n.startLine||n.endLine===n.startLine&&n.endColumn>=n.startColumn),"source anchor must be ordered"),lz=je(az),cz=je(Az),dz=je(Cz),uz=je(Iz),hz=je(["structural_graph","program_ir"]),fz=je(["ast","config","convention","artifact","heuristic"]),cc=je(["exact","inferred","ambiguous"]),dc=je(["exact","ambiguous","unresolved"]),pz=ce({nodeId:D().min(1),reason:D().min(1),confidence:cc,score:B().finite().nullable().optional(),anchor:Vr.nullable().optional()}),tC=ce({layer:hz,origin:fz,extractor:D().min(1),confidence:cc,anchor:Vr.nullable(),rule:D().min(1).nullable(),wiringSite:Vr.nullable(),resolution:dc,candidates:Te(pz).max(20).default([])}),mz=ce({type:nt("file"),data:ce({contentDigest:D().min(1),byteSize:B().int().nonnegative(),generated:Cn()})}),vz=ce({type:nt("symbol"),data:ce({signature:D().nullable().optional(),modifiers:Te(D()).default([]),overloadDiscriminator:D().nullable().optional(),declaringType:D().nullable().optional(),signatureDigest:D().nullable().optional(),implementationDigest:D().nullable().optional(),sourceDigest:D().nullable().optional()})}),bz=ce({type:nt("import_export"),data:ce({specifier:D(),importedName:D().nullable().optional(),localName:D().nullable().optional(),typeOnly:Cn()})}),yz=ce({type:nt("route"),data:ce({operation:D(),path:D(),originalPath:D().nullable().optional(),declaringScope:D(),resolution:dc,middlewareCount:B().int().nonnegative()})}),wz=ce({type:nt("component"),data:ce({componentType:D()})}),xz=ce({type:nt("resource"),data:ce({resourceKind:je(["document","paper","image","concept","rationale"]),uri:D().nullable().optional(),mediaType:D().nullable().optional()})}),Ez=ce({type:nt("messaging"),data:ce({transport:D(),subject:D(),declaringScope:D()})}),Sz=ce({type:nt("job"),data:ce({schedule:D().nullable().optional(),queue:D().nullable().optional()})}),Tz=ce({type:nt("schema"),data:ce({dialect:D().nullable().optional(),logicalDatabase:D().nullable().optional(),namespace:D().nullable().optional()})}),Oz=ce({type:nt("query"),data:ce({dialect:D().nullable().optional(),operation:D().nullable().optional(),textDigest:D().nullable().optional()})}),Nz=ce({type:nt("config"),data:ce({format:D(),keyPath:D()})}),Dz=ce({type:nt("database"),data:ce({logicalDatabase:D(),databaseSchema:D().nullable().optional()})}),kz=Fr("type",[mz,vz,bz,yz,wz,xz,Ez,Sz,Tz,Oz,Nz,Dz]),Mz=ce({type:nt("call"),data:ce({dispatch:je(["static","virtual","dynamic"]),receiverType:D().nullable().optional(),argumentCount:B().int().nonnegative().nullable().optional()})}),Rz=ce({type:nt("route"),data:ce({stage:je(["middleware","handler"]),position:B().int().nonnegative().nullable().optional(),operation:D().nullable().optional()})}),zz=ce({type:nt("messaging"),data:ce({transport:D(),subject:D()})}),_z=ce({type:nt("schedule"),data:ce({expression:D().nullable().optional()})}),jz=ce({type:nt("mapping"),data:ce({mappingKind:D()})}),Um=Fr("type",[Mz,Rz,zz,_z,jz]),Pz=ce({maxDepth:B().int().positive(),maxNodes:B().int().positive(),maxEdges:B().int().positive(),maxPaths:B().int().positive(),maxCandidates:B().int().positive(),maxSourceBytes:B().int().positive(),maxResponseBytes:B().int().positive()}),Bz=ce({nodeId:D().min(1),score:B().finite(),matchedFields:Te(D())}),Zz=ce({id:D().min(1),kind:lz,roles:Te(dz),name:D().min(1),qualifiedName:D().min(1),language:D().nullable(),framework:D().nullable(),source:Vr.nullable(),details:kz.nullable(),evidence:Te(tC)}),Lz=ce({id:D().min(1),source:D().min(1),target:D().min(1),kind:cz,relationshipSite:Vr.nullable(),details:Um.nullable(),evidence:Te(tC)}),Gz=ce({path:lc,contentDigest:D().min(1),source:D().nullable(),truncated:Cn()}),Fz=ce({id:D().min(1),nodeIds:Te(D().min(1)),edgeIds:Te(D().min(1)),weakestResolution:dc,weakestConfidence:cc}),Vz=ce({code:je(["no_match","ambiguous_match","direction_mismatch","unresolved_handler","incomplete_coverage","stale_source_digest","bounded_truncation","program_orphan","program_conflict","program_unavailable"]),message:D().min(1),nodeId:D().nullable(),path:lc.nullable()}),Uz=ce({schema:nt(rz),operation:uz,results:Te(Bz),nodes:Te(Zz),edges:Te(Lz),files:Te(Gz),paths:Te(Fz),diagnostics:Te(Vz),limits:Pz,truncated:Cn()}),Yz="compass.viewer.graph/1",uc=Ke({file:D(),startLine:B().int().positive().optional(),endLine:B().int().positive().optional(),startByte:B().int().nonnegative().optional(),endByte:B().int().nonnegative().optional()}).passthrough(),Hz=Ke({field:D().min(1),before:Xi().optional(),after:Xi().optional()}),Ym=Ke({before:eC(D(),Xi()).optional(),after:eC(D(),Xi()).optional(),fields:Te(Hz)}),Hm=Ke({challenge:D().startsWith("challenge:"),targetId:D().min(1),effect:je(["flag","mask"]),masked:Cn(),certificateDigest:D().regex(/^[0-9a-f]{64}$/),summary:D()}).strict(),Kz=Ke({total:B().int().nonnegative(),examples:Te(Ke({kind:je(["assertion","challenge"]),id:D().min(1),reasonCode:D().min(1),explanation:D(),sequence:B().int().nonnegative()}).strict()),omittedExamples:B().int().nonnegative()}).strict(),Km=eC(D(),Xi()),Wz=Fr("kind",[Ke({kind:nt("native")}).passthrough(),Ke({kind:nt("ocr"),profile:Km,confidence_bps:B().int().min(0).max(1e4)}).passthrough()]),Qz=Ke({kind:D().min(1)}).passthrough(),Xz=Ke({role:je(["root","block"]).optional(),kind:D().optional(),format:D().optional(),text:D().optional(),ordinal:B().int().nonnegative().optional(),complete:Cn().optional(),visualCoverage:je(["not_requested","complete","partial","failed"]).optional(),ocrMode:je(["off","auto","always"]).optional(),origin:Wz.optional(),locator:Qz.optional(),ocrProfile:Km.optional()}).passthrough(),$z=Ke({id:D().min(1),label:D(),kind:D().optional(),community:B().int(),communityName:D().optional(),degree:B().int().nonnegative().optional(),language:D().optional(),signature:D().optional(),size:B().positive().optional(),memberCount:B().int().nonnegative().optional(),detailAvailable:Cn().optional(),learningStatus:D().optional(),learningStale:Cn().optional(),depth:B().int().nonnegative().optional(),root:Cn().optional(),agentAssertion:D().startsWith("assertion:").optional(),agentSummary:D().optional(),groundingStatus:nt("GROUNDED").optional(),challenged:Cn().optional(),challenge:Hm.optional(),change:je(["added","removed","changed","unchanged"]).optional(),evidence:Ym.optional(),codeEvidence:Te(tC).optional(),source:uc.optional(),color:Ke({background:D(),border:D()}).passthrough().optional(),document:Xz.optional()}).passthrough(),qz=Ke({id:D().min(1),source:D().min(1),target:D().min(1),relation:D(),weight:B().int().positive().optional(),change:je(["added","removed","changed","unchanged"]).optional(),evidence:Ym.optional(),codeEvidence:Te(tC).optional(),details:Um.nullable().optional(),relationshipSite:uc.optional(),confidence:je(["extracted","inferred","ambiguous","aggregated"]).optional(),agentAssertion:D().startsWith("assertion:").optional(),agentSummary:D().optional(),groundingStatus:nt("GROUNDED").optional(),challenged:Cn().optional(),challenge:Hm.optional()}).passthrough(),Jz=Ke({id:B().int(),label:D(),color:D(),hidden:Cn().default(!1)}).passthrough(),Ng=Ke({schema:nt(Yz),title:D(),stats:Ke({nodes:B().int().nonnegative(),edges:B().int().nonnegative(),communities:B().int().nonnegative(),aggregated:Cn()}).passthrough(),nodes:Te($z),edges:Te(qz),communities:Te(Jz),hyperedges:Te(Xi()).default([]),effectiveGraph:Ke({effectiveIdentity:D().regex(/^[0-9a-f]{64}$/),baseGeneration:Ke({generationId:D().min(1),graphDigest:D().regex(/^[0-9a-f]{64}$/)}).strict(),overlayRevision:D().regex(/^[0-9a-f]{64}$/),compositionProfile:je(["augment","curated"]),retractions:Kz,omissions:Ke({total:B().int().nonnegative(),direct:B().int().nonnegative(),cascaded:B().int().nonnegative(),examples:Te(Xi()),omittedExamples:B().int().nonnegative()}).strict()}).strict().optional()}).passthrough(),e3=je(["resolved","inferred","ambiguous","unresolved"]),Wm=Ke({source_file:D(),start_byte:B().int().nonnegative(),end_byte:B().int().nonnegative()}),t3=Ke({id:D(),symbol:D().nullable(),name:D(),file:D().nullable(),anchor:Wm.nullable().optional(),startLine:B().int().positive().nullable().optional(),endLine:B().int().positive().nullable().optional(),startByte:B().int().nonnegative().nullable().optional(),endByte:B().int().nonnegative().nullable().optional(),graphNodeId:D().nullable(),unresolved:Cn(),evidenceLayer:je(["structural_graph","program_ir","combined"]).optional()}),n3=Pm([Ke({anchor:Wm,evidence:Te(D())}),Ke({sourceFile:D().nullable(),line:B().int().positive().nullable(),startByte:B().int().nonnegative().nullable(),endByte:B().int().nonnegative().nullable(),evidence:Te(D())})]),i3=Ke({id:D(),source:D(),target:D(),callee:D(),resolution:e3,confidence:D().nullable().optional(),callSites:Te(n3),evidenceLayer:je(["structural_graph","program_ir","combined"]).optional()}),g3=Ke({schema:je(["compass.program.call_graph/1","compass.call_graph/1"]),rootSymbol:D(),direction:je(["callers","callees","both"]),depth:B().int().positive(),nodes:Te(t3),edges:Te(i3),truncated:Cn(),continuations:Te(Ke({symbol:D(),direction:je(["callers","callees","both"]),nextDepth:B().int().positive()})),coverage:Ke({resolved:B().int().nonnegative(),inferred:B().int().nonnegative(),ambiguous:B().int().nonnegative(),unresolved:B().int().nonnegative(),evidenceLayer:je(["structural_graph","program_ir","combined"]).optional(),partial:Cn().optional(),limitations:Te(D()).optional(),warning:D()})}),o3="compass.viewer.architecture/1",s3=je(["production","all_code"]),Qm=je(["execution","dependency","type","structure","contextual","unknown"]),Xm=je(["architecture","execution","dependency","type","structure","all"]),r3=je(["owner","subsystem"]),a3=je(["overview","detail"]),A3=je(["overlay","persisted","owner","path","declaration","hub","provider","fallback"]),C3=je(["good","degraded","insufficient"]),I3=je(["info","warning","error"]),l3=je(["production","test","generated","vendor","documentation","unknown"]),$m=ce({production:B().int().nonnegative(),test:B().int().nonnegative(),generated:B().int().nonnegative(),vendor:B().int().nonnegative(),documentation:B().int().nonnegative(),unknown:B().int().nonnegative()}),qm=ce({execution:B().int().nonnegative(),dependency:B().int().nonnegative(),type:B().int().nonnegative(),structure:B().int().nonnegative(),contextual:B().int().nonnegative(),unknown:B().int().nonnegative()}),c3=ce({extracted:B().int().nonnegative(),inferred:B().int().nonnegative(),ambiguous:B().int().nonnegative()}),d3=ce({id:D().min(1),label:D(),kind:D(),sourceFile:D().nullable(),sourceScope:l3,scopeReason:D().min(1),community:B().int().nonnegative().nullable()}),u3=ce({id:D().min(1),source:D().min(1),target:D().min(1),relation:D(),relationClass:Qm,confidence:je(["extracted","inferred","ambiguous"])}),h3=ce({value:D().min(1),provenance:A3,membershipSignature:D().min(1),quality:B().int().min(0).max(100),evidence:Te(D())}),f3=ce({id:D().min(1),parentId:D().nullable(),kind:r3,rank:B().int().positive(),name:h3,ownerKey:D().min(1),communityIds:Te(B().int().nonnegative()),nodeCount:B().int().nonnegative(),relationshipCount:B().int().nonnegative(),neighborCount:B().int().nonnegative(),cohesion:B().finite(),sourceScopes:$m,pinned:Cn()}),p3=ce({nodeIndex:B().int().nonnegative(),groupIndex:B().int().nonnegative()}),m3=ce({id:D().min(1),level:a3,ownerId:D().nullable(),sourceGroup:D().min(1),targetGroup:D().min(1),relationshipCount:B().int().nonnegative(),relationClasses:qm,evidence:c3}),v3=ce({admitted:B().int().nonnegative(),internal:B().int().nonnegative(),crossGroup:B().int().nonnegative(),unassigned:B().int().nonnegative(),relationClasses:qm}),Jm=ce({totalGroups:B().int().nonnegative(),shownGroups:B().int().nonnegative(),omittedGroups:B().int().nonnegative(),representedNodes:B().int().nonnegative(),omittedNodes:B().int().nonnegative(),representedRelationships:B().int().nonnegative(),omittedRelationships:B().int().nonnegative(),witnessGroupIds:Te(D()),maxOverviewGroups:B().int().positive(),maxOverviewRoutes:B().int().positive()}),b3=ce({code:D().min(1),severity:I3,message:D(),observed:B().nullable(),threshold:B().nullable(),witnesses:Te(D()),recommendedAction:D()}),ev=ce({status:C3,metrics:ce({sourceScopes:$m,unknownSourceFraction:B().min(0).max(1),generatedVendorLeakage:B().int().nonnegative(),representedNodeFraction:B().min(0).max(1),representedRelationshipFraction:B().min(0).max(1),duplicateNames:B().int().nonnegative(),fallbackNames:B().int().nonnegative(),largestGroupFraction:B().min(0).max(1),unknownRelations:B().int().nonnegative(),unassignedNodes:B().int().nonnegative(),unassignedRelationships:B().int().nonnegative()}),diagnostics:Te(b3)}),y3=ce({scope:s3,defaultLens:Xm,groups:Te(f3),memberships:Te(p3),routes:Te(m3),overviewGroupIds:Te(D()),overviewRouteIds:Te(D()),coverage:v3,omissions:Jm,quality:ev}),w3=ce({maxNodes:B().int().positive(),maxRelationships:B().int().positive(),maxGroups:B().int().positive(),maxRoutes:B().int().positive(),maxOverviewGroups:B().int().positive(),maxOverviewRoutes:B().int().positive(),maxNameCandidates:B().int().positive(),maxNameEvidence:B().int().positive(),maxDiagnostics:B().int().positive(),maxOmissionWitnesses:B().int().positive()}),x3=ce({schema:nt(o3),title:D(),nodes:Te(d3),relationships:Te(u3),projections:Te(y3).min(1),statistics:ce({nodes:B().int().nonnegative(),relationships:B().int().nonnegative(),communities:B().int().nonnegative(),extracted:B().int().nonnegative(),inferred:B().int().nonnegative(),ambiguous:B().int().nonnegative()}),provenance:ce({projectName:D(),builtAtCommit:D().nullable(),generatedAt:D().nullable()}),limits:w3}).superRefine((n,e)=>{const t=new Set(n.nodes.map(i=>i.id));t.size!==n.nodes.length&&e.addIssue({code:"custom",path:["nodes"],message:"node IDs must be unique"});for(const[i,o]of n.relationships.entries())(!t.has(o.source)||!t.has(o.target))&&e.addIssue({code:"custom",path:["relationships",i],message:"relationship endpoints must identify included nodes"});for(const[i,o]of n.projections.entries()){const r=new Set(o.groups.map(A=>A.id));for(const[A,I]of o.memberships.entries())(I.nodeIndex>=n.nodes.length||I.groupIndex>=o.groups.length)&&e.addIssue({code:"custom",path:["projections",i,"memberships",A],message:"membership indexes must identify an included node and group"});for(const[A,I]of o.routes.entries())(!r.has(I.sourceGroup)||!r.has(I.targetGroup))&&e.addIssue({code:"custom",path:["projections",i,"routes",A],message:"route endpoints must identify included groups"})}}),E3=je(["production","all"]),S3=je(["all","extracted","inferred","ambiguous"]),T3=je(["production","test","generated","vendor","documentation","unknown"]),O3=je(["extracted","inferred","ambiguous"]),N3=Ke({production:B().int().nonnegative(),test:B().int().nonnegative(),generated:B().int().nonnegative(),vendor:B().int().nonnegative(),documentation:B().int().nonnegative(),unknown:B().int().nonnegative()}),D3=Ke({id:D(),name:D(),nodeCount:B().int().nonnegative(),totalNodeCount:B().int().nonnegative(),internalRelationshipCount:B().int().nonnegative(),incomingRelationships:B().int().nonnegative(),outgoingRelationships:B().int().nonnegative(),scopes:N3}),k3=Ke({id:D(),sourceGroup:D(),targetGroup:D(),relationships:B().int().nonnegative(),extracted:B().int().nonnegative(),inferred:B().int().nonnegative(),ambiguous:B().int().nonnegative()});Ke({title:D(),scope:E3,evidence:S3,lens:Xm,groups:Te(D3),routes:Te(k3),statistics:Ke({visibleNodes:B().int().nonnegative(),totalNodes:B().int().nonnegative(),visibleRelationships:B().int().nonnegative(),totalRelationships:B().int().nonnegative(),communities:B().int().nonnegative(),extracted:B().int().nonnegative(),inferred:B().int().nonnegative(),ambiguous:B().int().nonnegative()}),coverage:Ke({internal:B().int().nonnegative(),crossGroup:B().int().nonnegative(),unassigned:B().int().nonnegative()}),omissions:Jm,quality:ev,provenance:Ke({projectName:D(),builtAtCommit:D().nullable(),generatedAt:D().nullable()})});const M3=Ke({id:D(),label:D(),kind:D(),sourceFile:D().nullable(),scope:T3,groupId:D()}),tv=Ke({id:D(),source:D(),target:D(),sourceLabel:D(),targetLabel:D(),sourceFile:D().nullable(),targetFile:D().nullable(),sourceGroup:D(),targetGroup:D(),relation:D(),relationClass:Qm,confidence:O3}),nC=Ke({page:B().int().positive(),pageSize:B().int().min(1).max(100),pageCount:B().int().positive(),total:B().int().nonnegative(),start:B().int().nonnegative(),end:B().int().nonnegative()});Fr("kind",[nC.extend({kind:nt("symbols"),groupId:D(),items:Te(M3)}),nC.extend({kind:nt("relationships"),groupId:D(),items:Te(tv)})]),nC.extend({routeId:D(),sourceGroup:D(),targetGroup:D(),items:Te(tv)});const R3=Ke({id:D(),kind:je(["group","symbol","relationship"]),label:D(),detail:D(),groupId:D().nullable(),routeId:D().nullable(),sourceFile:D().nullable()});nC.extend({query:D(),items:Te(R3)});const z3="compass.viewer.workbench/1",_3=ce({status:je(["complete","summary","partial"]),truncated:Cn(),nodes:B().int().nonnegative(),edges:B().int().nonnegative(),limitations:Te(D()).default([])}),yo={id:D().min(1),title:D().min(1),description:D(),coverage:_3},j3=je(["dependencies","routes","data","messaging","tests","provenance"]),P3=Fr("kind",[ce({...yo,kind:nt("code"),model:Ng,communityDetails:eC(D(),Ng).default({})}),ce({...yo,kind:nt("call"),root:D(),graph:g3}),ce({...yo,kind:nt("impact"),root:D(),result:Uz}),ce({...yo,kind:nt("architecture"),model:x3}),ce({...yo,kind:nt("history"),baseRevision:D(),targetRevision:D(),before:Ng,after:Ng}),ce({...yo,kind:nt("affected"),root:D(),relations:Te(D()),depth:B().int().nonnegative(),model:Ng}),ce({...yo,kind:nt("artifact"),lens:j3,relations:Te(D()),model:Ng})]),B3=ce({schema:nt(z3),title:D(),graphIdentity:D().min(1),defaultView:D(),views:Te(P3).min(1)}).superRefine((n,e)=>{const t=new Set;for(const[i,o]of n.views.entries())t.has(o.id)&&e.addIssue({code:"custom",path:["views",i,"id"],message:`duplicate workbench view id '${o.id}'`}),t.add(o.id);t.has(n.defaultView)||e.addIssue({code:"custom",path:["defaultView"],message:"defaultView must identify one included view"})});var P=ql();const Z3=hN({__proto__:null,default:fN(P)},[P]);const L3=n=>n.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),G3=n=>n.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,i)=>i?i.toUpperCase():t.toLowerCase()),nv=n=>{const e=G3(n);return e.charAt(0).toUpperCase()+e.slice(1)},iv=(...n)=>n.filter((e,t,i)=>!!e&&e.trim()!==""&&i.indexOf(e)===t).join(" ").trim(),F3=n=>{for(const e in n)if(e.startsWith("aria-")||e==="role"||e==="title")return!0};var V3={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 U3=P.forwardRef(({color:n="currentColor",size:e=24,strokeWidth:t=2,absoluteStrokeWidth:i,className:o="",children:r,iconNode:A,...I},l)=>P.createElement("svg",{ref:l,...V3,width:e,height:e,stroke:n,strokeWidth:i?Number(t)*24/Number(e):t,className:iv("lucide",o),...!r&&!F3(I)&&{"aria-hidden":"true"},...I},[...A.map(([c,h])=>P.createElement(c,h)),...Array.isArray(r)?r:[r]]));const Ne=(n,e)=>{const t=P.forwardRef(({className:i,...o},r)=>P.createElement(U3,{ref:r,iconNode:e,className:iv(`lucide-${L3(nv(n))}`,`lucide-${n}`,i),...o}));return t.displayName=nv(n),t};const Y3=Ne("arrow-down",[["path",{d:"M12 5v14",key:"s699le"}],["path",{d:"m19 12-7 7-7-7",key:"1idqje"}]]);const H3=Ne("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);const K3=Ne("arrow-right",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]);const W3=Ne("arrow-up",[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]]);const Q3=Ne("badge-check",[["path",{d:"M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z",key:"3c2336"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);const X3=Ne("boxes",[["path",{d:"M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z",key:"lc1i9w"}],["path",{d:"m7 16.5-4.74-2.85",key:"1o9zyk"}],["path",{d:"m7 16.5 5-3",key:"va8pkn"}],["path",{d:"M7 16.5v5.17",key:"jnp8gn"}],["path",{d:"M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z",key:"8zsnat"}],["path",{d:"m17 16.5-5-3",key:"8arw3v"}],["path",{d:"m17 16.5 4.74-2.85",key:"8rfmw"}],["path",{d:"M17 16.5v5.17",key:"k6z78m"}],["path",{d:"M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z",key:"1xygjf"}],["path",{d:"M12 8 7.26 5.15",key:"1vbdud"}],["path",{d:"m12 8 4.74-2.85",key:"3rx089"}],["path",{d:"M12 13.5V8",key:"1io7kd"}]]);const $3=Ne("braces",[["path",{d:"M8 3H7a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2 2 2 0 0 1 2 2v5c0 1.1.9 2 2 2h1",key:"ezmyqa"}],["path",{d:"M16 21h1a2 2 0 0 0 2-2v-5c0-1.1.9-2 2-2a2 2 0 0 1-2-2V5a2 2 0 0 0-2-2h-1",key:"e1hn23"}]]);const q3=Ne("circle-check",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);const J3=Ne("circle-dot-dashed",[["path",{d:"M10.1 2.18a9.93 9.93 0 0 1 3.8 0",key:"1qdqn0"}],["path",{d:"M17.6 3.71a9.95 9.95 0 0 1 2.69 2.7",key:"1bq7p6"}],["path",{d:"M21.82 10.1a9.93 9.93 0 0 1 0 3.8",key:"1rlaqf"}],["path",{d:"M20.29 17.6a9.95 9.95 0 0 1-2.7 2.69",key:"1xk03u"}],["path",{d:"M13.9 21.82a9.94 9.94 0 0 1-3.8 0",key:"l7re25"}],["path",{d:"M6.4 20.29a9.95 9.95 0 0 1-2.69-2.7",key:"1v18p6"}],["path",{d:"M2.18 13.9a9.93 9.93 0 0 1 0-3.8",key:"xdo6bj"}],["path",{d:"M3.71 6.4a9.95 9.95 0 0 1 2.7-2.69",key:"1jjmaz"}],["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}]]);const gv=Ne("circle-question-mark",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);const e_=Ne("compass",[["path",{d:"m16.24 7.76-1.804 5.411a2 2 0 0 1-1.265 1.265L7.76 16.24l1.804-5.411a2 2 0 0 1 1.265-1.265z",key:"9ktpf1"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);const iC=Ne("external-link",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]);const t_=Ne("eye",[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);const n_=Ne("file-code-2",[["path",{d:"M4 22h14a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v4",key:"1pf5j1"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"m5 12-3 3 3 3",key:"oke12k"}],["path",{d:"m9 18 3-3-3-3",key:"112psh"}]]);const i_=Ne("file-cog",[["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"m2.305 15.53.923-.382",key:"yfp9st"}],["path",{d:"m3.228 12.852-.924-.383",key:"bckynb"}],["path",{d:"M4.677 21.5a2 2 0 0 0 1.313.5H18a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v2.5",key:"1yo3oz"}],["path",{d:"m4.852 11.228-.383-.923",key:"1j88i9"}],["path",{d:"m4.852 16.772-.383.924",key:"sag1dv"}],["path",{d:"m7.148 11.228.383-.923",key:"rj39hk"}],["path",{d:"m7.53 17.696-.382-.924",key:"1uu5cs"}],["path",{d:"m8.772 12.852.923-.383",key:"13811l"}],["path",{d:"m8.772 15.148.923.383",key:"z1a5l0"}],["circle",{cx:"6",cy:"14",r:"3",key:"a1xfv6"}]]);const ov=Ne("file-image",[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["circle",{cx:"10",cy:"12",r:"2",key:"737tya"}],["path",{d:"m20 17-1.296-1.296a2.41 2.41 0 0 0-3.408 0L9 22",key:"wt3hpn"}]]);const g_=Ne("focus",[["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}],["path",{d:"M3 7V5a2 2 0 0 1 2-2h2",key:"aa7l1z"}],["path",{d:"M17 3h2a2 2 0 0 1 2 2v2",key:"4qcy5o"}],["path",{d:"M21 17v2a2 2 0 0 1-2 2h-2",key:"6vwrx8"}],["path",{d:"M7 21H5a2 2 0 0 1-2-2v-2",key:"ioqczr"}]]);const sv=Ne("git-branch",[["line",{x1:"6",x2:"6",y1:"3",y2:"15",key:"17qcm7"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["path",{d:"M18 9a9 9 0 0 1-9 9",key:"n2h4wq"}]]);const rv=Ne("git-compare-arrows",[["circle",{cx:"5",cy:"6",r:"3",key:"1qnov2"}],["path",{d:"M12 6h5a2 2 0 0 1 2 2v7",key:"1yj91y"}],["path",{d:"m15 9-3-3 3-3",key:"1lwv8l"}],["circle",{cx:"19",cy:"18",r:"3",key:"1qljk2"}],["path",{d:"M12 18H7a2 2 0 0 1-2-2V9",key:"16sdep"}],["path",{d:"m9 15 3 3-3 3",key:"1m3kbl"}]]);const hc=Ne("git-fork",[["circle",{cx:"12",cy:"18",r:"3",key:"1mpf1b"}],["circle",{cx:"6",cy:"6",r:"3",key:"1lh9wr"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["path",{d:"M18 9v2c0 .6-.4 1-1 1H7c-.6 0-1-.4-1-1V9",key:"1uq4wg"}],["path",{d:"M12 12v3",key:"158kv8"}]]);const o_=Ne("keyboard",[["path",{d:"M10 8h.01",key:"1r9ogq"}],["path",{d:"M12 12h.01",key:"1mp3jc"}],["path",{d:"M14 8h.01",key:"1primd"}],["path",{d:"M16 12h.01",key:"1l6xoz"}],["path",{d:"M18 8h.01",key:"emo2bl"}],["path",{d:"M6 8h.01",key:"x9i8wu"}],["path",{d:"M7 16h10",key:"wp8him"}],["path",{d:"M8 12h.01",key:"czm47f"}],["rect",{width:"20",height:"16",x:"2",y:"4",rx:"2",key:"18n3k1"}]]);const s_=Ne("layout-grid",[["rect",{width:"7",height:"7",x:"3",y:"3",rx:"1",key:"1g98yp"}],["rect",{width:"7",height:"7",x:"14",y:"3",rx:"1",key:"6d4xhi"}],["rect",{width:"7",height:"7",x:"14",y:"14",rx:"1",key:"nxv5o0"}],["rect",{width:"7",height:"7",x:"3",y:"14",rx:"1",key:"1bb6yr"}]]);const r_=Ne("map-pin",[["path",{d:"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0",key:"1r0f0z"}],["circle",{cx:"12",cy:"10",r:"3",key:"ilqhr7"}]]);const a_=Ne("map",[["path",{d:"M14.106 5.553a2 2 0 0 0 1.788 0l3.659-1.83A1 1 0 0 1 21 4.619v12.764a1 1 0 0 1-.553.894l-4.553 2.277a2 2 0 0 1-1.788 0l-4.212-2.106a2 2 0 0 0-1.788 0l-3.659 1.83A1 1 0 0 1 3 19.381V6.618a1 1 0 0 1 .553-.894l4.553-2.277a2 2 0 0 1 1.788 0z",key:"169xi5"}],["path",{d:"M15 5.764v15",key:"1pn4in"}],["path",{d:"M9 3.236v15",key:"1uimfh"}]]);const av=Ne("maximize-2",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"m21 3-7 7",key:"1l2asr"}],["path",{d:"m3 21 7-7",key:"tjx5ai"}],["path",{d:"M9 21H3v-6",key:"wtvkvv"}]]);const A_=Ne("minus",[["path",{d:"M5 12h14",key:"1ays0h"}]]);const C_=Ne("move",[["path",{d:"M12 2v20",key:"t6zp3m"}],["path",{d:"m15 19-3 3-3-3",key:"11eu04"}],["path",{d:"m19 9 3 3-3 3",key:"1mg7y2"}],["path",{d:"M2 12h20",key:"9i4pu4"}],["path",{d:"m5 9-3 3 3 3",key:"j64kie"}],["path",{d:"m9 5 3-3 3 3",key:"l8vdw6"}]]);const fc=Ne("network",[["rect",{x:"16",y:"16",width:"6",height:"6",rx:"1",key:"4q2zg0"}],["rect",{x:"2",y:"16",width:"6",height:"6",rx:"1",key:"8cvhb9"}],["rect",{x:"9",y:"2",width:"6",height:"6",rx:"1",key:"1egb70"}],["path",{d:"M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3",key:"1jsf9p"}],["path",{d:"M12 12V8",key:"2874zd"}]]);const I_=Ne("panel-left-close",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m16 15-3-3 3-3",key:"14y99z"}]]);const l_=Ne("panel-left-open",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m14 9 3 3-3 3",key:"8010ee"}]]);const Av=Ne("panel-right-close",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M15 3v18",key:"14nvp0"}],["path",{d:"m8 9 3 3-3 3",key:"12hl5m"}]]);const c_=Ne("panel-right-open",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M15 3v18",key:"14nvp0"}],["path",{d:"m10 15-3-3 3-3",key:"1pgupc"}]]);const Cv=Ne("pause",[["rect",{x:"14",y:"3",width:"5",height:"18",rx:"1",key:"kaeet6"}],["rect",{x:"5",y:"3",width:"5",height:"18",rx:"1",key:"1wsw3u"}]]);const d_=Ne("play",[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]]);const Iv=Ne("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);const lv=Ne("rotate-ccw",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]]);const cv=Ne("route",[["circle",{cx:"6",cy:"19",r:"3",key:"1kj8tv"}],["path",{d:"M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15",key:"1d8sl"}],["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}]]);const dv=Ne("scan-search",[["path",{d:"M3 7V5a2 2 0 0 1 2-2h2",key:"aa7l1z"}],["path",{d:"M17 3h2a2 2 0 0 1 2 2v2",key:"4qcy5o"}],["path",{d:"M21 17v2a2 2 0 0 1-2 2h-2",key:"6vwrx8"}],["path",{d:"M7 21H5a2 2 0 0 1-2-2v-2",key:"ioqczr"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}],["path",{d:"m16 16-1.9-1.9",key:"1dq9hf"}]]);const uv=Ne("scan-text",[["path",{d:"M3 7V5a2 2 0 0 1 2-2h2",key:"aa7l1z"}],["path",{d:"M17 3h2a2 2 0 0 1 2 2v2",key:"4qcy5o"}],["path",{d:"M21 17v2a2 2 0 0 1-2 2h-2",key:"6vwrx8"}],["path",{d:"M7 21H5a2 2 0 0 1-2-2v-2",key:"ioqczr"}],["path",{d:"M7 8h8",key:"1jbsf9"}],["path",{d:"M7 12h10",key:"b7w52i"}],["path",{d:"M7 16h6",key:"1vyc9m"}]]);const u_=Ne("search-code",[["path",{d:"m13 13.5 2-2.5-2-2.5",key:"1rvxrh"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}],["path",{d:"M9 8.5 7 11l2 2.5",key:"6ffwbx"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]]);const hv=Ne("search",[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]]);const h_=Ne("settings",[["path",{d:"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",key:"1i5ecw"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);const f_=Ne("shield-alert",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"M12 8v4",key:"1got3b"}],["path",{d:"M12 16h.01",key:"1drbdi"}]]);const p_=Ne("shield-check",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);const m_=Ne("signpost",[["path",{d:"M12 13v8",key:"1l5pq0"}],["path",{d:"M12 3v3",key:"1n5kay"}],["path",{d:"M18 6a2 2 0 0 1 1.387.56l2.307 2.22a1 1 0 0 1 0 1.44l-2.307 2.22A2 2 0 0 1 18 13H6a2 2 0 0 1-1.387-.56l-2.306-2.22a1 1 0 0 1 0-1.44l2.306-2.22A2 2 0 0 1 6 6z",key:"gqqp9m"}]]);const v_=Ne("sliders-horizontal",[["path",{d:"M10 5H3",key:"1qgfaw"}],["path",{d:"M12 19H3",key:"yhmn1j"}],["path",{d:"M14 3v4",key:"1sua03"}],["path",{d:"M16 17v4",key:"1q0r14"}],["path",{d:"M21 12h-9",key:"1o4lsq"}],["path",{d:"M21 19h-5",key:"1rlt1p"}],["path",{d:"M21 5h-7",key:"1oszz2"}],["path",{d:"M8 10v4",key:"tgpxqk"}],["path",{d:"M8 12H3",key:"a7s4jb"}]]);const b_=Ne("tags",[["path",{d:"M13.172 2a2 2 0 0 1 1.414.586l6.71 6.71a2.4 2.4 0 0 1 0 3.408l-4.592 4.592a2.4 2.4 0 0 1-3.408 0l-6.71-6.71A2 2 0 0 1 6 9.172V3a1 1 0 0 1 1-1z",key:"16rjxf"}],["path",{d:"M2 7v6.172a2 2 0 0 0 .586 1.414l6.71 6.71a2.4 2.4 0 0 0 3.191.193",key:"178nd4"}],["circle",{cx:"10.5",cy:"6.5",r:".5",fill:"currentColor",key:"12ikhr"}]]);const Ur=Ne("triangle-alert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);const y_=Ne("waypoints",[["circle",{cx:"12",cy:"4.5",r:"2.5",key:"r5ysbb"}],["path",{d:"m10.2 6.3-3.9 3.9",key:"1nzqf6"}],["circle",{cx:"4.5",cy:"12",r:"2.5",key:"jydg6v"}],["path",{d:"M7 12h10",key:"b7w52i"}],["circle",{cx:"19.5",cy:"12",r:"2.5",key:"1piiel"}],["path",{d:"m13.8 17.7 3.9-3.9",key:"1wyg1y"}],["circle",{cx:"12",cy:"19.5",r:"2.5",key:"13o1pw"}]]);const w_=Ne("zoom-in",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["line",{x1:"21",x2:"16.65",y1:"21",y2:"16.65",key:"13gj7c"}],["line",{x1:"11",x2:"11",y1:"8",y2:"14",key:"1vmskp"}],["line",{x1:"8",x2:"14",y1:"11",y2:"11",key:"durymu"}]]);const x_=Ne("zoom-out",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["line",{x1:"21",x2:"16.65",y1:"21",y2:"16.65",key:"13gj7c"}],["line",{x1:"8",x2:"14",y1:"11",y2:"11",key:"durymu"}]]),fv=new Set(["color","change","evidence"]),E_=new Set(["anchor","anchors","columnEnd","columnStart","community","communityName","community_name","degree","endByte","endColumn","endLine","lineEnd","lineStart","line_end","line_start","location","normLabel","norm_label","relationshipSite","relationship_site","size","sourceDigest","sourceFile","sourceHash","source_digest","source_file","source_hash","startByte","startColumn","startLine","wiringSite","wiring_site"]);function gC(n,e){const t=oC(n),i=oC(e);return{...t?{before:t}:{},...i?{after:i}:{},fields:mc(t,i)}}function pv(n,e,t){const i=oC(n),o=oC(e),r=pc(n,t),A=pc(e,t);return{...i?{before:i}:{},...o?{after:o}:{},fields:mc(r,A)}}function S_(n,e){return pc(n,e)??{}}function T_(n,e=240){const t=n===void 0?"Not recorded":typeof n=="string"?n:JSON.stringify(n,null,Yr(n)?2:void 0)??String(n);return t.length<=e?{text:t,truncated:!1}:{text:`${t.slice(0,Math.max(0,e-1)).trimEnd()}…`,truncated:!0}}function oC(n){if(n)return bv(n)}function pc(n,e){return n?vv(n,e==="node"?new Set(["source"]):new Set(["id","key"])):void 0}function mv(n){return Array.isArray(n)?n.map(mv):Yr(n)?vv(n):n}function vv(n,e=new Set){return Object.fromEntries(Object.keys(n).filter(t=>!fv.has(t)&&!E_.has(t)&&!e.has(t)).sort((t,i)=>t.localeCompare(i)).map(t=>[t,mv(n[t])]))}function sC(n){return Array.isArray(n)?n.map(sC):Yr(n)?bv(n):n}function bv(n){return Object.fromEntries(Object.keys(n).filter(e=>!fv.has(e)).sort((e,t)=>e.localeCompare(t)).map(e=>[e,sC(n[e])]))}function mc(n,e,t=""){const i=new Set([...Object.keys(n??{}),...Object.keys(e??{})]),o=[];for(const r of[...i].sort((A,I)=>A.localeCompare(I))){const A=t?`${t}.${r}`:r,I=n?.[r],l=e?.[r];Yr(I)&&Yr(l)?o.push(...mc(I,l,A)):O_(I,l)||o.push({field:A,...I!==void 0?{before:I}:{},...l!==void 0?{after:l}:{}})}return o}function O_(n,e){return JSON.stringify(sC(n))===JSON.stringify(sC(e))}function Yr(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)}function N_({node:n,edges:e,nodes:t,sourceRevisions:i,onFocus:o,onOpenSource:r}){const A=xv(n.evidence?.before),I=xv(n.evidence?.after);return f.jsxs(f.Fragment,{children:[n.evidence?.fields.length?f.jsxs("section",{className:"compass-record-evidence","aria-labelledby":"compass-node-changes-title",children:[f.jsxs("div",{className:"compass-evidence-heading",children:[f.jsx("h3",{id:"compass-node-changes-title",children:D_(n.change)}),f.jsxs("span",{children:[n.evidence.fields.length," fields"]})]}),f.jsx(yv,{fields:n.evidence.fields}),n.change==="changed"&&(A||I)&&f.jsxs("div",{className:"compass-evidence-source-actions",children:[A&&f.jsxs("button",{type:"button",onClick:()=>r(A,i?.before),children:[f.jsx(iC,{"aria-hidden":"true"}),"Open before"]}),I&&f.jsxs("button",{type:"button",onClick:()=>r(I,i?.after),children:[f.jsx(iC,{"aria-hidden":"true"}),"Open after"]})]})]}):null,f.jsxs("section",{className:"compass-relationship-evidence","aria-labelledby":"compass-relationships-title",children:[f.jsxs("div",{className:"compass-neighbors-heading",children:[f.jsx("span",{id:"compass-relationships-title",children:"Relationships"}),f.jsx("strong",{children:e.length})]}),e.length?f.jsx("div",{className:"compass-relationship-list",children:e.map(l=>{const c=l.source===n.id?l.target:l.source,h=t.get(c);return f.jsxs("details",{children:[f.jsxs("summary",{children:[f.jsx("span",{className:"compass-change-badge","data-change":l.change,children:Ev(l.change)}),f.jsx("span",{className:"compass-relationship-target",children:h?.label??c}),f.jsx("small",{children:l.relation}),l.confidence&&f.jsx("i",{children:l.confidence})]}),f.jsxs("div",{className:"compass-relationship-detail",children:[l.change==="changed"&&l.evidence?.fields.length?f.jsx(yv,{fields:l.evidence.fields}):f.jsxs("p",{children:[Ev(l.change)," relationship: ",l.source," → ",l.target]}),f.jsxs("button",{type:"button",onClick:()=>o(c),children:["Focus ",h?.label??c]})]})]},l.id)})}):f.jsx("span",{className:"compass-empty",children:"No connected relationships"})]})]})}function yv({fields:n}){return f.jsx("div",{className:"compass-field-table-wrap",children:f.jsxs("table",{className:"compass-field-table",children:[f.jsx("thead",{children:f.jsxs("tr",{children:[f.jsx("th",{children:"Field"}),f.jsx("th",{children:"Before"}),f.jsx("th",{children:"After"})]})}),f.jsx("tbody",{children:n.map(e=>f.jsxs("tr",{children:[f.jsx("th",{scope:"row",children:e.field}),f.jsx(wv,{value:e.before}),f.jsx(wv,{value:e.after})]},e.field))})]})})}function wv({value:n}){const e=T_(n);return f.jsxs("td",{children:[f.jsx("code",{children:e.text}),e.truncated&&f.jsx("span",{className:"compass-value-truncated",children:"Value shortened"})]})}function xv(n){const e=uc.safeParse(n?.source);return e.success?e.data:void 0}function Ev(n){return!n||n==="unchanged"?"Context":`${n[0]?.toLocaleUpperCase()}${n.slice(1)}`}function D_(n){return n==="added"?"Added symbol metadata":n==="removed"?"Removed symbol metadata":"What changed"}const Sv=100,Tv={changed:0,added:1,removed:2,unchanged:3};function k_({nodes:n,query:e,selectedId:t,onFocus:i}){const[o,r]=P.useState(!1),A=e.trim().toLocaleLowerCase(),I=n.filter(c=>c.change&&c.change!=="unchanged").filter(c=>!A||c.label.toLocaleLowerCase().includes(A)||c.kind?.toLocaleLowerCase().includes(A)||c.source?.file.toLocaleLowerCase().includes(A)).sort((c,h)=>Tv[c.change??"unchanged"]-Tv[h.change??"unchanged"]||c.label.localeCompare(h.label)||c.id.localeCompare(h.id)),l=o?I:I.slice(0,Sv);return f.jsxs("section",{className:"compass-changed-symbols","aria-labelledby":"compass-changed-symbols-title",children:[f.jsxs("div",{className:"compass-section-heading",children:[f.jsx("h2",{id:"compass-changed-symbols-title",children:"Changed symbols"}),f.jsx("span",{children:I.length})]}),l.length?f.jsx("div",{className:"compass-changed-symbol-list",children:l.map(c=>f.jsxs("button",{type:"button","aria-pressed":c.id===t,"data-change":c.change,onClick:()=>i(c.id),children:[f.jsx("span",{className:"compass-changed-symbol-status",children:M_(c.change)}),f.jsx("strong",{children:c.label}),f.jsx("small",{children:c.source?.file??c.kind??"Graph symbol"})]},c.id))}):f.jsx("p",{className:"compass-empty",children:A?"No affected symbols match this search.":"No symbol changes."}),!o&&I.length>Sv&&f.jsxs("button",{className:"compass-changed-symbol-expand",type:"button",onClick:()=>r(!0),children:["Show all ",I.length.toLocaleString()," affected symbols"]})]})}function M_(n){return!n||n==="unchanged"?"Context":`${n[0]?.toLocaleUpperCase()}${n.slice(1)}`}function Ov({evidence:n,diagnostics:e=[],truncated:t=!1,title:i="Trust evidence",onOpenSource:o}){return!n.length&&!e.length&&!t?null:f.jsxs("section",{className:"compass-code-evidence","aria-label":i,children:[f.jsxs("div",{className:"compass-evidence-heading",children:[f.jsx("h3",{children:i}),f.jsxs("span",{children:[n.length," ",n.length===1?"record":"records"]})]}),t&&f.jsxs("p",{className:"compass-code-diagnostic","data-severity":"warning",role:"status",children:[f.jsx(Ur,{"aria-hidden":"true"}),"Results reached a configured limit. Narrow the query or raise one bound."]}),e.map(r=>f.jsxs("p",{className:"compass-code-diagnostic","data-severity":r.code==="no_match"?"info":"warning",role:"status",children:[r.code==="no_match"?f.jsx(gv,{"aria-hidden":"true"}):f.jsx(Ur,{"aria-hidden":"true"}),f.jsxs("span",{children:[f.jsx("strong",{children:__(r.code)}),r.message]})]},`${r.code}:${r.message}`)),f.jsx("div",{className:"compass-code-evidence-ledger",children:n.map((r,A)=>{const I=z_(r),l=r.wiringSite??r.anchor;return f.jsxs("article",{className:"compass-code-evidence-entry","data-status":I.key,children:[f.jsx("span",{className:"compass-code-evidence-icon","aria-hidden":"true",children:f.jsx(R_,{item:r})}),f.jsxs("div",{className:"compass-code-evidence-copy",children:[f.jsxs("div",{className:"compass-code-evidence-status",children:[f.jsx("strong",{children:I.label}),f.jsx("span",{children:r.layer==="program_ir"?"Program IR":"Code graph"})]}),f.jsxs("dl",{children:[f.jsxs("div",{children:[f.jsx("dt",{children:"Extractor"}),f.jsx("dd",{children:r.extractor})]}),f.jsxs("div",{children:[f.jsx("dt",{children:"Confidence"}),f.jsx("dd",{children:r.confidence})]}),r.rule&&f.jsxs("div",{children:[f.jsx("dt",{children:"Rule"}),f.jsx("dd",{children:r.rule})]})]}),l&&(o?f.jsxs("button",{className:"compass-code-evidence-source",type:"button",onClick:()=>o(l),children:[f.jsx(iC,{"aria-hidden":"true"}),Nv(r,l)]}):f.jsx("span",{className:"compass-code-evidence-source",children:Nv(r,l)})),r.candidates.length>0&&f.jsxs("div",{className:"compass-code-candidates",children:[f.jsx("span",{children:"Retained candidates"}),f.jsx("ul",{children:r.candidates.map(c=>f.jsxs("li",{children:[f.jsx("code",{children:c.nodeId}),f.jsx("span",{children:c.reason}),f.jsx("small",{children:c.confidence})]},`${c.nodeId}:${c.reason}`))})]})]})]},`${r.layer}:${r.extractor}:${A}`)})})]})}function R_({item:n}){return n.resolution==="unresolved"?f.jsx(gv,{}):n.resolution==="ambiguous"||n.confidence==="ambiguous"?f.jsx(Ur,{}):n.origin==="heuristic"?f.jsx(hc,{}):n.origin==="config"?f.jsx(i_,{}):n.origin==="convention"?f.jsx(m_,{}):f.jsx(Q3,{})}function z_(n){return n.resolution==="unresolved"?{key:"unresolved",label:"Unresolved"}:n.resolution==="ambiguous"||n.confidence==="ambiguous"?{key:"ambiguous",label:"Ambiguous"}:n.origin==="heuristic"?{key:"heuristic",label:"Heuristic"}:n.origin==="config"?{key:"config",label:"Configuration"}:n.origin==="convention"?{key:"convention",label:"Convention"}:{key:"exact",label:"Exact"}}function Nv(n,e){return`${n.origin==="heuristic"?"Wired at":"Evidence at"} ${e.file}:${e.startLine}`}function __(n){return`${n.replaceAll("_"," ")}: `}const us=[{id:"combined",label:"Combined"},{id:"native",label:"Native"},{id:"ocr",label:"OCR evidence"}];function j_(n,e){if(!e.document)return;const t=e.source?.file,i=n.nodes.filter(A=>A.document?t===void 0||A.source?.file===t:!1),o=i.find(A=>A.document?.role==="root")??(e.document.role==="root"?e:void 0),r=i.filter(A=>A.document?.role==="block");if(e.document.role==="block"&&!r.some(A=>A.id===e.id)&&r.push(e),!(!o&&r.length===0))return r.sort(F_),{...t!==void 0?{sourceFile:t}:{},...o?{root:o}:{},blocks:r}}function P_({context:n,selectedId:e,onFocus:t}){const[i,o]=P.useState("combined"),r=P.useMemo(()=>n.blocks.filter(vc),[n.blocks]),A=P.useMemo(()=>n.blocks.filter(y=>!vc(y)),[n.blocks]),[I,l]=P.useState(e&&r.some(y=>y.id===e)?e:r[0]?.id);P.useEffect(()=>{o("combined"),l(e&&r.some(y=>y.id===e)?e:r[0]?.id)},[n.sourceFile,r,e]);const c=i==="ocr"?r:i==="native"?A:n.blocks,h=n.root?.document,p=h?.visualCoverage??(r.length>0?"complete":"not_requested"),m=h?.ocrMode??(r.length>0?"auto":"off"),v=Dv(h?.ocrProfile)??r.map(y=>Dv(bc(y)?.profile)).find(Boolean),x=p==="failed"?"failed":p==="partial"?"partial":h?.complete===!1?"incomplete":void 0,O=r.find(y=>y.id===I);return f.jsxs("section",{className:"compass-document-evidence","aria-labelledby":"compass-document-evidence-title",children:[f.jsxs("header",{className:"compass-document-evidence-header",children:[f.jsxs("div",{className:"compass-document-evidence-heading",children:[f.jsx("span",{className:"compass-document-evidence-mark","aria-hidden":"true",children:f.jsx(uv,{})}),f.jsxs("span",{children:[f.jsx("small",{children:"Document evidence"}),f.jsx("h3",{id:"compass-document-evidence-title",children:U_(n.sourceFile,h?.format)})]})]}),f.jsx(B_,{mode:m,coverage:p,...v?{profile:v}:{}})]}),x&&f.jsxs("div",{className:"compass-document-warning","data-status":x,role:"alert",children:[f.jsx(f_,{"aria-hidden":"true"}),f.jsxs("span",{children:[f.jsx("strong",{children:x==="failed"?"OCR could not complete":x==="partial"?"OCR coverage is partial":"Document extraction is incomplete"}),f.jsx("small",{children:x==="incomplete"?"Compass retained the available evidence; review the document diagnostics before relying on it as complete.":"Native text is still available. Some visual regions could not be processed."})]})]}),f.jsx("div",{className:"compass-document-tabs",role:"tablist","aria-label":"Document evidence views",children:us.map((y,S)=>{const E=y.id==="ocr"?r.length:y.id==="native"?A.length:n.blocks.length,_=i===y.id;return f.jsxs("button",{id:`compass-document-tab-${y.id}`,className:"compass-document-tab",type:"button",role:"tab","aria-selected":_,"aria-controls":"compass-document-panel",tabIndex:_?0:-1,onClick:()=>o(y.id),onKeyDown:j=>{const X=j.key==="ArrowRight"?(S+1)%us.length:j.key==="ArrowLeft"?(S-1+us.length)%us.length:j.key==="Home"?0:j.key==="End"?us.length-1:void 0;if(X===void 0)return;j.preventDefault();const ne=us[X];ne&&(o(ne.id),document.getElementById(`compass-document-tab-${ne.id}`)?.focus())},children:[y.label,f.jsx("span",{children:E})]},y.id)})}),f.jsx("div",{id:"compass-document-panel",className:"compass-document-tab-panel",role:"tabpanel","aria-labelledby":`compass-document-tab-${i}`,tabIndex:0,children:c.length>0?f.jsx("div",{className:"compass-document-block-list",children:c.map(y=>f.jsx(Z_,{block:y,active:y.id===e,onClick:()=>{vc(y)&&l(y.id),t(y.id)}},y.id))}):f.jsxs("div",{className:"compass-document-empty",children:[f.jsx(ov,{"aria-hidden":"true"}),f.jsx("strong",{children:i==="ocr"?"No OCR evidence":"No document blocks"}),f.jsx("span",{children:i==="ocr"?"Run extraction with a managed OCR profile to inspect visual text.":"This document did not publish readable native blocks."})]})}),O&&f.jsx(G_,{block:O,siblings:r,onFocus:y=>{l(y),t(y)}})]})}function B_({mode:n,coverage:e,profile:t}){const i=e==="complete",o=n!=="off",r=`OCR ${o?kv(n):"Off"} · ${o?Mv(e):"Native only"}${t?` · ${t}`:""}`;return f.jsxs("span",{className:"compass-ocr-status-chip","data-status":e,role:"status","aria-label":r,title:r,children:[i?f.jsx(q3,{"aria-hidden":"true"}):f.jsx(Ur,{"aria-hidden":"true"}),f.jsxs("span",{children:[f.jsxs("strong",{children:["OCR ",o?kv(n):"Off"]}),f.jsx("small",{children:o?Mv(e):"Native only"})]}),t&&f.jsx("em",{children:t})]})}function Z_({block:n,active:e,onClick:t}){const i=bc(n),o=n.document?.text??n.label,r=n.document?.locator;return f.jsxs("button",{className:"compass-document-block","data-origin":i?"ocr":"native","data-active":e,type:"button","aria-pressed":e,onClick:t,children:[f.jsxs("span",{className:"compass-document-block-topline",children:[f.jsxs("span",{className:"compass-document-block-kind",children:[i?f.jsx(uv,{"aria-hidden":"true"}):f.jsx(ov,{"aria-hidden":"true"}),i?"OCR evidence":Y_(n.document?.kind)]}),i&&f.jsx(L_,{confidence:i.confidence_bps})]}),f.jsx("span",{className:"compass-document-block-text",children:o||"(empty block)"}),f.jsxs("span",{className:"compass-document-block-locator",children:[f.jsx(r_,{"aria-hidden":"true"}),Hr(r),i&&f.jsx(t_,{"aria-hidden":"true"})]})]})}function L_({confidence:n}){const e=Math.max(0,Math.min(100,n/100)),t=e>=85?"high":e>=60?"medium":"low";return f.jsxs("span",{className:"compass-ocr-confidence","data-confidence":t,children:[e.toFixed(2),"%"]})}function G_({block:n,siblings:e,onFocus:t}){const i=n.document.locator,o=Rv(i.width),r=Rv(i.height),A=i.candidate_id,I=e.filter(l=>{const c=l.document.locator;return c.candidate_id===A&&c.width===i.width&&c.height===i.height});return!o||!r?null:f.jsxs("div",{className:"compass-ocr-preview","aria-label":"OCR region preview",children:[f.jsxs("header",{children:[f.jsxs("span",{children:[f.jsx("strong",{children:"Visual region"}),f.jsxs("small",{children:[Hr(i.owner)," · ",o," × ",r,"px"]})]}),f.jsxs("span",{className:"compass-ocr-preview-key",children:[f.jsx("i",{}),"OCR boxes"]})]}),f.jsxs("svg",{className:"compass-ocr-preview-canvas",viewBox:`0 0 ${o} ${r}`,role:"img","aria-label":`OCR bounding boxes for ${Hr(i.owner)}`,children:[f.jsx("defs",{children:f.jsx("pattern",{id:"compass-ocr-preview-grid",width:"32",height:"32",patternUnits:"userSpaceOnUse",children:f.jsx("path",{d:"M 32 0 L 0 0 0 32",fill:"none",stroke:"currentColor",strokeOpacity:"0.12",strokeWidth:"1"})})}),f.jsx("rect",{width:o,height:r,fill:"var(--compass-ocr-preview-surface)"}),f.jsx("rect",{width:o,height:r,fill:"url(#compass-ocr-preview-grid)"}),I.map(l=>{const c=l.document.locator,h=W_(c.polygon,o,r);if(!h)return null;const p=l.id===n.id;return f.jsx("polygon",{className:"compass-ocr-preview-box","data-active":p,points:h,role:"button",tabIndex:0,"aria-label":`${l.document.text??l.label} · ${Hr(c)}`,onClick:()=>t(l.id),onKeyDown:m=>{(m.key==="Enter"||m.key===" ")&&(m.preventDefault(),t(l.id))},children:f.jsx("title",{children:l.document.text??l.label})},l.id)})]}),f.jsx("p",{children:"Click a highlighted region to inspect its text and confidence."})]})}function vc(n){return bc(n)!==void 0&&n.document?.locator?.kind==="ocr"}function bc(n){return n.document?.origin?.kind==="ocr"?n.document.origin:void 0}function F_(n,e){const t=n.document?.ordinal??Number.MAX_SAFE_INTEGER,i=e.document?.ordinal??Number.MAX_SAFE_INTEGER;return t-i||n.id.localeCompare(e.id)}function Dv(n){const e=n?.profile;return typeof e=="string"?V_(e):void 0}function V_(n){return n.replace(/^pp-/,"PP-").replace(/ocrv(\d+)/i,"OCRv$1").replace(/-(small|medium)$/i,(e,t)=>` ${t[0]?.toUpperCase()}${t.slice(1)}`)}function kv(n){return n.length>0?`${n[0]?.toUpperCase()}${n.slice(1)}`:"Off"}function Mv(n){return{complete:"Complete",partial:"Partial coverage",failed:"Failed",not_requested:"Not requested"}[n]??"Unknown"}function U_(n,e){const t=n?.split(/[\\/]/).pop()??"Document";return e?`${t} · ${e.toUpperCase()}`:t}function Y_(n){return n?n.replaceAll("_"," ").replace(/\b\w/g,e=>e.toUpperCase()):"Native text"}function Hr(n){if(!n)return"Location unavailable";switch(n.kind){case"ocr":{const e=En(n,"owner"),t=$i(En(n,"occurrence"))??0;return`${Hr(H_(e)?e:void 0)} · Region ${t+1}`}case"pdf":return`Page ${$i(En(n,"page"))??"?"}`;case"slide":return`Slide ${$i(En(n,"slide"))??"?"}${En(n,"shape")!==void 0?` · Shape ${String(En(n,"shape"))}`:""}`;case"spreadsheet":{const e=En(n,"sheet");return`${typeof e=="string"?e:"Sheet"}!${K_($i(En(n,"column"))??1)}${$i(En(n,"row"))??"?"}`}case"package":{const e=En(n,"part"),t=En(n,"path"),i=typeof e=="string"?e:"Package part";if(/\/(?:media|embeddings)\//i.test(i)||/\.(?:avif|bmp|gif|jpe?g|png|tiff?|webp)$/i.test(i))return"Embedded image";const o=i.split(/[\\/]/).pop()||"Package part";return typeof t=="string"&&t.length>0?`${o} · ${t}`:o}case"text_range":{const e=$i(En(n,"start_line")),t=$i(En(n,"end_line"));return e!==void 0?`Lines ${e}${t!==void 0&&t!==e?`–${t}`:""}`:"Text range"}default:return"Document location"}}function En(n,e){return n[e]}function H_(n){return typeof n=="object"&&n!==null&&typeof En(n,"kind")=="string"}function $i(n){return typeof n=="number"&&Number.isFinite(n)?n:void 0}function K_(n){let e=Math.max(1,Math.floor(n)),t="";for(;e>0;){const i=(e-1)%26;t=String.fromCharCode(65+i)+t,e=Math.floor((e-1)/26)}return t}function Rv(n){return n!==void 0&&Number.isFinite(n)&&n>0&&n<=1e4?n:void 0}function W_(n,e,t){if(!Array.isArray(n))return;const i=n.slice(0,256).flatMap(o=>{if(typeof o!="object"||o===null)return[];const r=$i(En(o,"x")),A=$i(En(o,"y"));return r!==void 0&&A!==void 0?[`${zv(r,0,e)},${zv(A,0,t)}`]:[]});return i.length>=3?i.join(" "):void 0}function zv(n,e,t){return Math.max(e,Math.min(t,n))}function _v(n){return Pv(n.source)}function jv(n){return Pv(n.relationshipSite)}function Pv(n){return n?.file.trim()&&(n.startLine!==void 0||n.endLine!==void 0||n.startByte!==void 0||n.endByte!==void 0)?n:void 0}const Bv=200;function Q_(n,e){const t=e.trim().toLocaleLowerCase();return(t?n.filter(o=>o.label.toLocaleLowerCase().includes(t)||String(o.id).includes(t)):n).slice(0,Bv)}function X_(n){const e=n.source?.startLine,t=n.source?.endLine;if(e!==void 0)return t!==void 0&&t!==e?`${e}–${t}`:String(e)}function Zv(n){const e=n.source?.startLine,t=n.source?.endLine;if(e!==void 0)return t!==void 0&&t!==e?{text:`Lines ${e}–${t}`,action:`at lines ${e}–${t}`}:{text:`Line ${e}`,action:`at line ${e}`};const i=n.source?.startByte,o=n.source?.endByte;if(i!==void 0)return o!==void 0&&o!==i?{text:`Bytes ${i}–${o}`,action:`at bytes ${i}–${o}`}:{text:`Byte ${i}`,action:`at byte ${i}`}}function Lv(n,e){const t=Zv(n);return`Open source ${e.file}${t?` ${t.action}`:""}`}function Gv(n){return n==="unchanged"?"Context":n?`${n[0]?.toLocaleUpperCase()}${n.slice(1)}`:void 0}function $_(n){if(n)return{added:"var(--vscode-gitDecoration-addedResourceForeground, #2ea043)",removed:"var(--vscode-gitDecoration-deletedResourceForeground, #f85149)",changed:"var(--vscode-gitDecoration-modifiedResourceForeground, #d29922)",unchanged:"var(--vscode-descriptionForeground, #6e7781)"}[n]}function q_({model:n,selected:e,neighbors:t,connectedEdges:i,query:o,matches:r,hiddenCommunities:A,comparisonMode:I,sourceRevisions:l,queryResult:c,renderedEdgeCount:h,showHeader:p,onQueryChange:m,onFocus:v,onOpenSource:x,onOpenCommunity:O,onQueryNode:y,onToggleCommunity:S,onSetAllVisible:E,collapsed:_,onToggleCollapsed:j}){const[X,ne]=P.useState(0),F=e?_v(e):void 0,V=e?X_(e):void 0,Ie=e?Zv(e):void 0,Ee=P.useMemo(()=>{const K=new Map;for(const q of n.nodes)K.set(q.community,(K.get(q.community)??0)+1);return K},[n.nodes]),Be=A.size===0,xe=P.useMemo(()=>new Map(n.nodes.map(K=>[K.id,K])),[n.nodes]),Ue=e?c?.nodes.find(K=>K.id===e.id):void 0,Le=e?j_(n,e):void 0,le=Ue?.evidence??e?.codeEvidence??[],M=e?c?c.edges.filter(K=>K.source===e.id||K.target===e.id).flatMap(K=>K.evidence):i.flatMap(K=>K.codeEvidence??[]):[],Q=K=>{v(K.id),m(""),ne(0)},se=K=>{!r.length&&K.key!=="Escape"||(K.key==="ArrowDown"?(K.preventDefault(),ne((X+1)%r.length)):K.key==="ArrowUp"?(K.preventDefault(),ne((X-1+r.length)%r.length)):K.key==="Enter"&&r[X]?(K.preventDefault(),Q(r[X])):K.key==="Escape"&&(m(""),ne(0)))};return _?f.jsxs("aside",{className:"compass-graph-inspector compass-graph-inspector-collapsed","aria-label":"Graph inspector",children:[f.jsx("button",{className:"compass-inspector-disclosure compass-inspector-expand",type:"button","aria-label":"Expand graph inspector",title:"Expand graph inspector",onClick:j,children:f.jsx(c_,{"aria-hidden":"true"})}),f.jsx("span",{className:"compass-inspector-rail-label","aria-hidden":"true",children:"Inspector"})]}):f.jsxs("aside",{className:"compass-graph-inspector","aria-label":"Graph inspector",children:[p&&f.jsxs("header",{className:"compass-inspector-header",children:[f.jsx("span",{className:"compass-product-mark","aria-hidden":"true",children:f.jsx(e_,{})}),f.jsxs("span",{className:"compass-inspector-title",children:[f.jsx("strong",{children:"Compass"}),f.jsx("small",{children:n.title})]}),f.jsx("button",{className:"compass-inspector-disclosure",type:"button","aria-label":"Collapse graph inspector",title:"Collapse graph inspector",onClick:j,children:f.jsx(Av,{"aria-hidden":"true"})})]}),f.jsxs("div",{className:"compass-inspector-search",role:"search",children:[f.jsx("label",{className:"sr-only",htmlFor:"compass-node-search",children:"Search graph nodes"}),f.jsxs("div",{className:"compass-inspector-search-row",children:[f.jsxs("div",{className:"compass-search-field",children:[f.jsx(hv,{"aria-hidden":"true"}),f.jsx("input",{id:"compass-node-search",type:"search",role:"combobox",value:o,placeholder:"Search nodes and files",autoComplete:"off","aria-controls":"compass-search-results","aria-autocomplete":"list","aria-expanded":r.length>0,"aria-activedescendant":r[X]?`compass-search-result-${X}`:void 0,onChange:K=>{m(K.target.value),ne(0)},onKeyDown:se})]}),!p&&f.jsx("button",{className:"compass-inspector-disclosure compass-inspector-search-disclosure",type:"button","aria-label":"Collapse graph inspector",title:"Collapse graph inspector",onClick:j,children:f.jsx(Av,{"aria-hidden":"true"})})]}),r.length>0&&f.jsx("div",{id:"compass-search-results",className:"compass-search-results",role:"listbox","aria-label":"Matching nodes",children:r.map((K,q)=>f.jsxs("button",{id:`compass-search-result-${q}`,type:"button",role:"option","aria-selected":q===X,className:"compass-search-item",onMouseEnter:()=>ne(q),onClick:()=>Q(K),children:[f.jsx("strong",{children:K.label}),f.jsx("span",{children:K.source?.file??K.kind??"Graph node"})]},K.id))})]}),f.jsxs("section",{className:"compass-info-panel","aria-labelledby":"compass-info-title",children:[f.jsxs("div",{className:"compass-section-heading",children:[f.jsx("h2",{id:"compass-info-title",children:"Inspector"}),f.jsx("span",{children:e?"Pinned":"Node details"})]}),e?f.jsxs("div",{className:"compass-info-content",children:[f.jsxs("div",{className:"compass-node-identity",children:[f.jsx("span",{className:"compass-node-swatch","aria-hidden":"true",style:{background:$_(e.change)??e.color?.background??n.communities.find(K=>K.id===e.community)?.color}}),f.jsxs("span",{children:[f.jsx("strong",{children:e.label}),f.jsx("small",{children:e.kind??"Symbol"})]}),Gv(e.change)&&f.jsx("span",{className:"compass-change-badge","data-change":e.change,children:Gv(e.change)})]}),f.jsxs("dl",{className:"compass-metadata-grid",children:[f.jsxs("div",{children:[f.jsx("dt",{children:"Community"}),f.jsx("dd",{children:e.communityName??n.communities.find(K=>K.id===e.community)?.label??e.community})]}),f.jsxs("div",{children:[f.jsx("dt",{children:"Degree"}),f.jsx("dd",{children:e.degree??t.length})]}),e.language&&f.jsxs("div",{children:[f.jsx("dt",{children:"Language"}),f.jsx("dd",{children:e.language})]}),V&&f.jsxs("div",{children:[f.jsx("dt",{children:"Lines"}),f.jsx("dd",{children:V})]}),f.jsx("div",{className:"compass-metadata-wide compass-source-metadata","data-interactive":F!==void 0,children:F?f.jsxs(f.Fragment,{children:[f.jsx("dt",{className:"sr-only",children:"Source"}),f.jsx("dd",{children:f.jsxs("button",{className:"compass-source-card",type:"button","aria-label":Lv(e,F),title:Lv(e,F),onClick:()=>x(F,e.change==="removed"?l?.before:l?.after),children:[f.jsxs("span",{className:"compass-source-copy",children:[f.jsx("span",{className:"compass-source-eyebrow","aria-hidden":"true",children:"Source"}),f.jsx("span",{className:"compass-source-path",children:F.file}),Ie&&f.jsx("span",{className:"compass-source-range",children:Ie.text})]}),f.jsx(iC,{"aria-hidden":"true"})]})})]}):f.jsxs(f.Fragment,{children:[f.jsx("dt",{children:"Source"}),f.jsx("dd",{title:e.source?.file??"Not recorded",children:e.source?.file??"Not recorded"})]})})]}),e.signature&&f.jsx("code",{className:"compass-signature-block",children:e.signature}),Le&&f.jsx(P_,{context:Le,selectedId:e.id,onFocus:v}),y&&f.jsxs("div",{className:"compass-code-query-actions","aria-label":"Code graph queries",children:[f.jsx("button",{type:"button",onClick:()=>y("callers",e.id),children:"Callers"}),f.jsx("button",{type:"button",onClick:()=>y("callees",e.id),children:"Callees"}),f.jsx("button",{type:"button",onClick:()=>y("impact",e.id),children:"Impact"})]}),f.jsx(Ov,{evidence:le,diagnostics:c?.diagnostics,truncated:c?.truncated,title:"Node evidence",onOpenSource:x}),f.jsx(Ov,{evidence:M,title:"Relationship evidence",onOpenSource:x}),n.stats.aggregated&&e.memberCount!==void 0&&e.detailAvailable!==!1&&O&&f.jsxs("button",{className:"compass-inspector-action",type:"button",onClick:()=>O(e.community),children:[I?"Inspect changes":"Open community",f.jsxs("span",{children:[e.memberCount.toLocaleString()," ",I?"current symbols":"members"]})]}),n.stats.aggregated&&e.memberCount!==void 0&&e.detailAvailable===!1&&f.jsx("p",{className:"compass-empty",children:"This community detail was omitted to keep the standalone HTML export bounded. Open the graph in VS Code or export this community as JSON for full inspection."}),I?f.jsx(N_,{node:e,edges:i,nodes:xe,sourceRevisions:l,onFocus:v,onOpenSource:x}):f.jsxs(f.Fragment,{children:[f.jsxs("div",{className:"compass-neighbors-heading",children:[f.jsx("span",{children:"Connected nodes"}),f.jsx("strong",{children:t.length})]}),f.jsx("div",{className:"compass-neighbors-list",children:t.length?t.map(K=>f.jsxs("button",{type:"button",className:"compass-neighbor-link",title:K.label,onClick:()=>v(K.id),children:[f.jsx("span",{className:"compass-neighbor-dot","aria-hidden":"true",style:{background:K.color?.background??n.communities.find(q=>q.id===K.community)?.color??"var(--border)"}}),f.jsx("span",{className:"compass-neighbor-label",children:K.label})]},K.id)):f.jsx("span",{className:"compass-empty",children:"No connected nodes"})})]})]}):f.jsx("p",{className:"compass-empty",children:"Select a node to inspect its relationships."})]}),I&&!n.stats.aggregated&&f.jsx(k_,{nodes:n.nodes,query:o,selectedId:e?.id,onFocus:v}),n.effectiveGraph&&f.jsxs("section",{className:"compass-info-panel","aria-labelledby":"compass-agent-overlay-title",children:[f.jsxs("div",{className:"compass-section-heading",children:[f.jsx("h2",{id:"compass-agent-overlay-title",children:"Agent overlay"}),f.jsx("span",{children:"Exact revision"})]}),f.jsxs("dl",{className:"compass-metadata-grid",children:[f.jsxs("div",{children:[f.jsx("dt",{children:"Pinned profile"}),f.jsx("dd",{children:n.effectiveGraph.compositionProfile})]}),f.jsxs("div",{children:[f.jsx("dt",{children:"Retractions"}),f.jsx("dd",{children:n.effectiveGraph.retractions.total.toLocaleString()})]}),f.jsxs("div",{children:[f.jsx("dt",{children:"Omissions"}),f.jsx("dd",{children:n.effectiveGraph.omissions.total.toLocaleString()})]}),f.jsxs("div",{className:"compass-metadata-wide",children:[f.jsx("dt",{children:"Overlay revision"}),f.jsx("dd",{title:n.effectiveGraph.overlayRevision,children:f.jsx("code",{children:n.effectiveGraph.overlayRevision.slice(0,12)})})]})]}),n.effectiveGraph.retractions.examples.length>0&&f.jsxs("details",{children:[f.jsxs("summary",{children:["Retraction history",f.jsx("span",{children:n.effectiveGraph.retractions.examples.length})]}),f.jsx("ul",{children:n.effectiveGraph.retractions.examples.map(K=>f.jsxs("li",{children:[f.jsx("strong",{children:K.kind})," ",f.jsx("code",{children:K.id})," — ",K.reasonCode,": ",K.explanation]},`${K.kind}:${K.id}`))}),n.effectiveGraph.retractions.omittedExamples>0&&f.jsxs("p",{className:"compass-empty",children:[n.effectiveGraph.retractions.omittedExamples.toLocaleString()," additional Retractions omitted by the response bound."]})]}),f.jsx("p",{className:"compass-empty",children:"Changing augment or curated profile requires a new exact Effective Graph read; this viewer never relabels one identity as another."})]}),f.jsx("section",{className:"compass-community-panel","aria-labelledby":"compass-communities-title","data-secondary":I,children:I?f.jsxs("details",{children:[f.jsxs("summary",{id:"compass-communities-title",children:["Communities",f.jsx("span",{children:n.communities.length})]}),f.jsx(Fv,{model:n,communityCounts:Ee,hiddenCommunities:A,allVisible:Be,onSetAllVisible:E,onToggleCommunity:S})]}):f.jsxs(f.Fragment,{children:[f.jsx("h2",{id:"compass-communities-title",children:"Communities"}),f.jsx(Fv,{model:n,communityCounts:Ee,hiddenCommunities:A,allVisible:Be,onSetAllVisible:E,onToggleCommunity:S})]})}),f.jsxs("footer",{className:"compass-graph-stats",children:[n.stats.nodes.toLocaleString()," nodes · ",n.stats.edges.toLocaleString()," edges",hQ_(n.communities,A),[n.communities,A]),c=P.useMemo(()=>{const h=A.trim().toLocaleLowerCase();return h?n.communities.filter(p=>p.label.toLocaleLowerCase().includes(h)||String(p.id).includes(h)).length:n.communities.length},[n.communities,A]);return f.jsxs("div",{className:"compass-community-controls",children:[f.jsxs("label",{className:"compass-community-control",children:[f.jsx("input",{type:"checkbox",checked:i,onChange:h=>o(h.target.checked)}),f.jsx("span",{children:"Select all"})]}),n.communities.length>Bv&&f.jsxs("label",{className:"compass-community-search",children:[f.jsx("span",{className:"sr-only",children:"Filter communities"}),f.jsx(hv,{"aria-hidden":"true"}),f.jsx("input",{type:"search",value:A,placeholder:"Filter communities",onChange:h=>I(h.target.value)})]}),f.jsx("div",{className:"compass-community-list",children:l.map(h=>{const p=!t.has(h.id);return f.jsxs("label",{className:"compass-community-item","data-hidden":!p,children:[f.jsx("input",{type:"checkbox",checked:p,onChange:()=>r(h.id)}),f.jsx("span",{className:"compass-community-dot","aria-hidden":"true",style:{background:h.color}}),f.jsx("span",{className:"compass-community-label",children:h.label}),f.jsx("small",{children:e.get(h.id)??0})]},h.id)})}),c>l.length&&f.jsxs("p",{className:"compass-community-limit",role:"status",children:["Showing ",l.length.toLocaleString()," of"," ",c.toLocaleString()," communities. Filter to find another community."]})]})}function J_({className:n="compass-load-logo"}){return f.jsx("svg",{className:n,viewBox:"0 0 24 24",fill:"none","aria-hidden":"true",children:f.jsx("path",{fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd",d:"M3.554 21.529c1.797 1.221 4.943-.038 11.236-2.554 1.342-.537 2.013-.806 2.54-1.267q.201-.177.378-.378c.461-.527.73-1.198 1.267-2.54 2.515-6.293 3.775-9.44 2.554-11.236a4.1 4.1 0 0 0-1.083-1.083c-1.797-1.221-4.944.037-11.236 2.554-1.342.537-2.013.806-2.54 1.267q-.201.177-.378.378c-.461.527-.73 1.198-1.267 2.54-2.517 6.292-3.775 9.439-2.554 11.236.29.426.657.793 1.083 1.083M8.25 12a3.75 3.75 0 1 1 7.5 0 3.75 3.75 0 0 1-7.5 0m1.5 0a2.25 2.25 0 1 1 4.5 0 2.25 2.25 0 0 1-4.5 0"})})}const ej=1e4;function Vv(n){const[e,t]=P.useState(!1);P.useEffect(()=>{if(n.kind!=="layout"){t(!1);return}const A=window.setTimeout(()=>{t(!0)},ej);return()=>window.clearTimeout(A)},[n.kind]);const i=n.kind==="community",o=i?`Opening ${n.communityLabel}`:e?"Still arranging this graph":"Arranging graph layout",r=i?"Fetching symbols and relationships for this community.":e?"This graph is taking longer than expected. You can open the current layout now.":"Positioning nodes and relationships for a readable first view.";return f.jsxs("section",{className:"compass-graph-transition","data-kind":n.kind,role:"status","aria-live":"polite","aria-atomic":"true",children:[f.jsxs("div",{className:"compass-load-visual","data-state":"loading","aria-hidden":"true",children:[f.jsx("span",{className:"compass-load-mark",children:f.jsx(J_,{})}),f.jsx("span",{className:"compass-load-progress",children:f.jsx("i",{})})]}),f.jsxs("div",{className:"compass-load-copy",children:[f.jsx("span",{className:"compass-load-eyebrow",children:"Compass graph"}),f.jsx("h1",{children:o}),f.jsx("p",{className:"compass-graph-transition-description",children:r}),!i&&e&&f.jsx("div",{className:"compass-load-actions",children:f.jsx("button",{className:"compass-load-action compass-load-action-primary",type:"button",onClick:n.onShowGraph,children:"Show graph now"})})]})]})}function tj(n){return n instanceof HTMLElement&&(n.isContentEditable||n.tagName==="INPUT"||n.tagName==="TEXTAREA"||n.tagName==="SELECT")}function nj({status:n,physicsRunning:e,layoutStyle:t,forceLabels:i,showEdgeLabels:o,hasSelection:r,isolateSelection:A,neighborhoodDepth:I,edgeDirection:l,layoutSpacing:c,showMinimap:h,leadingControls:p,leadingPanel:m,leadingPanelOpen:v,onLeadingPanelClose:x,onTogglePhysics:O,onLayoutChange:y,onZoomOut:S,onResetZoom:E,onZoomIn:_,onFit:j,onFitSelection:X,onReset:ne,onToggleLabels:F,onToggleEdgeLabels:V,onToggleIsolation:Ie,onNeighborhoodDepthChange:Ee,onEdgeDirectionChange:Be,onLayoutSpacingChange:xe,onToggleMinimap:Ue,onBack:Le}){const[le,M]=P.useState(!1),Q=P.useId(),se=P.useRef(null),K=P.useRef(null),q=P.useRef(!1);return P.useEffect(()=>{v&&M(!1)},[v]),P.useEffect(()=>{le||!q.current||(q.current=!1,K.current?.focus())},[le]),P.useEffect(()=>{const T=ie=>{if(ie.key==="Escape"){le&&(q.current=!0,M(!1));return}ie.key!=="?"||tj(ie.target)||(ie.preventDefault(),x?.(),M(!0))},U=ie=>{se.current?.contains(ie.target)||M(!1)};return document.addEventListener("keydown",T),document.addEventListener("pointerdown",U),()=>{document.removeEventListener("keydown",T),document.removeEventListener("pointerdown",U)}},[x,le]),f.jsxs("div",{ref:se,className:"compass-graph-toolbar compass-glass-panel",role:"toolbar","aria-label":"Graph controls",children:[f.jsxs("div",{className:"compass-viewer-status","data-state":e?"running":"paused",role:"status","aria-live":"polite",children:[f.jsx("span",{className:"compass-viewer-status-dot","aria-hidden":"true"}),f.jsx("span",{className:"compass-viewer-status-text",children:n})]}),f.jsxs("div",{className:"compass-toolbar-actions",children:[Le&&f.jsxs("button",{className:"compass-tool-button",type:"button","aria-label":"Back to community overview",onClick:Le,children:[f.jsx(H3,{}),f.jsx("span",{children:"Overview"})]}),f.jsxs("label",{className:"compass-layout-picker",children:[f.jsx(s_,{"aria-hidden":"true"}),f.jsx("span",{className:"sr-only",children:"Graph layout"}),f.jsxs("select",{"aria-label":"Graph layout",value:t,onChange:T=>y(T.target.value),children:[f.jsx("option",{value:"automatic",children:"Automatic"}),f.jsx("option",{value:"circle",children:"Circle"}),f.jsx("option",{value:"concentric",children:"Concentric"}),f.jsx("option",{value:"spiral",children:"Spiral"}),f.jsx("option",{value:"grid",children:"Square grid"})]})]}),f.jsxs("button",{className:"compass-tool-button compass-physics-button",type:"button","aria-label":e?"Stop layout":t==="automatic"?"Run layout":"Fixed layout","aria-pressed":e,disabled:t!=="automatic",title:t==="automatic"?e?"Stop layout":"Run layout":"Physics is available in Automatic layout",onClick:O,children:[e?f.jsx(Cv,{}):t==="automatic"?f.jsx(d_,{}):f.jsx(Cv,{}),f.jsx("span",{children:e?"Stop":t==="automatic"?"Layout":"Fixed"})]}),f.jsx("span",{className:"compass-toolbar-separator","aria-hidden":"true"}),f.jsxs("div",{className:"compass-zoom-controls",role:"group","aria-label":"Zoom controls",children:[f.jsx("button",{className:"compass-tool-button compass-tool-icon-button",type:"button","aria-label":"Zoom out",title:"Zoom out",onClick:S,children:f.jsx(x_,{})}),f.jsx("button",{className:"compass-tool-button compass-zoom-reset",type:"button","aria-label":"Reset zoom to 100%",title:"Reset zoom to 100%",onClick:E,children:"100%"}),f.jsx("button",{className:"compass-tool-button compass-tool-icon-button",type:"button","aria-label":"Zoom in",title:"Zoom in",onClick:_,children:f.jsx(w_,{})})]}),f.jsx("button",{className:"compass-tool-button compass-tool-icon-button",type:"button","aria-label":"Fit graph in view",title:"Fit graph in view",onClick:j,children:f.jsx(av,{})}),f.jsx("button",{className:"compass-tool-button compass-tool-icon-button",type:"button","aria-label":"Fit selected neighborhood",title:r?`Fit the selected node and its ${I}-hop neighborhood`:"Select a node to fit its neighborhood",disabled:!r,onClick:X,children:f.jsx(g_,{})}),f.jsx("button",{className:"compass-tool-button compass-tool-icon-button",type:"button","aria-label":"Reset graph view",title:"Reset graph view",onClick:ne,children:f.jsx(lv,{})}),f.jsx("button",{className:"compass-tool-button compass-tool-icon-button",type:"button","aria-label":i?"Hide labels":"Show labels","aria-pressed":i,title:i?"Hide node labels":"Show all node labels",onClick:F,children:f.jsx(b_,{})}),f.jsx("button",{className:"compass-tool-button compass-tool-icon-button",type:"button","aria-label":o?"Hide relationship labels":"Show relationship labels","aria-pressed":o,title:o?"Hide relationship labels":"Show relationship labels",onClick:V,children:f.jsx(cv,{})}),f.jsx("button",{ref:K,className:"compass-tool-button compass-tool-icon-button",type:"button","aria-label":"Graph settings","aria-expanded":le,"aria-controls":Q,title:"Graph settings (?)",onClick:()=>M(T=>{const U=!T;return U&&x?.(),U}),children:f.jsx(h_,{})}),p?f.jsx("div",{className:"compass-toolbar-leading",children:p}):null]}),m,le?f.jsxs("div",{id:Q,className:"compass-explore-panel compass-glass-panel",role:"region","aria-label":"Graph exploration controls",children:[f.jsxs("div",{className:"compass-explore-heading",children:[f.jsxs("div",{children:[f.jsx("strong",{children:"Graph settings"}),f.jsx("span",{children:r?"Tune the selected neighborhood and canvas":"Set the next neighborhood, then select a node"})]}),f.jsx("kbd",{children:"?"})]}),r?null:f.jsxs("div",{className:"compass-selection-prompt",role:"note",children:[f.jsx(dv,{"aria-hidden":"true"}),f.jsxs("span",{children:[f.jsx("strong",{children:"Select a node to isolate it"}),f.jsx("small",{children:"Use the canvas or node search. Depth and direction can be set now."})]})]}),f.jsxs("button",{className:"compass-explore-toggle",type:"button","aria-label":"Isolate selection","aria-pressed":A,disabled:!r,onClick:Ie,children:[f.jsx(dv,{"aria-hidden":"true"}),f.jsxs("span",{children:[f.jsx("strong",{children:"Isolate selection"}),f.jsx("small",{children:"Hide everything outside the traversal"})]}),f.jsx("i",{"aria-hidden":"true"})]}),f.jsxs("fieldset",{className:"compass-explore-field",children:[f.jsx("legend",{children:"Neighborhood depth"}),f.jsx("div",{className:"compass-segmented-control","aria-label":"Neighborhood depth",children:[1,2,3,4].map(T=>f.jsx("button",{type:"button","aria-label":`${T} hop${T===1?"":"s"}`,"aria-pressed":I===T,onClick:()=>Ee(T),children:T},T))})]}),f.jsxs("fieldset",{className:"compass-explore-field",children:[f.jsx("legend",{children:"Edge direction"}),f.jsx("div",{className:"compass-segmented-control","aria-label":"Edge direction",children:[["both","Both"],["outgoing","Out"],["incoming","In"]].map(([T,U])=>f.jsx("button",{type:"button","aria-label":`${U==="Both"?"Both directions":U==="Out"?"Outgoing edges":"Incoming edges"}`,"aria-pressed":l===T,onClick:()=>Be(T),children:U},T))})]}),f.jsxs("label",{className:"compass-explore-select",children:[f.jsx("span",{children:"Layout spacing"}),f.jsxs("select",{"aria-label":"Layout spacing",value:c,onChange:T=>xe(Number(T.target.value)),children:[f.jsx("option",{value:.75,children:"Compact · 75%"}),f.jsx("option",{value:1,children:"Default · 100%"}),f.jsx("option",{value:1.25,children:"Airy · 125%"}),f.jsx("option",{value:1.5,children:"Wide · 150%"})]})]}),f.jsxs("button",{className:"compass-explore-toggle",type:"button","aria-label":"Show minimap","aria-pressed":h,onClick:Ue,children:[f.jsx(a_,{"aria-hidden":"true"}),f.jsxs("span",{children:[f.jsx("strong",{children:"Show minimap"}),f.jsx("small",{children:"Track and reposition the visible viewport"})]}),f.jsx("i",{"aria-hidden":"true"})]}),f.jsxs("div",{className:"compass-shortcut-guide","aria-label":"Graph keyboard shortcuts",children:[f.jsxs("div",{className:"compass-shortcut-title",children:[f.jsx(o_,{"aria-hidden":"true"}),f.jsx("strong",{children:"Keyboard"})]}),f.jsxs("dl",{children:[f.jsxs("div",{children:[f.jsx("dt",{children:f.jsx("kbd",{children:"F"})}),f.jsx("dd",{children:"Fit graph"})]}),f.jsxs("div",{children:[f.jsx("dt",{children:f.jsx("kbd",{children:"⇧ F"})}),f.jsx("dd",{children:"Fit selection"})]}),f.jsxs("div",{children:[f.jsxs("dt",{children:[f.jsx("kbd",{children:"+"})," ",f.jsx("kbd",{children:"−"})]}),f.jsx("dd",{children:"Zoom"})]}),f.jsxs("div",{children:[f.jsx("dt",{children:f.jsx("kbd",{children:"0"})}),f.jsx("dd",{children:"100% zoom"})]}),f.jsxs("div",{children:[f.jsx("dt",{children:f.jsx("kbd",{children:"I"})}),f.jsx("dd",{children:"Isolate"})]}),f.jsxs("div",{children:[f.jsxs("dt",{children:[f.jsx("kbd",{children:"["})," ",f.jsx("kbd",{children:"]"})]}),f.jsx("dd",{children:"Depth"})]}),f.jsxs("div",{children:[f.jsx("dt",{children:f.jsx("kbd",{children:"D"})}),f.jsx("dd",{children:"Direction"})]}),f.jsxs("div",{children:[f.jsx("dt",{children:f.jsx("kbd",{children:"M"})}),f.jsx("dd",{children:"Minimap"})]})]})]})]}):null]})}const ij=["callable","type","module","boundary","other"],gj=["execution","dependency","structure","flow","other"],oj=new Set(["closure","constructor","function","lambda","macro","method","procedure","subroutine","database_procedure"]),sj=new Set(["class","component","enum","interface","annotation","protocol","struct","trait","type","type_alias","union"]),rj=new Set(["directory","document","export","file","folder","import","migration","module","namespace","package"]),aj=new Set(["command","config_key","database","database_column","database_constraint","database_index","database_schema","database_table","database_trigger","database_view","endpoint","event","job","message","query","queue","resource","route","schema","table","topic"]),Aj=new Set(["awaits","calls","dispatches","executes","handles","instantiates","invokes","schedules","tests","triggers","spawns"]),Cj=new Set(["depends_on","exports","imports","imports_from","links","re_exports","references","returns","type_of","aliases","uses"]),Ij=new Set(["contains","decorates","declares","documents","embeds","extends","implements","inherits","member_of","mixes_in","overrides","renders","owns"]),lj=new Set(["consumes","emits","maps_to","produces","publishes","reads","receives","registers","routes_to","sends","subscribes","writes"]);function Uv(n){return(n??"").trim().toLowerCase().replace(/[^a-z0-9]+/g,"_").replace(/^_+|_+$/g,"")}function hs(n){const e=Uv(n);return oj.has(e)?"callable":sj.has(e)?"type":rj.has(e)?"module":aj.has(e)?"boundary":"other"}function yc(n){const e=Uv(n);return Aj.has(e)?"execution":Cj.has(e)?"dependency":Ij.has(e)?"structure":lj.has(e)?"flow":"other"}function cj(n){return n==="type"?"diamond":n==="module"?"square":n==="boundary"?"triangle":"dot"}function dj(n){return n==="callable"?"var(--vscode-symbolIcon-functionForeground, #5fa8ff)":n==="type"?"var(--vscode-symbolIcon-classForeground, #e3b341)":n==="module"?"var(--vscode-symbolIcon-moduleForeground, #56d4b4)":n==="boundary"?"var(--vscode-symbolIcon-eventForeground, #ff9b87)":"var(--vscode-descriptionForeground, #8b949e)"}const uj={callable:"Callable",type:"Type",module:"Module / file",boundary:"Boundary / data",other:"Other"},hj={execution:"Execution",dependency:"Dependency",structure:"Structure",flow:"Data / event flow",other:"Other"};function fj({model:n}){const e=P.useMemo(()=>{const i=new Map;for(const o of n.nodes){const r=hs(o.kind);i.set(r,(i.get(r)??0)+1)}return i},[n.nodes]),t=P.useMemo(()=>{const i=new Map;for(const o of n.edges){const r=yc(o.relation);i.set(r,(i.get(r)??0)+1)}return i},[n.edges]);return f.jsxs("aside",{className:"compass-semantic-legend compass-glass-panel","aria-label":"Graph visual legend",children:[f.jsxs("section",{"aria-label":"Node categories",children:[f.jsx("strong",{children:"Nodes"}),ij.filter(i=>(e.get(i)??0)>0).map(i=>f.jsxs("span",{className:"compass-semantic-legend-item",children:[f.jsx("i",{"data-node-category":i,"aria-hidden":"true"}),uj[i],f.jsx("small",{children:e.get(i)})]},i))]}),n.edges.length>0?f.jsxs("section",{"aria-label":"Relationship categories",children:[f.jsx("strong",{children:"Edges"}),gj.filter(i=>(t.get(i)??0)>0).map(i=>f.jsxs("span",{className:"compass-semantic-legend-item",children:[f.jsx("i",{"data-edge-category":i,"aria-hidden":"true"}),hj[i],f.jsx("small",{children:t.get(i)})]},i))]}):null]})}const Yv=280,Hv=560,Kv=24,wc={width:340,collapsed:!1};function Kr(n){return Number.isFinite(n)?Math.min(Hv,Math.max(Yv,Math.round(n))):wc.width}function Wv(n){return{width:Kr(n?.width??wc.width),collapsed:n?.collapsed??wc.collapsed}}function pj(n,e){return Kr(n-e)}function mj(n,e){return Kr(e==="ArrowLeft"?n+Kv:e==="ArrowRight"?n-Kv:n)}function vj({width:n,onResize:e}){const t=P.useRef(!1),i=o=>{t.current=!1,o.currentTarget.hasPointerCapture(o.pointerId)&&o.currentTarget.releasePointerCapture(o.pointerId)};return f.jsx("div",{className:"compass-inspector-resizer",role:"separator","aria-label":"Resize graph inspector","aria-orientation":"vertical","aria-valuemin":Yv,"aria-valuemax":Hv,"aria-valuenow":n,tabIndex:0,onPointerDown:o=>{t.current=!0,o.currentTarget.setPointerCapture(o.pointerId)},onPointerMove:o=>{if(!t.current)return;const r=o.currentTarget.parentElement;r&&e(pj(r.getBoundingClientRect().right,o.clientX))},onPointerUp:i,onPointerCancel:i,onKeyDown:o=>{o.key!=="ArrowLeft"&&o.key!=="ArrowRight"||(o.preventDefault(),e(mj(n,o.key)))},children:f.jsx("span",{"aria-hidden":"true"})})}function Qv(n,e,t){if(t===void 0&&n.stats.aggregated&&e.memberCount!==void 0&&e.detailAvailable!==!1)return{type:"community",communityId:e.community};const i=_v(e);return i?{type:"source",source:i}:{type:"none"}}function bj(n){const e=n.source?.startLine,t=n.source?.endLine;if(e!==void 0)return t!==void 0&&t!==e?`${e}–${t}`:String(e)}function yj({node:n,hover:e,activation:t}){const i={"--compass-hover-x":`${e.x+18}px`,"--compass-hover-y":`${e.y-42}px`},o=bj(n);return f.jsxs("div",{className:"compass-node-hover-card",role:"tooltip",style:i,children:[f.jsxs("div",{className:"compass-hover-heading",children:[f.jsx("strong",{children:n.label}),f.jsx("span",{children:(n.kind??"symbol").toLocaleUpperCase()})]}),n.change&&f.jsx("span",{className:"compass-change-badge","data-change":n.change,children:n.change==="unchanged"?"Context":`${n.change[0]?.toLocaleUpperCase()}${n.change.slice(1)}`}),n.groundingStatus==="GROUNDED"&&f.jsx("span",{className:"compass-change-badge","data-grounding":"grounded",children:"GROUNDED · agent-authored"}),n.agentSummary&&f.jsx("p",{children:n.agentSummary}),n.challenge&&f.jsxs("p",{children:["Challenge (",n.challenge.effect,"): ",n.challenge.summary]}),n.challenged&&!n.challenge&&f.jsx("p",{children:"Challenge: this Base Graph fact is disputed."}),n.memberCount!==void 0?f.jsxs("p",{children:[n.memberCount.toLocaleString()," symbols"]}):f.jsxs(f.Fragment,{children:[n.language&&f.jsxs("p",{children:["Language: ",n.language]}),n.source?.file&&f.jsx("p",{className:"compass-hover-source",children:n.source.file}),o&&f.jsxs("p",{children:["Lines: ",o]}),n.signature&&f.jsx("code",{children:n.signature})]}),t.type!=="none"&&f.jsxs("p",{className:"compass-hover-hint",children:[t.type==="community"?f.jsx(fc,{"aria-hidden":"true"}):f.jsx(n_,{"aria-hidden":"true"}),f.jsxs("span",{children:[f.jsx("strong",{children:"Double-click"})," ",t.type==="community"?"to open community subgraph":"to open source code"]})]})]})}const wj={routes_to:"routes to",publishes:"publishes",subscribes:"subscribes",produces:"produces",consumes:"consumes",schedules:"schedules",triggers:"triggers",handles:"handles",registers:"registers",reads:"reads",writes:"writes",maps_to:"maps to",depends_on:"depends on",renders:"renders"};function xj(n){const e=n.relation.trim(),t=wj[e]??e,i=n.details?.type==="route"?n.details.data:void 0,o=i?`${i.stage}${i.position===null||i.position===void 0?"":` ${i.position+1}`}`:void 0;return[t,o,i?.operation].filter(r=>r!==void 0&&r!=="").join(" · ")}function Ej(n){if(!n?.file.trim())return"";const e=n.startLine,t=n.endLine;if(e!==void 0){const i=t!==void 0&&t!==e?`${e}–${t}`:String(e);return`${n.file}:${i}`}return n.startByte!==void 0?`${n.file}:byte ${n.startByte}`:n.file}function Sj(n){const e=n.confidence;return e?`${e[0]?.toLocaleUpperCase()}${e.slice(1)}`:"Unspecified"}function Tj(n){if(n)return n==="unchanged"?"Context":`${n[0]?.toLocaleUpperCase()}${n.slice(1)}`}function Oj({edge:n,sourceNode:e,targetNode:t,hover:i}){const o={"--compass-hover-x":`${i.x+18}px`,"--compass-hover-y":`${i.y-52}px`},r=Ej(n.relationshipSite),A=n.codeEvidence?.[0],I=Tj(n.change),l=jv(n)!==void 0;return f.jsxs("div",{className:"compass-edge-hover-card",role:"tooltip",style:o,children:[f.jsxs("div",{className:"compass-edge-hover-heading",children:[f.jsxs("span",{className:"compass-edge-hover-eyebrow",children:[f.jsx(sv,{"aria-hidden":"true"}),"Relationship"]}),f.jsx("span",{className:"compass-edge-confidence","data-confidence":n.confidence??"unspecified",children:Sj(n)})]}),f.jsxs("div",{className:"compass-edge-trace","aria-label":`${e.label} to ${t.label}`,children:[f.jsx("strong",{children:e.label}),f.jsx("span",{"aria-hidden":"true",children:f.jsx(K3,{})}),f.jsx("strong",{children:t.label})]}),f.jsxs("div",{className:"compass-edge-relation-row",children:[f.jsx("strong",{children:xj(n)||"Relationship"}),I&&f.jsx("span",{className:"compass-change-badge","data-change":n.change,children:I}),n.groundingStatus==="GROUNDED"&&f.jsx("span",{className:"compass-change-badge","data-grounding":"grounded",children:"GROUNDED · agent-authored"})]}),n.agentSummary&&f.jsx("p",{children:n.agentSummary}),n.challenge&&f.jsxs("p",{children:["Challenge (",n.challenge.effect,"): ",n.challenge.summary]}),n.challenged&&!n.challenge&&f.jsx("p",{children:"Challenge: this Base Graph relationship is disputed."}),(A||r)&&f.jsxs("div",{className:"compass-edge-metadata",children:[A&&f.jsxs("p",{children:[f.jsx("span",{children:"Evidence"}),f.jsx("code",{children:A.rule??A.origin})]}),r&&f.jsxs("p",{children:[f.jsx("span",{children:"Source"}),f.jsx("code",{children:r})]})]}),l&&f.jsxs("p",{className:"compass-hover-hint",children:[f.jsx(sv,{"aria-hidden":"true"}),f.jsxs("span",{children:[f.jsx("strong",{children:"Double-click"})," to open relationship source"]})]})]})}var xc=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function De(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}var rC=function(n){return n&&n.Math===Math&&n},jt=rC(typeof globalThis=="object"&&globalThis)||rC(typeof window=="object"&&window)||rC(typeof self=="object"&&self)||rC(typeof xc=="object"&&xc)||(function(){return this})()||xc||Function("return this")(),rt=function(n){try{return!!n()}catch{return!0}},Nj=rt,Wr=!Nj(function(){var n=(function(){}).bind();return typeof n!="function"||n.hasOwnProperty("prototype")}),Dj=Wr,Xv=Function.prototype,$v=Xv.apply,qv=Xv.call,aC=typeof Reflect=="object"&&Reflect.apply||(Dj?qv.bind($v):function(){return qv.apply($v,arguments)}),Jv=Wr,eb=Function.prototype,Ec=eb.call,kj=Jv&&eb.bind.bind(Ec,Ec),at=Jv?kj:function(n){return function(){return Ec.apply(n,arguments)}},tb=at,Mj=tb({}.toString),Rj=tb("".slice),qi=function(n){return Rj(Mj(n),8,-1)},zj=qi,_j=at,Sc=function(n){if(zj(n)==="Function")return _j(n)},Tc=typeof document=="object"&&document.all,jj=typeof Tc>"u"&&Tc!==void 0,nb={all:Tc,IS_HTMLDDA:jj},ib=nb,Pj=ib.all,un=ib.IS_HTMLDDA?function(n){return typeof n=="function"||n===Pj}:function(n){return typeof n=="function"},Qr={},Bj=rt,sn=!Bj(function(){return Object.defineProperty({},1,{get:function(){return 7}})[1]!==7}),Zj=Wr,AC=Function.prototype.call,vi=Zj?AC.bind(AC):function(){return AC.apply(AC,arguments)},Xr={},gb={}.propertyIsEnumerable,ob=Object.getOwnPropertyDescriptor,Lj=ob&&!gb.call({1:2},1);Xr.f=Lj?function(e){var t=ob(this,e);return!!t&&t.enumerable}:gb;var $r=function(n,e){return{enumerable:!(n&1),configurable:!(n&2),writable:!(n&4),value:e}},Gj=at,Fj=rt,Vj=qi,Oc=Object,Uj=Gj("".split),CC=Fj(function(){return!Oc("z").propertyIsEnumerable(0)})?function(n){return Vj(n)==="String"?Uj(n,""):Oc(n)}:Oc,fs=function(n){return n==null},Yj=fs,Hj=TypeError,qr=function(n){if(Yj(n))throw new Hj("Can't call method on "+n);return n},Kj=CC,Wj=qr,bi=function(n){return Kj(Wj(n))},sb=un,rb=nb,Qj=rb.all,Sn=rb.IS_HTMLDDA?function(n){return typeof n=="object"?n!==null:sb(n)||n===Qj}:function(n){return typeof n=="object"?n!==null:sb(n)},Ct={},Nc=Ct,Dc=jt,Xj=un,ab=function(n){return Xj(n)?n:void 0},yi=function(n,e){return arguments.length<2?ab(Nc[n])||ab(Dc[n]):Nc[n]&&Nc[n][e]||Dc[n]&&Dc[n][e]},$j=at,Pt=$j({}.isPrototypeOf),Jr=typeof navigator<"u"&&String(navigator.userAgent)||"",Ab=jt,kc=Jr,Cb=Ab.process,Ib=Ab.Deno,lb=Cb&&Cb.versions||Ib&&Ib.version,cb=lb&&lb.v8,wi,IC;cb&&(wi=cb.split("."),IC=wi[0]>0&&wi[0]<4?1:+(wi[0]+wi[1])),!IC&&kc&&(wi=kc.match(/Edge\/(\d+)/),(!wi||wi[1]>=74)&&(wi=kc.match(/Chrome\/(\d+)/),wi&&(IC=+wi[1])));var ea=IC,db=ea,qj=rt,Jj=jt,e5=Jj.String,ps=!!Object.getOwnPropertySymbols&&!qj(function(){var n=Symbol("symbol detection");return!e5(n)||!(Object(n)instanceof Symbol)||!Symbol.sham&&db&&db<41}),t5=ps,ub=t5&&!Symbol.sham&&typeof Symbol.iterator=="symbol",n5=yi,i5=un,g5=Pt,o5=ub,s5=Object,ta=o5?function(n){return typeof n=="symbol"}:function(n){var e=n5("Symbol");return i5(e)&&g5(e.prototype,s5(n))},r5=String,na=function(n){try{return r5(n)}catch{return"Object"}},a5=un,A5=na,C5=TypeError,wo=function(n){if(a5(n))return n;throw new C5(A5(n)+" is not a function")},I5=wo,l5=fs,Mc=function(n,e){var t=n[e];return l5(t)?void 0:I5(t)},Rc=vi,zc=un,_c=Sn,c5=TypeError,d5=function(n,e){var t,i;if(e==="string"&&zc(t=n.toString)&&!_c(i=Rc(t,n))||zc(t=n.valueOf)&&!_c(i=Rc(t,n))||e!=="string"&&zc(t=n.toString)&&!_c(i=Rc(t,n)))return i;throw new c5("Can't convert object to primitive value")},hb={exports:{}},fb=jt,u5=Object.defineProperty,h5=function(n,e){try{u5(fb,n,{value:e,configurable:!0,writable:!0})}catch{fb[n]=e}return e},f5=jt,p5=h5,pb="__core-js_shared__",m5=f5[pb]||p5(pb,{}),jc=m5,mb=jc;(hb.exports=function(n,e){return mb[n]||(mb[n]=e!==void 0?e:{})})("versions",[]).push({version:"3.33.0",mode:"pure",copyright:"© 2014-2023 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.33.0/LICENSE",source:"https://github.com/zloirock/core-js"});var ms=hb.exports,v5=qr,b5=Object,Hn=function(n){return b5(v5(n))},y5=at,w5=Hn,x5=y5({}.hasOwnProperty),rn=Object.hasOwn||function(e,t){return x5(w5(e),t)},E5=at,S5=0,T5=Math.random(),O5=E5(1 .toString),lC=function(n){return"Symbol("+(n===void 0?"":n)+")_"+O5(++S5+T5,36)},N5=jt,D5=ms,vb=rn,k5=lC,M5=ps,R5=ub,vs=N5.Symbol,Pc=D5("wks"),z5=R5?vs.for||vs:vs&&vs.withoutSetter||k5,Ut=function(n){return vb(Pc,n)||(Pc[n]=M5&&vb(vs,n)?vs[n]:z5("Symbol."+n)),Pc[n]},_5=vi,bb=Sn,yb=ta,j5=Mc,P5=d5,B5=Ut,Z5=TypeError,L5=B5("toPrimitive"),G5=function(n,e){if(!bb(n)||yb(n))return n;var t=j5(n,L5),i;if(t){if(e===void 0&&(e="default"),i=_5(t,n,e),!bb(i)||yb(i))return i;throw new Z5("Can't convert object to primitive value")}return e===void 0&&(e="number"),P5(n,e)},F5=G5,V5=ta,cC=function(n){var e=F5(n,"string");return V5(e)?e:e+""},U5=jt,wb=Sn,Bc=U5.document,Y5=wb(Bc)&&wb(Bc.createElement),xb=function(n){return Y5?Bc.createElement(n):{}},H5=sn,K5=rt,W5=xb,Eb=!H5&&!K5(function(){return Object.defineProperty(W5("div"),"a",{get:function(){return 7}}).a!==7}),Q5=sn,X5=vi,$5=Xr,q5=$r,J5=bi,e4=cC,t4=rn,n4=Eb,Sb=Object.getOwnPropertyDescriptor;Qr.f=Q5?Sb:function(e,t){if(e=J5(e),t=e4(t),n4)try{return Sb(e,t)}catch{}if(t4(e,t))return q5(!X5($5.f,e,t),e[t])};var i4=rt,g4=un,o4=/#|\.prototype\./,ia=function(n,e){var t=r4[s4(n)];return t===A4?!0:t===a4?!1:g4(e)?i4(e):!!e},s4=ia.normalize=function(n){return String(n).replace(o4,".").toLowerCase()},r4=ia.data={},a4=ia.NATIVE="N",A4=ia.POLYFILL="P",C4=ia,Tb=Sc,I4=wo,l4=Wr,c4=Tb(Tb.bind),ga=function(n,e){return I4(n),e===void 0?n:l4?c4(n,e):function(){return n.apply(e,arguments)}},Kn={},d4=sn,u4=rt,Ob=d4&&u4(function(){return Object.defineProperty(function(){},"prototype",{value:42,writable:!1}).prototype!==42}),h4=Sn,f4=String,p4=TypeError,Ji=function(n){if(h4(n))return n;throw new p4(f4(n)+" is not an object")},m4=sn,v4=Eb,b4=Ob,dC=Ji,Nb=cC,y4=TypeError,Zc=Object.defineProperty,w4=Object.getOwnPropertyDescriptor,Lc="enumerable",Gc="configurable",Fc="writable";Kn.f=m4?b4?function(e,t,i){if(dC(e),t=Nb(t),dC(i),typeof e=="function"&&t==="prototype"&&"value"in i&&Fc in i&&!i[Fc]){var o=w4(e,t);o&&o[Fc]&&(e[t]=i.value,i={configurable:Gc in i?i[Gc]:o[Gc],enumerable:Lc in i?i[Lc]:o[Lc],writable:!1})}return Zc(e,t,i)}:Zc:function(e,t,i){if(dC(e),t=Nb(t),dC(i),v4)try{return Zc(e,t,i)}catch{}if("get"in i||"set"in i)throw new y4("Accessors not supported");return"value"in i&&(e[t]=i.value),e};var x4=sn,E4=Kn,S4=$r,bs=x4?function(n,e,t){return E4.f(n,e,S4(1,t))}:function(n,e,t){return n[e]=t,n},uC=jt,T4=aC,O4=Sc,N4=un,D4=Qr.f,k4=C4,ys=Ct,M4=ga,ws=bs,Db=rn,R4=function(n){var e=function(t,i,o){if(this instanceof e){switch(arguments.length){case 0:return new n;case 1:return new n(t);case 2:return new n(t,i)}return new n(t,i,o)}return T4(n,this,arguments)};return e.prototype=n.prototype,e},ze=function(n,e){var t=n.target,i=n.global,o=n.stat,r=n.proto,A=i?uC:o?uC[t]:(uC[t]||{}).prototype,I=i?ys:ys[t]||ws(ys,t,{})[t],l=I.prototype,c,h,p,m,v,x,O,y,S;for(m in e)c=k4(i?m:t+(o?".":"#")+m,n.forced),h=!c&&A&&Db(A,m),x=I[m],h&&(n.dontCallGetSet?(S=D4(A,m),O=S&&S.value):O=A[m]),v=h&&O?O:e[m],!(h&&typeof x==typeof v)&&(n.bind&&h?y=M4(v,uC):n.wrap&&h?y=R4(v):r&&N4(v)?y=O4(v):y=v,(n.sham||v&&v.sham||x&&x.sham)&&ws(y,"sham",!0),ws(I,m,y),r&&(p=t+"Prototype",Db(ys,p)||ws(ys,p,{}),ws(ys[p],m,v),n.real&&l&&(c||!l[m])&&ws(l,m,v)))},z4=Math.ceil,_4=Math.floor,j4=Math.trunc||function(e){var t=+e;return(t>0?_4:z4)(t)},P4=j4,hC=function(n){var e=+n;return e!==e||e===0?0:P4(e)},B4=hC,Z4=Math.max,L4=Math.min,oa=function(n,e){var t=B4(n);return t<0?Z4(t+e,0):L4(t,e)},G4=hC,F4=Math.min,V4=function(n){return n>0?F4(G4(n),9007199254740991):0},U4=V4,gi=function(n){return U4(n.length)},Y4=bi,H4=oa,K4=gi,kb=function(n){return function(e,t,i){var o=Y4(e),r=K4(o),A=H4(i,r),I;if(n&&t!==t){for(;r>A;)if(I=o[A++],I!==I)return!0}else for(;r>A;A++)if((n||A in o)&&o[A]===t)return n||A||0;return!n&&-1}},Vc={includes:kb(!0),indexOf:kb(!1)},sa={},W4=at,Uc=rn,Q4=bi,X4=Vc.indexOf,$4=sa,Mb=W4([].push),Rb=function(n,e){var t=Q4(n),i=0,o=[],r;for(r in t)!Uc($4,r)&&Uc(t,r)&&Mb(o,r);for(;e.length>i;)Uc(t,r=e[i++])&&(~X4(o,r)||Mb(o,r));return o},Yc=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],q4=Rb,J4=Yc,ra=Object.keys||function(e){return q4(e,J4)},aa={};aa.f=Object.getOwnPropertySymbols;var zb=sn,eP=at,tP=vi,nP=rt,Hc=ra,iP=aa,gP=Xr,oP=Hn,sP=CC,xs=Object.assign,_b=Object.defineProperty,rP=eP([].concat),aP=!xs||nP(function(){if(zb&&xs({b:1},xs(_b({},"a",{enumerable:!0,get:function(){_b(this,"b",{value:3,enumerable:!1})}}),{b:2})).b!==1)return!0;var n={},e={},t=Symbol("assign detection"),i="abcdefghijklmnopqrst";return n[t]=7,i.split("").forEach(function(o){e[o]=o}),xs({},n)[t]!==7||Hc(xs({},e)).join("")!==i})?function(e,t){for(var i=oP(e),o=arguments.length,r=1,A=iP.f,I=gP.f;o>r;)for(var l=sP(arguments[r++]),c=A?rP(Hc(l),A(l)):Hc(l),h=c.length,p=0,m;h>p;)m=c[p++],(!zb||tP(I,l,m))&&(i[m]=l[m]);return i}:xs,AP=ze,jb=aP;AP({target:"Object",stat:!0,forced:Object.assign!==jb},{assign:jb});var CP=Ct,IP=CP.Object.assign,lP=IP,cP=lP,dP=cP,Yt=De(dP),uP=at,fC=uP([].slice),Pb=at,hP=wo,fP=Sn,pP=rn,Bb=fC,mP=Wr,Zb=Function,vP=Pb([].concat),bP=Pb([].join),Kc={},yP=function(n,e,t){if(!pP(Kc,e)){for(var i=[],o=0;o=.1;)x=+r[p++%A],x>h&&(x=h),v=Math.sqrt(x*x/(1+c*c)),v=I<0?-v:v,e+=v,t+=c*v,m===!0?n.lineTo(e,t):n.moveTo(e,t),h-=x,m=!m}function ZP(n,e,t,i){n.beginPath();const o=6,r=Math.PI*2/o;n.moveTo(e+i,t);for(let A=1;A1?t-1:0),o=1;o"u")){var i=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css",t==="top"&&i.firstChild?i.insertBefore(o,i.firstChild):i.appendChild(o),o.styleSheet?o.styleSheet.cssText=n:o.appendChild(document.createTextNode(n))}}var GP=`.vis-overlay { position: absolute; top: 0px; right: 0px; @@ -83,13 +83,13 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs. .vis-active { box-shadow: 0 0 10px #86d5f8; } -`;yo(rZ);var aZ=`/* override some bootstrap styles screwing up the timelines css */ +`;xo(GP);var FP=`/* override some bootstrap styles screwing up the timelines css */ .vis [class*="span"] { min-height: 0; width: auto; } -`;yo(aZ);var AZ=`div.vis-color-picker { +`;xo(FP);var VP=`div.vis-color-picker { position: absolute; top: 0px; left: 30px; @@ -334,7 +334,7 @@ div.vis-color-picker input.vis-range-brightness { div.vis-color-picker input.vis-saturation-range { width: 289px !important; }*/ -`;yo(AZ);var CZ=`div.vis-configuration { +`;xo(VP);var UP=`div.vis-configuration { position: relative; display: block; float: left; @@ -677,7 +677,7 @@ input.vis-configuration.vis-config-range:focus::-ms-fill-upper { border-width: 12px; margin-top: -12px; } -`;yo(CZ);var IZ=`div.vis-tooltip { +`;xo(UP);var YP=`div.vis-tooltip { position: absolute; visibility: hidden; padding: 5px; @@ -698,12 +698,12 @@ input.vis-configuration.vis-config-range:focus::-ms-fill-upper { z-index: 5; } -`;yo(IZ);var Mb={exports:{}};(function(n){n.exports=e;function e(i){if(i)return t(i)}function t(i){for(var o in e.prototype)i[o]=e.prototype[o];return i}e.prototype.on=e.prototype.addEventListener=function(i,o){return this._callbacks=this._callbacks||{},(this._callbacks["$"+i]=this._callbacks["$"+i]||[]).push(o),this},e.prototype.once=function(i,o){function r(){this.off(i,r),o.apply(this,arguments)}return r.fn=o,this.on(i,r),this},e.prototype.off=e.prototype.removeListener=e.prototype.removeAllListeners=e.prototype.removeEventListener=function(i,o){if(this._callbacks=this._callbacks||{},arguments.length==0)return this._callbacks={},this;var r=this._callbacks["$"+i];if(!r)return this;if(arguments.length==1)return delete this._callbacks["$"+i],this;for(var A,I=0;IuZ)throw dZ("Maximum allowed index exceeded");return n},hZ=aC,fZ=Hn,pZ=Yr,ia=function(n,e,t){var i=hZ(e);i in n?fZ.f(n,i,pZ(0,t)):n[i]=t},mZ=Ut,vZ=mZ("toStringTag"),kb={};kb[vZ]="z";var Hc=String(kb)==="[object z]",bZ=Hc,yZ=un,cC=Qi,wZ=Ut,xZ=wZ("toStringTag"),EZ=Object,SZ=cC((function(){return arguments})())==="Arguments",TZ=function(n,e){try{return n[e]}catch{}},$i=bZ?cC:function(n){var e,t,i;return n===void 0?"Undefined":n===null?"Null":typeof(t=TZ(e=EZ(n),xZ))=="string"?t:SZ?cC(e):(i=cC(e))==="Object"&&yZ(e.callee)?"Arguments":i},OZ=at,NZ=un,Kc=Dc,DZ=OZ(Function.toString);NZ(Kc.inspectSource)||(Kc.inspectSource=function(n){return DZ(n)});var MZ=Kc.inspectSource,RZ=at,kZ=rt,zb=un,zZ=$i,_Z=bi,jZ=MZ,_b=function(){},ZZ=[],jb=_Z("Reflect","construct"),Wc=/^\s*(?:class|function)\b/,PZ=RZ(Wc.exec),BZ=!Wc.test(_b),ga=function(e){if(!zb(e))return!1;try{return jb(_b,ZZ,e),!0}catch{return!1}},Zb=function(e){if(!zb(e))return!1;switch(zZ(e)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return BZ||!!PZ(Wc,jZ(e))}catch{return!0}};Zb.sham=!0;var Pb=!jb||kZ(function(){var n;return ga(ga.call)||!ga(Object)||!ga(function(){n=!0})||n})?Zb:ga,Bb=Og,LZ=Pb,GZ=En,FZ=Ut,VZ=FZ("species"),Lb=Array,UZ=function(n){var e;return Bb(n)&&(e=n.constructor,LZ(e)&&(e===Lb||Bb(e.prototype))?e=void 0:GZ(e)&&(e=e[VZ],e===null&&(e=void 0))),e===void 0?Lb:e},YZ=UZ,dC=function(n,e){return new(YZ(n))(e===0?0:e)},HZ=rt,KZ=Ut,WZ=Wr,QZ=KZ("species"),oa=function(n){return WZ>=51||!HZ(function(){var e=[],t=e.constructor={};return t[QZ]=function(){return{foo:1}},e[n](Boolean).foo!==1})},XZ=ke,$Z=rt,qZ=Og,JZ=En,eP=Yn,tP=ii,Gb=Yc,Fb=ia,nP=dC,iP=oa,gP=Ut,oP=Wr,Vb=gP("isConcatSpreadable"),sP=oP>=51||!$Z(function(){var n=[];return n[Vb]=!1,n.concat()[0]!==n}),rP=function(n){if(!JZ(n))return!1;var e=n[Vb];return e!==void 0?!!e:qZ(n)},aP=!sP||!iP("concat");XZ({target:"Array",proto:!0,forced:aP},{concat:function(e){var t=eP(this),i=nP(t,0),o=0,r,A,I,l,c;for(r=-1,I=arguments.length;rA;)cP.f(e,I=o[A++],i[I]);return e};var fP=bi,pP=fP("document","documentElement"),mP=hs,vP=rC,Ub=mP("keys"),hC=function(n){return Ub[n]||(Ub[n]=vP(n))},bP=Xi,yP=uC,Yb=Bc,wP=ea,xP=pP,EP=Cb,SP=hC,Hb=">",Kb="<",Qc="prototype",Xc="script",Wb=SP("IE_PROTO"),$c=function(){},Qb=function(n){return Kb+Xc+Hb+n+Kb+"/"+Xc+Hb},Xb=function(n){n.write(Qb("")),n.close();var e=n.parentWindow.Object;return n=null,e},TP=function(){var n=EP("iframe"),e="java"+Xc+":",t;return n.style.display="none",xP.appendChild(n),n.src=String(e),t=n.contentWindow.document,t.open(),t.write(Qb("document.F=Object")),t.close(),t.F},fC,pC=function(){try{fC=new ActiveXObject("htmlfile")}catch{}pC=typeof document<"u"?document.domain&&fC?Xb(fC):TP():Xb(fC);for(var n=Yb.length;n--;)delete pC[Qc][Yb[n]];return pC()};wP[Wb]=!0;var sa=Object.create||function(e,t){var i;return e!==null?($c[Qc]=bP(e),i=new $c,$c[Qc]=null,i[Wb]=e):i=pC(),t===void 0?i:yP.f(i,t)},ra={},OP=mb,NP=Bc,DP=NP.concat("length","prototype");ra.f=Object.getOwnPropertyNames||function(e){return OP(e,DP)};var mC={},$b=Jr,MP=ii,RP=ia,kP=Array,zP=Math.max,qb=function(n,e,t){for(var i=MP(n),o=$b(e,i),r=$b(t===void 0?i:t,i),A=kP(zP(r-o,0)),I=0;ox;x++)if((I||x in b)&&(_=b[x],j=w(_,x,m),n))if(e)E[x]=j;else if(j)switch(n){case 3:return!0;case 5:return _;case 6:return x;case 2:ay(E,_)}else switch(n){case 4:return!1;case 7:ay(E,_)}return r?-1:i||o?o:E}},Ng={forEach:xo(0),map:xo(1),filter:xo(2),some:xo(3),every:xo(4),find:xo(5),findIndex:xo(6)},yC=ke,wC=jt,nd=mi,vB=at,xs=sn,Es=us,bB=rt,Cn=rn,yB=Zt,id=Xi,xC=vi,gd=aC,wB=Ri,od=Yr,Ia=sa,Ay=ta,xB=ra,Cy=mC,EB=na,Iy=Vr,ly=Hn,SB=uC,cy=Ur,dy=aa,TB=qc,sd=hs,OB=hC,uy=ea,hy=rC,NB=Ut,DB=Aa,MB=Pt,RB=ny,kB=ys,fy=wo,EC=Ng.forEach,_n=OB("hidden"),SC="Symbol",la="prototype",zB=fy.set,py=fy.getterFor(SC),wi=Object[la],Eo=wC.Symbol,ca=Eo&&Eo[la],_B=wC.RangeError,jB=wC.TypeError,rd=wC.QObject,my=Iy.f,So=ly.f,vy=Cy.f,ZB=cy.f,by=vB([].push),qi=sd("symbols"),da=sd("op-symbols"),PB=sd("wks"),ad=!rd||!rd[la]||!rd[la].findChild,yy=function(n,e,t){var i=my(wi,e);i&&delete wi[e],So(n,e,t),i&&n!==wi&&So(wi,e,i)},Ad=xs&&bB(function(){return Ia(So({},"a",{get:function(){return So(this,"a",{value:7}).a}})).a!==7})?yy:So,Cd=function(n,e){var t=qi[n]=Ia(ca);return zB(t,{type:SC,tag:n,description:e}),xs||(t.description=e),t},TC=function(e,t,i){e===wi&&TC(da,t,i),id(e);var o=gd(t);return id(i),Cn(qi,o)?(i.enumerable?(Cn(e,_n)&&e[_n][o]&&(e[_n][o]=!1),i=Ia(i,{enumerable:od(0,!1)})):(Cn(e,_n)||So(e,_n,od(1,{})),e[_n][o]=!0),Ad(e,o,i)):So(e,o,i)},Id=function(e,t){id(e);var i=xC(t),o=Ay(i).concat(Sy(i));return EC(o,function(r){(!xs||nd(wy,i,r))&&TC(e,r,i[r])}),e},BB=function(e,t){return t===void 0?Ia(e):Id(Ia(e),t)},wy=function(e){var t=gd(e),i=nd(ZB,this,t);return this===wi&&Cn(qi,t)&&!Cn(da,t)?!1:i||!Cn(this,t)||!Cn(qi,t)||Cn(this,_n)&&this[_n][t]?i:!0},xy=function(e,t){var i=xC(e),o=gd(t);if(!(i===wi&&Cn(qi,o)&&!Cn(da,o))){var r=my(i,o);return r&&Cn(qi,o)&&!(Cn(i,_n)&&i[_n][o])&&(r.enumerable=!0),r}},Ey=function(e){var t=vy(xC(e)),i=[];return EC(t,function(o){!Cn(qi,o)&&!Cn(uy,o)&&by(i,o)}),i},Sy=function(n){var e=n===wi,t=vy(e?da:xC(n)),i=[];return EC(t,function(o){Cn(qi,o)&&(!e||Cn(wi,o))&&by(i,qi[o])}),i};Es||(Eo=function(){if(yB(ca,this))throw new jB("Symbol is not a constructor");var e=!arguments.length||arguments[0]===void 0?void 0:wB(arguments[0]),t=hy(e),i=function(o){this===wi&&nd(i,da,o),Cn(this,_n)&&Cn(this[_n],t)&&(this[_n][t]=!1);var r=od(1,o);try{Ad(this,t,r)}catch(A){if(!(A instanceof _B))throw A;yy(this,t,r)}};return xs&&ad&&Ad(wi,t,{configurable:!0,set:i}),Cd(t,e)},ca=Eo[la],dy(ca,"toString",function(){return py(this).tag}),dy(Eo,"withoutSetter",function(n){return Cd(hy(n),n)}),cy.f=wy,ly.f=TC,SB.f=Id,Iy.f=xy,xB.f=Cy.f=Ey,EB.f=Sy,DB.f=function(n){return Cd(NB(n),n)},xs&&TB(ca,"description",{configurable:!0,get:function(){return py(this).description}})),yC({global:!0,wrap:!0,forced:!Es,sham:!Es},{Symbol:Eo}),EC(Ay(PB),function(n){MB(n)}),yC({target:SC,stat:!0,forced:!Es},{useSetter:function(){ad=!0},useSimple:function(){ad=!1}}),yC({target:"Object",stat:!0,forced:!Es,sham:!xs},{create:BB,defineProperty:TC,defineProperties:Id,getOwnPropertyDescriptor:xy}),yC({target:"Object",stat:!0,forced:!Es},{getOwnPropertyNames:Ey}),RB(),kB(Eo,SC),uy[_n]=!0;var LB=us,Ty=LB&&!!Symbol.for&&!!Symbol.keyFor,GB=ke,FB=bi,VB=rn,UB=Ri,Oy=hs,YB=Ty,ld=Oy("string-to-symbol-registry"),HB=Oy("symbol-to-string-registry");GB({target:"Symbol",stat:!0,forced:!YB},{for:function(n){var e=UB(n);if(VB(ld,e))return ld[e];var t=FB("Symbol")(e);return ld[e]=t,HB[t]=e,t}});var KB=ke,WB=rn,QB=Qr,XB=Xr,$B=hs,qB=Ty,Ny=$B("symbol-to-string-registry");KB({target:"Symbol",stat:!0,forced:!qB},{keyFor:function(e){if(!QB(e))throw new TypeError(XB(e)+" is not a symbol");if(WB(Ny,e))return Ny[e]}});var JB=at,Dy=Og,eL=un,My=Qi,tL=Ri,Ry=JB([].push),nL=function(n){if(eL(n))return n;if(Dy(n)){for(var e=n.length,t=[],i=0;i=e.length)return n.target=void 0,RC(void 0,!0);switch(t){case"keys":return RC(i,!1);case"values":return RC(e[i],!1)}return RC([i,e[i]],!1)},"values"),n0.Arguments=n0.Array;var xG={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0},EG=xG,SG=jt,TG=$i,OG=ps,o0=Ss,NG=Ut,s0=NG("toStringTag");for(var bd in EG){var r0=SG[bd],yd=r0&&r0.prototype;yd&&TG(yd)!==s0&&OG(yd,s0,bd),o0[bd]=o0.Array}var DG=PL,a0=DG,MG=a0,RG=Ne(MG),kG=ke,A0=Og,zG=Pb,_G=En,C0=Jr,jG=ii,ZG=vi,PG=ia,BG=Ut,LG=oa,GG=lC,FG=LG("slice"),VG=BG("species"),wd=Array,UG=Math.max;kG({target:"Array",proto:!0,forced:!FG},{slice:function(e,t){var i=ZG(this),o=jG(i),r=C0(e,o),A=C0(t===void 0?o:t,o),I,l,c;if(A0(i)&&(I=i.constructor,zG(I)&&(I===wd||A0(I.prototype))?I=void 0:_G(I)&&(I=I[VG],I===null&&(I=void 0)),I===wd||I===void 0))return GG(i,r,A);for(l=new(I===void 0?wd:I)(UG(A-r,0)),c=0;r1?arguments[1]:void 0)}});var x8=Xt,E8=x8("Array").map,S8=Zt,T8=E8,Ed=Array.prototype,O8=function(n){var e=n.map;return n===Ed||S8(Ed,n)&&e===Ed.map?T8:e},N8=O8,D8=N8,M8=D8,hn=Ne(M8),R8=ke,k8=Yn,l0=ta,z8=rt,_8=z8(function(){l0(1)});R8({target:"Object",stat:!0,forced:_8},{keys:function(e){return l0(k8(e))}});var j8=Ct,Z8=j8.Object.keys,P8=Z8,B8=P8,L8=B8,xt=Ne(L8),G8=ke,F8=at,c0=Date,V8=F8(c0.prototype.getTime);G8({target:"Date",stat:!0},{now:function(){return V8(new c0)}});var U8=Ct,Y8=U8.Date.now,H8=Y8,K8=H8,W8=K8,kC=Ne(W8),Q8=rt,Ts=function(n,e){var t=[][n];return!!t&&Q8(function(){t.call(null,e||function(){return 1},1)})},X8=Ng.forEach,$8=Ts,q8=$8("forEach"),J8=q8?[].forEach:function(e){return X8(this,e,arguments.length>1?arguments[1]:void 0)},e6=ke,d0=J8;e6({target:"Array",proto:!0,forced:[].forEach!==d0},{forEach:d0});var t6=Xt,n6=t6("Array").forEach,i6=n6,g6=i6,o6=$i,s6=rn,r6=Zt,a6=g6,Sd=Array.prototype,A6={DOMTokenList:!0,NodeList:!0},C6=function(n){var e=n.forEach;return n===Sd||r6(Sd,n)&&e===Sd.forEach||s6(A6,o6(n))?a6:e},I6=C6,nt=Ne(I6),l6=ke,c6=at,d6=Og,u6=c6([].reverse),u0=[1,2];l6({target:"Array",proto:!0,forced:String(u0)===String(u0.reverse())},{reverse:function(){return d6(this)&&(this.length=this.length),u6(this)}});var h6=Xt,f6=h6("Array").reverse,p6=Zt,m6=f6,Td=Array.prototype,v6=function(n){var e=n.reverse;return n===Td||p6(Td,n)&&e===Td.reverse?m6:e},b6=v6,y6=b6,w6=y6,To=Ne(w6),x6=sn,E6=Og,S6=TypeError,T6=Object.getOwnPropertyDescriptor,O6=x6&&!(function(){if(this!==void 0)return!0;try{Object.defineProperty([],"length",{writable:!1}).length=1}catch(n){return n instanceof TypeError}})(),N6=O6?function(n,e){if(E6(n)&&!T6(n,"length").writable)throw new S6("Cannot set read only .length");return n.length=e}:function(n,e){return n.length=e},h0=Xr,D6=TypeError,f0=function(n,e){if(!delete n[e])throw new D6("Cannot delete property "+h0(e)+" of "+h0(n))},M6=ke,R6=Yn,k6=Jr,z6=IC,_6=ii,j6=N6,Z6=Yc,P6=dC,B6=ia,Od=f0,L6=oa,G6=L6("splice"),F6=Math.max,V6=Math.min;M6({target:"Array",proto:!0,forced:!G6},{splice:function(e,t){var i=R6(this),o=_6(i),r=k6(e,o),A=arguments.length,I,l,c,h,p,m;for(A===0?I=l=0:A===1?(I=0,l=o-r):(I=A-2,l=V6(F6(z6(t),0),o-r)),Z6(o+I-l),c=P6(i,l),h=0;ho-l+I;h--)Od(i,h-1)}else if(I>l)for(h=o-l;h>r;h--)p=h+l-1,m=h+I-1,p in i?i[m]=i[p]:Od(i,m);for(h=0;h1?arguments[1]:void 0)}});var n9=Xt,i9=n9("Array").includes,g9=En,o9=Qi,s9=Ut,r9=s9("match"),a9=function(n){var e;return g9(n)&&((e=n[r9])!==void 0?!!e:o9(n)==="RegExp")},A9=a9,C9=TypeError,I9=function(n){if(A9(n))throw new C9("The method doesn't accept regular expressions");return n},l9=Ut,c9=l9("match"),d9=function(n){var e=/./;try{"/./"[n](e)}catch{try{return e[c9]=!1,"/./"[n](e)}catch{}}return!1},u9=ke,h9=at,f9=I9,p9=Hr,p0=Ri,m9=d9,v9=h9("".indexOf);u9({target:"String",proto:!0,forced:!m9("includes")},{includes:function(e){return!!~v9(p0(p9(this)),p0(f9(e)),arguments.length>1?arguments[1]:void 0)}});var b9=Xt,y9=b9("String").includes,m0=Zt,w9=i9,x9=y9,Dd=Array.prototype,Md=String.prototype,E9=function(n){var e=n.includes;return n===Dd||m0(Dd,n)&&e===Dd.includes?w9:typeof n=="string"||n===Md||m0(Md,n)&&e===Md.includes?x9:e},S9=E9,T9=S9,O9=T9,Mg=Ne(O9),N9=ke,D9=rt,M9=Yn,v0=NC,R9=Ky,k9=D9(function(){v0(1)});N9({target:"Object",stat:!0,forced:k9,sham:!R9},{getPrototypeOf:function(e){return v0(M9(e))}});var z9=Ct,_9=z9.Object.getPrototypeOf,j9=_9,Z9=j9,P9=Z9,b0=Ne(P9),B9=Xt,L9=B9("Array").concat,G9=Zt,F9=L9,Rd=Array.prototype,V9=function(n){var e=n.concat;return n===Rd||G9(Rd,n)&&e===Rd.concat?F9:e},U9=V9,Y9=U9,H9=Y9,y0=Ne(H9),K9=ke,W9=Ng.filter,Q9=oa,X9=Q9("filter");K9({target:"Array",proto:!0,forced:!X9},{filter:function(e){return W9(this,e,arguments.length>1?arguments[1]:void 0)}});var $9=Xt,q9=$9("Array").filter,J9=Zt,eF=q9,kd=Array.prototype,tF=function(n){var e=n.filter;return n===kd||J9(kd,n)&&e===kd.filter?eF:e},nF=tF,iF=nF,gF=iF,$t=Ne(gF),w0=sn,oF=rt,x0=at,sF=NC,rF=ta,aF=vi,AF=Ur.f,E0=x0(AF),CF=x0([].push),IF=w0&&oF(function(){var n=Object.create(null);return n[2]=2,!E0(n,2)}),lF=function(n){return function(e){for(var t=aF(e),i=rF(t),o=IF&&sF(t)===null,r=i.length,A=0,I=[],l;r>A;)l=i[A++],(!w0||(o?l in t:E0(t,l)))&&CF(I,n?[l,t[l]]:t[l]);return I}},cF={values:lF(!1)},dF=ke,uF=cF.values;dF({target:"Object",stat:!0},{values:function(e){return uF(e)}});var hF=Ct,fF=hF.Object.values,pF=fF,mF=pF,vF=mF,bF=Ne(vF),zd=` -\v\f\r                 \u2028\u2029\uFEFF`,yF=at,wF=Hr,xF=Ri,_d=zd,S0=yF("".replace),EF=RegExp("^["+_d+"]+"),SF=RegExp("(^|[^"+_d+"])["+_d+"]+$"),TF=function(n){return function(e){var t=xF(wF(e));return n&1&&(t=S0(t,EF,"")),n&2&&(t=S0(t,SF,"$1")),t}},T0={trim:TF(3)},O0=jt,OF=rt,NF=at,DF=Ri,MF=T0.trim,N0=zd,ha=O0.parseInt,D0=O0.Symbol,M0=D0&&D0.iterator,R0=/^[+-]?0x/i,RF=NF(R0.exec),kF=ha(N0+"08")!==8||ha(N0+"0x16")!==22||M0&&!OF(function(){ha(Object(M0))}),zF=kF?function(e,t){var i=MF(DF(e));return ha(i,t>>>0||(RF(R0,i)?16:10))}:ha,_F=ke,k0=zF;_F({global:!0,forced:parseInt!==k0},{parseInt:k0});var jF=Ct,ZF=jF.parseInt,PF=ZF,BF=PF,LF=BF,Ei=Ne(LF),GF=ke,FF=vc,VF=Zc.indexOf,UF=Ts,jd=FF([].indexOf),z0=!!jd&&1/jd([1],1,-0)<0,YF=z0||!UF("indexOf");GF({target:"Array",proto:!0,forced:YF},{indexOf:function(e){var t=arguments.length>1?arguments[1]:void 0;return z0?jd(this,e,t)||0:VF(this,e,t)}});var HF=Xt,KF=HF("Array").indexOf,WF=Zt,QF=KF,Zd=Array.prototype,XF=function(n){var e=n.indexOf;return n===Zd||WF(Zd,n)&&e===Zd.indexOf?QF:e},$F=XF,qF=$F,JF=qF,lt=Ne(JF),eV=ke,tV=sn,nV=sa;eV({target:"Object",stat:!0,sham:!tV},{create:nV});var iV=Ct,gV=iV.Object,oV=function(e,t){return gV.create(e,t)},sV=oV,rV=sV,aV=rV,Rg=Ne(aV),Pd=Ct,AV=iC;Pd.JSON||(Pd.JSON={stringify:JSON.stringify});var CV=function(e,t,i){return AV(Pd.JSON.stringify,null,arguments)},IV=CV,lV=IV,cV=lV,Os=Ne(cV),dV=typeof Bun=="function"&&Bun&&typeof Bun.version=="string",uV=TypeError,hV=function(n,e){if(nt,A=pV(i)?i:wV(i),I=r?bV(arguments,t):[],l=r?function(){fV(A,this,I)}:A;return e?n(l,o):n(l)}:n},EV=ke,Z0=jt,SV=j0,P0=SV(Z0.setInterval,!0);EV({global:!0,bind:!0,forced:Z0.setInterval!==P0},{setInterval:P0});var TV=ke,B0=jt,OV=j0,L0=OV(B0.setTimeout,!0);TV({global:!0,bind:!0,forced:B0.setTimeout!==L0},{setTimeout:L0});var NV=Ct,DV=NV.setTimeout,MV=DV,_i=Ne(MV),RV=Yn,G0=Jr,kV=ii,zV=function(e){for(var t=RV(this),i=kV(t),o=arguments.length,r=G0(o>1?arguments[1]:void 0,i),A=o>2?arguments[2]:void 0,I=A===void 0?i:G0(A,i);I>r;)t[r++]=e;return t},_V=ke,jV=zV;_V({target:"Array",proto:!0},{fill:jV});var ZV=Xt,PV=ZV("Array").fill,BV=Zt,LV=PV,Bd=Array.prototype,GV=function(n){var e=n.fill;return n===Bd||BV(Bd,n)&&e===Bd.fill?LV:e},FV=GV,VV=FV,UV=VV,fa=Ne(UV);function Si(){return Si=Object.assign||function(n){for(var e=1;e"u"?{style:{}}:document.createElement("div"),HV="function",Ns=Math.round,No=Math.abs,Gd=Date.now;function _C(n,e){for(var t,i,o=e[0].toUpperCase()+e.slice(1),r=0;r"u"?eg={}:eg=window;var V0=_C(YV.style,"touchAction"),U0=V0!==void 0;function KV(){if(!U0)return!1;var n={},e=eg.CSS&&eg.CSS.supports;return["auto","manipulation","pan-y","pan-x","pan-x pan-y","none"].forEach(function(t){return n[t]=e?eg.CSS.supports("touch-action",t):!0}),n}var Y0="compute",H0="auto",Fd="manipulation",Do="none",pa="pan-x",ma="pan-y",jC=KV(),WV=/mobile|tablet|ip(ad|hone|od)|android/i,K0="ontouchstart"in eg,QV=_C(eg,"PointerEvent")!==void 0,XV=K0&&WV.test(navigator.userAgent),va="touch",$V="pen",Vd="mouse",qV="kinect",JV=25,On=1,Mo=2,qt=4,jn=8,ZC=1,ba=2,ya=4,wa=8,Ds=16,ji=ba|ya,Ro=wa|Ds,W0=ji|Ro,Q0=["x","y"],PC=["clientX","clientY"];function tg(n,e,t){var i;if(n)if(n.forEach)n.forEach(e,t);else if(n.length!==void 0)for(i=0;i-1}function eU(n){if(ko(n,Do))return Do;var e=ko(n,pa),t=ko(n,ma);return e&&t?Do:e||t?e?pa:ma:ko(n,Fd)?Fd:H0}var X0=(function(){function n(t,i){this.manager=t,this.set(i)}var e=n.prototype;return e.set=function(i){i===Y0&&(i=this.compute()),U0&&this.manager.element.style&&jC[i]&&(this.manager.element.style[V0]=i),this.actions=i.toLowerCase().trim()},e.update=function(){this.set(this.manager.options.touchAction)},e.compute=function(){var i=[];return tg(this.manager.recognizers,function(o){BC(o.options.enable,[o])&&(i=i.concat(o.getTouchAction()))}),eU(i.join(" "))},e.preventDefaults=function(i){var o=i.srcEvent,r=i.offsetDirection;if(this.manager.session.prevented){o.preventDefault();return}var A=this.actions,I=ko(A,Do)&&!jC[Do],l=ko(A,ma)&&!jC[ma],c=ko(A,pa)&&!jC[pa];if(I){var h=i.pointers.length===1,p=i.distance<2,m=i.deltaTime<250;if(h&&p&&m)return}if(!(c&&l)&&(I||l&&r&ji||c&&r&Ro))return this.preventSrc(o)},e.preventSrc=function(i){this.manager.session.prevented=!0,i.preventDefault()},n})();function Ud(n,e){for(;n;){if(n===e)return!0;n=n.parentNode}return!1}function $0(n){var e=n.length;if(e===1)return{x:Ns(n[0].clientX),y:Ns(n[0].clientY)};for(var t=0,i=0,o=0;o=No(e)?n<0?ba:ya:e<0?wa:Ds}function tU(n,e){var t=e.center,i=n.offsetDelta||{},o=n.prevDelta||{},r=n.prevInput||{};(e.eventType===On||r.eventType===qt)&&(o=n.prevDelta={x:r.deltaX||0,y:r.deltaY||0},i=n.offsetDelta={x:t.x,y:t.y}),e.deltaX=o.x+(t.x-i.x),e.deltaY=o.y+(t.y-i.y)}function e1(n,e,t){return{x:e/n||0,y:t/n||0}}function nU(n,e){return LC(e[0],e[1],PC)/LC(n[0],n[1],PC)}function iU(n,e){return Yd(e[1],e[0],PC)+Yd(n[1],n[0],PC)}function gU(n,e){var t=n.lastInterval||e,i=e.timeStamp-t.timeStamp,o,r,A,I;if(e.eventType!==jn&&(i>JV||t.velocity===void 0)){var l=e.deltaX-t.deltaX,c=e.deltaY-t.deltaY,h=e1(i,l,c);r=h.x,A=h.y,o=No(h.x)>No(h.y)?h.x:h.y,I=J0(l,c),n.lastInterval=e}else o=t.velocity,r=t.velocityX,A=t.velocityY,I=t.direction;e.velocity=o,e.velocityX=r,e.velocityY=A,e.direction=I}function oU(n,e){var t=n.session,i=e.pointers,o=i.length;t.firstInput||(t.firstInput=q0(e)),o>1&&!t.firstMultiple?t.firstMultiple=q0(e):o===1&&(t.firstMultiple=!1);var r=t.firstInput,A=t.firstMultiple,I=A?A.center:r.center,l=e.center=$0(i);e.timeStamp=Gd(),e.deltaTime=e.timeStamp-r.timeStamp,e.angle=Yd(I,l),e.distance=LC(I,l),tU(t,e),e.offsetDirection=J0(e.deltaX,e.deltaY);var c=e1(e.deltaTime,e.deltaX,e.deltaY);e.overallVelocityX=c.x,e.overallVelocityY=c.y,e.overallVelocity=No(c.x)>No(c.y)?c.x:c.y,e.scale=A?nU(A.pointers,i):1,e.rotation=A?iU(A.pointers,i):0,e.maxPointers=t.prevInput?e.pointers.length>t.prevInput.maxPointers?e.pointers.length:t.prevInput.maxPointers:e.pointers.length,gU(t,e);var h=n.element,p=e.srcEvent,m;p.composedPath?m=p.composedPath()[0]:p.path?m=p.path[0]:m=p.target,Ud(m,h)&&(h=m),e.target=h}function sU(n,e,t){var i=t.pointers.length,o=t.changedPointers.length,r=e&On&&i-o===0,A=e&(qt|jn)&&i-o===0;t.isFirst=!!r,t.isFinal=!!A,r&&(n.session={}),t.eventType=e,oU(n,t),n.emit("hammer.input",t),n.recognize(t),n.session.prevInput=t}function xa(n){return n.trim().split(/\s+/g)}function Ea(n,e,t){tg(xa(e),function(i){n.addEventListener(i,t,!1)})}function Sa(n,e,t){tg(xa(e),function(i){n.removeEventListener(i,t,!1)})}function t1(n){var e=n.ownerDocument||n;return e.defaultView||e.parentWindow||window}var Ms=(function(){function n(t,i){var o=this;this.manager=t,this.callback=i,this.element=t.element,this.target=t.options.inputTarget,this.domHandler=function(r){BC(t.options.enable,[t])&&o.handler(r)},this.init()}var e=n.prototype;return e.handler=function(){},e.init=function(){this.evEl&&Ea(this.element,this.evEl,this.domHandler),this.evTarget&&Ea(this.target,this.evTarget,this.domHandler),this.evWin&&Ea(t1(this.element),this.evWin,this.domHandler)},e.destroy=function(){this.evEl&&Sa(this.element,this.evEl,this.domHandler),this.evTarget&&Sa(this.target,this.evTarget,this.domHandler),this.evWin&&Sa(t1(this.element),this.evWin,this.domHandler)},n})();function zo(n,e,t){if(n.indexOf&&!t)return n.indexOf(e);for(var i=0;il[e]}):i=i.sort()),i}var AU={touchstart:On,touchmove:Mo,touchend:qt,touchcancel:jn},CU="touchstart touchmove touchend touchcancel",Kd=(function(n){gi(e,n);function e(){var i;return e.prototype.evTarget=CU,i=n.apply(this,arguments)||this,i.targetIds={},i}var t=e.prototype;return t.handler=function(o){var r=AU[o.type],A=IU.call(this,o,r);A&&this.callback(this.manager,r,{pointers:A[0],changedPointers:A[1],pointerType:va,srcEvent:o})},e})(Ms);function IU(n,e){var t=Ta(n.touches),i=this.targetIds;if(e&(On|Mo)&&t.length===1)return i[t[0].identifier]=!0,[t,t];var o,r,A=Ta(n.changedTouches),I=[],l=this.target;if(r=t.filter(function(c){return Ud(c.target,l)}),e===On)for(o=0;o-1&&o.splice(I,1)};setTimeout(r,uU)}}function hU(n,e){n&On?(this.primaryTouch=e.changedPointers[0].identifier,s1.call(this,e)):n&(qt|jn)&&s1.call(this,e)}function fU(n){for(var e=n.srcEvent.clientX,t=n.srcEvent.clientY,i=0;i-1&&this.requireFail.splice(o,1),this},e.hasRequireFailures=function(){return this.requireFail.length>0},e.canRecognizeWith=function(i){return!!this.simultaneous[i.id]},e.emit=function(i){var o=this,r=this.state;function A(I){o.manager.emit(I,i)}r=kg&&A(o.options.event+a1(r))},e.tryEmit=function(i){if(this.canEmit())return this.emit(i);this.state=Zi},e.canEmit=function(){for(var i=0;ir.threshold&&l&r.direction},t.attrTest=function(o){return zs.prototype.attrTest.call(this,o)&&(this.state&oi||!(this.state&oi)&&this.directionTest(o))},t.emit=function(o){this.pX=o.deltaX,this.pY=o.deltaY;var r=A1(o.direction);r&&(o.additionalEvent=this.options.event+r),n.prototype.emit.call(this,o)},e})(zs),C1=(function(n){gi(e,n);function e(i){return i===void 0&&(i={}),n.call(this,Si({event:"swipe",threshold:10,velocity:.3,direction:ji|Ro,pointers:1},i))||this}var t=e.prototype;return t.getTouchAction=function(){return Xd.prototype.getTouchAction.call(this)},t.attrTest=function(o){var r=this.options.direction,A;return r&(ji|Ro)?A=o.overallVelocity:r&ji?A=o.overallVelocityX:r&Ro&&(A=o.overallVelocityY),n.prototype.attrTest.call(this,o)&&r&o.offsetDirection&&o.distance>this.options.threshold&&o.maxPointers===this.options.pointers&&No(A)>this.options.velocity&&o.eventType&qt},t.emit=function(o){var r=A1(o.offsetDirection);r&&this.manager.emit(this.options.event+r,o),this.manager.emit(this.options.event,o)},e})(zs),I1=(function(n){gi(e,n);function e(i){return i===void 0&&(i={}),n.call(this,Si({event:"pinch",threshold:0,pointers:2},i))||this}var t=e.prototype;return t.getTouchAction=function(){return[Do]},t.attrTest=function(o){return n.prototype.attrTest.call(this,o)&&(Math.abs(o.scale-1)>this.options.threshold||this.state&oi)},t.emit=function(o){if(o.scale!==1){var r=o.scale<1?"in":"out";o.additionalEvent=this.options.event+r}n.prototype.emit.call(this,o)},e})(zs),l1=(function(n){gi(e,n);function e(i){return i===void 0&&(i={}),n.call(this,Si({event:"rotate",threshold:0,pointers:2},i))||this}var t=e.prototype;return t.getTouchAction=function(){return[Do]},t.attrTest=function(o){return n.prototype.attrTest.call(this,o)&&(Math.abs(o.rotation)>this.options.threshold||this.state&oi)},e})(zs),c1=(function(n){gi(e,n);function e(i){var o;return i===void 0&&(i={}),o=n.call(this,Si({event:"press",pointers:1,time:251,threshold:9},i))||this,o._timer=null,o._input=null,o}var t=e.prototype;return t.getTouchAction=function(){return[H0]},t.process=function(o){var r=this,A=this.options,I=o.pointers.length===A.pointers,l=o.distanceA.time;if(this._input=o,!l||!I||o.eventType&(qt|jn)&&!c)this.reset();else if(o.eventType&On)this.reset(),this._timer=setTimeout(function(){r.state=ng,r.tryEmit()},A.time);else if(o.eventType&qt)return ng;return Zi},t.reset=function(){clearTimeout(this._timer)},t.emit=function(o){this.state===ng&&(o&&o.eventType&qt?this.manager.emit(this.options.event+"up",o):(this._input.timeStamp=Gd(),this.manager.emit(this.options.event,this._input)))},e})(Na),d1={domEvents:!1,touchAction:Y0,enable:!0,inputTarget:null,inputClass:null,cssProps:{userSelect:"none",touchSelect:"none",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}},u1=[[l1,{enable:!1}],[I1,{enable:!1},["rotate"]],[C1,{direction:ji}],[Xd,{direction:ji},["swipe"]],[Qd],[Qd,{event:"doubletap",taps:2},["tap"]],[c1]],bU=1,h1=2;function f1(n,e){var t=n.element;if(t.style){var i;tg(n.options.cssProps,function(o,r){i=_C(t.style,r),e?(n.oldCssProps[i]=t.style[i],t.style[i]=o):t.style[i]=n.oldCssProps[i]||""}),e||(n.oldCssProps={})}}function yU(n,e){var t=document.createEvent("Event");t.initEvent(n,!0,!0),t.gesture=e,e.target.dispatchEvent(t)}var p1=(function(){function n(t,i){var o=this;this.options=Oo({},d1,i||{}),this.options.inputTarget=this.options.inputTarget||t,this.handlers={},this.session={},this.recognizers=[],this.oldCssProps={},this.element=t,this.input=pU(this),this.touchAction=new X0(this,this.options.touchAction),f1(this,!0),tg(this.options.recognizers,function(r){var A=o.add(new r[0](r[1]));r[2]&&A.recognizeWith(r[2]),r[3]&&A.requireFailure(r[3])},this)}var e=n.prototype;return e.set=function(i){return Oo(this.options,i),i.touchAction&&this.touchAction.update(),i.inputTarget&&(this.input.destroy(),this.input.target=i.inputTarget,this.input.init()),this},e.stop=function(i){this.session.stopped=i?h1:bU},e.recognize=function(i){var o=this.session;if(!o.stopped){this.touchAction.preventDefaults(i);var r,A=this.recognizers,I=o.curRecognizer;(!I||I&&I.state&ng)&&(o.curRecognizer=null,I=null);for(var l=0;lQP)throw WP("Maximum allowed index exceeded");return n},XP=cC,$P=Kn,qP=$r,Aa=function(n,e,t){var i=XP(e);i in n?$P.f(n,i,qP(0,t)):n[i]=t},JP=Ut,eB=JP("toStringTag"),Kb={};Kb[eB]="z";var qc=String(Kb)==="[object z]",tB=qc,nB=un,pC=qi,iB=Ut,gB=iB("toStringTag"),oB=Object,sB=pC((function(){return arguments})())==="Arguments",rB=function(n,e){try{return n[e]}catch{}},eg=tB?pC:function(n){var e,t,i;return n===void 0?"Undefined":n===null?"Null":typeof(t=rB(e=oB(n),gB))=="string"?t:sB?pC(e):(i=pC(e))==="Object"&&nB(e.callee)?"Arguments":i},aB=at,AB=un,Jc=jc,CB=aB(Function.toString);AB(Jc.inspectSource)||(Jc.inspectSource=function(n){return CB(n)});var IB=Jc.inspectSource,lB=at,cB=rt,Wb=un,dB=eg,uB=yi,hB=IB,Qb=function(){},fB=[],Xb=uB("Reflect","construct"),ed=/^\s*(?:class|function)\b/,pB=lB(ed.exec),mB=!ed.test(Qb),Ca=function(e){if(!Wb(e))return!1;try{return Xb(Qb,fB,e),!0}catch{return!1}},$b=function(e){if(!Wb(e))return!1;switch(dB(e)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return mB||!!pB(ed,hB(e))}catch{return!0}};$b.sham=!0;var qb=!Xb||cB(function(){var n;return Ca(Ca.call)||!Ca(Object)||!Ca(function(){n=!0})||n})?$b:Ca,Jb=Dg,vB=qb,bB=Sn,yB=Ut,wB=yB("species"),ey=Array,xB=function(n){var e;return Jb(n)&&(e=n.constructor,vB(e)&&(e===ey||Jb(e.prototype))?e=void 0:bB(e)&&(e=e[wB],e===null&&(e=void 0))),e===void 0?ey:e},EB=xB,mC=function(n,e){return new(EB(n))(e===0?0:e)},SB=rt,TB=Ut,OB=ea,NB=TB("species"),Ia=function(n){return OB>=51||!SB(function(){var e=[],t=e.constructor={};return t[NB]=function(){return{foo:1}},e[n](Boolean).foo!==1})},DB=ze,kB=rt,MB=Dg,RB=Sn,zB=Hn,_B=gi,ty=$c,ny=Aa,jB=mC,PB=Ia,BB=Ut,ZB=ea,iy=BB("isConcatSpreadable"),LB=ZB>=51||!kB(function(){var n=[];return n[iy]=!1,n.concat()[0]!==n}),GB=function(n){if(!RB(n))return!1;var e=n[iy];return e!==void 0?!!e:MB(n)},FB=!LB||!PB("concat");DB({target:"Array",proto:!0,forced:FB},{concat:function(e){var t=zB(this),i=jB(t,0),o=0,r,A,I,l,c;for(r=-1,I=arguments.length;rA;)KB.f(e,I=o[A++],i[I]);return e};var $B=yi,qB=$B("document","documentElement"),JB=ms,eZ=lC,gy=JB("keys"),bC=function(n){return gy[n]||(gy[n]=eZ(n))},tZ=Ji,nZ=vC,oy=Yc,iZ=sa,gZ=qB,oZ=xb,sZ=bC,sy=">",ry="<",td="prototype",nd="script",ay=sZ("IE_PROTO"),id=function(){},Ay=function(n){return ry+nd+sy+n+ry+"/"+nd+sy},Cy=function(n){n.write(Ay("")),n.close();var e=n.parentWindow.Object;return n=null,e},rZ=function(){var n=oZ("iframe"),e="java"+nd+":",t;return n.style.display="none",gZ.appendChild(n),n.src=String(e),t=n.contentWindow.document,t.open(),t.write(Ay("document.F=Object")),t.close(),t.F},yC,wC=function(){try{yC=new ActiveXObject("htmlfile")}catch{}wC=typeof document<"u"?document.domain&&yC?Cy(yC):rZ():Cy(yC);for(var n=oy.length;n--;)delete wC[td][oy[n]];return wC()};iZ[ay]=!0;var la=Object.create||function(e,t){var i;return e!==null?(id[td]=tZ(e),i=new id,id[td]=null,i[ay]=e):i=wC(),t===void 0?i:nZ.f(i,t)},ca={},aZ=Rb,AZ=Yc,CZ=AZ.concat("length","prototype");ca.f=Object.getOwnPropertyNames||function(e){return aZ(e,CZ)};var xC={},Iy=oa,IZ=gi,lZ=Aa,cZ=Array,dZ=Math.max,ly=function(n,e,t){for(var i=IZ(n),o=Iy(e,i),r=Iy(t===void 0?i:t,i),A=cZ(dZ(r-o,0)),I=0;oy;y++)if((I||y in v)&&(_=v[y],j=x(_,y,m),n))if(e)E[y]=j;else if(j)switch(n){case 3:return!0;case 5:return _;case 6:return y;case 2:yy(E,_)}else switch(n){case 4:return!1;case 7:yy(E,_)}return r?-1:i||o?o:E}},kg={forEach:So(0),map:So(1),filter:So(2),some:So(3),every:So(4),find:So(5),findIndex:So(6)},TC=ze,OC=jt,ad=vi,eL=at,Ts=sn,Os=ps,tL=rt,In=rn,nL=Pt,Ad=Ji,NC=bi,Cd=cC,iL=Ri,Id=$r,fa=la,wy=ra,gL=ca,xy=xC,oL=aa,Ey=Qr,Sy=Kn,sL=vC,Ty=Xr,Oy=da,rL=gd,ld=ms,aL=bC,Ny=sa,Dy=lC,AL=Ut,CL=ua,IL=Bt,lL=hy,cL=Es,ky=Eo,DC=kg.forEach,jn=aL("hidden"),kC="Symbol",pa="prototype",dL=ky.set,My=ky.getterFor(kC),xi=Object[pa],To=OC.Symbol,ma=To&&To[pa],uL=OC.RangeError,hL=OC.TypeError,cd=OC.QObject,Ry=Ey.f,Oo=Sy.f,zy=xy.f,fL=Ty.f,_y=eL([].push),tg=ld("symbols"),va=ld("op-symbols"),pL=ld("wks"),dd=!cd||!cd[pa]||!cd[pa].findChild,jy=function(n,e,t){var i=Ry(xi,e);i&&delete xi[e],Oo(n,e,t),i&&n!==xi&&Oo(xi,e,i)},ud=Ts&&tL(function(){return fa(Oo({},"a",{get:function(){return Oo(this,"a",{value:7}).a}})).a!==7})?jy:Oo,hd=function(n,e){var t=tg[n]=fa(ma);return dL(t,{type:kC,tag:n,description:e}),Ts||(t.description=e),t},MC=function(e,t,i){e===xi&&MC(va,t,i),Ad(e);var o=Cd(t);return Ad(i),In(tg,o)?(i.enumerable?(In(e,jn)&&e[jn][o]&&(e[jn][o]=!1),i=fa(i,{enumerable:Id(0,!1)})):(In(e,jn)||Oo(e,jn,Id(1,{})),e[jn][o]=!0),ud(e,o,i)):Oo(e,o,i)},fd=function(e,t){Ad(e);var i=NC(t),o=wy(i).concat(Ly(i));return DC(o,function(r){(!Ts||ad(Py,i,r))&&MC(e,r,i[r])}),e},mL=function(e,t){return t===void 0?fa(e):fd(fa(e),t)},Py=function(e){var t=Cd(e),i=ad(fL,this,t);return this===xi&&In(tg,t)&&!In(va,t)?!1:i||!In(this,t)||!In(tg,t)||In(this,jn)&&this[jn][t]?i:!0},By=function(e,t){var i=NC(e),o=Cd(t);if(!(i===xi&&In(tg,o)&&!In(va,o))){var r=Ry(i,o);return r&&In(tg,o)&&!(In(i,jn)&&i[jn][o])&&(r.enumerable=!0),r}},Zy=function(e){var t=zy(NC(e)),i=[];return DC(t,function(o){!In(tg,o)&&!In(Ny,o)&&_y(i,o)}),i},Ly=function(n){var e=n===xi,t=zy(e?va:NC(n)),i=[];return DC(t,function(o){In(tg,o)&&(!e||In(xi,o))&&_y(i,tg[o])}),i};Os||(To=function(){if(nL(ma,this))throw new hL("Symbol is not a constructor");var e=!arguments.length||arguments[0]===void 0?void 0:iL(arguments[0]),t=Dy(e),i=function(o){this===xi&&ad(i,va,o),In(this,jn)&&In(this[jn],t)&&(this[jn][t]=!1);var r=Id(1,o);try{ud(this,t,r)}catch(A){if(!(A instanceof uL))throw A;jy(this,t,r)}};return Ts&&dd&&ud(xi,t,{configurable:!0,set:i}),hd(t,e)},ma=To[pa],Oy(ma,"toString",function(){return My(this).tag}),Oy(To,"withoutSetter",function(n){return hd(Dy(n),n)}),Ty.f=Py,Sy.f=MC,sL.f=fd,Ey.f=By,gL.f=xy.f=Zy,oL.f=Ly,CL.f=function(n){return hd(AL(n),n)},Ts&&rL(ma,"description",{configurable:!0,get:function(){return My(this).description}})),TC({global:!0,wrap:!0,forced:!Os,sham:!Os},{Symbol:To}),DC(wy(pL),function(n){IL(n)}),TC({target:kC,stat:!0,forced:!Os},{useSetter:function(){dd=!0},useSimple:function(){dd=!1}}),TC({target:"Object",stat:!0,forced:!Os,sham:!Ts},{create:mL,defineProperty:MC,defineProperties:fd,getOwnPropertyDescriptor:By}),TC({target:"Object",stat:!0,forced:!Os},{getOwnPropertyNames:Zy}),lL(),cL(To,kC),Ny[jn]=!0;var vL=ps,Gy=vL&&!!Symbol.for&&!!Symbol.keyFor,bL=ze,yL=yi,wL=rn,xL=Ri,Fy=ms,EL=Gy,pd=Fy("string-to-symbol-registry"),SL=Fy("symbol-to-string-registry");bL({target:"Symbol",stat:!0,forced:!EL},{for:function(n){var e=xL(n);if(wL(pd,e))return pd[e];var t=yL("Symbol")(e);return pd[e]=t,SL[t]=e,t}});var TL=ze,OL=rn,NL=ta,DL=na,kL=ms,ML=Gy,Vy=kL("symbol-to-string-registry");TL({target:"Symbol",stat:!0,forced:!ML},{keyFor:function(e){if(!NL(e))throw new TypeError(DL(e)+" is not a symbol");if(OL(Vy,e))return Vy[e]}});var RL=at,Uy=Dg,zL=un,Yy=qi,_L=Ri,Hy=RL([].push),jL=function(n){if(zL(n))return n;if(Uy(n)){for(var e=n.length,t=[],i=0;i=e.length)return n.target=void 0,PC(void 0,!0);switch(t){case"keys":return PC(i,!1);case"values":return PC(e[i],!1)}return PC([i,e[i]],!1)},"values"),h0.Arguments=h0.Array;var g8={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0},o8=g8,s8=jt,r8=eg,a8=bs,m0=Ns,A8=Ut,v0=A8("toStringTag");for(var Td in o8){var b0=s8[Td],Od=b0&&b0.prototype;Od&&r8(Od)!==v0&&a8(Od,v0,Td),m0[Td]=m0.Array}var C8=pG,y0=C8,I8=y0,l8=De(I8),c8=ze,w0=Dg,d8=qb,u8=Sn,x0=oa,h8=gi,f8=bi,p8=Aa,m8=Ut,v8=Ia,b8=fC,y8=v8("slice"),w8=m8("species"),Nd=Array,x8=Math.max;c8({target:"Array",proto:!0,forced:!y8},{slice:function(e,t){var i=f8(this),o=h8(i),r=x0(e,o),A=x0(t===void 0?o:t,o),I,l,c;if(w0(i)&&(I=i.constructor,d8(I)&&(I===Nd||w0(I.prototype))?I=void 0:u8(I)&&(I=I[w8],I===null&&(I=void 0)),I===Nd||I===void 0))return b8(i,r,A);for(l=new(I===void 0?Nd:I)(x8(A-r,0)),c=0;r1?arguments[1]:void 0)}});var g6=Xt,o6=g6("Array").map,s6=Pt,r6=o6,kd=Array.prototype,a6=function(n){var e=n.map;return n===kd||s6(kd,n)&&e===kd.map?r6:e},A6=a6,C6=A6,I6=C6,hn=De(I6),l6=ze,c6=Hn,S0=ra,d6=rt,u6=d6(function(){S0(1)});l6({target:"Object",stat:!0,forced:u6},{keys:function(e){return S0(c6(e))}});var h6=Ct,f6=h6.Object.keys,p6=f6,m6=p6,v6=m6,xt=De(v6),b6=ze,y6=at,T0=Date,w6=y6(T0.prototype.getTime);b6({target:"Date",stat:!0},{now:function(){return w6(new T0)}});var x6=Ct,E6=x6.Date.now,S6=E6,T6=S6,O6=T6,BC=De(O6),N6=rt,Ds=function(n,e){var t=[][n];return!!t&&N6(function(){t.call(null,e||function(){return 1},1)})},D6=kg.forEach,k6=Ds,M6=k6("forEach"),R6=M6?[].forEach:function(e){return D6(this,e,arguments.length>1?arguments[1]:void 0)},z6=ze,O0=R6;z6({target:"Array",proto:!0,forced:[].forEach!==O0},{forEach:O0});var _6=Xt,j6=_6("Array").forEach,P6=j6,B6=P6,Z6=eg,L6=rn,G6=Pt,F6=B6,Md=Array.prototype,V6={DOMTokenList:!0,NodeList:!0},U6=function(n){var e=n.forEach;return n===Md||G6(Md,n)&&e===Md.forEach||L6(V6,Z6(n))?F6:e},Y6=U6,it=De(Y6),H6=ze,K6=at,W6=Dg,Q6=K6([].reverse),N0=[1,2];H6({target:"Array",proto:!0,forced:String(N0)===String(N0.reverse())},{reverse:function(){return W6(this)&&(this.length=this.length),Q6(this)}});var X6=Xt,$6=X6("Array").reverse,q6=Pt,J6=$6,Rd=Array.prototype,e9=function(n){var e=n.reverse;return n===Rd||q6(Rd,n)&&e===Rd.reverse?J6:e},t9=e9,n9=t9,i9=n9,No=De(i9),g9=sn,o9=Dg,s9=TypeError,r9=Object.getOwnPropertyDescriptor,a9=g9&&!(function(){if(this!==void 0)return!0;try{Object.defineProperty([],"length",{writable:!1}).length=1}catch(n){return n instanceof TypeError}})(),A9=a9?function(n,e){if(o9(n)&&!r9(n,"length").writable)throw new s9("Cannot set read only .length");return n.length=e}:function(n,e){return n.length=e},D0=na,C9=TypeError,k0=function(n,e){if(!delete n[e])throw new C9("Cannot delete property "+D0(e)+" of "+D0(n))},I9=ze,l9=Hn,c9=oa,d9=hC,u9=gi,h9=A9,f9=$c,p9=mC,m9=Aa,zd=k0,v9=Ia,b9=v9("splice"),y9=Math.max,w9=Math.min;I9({target:"Array",proto:!0,forced:!b9},{splice:function(e,t){var i=l9(this),o=u9(i),r=c9(e,o),A=arguments.length,I,l,c,h,p,m;for(A===0?I=l=0:A===1?(I=0,l=o-r):(I=A-2,l=w9(y9(d9(t),0),o-r)),f9(o+I-l),c=p9(i,l),h=0;ho-l+I;h--)zd(i,h-1)}else if(I>l)for(h=o-l;h>r;h--)p=h+l-1,m=h+I-1,p in i?i[m]=i[p]:zd(i,m);for(h=0;h1?arguments[1]:void 0)}});var j9=Xt,P9=j9("Array").includes,B9=Sn,Z9=qi,L9=Ut,G9=L9("match"),F9=function(n){var e;return B9(n)&&((e=n[G9])!==void 0?!!e:Z9(n)==="RegExp")},V9=F9,U9=TypeError,Y9=function(n){if(V9(n))throw new U9("The method doesn't accept regular expressions");return n},H9=Ut,K9=H9("match"),W9=function(n){var e=/./;try{"/./"[n](e)}catch{try{return e[K9]=!1,"/./"[n](e)}catch{}}return!1},Q9=ze,X9=at,$9=Y9,q9=qr,M0=Ri,J9=W9,eF=X9("".indexOf);Q9({target:"String",proto:!0,forced:!J9("includes")},{includes:function(e){return!!~eF(M0(q9(this)),M0($9(e)),arguments.length>1?arguments[1]:void 0)}});var tF=Xt,nF=tF("String").includes,R0=Pt,iF=P9,gF=nF,jd=Array.prototype,Pd=String.prototype,oF=function(n){var e=n.includes;return n===jd||R0(jd,n)&&e===jd.includes?iF:typeof n=="string"||n===Pd||R0(Pd,n)&&e===Pd.includes?gF:e},sF=oF,rF=sF,aF=rF,Rg=De(aF),AF=ze,CF=rt,IF=Hn,z0=zC,lF=r0,cF=CF(function(){z0(1)});AF({target:"Object",stat:!0,forced:cF,sham:!lF},{getPrototypeOf:function(e){return z0(IF(e))}});var dF=Ct,uF=dF.Object.getPrototypeOf,hF=uF,fF=hF,pF=fF,_0=De(pF),mF=Xt,vF=mF("Array").concat,bF=Pt,yF=vF,Bd=Array.prototype,wF=function(n){var e=n.concat;return n===Bd||bF(Bd,n)&&e===Bd.concat?yF:e},xF=wF,EF=xF,SF=EF,j0=De(SF),TF=ze,OF=kg.filter,NF=Ia,DF=NF("filter");TF({target:"Array",proto:!0,forced:!DF},{filter:function(e){return OF(this,e,arguments.length>1?arguments[1]:void 0)}});var kF=Xt,MF=kF("Array").filter,RF=Pt,zF=MF,Zd=Array.prototype,_F=function(n){var e=n.filter;return n===Zd||RF(Zd,n)&&e===Zd.filter?zF:e},jF=_F,PF=jF,BF=PF,$t=De(BF),P0=sn,ZF=rt,B0=at,LF=zC,GF=ra,FF=bi,VF=Xr.f,Z0=B0(VF),UF=B0([].push),YF=P0&&ZF(function(){var n=Object.create(null);return n[2]=2,!Z0(n,2)}),HF=function(n){return function(e){for(var t=FF(e),i=GF(t),o=YF&&LF(t)===null,r=i.length,A=0,I=[],l;r>A;)l=i[A++],(!P0||(o?l in t:Z0(t,l)))&&UF(I,n?[l,t[l]]:t[l]);return I}},KF={values:HF(!1)},WF=ze,QF=KF.values;WF({target:"Object",stat:!0},{values:function(e){return QF(e)}});var XF=Ct,$F=XF.Object.values,qF=$F,JF=qF,eV=JF,tV=De(eV),Ld=` +\v\f\r                 \u2028\u2029\uFEFF`,nV=at,iV=qr,gV=Ri,Gd=Ld,L0=nV("".replace),oV=RegExp("^["+Gd+"]+"),sV=RegExp("(^|[^"+Gd+"])["+Gd+"]+$"),rV=function(n){return function(e){var t=gV(iV(e));return n&1&&(t=L0(t,oV,"")),n&2&&(t=L0(t,sV,"$1")),t}},G0={trim:rV(3)},F0=jt,aV=rt,AV=at,CV=Ri,IV=G0.trim,V0=Ld,ya=F0.parseInt,U0=F0.Symbol,Y0=U0&&U0.iterator,H0=/^[+-]?0x/i,lV=AV(H0.exec),cV=ya(V0+"08")!==8||ya(V0+"0x16")!==22||Y0&&!aV(function(){ya(Object(Y0))}),dV=cV?function(e,t){var i=IV(CV(e));return ya(i,t>>>0||(lV(H0,i)?16:10))}:ya,uV=ze,K0=dV;uV({global:!0,forced:parseInt!==K0},{parseInt:K0});var hV=Ct,fV=hV.parseInt,pV=fV,mV=pV,vV=mV,Si=De(vV),bV=ze,yV=Sc,wV=Vc.indexOf,xV=Ds,Fd=yV([].indexOf),W0=!!Fd&&1/Fd([1],1,-0)<0,EV=W0||!xV("indexOf");bV({target:"Array",proto:!0,forced:EV},{indexOf:function(e){var t=arguments.length>1?arguments[1]:void 0;return W0?Fd(this,e,t)||0:wV(this,e,t)}});var SV=Xt,TV=SV("Array").indexOf,OV=Pt,NV=TV,Vd=Array.prototype,DV=function(n){var e=n.indexOf;return n===Vd||OV(Vd,n)&&e===Vd.indexOf?NV:e},kV=DV,MV=kV,RV=MV,lt=De(RV),zV=ze,_V=sn,jV=la;zV({target:"Object",stat:!0,sham:!_V},{create:jV});var PV=Ct,BV=PV.Object,ZV=function(e,t){return BV.create(e,t)},LV=ZV,GV=LV,FV=GV,zg=De(FV),Ud=Ct,VV=aC;Ud.JSON||(Ud.JSON={stringify:JSON.stringify});var UV=function(e,t,i){return VV(Ud.JSON.stringify,null,arguments)},YV=UV,HV=YV,KV=HV,ks=De(KV),WV=typeof Bun=="function"&&Bun&&typeof Bun.version=="string",QV=TypeError,XV=function(n,e){if(nt,A=qV(i)?i:iU(i),I=r?tU(arguments,t):[],l=r?function(){$V(A,this,I)}:A;return e?n(l,o):n(l)}:n},oU=ze,$0=jt,sU=X0,q0=sU($0.setInterval,!0);oU({global:!0,bind:!0,forced:$0.setInterval!==q0},{setInterval:q0});var rU=ze,J0=jt,aU=X0,e1=aU(J0.setTimeout,!0);rU({global:!0,bind:!0,forced:J0.setTimeout!==e1},{setTimeout:e1});var AU=Ct,CU=AU.setTimeout,IU=CU,ji=De(IU),lU=Hn,t1=oa,cU=gi,dU=function(e){for(var t=lU(this),i=cU(t),o=arguments.length,r=t1(o>1?arguments[1]:void 0,i),A=o>2?arguments[2]:void 0,I=A===void 0?i:t1(A,i);I>r;)t[r++]=e;return t},uU=ze,hU=dU;uU({target:"Array",proto:!0},{fill:hU});var fU=Xt,pU=fU("Array").fill,mU=Pt,vU=pU,Yd=Array.prototype,bU=function(n){var e=n.fill;return n===Yd||mU(Yd,n)&&e===Yd.fill?vU:e},yU=bU,wU=yU,xU=wU,wa=De(xU);function Ti(){return Ti=Object.assign||function(n){for(var e=1;e"u"?{style:{}}:document.createElement("div"),SU="function",Ms=Math.round,ko=Math.abs,Kd=Date.now;function LC(n,e){for(var t,i,o=e[0].toUpperCase()+e.slice(1),r=0;r"u"?ig={}:ig=window;var i1=LC(EU.style,"touchAction"),g1=i1!==void 0;function TU(){if(!g1)return!1;var n={},e=ig.CSS&&ig.CSS.supports;return["auto","manipulation","pan-y","pan-x","pan-x pan-y","none"].forEach(function(t){return n[t]=e?ig.CSS.supports("touch-action",t):!0}),n}var o1="compute",s1="auto",Wd="manipulation",Mo="none",xa="pan-x",Ea="pan-y",GC=TU(),OU=/mobile|tablet|ip(ad|hone|od)|android/i,r1="ontouchstart"in ig,NU=LC(ig,"PointerEvent")!==void 0,DU=r1&&OU.test(navigator.userAgent),Sa="touch",kU="pen",Qd="mouse",MU="kinect",RU=25,Nn=1,Ro=2,qt=4,Pn=8,FC=1,Ta=2,Oa=4,Na=8,Rs=16,Pi=Ta|Oa,zo=Na|Rs,a1=Pi|zo,A1=["x","y"],VC=["clientX","clientY"];function gg(n,e,t){var i;if(n)if(n.forEach)n.forEach(e,t);else if(n.length!==void 0)for(i=0;i-1}function zU(n){if(_o(n,Mo))return Mo;var e=_o(n,xa),t=_o(n,Ea);return e&&t?Mo:e||t?e?xa:Ea:_o(n,Wd)?Wd:s1}var C1=(function(){function n(t,i){this.manager=t,this.set(i)}var e=n.prototype;return e.set=function(i){i===o1&&(i=this.compute()),g1&&this.manager.element.style&&GC[i]&&(this.manager.element.style[i1]=i),this.actions=i.toLowerCase().trim()},e.update=function(){this.set(this.manager.options.touchAction)},e.compute=function(){var i=[];return gg(this.manager.recognizers,function(o){UC(o.options.enable,[o])&&(i=i.concat(o.getTouchAction()))}),zU(i.join(" "))},e.preventDefaults=function(i){var o=i.srcEvent,r=i.offsetDirection;if(this.manager.session.prevented){o.preventDefault();return}var A=this.actions,I=_o(A,Mo)&&!GC[Mo],l=_o(A,Ea)&&!GC[Ea],c=_o(A,xa)&&!GC[xa];if(I){var h=i.pointers.length===1,p=i.distance<2,m=i.deltaTime<250;if(h&&p&&m)return}if(!(c&&l)&&(I||l&&r&Pi||c&&r&zo))return this.preventSrc(o)},e.preventSrc=function(i){this.manager.session.prevented=!0,i.preventDefault()},n})();function Xd(n,e){for(;n;){if(n===e)return!0;n=n.parentNode}return!1}function I1(n){var e=n.length;if(e===1)return{x:Ms(n[0].clientX),y:Ms(n[0].clientY)};for(var t=0,i=0,o=0;o=ko(e)?n<0?Ta:Oa:e<0?Na:Rs}function _U(n,e){var t=e.center,i=n.offsetDelta||{},o=n.prevDelta||{},r=n.prevInput||{};(e.eventType===Nn||r.eventType===qt)&&(o=n.prevDelta={x:r.deltaX||0,y:r.deltaY||0},i=n.offsetDelta={x:t.x,y:t.y}),e.deltaX=o.x+(t.x-i.x),e.deltaY=o.y+(t.y-i.y)}function d1(n,e,t){return{x:e/n||0,y:t/n||0}}function jU(n,e){return YC(e[0],e[1],VC)/YC(n[0],n[1],VC)}function PU(n,e){return $d(e[1],e[0],VC)+$d(n[1],n[0],VC)}function BU(n,e){var t=n.lastInterval||e,i=e.timeStamp-t.timeStamp,o,r,A,I;if(e.eventType!==Pn&&(i>RU||t.velocity===void 0)){var l=e.deltaX-t.deltaX,c=e.deltaY-t.deltaY,h=d1(i,l,c);r=h.x,A=h.y,o=ko(h.x)>ko(h.y)?h.x:h.y,I=c1(l,c),n.lastInterval=e}else o=t.velocity,r=t.velocityX,A=t.velocityY,I=t.direction;e.velocity=o,e.velocityX=r,e.velocityY=A,e.direction=I}function ZU(n,e){var t=n.session,i=e.pointers,o=i.length;t.firstInput||(t.firstInput=l1(e)),o>1&&!t.firstMultiple?t.firstMultiple=l1(e):o===1&&(t.firstMultiple=!1);var r=t.firstInput,A=t.firstMultiple,I=A?A.center:r.center,l=e.center=I1(i);e.timeStamp=Kd(),e.deltaTime=e.timeStamp-r.timeStamp,e.angle=$d(I,l),e.distance=YC(I,l),_U(t,e),e.offsetDirection=c1(e.deltaX,e.deltaY);var c=d1(e.deltaTime,e.deltaX,e.deltaY);e.overallVelocityX=c.x,e.overallVelocityY=c.y,e.overallVelocity=ko(c.x)>ko(c.y)?c.x:c.y,e.scale=A?jU(A.pointers,i):1,e.rotation=A?PU(A.pointers,i):0,e.maxPointers=t.prevInput?e.pointers.length>t.prevInput.maxPointers?e.pointers.length:t.prevInput.maxPointers:e.pointers.length,BU(t,e);var h=n.element,p=e.srcEvent,m;p.composedPath?m=p.composedPath()[0]:p.path?m=p.path[0]:m=p.target,Xd(m,h)&&(h=m),e.target=h}function LU(n,e,t){var i=t.pointers.length,o=t.changedPointers.length,r=e&Nn&&i-o===0,A=e&(qt|Pn)&&i-o===0;t.isFirst=!!r,t.isFinal=!!A,r&&(n.session={}),t.eventType=e,ZU(n,t),n.emit("hammer.input",t),n.recognize(t),n.session.prevInput=t}function Da(n){return n.trim().split(/\s+/g)}function ka(n,e,t){gg(Da(e),function(i){n.addEventListener(i,t,!1)})}function Ma(n,e,t){gg(Da(e),function(i){n.removeEventListener(i,t,!1)})}function u1(n){var e=n.ownerDocument||n;return e.defaultView||e.parentWindow||window}var zs=(function(){function n(t,i){var o=this;this.manager=t,this.callback=i,this.element=t.element,this.target=t.options.inputTarget,this.domHandler=function(r){UC(t.options.enable,[t])&&o.handler(r)},this.init()}var e=n.prototype;return e.handler=function(){},e.init=function(){this.evEl&&ka(this.element,this.evEl,this.domHandler),this.evTarget&&ka(this.target,this.evTarget,this.domHandler),this.evWin&&ka(u1(this.element),this.evWin,this.domHandler)},e.destroy=function(){this.evEl&&Ma(this.element,this.evEl,this.domHandler),this.evTarget&&Ma(this.target,this.evTarget,this.domHandler),this.evWin&&Ma(u1(this.element),this.evWin,this.domHandler)},n})();function jo(n,e,t){if(n.indexOf&&!t)return n.indexOf(e);for(var i=0;il[e]}):i=i.sort()),i}var VU={touchstart:Nn,touchmove:Ro,touchend:qt,touchcancel:Pn},UU="touchstart touchmove touchend touchcancel",Jd=(function(n){oi(e,n);function e(){var i;return e.prototype.evTarget=UU,i=n.apply(this,arguments)||this,i.targetIds={},i}var t=e.prototype;return t.handler=function(o){var r=VU[o.type],A=YU.call(this,o,r);A&&this.callback(this.manager,r,{pointers:A[0],changedPointers:A[1],pointerType:Sa,srcEvent:o})},e})(zs);function YU(n,e){var t=Ra(n.touches),i=this.targetIds;if(e&(Nn|Ro)&&t.length===1)return i[t[0].identifier]=!0,[t,t];var o,r,A=Ra(n.changedTouches),I=[],l=this.target;if(r=t.filter(function(c){return Xd(c.target,l)}),e===Nn)for(o=0;o-1&&o.splice(I,1)};setTimeout(r,QU)}}function XU(n,e){n&Nn?(this.primaryTouch=e.changedPointers[0].identifier,v1.call(this,e)):n&(qt|Pn)&&v1.call(this,e)}function $U(n){for(var e=n.srcEvent.clientX,t=n.srcEvent.clientY,i=0;i-1&&this.requireFail.splice(o,1),this},e.hasRequireFailures=function(){return this.requireFail.length>0},e.canRecognizeWith=function(i){return!!this.simultaneous[i.id]},e.emit=function(i){var o=this,r=this.state;function A(I){o.manager.emit(I,i)}r<_g&&A(o.options.event+y1(r)),A(o.options.event),i.additionalEvent&&A(i.additionalEvent),r>=_g&&A(o.options.event+y1(r))},e.tryEmit=function(i){if(this.canEmit())return this.emit(i);this.state=Bi},e.canEmit=function(){for(var i=0;ir.threshold&&l&r.direction},t.attrTest=function(o){return Ps.prototype.attrTest.call(this,o)&&(this.state&si||!(this.state&si)&&this.directionTest(o))},t.emit=function(o){this.pX=o.deltaX,this.pY=o.deltaY;var r=w1(o.direction);r&&(o.additionalEvent=this.options.event+r),n.prototype.emit.call(this,o)},e})(Ps),x1=(function(n){oi(e,n);function e(i){return i===void 0&&(i={}),n.call(this,Ti({event:"swipe",threshold:10,velocity:.3,direction:Pi|zo,pointers:1},i))||this}var t=e.prototype;return t.getTouchAction=function(){return nu.prototype.getTouchAction.call(this)},t.attrTest=function(o){var r=this.options.direction,A;return r&(Pi|zo)?A=o.overallVelocity:r&Pi?A=o.overallVelocityX:r&zo&&(A=o.overallVelocityY),n.prototype.attrTest.call(this,o)&&r&o.offsetDirection&&o.distance>this.options.threshold&&o.maxPointers===this.options.pointers&&ko(A)>this.options.velocity&&o.eventType&qt},t.emit=function(o){var r=w1(o.offsetDirection);r&&this.manager.emit(this.options.event+r,o),this.manager.emit(this.options.event,o)},e})(Ps),E1=(function(n){oi(e,n);function e(i){return i===void 0&&(i={}),n.call(this,Ti({event:"pinch",threshold:0,pointers:2},i))||this}var t=e.prototype;return t.getTouchAction=function(){return[Mo]},t.attrTest=function(o){return n.prototype.attrTest.call(this,o)&&(Math.abs(o.scale-1)>this.options.threshold||this.state&si)},t.emit=function(o){if(o.scale!==1){var r=o.scale<1?"in":"out";o.additionalEvent=this.options.event+r}n.prototype.emit.call(this,o)},e})(Ps),S1=(function(n){oi(e,n);function e(i){return i===void 0&&(i={}),n.call(this,Ti({event:"rotate",threshold:0,pointers:2},i))||this}var t=e.prototype;return t.getTouchAction=function(){return[Mo]},t.attrTest=function(o){return n.prototype.attrTest.call(this,o)&&(Math.abs(o.rotation)>this.options.threshold||this.state&si)},e})(Ps),T1=(function(n){oi(e,n);function e(i){var o;return i===void 0&&(i={}),o=n.call(this,Ti({event:"press",pointers:1,time:251,threshold:9},i))||this,o._timer=null,o._input=null,o}var t=e.prototype;return t.getTouchAction=function(){return[s1]},t.process=function(o){var r=this,A=this.options,I=o.pointers.length===A.pointers,l=o.distanceA.time;if(this._input=o,!l||!I||o.eventType&(qt|Pn)&&!c)this.reset();else if(o.eventType&Nn)this.reset(),this._timer=setTimeout(function(){r.state=og,r.tryEmit()},A.time);else if(o.eventType&qt)return og;return Bi},t.reset=function(){clearTimeout(this._timer)},t.emit=function(o){this.state===og&&(o&&o.eventType&qt?this.manager.emit(this.options.event+"up",o):(this._input.timeStamp=Kd(),this.manager.emit(this.options.event,this._input)))},e})(_a),O1={domEvents:!1,touchAction:o1,enable:!0,inputTarget:null,inputClass:null,cssProps:{userSelect:"none",touchSelect:"none",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}},N1=[[S1,{enable:!1}],[E1,{enable:!1},["rotate"]],[x1,{direction:Pi}],[nu,{direction:Pi},["swipe"]],[tu],[tu,{event:"doubletap",taps:2},["tap"]],[T1]],tY=1,D1=2;function k1(n,e){var t=n.element;if(t.style){var i;gg(n.options.cssProps,function(o,r){i=LC(t.style,r),e?(n.oldCssProps[i]=t.style[i],t.style[i]=o):t.style[i]=n.oldCssProps[i]||""}),e||(n.oldCssProps={})}}function nY(n,e){var t=document.createEvent("Event");t.initEvent(n,!0,!0),t.gesture=e,e.target.dispatchEvent(t)}var M1=(function(){function n(t,i){var o=this;this.options=Do({},O1,i||{}),this.options.inputTarget=this.options.inputTarget||t,this.handlers={},this.session={},this.recognizers=[],this.oldCssProps={},this.element=t,this.input=qU(this),this.touchAction=new C1(this,this.options.touchAction),k1(this,!0),gg(this.options.recognizers,function(r){var A=o.add(new r[0](r[1]));r[2]&&A.recognizeWith(r[2]),r[3]&&A.requireFailure(r[3])},this)}var e=n.prototype;return e.set=function(i){return Do(this.options,i),i.touchAction&&this.touchAction.update(),i.inputTarget&&(this.input.destroy(),this.input.target=i.inputTarget,this.input.init()),this},e.stop=function(i){this.session.stopped=i?D1:tY},e.recognize=function(i){var o=this.session;if(!o.stopped){this.touchAction.preventDefaults(i);var r,A=this.recognizers,I=o.curRecognizer;(!I||I&&I.state&og)&&(o.curRecognizer=null,I=null);for(var l=0;l\s*\(/gm,"{anonymous}()@"):"Unknown Stack Trace",A=window.console&&(window.console.warn||window.console.log);return A&&A.call(window.console,i,r),n.apply(this,arguments)}}var v1=m1(function(n,e,t){for(var i=Object.keys(e),o=0;o1?e-1:0),i=1;i2)return VC(x1(e[0],e[1]),...xi(e).call(e,2));const i=e[0],o=e[1];if(i instanceof Date&&o instanceof Date)return i.setTime(o.getTime()),i;for(const r of l8(o))Object.prototype.propertyIsEnumerable.call(o,r)&&(o[r]===w1?delete i[r]:i[r]!==null&&o[r]!==null&&typeof i[r]=="object"&&typeof o[r]=="object"&&!gt(i[r])&&!gt(o[r])?i[r]=VC(i[r],o[r]):i[r]=E1(o[r]));return i}function E1(n){return gt(n)?hn(n).call(n,e=>E1(e)):typeof n=="object"&&n!==null?n instanceof Date?new Date(n.getTime()):VC({},n):n}function S1(n){for(const e of xt(n))n[e]===w1?delete n[e]:typeof n[e]=="object"&&n[e]!==null&&S1(n[e])}function UC(){for(var n=arguments.length,e=new Array(n),t=0;t{const A=2091639*e+o*23283064365386963e-26;return e=t,t=i,i=A-(o=A|0)};return r.uint32=()=>r()*4294967296,r.fract53=()=>r()+(r()*2097152|0)*11102230246251565e-32,r.algorithm="Alea",r.seed=n,r.version="0.9",r}function kU(){const n=zU();let e=n(" "),t=n(" "),i=n(" ");for(let o=0;o>>0,o-=n,o*=n,n=o>>>0,o-=n,n+=o*4294967296}return(n>>>0)*23283064365386963e-26}}function _U(){const n=()=>{};return{on:n,off:n,destroy:n,emit:n,get(){return{set:n}}}}const $d=typeof window<"u"?window.Hammer||DU:function(){return _U()};function Pi(n){var e;this._cleanupQueue=[],this.active=!1,this._dom={container:n,overlay:document.createElement("div")},this._dom.overlay.classList.add("vis-overlay"),this._dom.container.appendChild(this._dom.overlay),this._cleanupQueue.push(()=>{this._dom.overlay.parentNode.removeChild(this._dom.overlay)});const t=$d(this._dom.overlay);t.on("tap",oe(e=this._onTapOverlay).call(e,this)),this._cleanupQueue.push(()=>{t.destroy()});const i=["tap","doubletap","press","pinch","pan","panstart","panmove","panend"];nt(i).call(i,o=>{t.on(o,r=>{r.srcEvent.stopPropagation()})}),document&&document.body&&(this._onClick=o=>{jU(o.target,n)||this.deactivate()},document.body.addEventListener("click",this._onClick),this._cleanupQueue.push(()=>{document.body.removeEventListener("click",this._onClick)})),this._escListener=o=>{("key"in o?o.key==="Escape":o.keyCode===27)&&this.deactivate()}}Rb(Pi.prototype),Pi.current=null,Pi.prototype.destroy=function(){this.deactivate();for(const t of To(n=zi(e=this._cleanupQueue).call(e,0)).call(n)){var n,e;t()}},Pi.prototype.activate=function(){Pi.current&&Pi.current.deactivate(),Pi.current=this,this.active=!0,this._dom.overlay.style.display="none",this._dom.container.classList.add("vis-active"),this.emit("change"),this.emit("activate"),document.body.addEventListener("keydown",this._escListener)},Pi.prototype.deactivate=function(){this.active=!1,this._dom.overlay.style.display="block",this._dom.container.classList.remove("vis-active"),document.body.removeEventListener("keydown",this._escListener),this.emit("change"),this.emit("deactivate")},Pi.prototype._onTapOverlay=function(n){this.activate(),n.srcEvent.stopPropagation()};function jU(n,e){for(;n;){if(n===e)return!0;n=n.parentNode}return!1}const ZU=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i,PU=/^#?([a-f\d])([a-f\d])([a-f\d])$/i,BU=/^rgb\( *(1?\d{1,2}|2[0-4]\d|25[0-5]) *, *(1?\d{1,2}|2[0-4]\d|25[0-5]) *, *(1?\d{1,2}|2[0-4]\d|25[0-5]) *\)$/i,LU=/^rgba\( *(1?\d{1,2}|2[0-4]\d|25[0-5]) *, *(1?\d{1,2}|2[0-4]\d|25[0-5]) *, *(1?\d{1,2}|2[0-4]\d|25[0-5]) *, *([01]|0?\.\d+) *\)$/i;function zg(n){if(n)for(;n.hasChildNodes()===!0;){const e=n.firstChild;e&&(zg(e),n.removeChild(e))}}function _s(n){return n instanceof String||typeof n=="string"}function T1(n){return typeof n=="object"&&n!==null}function _o(n,e,t,i){let o=!1;i===!0&&(o=e[t]===null&&n[t]!==void 0),o?delete n[t]:n[t]=e[t]}function O1(n,e){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;for(const i in n)if(e[i]!==void 0)if(e[i]===null||typeof e[i]!="object")_o(n,e,i,t);else{const o=n[i],r=e[i];T1(o)&&T1(r)&&O1(o,r,t)}}function js(n,e,t){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(gt(t))throw new TypeError("Arrays are not supported by deepExtend");for(let o=0;o3&&arguments[3]!==void 0?arguments[3]:!1;if(gt(t))throw new TypeError("Arrays are not supported by deepExtend");for(const o in t)if(Object.prototype.hasOwnProperty.call(t,o)&&!Mg(n).call(n,o))if(t[o]&&t[o].constructor===Object)e[o]===void 0&&(e[o]={}),e[o].constructor===Object?vt(e[o],t[o]):_o(e,t,o,i);else if(gt(t[o])){e[o]=[];for(let r=0;r2&&arguments[2]!==void 0?arguments[2]:!1,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;for(const r in e)if(Object.prototype.hasOwnProperty.call(e,r)||t===!0)if(typeof e[r]=="object"&&e[r]!==null&&b0(e[r])===Object.prototype)n[r]===void 0?n[r]=vt({},e[r],t):typeof n[r]=="object"&&n[r]!==null&&b0(n[r])===Object.prototype?vt(n[r],e[r],t):_o(n,e,r,i);else if(gt(e[r])){var o;n[r]=xi(o=e[r]).call(o)}else _o(n,e,r,i);return n}function HC(n,e){return[...n,e]}function GU(n){return xi(n).call(n)}function FU(n){return n.getBoundingClientRect().left}function VU(n){return n.getBoundingClientRect().top}function Ke(n,e){if(gt(n)){const t=n.length;for(let i=0;i3&&arguments[3]!==void 0?arguments[3]:{};const o=function(b){return b!=null},r=function(b){return b!==null&&typeof b=="object"},A=function(b){for(const w in b)if(Object.prototype.hasOwnProperty.call(b,w))return!1;return!0};if(!r(n))throw new Error("Parameter mergeTarget must be an object");if(!r(e))throw new Error("Parameter options must be an object");if(!o(t))throw new Error("Parameter option must have a value");if(!r(i))throw new Error("Parameter globalOptions must be an object");const I=function(b,w,O){r(b[O])||(b[O]={});const x=w[O],S=b[O];for(const E in x)Object.prototype.hasOwnProperty.call(x,E)&&(S[E]=x[E])},l=e[t],h=r(i)&&!A(i)?i[t]:void 0,p=h?h.enabled:void 0;if(l===void 0)return;if(typeof l=="boolean"){r(n[t])||(n[t]={}),n[t].enabled=l;return}if(l===null&&!r(n[t]))if(o(h))n[t]=Rg(h);else return;if(!r(l))return;let m=!0;l.enabled!==void 0?m=l.enabled:p!==void 0&&(m=h.enabled),I(n,e,t),n[t].enabled=m}const HU={linear(n){return n},easeInQuad(n){return n*n},easeOutQuad(n){return n*(2-n)},easeInOutQuad(n){return n<.5?2*n*n:-1+(4-2*n)*n},easeInCubic(n){return n*n*n},easeOutCubic(n){return--n*n*n+1},easeInOutCubic(n){return n<.5?4*n*n*n:(n-1)*(2*n-2)*(2*n-2)+1},easeInQuart(n){return n*n*n*n},easeOutQuart(n){return 1- --n*n*n*n},easeInOutQuart(n){return n<.5?8*n*n*n*n:1-8*--n*n*n*n},easeInQuint(n){return n*n*n*n*n},easeOutQuint(n){return 1+--n*n*n*n*n},easeInOutQuint(n){return n<.5?16*n*n*n*n*n:1+16*--n*n*n*n*n}};function jg(n,e){let t;gt(e)||(e=[e]);for(const i of n)if(i){t=i[e[0]];for(let o=1;o0&&arguments[0]!==void 0?arguments[0]:1;this.pixelRatio=e,this.generated=!1,this.centerCoordinates={x:289/2,y:289/2},this.r=289*.49,this.color={r:255,g:255,b:255,a:1},this.hueCircle=void 0,this.initialColor={r:255,g:255,b:255,a:1},this.previousColor=void 0,this.applied=!1,this.updateCallback=()=>{},this.closeCallback=()=>{},this._create()}insertTo(e){this.hammer!==void 0&&(this.hammer.destroy(),this.hammer=void 0),this.container=e,this.container.appendChild(this.frame),this._bindHammer(),this._setSize()}setUpdateCallback(e){if(typeof e=="function")this.updateCallback=e;else throw new Error("Function attempted to set as colorPicker update callback is not a function.")}setCloseCallback(e){if(typeof e=="function")this.closeCallback=e;else throw new Error("Function attempted to set as colorPicker closing callback is not a function.")}_isColorString(e){if(typeof e=="string")return KU[e]}setColor(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;if(e==="none")return;let i;const o=this._isColorString(e);if(o!==void 0&&(e=o),_s(e)===!0){if(M1(e)===!0){const r=e.substr(4).substr(0,e.length-5).split(",");i={r:r[0],g:r[1],b:r[2],a:1}}else if(YU(e)===!0){const r=e.substr(5).substr(0,e.length-6).split(",");i={r:r[0],g:r[1],b:r[2],a:r[3]}}else if(D1(e)===!0){const r=qd(e);i={r:r.r,g:r.g,b:r.b,a:1}}}else if(e instanceof Object&&e.r!==void 0&&e.g!==void 0&&e.b!==void 0){const r=e.a!==void 0?e.a:"1.0";i={r:e.r,g:e.g,b:e.b,a:r}}if(i===void 0)throw new Error("Unknown color passed to the colorPicker. Supported are strings: rgb, hex, rgba. Object: rgb ({r:r,g:g,b:b,[a:a]}). Supplied: "+Os(e));this._setColor(i,t)}show(){this.closeCallback!==void 0&&(this.closeCallback(),this.closeCallback=void 0),this.applied=!1,this.frame.style.display="block",this._generateHueCircle()}_hide(){(arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0)===!0&&(this.previousColor=Yt({},this.color)),this.applied===!0&&this.updateCallback(this.initialColor),this.frame.style.display="none",_i(()=>{this.closeCallback!==void 0&&(this.closeCallback(),this.closeCallback=void 0)},0)}_save(){this.updateCallback(this.color),this.applied=!1,this._hide()}_apply(){this.applied=!0,this.updateCallback(this.color),this._updatePicker(this.color)}_loadLast(){this.previousColor!==void 0?this.setColor(this.previousColor,!1):alert("There is no last color to load...")}_setColor(e){(arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0)===!0&&(this.initialColor=Yt({},e)),this.color=e;const i=Da(e.r,e.g,e.b),o=2*Math.PI,r=this.r*i.s,A=this.centerCoordinates.x+r*Math.sin(o*i.h),I=this.centerCoordinates.y+r*Math.cos(o*i.h);this.colorPickerSelector.style.left=A-.5*this.colorPickerSelector.clientWidth+"px",this.colorPickerSelector.style.top=I-.5*this.colorPickerSelector.clientHeight+"px",this._updatePicker(e)}_setOpacity(e){this.color.a=e/100,this._updatePicker(this.color)}_setBrightness(e){const t=Da(this.color.r,this.color.g,this.color.b);t.v=e/100;const i=KC(t.h,t.s,t.v);i.a=this.color.a,this.color=i,this._updatePicker()}_updatePicker(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.color;const t=Da(e.r,e.g,e.b),i=this.colorPickerCanvas.getContext("2d");this.pixelRation===void 0&&(this.pixelRatio=(window.devicePixelRatio||1)/(i.webkitBackingStorePixelRatio||i.mozBackingStorePixelRatio||i.msBackingStorePixelRatio||i.oBackingStorePixelRatio||i.backingStorePixelRatio||1)),i.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);const o=this.colorPickerCanvas.clientWidth,r=this.colorPickerCanvas.clientHeight;i.clearRect(0,0,o,r),i.putImageData(this.hueCircle,0,0),i.fillStyle="rgba(0,0,0,"+(1-t.v)+")",i.circle(this.centerCoordinates.x,this.centerCoordinates.y,this.r),fa(i).call(i),this.brightnessRange.value=100*t.v,this.opacityRange.value=100*e.a,this.initialColorDiv.style.backgroundColor="rgba("+this.initialColor.r+","+this.initialColor.g+","+this.initialColor.b+","+this.initialColor.a+")",this.newColorDiv.style.backgroundColor="rgba("+this.color.r+","+this.color.g+","+this.color.b+","+this.color.a+")"}_setSize(){this.colorPickerCanvas.style.width="100%",this.colorPickerCanvas.style.height="100%",this.colorPickerCanvas.width=289*this.pixelRatio,this.colorPickerCanvas.height=289*this.pixelRatio}_create(){var e,t,i,o;if(this.frame=document.createElement("div"),this.frame.className="vis-color-picker",this.colorPickerDiv=document.createElement("div"),this.colorPickerSelector=document.createElement("div"),this.colorPickerSelector.className="vis-selector",this.colorPickerDiv.appendChild(this.colorPickerSelector),this.colorPickerCanvas=document.createElement("canvas"),this.colorPickerDiv.appendChild(this.colorPickerCanvas),this.colorPickerCanvas.getContext){const A=this.colorPickerCanvas.getContext("2d");this.pixelRatio=(window.devicePixelRatio||1)/(A.webkitBackingStorePixelRatio||A.mozBackingStorePixelRatio||A.msBackingStorePixelRatio||A.oBackingStorePixelRatio||A.backingStorePixelRatio||1),this.colorPickerCanvas.getContext("2d").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}else{const A=document.createElement("DIV");A.style.color="red",A.style.fontWeight="bold",A.style.padding="10px",A.innerText="Error: your browser does not support HTML canvas",this.colorPickerCanvas.appendChild(A)}this.colorPickerDiv.className="vis-color",this.opacityDiv=document.createElement("div"),this.opacityDiv.className="vis-opacity",this.brightnessDiv=document.createElement("div"),this.brightnessDiv.className="vis-brightness",this.arrowDiv=document.createElement("div"),this.arrowDiv.className="vis-arrow",this.opacityRange=document.createElement("input");try{this.opacityRange.type="range",this.opacityRange.min="0",this.opacityRange.max="100"}catch{}this.opacityRange.value="100",this.opacityRange.className="vis-range",this.brightnessRange=document.createElement("input");try{this.brightnessRange.type="range",this.brightnessRange.min="0",this.brightnessRange.max="100"}catch{}this.brightnessRange.value="100",this.brightnessRange.className="vis-range",this.opacityDiv.appendChild(this.opacityRange),this.brightnessDiv.appendChild(this.brightnessRange);const r=this;this.opacityRange.onchange=function(){r._setOpacity(this.value)},this.opacityRange.oninput=function(){r._setOpacity(this.value)},this.brightnessRange.onchange=function(){r._setBrightness(this.value)},this.brightnessRange.oninput=function(){r._setBrightness(this.value)},this.brightnessLabel=document.createElement("div"),this.brightnessLabel.className="vis-label vis-brightness",this.brightnessLabel.innerText="brightness:",this.opacityLabel=document.createElement("div"),this.opacityLabel.className="vis-label vis-opacity",this.opacityLabel.innerText="opacity:",this.newColorDiv=document.createElement("div"),this.newColorDiv.className="vis-new-color",this.newColorDiv.innerText="new",this.initialColorDiv=document.createElement("div"),this.initialColorDiv.className="vis-initial-color",this.initialColorDiv.innerText="initial",this.cancelButton=document.createElement("div"),this.cancelButton.className="vis-button vis-cancel",this.cancelButton.innerText="cancel",this.cancelButton.onclick=oe(e=this._hide).call(e,this,!1),this.applyButton=document.createElement("div"),this.applyButton.className="vis-button vis-apply",this.applyButton.innerText="apply",this.applyButton.onclick=oe(t=this._apply).call(t,this),this.saveButton=document.createElement("div"),this.saveButton.className="vis-button vis-save",this.saveButton.innerText="save",this.saveButton.onclick=oe(i=this._save).call(i,this),this.loadButton=document.createElement("div"),this.loadButton.className="vis-button vis-load",this.loadButton.innerText="load last",this.loadButton.onclick=oe(o=this._loadLast).call(o,this),this.frame.appendChild(this.colorPickerDiv),this.frame.appendChild(this.arrowDiv),this.frame.appendChild(this.brightnessLabel),this.frame.appendChild(this.brightnessDiv),this.frame.appendChild(this.opacityLabel),this.frame.appendChild(this.opacityDiv),this.frame.appendChild(this.newColorDiv),this.frame.appendChild(this.initialColorDiv),this.frame.appendChild(this.cancelButton),this.frame.appendChild(this.applyButton),this.frame.appendChild(this.saveButton),this.frame.appendChild(this.loadButton)}_bindHammer(){this.drag={},this.pinch={},this.hammer=new $d(this.colorPickerCanvas),this.hammer.get("pinch").set({enable:!0}),this.hammer.on("hammer.input",e=>{e.isFirst&&this._moveSelector(e)}),this.hammer.on("tap",e=>{this._moveSelector(e)}),this.hammer.on("panstart",e=>{this._moveSelector(e)}),this.hammer.on("panmove",e=>{this._moveSelector(e)}),this.hammer.on("panend",e=>{this._moveSelector(e)})}_generateHueCircle(){if(this.generated===!1){const e=this.colorPickerCanvas.getContext("2d");this.pixelRation===void 0&&(this.pixelRatio=(window.devicePixelRatio||1)/(e.webkitBackingStorePixelRatio||e.mozBackingStorePixelRatio||e.msBackingStorePixelRatio||e.oBackingStorePixelRatio||e.backingStorePixelRatio||1)),e.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);const t=this.colorPickerCanvas.clientWidth,i=this.colorPickerCanvas.clientHeight;e.clearRect(0,0,t,i);let o,r,A,I;this.centerCoordinates={x:t*.5,y:i*.5},this.r=.49*t;const l=2*Math.PI/360,c=1/360,h=1/this.r;let p;for(A=0;A<360;A++)for(I=0;I3&&arguments[3]!==void 0?arguments[3]:1,r=arguments.length>4&&arguments[4]!==void 0?arguments[4]:()=>!1;this.parent=e,this.changedOptions=[],this.container=t,this.allowCreation=!1,this.hideOption=r,this.options={},this.initialized=!1,this.popupCounter=0,this.defaultOptions={enabled:!1,filter:!0,container:void 0,showButton:!0},Yt(this.options,this.defaultOptions),this.configureOptions=i,this.moduleOptions={},this.domElements=[],this.popupDiv={},this.popupLimit=5,this.popupHistory={},this.colorPicker=new WU(o),this.wrapper=void 0}setOptions(e){if(e!==void 0){this.popupHistory={},this._removePopup();let t=!0;if(typeof e=="string")this.options.filter=e;else if(gt(e))this.options.filter=e.join();else if(typeof e=="object"){if(e==null)throw new TypeError("options cannot be null");e.container!==void 0&&(this.options.container=e.container),$t(e)!==void 0&&(this.options.filter=$t(e)),e.showButton!==void 0&&(this.options.showButton=e.showButton),e.enabled!==void 0&&(t=e.enabled)}else typeof e=="boolean"?(this.options.filter=!0,t=e):typeof e=="function"&&(this.options.filter=e,t=!0);$t(this.options)===!1&&(t=!1),this.options.enabled=t}this._clean()}setModuleOptions(e){this.moduleOptions=e,this.options.enabled===!0&&(this._clean(),this.options.container!==void 0&&(this.container=this.options.container),this._create())}_create(){this._clean(),this.changedOptions=[];const e=$t(this.options);let t=0,i=!1;for(const o in this.configureOptions)Object.prototype.hasOwnProperty.call(this.configureOptions,o)&&(this.allowCreation=!1,i=!1,typeof e=="function"?(i=e(o,[]),i=i||this._handleObject(this.configureOptions[o],[o],!0)):(e===!0||lt(e).call(e,o)!==-1)&&(i=!0),i!==!1&&(this.allowCreation=!0,t>0&&this._makeItem([]),this._makeHeader(o),this._handleObject(this.configureOptions[o],[o])),t++);this._makeButton(),this._push()}_push(){this.wrapper=document.createElement("div"),this.wrapper.className="vis-configuration-wrapper",this.container.appendChild(this.wrapper);for(let e=0;e1?t-1:0),o=1;o{r.appendChild(A)}),this.domElements.push(r),this.domElements.length}return 0}_makeHeader(e){const t=document.createElement("div");t.className="vis-configuration vis-config-header",t.innerText=e,this._makeItem([],t)}_makeLabel(e,t){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;const o=document.createElement("div");if(o.className="vis-configuration vis-config-label vis-config-s"+t.length,i===!0){for(;o.firstChild;)o.removeChild(o.firstChild);o.appendChild(tu("i","b",e))}else o.innerText=e+":";return o}_makeDropdown(e,t,i){const o=document.createElement("select");o.className="vis-configuration vis-config-select";let r=0;t!==void 0&<(e).call(e,t)!==-1&&(r=lt(e).call(e,t));for(let l=0;lA&&A!==1&&(l.max=Math.ceil(t*1.2),h=l.max,c="range increased"),l.value=t):l.value=o;const p=document.createElement("input");p.className="vis-configuration vis-config-rangeinput",p.value=l.value;const m=this;l.onchange=function(){p.value=this.value,m._update(Number(this.value),i)},l.oninput=function(){p.value=this.value};const b=this._makeLabel(i[i.length-1],i),w=this._makeItem(i,b,l,p);c!==""&&this.popupHistory[w]!==h&&(this.popupHistory[w]=h,this._setupPopup(c,w))}_makeButton(){if(this.options.showButton===!0){const e=document.createElement("div");e.className="vis-configuration vis-config-button",e.innerText="generate options",e.onclick=()=>{this._printOptions()},e.onmouseover=()=>{e.className="vis-configuration vis-config-button hover"},e.onmouseout=()=>{e.className="vis-configuration vis-config-button"},this.optionsContainer=document.createElement("div"),this.optionsContainer.className="vis-configuration vis-config-option-container",this.domElements.push(this.optionsContainer),this.domElements.push(e)}}_setupPopup(e,t){if(this.initialized===!0&&this.allowCreation===!0&&this.popupCounter{this._removePopup()},this.popupCounter+=1,this.popupDiv={html:i,index:t}}}_removePopup(){this.popupDiv.html!==void 0&&(this.popupDiv.html.parentNode.removeChild(this.popupDiv.html),clearTimeout(this.popupDiv.hideTimeout),clearTimeout(this.popupDiv.deleteTimeout),this.popupDiv={})}_showPopupIfNeeded(){if(this.popupDiv.html!==void 0){const t=this.domElements[this.popupDiv.index].getBoundingClientRect();this.popupDiv.html.style.left=t.left+"px",this.popupDiv.html.style.top=t.top-30+"px",document.body.appendChild(this.popupDiv.html),this.popupDiv.hideTimeout=_i(()=>{this.popupDiv.html.style.opacity=0},1500),this.popupDiv.deleteTimeout=_i(()=>{this._removePopup()},1800)}}_makeCheckbox(e,t,i){const o=document.createElement("input");o.type="checkbox",o.className="vis-configuration vis-config-checkbox",o.checked=e,t!==void 0&&(o.checked=t,t!==e&&(typeof e=="object"?t!==e.enabled&&this.changedOptions.push({path:i,value:t}):this.changedOptions.push({path:i,value:t})));const r=this;o.onchange=function(){r._update(this.checked,i)};const A=this._makeLabel(i[i.length-1],i);this._makeItem(i,A,o)}_makeTextInput(e,t,i){const o=document.createElement("input");o.type="text",o.className="vis-configuration vis-config-text",o.value=t,t!==e&&this.changedOptions.push({path:i,value:t});const r=this;o.onchange=function(){r._update(this.value,i)};const A=this._makeLabel(i[i.length-1],i);this._makeItem(i,A,o)}_makeColorField(e,t,i){const o=e[1],r=document.createElement("div");t=t===void 0?o:t,t!=="none"?(r.className="vis-configuration vis-config-colorBlock",r.style.backgroundColor=t):r.className="vis-configuration vis-config-colorBlock none",t=t===void 0?o:t,r.onclick=()=>{this._showColorPicker(t,r,i)};const A=this._makeLabel(i[i.length-1],i);this._makeItem(i,A,r)}_showColorPicker(e,t,i){t.onclick=function(){},this.colorPicker.insertTo(t),this.colorPicker.show(),this.colorPicker.setColor(e),this.colorPicker.setUpdateCallback(o=>{const r="rgba("+o.r+","+o.g+","+o.b+","+o.a+")";t.style.backgroundColor=r,this._update(r,i)}),this.colorPicker.setCloseCallback(()=>{t.onclick=()=>{this._showColorPicker(e,t,i)}})}_handleObject(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,o=!1;const r=$t(this.options);let A=!1;for(const I in e)if(Object.prototype.hasOwnProperty.call(e,I)){o=!0;const l=e[I],c=HC(t,I);if(typeof r=="function"&&(o=r(I,t),o===!1&&!gt(l)&&typeof l!="string"&&typeof l!="boolean"&&l instanceof Object&&(this.allowCreation=!1,o=this._handleObject(l,c,!0),this.allowCreation=i===!1)),o!==!1){A=!0;const h=this._getValue(c);if(gt(l))this._handleArray(l,h,c);else if(typeof l=="string")this._makeTextInput(l,h,c);else if(typeof l=="boolean")this._makeCheckbox(l,h,c);else if(l instanceof Object){if(!this.hideOption(t,I,this.moduleOptions))if(l.enabled!==void 0){const p=HC(c,"enabled"),m=this._getValue(p);if(m===!0){const b=this._makeLabel(I,c,!0);this._makeItem(c,b),A=this._handleObject(l,c)||A}else this._makeCheckbox(l,m,c)}else{const p=this._makeLabel(I,c,!0);this._makeItem(c,p),A=this._handleObject(l,c)||A}}else console.error("dont know how to handle",l,I,c)}}return A}_handleArray(e,t,i){typeof e[0]=="string"&&e[0]==="color"?(this._makeColorField(e,t,i),e[1]!==t&&this.changedOptions.push({path:i,value:t})):typeof e[0]=="string"?(this._makeDropdown(e,t,i),e[0]!==t&&this.changedOptions.push({path:i,value:t})):typeof e[0]=="number"&&(this._makeRange(e,t,i),e[0]!==t&&this.changedOptions.push({path:i,value:Number(t)}))}_update(e,t){const i=this._constructOptions(e,t);this.parent.body&&this.parent.body.emitter&&this.parent.body.emitter.emit&&this.parent.body.emitter.emit("configChange",i),this.initialized=!0,this.parent.setOptions(i)}_constructOptions(e,t){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},o=i;e=e==="true"?!0:e,e=e==="false"?!1:e;for(let r=0;rr-this.padding&&(l=!0),l?A=this.x-i:A=this.x,c?I=this.y-t:I=this.y}else I=this.y-t,I+t+this.padding>o&&(I=o-t-this.padding),Ir&&(A=r-i-this.padding),A\s*\(/gm,"{anonymous}()@"):"Unknown Stack Trace",A=window.console&&(window.console.warn||window.console.log);return A&&A.call(window.console,i,r),n.apply(this,arguments)}}var z1=R1(function(n,e,t){for(var i=Object.keys(e),o=0;o1?e-1:0),i=1;i2)return WC(B1(e[0],e[1]),...Ei(e).call(e,2));const i=e[0],o=e[1];if(i instanceof Date&&o instanceof Date)return i.setTime(o.getTime()),i;for(const r of H8(o))Object.prototype.propertyIsEnumerable.call(o,r)&&(o[r]===P1?delete i[r]:i[r]!==null&&o[r]!==null&&typeof i[r]=="object"&&typeof o[r]=="object"&&!gt(i[r])&&!gt(o[r])?i[r]=WC(i[r],o[r]):i[r]=Z1(o[r]));return i}function Z1(n){return gt(n)?hn(n).call(n,e=>Z1(e)):typeof n=="object"&&n!==null?n instanceof Date?new Date(n.getTime()):WC({},n):n}function L1(n){for(const e of xt(n))n[e]===P1?delete n[e]:typeof n[e]=="object"&&n[e]!==null&&L1(n[e])}function QC(){for(var n=arguments.length,e=new Array(n),t=0;t{const A=2091639*e+o*23283064365386963e-26;return e=t,t=i,i=A-(o=A|0)};return r.uint32=()=>r()*4294967296,r.fract53=()=>r()+(r()*2097152|0)*11102230246251565e-32,r.algorithm="Alea",r.seed=n,r.version="0.9",r}function cY(){const n=dY();let e=n(" "),t=n(" "),i=n(" ");for(let o=0;o>>0,o-=n,o*=n,n=o>>>0,o-=n,n+=o*4294967296}return(n>>>0)*23283064365386963e-26}}function uY(){const n=()=>{};return{on:n,off:n,destroy:n,emit:n,get(){return{set:n}}}}const iu=typeof window<"u"?window.Hammer||CY:function(){return uY()};function Zi(n){var e;this._cleanupQueue=[],this.active=!1,this._dom={container:n,overlay:document.createElement("div")},this._dom.overlay.classList.add("vis-overlay"),this._dom.container.appendChild(this._dom.overlay),this._cleanupQueue.push(()=>{this._dom.overlay.parentNode.removeChild(this._dom.overlay)});const t=iu(this._dom.overlay);t.on("tap",ge(e=this._onTapOverlay).call(e,this)),this._cleanupQueue.push(()=>{t.destroy()});const i=["tap","doubletap","press","pinch","pan","panstart","panmove","panend"];it(i).call(i,o=>{t.on(o,r=>{r.srcEvent.stopPropagation()})}),document&&document.body&&(this._onClick=o=>{hY(o.target,n)||this.deactivate()},document.body.addEventListener("click",this._onClick),this._cleanupQueue.push(()=>{document.body.removeEventListener("click",this._onClick)})),this._escListener=o=>{("key"in o?o.key==="Escape":o.keyCode===27)&&this.deactivate()}}Hb(Zi.prototype),Zi.current=null,Zi.prototype.destroy=function(){this.deactivate();for(const t of No(n=_i(e=this._cleanupQueue).call(e,0)).call(n)){var n,e;t()}},Zi.prototype.activate=function(){Zi.current&&Zi.current.deactivate(),Zi.current=this,this.active=!0,this._dom.overlay.style.display="none",this._dom.container.classList.add("vis-active"),this.emit("change"),this.emit("activate"),document.body.addEventListener("keydown",this._escListener)},Zi.prototype.deactivate=function(){this.active=!1,this._dom.overlay.style.display="block",this._dom.container.classList.remove("vis-active"),document.body.removeEventListener("keydown",this._escListener),this.emit("change"),this.emit("deactivate")},Zi.prototype._onTapOverlay=function(n){this.activate(),n.srcEvent.stopPropagation()};function hY(n,e){for(;n;){if(n===e)return!0;n=n.parentNode}return!1}const fY=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i,pY=/^#?([a-f\d])([a-f\d])([a-f\d])$/i,mY=/^rgb\( *(1?\d{1,2}|2[0-4]\d|25[0-5]) *, *(1?\d{1,2}|2[0-4]\d|25[0-5]) *, *(1?\d{1,2}|2[0-4]\d|25[0-5]) *\)$/i,vY=/^rgba\( *(1?\d{1,2}|2[0-4]\d|25[0-5]) *, *(1?\d{1,2}|2[0-4]\d|25[0-5]) *, *(1?\d{1,2}|2[0-4]\d|25[0-5]) *, *([01]|0?\.\d+) *\)$/i;function jg(n){if(n)for(;n.hasChildNodes()===!0;){const e=n.firstChild;e&&(jg(e),n.removeChild(e))}}function Bs(n){return n instanceof String||typeof n=="string"}function G1(n){return typeof n=="object"&&n!==null}function Po(n,e,t,i){let o=!1;i===!0&&(o=e[t]===null&&n[t]!==void 0),o?delete n[t]:n[t]=e[t]}function F1(n,e){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;for(const i in n)if(e[i]!==void 0)if(e[i]===null||typeof e[i]!="object")Po(n,e,i,t);else{const o=n[i],r=e[i];G1(o)&&G1(r)&&F1(o,r,t)}}function Zs(n,e,t){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(gt(t))throw new TypeError("Arrays are not supported by deepExtend");for(let o=0;o3&&arguments[3]!==void 0?arguments[3]:!1;if(gt(t))throw new TypeError("Arrays are not supported by deepExtend");for(const o in t)if(Object.prototype.hasOwnProperty.call(t,o)&&!Rg(n).call(n,o))if(t[o]&&t[o].constructor===Object)e[o]===void 0&&(e[o]={}),e[o].constructor===Object?vt(e[o],t[o]):Po(e,t,o,i);else if(gt(t[o])){e[o]=[];for(let r=0;r2&&arguments[2]!==void 0?arguments[2]:!1,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;for(const r in e)if(Object.prototype.hasOwnProperty.call(e,r)||t===!0)if(typeof e[r]=="object"&&e[r]!==null&&_0(e[r])===Object.prototype)n[r]===void 0?n[r]=vt({},e[r],t):typeof n[r]=="object"&&n[r]!==null&&_0(n[r])===Object.prototype?vt(n[r],e[r],t):Po(n,e,r,i);else if(gt(e[r])){var o;n[r]=Ei(o=e[r]).call(o)}else Po(n,e,r,i);return n}function $C(n,e){return[...n,e]}function bY(n){return Ei(n).call(n)}function yY(n){return n.getBoundingClientRect().left}function wY(n){return n.getBoundingClientRect().top}function We(n,e){if(gt(n)){const t=n.length;for(let i=0;i3&&arguments[3]!==void 0?arguments[3]:{};const o=function(v){return v!=null},r=function(v){return v!==null&&typeof v=="object"},A=function(v){for(const x in v)if(Object.prototype.hasOwnProperty.call(v,x))return!1;return!0};if(!r(n))throw new Error("Parameter mergeTarget must be an object");if(!r(e))throw new Error("Parameter options must be an object");if(!o(t))throw new Error("Parameter option must have a value");if(!r(i))throw new Error("Parameter globalOptions must be an object");const I=function(v,x,O){r(v[O])||(v[O]={});const y=x[O],S=v[O];for(const E in y)Object.prototype.hasOwnProperty.call(y,E)&&(S[E]=y[E])},l=e[t],h=r(i)&&!A(i)?i[t]:void 0,p=h?h.enabled:void 0;if(l===void 0)return;if(typeof l=="boolean"){r(n[t])||(n[t]={}),n[t].enabled=l;return}if(l===null&&!r(n[t]))if(o(h))n[t]=zg(h);else return;if(!r(l))return;let m=!0;l.enabled!==void 0?m=l.enabled:p!==void 0&&(m=h.enabled),I(n,e,t),n[t].enabled=m}const SY={linear(n){return n},easeInQuad(n){return n*n},easeOutQuad(n){return n*(2-n)},easeInOutQuad(n){return n<.5?2*n*n:-1+(4-2*n)*n},easeInCubic(n){return n*n*n},easeOutCubic(n){return--n*n*n+1},easeInOutCubic(n){return n<.5?4*n*n*n:(n-1)*(2*n-2)*(2*n-2)+1},easeInQuart(n){return n*n*n*n},easeOutQuart(n){return 1- --n*n*n*n},easeInOutQuart(n){return n<.5?8*n*n*n*n:1-8*--n*n*n*n},easeInQuint(n){return n*n*n*n*n},easeOutQuint(n){return 1+--n*n*n*n*n},easeInOutQuint(n){return n<.5?16*n*n*n*n*n:1+16*--n*n*n*n*n}};function Bg(n,e){let t;gt(e)||(e=[e]);for(const i of n)if(i){t=i[e[0]];for(let o=1;o0&&arguments[0]!==void 0?arguments[0]:1;this.pixelRatio=e,this.generated=!1,this.centerCoordinates={x:289/2,y:289/2},this.r=289*.49,this.color={r:255,g:255,b:255,a:1},this.hueCircle=void 0,this.initialColor={r:255,g:255,b:255,a:1},this.previousColor=void 0,this.applied=!1,this.updateCallback=()=>{},this.closeCallback=()=>{},this._create()}insertTo(e){this.hammer!==void 0&&(this.hammer.destroy(),this.hammer=void 0),this.container=e,this.container.appendChild(this.frame),this._bindHammer(),this._setSize()}setUpdateCallback(e){if(typeof e=="function")this.updateCallback=e;else throw new Error("Function attempted to set as colorPicker update callback is not a function.")}setCloseCallback(e){if(typeof e=="function")this.closeCallback=e;else throw new Error("Function attempted to set as colorPicker closing callback is not a function.")}_isColorString(e){if(typeof e=="string")return TY[e]}setColor(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;if(e==="none")return;let i;const o=this._isColorString(e);if(o!==void 0&&(e=o),Bs(e)===!0){if(Y1(e)===!0){const r=e.substr(4).substr(0,e.length-5).split(",");i={r:r[0],g:r[1],b:r[2],a:1}}else if(EY(e)===!0){const r=e.substr(5).substr(0,e.length-6).split(",");i={r:r[0],g:r[1],b:r[2],a:r[3]}}else if(U1(e)===!0){const r=gu(e);i={r:r.r,g:r.g,b:r.b,a:1}}}else if(e instanceof Object&&e.r!==void 0&&e.g!==void 0&&e.b!==void 0){const r=e.a!==void 0?e.a:"1.0";i={r:e.r,g:e.g,b:e.b,a:r}}if(i===void 0)throw new Error("Unknown color passed to the colorPicker. Supported are strings: rgb, hex, rgba. Object: rgb ({r:r,g:g,b:b,[a:a]}). Supplied: "+ks(e));this._setColor(i,t)}show(){this.closeCallback!==void 0&&(this.closeCallback(),this.closeCallback=void 0),this.applied=!1,this.frame.style.display="block",this._generateHueCircle()}_hide(){(arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0)===!0&&(this.previousColor=Yt({},this.color)),this.applied===!0&&this.updateCallback(this.initialColor),this.frame.style.display="none",ji(()=>{this.closeCallback!==void 0&&(this.closeCallback(),this.closeCallback=void 0)},0)}_save(){this.updateCallback(this.color),this.applied=!1,this._hide()}_apply(){this.applied=!0,this.updateCallback(this.color),this._updatePicker(this.color)}_loadLast(){this.previousColor!==void 0?this.setColor(this.previousColor,!1):alert("There is no last color to load...")}_setColor(e){(arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0)===!0&&(this.initialColor=Yt({},e)),this.color=e;const i=ja(e.r,e.g,e.b),o=2*Math.PI,r=this.r*i.s,A=this.centerCoordinates.x+r*Math.sin(o*i.h),I=this.centerCoordinates.y+r*Math.cos(o*i.h);this.colorPickerSelector.style.left=A-.5*this.colorPickerSelector.clientWidth+"px",this.colorPickerSelector.style.top=I-.5*this.colorPickerSelector.clientHeight+"px",this._updatePicker(e)}_setOpacity(e){this.color.a=e/100,this._updatePicker(this.color)}_setBrightness(e){const t=ja(this.color.r,this.color.g,this.color.b);t.v=e/100;const i=qC(t.h,t.s,t.v);i.a=this.color.a,this.color=i,this._updatePicker()}_updatePicker(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.color;const t=ja(e.r,e.g,e.b),i=this.colorPickerCanvas.getContext("2d");this.pixelRation===void 0&&(this.pixelRatio=(window.devicePixelRatio||1)/(i.webkitBackingStorePixelRatio||i.mozBackingStorePixelRatio||i.msBackingStorePixelRatio||i.oBackingStorePixelRatio||i.backingStorePixelRatio||1)),i.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);const o=this.colorPickerCanvas.clientWidth,r=this.colorPickerCanvas.clientHeight;i.clearRect(0,0,o,r),i.putImageData(this.hueCircle,0,0),i.fillStyle="rgba(0,0,0,"+(1-t.v)+")",i.circle(this.centerCoordinates.x,this.centerCoordinates.y,this.r),wa(i).call(i),this.brightnessRange.value=100*t.v,this.opacityRange.value=100*e.a,this.initialColorDiv.style.backgroundColor="rgba("+this.initialColor.r+","+this.initialColor.g+","+this.initialColor.b+","+this.initialColor.a+")",this.newColorDiv.style.backgroundColor="rgba("+this.color.r+","+this.color.g+","+this.color.b+","+this.color.a+")"}_setSize(){this.colorPickerCanvas.style.width="100%",this.colorPickerCanvas.style.height="100%",this.colorPickerCanvas.width=289*this.pixelRatio,this.colorPickerCanvas.height=289*this.pixelRatio}_create(){var e,t,i,o;if(this.frame=document.createElement("div"),this.frame.className="vis-color-picker",this.colorPickerDiv=document.createElement("div"),this.colorPickerSelector=document.createElement("div"),this.colorPickerSelector.className="vis-selector",this.colorPickerDiv.appendChild(this.colorPickerSelector),this.colorPickerCanvas=document.createElement("canvas"),this.colorPickerDiv.appendChild(this.colorPickerCanvas),this.colorPickerCanvas.getContext){const A=this.colorPickerCanvas.getContext("2d");this.pixelRatio=(window.devicePixelRatio||1)/(A.webkitBackingStorePixelRatio||A.mozBackingStorePixelRatio||A.msBackingStorePixelRatio||A.oBackingStorePixelRatio||A.backingStorePixelRatio||1),this.colorPickerCanvas.getContext("2d").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}else{const A=document.createElement("DIV");A.style.color="red",A.style.fontWeight="bold",A.style.padding="10px",A.innerText="Error: your browser does not support HTML canvas",this.colorPickerCanvas.appendChild(A)}this.colorPickerDiv.className="vis-color",this.opacityDiv=document.createElement("div"),this.opacityDiv.className="vis-opacity",this.brightnessDiv=document.createElement("div"),this.brightnessDiv.className="vis-brightness",this.arrowDiv=document.createElement("div"),this.arrowDiv.className="vis-arrow",this.opacityRange=document.createElement("input");try{this.opacityRange.type="range",this.opacityRange.min="0",this.opacityRange.max="100"}catch{}this.opacityRange.value="100",this.opacityRange.className="vis-range",this.brightnessRange=document.createElement("input");try{this.brightnessRange.type="range",this.brightnessRange.min="0",this.brightnessRange.max="100"}catch{}this.brightnessRange.value="100",this.brightnessRange.className="vis-range",this.opacityDiv.appendChild(this.opacityRange),this.brightnessDiv.appendChild(this.brightnessRange);const r=this;this.opacityRange.onchange=function(){r._setOpacity(this.value)},this.opacityRange.oninput=function(){r._setOpacity(this.value)},this.brightnessRange.onchange=function(){r._setBrightness(this.value)},this.brightnessRange.oninput=function(){r._setBrightness(this.value)},this.brightnessLabel=document.createElement("div"),this.brightnessLabel.className="vis-label vis-brightness",this.brightnessLabel.innerText="brightness:",this.opacityLabel=document.createElement("div"),this.opacityLabel.className="vis-label vis-opacity",this.opacityLabel.innerText="opacity:",this.newColorDiv=document.createElement("div"),this.newColorDiv.className="vis-new-color",this.newColorDiv.innerText="new",this.initialColorDiv=document.createElement("div"),this.initialColorDiv.className="vis-initial-color",this.initialColorDiv.innerText="initial",this.cancelButton=document.createElement("div"),this.cancelButton.className="vis-button vis-cancel",this.cancelButton.innerText="cancel",this.cancelButton.onclick=ge(e=this._hide).call(e,this,!1),this.applyButton=document.createElement("div"),this.applyButton.className="vis-button vis-apply",this.applyButton.innerText="apply",this.applyButton.onclick=ge(t=this._apply).call(t,this),this.saveButton=document.createElement("div"),this.saveButton.className="vis-button vis-save",this.saveButton.innerText="save",this.saveButton.onclick=ge(i=this._save).call(i,this),this.loadButton=document.createElement("div"),this.loadButton.className="vis-button vis-load",this.loadButton.innerText="load last",this.loadButton.onclick=ge(o=this._loadLast).call(o,this),this.frame.appendChild(this.colorPickerDiv),this.frame.appendChild(this.arrowDiv),this.frame.appendChild(this.brightnessLabel),this.frame.appendChild(this.brightnessDiv),this.frame.appendChild(this.opacityLabel),this.frame.appendChild(this.opacityDiv),this.frame.appendChild(this.newColorDiv),this.frame.appendChild(this.initialColorDiv),this.frame.appendChild(this.cancelButton),this.frame.appendChild(this.applyButton),this.frame.appendChild(this.saveButton),this.frame.appendChild(this.loadButton)}_bindHammer(){this.drag={},this.pinch={},this.hammer=new iu(this.colorPickerCanvas),this.hammer.get("pinch").set({enable:!0}),this.hammer.on("hammer.input",e=>{e.isFirst&&this._moveSelector(e)}),this.hammer.on("tap",e=>{this._moveSelector(e)}),this.hammer.on("panstart",e=>{this._moveSelector(e)}),this.hammer.on("panmove",e=>{this._moveSelector(e)}),this.hammer.on("panend",e=>{this._moveSelector(e)})}_generateHueCircle(){if(this.generated===!1){const e=this.colorPickerCanvas.getContext("2d");this.pixelRation===void 0&&(this.pixelRatio=(window.devicePixelRatio||1)/(e.webkitBackingStorePixelRatio||e.mozBackingStorePixelRatio||e.msBackingStorePixelRatio||e.oBackingStorePixelRatio||e.backingStorePixelRatio||1)),e.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);const t=this.colorPickerCanvas.clientWidth,i=this.colorPickerCanvas.clientHeight;e.clearRect(0,0,t,i);let o,r,A,I;this.centerCoordinates={x:t*.5,y:i*.5},this.r=.49*t;const l=2*Math.PI/360,c=1/360,h=1/this.r;let p;for(A=0;A<360;A++)for(I=0;I3&&arguments[3]!==void 0?arguments[3]:1,r=arguments.length>4&&arguments[4]!==void 0?arguments[4]:()=>!1;this.parent=e,this.changedOptions=[],this.container=t,this.allowCreation=!1,this.hideOption=r,this.options={},this.initialized=!1,this.popupCounter=0,this.defaultOptions={enabled:!1,filter:!0,container:void 0,showButton:!0},Yt(this.options,this.defaultOptions),this.configureOptions=i,this.moduleOptions={},this.domElements=[],this.popupDiv={},this.popupLimit=5,this.popupHistory={},this.colorPicker=new OY(o),this.wrapper=void 0}setOptions(e){if(e!==void 0){this.popupHistory={},this._removePopup();let t=!0;if(typeof e=="string")this.options.filter=e;else if(gt(e))this.options.filter=e.join();else if(typeof e=="object"){if(e==null)throw new TypeError("options cannot be null");e.container!==void 0&&(this.options.container=e.container),$t(e)!==void 0&&(this.options.filter=$t(e)),e.showButton!==void 0&&(this.options.showButton=e.showButton),e.enabled!==void 0&&(t=e.enabled)}else typeof e=="boolean"?(this.options.filter=!0,t=e):typeof e=="function"&&(this.options.filter=e,t=!0);$t(this.options)===!1&&(t=!1),this.options.enabled=t}this._clean()}setModuleOptions(e){this.moduleOptions=e,this.options.enabled===!0&&(this._clean(),this.options.container!==void 0&&(this.container=this.options.container),this._create())}_create(){this._clean(),this.changedOptions=[];const e=$t(this.options);let t=0,i=!1;for(const o in this.configureOptions)Object.prototype.hasOwnProperty.call(this.configureOptions,o)&&(this.allowCreation=!1,i=!1,typeof e=="function"?(i=e(o,[]),i=i||this._handleObject(this.configureOptions[o],[o],!0)):(e===!0||lt(e).call(e,o)!==-1)&&(i=!0),i!==!1&&(this.allowCreation=!0,t>0&&this._makeItem([]),this._makeHeader(o),this._handleObject(this.configureOptions[o],[o])),t++);this._makeButton(),this._push()}_push(){this.wrapper=document.createElement("div"),this.wrapper.className="vis-configuration-wrapper",this.container.appendChild(this.wrapper);for(let e=0;e1?t-1:0),o=1;o{r.appendChild(A)}),this.domElements.push(r),this.domElements.length}return 0}_makeHeader(e){const t=document.createElement("div");t.className="vis-configuration vis-config-header",t.innerText=e,this._makeItem([],t)}_makeLabel(e,t){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;const o=document.createElement("div");if(o.className="vis-configuration vis-config-label vis-config-s"+t.length,i===!0){for(;o.firstChild;)o.removeChild(o.firstChild);o.appendChild(ru("i","b",e))}else o.innerText=e+":";return o}_makeDropdown(e,t,i){const o=document.createElement("select");o.className="vis-configuration vis-config-select";let r=0;t!==void 0&<(e).call(e,t)!==-1&&(r=lt(e).call(e,t));for(let l=0;lA&&A!==1&&(l.max=Math.ceil(t*1.2),h=l.max,c="range increased"),l.value=t):l.value=o;const p=document.createElement("input");p.className="vis-configuration vis-config-rangeinput",p.value=l.value;const m=this;l.onchange=function(){p.value=this.value,m._update(Number(this.value),i)},l.oninput=function(){p.value=this.value};const v=this._makeLabel(i[i.length-1],i),x=this._makeItem(i,v,l,p);c!==""&&this.popupHistory[x]!==h&&(this.popupHistory[x]=h,this._setupPopup(c,x))}_makeButton(){if(this.options.showButton===!0){const e=document.createElement("div");e.className="vis-configuration vis-config-button",e.innerText="generate options",e.onclick=()=>{this._printOptions()},e.onmouseover=()=>{e.className="vis-configuration vis-config-button hover"},e.onmouseout=()=>{e.className="vis-configuration vis-config-button"},this.optionsContainer=document.createElement("div"),this.optionsContainer.className="vis-configuration vis-config-option-container",this.domElements.push(this.optionsContainer),this.domElements.push(e)}}_setupPopup(e,t){if(this.initialized===!0&&this.allowCreation===!0&&this.popupCounter{this._removePopup()},this.popupCounter+=1,this.popupDiv={html:i,index:t}}}_removePopup(){this.popupDiv.html!==void 0&&(this.popupDiv.html.parentNode.removeChild(this.popupDiv.html),clearTimeout(this.popupDiv.hideTimeout),clearTimeout(this.popupDiv.deleteTimeout),this.popupDiv={})}_showPopupIfNeeded(){if(this.popupDiv.html!==void 0){const t=this.domElements[this.popupDiv.index].getBoundingClientRect();this.popupDiv.html.style.left=t.left+"px",this.popupDiv.html.style.top=t.top-30+"px",document.body.appendChild(this.popupDiv.html),this.popupDiv.hideTimeout=ji(()=>{this.popupDiv.html.style.opacity=0},1500),this.popupDiv.deleteTimeout=ji(()=>{this._removePopup()},1800)}}_makeCheckbox(e,t,i){const o=document.createElement("input");o.type="checkbox",o.className="vis-configuration vis-config-checkbox",o.checked=e,t!==void 0&&(o.checked=t,t!==e&&(typeof e=="object"?t!==e.enabled&&this.changedOptions.push({path:i,value:t}):this.changedOptions.push({path:i,value:t})));const r=this;o.onchange=function(){r._update(this.checked,i)};const A=this._makeLabel(i[i.length-1],i);this._makeItem(i,A,o)}_makeTextInput(e,t,i){const o=document.createElement("input");o.type="text",o.className="vis-configuration vis-config-text",o.value=t,t!==e&&this.changedOptions.push({path:i,value:t});const r=this;o.onchange=function(){r._update(this.value,i)};const A=this._makeLabel(i[i.length-1],i);this._makeItem(i,A,o)}_makeColorField(e,t,i){const o=e[1],r=document.createElement("div");t=t===void 0?o:t,t!=="none"?(r.className="vis-configuration vis-config-colorBlock",r.style.backgroundColor=t):r.className="vis-configuration vis-config-colorBlock none",t=t===void 0?o:t,r.onclick=()=>{this._showColorPicker(t,r,i)};const A=this._makeLabel(i[i.length-1],i);this._makeItem(i,A,r)}_showColorPicker(e,t,i){t.onclick=function(){},this.colorPicker.insertTo(t),this.colorPicker.show(),this.colorPicker.setColor(e),this.colorPicker.setUpdateCallback(o=>{const r="rgba("+o.r+","+o.g+","+o.b+","+o.a+")";t.style.backgroundColor=r,this._update(r,i)}),this.colorPicker.setCloseCallback(()=>{t.onclick=()=>{this._showColorPicker(e,t,i)}})}_handleObject(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,o=!1;const r=$t(this.options);let A=!1;for(const I in e)if(Object.prototype.hasOwnProperty.call(e,I)){o=!0;const l=e[I],c=$C(t,I);if(typeof r=="function"&&(o=r(I,t),o===!1&&!gt(l)&&typeof l!="string"&&typeof l!="boolean"&&l instanceof Object&&(this.allowCreation=!1,o=this._handleObject(l,c,!0),this.allowCreation=i===!1)),o!==!1){A=!0;const h=this._getValue(c);if(gt(l))this._handleArray(l,h,c);else if(typeof l=="string")this._makeTextInput(l,h,c);else if(typeof l=="boolean")this._makeCheckbox(l,h,c);else if(l instanceof Object){if(!this.hideOption(t,I,this.moduleOptions))if(l.enabled!==void 0){const p=$C(c,"enabled"),m=this._getValue(p);if(m===!0){const v=this._makeLabel(I,c,!0);this._makeItem(c,v),A=this._handleObject(l,c)||A}else this._makeCheckbox(l,m,c)}else{const p=this._makeLabel(I,c,!0);this._makeItem(c,p),A=this._handleObject(l,c)||A}}else console.error("dont know how to handle",l,I,c)}}return A}_handleArray(e,t,i){typeof e[0]=="string"&&e[0]==="color"?(this._makeColorField(e,t,i),e[1]!==t&&this.changedOptions.push({path:i,value:t})):typeof e[0]=="string"?(this._makeDropdown(e,t,i),e[0]!==t&&this.changedOptions.push({path:i,value:t})):typeof e[0]=="number"&&(this._makeRange(e,t,i),e[0]!==t&&this.changedOptions.push({path:i,value:Number(t)}))}_update(e,t){const i=this._constructOptions(e,t);this.parent.body&&this.parent.body.emitter&&this.parent.body.emitter.emit&&this.parent.body.emitter.emit("configChange",i),this.initialized=!0,this.parent.setOptions(i)}_constructOptions(e,t){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},o=i;e=e==="true"?!0:e,e=e==="false"?!1:e;for(let r=0;rr-this.padding&&(l=!0),l?A=this.x-i:A=this.x,c?I=this.y-t:I=this.y}else I=this.y-t,I+t+this.padding>o&&(I=o-t-this.padding),Ir&&(A=r-i-this.padding),Ar.distance?l=" in "+Vt.printLocation(o.path,e,"")+"Perhaps it was misplaced? Matching option found at: "+Vt.printLocation(r.path,r.closestMatch,""):o.distance<=A?l='. Did you mean "'+o.closestMatch+'"?'+Vt.printLocation(o.path,e):l=". Did you mean one of these: "+Vt.print(xt(t))+Vt.printLocation(i,e),console.error('%cUnknown option detected: "'+e+'"'+l,nu),Ma=!0}static findInOptions(e,t,i){let o=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,r=1e9,A="",I=[];const l=e.toLowerCase();let c;for(const p in t){let m;if(t[p].__type__!==void 0&&o===!0){const b=Vt.findInOptions(e,t[p],HC(i,p));r>b.distance&&(A=b.closestMatch,I=b.path,r=b.distance,c=b.indexMatch)}else{var h;lt(h=p.toLowerCase()).call(h,l)!==-1&&(c=p),m=Vt.levenshteinDistance(e,p),r>m&&(A=p,I=GU(i),r=m)}}return{closestMatch:A,path:I,distance:r,indexMatch:c}}static printLocation(e,t){let o=` +`:r.distance<=I&&o.distance>r.distance?l=" in "+Vt.printLocation(o.path,e,"")+"Perhaps it was misplaced? Matching option found at: "+Vt.printLocation(r.path,r.closestMatch,""):o.distance<=A?l='. Did you mean "'+o.closestMatch+'"?'+Vt.printLocation(o.path,e):l=". Did you mean one of these: "+Vt.print(xt(t))+Vt.printLocation(i,e),console.error('%cUnknown option detected: "'+e+'"'+l,au),Pa=!0}static findInOptions(e,t,i){let o=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,r=1e9,A="",I=[];const l=e.toLowerCase();let c;for(const p in t){let m;if(t[p].__type__!==void 0&&o===!0){const v=Vt.findInOptions(e,t[p],$C(i,p));r>v.distance&&(A=v.closestMatch,I=v.path,r=v.distance,c=v.indexMatch)}else{var h;lt(h=p.toLowerCase()).call(h,l)!==-1&&(c=p),m=Vt.levenshteinDistance(e,p),r>m&&(A=p,I=bY(i),r=m)}}return{closestMatch:A,path:I,distance:r,indexMatch:c}}static printLocation(e,t){let o=` `+(arguments.length>2&&arguments[2]!==void 0?arguments[2]:`Problem value found at: `)+`options = { @@ -712,16 +712,16 @@ input.vis-configuration.vis-config-range:focus::-ms-fill-upper { `;for(let r=0;r":!0,"--":!0},Zg="",Ps=0,Ue="",De="",Zn=Nn.NULL;function iY(){Ps=0,Ue=Zg.charAt(0)}function In(){Ps++,Ue=Zg.charAt(Ps)}function Bs(){return Zg.charAt(Ps+1)}function j1(n){var e=n.charCodeAt(0);return e<47?e===35||e===46:e<59?e>47:e<91?e>64:e<96?e===95:e<123?e>96:!1}function Pg(n,e){if(n||(n={}),e)for(var t in e)e.hasOwnProperty(t)&&(n[t]=e[t]);return n}function gY(n,e,t){for(var i=e.split("."),o=n;i.length;){var r=i.shift();i.length?(o[r]||(o[r]={}),o=o[r]):o[r]=t}}function Z1(n,e){for(var t,i,o=null,r=[n],A=n;A.parent;)r.push(A.parent),A=A.parent;if(A.nodes){for(t=0,i=A.nodes.length;t=0;t--){var I,l=r[t];l.nodes||(l.nodes=[]),lt(I=l.nodes).call(I,o)===-1&&l.nodes.push(o)}e.attr&&(o.attr=Pg(o.attr,e.attr))}function oY(n,e){if(n.edges||(n.edges=[]),n.edges.push(e),n.edge){var t=Pg({},n.edge);e.attr=Pg(t,e.attr)}}function P1(n,e,t,i,o){var r={from:e,to:t,type:i};return n.edge&&(r.attr=Pg({},n.edge)),r.attr=Pg(r.attr||{},o),o!=null&&o.hasOwnProperty("arrows")&&o.arrows!=null&&(r.arrows={to:{enabled:!0,type:o.arrows.type}},o.arrows=null),r}function bt(){for(Zn=Nn.NULL,De="";Ue===" "||Ue===" "||Ue===` -`||Ue==="\r";)In();do{var n=!1;if(Ue==="#"){for(var e=Ps-1;Zg.charAt(e)===" "||Zg.charAt(e)===" ";)e--;if(Zg.charAt(e)===` -`||Zg.charAt(e)===""){for(;Ue!=""&&Ue!=` -`;)In();n=!0}}if(Ue==="/"&&Bs()==="/"){for(;Ue!=""&&Ue!=` -`;)In();n=!0}if(Ue==="/"&&Bs()==="*"){for(;Ue!="";)if(Ue==="*"&&Bs()==="/"){In(),In();break}else In();n=!0}for(;Ue===" "||Ue===" "||Ue===` -`||Ue==="\r";)In()}while(n);if(Ue===""){Zn=Nn.DELIMITER;return}var t=Ue+Bs();if(_1[t]){Zn=Nn.DELIMITER,De=t,In(),In();return}if(_1[Ue]){Zn=Nn.DELIMITER,De=Ue,In();return}if(j1(Ue)||Ue==="-"){for(De+=Ue,In();j1(Ue);)De+=Ue,In();De==="false"?De=!1:De==="true"?De=!0:isNaN(Number(De))||(De=Number(De)),Zn=Nn.IDENTIFIER;return}if(Ue==='"'){for(In();Ue!=""&&(Ue!='"'||Ue==='"'&&Bs()==='"');)Ue==='"'?(De+=Ue,In()):Ue==="\\"&&Bs()==="n"?(De+=` -`,In()):De+=Ue,In();if(Ue!='"')throw Dn('End of string " expected');In(),Zn=Nn.IDENTIFIER;return}for(Zn=Nn.UNKNOWN;Ue!="";)De+=Ue,In();throw new SyntaxError('Syntax error in part "'+F1(De,30)+'"')}function sY(){var n={};if(iY(),bt(),De==="strict"&&(n.strict=!0,bt()),(De==="graph"||De==="digraph")&&(n.type=De,bt()),Zn===Nn.IDENTIFIER&&(n.id=De,bt()),De!="{")throw Dn("Angle bracket { expected");if(bt(),B1(n),De!="}")throw Dn("Angle bracket } expected");if(bt(),De!=="")throw Dn("End of file expected");return bt(),delete n.node,delete n.edge,delete n.graph,n}function B1(n){for(;De!==""&&De!="}";)rY(n),De===";"&&bt()}function rY(n){var e=L1(n);if(e){G1(n,e);return}var t=aY(n);if(!t){if(Zn!=Nn.IDENTIFIER)throw Dn("Identifier expected");var i=De;if(bt(),De==="="){if(bt(),Zn!=Nn.IDENTIFIER)throw Dn("Identifier expected");n[i]=De,bt()}else AY(n,i)}}function L1(n){var e=null;if(De==="subgraph"&&(e={},e.type="subgraph",bt(),Zn===Nn.IDENTIFIER&&(e.id=De,bt())),De==="{"){if(bt(),e||(e={}),e.parent=n,e.node=n.node,e.edge=n.edge,e.graph=n.graph,B1(e),De!="}")throw Dn("Angle bracket } expected");bt(),delete e.node,delete e.edge,delete e.graph,delete e.parent,n.subgraphs||(n.subgraphs=[]),n.subgraphs.push(e)}return e}function aY(n){return De==="node"?(bt(),n.node=Ra(),"node"):De==="edge"?(bt(),n.edge=Ra(),"edge"):De==="graph"?(bt(),n.graph=Ra(),"graph"):null}function AY(n,e){var t={id:e},i=Ra();i&&(t.attr=i),Z1(n,t),G1(n,e)}function G1(n,e){for(;De==="->"||De==="--";){var t,i=De;bt();var o=L1(n);if(o)t=o;else{if(Zn!=Nn.IDENTIFIER)throw Dn("Identifier or subgraph expected");t=De,Z1(n,{id:t}),bt()}var r=Ra(),A=P1(n,e,t,i,r);oY(n,A),e=t}}function Ra(){for(var n,e=null,t={dashed:!0,solid:!1,dotted:[1,5]},i={dot:"circle",box:"box",crow:"crow",curve:"curve",icurve:"inv_curve",normal:"triangle",inv:"inv_triangle",diamond:"diamond",tee:"bar",vee:"vee"},o=new Array,r=new Array;De==="[";){for(bt(),e={};De!==""&&De!="]";){if(Zn!=Nn.IDENTIFIER)throw Dn("Attribute name expected");var A=De;if(bt(),De!="=")throw Dn("Equal sign = expected");if(bt(),Zn!=Nn.IDENTIFIER)throw Dn("Attribute value expected");var I=De;A==="style"&&(I=t[I]);var l;A==="arrowhead"&&(l=i[I],A="arrows",I={to:{enabled:!0,type:l}}),A==="arrowtail"&&(l=i[I],A="arrows",I={from:{enabled:!0,type:l}}),o.push({attr:e,name:A,value:I}),r.push(A),bt(),De==","&&bt()}if(De!="]")throw Dn("Bracket ] expected");bt()}if(Mg(r).call(r,"dir")){var c={};for(c.arrows={},n=0;n"&&(I.arrows="to"),I};nt(o=e.edges).call(o,function(A){var I,l;if(A.from instanceof Object?I=A.from.nodes:I={id:A.from},A.to instanceof Object?l=A.to.nodes:l={id:A.to},A.from instanceof Object&&A.from.edges){var c;nt(c=A.from.edges).call(c,function(p){var m=r(p);t.edges.push(m)})}if(CY(I,l,function(p,m){var b=P1(t,p.id,m.id,A.type,A.attr),w=r(b);t.edges.push(w)}),A.to instanceof Object&&A.to.edges){var h;nt(h=A.to.edges).call(h,function(p){var m=r(p);t.edges.push(m)})}})}return e.attr&&(t.options=e.attr),t}function lY(n,e){var t;const i={edges:{inheritColor:!1},nodes:{fixed:!1,parseColor:!1}};e!=null&&(e.fixed!=null&&(i.nodes.fixed=e.fixed),e.parseColor!=null&&(i.nodes.parseColor=e.parseColor),e.inheritColor!=null&&(i.edges.inheritColor=e.inheritColor));const o=n.edges,r=hn(o).call(o,I=>{const l={from:I.source,id:I.id,to:I.target};return I.attributes!=null&&(l.attributes=I.attributes),I.label!=null&&(l.label=I.label),I.attributes!=null&&I.attributes.title!=null&&(l.title=I.attributes.title),I.type==="Directed"&&(l.arrows="to"),I.color&&i.edges.inheritColor===!1&&(l.color=I.color),l});return{nodes:hn(t=n.nodes).call(t,I=>{const l={id:I.id,fixed:i.nodes.fixed&&I.x!=null&&I.y!=null};return I.attributes!=null&&(l.attributes=I.attributes),I.label!=null&&(l.label=I.label),I.size!=null&&(l.size=I.size),I.attributes!=null&&I.attributes.title!=null&&(l.title=I.attributes.title),I.title!=null&&(l.title=I.title),I.x!=null&&(l.x=I.x),I.y!=null&&(l.y=I.y),I.color!=null&&(i.nodes.parseColor===!0?l.color=I.color:l.color={background:I.color,border:I.color,highlight:{background:I.color,border:I.color},hover:{background:I.color,border:I.color}}),l}),edges:r}}var cY=Object.freeze({__proto__:null,cn:{addDescription:"单击空白处放置新节点。",addEdge:"添加连接线",addNode:"添加节点",back:"返回",close:"關閉",createEdgeError:"无法将连接线连接到群集。",del:"删除选定",deleteClusterError:"无法删除群集。",edgeDescription:"单击某个节点并将该连接线拖动到另一个节点以连接它们。",edit:"编辑",editClusterError:"无法编辑群集。",editEdge:"编辑连接线",editEdgeDescription:"单击控制节点并将它们拖到节点上连接。",editNode:"编辑节点"},cs:{addDescription:"Kluknutím do prázdného prostoru můžete přidat nový vrchol.",addEdge:"Přidat hranu",addNode:"Přidat vrchol",back:"Zpět",close:"Zavřít",createEdgeError:"Nelze připojit hranu ke shluku.",del:"Smazat výběr",deleteClusterError:"Nelze mazat shluky.",edgeDescription:"Přetažením z jednoho vrcholu do druhého můžete spojit tyto vrcholy novou hranou.",edit:"Upravit",editClusterError:"Nelze upravovat shluky.",editEdge:"Upravit hranu",editEdgeDescription:"Přetažením kontrolního vrcholu hrany ji můžete připojit k jinému vrcholu.",editNode:"Upravit vrchol"},de:{addDescription:"Klicke auf eine freie Stelle, um einen neuen Knoten zu plazieren.",addEdge:"Kante hinzufügen",addNode:"Knoten hinzufügen",back:"Zurück",close:"Schließen",createEdgeError:"Es ist nicht möglich, Kanten mit Clustern zu verbinden.",del:"Lösche Auswahl",deleteClusterError:"Cluster können nicht gelöscht werden.",edgeDescription:"Klicke auf einen Knoten und ziehe die Kante zu einem anderen Knoten, um diese zu verbinden.",edit:"Editieren",editClusterError:"Cluster können nicht editiert werden.",editEdge:"Kante editieren",editEdgeDescription:"Klicke auf die Verbindungspunkte und ziehe diese auf einen Knoten, um sie zu verbinden.",editNode:"Knoten editieren"},en:{addDescription:"Click in an empty space to place a new node.",addEdge:"Add Edge",addNode:"Add Node",back:"Back",close:"Close",createEdgeError:"Cannot link edges to a cluster.",del:"Delete selected",deleteClusterError:"Clusters cannot be deleted.",edgeDescription:"Click on a node and drag the edge to another node to connect them.",edit:"Edit",editClusterError:"Clusters cannot be edited.",editEdge:"Edit Edge",editEdgeDescription:"Click on the control points and drag them to a node to connect to it.",editNode:"Edit Node"},es:{addDescription:"Haga clic en un lugar vacío para colocar un nuevo nodo.",addEdge:"Añadir arista",addNode:"Añadir nodo",back:"Atrás",close:"Cerrar",createEdgeError:"No se puede conectar una arista a un grupo.",del:"Eliminar selección",deleteClusterError:"No es posible eliminar grupos.",edgeDescription:"Haga clic en un nodo y arrastre la arista hacia otro nodo para conectarlos.",edit:"Editar",editClusterError:"No es posible editar grupos.",editEdge:"Editar arista",editEdgeDescription:"Haga clic en un punto de control y arrastrelo a un nodo para conectarlo.",editNode:"Editar nodo"},fr:{addDescription:"Cliquez dans un endroit vide pour placer un nœud.",addEdge:"Ajouter un lien",addNode:"Ajouter un nœud",back:"Retour",close:"Fermer",createEdgeError:"Impossible de créer un lien vers un cluster.",del:"Effacer la sélection",deleteClusterError:"Les clusters ne peuvent pas être effacés.",edgeDescription:"Cliquez sur un nœud et glissez le lien vers un autre nœud pour les connecter.",edit:"Éditer",editClusterError:"Les clusters ne peuvent pas être édités.",editEdge:"Éditer le lien",editEdgeDescription:"Cliquez sur les points de contrôle et glissez-les pour connecter un nœud.",editNode:"Éditer le nœud"},it:{addDescription:"Clicca per aggiungere un nuovo nodo",addEdge:"Aggiungi un vertice",addNode:"Aggiungi un nodo",back:"Indietro",close:"Chiudere",createEdgeError:"Non si possono collegare vertici ad un cluster",del:"Cancella la selezione",deleteClusterError:"I cluster non possono essere cancellati",edgeDescription:"Clicca su un nodo e trascinalo ad un altro nodo per connetterli.",edit:"Modifica",editClusterError:"I clusters non possono essere modificati.",editEdge:"Modifica il vertice",editEdgeDescription:"Clicca sui Punti di controllo e trascinali ad un nodo per connetterli.",editNode:"Modifica il nodo"},nl:{addDescription:"Klik op een leeg gebied om een nieuwe node te maken.",addEdge:"Link toevoegen",addNode:"Node toevoegen",back:"Terug",close:"Sluiten",createEdgeError:"Kan geen link maken naar een cluster.",del:"Selectie verwijderen",deleteClusterError:"Clusters kunnen niet worden verwijderd.",edgeDescription:"Klik op een node en sleep de link naar een andere node om ze te verbinden.",edit:"Wijzigen",editClusterError:"Clusters kunnen niet worden aangepast.",editEdge:"Link wijzigen",editEdgeDescription:"Klik op de verbindingspunten en sleep ze naar een node om daarmee te verbinden.",editNode:"Node wijzigen"},pt:{addDescription:"Clique em um espaço em branco para adicionar um novo nó",addEdge:"Adicionar aresta",addNode:"Adicionar nó",back:"Voltar",close:"Fechar",createEdgeError:"Não foi possível linkar arestas a um cluster.",del:"Remover selecionado",deleteClusterError:"Clusters não puderam ser removidos.",edgeDescription:"Clique em um nó e arraste a aresta até outro nó para conectá-los",edit:"Editar",editClusterError:"Clusters não puderam ser editados.",editEdge:"Editar aresta",editEdgeDescription:"Clique nos pontos de controle e os arraste para um nó para conectá-los",editNode:"Editar nó"},ru:{addDescription:"Кликните в свободное место, чтобы добавить новый узел.",addEdge:"Добавить ребро",addNode:"Добавить узел",back:"Назад",close:"Закрывать",createEdgeError:"Невозможно соединить ребра в кластер.",del:"Удалить выбранное",deleteClusterError:"Кластеры не могут быть удалены",edgeDescription:"Кликните на узел и протяните ребро к другому узлу, чтобы соединить их.",edit:"Редактировать",editClusterError:"Кластеры недоступны для редактирования.",editEdge:"Редактировать ребро",editEdgeDescription:"Кликните на контрольные точки и перетащите их в узел, чтобы подключиться к нему.",editNode:"Редактировать узел"},uk:{addDescription:"Kлікніть на вільне місце, щоб додати новий вузол.",addEdge:"Додати край",addNode:"Додати вузол",back:"Назад",close:"Закрити",createEdgeError:"Не можливо об'єднати краї в групу.",del:"Видалити обране",deleteClusterError:"Групи не можуть бути видалені.",edgeDescription:"Клікніть на вузол і перетягніть край до іншого вузла, щоб їх з'єднати.",edit:"Редагувати",editClusterError:"Групи недоступні для редагування.",editEdge:"Редагувати край",editEdgeDescription:"Клікніть на контрольні точки і перетягніть їх у вузол, щоб підключитися до нього.",editNode:"Редагувати вузол"}});function dY(n,e){try{const[i,o]=e.split(/[-_ /]/,2),r=i!=null?i.toLowerCase():null,A=o!=null?o.toUpperCase():null;if(r&&A){const I=r+"-"+A;if(Object.prototype.hasOwnProperty.call(n,I))return I;var t;console.warn(y0(t="Unknown variant ".concat(A," of language ")).call(t,r,"."))}if(r){const I=r;if(Object.prototype.hasOwnProperty.call(n,I))return I;console.warn("Unknown language ".concat(r))}return console.warn("Unknown locale ".concat(e,", falling back to English.")),"en"}catch(i){return console.error(i),console.warn("Unexpected error while normalizing locale ".concat(e,", falling back to English.")),"en"}}class uY{constructor(){this.NUM_ITERATIONS=4,this.image=new Image,this.canvas=document.createElement("canvas")}init(){if(this.initialized())return;this.src=this.image.src;const e=this.image.width,t=this.image.height;this.width=e,this.height=t;const i=Math.floor(t/2),o=Math.floor(t/4),r=Math.floor(t/8),A=Math.floor(t/16),I=Math.floor(e/2),l=Math.floor(e/4),c=Math.floor(e/8),h=Math.floor(e/16);this.canvas.width=3*l,this.canvas.height=i,this.coordinates=[[0,0,I,i],[I,0,l,o],[I,o,c,r],[5*c,o,h,A]],this._fillMipMap()}initialized(){return this.coordinates!==void 0}_fillMipMap(){const e=this.canvas.getContext("2d"),t=this.coordinates[0];e.drawImage(this.image,t[0],t[1],t[2],t[3]);for(let i=1;i2){t*=.5;let I=0;for(;t>2&&I=this.NUM_ITERATIONS&&(I=this.NUM_ITERATIONS-1);const l=this.coordinates[I];e.drawImage(this.canvas,l[0],l[1],l[2],l[3],i,o,r,A)}else e.drawImage(this.image,i,o,r,A)}}class hY{constructor(e){this.images={},this.imageBroken={},this.callback=e}_tryloadBrokenUrl(e,t,i){if(!(e===void 0||i===void 0)){if(t===void 0){console.warn("No broken url image defined");return}i.image.onerror=()=>{console.error("Could not load brokenImage:",t)},i.image.src=t}}_redrawWithImage(e){this.callback&&this.callback(e)}load(e,t){const i=this.images[e];if(i)return i;const o=new uY;return this.images[e]=o,o.image.onload=()=>{this._fixImageCoordinates(o.image),o.init(),this._redrawWithImage(o)},o.image.onerror=()=>{console.error("Could not load image:",e),this._tryloadBrokenUrl(e,t,o)},o.image.src=e,o}_fixImageCoordinates(e){e.width===0&&(document.body.appendChild(e),e.width=e.offsetWidth,e.height=e.offsetHeight,document.body.removeChild(e))}}var U1={exports:{}},fY=rt,pY=fY(function(){if(typeof ArrayBuffer=="function"){var n=new ArrayBuffer(8);Object.isExtensible(n)&&Object.defineProperty(n,"a",{value:8})}}),mY=rt,vY=En,bY=Qi,Y1=pY,WC=Object.isExtensible,yY=mY(function(){WC(1)}),wY=yY||Y1?function(e){return!vY(e)||Y1&&bY(e)==="ArrayBuffer"?!1:WC?WC(e):!0}:WC,xY=rt,H1=!xY(function(){return Object.isExtensible(Object.preventExtensions({}))}),EY=ke,SY=at,TY=ea,OY=En,ou=rn,NY=Hn.f,K1=ra,DY=mC,su=wY,MY=rC,RY=H1,W1=!1,ig=MY("meta"),kY=0,ru=function(n){NY(n,ig,{value:{objectID:"O"+kY++,weakData:{}}})},zY=function(n,e){if(!OY(n))return typeof n=="symbol"?n:(typeof n=="string"?"S":"P")+n;if(!ou(n,ig)){if(!su(n))return"F";if(!e)return"E";ru(n)}return n[ig].objectID},_Y=function(n,e){if(!ou(n,ig)){if(!su(n))return!0;if(!e)return!1;ru(n)}return n[ig].weakData},jY=function(n){return RY&&W1&&su(n)&&!ou(n,ig)&&ru(n),n},ZY=function(){PY.enable=function(){},W1=!0;var n=K1.f,e=SY([].splice),t={};t[ig]=1,n(t).length&&(K1.f=function(i){for(var o=n(i),r=0,A=o.length;rp;p++)if(b=S(n[p]),b&&J1(tw,b))return b;return new XC(!1)}c=CH(n,h)}for(w=r?n.next:c.next;!(O=oH(w,c)).done;){try{b=S(O.value)}catch(E){ew(c,"throw",E)}if(typeof b=="object"&&b&&J1(tw,b))return b}return new XC(!1)},cH=Zt,dH=TypeError,Au=function(n,e){if(cH(e,n))return n;throw new dH("Incorrect invocation")},uH=ke,hH=jt,fH=QC,pH=rt,mH=ps,vH=au,bH=Au,yH=un,wH=En,xH=ds,EH=ys,SH=Hn.f,TH=Ng.forEach,OH=sn,nw=wo,NH=nw.set,DH=nw.getterFor,Cu=function(n,e,t){var i=n.indexOf("Map")!==-1,o=n.indexOf("Weak")!==-1,r=i?"set":"add",A=hH[n],I=A&&A.prototype,l={},c;if(!OH||!yH(A)||!(o||I.forEach&&!pH(function(){new A().entries().next()})))c=t.getConstructor(e,n,i,r),fH.enable();else{c=e(function(m,b){NH(bH(m,h),{type:n,collection:new A}),xH(b)||vH(b,m[r],{that:m,AS_ENTRIES:i})});var h=c.prototype,p=DH(n);TH(["add","clear","delete","forEach","get","has","set","keys","values","entries"],function(m){var b=m==="add"||m==="set";m in I&&!(o&&m==="clear")&&mH(h,m,function(w,O){var x=p(this).collection;if(!b&&o&&!wH(w))return m==="get"?void 0:!1;var S=x[m](w===0?0:w,O);return b?this:S})}),o||SH(h,"size",{configurable:!0,get:function(){return p(this).collection.size}})}return EH(c,n,!1,!0),l[n]=c,uH({global:!0,forced:!0},l),o||t.setStrong(c,n,i),c},MH=aa,Iu=function(n,e,t){for(var i in e)t&&t.unsafe&&n[i]?n[i]=e[i]:MH(n,i,e[i],t);return n},RH=bi,kH=qc,zH=Ut,_H=sn,iw=zH("species"),jH=function(n){var e=RH(n);_H&&e&&!e[iw]&&kH(e,iw,{configurable:!0,get:function(){return this}})},ZH=sa,PH=qc,gw=Iu,BH=qr,LH=Au,GH=ds,FH=au,VH=md,$C=vd,UH=jH,ka=sn,ow=QC.fastKey,sw=wo,rw=sw.set,lu=sw.getterFor,aw={getConstructor:function(n,e,t,i){var o=n(function(c,h){LH(c,r),rw(c,{type:e,index:ZH(null),first:void 0,last:void 0,size:0}),ka||(c.size=0),GH(h)||FH(h,c[i],{that:c,AS_ENTRIES:t})}),r=o.prototype,A=lu(e),I=function(c,h,p){var m=A(c),b=l(c,h),w,O;return b?b.value=p:(m.last=b={index:O=ow(h,!0),key:h,value:p,previous:w=m.last,next:void 0,removed:!1},m.first||(m.first=b),w&&(w.next=b),ka?m.size++:c.size++,O!=="F"&&(m.index[O]=b)),c},l=function(c,h){var p=A(c),m=ow(h),b;if(m!=="F")return p.index[m];for(b=p.first;b;b=b.next)if(b.key===h)return b};return gw(r,{clear:function(){for(var h=this,p=A(h),m=p.index,b=p.first;b;)b.removed=!0,b.previous&&(b.previous=b.previous.next=void 0),delete m[b.index],b=b.next;p.first=p.last=void 0,ka?p.size=0:h.size=0},delete:function(c){var h=this,p=A(h),m=l(h,c);if(m){var b=m.next,w=m.previous;delete p.index[m.index],m.removed=!0,w&&(w.next=b),b&&(b.previous=w),p.first===m&&(p.first=b),p.last===m&&(p.last=w),ka?p.size--:h.size--}return!!m},forEach:function(h){for(var p=A(this),m=BH(h,arguments.length>1?arguments[1]:void 0),b;b=b?b.next:p.first;)for(m(b.value,b.key,this);b&&b.removed;)b=b.previous},has:function(h){return!!l(this,h)}}),gw(r,t?{get:function(h){var p=l(this,h);return p&&p.value},set:function(h,p){return I(this,h===0?0:h,p)}}:{add:function(h){return I(this,h=h===0?0:h,h)}}),ka&&PH(r,"size",{configurable:!0,get:function(){return A(this).size}}),o},setStrong:function(n,e,t){var i=e+" Iterator",o=lu(e),r=lu(i);VH(n,e,function(A,I){rw(this,{type:i,target:A,state:o(A),kind:I,last:void 0})},function(){for(var A=r(this),I=A.kind,l=A.last;l&&l.removed;)l=l.previous;return!A.target||!(A.last=l=l?l.next:A.state.first)?(A.target=void 0,$C(void 0,!0)):$C(I==="keys"?l.key:I==="values"?l.value:[l.key,l.value],!1)},t?"entries":"values",!t,!0),UH(e)}},YH=Cu,HH=aw;YH("Map",function(n){return function(){return n(this,arguments.length?arguments[0]:void 0)}},HH);var cu=at,KH=IC,WH=Ri,QH=Hr,XH=cu("".charAt),Aw=cu("".charCodeAt),$H=cu("".slice),qH=function(n){return function(e,t){var i=WH(QH(e)),o=KH(t),r=i.length,A,I;return o<0||o>=r?n?"":void 0:(A=Aw(i,o),A<55296||A>56319||o+1===r||(I=Aw(i,o+1))<56320||I>57343?n?XH(i,o):A:n?$H(i,o,o+2):(A-55296<<10)+(I-56320)+65536)}},JH={charAt:qH(!0)},e7=JH.charAt,t7=Ri,Cw=wo,n7=md,Iw=vd,lw="String Iterator",i7=Cw.set,g7=Cw.getterFor(lw);n7(String,"String",function(n){i7(this,{type:lw,string:t7(n),index:0})},function(){var e=g7(this),t=e.string,i=e.index,o;return i>=t.length?Iw(void 0,!0):(o=e7(t,i),e.index+=o.length,Iw(o,!1))});var o7=Ct,s7=o7.Map,r7=s7,a7=r7,A7=a7,za=Ne(A7);class C7{constructor(){this.clear(),this._defaultIndex=0,this._groupIndex=0,this._defaultGroups=[{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},{border:"#FFA500",background:"#FFFF00",highlight:{border:"#FFA500",background:"#FFFFA3"},hover:{border:"#FFA500",background:"#FFFFA3"}},{border:"#FA0A10",background:"#FB7E81",highlight:{border:"#FA0A10",background:"#FFAFB1"},hover:{border:"#FA0A10",background:"#FFAFB1"}},{border:"#41A906",background:"#7BE141",highlight:{border:"#41A906",background:"#A1EC76"},hover:{border:"#41A906",background:"#A1EC76"}},{border:"#E129F0",background:"#EB7DF4",highlight:{border:"#E129F0",background:"#F0B3F5"},hover:{border:"#E129F0",background:"#F0B3F5"}},{border:"#7C29F0",background:"#AD85E4",highlight:{border:"#7C29F0",background:"#D3BDF0"},hover:{border:"#7C29F0",background:"#D3BDF0"}},{border:"#C37F00",background:"#FFA807",highlight:{border:"#C37F00",background:"#FFCA66"},hover:{border:"#C37F00",background:"#FFCA66"}},{border:"#4220FB",background:"#6E6EFD",highlight:{border:"#4220FB",background:"#9B9BFD"},hover:{border:"#4220FB",background:"#9B9BFD"}},{border:"#FD5A77",background:"#FFC0CB",highlight:{border:"#FD5A77",background:"#FFD1D9"},hover:{border:"#FD5A77",background:"#FFD1D9"}},{border:"#4AD63A",background:"#C2FABC",highlight:{border:"#4AD63A",background:"#E6FFE3"},hover:{border:"#4AD63A",background:"#E6FFE3"}},{border:"#990000",background:"#EE0000",highlight:{border:"#BB0000",background:"#FF3333"},hover:{border:"#BB0000",background:"#FF3333"}},{border:"#FF6000",background:"#FF6000",highlight:{border:"#FF6000",background:"#FF6000"},hover:{border:"#FF6000",background:"#FF6000"}},{border:"#97C2FC",background:"#2B7CE9",highlight:{border:"#D2E5FF",background:"#2B7CE9"},hover:{border:"#D2E5FF",background:"#2B7CE9"}},{border:"#399605",background:"#255C03",highlight:{border:"#399605",background:"#255C03"},hover:{border:"#399605",background:"#255C03"}},{border:"#B70054",background:"#FF007E",highlight:{border:"#B70054",background:"#FF007E"},hover:{border:"#B70054",background:"#FF007E"}},{border:"#AD85E4",background:"#7C29F0",highlight:{border:"#D3BDF0",background:"#7C29F0"},hover:{border:"#D3BDF0",background:"#7C29F0"}},{border:"#4557FA",background:"#000EA1",highlight:{border:"#6E6EFD",background:"#000EA1"},hover:{border:"#6E6EFD",background:"#000EA1"}},{border:"#FFC0CB",background:"#FD5A77",highlight:{border:"#FFD1D9",background:"#FD5A77"},hover:{border:"#FFD1D9",background:"#FD5A77"}},{border:"#C2FABC",background:"#74D66A",highlight:{border:"#E6FFE3",background:"#74D66A"},hover:{border:"#E6FFE3",background:"#74D66A"}},{border:"#EE0000",background:"#990000",highlight:{border:"#FF3333",background:"#BB0000"},hover:{border:"#FF3333",background:"#BB0000"}}],this.options={},this.defaultOptions={useDefaultGroups:!0},Yt(this.options,this.defaultOptions)}setOptions(e){const t=["useDefaultGroups"];if(e!==void 0){for(const i in e)if(Object.prototype.hasOwnProperty.call(e,i)&<(t).call(t,i)===-1){const o=e[i];this.add(i,o)}}}clear(){this._groups=new za,this._groupNames=[]}get(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,i=this._groups.get(e);if(i===void 0&&t)if(this.options.useDefaultGroups===!1&&this._groupNames.length>0){const o=this._groupIndex%this._groupNames.length;++this._groupIndex,i={},i.color=this._groups.get(this._groupNames[o]),this._groups.set(e,i)}else{const o=this._defaultIndex%this._defaultGroups.length;this._defaultIndex++,i={},i.color=this._defaultGroups[o],this._groups.set(e,i)}return i}add(e,t){return this._groups.has(e)||this._groupNames.push(e),this._groups.set(e,t),t}}var I7=ke;I7({target:"Number",stat:!0},{isNaN:function(e){return e!==e}});var l7=Ct,c7=l7.Number.isNaN,d7=c7,u7=d7,h7=u7,du=Ne(h7),f7=jt,p7=f7.isFinite,m7=Number.isFinite||function(e){return typeof e=="number"&&p7(e)},v7=ke,b7=m7;v7({target:"Number",stat:!0},{isFinite:b7});var y7=Ct,w7=y7.Number.isFinite,x7=w7,E7=x7,S7=E7,jo=Ne(S7),T7=ke,O7=Ng.some,N7=Ts,D7=N7("some");T7({target:"Array",proto:!0,forced:!D7},{some:function(e){return O7(this,e,arguments.length>1?arguments[1]:void 0)}});var M7=Xt,R7=M7("Array").some,k7=Zt,z7=R7,uu=Array.prototype,_7=function(n){var e=n.some;return n===uu||k7(uu,n)&&e===uu.some?z7:e},j7=_7,Z7=j7,P7=Z7,cw=Ne(P7),B7=Ct,L7=B7.Object.getOwnPropertySymbols,G7=L7,F7=G7,V7=F7,Bi=Ne(V7),dw={exports:{}},U7=ke,Y7=rt,H7=vi,uw=Vr.f,hw=sn,K7=!hw||Y7(function(){uw(1)});U7({target:"Object",stat:!0,forced:K7,sham:!hw},{getOwnPropertyDescriptor:function(e,t){return uw(H7(e),t)}});var W7=Ct,fw=W7.Object,Q7=dw.exports=function(e,t){return fw.getOwnPropertyDescriptor(e,t)};fw.getOwnPropertyDescriptor.sham&&(Q7.sham=!0);var X7=dw.exports,$7=X7,q7=$7,J7=q7,Li=Ne(J7),eK=ke,tK=sn,nK=I0,iK=vi,gK=Vr,oK=ia;eK({target:"Object",stat:!0,sham:!tK},{getOwnPropertyDescriptors:function(e){for(var t=iK(e),i=gK.f,o=nK(t),r={},A=0,I,l;o.length>A;)l=i(t,I=o[A++]),l!==void 0&&oK(r,I,l);return r}});var sK=Ct,rK=sK.Object.getOwnPropertyDescriptors,aK=rK,AK=aK,CK=AK,Gi=Ne(CK),pw={exports:{}},IK=ke,lK=sn,mw=uC.f;IK({target:"Object",stat:!0,forced:Object.defineProperties!==mw,sham:!lK},{defineProperties:mw});var cK=Ct,vw=cK.Object,dK=pw.exports=function(e,t){return vw.defineProperties(e,t)};vw.defineProperties.sham&&(dK.sham=!0);var uK=pw.exports,hK=uK,fK=hK,pK=fK,_a=Ne(pK),bw={exports:{}},mK=ke,vK=sn,yw=Hn.f;mK({target:"Object",stat:!0,forced:Object.defineProperty!==yw,sham:!vK},{defineProperty:yw});var bK=Ct,ww=bK.Object,yK=bw.exports=function(e,t,i){return ww.defineProperty(e,t,i)};ww.defineProperty.sham&&(yK.sham=!0);var wK=bw.exports,xK=wK,xw=xK,EK=xw,SK=EK,TK=SK,OK=TK,NK=OK,DK=Ne(NK),MK=Ut,RK=Hn.f,Ew=MK("metadata"),Sw=Function.prototype;Sw[Ew]===void 0&&RK(Sw,Ew,{value:null});var kK=Pt;kK("asyncDispose");var zK=Pt;zK("dispose");var _K=Pt;_K("metadata");var jK=a0,ZK=jK,PK=bi,BK=at,hu=PK("Symbol"),LK=hu.keyFor,GK=BK(hu.prototype.valueOf),Tw=hu.isRegisteredSymbol||function(e){try{return LK(GK(e))!==void 0}catch{return!1}},FK=ke,VK=Tw;FK({target:"Symbol",stat:!0},{isRegisteredSymbol:VK});for(var UK=hs,Ow=bi,YK=at,HK=Qr,KK=Ut,qC=Ow("Symbol"),Nw=qC.isWellKnownSymbol,Dw=Ow("Object","getOwnPropertyNames"),WK=YK(qC.prototype.valueOf),Mw=UK("wks"),fu=0,Rw=Dw(qC),QK=Rw.length;fu=0:I>l;l+=c)l in A&&(o=t(o,A[l],l,r));return o}},ZW={left:jW(!1)},PW=jt,BW=Qi,LW=BW(PW.process)==="process",GW=ke,FW=ZW.left,VW=Ts,jw=Wr,UW=LW,YW=!UW&&jw>79&&jw<83,HW=YW||!VW("reduce");GW({target:"Array",proto:!0,forced:HW},{reduce:function(e){var t=arguments.length;return FW(this,e,t,t>1?arguments[1]:void 0)}});var KW=Xt,WW=KW("Array").reduce,QW=Zt,XW=WW,pu=Array.prototype,$W=function(n){var e=n.reduce;return n===pu||QW(pu,n)&&e===pu.reduce?XW:e},qW=$W,JW=qW,eQ=JW,mu=Ne(eQ),tQ=Og,nQ=ii,iQ=Yc,gQ=qr,Zw=function(n,e,t,i,o,r,A,I){for(var l=o,c=0,h=A?gQ(A,I):!1,p,m;c0&&tQ(p)?(m=nQ(p),l=Zw(n,e,p,m,l,r-1)-1):(iQ(l+1),n[l]=p),l++),c++;return l},oQ=Zw,sQ=ke,rQ=oQ,aQ=bo,AQ=Yn,CQ=ii,IQ=dC;sQ({target:"Array",proto:!0},{flatMap:function(e){var t=AQ(this),i=CQ(t),o;return aQ(e),o=IQ(t,0),o.length=rQ(o,t,t,i,0,1,e,arguments.length>1?arguments[1]:void 0),o}});var lQ=Xt;lQ("Array").flatMap;var cQ=_w,Ls=Ne(cQ),dQ=Cu,uQ=aw;dQ("Set",function(n){return function(){return n(this,arguments.length?arguments[0]:void 0)}},uQ);var hQ=Ct,fQ=hQ.Set,pQ=fQ,mQ=pQ,vQ=mQ,Ti=Ne(vQ),bQ=$1,yQ=bQ,wQ=yQ,xQ=wQ,EQ=xQ,SQ=EQ,TQ=SQ,OQ=TQ,NQ=OQ,DQ=NQ,vu=Ne(DQ),Pw=qb,MQ=Math.floor,bu=function(n,e){var t=n.length,i=MQ(t/2);return t<8?RQ(n,e):kQ(n,bu(Pw(n,0,i),e),bu(Pw(n,i),e),e)},RQ=function(n,e){for(var t=n.length,i=1,o,r;i0;)n[r]=n[--r];r!==i++&&(n[r]=o)}return n},kQ=function(n,e,t,i){for(var o=e.length,r=t.length,A=0,I=0;A3)){if(KQ)return!0;if(Hw)return Hw<603;var n="",e,t,i,o;for(e=65;e<76;e++){switch(t=String.fromCharCode(e),e){case 66:case 69:case 70:case 72:i=3;break;case 68:case 71:i=4;break;default:i=2}for(o=0;o<47;o++)Bg.push({k:t+o,v:i})}for(Bg.sort(function(r,A){return A.v-r.v}),o=0;oVw(t)?1:-1}};GQ({target:"Array",proto:!0,forced:qQ},{sort:function(e){e!==void 0&&FQ(e);var t=VQ(this);if(Ww)return e===void 0?Kw(t):Kw(t,e);var i=[],o=Fw(t),r,A;for(A=0;A{i.flush()};const o=[{name:"flush",original:void 0}];if(t&&t.replace)for(let r=0;rthis.max&&this.flush(),this._timeout!=null&&(clearTimeout(this._timeout),this._timeout=null),this.queue.length>0&&typeof this.delay=="number"&&(this._timeout=_i(()=>{this.flush()},this.delay))}flush(){var e,t;nt(e=zi(t=this._queue).call(t,0)).call(e,i=>{i.fn.apply(i.context||i.fn,i.args||[])})}}class nI{constructor(){Jt(this,"_subscribers",{"*":[],add:[],remove:[],update:[]}),Jt(this,"subscribe",nI.prototype.on),Jt(this,"unsubscribe",nI.prototype.off)}_trigger(e,t,i){var o;if(e==="*")throw new Error("Cannot trigger event *");nt(o=[...this._subscribers[e],...this._subscribers["*"]]).call(o,r=>{r(e,t,i??null)})}on(e,t){typeof t=="function"&&this._subscribers[e].push(t)}off(e,t){var i;this._subscribers[e]=$t(i=this._subscribers[e]).call(i,o=>o!==t)}}class Zo{constructor(e){Jt(this,"_pairs",void 0),this._pairs=e}*[Ls](){for(const[e,t]of this._pairs)yield[e,t]}*entries(){for(const[e,t]of this._pairs)yield[e,t]}*keys(){for(const[e]of this._pairs)yield e}*values(){for(const[,e]of this._pairs)yield e}toIdArray(){var e;return hn(e=[...this._pairs]).call(e,t=>t[0])}toItemArray(){var e;return hn(e=[...this._pairs]).call(e,t=>t[1])}toEntryArray(){return[...this._pairs]}toObjectMap(){const e=Rg(null);for(const[t,i]of this._pairs)e[t]=i;return e}toMap(){return new za(this._pairs)}toIdSet(){return new Ti(this.toIdArray())}toItemSet(){return new Ti(this.toItemArray())}cache(){return new Zo([...this._pairs])}distinct(e){const t=new Ti;for(const[i,o]of this._pairs)t.add(e(o,i));return t}filter(e){const t=this._pairs;return new Zo({*[Ls](){for(const[i,o]of t)e(o,i)&&(yield[i,o])}})}forEach(e){for(const[t,i]of this._pairs)e(i,t)}map(e){const t=this._pairs;return new Zo({*[Ls](){for(const[i,o]of t)yield[i,e(o,i)]}})}max(e){const t=vu(this._pairs);let i=t.next();if(i.done)return null;let o=i.value[1],r=e(i.value[1],i.value[0]);for(;!(i=t.next()).done;){const[A,I]=i.value,l=e(I,A);l>r&&(r=l,o=I)}return o}min(e){const t=vu(this._pairs);let i=t.next();if(i.done)return null;let o=i.value[1],r=e(i.value[1],i.value[0]);for(;!(i=t.next()).done;){const[A,I]=i.value,l=e(I,A);l{var t;return vu(gg(t=[...this._pairs]).call(t,(i,o)=>{let[r,A]=i,[I,l]=o;return e(A,l,r,I)}))}})}}function HX(n,e){return n[e]==null&&(n[e]=Fs()),n}class Vs extends nI{get idProp(){return this._idProp}constructor(e,t){super(),Jt(this,"flush",void 0),Jt(this,"length",void 0),Jt(this,"_options",void 0),Jt(this,"_data",void 0),Jt(this,"_idProp",void 0),Jt(this,"_queue",null),e&&!gt(e)&&(t=e,e=[]),this._options=t||{},this._data=new za,this.length=0,this._idProp=this._options.fieldId||"id",e&&e.length&&this.add(e),this.setOptions(t)}setOptions(e){e&&e.queue!==void 0&&(e.queue===!1?this._queue&&(this._queue.destroy(),this._queue=null):(this._queue||(this._queue=Tu.extend(this,{replace:["add","update","remove"]})),e.queue&&typeof e.queue=="object"&&this._queue.setOptions(e.queue)))}add(e,t){const i=[];let o;if(gt(e)){const r=hn(e).call(e,A=>A[this._idProp]);if(cw(r).call(r,A=>this._data.has(A)))throw new Error("A duplicate id was found in the parameter array.");for(let A=0,I=e.length;A{const h=c[I];if(h!=null&&this._data.has(h)){const p=c,m=Yt({},this._data.get(h)),b=this._updateItem(p);o.push(b),A.push(p),r.push(m)}else{const p=this._addItem(c);i.push(p)}};if(gt(e))for(let c=0,h=e.length;c{const A=this._data.get(r[this._idProp]);if(A==null)throw new Error("Updating non-existent items is not allowed.");return{oldData:A,update:r}})).call(i,r=>{let{oldData:A,update:I}=r;const l=A[this._idProp],c=MU(A,I);return this._data.set(l,c),{id:l,oldData:A,updatedData:c}});if(o.length){const r={items:hn(o).call(o,A=>A.id),oldData:hn(o).call(o,A=>A.oldData),data:hn(o).call(o,A=>A.updatedData)};return this._trigger("update",r,t),r.items}else return[]}get(e,t){let i,o,r;qw(e)?(i=e,r=t):gt(e)?(o=e,r=t):r=e;const A=r&&r.returnType==="Object"?"Object":"Array",I=r&&$t(r),l=[];let c,h,p;if(i!=null)c=this._data.get(i),c&&I&&!I(c)&&(c=void 0);else if(o!=null)for(let w=0,O=o.length;w(o[r]=e[r],o),{})}_sort(e,t){if(typeof t=="string"){const i=t;gg(e).call(e,(o,r)=>{const A=o[i],I=r[i];return A>I?1:Ai)&&(t=r,i=A)}return t||null}min(e){let t=null,i=null;for(const r of eI(o=this._data).call(o)){var o;const A=r[e];typeof A=="number"&&(i==null||Ae.x&&n.tope.y}function gI(n){return typeof n=="string"&&n!==""}function ox(n,e,t,i){let o=i.x,r=i.y;if(typeof i.distanceToBorder=="function"){const A=i.distanceToBorder(n,e),I=Math.sin(e)*A,l=Math.cos(e)*A;l===A?(o+=A,r=i.y):I===A?(o=i.x,r-=A):(o+=l,r-=I)}else i.shape.width>i.shape.height?(o=i.x+i.shape.width*.5,r=i.y-t):(o=i.x+t,r=i.y-i.shape.height*.5);return{x:o,y:r}}class m${constructor(e){this.measureText=e,this.current=0,this.width=0,this.height=0,this.lines=[]}_add(e,t){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"normal";this.lines[e]===void 0&&(this.lines[e]={width:0,height:0,blocks:[]});let o=t;(t===void 0||t==="")&&(o=" ");const r=this.measureText(o,i),A=Yt({},eI(r));A.text=t,A.width=r.width,A.mod=i,(t===void 0||t==="")&&(A.width=0),this.lines[e].blocks.push(A),this.lines[e].width+=A.width}curWidth(){const e=this.lines[this.current];return e===void 0?0:e.width}append(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"normal";this._add(this.current,e,t)}newLine(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"normal";this._add(this.current,e,t),this.current++}determineLineHeights(){for(let e=0;ee&&(e=o.width),t+=o.height}this.width=e,this.height=t}removeEmptyBlocks(){const e=[];for(let t=0;t"://,""://,""://,"":/<\/b>/,"":/<\/i>/,"":/<\/code>/,"*":/\*/,_:/_/,"`":/`/,afterBold:/[^*]/,afterItal:/[^_]/,afterMono:/[^`]/};class sx{constructor(e){this.text=e,this.bold=!1,this.ital=!1,this.mono=!1,this.spacing=!1,this.position=0,this.buffer="",this.modStack=[],this.blocks=[]}mod(){return this.modStack.length===0?"normal":this.modStack[0]}modName(){if(this.modStack.length===0)return"normal";if(this.modStack[0]==="mono")return"mono";if(this.bold&&this.ital)return"boldital";if(this.bold)return"bold";if(this.ital)return"ital"}emitBlock(){this.spacing&&(this.add(" "),this.spacing=!1),this.buffer.length>0&&(this.blocks.push({text:this.buffer,mod:this.modName()}),this.buffer="")}add(e){e===" "&&(this.spacing=!0),this.spacing&&(this.buffer+=" ",this.spacing=!1),e!=" "&&(this.buffer+=e)}parseWS(e){return/[ \t]/.test(e)?(this.mono?this.add(e):this.spacing=!0,!0):!1}setTag(e){this.emitBlock(),this[e]=!0,this.modStack.unshift(e)}unsetTag(e){this.emitBlock(),this[e]=!1,this.modStack.shift()}parseStartTag(e,t){return!this.mono&&!this[e]&&this.match(t)?(this.setTag(e),!0):!1}match(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;const[i,o]=this.prepareRegExp(e),r=i.test(this.text.substr(this.position,o));return r&&t&&(this.position+=o-1),r}parseEndTag(e,t,i){let o=this.mod()===e;return e==="mono"?o=o&&this.mono:o=o&&!this.mono,o&&this.match(t)?(i!==void 0?(this.position===this.text.length-1||this.match(i,!1))&&this.unsetTag(e):this.unsetTag(e),!0):!1}replace(e,t){return this.match(e)?(this.add(t),this.position+=length-1,!0):!1}prepareRegExp(e){let t,i;if(e instanceof RegExp)i=e,t=1;else{const o=v$[e];o!==void 0?i=o:i=new RegExp(e),t=e.length}return[i,t]}}class b${constructor(e,t,i,o){this.ctx=e,this.parent=t,this.selected=i,this.hover=o;const r=(A,I)=>{if(A===void 0)return 0;const l=this.parent.getFormattingValues(e,i,o,I);let c=0;return A!==""&&(c=this.ctx.measureText(A).width),{width:c,values:l}};this.lines=new m$(r)}process(e){if(!gI(e))return this.lines.finalize();const t=this.parent.fontOptions;e=e.replace(/\r\n/g,` +`}static print(e){return ks(e).replace(/(")|(\[)|(\])|(,"__type__")/g,"").replace(/(,)/g,", ")}static levenshteinDistance(e,t){if(e.length===0)return t.length;if(t.length===0)return e.length;const i=[];let o;for(o=0;o<=t.length;o++)i[o]=[o];let r;for(r=0;r<=e.length;r++)i[0][r]=r;for(o=1;o<=t.length;o++)for(r=1;r<=e.length;r++)t.charAt(o-1)==e.charAt(r-1)?i[o][r]=i[o-1][r-1]:i[o][r]=Math.min(i[o-1][r-1]+1,Math.min(i[o][r-1]+1,i[o-1][r]+1));return i[t.length][e.length]}};const MY=Zi,RY=NY,Ls=iu,zY=DY,K1=au,_Y=kY;function jY(n){return Zg=n,LY()}var W1={fontsize:"font.size",fontcolor:"font.color",labelfontcolor:"font.color",fontname:"font.face",color:["color.border","color.background"],fillcolor:"color.background",tooltip:"title",labeltooltip:"title"},Au=zg(W1);Au.color="color.color",Au.style="dashes";var Dn={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},Q1={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},Zg="",Gs=0,Ye="",ke="",Bn=Dn.NULL;function PY(){Gs=0,Ye=Zg.charAt(0)}function ln(){Gs++,Ye=Zg.charAt(Gs)}function Fs(){return Zg.charAt(Gs+1)}function X1(n){var e=n.charCodeAt(0);return e<47?e===35||e===46:e<59?e>47:e<91?e>64:e<96?e===95:e<123?e>96:!1}function Lg(n,e){if(n||(n={}),e)for(var t in e)e.hasOwnProperty(t)&&(n[t]=e[t]);return n}function BY(n,e,t){for(var i=e.split("."),o=n;i.length;){var r=i.shift();i.length?(o[r]||(o[r]={}),o=o[r]):o[r]=t}}function $1(n,e){for(var t,i,o=null,r=[n],A=n;A.parent;)r.push(A.parent),A=A.parent;if(A.nodes){for(t=0,i=A.nodes.length;t=0;t--){var I,l=r[t];l.nodes||(l.nodes=[]),lt(I=l.nodes).call(I,o)===-1&&l.nodes.push(o)}e.attr&&(o.attr=Lg(o.attr,e.attr))}function ZY(n,e){if(n.edges||(n.edges=[]),n.edges.push(e),n.edge){var t=Lg({},n.edge);e.attr=Lg(t,e.attr)}}function q1(n,e,t,i,o){var r={from:e,to:t,type:i};return n.edge&&(r.attr=Lg({},n.edge)),r.attr=Lg(r.attr||{},o),o!=null&&o.hasOwnProperty("arrows")&&o.arrows!=null&&(r.arrows={to:{enabled:!0,type:o.arrows.type}},o.arrows=null),r}function bt(){for(Bn=Dn.NULL,ke="";Ye===" "||Ye===" "||Ye===` +`||Ye==="\r";)ln();do{var n=!1;if(Ye==="#"){for(var e=Gs-1;Zg.charAt(e)===" "||Zg.charAt(e)===" ";)e--;if(Zg.charAt(e)===` +`||Zg.charAt(e)===""){for(;Ye!=""&&Ye!=` +`;)ln();n=!0}}if(Ye==="/"&&Fs()==="/"){for(;Ye!=""&&Ye!=` +`;)ln();n=!0}if(Ye==="/"&&Fs()==="*"){for(;Ye!="";)if(Ye==="*"&&Fs()==="/"){ln(),ln();break}else ln();n=!0}for(;Ye===" "||Ye===" "||Ye===` +`||Ye==="\r";)ln()}while(n);if(Ye===""){Bn=Dn.DELIMITER;return}var t=Ye+Fs();if(Q1[t]){Bn=Dn.DELIMITER,ke=t,ln(),ln();return}if(Q1[Ye]){Bn=Dn.DELIMITER,ke=Ye,ln();return}if(X1(Ye)||Ye==="-"){for(ke+=Ye,ln();X1(Ye);)ke+=Ye,ln();ke==="false"?ke=!1:ke==="true"?ke=!0:isNaN(Number(ke))||(ke=Number(ke)),Bn=Dn.IDENTIFIER;return}if(Ye==='"'){for(ln();Ye!=""&&(Ye!='"'||Ye==='"'&&Fs()==='"');)Ye==='"'?(ke+=Ye,ln()):Ye==="\\"&&Fs()==="n"?(ke+=` +`,ln()):ke+=Ye,ln();if(Ye!='"')throw kn('End of string " expected');ln(),Bn=Dn.IDENTIFIER;return}for(Bn=Dn.UNKNOWN;Ye!="";)ke+=Ye,ln();throw new SyntaxError('Syntax error in part "'+nw(ke,30)+'"')}function LY(){var n={};if(PY(),bt(),ke==="strict"&&(n.strict=!0,bt()),(ke==="graph"||ke==="digraph")&&(n.type=ke,bt()),Bn===Dn.IDENTIFIER&&(n.id=ke,bt()),ke!="{")throw kn("Angle bracket { expected");if(bt(),J1(n),ke!="}")throw kn("Angle bracket } expected");if(bt(),ke!=="")throw kn("End of file expected");return bt(),delete n.node,delete n.edge,delete n.graph,n}function J1(n){for(;ke!==""&&ke!="}";)GY(n),ke===";"&&bt()}function GY(n){var e=ew(n);if(e){tw(n,e);return}var t=FY(n);if(!t){if(Bn!=Dn.IDENTIFIER)throw kn("Identifier expected");var i=ke;if(bt(),ke==="="){if(bt(),Bn!=Dn.IDENTIFIER)throw kn("Identifier expected");n[i]=ke,bt()}else VY(n,i)}}function ew(n){var e=null;if(ke==="subgraph"&&(e={},e.type="subgraph",bt(),Bn===Dn.IDENTIFIER&&(e.id=ke,bt())),ke==="{"){if(bt(),e||(e={}),e.parent=n,e.node=n.node,e.edge=n.edge,e.graph=n.graph,J1(e),ke!="}")throw kn("Angle bracket } expected");bt(),delete e.node,delete e.edge,delete e.graph,delete e.parent,n.subgraphs||(n.subgraphs=[]),n.subgraphs.push(e)}return e}function FY(n){return ke==="node"?(bt(),n.node=Ba(),"node"):ke==="edge"?(bt(),n.edge=Ba(),"edge"):ke==="graph"?(bt(),n.graph=Ba(),"graph"):null}function VY(n,e){var t={id:e},i=Ba();i&&(t.attr=i),$1(n,t),tw(n,e)}function tw(n,e){for(;ke==="->"||ke==="--";){var t,i=ke;bt();var o=ew(n);if(o)t=o;else{if(Bn!=Dn.IDENTIFIER)throw kn("Identifier or subgraph expected");t=ke,$1(n,{id:t}),bt()}var r=Ba(),A=q1(n,e,t,i,r);ZY(n,A),e=t}}function Ba(){for(var n,e=null,t={dashed:!0,solid:!1,dotted:[1,5]},i={dot:"circle",box:"box",crow:"crow",curve:"curve",icurve:"inv_curve",normal:"triangle",inv:"inv_triangle",diamond:"diamond",tee:"bar",vee:"vee"},o=new Array,r=new Array;ke==="[";){for(bt(),e={};ke!==""&&ke!="]";){if(Bn!=Dn.IDENTIFIER)throw kn("Attribute name expected");var A=ke;if(bt(),ke!="=")throw kn("Equal sign = expected");if(bt(),Bn!=Dn.IDENTIFIER)throw kn("Attribute value expected");var I=ke;A==="style"&&(I=t[I]);var l;A==="arrowhead"&&(l=i[I],A="arrows",I={to:{enabled:!0,type:l}}),A==="arrowtail"&&(l=i[I],A="arrows",I={from:{enabled:!0,type:l}}),o.push({attr:e,name:A,value:I}),r.push(A),bt(),ke==","&&bt()}if(ke!="]")throw kn("Bracket ] expected");bt()}if(Rg(r).call(r,"dir")){var c={};for(c.arrows={},n=0;n"&&(I.arrows="to"),I};it(o=e.edges).call(o,function(A){var I,l;if(A.from instanceof Object?I=A.from.nodes:I={id:A.from},A.to instanceof Object?l=A.to.nodes:l={id:A.to},A.from instanceof Object&&A.from.edges){var c;it(c=A.from.edges).call(c,function(p){var m=r(p);t.edges.push(m)})}if(UY(I,l,function(p,m){var v=q1(t,p.id,m.id,A.type,A.attr),x=r(v);t.edges.push(x)}),A.to instanceof Object&&A.to.edges){var h;it(h=A.to.edges).call(h,function(p){var m=r(p);t.edges.push(m)})}})}return e.attr&&(t.options=e.attr),t}function HY(n,e){var t;const i={edges:{inheritColor:!1},nodes:{fixed:!1,parseColor:!1}};e!=null&&(e.fixed!=null&&(i.nodes.fixed=e.fixed),e.parseColor!=null&&(i.nodes.parseColor=e.parseColor),e.inheritColor!=null&&(i.edges.inheritColor=e.inheritColor));const o=n.edges,r=hn(o).call(o,I=>{const l={from:I.source,id:I.id,to:I.target};return I.attributes!=null&&(l.attributes=I.attributes),I.label!=null&&(l.label=I.label),I.attributes!=null&&I.attributes.title!=null&&(l.title=I.attributes.title),I.type==="Directed"&&(l.arrows="to"),I.color&&i.edges.inheritColor===!1&&(l.color=I.color),l});return{nodes:hn(t=n.nodes).call(t,I=>{const l={id:I.id,fixed:i.nodes.fixed&&I.x!=null&&I.y!=null};return I.attributes!=null&&(l.attributes=I.attributes),I.label!=null&&(l.label=I.label),I.size!=null&&(l.size=I.size),I.attributes!=null&&I.attributes.title!=null&&(l.title=I.attributes.title),I.title!=null&&(l.title=I.title),I.x!=null&&(l.x=I.x),I.y!=null&&(l.y=I.y),I.color!=null&&(i.nodes.parseColor===!0?l.color=I.color:l.color={background:I.color,border:I.color,highlight:{background:I.color,border:I.color},hover:{background:I.color,border:I.color}}),l}),edges:r}}var KY=Object.freeze({__proto__:null,cn:{addDescription:"单击空白处放置新节点。",addEdge:"添加连接线",addNode:"添加节点",back:"返回",close:"關閉",createEdgeError:"无法将连接线连接到群集。",del:"删除选定",deleteClusterError:"无法删除群集。",edgeDescription:"单击某个节点并将该连接线拖动到另一个节点以连接它们。",edit:"编辑",editClusterError:"无法编辑群集。",editEdge:"编辑连接线",editEdgeDescription:"单击控制节点并将它们拖到节点上连接。",editNode:"编辑节点"},cs:{addDescription:"Kluknutím do prázdného prostoru můžete přidat nový vrchol.",addEdge:"Přidat hranu",addNode:"Přidat vrchol",back:"Zpět",close:"Zavřít",createEdgeError:"Nelze připojit hranu ke shluku.",del:"Smazat výběr",deleteClusterError:"Nelze mazat shluky.",edgeDescription:"Přetažením z jednoho vrcholu do druhého můžete spojit tyto vrcholy novou hranou.",edit:"Upravit",editClusterError:"Nelze upravovat shluky.",editEdge:"Upravit hranu",editEdgeDescription:"Přetažením kontrolního vrcholu hrany ji můžete připojit k jinému vrcholu.",editNode:"Upravit vrchol"},de:{addDescription:"Klicke auf eine freie Stelle, um einen neuen Knoten zu plazieren.",addEdge:"Kante hinzufügen",addNode:"Knoten hinzufügen",back:"Zurück",close:"Schließen",createEdgeError:"Es ist nicht möglich, Kanten mit Clustern zu verbinden.",del:"Lösche Auswahl",deleteClusterError:"Cluster können nicht gelöscht werden.",edgeDescription:"Klicke auf einen Knoten und ziehe die Kante zu einem anderen Knoten, um diese zu verbinden.",edit:"Editieren",editClusterError:"Cluster können nicht editiert werden.",editEdge:"Kante editieren",editEdgeDescription:"Klicke auf die Verbindungspunkte und ziehe diese auf einen Knoten, um sie zu verbinden.",editNode:"Knoten editieren"},en:{addDescription:"Click in an empty space to place a new node.",addEdge:"Add Edge",addNode:"Add Node",back:"Back",close:"Close",createEdgeError:"Cannot link edges to a cluster.",del:"Delete selected",deleteClusterError:"Clusters cannot be deleted.",edgeDescription:"Click on a node and drag the edge to another node to connect them.",edit:"Edit",editClusterError:"Clusters cannot be edited.",editEdge:"Edit Edge",editEdgeDescription:"Click on the control points and drag them to a node to connect to it.",editNode:"Edit Node"},es:{addDescription:"Haga clic en un lugar vacío para colocar un nuevo nodo.",addEdge:"Añadir arista",addNode:"Añadir nodo",back:"Atrás",close:"Cerrar",createEdgeError:"No se puede conectar una arista a un grupo.",del:"Eliminar selección",deleteClusterError:"No es posible eliminar grupos.",edgeDescription:"Haga clic en un nodo y arrastre la arista hacia otro nodo para conectarlos.",edit:"Editar",editClusterError:"No es posible editar grupos.",editEdge:"Editar arista",editEdgeDescription:"Haga clic en un punto de control y arrastrelo a un nodo para conectarlo.",editNode:"Editar nodo"},fr:{addDescription:"Cliquez dans un endroit vide pour placer un nœud.",addEdge:"Ajouter un lien",addNode:"Ajouter un nœud",back:"Retour",close:"Fermer",createEdgeError:"Impossible de créer un lien vers un cluster.",del:"Effacer la sélection",deleteClusterError:"Les clusters ne peuvent pas être effacés.",edgeDescription:"Cliquez sur un nœud et glissez le lien vers un autre nœud pour les connecter.",edit:"Éditer",editClusterError:"Les clusters ne peuvent pas être édités.",editEdge:"Éditer le lien",editEdgeDescription:"Cliquez sur les points de contrôle et glissez-les pour connecter un nœud.",editNode:"Éditer le nœud"},it:{addDescription:"Clicca per aggiungere un nuovo nodo",addEdge:"Aggiungi un vertice",addNode:"Aggiungi un nodo",back:"Indietro",close:"Chiudere",createEdgeError:"Non si possono collegare vertici ad un cluster",del:"Cancella la selezione",deleteClusterError:"I cluster non possono essere cancellati",edgeDescription:"Clicca su un nodo e trascinalo ad un altro nodo per connetterli.",edit:"Modifica",editClusterError:"I clusters non possono essere modificati.",editEdge:"Modifica il vertice",editEdgeDescription:"Clicca sui Punti di controllo e trascinali ad un nodo per connetterli.",editNode:"Modifica il nodo"},nl:{addDescription:"Klik op een leeg gebied om een nieuwe node te maken.",addEdge:"Link toevoegen",addNode:"Node toevoegen",back:"Terug",close:"Sluiten",createEdgeError:"Kan geen link maken naar een cluster.",del:"Selectie verwijderen",deleteClusterError:"Clusters kunnen niet worden verwijderd.",edgeDescription:"Klik op een node en sleep de link naar een andere node om ze te verbinden.",edit:"Wijzigen",editClusterError:"Clusters kunnen niet worden aangepast.",editEdge:"Link wijzigen",editEdgeDescription:"Klik op de verbindingspunten en sleep ze naar een node om daarmee te verbinden.",editNode:"Node wijzigen"},pt:{addDescription:"Clique em um espaço em branco para adicionar um novo nó",addEdge:"Adicionar aresta",addNode:"Adicionar nó",back:"Voltar",close:"Fechar",createEdgeError:"Não foi possível linkar arestas a um cluster.",del:"Remover selecionado",deleteClusterError:"Clusters não puderam ser removidos.",edgeDescription:"Clique em um nó e arraste a aresta até outro nó para conectá-los",edit:"Editar",editClusterError:"Clusters não puderam ser editados.",editEdge:"Editar aresta",editEdgeDescription:"Clique nos pontos de controle e os arraste para um nó para conectá-los",editNode:"Editar nó"},ru:{addDescription:"Кликните в свободное место, чтобы добавить новый узел.",addEdge:"Добавить ребро",addNode:"Добавить узел",back:"Назад",close:"Закрывать",createEdgeError:"Невозможно соединить ребра в кластер.",del:"Удалить выбранное",deleteClusterError:"Кластеры не могут быть удалены",edgeDescription:"Кликните на узел и протяните ребро к другому узлу, чтобы соединить их.",edit:"Редактировать",editClusterError:"Кластеры недоступны для редактирования.",editEdge:"Редактировать ребро",editEdgeDescription:"Кликните на контрольные точки и перетащите их в узел, чтобы подключиться к нему.",editNode:"Редактировать узел"},uk:{addDescription:"Kлікніть на вільне місце, щоб додати новий вузол.",addEdge:"Додати край",addNode:"Додати вузол",back:"Назад",close:"Закрити",createEdgeError:"Не можливо об'єднати краї в групу.",del:"Видалити обране",deleteClusterError:"Групи не можуть бути видалені.",edgeDescription:"Клікніть на вузол і перетягніть край до іншого вузла, щоб їх з'єднати.",edit:"Редагувати",editClusterError:"Групи недоступні для редагування.",editEdge:"Редагувати край",editEdgeDescription:"Клікніть на контрольні точки і перетягніть їх у вузол, щоб підключитися до нього.",editNode:"Редагувати вузол"}});function WY(n,e){try{const[i,o]=e.split(/[-_ /]/,2),r=i!=null?i.toLowerCase():null,A=o!=null?o.toUpperCase():null;if(r&&A){const I=r+"-"+A;if(Object.prototype.hasOwnProperty.call(n,I))return I;var t;console.warn(j0(t="Unknown variant ".concat(A," of language ")).call(t,r,"."))}if(r){const I=r;if(Object.prototype.hasOwnProperty.call(n,I))return I;console.warn("Unknown language ".concat(r))}return console.warn("Unknown locale ".concat(e,", falling back to English.")),"en"}catch(i){return console.error(i),console.warn("Unexpected error while normalizing locale ".concat(e,", falling back to English.")),"en"}}class QY{constructor(){this.NUM_ITERATIONS=4,this.image=new Image,this.canvas=document.createElement("canvas")}init(){if(this.initialized())return;this.src=this.image.src;const e=this.image.width,t=this.image.height;this.width=e,this.height=t;const i=Math.floor(t/2),o=Math.floor(t/4),r=Math.floor(t/8),A=Math.floor(t/16),I=Math.floor(e/2),l=Math.floor(e/4),c=Math.floor(e/8),h=Math.floor(e/16);this.canvas.width=3*l,this.canvas.height=i,this.coordinates=[[0,0,I,i],[I,0,l,o],[I,o,c,r],[5*c,o,h,A]],this._fillMipMap()}initialized(){return this.coordinates!==void 0}_fillMipMap(){const e=this.canvas.getContext("2d"),t=this.coordinates[0];e.drawImage(this.image,t[0],t[1],t[2],t[3]);for(let i=1;i2){t*=.5;let I=0;for(;t>2&&I=this.NUM_ITERATIONS&&(I=this.NUM_ITERATIONS-1);const l=this.coordinates[I];e.drawImage(this.canvas,l[0],l[1],l[2],l[3],i,o,r,A)}else e.drawImage(this.image,i,o,r,A)}}class XY{constructor(e){this.images={},this.imageBroken={},this.callback=e}_tryloadBrokenUrl(e,t,i){if(!(e===void 0||i===void 0)){if(t===void 0){console.warn("No broken url image defined");return}i.image.onerror=()=>{console.error("Could not load brokenImage:",t)},i.image.src=t}}_redrawWithImage(e){this.callback&&this.callback(e)}load(e,t){const i=this.images[e];if(i)return i;const o=new QY;return this.images[e]=o,o.image.onload=()=>{this._fixImageCoordinates(o.image),o.init(),this._redrawWithImage(o)},o.image.onerror=()=>{console.error("Could not load image:",e),this._tryloadBrokenUrl(e,t,o)},o.image.src=e,o}_fixImageCoordinates(e){e.width===0&&(document.body.appendChild(e),e.width=e.offsetWidth,e.height=e.offsetHeight,document.body.removeChild(e))}}var gw={exports:{}},$Y=rt,qY=$Y(function(){if(typeof ArrayBuffer=="function"){var n=new ArrayBuffer(8);Object.isExtensible(n)&&Object.defineProperty(n,"a",{value:8})}}),JY=rt,e7=Sn,t7=qi,ow=qY,JC=Object.isExtensible,n7=JY(function(){JC(1)}),i7=n7||ow?function(e){return!e7(e)||ow&&t7(e)==="ArrayBuffer"?!1:JC?JC(e):!0}:JC,g7=rt,sw=!g7(function(){return Object.isExtensible(Object.preventExtensions({}))}),o7=ze,s7=at,r7=sa,a7=Sn,Iu=rn,A7=Kn.f,rw=ca,C7=xC,lu=i7,I7=lC,l7=sw,aw=!1,sg=I7("meta"),c7=0,cu=function(n){A7(n,sg,{value:{objectID:"O"+c7++,weakData:{}}})},d7=function(n,e){if(!a7(n))return typeof n=="symbol"?n:(typeof n=="string"?"S":"P")+n;if(!Iu(n,sg)){if(!lu(n))return"F";if(!e)return"E";cu(n)}return n[sg].objectID},u7=function(n,e){if(!Iu(n,sg)){if(!lu(n))return!0;if(!e)return!1;cu(n)}return n[sg].weakData},h7=function(n){return l7&&aw&&lu(n)&&!Iu(n,sg)&&cu(n),n},f7=function(){p7.enable=function(){},aw=!0;var n=rw.f,e=s7([].splice),t={};t[sg]=1,n(t).length&&(rw.f=function(i){for(var o=n(i),r=0,A=o.length;rp;p++)if(v=S(n[p]),v&&cw(uw,v))return v;return new tI(!1)}c=U7(n,h)}for(x=r?n.next:c.next;!(O=Z7(x,c)).done;){try{v=S(O.value)}catch(E){dw(c,"throw",E)}if(typeof v=="object"&&v&&cw(uw,v))return v}return new tI(!1)},K7=Pt,W7=TypeError,uu=function(n,e){if(K7(e,n))return n;throw new W7("Incorrect invocation")},Q7=ze,X7=jt,$7=eI,q7=rt,J7=bs,eH=du,tH=uu,nH=un,iH=Sn,gH=fs,oH=Es,sH=Kn.f,rH=kg.forEach,aH=sn,hw=Eo,AH=hw.set,CH=hw.getterFor,hu=function(n,e,t){var i=n.indexOf("Map")!==-1,o=n.indexOf("Weak")!==-1,r=i?"set":"add",A=X7[n],I=A&&A.prototype,l={},c;if(!aH||!nH(A)||!(o||I.forEach&&!q7(function(){new A().entries().next()})))c=t.getConstructor(e,n,i,r),$7.enable();else{c=e(function(m,v){AH(tH(m,h),{type:n,collection:new A}),gH(v)||eH(v,m[r],{that:m,AS_ENTRIES:i})});var h=c.prototype,p=CH(n);rH(["add","clear","delete","forEach","get","has","set","keys","values","entries"],function(m){var v=m==="add"||m==="set";m in I&&!(o&&m==="clear")&&J7(h,m,function(x,O){var y=p(this).collection;if(!v&&o&&!iH(x))return m==="get"?void 0:!1;var S=y[m](x===0?0:x,O);return v?this:S})}),o||sH(h,"size",{configurable:!0,get:function(){return p(this).collection.size}})}return oH(c,n,!1,!0),l[n]=c,Q7({global:!0,forced:!0},l),o||t.setStrong(c,n,i),c},IH=da,fu=function(n,e,t){for(var i in e)t&&t.unsafe&&n[i]?n[i]=e[i]:IH(n,i,e[i],t);return n},lH=yi,cH=gd,dH=Ut,uH=sn,fw=dH("species"),hH=function(n){var e=lH(n);uH&&e&&!e[fw]&&cH(e,fw,{configurable:!0,get:function(){return this}})},fH=la,pH=gd,pw=fu,mH=ga,vH=uu,bH=fs,yH=du,wH=Ed,nI=Sd,xH=hH,Za=sn,mw=eI.fastKey,vw=Eo,bw=vw.set,pu=vw.getterFor,yw={getConstructor:function(n,e,t,i){var o=n(function(c,h){vH(c,r),bw(c,{type:e,index:fH(null),first:void 0,last:void 0,size:0}),Za||(c.size=0),bH(h)||yH(h,c[i],{that:c,AS_ENTRIES:t})}),r=o.prototype,A=pu(e),I=function(c,h,p){var m=A(c),v=l(c,h),x,O;return v?v.value=p:(m.last=v={index:O=mw(h,!0),key:h,value:p,previous:x=m.last,next:void 0,removed:!1},m.first||(m.first=v),x&&(x.next=v),Za?m.size++:c.size++,O!=="F"&&(m.index[O]=v)),c},l=function(c,h){var p=A(c),m=mw(h),v;if(m!=="F")return p.index[m];for(v=p.first;v;v=v.next)if(v.key===h)return v};return pw(r,{clear:function(){for(var h=this,p=A(h),m=p.index,v=p.first;v;)v.removed=!0,v.previous&&(v.previous=v.previous.next=void 0),delete m[v.index],v=v.next;p.first=p.last=void 0,Za?p.size=0:h.size=0},delete:function(c){var h=this,p=A(h),m=l(h,c);if(m){var v=m.next,x=m.previous;delete p.index[m.index],m.removed=!0,x&&(x.next=v),v&&(v.previous=x),p.first===m&&(p.first=v),p.last===m&&(p.last=x),Za?p.size--:h.size--}return!!m},forEach:function(h){for(var p=A(this),m=mH(h,arguments.length>1?arguments[1]:void 0),v;v=v?v.next:p.first;)for(m(v.value,v.key,this);v&&v.removed;)v=v.previous},has:function(h){return!!l(this,h)}}),pw(r,t?{get:function(h){var p=l(this,h);return p&&p.value},set:function(h,p){return I(this,h===0?0:h,p)}}:{add:function(h){return I(this,h=h===0?0:h,h)}}),Za&&pH(r,"size",{configurable:!0,get:function(){return A(this).size}}),o},setStrong:function(n,e,t){var i=e+" Iterator",o=pu(e),r=pu(i);wH(n,e,function(A,I){bw(this,{type:i,target:A,state:o(A),kind:I,last:void 0})},function(){for(var A=r(this),I=A.kind,l=A.last;l&&l.removed;)l=l.previous;return!A.target||!(A.last=l=l?l.next:A.state.first)?(A.target=void 0,nI(void 0,!0)):nI(I==="keys"?l.key:I==="values"?l.value:[l.key,l.value],!1)},t?"entries":"values",!t,!0),xH(e)}},EH=hu,SH=yw;EH("Map",function(n){return function(){return n(this,arguments.length?arguments[0]:void 0)}},SH);var mu=at,TH=hC,OH=Ri,NH=qr,DH=mu("".charAt),ww=mu("".charCodeAt),kH=mu("".slice),MH=function(n){return function(e,t){var i=OH(NH(e)),o=TH(t),r=i.length,A,I;return o<0||o>=r?n?"":void 0:(A=ww(i,o),A<55296||A>56319||o+1===r||(I=ww(i,o+1))<56320||I>57343?n?DH(i,o):A:n?kH(i,o,o+2):(A-55296<<10)+(I-56320)+65536)}},RH={charAt:MH(!0)},zH=RH.charAt,_H=Ri,xw=Eo,jH=Ed,Ew=Sd,Sw="String Iterator",PH=xw.set,BH=xw.getterFor(Sw);jH(String,"String",function(n){PH(this,{type:Sw,string:_H(n),index:0})},function(){var e=BH(this),t=e.string,i=e.index,o;return i>=t.length?Ew(void 0,!0):(o=zH(t,i),e.index+=o.length,Ew(o,!1))});var ZH=Ct,LH=ZH.Map,GH=LH,FH=GH,VH=FH,La=De(VH);class UH{constructor(){this.clear(),this._defaultIndex=0,this._groupIndex=0,this._defaultGroups=[{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},{border:"#FFA500",background:"#FFFF00",highlight:{border:"#FFA500",background:"#FFFFA3"},hover:{border:"#FFA500",background:"#FFFFA3"}},{border:"#FA0A10",background:"#FB7E81",highlight:{border:"#FA0A10",background:"#FFAFB1"},hover:{border:"#FA0A10",background:"#FFAFB1"}},{border:"#41A906",background:"#7BE141",highlight:{border:"#41A906",background:"#A1EC76"},hover:{border:"#41A906",background:"#A1EC76"}},{border:"#E129F0",background:"#EB7DF4",highlight:{border:"#E129F0",background:"#F0B3F5"},hover:{border:"#E129F0",background:"#F0B3F5"}},{border:"#7C29F0",background:"#AD85E4",highlight:{border:"#7C29F0",background:"#D3BDF0"},hover:{border:"#7C29F0",background:"#D3BDF0"}},{border:"#C37F00",background:"#FFA807",highlight:{border:"#C37F00",background:"#FFCA66"},hover:{border:"#C37F00",background:"#FFCA66"}},{border:"#4220FB",background:"#6E6EFD",highlight:{border:"#4220FB",background:"#9B9BFD"},hover:{border:"#4220FB",background:"#9B9BFD"}},{border:"#FD5A77",background:"#FFC0CB",highlight:{border:"#FD5A77",background:"#FFD1D9"},hover:{border:"#FD5A77",background:"#FFD1D9"}},{border:"#4AD63A",background:"#C2FABC",highlight:{border:"#4AD63A",background:"#E6FFE3"},hover:{border:"#4AD63A",background:"#E6FFE3"}},{border:"#990000",background:"#EE0000",highlight:{border:"#BB0000",background:"#FF3333"},hover:{border:"#BB0000",background:"#FF3333"}},{border:"#FF6000",background:"#FF6000",highlight:{border:"#FF6000",background:"#FF6000"},hover:{border:"#FF6000",background:"#FF6000"}},{border:"#97C2FC",background:"#2B7CE9",highlight:{border:"#D2E5FF",background:"#2B7CE9"},hover:{border:"#D2E5FF",background:"#2B7CE9"}},{border:"#399605",background:"#255C03",highlight:{border:"#399605",background:"#255C03"},hover:{border:"#399605",background:"#255C03"}},{border:"#B70054",background:"#FF007E",highlight:{border:"#B70054",background:"#FF007E"},hover:{border:"#B70054",background:"#FF007E"}},{border:"#AD85E4",background:"#7C29F0",highlight:{border:"#D3BDF0",background:"#7C29F0"},hover:{border:"#D3BDF0",background:"#7C29F0"}},{border:"#4557FA",background:"#000EA1",highlight:{border:"#6E6EFD",background:"#000EA1"},hover:{border:"#6E6EFD",background:"#000EA1"}},{border:"#FFC0CB",background:"#FD5A77",highlight:{border:"#FFD1D9",background:"#FD5A77"},hover:{border:"#FFD1D9",background:"#FD5A77"}},{border:"#C2FABC",background:"#74D66A",highlight:{border:"#E6FFE3",background:"#74D66A"},hover:{border:"#E6FFE3",background:"#74D66A"}},{border:"#EE0000",background:"#990000",highlight:{border:"#FF3333",background:"#BB0000"},hover:{border:"#FF3333",background:"#BB0000"}}],this.options={},this.defaultOptions={useDefaultGroups:!0},Yt(this.options,this.defaultOptions)}setOptions(e){const t=["useDefaultGroups"];if(e!==void 0){for(const i in e)if(Object.prototype.hasOwnProperty.call(e,i)&<(t).call(t,i)===-1){const o=e[i];this.add(i,o)}}}clear(){this._groups=new La,this._groupNames=[]}get(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,i=this._groups.get(e);if(i===void 0&&t)if(this.options.useDefaultGroups===!1&&this._groupNames.length>0){const o=this._groupIndex%this._groupNames.length;++this._groupIndex,i={},i.color=this._groups.get(this._groupNames[o]),this._groups.set(e,i)}else{const o=this._defaultIndex%this._defaultGroups.length;this._defaultIndex++,i={},i.color=this._defaultGroups[o],this._groups.set(e,i)}return i}add(e,t){return this._groups.has(e)||this._groupNames.push(e),this._groups.set(e,t),t}}var YH=ze;YH({target:"Number",stat:!0},{isNaN:function(e){return e!==e}});var HH=Ct,KH=HH.Number.isNaN,WH=KH,QH=WH,XH=QH,vu=De(XH),$H=jt,qH=$H.isFinite,JH=Number.isFinite||function(e){return typeof e=="number"&&qH(e)},eK=ze,tK=JH;eK({target:"Number",stat:!0},{isFinite:tK});var nK=Ct,iK=nK.Number.isFinite,gK=iK,oK=gK,sK=oK,Bo=De(sK),rK=ze,aK=kg.some,AK=Ds,CK=AK("some");rK({target:"Array",proto:!0,forced:!CK},{some:function(e){return aK(this,e,arguments.length>1?arguments[1]:void 0)}});var IK=Xt,lK=IK("Array").some,cK=Pt,dK=lK,bu=Array.prototype,uK=function(n){var e=n.some;return n===bu||cK(bu,n)&&e===bu.some?dK:e},hK=uK,fK=hK,pK=fK,Tw=De(pK),mK=Ct,vK=mK.Object.getOwnPropertySymbols,bK=vK,yK=bK,wK=yK,Li=De(wK),Ow={exports:{}},xK=ze,EK=rt,SK=bi,Nw=Qr.f,Dw=sn,TK=!Dw||EK(function(){Nw(1)});xK({target:"Object",stat:!0,forced:TK,sham:!Dw},{getOwnPropertyDescriptor:function(e,t){return Nw(SK(e),t)}});var OK=Ct,kw=OK.Object,NK=Ow.exports=function(e,t){return kw.getOwnPropertyDescriptor(e,t)};kw.getOwnPropertyDescriptor.sham&&(NK.sham=!0);var DK=Ow.exports,kK=DK,MK=kK,RK=MK,Gi=De(RK),zK=ze,_K=sn,jK=E0,PK=bi,BK=Qr,ZK=Aa;zK({target:"Object",stat:!0,sham:!_K},{getOwnPropertyDescriptors:function(e){for(var t=PK(e),i=BK.f,o=jK(t),r={},A=0,I,l;o.length>A;)l=i(t,I=o[A++]),l!==void 0&&ZK(r,I,l);return r}});var LK=Ct,GK=LK.Object.getOwnPropertyDescriptors,FK=GK,VK=FK,UK=VK,Fi=De(UK),Mw={exports:{}},YK=ze,HK=sn,Rw=vC.f;YK({target:"Object",stat:!0,forced:Object.defineProperties!==Rw,sham:!HK},{defineProperties:Rw});var KK=Ct,zw=KK.Object,WK=Mw.exports=function(e,t){return zw.defineProperties(e,t)};zw.defineProperties.sham&&(WK.sham=!0);var QK=Mw.exports,XK=QK,$K=XK,qK=$K,Ga=De(qK),_w={exports:{}},JK=ze,eW=sn,jw=Kn.f;JK({target:"Object",stat:!0,forced:Object.defineProperty!==jw,sham:!eW},{defineProperty:jw});var tW=Ct,Pw=tW.Object,nW=_w.exports=function(e,t,i){return Pw.defineProperty(e,t,i)};Pw.defineProperty.sham&&(nW.sham=!0);var iW=_w.exports,gW=iW,Bw=gW,oW=Bw,sW=oW,rW=sW,aW=rW,AW=aW,CW=De(AW),IW=Ut,lW=Kn.f,Zw=IW("metadata"),Lw=Function.prototype;Lw[Zw]===void 0&&lW(Lw,Zw,{value:null});var cW=Bt;cW("asyncDispose");var dW=Bt;dW("dispose");var uW=Bt;uW("metadata");var hW=y0,fW=hW,pW=yi,mW=at,yu=pW("Symbol"),vW=yu.keyFor,bW=mW(yu.prototype.valueOf),Gw=yu.isRegisteredSymbol||function(e){try{return vW(bW(e))!==void 0}catch{return!1}},yW=ze,wW=Gw;yW({target:"Symbol",stat:!0},{isRegisteredSymbol:wW});for(var xW=ms,Fw=yi,EW=at,SW=ta,TW=Ut,iI=Fw("Symbol"),Vw=iI.isWellKnownSymbol,Uw=Fw("Object","getOwnPropertyNames"),OW=EW(iI.prototype.valueOf),Yw=xW("wks"),wu=0,Hw=Uw(iI),NW=Hw.length;wu=0:I>l;l+=c)l in A&&(o=t(o,A[l],l,r));return o}},fQ={left:hQ(!1)},pQ=jt,mQ=qi,vQ=mQ(pQ.process)==="process",bQ=ze,yQ=fQ.left,wQ=Ds,Xw=ea,xQ=vQ,EQ=!xQ&&Xw>79&&Xw<83,SQ=EQ||!wQ("reduce");bQ({target:"Array",proto:!0,forced:SQ},{reduce:function(e){var t=arguments.length;return yQ(this,e,t,t>1?arguments[1]:void 0)}});var TQ=Xt,OQ=TQ("Array").reduce,NQ=Pt,DQ=OQ,xu=Array.prototype,kQ=function(n){var e=n.reduce;return n===xu||NQ(xu,n)&&e===xu.reduce?DQ:e},MQ=kQ,RQ=MQ,zQ=RQ,Eu=De(zQ),_Q=Dg,jQ=gi,PQ=$c,BQ=ga,$w=function(n,e,t,i,o,r,A,I){for(var l=o,c=0,h=A?BQ(A,I):!1,p,m;c0&&_Q(p)?(m=jQ(p),l=$w(n,e,p,m,l,r-1)-1):(PQ(l+1),n[l]=p),l++),c++;return l},ZQ=$w,LQ=ze,GQ=ZQ,FQ=wo,VQ=Hn,UQ=gi,YQ=mC;LQ({target:"Array",proto:!0},{flatMap:function(e){var t=VQ(this),i=UQ(t),o;return FQ(e),o=YQ(t,0),o.length=GQ(o,t,t,i,0,1,e,arguments.length>1?arguments[1]:void 0),o}});var HQ=Xt;HQ("Array").flatMap;var KQ=Qw,Vs=De(KQ),WQ=hu,QQ=yw;WQ("Set",function(n){return function(){return n(this,arguments.length?arguments[0]:void 0)}},QQ);var XQ=Ct,$Q=XQ.Set,qQ=$Q,JQ=qQ,eX=JQ,Oi=De(eX),tX=Iw,nX=tX,iX=nX,gX=iX,oX=gX,sX=oX,rX=sX,aX=rX,AX=aX,CX=AX,Su=De(CX),qw=ly,IX=Math.floor,Tu=function(n,e){var t=n.length,i=IX(t/2);return t<8?lX(n,e):cX(n,Tu(qw(n,0,i),e),Tu(qw(n,i),e),e)},lX=function(n,e){for(var t=n.length,i=1,o,r;i0;)n[r]=n[--r];r!==i++&&(n[r]=o)}return n},cX=function(n,e,t,i){for(var o=e.length,r=t.length,A=0,I=0;A3)){if(TX)return!0;if(sx)return sx<603;var n="",e,t,i,o;for(e=65;e<76;e++){switch(t=String.fromCharCode(e),e){case 66:case 69:case 70:case 72:i=3;break;case 68:case 71:i=4;break;default:i=2}for(o=0;o<47;o++)Gg.push({k:t+o,v:i})}for(Gg.sort(function(r,A){return A.v-r.v}),o=0;oix(t)?1:-1}};bX({target:"Array",proto:!0,forced:MX},{sort:function(e){e!==void 0&&yX(e);var t=wX(this);if(ax)return e===void 0?rx(t):rx(t,e);var i=[],o=nx(t),r,A;for(A=0;A{i.flush()};const o=[{name:"flush",original:void 0}];if(t&&t.replace)for(let r=0;rthis.max&&this.flush(),this._timeout!=null&&(clearTimeout(this._timeout),this._timeout=null),this.queue.length>0&&typeof this.delay=="number"&&(this._timeout=ji(()=>{this.flush()},this.delay))}flush(){var e,t;it(e=_i(t=this._queue).call(t,0)).call(e,i=>{i.fn.apply(i.context||i.fn,i.args||[])})}}class rI{constructor(){Jt(this,"_subscribers",{"*":[],add:[],remove:[],update:[]}),Jt(this,"subscribe",rI.prototype.on),Jt(this,"unsubscribe",rI.prototype.off)}_trigger(e,t,i){var o;if(e==="*")throw new Error("Cannot trigger event *");it(o=[...this._subscribers[e],...this._subscribers["*"]]).call(o,r=>{r(e,t,i??null)})}on(e,t){typeof t=="function"&&this._subscribers[e].push(t)}off(e,t){var i;this._subscribers[e]=$t(i=this._subscribers[e]).call(i,o=>o!==t)}}class Zo{constructor(e){Jt(this,"_pairs",void 0),this._pairs=e}*[Vs](){for(const[e,t]of this._pairs)yield[e,t]}*entries(){for(const[e,t]of this._pairs)yield[e,t]}*keys(){for(const[e]of this._pairs)yield e}*values(){for(const[,e]of this._pairs)yield e}toIdArray(){var e;return hn(e=[...this._pairs]).call(e,t=>t[0])}toItemArray(){var e;return hn(e=[...this._pairs]).call(e,t=>t[1])}toEntryArray(){return[...this._pairs]}toObjectMap(){const e=zg(null);for(const[t,i]of this._pairs)e[t]=i;return e}toMap(){return new La(this._pairs)}toIdSet(){return new Oi(this.toIdArray())}toItemSet(){return new Oi(this.toItemArray())}cache(){return new Zo([...this._pairs])}distinct(e){const t=new Oi;for(const[i,o]of this._pairs)t.add(e(o,i));return t}filter(e){const t=this._pairs;return new Zo({*[Vs](){for(const[i,o]of t)e(o,i)&&(yield[i,o])}})}forEach(e){for(const[t,i]of this._pairs)e(i,t)}map(e){const t=this._pairs;return new Zo({*[Vs](){for(const[i,o]of t)yield[i,e(o,i)]}})}max(e){const t=Su(this._pairs);let i=t.next();if(i.done)return null;let o=i.value[1],r=e(i.value[1],i.value[0]);for(;!(i=t.next()).done;){const[A,I]=i.value,l=e(I,A);l>r&&(r=l,o=I)}return o}min(e){const t=Su(this._pairs);let i=t.next();if(i.done)return null;let o=i.value[1],r=e(i.value[1],i.value[0]);for(;!(i=t.next()).done;){const[A,I]=i.value,l=e(I,A);l{var t;return Su(rg(t=[...this._pairs]).call(t,(i,o)=>{let[r,A]=i,[I,l]=o;return e(A,l,r,I)}))}})}}function S$(n,e){return n[e]==null&&(n[e]=Ys()),n}class Hs extends rI{get idProp(){return this._idProp}constructor(e,t){super(),Jt(this,"flush",void 0),Jt(this,"length",void 0),Jt(this,"_options",void 0),Jt(this,"_data",void 0),Jt(this,"_idProp",void 0),Jt(this,"_queue",null),e&&!gt(e)&&(t=e,e=[]),this._options=t||{},this._data=new La,this.length=0,this._idProp=this._options.fieldId||"id",e&&e.length&&this.add(e),this.setOptions(t)}setOptions(e){e&&e.queue!==void 0&&(e.queue===!1?this._queue&&(this._queue.destroy(),this._queue=null):(this._queue||(this._queue=Ru.extend(this,{replace:["add","update","remove"]})),e.queue&&typeof e.queue=="object"&&this._queue.setOptions(e.queue)))}add(e,t){const i=[];let o;if(gt(e)){const r=hn(e).call(e,A=>A[this._idProp]);if(Tw(r).call(r,A=>this._data.has(A)))throw new Error("A duplicate id was found in the parameter array.");for(let A=0,I=e.length;A{const h=c[I];if(h!=null&&this._data.has(h)){const p=c,m=Yt({},this._data.get(h)),v=this._updateItem(p);o.push(v),A.push(p),r.push(m)}else{const p=this._addItem(c);i.push(p)}};if(gt(e))for(let c=0,h=e.length;c{const A=this._data.get(r[this._idProp]);if(A==null)throw new Error("Updating non-existent items is not allowed.");return{oldData:A,update:r}})).call(i,r=>{let{oldData:A,update:I}=r;const l=A[this._idProp],c=IY(A,I);return this._data.set(l,c),{id:l,oldData:A,updatedData:c}});if(o.length){const r={items:hn(o).call(o,A=>A.id),oldData:hn(o).call(o,A=>A.oldData),data:hn(o).call(o,A=>A.updatedData)};return this._trigger("update",r,t),r.items}else return[]}get(e,t){let i,o,r;lx(e)?(i=e,r=t):gt(e)?(o=e,r=t):r=e;const A=r&&r.returnType==="Object"?"Object":"Array",I=r&&$t(r),l=[];let c,h,p;if(i!=null)c=this._data.get(i),c&&I&&!I(c)&&(c=void 0);else if(o!=null)for(let x=0,O=o.length;x(o[r]=e[r],o),{})}_sort(e,t){if(typeof t=="string"){const i=t;rg(e).call(e,(o,r)=>{const A=o[i],I=r[i];return A>I?1:Ai)&&(t=r,i=A)}return t||null}min(e){let t=null,i=null;for(const r of oI(o=this._data).call(o)){var o;const A=r[e];typeof A=="number"&&(i==null||Ae.x&&n.tope.y}function AI(n){return typeof n=="string"&&n!==""}function mx(n,e,t,i){let o=i.x,r=i.y;if(typeof i.distanceToBorder=="function"){const A=i.distanceToBorder(n,e),I=Math.sin(e)*A,l=Math.cos(e)*A;l===A?(o+=A,r=i.y):I===A?(o=i.x,r-=A):(o+=l,r-=I)}else i.shape.width>i.shape.height?(o=i.x+i.shape.width*.5,r=i.y-t):(o=i.x+t,r=i.y-i.shape.height*.5);return{x:o,y:r}}class J${constructor(e){this.measureText=e,this.current=0,this.width=0,this.height=0,this.lines=[]}_add(e,t){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"normal";this.lines[e]===void 0&&(this.lines[e]={width:0,height:0,blocks:[]});let o=t;(t===void 0||t==="")&&(o=" ");const r=this.measureText(o,i),A=Yt({},oI(r));A.text=t,A.width=r.width,A.mod=i,(t===void 0||t==="")&&(A.width=0),this.lines[e].blocks.push(A),this.lines[e].width+=A.width}curWidth(){const e=this.lines[this.current];return e===void 0?0:e.width}append(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"normal";this._add(this.current,e,t)}newLine(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"normal";this._add(this.current,e,t),this.current++}determineLineHeights(){for(let e=0;ee&&(e=o.width),t+=o.height}this.width=e,this.height=t}removeEmptyBlocks(){const e=[];for(let t=0;t"://,""://,""://,"":/<\/b>/,"":/<\/i>/,"":/<\/code>/,"*":/\*/,_:/_/,"`":/`/,afterBold:/[^*]/,afterItal:/[^_]/,afterMono:/[^`]/};class vx{constructor(e){this.text=e,this.bold=!1,this.ital=!1,this.mono=!1,this.spacing=!1,this.position=0,this.buffer="",this.modStack=[],this.blocks=[]}mod(){return this.modStack.length===0?"normal":this.modStack[0]}modName(){if(this.modStack.length===0)return"normal";if(this.modStack[0]==="mono")return"mono";if(this.bold&&this.ital)return"boldital";if(this.bold)return"bold";if(this.ital)return"ital"}emitBlock(){this.spacing&&(this.add(" "),this.spacing=!1),this.buffer.length>0&&(this.blocks.push({text:this.buffer,mod:this.modName()}),this.buffer="")}add(e){e===" "&&(this.spacing=!0),this.spacing&&(this.buffer+=" ",this.spacing=!1),e!=" "&&(this.buffer+=e)}parseWS(e){return/[ \t]/.test(e)?(this.mono?this.add(e):this.spacing=!0,!0):!1}setTag(e){this.emitBlock(),this[e]=!0,this.modStack.unshift(e)}unsetTag(e){this.emitBlock(),this[e]=!1,this.modStack.shift()}parseStartTag(e,t){return!this.mono&&!this[e]&&this.match(t)?(this.setTag(e),!0):!1}match(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;const[i,o]=this.prepareRegExp(e),r=i.test(this.text.substr(this.position,o));return r&&t&&(this.position+=o-1),r}parseEndTag(e,t,i){let o=this.mod()===e;return e==="mono"?o=o&&this.mono:o=o&&!this.mono,o&&this.match(t)?(i!==void 0?(this.position===this.text.length-1||this.match(i,!1))&&this.unsetTag(e):this.unsetTag(e),!0):!1}replace(e,t){return this.match(e)?(this.add(t),this.position+=length-1,!0):!1}prepareRegExp(e){let t,i;if(e instanceof RegExp)i=e,t=1;else{const o=eq[e];o!==void 0?i=o:i=new RegExp(e),t=e.length}return[i,t]}}class tq{constructor(e,t,i,o){this.ctx=e,this.parent=t,this.selected=i,this.hover=o;const r=(A,I)=>{if(A===void 0)return 0;const l=this.parent.getFormattingValues(e,i,o,I);let c=0;return A!==""&&(c=this.ctx.measureText(A).width),{width:c,values:l}};this.lines=new J$(r)}process(e){if(!AI(e))return this.lines.finalize();const t=this.parent.fontOptions;e=e.replace(/\r\n/g,` `),e=e.replace(/\r/g,` `);const i=String(e).split(` -`),o=i.length;if(t.multi)for(let r=0;r0)for(let I=0;I0)for(let r=0;r/&/.test(o)?(t.replace(t.text,"<","<")||t.replace(t.text,"&","&")||t.add("&"),!0):!1;for(;t.position")||t.parseStartTag("ital","")||t.parseStartTag("mono","")||t.parseEndTag("bold","")||t.parseEndTag("ital","")||t.parseEndTag("mono",""))||i(o)||t.add(o),t.position++}return t.emitBlock(),t.blocks}splitMarkdownBlocks(e){const t=new sx(e);let i=!0;const o=r=>/\\/.test(r)?(t.positionthis.parent.fontOptions.maxWdt}getLongestFit(e){let t="",i=0;for(;i1&&arguments[1]!==void 0?arguments[1]:"normal",i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;this.parent.getFormattingValues(this.ctx,this.selected,this.hover,t),e=e.replace(/^( +)/g,"$1\r"),e=e.replace(/([^\r][^ ]*)( +)/g,"$1\r$2\r");let o=e.split("\r");for(;o.length>0;){let r=this.getLongestFit(o);if(r===0){const A=o[0],I=this.getLongestFitWord(A);this.lines.newLine(xi(A).call(A,0,I),t),o[0]=xi(A).call(A,I)}else{let A=r;o[r-1]===" "?r--:o[A]===" "&&A++;const I=xi(o).call(o,0,r).join("");r==o.length&&i?this.lines.append(I,t):this.lines.newLine(I,t),o=xi(o).call(o,A)}}}}const Pa=["bold","ital","boldital","mono"];class Us{constructor(e,t){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;this.body=e,this.pointToSelf=!1,this.baseSize=void 0,this.fontOptions={},this.setOptions(t),this.size={top:0,left:0,width:0,height:0,yLine:0},this.isEdgeLabel=i}setOptions(e){if(this.elementOptions=e,this.initFontOptions(e.font),gI(e.label)?this.labelDirty=!0:e.label=void 0,e.font!==void 0&&e.font!==null){if(typeof e.font=="string")this.baseSize=this.fontOptions.size;else if(typeof e.font=="object"){const t=e.font.size;t!==void 0&&(this.baseSize=t)}}}initFontOptions(e){if(Ke(Pa,t=>{this.fontOptions[t]={}}),Us.parseFontString(this.fontOptions,e)){this.fontOptions.vadjust=0;return}Ke(e,(t,i)=>{t!=null&&typeof t!="object"&&(this.fontOptions[i]=t)})}static parseFontString(e,t){if(!t||typeof t!="string")return!1;const i=t.split(" ");return e.size=+i[0].replace("px",""),e.face=i[1],e.color=i[2],!0}constrain(e){const t={constrainWidth:!1,maxWdt:-1,minWdt:-1,constrainHeight:!1,minHgt:-1,valign:"middle"},i=jg(e,"widthConstraint");if(typeof i=="number")t.maxWdt=Number(i),t.minWdt=Number(i);else if(typeof i=="object"){const r=jg(e,["widthConstraint","maximum"]);typeof r=="number"&&(t.maxWdt=Number(r));const A=jg(e,["widthConstraint","minimum"]);typeof A=="number"&&(t.minWdt=Number(A))}const o=jg(e,"heightConstraint");if(typeof o=="number")t.minHgt=Number(o);else if(typeof o=="object"){const r=jg(e,["heightConstraint","minimum"]);typeof r=="number"&&(t.minHgt=Number(r));const A=jg(e,["heightConstraint","valign"]);typeof A=="string"&&(A==="top"||A==="bottom")&&(t.valign=A)}return t}update(e,t){this.setOptions(e,!0),this.propagateFonts(t),vt(this.fontOptions,this.constrain(t)),this.fontOptions.chooser=Ou("label",t)}adjustSizes(e){const t=e?e.right+e.left:0;this.fontOptions.constrainWidth&&(this.fontOptions.maxWdt-=t,this.fontOptions.minWdt-=t);const i=e?e.top+e.bottom:0;this.fontOptions.constrainHeight&&(this.fontOptions.minHgt-=i)}addFontOptionsToPile(e,t){for(let i=0;i{A!==void 0&&(Object.prototype.hasOwnProperty.call(t,I)||(lt(Pa).call(Pa,I)!==-1?t[I]={}:t[I]=A))})}return t}getFontOption(e,t,i){let o;for(let r=0;r{r[l]=I}),r.size=Number(r.size),r.vadjust=Number(r.vadjust)}}draw(e,t,i,o,r){let A=arguments.length>5&&arguments[5]!==void 0?arguments[5]:"middle";if(this.elementOptions.label===void 0)return;let I=this.fontOptions.size*this.body.view.scale;this.elementOptions.label&&I=this.elementOptions.scaling.label.maxVisible&&(I=Number(this.elementOptions.scaling.label.maxVisible)/this.body.view.scale),this.calculateLabelSize(e,o,r,t,i,A),this._drawBackground(e),this._drawText(e,t,this.size.yLine,A,I))}_drawBackground(e){if(this.fontOptions.background!==void 0&&this.fontOptions.background!=="none"){e.fillStyle=this.fontOptions.background;const t=this.getSize();e.fillRect(t.left,t.top,t.width,t.height)}}_drawText(e,t,i){let o=arguments.length>3&&arguments[3]!==void 0?arguments[3]:"middle",r=arguments.length>4?arguments[4]:void 0;[t,i]=this._setAlignment(e,t,i,o),e.textAlign="left",t=t-this.size.width/2,this.fontOptions.valign&&this.size.height>this.size.labelHeight&&(this.fontOptions.valign==="top"&&(i-=(this.size.height-this.size.labelHeight)/2),this.fontOptions.valign==="bottom"&&(i+=(this.size.height-this.size.labelHeight)/2));for(let A=0;A0&&(e.lineWidth=h.strokeWidth,e.strokeStyle=m,e.lineJoin="round"),e.fillStyle=p,h.strokeWidth>0&&e.strokeText(h.text,t+l,i+h.vadjust),e.fillText(h.text,t+l,i+h.vadjust),l+=h.width}i+=I.height}}}_setAlignment(e,t,i,o){if(this.isEdgeLabel&&this.fontOptions.align!=="horizontal"&&this.pointToSelf===!1){t=0,i=0;const r=2;this.fontOptions.align==="top"?(e.textBaseline="alphabetic",i-=2*r):this.fontOptions.align==="bottom"?(e.textBaseline="hanging",i+=2*r):e.textBaseline="middle"}else e.textBaseline=o;return[t,i]}_getColor(e,t,i){let o=e||"#000000",r=i||"#ffffff";if(t<=this.elementOptions.scaling.label.drawThreshold){const A=Math.max(0,Math.min(1,1-(this.elementOptions.scaling.label.drawThreshold-t)));o=si(o,A),r=si(r,A)}return[o,r]}getTextSize(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;return this._processLabel(e,t,i),{width:this.size.width,height:this.size.height,lineCount:this.lineCount}}getSize(){let t=this.size.left,i=this.size.top-.5*2;if(this.isEdgeLabel){const r=-this.size.width*.5;switch(this.fontOptions.align){case"middle":t=r,i=-this.size.height*.5;break;case"top":t=r,i=-(this.size.height+2);break;case"bottom":t=r,i=2;break}}return{left:t,top:i,width:this.size.width,height:this.size.height}}calculateLabelSize(e,t,i){let o=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0,r=arguments.length>4&&arguments[4]!==void 0?arguments[4]:0,A=arguments.length>5&&arguments[5]!==void 0?arguments[5]:"middle";this._processLabel(e,t,i),this.size.left=o-this.size.width*.5,this.size.top=r-this.size.height*.5,this.size.yLine=r+(1-this.lineCount)*.5*this.fontOptions.size,A==="hanging"&&(this.size.top+=.5*this.fontOptions.size,this.size.top+=4,this.size.yLine+=4)}getFormattingValues(e,t,i,o){const r=function(l,c,h){return c==="normal"?h==="mod"?"":l[h]:l[c][h]!==void 0?l[c][h]:l[h]},A={color:r(this.fontOptions,o,"color"),size:r(this.fontOptions,o,"size"),face:r(this.fontOptions,o,"face"),mod:r(this.fontOptions,o,"mod"),vadjust:r(this.fontOptions,o,"vadjust"),strokeWidth:this.fontOptions.strokeWidth,strokeColor:this.fontOptions.strokeColor};(t||i)&&(o==="normal"&&this.fontOptions.chooser===!0&&this.elementOptions.labelHighlightBold?A.mod="bold":typeof this.fontOptions.chooser=="function"&&this.fontOptions.chooser(A,this.elementOptions.id,t,i));let I="";return A.mod!==void 0&&A.mod!==""&&(I+=A.mod+" "),I+=A.size+"px "+A.face,e.font=I.replace(/"/g,""),A.font=e.font,A.height=A.size,A}differentState(e,t){return e!==this.selectedState||t!==this.hoverState}_processLabelText(e,t,i,o){return new b$(e,this,t,i).process(o)}_processLabel(e,t,i){if(this.labelDirty===!1&&!this.differentState(t,i))return;const o=this._processLabelText(e,t,i,this.elementOptions.label);this.fontOptions.minWdt>0&&o.width0&&o.height0&&(this.enableBorderDashes(e,t),e.stroke(),this.disableBorderDashes(e,t)),e.restore()}performFill(e,t){e.save(),e.fillStyle=t.color,this.enableShadow(e,t),fa(e).call(e),this.disableShadow(e,t),e.restore(),this.performStroke(e,t)}_addBoundingBoxMargin(e){this.boundingBox.left-=e,this.boundingBox.top-=e,this.boundingBox.bottom+=e,this.boundingBox.right+=e}_updateBoundingBox(e,t,i,o,r){i!==void 0&&this.resize(i,o,r),this.left=e-this.width/2,this.top=t-this.height/2,this.boundingBox.left=this.left,this.boundingBox.top=this.top,this.boundingBox.bottom=this.top+this.height,this.boundingBox.right=this.left+this.width}updateBoundingBox(e,t,i,o,r){this._updateBoundingBox(e,t,i,o,r)}getDimensionsFromLabel(e,t,i){this.textSize=this.labelModule.getTextSize(e,t,i);let o=this.textSize.width,r=this.textSize.height;const A=14;return o===0&&(o=A,r=A),{width:o,height:r}}}let y$=class extends Po{constructor(e,t,i){super(e,t,i),this._setMargins(i)}resize(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.selected,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:this.hover;if(this.needsRefresh(t,i)){const o=this.getDimensionsFromLabel(e,t,i);this.width=o.width+this.margin.right+this.margin.left,this.height=o.height+this.margin.top+this.margin.bottom,this.radius=this.width/2}}draw(e,t,i,o,r,A){this.resize(e,o,r),this.left=t-this.width/2,this.top=i-this.height/2,this.initContextForDraw(e,A),Tb(e,this.left,this.top,this.width,this.height,A.borderRadius),this.performFill(e,A),this.updateBoundingBox(t,i,e,o,r),this.labelModule.draw(e,this.left+this.textSize.width/2+this.margin.left,this.top+this.textSize.height/2+this.margin.top,o,r)}updateBoundingBox(e,t,i,o,r){this._updateBoundingBox(e,t,i,o,r);const A=this.options.shapeProperties.borderRadius;this._addBoundingBoxMargin(A)}distanceToBorder(e,t){e&&this.resize(e);const i=this.options.borderWidth;return Math.min(Math.abs(this.width/2/Math.cos(t)),Math.abs(this.height/2/Math.sin(t)))+i}};class Du extends Po{constructor(e,t,i){super(e,t,i),this.labelOffset=0,this.selected=!1}setOptions(e,t,i){this.options=e,t===void 0&&i===void 0||this.setImages(t,i)}setImages(e,t){t&&this.selected?(this.imageObj=t,this.imageObjAlt=e):(this.imageObj=e,this.imageObjAlt=t)}switchImages(e){const t=e&&!this.selected||!e&&this.selected;if(this.selected=e,this.imageObjAlt!==void 0&&t){const i=this.imageObj;this.imageObj=this.imageObjAlt,this.imageObjAlt=i}}_getImagePadding(){const e={top:0,right:0,bottom:0,left:0};if(this.options.imagePadding){const t=this.options.imagePadding;typeof t=="object"?(e.top=t.top,e.right=t.right,e.bottom=t.bottom,e.left=t.left):(e.top=t,e.right=t,e.bottom=t,e.left=t)}return e}_resizeImage(){let e,t;if(this.options.shapeProperties.useImageSize===!1){let i=1,o=1;this.imageObj.width&&this.imageObj.height&&(this.imageObj.width>this.imageObj.height?i=this.imageObj.width/this.imageObj.height:o=this.imageObj.height/this.imageObj.width),e=this.options.size*2*i,t=this.options.size*2*o}else{const i=this._getImagePadding();e=this.imageObj.width+i.left+i.right,t=this.imageObj.height+i.top+i.bottom}this.width=e,this.height=t,this.radius=.5*this.width}_drawRawCircle(e,t,i,o){this.initContextForDraw(e,o),Vc(e,t,i,o.size),this.performFill(e,o)}_drawImageAtPosition(e,t){if(this.imageObj.width!=0){e.globalAlpha=t.opacity!==void 0?t.opacity:1,this.enableShadow(e,t);let i=1;this.options.shapeProperties.interpolation===!0&&(i=this.imageObj.width/this.width/this.body.view.scale);const o=this._getImagePadding(),r=this.left+o.left,A=this.top+o.top,I=this.width-o.left-o.right,l=this.height-o.top-o.bottom;this.imageObj.drawImageAtPosition(e,i,r,A,I,l),this.disableShadow(e,t)}}_drawImageLabel(e,t,i,o,r){let A=0;if(this.height!==void 0){A=this.height*.5;const l=this.labelModule.getTextSize(e,o,r);l.lineCount>=1&&(A+=l.height/2)}const I=i+A;this.options.label&&(this.labelOffset=A),this.labelModule.draw(e,t,I,o,r,"hanging")}}let w$=class extends Du{constructor(e,t,i){super(e,t,i),this._setMargins(i)}resize(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.selected,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:this.hover;if(this.needsRefresh(t,i)){const o=this.getDimensionsFromLabel(e,t,i),r=Math.max(o.width+this.margin.right+this.margin.left,o.height+this.margin.top+this.margin.bottom);this.options.size=r/2,this.width=r,this.height=r,this.radius=this.width/2}}draw(e,t,i,o,r,A){this.resize(e,o,r),this.left=t-this.width/2,this.top=i-this.height/2,this._drawRawCircle(e,t,i,A),this.updateBoundingBox(t,i),this.labelModule.draw(e,this.left+this.textSize.width/2+this.margin.left,i,o,r)}updateBoundingBox(e,t){this.boundingBox.top=t-this.options.size,this.boundingBox.left=e-this.options.size,this.boundingBox.right=e+this.options.size,this.boundingBox.bottom=t+this.options.size}distanceToBorder(e){return e&&this.resize(e),this.width*.5}};class x$ extends Du{constructor(e,t,i,o,r){super(e,t,i),this.setImages(o,r)}resize(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.selected,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:this.hover;if(this.imageObj.src===void 0||this.imageObj.width===void 0||this.imageObj.height===void 0){const r=this.options.size*2;this.width=r,this.height=r,this.radius=.5*this.width;return}this.needsRefresh(t,i)&&this._resizeImage()}draw(e,t,i,o,r,A){this.switchImages(o),this.resize();let I=t,l=i;this.options.shapeProperties.coordinateOrigin==="top-left"?(this.left=t,this.top=i,I+=this.width/2,l+=this.height/2):(this.left=t-this.width/2,this.top=i-this.height/2),this._drawRawCircle(e,I,l,A),e.save(),e.clip(),this._drawImageAtPosition(e,A),e.restore(),this._drawImageLabel(e,I,l,o,r),this.updateBoundingBox(t,i)}updateBoundingBox(e,t){this.options.shapeProperties.coordinateOrigin==="top-left"?(this.boundingBox.top=t,this.boundingBox.left=e,this.boundingBox.right=e+this.options.size*2,this.boundingBox.bottom=t+this.options.size*2):(this.boundingBox.top=t-this.options.size,this.boundingBox.left=e-this.options.size,this.boundingBox.right=e+this.options.size,this.boundingBox.bottom=t+this.options.size),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelOffset)}distanceToBorder(e){return e&&this.resize(e),this.width*.5}}class Lg extends Po{constructor(e,t,i){super(e,t,i)}resize(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.selected,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:this.hover,o=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{size:this.options.size};if(this.needsRefresh(t,i)){var r,A;this.labelModule.getTextSize(e,t,i);const I=2*o.size;this.width=(r=this.customSizeWidth)!==null&&r!==void 0?r:I,this.height=(A=this.customSizeHeight)!==null&&A!==void 0?A:I,this.radius=.5*this.width}}_drawShape(e,t,i,o,r,A,I,l){return this.resize(e,A,I,l),this.left=o-this.width/2,this.top=r-this.height/2,this.initContextForDraw(e,l),sZ(t)(e,o,r,l.size),this.performFill(e,l),this.options.icon!==void 0&&this.options.icon.code!==void 0&&(e.font=(A?"bold ":"")+this.height/2+"px "+(this.options.icon.face||"FontAwesome"),e.fillStyle=this.options.icon.color||"black",e.textAlign="center",e.textBaseline="middle",e.fillText(this.options.icon.code,o,r)),{drawExternalLabel:()=>{if(this.options.label!==void 0){this.labelModule.calculateLabelSize(e,A,I,o,r,"hanging");const c=r+.5*this.height+.5*this.labelModule.size.height;this.labelModule.draw(e,o,c,A,I,"hanging")}this.updateBoundingBox(o,r)}}}updateBoundingBox(e,t){this.boundingBox.top=t-this.options.size,this.boundingBox.left=e-this.options.size,this.boundingBox.right=e+this.options.size,this.boundingBox.bottom=t+this.options.size,this.options.label!==void 0&&this.labelModule.size.width>0&&(this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelModule.size.height))}}function rx(n,e){var t=xt(n);if(Bi){var i=Bi(n);e&&(i=$t(i).call(i,function(o){return Li(n,o).enumerable})),t.push.apply(t,i)}return t}function E$(n){for(var e=1;e{e.save(),l(),e.restore()}}return I.nodeDimensions&&(this.customSizeWidth=I.nodeDimensions.width,this.customSizeHeight=I.nodeDimensions.height),I}distanceToBorder(e,t){return this._distanceToBorder(e,t)}}class T$ extends Po{constructor(e,t,i){super(e,t,i),this._setMargins(i)}resize(e,t,i){if(this.needsRefresh(t,i)){const r=this.getDimensionsFromLabel(e,t,i).width+this.margin.right+this.margin.left;this.width=r,this.height=r,this.radius=this.width/2}}draw(e,t,i,o,r,A){this.resize(e,o,r),this.left=t-this.width/2,this.top=i-this.height/2,this.initContextForDraw(e,A),Ob(e,t-this.width/2,i-this.height/2,this.width,this.height),this.performFill(e,A),this.updateBoundingBox(t,i,e,o,r),this.labelModule.draw(e,this.left+this.textSize.width/2+this.margin.left,this.top+this.textSize.height/2+this.margin.top,o,r)}distanceToBorder(e,t){return this._distanceToBorder(e,t)}}let O$=class extends Lg{constructor(e,t,i){super(e,t,i)}draw(e,t,i,o,r,A){return this._drawShape(e,"diamond",4,t,i,o,r,A)}distanceToBorder(e,t){return this._distanceToBorder(e,t)}};class N$ extends Lg{constructor(e,t,i){super(e,t,i)}draw(e,t,i,o,r,A){return this._drawShape(e,"circle",2,t,i,o,r,A)}distanceToBorder(e){return e&&this.resize(e),this.options.size}}class ax extends Po{constructor(e,t,i){super(e,t,i)}resize(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.selected,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:this.hover;if(this.needsRefresh(t,i)){const o=this.getDimensionsFromLabel(e,t,i);this.height=o.height*2,this.width=o.width+o.height,this.radius=.5*this.width}}draw(e,t,i,o,r,A){this.resize(e,o,r),this.left=t-this.width*.5,this.top=i-this.height*.5,this.initContextForDraw(e,A),Uc(e,this.left,this.top,this.width,this.height),this.performFill(e,A),this.updateBoundingBox(t,i,e,o,r),this.labelModule.draw(e,t,i,o,r)}distanceToBorder(e,t){e&&this.resize(e);const i=this.width*.5,o=this.height*.5,r=Math.sin(t)*i,A=Math.cos(t)*o;return i*o/Math.sqrt(r*r+A*A)}}class D$ extends Po{constructor(e,t,i){super(e,t,i),this._setMargins(i)}resize(e,t,i){this.needsRefresh(t,i)&&(this.iconSize={width:Number(this.options.icon.size),height:Number(this.options.icon.size)},this.width=this.iconSize.width+this.margin.right+this.margin.left,this.height=this.iconSize.height+this.margin.top+this.margin.bottom,this.radius=.5*this.width)}draw(e,t,i,o,r,A){return this.resize(e,o,r),this.options.icon.size=this.options.icon.size||50,this.left=t-this.width/2,this.top=i-this.height/2,this._icon(e,t,i,o,r,A),{drawExternalLabel:()=>{this.options.label!==void 0&&this.labelModule.draw(e,this.left+this.iconSize.width/2+this.margin.left,i+this.height/2+5,o),this.updateBoundingBox(t,i)}}}updateBoundingBox(e,t){this.boundingBox.top=t-this.options.icon.size*.5,this.boundingBox.left=e-this.options.icon.size*.5,this.boundingBox.right=e+this.options.icon.size*.5,this.boundingBox.bottom=t+this.options.icon.size*.5,this.options.label!==void 0&&this.labelModule.size.width>0&&(this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelModule.size.height+5))}_icon(e,t,i,o,r,A){const I=Number(this.options.icon.size);this.options.icon.code!==void 0?(e.font=[this.options.icon.weight!=null?this.options.icon.weight:o?"bold":"",(this.options.icon.weight!=null&&o?5:0)+I+"px",this.options.icon.face].join(" "),e.fillStyle=this.options.icon.color||"black",e.textAlign="center",e.textBaseline="middle",this.enableShadow(e,A),e.fillText(this.options.icon.code,t,i),this.disableShadow(e,A)):console.error("When using the icon shape, you need to define the code in the icon options object. This can be done per node or globally.")}distanceToBorder(e,t){return this._distanceToBorder(e,t)}}let M$=class extends Du{constructor(e,t,i,o,r){super(e,t,i),this.setImages(o,r)}resize(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.selected,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:this.hover;if(this.imageObj.src===void 0||this.imageObj.width===void 0||this.imageObj.height===void 0){const r=this.options.size*2;this.width=r,this.height=r;return}this.needsRefresh(t,i)&&this._resizeImage()}draw(e,t,i,o,r,A){e.save(),this.switchImages(o),this.resize();let I=t,l=i;if(this.options.shapeProperties.coordinateOrigin==="top-left"?(this.left=t,this.top=i,I+=this.width/2,l+=this.height/2):(this.left=t-this.width/2,this.top=i-this.height/2),this.options.shapeProperties.useBorderWithImage===!0){const c=this.options.borderWidth,h=this.options.borderWidthSelected||2*this.options.borderWidth,p=(o?h:c)/this.body.view.scale;e.lineWidth=Math.min(this.width,p),e.beginPath();let m=o?this.options.color.highlight.border:r?this.options.color.hover.border:this.options.color.border,b=o?this.options.color.highlight.background:r?this.options.color.hover.background:this.options.color.background;A.opacity!==void 0&&(m=si(m,A.opacity),b=si(b,A.opacity)),e.strokeStyle=m,e.fillStyle=b,e.rect(this.left-.5*e.lineWidth,this.top-.5*e.lineWidth,this.width+e.lineWidth,this.height+e.lineWidth),fa(e).call(e),this.performStroke(e,A),e.closePath()}this._drawImageAtPosition(e,A),this._drawImageLabel(e,I,l,o,r),this.updateBoundingBox(t,i),e.restore()}updateBoundingBox(e,t){this.resize(),this.options.shapeProperties.coordinateOrigin==="top-left"?(this.left=e,this.top=t):(this.left=e-this.width/2,this.top=t-this.height/2),this.boundingBox.left=this.left,this.boundingBox.top=this.top,this.boundingBox.bottom=this.top+this.height,this.boundingBox.right=this.left+this.width,this.options.label!==void 0&&this.labelModule.size.width>0&&(this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelOffset))}distanceToBorder(e,t){return this._distanceToBorder(e,t)}};class R$ extends Lg{constructor(e,t,i){super(e,t,i)}draw(e,t,i,o,r,A){return this._drawShape(e,"square",2,t,i,o,r,A)}distanceToBorder(e,t){return this._distanceToBorder(e,t)}}class k$ extends Lg{constructor(e,t,i){super(e,t,i)}draw(e,t,i,o,r,A){return this._drawShape(e,"hexagon",4,t,i,o,r,A)}distanceToBorder(e,t){return this._distanceToBorder(e,t)}}class z$ extends Lg{constructor(e,t,i){super(e,t,i)}draw(e,t,i,o,r,A){return this._drawShape(e,"star",4,t,i,o,r,A)}distanceToBorder(e,t){return this._distanceToBorder(e,t)}}class _$ extends Po{constructor(e,t,i){super(e,t,i),this._setMargins(i)}resize(e,t,i){this.needsRefresh(t,i)&&(this.textSize=this.labelModule.getTextSize(e,t,i),this.width=this.textSize.width+this.margin.right+this.margin.left,this.height=this.textSize.height+this.margin.top+this.margin.bottom,this.radius=.5*this.width)}draw(e,t,i,o,r,A){this.resize(e,o,r),this.left=t-this.width/2,this.top=i-this.height/2,this.enableShadow(e,A),this.labelModule.draw(e,this.left+this.textSize.width/2+this.margin.left,this.top+this.textSize.height/2+this.margin.top,o,r),this.disableShadow(e,A),this.updateBoundingBox(t,i,e,o,r)}distanceToBorder(e,t){return this._distanceToBorder(e,t)}}let j$=class extends Lg{constructor(e,t,i){super(e,t,i)}draw(e,t,i,o,r,A){return this._drawShape(e,"triangle",3,t,i,o,r,A)}distanceToBorder(e,t){return this._distanceToBorder(e,t)}};class Z$ extends Lg{constructor(e,t,i){super(e,t,i)}draw(e,t,i,o,r,A){return this._drawShape(e,"triangleDown",3,t,i,o,r,A)}distanceToBorder(e,t){return this._distanceToBorder(e,t)}}function Ax(n,e){var t=xt(n);if(Bi){var i=Bi(n);e&&(i=$t(i).call(i,function(o){return Li(n,o).enumerable})),t.push.apply(t,i)}return t}function Cx(n){for(var e=1;et[c]!=null);l.push("font"),YC(l,e,I),e.color=Jd(e.color)}static parseOptions(e,t){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,o=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},r=arguments.length>4?arguments[4]:void 0;if(YC(["color","fixed","shadow"],e,t,i),Nt.checkMass(t),e.opacity!==void 0&&(Nt.checkOpacity(e.opacity)||(console.error("Invalid option for node opacity. Value must be between 0 and 1, found: "+e.opacity),e.opacity=void 0)),t.opacity!==void 0&&(Nt.checkOpacity(t.opacity)||(console.error("Invalid option for node opacity. Value must be between 0 and 1, found: "+t.opacity),t.opacity=void 0)),t.shapeProperties&&!Nt.checkCoordinateOrigin(t.shapeProperties.coordinateOrigin)&&console.error("Invalid option for node coordinateOrigin, found: "+t.shapeProperties.coordinateOrigin),ri(e,t,"shadow",o),t.color!==void 0&&t.color!==null){const I=Jd(t.color);O1(e.color,I)}else i===!0&&t.color===null&&(e.color=_g(o.color));t.fixed!==void 0&&t.fixed!==null&&(typeof t.fixed=="boolean"?(e.fixed.x=t.fixed,e.fixed.y=t.fixed):(t.fixed.x!==void 0&&typeof t.fixed.x=="boolean"&&(e.fixed.x=t.fixed.x),t.fixed.y!==void 0&&typeof t.fixed.y=="boolean"&&(e.fixed.y=t.fixed.y))),i===!0&&t.font===null&&(e.font=_g(o.font)),Nt.updateGroupOptions(e,t,r),t.scaling!==void 0&&ri(e.scaling,t.scaling,"label",o.scaling)}getFormattingValues(){const e={color:this.options.color.background,opacity:this.options.opacity,borderWidth:this.options.borderWidth,borderColor:this.options.color.border,size:this.options.size,borderDashes:this.options.shapeProperties.borderDashes,borderRadius:this.options.shapeProperties.borderRadius,shadow:this.options.shadow.enabled,shadowColor:this.options.shadow.color,shadowSize:this.options.shadow.size,shadowX:this.options.shadow.x,shadowY:this.options.shadow.y};if(this.selected||this.hover?this.chooser===!0?this.selected?(this.options.borderWidthSelected!=null?e.borderWidth=this.options.borderWidthSelected:e.borderWidth*=2,e.color=this.options.color.highlight.background,e.borderColor=this.options.color.highlight.border,e.shadow=this.options.shadow.enabled):this.hover&&(e.color=this.options.color.hover.background,e.borderColor=this.options.color.hover.border,e.shadow=this.options.shadow.enabled):typeof this.chooser=="function"&&(this.chooser(e,this.options.id,this.selected,this.hover),e.shadow===!1&&(e.shadowColor!==this.options.shadow.color||e.shadowSize!==this.options.shadow.size||e.shadowX!==this.options.shadow.x||e.shadowY!==this.options.shadow.y)&&(e.shadow=!0)):e.shadow=this.options.shadow.enabled,this.options.opacity!==void 0){const t=this.options.opacity;e.borderColor=si(e.borderColor,t),e.color=si(e.color,t),e.shadowColor=si(e.shadowColor,t)}return e}updateLabelModule(e){(this.options.label===void 0||this.options.label===null)&&(this.options.label=""),Nt.updateGroupOptions(this.options,Cx(Cx({},e),{},{color:e&&e.color||this._localColor||void 0}),this.grouplist);const t=this.grouplist.get(this.options.group,!1),i=[e,this.options,t,this.globalOptions,this.defaultOptions];this.labelModule.update(this.options,i),this.labelModule.baseSize!==void 0&&(this.baseFontSize=this.labelModule.baseSize)}updateShape(e){if(e===this.options.shape&&this.shape)this.shape.setOptions(this.options,this.imageObj,this.imageObjAlt);else switch(this.options.shape){case"box":this.shape=new y$(this.options,this.body,this.labelModule);break;case"circle":this.shape=new w$(this.options,this.body,this.labelModule);break;case"circularImage":this.shape=new x$(this.options,this.body,this.labelModule,this.imageObj,this.imageObjAlt);break;case"custom":this.shape=new S$(this.options,this.body,this.labelModule,this.options.ctxRenderer);break;case"database":this.shape=new T$(this.options,this.body,this.labelModule);break;case"diamond":this.shape=new O$(this.options,this.body,this.labelModule);break;case"dot":this.shape=new N$(this.options,this.body,this.labelModule);break;case"ellipse":this.shape=new ax(this.options,this.body,this.labelModule);break;case"icon":this.shape=new D$(this.options,this.body,this.labelModule);break;case"image":this.shape=new M$(this.options,this.body,this.labelModule,this.imageObj,this.imageObjAlt);break;case"square":this.shape=new R$(this.options,this.body,this.labelModule);break;case"hexagon":this.shape=new k$(this.options,this.body,this.labelModule);break;case"star":this.shape=new z$(this.options,this.body,this.labelModule);break;case"text":this.shape=new _$(this.options,this.body,this.labelModule);break;case"triangle":this.shape=new j$(this.options,this.body,this.labelModule);break;case"triangleDown":this.shape=new Z$(this.options,this.body,this.labelModule);break;default:this.shape=new ax(this.options,this.body,this.labelModule);break}this.needsRefresh()}select(){this.selected=!0,this.needsRefresh()}unselect(){this.selected=!1,this.needsRefresh()}needsRefresh(){this.shape.refreshNeeded=!0}getTitle(){return this.options.title}distanceToBorder(e,t){return this.shape.distanceToBorder(e,t)}isFixed(){return this.options.fixed.x&&this.options.fixed.y}isSelected(){return this.selected}getValue(){return this.options.value}getLabelSize(){return this.labelModule.size()}setValueRange(e,t,i){if(this.options.value!==void 0){const o=this.options.scaling.customScalingFunction(e,t,i,this.options.value),r=this.options.scaling.max-this.options.scaling.min;if(this.options.scaling.label.enabled===!0){const A=this.options.scaling.label.max-this.options.scaling.label.min;this.options.font.size=this.options.scaling.label.min+o*A}this.options.size=this.options.scaling.min+o*r}else this.options.size=this.baseSize,this.options.font.size=this.baseFontSize;this.updateLabelModule()}draw(e){const t=this.getFormattingValues();return this.shape.draw(e,this.x,this.y,this.selected,this.hover,t)||{}}updateBoundingBox(e){this.shape.updateBoundingBox(this.x,this.y,e)}resize(e){const t=this.getFormattingValues();this.shape.resize(e,this.selected,this.hover,t)}getItemsOnPoint(e){const t=[];return this.labelModule.visible()&&Nu(this.labelModule.getSize(),e)&&t.push({nodeId:this.id,labelId:0}),Nu(this.shape.boundingBox,e)&&t.push({nodeId:this.id}),t}isOverlappingWith(e){return this.shape.lefte.left&&this.shape.tope.top}isBoundingBoxOverlappingWith(e){return this.shape.boundingBox.lefte.left&&this.shape.boundingBox.tope.top}static checkMass(e,t){if(e.mass!==void 0&&e.mass<=0){let i="";t!==void 0&&(i=" in node id: "+t),console.error("%cNegative or zero mass disallowed"+i+", setting mass to 1.",k1),e.mass=1}}}class P${constructor(e,t,i,o){var r;if(this.body=e,this.images=t,this.groups=i,this.layoutEngine=o,this.body.functions.createNode=oe(r=this.create).call(r,this),this.nodesListeners={add:(A,I)=>{this.add(I.items)},update:(A,I)=>{this.update(I.items,I.data,I.oldData)},remove:(A,I)=>{this.remove(I.items)}},this.defaultOptions={borderWidth:1,borderWidthSelected:void 0,brokenImage:void 0,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},opacity:void 0,fixed:{x:!1,y:!1},font:{color:"#343434",size:14,face:"arial",background:"none",strokeWidth:0,strokeColor:"#ffffff",align:"center",vadjust:0,multi:!1,bold:{mod:"bold"},boldital:{mod:"bold italic"},ital:{mod:"italic"},mono:{mod:"",size:15,face:"monospace",vadjust:2}},group:void 0,hidden:!1,icon:{face:"FontAwesome",code:void 0,size:50,color:"#2B7CE9"},image:void 0,imagePadding:{top:0,right:0,bottom:0,left:0},label:void 0,labelHighlightBold:!0,level:void 0,margin:{top:5,right:5,bottom:5,left:5},mass:1,physics:!0,scaling:{min:10,max:30,label:{enabled:!1,min:14,max:30,maxVisible:30,drawThreshold:5},customScalingFunction:function(A,I,l,c){if(I===A)return .5;{const h=1/(I-A);return Math.max(0,(c-A)*h)}}},shadow:{enabled:!1,color:"rgba(0,0,0,0.5)",size:10,x:5,y:5},shape:"ellipse",shapeProperties:{borderDashes:!1,borderRadius:6,interpolation:!0,useImageSize:!1,useBorderWithImage:!1,coordinateOrigin:"center"},size:25,title:void 0,value:void 0,x:void 0,y:void 0},this.defaultOptions.mass<=0)throw"Internal error: mass in defaultOptions of NodesHandler may not be zero or negative";this.options=_g(this.defaultOptions),this.bindEventListeners()}bindEventListeners(){var e,t;this.body.emitter.on("refreshNodes",oe(e=this.refresh).call(e,this)),this.body.emitter.on("refresh",oe(t=this.refresh).call(t,this)),this.body.emitter.on("destroy",()=>{Ke(this.nodesListeners,(i,o)=>{this.body.data.nodes&&this.body.data.nodes.off(o,i)}),delete this.body.functions.createNode,delete this.nodesListeners.add,delete this.nodesListeners.update,delete this.nodesListeners.remove,delete this.nodesListeners})}setOptions(e){if(e!==void 0){if(Nt.parseOptions(this.options,e),e.opacity!==void 0&&(du(e.opacity)||!jo(e.opacity)||e.opacity<0||e.opacity>1?console.error("Invalid option for node opacity. Value must be between 0 and 1, found: "+e.opacity):this.options.opacity=e.opacity),e.shape!==void 0)for(const t in this.body.nodes)Object.prototype.hasOwnProperty.call(this.body.nodes,t)&&this.body.nodes[t].updateShape();if(typeof e.font<"u"||typeof e.widthConstraint<"u"||typeof e.heightConstraint<"u")for(const t of xt(this.body.nodes))this.body.nodes[t].updateLabelModule(),this.body.nodes[t].needsRefresh();if(e.size!==void 0)for(const t in this.body.nodes)Object.prototype.hasOwnProperty.call(this.body.nodes,t)&&this.body.nodes[t].needsRefresh();(e.hidden!==void 0||e.physics!==void 0)&&this.body.emitter.emit("_dataChanged")}}setData(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;const i=this.body.data.nodes;if(Jw("id",e))this.body.data.nodes=e;else if(gt(e))this.body.data.nodes=new Vs,this.body.data.nodes.add(e);else if(!e)this.body.data.nodes=new Vs;else throw new TypeError("Array or DataSet expected");if(i&&Ke(this.nodesListeners,function(o,r){i.off(r,o)}),this.body.nodes={},this.body.data.nodes){const o=this;Ke(this.nodesListeners,function(A,I){o.body.data.nodes.on(I,A)});const r=this.body.data.nodes.getIds();this.add(r,!0)}t===!1&&this.body.emitter.emit("_dataChanged")}add(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,i;const o=[];for(let r=0;r1&&arguments[1]!==void 0?arguments[1]:Nt;return new t(e,this.body,this.images,this.groups,this.options,this.defaultOptions)}refresh(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;Ke(this.body.nodes,(t,i)=>{const o=this.body.data.nodes.get(i);o!==void 0&&(e===!0&&t.setOptions({x:null,y:null}),t.setOptions({fixed:!1}),t.setOptions(o))})}getPositions(e){const t={};if(e!==void 0){if(gt(e)===!0){for(let i=0;i{this.body.emitter.emit("startSimulation")},0)):console.error("Node id supplied to moveNode does not exist. Provided: ",e)}}var B$=ke,Ix=Math.hypot,L$=Math.abs,G$=Math.sqrt,F$=!!Ix&&Ix(1/0,NaN)!==1/0;B$({target:"Math",stat:!0,forced:F$},{hypot:function(e,t){for(var i=0,o=0,r=arguments.length,A=0,I,l;o0?(l=I/A,i+=l*l):i+=I;return A===1/0?1/0:A*G$(i)}});var V$=Ct,U$=V$.Math.hypot,Y$=U$,H$=Y$,K$=H$,W$=Ne(K$);class Ht{static transform(e,t){gt(e)||(e=[e]);const i=t.point.x,o=t.point.y,r=t.angle,A=t.length;for(let I=0;I4&&arguments[4]!==void 0?arguments[4]:this.getViaNode();e.strokeStyle=this.getColor(e,t),e.lineWidth=t.width,t.dashes!==!1?this._drawDashedLine(e,t,r):this._drawLine(e,t,r)}_drawLine(e,t,i,o,r){if(this.from!=this.to)this._line(e,t,i,o,r);else{const[A,I,l]=this._getCircleData(e);this._circle(e,t,A,I,l)}}_drawDashedLine(e,t,i,o,r){e.lineCap="round";const A=gt(t.dashes)?t.dashes:[5,5];if(e.setLineDash!==void 0){if(e.save(),e.setLineDash(A),e.lineDashOffset=0,this.from!=this.to)this._line(e,t,i);else{const[I,l,c]=this._getCircleData(e);this._circle(e,t,I,l,c)}e.setLineDash([0]),e.lineDashOffset=0,e.restore()}else{if(this.from!=this.to)Nb(e,this.from.x,this.from.y,this.to.x,this.to.y,A);else{const[I,l,c]=this._getCircleData(e);this._circle(e,t,I,l,c)}this.enableShadow(e,t),e.stroke(),this.disableShadow(e,t)}}findBorderPosition(e,t,i){return this.from!=this.to?this._findBorderPosition(e,t,i):this._findBorderPositionCircle(e,t,i)}findBorderPositions(e){if(this.from!=this.to)return{from:this._findBorderPosition(this.from,e),to:this._findBorderPosition(this.to,e)};{var t;const[i,o]=xi(t=this._getCircleData(e)).call(t,0,2);return{from:this._findBorderPositionCircle(this.from,e,{x:i,y:o,low:.25,high:.6,direction:-1}),to:this._findBorderPositionCircle(this.from,e,{x:i,y:o,low:.6,high:.8,direction:1})}}}_getCircleData(e){const t=this.options.selfReference.size;e!==void 0&&this.from.shape.width===void 0&&this.from.shape.resize(e);const i=ox(e,this.options.selfReference.angle,t,this.from);return[i.x,i.y,t]}_pointOnCircle(e,t,i,o){const r=o*2*Math.PI;return{x:e+i*Math.cos(r),y:t-i*Math.sin(r)}}_findBorderPositionCircle(e,t,i){const o=i.x,r=i.y;let A=i.low,I=i.high;const l=i.direction,c=10,h=this.options.selfReference.size,p=.05;let m,b=(A+I)*.5,w=0;this.options.arrowStrikethrough===!0&&(l===-1?w=this.options.endPointOffset.from:l===1&&(w=this.options.endPointOffset.to));let O=0;do{b=(A+I)*.5,m=this._pointOnCircle(o,r,h,b);const x=Math.atan2(e.y-m.y,e.x-m.x),S=e.distanceToBorder(t,x)+w,E=Math.sqrt(Math.pow(m.x-e.x,2)+Math.pow(m.y-e.y,2)),_=S-E;if(Math.abs(_)0?l>0?A=b:I=b:l>0?I=b:A=b,++O}while(A<=I&&O1?h=1:h<0&&(h=0);const p=e+h*I,m=t+h*l,b=p-r,w=m-A;return Math.sqrt(b*b+w*w)}getArrowData(e,t,i,o,r,A){let I,l,c,h,p,m,b;const w=A.width;t==="from"?(c=this.from,h=this.to,p=A.fromArrowScale<0,m=Math.abs(A.fromArrowScale),b=A.fromArrowType):t==="to"?(c=this.to,h=this.from,p=A.toArrowScale<0,m=Math.abs(A.toArrowScale),b=A.toArrowType):(c=this.to,h=this.from,p=A.middleArrowScale<0,m=Math.abs(A.middleArrowScale),b=A.middleArrowType);const O=15*m+3*w;if(c!=h){const _=W$(c.x-h.x,c.y-h.y),j=O/_;if(t!=="middle")if(this.options.smooth.enabled===!0){const X=this._findBorderPosition(c,e,{via:i}),ne=this.getPoint(X.t+j*(t==="from"?1:-1),i);I=Math.atan2(X.y-ne.y,X.x-ne.x),l=X}else I=Math.atan2(c.y-h.y,c.x-h.x),l=this._findBorderPosition(c,e);else{const X=(p?-j:j)/2,ne=this.getPoint(.5+X,i),F=this.getPoint(.5-X,i);I=Math.atan2(ne.y-F.y,ne.x-F.x),l=this.getPoint(.5,i)}}else{const[_,j,X]=this._getCircleData(e);if(t==="from"){const ne=this.options.selfReference.angle,F=this.options.selfReference.angle+Math.PI,V=this._findBorderPositionCircle(this.from,e,{x:_,y:j,low:ne,high:F,direction:-1});I=V.t*-2*Math.PI+1.5*Math.PI+.1*Math.PI,l=V}else if(t==="to"){const ne=this.options.selfReference.angle,F=this.options.selfReference.angle+Math.PI,V=this._findBorderPositionCircle(this.from,e,{x:_,y:j,low:ne,high:F,direction:1});I=V.t*-2*Math.PI+1.5*Math.PI-1.1*Math.PI,l=V}else{const ne=this.options.selfReference.angle/(2*Math.PI);l=this._pointOnCircle(_,j,X,ne),I=ne*-2*Math.PI+1.5*Math.PI+.1*Math.PI}}const x=l.x-O*.9*Math.cos(I),S=l.y-O*.9*Math.sin(I);return{point:l,core:{x,y:S},angle:I,length:O,type:b}}drawArrowHead(e,t,i,o,r){e.strokeStyle=this.getColor(e,t),e.fillStyle=e.strokeStyle,e.lineWidth=t.width,lx.draw(e,r)&&(this.enableShadow(e,t),fa(e).call(e),this.disableShadow(e,t))}enableShadow(e,t){t.shadow===!0&&(e.shadowColor=t.shadowColor,e.shadowBlur=t.shadowSize,e.shadowOffsetX=t.shadowX,e.shadowOffsetY=t.shadowY)}disableShadow(e,t){t.shadow===!0&&(e.shadowColor="rgba(0,0,0,0)",e.shadowBlur=0,e.shadowOffsetX=0,e.shadowOffsetY=0)}drawBackground(e,t){if(t.background!==!1){const i={strokeStyle:e.strokeStyle,lineWidth:e.lineWidth,dashes:e.dashes};e.strokeStyle=t.backgroundColor,e.lineWidth=t.backgroundSize,this.setStrokeDashed(e,t.backgroundDashes),e.stroke(),e.strokeStyle=i.strokeStyle,e.lineWidth=i.lineWidth,e.dashes=i.dashes,this.setStrokeDashed(e,t.dashes)}}setStrokeDashed(e,t){if(t!==!1)if(e.setLineDash!==void 0){const i=gt(t)?t:[5,5];e.setLineDash(i)}else console.warn("setLineDash is not supported in this browser. The dashed stroke cannot be used.");else e.setLineDash!==void 0?e.setLineDash([]):console.warn("setLineDash is not supported in this browser. The dashed stroke cannot be used.")}}function hx(n,e){var t=xt(n);if(Bi){var i=Bi(n);e&&(i=$t(i).call(i,function(o){return Li(n,o).enumerable})),t.push.apply(t,i)}return t}function fx(n){for(var e=1;e2&&arguments[2]!==void 0?arguments[2]:this._getViaCoordinates();const o=10,r=.2;let A=!1,I=1,l=0,c=this.to,h,p,m=this.options.endPointOffset?this.options.endPointOffset.to:0;e.id===this.from.id&&(c=this.from,A=!0,m=this.options.endPointOffset?this.options.endPointOffset.from:0),this.options.arrowStrikethrough===!1&&(m=0);let b=0;do{p=(l+I)*.5,h=this.getPoint(p,i);const w=Math.atan2(c.y-h.y,c.x-h.x),O=c.distanceToBorder(t,w)+m,x=Math.sqrt(Math.pow(h.x-c.x,2)+Math.pow(h.y-c.y,2)),S=O-x;if(Math.abs(S)0&&(c=this._getDistanceToLine(w,O,m,b,r,A),l=c{this.positionBezierNode()},this._body.emitter.on("_repositionBezierNodes",this._boundFunction)}setOptions(e){super.setOptions(e);let t=!1;this.options.physics!==e.physics&&(t=!0),this.options=e,this.id=this.options.id,this.from=this._body.nodes[this.options.from],this.to=this._body.nodes[this.options.to],this.setupSupportNode(),this.connect(),t===!0&&(this.via.setOptions({physics:this.options.physics}),this.positionBezierNode())}connect(){this.from=this._body.nodes[this.options.from],this.to=this._body.nodes[this.options.to],this.from===void 0||this.to===void 0||this.options.physics===!1?this.via.setOptions({physics:!1}):this.from.id===this.to.id?this.via.setOptions({physics:!1}):this.via.setOptions({physics:!0})}cleanup(){return this._body.emitter.off("_repositionBezierNodes",this._boundFunction),this.via!==void 0?(delete this._body.nodes[this.via.id],this.via=void 0,!0):!1}setupSupportNode(){if(this.via===void 0){const e="edgeId:"+this.id,t=this._body.functions.createNode({id:e,shape:"circle",physics:!0,hidden:!0});this._body.nodes[e]=t,this.via=t,this.via.parentEdgeId=this.id,this.positionBezierNode()}}positionBezierNode(){this.via!==void 0&&this.from!==void 0&&this.to!==void 0?(this.via.x=.5*(this.from.x+this.to.x),this.via.y=.5*(this.from.y+this.to.y)):this.via!==void 0&&(this.via.x=0,this.via.y=0)}_line(e,t,i){this._bezierCurve(e,t,i)}_getViaCoordinates(){return this.via}getViaNode(){return this.via}getPoint(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.via;if(this.from===this.to){const[i,o,r]=this._getCircleData(),A=2*Math.PI*(1-e);return{x:i+r*Math.sin(A),y:o+r-r*(1-Math.cos(A))}}else return{x:Math.pow(1-e,2)*this.fromPoint.x+2*e*(1-e)*t.x+Math.pow(e,2)*this.toPoint.x,y:Math.pow(1-e,2)*this.fromPoint.y+2*e*(1-e)*t.y+Math.pow(e,2)*this.toPoint.y}}_findBorderPosition(e,t){return this._findBorderPositionBezier(e,t,this.via)}_getDistanceToEdge(e,t,i,o,r,A){return this._getDistanceToBezierEdge(e,t,i,o,r,A,this.via)}}class mx extends Mu{constructor(e,t,i){super(e,t,i)}_line(e,t,i){this._bezierCurve(e,t,i)}getViaNode(){return this._getViaCoordinates()}_getViaCoordinates(){const e=this.options.smooth.roundness,t=this.options.smooth.type;let i=Math.abs(this.from.x-this.to.x),o=Math.abs(this.from.y-this.to.y);if(t==="discrete"||t==="diagonalCross"){let r,A;i<=o?r=A=e*o:r=A=e*i,this.from.x>this.to.x&&(r=-r),this.from.y>=this.to.y&&(A=-A);let I=this.from.x+r,l=this.from.y+A;return t==="discrete"&&(i<=o?I=ithis.to.x&&(r=-r),this.from.y>=this.to.y&&(A=-A);let I=this.from.x+r,l=this.from.y+A;return i<=o?this.from.x<=this.to.x?I=this.to.xI?this.to.x:I:this.from.y>=this.to.y?l=this.to.y>l?this.to.y:l:l=this.to.y2&&arguments[2]!==void 0?arguments[2]:{};return this._findBorderPositionBezier(e,t,i.via)}_getDistanceToEdge(e,t,i,o,r,A){let I=arguments.length>6&&arguments[6]!==void 0?arguments[6]:this._getViaCoordinates();return this._getDistanceToBezierEdge(e,t,i,o,r,A,I)}getPoint(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this._getViaCoordinates();const i=e,o=Math.pow(1-i,2)*this.fromPoint.x+2*i*(1-i)*t.x+Math.pow(i,2)*this.toPoint.x,r=Math.pow(1-i,2)*this.fromPoint.y+2*i*(1-i)*t.y+Math.pow(i,2)*this.toPoint.y;return{x:o,y:r}}}class rq extends Mu{constructor(e,t,i){super(e,t,i)}_getDistanceToBezierEdge2(e,t,i,o,r,A,I,l){let c=1e9,h=e,p=t;const m=[0,0,0,0];for(let b=1;b<10;b++){const w=.1*b;m[0]=Math.pow(1-w,3),m[1]=3*w*Math.pow(1-w,2),m[2]=3*Math.pow(w,2)*(1-w),m[3]=Math.pow(w,3);const O=m[0]*e+m[1]*I.x+m[2]*l.x+m[3]*i,x=m[0]*t+m[1]*I.y+m[2]*l.y+m[3]*o;if(b>0){const S=this._getDistanceToLine(h,p,O,x,r,A);c=SMath.abs(t)||this.options.smooth.forceDirection===!0||this.options.smooth.forceDirection==="horizontal")&&this.options.smooth.forceDirection!=="vertical"?(o=this.from.y,A=this.to.y,i=this.from.x-I*e,r=this.to.x+I*e):(o=this.from.y-I*t,A=this.to.y+I*t,i=this.from.x,r=this.to.x),[{x:i,y:o},{x:r,y:A}]}getViaNode(){return this._getViaCoordinates()}_findBorderPosition(e,t){return this._findBorderPositionBezier(e,t)}_getDistanceToEdge(e,t,i,o,r,A){let[I,l]=arguments.length>6&&arguments[6]!==void 0?arguments[6]:this._getViaCoordinates();return this._getDistanceToBezierEdge2(e,t,i,o,r,A,I,l)}getPoint(e){let[t,i]=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this._getViaCoordinates();const o=e,r=[Math.pow(1-o,3),3*o*Math.pow(1-o,2),3*Math.pow(o,2)*(1-o),Math.pow(o,3)],A=r[0]*this.fromPoint.x+r[1]*t.x+r[2]*i.x+r[3]*this.toPoint.x,I=r[0]*this.fromPoint.y+r[1]*t.y+r[2]*i.y+r[3]*this.toPoint.y;return{x:A,y:I}}}class bx extends ux{constructor(e,t,i){super(e,t,i)}_line(e,t){e.beginPath(),e.moveTo(this.fromPoint.x,this.fromPoint.y),e.lineTo(this.toPoint.x,this.toPoint.y),this.enableShadow(e,t),e.stroke(),this.disableShadow(e,t)}getViaNode(){}getPoint(e){return{x:(1-e)*this.fromPoint.x+e*this.toPoint.x,y:(1-e)*this.fromPoint.y+e*this.toPoint.y}}_findBorderPosition(e,t){let i=this.to,o=this.from;e.id===this.from.id&&(i=this.from,o=this.to);const r=Math.atan2(i.y-o.y,i.x-o.x),A=i.x-o.x,I=i.y-o.y,l=Math.sqrt(A*A+I*I),c=e.distanceToBorder(t,r),h=(l-c)/l;return{x:(1-h)*o.x+h*i.x,y:(1-h)*o.y+h*i.y,t:0}}_getDistanceToEdge(e,t,i,o,r,A){return this._getDistanceToLine(e,t,i,o,r,A)}}class Gg{constructor(e,t,i,o,r){if(t===void 0)throw new Error("No body provided");this.options=_g(o),this.globalOptions=o,this.defaultOptions=r,this.body=t,this.imagelist=i,this.id=void 0,this.fromId=void 0,this.toId=void 0,this.selected=!1,this.hover=!1,this.labelDirty=!0,this.baseWidth=this.options.width,this.baseFontSize=this.options.font.size,this.from=void 0,this.to=void 0,this.edgeType=void 0,this.connected=!1,this.labelModule=new Us(this.body,this.options,!0),this.setOptions(e)}setOptions(e){if(!e)return;let t=typeof e.physics<"u"&&this.options.physics!==e.physics||typeof e.hidden<"u"&&(this.options.hidden||!1)!==(e.hidden||!1)||typeof e.from<"u"&&this.options.from!==e.from||typeof e.to<"u"&&this.options.to!==e.to;Gg.parseOptions(this.options,e,!0,this.globalOptions),e.id!==void 0&&(this.id=e.id),e.from!==void 0&&(this.fromId=e.from),e.to!==void 0&&(this.toId=e.to),e.title!==void 0&&(this.title=e.title),e.value!==void 0&&(e.value=gx(e.value));const i=[e,this.options,this.defaultOptions];return this.chooser=Ou("edge",i),this.updateLabelModule(e),t=this.updateEdgeType()||t,this._setInteractionWidths(),this.connect(),t}static parseOptions(e,t){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,o=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},r=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!1;if(js(["endPointOffset","arrowStrikethrough","id","from","hidden","hoverWidth","labelHighlightBold","length","line","opacity","physics","scaling","selectionWidth","selfReferenceSize","selfReference","to","title","value","width","font","chosen","widthConstraint"],e,t,i),t.endPointOffset!==void 0&&t.endPointOffset.from!==void 0&&(jo(t.endPointOffset.from)?e.endPointOffset.from=t.endPointOffset.from:(e.endPointOffset.from=o.endPointOffset.from!==void 0?o.endPointOffset.from:0,console.error("endPointOffset.from is not a valid number"))),t.endPointOffset!==void 0&&t.endPointOffset.to!==void 0&&(jo(t.endPointOffset.to)?e.endPointOffset.to=t.endPointOffset.to:(e.endPointOffset.to=o.endPointOffset.to!==void 0?o.endPointOffset.to:0,console.error("endPointOffset.to is not a valid number"))),gI(t.label)?e.label=t.label:gI(e.label)||(e.label=void 0),ri(e,t,"smooth",o),ri(e,t,"shadow",o),ri(e,t,"background",o),t.dashes!==void 0&&t.dashes!==null?e.dashes=t.dashes:i===!0&&t.dashes===null&&(e.dashes=Rg(o.dashes)),t.scaling!==void 0&&t.scaling!==null?(t.scaling.min!==void 0&&(e.scaling.min=t.scaling.min),t.scaling.max!==void 0&&(e.scaling.max=t.scaling.max),ri(e.scaling,t.scaling,"label",o.scaling)):i===!0&&t.scaling===null&&(e.scaling=Rg(o.scaling)),t.arrows!==void 0&&t.arrows!==null)if(typeof t.arrows=="string"){const I=t.arrows.toLowerCase();e.arrows.to.enabled=lt(I).call(I,"to")!=-1,e.arrows.middle.enabled=lt(I).call(I,"middle")!=-1,e.arrows.from.enabled=lt(I).call(I,"from")!=-1}else if(typeof t.arrows=="object")ri(e.arrows,t.arrows,"to",o.arrows),ri(e.arrows,t.arrows,"middle",o.arrows),ri(e.arrows,t.arrows,"from",o.arrows);else throw new Error("The arrow newOptions can only be an object or a string. Refer to the documentation. You used:"+Os(t.arrows));else i===!0&&t.arrows===null&&(e.arrows=Rg(o.arrows));if(t.color!==void 0&&t.color!==null){const I=_s(t.color)?{color:t.color,highlight:t.color,hover:t.color,inherit:!1,opacity:1}:t.color,l=e.color;if(r)vt(l,o.color,!1,i);else for(const c in l)Object.prototype.hasOwnProperty.call(l,c)&&delete l[c];if(_s(l))l.color=l,l.highlight=l,l.hover=l,l.inherit=!1,I.opacity===void 0&&(l.opacity=1);else{let c=!1;I.color!==void 0&&(l.color=I.color,c=!0),I.highlight!==void 0&&(l.highlight=I.highlight,c=!0),I.hover!==void 0&&(l.hover=I.hover,c=!0),I.inherit!==void 0&&(l.inherit=I.inherit),I.opacity!==void 0&&(l.opacity=Math.min(1,Math.max(0,I.opacity))),c===!0?l.inherit=!1:l.inherit===void 0&&(l.inherit="from")}}else i===!0&&t.color===null&&(e.color=_g(o.color));i===!0&&t.font===null&&(e.font=_g(o.font)),Object.prototype.hasOwnProperty.call(t,"selfReferenceSize")&&(console.warn("The selfReferenceSize property has been deprecated. Please use selfReference property instead. The selfReference can be set like thise selfReference:{size:30, angle:Math.PI / 4}"),e.selfReference.size=t.selfReferenceSize)}getFormattingValues(){const e=this.options.arrows.to===!0||this.options.arrows.to.enabled===!0,t=this.options.arrows.from===!0||this.options.arrows.from.enabled===!0,i=this.options.arrows.middle===!0||this.options.arrows.middle.enabled===!0,o=this.options.color.inherit,r={toArrow:e,toArrowScale:this.options.arrows.to.scaleFactor,toArrowType:this.options.arrows.to.type,toArrowSrc:this.options.arrows.to.src,toArrowImageWidth:this.options.arrows.to.imageWidth,toArrowImageHeight:this.options.arrows.to.imageHeight,middleArrow:i,middleArrowScale:this.options.arrows.middle.scaleFactor,middleArrowType:this.options.arrows.middle.type,middleArrowSrc:this.options.arrows.middle.src,middleArrowImageWidth:this.options.arrows.middle.imageWidth,middleArrowImageHeight:this.options.arrows.middle.imageHeight,fromArrow:t,fromArrowScale:this.options.arrows.from.scaleFactor,fromArrowType:this.options.arrows.from.type,fromArrowSrc:this.options.arrows.from.src,fromArrowImageWidth:this.options.arrows.from.imageWidth,fromArrowImageHeight:this.options.arrows.from.imageHeight,arrowStrikethrough:this.options.arrowStrikethrough,color:o?void 0:this.options.color.color,inheritsColor:o,opacity:this.options.color.opacity,hidden:this.options.hidden,length:this.options.length,shadow:this.options.shadow.enabled,shadowColor:this.options.shadow.color,shadowSize:this.options.shadow.size,shadowX:this.options.shadow.x,shadowY:this.options.shadow.y,dashes:this.options.dashes,width:this.options.width,background:this.options.background.enabled,backgroundColor:this.options.background.color,backgroundSize:this.options.background.size,backgroundDashes:this.options.background.dashes};if(this.selected||this.hover)if(this.chooser===!0){if(this.selected){const A=this.options.selectionWidth;typeof A=="function"?r.width=A(r.width):typeof A=="number"&&(r.width+=A),r.width=Math.max(r.width,.3/this.body.view.scale),r.color=this.options.color.highlight,r.shadow=this.options.shadow.enabled}else if(this.hover){const A=this.options.hoverWidth;typeof A=="function"?r.width=A(r.width):typeof A=="number"&&(r.width+=A),r.width=Math.max(r.width,.3/this.body.view.scale),r.color=this.options.color.hover,r.shadow=this.options.shadow.enabled}}else typeof this.chooser=="function"&&(this.chooser(r,this.options.id,this.selected,this.hover),r.color!==void 0&&(r.inheritsColor=!1),r.shadow===!1&&(r.shadowColor!==this.options.shadow.color||r.shadowSize!==this.options.shadow.size||r.shadowX!==this.options.shadow.x||r.shadowY!==this.options.shadow.y)&&(r.shadow=!0));else r.shadow=this.options.shadow.enabled,r.width=Math.max(r.width,.3/this.body.view.scale);return r}updateLabelModule(e){const t=[e,this.options,this.globalOptions,this.defaultOptions];this.labelModule.update(this.options,t),this.labelModule.baseSize!==void 0&&(this.baseFontSize=this.labelModule.baseSize)}updateEdgeType(){const e=this.options.smooth;let t=!1,i=!0;return this.edgeType!==void 0&&((this.edgeType instanceof px&&e.enabled===!0&&e.type==="dynamic"||this.edgeType instanceof vx&&e.enabled===!0&&e.type==="cubicBezier"||this.edgeType instanceof mx&&e.enabled===!0&&e.type!=="dynamic"&&e.type!=="cubicBezier"||this.edgeType instanceof bx&&e.type.enabled===!1)&&(i=!1),i===!0&&(t=this.cleanup())),i===!0?e.enabled===!0?e.type==="dynamic"?(t=!0,this.edgeType=new px(this.options,this.body,this.labelModule)):e.type==="cubicBezier"?this.edgeType=new vx(this.options,this.body,this.labelModule):this.edgeType=new mx(this.options,this.body,this.labelModule):this.edgeType=new bx(this.options,this.body,this.labelModule):this.edgeType.setOptions(this.options),t}connect(){this.disconnect(),this.from=this.body.nodes[this.fromId]||void 0,this.to=this.body.nodes[this.toId]||void 0,this.connected=this.from!==void 0&&this.to!==void 0,this.connected===!0?(this.from.attachEdge(this),this.to.attachEdge(this)):(this.from&&this.from.detachEdge(this),this.to&&this.to.detachEdge(this)),this.edgeType.connect()}disconnect(){this.from&&(this.from.detachEdge(this),this.from=void 0),this.to&&(this.to.detachEdge(this),this.to=void 0),this.connected=!1}getTitle(){return this.title}isSelected(){return this.selected}getValue(){return this.options.value}setValueRange(e,t,i){if(this.options.value!==void 0){const o=this.options.scaling.customScalingFunction(e,t,i,this.options.value),r=this.options.scaling.max-this.options.scaling.min;if(this.options.scaling.label.enabled===!0){const A=this.options.scaling.label.max-this.options.scaling.label.min;this.options.font.size=this.options.scaling.label.min+o*A}this.options.width=this.options.scaling.min+o*r}else this.options.width=this.baseWidth,this.options.font.size=this.baseFontSize;this._setInteractionWidths(),this.updateLabelModule()}_setInteractionWidths(){typeof this.options.hoverWidth=="function"?this.edgeType.hoverWidth=this.options.hoverWidth(this.options.width):this.edgeType.hoverWidth=this.options.hoverWidth+this.options.width,typeof this.options.selectionWidth=="function"?this.edgeType.selectionWidth=this.options.selectionWidth(this.options.width):this.edgeType.selectionWidth=this.options.selectionWidth+this.options.width}draw(e){const t=this.getFormattingValues();if(t.hidden)return;const i=this.edgeType.getViaNode();this.edgeType.drawLine(e,t,this.selected,this.hover,i),this.drawLabel(e,i)}drawArrows(e){const t=this.getFormattingValues();if(t.hidden)return;const i=this.edgeType.getViaNode(),o={};this.edgeType.fromPoint=this.edgeType.from,this.edgeType.toPoint=this.edgeType.to,t.fromArrow&&(o.from=this.edgeType.getArrowData(e,"from",i,this.selected,this.hover,t),t.arrowStrikethrough===!1&&(this.edgeType.fromPoint=o.from.core),t.fromArrowSrc&&(o.from.image=this.imagelist.load(t.fromArrowSrc)),t.fromArrowImageWidth&&(o.from.imageWidth=t.fromArrowImageWidth),t.fromArrowImageHeight&&(o.from.imageHeight=t.fromArrowImageHeight)),t.toArrow&&(o.to=this.edgeType.getArrowData(e,"to",i,this.selected,this.hover,t),t.arrowStrikethrough===!1&&(this.edgeType.toPoint=o.to.core),t.toArrowSrc&&(o.to.image=this.imagelist.load(t.toArrowSrc)),t.toArrowImageWidth&&(o.to.imageWidth=t.toArrowImageWidth),t.toArrowImageHeight&&(o.to.imageHeight=t.toArrowImageHeight)),t.middleArrow&&(o.middle=this.edgeType.getArrowData(e,"middle",i,this.selected,this.hover,t),t.middleArrowSrc&&(o.middle.image=this.imagelist.load(t.middleArrowSrc)),t.middleArrowImageWidth&&(o.middle.imageWidth=t.middleArrowImageWidth),t.middleArrowImageHeight&&(o.middle.imageHeight=t.middleArrowImageHeight)),t.fromArrow&&this.edgeType.drawArrowHead(e,t,this.selected,this.hover,o.from),t.middleArrow&&this.edgeType.drawArrowHead(e,t,this.selected,this.hover,o.middle),t.toArrow&&this.edgeType.drawArrowHead(e,t,this.selected,this.hover,o.to)}drawLabel(e,t){if(this.options.label!==void 0){const i=this.from,o=this.to;this.labelModule.differentState(this.selected,this.hover)&&this.labelModule.getTextSize(e,this.selected,this.hover);let r;if(i.id!=o.id){this.labelModule.pointToSelf=!1,r=this.edgeType.getPoint(.5,t),e.save();const A=this._getRotation(e);A.angle!=0&&(e.translate(A.x,A.y),e.rotate(A.angle)),this.labelModule.draw(e,r.x,r.y,this.selected,this.hover),e.restore()}else{this.labelModule.pointToSelf=!0;const A=ox(e,this.options.selfReference.angle,this.options.selfReference.size,i);r=this._pointOnCircle(A.x,A.y,this.options.selfReference.size,this.options.selfReference.angle),this.labelModule.draw(e,r.x,r.y,this.selected,this.hover)}}}getItemsOnPoint(e){const t=[];if(this.labelModule.visible()){const o=this._getRotation();Nu(this.labelModule.getSize(),e,o)&&t.push({edgeId:this.id,labelId:0})}const i={left:e.x,top:e.y};return this.isOverlappingWith(i)&&t.push({edgeId:this.id}),t}isOverlappingWith(e){if(this.connected){const i=this.from.x,o=this.from.y,r=this.to.x,A=this.to.y,I=e.left,l=e.top;return this.edgeType.getDistanceToEdge(i,o,r,A,I,l)<10}else return!1}_getRotation(e){const t=this.edgeType.getViaNode(),i=this.edgeType.getPoint(.5,t);e!==void 0&&this.labelModule.calculateLabelSize(e,this.selected,this.hover,i.x,i.y);const o={x:i.x,y:this.labelModule.size.yLine,angle:0};if(!this.labelModule.visible()||this.options.font.align==="horizontal")return o;const r=this.from.y-this.to.y,A=this.from.x-this.to.x;let I=Math.atan2(r,A);return(I<-1&&A<0||I>0&&A<0)&&(I+=Math.PI),o.angle=I,o}_pointOnCircle(e,t,i,o){return{x:e+i*Math.cos(o),y:t-i*Math.sin(o)}}select(){this.selected=!0}unselect(){this.selected=!1}cleanup(){return this.edgeType.cleanup()}remove(){this.cleanup(),this.disconnect(),delete this.body.edges[this.id]}endPointsValid(){return this.body.nodes[this.fromId]!==void 0&&this.body.nodes[this.toId]!==void 0}}class aq{constructor(e,t,i){var o;this.body=e,this.images=t,this.groups=i,this.body.functions.createEdge=oe(o=this.create).call(o,this),this.edgesListeners={add:(r,A)=>{this.add(A.items)},update:(r,A)=>{this.update(A.items)},remove:(r,A)=>{this.remove(A.items)}},this.options={},this.defaultOptions={arrows:{to:{enabled:!1,scaleFactor:1,type:"arrow"},middle:{enabled:!1,scaleFactor:1,type:"arrow"},from:{enabled:!1,scaleFactor:1,type:"arrow"}},endPointOffset:{from:0,to:0},arrowStrikethrough:!0,color:{color:"#848484",highlight:"#848484",hover:"#848484",inherit:"from",opacity:1},dashes:!1,font:{color:"#343434",size:14,face:"arial",background:"none",strokeWidth:2,strokeColor:"#ffffff",align:"horizontal",multi:!1,vadjust:0,bold:{mod:"bold"},boldital:{mod:"bold italic"},ital:{mod:"italic"},mono:{mod:"",size:15,face:"courier new",vadjust:2}},hidden:!1,hoverWidth:1.5,label:void 0,labelHighlightBold:!0,length:void 0,physics:!0,scaling:{min:1,max:15,label:{enabled:!0,min:14,max:30,maxVisible:30,drawThreshold:5},customScalingFunction:function(r,A,I,l){if(A===r)return .5;{const c=1/(A-r);return Math.max(0,(l-r)*c)}}},selectionWidth:1.5,selfReference:{size:20,angle:Math.PI/4,renderBehindTheNode:!0},shadow:{enabled:!1,color:"rgba(0,0,0,0.5)",size:10,x:5,y:5},background:{enabled:!1,color:"rgba(111,111,111,1)",size:10,dashes:!1},smooth:{enabled:!0,type:"dynamic",forceDirection:"none",roundness:.5},title:void 0,width:1,value:void 0},vt(this.options,this.defaultOptions),this.bindEventListeners()}bindEventListeners(){var e=this,t,i;this.body.emitter.on("_forceDisableDynamicCurves",function(o){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;o==="dynamic"&&(o="continuous");let A=!1;for(const I in e.body.edges)if(Object.prototype.hasOwnProperty.call(e.body.edges,I)){const l=e.body.edges[I],c=e.body.data.edges.get(I);if(c!=null){const h=c.smooth;h!==void 0&&h.enabled===!0&&h.type==="dynamic"&&(o===void 0?l.setOptions({smooth:!1}):l.setOptions({smooth:{type:o}}),A=!0)}}r===!0&&A===!0&&e.body.emitter.emit("_dataChanged")}),this.body.emitter.on("_dataUpdated",()=>{this.reconnectEdges()}),this.body.emitter.on("refreshEdges",oe(t=this.refresh).call(t,this)),this.body.emitter.on("refresh",oe(i=this.refresh).call(i,this)),this.body.emitter.on("destroy",()=>{Ke(this.edgesListeners,(o,r)=>{this.body.data.edges&&this.body.data.edges.off(r,o)}),delete this.body.functions.createEdge,delete this.edgesListeners.add,delete this.edgesListeners.update,delete this.edgesListeners.remove,delete this.edgesListeners})}setOptions(e){if(e!==void 0){Gg.parseOptions(this.options,e,!0,this.defaultOptions,!0);let t=!1;if(e.smooth!==void 0)for(const i in this.body.edges)Object.prototype.hasOwnProperty.call(this.body.edges,i)&&(t=this.body.edges[i].updateEdgeType()||t);if(e.font!==void 0)for(const i in this.body.edges)Object.prototype.hasOwnProperty.call(this.body.edges,i)&&this.body.edges[i].updateLabelModule();(e.hidden!==void 0||e.physics!==void 0||t===!0)&&this.body.emitter.emit("_dataChanged")}}setData(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;const i=this.body.data.edges;if(Jw("id",e))this.body.data.edges=e;else if(gt(e))this.body.data.edges=new Vs,this.body.data.edges.add(e);else if(!e)this.body.data.edges=new Vs;else throw new TypeError("Array or DataSet expected");if(i&&Ke(this.edgesListeners,(o,r)=>{i.off(r,o)}),this.body.edges={},this.body.data.edges){Ke(this.edgesListeners,(r,A)=>{this.body.data.edges.on(A,r)});const o=this.body.data.edges.getIds();this.add(o,!0)}this.body.emitter.emit("_adjustEdgesForHierarchicalLayout"),t===!1&&this.body.emitter.emit("_dataChanged")}add(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;const i=this.body.edges,o=this.body.data.edges;for(let r=0;r1&&arguments[1]!==void 0?arguments[1]:!0;if(e.length===0)return;const i=this.body.edges;Ke(e,o=>{const r=i[o];r!==void 0&&r.remove()}),t&&this.body.emitter.emit("_dataChanged")}refresh(){Ke(this.body.edges,(e,t)=>{const i=this.body.data.edges.get(t);i!==void 0&&e.setOptions(i)})}create(e){return new Gg(e,this.body,this.images,this.options,this.defaultOptions)}reconnectEdges(){let e;const t=this.body.nodes,i=this.body.edges;for(e in t)Object.prototype.hasOwnProperty.call(t,e)&&(t[e].edges=[]);for(e in i)if(Object.prototype.hasOwnProperty.call(i,e)){const o=i[e];o.from=null,o.to=null,o.connect()}}getConnectedNodes(e){const t=[];if(this.body.edges[e]!==void 0){const i=this.body.edges[e];i.fromId!==void 0&&t.push(i.fromId),i.toId!==void 0&&t.push(i.toId)}return t}_updateState(){this._addMissingEdges(),this._removeInvalidEdges()}_removeInvalidEdges(){const e=[];Ke(this.body.edges,(t,i)=>{const o=this.body.nodes[t.toId],r=this.body.nodes[t.fromId];o!==void 0&&o.isCluster===!0||r!==void 0&&r.isCluster===!0||(o===void 0||r===void 0)&&e.push(i)}),this.remove(e,!1)}_addMissingEdges(){const e=this.body.data.edges;if(e==null)return;const t=this.body.edges,i=[];nt(e).call(e,(o,r)=>{t[r]===void 0&&i.push(r)}),this.add(i,!0)}}class yx{constructor(e,t,i){this.body=e,this.physicsBody=t,this.barnesHutTree,this.setOptions(i),this._rng=UC("BARNES HUT SOLVER")}setOptions(e){this.options=e,this.thetaInversed=1/this.options.theta,this.overlapAvoidanceFactor=1-Math.max(0,Math.min(1,this.options.avoidOverlap))}solve(){if(this.options.gravitationalConstant!==0&&this.physicsBody.physicsNodeIndices.length>0){let e;const t=this.body.nodes,i=this.physicsBody.physicsNodeIndices,o=i.length,r=this._formBarnesHutTree(t,i);this.barnesHutTree=r;for(let A=0;A0&&this._getForceContributions(r.root,e)}}_getForceContributions(e,t){this._getForceContribution(e.children.NW,t),this._getForceContribution(e.children.NE,t),this._getForceContribution(e.children.SW,t),this._getForceContribution(e.children.SE,t)}_getForceContribution(e,t){if(e.childrenCount>0){const i=e.centerOfMass.x-t.x,o=e.centerOfMass.y-t.y,r=Math.sqrt(i*i+o*o);r*e.calcSize>this.thetaInversed?this._calculateForces(r,i,o,t,e):e.childrenCount===4?this._getForceContributions(e,t):e.children.data.id!=t.id&&this._calculateForces(r,i,o,t,e)}}_calculateForces(e,t,i,o,r){e===0&&(e=.1,t=e),this.overlapAvoidanceFactor<1&&o.shape.radius&&(e=Math.max(.1+this.overlapAvoidanceFactor*o.shape.radius,e-o.shape.radius));const A=this.options.gravitationalConstant*r.mass*o.options.mass/Math.pow(e,3),I=t*A,l=i*A;this.physicsBody.forces[o.id].x+=I,this.physicsBody.forces[o.id].y+=l}_formBarnesHutTree(e,t){let i;const o=t.length;let r=e[t[0]].x,A=e[t[0]].y,I=e[t[0]].x,l=e[t[0]].y;for(let x=1;x0&&(EI&&(I=E),_l&&(l=_))}const c=Math.abs(I-r)-Math.abs(l-A);c>0?(A-=.5*c,l+=.5*c):(r+=.5*c,I-=.5*c);const p=Math.max(1e-5,Math.abs(I-r)),m=.5*p,b=.5*(r+I),w=.5*(A+l),O={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:b-m,maxX:b+m,minY:w-m,maxY:w+m},size:p,calcSize:1/p,children:{data:null},maxWidth:0,level:0,childrenCount:4}};this._splitBranch(O.root);for(let x=0;x0&&this._placeInTree(O.root,i);return O}_updateBranchMass(e,t){const i=e.centerOfMass,o=e.mass+t.options.mass,r=1/o;i.x=i.x*e.mass+t.x*t.options.mass,i.x*=r,i.y=i.y*e.mass+t.y*t.options.mass,i.y*=r,e.mass=o;const A=Math.max(Math.max(t.height,t.radius),t.width);e.maxWidth=e.maxWidtht.x?o.maxY>t.y?r="NW":r="SW":o.maxY>t.y?r="NE":r="SE",this._placeInRegion(e,t,r)}_placeInRegion(e,t,i){const o=e.children[i];switch(o.childrenCount){case 0:o.children.data=t,o.childrenCount=1,this._updateBranchMass(o,t);break;case 1:o.children.data.x===t.x&&o.children.data.y===t.y?(t.x+=this._rng(),t.y+=this._rng()):(this._splitBranch(o),this._placeInTree(o,t));break;case 4:this._placeInTree(o,t);break}}_splitBranch(e){let t=null;e.childrenCount===1&&(t=e.children.data,e.mass=0,e.centerOfMass.x=0,e.centerOfMass.y=0),e.childrenCount=4,e.children.data=null,this._insertRegion(e,"NW"),this._insertRegion(e,"NE"),this._insertRegion(e,"SW"),this._insertRegion(e,"SE"),t!=null&&this._placeInTree(e,t)}_insertRegion(e,t){let i,o,r,A;const I=.5*e.size;switch(t){case"NW":i=e.range.minX,o=e.range.minX+I,r=e.range.minY,A=e.range.minY+I;break;case"NE":i=e.range.minX+I,o=e.range.maxX,r=e.range.minY,A=e.range.minY+I;break;case"SW":i=e.range.minX,o=e.range.minX+I,r=e.range.minY+I,A=e.range.maxY;break;case"SE":i=e.range.minX+I,o=e.range.maxX,r=e.range.minY+I,A=e.range.maxY;break}e.children[t]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:o,minY:r,maxY:A},size:.5*e.size,calcSize:2*e.calcSize,children:{data:null},maxWidth:0,level:e.level+1,childrenCount:0}}_debug(e,t){this.barnesHutTree!==void 0&&(e.lineWidth=1,this._drawBranch(this.barnesHutTree.root,e,t))}_drawBranch(e,t,i){i===void 0&&(i="#FF0000"),e.childrenCount===4&&(this._drawBranch(e.children.NW,t),this._drawBranch(e.children.NE,t),this._drawBranch(e.children.SE,t),this._drawBranch(e.children.SW,t)),t.strokeStyle=i,t.beginPath(),t.moveTo(e.range.minX,e.range.minY),t.lineTo(e.range.maxX,e.range.minY),t.stroke(),t.beginPath(),t.moveTo(e.range.maxX,e.range.minY),t.lineTo(e.range.maxX,e.range.maxY),t.stroke(),t.beginPath(),t.moveTo(e.range.maxX,e.range.maxY),t.lineTo(e.range.minX,e.range.maxY),t.stroke(),t.beginPath(),t.moveTo(e.range.minX,e.range.maxY),t.lineTo(e.range.minX,e.range.minY),t.stroke()}}class Aq{constructor(e,t,i){this._rng=UC("REPULSION SOLVER"),this.body=e,this.physicsBody=t,this.setOptions(i)}setOptions(e){this.options=e}solve(){let e,t,i,o,r,A,I,l;const c=this.body.nodes,h=this.physicsBody.physicsNodeIndices,p=this.physicsBody.forces,m=this.options.nodeDistance,b=-2/3/m,w=4/3;for(let O=0;O0){const A=r.edges.length+1,I=this.options.centralGravity*A*r.options.mass;o[r.id].x=t*I,o[r.id].y=i*I}}}class dq{constructor(e){this.body=e,this.physicsBody={physicsNodeIndices:[],physicsEdgeIndices:[],forces:{},velocities:{}},this.physicsEnabled=!0,this.simulationInterval=1e3/60,this.requiresTimeout=!0,this.previousStates={},this.referenceState={},this.freezeCache={},this.renderTimer=void 0,this.adaptiveTimestep=!1,this.adaptiveTimestepEnabled=!1,this.adaptiveCounter=0,this.adaptiveInterval=3,this.stabilized=!1,this.startedStabilization=!1,this.stabilizationIterations=0,this.ready=!1,this.options={},this.defaultOptions={enabled:!0,barnesHut:{theta:.5,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09,avoidOverlap:0},forceAtlas2Based:{theta:.5,gravitationalConstant:-50,centralGravity:.01,springConstant:.08,springLength:100,damping:.4,avoidOverlap:0},repulsion:{centralGravity:.2,springLength:200,springConstant:.05,nodeDistance:100,damping:.09,avoidOverlap:0},hierarchicalRepulsion:{centralGravity:0,springLength:100,springConstant:.01,nodeDistance:120,damping:.09},maxVelocity:50,minVelocity:.75,solver:"barnesHut",stabilization:{enabled:!0,iterations:1e3,updateInterval:50,onlyDynamicEdges:!1,fit:!0},timestep:.5,adaptiveTimestep:!0,wind:{x:0,y:0}},Yt(this.options,this.defaultOptions),this.timestep=.5,this.layoutFailed=!1,this.bindEventListeners()}bindEventListeners(){this.body.emitter.on("initPhysics",()=>{this.initPhysics()}),this.body.emitter.on("_layoutFailed",()=>{this.layoutFailed=!0}),this.body.emitter.on("resetPhysics",()=>{this.stopSimulation(),this.ready=!1}),this.body.emitter.on("disablePhysics",()=>{this.physicsEnabled=!1,this.stopSimulation()}),this.body.emitter.on("restorePhysics",()=>{this.setOptions(this.options),this.ready===!0&&this.startSimulation()}),this.body.emitter.on("startSimulation",()=>{this.ready===!0&&this.startSimulation()}),this.body.emitter.on("stopSimulation",()=>{this.stopSimulation()}),this.body.emitter.on("destroy",()=>{this.stopSimulation(!1),this.body.emitter.off()}),this.body.emitter.on("_dataChanged",()=>{this.updatePhysicsData()})}setOptions(e){if(e!==void 0)if(e===!1)this.options.enabled=!1,this.physicsEnabled=!1,this.stopSimulation();else if(e===!0)this.options.enabled=!0,this.physicsEnabled=!0,this.startSimulation();else{this.physicsEnabled=!0,YC(["stabilization"],this.options,e),ri(this.options,e,"stabilization"),e.enabled===void 0&&(this.options.enabled=!0),this.options.enabled===!1&&(this.physicsEnabled=!1,this.stopSimulation());const t=this.options.wind;t&&((typeof t.x!="number"||du(t.x))&&(t.x=0),(typeof t.y!="number"||du(t.y))&&(t.y=0)),this.timestep=this.options.timestep}this.init()}init(){let e;this.options.solver==="forceAtlas2Based"?(e=this.options.forceAtlas2Based,this.nodesSolver=new lq(this.body,this.physicsBody,e),this.edgesSolver=new Ru(this.body,this.physicsBody,e),this.gravitySolver=new cq(this.body,this.physicsBody,e)):this.options.solver==="repulsion"?(e=this.options.repulsion,this.nodesSolver=new Aq(this.body,this.physicsBody,e),this.edgesSolver=new Ru(this.body,this.physicsBody,e),this.gravitySolver=new oI(this.body,this.physicsBody,e)):this.options.solver==="hierarchicalRepulsion"?(e=this.options.hierarchicalRepulsion,this.nodesSolver=new Cq(this.body,this.physicsBody,e),this.edgesSolver=new Iq(this.body,this.physicsBody,e),this.gravitySolver=new oI(this.body,this.physicsBody,e)):(e=this.options.barnesHut,this.nodesSolver=new yx(this.body,this.physicsBody,e),this.edgesSolver=new Ru(this.body,this.physicsBody,e),this.gravitySolver=new oI(this.body,this.physicsBody,e)),this.modelOptions=e}initPhysics(){this.physicsEnabled===!0&&this.options.enabled===!0?this.options.stabilization.enabled===!0?this.stabilize():(this.stabilized=!1,this.ready=!0,this.body.emitter.emit("fit",{},this.layoutFailed),this.startSimulation()):(this.ready=!0,this.body.emitter.emit("fit"))}startSimulation(){if(this.physicsEnabled===!0&&this.options.enabled===!0){if(this.stabilized=!1,this.adaptiveTimestep=!1,this.body.emitter.emit("_resizeNodes"),this.viewFunction===void 0){var e;this.viewFunction=oe(e=this.simulationStep).call(e,this),this.body.emitter.on("initRedraw",this.viewFunction),this.body.emitter.emit("_startRendering")}}else this.body.emitter.emit("_redraw")}stopSimulation(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;this.stabilized=!0,e===!0&&this._emitStabilized(),this.viewFunction!==void 0&&(this.body.emitter.off("initRedraw",this.viewFunction),this.viewFunction=void 0,e===!0&&this.body.emitter.emit("_stopRendering"))}simulationStep(){const e=kC();this.physicsTick(),(kC()-e<.4*this.simulationInterval||this.runDoubleSpeed===!0)&&this.stabilized===!1&&(this.physicsTick(),this.runDoubleSpeed=!0),this.stabilized===!0&&this.stopSimulation()}_emitStabilized(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.stabilizationIterations;(this.stabilizationIterations>1||this.startedStabilization===!0)&&_i(()=>{this.body.emitter.emit("stabilized",{iterations:e}),this.startedStabilization=!1,this.stabilizationIterations=0},0)}physicsStep(){this.gravitySolver.solve(),this.nodesSolver.solve(),this.edgesSolver.solve(),this.moveNodes()}adjustTimeStep(){this._evaluateStepQuality()===!0?this.timestep=1.2*this.timestep:this.timestep/1.2A))return!1;return!0}moveNodes(){const e=this.physicsBody.physicsNodeIndices;let t=0,i=0;const o=5;for(let r=0;rA&&(e=e>0?A:-A),e}_performStep(e){const t=this.body.nodes[e],i=this.physicsBody.forces[e];this.options.wind&&(i.x+=this.options.wind.x,i.y+=this.options.wind.y);const o=this.physicsBody.velocities[e];return this.previousStates[e]={x:t.x,y:t.y,vx:o.x,vy:o.y},t.options.fixed.x===!1?(o.x=this.calculateComponentVelocity(o.x,i.x,t.options.mass),t.x+=o.x*this.timestep):(i.x=0,o.x=0),t.options.fixed.y===!1?(o.y=this.calculateComponentVelocity(o.y,i.y,t.options.mass),t.y+=o.y*this.timestep):(i.y=0,o.y=0),Math.sqrt(Math.pow(o.x,2)+Math.pow(o.y,2))}_freezeNodes(){const e=this.body.nodes;for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&e[t].x&&e[t].y){const i=e[t].options.fixed;this.freezeCache[t]={x:i.x,y:i.y},i.x=!0,i.y=!0}}_restoreFrozenNodes(){const e=this.body.nodes;for(const t in e)Object.prototype.hasOwnProperty.call(e,t)&&this.freezeCache[t]!==void 0&&(e[t].options.fixed.x=this.freezeCache[t].x,e[t].options.fixed.y=this.freezeCache[t].y);this.freezeCache={}}stabilize(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.options.stabilization.iterations;if(typeof e!="number"&&(e=this.options.stabilization.iterations,console.error("The stabilize method needs a numeric amount of iterations. Switching to default: ",e)),this.physicsBody.physicsNodeIndices.length===0){this.ready=!0;return}this.adaptiveTimestep=this.options.adaptiveTimestep,this.body.emitter.emit("_resizeNodes"),this.stopSimulation(),this.stabilized=!1,this.body.emitter.emit("_blockRedraw"),this.targetIterations=e,this.options.stabilization.onlyDynamicEdges===!0&&this._freezeNodes(),this.stabilizationIterations=0,_i(()=>this._stabilizationBatch(),0)}_startStabilizing(){return this.startedStabilization===!0?!1:(this.body.emitter.emit("startStabilizing"),this.startedStabilization=!0,!0)}_stabilizationBatch(){const e=()=>this.stabilized===!1&&this.stabilizationIterations{this.body.emitter.emit("stabilizationProgress",{iterations:this.stabilizationIterations,total:this.targetIterations})};this._startStabilizing()&&t();let i=0;for(;e()&&i1&&arguments[1]!==void 0?arguments[1]:[],i=1e9,o=-1e9,r=1e9,A=-1e9,I;if(t.length>0)for(let l=0;lI.shape.boundingBox.left&&(r=I.shape.boundingBox.left),AI.shape.boundingBox.top&&(i=I.shape.boundingBox.top),o1&&arguments[1]!==void 0?arguments[1]:[],i=1e9,o=-1e9,r=1e9,A=-1e9,I;if(t.length>0)for(let l=0;lI.x&&(r=I.x),AI.y&&(i=I.y),o{delete this.containedEdges[i.id]}),Ke(t.containedNodes,(i,o)=>{this.containedNodes[o]=i}),t.containedNodes={},Ke(t.containedEdges,(i,o)=>{this.containedEdges[o]=i}),t.containedEdges={},Ke(t.edges,i=>{Ke(this.edges,o=>{var r,A;const I=lt(r=o.clusteringEdgeReplacingIds).call(r,i.id);I!==-1&&(Ke(i.clusteringEdgeReplacingIds,l=>{o.clusteringEdgeReplacingIds.push(l),this.body.edges[l].edgeReplacedById=o.id}),zi(A=o.clusteringEdgeReplacingIds).call(A,I,1))})}),t.edges=[]}}class hq{constructor(e){this.body=e,this.clusteredNodes={},this.clusteredEdges={},this.options={},this.defaultOptions={},Yt(this.options,this.defaultOptions),this.body.emitter.on("_resetData",()=>{this.clusteredNodes={},this.clusteredEdges={}})}clusterByHubsize(e,t){e===void 0?e=this._getHubSize():typeof e=="object"&&(t=this._checkOptions(e),e=this._getHubSize());const i=[];for(let o=0;o=e&&i.push(r.id)}for(let o=0;o0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;if(e.joinCondition===void 0)throw new Error("Cannot call clusterByNodeData without a joinCondition function in the options.");e=this._checkOptions(e);const i={},o={};Ke(this.body.nodes,(r,A)=>{r.options&&e.joinCondition(r.options)===!0&&(i[A]=r,Ke(r.edges,I=>{this.clusteredEdges[I.id]===void 0&&(o[I.id]=I)}))}),this._cluster(i,o,e,t)}clusterByEdgeCount(e,t){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;t=this._checkOptions(t);const o=[],r={};let A,I,l;for(let c=0;c0&&xt(p).length>0&&O===!0){const S=function(){for(let E=0;E1&&arguments[1]!==void 0?arguments[1]:!0;this.clusterByEdgeCount(1,e,t)}clusterBridges(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;this.clusterByEdgeCount(2,e,t)}clusterByConnection(e,t){var i;let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;if(e===void 0)throw new Error("No nodeId supplied to clusterByConnection!");if(this.body.nodes[e]===void 0)throw new Error("The nodeId given to clusterByConnection does not exist!");const r=this.body.nodes[e];t=this._checkOptions(t,r),t.clusterNodeProperties.x===void 0&&(t.clusterNodeProperties.x=r.x),t.clusterNodeProperties.y===void 0&&(t.clusterNodeProperties.y=r.y),t.clusterNodeProperties.fixed===void 0&&(t.clusterNodeProperties.fixed={},t.clusterNodeProperties.fixed.x=r.options.fixed.x,t.clusterNodeProperties.fixed.y=r.options.fixed.y);const A={},I={},l=r.id,c=Mn.cloneOptions(r);A[l]=r;for(let p=0;p-1&&(I[w.id]=w)}}this._cluster(A,I,t,o)}_createClusterEdges(e,t,i,o){let r,A,I,l,c,h;const p=xt(e),m=[];for(let O=0;O0&&arguments[0]!==void 0?arguments[0]:{};return e.clusterEdgeProperties===void 0&&(e.clusterEdgeProperties={}),e.clusterNodeProperties===void 0&&(e.clusterNodeProperties={}),e}_cluster(e,t,i){let o=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0;const r=[];for(const h in e)Object.prototype.hasOwnProperty.call(e,h)&&this.clusteredNodes[h]!==void 0&&r.push(h);for(let h=0;ho?I.x:o,r=I.yA?I.y:A;return{x:.5*(i+o),y:.5*(r+A)}}openCluster(e,t){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;if(e===void 0)throw new Error("No clusterNodeId supplied to openCluster.");const o=this.body.nodes[e];if(o===void 0)throw new Error("The clusterNodeId supplied to openCluster does not exist.");if(o.isCluster!==!0||o.containedNodes===void 0||o.containedEdges===void 0)throw new Error("The node:"+e+" is not a valid cluster.");const r=this.findNode(e),A=lt(r).call(r,e)-1;if(A>=0){const h=r[A];this.body.nodes[h]._openChildCluster(e),delete this.body.nodes[e],i===!0&&this.body.emitter.emit("_dataChanged");return}const I=o.containedNodes,l=o.containedEdges;if(t!==void 0&&t.releaseFunction!==void 0&&typeof t.releaseFunction=="function"){const h={},p={x:o.x,y:o.y};for(const b in I)if(Object.prototype.hasOwnProperty.call(I,b)){const w=this.body.nodes[b];h[b]={x:w.x,y:w.y}}const m=t.releaseFunction(p,h);for(const b in I)if(Object.prototype.hasOwnProperty.call(I,b)){const w=this.body.nodes[b];m[b]!==void 0&&(w.x=m[b].x===void 0?o.x:m[b].x,w.y=m[b].y===void 0?o.y:m[b].y)}}else Ke(I,function(h){h.options.fixed.x===!1&&(h.x=o.x),h.options.fixed.y===!1&&(h.y=o.y)});for(const h in I)if(Object.prototype.hasOwnProperty.call(I,h)){const p=this.body.nodes[h];p.vx=o.vx,p.vy=o.vy,p.setOptions({physics:!0}),delete this.clusteredNodes[h]}const c=[];for(let h=0;h0&&Ao&&(o=c.edges.length),e+=c.edges.length,t+=Math.pow(c.edges.length,2),i+=1}e=e/i,t=t/i;const r=t-Math.pow(e,2),A=Math.sqrt(r);let I=Math.floor(e+2*A);return I>o&&(I=o),I}_createClusteredEdge(e,t,i,o,r){const A=Mn.cloneOptions(i,"edge");vt(A,o),A.from=e,A.to=t,A.id="clusterEdge:"+Fs(),r!==void 0&&vt(A,r);const I=this.body.functions.createEdge(A);return I.clusteringEdgeReplacingIds=[i.id],I.connect(),this.body.edges[I.id]=I,I}_clusterEdges(e,t,i,o){if(t instanceof Gg){const r=t,A={};A[r.id]=r,t=A}if(e instanceof Nt){const r=e,A={};A[r.id]=r,e=A}if(i==null)throw new Error("_clusterEdges: parameter clusterNode required");o===void 0&&(o=i.clusterEdgeProperties),this._createClusterEdges(e,t,i,o);for(const r in t)if(Object.prototype.hasOwnProperty.call(t,r)&&this.body.edges[r]!==void 0){const A=this.body.edges[r];this._backupEdgeOptions(A),A.setOptions({physics:!1})}for(const r in e)Object.prototype.hasOwnProperty.call(e,r)&&(this.clusteredNodes[r]={clusterId:i.id,node:this.body.nodes[r]},this.body.nodes[r].setOptions({physics:!1}))}_getClusterNodeForNode(e){if(e===void 0)return;const t=this.clusteredNodes[e];if(t===void 0)return;const i=t.clusterId;if(i!==void 0)return this.body.nodes[i]}_filter(e,t){const i=[];return Ke(e,o=>{t(o)&&i.push(o)}),i}_updateState(){let e;const t=[],i={},o=l=>{Ke(this.body.nodes,c=>{c.isCluster===!0&&l(c)})};for(e in this.clusteredNodes){if(!Object.prototype.hasOwnProperty.call(this.clusteredNodes,e))continue;this.body.nodes[e]===void 0&&t.push(e)}o(function(l){for(let c=0;c{const c=this.body.edges[l];(c===void 0||!c.endPointsValid())&&(i[l]=l)}),o(function(l){Ke(l.containedEdges,(c,h)=>{!c.endPointsValid()&&!i[h]&&(i[h]=h)})}),Ke(this.body.edges,(l,c)=>{let h=!0;const p=l.clusteringEdgeReplacingIds;if(p!==void 0){let m=0;Ke(p,b=>{const w=this.body.edges[b];w!==void 0&&w.endPointsValid()&&(m+=1)}),h=m>0}(!l.endPointsValid()||!h)&&(i[c]=c)}),o(l=>{Ke(i,c=>{delete l.containedEdges[c],Ke(l.edges,(h,p)=>{if(h.id===c){l.edges[p]=null;return}h.clusteringEdgeReplacingIds=this._filter(h.clusteringEdgeReplacingIds,function(m){return!i[m]})}),l.edges=this._filter(l.edges,function(h){return h!==null})})}),Ke(i,l=>{delete this.clusteredEdges[l]}),Ke(i,l=>{delete this.body.edges[l]});const r=xt(this.body.edges);Ke(r,l=>{const c=this.body.edges[l],h=this._isClusteredNode(c.fromId)||this._isClusteredNode(c.toId);if(h!==this._isClusteredEdge(c.id))if(h){const p=this._getClusterNodeForNode(c.fromId);p!==void 0&&this._clusterEdges(this.body.nodes[c.fromId],c,p);const m=this._getClusterNodeForNode(c.toId);m!==void 0&&this._clusterEdges(this.body.nodes[c.toId],c,m)}else delete this._clusterEdges[l],this._restoreEdge(c)});let A=!1,I=!0;for(;I;){const l=[];o(function(c){const h=xt(c.containedNodes).length,p=c.options.allowSingleNodeCluster===!0;(p&&h<1||!p&&h<2)&&l.push(c.id)});for(let c=0;c0,A=A||I}A&&this._updateState()}_isClusteredNode(e){return this.clusteredNodes[e]!==void 0}_isClusteredEdge(e){return this.clusteredEdges[e]!==void 0}}class fq{constructor(e,t){this.body=e,this.canvas=t,this.redrawRequested=!1,this.requestAnimationFrameRequestId=void 0,this.renderingActive=!1,this.renderRequests=0,this.allowRedraw=!0,this.dragging=!1,this.zooming=!1,this.options={},this.defaultOptions={hideEdgesOnDrag:!1,hideEdgesOnZoom:!1,hideNodesOnDrag:!1},Yt(this.options,this.defaultOptions),this.bindEventListeners()}bindEventListeners(){var e;this.body.emitter.on("dragStart",()=>{this.dragging=!0}),this.body.emitter.on("dragEnd",()=>{this.dragging=!1}),this.body.emitter.on("zoom",()=>{this.zooming=!0,window.clearTimeout(this.zoomTimeoutId),this.zoomTimeoutId=_i(()=>{var t;this.zooming=!1,oe(t=this._requestRedraw).call(t,this)()},250)}),this.body.emitter.on("_resizeNodes",()=>{this._resizeNodes()}),this.body.emitter.on("_redraw",()=>{this.renderingActive===!1&&this._redraw()}),this.body.emitter.on("_blockRedraw",()=>{this.allowRedraw=!1}),this.body.emitter.on("_allowRedraw",()=>{this.allowRedraw=!0,this.redrawRequested=!1}),this.body.emitter.on("_requestRedraw",oe(e=this._requestRedraw).call(e,this)),this.body.emitter.on("_startRendering",()=>{this.renderRequests+=1,this.renderingActive=!0,this._startRendering()}),this.body.emitter.on("_stopRendering",()=>{this.renderRequests-=1,this.renderingActive=this.renderRequests>0,this.requestAnimationFrameRequestId=void 0}),this.body.emitter.on("destroy",()=>{this.renderRequests=0,this.allowRedraw=!1,this.renderingActive=!1,window.cancelAnimationFrame(this.requestAnimationFrameRequestId),this.body.emitter.off()})}setOptions(e){e!==void 0&&js(["hideEdgesOnDrag","hideEdgesOnZoom","hideNodesOnDrag"],this.options,e)}_startRendering(){if(this.renderingActive===!0&&this.requestAnimationFrameRequestId===void 0){var e;this.requestAnimationFrameRequestId=window.requestAnimationFrame(oe(e=this._renderStep).call(e,this),this.simulationInterval)}}_renderStep(){this.renderingActive===!0&&(this.requestAnimationFrameRequestId=void 0,this._startRendering(),this._redraw())}redraw(){this.body.emitter.emit("setSize"),this._redraw()}_requestRedraw(){this.redrawRequested!==!0&&this.renderingActive===!1&&this.allowRedraw===!0&&(this.redrawRequested=!0,window.requestAnimationFrame(()=>{this._redraw(!1)}))}_redraw(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;if(this.allowRedraw===!0){this.body.emitter.emit("initRedraw"),this.redrawRequested=!1;const t={drawExternalLabels:null};(this.canvas.frame.canvas.width===0||this.canvas.frame.canvas.height===0)&&this.canvas.setSize(),this.canvas.setTransform();const i=this.canvas.getContext(),o=this.canvas.frame.canvas.clientWidth,r=this.canvas.frame.canvas.clientHeight;if(i.clearRect(0,0,o,r),this.canvas.frame.clientWidth===0)return;if(i.save(),i.translate(this.body.view.translation.x,this.body.view.translation.y),i.scale(this.body.view.scale,this.body.view.scale),i.beginPath(),this.body.emitter.emit("beforeDrawing",i),i.closePath(),e===!1&&(this.dragging===!1||this.dragging===!0&&this.options.hideEdgesOnDrag===!1)&&(this.zooming===!1||this.zooming===!0&&this.options.hideEdgesOnZoom===!1)&&this._drawEdges(i),this.dragging===!1||this.dragging===!0&&this.options.hideNodesOnDrag===!1){const{drawExternalLabels:A}=this._drawNodes(i,e);t.drawExternalLabels=A}e===!1&&(this.dragging===!1||this.dragging===!0&&this.options.hideEdgesOnDrag===!1)&&(this.zooming===!1||this.zooming===!0&&this.options.hideEdgesOnZoom===!1)&&this._drawArrows(i),t.drawExternalLabels!=null&&t.drawExternalLabels(),e===!1&&this._drawSelectionBox(i),i.beginPath(),this.body.emitter.emit("afterDrawing",i),i.closePath(),i.restore(),e===!0&&i.clearRect(0,0,o,r)}}_resizeNodes(){this.canvas.setTransform();const e=this.canvas.getContext();e.save(),e.translate(this.body.view.translation.x,this.body.view.translation.y),e.scale(this.body.view.scale,this.body.view.scale);const t=this.body.nodes;let i;for(const o in t)Object.prototype.hasOwnProperty.call(t,o)&&(i=t[o],i.resize(e),i.updateBoundingBox(e,i.selected));e.restore()}_drawNodes(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;const i=this.body.nodes,o=this.body.nodeIndices;let r;const A=[],I=[],l=20,c=this.canvas.DOMtoCanvas({x:-l,y:-l}),h=this.canvas.DOMtoCanvas({x:this.canvas.frame.canvas.clientWidth+l,y:this.canvas.frame.canvas.clientHeight+l}),p={top:c.y,left:c.x,bottom:h.y,right:h.x},m=[];for(let x=0;x{for(const x of m)x()}}}_drawEdges(e){const t=this.body.edges,i=this.body.edgeIndices;for(let o=0;o{t.width!==0&&(this.body.view.translation.x=t.width*.5),t.height!==0&&(this.body.view.translation.y=t.height*.5)}),this.body.emitter.on("setSize",oe(e=this.setSize).call(e,this)),this.body.emitter.on("destroy",()=>{this.hammerFrame.destroy(),this.hammer.destroy(),this._cleanUp()})}setOptions(e){if(e!==void 0&&js(["width","height","autoResize"],this.options,e),this._cleanUp(),this.options.autoResize===!0){var t;if(window.ResizeObserver){const o=new ResizeObserver(()=>{this.setSize()===!0&&this.body.emitter.emit("_requestRedraw")}),{frame:r}=this;o.observe(r),this._cleanupCallbacks.push(()=>{o.unobserve(r)})}else{const o=bq(()=>{this.setSize()===!0&&this.body.emitter.emit("_requestRedraw")},1e3);this._cleanupCallbacks.push(()=>{clearInterval(o)})}const i=oe(t=this._onResize).call(t,this);window.addEventListener("resize",i),this._cleanupCallbacks.push(()=>{window.removeEventListener("resize",i)})}}_cleanUp(){var e,t,i;nt(e=To(t=zi(i=this._cleanupCallbacks).call(i,0)).call(t)).call(e,o=>{try{o()}catch(r){console.error(r)}})}_onResize(){this.setSize(),this.body.emitter.emit("_redraw")}_getCameraState(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.pixelRatio;this.initialized===!0&&(this.cameraState.previousWidth=this.frame.canvas.width/e,this.cameraState.previousHeight=this.frame.canvas.height/e,this.cameraState.scale=this.body.view.scale,this.cameraState.position=this.DOMtoCanvas({x:.5*this.frame.canvas.width/e,y:.5*this.frame.canvas.height/e}))}_setCameraState(){if(this.cameraState.scale!==void 0&&this.frame.canvas.clientWidth!==0&&this.frame.canvas.clientHeight!==0&&this.pixelRatio!==0&&this.cameraState.previousWidth>0&&this.cameraState.previousHeight>0){const e=this.frame.canvas.width/this.pixelRatio/this.cameraState.previousWidth,t=this.frame.canvas.height/this.pixelRatio/this.cameraState.previousHeight;let i=this.cameraState.scale;e!=1&&t!=1?i=this.cameraState.scale*.5*(e+t):e!=1?i=this.cameraState.scale*e:t!=1&&(i=this.cameraState.scale*t),this.body.view.scale=i;const o=this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight}),r={x:o.x-this.cameraState.position.x,y:o.y-this.cameraState.position.y};this.body.view.translation.x+=r.x*this.body.view.scale,this.body.view.translation.y+=r.y*this.body.view.scale}}_prepareValue(e){if(typeof e=="number")return e+"px";if(typeof e=="string"){if(lt(e).call(e,"%")!==-1||lt(e).call(e,"px")!==-1)return e;if(lt(e).call(e,"%")===-1)return e+"px"}throw new Error("Could not use the value supplied for width or height:"+e)}_create(){for(;this.body.container.hasChildNodes();)this.body.container.removeChild(this.body.container.firstChild);if(this.frame=document.createElement("div"),this.frame.className="vis-network",this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.tabIndex=0,this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas),this.frame.canvas.getContext)this._setPixelRatio(),this.setTransform();else{const e=document.createElement("DIV");e.style.color="red",e.style.fontWeight="bold",e.style.padding="10px",e.innerText="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(e)}this.body.container.appendChild(this.frame),this.body.view.scale=1,this.body.view.translation={x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight},this._bindHammer()}_bindHammer(){this.hammer!==void 0&&this.hammer.destroy(),this.drag={},this.pinch={},this.hammer=new Zs(this.frame.canvas),this.hammer.get("pinch").set({enable:!0}),this.hammer.get("pan").set({threshold:5,direction:Zs.DIRECTION_ALL}),sI(this.hammer,e=>{this.body.eventListeners.onTouch(e)}),this.hammer.on("tap",e=>{this.body.eventListeners.onTap(e)}),this.hammer.on("doubletap",e=>{this.body.eventListeners.onDoubleTap(e)}),this.hammer.on("press",e=>{this.body.eventListeners.onHold(e)}),this.hammer.on("panstart",e=>{this.body.eventListeners.onDragStart(e)}),this.hammer.on("panmove",e=>{this.body.eventListeners.onDrag(e)}),this.hammer.on("panend",e=>{this.body.eventListeners.onDragEnd(e)}),this.hammer.on("pinch",e=>{this.body.eventListeners.onPinch(e)}),this.frame.canvas.addEventListener("wheel",e=>{this.body.eventListeners.onMouseWheel(e)}),this.frame.canvas.addEventListener("mousemove",e=>{this.body.eventListeners.onMouseMove(e)}),this.frame.canvas.addEventListener("contextmenu",e=>{this.body.eventListeners.onContext(e)}),this.hammerFrame=new Zs(this.frame),wx(this.hammerFrame,e=>{this.body.eventListeners.onRelease(e)})}setSize(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.options.width,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.options.height;e=this._prepareValue(e),t=this._prepareValue(t);let i=!1;const o=this.frame.canvas.width,r=this.frame.canvas.height,A=this.pixelRatio;if(this._setPixelRatio(),e!=this.options.width||t!=this.options.height||this.frame.style.width!=e||this.frame.style.height!=t)this._getCameraState(A),this.frame.style.width=e,this.frame.style.height=t,this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=Math.round(this.frame.canvas.clientWidth*this.pixelRatio),this.frame.canvas.height=Math.round(this.frame.canvas.clientHeight*this.pixelRatio),this.options.width=e,this.options.height=t,this.canvasViewCenter={x:.5*this.frame.clientWidth,y:.5*this.frame.clientHeight},i=!0;else{const I=Math.round(this.frame.canvas.clientWidth*this.pixelRatio),l=Math.round(this.frame.canvas.clientHeight*this.pixelRatio);(this.frame.canvas.width!==I||this.frame.canvas.height!==l)&&this._getCameraState(A),this.frame.canvas.width!==I&&(this.frame.canvas.width=I,i=!0),this.frame.canvas.height!==l&&(this.frame.canvas.height=l,i=!0)}return i===!0&&(this.body.emitter.emit("resize",{width:Math.round(this.frame.canvas.width/this.pixelRatio),height:Math.round(this.frame.canvas.height/this.pixelRatio),oldWidth:Math.round(o/this.pixelRatio),oldHeight:Math.round(r/this.pixelRatio)}),this._setCameraState()),this.initialized=!0,i}getContext(){return this.frame.canvas.getContext("2d")}_determinePixelRatio(){const e=this.getContext();if(e===void 0)throw new Error("Could not get canvax context");let t=1;typeof window<"u"&&(t=window.devicePixelRatio||1);const i=e.webkitBackingStorePixelRatio||e.mozBackingStorePixelRatio||e.msBackingStorePixelRatio||e.oBackingStorePixelRatio||e.backingStorePixelRatio||1;return t/i}_setPixelRatio(){this.pixelRatio=this._determinePixelRatio()}setTransform(){const e=this.getContext();if(e===void 0)throw new Error("Could not get canvax context");e.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}_XconvertDOMtoCanvas(e){return(e-this.body.view.translation.x)/this.body.view.scale}_XconvertCanvasToDOM(e){return e*this.body.view.scale+this.body.view.translation.x}_YconvertDOMtoCanvas(e){return(e-this.body.view.translation.y)/this.body.view.scale}_YconvertCanvasToDOM(e){return e*this.body.view.scale+this.body.view.translation.y}canvasToDOM(e){return{x:this._XconvertCanvasToDOM(e.x),y:this._YconvertCanvasToDOM(e.y)}}DOMtoCanvas(e){return{x:this._XconvertDOMtoCanvas(e.x),y:this._YconvertDOMtoCanvas(e.y)}}}function wq(n,e){const t=Yt({nodes:e,minZoomLevel:Number.MIN_VALUE,maxZoomLevel:1},n??{});if(!gt(t.nodes))throw new TypeError("Nodes has to be an array of ids.");if(t.nodes.length===0&&(t.nodes=e),!(typeof t.minZoomLevel=="number"&&t.minZoomLevel>0))throw new TypeError("Min zoom level has to be a number higher than zero.");if(!(typeof t.maxZoomLevel=="number"&&t.minZoomLevel<=t.maxZoomLevel))throw new TypeError("Max zoom level has to be a number higher than min zoom level.");return t}class xq{constructor(e,t){var i,o;this.body=e,this.canvas=t,this.animationSpeed=1/this.renderRefreshRate,this.animationEasingFunction="easeInOutQuint",this.easingTime=0,this.sourceScale=0,this.targetScale=0,this.sourceTranslation=0,this.targetTranslation=0,this.lockedOnNodeId=void 0,this.lockedOnNodeOffset=void 0,this.touchTime=0,this.viewFunction=void 0,this.body.emitter.on("fit",oe(i=this.fit).call(i,this)),this.body.emitter.on("animationFinished",()=>{this.body.emitter.emit("_stopRendering")}),this.body.emitter.on("unlockNode",oe(o=this.releaseNode).call(o,this))}setOptions(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.options=e}fit(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;e=wq(e,this.body.nodeIndices);const i=this.canvas.frame.canvas.clientWidth,o=this.canvas.frame.canvas.clientHeight;let r,A;if(i===0||o===0)A=1,r=Mn.getRange(this.body.nodes,e.nodes);else if(t===!0){let c=0;for(const m in this.body.nodes)Object.prototype.hasOwnProperty.call(this.body.nodes,m)&&this.body.nodes[m].predefinedPosition===!0&&(c+=1);if(c>.5*this.body.nodeIndices.length){this.fit(e,!1);return}r=Mn.getRange(this.body.nodes,e.nodes),A=12.662/(this.body.nodeIndices.length+7.4147)+.0964822;const p=Math.min(i/600,o/600);A*=p}else{this.body.emitter.emit("_resizeNodes"),r=Mn.getRange(this.body.nodes,e.nodes);const c=Math.abs(r.maxX-r.minX)*1.1,h=Math.abs(r.maxY-r.minY)*1.1,p=i/c,m=o/h;A=p<=m?p:m}A>e.maxZoomLevel?A=e.maxZoomLevel:A1&&arguments[1]!==void 0?arguments[1]:{};if(this.body.nodes[e]!==void 0){const i={x:this.body.nodes[e].x,y:this.body.nodes[e].y};t.position=i,t.lockedOnNode=e,this.moveTo(t)}else console.error("Node: "+e+" cannot be found.")}moveTo(e){if(e===void 0){e={};return}if(e.offset!=null){if(e.offset.x!=null){if(e.offset.x=+e.offset.x,!jo(e.offset.x))throw new TypeError('The option "offset.x" has to be a finite number.')}else e.offset.x=0;if(e.offset.y!=null){if(e.offset.y=+e.offset.y,!jo(e.offset.y))throw new TypeError('The option "offset.y" has to be a finite number.')}else e.offset.x=0}else e.offset={x:0,y:0};if(e.position!=null){if(e.position.x!=null){if(e.position.x=+e.position.x,!jo(e.position.x))throw new TypeError('The option "position.x" has to be a finite number.')}else e.position.x=0;if(e.position.y!=null){if(e.position.y=+e.position.y,!jo(e.position.y))throw new TypeError('The option "position.y" has to be a finite number.')}else e.position.x=0}else e.position=this.getViewPosition();if(e.scale!=null){if(e.scale=+e.scale,!(e.scale>0))throw new TypeError('The option "scale" has to be a number greater than zero.')}else e.scale=this.body.view.scale;e.animation===void 0&&(e.animation={duration:0}),e.animation===!1&&(e.animation={duration:0}),e.animation===!0&&(e.animation={}),e.animation.duration===void 0&&(e.animation.duration=1e3),e.animation.easingFunction===void 0&&(e.animation.easingFunction="easeInOutQuad"),this.animateView(e)}animateView(e){if(e===void 0)return;this.animationEasingFunction=e.animation.easingFunction,this.releaseNode(),e.locked===!0&&(this.lockedOnNodeId=e.lockedOnNode,this.lockedOnNodeOffset=e.offset),this.easingTime!=0&&this._transitionRedraw(!0),this.sourceScale=this.body.view.scale,this.sourceTranslation=this.body.view.translation,this.targetScale=e.scale,this.body.view.scale=this.targetScale;const t=this.canvas.DOMtoCanvas({x:.5*this.canvas.frame.canvas.clientWidth,y:.5*this.canvas.frame.canvas.clientHeight}),i={x:t.x-e.position.x,y:t.y-e.position.y};if(this.targetTranslation={x:this.sourceTranslation.x+i.x*this.targetScale+e.offset.x,y:this.sourceTranslation.y+i.y*this.targetScale+e.offset.y},e.animation.duration===0)if(this.lockedOnNodeId!=null){var o;this.viewFunction=oe(o=this._lockedRedraw).call(o,this),this.body.emitter.on("initRedraw",this.viewFunction)}else this.body.view.scale=this.targetScale,this.body.view.translation=this.targetTranslation,this.body.emitter.emit("_requestRedraw");else{var r;this.animationSpeed=1/(60*e.animation.duration*.001)||1/60,this.animationEasingFunction=e.animation.easingFunction,this.viewFunction=oe(r=this._transitionRedraw).call(r,this),this.body.emitter.on("initRedraw",this.viewFunction),this.body.emitter.emit("_startRendering")}}_lockedRedraw(){const e={x:this.body.nodes[this.lockedOnNodeId].x,y:this.body.nodes[this.lockedOnNodeId].y},t=this.canvas.DOMtoCanvas({x:.5*this.canvas.frame.canvas.clientWidth,y:.5*this.canvas.frame.canvas.clientHeight}),i={x:t.x-e.x,y:t.y-e.y},o=this.body.view.translation,r={x:o.x+i.x*this.body.view.scale+this.lockedOnNodeOffset.x,y:o.y+i.y*this.body.view.scale+this.lockedOnNodeOffset.y};this.body.view.translation=r}releaseNode(){this.lockedOnNodeId!==void 0&&this.viewFunction!==void 0&&(this.body.emitter.off("initRedraw",this.viewFunction),this.lockedOnNodeId=void 0,this.lockedOnNodeOffset=void 0)}_transitionRedraw(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;this.easingTime+=this.animationSpeed,this.easingTime=e===!0?1:this.easingTime;const t=HU[this.animationEasingFunction](this.easingTime);if(this.body.view.scale=this.sourceScale+(this.targetScale-this.sourceScale)*t,this.body.view.translation={x:this.sourceTranslation.x+(this.targetTranslation.x-this.sourceTranslation.x)*t,y:this.sourceTranslation.y+(this.targetTranslation.y-this.sourceTranslation.y)*t},this.easingTime>=1){if(this.body.emitter.off("initRedraw",this.viewFunction),this.easingTime=0,this.lockedOnNodeId!=null){var i;this.viewFunction=oe(i=this._lockedRedraw).call(i,this),this.body.emitter.on("initRedraw",this.viewFunction)}this.body.emitter.emit("animationFinished")}}getScale(){return this.body.view.scale}getViewPosition(){return this.canvas.DOMtoCanvas({x:.5*this.canvas.frame.canvas.clientWidth,y:.5*this.canvas.frame.canvas.clientHeight})}}var Eq=`div.vis-network div.vis-navigation div.vis-button { +`),o=i.length;if(t.multi)for(let r=0;r0)for(let I=0;I0)for(let r=0;r/&/.test(o)?(t.replace(t.text,"<","<")||t.replace(t.text,"&","&")||t.add("&"),!0):!1;for(;t.position")||t.parseStartTag("ital","")||t.parseStartTag("mono","")||t.parseEndTag("bold","")||t.parseEndTag("ital","")||t.parseEndTag("mono",""))||i(o)||t.add(o),t.position++}return t.emitBlock(),t.blocks}splitMarkdownBlocks(e){const t=new vx(e);let i=!0;const o=r=>/\\/.test(r)?(t.positionthis.parent.fontOptions.maxWdt}getLongestFit(e){let t="",i=0;for(;i1&&arguments[1]!==void 0?arguments[1]:"normal",i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;this.parent.getFormattingValues(this.ctx,this.selected,this.hover,t),e=e.replace(/^( +)/g,"$1\r"),e=e.replace(/([^\r][^ ]*)( +)/g,"$1\r$2\r");let o=e.split("\r");for(;o.length>0;){let r=this.getLongestFit(o);if(r===0){const A=o[0],I=this.getLongestFitWord(A);this.lines.newLine(Ei(A).call(A,0,I),t),o[0]=Ei(A).call(A,I)}else{let A=r;o[r-1]===" "?r--:o[A]===" "&&A++;const I=Ei(o).call(o,0,r).join("");r==o.length&&i?this.lines.append(I,t):this.lines.newLine(I,t),o=Ei(o).call(o,A)}}}}const Ua=["bold","ital","boldital","mono"];class Ks{constructor(e,t){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;this.body=e,this.pointToSelf=!1,this.baseSize=void 0,this.fontOptions={},this.setOptions(t),this.size={top:0,left:0,width:0,height:0,yLine:0},this.isEdgeLabel=i}setOptions(e){if(this.elementOptions=e,this.initFontOptions(e.font),AI(e.label)?this.labelDirty=!0:e.label=void 0,e.font!==void 0&&e.font!==null){if(typeof e.font=="string")this.baseSize=this.fontOptions.size;else if(typeof e.font=="object"){const t=e.font.size;t!==void 0&&(this.baseSize=t)}}}initFontOptions(e){if(We(Ua,t=>{this.fontOptions[t]={}}),Ks.parseFontString(this.fontOptions,e)){this.fontOptions.vadjust=0;return}We(e,(t,i)=>{t!=null&&typeof t!="object"&&(this.fontOptions[i]=t)})}static parseFontString(e,t){if(!t||typeof t!="string")return!1;const i=t.split(" ");return e.size=+i[0].replace("px",""),e.face=i[1],e.color=i[2],!0}constrain(e){const t={constrainWidth:!1,maxWdt:-1,minWdt:-1,constrainHeight:!1,minHgt:-1,valign:"middle"},i=Bg(e,"widthConstraint");if(typeof i=="number")t.maxWdt=Number(i),t.minWdt=Number(i);else if(typeof i=="object"){const r=Bg(e,["widthConstraint","maximum"]);typeof r=="number"&&(t.maxWdt=Number(r));const A=Bg(e,["widthConstraint","minimum"]);typeof A=="number"&&(t.minWdt=Number(A))}const o=Bg(e,"heightConstraint");if(typeof o=="number")t.minHgt=Number(o);else if(typeof o=="object"){const r=Bg(e,["heightConstraint","minimum"]);typeof r=="number"&&(t.minHgt=Number(r));const A=Bg(e,["heightConstraint","valign"]);typeof A=="string"&&(A==="top"||A==="bottom")&&(t.valign=A)}return t}update(e,t){this.setOptions(e,!0),this.propagateFonts(t),vt(this.fontOptions,this.constrain(t)),this.fontOptions.chooser=zu("label",t)}adjustSizes(e){const t=e?e.right+e.left:0;this.fontOptions.constrainWidth&&(this.fontOptions.maxWdt-=t,this.fontOptions.minWdt-=t);const i=e?e.top+e.bottom:0;this.fontOptions.constrainHeight&&(this.fontOptions.minHgt-=i)}addFontOptionsToPile(e,t){for(let i=0;i{A!==void 0&&(Object.prototype.hasOwnProperty.call(t,I)||(lt(Ua).call(Ua,I)!==-1?t[I]={}:t[I]=A))})}return t}getFontOption(e,t,i){let o;for(let r=0;r{r[l]=I}),r.size=Number(r.size),r.vadjust=Number(r.vadjust)}}draw(e,t,i,o,r){let A=arguments.length>5&&arguments[5]!==void 0?arguments[5]:"middle";if(this.elementOptions.label===void 0)return;let I=this.fontOptions.size*this.body.view.scale;this.elementOptions.label&&I=this.elementOptions.scaling.label.maxVisible&&(I=Number(this.elementOptions.scaling.label.maxVisible)/this.body.view.scale),this.calculateLabelSize(e,o,r,t,i,A),this._drawBackground(e),this._drawText(e,t,this.size.yLine,A,I))}_drawBackground(e){if(this.fontOptions.background!==void 0&&this.fontOptions.background!=="none"){e.fillStyle=this.fontOptions.background;const t=this.getSize();e.fillRect(t.left,t.top,t.width,t.height)}}_drawText(e,t,i){let o=arguments.length>3&&arguments[3]!==void 0?arguments[3]:"middle",r=arguments.length>4?arguments[4]:void 0;[t,i]=this._setAlignment(e,t,i,o),e.textAlign="left",t=t-this.size.width/2,this.fontOptions.valign&&this.size.height>this.size.labelHeight&&(this.fontOptions.valign==="top"&&(i-=(this.size.height-this.size.labelHeight)/2),this.fontOptions.valign==="bottom"&&(i+=(this.size.height-this.size.labelHeight)/2));for(let A=0;A0&&(e.lineWidth=h.strokeWidth,e.strokeStyle=m,e.lineJoin="round"),e.fillStyle=p,h.strokeWidth>0&&e.strokeText(h.text,t+l,i+h.vadjust),e.fillText(h.text,t+l,i+h.vadjust),l+=h.width}i+=I.height}}}_setAlignment(e,t,i,o){if(this.isEdgeLabel&&this.fontOptions.align!=="horizontal"&&this.pointToSelf===!1){t=0,i=0;const r=2;this.fontOptions.align==="top"?(e.textBaseline="alphabetic",i-=2*r):this.fontOptions.align==="bottom"?(e.textBaseline="hanging",i+=2*r):e.textBaseline="middle"}else e.textBaseline=o;return[t,i]}_getColor(e,t,i){let o=e||"#000000",r=i||"#ffffff";if(t<=this.elementOptions.scaling.label.drawThreshold){const A=Math.max(0,Math.min(1,1-(this.elementOptions.scaling.label.drawThreshold-t)));o=ri(o,A),r=ri(r,A)}return[o,r]}getTextSize(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;return this._processLabel(e,t,i),{width:this.size.width,height:this.size.height,lineCount:this.lineCount}}getSize(){let t=this.size.left,i=this.size.top-.5*2;if(this.isEdgeLabel){const r=-this.size.width*.5;switch(this.fontOptions.align){case"middle":t=r,i=-this.size.height*.5;break;case"top":t=r,i=-(this.size.height+2);break;case"bottom":t=r,i=2;break}}return{left:t,top:i,width:this.size.width,height:this.size.height}}calculateLabelSize(e,t,i){let o=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0,r=arguments.length>4&&arguments[4]!==void 0?arguments[4]:0,A=arguments.length>5&&arguments[5]!==void 0?arguments[5]:"middle";this._processLabel(e,t,i),this.size.left=o-this.size.width*.5,this.size.top=r-this.size.height*.5,this.size.yLine=r+(1-this.lineCount)*.5*this.fontOptions.size,A==="hanging"&&(this.size.top+=.5*this.fontOptions.size,this.size.top+=4,this.size.yLine+=4)}getFormattingValues(e,t,i,o){const r=function(l,c,h){return c==="normal"?h==="mod"?"":l[h]:l[c][h]!==void 0?l[c][h]:l[h]},A={color:r(this.fontOptions,o,"color"),size:r(this.fontOptions,o,"size"),face:r(this.fontOptions,o,"face"),mod:r(this.fontOptions,o,"mod"),vadjust:r(this.fontOptions,o,"vadjust"),strokeWidth:this.fontOptions.strokeWidth,strokeColor:this.fontOptions.strokeColor};(t||i)&&(o==="normal"&&this.fontOptions.chooser===!0&&this.elementOptions.labelHighlightBold?A.mod="bold":typeof this.fontOptions.chooser=="function"&&this.fontOptions.chooser(A,this.elementOptions.id,t,i));let I="";return A.mod!==void 0&&A.mod!==""&&(I+=A.mod+" "),I+=A.size+"px "+A.face,e.font=I.replace(/"/g,""),A.font=e.font,A.height=A.size,A}differentState(e,t){return e!==this.selectedState||t!==this.hoverState}_processLabelText(e,t,i,o){return new tq(e,this,t,i).process(o)}_processLabel(e,t,i){if(this.labelDirty===!1&&!this.differentState(t,i))return;const o=this._processLabelText(e,t,i,this.elementOptions.label);this.fontOptions.minWdt>0&&o.width0&&o.height0&&(this.enableBorderDashes(e,t),e.stroke(),this.disableBorderDashes(e,t)),e.restore()}performFill(e,t){e.save(),e.fillStyle=t.color,this.enableShadow(e,t),wa(e).call(e),this.disableShadow(e,t),e.restore(),this.performStroke(e,t)}_addBoundingBoxMargin(e){this.boundingBox.left-=e,this.boundingBox.top-=e,this.boundingBox.bottom+=e,this.boundingBox.right+=e}_updateBoundingBox(e,t,i,o,r){i!==void 0&&this.resize(i,o,r),this.left=e-this.width/2,this.top=t-this.height/2,this.boundingBox.left=this.left,this.boundingBox.top=this.top,this.boundingBox.bottom=this.top+this.height,this.boundingBox.right=this.left+this.width}updateBoundingBox(e,t,i,o,r){this._updateBoundingBox(e,t,i,o,r)}getDimensionsFromLabel(e,t,i){this.textSize=this.labelModule.getTextSize(e,t,i);let o=this.textSize.width,r=this.textSize.height;const A=14;return o===0&&(o=A,r=A),{width:o,height:r}}}let nq=class extends Lo{constructor(e,t,i){super(e,t,i),this._setMargins(i)}resize(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.selected,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:this.hover;if(this.needsRefresh(t,i)){const o=this.getDimensionsFromLabel(e,t,i);this.width=o.width+this.margin.right+this.margin.left,this.height=o.height+this.margin.top+this.margin.bottom,this.radius=this.width/2}}draw(e,t,i,o,r,A){this.resize(e,o,r),this.left=t-this.width/2,this.top=i-this.height/2,this.initContextForDraw(e,A),Gb(e,this.left,this.top,this.width,this.height,A.borderRadius),this.performFill(e,A),this.updateBoundingBox(t,i,e,o,r),this.labelModule.draw(e,this.left+this.textSize.width/2+this.margin.left,this.top+this.textSize.height/2+this.margin.top,o,r)}updateBoundingBox(e,t,i,o,r){this._updateBoundingBox(e,t,i,o,r);const A=this.options.shapeProperties.borderRadius;this._addBoundingBoxMargin(A)}distanceToBorder(e,t){e&&this.resize(e);const i=this.options.borderWidth;return Math.min(Math.abs(this.width/2/Math.cos(t)),Math.abs(this.height/2/Math.sin(t)))+i}};class ju extends Lo{constructor(e,t,i){super(e,t,i),this.labelOffset=0,this.selected=!1}setOptions(e,t,i){this.options=e,t===void 0&&i===void 0||this.setImages(t,i)}setImages(e,t){t&&this.selected?(this.imageObj=t,this.imageObjAlt=e):(this.imageObj=e,this.imageObjAlt=t)}switchImages(e){const t=e&&!this.selected||!e&&this.selected;if(this.selected=e,this.imageObjAlt!==void 0&&t){const i=this.imageObj;this.imageObj=this.imageObjAlt,this.imageObjAlt=i}}_getImagePadding(){const e={top:0,right:0,bottom:0,left:0};if(this.options.imagePadding){const t=this.options.imagePadding;typeof t=="object"?(e.top=t.top,e.right=t.right,e.bottom=t.bottom,e.left=t.left):(e.top=t,e.right=t,e.bottom=t,e.left=t)}return e}_resizeImage(){let e,t;if(this.options.shapeProperties.useImageSize===!1){let i=1,o=1;this.imageObj.width&&this.imageObj.height&&(this.imageObj.width>this.imageObj.height?i=this.imageObj.width/this.imageObj.height:o=this.imageObj.height/this.imageObj.width),e=this.options.size*2*i,t=this.options.size*2*o}else{const i=this._getImagePadding();e=this.imageObj.width+i.left+i.right,t=this.imageObj.height+i.top+i.bottom}this.width=e,this.height=t,this.radius=.5*this.width}_drawRawCircle(e,t,i,o){this.initContextForDraw(e,o),Qc(e,t,i,o.size),this.performFill(e,o)}_drawImageAtPosition(e,t){if(this.imageObj.width!=0){e.globalAlpha=t.opacity!==void 0?t.opacity:1,this.enableShadow(e,t);let i=1;this.options.shapeProperties.interpolation===!0&&(i=this.imageObj.width/this.width/this.body.view.scale);const o=this._getImagePadding(),r=this.left+o.left,A=this.top+o.top,I=this.width-o.left-o.right,l=this.height-o.top-o.bottom;this.imageObj.drawImageAtPosition(e,i,r,A,I,l),this.disableShadow(e,t)}}_drawImageLabel(e,t,i,o,r){let A=0;if(this.height!==void 0){A=this.height*.5;const l=this.labelModule.getTextSize(e,o,r);l.lineCount>=1&&(A+=l.height/2)}const I=i+A;this.options.label&&(this.labelOffset=A),this.labelModule.draw(e,t,I,o,r,"hanging")}}let iq=class extends ju{constructor(e,t,i){super(e,t,i),this._setMargins(i)}resize(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.selected,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:this.hover;if(this.needsRefresh(t,i)){const o=this.getDimensionsFromLabel(e,t,i),r=Math.max(o.width+this.margin.right+this.margin.left,o.height+this.margin.top+this.margin.bottom);this.options.size=r/2,this.width=r,this.height=r,this.radius=this.width/2}}draw(e,t,i,o,r,A){this.resize(e,o,r),this.left=t-this.width/2,this.top=i-this.height/2,this._drawRawCircle(e,t,i,A),this.updateBoundingBox(t,i),this.labelModule.draw(e,this.left+this.textSize.width/2+this.margin.left,i,o,r)}updateBoundingBox(e,t){this.boundingBox.top=t-this.options.size,this.boundingBox.left=e-this.options.size,this.boundingBox.right=e+this.options.size,this.boundingBox.bottom=t+this.options.size}distanceToBorder(e){return e&&this.resize(e),this.width*.5}};class gq extends ju{constructor(e,t,i,o,r){super(e,t,i),this.setImages(o,r)}resize(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.selected,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:this.hover;if(this.imageObj.src===void 0||this.imageObj.width===void 0||this.imageObj.height===void 0){const r=this.options.size*2;this.width=r,this.height=r,this.radius=.5*this.width;return}this.needsRefresh(t,i)&&this._resizeImage()}draw(e,t,i,o,r,A){this.switchImages(o),this.resize();let I=t,l=i;this.options.shapeProperties.coordinateOrigin==="top-left"?(this.left=t,this.top=i,I+=this.width/2,l+=this.height/2):(this.left=t-this.width/2,this.top=i-this.height/2),this._drawRawCircle(e,I,l,A),e.save(),e.clip(),this._drawImageAtPosition(e,A),e.restore(),this._drawImageLabel(e,I,l,o,r),this.updateBoundingBox(t,i)}updateBoundingBox(e,t){this.options.shapeProperties.coordinateOrigin==="top-left"?(this.boundingBox.top=t,this.boundingBox.left=e,this.boundingBox.right=e+this.options.size*2,this.boundingBox.bottom=t+this.options.size*2):(this.boundingBox.top=t-this.options.size,this.boundingBox.left=e-this.options.size,this.boundingBox.right=e+this.options.size,this.boundingBox.bottom=t+this.options.size),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelOffset)}distanceToBorder(e){return e&&this.resize(e),this.width*.5}}class Fg extends Lo{constructor(e,t,i){super(e,t,i)}resize(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.selected,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:this.hover,o=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{size:this.options.size};if(this.needsRefresh(t,i)){var r,A;this.labelModule.getTextSize(e,t,i);const I=2*o.size;this.width=(r=this.customSizeWidth)!==null&&r!==void 0?r:I,this.height=(A=this.customSizeHeight)!==null&&A!==void 0?A:I,this.radius=.5*this.width}}_drawShape(e,t,i,o,r,A,I,l){return this.resize(e,A,I,l),this.left=o-this.width/2,this.top=r-this.height/2,this.initContextForDraw(e,l),LP(t)(e,o,r,l.size),this.performFill(e,l),this.options.icon!==void 0&&this.options.icon.code!==void 0&&(e.font=(A?"bold ":"")+this.height/2+"px "+(this.options.icon.face||"FontAwesome"),e.fillStyle=this.options.icon.color||"black",e.textAlign="center",e.textBaseline="middle",e.fillText(this.options.icon.code,o,r)),{drawExternalLabel:()=>{if(this.options.label!==void 0){this.labelModule.calculateLabelSize(e,A,I,o,r,"hanging");const c=r+.5*this.height+.5*this.labelModule.size.height;this.labelModule.draw(e,o,c,A,I,"hanging")}this.updateBoundingBox(o,r)}}}updateBoundingBox(e,t){this.boundingBox.top=t-this.options.size,this.boundingBox.left=e-this.options.size,this.boundingBox.right=e+this.options.size,this.boundingBox.bottom=t+this.options.size,this.options.label!==void 0&&this.labelModule.size.width>0&&(this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelModule.size.height))}}function bx(n,e){var t=xt(n);if(Li){var i=Li(n);e&&(i=$t(i).call(i,function(o){return Gi(n,o).enumerable})),t.push.apply(t,i)}return t}function oq(n){for(var e=1;e{e.save(),l(),e.restore()}}return I.nodeDimensions&&(this.customSizeWidth=I.nodeDimensions.width,this.customSizeHeight=I.nodeDimensions.height),I}distanceToBorder(e,t){return this._distanceToBorder(e,t)}}class rq extends Lo{constructor(e,t,i){super(e,t,i),this._setMargins(i)}resize(e,t,i){if(this.needsRefresh(t,i)){const r=this.getDimensionsFromLabel(e,t,i).width+this.margin.right+this.margin.left;this.width=r,this.height=r,this.radius=this.width/2}}draw(e,t,i,o,r,A){this.resize(e,o,r),this.left=t-this.width/2,this.top=i-this.height/2,this.initContextForDraw(e,A),Fb(e,t-this.width/2,i-this.height/2,this.width,this.height),this.performFill(e,A),this.updateBoundingBox(t,i,e,o,r),this.labelModule.draw(e,this.left+this.textSize.width/2+this.margin.left,this.top+this.textSize.height/2+this.margin.top,o,r)}distanceToBorder(e,t){return this._distanceToBorder(e,t)}}let aq=class extends Fg{constructor(e,t,i){super(e,t,i)}draw(e,t,i,o,r,A){return this._drawShape(e,"diamond",4,t,i,o,r,A)}distanceToBorder(e,t){return this._distanceToBorder(e,t)}};class Aq extends Fg{constructor(e,t,i){super(e,t,i)}draw(e,t,i,o,r,A){return this._drawShape(e,"circle",2,t,i,o,r,A)}distanceToBorder(e){return e&&this.resize(e),this.options.size}}class yx extends Lo{constructor(e,t,i){super(e,t,i)}resize(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.selected,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:this.hover;if(this.needsRefresh(t,i)){const o=this.getDimensionsFromLabel(e,t,i);this.height=o.height*2,this.width=o.width+o.height,this.radius=.5*this.width}}draw(e,t,i,o,r,A){this.resize(e,o,r),this.left=t-this.width*.5,this.top=i-this.height*.5,this.initContextForDraw(e,A),Xc(e,this.left,this.top,this.width,this.height),this.performFill(e,A),this.updateBoundingBox(t,i,e,o,r),this.labelModule.draw(e,t,i,o,r)}distanceToBorder(e,t){e&&this.resize(e);const i=this.width*.5,o=this.height*.5,r=Math.sin(t)*i,A=Math.cos(t)*o;return i*o/Math.sqrt(r*r+A*A)}}class Cq extends Lo{constructor(e,t,i){super(e,t,i),this._setMargins(i)}resize(e,t,i){this.needsRefresh(t,i)&&(this.iconSize={width:Number(this.options.icon.size),height:Number(this.options.icon.size)},this.width=this.iconSize.width+this.margin.right+this.margin.left,this.height=this.iconSize.height+this.margin.top+this.margin.bottom,this.radius=.5*this.width)}draw(e,t,i,o,r,A){return this.resize(e,o,r),this.options.icon.size=this.options.icon.size||50,this.left=t-this.width/2,this.top=i-this.height/2,this._icon(e,t,i,o,r,A),{drawExternalLabel:()=>{this.options.label!==void 0&&this.labelModule.draw(e,this.left+this.iconSize.width/2+this.margin.left,i+this.height/2+5,o),this.updateBoundingBox(t,i)}}}updateBoundingBox(e,t){this.boundingBox.top=t-this.options.icon.size*.5,this.boundingBox.left=e-this.options.icon.size*.5,this.boundingBox.right=e+this.options.icon.size*.5,this.boundingBox.bottom=t+this.options.icon.size*.5,this.options.label!==void 0&&this.labelModule.size.width>0&&(this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelModule.size.height+5))}_icon(e,t,i,o,r,A){const I=Number(this.options.icon.size);this.options.icon.code!==void 0?(e.font=[this.options.icon.weight!=null?this.options.icon.weight:o?"bold":"",(this.options.icon.weight!=null&&o?5:0)+I+"px",this.options.icon.face].join(" "),e.fillStyle=this.options.icon.color||"black",e.textAlign="center",e.textBaseline="middle",this.enableShadow(e,A),e.fillText(this.options.icon.code,t,i),this.disableShadow(e,A)):console.error("When using the icon shape, you need to define the code in the icon options object. This can be done per node or globally.")}distanceToBorder(e,t){return this._distanceToBorder(e,t)}}let Iq=class extends ju{constructor(e,t,i,o,r){super(e,t,i),this.setImages(o,r)}resize(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.selected,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:this.hover;if(this.imageObj.src===void 0||this.imageObj.width===void 0||this.imageObj.height===void 0){const r=this.options.size*2;this.width=r,this.height=r;return}this.needsRefresh(t,i)&&this._resizeImage()}draw(e,t,i,o,r,A){e.save(),this.switchImages(o),this.resize();let I=t,l=i;if(this.options.shapeProperties.coordinateOrigin==="top-left"?(this.left=t,this.top=i,I+=this.width/2,l+=this.height/2):(this.left=t-this.width/2,this.top=i-this.height/2),this.options.shapeProperties.useBorderWithImage===!0){const c=this.options.borderWidth,h=this.options.borderWidthSelected||2*this.options.borderWidth,p=(o?h:c)/this.body.view.scale;e.lineWidth=Math.min(this.width,p),e.beginPath();let m=o?this.options.color.highlight.border:r?this.options.color.hover.border:this.options.color.border,v=o?this.options.color.highlight.background:r?this.options.color.hover.background:this.options.color.background;A.opacity!==void 0&&(m=ri(m,A.opacity),v=ri(v,A.opacity)),e.strokeStyle=m,e.fillStyle=v,e.rect(this.left-.5*e.lineWidth,this.top-.5*e.lineWidth,this.width+e.lineWidth,this.height+e.lineWidth),wa(e).call(e),this.performStroke(e,A),e.closePath()}this._drawImageAtPosition(e,A),this._drawImageLabel(e,I,l,o,r),this.updateBoundingBox(t,i),e.restore()}updateBoundingBox(e,t){this.resize(),this.options.shapeProperties.coordinateOrigin==="top-left"?(this.left=e,this.top=t):(this.left=e-this.width/2,this.top=t-this.height/2),this.boundingBox.left=this.left,this.boundingBox.top=this.top,this.boundingBox.bottom=this.top+this.height,this.boundingBox.right=this.left+this.width,this.options.label!==void 0&&this.labelModule.size.width>0&&(this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelOffset))}distanceToBorder(e,t){return this._distanceToBorder(e,t)}};class lq extends Fg{constructor(e,t,i){super(e,t,i)}draw(e,t,i,o,r,A){return this._drawShape(e,"square",2,t,i,o,r,A)}distanceToBorder(e,t){return this._distanceToBorder(e,t)}}class cq extends Fg{constructor(e,t,i){super(e,t,i)}draw(e,t,i,o,r,A){return this._drawShape(e,"hexagon",4,t,i,o,r,A)}distanceToBorder(e,t){return this._distanceToBorder(e,t)}}class dq extends Fg{constructor(e,t,i){super(e,t,i)}draw(e,t,i,o,r,A){return this._drawShape(e,"star",4,t,i,o,r,A)}distanceToBorder(e,t){return this._distanceToBorder(e,t)}}class uq extends Lo{constructor(e,t,i){super(e,t,i),this._setMargins(i)}resize(e,t,i){this.needsRefresh(t,i)&&(this.textSize=this.labelModule.getTextSize(e,t,i),this.width=this.textSize.width+this.margin.right+this.margin.left,this.height=this.textSize.height+this.margin.top+this.margin.bottom,this.radius=.5*this.width)}draw(e,t,i,o,r,A){this.resize(e,o,r),this.left=t-this.width/2,this.top=i-this.height/2,this.enableShadow(e,A),this.labelModule.draw(e,this.left+this.textSize.width/2+this.margin.left,this.top+this.textSize.height/2+this.margin.top,o,r),this.disableShadow(e,A),this.updateBoundingBox(t,i,e,o,r)}distanceToBorder(e,t){return this._distanceToBorder(e,t)}}let hq=class extends Fg{constructor(e,t,i){super(e,t,i)}draw(e,t,i,o,r,A){return this._drawShape(e,"triangle",3,t,i,o,r,A)}distanceToBorder(e,t){return this._distanceToBorder(e,t)}};class fq extends Fg{constructor(e,t,i){super(e,t,i)}draw(e,t,i,o,r,A){return this._drawShape(e,"triangleDown",3,t,i,o,r,A)}distanceToBorder(e,t){return this._distanceToBorder(e,t)}}function wx(n,e){var t=xt(n);if(Li){var i=Li(n);e&&(i=$t(i).call(i,function(o){return Gi(n,o).enumerable})),t.push.apply(t,i)}return t}function xx(n){for(var e=1;et[c]!=null);l.push("font"),XC(l,e,I),e.color=ou(e.color)}static parseOptions(e,t){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,o=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},r=arguments.length>4?arguments[4]:void 0;if(XC(["color","fixed","shadow"],e,t,i),Nt.checkMass(t),e.opacity!==void 0&&(Nt.checkOpacity(e.opacity)||(console.error("Invalid option for node opacity. Value must be between 0 and 1, found: "+e.opacity),e.opacity=void 0)),t.opacity!==void 0&&(Nt.checkOpacity(t.opacity)||(console.error("Invalid option for node opacity. Value must be between 0 and 1, found: "+t.opacity),t.opacity=void 0)),t.shapeProperties&&!Nt.checkCoordinateOrigin(t.shapeProperties.coordinateOrigin)&&console.error("Invalid option for node coordinateOrigin, found: "+t.shapeProperties.coordinateOrigin),ai(e,t,"shadow",o),t.color!==void 0&&t.color!==null){const I=ou(t.color);F1(e.color,I)}else i===!0&&t.color===null&&(e.color=Pg(o.color));t.fixed!==void 0&&t.fixed!==null&&(typeof t.fixed=="boolean"?(e.fixed.x=t.fixed,e.fixed.y=t.fixed):(t.fixed.x!==void 0&&typeof t.fixed.x=="boolean"&&(e.fixed.x=t.fixed.x),t.fixed.y!==void 0&&typeof t.fixed.y=="boolean"&&(e.fixed.y=t.fixed.y))),i===!0&&t.font===null&&(e.font=Pg(o.font)),Nt.updateGroupOptions(e,t,r),t.scaling!==void 0&&ai(e.scaling,t.scaling,"label",o.scaling)}getFormattingValues(){const e={color:this.options.color.background,opacity:this.options.opacity,borderWidth:this.options.borderWidth,borderColor:this.options.color.border,size:this.options.size,borderDashes:this.options.shapeProperties.borderDashes,borderRadius:this.options.shapeProperties.borderRadius,shadow:this.options.shadow.enabled,shadowColor:this.options.shadow.color,shadowSize:this.options.shadow.size,shadowX:this.options.shadow.x,shadowY:this.options.shadow.y};if(this.selected||this.hover?this.chooser===!0?this.selected?(this.options.borderWidthSelected!=null?e.borderWidth=this.options.borderWidthSelected:e.borderWidth*=2,e.color=this.options.color.highlight.background,e.borderColor=this.options.color.highlight.border,e.shadow=this.options.shadow.enabled):this.hover&&(e.color=this.options.color.hover.background,e.borderColor=this.options.color.hover.border,e.shadow=this.options.shadow.enabled):typeof this.chooser=="function"&&(this.chooser(e,this.options.id,this.selected,this.hover),e.shadow===!1&&(e.shadowColor!==this.options.shadow.color||e.shadowSize!==this.options.shadow.size||e.shadowX!==this.options.shadow.x||e.shadowY!==this.options.shadow.y)&&(e.shadow=!0)):e.shadow=this.options.shadow.enabled,this.options.opacity!==void 0){const t=this.options.opacity;e.borderColor=ri(e.borderColor,t),e.color=ri(e.color,t),e.shadowColor=ri(e.shadowColor,t)}return e}updateLabelModule(e){(this.options.label===void 0||this.options.label===null)&&(this.options.label=""),Nt.updateGroupOptions(this.options,xx(xx({},e),{},{color:e&&e.color||this._localColor||void 0}),this.grouplist);const t=this.grouplist.get(this.options.group,!1),i=[e,this.options,t,this.globalOptions,this.defaultOptions];this.labelModule.update(this.options,i),this.labelModule.baseSize!==void 0&&(this.baseFontSize=this.labelModule.baseSize)}updateShape(e){if(e===this.options.shape&&this.shape)this.shape.setOptions(this.options,this.imageObj,this.imageObjAlt);else switch(this.options.shape){case"box":this.shape=new nq(this.options,this.body,this.labelModule);break;case"circle":this.shape=new iq(this.options,this.body,this.labelModule);break;case"circularImage":this.shape=new gq(this.options,this.body,this.labelModule,this.imageObj,this.imageObjAlt);break;case"custom":this.shape=new sq(this.options,this.body,this.labelModule,this.options.ctxRenderer);break;case"database":this.shape=new rq(this.options,this.body,this.labelModule);break;case"diamond":this.shape=new aq(this.options,this.body,this.labelModule);break;case"dot":this.shape=new Aq(this.options,this.body,this.labelModule);break;case"ellipse":this.shape=new yx(this.options,this.body,this.labelModule);break;case"icon":this.shape=new Cq(this.options,this.body,this.labelModule);break;case"image":this.shape=new Iq(this.options,this.body,this.labelModule,this.imageObj,this.imageObjAlt);break;case"square":this.shape=new lq(this.options,this.body,this.labelModule);break;case"hexagon":this.shape=new cq(this.options,this.body,this.labelModule);break;case"star":this.shape=new dq(this.options,this.body,this.labelModule);break;case"text":this.shape=new uq(this.options,this.body,this.labelModule);break;case"triangle":this.shape=new hq(this.options,this.body,this.labelModule);break;case"triangleDown":this.shape=new fq(this.options,this.body,this.labelModule);break;default:this.shape=new yx(this.options,this.body,this.labelModule);break}this.needsRefresh()}select(){this.selected=!0,this.needsRefresh()}unselect(){this.selected=!1,this.needsRefresh()}needsRefresh(){this.shape.refreshNeeded=!0}getTitle(){return this.options.title}distanceToBorder(e,t){return this.shape.distanceToBorder(e,t)}isFixed(){return this.options.fixed.x&&this.options.fixed.y}isSelected(){return this.selected}getValue(){return this.options.value}getLabelSize(){return this.labelModule.size()}setValueRange(e,t,i){if(this.options.value!==void 0){const o=this.options.scaling.customScalingFunction(e,t,i,this.options.value),r=this.options.scaling.max-this.options.scaling.min;if(this.options.scaling.label.enabled===!0){const A=this.options.scaling.label.max-this.options.scaling.label.min;this.options.font.size=this.options.scaling.label.min+o*A}this.options.size=this.options.scaling.min+o*r}else this.options.size=this.baseSize,this.options.font.size=this.baseFontSize;this.updateLabelModule()}draw(e){const t=this.getFormattingValues();return this.shape.draw(e,this.x,this.y,this.selected,this.hover,t)||{}}updateBoundingBox(e){this.shape.updateBoundingBox(this.x,this.y,e)}resize(e){const t=this.getFormattingValues();this.shape.resize(e,this.selected,this.hover,t)}getItemsOnPoint(e){const t=[];return this.labelModule.visible()&&_u(this.labelModule.getSize(),e)&&t.push({nodeId:this.id,labelId:0}),_u(this.shape.boundingBox,e)&&t.push({nodeId:this.id}),t}isOverlappingWith(e){return this.shape.lefte.left&&this.shape.tope.top}isBoundingBoxOverlappingWith(e){return this.shape.boundingBox.lefte.left&&this.shape.boundingBox.tope.top}static checkMass(e,t){if(e.mass!==void 0&&e.mass<=0){let i="";t!==void 0&&(i=" in node id: "+t),console.error("%cNegative or zero mass disallowed"+i+", setting mass to 1.",K1),e.mass=1}}}class pq{constructor(e,t,i,o){var r;if(this.body=e,this.images=t,this.groups=i,this.layoutEngine=o,this.body.functions.createNode=ge(r=this.create).call(r,this),this.nodesListeners={add:(A,I)=>{this.add(I.items)},update:(A,I)=>{this.update(I.items,I.data,I.oldData)},remove:(A,I)=>{this.remove(I.items)}},this.defaultOptions={borderWidth:1,borderWidthSelected:void 0,brokenImage:void 0,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},opacity:void 0,fixed:{x:!1,y:!1},font:{color:"#343434",size:14,face:"arial",background:"none",strokeWidth:0,strokeColor:"#ffffff",align:"center",vadjust:0,multi:!1,bold:{mod:"bold"},boldital:{mod:"bold italic"},ital:{mod:"italic"},mono:{mod:"",size:15,face:"monospace",vadjust:2}},group:void 0,hidden:!1,icon:{face:"FontAwesome",code:void 0,size:50,color:"#2B7CE9"},image:void 0,imagePadding:{top:0,right:0,bottom:0,left:0},label:void 0,labelHighlightBold:!0,level:void 0,margin:{top:5,right:5,bottom:5,left:5},mass:1,physics:!0,scaling:{min:10,max:30,label:{enabled:!1,min:14,max:30,maxVisible:30,drawThreshold:5},customScalingFunction:function(A,I,l,c){if(I===A)return .5;{const h=1/(I-A);return Math.max(0,(c-A)*h)}}},shadow:{enabled:!1,color:"rgba(0,0,0,0.5)",size:10,x:5,y:5},shape:"ellipse",shapeProperties:{borderDashes:!1,borderRadius:6,interpolation:!0,useImageSize:!1,useBorderWithImage:!1,coordinateOrigin:"center"},size:25,title:void 0,value:void 0,x:void 0,y:void 0},this.defaultOptions.mass<=0)throw"Internal error: mass in defaultOptions of NodesHandler may not be zero or negative";this.options=Pg(this.defaultOptions),this.bindEventListeners()}bindEventListeners(){var e,t;this.body.emitter.on("refreshNodes",ge(e=this.refresh).call(e,this)),this.body.emitter.on("refresh",ge(t=this.refresh).call(t,this)),this.body.emitter.on("destroy",()=>{We(this.nodesListeners,(i,o)=>{this.body.data.nodes&&this.body.data.nodes.off(o,i)}),delete this.body.functions.createNode,delete this.nodesListeners.add,delete this.nodesListeners.update,delete this.nodesListeners.remove,delete this.nodesListeners})}setOptions(e){if(e!==void 0){if(Nt.parseOptions(this.options,e),e.opacity!==void 0&&(vu(e.opacity)||!Bo(e.opacity)||e.opacity<0||e.opacity>1?console.error("Invalid option for node opacity. Value must be between 0 and 1, found: "+e.opacity):this.options.opacity=e.opacity),e.shape!==void 0)for(const t in this.body.nodes)Object.prototype.hasOwnProperty.call(this.body.nodes,t)&&this.body.nodes[t].updateShape();if(typeof e.font<"u"||typeof e.widthConstraint<"u"||typeof e.heightConstraint<"u")for(const t of xt(this.body.nodes))this.body.nodes[t].updateLabelModule(),this.body.nodes[t].needsRefresh();if(e.size!==void 0)for(const t in this.body.nodes)Object.prototype.hasOwnProperty.call(this.body.nodes,t)&&this.body.nodes[t].needsRefresh();(e.hidden!==void 0||e.physics!==void 0)&&this.body.emitter.emit("_dataChanged")}}setData(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;const i=this.body.data.nodes;if(cx("id",e))this.body.data.nodes=e;else if(gt(e))this.body.data.nodes=new Hs,this.body.data.nodes.add(e);else if(!e)this.body.data.nodes=new Hs;else throw new TypeError("Array or DataSet expected");if(i&&We(this.nodesListeners,function(o,r){i.off(r,o)}),this.body.nodes={},this.body.data.nodes){const o=this;We(this.nodesListeners,function(A,I){o.body.data.nodes.on(I,A)});const r=this.body.data.nodes.getIds();this.add(r,!0)}t===!1&&this.body.emitter.emit("_dataChanged")}add(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,i;const o=[];for(let r=0;r1&&arguments[1]!==void 0?arguments[1]:Nt;return new t(e,this.body,this.images,this.groups,this.options,this.defaultOptions)}refresh(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;We(this.body.nodes,(t,i)=>{const o=this.body.data.nodes.get(i);o!==void 0&&(e===!0&&t.setOptions({x:null,y:null}),t.setOptions({fixed:!1}),t.setOptions(o))})}getPositions(e){const t={};if(e!==void 0){if(gt(e)===!0){for(let i=0;i{this.body.emitter.emit("startSimulation")},0)):console.error("Node id supplied to moveNode does not exist. Provided: ",e)}}var mq=ze,Ex=Math.hypot,vq=Math.abs,bq=Math.sqrt,yq=!!Ex&&Ex(1/0,NaN)!==1/0;mq({target:"Math",stat:!0,forced:yq},{hypot:function(e,t){for(var i=0,o=0,r=arguments.length,A=0,I,l;o0?(l=I/A,i+=l*l):i+=I;return A===1/0?1/0:A*bq(i)}});var wq=Ct,xq=wq.Math.hypot,Eq=xq,Sq=Eq,Tq=Sq,Oq=De(Tq);class Ht{static transform(e,t){gt(e)||(e=[e]);const i=t.point.x,o=t.point.y,r=t.angle,A=t.length;for(let I=0;I4&&arguments[4]!==void 0?arguments[4]:this.getViaNode();e.strokeStyle=this.getColor(e,t),e.lineWidth=t.width,t.dashes!==!1?this._drawDashedLine(e,t,r):this._drawLine(e,t,r)}_drawLine(e,t,i,o,r){if(this.from!=this.to)this._line(e,t,i,o,r);else{const[A,I,l]=this._getCircleData(e);this._circle(e,t,A,I,l)}}_drawDashedLine(e,t,i,o,r){e.lineCap="round";const A=gt(t.dashes)?t.dashes:[5,5];if(e.setLineDash!==void 0){if(e.save(),e.setLineDash(A),e.lineDashOffset=0,this.from!=this.to)this._line(e,t,i);else{const[I,l,c]=this._getCircleData(e);this._circle(e,t,I,l,c)}e.setLineDash([0]),e.lineDashOffset=0,e.restore()}else{if(this.from!=this.to)Vb(e,this.from.x,this.from.y,this.to.x,this.to.y,A);else{const[I,l,c]=this._getCircleData(e);this._circle(e,t,I,l,c)}this.enableShadow(e,t),e.stroke(),this.disableShadow(e,t)}}findBorderPosition(e,t,i){return this.from!=this.to?this._findBorderPosition(e,t,i):this._findBorderPositionCircle(e,t,i)}findBorderPositions(e){if(this.from!=this.to)return{from:this._findBorderPosition(this.from,e),to:this._findBorderPosition(this.to,e)};{var t;const[i,o]=Ei(t=this._getCircleData(e)).call(t,0,2);return{from:this._findBorderPositionCircle(this.from,e,{x:i,y:o,low:.25,high:.6,direction:-1}),to:this._findBorderPositionCircle(this.from,e,{x:i,y:o,low:.6,high:.8,direction:1})}}}_getCircleData(e){const t=this.options.selfReference.size;e!==void 0&&this.from.shape.width===void 0&&this.from.shape.resize(e);const i=mx(e,this.options.selfReference.angle,t,this.from);return[i.x,i.y,t]}_pointOnCircle(e,t,i,o){const r=o*2*Math.PI;return{x:e+i*Math.cos(r),y:t-i*Math.sin(r)}}_findBorderPositionCircle(e,t,i){const o=i.x,r=i.y;let A=i.low,I=i.high;const l=i.direction,c=10,h=this.options.selfReference.size,p=.05;let m,v=(A+I)*.5,x=0;this.options.arrowStrikethrough===!0&&(l===-1?x=this.options.endPointOffset.from:l===1&&(x=this.options.endPointOffset.to));let O=0;do{v=(A+I)*.5,m=this._pointOnCircle(o,r,h,v);const y=Math.atan2(e.y-m.y,e.x-m.x),S=e.distanceToBorder(t,y)+x,E=Math.sqrt(Math.pow(m.x-e.x,2)+Math.pow(m.y-e.y,2)),_=S-E;if(Math.abs(_)0?l>0?A=v:I=v:l>0?I=v:A=v,++O}while(A<=I&&O1?h=1:h<0&&(h=0);const p=e+h*I,m=t+h*l,v=p-r,x=m-A;return Math.sqrt(v*v+x*x)}getArrowData(e,t,i,o,r,A){let I,l,c,h,p,m,v;const x=A.width;t==="from"?(c=this.from,h=this.to,p=A.fromArrowScale<0,m=Math.abs(A.fromArrowScale),v=A.fromArrowType):t==="to"?(c=this.to,h=this.from,p=A.toArrowScale<0,m=Math.abs(A.toArrowScale),v=A.toArrowType):(c=this.to,h=this.from,p=A.middleArrowScale<0,m=Math.abs(A.middleArrowScale),v=A.middleArrowType);const O=15*m+3*x;if(c!=h){const _=Oq(c.x-h.x,c.y-h.y),j=O/_;if(t!=="middle")if(this.options.smooth.enabled===!0){const X=this._findBorderPosition(c,e,{via:i}),ne=this.getPoint(X.t+j*(t==="from"?1:-1),i);I=Math.atan2(X.y-ne.y,X.x-ne.x),l=X}else I=Math.atan2(c.y-h.y,c.x-h.x),l=this._findBorderPosition(c,e);else{const X=(p?-j:j)/2,ne=this.getPoint(.5+X,i),F=this.getPoint(.5-X,i);I=Math.atan2(ne.y-F.y,ne.x-F.x),l=this.getPoint(.5,i)}}else{const[_,j,X]=this._getCircleData(e);if(t==="from"){const ne=this.options.selfReference.angle,F=this.options.selfReference.angle+Math.PI,V=this._findBorderPositionCircle(this.from,e,{x:_,y:j,low:ne,high:F,direction:-1});I=V.t*-2*Math.PI+1.5*Math.PI+.1*Math.PI,l=V}else if(t==="to"){const ne=this.options.selfReference.angle,F=this.options.selfReference.angle+Math.PI,V=this._findBorderPositionCircle(this.from,e,{x:_,y:j,low:ne,high:F,direction:1});I=V.t*-2*Math.PI+1.5*Math.PI-1.1*Math.PI,l=V}else{const ne=this.options.selfReference.angle/(2*Math.PI);l=this._pointOnCircle(_,j,X,ne),I=ne*-2*Math.PI+1.5*Math.PI+.1*Math.PI}}const y=l.x-O*.9*Math.cos(I),S=l.y-O*.9*Math.sin(I);return{point:l,core:{x:y,y:S},angle:I,length:O,type:v}}drawArrowHead(e,t,i,o,r){e.strokeStyle=this.getColor(e,t),e.fillStyle=e.strokeStyle,e.lineWidth=t.width,Sx.draw(e,r)&&(this.enableShadow(e,t),wa(e).call(e),this.disableShadow(e,t))}enableShadow(e,t){t.shadow===!0&&(e.shadowColor=t.shadowColor,e.shadowBlur=t.shadowSize,e.shadowOffsetX=t.shadowX,e.shadowOffsetY=t.shadowY)}disableShadow(e,t){t.shadow===!0&&(e.shadowColor="rgba(0,0,0,0)",e.shadowBlur=0,e.shadowOffsetX=0,e.shadowOffsetY=0)}drawBackground(e,t){if(t.background!==!1){const i={strokeStyle:e.strokeStyle,lineWidth:e.lineWidth,dashes:e.dashes};e.strokeStyle=t.backgroundColor,e.lineWidth=t.backgroundSize,this.setStrokeDashed(e,t.backgroundDashes),e.stroke(),e.strokeStyle=i.strokeStyle,e.lineWidth=i.lineWidth,e.dashes=i.dashes,this.setStrokeDashed(e,t.dashes)}}setStrokeDashed(e,t){if(t!==!1)if(e.setLineDash!==void 0){const i=gt(t)?t:[5,5];e.setLineDash(i)}else console.warn("setLineDash is not supported in this browser. The dashed stroke cannot be used.");else e.setLineDash!==void 0?e.setLineDash([]):console.warn("setLineDash is not supported in this browser. The dashed stroke cannot be used.")}}function Dx(n,e){var t=xt(n);if(Li){var i=Li(n);e&&(i=$t(i).call(i,function(o){return Gi(n,o).enumerable})),t.push.apply(t,i)}return t}function kx(n){for(var e=1;e2&&arguments[2]!==void 0?arguments[2]:this._getViaCoordinates();const o=10,r=.2;let A=!1,I=1,l=0,c=this.to,h,p,m=this.options.endPointOffset?this.options.endPointOffset.to:0;e.id===this.from.id&&(c=this.from,A=!0,m=this.options.endPointOffset?this.options.endPointOffset.from:0),this.options.arrowStrikethrough===!1&&(m=0);let v=0;do{p=(l+I)*.5,h=this.getPoint(p,i);const x=Math.atan2(c.y-h.y,c.x-h.x),O=c.distanceToBorder(t,x)+m,y=Math.sqrt(Math.pow(h.x-c.x,2)+Math.pow(h.y-c.y,2)),S=O-y;if(Math.abs(S)0&&(c=this._getDistanceToLine(x,O,m,v,r,A),l=c{this.positionBezierNode()},this._body.emitter.on("_repositionBezierNodes",this._boundFunction)}setOptions(e){super.setOptions(e);let t=!1;this.options.physics!==e.physics&&(t=!0),this.options=e,this.id=this.options.id,this.from=this._body.nodes[this.options.from],this.to=this._body.nodes[this.options.to],this.setupSupportNode(),this.connect(),t===!0&&(this.via.setOptions({physics:this.options.physics}),this.positionBezierNode())}connect(){this.from=this._body.nodes[this.options.from],this.to=this._body.nodes[this.options.to],this.from===void 0||this.to===void 0||this.options.physics===!1?this.via.setOptions({physics:!1}):this.from.id===this.to.id?this.via.setOptions({physics:!1}):this.via.setOptions({physics:!0})}cleanup(){return this._body.emitter.off("_repositionBezierNodes",this._boundFunction),this.via!==void 0?(delete this._body.nodes[this.via.id],this.via=void 0,!0):!1}setupSupportNode(){if(this.via===void 0){const e="edgeId:"+this.id,t=this._body.functions.createNode({id:e,shape:"circle",physics:!0,hidden:!0});this._body.nodes[e]=t,this.via=t,this.via.parentEdgeId=this.id,this.positionBezierNode()}}positionBezierNode(){this.via!==void 0&&this.from!==void 0&&this.to!==void 0?(this.via.x=.5*(this.from.x+this.to.x),this.via.y=.5*(this.from.y+this.to.y)):this.via!==void 0&&(this.via.x=0,this.via.y=0)}_line(e,t,i){this._bezierCurve(e,t,i)}_getViaCoordinates(){return this.via}getViaNode(){return this.via}getPoint(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.via;if(this.from===this.to){const[i,o,r]=this._getCircleData(),A=2*Math.PI*(1-e);return{x:i+r*Math.sin(A),y:o+r-r*(1-Math.cos(A))}}else return{x:Math.pow(1-e,2)*this.fromPoint.x+2*e*(1-e)*t.x+Math.pow(e,2)*this.toPoint.x,y:Math.pow(1-e,2)*this.fromPoint.y+2*e*(1-e)*t.y+Math.pow(e,2)*this.toPoint.y}}_findBorderPosition(e,t){return this._findBorderPositionBezier(e,t,this.via)}_getDistanceToEdge(e,t,i,o,r,A){return this._getDistanceToBezierEdge(e,t,i,o,r,A,this.via)}}class Rx extends Pu{constructor(e,t,i){super(e,t,i)}_line(e,t,i){this._bezierCurve(e,t,i)}getViaNode(){return this._getViaCoordinates()}_getViaCoordinates(){const e=this.options.smooth.roundness,t=this.options.smooth.type;let i=Math.abs(this.from.x-this.to.x),o=Math.abs(this.from.y-this.to.y);if(t==="discrete"||t==="diagonalCross"){let r,A;i<=o?r=A=e*o:r=A=e*i,this.from.x>this.to.x&&(r=-r),this.from.y>=this.to.y&&(A=-A);let I=this.from.x+r,l=this.from.y+A;return t==="discrete"&&(i<=o?I=ithis.to.x&&(r=-r),this.from.y>=this.to.y&&(A=-A);let I=this.from.x+r,l=this.from.y+A;return i<=o?this.from.x<=this.to.x?I=this.to.xI?this.to.x:I:this.from.y>=this.to.y?l=this.to.y>l?this.to.y:l:l=this.to.y2&&arguments[2]!==void 0?arguments[2]:{};return this._findBorderPositionBezier(e,t,i.via)}_getDistanceToEdge(e,t,i,o,r,A){let I=arguments.length>6&&arguments[6]!==void 0?arguments[6]:this._getViaCoordinates();return this._getDistanceToBezierEdge(e,t,i,o,r,A,I)}getPoint(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this._getViaCoordinates();const i=e,o=Math.pow(1-i,2)*this.fromPoint.x+2*i*(1-i)*t.x+Math.pow(i,2)*this.toPoint.x,r=Math.pow(1-i,2)*this.fromPoint.y+2*i*(1-i)*t.y+Math.pow(i,2)*this.toPoint.y;return{x:o,y:r}}}class Gq extends Pu{constructor(e,t,i){super(e,t,i)}_getDistanceToBezierEdge2(e,t,i,o,r,A,I,l){let c=1e9,h=e,p=t;const m=[0,0,0,0];for(let v=1;v<10;v++){const x=.1*v;m[0]=Math.pow(1-x,3),m[1]=3*x*Math.pow(1-x,2),m[2]=3*Math.pow(x,2)*(1-x),m[3]=Math.pow(x,3);const O=m[0]*e+m[1]*I.x+m[2]*l.x+m[3]*i,y=m[0]*t+m[1]*I.y+m[2]*l.y+m[3]*o;if(v>0){const S=this._getDistanceToLine(h,p,O,y,r,A);c=SMath.abs(t)||this.options.smooth.forceDirection===!0||this.options.smooth.forceDirection==="horizontal")&&this.options.smooth.forceDirection!=="vertical"?(o=this.from.y,A=this.to.y,i=this.from.x-I*e,r=this.to.x+I*e):(o=this.from.y-I*t,A=this.to.y+I*t,i=this.from.x,r=this.to.x),[{x:i,y:o},{x:r,y:A}]}getViaNode(){return this._getViaCoordinates()}_findBorderPosition(e,t){return this._findBorderPositionBezier(e,t)}_getDistanceToEdge(e,t,i,o,r,A){let[I,l]=arguments.length>6&&arguments[6]!==void 0?arguments[6]:this._getViaCoordinates();return this._getDistanceToBezierEdge2(e,t,i,o,r,A,I,l)}getPoint(e){let[t,i]=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this._getViaCoordinates();const o=e,r=[Math.pow(1-o,3),3*o*Math.pow(1-o,2),3*Math.pow(o,2)*(1-o),Math.pow(o,3)],A=r[0]*this.fromPoint.x+r[1]*t.x+r[2]*i.x+r[3]*this.toPoint.x,I=r[0]*this.fromPoint.y+r[1]*t.y+r[2]*i.y+r[3]*this.toPoint.y;return{x:A,y:I}}}class _x extends Nx{constructor(e,t,i){super(e,t,i)}_line(e,t){e.beginPath(),e.moveTo(this.fromPoint.x,this.fromPoint.y),e.lineTo(this.toPoint.x,this.toPoint.y),this.enableShadow(e,t),e.stroke(),this.disableShadow(e,t)}getViaNode(){}getPoint(e){return{x:(1-e)*this.fromPoint.x+e*this.toPoint.x,y:(1-e)*this.fromPoint.y+e*this.toPoint.y}}_findBorderPosition(e,t){let i=this.to,o=this.from;e.id===this.from.id&&(i=this.from,o=this.to);const r=Math.atan2(i.y-o.y,i.x-o.x),A=i.x-o.x,I=i.y-o.y,l=Math.sqrt(A*A+I*I),c=e.distanceToBorder(t,r),h=(l-c)/l;return{x:(1-h)*o.x+h*i.x,y:(1-h)*o.y+h*i.y,t:0}}_getDistanceToEdge(e,t,i,o,r,A){return this._getDistanceToLine(e,t,i,o,r,A)}}class Vg{constructor(e,t,i,o,r){if(t===void 0)throw new Error("No body provided");this.options=Pg(o),this.globalOptions=o,this.defaultOptions=r,this.body=t,this.imagelist=i,this.id=void 0,this.fromId=void 0,this.toId=void 0,this.selected=!1,this.hover=!1,this.labelDirty=!0,this.baseWidth=this.options.width,this.baseFontSize=this.options.font.size,this.from=void 0,this.to=void 0,this.edgeType=void 0,this.connected=!1,this.labelModule=new Ks(this.body,this.options,!0),this.setOptions(e)}setOptions(e){if(!e)return;let t=typeof e.physics<"u"&&this.options.physics!==e.physics||typeof e.hidden<"u"&&(this.options.hidden||!1)!==(e.hidden||!1)||typeof e.from<"u"&&this.options.from!==e.from||typeof e.to<"u"&&this.options.to!==e.to;Vg.parseOptions(this.options,e,!0,this.globalOptions),e.id!==void 0&&(this.id=e.id),e.from!==void 0&&(this.fromId=e.from),e.to!==void 0&&(this.toId=e.to),e.title!==void 0&&(this.title=e.title),e.value!==void 0&&(e.value=px(e.value));const i=[e,this.options,this.defaultOptions];return this.chooser=zu("edge",i),this.updateLabelModule(e),t=this.updateEdgeType()||t,this._setInteractionWidths(),this.connect(),t}static parseOptions(e,t){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,o=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},r=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!1;if(Zs(["endPointOffset","arrowStrikethrough","id","from","hidden","hoverWidth","labelHighlightBold","length","line","opacity","physics","scaling","selectionWidth","selfReferenceSize","selfReference","to","title","value","width","font","chosen","widthConstraint"],e,t,i),t.endPointOffset!==void 0&&t.endPointOffset.from!==void 0&&(Bo(t.endPointOffset.from)?e.endPointOffset.from=t.endPointOffset.from:(e.endPointOffset.from=o.endPointOffset.from!==void 0?o.endPointOffset.from:0,console.error("endPointOffset.from is not a valid number"))),t.endPointOffset!==void 0&&t.endPointOffset.to!==void 0&&(Bo(t.endPointOffset.to)?e.endPointOffset.to=t.endPointOffset.to:(e.endPointOffset.to=o.endPointOffset.to!==void 0?o.endPointOffset.to:0,console.error("endPointOffset.to is not a valid number"))),AI(t.label)?e.label=t.label:AI(e.label)||(e.label=void 0),ai(e,t,"smooth",o),ai(e,t,"shadow",o),ai(e,t,"background",o),t.dashes!==void 0&&t.dashes!==null?e.dashes=t.dashes:i===!0&&t.dashes===null&&(e.dashes=zg(o.dashes)),t.scaling!==void 0&&t.scaling!==null?(t.scaling.min!==void 0&&(e.scaling.min=t.scaling.min),t.scaling.max!==void 0&&(e.scaling.max=t.scaling.max),ai(e.scaling,t.scaling,"label",o.scaling)):i===!0&&t.scaling===null&&(e.scaling=zg(o.scaling)),t.arrows!==void 0&&t.arrows!==null)if(typeof t.arrows=="string"){const I=t.arrows.toLowerCase();e.arrows.to.enabled=lt(I).call(I,"to")!=-1,e.arrows.middle.enabled=lt(I).call(I,"middle")!=-1,e.arrows.from.enabled=lt(I).call(I,"from")!=-1}else if(typeof t.arrows=="object")ai(e.arrows,t.arrows,"to",o.arrows),ai(e.arrows,t.arrows,"middle",o.arrows),ai(e.arrows,t.arrows,"from",o.arrows);else throw new Error("The arrow newOptions can only be an object or a string. Refer to the documentation. You used:"+ks(t.arrows));else i===!0&&t.arrows===null&&(e.arrows=zg(o.arrows));if(t.color!==void 0&&t.color!==null){const I=Bs(t.color)?{color:t.color,highlight:t.color,hover:t.color,inherit:!1,opacity:1}:t.color,l=e.color;if(r)vt(l,o.color,!1,i);else for(const c in l)Object.prototype.hasOwnProperty.call(l,c)&&delete l[c];if(Bs(l))l.color=l,l.highlight=l,l.hover=l,l.inherit=!1,I.opacity===void 0&&(l.opacity=1);else{let c=!1;I.color!==void 0&&(l.color=I.color,c=!0),I.highlight!==void 0&&(l.highlight=I.highlight,c=!0),I.hover!==void 0&&(l.hover=I.hover,c=!0),I.inherit!==void 0&&(l.inherit=I.inherit),I.opacity!==void 0&&(l.opacity=Math.min(1,Math.max(0,I.opacity))),c===!0?l.inherit=!1:l.inherit===void 0&&(l.inherit="from")}}else i===!0&&t.color===null&&(e.color=Pg(o.color));i===!0&&t.font===null&&(e.font=Pg(o.font)),Object.prototype.hasOwnProperty.call(t,"selfReferenceSize")&&(console.warn("The selfReferenceSize property has been deprecated. Please use selfReference property instead. The selfReference can be set like thise selfReference:{size:30, angle:Math.PI / 4}"),e.selfReference.size=t.selfReferenceSize)}getFormattingValues(){const e=this.options.arrows.to===!0||this.options.arrows.to.enabled===!0,t=this.options.arrows.from===!0||this.options.arrows.from.enabled===!0,i=this.options.arrows.middle===!0||this.options.arrows.middle.enabled===!0,o=this.options.color.inherit,r={toArrow:e,toArrowScale:this.options.arrows.to.scaleFactor,toArrowType:this.options.arrows.to.type,toArrowSrc:this.options.arrows.to.src,toArrowImageWidth:this.options.arrows.to.imageWidth,toArrowImageHeight:this.options.arrows.to.imageHeight,middleArrow:i,middleArrowScale:this.options.arrows.middle.scaleFactor,middleArrowType:this.options.arrows.middle.type,middleArrowSrc:this.options.arrows.middle.src,middleArrowImageWidth:this.options.arrows.middle.imageWidth,middleArrowImageHeight:this.options.arrows.middle.imageHeight,fromArrow:t,fromArrowScale:this.options.arrows.from.scaleFactor,fromArrowType:this.options.arrows.from.type,fromArrowSrc:this.options.arrows.from.src,fromArrowImageWidth:this.options.arrows.from.imageWidth,fromArrowImageHeight:this.options.arrows.from.imageHeight,arrowStrikethrough:this.options.arrowStrikethrough,color:o?void 0:this.options.color.color,inheritsColor:o,opacity:this.options.color.opacity,hidden:this.options.hidden,length:this.options.length,shadow:this.options.shadow.enabled,shadowColor:this.options.shadow.color,shadowSize:this.options.shadow.size,shadowX:this.options.shadow.x,shadowY:this.options.shadow.y,dashes:this.options.dashes,width:this.options.width,background:this.options.background.enabled,backgroundColor:this.options.background.color,backgroundSize:this.options.background.size,backgroundDashes:this.options.background.dashes};if(this.selected||this.hover)if(this.chooser===!0){if(this.selected){const A=this.options.selectionWidth;typeof A=="function"?r.width=A(r.width):typeof A=="number"&&(r.width+=A),r.width=Math.max(r.width,.3/this.body.view.scale),r.color=this.options.color.highlight,r.shadow=this.options.shadow.enabled}else if(this.hover){const A=this.options.hoverWidth;typeof A=="function"?r.width=A(r.width):typeof A=="number"&&(r.width+=A),r.width=Math.max(r.width,.3/this.body.view.scale),r.color=this.options.color.hover,r.shadow=this.options.shadow.enabled}}else typeof this.chooser=="function"&&(this.chooser(r,this.options.id,this.selected,this.hover),r.color!==void 0&&(r.inheritsColor=!1),r.shadow===!1&&(r.shadowColor!==this.options.shadow.color||r.shadowSize!==this.options.shadow.size||r.shadowX!==this.options.shadow.x||r.shadowY!==this.options.shadow.y)&&(r.shadow=!0));else r.shadow=this.options.shadow.enabled,r.width=Math.max(r.width,.3/this.body.view.scale);return r}updateLabelModule(e){const t=[e,this.options,this.globalOptions,this.defaultOptions];this.labelModule.update(this.options,t),this.labelModule.baseSize!==void 0&&(this.baseFontSize=this.labelModule.baseSize)}updateEdgeType(){const e=this.options.smooth;let t=!1,i=!0;return this.edgeType!==void 0&&((this.edgeType instanceof Mx&&e.enabled===!0&&e.type==="dynamic"||this.edgeType instanceof zx&&e.enabled===!0&&e.type==="cubicBezier"||this.edgeType instanceof Rx&&e.enabled===!0&&e.type!=="dynamic"&&e.type!=="cubicBezier"||this.edgeType instanceof _x&&e.type.enabled===!1)&&(i=!1),i===!0&&(t=this.cleanup())),i===!0?e.enabled===!0?e.type==="dynamic"?(t=!0,this.edgeType=new Mx(this.options,this.body,this.labelModule)):e.type==="cubicBezier"?this.edgeType=new zx(this.options,this.body,this.labelModule):this.edgeType=new Rx(this.options,this.body,this.labelModule):this.edgeType=new _x(this.options,this.body,this.labelModule):this.edgeType.setOptions(this.options),t}connect(){this.disconnect(),this.from=this.body.nodes[this.fromId]||void 0,this.to=this.body.nodes[this.toId]||void 0,this.connected=this.from!==void 0&&this.to!==void 0,this.connected===!0?(this.from.attachEdge(this),this.to.attachEdge(this)):(this.from&&this.from.detachEdge(this),this.to&&this.to.detachEdge(this)),this.edgeType.connect()}disconnect(){this.from&&(this.from.detachEdge(this),this.from=void 0),this.to&&(this.to.detachEdge(this),this.to=void 0),this.connected=!1}getTitle(){return this.title}isSelected(){return this.selected}getValue(){return this.options.value}setValueRange(e,t,i){if(this.options.value!==void 0){const o=this.options.scaling.customScalingFunction(e,t,i,this.options.value),r=this.options.scaling.max-this.options.scaling.min;if(this.options.scaling.label.enabled===!0){const A=this.options.scaling.label.max-this.options.scaling.label.min;this.options.font.size=this.options.scaling.label.min+o*A}this.options.width=this.options.scaling.min+o*r}else this.options.width=this.baseWidth,this.options.font.size=this.baseFontSize;this._setInteractionWidths(),this.updateLabelModule()}_setInteractionWidths(){typeof this.options.hoverWidth=="function"?this.edgeType.hoverWidth=this.options.hoverWidth(this.options.width):this.edgeType.hoverWidth=this.options.hoverWidth+this.options.width,typeof this.options.selectionWidth=="function"?this.edgeType.selectionWidth=this.options.selectionWidth(this.options.width):this.edgeType.selectionWidth=this.options.selectionWidth+this.options.width}draw(e){const t=this.getFormattingValues();if(t.hidden)return;const i=this.edgeType.getViaNode();this.edgeType.drawLine(e,t,this.selected,this.hover,i),this.drawLabel(e,i)}drawArrows(e){const t=this.getFormattingValues();if(t.hidden)return;const i=this.edgeType.getViaNode(),o={};this.edgeType.fromPoint=this.edgeType.from,this.edgeType.toPoint=this.edgeType.to,t.fromArrow&&(o.from=this.edgeType.getArrowData(e,"from",i,this.selected,this.hover,t),t.arrowStrikethrough===!1&&(this.edgeType.fromPoint=o.from.core),t.fromArrowSrc&&(o.from.image=this.imagelist.load(t.fromArrowSrc)),t.fromArrowImageWidth&&(o.from.imageWidth=t.fromArrowImageWidth),t.fromArrowImageHeight&&(o.from.imageHeight=t.fromArrowImageHeight)),t.toArrow&&(o.to=this.edgeType.getArrowData(e,"to",i,this.selected,this.hover,t),t.arrowStrikethrough===!1&&(this.edgeType.toPoint=o.to.core),t.toArrowSrc&&(o.to.image=this.imagelist.load(t.toArrowSrc)),t.toArrowImageWidth&&(o.to.imageWidth=t.toArrowImageWidth),t.toArrowImageHeight&&(o.to.imageHeight=t.toArrowImageHeight)),t.middleArrow&&(o.middle=this.edgeType.getArrowData(e,"middle",i,this.selected,this.hover,t),t.middleArrowSrc&&(o.middle.image=this.imagelist.load(t.middleArrowSrc)),t.middleArrowImageWidth&&(o.middle.imageWidth=t.middleArrowImageWidth),t.middleArrowImageHeight&&(o.middle.imageHeight=t.middleArrowImageHeight)),t.fromArrow&&this.edgeType.drawArrowHead(e,t,this.selected,this.hover,o.from),t.middleArrow&&this.edgeType.drawArrowHead(e,t,this.selected,this.hover,o.middle),t.toArrow&&this.edgeType.drawArrowHead(e,t,this.selected,this.hover,o.to)}drawLabel(e,t){if(this.options.label!==void 0){const i=this.from,o=this.to;this.labelModule.differentState(this.selected,this.hover)&&this.labelModule.getTextSize(e,this.selected,this.hover);let r;if(i.id!=o.id){this.labelModule.pointToSelf=!1,r=this.edgeType.getPoint(.5,t),e.save();const A=this._getRotation(e);A.angle!=0&&(e.translate(A.x,A.y),e.rotate(A.angle)),this.labelModule.draw(e,r.x,r.y,this.selected,this.hover),e.restore()}else{this.labelModule.pointToSelf=!0;const A=mx(e,this.options.selfReference.angle,this.options.selfReference.size,i);r=this._pointOnCircle(A.x,A.y,this.options.selfReference.size,this.options.selfReference.angle),this.labelModule.draw(e,r.x,r.y,this.selected,this.hover)}}}getItemsOnPoint(e){const t=[];if(this.labelModule.visible()){const o=this._getRotation();_u(this.labelModule.getSize(),e,o)&&t.push({edgeId:this.id,labelId:0})}const i={left:e.x,top:e.y};return this.isOverlappingWith(i)&&t.push({edgeId:this.id}),t}isOverlappingWith(e){if(this.connected){const i=this.from.x,o=this.from.y,r=this.to.x,A=this.to.y,I=e.left,l=e.top;return this.edgeType.getDistanceToEdge(i,o,r,A,I,l)<10}else return!1}_getRotation(e){const t=this.edgeType.getViaNode(),i=this.edgeType.getPoint(.5,t);e!==void 0&&this.labelModule.calculateLabelSize(e,this.selected,this.hover,i.x,i.y);const o={x:i.x,y:this.labelModule.size.yLine,angle:0};if(!this.labelModule.visible()||this.options.font.align==="horizontal")return o;const r=this.from.y-this.to.y,A=this.from.x-this.to.x;let I=Math.atan2(r,A);return(I<-1&&A<0||I>0&&A<0)&&(I+=Math.PI),o.angle=I,o}_pointOnCircle(e,t,i,o){return{x:e+i*Math.cos(o),y:t-i*Math.sin(o)}}select(){this.selected=!0}unselect(){this.selected=!1}cleanup(){return this.edgeType.cleanup()}remove(){this.cleanup(),this.disconnect(),delete this.body.edges[this.id]}endPointsValid(){return this.body.nodes[this.fromId]!==void 0&&this.body.nodes[this.toId]!==void 0}}class Fq{constructor(e,t,i){var o;this.body=e,this.images=t,this.groups=i,this.body.functions.createEdge=ge(o=this.create).call(o,this),this.edgesListeners={add:(r,A)=>{this.add(A.items)},update:(r,A)=>{this.update(A.items)},remove:(r,A)=>{this.remove(A.items)}},this.options={},this.defaultOptions={arrows:{to:{enabled:!1,scaleFactor:1,type:"arrow"},middle:{enabled:!1,scaleFactor:1,type:"arrow"},from:{enabled:!1,scaleFactor:1,type:"arrow"}},endPointOffset:{from:0,to:0},arrowStrikethrough:!0,color:{color:"#848484",highlight:"#848484",hover:"#848484",inherit:"from",opacity:1},dashes:!1,font:{color:"#343434",size:14,face:"arial",background:"none",strokeWidth:2,strokeColor:"#ffffff",align:"horizontal",multi:!1,vadjust:0,bold:{mod:"bold"},boldital:{mod:"bold italic"},ital:{mod:"italic"},mono:{mod:"",size:15,face:"courier new",vadjust:2}},hidden:!1,hoverWidth:1.5,label:void 0,labelHighlightBold:!0,length:void 0,physics:!0,scaling:{min:1,max:15,label:{enabled:!0,min:14,max:30,maxVisible:30,drawThreshold:5},customScalingFunction:function(r,A,I,l){if(A===r)return .5;{const c=1/(A-r);return Math.max(0,(l-r)*c)}}},selectionWidth:1.5,selfReference:{size:20,angle:Math.PI/4,renderBehindTheNode:!0},shadow:{enabled:!1,color:"rgba(0,0,0,0.5)",size:10,x:5,y:5},background:{enabled:!1,color:"rgba(111,111,111,1)",size:10,dashes:!1},smooth:{enabled:!0,type:"dynamic",forceDirection:"none",roundness:.5},title:void 0,width:1,value:void 0},vt(this.options,this.defaultOptions),this.bindEventListeners()}bindEventListeners(){var e=this,t,i;this.body.emitter.on("_forceDisableDynamicCurves",function(o){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;o==="dynamic"&&(o="continuous");let A=!1;for(const I in e.body.edges)if(Object.prototype.hasOwnProperty.call(e.body.edges,I)){const l=e.body.edges[I],c=e.body.data.edges.get(I);if(c!=null){const h=c.smooth;h!==void 0&&h.enabled===!0&&h.type==="dynamic"&&(o===void 0?l.setOptions({smooth:!1}):l.setOptions({smooth:{type:o}}),A=!0)}}r===!0&&A===!0&&e.body.emitter.emit("_dataChanged")}),this.body.emitter.on("_dataUpdated",()=>{this.reconnectEdges()}),this.body.emitter.on("refreshEdges",ge(t=this.refresh).call(t,this)),this.body.emitter.on("refresh",ge(i=this.refresh).call(i,this)),this.body.emitter.on("destroy",()=>{We(this.edgesListeners,(o,r)=>{this.body.data.edges&&this.body.data.edges.off(r,o)}),delete this.body.functions.createEdge,delete this.edgesListeners.add,delete this.edgesListeners.update,delete this.edgesListeners.remove,delete this.edgesListeners})}setOptions(e){if(e!==void 0){Vg.parseOptions(this.options,e,!0,this.defaultOptions,!0);let t=!1;if(e.smooth!==void 0)for(const i in this.body.edges)Object.prototype.hasOwnProperty.call(this.body.edges,i)&&(t=this.body.edges[i].updateEdgeType()||t);if(e.font!==void 0)for(const i in this.body.edges)Object.prototype.hasOwnProperty.call(this.body.edges,i)&&this.body.edges[i].updateLabelModule();(e.hidden!==void 0||e.physics!==void 0||t===!0)&&this.body.emitter.emit("_dataChanged")}}setData(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;const i=this.body.data.edges;if(cx("id",e))this.body.data.edges=e;else if(gt(e))this.body.data.edges=new Hs,this.body.data.edges.add(e);else if(!e)this.body.data.edges=new Hs;else throw new TypeError("Array or DataSet expected");if(i&&We(this.edgesListeners,(o,r)=>{i.off(r,o)}),this.body.edges={},this.body.data.edges){We(this.edgesListeners,(r,A)=>{this.body.data.edges.on(A,r)});const o=this.body.data.edges.getIds();this.add(o,!0)}this.body.emitter.emit("_adjustEdgesForHierarchicalLayout"),t===!1&&this.body.emitter.emit("_dataChanged")}add(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;const i=this.body.edges,o=this.body.data.edges;for(let r=0;r1&&arguments[1]!==void 0?arguments[1]:!0;if(e.length===0)return;const i=this.body.edges;We(e,o=>{const r=i[o];r!==void 0&&r.remove()}),t&&this.body.emitter.emit("_dataChanged")}refresh(){We(this.body.edges,(e,t)=>{const i=this.body.data.edges.get(t);i!==void 0&&e.setOptions(i)})}create(e){return new Vg(e,this.body,this.images,this.options,this.defaultOptions)}reconnectEdges(){let e;const t=this.body.nodes,i=this.body.edges;for(e in t)Object.prototype.hasOwnProperty.call(t,e)&&(t[e].edges=[]);for(e in i)if(Object.prototype.hasOwnProperty.call(i,e)){const o=i[e];o.from=null,o.to=null,o.connect()}}getConnectedNodes(e){const t=[];if(this.body.edges[e]!==void 0){const i=this.body.edges[e];i.fromId!==void 0&&t.push(i.fromId),i.toId!==void 0&&t.push(i.toId)}return t}_updateState(){this._addMissingEdges(),this._removeInvalidEdges()}_removeInvalidEdges(){const e=[];We(this.body.edges,(t,i)=>{const o=this.body.nodes[t.toId],r=this.body.nodes[t.fromId];o!==void 0&&o.isCluster===!0||r!==void 0&&r.isCluster===!0||(o===void 0||r===void 0)&&e.push(i)}),this.remove(e,!1)}_addMissingEdges(){const e=this.body.data.edges;if(e==null)return;const t=this.body.edges,i=[];it(e).call(e,(o,r)=>{t[r]===void 0&&i.push(r)}),this.add(i,!0)}}class jx{constructor(e,t,i){this.body=e,this.physicsBody=t,this.barnesHutTree,this.setOptions(i),this._rng=QC("BARNES HUT SOLVER")}setOptions(e){this.options=e,this.thetaInversed=1/this.options.theta,this.overlapAvoidanceFactor=1-Math.max(0,Math.min(1,this.options.avoidOverlap))}solve(){if(this.options.gravitationalConstant!==0&&this.physicsBody.physicsNodeIndices.length>0){let e;const t=this.body.nodes,i=this.physicsBody.physicsNodeIndices,o=i.length,r=this._formBarnesHutTree(t,i);this.barnesHutTree=r;for(let A=0;A0&&this._getForceContributions(r.root,e)}}_getForceContributions(e,t){this._getForceContribution(e.children.NW,t),this._getForceContribution(e.children.NE,t),this._getForceContribution(e.children.SW,t),this._getForceContribution(e.children.SE,t)}_getForceContribution(e,t){if(e.childrenCount>0){const i=e.centerOfMass.x-t.x,o=e.centerOfMass.y-t.y,r=Math.sqrt(i*i+o*o);r*e.calcSize>this.thetaInversed?this._calculateForces(r,i,o,t,e):e.childrenCount===4?this._getForceContributions(e,t):e.children.data.id!=t.id&&this._calculateForces(r,i,o,t,e)}}_calculateForces(e,t,i,o,r){e===0&&(e=.1,t=e),this.overlapAvoidanceFactor<1&&o.shape.radius&&(e=Math.max(.1+this.overlapAvoidanceFactor*o.shape.radius,e-o.shape.radius));const A=this.options.gravitationalConstant*r.mass*o.options.mass/Math.pow(e,3),I=t*A,l=i*A;this.physicsBody.forces[o.id].x+=I,this.physicsBody.forces[o.id].y+=l}_formBarnesHutTree(e,t){let i;const o=t.length;let r=e[t[0]].x,A=e[t[0]].y,I=e[t[0]].x,l=e[t[0]].y;for(let y=1;y0&&(EI&&(I=E),_l&&(l=_))}const c=Math.abs(I-r)-Math.abs(l-A);c>0?(A-=.5*c,l+=.5*c):(r+=.5*c,I-=.5*c);const p=Math.max(1e-5,Math.abs(I-r)),m=.5*p,v=.5*(r+I),x=.5*(A+l),O={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:v-m,maxX:v+m,minY:x-m,maxY:x+m},size:p,calcSize:1/p,children:{data:null},maxWidth:0,level:0,childrenCount:4}};this._splitBranch(O.root);for(let y=0;y0&&this._placeInTree(O.root,i);return O}_updateBranchMass(e,t){const i=e.centerOfMass,o=e.mass+t.options.mass,r=1/o;i.x=i.x*e.mass+t.x*t.options.mass,i.x*=r,i.y=i.y*e.mass+t.y*t.options.mass,i.y*=r,e.mass=o;const A=Math.max(Math.max(t.height,t.radius),t.width);e.maxWidth=e.maxWidtht.x?o.maxY>t.y?r="NW":r="SW":o.maxY>t.y?r="NE":r="SE",this._placeInRegion(e,t,r)}_placeInRegion(e,t,i){const o=e.children[i];switch(o.childrenCount){case 0:o.children.data=t,o.childrenCount=1,this._updateBranchMass(o,t);break;case 1:o.children.data.x===t.x&&o.children.data.y===t.y?(t.x+=this._rng(),t.y+=this._rng()):(this._splitBranch(o),this._placeInTree(o,t));break;case 4:this._placeInTree(o,t);break}}_splitBranch(e){let t=null;e.childrenCount===1&&(t=e.children.data,e.mass=0,e.centerOfMass.x=0,e.centerOfMass.y=0),e.childrenCount=4,e.children.data=null,this._insertRegion(e,"NW"),this._insertRegion(e,"NE"),this._insertRegion(e,"SW"),this._insertRegion(e,"SE"),t!=null&&this._placeInTree(e,t)}_insertRegion(e,t){let i,o,r,A;const I=.5*e.size;switch(t){case"NW":i=e.range.minX,o=e.range.minX+I,r=e.range.minY,A=e.range.minY+I;break;case"NE":i=e.range.minX+I,o=e.range.maxX,r=e.range.minY,A=e.range.minY+I;break;case"SW":i=e.range.minX,o=e.range.minX+I,r=e.range.minY+I,A=e.range.maxY;break;case"SE":i=e.range.minX+I,o=e.range.maxX,r=e.range.minY+I,A=e.range.maxY;break}e.children[t]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:o,minY:r,maxY:A},size:.5*e.size,calcSize:2*e.calcSize,children:{data:null},maxWidth:0,level:e.level+1,childrenCount:0}}_debug(e,t){this.barnesHutTree!==void 0&&(e.lineWidth=1,this._drawBranch(this.barnesHutTree.root,e,t))}_drawBranch(e,t,i){i===void 0&&(i="#FF0000"),e.childrenCount===4&&(this._drawBranch(e.children.NW,t),this._drawBranch(e.children.NE,t),this._drawBranch(e.children.SE,t),this._drawBranch(e.children.SW,t)),t.strokeStyle=i,t.beginPath(),t.moveTo(e.range.minX,e.range.minY),t.lineTo(e.range.maxX,e.range.minY),t.stroke(),t.beginPath(),t.moveTo(e.range.maxX,e.range.minY),t.lineTo(e.range.maxX,e.range.maxY),t.stroke(),t.beginPath(),t.moveTo(e.range.maxX,e.range.maxY),t.lineTo(e.range.minX,e.range.maxY),t.stroke(),t.beginPath(),t.moveTo(e.range.minX,e.range.maxY),t.lineTo(e.range.minX,e.range.minY),t.stroke()}}class Vq{constructor(e,t,i){this._rng=QC("REPULSION SOLVER"),this.body=e,this.physicsBody=t,this.setOptions(i)}setOptions(e){this.options=e}solve(){let e,t,i,o,r,A,I,l;const c=this.body.nodes,h=this.physicsBody.physicsNodeIndices,p=this.physicsBody.forces,m=this.options.nodeDistance,v=-2/3/m,x=4/3;for(let O=0;O0){const A=r.edges.length+1,I=this.options.centralGravity*A*r.options.mass;o[r.id].x=t*I,o[r.id].y=i*I}}}class Wq{constructor(e){this.body=e,this.physicsBody={physicsNodeIndices:[],physicsEdgeIndices:[],forces:{},velocities:{}},this.physicsEnabled=!0,this.simulationInterval=1e3/60,this.requiresTimeout=!0,this.previousStates={},this.referenceState={},this.freezeCache={},this.renderTimer=void 0,this.adaptiveTimestep=!1,this.adaptiveTimestepEnabled=!1,this.adaptiveCounter=0,this.adaptiveInterval=3,this.stabilized=!1,this.startedStabilization=!1,this.stabilizationIterations=0,this.ready=!1,this.options={},this.defaultOptions={enabled:!0,barnesHut:{theta:.5,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09,avoidOverlap:0},forceAtlas2Based:{theta:.5,gravitationalConstant:-50,centralGravity:.01,springConstant:.08,springLength:100,damping:.4,avoidOverlap:0},repulsion:{centralGravity:.2,springLength:200,springConstant:.05,nodeDistance:100,damping:.09,avoidOverlap:0},hierarchicalRepulsion:{centralGravity:0,springLength:100,springConstant:.01,nodeDistance:120,damping:.09},maxVelocity:50,minVelocity:.75,solver:"barnesHut",stabilization:{enabled:!0,iterations:1e3,updateInterval:50,onlyDynamicEdges:!1,fit:!0},timestep:.5,adaptiveTimestep:!0,wind:{x:0,y:0}},Yt(this.options,this.defaultOptions),this.timestep=.5,this.layoutFailed=!1,this.bindEventListeners()}bindEventListeners(){this.body.emitter.on("initPhysics",()=>{this.initPhysics()}),this.body.emitter.on("_layoutFailed",()=>{this.layoutFailed=!0}),this.body.emitter.on("resetPhysics",()=>{this.stopSimulation(),this.ready=!1}),this.body.emitter.on("disablePhysics",()=>{this.physicsEnabled=!1,this.stopSimulation()}),this.body.emitter.on("restorePhysics",()=>{this.setOptions(this.options),this.ready===!0&&this.startSimulation()}),this.body.emitter.on("startSimulation",()=>{this.ready===!0&&this.startSimulation()}),this.body.emitter.on("stopSimulation",()=>{this.stopSimulation()}),this.body.emitter.on("destroy",()=>{this.stopSimulation(!1),this.body.emitter.off()}),this.body.emitter.on("_dataChanged",()=>{this.updatePhysicsData()})}setOptions(e){if(e!==void 0)if(e===!1)this.options.enabled=!1,this.physicsEnabled=!1,this.stopSimulation();else if(e===!0)this.options.enabled=!0,this.physicsEnabled=!0,this.startSimulation();else{this.physicsEnabled=!0,XC(["stabilization"],this.options,e),ai(this.options,e,"stabilization"),e.enabled===void 0&&(this.options.enabled=!0),this.options.enabled===!1&&(this.physicsEnabled=!1,this.stopSimulation());const t=this.options.wind;t&&((typeof t.x!="number"||vu(t.x))&&(t.x=0),(typeof t.y!="number"||vu(t.y))&&(t.y=0)),this.timestep=this.options.timestep}this.init()}init(){let e;this.options.solver==="forceAtlas2Based"?(e=this.options.forceAtlas2Based,this.nodesSolver=new Hq(this.body,this.physicsBody,e),this.edgesSolver=new Bu(this.body,this.physicsBody,e),this.gravitySolver=new Kq(this.body,this.physicsBody,e)):this.options.solver==="repulsion"?(e=this.options.repulsion,this.nodesSolver=new Vq(this.body,this.physicsBody,e),this.edgesSolver=new Bu(this.body,this.physicsBody,e),this.gravitySolver=new CI(this.body,this.physicsBody,e)):this.options.solver==="hierarchicalRepulsion"?(e=this.options.hierarchicalRepulsion,this.nodesSolver=new Uq(this.body,this.physicsBody,e),this.edgesSolver=new Yq(this.body,this.physicsBody,e),this.gravitySolver=new CI(this.body,this.physicsBody,e)):(e=this.options.barnesHut,this.nodesSolver=new jx(this.body,this.physicsBody,e),this.edgesSolver=new Bu(this.body,this.physicsBody,e),this.gravitySolver=new CI(this.body,this.physicsBody,e)),this.modelOptions=e}initPhysics(){this.physicsEnabled===!0&&this.options.enabled===!0?this.options.stabilization.enabled===!0?this.stabilize():(this.stabilized=!1,this.ready=!0,this.body.emitter.emit("fit",{},this.layoutFailed),this.startSimulation()):(this.ready=!0,this.body.emitter.emit("fit"))}startSimulation(){if(this.physicsEnabled===!0&&this.options.enabled===!0){if(this.stabilized=!1,this.adaptiveTimestep=!1,this.body.emitter.emit("_resizeNodes"),this.viewFunction===void 0){var e;this.viewFunction=ge(e=this.simulationStep).call(e,this),this.body.emitter.on("initRedraw",this.viewFunction),this.body.emitter.emit("_startRendering")}}else this.body.emitter.emit("_redraw")}stopSimulation(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;this.stabilized=!0,e===!0&&this._emitStabilized(),this.viewFunction!==void 0&&(this.body.emitter.off("initRedraw",this.viewFunction),this.viewFunction=void 0,e===!0&&this.body.emitter.emit("_stopRendering"))}simulationStep(){const e=BC();this.physicsTick(),(BC()-e<.4*this.simulationInterval||this.runDoubleSpeed===!0)&&this.stabilized===!1&&(this.physicsTick(),this.runDoubleSpeed=!0),this.stabilized===!0&&this.stopSimulation()}_emitStabilized(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.stabilizationIterations;(this.stabilizationIterations>1||this.startedStabilization===!0)&&ji(()=>{this.body.emitter.emit("stabilized",{iterations:e}),this.startedStabilization=!1,this.stabilizationIterations=0},0)}physicsStep(){this.gravitySolver.solve(),this.nodesSolver.solve(),this.edgesSolver.solve(),this.moveNodes()}adjustTimeStep(){this._evaluateStepQuality()===!0?this.timestep=1.2*this.timestep:this.timestep/1.2A))return!1;return!0}moveNodes(){const e=this.physicsBody.physicsNodeIndices;let t=0,i=0;const o=5;for(let r=0;rA&&(e=e>0?A:-A),e}_performStep(e){const t=this.body.nodes[e],i=this.physicsBody.forces[e];this.options.wind&&(i.x+=this.options.wind.x,i.y+=this.options.wind.y);const o=this.physicsBody.velocities[e];return this.previousStates[e]={x:t.x,y:t.y,vx:o.x,vy:o.y},t.options.fixed.x===!1?(o.x=this.calculateComponentVelocity(o.x,i.x,t.options.mass),t.x+=o.x*this.timestep):(i.x=0,o.x=0),t.options.fixed.y===!1?(o.y=this.calculateComponentVelocity(o.y,i.y,t.options.mass),t.y+=o.y*this.timestep):(i.y=0,o.y=0),Math.sqrt(Math.pow(o.x,2)+Math.pow(o.y,2))}_freezeNodes(){const e=this.body.nodes;for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&e[t].x&&e[t].y){const i=e[t].options.fixed;this.freezeCache[t]={x:i.x,y:i.y},i.x=!0,i.y=!0}}_restoreFrozenNodes(){const e=this.body.nodes;for(const t in e)Object.prototype.hasOwnProperty.call(e,t)&&this.freezeCache[t]!==void 0&&(e[t].options.fixed.x=this.freezeCache[t].x,e[t].options.fixed.y=this.freezeCache[t].y);this.freezeCache={}}stabilize(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.options.stabilization.iterations;if(typeof e!="number"&&(e=this.options.stabilization.iterations,console.error("The stabilize method needs a numeric amount of iterations. Switching to default: ",e)),this.physicsBody.physicsNodeIndices.length===0){this.ready=!0;return}this.adaptiveTimestep=this.options.adaptiveTimestep,this.body.emitter.emit("_resizeNodes"),this.stopSimulation(),this.stabilized=!1,this.body.emitter.emit("_blockRedraw"),this.targetIterations=e,this.options.stabilization.onlyDynamicEdges===!0&&this._freezeNodes(),this.stabilizationIterations=0,ji(()=>this._stabilizationBatch(),0)}_startStabilizing(){return this.startedStabilization===!0?!1:(this.body.emitter.emit("startStabilizing"),this.startedStabilization=!0,!0)}_stabilizationBatch(){const e=()=>this.stabilized===!1&&this.stabilizationIterations{this.body.emitter.emit("stabilizationProgress",{iterations:this.stabilizationIterations,total:this.targetIterations})};this._startStabilizing()&&t();let i=0;for(;e()&&i1&&arguments[1]!==void 0?arguments[1]:[],i=1e9,o=-1e9,r=1e9,A=-1e9,I;if(t.length>0)for(let l=0;lI.shape.boundingBox.left&&(r=I.shape.boundingBox.left),AI.shape.boundingBox.top&&(i=I.shape.boundingBox.top),o1&&arguments[1]!==void 0?arguments[1]:[],i=1e9,o=-1e9,r=1e9,A=-1e9,I;if(t.length>0)for(let l=0;lI.x&&(r=I.x),AI.y&&(i=I.y),o{delete this.containedEdges[i.id]}),We(t.containedNodes,(i,o)=>{this.containedNodes[o]=i}),t.containedNodes={},We(t.containedEdges,(i,o)=>{this.containedEdges[o]=i}),t.containedEdges={},We(t.edges,i=>{We(this.edges,o=>{var r,A;const I=lt(r=o.clusteringEdgeReplacingIds).call(r,i.id);I!==-1&&(We(i.clusteringEdgeReplacingIds,l=>{o.clusteringEdgeReplacingIds.push(l),this.body.edges[l].edgeReplacedById=o.id}),_i(A=o.clusteringEdgeReplacingIds).call(A,I,1))})}),t.edges=[]}}class Xq{constructor(e){this.body=e,this.clusteredNodes={},this.clusteredEdges={},this.options={},this.defaultOptions={},Yt(this.options,this.defaultOptions),this.body.emitter.on("_resetData",()=>{this.clusteredNodes={},this.clusteredEdges={}})}clusterByHubsize(e,t){e===void 0?e=this._getHubSize():typeof e=="object"&&(t=this._checkOptions(e),e=this._getHubSize());const i=[];for(let o=0;o=e&&i.push(r.id)}for(let o=0;o0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;if(e.joinCondition===void 0)throw new Error("Cannot call clusterByNodeData without a joinCondition function in the options.");e=this._checkOptions(e);const i={},o={};We(this.body.nodes,(r,A)=>{r.options&&e.joinCondition(r.options)===!0&&(i[A]=r,We(r.edges,I=>{this.clusteredEdges[I.id]===void 0&&(o[I.id]=I)}))}),this._cluster(i,o,e,t)}clusterByEdgeCount(e,t){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;t=this._checkOptions(t);const o=[],r={};let A,I,l;for(let c=0;c0&&xt(p).length>0&&O===!0){const S=function(){for(let E=0;E1&&arguments[1]!==void 0?arguments[1]:!0;this.clusterByEdgeCount(1,e,t)}clusterBridges(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;this.clusterByEdgeCount(2,e,t)}clusterByConnection(e,t){var i;let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;if(e===void 0)throw new Error("No nodeId supplied to clusterByConnection!");if(this.body.nodes[e]===void 0)throw new Error("The nodeId given to clusterByConnection does not exist!");const r=this.body.nodes[e];t=this._checkOptions(t,r),t.clusterNodeProperties.x===void 0&&(t.clusterNodeProperties.x=r.x),t.clusterNodeProperties.y===void 0&&(t.clusterNodeProperties.y=r.y),t.clusterNodeProperties.fixed===void 0&&(t.clusterNodeProperties.fixed={},t.clusterNodeProperties.fixed.x=r.options.fixed.x,t.clusterNodeProperties.fixed.y=r.options.fixed.y);const A={},I={},l=r.id,c=Mn.cloneOptions(r);A[l]=r;for(let p=0;p-1&&(I[x.id]=x)}}this._cluster(A,I,t,o)}_createClusterEdges(e,t,i,o){let r,A,I,l,c,h;const p=xt(e),m=[];for(let O=0;O0&&arguments[0]!==void 0?arguments[0]:{};return e.clusterEdgeProperties===void 0&&(e.clusterEdgeProperties={}),e.clusterNodeProperties===void 0&&(e.clusterNodeProperties={}),e}_cluster(e,t,i){let o=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0;const r=[];for(const h in e)Object.prototype.hasOwnProperty.call(e,h)&&this.clusteredNodes[h]!==void 0&&r.push(h);for(let h=0;ho?I.x:o,r=I.yA?I.y:A;return{x:.5*(i+o),y:.5*(r+A)}}openCluster(e,t){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;if(e===void 0)throw new Error("No clusterNodeId supplied to openCluster.");const o=this.body.nodes[e];if(o===void 0)throw new Error("The clusterNodeId supplied to openCluster does not exist.");if(o.isCluster!==!0||o.containedNodes===void 0||o.containedEdges===void 0)throw new Error("The node:"+e+" is not a valid cluster.");const r=this.findNode(e),A=lt(r).call(r,e)-1;if(A>=0){const h=r[A];this.body.nodes[h]._openChildCluster(e),delete this.body.nodes[e],i===!0&&this.body.emitter.emit("_dataChanged");return}const I=o.containedNodes,l=o.containedEdges;if(t!==void 0&&t.releaseFunction!==void 0&&typeof t.releaseFunction=="function"){const h={},p={x:o.x,y:o.y};for(const v in I)if(Object.prototype.hasOwnProperty.call(I,v)){const x=this.body.nodes[v];h[v]={x:x.x,y:x.y}}const m=t.releaseFunction(p,h);for(const v in I)if(Object.prototype.hasOwnProperty.call(I,v)){const x=this.body.nodes[v];m[v]!==void 0&&(x.x=m[v].x===void 0?o.x:m[v].x,x.y=m[v].y===void 0?o.y:m[v].y)}}else We(I,function(h){h.options.fixed.x===!1&&(h.x=o.x),h.options.fixed.y===!1&&(h.y=o.y)});for(const h in I)if(Object.prototype.hasOwnProperty.call(I,h)){const p=this.body.nodes[h];p.vx=o.vx,p.vy=o.vy,p.setOptions({physics:!0}),delete this.clusteredNodes[h]}const c=[];for(let h=0;h0&&Ao&&(o=c.edges.length),e+=c.edges.length,t+=Math.pow(c.edges.length,2),i+=1}e=e/i,t=t/i;const r=t-Math.pow(e,2),A=Math.sqrt(r);let I=Math.floor(e+2*A);return I>o&&(I=o),I}_createClusteredEdge(e,t,i,o,r){const A=Mn.cloneOptions(i,"edge");vt(A,o),A.from=e,A.to=t,A.id="clusterEdge:"+Ys(),r!==void 0&&vt(A,r);const I=this.body.functions.createEdge(A);return I.clusteringEdgeReplacingIds=[i.id],I.connect(),this.body.edges[I.id]=I,I}_clusterEdges(e,t,i,o){if(t instanceof Vg){const r=t,A={};A[r.id]=r,t=A}if(e instanceof Nt){const r=e,A={};A[r.id]=r,e=A}if(i==null)throw new Error("_clusterEdges: parameter clusterNode required");o===void 0&&(o=i.clusterEdgeProperties),this._createClusterEdges(e,t,i,o);for(const r in t)if(Object.prototype.hasOwnProperty.call(t,r)&&this.body.edges[r]!==void 0){const A=this.body.edges[r];this._backupEdgeOptions(A),A.setOptions({physics:!1})}for(const r in e)Object.prototype.hasOwnProperty.call(e,r)&&(this.clusteredNodes[r]={clusterId:i.id,node:this.body.nodes[r]},this.body.nodes[r].setOptions({physics:!1}))}_getClusterNodeForNode(e){if(e===void 0)return;const t=this.clusteredNodes[e];if(t===void 0)return;const i=t.clusterId;if(i!==void 0)return this.body.nodes[i]}_filter(e,t){const i=[];return We(e,o=>{t(o)&&i.push(o)}),i}_updateState(){let e;const t=[],i={},o=l=>{We(this.body.nodes,c=>{c.isCluster===!0&&l(c)})};for(e in this.clusteredNodes){if(!Object.prototype.hasOwnProperty.call(this.clusteredNodes,e))continue;this.body.nodes[e]===void 0&&t.push(e)}o(function(l){for(let c=0;c{const c=this.body.edges[l];(c===void 0||!c.endPointsValid())&&(i[l]=l)}),o(function(l){We(l.containedEdges,(c,h)=>{!c.endPointsValid()&&!i[h]&&(i[h]=h)})}),We(this.body.edges,(l,c)=>{let h=!0;const p=l.clusteringEdgeReplacingIds;if(p!==void 0){let m=0;We(p,v=>{const x=this.body.edges[v];x!==void 0&&x.endPointsValid()&&(m+=1)}),h=m>0}(!l.endPointsValid()||!h)&&(i[c]=c)}),o(l=>{We(i,c=>{delete l.containedEdges[c],We(l.edges,(h,p)=>{if(h.id===c){l.edges[p]=null;return}h.clusteringEdgeReplacingIds=this._filter(h.clusteringEdgeReplacingIds,function(m){return!i[m]})}),l.edges=this._filter(l.edges,function(h){return h!==null})})}),We(i,l=>{delete this.clusteredEdges[l]}),We(i,l=>{delete this.body.edges[l]});const r=xt(this.body.edges);We(r,l=>{const c=this.body.edges[l],h=this._isClusteredNode(c.fromId)||this._isClusteredNode(c.toId);if(h!==this._isClusteredEdge(c.id))if(h){const p=this._getClusterNodeForNode(c.fromId);p!==void 0&&this._clusterEdges(this.body.nodes[c.fromId],c,p);const m=this._getClusterNodeForNode(c.toId);m!==void 0&&this._clusterEdges(this.body.nodes[c.toId],c,m)}else delete this._clusterEdges[l],this._restoreEdge(c)});let A=!1,I=!0;for(;I;){const l=[];o(function(c){const h=xt(c.containedNodes).length,p=c.options.allowSingleNodeCluster===!0;(p&&h<1||!p&&h<2)&&l.push(c.id)});for(let c=0;c0,A=A||I}A&&this._updateState()}_isClusteredNode(e){return this.clusteredNodes[e]!==void 0}_isClusteredEdge(e){return this.clusteredEdges[e]!==void 0}}class $q{constructor(e,t){this.body=e,this.canvas=t,this.redrawRequested=!1,this.requestAnimationFrameRequestId=void 0,this.renderingActive=!1,this.renderRequests=0,this.allowRedraw=!0,this.dragging=!1,this.zooming=!1,this.options={},this.defaultOptions={hideEdgesOnDrag:!1,hideEdgesOnZoom:!1,hideNodesOnDrag:!1},Yt(this.options,this.defaultOptions),this.bindEventListeners()}bindEventListeners(){var e;this.body.emitter.on("dragStart",()=>{this.dragging=!0}),this.body.emitter.on("dragEnd",()=>{this.dragging=!1}),this.body.emitter.on("zoom",()=>{this.zooming=!0,window.clearTimeout(this.zoomTimeoutId),this.zoomTimeoutId=ji(()=>{var t;this.zooming=!1,ge(t=this._requestRedraw).call(t,this)()},250)}),this.body.emitter.on("_resizeNodes",()=>{this._resizeNodes()}),this.body.emitter.on("_redraw",()=>{this.renderingActive===!1&&this._redraw()}),this.body.emitter.on("_blockRedraw",()=>{this.allowRedraw=!1}),this.body.emitter.on("_allowRedraw",()=>{this.allowRedraw=!0,this.redrawRequested=!1}),this.body.emitter.on("_requestRedraw",ge(e=this._requestRedraw).call(e,this)),this.body.emitter.on("_startRendering",()=>{this.renderRequests+=1,this.renderingActive=!0,this._startRendering()}),this.body.emitter.on("_stopRendering",()=>{this.renderRequests-=1,this.renderingActive=this.renderRequests>0,this.requestAnimationFrameRequestId=void 0}),this.body.emitter.on("destroy",()=>{this.renderRequests=0,this.allowRedraw=!1,this.renderingActive=!1,window.cancelAnimationFrame(this.requestAnimationFrameRequestId),this.body.emitter.off()})}setOptions(e){e!==void 0&&Zs(["hideEdgesOnDrag","hideEdgesOnZoom","hideNodesOnDrag"],this.options,e)}_startRendering(){if(this.renderingActive===!0&&this.requestAnimationFrameRequestId===void 0){var e;this.requestAnimationFrameRequestId=window.requestAnimationFrame(ge(e=this._renderStep).call(e,this),this.simulationInterval)}}_renderStep(){this.renderingActive===!0&&(this.requestAnimationFrameRequestId=void 0,this._startRendering(),this._redraw())}redraw(){this.body.emitter.emit("setSize"),this._redraw()}_requestRedraw(){this.redrawRequested!==!0&&this.renderingActive===!1&&this.allowRedraw===!0&&(this.redrawRequested=!0,window.requestAnimationFrame(()=>{this._redraw(!1)}))}_redraw(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;if(this.allowRedraw===!0){this.body.emitter.emit("initRedraw"),this.redrawRequested=!1;const t={drawExternalLabels:null};(this.canvas.frame.canvas.width===0||this.canvas.frame.canvas.height===0)&&this.canvas.setSize(),this.canvas.setTransform();const i=this.canvas.getContext(),o=this.canvas.frame.canvas.clientWidth,r=this.canvas.frame.canvas.clientHeight;if(i.clearRect(0,0,o,r),this.canvas.frame.clientWidth===0)return;if(i.save(),i.translate(this.body.view.translation.x,this.body.view.translation.y),i.scale(this.body.view.scale,this.body.view.scale),i.beginPath(),this.body.emitter.emit("beforeDrawing",i),i.closePath(),e===!1&&(this.dragging===!1||this.dragging===!0&&this.options.hideEdgesOnDrag===!1)&&(this.zooming===!1||this.zooming===!0&&this.options.hideEdgesOnZoom===!1)&&this._drawEdges(i),this.dragging===!1||this.dragging===!0&&this.options.hideNodesOnDrag===!1){const{drawExternalLabels:A}=this._drawNodes(i,e);t.drawExternalLabels=A}e===!1&&(this.dragging===!1||this.dragging===!0&&this.options.hideEdgesOnDrag===!1)&&(this.zooming===!1||this.zooming===!0&&this.options.hideEdgesOnZoom===!1)&&this._drawArrows(i),t.drawExternalLabels!=null&&t.drawExternalLabels(),e===!1&&this._drawSelectionBox(i),i.beginPath(),this.body.emitter.emit("afterDrawing",i),i.closePath(),i.restore(),e===!0&&i.clearRect(0,0,o,r)}}_resizeNodes(){this.canvas.setTransform();const e=this.canvas.getContext();e.save(),e.translate(this.body.view.translation.x,this.body.view.translation.y),e.scale(this.body.view.scale,this.body.view.scale);const t=this.body.nodes;let i;for(const o in t)Object.prototype.hasOwnProperty.call(t,o)&&(i=t[o],i.resize(e),i.updateBoundingBox(e,i.selected));e.restore()}_drawNodes(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;const i=this.body.nodes,o=this.body.nodeIndices;let r;const A=[],I=[],l=20,c=this.canvas.DOMtoCanvas({x:-l,y:-l}),h=this.canvas.DOMtoCanvas({x:this.canvas.frame.canvas.clientWidth+l,y:this.canvas.frame.canvas.clientHeight+l}),p={top:c.y,left:c.x,bottom:h.y,right:h.x},m=[];for(let y=0;y{for(const y of m)y()}}}_drawEdges(e){const t=this.body.edges,i=this.body.edgeIndices;for(let o=0;o{t.width!==0&&(this.body.view.translation.x=t.width*.5),t.height!==0&&(this.body.view.translation.y=t.height*.5)}),this.body.emitter.on("setSize",ge(e=this.setSize).call(e,this)),this.body.emitter.on("destroy",()=>{this.hammerFrame.destroy(),this.hammer.destroy(),this._cleanUp()})}setOptions(e){if(e!==void 0&&Zs(["width","height","autoResize"],this.options,e),this._cleanUp(),this.options.autoResize===!0){var t;if(window.ResizeObserver){const o=new ResizeObserver(()=>{this.setSize()===!0&&this.body.emitter.emit("_requestRedraw")}),{frame:r}=this;o.observe(r),this._cleanupCallbacks.push(()=>{o.unobserve(r)})}else{const o=tJ(()=>{this.setSize()===!0&&this.body.emitter.emit("_requestRedraw")},1e3);this._cleanupCallbacks.push(()=>{clearInterval(o)})}const i=ge(t=this._onResize).call(t,this);window.addEventListener("resize",i),this._cleanupCallbacks.push(()=>{window.removeEventListener("resize",i)})}}_cleanUp(){var e,t,i;it(e=No(t=_i(i=this._cleanupCallbacks).call(i,0)).call(t)).call(e,o=>{try{o()}catch(r){console.error(r)}})}_onResize(){this.setSize(),this.body.emitter.emit("_redraw")}_getCameraState(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.pixelRatio;this.initialized===!0&&(this.cameraState.previousWidth=this.frame.canvas.width/e,this.cameraState.previousHeight=this.frame.canvas.height/e,this.cameraState.scale=this.body.view.scale,this.cameraState.position=this.DOMtoCanvas({x:.5*this.frame.canvas.width/e,y:.5*this.frame.canvas.height/e}))}_setCameraState(){if(this.cameraState.scale!==void 0&&this.frame.canvas.clientWidth!==0&&this.frame.canvas.clientHeight!==0&&this.pixelRatio!==0&&this.cameraState.previousWidth>0&&this.cameraState.previousHeight>0){const e=this.frame.canvas.width/this.pixelRatio/this.cameraState.previousWidth,t=this.frame.canvas.height/this.pixelRatio/this.cameraState.previousHeight;let i=this.cameraState.scale;e!=1&&t!=1?i=this.cameraState.scale*.5*(e+t):e!=1?i=this.cameraState.scale*e:t!=1&&(i=this.cameraState.scale*t),this.body.view.scale=i;const o=this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight}),r={x:o.x-this.cameraState.position.x,y:o.y-this.cameraState.position.y};this.body.view.translation.x+=r.x*this.body.view.scale,this.body.view.translation.y+=r.y*this.body.view.scale}}_prepareValue(e){if(typeof e=="number")return e+"px";if(typeof e=="string"){if(lt(e).call(e,"%")!==-1||lt(e).call(e,"px")!==-1)return e;if(lt(e).call(e,"%")===-1)return e+"px"}throw new Error("Could not use the value supplied for width or height:"+e)}_create(){for(;this.body.container.hasChildNodes();)this.body.container.removeChild(this.body.container.firstChild);if(this.frame=document.createElement("div"),this.frame.className="vis-network",this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.tabIndex=0,this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas),this.frame.canvas.getContext)this._setPixelRatio(),this.setTransform();else{const e=document.createElement("DIV");e.style.color="red",e.style.fontWeight="bold",e.style.padding="10px",e.innerText="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(e)}this.body.container.appendChild(this.frame),this.body.view.scale=1,this.body.view.translation={x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight},this._bindHammer()}_bindHammer(){this.hammer!==void 0&&this.hammer.destroy(),this.drag={},this.pinch={},this.hammer=new Ls(this.frame.canvas),this.hammer.get("pinch").set({enable:!0}),this.hammer.get("pan").set({threshold:5,direction:Ls.DIRECTION_ALL}),II(this.hammer,e=>{this.body.eventListeners.onTouch(e)}),this.hammer.on("tap",e=>{this.body.eventListeners.onTap(e)}),this.hammer.on("doubletap",e=>{this.body.eventListeners.onDoubleTap(e)}),this.hammer.on("press",e=>{this.body.eventListeners.onHold(e)}),this.hammer.on("panstart",e=>{this.body.eventListeners.onDragStart(e)}),this.hammer.on("panmove",e=>{this.body.eventListeners.onDrag(e)}),this.hammer.on("panend",e=>{this.body.eventListeners.onDragEnd(e)}),this.hammer.on("pinch",e=>{this.body.eventListeners.onPinch(e)}),this.frame.canvas.addEventListener("wheel",e=>{this.body.eventListeners.onMouseWheel(e)}),this.frame.canvas.addEventListener("mousemove",e=>{this.body.eventListeners.onMouseMove(e)}),this.frame.canvas.addEventListener("contextmenu",e=>{this.body.eventListeners.onContext(e)}),this.hammerFrame=new Ls(this.frame),Px(this.hammerFrame,e=>{this.body.eventListeners.onRelease(e)})}setSize(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.options.width,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.options.height;e=this._prepareValue(e),t=this._prepareValue(t);let i=!1;const o=this.frame.canvas.width,r=this.frame.canvas.height,A=this.pixelRatio;if(this._setPixelRatio(),e!=this.options.width||t!=this.options.height||this.frame.style.width!=e||this.frame.style.height!=t)this._getCameraState(A),this.frame.style.width=e,this.frame.style.height=t,this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=Math.round(this.frame.canvas.clientWidth*this.pixelRatio),this.frame.canvas.height=Math.round(this.frame.canvas.clientHeight*this.pixelRatio),this.options.width=e,this.options.height=t,this.canvasViewCenter={x:.5*this.frame.clientWidth,y:.5*this.frame.clientHeight},i=!0;else{const I=Math.round(this.frame.canvas.clientWidth*this.pixelRatio),l=Math.round(this.frame.canvas.clientHeight*this.pixelRatio);(this.frame.canvas.width!==I||this.frame.canvas.height!==l)&&this._getCameraState(A),this.frame.canvas.width!==I&&(this.frame.canvas.width=I,i=!0),this.frame.canvas.height!==l&&(this.frame.canvas.height=l,i=!0)}return i===!0&&(this.body.emitter.emit("resize",{width:Math.round(this.frame.canvas.width/this.pixelRatio),height:Math.round(this.frame.canvas.height/this.pixelRatio),oldWidth:Math.round(o/this.pixelRatio),oldHeight:Math.round(r/this.pixelRatio)}),this._setCameraState()),this.initialized=!0,i}getContext(){return this.frame.canvas.getContext("2d")}_determinePixelRatio(){const e=this.getContext();if(e===void 0)throw new Error("Could not get canvax context");let t=1;typeof window<"u"&&(t=window.devicePixelRatio||1);const i=e.webkitBackingStorePixelRatio||e.mozBackingStorePixelRatio||e.msBackingStorePixelRatio||e.oBackingStorePixelRatio||e.backingStorePixelRatio||1;return t/i}_setPixelRatio(){this.pixelRatio=this._determinePixelRatio()}setTransform(){const e=this.getContext();if(e===void 0)throw new Error("Could not get canvax context");e.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}_XconvertDOMtoCanvas(e){return(e-this.body.view.translation.x)/this.body.view.scale}_XconvertCanvasToDOM(e){return e*this.body.view.scale+this.body.view.translation.x}_YconvertDOMtoCanvas(e){return(e-this.body.view.translation.y)/this.body.view.scale}_YconvertCanvasToDOM(e){return e*this.body.view.scale+this.body.view.translation.y}canvasToDOM(e){return{x:this._XconvertCanvasToDOM(e.x),y:this._YconvertCanvasToDOM(e.y)}}DOMtoCanvas(e){return{x:this._XconvertDOMtoCanvas(e.x),y:this._YconvertDOMtoCanvas(e.y)}}}function iJ(n,e){const t=Yt({nodes:e,minZoomLevel:Number.MIN_VALUE,maxZoomLevel:1},n??{});if(!gt(t.nodes))throw new TypeError("Nodes has to be an array of ids.");if(t.nodes.length===0&&(t.nodes=e),!(typeof t.minZoomLevel=="number"&&t.minZoomLevel>0))throw new TypeError("Min zoom level has to be a number higher than zero.");if(!(typeof t.maxZoomLevel=="number"&&t.minZoomLevel<=t.maxZoomLevel))throw new TypeError("Max zoom level has to be a number higher than min zoom level.");return t}class gJ{constructor(e,t){var i,o;this.body=e,this.canvas=t,this.animationSpeed=1/this.renderRefreshRate,this.animationEasingFunction="easeInOutQuint",this.easingTime=0,this.sourceScale=0,this.targetScale=0,this.sourceTranslation=0,this.targetTranslation=0,this.lockedOnNodeId=void 0,this.lockedOnNodeOffset=void 0,this.touchTime=0,this.viewFunction=void 0,this.body.emitter.on("fit",ge(i=this.fit).call(i,this)),this.body.emitter.on("animationFinished",()=>{this.body.emitter.emit("_stopRendering")}),this.body.emitter.on("unlockNode",ge(o=this.releaseNode).call(o,this))}setOptions(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.options=e}fit(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;e=iJ(e,this.body.nodeIndices);const i=this.canvas.frame.canvas.clientWidth,o=this.canvas.frame.canvas.clientHeight;let r,A;if(i===0||o===0)A=1,r=Mn.getRange(this.body.nodes,e.nodes);else if(t===!0){let c=0;for(const m in this.body.nodes)Object.prototype.hasOwnProperty.call(this.body.nodes,m)&&this.body.nodes[m].predefinedPosition===!0&&(c+=1);if(c>.5*this.body.nodeIndices.length){this.fit(e,!1);return}r=Mn.getRange(this.body.nodes,e.nodes),A=12.662/(this.body.nodeIndices.length+7.4147)+.0964822;const p=Math.min(i/600,o/600);A*=p}else{this.body.emitter.emit("_resizeNodes"),r=Mn.getRange(this.body.nodes,e.nodes);const c=Math.abs(r.maxX-r.minX)*1.1,h=Math.abs(r.maxY-r.minY)*1.1,p=i/c,m=o/h;A=p<=m?p:m}A>e.maxZoomLevel?A=e.maxZoomLevel:A1&&arguments[1]!==void 0?arguments[1]:{};if(this.body.nodes[e]!==void 0){const i={x:this.body.nodes[e].x,y:this.body.nodes[e].y};t.position=i,t.lockedOnNode=e,this.moveTo(t)}else console.error("Node: "+e+" cannot be found.")}moveTo(e){if(e===void 0){e={};return}if(e.offset!=null){if(e.offset.x!=null){if(e.offset.x=+e.offset.x,!Bo(e.offset.x))throw new TypeError('The option "offset.x" has to be a finite number.')}else e.offset.x=0;if(e.offset.y!=null){if(e.offset.y=+e.offset.y,!Bo(e.offset.y))throw new TypeError('The option "offset.y" has to be a finite number.')}else e.offset.x=0}else e.offset={x:0,y:0};if(e.position!=null){if(e.position.x!=null){if(e.position.x=+e.position.x,!Bo(e.position.x))throw new TypeError('The option "position.x" has to be a finite number.')}else e.position.x=0;if(e.position.y!=null){if(e.position.y=+e.position.y,!Bo(e.position.y))throw new TypeError('The option "position.y" has to be a finite number.')}else e.position.x=0}else e.position=this.getViewPosition();if(e.scale!=null){if(e.scale=+e.scale,!(e.scale>0))throw new TypeError('The option "scale" has to be a number greater than zero.')}else e.scale=this.body.view.scale;e.animation===void 0&&(e.animation={duration:0}),e.animation===!1&&(e.animation={duration:0}),e.animation===!0&&(e.animation={}),e.animation.duration===void 0&&(e.animation.duration=1e3),e.animation.easingFunction===void 0&&(e.animation.easingFunction="easeInOutQuad"),this.animateView(e)}animateView(e){if(e===void 0)return;this.animationEasingFunction=e.animation.easingFunction,this.releaseNode(),e.locked===!0&&(this.lockedOnNodeId=e.lockedOnNode,this.lockedOnNodeOffset=e.offset),this.easingTime!=0&&this._transitionRedraw(!0),this.sourceScale=this.body.view.scale,this.sourceTranslation=this.body.view.translation,this.targetScale=e.scale,this.body.view.scale=this.targetScale;const t=this.canvas.DOMtoCanvas({x:.5*this.canvas.frame.canvas.clientWidth,y:.5*this.canvas.frame.canvas.clientHeight}),i={x:t.x-e.position.x,y:t.y-e.position.y};if(this.targetTranslation={x:this.sourceTranslation.x+i.x*this.targetScale+e.offset.x,y:this.sourceTranslation.y+i.y*this.targetScale+e.offset.y},e.animation.duration===0)if(this.lockedOnNodeId!=null){var o;this.viewFunction=ge(o=this._lockedRedraw).call(o,this),this.body.emitter.on("initRedraw",this.viewFunction)}else this.body.view.scale=this.targetScale,this.body.view.translation=this.targetTranslation,this.body.emitter.emit("_requestRedraw");else{var r;this.animationSpeed=1/(60*e.animation.duration*.001)||1/60,this.animationEasingFunction=e.animation.easingFunction,this.viewFunction=ge(r=this._transitionRedraw).call(r,this),this.body.emitter.on("initRedraw",this.viewFunction),this.body.emitter.emit("_startRendering")}}_lockedRedraw(){const e={x:this.body.nodes[this.lockedOnNodeId].x,y:this.body.nodes[this.lockedOnNodeId].y},t=this.canvas.DOMtoCanvas({x:.5*this.canvas.frame.canvas.clientWidth,y:.5*this.canvas.frame.canvas.clientHeight}),i={x:t.x-e.x,y:t.y-e.y},o=this.body.view.translation,r={x:o.x+i.x*this.body.view.scale+this.lockedOnNodeOffset.x,y:o.y+i.y*this.body.view.scale+this.lockedOnNodeOffset.y};this.body.view.translation=r}releaseNode(){this.lockedOnNodeId!==void 0&&this.viewFunction!==void 0&&(this.body.emitter.off("initRedraw",this.viewFunction),this.lockedOnNodeId=void 0,this.lockedOnNodeOffset=void 0)}_transitionRedraw(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;this.easingTime+=this.animationSpeed,this.easingTime=e===!0?1:this.easingTime;const t=SY[this.animationEasingFunction](this.easingTime);if(this.body.view.scale=this.sourceScale+(this.targetScale-this.sourceScale)*t,this.body.view.translation={x:this.sourceTranslation.x+(this.targetTranslation.x-this.sourceTranslation.x)*t,y:this.sourceTranslation.y+(this.targetTranslation.y-this.sourceTranslation.y)*t},this.easingTime>=1){if(this.body.emitter.off("initRedraw",this.viewFunction),this.easingTime=0,this.lockedOnNodeId!=null){var i;this.viewFunction=ge(i=this._lockedRedraw).call(i,this),this.body.emitter.on("initRedraw",this.viewFunction)}this.body.emitter.emit("animationFinished")}}getScale(){return this.body.view.scale}getViewPosition(){return this.canvas.DOMtoCanvas({x:.5*this.canvas.frame.canvas.clientWidth,y:.5*this.canvas.frame.canvas.clientHeight})}}var oJ=`div.vis-network div.vis-navigation div.vis-button { width: 34px; height: 34px; -moz-border-radius: 17px; @@ -782,7 +782,7 @@ div.vis-network div.vis-navigation div.vis-button.vis-zoomExtends { bottom: 50px; right: 15px; } -`;yo(Eq);function xx(n){var e=n&&n.preventDefault||!1,t=n&&n.container||window,i={},o={keydown:{},keyup:{}},r={},A;for(A=97;A<=122;A++)r[String.fromCharCode(A)]={code:65+(A-97),shift:!1};for(A=65;A<=90;A++)r[String.fromCharCode(A)]={code:A,shift:!0};for(A=0;A<=9;A++)r[""+A]={code:48+A,shift:!1};for(A=1;A<=12;A++)r["F"+A]={code:111+A,shift:!1};for(A=0;A<=9;A++)r["num"+A]={code:96+A,shift:!1};r["num*"]={code:106,shift:!1},r["num+"]={code:107,shift:!1},r["num-"]={code:109,shift:!1},r["num/"]={code:111,shift:!1},r["num."]={code:110,shift:!1},r.left={code:37,shift:!1},r.up={code:38,shift:!1},r.right={code:39,shift:!1},r.down={code:40,shift:!1},r.space={code:32,shift:!1},r.enter={code:13,shift:!1},r.shift={code:16,shift:void 0},r.esc={code:27,shift:!1},r.backspace={code:8,shift:!1},r.tab={code:9,shift:!1},r.ctrl={code:17,shift:!1},r.alt={code:18,shift:!1},r.delete={code:46,shift:!1},r.pageup={code:33,shift:!1},r.pagedown={code:34,shift:!1},r["="]={code:187,shift:!1},r["-"]={code:189,shift:!1},r["]"]={code:221,shift:!1},r["["]={code:219,shift:!1};var I=function(h){c(h,"keydown")},l=function(h){c(h,"keyup")},c=function(h,p){if(o[p][h.keyCode]!==void 0){for(var m=o[p][h.keyCode],b=0;b{this.activated=!0,this.configureKeyboardBindings()}),this.body.emitter.on("deactivate",()=>{this.activated=!1,this.configureKeyboardBindings()}),this.body.emitter.on("destroy",()=>{this.keycharm!==void 0&&this.keycharm.destroy()}),this.options={}}setOptions(e){e!==void 0&&(this.options=e,this.create())}create(){this.options.navigationButtons===!0?this.iconsCreated===!1&&this.loadNavigationElements():this.iconsCreated===!0&&this.cleanNavigation(),this.configureKeyboardBindings()}cleanNavigation(){if(this.navigationHammers.length!=0){for(let e=0;e{this._stopMovement()}),this.navigationHammers.push(r),this.iconsCreated=!0}bindToRedraw(e){if(this.boundFunctions[e]===void 0){var t;this.boundFunctions[e]=oe(t=this[e]).call(t,this),this.body.emitter.on("initRedraw",this.boundFunctions[e]),this.body.emitter.emit("_startRendering")}}unbindFromRedraw(e){this.boundFunctions[e]!==void 0&&(this.body.emitter.off("initRedraw",this.boundFunctions[e]),this.body.emitter.emit("_stopRendering"),delete this.boundFunctions[e])}_fit(){new Date().valueOf()-this.touchTime>700&&(this.body.emitter.emit("fit",{duration:700}),this.touchTime=new Date().valueOf())}_stopMovement(){for(const e in this.boundFunctions)Object.prototype.hasOwnProperty.call(this.boundFunctions,e)&&(this.body.emitter.off("initRedraw",this.boundFunctions[e]),this.body.emitter.emit("_stopRendering"));this.boundFunctions={}}_moveUp(){this.body.view.translation.y+=this.options.keyboard.speed.y}_moveDown(){this.body.view.translation.y-=this.options.keyboard.speed.y}_moveLeft(){this.body.view.translation.x+=this.options.keyboard.speed.x}_moveRight(){this.body.view.translation.x-=this.options.keyboard.speed.x}_zoomIn(){const e=this.body.view.scale,t=this.body.view.scale*(1+this.options.keyboard.speed.zoom),i=this.body.view.translation,o=t/e,r=(1-o)*this.canvas.canvasViewCenter.x+i.x*o,A=(1-o)*this.canvas.canvasViewCenter.y+i.y*o;this.body.view.scale=t,this.body.view.translation={x:r,y:A},this.body.emitter.emit("zoom",{direction:"+",scale:this.body.view.scale,pointer:null})}_zoomOut(){const e=this.body.view.scale,t=this.body.view.scale/(1+this.options.keyboard.speed.zoom),i=this.body.view.translation,o=t/e,r=(1-o)*this.canvas.canvasViewCenter.x+i.x*o,A=(1-o)*this.canvas.canvasViewCenter.y+i.y*o;this.body.view.scale=t,this.body.view.translation={x:r,y:A},this.body.emitter.emit("zoom",{direction:"-",scale:this.body.view.scale,pointer:null})}configureKeyboardBindings(){if(this.keycharm!==void 0&&this.keycharm.destroy(),this.options.keyboard.enabled===!0&&(this.options.keyboard.bindToWindow===!0?this.keycharm=xx({container:window,preventDefault:!0}):this.keycharm=xx({container:this.canvas.frame,preventDefault:!0}),this.keycharm.reset(),this.activated===!0)){var e,t,i,o,r,A,I,l,c,h,p,m,b,w,O,x,S,E,_,j,X,ne,F,V;oe(e=this.keycharm).call(e,"up",()=>{this.bindToRedraw("_moveUp")},"keydown"),oe(t=this.keycharm).call(t,"down",()=>{this.bindToRedraw("_moveDown")},"keydown"),oe(i=this.keycharm).call(i,"left",()=>{this.bindToRedraw("_moveLeft")},"keydown"),oe(o=this.keycharm).call(o,"right",()=>{this.bindToRedraw("_moveRight")},"keydown"),oe(r=this.keycharm).call(r,"=",()=>{this.bindToRedraw("_zoomIn")},"keydown"),oe(A=this.keycharm).call(A,"num+",()=>{this.bindToRedraw("_zoomIn")},"keydown"),oe(I=this.keycharm).call(I,"num-",()=>{this.bindToRedraw("_zoomOut")},"keydown"),oe(l=this.keycharm).call(l,"-",()=>{this.bindToRedraw("_zoomOut")},"keydown"),oe(c=this.keycharm).call(c,"[",()=>{this.bindToRedraw("_zoomOut")},"keydown"),oe(h=this.keycharm).call(h,"]",()=>{this.bindToRedraw("_zoomIn")},"keydown"),oe(p=this.keycharm).call(p,"pageup",()=>{this.bindToRedraw("_zoomIn")},"keydown"),oe(m=this.keycharm).call(m,"pagedown",()=>{this.bindToRedraw("_zoomOut")},"keydown"),oe(b=this.keycharm).call(b,"up",()=>{this.unbindFromRedraw("_moveUp")},"keyup"),oe(w=this.keycharm).call(w,"down",()=>{this.unbindFromRedraw("_moveDown")},"keyup"),oe(O=this.keycharm).call(O,"left",()=>{this.unbindFromRedraw("_moveLeft")},"keyup"),oe(x=this.keycharm).call(x,"right",()=>{this.unbindFromRedraw("_moveRight")},"keyup"),oe(S=this.keycharm).call(S,"=",()=>{this.unbindFromRedraw("_zoomIn")},"keyup"),oe(E=this.keycharm).call(E,"num+",()=>{this.unbindFromRedraw("_zoomIn")},"keyup"),oe(_=this.keycharm).call(_,"num-",()=>{this.unbindFromRedraw("_zoomOut")},"keyup"),oe(j=this.keycharm).call(j,"-",()=>{this.unbindFromRedraw("_zoomOut")},"keyup"),oe(X=this.keycharm).call(X,"[",()=>{this.unbindFromRedraw("_zoomOut")},"keyup"),oe(ne=this.keycharm).call(ne,"]",()=>{this.unbindFromRedraw("_zoomIn")},"keyup"),oe(F=this.keycharm).call(F,"pageup",()=>{this.unbindFromRedraw("_zoomIn")},"keyup"),oe(V=this.keycharm).call(V,"pagedown",()=>{this.unbindFromRedraw("_zoomOut")},"keyup")}}}class Tq{constructor(e,t,i){var o,r,A,I,l,c,h,p,m,b,w,O,x;this.body=e,this.canvas=t,this.selectionHandler=i,this.navigationHandler=new Sq(e,t),this.body.eventListeners.onTap=oe(o=this.onTap).call(o,this),this.body.eventListeners.onTouch=oe(r=this.onTouch).call(r,this),this.body.eventListeners.onDoubleTap=oe(A=this.onDoubleTap).call(A,this),this.body.eventListeners.onHold=oe(I=this.onHold).call(I,this),this.body.eventListeners.onDragStart=oe(l=this.onDragStart).call(l,this),this.body.eventListeners.onDrag=oe(c=this.onDrag).call(c,this),this.body.eventListeners.onDragEnd=oe(h=this.onDragEnd).call(h,this),this.body.eventListeners.onMouseWheel=oe(p=this.onMouseWheel).call(p,this),this.body.eventListeners.onPinch=oe(m=this.onPinch).call(m,this),this.body.eventListeners.onMouseMove=oe(b=this.onMouseMove).call(b,this),this.body.eventListeners.onRelease=oe(w=this.onRelease).call(w,this),this.body.eventListeners.onContext=oe(O=this.onContext).call(O,this),this.touchTime=0,this.drag={},this.pinch={},this.popup=void 0,this.popupObj=void 0,this.popupTimer=void 0,this.body.functions.getPointer=oe(x=this.getPointer).call(x,this),this.options={},this.defaultOptions={dragNodes:!0,dragView:!0,hover:!1,keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02},bindToWindow:!0,autoFocus:!0},navigationButtons:!1,tooltipDelay:300,zoomView:!0,zoomSpeed:1},Yt(this.options,this.defaultOptions),this.bindEventListeners()}bindEventListeners(){this.body.emitter.on("destroy",()=>{clearTimeout(this.popupTimer),delete this.body.functions.getPointer})}setOptions(e){e!==void 0&&(YC(["hideEdgesOnDrag","hideEdgesOnZoom","hideNodesOnDrag","keyboard","multiselect","selectable","selectConnectedEdges"],this.options,e),ri(this.options,e,"keyboard"),e.tooltip&&(Yt(this.options.tooltip,e.tooltip),e.tooltip.color&&(this.options.tooltip.color=Jd(e.tooltip.color)))),this.navigationHandler.setOptions(this.options)}getPointer(e){return{x:e.x-FU(this.canvas.frame.canvas),y:e.y-VU(this.canvas.frame.canvas)}}onTouch(e){new Date().valueOf()-this.touchTime>50&&(this.drag.pointer=this.getPointer(e.center),this.drag.pinched=!1,this.pinch.scale=this.body.view.scale,this.touchTime=new Date().valueOf())}onTap(e){const t=this.getPointer(e.center),i=this.selectionHandler.options.multiselect&&(e.changedPointers[0].ctrlKey||e.changedPointers[0].metaKey);this.checkSelectionChanges(t,i),this.selectionHandler.commitAndEmit(t,e),this.selectionHandler.generateClickEvent("click",e,t)}onDoubleTap(e){const t=this.getPointer(e.center);this.selectionHandler.generateClickEvent("doubleClick",e,t)}onHold(e){const t=this.getPointer(e.center),i=this.selectionHandler.options.multiselect;this.checkSelectionChanges(t,i),this.selectionHandler.commitAndEmit(t,e),this.selectionHandler.generateClickEvent("click",e,t),this.selectionHandler.generateClickEvent("hold",e,t)}onRelease(e){if(new Date().valueOf()-this.touchTime>10){const t=this.getPointer(e.center);this.selectionHandler.generateClickEvent("release",e,t),this.touchTime=new Date().valueOf()}}onContext(e){const t=this.getPointer({x:e.clientX,y:e.clientY});this.selectionHandler.generateClickEvent("oncontext",e,t)}checkSelectionChanges(e){(arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1)===!0?this.selectionHandler.selectAdditionalOnPoint(e):this.selectionHandler.selectOnPoint(e)}_determineDifference(e,t){const i=function(o,r){const A=[];for(let I=0;I{const I=A.node;A.xFixed===!1&&(I.x=this.canvas._XconvertDOMtoCanvas(this.canvas._XconvertCanvasToDOM(A.x)+o)),A.yFixed===!1&&(I.y=this.canvas._YconvertDOMtoCanvas(this.canvas._YconvertCanvasToDOM(A.y)+r))}),this.body.emitter.emit("startSimulation")}else{if(e.srcEvent.shiftKey){if(this.selectionHandler.generateClickEvent("dragging",e,t,void 0,!0),this.drag.pointer===void 0){this.onDragStart(e);return}this.body.selectionBox.position.end={x:this.canvas._XconvertDOMtoCanvas(t.x),y:this.canvas._YconvertDOMtoCanvas(t.y)},this.body.emitter.emit("_requestRedraw")}if(this.options.dragView===!0&&!e.srcEvent.shiftKey){if(this.selectionHandler.generateClickEvent("dragging",e,t,void 0,!0),this.drag.pointer===void 0){this.onDragStart(e);return}const o=t.x-this.drag.pointer.x,r=t.y-this.drag.pointer.y;this.body.view.translation={x:this.drag.translation.x+o,y:this.drag.translation.y+r},this.body.emitter.emit("_requestRedraw")}}}onDragEnd(e){if(this.drag.dragging=!1,this.body.selectionBox.show){var t;this.body.selectionBox.show=!1;const i=this.body.selectionBox.position,o={minX:Math.min(i.start.x,i.end.x),minY:Math.min(i.start.y,i.end.y),maxX:Math.max(i.start.x,i.end.x),maxY:Math.max(i.start.y,i.end.y)},r=$t(t=this.body.nodeIndices).call(t,I=>{const l=this.body.nodes[I];return l.x>=o.minX&&l.x<=o.maxX&&l.y>=o.minY&&l.y<=o.maxY});nt(r).call(r,I=>this.selectionHandler.selectObject(this.body.nodes[I]));const A=this.getPointer(e.center);this.selectionHandler.commitAndEmit(A,e),this.selectionHandler.generateClickEvent("dragEnd",e,this.getPointer(e.center),void 0,!0),this.body.emitter.emit("_requestRedraw")}else{const i=this.drag.selection;i&&i.length?(nt(i).call(i,function(o){o.node.options.fixed.x=o.xFixed,o.node.options.fixed.y=o.yFixed}),this.selectionHandler.generateClickEvent("dragEnd",e,this.getPointer(e.center)),this.body.emitter.emit("startSimulation")):(this.selectionHandler.generateClickEvent("dragEnd",e,this.getPointer(e.center),void 0,!0),this.body.emitter.emit("_requestRedraw"))}}onPinch(e){const t=this.getPointer(e.center);this.drag.pinched=!0,this.pinch.scale===void 0&&(this.pinch.scale=1);const i=this.pinch.scale*e.scale;this.zoom(i,t)}zoom(e,t){if(this.options.zoomView===!0){const i=this.body.view.scale;e<1e-5&&(e=1e-5),e>10&&(e=10);let o;this.drag!==void 0&&this.drag.dragging===!0&&(o=this.canvas.DOMtoCanvas(this.drag.pointer));const r=this.body.view.translation,A=e/i,I=(1-A)*t.x+r.x*A,l=(1-A)*t.y+r.y*A;if(this.body.view.scale=e,this.body.view.translation={x:I,y:l},o!=null){const c=this.canvas.canvasToDOM(o);this.drag.pointer.x=c.x,this.drag.pointer.y=c.y}this.body.emitter.emit("_requestRedraw"),ithis._checkShowPopup(t),this.options.tooltipDelay))),this.options.hover===!0&&this.selectionHandler.hoverObject(e,t)}_checkShowPopup(e){const t=this.canvas._XconvertDOMtoCanvas(e.x),i=this.canvas._YconvertDOMtoCanvas(e.y),o={left:t,top:i,right:t,bottom:i},r=this.popupObj===void 0?void 0:this.popupObj.id;let A=!1,I="node";if(this.popupObj===void 0){const l=this.body.nodeIndices,c=this.body.nodes;let h;const p=[];for(let m=0;m0&&(this.popupObj=c[p[p.length-1]],A=!0)}if(this.popupObj===void 0&&A===!1){const l=this.body.edgeIndices,c=this.body.edges;let h;const p=[];for(let m=0;m0&&(this.popupObj=c[p[p.length-1]],I="edge")}this.popupObj!==void 0?this.popupObj.id!==r&&(this.popup===void 0&&(this.popup=new eY(this.canvas.frame)),this.popup.popupTargetType=I,this.popup.popupTargetId=this.popupObj.id,this.popup.setPosition(e.x+3,e.y-5),this.popup.setText(this.popupObj.getTitle()),this.popup.show(),this.body.emitter.emit("showPopup",this.popupObj.id)):this.popup!==void 0&&(this.popup.hide(),this.body.emitter.emit("hidePopup"))}_checkHidePopup(e){const t=this.selectionHandler._pointerToPositionObject(e);let i=!1;if(this.popup.popupTargetType==="node"){if(this.body.nodes[this.popup.popupTargetId]!==void 0&&(i=this.body.nodes[this.popup.popupTargetId].isOverlappingWith(t),i===!0)){const o=this.selectionHandler.getNodeAt(e);i=o===void 0?!1:o.id===this.popup.popupTargetId}}else this.selectionHandler.getNodeAt(e)===void 0&&this.body.edges[this.popup.popupTargetId]!==void 0&&(i=this.body.edges[this.popup.popupTargetId].isOverlappingWith(t));i===!1&&(this.popupObj=void 0,this.popup.hide(),this.body.emitter.emit("hidePopup"))}}var Oq=at,Ex=Iu,rI=QC.getWeakData,Nq=Au,Dq=Xi,Mq=ds,ku=En,Rq=au,Sx=Ng,Tx=rn,Ox=wo,kq=Ox.set,zq=Ox.getterFor,_q=Sx.find,jq=Sx.findIndex,Zq=Oq([].splice),Pq=0,aI=function(n){return n.frozen||(n.frozen=new Nx)},Nx=function(){this.entries=[]},zu=function(n,e){return _q(n.entries,function(t){return t[0]===e})};Nx.prototype={get:function(n){var e=zu(this,n);if(e)return e[1]},has:function(n){return!!zu(this,n)},set:function(n,e){var t=zu(this,n);t?t[1]=e:this.entries.push([n,e])},delete:function(n){var e=jq(this.entries,function(t){return t[0]===n});return~e&&Zq(this.entries,e,1),!!~e}};var Bq={getConstructor:function(n,e,t,i){var o=n(function(l,c){Nq(l,r),kq(l,{type:e,id:Pq++,frozen:void 0}),Mq(c)||Rq(c,l[i],{that:l,AS_ENTRIES:t})}),r=o.prototype,A=zq(e),I=function(l,c,h){var p=A(l),m=rI(Dq(c),!0);return m===!0?aI(p).set(c,h):m[p.id]=h,l};return Ex(r,{delete:function(l){var c=A(this);if(!ku(l))return!1;var h=rI(l);return h===!0?aI(c).delete(l):h&&Tx(h,c.id)&&delete h[c.id]},has:function(c){var h=A(this);if(!ku(c))return!1;var p=rI(c);return p===!0?aI(h).has(c):p&&Tx(p,h.id)}}),Ex(r,t?{get:function(c){var h=A(this);if(ku(c)){var p=rI(c);return p===!0?aI(h).get(c):p?p[h.id]:void 0}},set:function(c,h){return I(this,c,h)}}:{add:function(c){return I(this,c,!0)}}),o}},Lq=H1,Dx=jt,AI=at,Mx=Iu,Gq=QC,Fq=Cu,Rx=Bq,CI=En,II=wo.enforce,Vq=rt,Uq=oy,Ba=Object,Yq=Array.isArray,lI=Ba.isExtensible,kx=Ba.isFrozen,Hq=Ba.isSealed,zx=Ba.freeze,Kq=Ba.seal,_x={},jx={},Wq=!Dx.ActiveXObject&&"ActiveXObject"in Dx,La,Zx=function(n){return function(){return n(this,arguments.length?arguments[0]:void 0)}},Px=Fq("WeakMap",Zx,Rx),Ys=Px.prototype,cI=AI(Ys.set),Qq=function(){return Lq&&Vq(function(){var n=zx([]);return cI(new Px,n,1),!kx(n)})};if(Uq)if(Wq){La=Rx.getConstructor(Zx,"WeakMap",!0),Gq.enable();var Bx=AI(Ys.delete),dI=AI(Ys.has),Lx=AI(Ys.get);Mx(Ys,{delete:function(n){if(CI(n)&&!lI(n)){var e=II(this);return e.frozen||(e.frozen=new La),Bx(this,n)||e.frozen.delete(n)}return Bx(this,n)},has:function(e){if(CI(e)&&!lI(e)){var t=II(this);return t.frozen||(t.frozen=new La),dI(this,e)||t.frozen.has(e)}return dI(this,e)},get:function(e){if(CI(e)&&!lI(e)){var t=II(this);return t.frozen||(t.frozen=new La),dI(this,e)?Lx(this,e):t.frozen.get(e)}return Lx(this,e)},set:function(e,t){if(CI(e)&&!lI(e)){var i=II(this);i.frozen||(i.frozen=new La),dI(this,e)?cI(this,e,t):i.frozen.set(e,t)}else cI(this,e,t);return this}})}else Qq()&&Mx(Ys,{set:function(e,t){var i;return Yq(e)&&(kx(e)?i=_x:Hq(e)&&(i=jx)),cI(this,e,t),i===_x&&zx(e),i===jx&&Kq(e),this}});var Xq=Ct,$q=Xq.WeakMap,qq=$q,Jq=qq,eJ=Jq,Ga=Ne(eJ);function yt(n,e,t,i){if(typeof e=="function"?n!==e||!i:!e.has(n))throw new TypeError("Cannot read private member from an object whose class did not declare it");return t==="m"?i:t==="a"?i.call(n):i?i.value:e.get(n)}function _u(n,e,t,i,o){if(typeof e=="function"?n!==e||!0:!e.has(n))throw new TypeError("Cannot write private member to an object whose class did not declare it");return e.set(n,t),t}typeof SuppressedError=="function"&&SuppressedError;var Bo,ai,Fg,Vg,uI;function Gx(n,e){const t=new Ti;for(const i of e)n.has(i)||t.add(i);return t}class Fx{constructor(){Bo.set(this,new Ti),ai.set(this,new Ti)}get size(){return yt(this,ai,"f").size}add(){for(var e=arguments.length,t=new Array(e),i=0;i0&&arguments[0]!==void 0?arguments[0]:()=>{};Fg.set(this,new Fx),Vg.set(this,new Fx),uI.set(this,void 0),_u(this,uI,e)}get sizeNodes(){return yt(this,Fg,"f").size}get sizeEdges(){return yt(this,Vg,"f").size}getNodes(){return yt(this,Fg,"f").getSelection()}getEdges(){return yt(this,Vg,"f").getSelection()}addNodes(){yt(this,Fg,"f").add(...arguments)}addEdges(){yt(this,Vg,"f").add(...arguments)}deleteNodes(e){yt(this,Fg,"f").delete(e)}deleteEdges(e){yt(this,Vg,"f").delete(e)}clear(){yt(this,Fg,"f").clear(),yt(this,Vg,"f").clear()}commit(){const e={nodes:yt(this,Fg,"f").commit(),edges:yt(this,Vg,"f").commit()};for(var t=arguments.length,i=new Array(t),o=0;o{this.updateSelection()})}setOptions(e){e!==void 0&&js(["multiselect","hoverConnectedEdges","selectable","selectConnectedEdges"],this.options,e)}selectOnPoint(e){let t=!1;if(this.options.selectable===!0){const i=this.getNodeAt(e)||this.getEdgeAt(e);this.unselectAll(),i!==void 0&&(t=this.selectObject(i)),this.body.emitter.emit("_requestRedraw")}return t}selectAdditionalOnPoint(e){let t=!1;if(this.options.selectable===!0){const i=this.getNodeAt(e)||this.getEdgeAt(e);i!==void 0&&(t=!0,i.isSelected()===!0?this.deselectObject(i):this.selectObject(i),this.body.emitter.emit("_requestRedraw"))}return t}_initBaseEvent(e,t){const i={};return i.pointer={DOM:{x:t.x,y:t.y},canvas:this.canvas.DOMtoCanvas(t)},i.event=e,i}generateClickEvent(e,t,i,o){let r=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!1;const A=this._initBaseEvent(t,i);if(r===!0)A.nodes=[],A.edges=[];else{const I=this.getSelection();A.nodes=I.nodes,A.edges=I.edges}o!==void 0&&(A.previousSelection=o),e=="click"&&(A.items=this.getClickedItems(i)),t.controlEdge!==void 0&&(A.controlEdge=t.controlEdge),this.body.emitter.emit(e,A)}selectObject(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.options.selectConnectedEdges;return e!==void 0?(e instanceof Nt?(t===!0&&this._selectionAccumulator.addEdges(...e.edges),this._selectionAccumulator.addNodes(e)):this._selectionAccumulator.addEdges(e),!0):!1}deselectObject(e){e.isSelected()===!0&&(e.selected=!1,this._removeFromSelection(e))}_getAllNodesOverlappingWith(e){const t=[],i=this.body.nodes;for(let o=0;o1&&arguments[1]!==void 0?arguments[1]:!0;const i=this._pointerToPositionObject(e),o=this._getAllNodesOverlappingWith(i);if(o.length>0)return t===!0?this.body.nodes[o[o.length-1]]:o[o.length-1]}_getEdgesOverlappingWith(e,t){const i=this.body.edges;for(let o=0;o1&&arguments[1]!==void 0?arguments[1]:!0;const i=this.canvas.DOMtoCanvas(e);let o=10,r=null;const A=this.body.edges;for(let I=0;I0&&(this.generateClickEvent("deselectEdge",t,e,r),i=!0),o.nodes.deleted.length>0&&(this.generateClickEvent("deselectNode",t,e,r),i=!0),o.nodes.added.length>0&&(this.generateClickEvent("selectNode",t,e),i=!0),o.edges.added.length>0&&(this.generateClickEvent("selectEdge",t,e),i=!0),i===!0&&this.generateClickEvent("select",t,e)}getSelection(){return{nodes:this.getSelectedNodeIds(),edges:this.getSelectedEdgeIds()}}getSelectedNodes(){return this._selectionAccumulator.getNodes()}getSelectedEdges(){return this._selectionAccumulator.getEdges()}getSelectedNodeIds(){var e;return hn(e=this._selectionAccumulator.getNodes()).call(e,t=>t.id)}getSelectedEdgeIds(){var e;return hn(e=this._selectionAccumulator.getEdges()).call(e,t=>t.id)}setSelection(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(!e||!e.nodes&&!e.edges)throw new TypeError("Selection must be an object with nodes and/or edges properties");if((t.unselectAll||t.unselectAll===void 0)&&this.unselectAll(),e.nodes)for(const i of e.nodes){const o=this.body.nodes[i];if(!o)throw new RangeError('Node with id "'+i+'" not found');this.selectObject(o,t.highlightEdges)}if(e.edges)for(const i of e.edges){const o=this.body.edges[i];if(!o)throw new RangeError('Edge with id "'+i+'" not found');this.selectObject(o)}this.body.emitter.emit("_requestRedraw"),this._selectionAccumulator.commit()}selectNodes(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;if(!e||e.length===void 0)throw"Selection must be an array with ids";this.setSelection({nodes:e},{highlightEdges:t})}selectEdges(e){if(!e||e.length===void 0)throw"Selection must be an array with ids";this.setSelection({edges:e})}updateSelection(){for(const e in this._selectionAccumulator.getNodes())Object.prototype.hasOwnProperty.call(this.body.nodes,e.id)||this._selectionAccumulator.deleteNodes(e);for(const e in this._selectionAccumulator.getEdges())Object.prototype.hasOwnProperty.call(this.body.edges,e.id)||this._selectionAccumulator.deleteEdges(e)}getClickedItems(e){const t=this.canvas.DOMtoCanvas(e),i=[],o=this.body.nodeIndices,r=this.body.nodes;for(let l=o.length-1;l>=0;l--){const h=r[o[l]].getItemsOnPoint(t);i.push.apply(i,h)}const A=this.body.edgeIndices,I=this.body.edges;for(let l=A.length-1;l>=0;l--){const h=I[A[l]].getItemsOnPoint(t);i.push.apply(i,h)}return i}}class Vx{abstract(){throw new Error("Can't instantiate abstract class!")}fake_use(){}curveType(){return this.abstract()}getPosition(e){return this.fake_use(e),this.abstract()}setPosition(e,t){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:void 0;this.fake_use(e,t,i),this.abstract()}getTreeSize(e){return this.fake_use(e),this.abstract()}sort(e){this.fake_use(e),this.abstract()}fix(e,t){this.fake_use(e,t),this.abstract()}shift(e,t){this.fake_use(e,t),this.abstract()}}class iJ extends Vx{constructor(e){super(),this.layout=e}curveType(){return"horizontal"}getPosition(e){return e.x}setPosition(e,t){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:void 0;i!==void 0&&this.layout.hierarchical.addToOrdering(e,i),e.x=t}getTreeSize(e){const t=this.layout.hierarchical.getTreeSize(this.layout.body.nodes,e);return{min:t.min_x,max:t.max_x}}sort(e){gg(e).call(e,function(t,i){return t.x-i.x})}fix(e,t){e.y=this.layout.options.hierarchical.levelSeparation*t,e.options.fixed.y=!0}shift(e,t){this.layout.body.nodes[e].x+=t}}class gJ extends Vx{constructor(e){super(),this.layout=e}curveType(){return"vertical"}getPosition(e){return e.y}setPosition(e,t){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:void 0;i!==void 0&&this.layout.hierarchical.addToOrdering(e,i),e.y=t}getTreeSize(e){const t=this.layout.hierarchical.getTreeSize(this.layout.body.nodes,e);return{min:t.min_y,max:t.max_y}}sort(e){gg(e).call(e,function(t,i){return t.y-i.y})}fix(e,t){e.x=this.layout.options.hierarchical.levelSeparation*t,e.options.fixed.x=!0}shift(e,t){this.layout.body.nodes[e].y+=t}}var oJ=ke,sJ=Ng.every,rJ=Ts,aJ=rJ("every");oJ({target:"Array",proto:!0,forced:!aJ},{every:function(e){return sJ(this,e,arguments.length>1?arguments[1]:void 0)}});var AJ=Xt,CJ=AJ("Array").every,IJ=Zt,lJ=CJ,ju=Array.prototype,cJ=function(n){var e=n.every;return n===ju||IJ(ju,n)&&e===ju.every?lJ:e},dJ=cJ,uJ=dJ,hJ=uJ,Ux=Ne(hJ);function fJ(n,e){const t=new Ti;return nt(n).call(n,i=>{var o;nt(o=i.edges).call(o,r=>{r.connected&&t.add(r)})}),nt(t).call(t,i=>{const o=i.from.id,r=i.to.id;e[o]==null&&(e[o]=0),(e[r]==null||e[o]>=e[r])&&(e[r]=e[o]+1)}),e}function pJ(n){return Yx(e=>{var t,i;return Ux(t=$t(i=e.edges).call(i,o=>n.has(o.toId))).call(t,o=>o.to===e)},(e,t)=>t>e,"from",n)}function mJ(n){return Yx(e=>{var t,i;return Ux(t=$t(i=e.edges).call(i,o=>n.has(o.toId))).call(t,o=>o.from===e)},(e,t)=>tp+1+m.edges.length,0),I=t+"Id",l=t==="to"?1:-1;for(const[p,m]of i){if(!i.has(p)||!n(m))continue;r[p]=0;const b=[m];let w=0,O;for(;O=b.pop();){var c,h;if(!i.has(p))continue;const x=r[O.id]+l;if(nt(c=$t(h=O.edges).call(h,S=>S.connected&&S.to!==S.from&&S[t]!==O&&i.has(S.toId)&&i.has(S.fromId))).call(c,S=>{const E=S[I],_=r[E];(_==null||e(x,_))&&(r[E]=x,b.push(S[t]))}),w>A)return fJ(i,r);++w}}return r}class vJ{constructor(){this.childrenReference={},this.parentReference={},this.trees={},this.distributionOrdering={},this.levels={},this.distributionIndex={},this.isTree=!1,this.treeIndex=-1}addRelation(e,t){this.childrenReference[e]===void 0&&(this.childrenReference[e]=[]),this.childrenReference[e].push(t),this.parentReference[t]===void 0&&(this.parentReference[t]=[]),this.parentReference[t].push(e)}checkIfTree(){for(const e in this.parentReference)if(this.parentReference[e].length>1){this.isTree=!1;return}this.isTree=!0}numTrees(){return this.treeIndex+1}setTreeIndex(e,t){t!==void 0&&this.trees[e.id]===void 0&&(this.trees[e.id]=t,this.treeIndex=Math.max(t,this.treeIndex))}ensureLevel(e){this.levels[e]===void 0&&(this.levels[e]=0)}getMaxLevel(e){const t={},i=o=>{if(t[o]!==void 0)return t[o];let r=this.levels[o];if(this.childrenReference[o]){const A=this.childrenReference[o];if(A.length>0)for(let I=0;Ir-A);for(const r of o)t.set(r,i++);for(const r in this.levels)Object.prototype.hasOwnProperty.call(this.levels,r)&&(this.levels[r]=t.get(this.levels[r]))}getTreeSize(e,t){let i=1e9,o=-1e9,r=1e9,A=-1e9;for(const I in this.trees)if(Object.prototype.hasOwnProperty.call(this.trees,I)&&this.trees[I]===t){const l=e[I];i=Math.min(l.x,i),o=Math.max(l.x,o),r=Math.min(l.y,r),A=Math.max(l.y,A)}return{min_x:i,max_x:o,min_y:r,max_y:A}}hasSameParent(e,t){const i=this.parentReference[e.id],o=this.parentReference[t.id];if(i===void 0||o===void 0)return!1;for(let r=0;r{this.setupHierarchicalLayout()}),this.body.emitter.on("_dataLoaded",()=>{this.layoutNetwork()}),this.body.emitter.on("_resetHierarchicalLayout",()=>{this.setupHierarchicalLayout()}),this.body.emitter.on("_adjustEdgesForHierarchicalLayout",()=>{if(this.options.hierarchical.enabled!==!0)return;const e=this.direction.curveType();this.body.emitter.emit("_forceDisableDynamicCurves",e,!1)})}setOptions(e,t){if(e!==void 0){const i=this.options.hierarchical,o=i.enabled;if(js(["randomSeed","improvedLayout","clusterThreshold"],this.options,e),ri(this.options,e,"hierarchical"),e.randomSeed!==void 0&&this._resetRNG(e.randomSeed),i.enabled===!0)return o===!0&&this.body.emitter.emit("refresh",!0),i.direction==="RL"||i.direction==="DU"?i.levelSeparation>0&&(i.levelSeparation*=-1):i.levelSeparation<0&&(i.levelSeparation*=-1),this.setDirectionStrategy(),this.body.emitter.emit("_resetHierarchicalLayout"),this.adaptAllOptionsForHierarchicalLayout(t);if(o===!0)return this.body.emitter.emit("refresh"),vt(t,this.optionsBackup)}return t}_resetRNG(e){this.initialRandomSeed=e,this._rng=UC(this.initialRandomSeed)}adaptAllOptionsForHierarchicalLayout(e){if(this.options.hierarchical.enabled===!0){const t=this.optionsBackup.physics;e.physics===void 0||e.physics===!0?(e.physics={enabled:t.enabled===void 0?!0:t.enabled,solver:"hierarchicalRepulsion"},t.enabled=t.enabled===void 0?!0:t.enabled,t.solver=t.solver||"barnesHut"):typeof e.physics=="object"?(t.enabled=e.physics.enabled===void 0?!0:e.physics.enabled,t.solver=e.physics.solver||"barnesHut",e.physics.solver="hierarchicalRepulsion"):e.physics!==!1&&(t.solver="barnesHut",e.physics={solver:"hierarchicalRepulsion"});let i=this.direction.curveType();if(e.edges===void 0)this.optionsBackup.edges={smooth:{enabled:!0,type:"dynamic"}},e.edges={smooth:!1};else if(e.edges.smooth===void 0)this.optionsBackup.edges={smooth:{enabled:!0,type:"dynamic"}},e.edges.smooth=!1;else if(typeof e.edges.smooth=="boolean")this.optionsBackup.edges={smooth:e.edges.smooth},e.edges.smooth={enabled:e.edges.smooth,type:i};else{const o=e.edges.smooth;o.type!==void 0&&o.type!=="dynamic"&&(i=o.type),this.optionsBackup.edges={smooth:{enabled:o.enabled===void 0?!0:o.enabled,type:o.type===void 0?"dynamic":o.type,roundness:o.roundness===void 0?.5:o.roundness,forceDirection:o.forceDirection===void 0?!1:o.forceDirection}},e.edges.smooth={enabled:o.enabled===void 0?!0:o.enabled,type:i,roundness:o.roundness===void 0?.5:o.roundness,forceDirection:o.forceDirection===void 0?!1:o.forceDirection}}this.body.emitter.emit("_forceDisableDynamicCurves",i)}return e}positionInitially(e){if(this.options.hierarchical.enabled!==!0){this._resetRNG(this.initialRandomSeed);const t=e.length+50;for(let i=0;ir){const l=e.length;for(;e.length>r&&o<=10;){o+=1;const c=e.length;o%3===0?this.body.modules.clustering.clusterBridges(A):this.body.modules.clustering.clusterOutliers(A);const h=e.length;if(c==h&&o%3!==0){this._declusterAll(),this.body.emitter.emit("_layoutFailed"),console.info("This network could not be positioned by this version of the improved layout algorithm. Please disable improvedLayout for better performance.");return}}this.body.modules.kamadaKawai.setOptions({springLength:Math.max(150,2*l)})}o>10&&console.info("The clustering didn't succeed within the amount of interations allowed, progressing with partial result."),this.body.modules.kamadaKawai.solve(e,this.body.edgeIndices,!0),this._shiftToCenter();const I=70;for(let l=0;l0){let e,t,i=!1,o=!1;this.lastNodeOnLevel={},this.hierarchical=new vJ;for(t in this.body.nodes)Object.prototype.hasOwnProperty.call(this.body.nodes,t)&&(e=this.body.nodes[t],e.options.level!==void 0?(i=!0,this.hierarchical.levels[t]=e.options.level):o=!0);if(o===!0&&i===!0)throw new Error("To use the hierarchical layout, nodes require either no predefined levels or levels have to be defined for all nodes.");{if(o===!0){const A=this.options.hierarchical.sortMethod;A==="hubsize"?this._determineLevelsByHubsize():A==="directed"?this._determineLevelsDirected():A==="custom"&&this._determineLevelsCustomCallback()}for(const A in this.body.nodes)Object.prototype.hasOwnProperty.call(this.body.nodes,A)&&this.hierarchical.ensureLevel(A);const r=this._getDistribution();this._generateMap(),this._placeNodesByHierarchy(r),this._condenseHierarchy(),this._shiftToCenter()}}}_condenseHierarchy(){var e=this;let t=!1;const i={},o=()=>{const S=A();let E=0;for(let _=0;_{const _=this.hierarchical.trees;for(const j in _)Object.prototype.hasOwnProperty.call(_,j)&&_[j]===S&&this.direction.shift(j,E)},A=()=>{const S=[];for(let E=0;E{if(!E[S.id]&&(E[S.id]=!0,this.hierarchical.childrenReference[S.id])){const _=this.hierarchical.childrenReference[S.id];if(_.length>0)for(let j=0;j<_.length;j++)I(this.body.nodes[_[j]],E)}},l=function(S){let E=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1e9,_=1e9,j=1e9,X=1e9,ne=-1e9;for(const F in S)if(Object.prototype.hasOwnProperty.call(S,F)){const V=e.body.nodes[F],Ie=e.hierarchical.levels[V.id],Ee=e.direction.getPosition(V),[Ze,xe]=e._getSpaceAroundNode(V,S);_=Math.min(Ze,_),j=Math.min(xe,j),Ie<=E&&(X=Math.min(Ee,X),ne=Math.max(Ee,ne))}return[X,ne,_,j]},c=(S,E)=>{const _=this.hierarchical.getMaxLevel(S.id),j=this.hierarchical.getMaxLevel(E.id);return Math.min(_,j)},h=(S,E,_)=>{const j=this.hierarchical;for(let X=0;X1)for(let V=0;V2&&arguments[2]!==void 0?arguments[2]:!1;const j=e.direction.getPosition(S),X=e.direction.getPosition(E),ne=Math.abs(X-j),F=e.options.hierarchical.nodeSpacing;if(ne>F){const V={},Ie={};I(S,V),I(E,Ie);const Ee=c(S,E),Ze=l(V,Ee),xe=l(Ie,Ee),He=Ze[1],Fe=xe[0],le=xe[2];if(Math.abs(He-Fe)>F){let Q=He-Fe+F;Q<-le+F&&(Q=-le+F),Q<0&&(e._shiftBlock(E.id,Q),t=!0,_===!0&&e._centerParent(E))}}},m=(S,E)=>{const _=E.id,j=E.edges,X=this.hierarchical.levels[E.id],ne=this.options.hierarchical.levelSeparation*this.options.hierarchical.levelSeparation,F={},V=[];for(let le=0;le{let Q=0;for(let H=0;H{let Q=0;for(let H=0;H{let Q=this.direction.getPosition(E);const H={};for(let ge=0;ge{const R=this.direction.getPosition(E);if(i[E.id]===void 0){const U={};I(E,U),i[E.id]=U}const Q=l(i[E.id]),H=Q[2],ge=Q[3],ee=le-R;let T=0;ee>0?T=Math.min(ee,ge-this.options.hierarchical.nodeSpacing):ee<0&&(T=-Math.min(-ee,H-this.options.hierarchical.nodeSpacing)),T!=0&&(this._shiftBlock(E.id,T),t=!0)},He=le=>{const R=this.direction.getPosition(E),[Q,H]=this._getSpaceAroundNode(E),ge=le-R;let ee=R;ge>0?ee=Math.min(R+(H-this.options.hierarchical.nodeSpacing),le):ge<0&&(ee=Math.max(R-(Q-this.options.hierarchical.nodeSpacing),le)),ee!==R&&(this.direction.setPosition(E,ee),t=!0)};let Fe=Ze(S,V);xe(Fe),Fe=Ze(S,j),He(Fe)},b=S=>{let E=this.hierarchical.getLevels();E=To(E).call(E);for(let _=0;_{let E=this.hierarchical.getLevels();E=To(E).call(E);for(let _=0;_{for(const S in this.body.nodes)Object.prototype.hasOwnProperty.call(this.body.nodes,S)&&this._centerParent(this.body.nodes[S])},x=()=>{let S=this.hierarchical.getLevels();S=To(S).call(S);for(let E=0;E0&&Math.abs(p)0&&(c=this.direction.getPosition(o[A-1])+l),this.direction.setPosition(I,c,i),this._validatePositionAndContinue(I,i,c),r++}}}}_placeBranchNodes(e,t){var i;const o=this.hierarchical.childrenReference[e];if(o===void 0)return;const r=[];for(let I=0;It&&this.positionedNodes[l.id]===void 0){const h=this.options.hierarchical.nodeSpacing;let p;I===0?p=this.direction.getPosition(this.body.nodes[e]):p=this.direction.getPosition(r[I-1])+h,this.direction.setPosition(l,p,c),this._validatePositionAndContinue(l,c,p)}else return}const A=this._getCenterPosition(r);this.direction.setPosition(this.body.nodes[e],A,t)}_validatePositionAndContinue(e,t,i){if(this.hierarchical.isTree){if(this.lastNodeOnLevel[t]!==void 0){const o=this.direction.getPosition(this.body.nodes[this.lastNodeOnLevel[t]]);if(i-o{var o;lt(o=this.body.edgeIndices).call(o,i.id)!==-1&&t.push(i)}),t}_getHubSizes(){const e={},t=this.body.nodeIndices;Ke(t,o=>{const r=this.body.nodes[o],A=this._getActiveEdges(r).length;e[A]=!0});const i=[];return Ke(e,o=>{i.push(Number(o))}),gg(i).call(i,function(o,r){return r-o}),i}_determineLevelsByHubsize(){const e=(i,o)=>{this.hierarchical.levelDownstream(i,o)},t=this._getHubSizes();for(let i=0;i{const A=this.body.nodes[r];o===this._getActiveEdges(A).length&&this._crawlNetwork(e,r)})}}_determineLevelsCustomCallback(){const t=function(o,r,A){},i=(o,r,A)=>{let I=this.hierarchical.levels[o.id];I===void 0&&(I=this.hierarchical.levels[o.id]=1e5);const l=t(Mn.cloneOptions(o,"node"),Mn.cloneOptions(r,"node"),Mn.cloneOptions(A,"edge"));this.hierarchical.levels[r.id]=I+l};this._crawlNetwork(i),this.hierarchical.setMinLevelToZero()}_determineLevelsDirected(){var e;const t=mu(e=this.body.nodeIndices).call(e,(i,o)=>(i.set(o,this.body.nodes[o]),i),new za);this.options.hierarchical.shakeTowards==="roots"?this.hierarchical.levels=mJ(t):this.hierarchical.levels=pJ(t),this.hierarchical.setMinLevelToZero()}_generateMap(){const e=(t,i)=>{this.hierarchical.levels[i.id]>this.hierarchical.levels[t.id]&&this.hierarchical.addRelation(t.id,i.id)};this._crawlNetwork(e),this.hierarchical.checkIfTree()}_crawlNetwork(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:function(){},t=arguments.length>1?arguments[1]:void 0;const i={},o=(r,A)=>{if(i[r.id]===void 0){this.hierarchical.setTreeIndex(r,A),i[r.id]=!0;let I;const l=this._getActiveEdges(r);for(let c=0;c{if(i[r])return;i[r]=!0,this.direction.shift(r,t);const A=this.hierarchical.childrenReference[r];if(A!==void 0)for(let I=0;I{const l=this.hierarchical.parentReference[I];if(l!==void 0)for(let c=0;c{const l=this.hierarchical.parentReference[I];if(l!==void 0)for(let c=0;c{this.activated=!0,this.configureKeyboardBindings()}),this.body.emitter.on("deactivate",()=>{this.activated=!1,this.configureKeyboardBindings()}),this.body.emitter.on("destroy",()=>{this.keycharm!==void 0&&this.keycharm.destroy()}),this.options={}}setOptions(e){e!==void 0&&(this.options=e,this.create())}create(){this.options.navigationButtons===!0?this.iconsCreated===!1&&this.loadNavigationElements():this.iconsCreated===!0&&this.cleanNavigation(),this.configureKeyboardBindings()}cleanNavigation(){if(this.navigationHammers.length!=0){for(let e=0;e{this._stopMovement()}),this.navigationHammers.push(r),this.iconsCreated=!0}bindToRedraw(e){if(this.boundFunctions[e]===void 0){var t;this.boundFunctions[e]=ge(t=this[e]).call(t,this),this.body.emitter.on("initRedraw",this.boundFunctions[e]),this.body.emitter.emit("_startRendering")}}unbindFromRedraw(e){this.boundFunctions[e]!==void 0&&(this.body.emitter.off("initRedraw",this.boundFunctions[e]),this.body.emitter.emit("_stopRendering"),delete this.boundFunctions[e])}_fit(){new Date().valueOf()-this.touchTime>700&&(this.body.emitter.emit("fit",{duration:700}),this.touchTime=new Date().valueOf())}_stopMovement(){for(const e in this.boundFunctions)Object.prototype.hasOwnProperty.call(this.boundFunctions,e)&&(this.body.emitter.off("initRedraw",this.boundFunctions[e]),this.body.emitter.emit("_stopRendering"));this.boundFunctions={}}_moveUp(){this.body.view.translation.y+=this.options.keyboard.speed.y}_moveDown(){this.body.view.translation.y-=this.options.keyboard.speed.y}_moveLeft(){this.body.view.translation.x+=this.options.keyboard.speed.x}_moveRight(){this.body.view.translation.x-=this.options.keyboard.speed.x}_zoomIn(){const e=this.body.view.scale,t=this.body.view.scale*(1+this.options.keyboard.speed.zoom),i=this.body.view.translation,o=t/e,r=(1-o)*this.canvas.canvasViewCenter.x+i.x*o,A=(1-o)*this.canvas.canvasViewCenter.y+i.y*o;this.body.view.scale=t,this.body.view.translation={x:r,y:A},this.body.emitter.emit("zoom",{direction:"+",scale:this.body.view.scale,pointer:null})}_zoomOut(){const e=this.body.view.scale,t=this.body.view.scale/(1+this.options.keyboard.speed.zoom),i=this.body.view.translation,o=t/e,r=(1-o)*this.canvas.canvasViewCenter.x+i.x*o,A=(1-o)*this.canvas.canvasViewCenter.y+i.y*o;this.body.view.scale=t,this.body.view.translation={x:r,y:A},this.body.emitter.emit("zoom",{direction:"-",scale:this.body.view.scale,pointer:null})}configureKeyboardBindings(){if(this.keycharm!==void 0&&this.keycharm.destroy(),this.options.keyboard.enabled===!0&&(this.options.keyboard.bindToWindow===!0?this.keycharm=Bx({container:window,preventDefault:!0}):this.keycharm=Bx({container:this.canvas.frame,preventDefault:!0}),this.keycharm.reset(),this.activated===!0)){var e,t,i,o,r,A,I,l,c,h,p,m,v,x,O,y,S,E,_,j,X,ne,F,V;ge(e=this.keycharm).call(e,"up",()=>{this.bindToRedraw("_moveUp")},"keydown"),ge(t=this.keycharm).call(t,"down",()=>{this.bindToRedraw("_moveDown")},"keydown"),ge(i=this.keycharm).call(i,"left",()=>{this.bindToRedraw("_moveLeft")},"keydown"),ge(o=this.keycharm).call(o,"right",()=>{this.bindToRedraw("_moveRight")},"keydown"),ge(r=this.keycharm).call(r,"=",()=>{this.bindToRedraw("_zoomIn")},"keydown"),ge(A=this.keycharm).call(A,"num+",()=>{this.bindToRedraw("_zoomIn")},"keydown"),ge(I=this.keycharm).call(I,"num-",()=>{this.bindToRedraw("_zoomOut")},"keydown"),ge(l=this.keycharm).call(l,"-",()=>{this.bindToRedraw("_zoomOut")},"keydown"),ge(c=this.keycharm).call(c,"[",()=>{this.bindToRedraw("_zoomOut")},"keydown"),ge(h=this.keycharm).call(h,"]",()=>{this.bindToRedraw("_zoomIn")},"keydown"),ge(p=this.keycharm).call(p,"pageup",()=>{this.bindToRedraw("_zoomIn")},"keydown"),ge(m=this.keycharm).call(m,"pagedown",()=>{this.bindToRedraw("_zoomOut")},"keydown"),ge(v=this.keycharm).call(v,"up",()=>{this.unbindFromRedraw("_moveUp")},"keyup"),ge(x=this.keycharm).call(x,"down",()=>{this.unbindFromRedraw("_moveDown")},"keyup"),ge(O=this.keycharm).call(O,"left",()=>{this.unbindFromRedraw("_moveLeft")},"keyup"),ge(y=this.keycharm).call(y,"right",()=>{this.unbindFromRedraw("_moveRight")},"keyup"),ge(S=this.keycharm).call(S,"=",()=>{this.unbindFromRedraw("_zoomIn")},"keyup"),ge(E=this.keycharm).call(E,"num+",()=>{this.unbindFromRedraw("_zoomIn")},"keyup"),ge(_=this.keycharm).call(_,"num-",()=>{this.unbindFromRedraw("_zoomOut")},"keyup"),ge(j=this.keycharm).call(j,"-",()=>{this.unbindFromRedraw("_zoomOut")},"keyup"),ge(X=this.keycharm).call(X,"[",()=>{this.unbindFromRedraw("_zoomOut")},"keyup"),ge(ne=this.keycharm).call(ne,"]",()=>{this.unbindFromRedraw("_zoomIn")},"keyup"),ge(F=this.keycharm).call(F,"pageup",()=>{this.unbindFromRedraw("_zoomIn")},"keyup"),ge(V=this.keycharm).call(V,"pagedown",()=>{this.unbindFromRedraw("_zoomOut")},"keyup")}}}class rJ{constructor(e,t,i){var o,r,A,I,l,c,h,p,m,v,x,O,y;this.body=e,this.canvas=t,this.selectionHandler=i,this.navigationHandler=new sJ(e,t),this.body.eventListeners.onTap=ge(o=this.onTap).call(o,this),this.body.eventListeners.onTouch=ge(r=this.onTouch).call(r,this),this.body.eventListeners.onDoubleTap=ge(A=this.onDoubleTap).call(A,this),this.body.eventListeners.onHold=ge(I=this.onHold).call(I,this),this.body.eventListeners.onDragStart=ge(l=this.onDragStart).call(l,this),this.body.eventListeners.onDrag=ge(c=this.onDrag).call(c,this),this.body.eventListeners.onDragEnd=ge(h=this.onDragEnd).call(h,this),this.body.eventListeners.onMouseWheel=ge(p=this.onMouseWheel).call(p,this),this.body.eventListeners.onPinch=ge(m=this.onPinch).call(m,this),this.body.eventListeners.onMouseMove=ge(v=this.onMouseMove).call(v,this),this.body.eventListeners.onRelease=ge(x=this.onRelease).call(x,this),this.body.eventListeners.onContext=ge(O=this.onContext).call(O,this),this.touchTime=0,this.drag={},this.pinch={},this.popup=void 0,this.popupObj=void 0,this.popupTimer=void 0,this.body.functions.getPointer=ge(y=this.getPointer).call(y,this),this.options={},this.defaultOptions={dragNodes:!0,dragView:!0,hover:!1,keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02},bindToWindow:!0,autoFocus:!0},navigationButtons:!1,tooltipDelay:300,zoomView:!0,zoomSpeed:1},Yt(this.options,this.defaultOptions),this.bindEventListeners()}bindEventListeners(){this.body.emitter.on("destroy",()=>{clearTimeout(this.popupTimer),delete this.body.functions.getPointer})}setOptions(e){e!==void 0&&(XC(["hideEdgesOnDrag","hideEdgesOnZoom","hideNodesOnDrag","keyboard","multiselect","selectable","selectConnectedEdges"],this.options,e),ai(this.options,e,"keyboard"),e.tooltip&&(Yt(this.options.tooltip,e.tooltip),e.tooltip.color&&(this.options.tooltip.color=ou(e.tooltip.color)))),this.navigationHandler.setOptions(this.options)}getPointer(e){return{x:e.x-yY(this.canvas.frame.canvas),y:e.y-wY(this.canvas.frame.canvas)}}onTouch(e){new Date().valueOf()-this.touchTime>50&&(this.drag.pointer=this.getPointer(e.center),this.drag.pinched=!1,this.pinch.scale=this.body.view.scale,this.touchTime=new Date().valueOf())}onTap(e){const t=this.getPointer(e.center),i=this.selectionHandler.options.multiselect&&(e.changedPointers[0].ctrlKey||e.changedPointers[0].metaKey);this.checkSelectionChanges(t,i),this.selectionHandler.commitAndEmit(t,e),this.selectionHandler.generateClickEvent("click",e,t)}onDoubleTap(e){const t=this.getPointer(e.center);this.selectionHandler.generateClickEvent("doubleClick",e,t)}onHold(e){const t=this.getPointer(e.center),i=this.selectionHandler.options.multiselect;this.checkSelectionChanges(t,i),this.selectionHandler.commitAndEmit(t,e),this.selectionHandler.generateClickEvent("click",e,t),this.selectionHandler.generateClickEvent("hold",e,t)}onRelease(e){if(new Date().valueOf()-this.touchTime>10){const t=this.getPointer(e.center);this.selectionHandler.generateClickEvent("release",e,t),this.touchTime=new Date().valueOf()}}onContext(e){const t=this.getPointer({x:e.clientX,y:e.clientY});this.selectionHandler.generateClickEvent("oncontext",e,t)}checkSelectionChanges(e){(arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1)===!0?this.selectionHandler.selectAdditionalOnPoint(e):this.selectionHandler.selectOnPoint(e)}_determineDifference(e,t){const i=function(o,r){const A=[];for(let I=0;I{const I=A.node;A.xFixed===!1&&(I.x=this.canvas._XconvertDOMtoCanvas(this.canvas._XconvertCanvasToDOM(A.x)+o)),A.yFixed===!1&&(I.y=this.canvas._YconvertDOMtoCanvas(this.canvas._YconvertCanvasToDOM(A.y)+r))}),this.body.emitter.emit("startSimulation")}else{if(e.srcEvent.shiftKey){if(this.selectionHandler.generateClickEvent("dragging",e,t,void 0,!0),this.drag.pointer===void 0){this.onDragStart(e);return}this.body.selectionBox.position.end={x:this.canvas._XconvertDOMtoCanvas(t.x),y:this.canvas._YconvertDOMtoCanvas(t.y)},this.body.emitter.emit("_requestRedraw")}if(this.options.dragView===!0&&!e.srcEvent.shiftKey){if(this.selectionHandler.generateClickEvent("dragging",e,t,void 0,!0),this.drag.pointer===void 0){this.onDragStart(e);return}const o=t.x-this.drag.pointer.x,r=t.y-this.drag.pointer.y;this.body.view.translation={x:this.drag.translation.x+o,y:this.drag.translation.y+r},this.body.emitter.emit("_requestRedraw")}}}onDragEnd(e){if(this.drag.dragging=!1,this.body.selectionBox.show){var t;this.body.selectionBox.show=!1;const i=this.body.selectionBox.position,o={minX:Math.min(i.start.x,i.end.x),minY:Math.min(i.start.y,i.end.y),maxX:Math.max(i.start.x,i.end.x),maxY:Math.max(i.start.y,i.end.y)},r=$t(t=this.body.nodeIndices).call(t,I=>{const l=this.body.nodes[I];return l.x>=o.minX&&l.x<=o.maxX&&l.y>=o.minY&&l.y<=o.maxY});it(r).call(r,I=>this.selectionHandler.selectObject(this.body.nodes[I]));const A=this.getPointer(e.center);this.selectionHandler.commitAndEmit(A,e),this.selectionHandler.generateClickEvent("dragEnd",e,this.getPointer(e.center),void 0,!0),this.body.emitter.emit("_requestRedraw")}else{const i=this.drag.selection;i&&i.length?(it(i).call(i,function(o){o.node.options.fixed.x=o.xFixed,o.node.options.fixed.y=o.yFixed}),this.selectionHandler.generateClickEvent("dragEnd",e,this.getPointer(e.center)),this.body.emitter.emit("startSimulation")):(this.selectionHandler.generateClickEvent("dragEnd",e,this.getPointer(e.center),void 0,!0),this.body.emitter.emit("_requestRedraw"))}}onPinch(e){const t=this.getPointer(e.center);this.drag.pinched=!0,this.pinch.scale===void 0&&(this.pinch.scale=1);const i=this.pinch.scale*e.scale;this.zoom(i,t)}zoom(e,t){if(this.options.zoomView===!0){const i=this.body.view.scale;e<1e-5&&(e=1e-5),e>10&&(e=10);let o;this.drag!==void 0&&this.drag.dragging===!0&&(o=this.canvas.DOMtoCanvas(this.drag.pointer));const r=this.body.view.translation,A=e/i,I=(1-A)*t.x+r.x*A,l=(1-A)*t.y+r.y*A;if(this.body.view.scale=e,this.body.view.translation={x:I,y:l},o!=null){const c=this.canvas.canvasToDOM(o);this.drag.pointer.x=c.x,this.drag.pointer.y=c.y}this.body.emitter.emit("_requestRedraw"),ithis._checkShowPopup(t),this.options.tooltipDelay))),this.options.hover===!0&&this.selectionHandler.hoverObject(e,t)}_checkShowPopup(e){const t=this.canvas._XconvertDOMtoCanvas(e.x),i=this.canvas._YconvertDOMtoCanvas(e.y),o={left:t,top:i,right:t,bottom:i},r=this.popupObj===void 0?void 0:this.popupObj.id;let A=!1,I="node";if(this.popupObj===void 0){const l=this.body.nodeIndices,c=this.body.nodes;let h;const p=[];for(let m=0;m0&&(this.popupObj=c[p[p.length-1]],A=!0)}if(this.popupObj===void 0&&A===!1){const l=this.body.edgeIndices,c=this.body.edges;let h;const p=[];for(let m=0;m0&&(this.popupObj=c[p[p.length-1]],I="edge")}this.popupObj!==void 0?this.popupObj.id!==r&&(this.popup===void 0&&(this.popup=new zY(this.canvas.frame)),this.popup.popupTargetType=I,this.popup.popupTargetId=this.popupObj.id,this.popup.setPosition(e.x+3,e.y-5),this.popup.setText(this.popupObj.getTitle()),this.popup.show(),this.body.emitter.emit("showPopup",this.popupObj.id)):this.popup!==void 0&&(this.popup.hide(),this.body.emitter.emit("hidePopup"))}_checkHidePopup(e){const t=this.selectionHandler._pointerToPositionObject(e);let i=!1;if(this.popup.popupTargetType==="node"){if(this.body.nodes[this.popup.popupTargetId]!==void 0&&(i=this.body.nodes[this.popup.popupTargetId].isOverlappingWith(t),i===!0)){const o=this.selectionHandler.getNodeAt(e);i=o===void 0?!1:o.id===this.popup.popupTargetId}}else this.selectionHandler.getNodeAt(e)===void 0&&this.body.edges[this.popup.popupTargetId]!==void 0&&(i=this.body.edges[this.popup.popupTargetId].isOverlappingWith(t));i===!1&&(this.popupObj=void 0,this.popup.hide(),this.body.emitter.emit("hidePopup"))}}var aJ=at,Zx=fu,lI=eI.getWeakData,AJ=uu,CJ=Ji,IJ=fs,Zu=Sn,lJ=du,Lx=kg,Gx=rn,Fx=Eo,cJ=Fx.set,dJ=Fx.getterFor,uJ=Lx.find,hJ=Lx.findIndex,fJ=aJ([].splice),pJ=0,cI=function(n){return n.frozen||(n.frozen=new Vx)},Vx=function(){this.entries=[]},Lu=function(n,e){return uJ(n.entries,function(t){return t[0]===e})};Vx.prototype={get:function(n){var e=Lu(this,n);if(e)return e[1]},has:function(n){return!!Lu(this,n)},set:function(n,e){var t=Lu(this,n);t?t[1]=e:this.entries.push([n,e])},delete:function(n){var e=hJ(this.entries,function(t){return t[0]===n});return~e&&fJ(this.entries,e,1),!!~e}};var mJ={getConstructor:function(n,e,t,i){var o=n(function(l,c){AJ(l,r),cJ(l,{type:e,id:pJ++,frozen:void 0}),IJ(c)||lJ(c,l[i],{that:l,AS_ENTRIES:t})}),r=o.prototype,A=dJ(e),I=function(l,c,h){var p=A(l),m=lI(CJ(c),!0);return m===!0?cI(p).set(c,h):m[p.id]=h,l};return Zx(r,{delete:function(l){var c=A(this);if(!Zu(l))return!1;var h=lI(l);return h===!0?cI(c).delete(l):h&&Gx(h,c.id)&&delete h[c.id]},has:function(c){var h=A(this);if(!Zu(c))return!1;var p=lI(c);return p===!0?cI(h).has(c):p&&Gx(p,h.id)}}),Zx(r,t?{get:function(c){var h=A(this);if(Zu(c)){var p=lI(c);return p===!0?cI(h).get(c):p?p[h.id]:void 0}},set:function(c,h){return I(this,c,h)}}:{add:function(c){return I(this,c,!0)}}),o}},vJ=sw,Ux=jt,dI=at,Yx=fu,bJ=eI,yJ=hu,Hx=mJ,uI=Sn,hI=Eo.enforce,wJ=rt,xJ=my,Ya=Object,EJ=Array.isArray,fI=Ya.isExtensible,Kx=Ya.isFrozen,SJ=Ya.isSealed,Wx=Ya.freeze,TJ=Ya.seal,Qx={},Xx={},OJ=!Ux.ActiveXObject&&"ActiveXObject"in Ux,Ha,$x=function(n){return function(){return n(this,arguments.length?arguments[0]:void 0)}},qx=yJ("WeakMap",$x,Hx),Ws=qx.prototype,pI=dI(Ws.set),NJ=function(){return vJ&&wJ(function(){var n=Wx([]);return pI(new qx,n,1),!Kx(n)})};if(xJ)if(OJ){Ha=Hx.getConstructor($x,"WeakMap",!0),bJ.enable();var Jx=dI(Ws.delete),mI=dI(Ws.has),e2=dI(Ws.get);Yx(Ws,{delete:function(n){if(uI(n)&&!fI(n)){var e=hI(this);return e.frozen||(e.frozen=new Ha),Jx(this,n)||e.frozen.delete(n)}return Jx(this,n)},has:function(e){if(uI(e)&&!fI(e)){var t=hI(this);return t.frozen||(t.frozen=new Ha),mI(this,e)||t.frozen.has(e)}return mI(this,e)},get:function(e){if(uI(e)&&!fI(e)){var t=hI(this);return t.frozen||(t.frozen=new Ha),mI(this,e)?e2(this,e):t.frozen.get(e)}return e2(this,e)},set:function(e,t){if(uI(e)&&!fI(e)){var i=hI(this);i.frozen||(i.frozen=new Ha),mI(this,e)?pI(this,e,t):i.frozen.set(e,t)}else pI(this,e,t);return this}})}else NJ()&&Yx(Ws,{set:function(e,t){var i;return EJ(e)&&(Kx(e)?i=Qx:SJ(e)&&(i=Xx)),pI(this,e,t),i===Qx&&Wx(e),i===Xx&&TJ(e),this}});var DJ=Ct,kJ=DJ.WeakMap,MJ=kJ,RJ=MJ,zJ=RJ,Ka=De(zJ);function yt(n,e,t,i){if(typeof e=="function"?n!==e||!i:!e.has(n))throw new TypeError("Cannot read private member from an object whose class did not declare it");return t==="m"?i:t==="a"?i.call(n):i?i.value:e.get(n)}function Gu(n,e,t,i,o){if(typeof e=="function"?n!==e||!0:!e.has(n))throw new TypeError("Cannot write private member to an object whose class did not declare it");return e.set(n,t),t}typeof SuppressedError=="function"&&SuppressedError;var Go,Ai,Ug,Yg,vI;function t2(n,e){const t=new Oi;for(const i of e)n.has(i)||t.add(i);return t}class n2{constructor(){Go.set(this,new Oi),Ai.set(this,new Oi)}get size(){return yt(this,Ai,"f").size}add(){for(var e=arguments.length,t=new Array(e),i=0;i0&&arguments[0]!==void 0?arguments[0]:()=>{};Ug.set(this,new n2),Yg.set(this,new n2),vI.set(this,void 0),Gu(this,vI,e)}get sizeNodes(){return yt(this,Ug,"f").size}get sizeEdges(){return yt(this,Yg,"f").size}getNodes(){return yt(this,Ug,"f").getSelection()}getEdges(){return yt(this,Yg,"f").getSelection()}addNodes(){yt(this,Ug,"f").add(...arguments)}addEdges(){yt(this,Yg,"f").add(...arguments)}deleteNodes(e){yt(this,Ug,"f").delete(e)}deleteEdges(e){yt(this,Yg,"f").delete(e)}clear(){yt(this,Ug,"f").clear(),yt(this,Yg,"f").clear()}commit(){const e={nodes:yt(this,Ug,"f").commit(),edges:yt(this,Yg,"f").commit()};for(var t=arguments.length,i=new Array(t),o=0;o{this.updateSelection()})}setOptions(e){e!==void 0&&Zs(["multiselect","hoverConnectedEdges","selectable","selectConnectedEdges"],this.options,e)}selectOnPoint(e){let t=!1;if(this.options.selectable===!0){const i=this.getNodeAt(e)||this.getEdgeAt(e);this.unselectAll(),i!==void 0&&(t=this.selectObject(i)),this.body.emitter.emit("_requestRedraw")}return t}selectAdditionalOnPoint(e){let t=!1;if(this.options.selectable===!0){const i=this.getNodeAt(e)||this.getEdgeAt(e);i!==void 0&&(t=!0,i.isSelected()===!0?this.deselectObject(i):this.selectObject(i),this.body.emitter.emit("_requestRedraw"))}return t}_initBaseEvent(e,t){const i={};return i.pointer={DOM:{x:t.x,y:t.y},canvas:this.canvas.DOMtoCanvas(t)},i.event=e,i}generateClickEvent(e,t,i,o){let r=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!1;const A=this._initBaseEvent(t,i);if(r===!0)A.nodes=[],A.edges=[];else{const I=this.getSelection();A.nodes=I.nodes,A.edges=I.edges}o!==void 0&&(A.previousSelection=o),e=="click"&&(A.items=this.getClickedItems(i)),t.controlEdge!==void 0&&(A.controlEdge=t.controlEdge),this.body.emitter.emit(e,A)}selectObject(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.options.selectConnectedEdges;return e!==void 0?(e instanceof Nt?(t===!0&&this._selectionAccumulator.addEdges(...e.edges),this._selectionAccumulator.addNodes(e)):this._selectionAccumulator.addEdges(e),!0):!1}deselectObject(e){e.isSelected()===!0&&(e.selected=!1,this._removeFromSelection(e))}_getAllNodesOverlappingWith(e){const t=[],i=this.body.nodes;for(let o=0;o1&&arguments[1]!==void 0?arguments[1]:!0;const i=this._pointerToPositionObject(e),o=this._getAllNodesOverlappingWith(i);if(o.length>0)return t===!0?this.body.nodes[o[o.length-1]]:o[o.length-1]}_getEdgesOverlappingWith(e,t){const i=this.body.edges;for(let o=0;o1&&arguments[1]!==void 0?arguments[1]:!0;const i=this.canvas.DOMtoCanvas(e);let o=10,r=null;const A=this.body.edges;for(let I=0;I0&&(this.generateClickEvent("deselectEdge",t,e,r),i=!0),o.nodes.deleted.length>0&&(this.generateClickEvent("deselectNode",t,e,r),i=!0),o.nodes.added.length>0&&(this.generateClickEvent("selectNode",t,e),i=!0),o.edges.added.length>0&&(this.generateClickEvent("selectEdge",t,e),i=!0),i===!0&&this.generateClickEvent("select",t,e)}getSelection(){return{nodes:this.getSelectedNodeIds(),edges:this.getSelectedEdgeIds()}}getSelectedNodes(){return this._selectionAccumulator.getNodes()}getSelectedEdges(){return this._selectionAccumulator.getEdges()}getSelectedNodeIds(){var e;return hn(e=this._selectionAccumulator.getNodes()).call(e,t=>t.id)}getSelectedEdgeIds(){var e;return hn(e=this._selectionAccumulator.getEdges()).call(e,t=>t.id)}setSelection(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(!e||!e.nodes&&!e.edges)throw new TypeError("Selection must be an object with nodes and/or edges properties");if((t.unselectAll||t.unselectAll===void 0)&&this.unselectAll(),e.nodes)for(const i of e.nodes){const o=this.body.nodes[i];if(!o)throw new RangeError('Node with id "'+i+'" not found');this.selectObject(o,t.highlightEdges)}if(e.edges)for(const i of e.edges){const o=this.body.edges[i];if(!o)throw new RangeError('Edge with id "'+i+'" not found');this.selectObject(o)}this.body.emitter.emit("_requestRedraw"),this._selectionAccumulator.commit()}selectNodes(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;if(!e||e.length===void 0)throw"Selection must be an array with ids";this.setSelection({nodes:e},{highlightEdges:t})}selectEdges(e){if(!e||e.length===void 0)throw"Selection must be an array with ids";this.setSelection({edges:e})}updateSelection(){for(const e in this._selectionAccumulator.getNodes())Object.prototype.hasOwnProperty.call(this.body.nodes,e.id)||this._selectionAccumulator.deleteNodes(e);for(const e in this._selectionAccumulator.getEdges())Object.prototype.hasOwnProperty.call(this.body.edges,e.id)||this._selectionAccumulator.deleteEdges(e)}getClickedItems(e){const t=this.canvas.DOMtoCanvas(e),i=[],o=this.body.nodeIndices,r=this.body.nodes;for(let l=o.length-1;l>=0;l--){const h=r[o[l]].getItemsOnPoint(t);i.push.apply(i,h)}const A=this.body.edgeIndices,I=this.body.edges;for(let l=A.length-1;l>=0;l--){const h=I[A[l]].getItemsOnPoint(t);i.push.apply(i,h)}return i}}class i2{abstract(){throw new Error("Can't instantiate abstract class!")}fake_use(){}curveType(){return this.abstract()}getPosition(e){return this.fake_use(e),this.abstract()}setPosition(e,t){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:void 0;this.fake_use(e,t,i),this.abstract()}getTreeSize(e){return this.fake_use(e),this.abstract()}sort(e){this.fake_use(e),this.abstract()}fix(e,t){this.fake_use(e,t),this.abstract()}shift(e,t){this.fake_use(e,t),this.abstract()}}class PJ extends i2{constructor(e){super(),this.layout=e}curveType(){return"horizontal"}getPosition(e){return e.x}setPosition(e,t){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:void 0;i!==void 0&&this.layout.hierarchical.addToOrdering(e,i),e.x=t}getTreeSize(e){const t=this.layout.hierarchical.getTreeSize(this.layout.body.nodes,e);return{min:t.min_x,max:t.max_x}}sort(e){rg(e).call(e,function(t,i){return t.x-i.x})}fix(e,t){e.y=this.layout.options.hierarchical.levelSeparation*t,e.options.fixed.y=!0}shift(e,t){this.layout.body.nodes[e].x+=t}}class BJ extends i2{constructor(e){super(),this.layout=e}curveType(){return"vertical"}getPosition(e){return e.y}setPosition(e,t){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:void 0;i!==void 0&&this.layout.hierarchical.addToOrdering(e,i),e.y=t}getTreeSize(e){const t=this.layout.hierarchical.getTreeSize(this.layout.body.nodes,e);return{min:t.min_y,max:t.max_y}}sort(e){rg(e).call(e,function(t,i){return t.y-i.y})}fix(e,t){e.x=this.layout.options.hierarchical.levelSeparation*t,e.options.fixed.x=!0}shift(e,t){this.layout.body.nodes[e].y+=t}}var ZJ=ze,LJ=kg.every,GJ=Ds,FJ=GJ("every");ZJ({target:"Array",proto:!0,forced:!FJ},{every:function(e){return LJ(this,e,arguments.length>1?arguments[1]:void 0)}});var VJ=Xt,UJ=VJ("Array").every,YJ=Pt,HJ=UJ,Fu=Array.prototype,KJ=function(n){var e=n.every;return n===Fu||YJ(Fu,n)&&e===Fu.every?HJ:e},WJ=KJ,QJ=WJ,XJ=QJ,g2=De(XJ);function $J(n,e){const t=new Oi;return it(n).call(n,i=>{var o;it(o=i.edges).call(o,r=>{r.connected&&t.add(r)})}),it(t).call(t,i=>{const o=i.from.id,r=i.to.id;e[o]==null&&(e[o]=0),(e[r]==null||e[o]>=e[r])&&(e[r]=e[o]+1)}),e}function qJ(n){return o2(e=>{var t,i;return g2(t=$t(i=e.edges).call(i,o=>n.has(o.toId))).call(t,o=>o.to===e)},(e,t)=>t>e,"from",n)}function JJ(n){return o2(e=>{var t,i;return g2(t=$t(i=e.edges).call(i,o=>n.has(o.toId))).call(t,o=>o.from===e)},(e,t)=>tp+1+m.edges.length,0),I=t+"Id",l=t==="to"?1:-1;for(const[p,m]of i){if(!i.has(p)||!n(m))continue;r[p]=0;const v=[m];let x=0,O;for(;O=v.pop();){var c,h;if(!i.has(p))continue;const y=r[O.id]+l;if(it(c=$t(h=O.edges).call(h,S=>S.connected&&S.to!==S.from&&S[t]!==O&&i.has(S.toId)&&i.has(S.fromId))).call(c,S=>{const E=S[I],_=r[E];(_==null||e(y,_))&&(r[E]=y,v.push(S[t]))}),x>A)return $J(i,r);++x}}return r}class eee{constructor(){this.childrenReference={},this.parentReference={},this.trees={},this.distributionOrdering={},this.levels={},this.distributionIndex={},this.isTree=!1,this.treeIndex=-1}addRelation(e,t){this.childrenReference[e]===void 0&&(this.childrenReference[e]=[]),this.childrenReference[e].push(t),this.parentReference[t]===void 0&&(this.parentReference[t]=[]),this.parentReference[t].push(e)}checkIfTree(){for(const e in this.parentReference)if(this.parentReference[e].length>1){this.isTree=!1;return}this.isTree=!0}numTrees(){return this.treeIndex+1}setTreeIndex(e,t){t!==void 0&&this.trees[e.id]===void 0&&(this.trees[e.id]=t,this.treeIndex=Math.max(t,this.treeIndex))}ensureLevel(e){this.levels[e]===void 0&&(this.levels[e]=0)}getMaxLevel(e){const t={},i=o=>{if(t[o]!==void 0)return t[o];let r=this.levels[o];if(this.childrenReference[o]){const A=this.childrenReference[o];if(A.length>0)for(let I=0;Ir-A);for(const r of o)t.set(r,i++);for(const r in this.levels)Object.prototype.hasOwnProperty.call(this.levels,r)&&(this.levels[r]=t.get(this.levels[r]))}getTreeSize(e,t){let i=1e9,o=-1e9,r=1e9,A=-1e9;for(const I in this.trees)if(Object.prototype.hasOwnProperty.call(this.trees,I)&&this.trees[I]===t){const l=e[I];i=Math.min(l.x,i),o=Math.max(l.x,o),r=Math.min(l.y,r),A=Math.max(l.y,A)}return{min_x:i,max_x:o,min_y:r,max_y:A}}hasSameParent(e,t){const i=this.parentReference[e.id],o=this.parentReference[t.id];if(i===void 0||o===void 0)return!1;for(let r=0;r{this.setupHierarchicalLayout()}),this.body.emitter.on("_dataLoaded",()=>{this.layoutNetwork()}),this.body.emitter.on("_resetHierarchicalLayout",()=>{this.setupHierarchicalLayout()}),this.body.emitter.on("_adjustEdgesForHierarchicalLayout",()=>{if(this.options.hierarchical.enabled!==!0)return;const e=this.direction.curveType();this.body.emitter.emit("_forceDisableDynamicCurves",e,!1)})}setOptions(e,t){if(e!==void 0){const i=this.options.hierarchical,o=i.enabled;if(Zs(["randomSeed","improvedLayout","clusterThreshold"],this.options,e),ai(this.options,e,"hierarchical"),e.randomSeed!==void 0&&this._resetRNG(e.randomSeed),i.enabled===!0)return o===!0&&this.body.emitter.emit("refresh",!0),i.direction==="RL"||i.direction==="DU"?i.levelSeparation>0&&(i.levelSeparation*=-1):i.levelSeparation<0&&(i.levelSeparation*=-1),this.setDirectionStrategy(),this.body.emitter.emit("_resetHierarchicalLayout"),this.adaptAllOptionsForHierarchicalLayout(t);if(o===!0)return this.body.emitter.emit("refresh"),vt(t,this.optionsBackup)}return t}_resetRNG(e){this.initialRandomSeed=e,this._rng=QC(this.initialRandomSeed)}adaptAllOptionsForHierarchicalLayout(e){if(this.options.hierarchical.enabled===!0){const t=this.optionsBackup.physics;e.physics===void 0||e.physics===!0?(e.physics={enabled:t.enabled===void 0?!0:t.enabled,solver:"hierarchicalRepulsion"},t.enabled=t.enabled===void 0?!0:t.enabled,t.solver=t.solver||"barnesHut"):typeof e.physics=="object"?(t.enabled=e.physics.enabled===void 0?!0:e.physics.enabled,t.solver=e.physics.solver||"barnesHut",e.physics.solver="hierarchicalRepulsion"):e.physics!==!1&&(t.solver="barnesHut",e.physics={solver:"hierarchicalRepulsion"});let i=this.direction.curveType();if(e.edges===void 0)this.optionsBackup.edges={smooth:{enabled:!0,type:"dynamic"}},e.edges={smooth:!1};else if(e.edges.smooth===void 0)this.optionsBackup.edges={smooth:{enabled:!0,type:"dynamic"}},e.edges.smooth=!1;else if(typeof e.edges.smooth=="boolean")this.optionsBackup.edges={smooth:e.edges.smooth},e.edges.smooth={enabled:e.edges.smooth,type:i};else{const o=e.edges.smooth;o.type!==void 0&&o.type!=="dynamic"&&(i=o.type),this.optionsBackup.edges={smooth:{enabled:o.enabled===void 0?!0:o.enabled,type:o.type===void 0?"dynamic":o.type,roundness:o.roundness===void 0?.5:o.roundness,forceDirection:o.forceDirection===void 0?!1:o.forceDirection}},e.edges.smooth={enabled:o.enabled===void 0?!0:o.enabled,type:i,roundness:o.roundness===void 0?.5:o.roundness,forceDirection:o.forceDirection===void 0?!1:o.forceDirection}}this.body.emitter.emit("_forceDisableDynamicCurves",i)}return e}positionInitially(e){if(this.options.hierarchical.enabled!==!0){this._resetRNG(this.initialRandomSeed);const t=e.length+50;for(let i=0;ir){const l=e.length;for(;e.length>r&&o<=10;){o+=1;const c=e.length;o%3===0?this.body.modules.clustering.clusterBridges(A):this.body.modules.clustering.clusterOutliers(A);const h=e.length;if(c==h&&o%3!==0){this._declusterAll(),this.body.emitter.emit("_layoutFailed"),console.info("This network could not be positioned by this version of the improved layout algorithm. Please disable improvedLayout for better performance.");return}}this.body.modules.kamadaKawai.setOptions({springLength:Math.max(150,2*l)})}o>10&&console.info("The clustering didn't succeed within the amount of interations allowed, progressing with partial result."),this.body.modules.kamadaKawai.solve(e,this.body.edgeIndices,!0),this._shiftToCenter();const I=70;for(let l=0;l0){let e,t,i=!1,o=!1;this.lastNodeOnLevel={},this.hierarchical=new eee;for(t in this.body.nodes)Object.prototype.hasOwnProperty.call(this.body.nodes,t)&&(e=this.body.nodes[t],e.options.level!==void 0?(i=!0,this.hierarchical.levels[t]=e.options.level):o=!0);if(o===!0&&i===!0)throw new Error("To use the hierarchical layout, nodes require either no predefined levels or levels have to be defined for all nodes.");{if(o===!0){const A=this.options.hierarchical.sortMethod;A==="hubsize"?this._determineLevelsByHubsize():A==="directed"?this._determineLevelsDirected():A==="custom"&&this._determineLevelsCustomCallback()}for(const A in this.body.nodes)Object.prototype.hasOwnProperty.call(this.body.nodes,A)&&this.hierarchical.ensureLevel(A);const r=this._getDistribution();this._generateMap(),this._placeNodesByHierarchy(r),this._condenseHierarchy(),this._shiftToCenter()}}}_condenseHierarchy(){var e=this;let t=!1;const i={},o=()=>{const S=A();let E=0;for(let _=0;_{const _=this.hierarchical.trees;for(const j in _)Object.prototype.hasOwnProperty.call(_,j)&&_[j]===S&&this.direction.shift(j,E)},A=()=>{const S=[];for(let E=0;E{if(!E[S.id]&&(E[S.id]=!0,this.hierarchical.childrenReference[S.id])){const _=this.hierarchical.childrenReference[S.id];if(_.length>0)for(let j=0;j<_.length;j++)I(this.body.nodes[_[j]],E)}},l=function(S){let E=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1e9,_=1e9,j=1e9,X=1e9,ne=-1e9;for(const F in S)if(Object.prototype.hasOwnProperty.call(S,F)){const V=e.body.nodes[F],Ie=e.hierarchical.levels[V.id],Ee=e.direction.getPosition(V),[Be,xe]=e._getSpaceAroundNode(V,S);_=Math.min(Be,_),j=Math.min(xe,j),Ie<=E&&(X=Math.min(Ee,X),ne=Math.max(Ee,ne))}return[X,ne,_,j]},c=(S,E)=>{const _=this.hierarchical.getMaxLevel(S.id),j=this.hierarchical.getMaxLevel(E.id);return Math.min(_,j)},h=(S,E,_)=>{const j=this.hierarchical;for(let X=0;X1)for(let V=0;V2&&arguments[2]!==void 0?arguments[2]:!1;const j=e.direction.getPosition(S),X=e.direction.getPosition(E),ne=Math.abs(X-j),F=e.options.hierarchical.nodeSpacing;if(ne>F){const V={},Ie={};I(S,V),I(E,Ie);const Ee=c(S,E),Be=l(V,Ee),xe=l(Ie,Ee),Ue=Be[1],Le=xe[0],le=xe[2];if(Math.abs(Ue-Le)>F){let Q=Ue-Le+F;Q<-le+F&&(Q=-le+F),Q<0&&(e._shiftBlock(E.id,Q),t=!0,_===!0&&e._centerParent(E))}}},m=(S,E)=>{const _=E.id,j=E.edges,X=this.hierarchical.levels[E.id],ne=this.options.hierarchical.levelSeparation*this.options.hierarchical.levelSeparation,F={},V=[];for(let le=0;le{let Q=0;for(let se=0;se{let Q=0;for(let se=0;se{let Q=this.direction.getPosition(E);const se={};for(let K=0;K{const M=this.direction.getPosition(E);if(i[E.id]===void 0){const U={};I(E,U),i[E.id]=U}const Q=l(i[E.id]),se=Q[2],K=Q[3],q=le-M;let T=0;q>0?T=Math.min(q,K-this.options.hierarchical.nodeSpacing):q<0&&(T=-Math.min(-q,se-this.options.hierarchical.nodeSpacing)),T!=0&&(this._shiftBlock(E.id,T),t=!0)},Ue=le=>{const M=this.direction.getPosition(E),[Q,se]=this._getSpaceAroundNode(E),K=le-M;let q=M;K>0?q=Math.min(M+(se-this.options.hierarchical.nodeSpacing),le):K<0&&(q=Math.max(M-(Q-this.options.hierarchical.nodeSpacing),le)),q!==M&&(this.direction.setPosition(E,q),t=!0)};let Le=Be(S,V);xe(Le),Le=Be(S,j),Ue(Le)},v=S=>{let E=this.hierarchical.getLevels();E=No(E).call(E);for(let _=0;_{let E=this.hierarchical.getLevels();E=No(E).call(E);for(let _=0;_{for(const S in this.body.nodes)Object.prototype.hasOwnProperty.call(this.body.nodes,S)&&this._centerParent(this.body.nodes[S])},y=()=>{let S=this.hierarchical.getLevels();S=No(S).call(S);for(let E=0;E0&&Math.abs(p)0&&(c=this.direction.getPosition(o[A-1])+l),this.direction.setPosition(I,c,i),this._validatePositionAndContinue(I,i,c),r++}}}}_placeBranchNodes(e,t){var i;const o=this.hierarchical.childrenReference[e];if(o===void 0)return;const r=[];for(let I=0;It&&this.positionedNodes[l.id]===void 0){const h=this.options.hierarchical.nodeSpacing;let p;I===0?p=this.direction.getPosition(this.body.nodes[e]):p=this.direction.getPosition(r[I-1])+h,this.direction.setPosition(l,p,c),this._validatePositionAndContinue(l,c,p)}else return}const A=this._getCenterPosition(r);this.direction.setPosition(this.body.nodes[e],A,t)}_validatePositionAndContinue(e,t,i){if(this.hierarchical.isTree){if(this.lastNodeOnLevel[t]!==void 0){const o=this.direction.getPosition(this.body.nodes[this.lastNodeOnLevel[t]]);if(i-o{var o;lt(o=this.body.edgeIndices).call(o,i.id)!==-1&&t.push(i)}),t}_getHubSizes(){const e={},t=this.body.nodeIndices;We(t,o=>{const r=this.body.nodes[o],A=this._getActiveEdges(r).length;e[A]=!0});const i=[];return We(e,o=>{i.push(Number(o))}),rg(i).call(i,function(o,r){return r-o}),i}_determineLevelsByHubsize(){const e=(i,o)=>{this.hierarchical.levelDownstream(i,o)},t=this._getHubSizes();for(let i=0;i{const A=this.body.nodes[r];o===this._getActiveEdges(A).length&&this._crawlNetwork(e,r)})}}_determineLevelsCustomCallback(){const t=function(o,r,A){},i=(o,r,A)=>{let I=this.hierarchical.levels[o.id];I===void 0&&(I=this.hierarchical.levels[o.id]=1e5);const l=t(Mn.cloneOptions(o,"node"),Mn.cloneOptions(r,"node"),Mn.cloneOptions(A,"edge"));this.hierarchical.levels[r.id]=I+l};this._crawlNetwork(i),this.hierarchical.setMinLevelToZero()}_determineLevelsDirected(){var e;const t=Eu(e=this.body.nodeIndices).call(e,(i,o)=>(i.set(o,this.body.nodes[o]),i),new La);this.options.hierarchical.shakeTowards==="roots"?this.hierarchical.levels=JJ(t):this.hierarchical.levels=qJ(t),this.hierarchical.setMinLevelToZero()}_generateMap(){const e=(t,i)=>{this.hierarchical.levels[i.id]>this.hierarchical.levels[t.id]&&this.hierarchical.addRelation(t.id,i.id)};this._crawlNetwork(e),this.hierarchical.checkIfTree()}_crawlNetwork(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:function(){},t=arguments.length>1?arguments[1]:void 0;const i={},o=(r,A)=>{if(i[r.id]===void 0){this.hierarchical.setTreeIndex(r,A),i[r.id]=!0;let I;const l=this._getActiveEdges(r);for(let c=0;c{if(i[r])return;i[r]=!0,this.direction.shift(r,t);const A=this.hierarchical.childrenReference[r];if(A!==void 0)for(let I=0;I{const l=this.hierarchical.parentReference[I];if(l!==void 0)for(let c=0;c{const l=this.hierarchical.parentReference[I];if(l!==void 0)for(let c=0;c{this._clean()}),this.body.emitter.on("_dataChanged",oe(r=this._restore).call(r,this)),this.body.emitter.on("_resetData",oe(A=this._restore).call(A,this))}_restore(){this.inMode!==!1&&(this.options.initiallyActive===!0?this.enableEditMode():this.disableEditMode())}setOptions(e,t,i){t!==void 0&&(t.locale!==void 0?this.options.locale=t.locale:this.options.locale=i.locale,t.locales!==void 0?this.options.locales=t.locales:this.options.locales=i.locales),e!==void 0&&(typeof e=="boolean"?this.options.enabled=e:(this.options.enabled=!0,vt(this.options,e)),this.options.initiallyActive===!0&&(this.editMode=!0),this._setup())}toggleEditMode(){this.editMode===!0?this.disableEditMode():this.enableEditMode()}enableEditMode(){this.editMode=!0,this._clean(),this.guiEnabled===!0&&(this.manipulationDiv.style.display="block",this.closeDiv.style.display="block",this.editModeDiv.style.display="none",this.showManipulatorToolbar())}disableEditMode(){this.editMode=!1,this._clean(),this.guiEnabled===!0&&(this.manipulationDiv.style.display="none",this.closeDiv.style.display="none",this.editModeDiv.style.display="block",this._createEditButton())}showManipulatorToolbar(){if(this._clean(),this.manipulationDOM={},this.guiEnabled===!0){var e,t;this.editMode=!0,this.manipulationDiv.style.display="block",this.closeDiv.style.display="block";const i=this.selectionHandler.getSelectedNodeCount(),o=this.selectionHandler.getSelectedEdgeCount(),r=i+o,A=this.options.locales[this.options.locale];let I=!1;this.options.addNode!==!1&&(this._createAddNodeButton(A),I=!0),this.options.addEdge!==!1&&(I===!0?this._createSeperator(1):I=!0,this._createAddEdgeButton(A)),i===1&&typeof this.options.editNode=="function"?(I===!0?this._createSeperator(2):I=!0,this._createEditNodeButton(A)):o===1&&i===0&&this.options.editEdge!==!1&&(I===!0?this._createSeperator(3):I=!0,this._createEditEdgeButton(A)),r!==0&&(i>0&&this.options.deleteNode!==!1?(I===!0&&this._createSeperator(4),this._createDeleteButton(A)):i===0&&this.options.deleteEdge!==!1&&(I===!0&&this._createSeperator(4),this._createDeleteButton(A))),this._bindElementEvents(this.closeDiv,oe(e=this.toggleEditMode).call(e,this)),this._temporaryBindEvent("select",oe(t=this.showManipulatorToolbar).call(t,this))}this.body.emitter.emit("_redraw")}addNodeMode(){var e;if(this.editMode!==!0&&this.enableEditMode(),this._clean(),this.inMode="addNode",this.guiEnabled===!0){var t;const i=this.options.locales[this.options.locale];this.manipulationDOM={},this._createBackButton(i),this._createSeperator(),this._createDescription(i.addDescription||this.options.locales.en.addDescription),this._bindElementEvents(this.closeDiv,oe(t=this.toggleEditMode).call(t,this))}this._temporaryBindEvent("click",oe(e=this._performAddNode).call(e,this))}editNode(){this.editMode!==!0&&this.enableEditMode(),this._clean();const e=this.selectionHandler.getSelectedNodes()[0];if(e!==void 0)if(this.inMode="editNode",typeof this.options.editNode=="function")if(e.isCluster!==!0){const t=vt({},e.options,!1);if(t.x=e.x,t.y=e.y,this.options.editNode.length===2)this.options.editNode(t,i=>{i!=null&&this.inMode==="editNode"&&this.body.data.nodes.getDataSet().update(i),this.showManipulatorToolbar()});else throw new Error("The function for edit does not support two arguments (data, callback)")}else alert(this.options.locales[this.options.locale].editClusterError||this.options.locales.en.editClusterError);else throw new Error("No function has been configured to handle the editing of nodes.");else this.showManipulatorToolbar()}addEdgeMode(){var e,t,i,o,r;if(this.editMode!==!0&&this.enableEditMode(),this._clean(),this.inMode="addEdge",this.guiEnabled===!0){var A;const I=this.options.locales[this.options.locale];this.manipulationDOM={},this._createBackButton(I),this._createSeperator(),this._createDescription(I.edgeDescription||this.options.locales.en.edgeDescription),this._bindElementEvents(this.closeDiv,oe(A=this.toggleEditMode).call(A,this))}this._temporaryBindUI("onTouch",oe(e=this._handleConnect).call(e,this)),this._temporaryBindUI("onDragEnd",oe(t=this._finishConnect).call(t,this)),this._temporaryBindUI("onDrag",oe(i=this._dragControlNode).call(i,this)),this._temporaryBindUI("onRelease",oe(o=this._finishConnect).call(o,this)),this._temporaryBindUI("onDragStart",oe(r=this._dragStartEdge).call(r,this)),this._temporaryBindUI("onHold",()=>{})}editEdgeMode(){if(this.editMode!==!0&&this.enableEditMode(),this._clean(),this.inMode="editEdge",typeof this.options.editEdge=="object"&&typeof this.options.editEdge.editWithoutDrag=="function"&&(this.edgeBeingEditedId=this.selectionHandler.getSelectedEdgeIds()[0],this.edgeBeingEditedId!==void 0)){const A=this.body.edges[this.edgeBeingEditedId];this._performEditEdge(A.from.id,A.to.id);return}if(this.guiEnabled===!0){var e;const A=this.options.locales[this.options.locale];this.manipulationDOM={},this._createBackButton(A),this._createSeperator(),this._createDescription(A.editEdgeDescription||this.options.locales.en.editEdgeDescription),this._bindElementEvents(this.closeDiv,oe(e=this.toggleEditMode).call(e,this))}if(this.edgeBeingEditedId=this.selectionHandler.getSelectedEdgeIds()[0],this.edgeBeingEditedId!==void 0){var t,i,o,r;const A=this.body.edges[this.edgeBeingEditedId],I=this._getNewTargetNode(A.from.x,A.from.y),l=this._getNewTargetNode(A.to.x,A.to.y);this.temporaryIds.nodes.push(I.id),this.temporaryIds.nodes.push(l.id),this.body.nodes[I.id]=I,this.body.nodeIndices.push(I.id),this.body.nodes[l.id]=l,this.body.nodeIndices.push(l.id),this._temporaryBindUI("onTouch",oe(t=this._controlNodeTouch).call(t,this)),this._temporaryBindUI("onTap",()=>{}),this._temporaryBindUI("onHold",()=>{}),this._temporaryBindUI("onDragStart",oe(i=this._controlNodeDragStart).call(i,this)),this._temporaryBindUI("onDrag",oe(o=this._controlNodeDrag).call(o,this)),this._temporaryBindUI("onDragEnd",oe(r=this._controlNodeDragEnd).call(r,this)),this._temporaryBindUI("onMouseMove",()=>{}),this._temporaryBindEvent("beforeDrawing",c=>{const h=A.edgeType.findBorderPositions(c);I.selected===!1&&(I.x=h.from.x,I.y=h.from.y),l.selected===!1&&(l.x=h.to.x,l.y=h.to.y)}),this.body.emitter.emit("_redraw")}else this.showManipulatorToolbar()}deleteSelected(){this.editMode!==!0&&this.enableEditMode(),this._clean(),this.inMode="delete";const e=this.selectionHandler.getSelectedNodeIds(),t=this.selectionHandler.getSelectedEdgeIds();let i;if(e.length>0){for(let o=0;o0&&typeof this.options.deleteEdge=="function"&&(i=this.options.deleteEdge);if(typeof i=="function"){const o={nodes:e,edges:t};if(i.length===2)i(o,r=>{r!=null&&this.inMode==="delete"?(this.body.data.edges.getDataSet().remove(r.edges),this.body.data.nodes.getDataSet().remove(r.nodes),this.body.emitter.emit("startSimulation"),this.showManipulatorToolbar()):(this.body.emitter.emit("startSimulation"),this.showManipulatorToolbar())});else throw new Error("The function for delete does not support two arguments (data, callback)")}else this.body.data.edges.getDataSet().remove(t),this.body.data.nodes.getDataSet().remove(e),this.body.emitter.emit("startSimulation"),this.showManipulatorToolbar()}_setup(){this.options.enabled===!0?(this.guiEnabled=!0,this._createWrappers(),this.editMode===!1?this._createEditButton():this.showManipulatorToolbar()):(this._removeManipulationDOM(),this.guiEnabled=!1)}_createWrappers(){if(this.manipulationDiv===void 0&&(this.manipulationDiv=document.createElement("div"),this.manipulationDiv.className="vis-manipulation",this.editMode===!0?this.manipulationDiv.style.display="block":this.manipulationDiv.style.display="none",this.canvas.frame.appendChild(this.manipulationDiv)),this.editModeDiv===void 0&&(this.editModeDiv=document.createElement("div"),this.editModeDiv.className="vis-edit-mode",this.editMode===!0?this.editModeDiv.style.display="none":this.editModeDiv.style.display="block",this.canvas.frame.appendChild(this.editModeDiv)),this.closeDiv===void 0){var e,t;this.closeDiv=document.createElement("button"),this.closeDiv.className="vis-close",this.closeDiv.setAttribute("aria-label",(e=(t=this.options.locales[this.options.locale])===null||t===void 0?void 0:t.close)!==null&&e!==void 0?e:this.options.locales.en.close),this.closeDiv.style.display=this.manipulationDiv.style.display,this.canvas.frame.appendChild(this.closeDiv)}}_getNewTargetNode(e,t){const i=vt({},this.options.controlNodeStyle);i.id="targetNode"+Fs(),i.hidden=!1,i.physics=!1,i.x=e,i.y=t;const o=this.body.functions.createNode(i);return o.shape.boundingBox={left:e,right:e,top:t,bottom:t},o}_createEditButton(){var e;this._clean(),this.manipulationDOM={},zg(this.editModeDiv);const t=this.options.locales[this.options.locale],i=this._createButton("editMode","vis-edit vis-edit-mode",t.edit||this.options.locales.en.edit);this.editModeDiv.appendChild(i),this._bindElementEvents(i,oe(e=this.toggleEditMode).call(e,this))}_clean(){this.inMode=!1,this.guiEnabled===!0&&(zg(this.editModeDiv),zg(this.manipulationDiv),this._cleanupDOMEventListeners()),this._cleanupTemporaryNodesAndEdges(),this._unbindTemporaryUIs(),this._unbindTemporaryEvents(),this.body.emitter.emit("restorePhysics")}_cleanupDOMEventListeners(){for(const t of zi(e=this._domEventListenerCleanupQueue).call(e,0)){var e;t()}}_removeManipulationDOM(){this._clean(),zg(this.manipulationDiv),zg(this.editModeDiv),zg(this.closeDiv),this.manipulationDiv&&this.canvas.frame.removeChild(this.manipulationDiv),this.editModeDiv&&this.canvas.frame.removeChild(this.editModeDiv),this.closeDiv&&this.canvas.frame.removeChild(this.closeDiv),this.manipulationDiv=void 0,this.editModeDiv=void 0,this.closeDiv=void 0}_createSeperator(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:1;this.manipulationDOM["seperatorLineDiv"+e]=document.createElement("div"),this.manipulationDOM["seperatorLineDiv"+e].className="vis-separator-line",this.manipulationDiv.appendChild(this.manipulationDOM["seperatorLineDiv"+e])}_createAddNodeButton(e){var t;const i=this._createButton("addNode","vis-add",e.addNode||this.options.locales.en.addNode);this.manipulationDiv.appendChild(i),this._bindElementEvents(i,oe(t=this.addNodeMode).call(t,this))}_createAddEdgeButton(e){var t;const i=this._createButton("addEdge","vis-connect",e.addEdge||this.options.locales.en.addEdge);this.manipulationDiv.appendChild(i),this._bindElementEvents(i,oe(t=this.addEdgeMode).call(t,this))}_createEditNodeButton(e){var t;const i=this._createButton("editNode","vis-edit",e.editNode||this.options.locales.en.editNode);this.manipulationDiv.appendChild(i),this._bindElementEvents(i,oe(t=this.editNode).call(t,this))}_createEditEdgeButton(e){var t;const i=this._createButton("editEdge","vis-edit",e.editEdge||this.options.locales.en.editEdge);this.manipulationDiv.appendChild(i),this._bindElementEvents(i,oe(t=this.editEdgeMode).call(t,this))}_createDeleteButton(e){var t;let i;this.options.rtl?i="vis-delete-rtl":i="vis-delete";const o=this._createButton("delete",i,e.del||this.options.locales.en.del);this.manipulationDiv.appendChild(o),this._bindElementEvents(o,oe(t=this.deleteSelected).call(t,this))}_createBackButton(e){var t;const i=this._createButton("back","vis-back",e.back||this.options.locales.en.back);this.manipulationDiv.appendChild(i),this._bindElementEvents(i,oe(t=this.showManipulatorToolbar).call(t,this))}_createButton(e,t,i){let o=arguments.length>3&&arguments[3]!==void 0?arguments[3]:"vis-label";return this.manipulationDOM[e+"Div"]=document.createElement("button"),this.manipulationDOM[e+"Div"].className="vis-button "+t,this.manipulationDOM[e+"Label"]=document.createElement("div"),this.manipulationDOM[e+"Label"].className=o,this.manipulationDOM[e+"Label"].innerText=i,this.manipulationDOM[e+"Div"].appendChild(this.manipulationDOM[e+"Label"]),this.manipulationDOM[e+"Div"]}_createDescription(e){this.manipulationDOM.descriptionLabel=document.createElement("div"),this.manipulationDOM.descriptionLabel.className="vis-none",this.manipulationDOM.descriptionLabel.innerText=e,this.manipulationDiv.appendChild(this.manipulationDOM.descriptionLabel)}_temporaryBindEvent(e,t){this.temporaryEventFunctions.push({event:e,boundFunction:t}),this.body.emitter.on(e,t)}_temporaryBindUI(e,t){if(this.body.eventListeners[e]!==void 0)this.temporaryUIFunctions[e]=this.body.eventListeners[e],this.body.eventListeners[e]=t;else throw new Error("This UI function does not exist. Typo? You tried: "+e+" possible are: "+Os(xt(this.body.eventListeners)))}_unbindTemporaryUIs(){for(const e in this.temporaryUIFunctions)Object.prototype.hasOwnProperty.call(this.temporaryUIFunctions,e)&&(this.body.eventListeners[e]=this.temporaryUIFunctions[e],delete this.temporaryUIFunctions[e]);this.temporaryUIFunctions={}}_unbindTemporaryEvents(){for(let e=0;e{i.destroy()});const o=r=>{let{keyCode:A,key:I}=r;(I==="Enter"||I===" "||A===13||A===32)&&t()};e.addEventListener("keyup",o,!1),this._domEventListenerCleanupQueue.push(()=>{e.removeEventListener("keyup",o,!1)})}_cleanupTemporaryNodesAndEdges(){for(let r=0;r=0;I--)if(r[I]!==this.selectedControlNode.id){A=this.body.nodes[r[I]];break}if(A!==void 0&&this.selectedControlNode!==void 0)if(A.isCluster===!0)alert(this.options.locales[this.options.locale].createEdgeError||this.options.locales.en.createEdgeError);else{const I=this.body.nodes[this.temporaryIds.nodes[0]];this.selectedControlNode.id===I.id?this._performEditEdge(A.id,o.to.id):this._performEditEdge(o.from.id,A.id)}else o.updateEdgeType(),this.body.emitter.emit("restorePhysics");this.body.emitter.emit("_redraw")}_handleConnect(e){if(new Date().valueOf()-this.touchTime>100){this.lastTouch=this.body.functions.getPointer(e.center),this.lastTouch.translation=Yt({},this.body.view.translation),this.interactionHandler.drag.pointer=this.lastTouch,this.interactionHandler.drag.translation=this.lastTouch.translation;const t=this.lastTouch,i=this.selectionHandler.getNodeAt(t);if(i!==void 0)if(i.isCluster===!0)alert(this.options.locales[this.options.locale].createEdgeError||this.options.locales.en.createEdgeError);else{const o=this._getNewTargetNode(i.x,i.y);this.body.nodes[o.id]=o,this.body.nodeIndices.push(o.id);const r=this.body.functions.createEdge({id:"connectionEdge"+Fs(),from:i.id,to:o.id,physics:!1,smooth:{enabled:!0,type:"continuous",roundness:.5}});this.body.edges[r.id]=r,this.body.edgeIndices.push(r.id),this.temporaryIds.nodes.push(o.id),this.temporaryIds.edges.push(r.id)}this.touchTime=new Date().valueOf()}}_dragControlNode(e){const t=this.body.functions.getPointer(e.center),i=this.selectionHandler._pointerToPositionObject(t);let o;this.temporaryIds.edges[0]!==void 0&&(o=this.body.edges[this.temporaryIds.edges[0]].fromId);const r=this.selectionHandler._getAllNodesOverlappingWith(i);let A;for(let l=r.length-1;l>=0;l--){var I;if(lt(I=this.temporaryIds.nodes).call(I,r[l])===-1){A=this.body.nodes[r[l]];break}}if(e.controlEdge={from:o,to:A?A.id:void 0},this.selectionHandler.generateClickEvent("controlNodeDragging",e,t),this.temporaryIds.nodes[0]!==void 0){const l=this.body.nodes[this.temporaryIds.nodes[0]];l.x=this.canvas._XconvertDOMtoCanvas(t.x),l.y=this.canvas._YconvertDOMtoCanvas(t.y),this.body.emitter.emit("_redraw")}else this.interactionHandler.onDrag(e)}_finishConnect(e){const t=this.body.functions.getPointer(e.center),i=this.selectionHandler._pointerToPositionObject(t);let o;this.temporaryIds.edges[0]!==void 0&&(o=this.body.edges[this.temporaryIds.edges[0]].fromId);const r=this.selectionHandler._getAllNodesOverlappingWith(i);let A;for(let l=r.length-1;l>=0;l--){var I;if(lt(I=this.temporaryIds.nodes).call(I,r[l])===-1){A=this.body.nodes[r[l]];break}}this._cleanupTemporaryNodesAndEdges(),A!==void 0&&(A.isCluster===!0?alert(this.options.locales[this.options.locale].createEdgeError||this.options.locales.en.createEdgeError):this.body.nodes[o]!==void 0&&this.body.nodes[A.id]!==void 0&&this._performAddEdge(o,A.id)),e.controlEdge={from:o,to:A?A.id:void 0},this.selectionHandler.generateClickEvent("controlNodeDragEnd",e,t),this.body.emitter.emit("_redraw")}_dragStartEdge(e){const t=this.lastTouch;this.selectionHandler.generateClickEvent("dragStart",e,t,void 0,!0)}_performAddNode(e){const t={id:Fs(),x:e.pointer.canvas.x,y:e.pointer.canvas.y,label:"new"};if(typeof this.options.addNode=="function")if(this.options.addNode.length===2)this.options.addNode(t,i=>{i!=null&&this.inMode==="addNode"&&this.body.data.nodes.getDataSet().add(i),this.showManipulatorToolbar()});else throw this.showManipulatorToolbar(),new Error("The function for add does not support two arguments (data,callback)");else this.body.data.nodes.getDataSet().add(t),this.showManipulatorToolbar()}_performAddEdge(e,t){const i={from:e,to:t};if(typeof this.options.addEdge=="function")if(this.options.addEdge.length===2)this.options.addEdge(i,o=>{o!=null&&this.inMode==="addEdge"&&(this.body.data.edges.getDataSet().add(o),this.selectionHandler.unselectAll(),this.showManipulatorToolbar())});else throw new Error("The function for connect does not support two arguments (data,callback)");else this.body.data.edges.getDataSet().add(i),this.selectionHandler.unselectAll(),this.showManipulatorToolbar()}_performEditEdge(e,t){const i={id:this.edgeBeingEditedId,from:e,to:t,label:this.body.data.edges.get(this.edgeBeingEditedId).label};let o=this.options.editEdge;if(typeof o=="object"&&(o=o.editWithoutDrag),typeof o=="function")if(o.length===2)o(i,r=>{r==null||this.inMode!=="editEdge"?(this.body.edges[i.id].updateEdgeType(),this.body.emitter.emit("_redraw"),this.showManipulatorToolbar()):(this.body.data.edges.getDataSet().update(r),this.selectionHandler.unselectAll(),this.showManipulatorToolbar())});else throw new Error("The function for edit does not support two arguments (data, callback)");else this.body.data.edges.getDataSet().update(i),this.selectionHandler.unselectAll(),this.showManipulatorToolbar()}}const Ce="string",se="boolean",W="number",Fa="array",we="object",Hx="dom",xJ="any",Zu=["arrow","bar","box","circle","crow","curve","diamond","image","inv_curve","inv_triangle","triangle","vee"],Pu={borderWidth:{number:W},borderWidthSelected:{number:W,undefined:"undefined"},brokenImage:{string:Ce,undefined:"undefined"},chosen:{label:{boolean:se,function:"function"},node:{boolean:se,function:"function"},__type__:{object:we,boolean:se}},color:{border:{string:Ce},background:{string:Ce},highlight:{border:{string:Ce},background:{string:Ce},__type__:{object:we,string:Ce}},hover:{border:{string:Ce},background:{string:Ce},__type__:{object:we,string:Ce}},__type__:{object:we,string:Ce}},opacity:{number:W,undefined:"undefined"},fixed:{x:{boolean:se},y:{boolean:se},__type__:{object:we,boolean:se}},font:{align:{string:Ce},color:{string:Ce},size:{number:W},face:{string:Ce},background:{string:Ce},strokeWidth:{number:W},strokeColor:{string:Ce},vadjust:{number:W},multi:{boolean:se,string:Ce},bold:{color:{string:Ce},size:{number:W},face:{string:Ce},mod:{string:Ce},vadjust:{number:W},__type__:{object:we,string:Ce}},boldital:{color:{string:Ce},size:{number:W},face:{string:Ce},mod:{string:Ce},vadjust:{number:W},__type__:{object:we,string:Ce}},ital:{color:{string:Ce},size:{number:W},face:{string:Ce},mod:{string:Ce},vadjust:{number:W},__type__:{object:we,string:Ce}},mono:{color:{string:Ce},size:{number:W},face:{string:Ce},mod:{string:Ce},vadjust:{number:W},__type__:{object:we,string:Ce}},__type__:{object:we,string:Ce}},group:{string:Ce,number:W,undefined:"undefined"},heightConstraint:{minimum:{number:W},valign:{string:Ce},__type__:{object:we,boolean:se,number:W}},hidden:{boolean:se},icon:{face:{string:Ce},code:{string:Ce},size:{number:W},color:{string:Ce},weight:{string:Ce,number:W},__type__:{object:we}},id:{string:Ce,number:W},image:{selected:{string:Ce,undefined:"undefined"},unselected:{string:Ce,undefined:"undefined"},__type__:{object:we,string:Ce}},imagePadding:{top:{number:W},right:{number:W},bottom:{number:W},left:{number:W},__type__:{object:we,number:W}},label:{string:Ce,undefined:"undefined"},labelHighlightBold:{boolean:se},level:{number:W,undefined:"undefined"},margin:{top:{number:W},right:{number:W},bottom:{number:W},left:{number:W},__type__:{object:we,number:W}},mass:{number:W},physics:{boolean:se},scaling:{min:{number:W},max:{number:W},label:{enabled:{boolean:se},min:{number:W},max:{number:W},maxVisible:{number:W},drawThreshold:{number:W},__type__:{object:we,boolean:se}},customScalingFunction:{function:"function"},__type__:{object:we}},shadow:{enabled:{boolean:se},color:{string:Ce},size:{number:W},x:{number:W},y:{number:W},__type__:{object:we,boolean:se}},shape:{string:["custom","ellipse","circle","database","box","text","image","circularImage","diamond","dot","star","triangle","triangleDown","square","icon","hexagon"]},ctxRenderer:{function:"function"},shapeProperties:{borderDashes:{boolean:se,array:Fa},borderRadius:{number:W},interpolation:{boolean:se},useImageSize:{boolean:se},useBorderWithImage:{boolean:se},coordinateOrigin:{string:["center","top-left"]},__type__:{object:we}},size:{number:W},title:{string:Ce,dom:Hx,undefined:"undefined"},value:{number:W,undefined:"undefined"},widthConstraint:{minimum:{number:W},maximum:{number:W},__type__:{object:we,boolean:se,number:W}},x:{number:W},y:{number:W},__type__:{object:we}},EJ={configure:{enabled:{boolean:se},filter:{boolean:se,string:Ce,array:Fa,function:"function"},container:{dom:Hx},showButton:{boolean:se},__type__:{object:we,boolean:se,string:Ce,array:Fa,function:"function"}},edges:{arrows:{to:{enabled:{boolean:se},scaleFactor:{number:W},type:{string:Zu},imageHeight:{number:W},imageWidth:{number:W},src:{string:Ce},__type__:{object:we,boolean:se}},middle:{enabled:{boolean:se},scaleFactor:{number:W},type:{string:Zu},imageWidth:{number:W},imageHeight:{number:W},src:{string:Ce},__type__:{object:we,boolean:se}},from:{enabled:{boolean:se},scaleFactor:{number:W},type:{string:Zu},imageWidth:{number:W},imageHeight:{number:W},src:{string:Ce},__type__:{object:we,boolean:se}},__type__:{string:["from","to","middle"],object:we}},endPointOffset:{from:{number:W},to:{number:W},__type__:{object:we,number:W}},arrowStrikethrough:{boolean:se},background:{enabled:{boolean:se},color:{string:Ce},size:{number:W},dashes:{boolean:se,array:Fa},__type__:{object:we,boolean:se}},chosen:{label:{boolean:se,function:"function"},edge:{boolean:se,function:"function"},__type__:{object:we,boolean:se}},color:{color:{string:Ce},highlight:{string:Ce},hover:{string:Ce},inherit:{string:["from","to","both"],boolean:se},opacity:{number:W},__type__:{object:we,string:Ce}},dashes:{boolean:se,array:Fa},font:{color:{string:Ce},size:{number:W},face:{string:Ce},background:{string:Ce},strokeWidth:{number:W},strokeColor:{string:Ce},align:{string:["horizontal","top","middle","bottom"]},vadjust:{number:W},multi:{boolean:se,string:Ce},bold:{color:{string:Ce},size:{number:W},face:{string:Ce},mod:{string:Ce},vadjust:{number:W},__type__:{object:we,string:Ce}},boldital:{color:{string:Ce},size:{number:W},face:{string:Ce},mod:{string:Ce},vadjust:{number:W},__type__:{object:we,string:Ce}},ital:{color:{string:Ce},size:{number:W},face:{string:Ce},mod:{string:Ce},vadjust:{number:W},__type__:{object:we,string:Ce}},mono:{color:{string:Ce},size:{number:W},face:{string:Ce},mod:{string:Ce},vadjust:{number:W},__type__:{object:we,string:Ce}},__type__:{object:we,string:Ce}},hidden:{boolean:se},hoverWidth:{function:"function",number:W},label:{string:Ce,undefined:"undefined"},labelHighlightBold:{boolean:se},length:{number:W,undefined:"undefined"},physics:{boolean:se},scaling:{min:{number:W},max:{number:W},label:{enabled:{boolean:se},min:{number:W},max:{number:W},maxVisible:{number:W},drawThreshold:{number:W},__type__:{object:we,boolean:se}},customScalingFunction:{function:"function"},__type__:{object:we}},selectionWidth:{function:"function",number:W},selfReferenceSize:{number:W},selfReference:{size:{number:W},angle:{number:W},renderBehindTheNode:{boolean:se},__type__:{object:we}},shadow:{enabled:{boolean:se},color:{string:Ce},size:{number:W},x:{number:W},y:{number:W},__type__:{object:we,boolean:se}},smooth:{enabled:{boolean:se},type:{string:["dynamic","continuous","discrete","diagonalCross","straightCross","horizontal","vertical","curvedCW","curvedCCW","cubicBezier"]},roundness:{number:W},forceDirection:{string:["horizontal","vertical","none"],boolean:se},__type__:{object:we,boolean:se}},title:{string:Ce,undefined:"undefined"},width:{number:W},widthConstraint:{maximum:{number:W},__type__:{object:we,boolean:se,number:W}},value:{number:W,undefined:"undefined"},__type__:{object:we}},groups:{useDefaultGroups:{boolean:se},__any__:Pu,__type__:{object:we}},interaction:{dragNodes:{boolean:se},dragView:{boolean:se},hideEdgesOnDrag:{boolean:se},hideEdgesOnZoom:{boolean:se},hideNodesOnDrag:{boolean:se},hover:{boolean:se},keyboard:{enabled:{boolean:se},speed:{x:{number:W},y:{number:W},zoom:{number:W},__type__:{object:we}},bindToWindow:{boolean:se},autoFocus:{boolean:se},__type__:{object:we,boolean:se}},multiselect:{boolean:se},navigationButtons:{boolean:se},selectable:{boolean:se},selectConnectedEdges:{boolean:se},hoverConnectedEdges:{boolean:se},tooltipDelay:{number:W},zoomView:{boolean:se},zoomSpeed:{number:W},__type__:{object:we}},layout:{randomSeed:{undefined:"undefined",number:W,string:Ce},improvedLayout:{boolean:se},clusterThreshold:{number:W},hierarchical:{enabled:{boolean:se},levelSeparation:{number:W},nodeSpacing:{number:W},treeSpacing:{number:W},blockShifting:{boolean:se},edgeMinimization:{boolean:se},parentCentralization:{boolean:se},direction:{string:["UD","DU","LR","RL"]},sortMethod:{string:["hubsize","directed"]},shakeTowards:{string:["leaves","roots"]},__type__:{object:we,boolean:se}},__type__:{object:we}},manipulation:{enabled:{boolean:se},initiallyActive:{boolean:se},addNode:{boolean:se,function:"function"},addEdge:{boolean:se,function:"function"},editNode:{function:"function"},editEdge:{editWithoutDrag:{function:"function"},__type__:{object:we,boolean:se,function:"function"}},deleteNode:{boolean:se,function:"function"},deleteEdge:{boolean:se,function:"function"},controlNodeStyle:Pu,__type__:{object:we,boolean:se}},nodes:Pu,physics:{enabled:{boolean:se},barnesHut:{theta:{number:W},gravitationalConstant:{number:W},centralGravity:{number:W},springLength:{number:W},springConstant:{number:W},damping:{number:W},avoidOverlap:{number:W},__type__:{object:we}},forceAtlas2Based:{theta:{number:W},gravitationalConstant:{number:W},centralGravity:{number:W},springLength:{number:W},springConstant:{number:W},damping:{number:W},avoidOverlap:{number:W},__type__:{object:we}},repulsion:{centralGravity:{number:W},springLength:{number:W},springConstant:{number:W},nodeDistance:{number:W},damping:{number:W},__type__:{object:we}},hierarchicalRepulsion:{centralGravity:{number:W},springLength:{number:W},springConstant:{number:W},nodeDistance:{number:W},damping:{number:W},avoidOverlap:{number:W},__type__:{object:we}},maxVelocity:{number:W},minVelocity:{number:W},solver:{string:["barnesHut","repulsion","hierarchicalRepulsion","forceAtlas2Based"]},stabilization:{enabled:{boolean:se},iterations:{number:W},updateInterval:{number:W},onlyDynamicEdges:{boolean:se},fit:{boolean:se},__type__:{object:we,boolean:se}},timestep:{number:W},adaptiveTimestep:{boolean:se},wind:{x:{number:W},y:{number:W},__type__:{object:we}},__type__:{object:we,boolean:se}},autoResize:{boolean:se},clickToUse:{boolean:se},locale:{string:Ce},locales:{__any__:{any:xJ},__type__:{object:we}},height:{string:Ce},width:{string:Ce},__type__:{object:we}},Kx={nodes:{borderWidth:[1,0,10,1],borderWidthSelected:[2,0,10,1],color:{border:["color","#2B7CE9"],background:["color","#97C2FC"],highlight:{border:["color","#2B7CE9"],background:["color","#D2E5FF"]},hover:{border:["color","#2B7CE9"],background:["color","#D2E5FF"]}},opacity:[0,0,1,.1],fixed:{x:!1,y:!1},font:{color:["color","#343434"],size:[14,0,100,1],face:["arial","verdana","tahoma"],background:["color","none"],strokeWidth:[0,0,50,1],strokeColor:["color","#ffffff"]},hidden:!1,labelHighlightBold:!0,physics:!0,scaling:{min:[10,0,200,1],max:[30,0,200,1],label:{enabled:!1,min:[14,0,200,1],max:[30,0,200,1],maxVisible:[30,0,200,1],drawThreshold:[5,0,20,1]}},shadow:{enabled:!1,color:"rgba(0,0,0,0.5)",size:[10,0,20,1],x:[5,-30,30,1],y:[5,-30,30,1]},shape:["ellipse","box","circle","database","diamond","dot","square","star","text","triangle","triangleDown","hexagon"],shapeProperties:{borderDashes:!1,borderRadius:[6,0,20,1],interpolation:!0,useImageSize:!1},size:[25,0,200,1]},edges:{arrows:{to:{enabled:!1,scaleFactor:[1,0,3,.05],type:"arrow"},middle:{enabled:!1,scaleFactor:[1,0,3,.05],type:"arrow"},from:{enabled:!1,scaleFactor:[1,0,3,.05],type:"arrow"}},endPointOffset:{from:[0,-10,10,1],to:[0,-10,10,1]},arrowStrikethrough:!0,color:{color:["color","#848484"],highlight:["color","#848484"],hover:["color","#848484"],inherit:["from","to","both",!0,!1],opacity:[1,0,1,.05]},dashes:!1,font:{color:["color","#343434"],size:[14,0,100,1],face:["arial","verdana","tahoma"],background:["color","none"],strokeWidth:[2,0,50,1],strokeColor:["color","#ffffff"],align:["horizontal","top","middle","bottom"]},hidden:!1,hoverWidth:[1.5,0,5,.1],labelHighlightBold:!0,physics:!0,scaling:{min:[1,0,100,1],max:[15,0,100,1],label:{enabled:!0,min:[14,0,200,1],max:[30,0,200,1],maxVisible:[30,0,200,1],drawThreshold:[5,0,20,1]}},selectionWidth:[1.5,0,5,.1],selfReferenceSize:[20,0,200,1],selfReference:{size:[20,0,200,1],angle:[Math.PI/2,-6*Math.PI,6*Math.PI,Math.PI/8],renderBehindTheNode:!0},shadow:{enabled:!1,color:"rgba(0,0,0,0.5)",size:[10,0,20,1],x:[5,-30,30,1],y:[5,-30,30,1]},smooth:{enabled:!0,type:["dynamic","continuous","discrete","diagonalCross","straightCross","horizontal","vertical","curvedCW","curvedCCW","cubicBezier"],forceDirection:["horizontal","vertical","none"],roundness:[.5,0,1,.05]},width:[1,0,30,1]},layout:{hierarchical:{enabled:!1,levelSeparation:[150,20,500,5],nodeSpacing:[100,20,500,5],treeSpacing:[200,20,500,5],blockShifting:!0,edgeMinimization:!0,parentCentralization:!0,direction:["UD","DU","LR","RL"],sortMethod:["hubsize","directed"],shakeTowards:["leaves","roots"]}},interaction:{dragNodes:!0,dragView:!0,hideEdgesOnDrag:!1,hideEdgesOnZoom:!1,hideNodesOnDrag:!1,hover:!1,keyboard:{enabled:!1,speed:{x:[10,0,40,1],y:[10,0,40,1],zoom:[.02,0,.1,.005]},bindToWindow:!0,autoFocus:!0},multiselect:!1,navigationButtons:!1,selectable:!0,selectConnectedEdges:!0,hoverConnectedEdges:!0,tooltipDelay:[300,0,1e3,25],zoomView:!0,zoomSpeed:[1,.1,2,.1]},manipulation:{enabled:!1,initiallyActive:!1},physics:{enabled:!0,barnesHut:{theta:[.5,.1,1,.05],gravitationalConstant:[-2e3,-3e4,0,50],centralGravity:[.3,0,10,.05],springLength:[95,0,500,5],springConstant:[.04,0,1.2,.005],damping:[.09,0,1,.01],avoidOverlap:[0,0,1,.01]},forceAtlas2Based:{theta:[.5,.1,1,.05],gravitationalConstant:[-50,-500,0,1],centralGravity:[.01,0,1,.005],springLength:[95,0,500,5],springConstant:[.08,0,1.2,.005],damping:[.4,0,1,.01],avoidOverlap:[0,0,1,.01]},repulsion:{centralGravity:[.2,0,10,.05],springLength:[200,0,500,5],springConstant:[.05,0,1.2,.005],nodeDistance:[100,0,500,5],damping:[.09,0,1,.01]},hierarchicalRepulsion:{centralGravity:[.2,0,10,.05],springLength:[100,0,500,5],springConstant:[.01,0,1.2,.005],nodeDistance:[120,0,500,5],damping:[.09,0,1,.01],avoidOverlap:[0,0,1,.01]},maxVelocity:[50,0,150,1],minVelocity:[.1,.01,.5,.01],solver:["barnesHut","forceAtlas2Based","repulsion","hierarchicalRepulsion"],timestep:[.5,.01,1,.01],wind:{x:[0,-10,10,.1],y:[0,-10,10,.1]}}},SJ=(n,e,t)=>{var i;return!!(Mg(n).call(n,"physics")&&Mg(i=Kx.physics.solver).call(i,e)&&t.physics.solver!==e&&e!=="wind")};class TJ{constructor(){}getDistances(e,t,i){const o={},r=e.edges;for(let I=0;I2&&arguments[2]!==void 0?arguments[2]:!1;const o=this.distanceSolver.getDistances(this.body,e,t);this._createL_matrix(o),this._createK_matrix(o),this._createE_matrix();const r=.01,A=1;let I=0;const l=Math.max(1e3,Math.min(10*this.body.nodeIndices.length,6e3)),c=5;let h=1e9,p=0,m=0,b=0,w=0,O=0;for(;h>r&&IA&&Othis.body.emitter.emit("_requestRedraw")),this.groups=new C7,this.canvas=new yq(this.body),this.selectionHandler=new nJ(this.body,this.canvas),this.interactionHandler=new Tq(this.body,this.canvas,this.selectionHandler),this.view=new xq(this.body,this.canvas),this.renderer=new fq(this.body,this.canvas),this.physics=new dq(this.body),this.layoutEngine=new bJ(this.body),this.clustering=new hq(this.body),this.manipulation=new wJ(this.body,this.canvas,this.selectionHandler,this.interactionHandler),this.nodesHandler=new P$(this.body,this.images,this.groups,this.layoutEngine),this.edgesHandler=new aq(this.body,this.images,this.groups),this.body.modules.kamadaKawai=new OJ(this.body,150,.05),this.body.modules.clustering=this.clustering,this.canvas._create(),this.setOptions(t),this.setData(e)}Rb(ve.prototype),ve.prototype.setOptions=function(n){if(n===null&&(n=void 0),n!==void 0){if(tY.validate(n,EJ)===!0&&console.error("%cErrors have been found in the supplied options object.",k1),js(["locale","locales","clickToUse"],this.options,n),n.locale!==void 0&&(n.locale=dY(n.locales||this.options.locales,n.locale)),n=this.layoutEngine.setOptions(n.layout,n),this.canvas.setOptions(n),this.groups.setOptions(n.groups),this.nodesHandler.setOptions(n.nodes),this.edgesHandler.setOptions(n.edges),this.physics.setOptions(n.physics),this.manipulation.setOptions(n.manipulation,n,this.options),this.interactionHandler.setOptions(n.interaction),this.renderer.setOptions(n.interaction),this.selectionHandler.setOptions(n.interaction),n.groups!==void 0&&this.body.emitter.emit("refreshNodes"),"configure"in n&&(this.configurator||(this.configurator=new JU(this,this.body.container,Kx,this.canvas.pixelRatio,SJ)),this.configurator.setOptions(n.configure)),this.configurator&&this.configurator.options.enabled===!0){const i={nodes:{},edges:{},layout:{},interaction:{},manipulation:{},physics:{},global:{}};vt(i.nodes,this.nodesHandler.options),vt(i.edges,this.edgesHandler.options),vt(i.layout,this.layoutEngine.options),vt(i.interaction,this.selectionHandler.options),vt(i.interaction,this.renderer.options),vt(i.interaction,this.interactionHandler.options),vt(i.manipulation,this.manipulation.options),vt(i.physics,this.physics.options),vt(i.global,this.canvas.options),vt(i.global,this.options),this.configurator.setModuleOptions(i)}n.clickToUse!==void 0?n.clickToUse===!0?this.activator===void 0&&(this.activator=new qU(this.canvas.frame),this.activator.on("change",()=>{this.body.emitter.emit("activate")})):(this.activator!==void 0&&(this.activator.destroy(),delete this.activator),this.body.emitter.emit("activate")):this.body.emitter.emit("activate"),this.canvas.setSize(),this.body.emitter.emit("startSimulation")}},ve.prototype._updateVisibleIndices=function(){const n=this.body.nodes,e=this.body.edges;this.body.nodeIndices=[],this.body.edgeIndices=[];for(const t in n)Object.prototype.hasOwnProperty.call(n,t)&&!this.clustering._isClusteredNode(t)&&n[t].options.hidden===!1&&this.body.nodeIndices.push(n[t].id);for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t)){const i=e[t],o=n[i.fromId],r=n[i.toId],A=o!==void 0&&r!==void 0;!this.clustering._isClusteredEdge(t)&&i.options.hidden===!1&&A&&o.options.hidden===!1&&r.options.hidden===!1&&this.body.edgeIndices.push(i.id)}},ve.prototype.bindEventListeners=function(){this.body.emitter.on("_dataChanged",()=>{this.edgesHandler._updateState(),this.body.emitter.emit("_dataUpdated")}),this.body.emitter.on("_dataUpdated",()=>{this.clustering._updateState(),this._updateVisibleIndices(),this._updateValueRange(this.body.nodes),this._updateValueRange(this.body.edges),this.body.emitter.emit("startSimulation"),this.body.emitter.emit("_requestRedraw")})},ve.prototype.setData=function(n){if(this.body.emitter.emit("resetPhysics"),this.body.emitter.emit("_resetData"),this.selectionHandler.unselectAll(),n&&n.dot&&(n.nodes||n.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.');if(this.setOptions(n&&n.options),n&&n.dot){console.warn("The dot property has been deprecated. Please use the static convertDot method to convert DOT into vis.network format and use the normal data format with nodes and edges. This converter is used like this: var data = vis.network.convertDot(dotString);");const e=IY(n.dot);this.setData(e);return}else if(n&&n.gephi){console.warn("The gephi property has been deprecated. Please use the static convertGephi method to convert gephi into vis.network format and use the normal data format with nodes and edges. This converter is used like this: var data = vis.network.convertGephi(gephiJson);");const e=lY(n.gephi);this.setData(e);return}else this.nodesHandler.setData(n&&n.nodes,!0),this.edgesHandler.setData(n&&n.edges,!0);this.body.emitter.emit("_dataChanged"),this.body.emitter.emit("_dataLoaded"),this.body.emitter.emit("initPhysics")},ve.prototype.destroy=function(){this.body.emitter.emit("destroy"),this.body.emitter.off(),this.off(),delete this.groups,delete this.canvas,delete this.selectionHandler,delete this.interactionHandler,delete this.view,delete this.renderer,delete this.physics,delete this.layoutEngine,delete this.clustering,delete this.manipulation,delete this.nodesHandler,delete this.edgesHandler,delete this.configurator,delete this.images;for(const n in this.body.nodes)Object.prototype.hasOwnProperty.call(this.body.nodes,n)&&delete this.body.nodes[n];for(const n in this.body.edges)Object.prototype.hasOwnProperty.call(this.body.edges,n)&&delete this.body.edges[n];zg(this.body.container)},ve.prototype._updateValueRange=function(n){let e,t,i,o=0;for(e in n)if(Object.prototype.hasOwnProperty.call(n,e)){const r=n[e].getValue();r!==void 0&&(t=t===void 0?r:Math.min(r,t),i=i===void 0?r:Math.max(r,i),o+=r)}if(t!==void 0&&i!==void 0)for(e in n)Object.prototype.hasOwnProperty.call(n,e)&&n[e].setValueRange(t,i,o)},ve.prototype.isActive=function(){return!this.activator||this.activator.active},ve.prototype.setSize=function(){return this.canvas.setSize.apply(this.canvas,arguments)},ve.prototype.canvasToDOM=function(){return this.canvas.canvasToDOM.apply(this.canvas,arguments)},ve.prototype.DOMtoCanvas=function(){return this.canvas.DOMtoCanvas.apply(this.canvas,arguments)},ve.prototype.findNode=function(){return this.clustering.findNode.apply(this.clustering,arguments)},ve.prototype.isCluster=function(){return this.clustering.isCluster.apply(this.clustering,arguments)},ve.prototype.openCluster=function(){return this.clustering.openCluster.apply(this.clustering,arguments)},ve.prototype.cluster=function(){return this.clustering.cluster.apply(this.clustering,arguments)},ve.prototype.getNodesInCluster=function(){return this.clustering.getNodesInCluster.apply(this.clustering,arguments)},ve.prototype.clusterByConnection=function(){return this.clustering.clusterByConnection.apply(this.clustering,arguments)},ve.prototype.clusterByHubsize=function(){return this.clustering.clusterByHubsize.apply(this.clustering,arguments)},ve.prototype.updateClusteredNode=function(){return this.clustering.updateClusteredNode.apply(this.clustering,arguments)},ve.prototype.getClusteredEdges=function(){return this.clustering.getClusteredEdges.apply(this.clustering,arguments)},ve.prototype.getBaseEdge=function(){return this.clustering.getBaseEdge.apply(this.clustering,arguments)},ve.prototype.getBaseEdges=function(){return this.clustering.getBaseEdges.apply(this.clustering,arguments)},ve.prototype.updateEdge=function(){return this.clustering.updateEdge.apply(this.clustering,arguments)},ve.prototype.clusterOutliers=function(){return this.clustering.clusterOutliers.apply(this.clustering,arguments)},ve.prototype.getSeed=function(){return this.layoutEngine.getSeed.apply(this.layoutEngine,arguments)},ve.prototype.enableEditMode=function(){return this.manipulation.enableEditMode.apply(this.manipulation,arguments)},ve.prototype.disableEditMode=function(){return this.manipulation.disableEditMode.apply(this.manipulation,arguments)},ve.prototype.addNodeMode=function(){return this.manipulation.addNodeMode.apply(this.manipulation,arguments)},ve.prototype.editNode=function(){return this.manipulation.editNode.apply(this.manipulation,arguments)},ve.prototype.editNodeMode=function(){return console.warn("Deprecated: Please use editNode instead of editNodeMode."),this.manipulation.editNode.apply(this.manipulation,arguments)},ve.prototype.addEdgeMode=function(){return this.manipulation.addEdgeMode.apply(this.manipulation,arguments)},ve.prototype.editEdgeMode=function(){return this.manipulation.editEdgeMode.apply(this.manipulation,arguments)},ve.prototype.deleteSelected=function(){return this.manipulation.deleteSelected.apply(this.manipulation,arguments)},ve.prototype.getPositions=function(){return this.nodesHandler.getPositions.apply(this.nodesHandler,arguments)},ve.prototype.getPosition=function(){return this.nodesHandler.getPosition.apply(this.nodesHandler,arguments)},ve.prototype.storePositions=function(){return this.nodesHandler.storePositions.apply(this.nodesHandler,arguments)},ve.prototype.moveNode=function(){return this.nodesHandler.moveNode.apply(this.nodesHandler,arguments)},ve.prototype.getBoundingBox=function(){return this.nodesHandler.getBoundingBox.apply(this.nodesHandler,arguments)},ve.prototype.getConnectedNodes=function(n){return this.body.nodes[n]!==void 0?this.nodesHandler.getConnectedNodes.apply(this.nodesHandler,arguments):this.edgesHandler.getConnectedNodes.apply(this.edgesHandler,arguments)},ve.prototype.getConnectedEdges=function(){return this.nodesHandler.getConnectedEdges.apply(this.nodesHandler,arguments)},ve.prototype.startSimulation=function(){return this.physics.startSimulation.apply(this.physics,arguments)},ve.prototype.stopSimulation=function(){return this.physics.stopSimulation.apply(this.physics,arguments)},ve.prototype.stabilize=function(){return this.physics.stabilize.apply(this.physics,arguments)},ve.prototype.getSelection=function(){return this.selectionHandler.getSelection.apply(this.selectionHandler,arguments)},ve.prototype.setSelection=function(){return this.selectionHandler.setSelection.apply(this.selectionHandler,arguments)},ve.prototype.getSelectedNodes=function(){return this.selectionHandler.getSelectedNodeIds.apply(this.selectionHandler,arguments)},ve.prototype.getSelectedEdges=function(){return this.selectionHandler.getSelectedEdgeIds.apply(this.selectionHandler,arguments)},ve.prototype.getNodeAt=function(){const n=this.selectionHandler.getNodeAt.apply(this.selectionHandler,arguments);return n!==void 0&&n.id!==void 0?n.id:n},ve.prototype.getEdgeAt=function(){const n=this.selectionHandler.getEdgeAt.apply(this.selectionHandler,arguments);return n!==void 0&&n.id!==void 0?n.id:n},ve.prototype.selectNodes=function(){return this.selectionHandler.selectNodes.apply(this.selectionHandler,arguments)},ve.prototype.selectEdges=function(){return this.selectionHandler.selectEdges.apply(this.selectionHandler,arguments)},ve.prototype.unselectAll=function(){this.selectionHandler.unselectAll.apply(this.selectionHandler,arguments),this.selectionHandler.commitWithoutEmitting.apply(this.selectionHandler),this.redraw()},ve.prototype.redraw=function(){return this.renderer.redraw.apply(this.renderer,arguments)},ve.prototype.getScale=function(){return this.view.getScale.apply(this.view,arguments)},ve.prototype.getViewPosition=function(){return this.view.getViewPosition.apply(this.view,arguments)},ve.prototype.fit=function(){return this.view.fit.apply(this.view,arguments)},ve.prototype.moveTo=function(){return this.view.moveTo.apply(this.view,arguments)},ve.prototype.focus=function(){return this.view.focus.apply(this.view,arguments)},ve.prototype.releaseNode=function(){return this.view.releaseNode.apply(this.view,arguments)},ve.prototype.getOptionsFromConfigurator=function(){let n={};return this.configurator&&(n=this.configurator.getOptions.apply(this.configurator)),n};function NJ(n,e){n.on("click",t=>{e.onHover(null),t.edges.length===0&&e.onHoverEdge(null);const i=t.nodes[0];i!==void 0?e.onFocus(String(i)):e.onClear()}),n.on("doubleClick",t=>{const i=t.nodes[0];if(i!==void 0){e.onOpenSource(String(i));return}const o=t.edges[0];o!==void 0&&e.onOpenRelationshipSource(String(o))}),n.on("hoverNode",t=>{t.node!==void 0&&(e.onInteractionStart(),e.onHoverEdge(null),e.onHover({nodeId:String(t.node),x:t.pointer.DOM.x,y:t.pointer.DOM.y}))}),n.on("blurNode",()=>e.onHover(null)),n.on("hoverEdge",t=>{t.edge!==void 0&&(e.onHover(null),e.onHoverEdge({edgeId:String(t.edge),x:t.pointer.DOM.x,y:t.pointer.DOM.y}))}),n.on("blurEdge",()=>e.onHoverEdge(null)),n.on("dragStart",()=>{e.onInteractionStart(),e.onHover(null),e.onHoverEdge(null)}),n.on("zoom",()=>{e.onHover(null),e.onHoverEdge(null)})}const DJ=1e3,MJ=4e3,Bu=4e3;function RJ(n){return n.nodes.length>=DJ||n.edges.length>=MJ?"static":"interactive"}function kJ(n,e=!1){if(e)return BJ(n);const t=new Map;for(const h of n){const p=t.get(h.community)??[];p.push(h),t.set(h.community,p)}const i=[...t.entries()].sort(([h],[p])=>h-p).map(([h,p])=>({community:h,members:p.sort((m,b)=>m.id.localeCompare(b.id))})),o=i.reduce((h,p)=>Math.max(h,p.members.length),1),r=Math.max(1,Math.ceil(Math.sqrt(i.length))),A=Math.max(1,Math.ceil(i.length/r)),I=Math.max(280,Math.ceil(Math.sqrt(o))*48),l=Math.PI*(3-Math.sqrt(5)),c=new Map;return i.forEach((h,p)=>{const m=p%r,b=Math.floor(p/r),w=(m-(r-1)/2)*I,O=(b-(A-1)/2)*I;h.members.forEach((x,S)=>{if(S===0){c.set(x.id,{x:w,y:O});return}const E=24*Math.sqrt(S),_=S*l;c.set(x.id,{x:w+Math.cos(_)*E,y:O+Math.sin(_)*E})})}),c}function zJ(n,e,t=!1){const i=[...n].sort((o,r)=>o.community-r.community||(r.degree??0)-(o.degree??0)||o.id.localeCompare(r.id));if(e==="circle"){const o=Math.max(160,i.length*44/(2*Math.PI));return new Map(i.map((r,A)=>{const I=-Math.PI/2+A*2*Math.PI/Math.max(1,i.length);return[r.id,{x:Math.cos(I)*o,y:Math.sin(I)*o}]}))}if(e==="concentric"){const o=[...n].sort((r,A)=>(A.degree??0)-(r.degree??0)||(A.memberCount??0)-(r.memberCount??0)||r.community-A.community||r.id.localeCompare(A.id));return jJ(o)}return e==="hierarchical"?_J(i):e==="spiral"?ZJ(i):PJ(i,t)}function _J(n){const e=new Map;for(const o of n){const r=o.depth??(o.root?0:1),A=e.get(r)??[];A.push(o),e.set(r,A)}const t=[...e.entries()].sort(([o],[r])=>o-r),i=new Map;for(const[o,r]of t){r.sort((I,l)=>Number(l.root??!1)-Number(I.root??!1)||(l.degree??0)-(I.degree??0)||I.id.localeCompare(l.id));const A=148;r.forEach((I,l)=>i.set(I.id,{x:(l-(r.length-1)/2)*A,y:o*168}))}return i}function jJ(n){const e=new Map,t=n[0];if(!t)return e;e.set(t.id,{x:0,y:0});let i=1,o=1;for(;i{if(o===0)return[i.id,{x:0,y:0}];const r=36*Math.sqrt(o),A=o*.52;return[i.id,{x:Math.cos(A)*r,y:Math.sin(A)*r}]}))}function PJ(n,e){const r=new Map;n.forEach((w,O)=>{const x=e?Math.floor(O/16):w.community,S=r.get(x)??[];S.push(w),r.set(x,S)});const A=[...r.entries()].sort(([w],[O])=>w-O).map(([w,O])=>{const x=Math.max(1,Math.ceil(Math.sqrt(O.length))),S=Math.max(1,Math.ceil(O.length/x));return{key:w,members:O,columns:x,rows:S,width:(x-1)*56,height:(S-1)*56}}),I=Math.max(1,Math.ceil(Math.sqrt(A.length))),l=Math.max(1,Math.ceil(A.length/I)),c=Array.from({length:I},()=>0),h=Array.from({length:l},()=>0);A.forEach((w,O)=>{const x=O%I,S=Math.floor(O/I);c[x]=Math.max(c[x]??0,w.width),h[S]=Math.max(h[S]??0,w.height)});const p=Wx(c,112),m=Wx(h,112),b=new Map;return A.forEach((w,O)=>{const x=O%I,S=Math.floor(O/I);w.members.forEach((E,_)=>{const j=Math.floor(_/w.columns),X=Math.min(w.columns,w.members.length-j*w.columns),ne=_%w.columns;b.set(E.id,{x:(p[x]??0)+(ne-(X-1)/2)*56,y:(m[S]??0)+(j-(w.rows-1)/2)*56})})}),b}function Wx(n,e){let i=-(n.reduce((o,r)=>o+r,0)+Math.max(0,n.length-1)*e)/2;return n.map(o=>{const r=i+o/2;return i+=o+e,r})}function Qx(n){if(!n.stats.aggregated||n.edges.length<=Bu)return n.edges;const e=[...n.edges].sort((A,I)=>(I.weight??Xx(I.relation))-(A.weight??Xx(A.relation))||A.source.localeCompare(I.source)||A.target.localeCompare(I.target)||A.id.localeCompare(I.id)),t=new Map(n.nodes.map(A=>[A.id,A.id])),i=A=>{let I=t.get(A)??A;for(;t.get(I)!==void 0&&t.get(I)!==I;)I=t.get(I);let l=A;for(;t.get(l)!==void 0&&t.get(l)!==I;){const c=t.get(l);t.set(l,I),l=c}return I},o=[],r=new Set;for(const A of e){const I=i(A.source),l=i(A.target);if(I!==l&&(t.set(l,I),o.push(A),r.add(A.id),o.length===Bu))return o}for(const A of e)if(!r.has(A.id)&&(o.push(A),o.length===Bu))break;return o}function Xx(n){const e=Number.parseInt(n,10);return Number.isFinite(e)&&e>0?e:1}function BJ(n){const e=[...n].sort((o,r)=>(r.degree??0)-(o.degree??0)||(r.memberCount??0)-(o.memberCount??0)||o.id.localeCompare(r.id)),t=Math.PI*(3-Math.sqrt(5)),i=34;return new Map(e.map((o,r)=>{if(r===0)return[o.id,{x:0,y:0}];const A=i*Math.sqrt(r),I=r*t;return[o.id,{x:Math.cos(I)*A,y:Math.sin(I)*A}]}))}const hI=176,fI=108,$x=8,LJ=1500,GJ=2e3;function FJ(n){const e=[...n.positions.values()],t=n.viewport.left+n.viewport.width,i=n.viewport.top+n.viewport.height,o=[...e.map(F=>F.x),n.viewport.left,t],r=[...e.map(F=>F.y),n.viewport.top,i],A=Math.min(...o),I=Math.max(...o),l=Math.min(...r),c=Math.max(...r),h=Math.max(1,I-A),p=Math.max(1,c-l),m=hI-$x*2,b=fI-$x*2,w=Math.min(m/h,b/p),O=h*w,x=p*w,S=(hI-O)/2,E=(fI-x)/2,_=({x:F,y:V})=>({x:S+(F-A)*w,y:E+(V-l)*w}),j=({x:F,y:V})=>({x:A+(F-S)/w,y:l+(V-E)/w}),X=_({x:n.viewport.left,y:n.viewport.top}),ne=_({x:t,y:i});return{project:_,unproject:j,viewport:{x:X.x,y:X.y,width:ne.x-X.x,height:ne.y-X.y}}}function VJ({model:n,snapshot:e,visibleNodeIds:t,visibleEdgeIds:i,focusedNodeId:o,semanticDetail:r=!1,onNavigate:A}){const I=L.useMemo(()=>FJ(e),[e]),l=L.useMemo(()=>n.nodes.filter(b=>!t||t.has(b.id)).sort((b,w)=>b.id.localeCompare(w.id)),[n.nodes,t]),c=l.slice(0,LJ),h=L.useMemo(()=>n.edges.filter(b=>(!i||i.has(b.id))&&(!t||t.has(b.source)&&t.has(b.target))).sort((b,w)=>b.id.localeCompare(w.id)).slice(0,GJ),[n.edges,i,t]),p=L.useMemo(()=>new Map(n.communities.map(b=>[b.id,b.color])),[n.communities]),m=b=>{const w=b.currentTarget.getBoundingClientRect();w.width<=0||w.height<=0||A(I.unproject({x:(b.clientX-w.left)/w.width*hI,y:(b.clientY-w.top)/w.height*fI}))};return f.jsxs("aside",{className:"compass-minimap compass-glass-panel","aria-label":"Graph overview",children:[f.jsxs("header",{children:[f.jsx("span",{children:"Map"}),f.jsx("small",{children:c.length{const w=e.positions.get(b.source),O=e.positions.get(b.target);if(!w||!O)return null;const x=I.project(w),S=I.project(O);return f.jsx("line",{x1:x.x,y1:x.y,x2:S.x,y2:S.y},b.id)})}),f.jsx("g",{className:"compass-minimap-nodes",children:c.map(b=>{const w=e.positions.get(b.id);if(!w)return null;const O=I.project(w);return f.jsx("circle",{cx:O.x,cy:O.y,r:b.id===o?3:1.65,fill:r?z_(cs(b.kind)):b.color?.background??p.get(b.community)??"currentColor","data-node-category":r?cs(b.kind):void 0,"data-focused":b.id===o?"true":void 0},b.id)})}),f.jsx("rect",{className:"compass-minimap-viewport",x:I.viewport.x,y:I.viewport.y,width:I.viewport.width,height:I.viewport.height,rx:"2"})]})})]})}const qx={added:{background:"#163d24",border:"#56d364"},removed:{background:"#4b1f24",border:"#ff7b72"},changed:{background:"#3d3015",border:"#d7a72b"},unchanged:{background:"#29313b",border:"#8b949e"}},UJ={callable:{background:"#193652",border:"#5fa8ff"},type:{background:"#3d341b",border:"#e3b341"},module:{background:"#193b38",border:"#56d4b4"},boundary:{background:"#432b29",border:"#ff9b87"},other:{background:"#29313b",border:"#8b949e"}},YJ={execution:"#5fa8ff",dependency:"#56d4b4",structure:"#e3b341",flow:"#ff9b87",other:"#60728b"},HJ=200,KJ=1500,Jx=.1,WJ=3,QJ=18,XJ=96,$J=1500;function qJ(n,e){const t=[...e].sort().slice(0,$J),i=n.getPositions(t),o=Object.values(i),r=o.length===0?0:Math.max(Math.max(...o.map(({x:l})=>l))-Math.min(...o.map(({x:l})=>l)),Math.max(...o.map(({y:l})=>l))-Math.min(...o.map(({y:l})=>l))),A=Math.min(XJ,Math.max(QJ,r*.012)),I=Math.PI*(3-Math.sqrt(5));t.forEach((l,c)=>{const h=i[l];if(!h)return;const p=c*I;n.moveNode(l,h.x+Math.cos(p)*A,h.y+Math.sin(p)*A)})}function Hs(n){return window.matchMedia("(prefers-reduced-motion: reduce)").matches?!1:{duration:n,easingFunction:"easeInOutQuad"}}const JJ={autoResize:!0,interaction:{hover:!0,tooltipDelay:100,hideEdgesOnDrag:!0,navigationButtons:!1,keyboard:{enabled:!0}},layout:{improvedLayout:!0},nodes:{borderWidth:1.5,shape:"dot"},edges:{arrows:{to:{enabled:!0,scaleFactor:.5}},smooth:{enabled:!0,type:"continuous",roundness:.2},selectionWidth:3},physics:{enabled:!0,solver:"forceAtlas2Based",stabilization:{enabled:!0,iterations:200,fit:!0,updateInterval:20},forceAtlas2Based:{gravitationalConstant:-60,centralGravity:.005,springLength:120,springConstant:.08,damping:.4,avoidOverlap:.8}}},eee={autoResize:!0,interaction:{hover:!0,tooltipDelay:100,hideEdgesOnDrag:!0,navigationButtons:!1,keyboard:{enabled:!0}},layout:{improvedLayout:!0,randomSeed:17},nodes:{borderWidth:2,shape:"dot"},edges:{arrows:{to:{enabled:!0,scaleFactor:.38}},smooth:{enabled:!0,type:"continuous",roundness:.14},selectionWidth:3},physics:{enabled:!0,solver:"barnesHut",stabilization:{enabled:!0,iterations:520,fit:!0,updateInterval:25},maxVelocity:35,minVelocity:.55,barnesHut:{theta:.45,gravitationalConstant:-12e3,centralGravity:.12,springLength:180,springConstant:.025,damping:.3,avoidOverlap:.85}}},tee={autoResize:!0,interaction:{hover:!0,tooltipDelay:100,hideEdgesOnDrag:!0,hideEdgesOnZoom:!0,hoverConnectedEdges:!1,selectConnectedEdges:!1,navigationButtons:!1,keyboard:{enabled:!0}},layout:{improvedLayout:!1,randomSeed:17},nodes:{borderWidth:1.5,shape:"dot"},edges:{arrows:{to:{enabled:!1}},chosen:!1,smooth:!1,selectionWidth:3},physics:{enabled:!1,solver:"barnesHut"}};function e2(n,e,t,i,o,r){if(e.groundingStatus==="GROUNDED")return{background:"#153d3a",border:e.challenged?"#fbbf24":"#5eead4"};const A=e.change&&i?i[e.change]:void 0,I=r?.[cs(e.kind)],l=A?A.background:I?.background??e.color?.background??o?.get(e.community)??n.communities.find(c=>c.id===e.community)?.color??"#6688aa";return{background:l,border:t??A?.border??I?.border??e.color?.border??l}}function _t(n,e){return typeof window>"u"?e:getComputedStyle(document.documentElement).getPropertyValue(n).trim()||e}function nee(n){return n==="extracted"?{dashes:!1,width:2,opacity:.7}:n==="ambiguous"?{dashes:[3,4],width:2,opacity:.62}:n==="aggregated"?{dashes:!1,width:1,opacity:.2}:{dashes:!0,width:1,opacity:.35}}function t2(n,e,t,i){if(n==="added")return{color:i.added.border,dashes:!1,width:1.7,opacity:.6};if(n==="removed")return{color:i.removed.border,dashes:[6,5],width:1.6,opacity:.56};if(n==="changed")return{color:i.changed.border,dashes:!1,width:1.65,opacity:.48};if(n==="unchanged")return{color:i.unchanged.border,dashes:!0,width:1,opacity:.2};const o=nee(e);return{color:t,...o}}function n2(n,e){return n.challenged?{color:"#fbbf24",dashes:[3,3],width:2.5,opacity:.9}:n.groundingStatus==="GROUNDED"?{color:"#5eead4",dashes:[7,4],width:2.3,opacity:.86}:e}function iee(n){return n==="added"?{enabled:!0,type:"curvedCW",roundness:.13}:n==="removed"?{enabled:!0,type:"curvedCCW",roundness:.13}:{enabled:!0,type:"continuous",roundness:.1}}function gee(n){const e=new Map;for(const r of[...n].sort((A,I)=>A.id.localeCompare(I.id))){const A=r.change??"unchanged",I=e.get(A)??[];I.push(r),e.set(A,I)}const t={added:-300,changed:0,removed:300,unchanged:0},i=new Map,o=Math.PI*(3-Math.sqrt(5));for(const[r,A]of e)A.forEach((I,l)=>{const c=l*o,h=r==="unchanged"?210+Math.sqrt(l)*34:42+Math.sqrt(l)*40;i.set(I.id,{x:t[r]+Math.cos(c)*h,y:Math.sin(c)*h})});return i}function oee(){const[n,e]=L.useState(0);return L.useEffect(()=>{const t=()=>e(r=>r+1),i=new MutationObserver(t);i.observe(document.documentElement,{attributes:!0,attributeFilter:["class","style"]}),i.observe(document.body,{attributes:!0,attributeFilter:["class","style"]});const o=window.matchMedia("(prefers-color-scheme: dark)");return o.addEventListener("change",t),()=>{i.disconnect(),o.removeEventListener("change",t)}},[]),n}function Lu(n){const e=n.match(/^#([\da-f]{3}|[\da-f]{6})$/i)?.[1];if(e){const i=e.length===3?[...e].map(o=>`${o}${o}`).join(""):e;return[Number.parseInt(i.slice(0,2),16),Number.parseInt(i.slice(2,4),16),Number.parseInt(i.slice(4,6),16)]}const t=n.match(/^rgba?\(\s*([\d.]+)[,\s]+([\d.]+)[,\s]+([\d.]+)/i);if(t)return[Number.parseFloat(t[1]??"0"),Number.parseFloat(t[2]??"0"),Number.parseFloat(t[3]??"0")]}function see(n,e,t){const i=Lu(n),o=Lu(e);if(!i||!o)return e;const r=i.map((A,I)=>Math.round(A*(1-t)+o[I]*t));return`rgb(${r[0]}, ${r[1]}, ${r[2]})`}function i2(n){const e=Lu(n);return e?(e[0]*299+e[1]*587+e[2]*114)/1e3<145:!0}function Ks(n,e,t,i=!1){return{background:see(n,e,i?t?.18:.1:t?.26:.14),border:e}}const ree=L.forwardRef(function({model:e,focusedNodeId:t,physicsRunning:i,layoutStyle:o="automatic",initialPositions:r,forceLabels:A,showEdgeLabels:I=!1,isolatedNodeIds:l,isolatedEdgeIds:c,layoutSpacing:h=1,showMinimap:p=!1,semanticDetail:m=!1,hiddenCommunities:b,hiddenChanges:w,onFocus:O,onOpenSource:x,onOpenRelationshipSource:S,onInteractionStart:E=()=>{},onHover:_,onHoverEdge:j,onClear:X,onStabilized:ne},F){const V=L.useRef(null),Ie=L.useRef(null),[Ee,Ze]=L.useState(null),xe=L.useRef(i);xe.current=i;const He=L.useRef(i),Fe=L.useRef({onFocus:O,onOpenSource:x,onOpenRelationshipSource:S,onInteractionStart:E,onHover:_,onHoverEdge:j,onClear:X});Fe.current={onFocus:O,onOpenSource:x,onOpenRelationshipSource:S,onInteractionStart:E,onHover:_,onHoverEdge:j,onClear:X};const le=L.useRef(ne);le.current=ne;const R=L.useRef(null),Q=L.useRef(h),H=oee(),ge=L.useMemo(()=>RJ(e),[e.edges.length,e.nodes.length]),ee=L.useMemo(()=>Qx(e),[e]),T=L.useMemo(()=>new Set(e.nodes.filter(Y=>!b.has(Y.community)&&!w.has(Y.change??"unchanged")&&(!l||l.has(Y.id))).map(Y=>Y.id)),[w,b,l,e.nodes]),U=L.useMemo(()=>new Set(ee.filter(Y=>T.has(Y.source)&&T.has(Y.target)&&(!c||c.has(Y.id))).map(Y=>Y.id)),[c,ee,T]),ie=L.useRef(T);ie.current=T;const ae=L.useCallback(()=>{const Y=Ie.current,Ae=V.current;if(!Y||!Ae)return;const We=Y.getPositions([...ie.current].sort().slice(0,KJ)),Et=Y.getViewPosition(),wt=Math.max(Jx,Y.getScale()),Rn=Math.max(1,Ae.clientWidth)/wt,EI=Math.max(1,Ae.clientHeight)/wt;Ze({positions:new Map(Object.entries(We)),viewport:{left:Et.x-Rn/2,top:Et.y-EI/2,width:Rn,height:EI}})},[]),ue=L.useMemo(()=>{let Y=1;for(const Ae of e.nodes)Y=Math.max(Y,Ae.degree??1);return Y},[e.nodes]),me=L.useMemo(()=>new Map(e.communities.map(Y=>[Y.id,Y.color])),[e.communities]),Le=L.useMemo(()=>_t("--vscode-editor-foreground",_t("--foreground","#eef5ff")),[H]),ut=L.useMemo(()=>_t("--vscode-descriptionForeground",_t("--muted-foreground","#60728b")),[H]),_e=L.useMemo(()=>_t("--vscode-editor-foreground",_t("--foreground","#d8e4f2")),[H]),en=L.useMemo(()=>{const Y=_t("--vscode-editor-background",_t("--background","#08111f")),Ae=i2(Y);return{added:Ks(Y,_t("--vscode-gitDecoration-addedResourceForeground",Ae?"#56d364":"#1a7f37"),Ae),removed:Ks(Y,_t("--vscode-gitDecoration-deletedResourceForeground",Ae?"#ff7b72":"#cf222e"),Ae),changed:Ks(Y,_t("--vscode-gitDecoration-modifiedResourceForeground",Ae?"#d7a72b":"#9a6700"),Ae),unchanged:Ks(Y,_t("--vscode-descriptionForeground",Ae?"#8b949e":"#656d76"),Ae,!0)}},[H]),pn=L.useMemo(()=>{const Y=_t("--vscode-editor-background",_t("--background","#08111f")),Ae=i2(Y),We=(Et,wt,Rn)=>Ks(Y,_t(Et,Ae?wt:Rn),Ae);return{callable:We("--vscode-symbolIcon-functionForeground","#5fa8ff","#0969da"),type:We("--vscode-symbolIcon-classForeground","#e3b341","#9a6700"),module:We("--vscode-symbolIcon-moduleForeground","#56d4b4","#168b76"),boundary:We("--vscode-symbolIcon-eventForeground","#ff9b87","#cf4c35"),other:Ks(Y,_t("--vscode-descriptionForeground",Ae?"#8b949e":"#656d76"),Ae,!0)}},[H]),k=L.useMemo(()=>({execution:_t("--vscode-symbolIcon-functionForeground","#5fa8ff"),dependency:_t("--vscode-symbolIcon-moduleForeground","#56d4b4"),structure:_t("--vscode-symbolIcon-classForeground","#e3b341"),flow:_t("--vscode-symbolIcon-eventForeground","#ff9b87"),other:ut}),[ut,H]),de=L.useMemo(()=>e.nodes.some(Y=>Y.change!==void 0)||e.edges.some(Y=>Y.change!==void 0),[e.edges,e.nodes]),Oe=L.useMemo(()=>new Set(de?e.nodes.filter(Y=>Y.change!=="unchanged").sort((Y,Ae)=>(Ae.degree??0)-(Y.degree??0)||Y.id.localeCompare(Ae.id)).slice(0,12).map(Y=>Y.id):ge==="static"?[...e.nodes].sort((Y,Ae)=>(Ae.degree??0)-(Y.degree??0)||Y.id.localeCompare(Ae.id)).slice(0,20).map(Y=>Y.id):[]),[de,e.nodes,ge]),Je=L.useMemo(()=>ge==="static"?new Set([...e.nodes].sort((Y,Ae)=>(Ae.degree??0)-(Y.degree??0)||Y.id.localeCompare(Ae.id)).slice(0,HJ).map(Y=>Y.id)):new Set,[e.nodes,ge]),Dt=L.useMemo(()=>de?gee(e.nodes):new Map,[de,e.nodes]),Bt=o==="automatic"?1:h,re=L.useMemo(()=>o==="automatic"?new Map:zJ(e.nodes,o,e.stats.aggregated),[o,e.nodes,e.stats.aggregated]),Me=L.useMemo(()=>ge==="static"&&!de?kJ(e.nodes,e.stats.aggregated):new Map,[de,e.nodes,e.stats.aggregated,ge]),ze=L.useMemo(()=>typeof document>"u"?void 0:document.body.classList.contains("vscode-high-contrast")||document.body.classList.contains("vscode-high-contrast-light")?_t("--vscode-contrastBorder","#ffffff"):void 0,[H]),Lt=L.useMemo(()=>new Vs(e.nodes.map(Y=>{const Ae=Y.size??Math.min(40,10+30*(Y.degree??1)/ue),We=de?Y.change==="unchanged"?7+5*Math.sqrt((Y.degree??1)/ue):11+12*Math.sqrt((Y.degree??1)/ue):Ae,Et=re.get(Y.id)??Dt.get(Y.id)??r?.get(Y.id)??Me.get(Y.id),wt=Et?{x:Et.x*Bt,y:Et.y*Bt}:void 0;return{id:Y.id,label:Y.label,color:e2(e,Y,void 0,qx,me,m?UJ:void 0),shape:m?k_(cs(Y.kind)):"dot",size:We,...wt??{},opacity:Y.change==="unchanged"?.58:1,font:{color:"#eef5ff",face:"system-ui",size:de||ge==="static"?Oe.has(Y.id)?12:0:(Y.degree??1)>=ue*.15?12:0}}})),[Oe,de,Dt,me,r,Bt,ue,e,ge,m,re,Me]),Sn=L.useMemo(()=>new Vs(ee.map(Y=>{const Ae=n2(Y,t2(Y.change,Y.confidence,m?YJ[hc(Y.relation)]:"#60728b",qx));return{id:Y.id,from:Y.source,to:Y.target,dashes:Ae.dashes,width:Ae.width,...de&&ge!=="static"?{smooth:iee(Y.change)}:{},color:{color:Ae.color,opacity:Ae.opacity}}})),[de,ee,ge,m]);return L.useEffect(()=>{const Y=V.current;if(!Y)return;R.current=null;const Ae=new ve(Y,{nodes:Lt,edges:Sn},ge==="static"?tee:de?eee:JJ);Ae.setOptions({physics:{enabled:xe.current}}),xe.current||Ae.stopSimulation(),Ie.current=Ae,NJ(Ae,{onFocus:wt=>Fe.current.onFocus(wt),onOpenSource:wt=>Fe.current.onOpenSource(wt),onOpenRelationshipSource:wt=>Fe.current.onOpenRelationshipSource(wt),onInteractionStart:()=>{xe.current&&Ae.stopSimulation(),Fe.current.onInteractionStart()},onHover:wt=>Fe.current.onHover(wt),onHoverEdge:wt=>Fe.current.onHoverEdge(wt),onClear:()=>Fe.current.onClear()}),Ae.on("stabilizationIterationsDone",()=>{Ae.stopSimulation(),R.current={position:Ae.getViewPosition(),scale:Ae.getScale()},le.current(),ae()}),Ae.on("stabilized",ae),Ae.on("dragEnd",ae),Ae.on("zoom",ae),Ae.on("resize",ae),Ae.on("animationFinished",ae);const We=Dt.size>0||re.size>0||(r?.size??0)>0||Me.size>0;!xe.current&&We&&(Ae.stopSimulation(),Ae.fit({animation:!1}),R.current={position:Ae.getViewPosition(),scale:Ae.getScale()});const Et=window.setTimeout(ae,0);return()=>{window.clearTimeout(Et),Ae.destroy(),Ie.current=null}},[Sn,Lt,de,Dt,r,ge,re,Me,ae]),L.useEffect(()=>{const Y=Ie.current;if(!Y)return;const Ae=He.current;He.current=i,Y.setOptions({physics:{enabled:i}}),i?(Ae||qJ(Y,ie.current),Y.startSimulation()):Y.stopSimulation()},[Sn,Lt,i]),L.useEffect(()=>{const Y=Ie.current;if(!Y||o!=="automatic"||ge==="static")return;const Ae=Q.current;if(Q.current=h,Y.setOptions({physics:de?{barnesHut:{springLength:180*h}}:{forceAtlas2Based:{springLength:120*h}}}),!i&&Ae!==h){const We=h/Ae,Et=Y.getPositions();Lt.update(Object.entries(Et).map(([wt,Rn])=>({id:wt,x:Rn.x*We,y:Rn.y*We}))),Y.redraw(),ae()}},[de,h,o,Lt,i,ae,ge]),L.useEffect(()=>{Lt.update(e.nodes.map(Y=>({id:Y.id,hidden:!T.has(Y.id)}))),Sn.update(ee.map(Y=>({id:Y.id,hidden:!U.has(Y.id)}))),ae()},[Sn,ae,ee,e.nodes,Lt,U,T]),L.useEffect(()=>{const Y=Ie.current;if(!Y)return;const Ae=t?new Set(Y.getConnectedNodes(t).map(String)):new Set;if(Lt.update(e.nodes.map(We=>{const Et=We.id===t,wt=!t||Et||Ae.has(We.id),Rn=We.change==="unchanged"?.58:1;return{id:We.id,opacity:t?wt?Math.max(Rn,.72):.08:Rn,borderWidth:Et?4:ze?2.5:1.5,color:e2(e,We,ze,en,me,m?pn:void 0),shadow:Et?{enabled:!0,color:We.change?en[We.change].border:m?pn[cs(We.kind)].border:We.color?.background??me.get(We.community)??"#76b7ff",size:24,x:0,y:0}:{enabled:!1}}})),Sn.update(ee.map(We=>{const Et=n2(We,t2(We.change,We.confidence,m?k[hc(We.relation)]:ut,en)),wt=We.source===t||We.target===t;return{id:We.id,dashes:Et.dashes,color:{color:Et.color,opacity:t?wt?.92:.05:Et.opacity},width:wt?Math.max(3,Et.width):Et.width}})),t)if(Y.selectNodes([t]),xe.current)Y.focus(t,{scale:1.35,animation:window.matchMedia("(prefers-reduced-motion: reduce)").matches?!1:{duration:260,easingFunction:"easeInOutQuad"}});else{const We=Y.getPositions([t])[t];We&&Y.moveTo({position:We,scale:1.35,animation:!1})}else Y.unselectAll()},[ze,en,me,ut,Sn,t,e,Lt,ee,m,k,pn]),L.useEffect(()=>{Lt.update(e.nodes.map(Y=>({id:Y.id,font:{color:Le,size:A&&(ge!=="static"||Je.has(Y.id))||Y.id===t||(de||ge==="static"?Oe.has(Y.id):(Y.degree??1)>=ue*.15)?12:0}})))},[Oe,de,Je,t,A,Le,ue,e.nodes,Lt,ge]),L.useEffect(()=>{Sn.update(ee.map(Y=>({id:Y.id,label:I?Y.relation:"",font:{align:"middle",color:_e,face:"system-ui",size:10,strokeWidth:3,strokeColor:_t("--vscode-editor-background",_t("--background","#08111f"))}})))},[Sn,_e,ee,I]),L.useImperativeHandle(F,()=>({fit(){Ie.current?.fit({animation:Hs(280)})},fitSelection(Y){const Ae=Ie.current;!Ae||Y.length===0||Ae.fit({nodes:[...new Set(Y)],animation:Hs(240)})},reset(){const Y=Ie.current,Ae=R.current;if(Y){if(!Ae){Y.fit({animation:!1});return}Y.moveTo({position:Ae.position,scale:Ae.scale,animation:!1})}},resetZoom(){Ie.current?.moveTo({scale:1,animation:Hs(180)})},zoomIn(){const Y=Ie.current;Y&&Y.moveTo({scale:Math.min(WJ,Y.getScale()*1.25),animation:Hs(160)})},zoomOut(){const Y=Ie.current;Y&&Y.moveTo({scale:Math.max(Jx,Y.getScale()/1.25),animation:Hs(160)})}}),[]),f.jsxs(f.Fragment,{children:[f.jsx("div",{ref:V,className:"compass-canvas","data-rendering-profile":ge,"data-layout-style":o,"data-physics-running":i?"true":"false","data-isolated":l?"true":"false","data-layout-spacing":h,role:"region","aria-label":"Interactive Compass code graph",onMouseLeave:()=>{_(null),j(null)}}),p&&Ee?f.jsx(VJ,{model:e,snapshot:Ee,visibleNodeIds:T,visibleEdgeIds:U,focusedNodeId:t,semanticDetail:m,onNavigate:Y=>Ie.current?.moveTo({position:Y,animation:Hs(180)})}):null]})}),g2=1,o2=4;function aee(n){return Math.max(g2,Math.min(o2,Math.trunc(n)))}function Aee(n,e,t,i){const o=aee(t),r=new Map,A=new Map;for(const h of n.edges){const p=r.get(h.source)??[];p.push(h),r.set(h.source,p);const m=A.get(h.target)??[];m.push(h),A.set(h.target,m)}for(const h of[...r.values(),...A.values()])h.sort((p,m)=>p.id.localeCompare(m.id));const I=new Set([e]),l=new Set;let c=[e];for(let h=0;h0;h+=1){const p=new Set;for(const m of c.sort()){if(i!=="incoming")for(const b of r.get(m)??[])l.add(b.id),I.has(b.target)||p.add(b.target);if(i!=="outgoing")for(const b of A.get(m)??[])l.add(b.id),I.has(b.source)||p.add(b.source)}c=[...p];for(const m of c)I.add(m)}return{nodeIds:I,edgeIds:l}}const s2={focusedNodeId:null,physicsRunning:!1,layoutStyle:"automatic",initialLayoutPending:!1,forceLabels:!1,showEdgeLabels:!1,isolateSelection:!1,neighborhoodDepth:1,edgeDirection:"both",layoutSpacing:1,showMinimap:!0,hiddenCommunities:new Set,hiddenChanges:new Set,query:""};function Cee(n,e="automatic"){return e!=="automatic"?{...s2,layoutStyle:e,physicsRunning:!1,initialLayoutPending:!1}:{...s2,physicsRunning:!1,initialLayoutPending:!1}}function Iee(n,e){switch(e.type){case"focus":return{...n,focusedNodeId:e.nodeId,physicsRunning:!1};case"clearFocus":return{...n,focusedNodeId:null,isolateSelection:!1};case"stabilized":return n.physicsRunning||n.initialLayoutPending?{...n,physicsRunning:!1,initialLayoutPending:!1}:n;case"revealLayout":return{...n,physicsRunning:!1,initialLayoutPending:!1};case"setPhysics":return{...n,physicsRunning:e.running};case"setLayout":return{...n,layoutStyle:e.layout,physicsRunning:e.runPhysics,initialLayoutPending:!1};case"setLabels":return{...n,forceLabels:e.visible};case"setEdgeLabels":return{...n,showEdgeLabels:e.visible};case"setIsolation":return{...n,isolateSelection:e.isolated};case"setNeighborhoodDepth":return{...n,neighborhoodDepth:Math.max(1,Math.min(4,Math.trunc(e.depth)))};case"setEdgeDirection":return{...n,edgeDirection:e.direction};case"setLayoutSpacing":return{...n,layoutSpacing:e.spacing};case"setMinimap":return{...n,showMinimap:e.visible};case"search":return{...n,query:e.query};case"toggleCommunity":{const t=new Set(n.hiddenCommunities);return t.has(e.communityId)?t.delete(e.communityId):t.add(e.communityId),{...n,hiddenCommunities:t}}case"setHiddenCommunities":return{...n,hiddenCommunities:new Set(e.communityIds)};case"toggleChange":{const t=new Set(n.hiddenChanges);return t.has(e.change)?t.delete(e.change):t.add(e.change),{...n,hiddenChanges:t}}}}const lee=[{value:"added",label:"Added"},{value:"removed",label:"Removed"},{value:"changed",label:"Changed"},{value:"unchanged",label:"Context"}],cee={hierarchical:"Depth-layer layout",circle:"Circle layout",concentric:"Concentric layout",spiral:"Spiral layout",grid:"Square grid layout"},Gu=["both","outgoing","incoming"];function dee(n){return n instanceof HTMLElement&&(n.isContentEditable||n.tagName==="INPUT"||n.tagName==="TEXTAREA"||n.tagName==="SELECT")}function Fu({model:n,host:e,communityDetail:t,communityLoading:i,communityError:o,onBackToOverview:r,sourceRevisions:A,queryResult:I,initialInspectorLayout:l,onInspectorLayoutChange:c,preferredLayout:h="automatic",toolbarLeading:p,toolbarLeadingPanel:m,toolbarLeadingOpen:b,onToolbarLeadingClose:w,stageOverlay:O,showInspectorHeader:x=!0}){const[S,E]=L.useState(()=>zv(l)),_=L.useCallback(ne=>{const F=zv(ne);E(F),c?.(F)},[c]),j=t?.model??n,X=t?`community-${t.communityId}`:"overview";return f.jsx(uee,{model:j,host:e,detailCommunityId:t?.communityId,communityLoading:i,communityError:o,onBackToOverview:t?r:void 0,bounded:t?.bounded,sourceRevisions:A,queryResult:I,inspectorLayout:S,onInspectorLayoutChange:_,preferredLayout:h,toolbarLeading:p,toolbarLeadingPanel:m,toolbarLeadingOpen:b,onToolbarLeadingClose:w,stageOverlay:O,showInspectorHeader:x},X)}function uee({model:n,host:e,detailCommunityId:t,communityLoading:i,communityError:o,onBackToOverview:r,bounded:A,sourceRevisions:I,queryResult:l,inspectorLayout:c,onInspectorLayoutChange:h,preferredLayout:p,toolbarLeading:m,toolbarLeadingPanel:b,toolbarLeadingOpen:w,onToolbarLeadingClose:O,stageOverlay:x,showInspectorHeader:S}){const[E,_]=L.useReducer(Iee,n,re=>Cee(re,p)),[j,X]=L.useState(null),[ne,F]=L.useState(null),V=L.useRef(null),Ie=L.useRef(e);Ie.current=e;const Ee=L.useMemo(()=>new Map(n.nodes.map(re=>[re.id,re])),[n.nodes]),Ze=L.useMemo(()=>new Map(n.edges.map(re=>[re.id,re])),[n.edges]),xe=L.useMemo(()=>{const re=new Map,Me=new Map;for(const ze of n.edges){const Lt=re.get(ze.source)??new Set;Lt.add(ze.target),re.set(ze.source,Lt);const Sn=re.get(ze.target)??new Set;Sn.add(ze.source),re.set(ze.target,Sn);const Y=Me.get(ze.source)??[];Y.push(ze),Me.set(ze.source,Y);const Ae=Me.get(ze.target)??[];Ae.push(ze),Me.set(ze.target,Ae)}return{neighborIds:re,edges:Me}},[n.edges]),He=L.useMemo(()=>n.nodes.map(re=>({node:re,text:[re.label,re.source?.file,re.kind].filter(Me=>Me!==void 0).join(` -`).toLocaleLowerCase()})),[n.nodes]),Fe=L.useMemo(()=>Qx(n).length,[n]),le=E.focusedNodeId?Ee.get(E.focusedNodeId):void 0,R=L.useMemo(()=>le?Aee(n,le.id,E.neighborhoodDepth,E.edgeDirection):null,[n,le,E.edgeDirection,E.neighborhoodDepth]),Q=j?Ee.get(j.nodeId):void 0,H=Q?_v(n,Q,t):void 0,ge=ne?Ze.get(ne.edgeId):void 0,ee=ge?Ee.get(ge.source):void 0,T=ge?Ee.get(ge.target):void 0,U=L.useMemo(()=>n.nodes.some(re=>re.change!==void 0)||n.edges.some(re=>re.change!==void 0),[n.edges,n.nodes]),ie=L.useMemo(()=>{const re=new Map;for(const Me of n.nodes){const ze=Me.change??"unchanged";re.set(ze,(re.get(ze)??0)+1)}return re},[n.nodes]),ae=L.useMemo(()=>le?[...xe.neighborIds.get(le.id)??[]].map(re=>Ee.get(re)).filter(re=>re!==void 0).sort((re,Me)=>re.label.localeCompare(Me.label)):[],[xe.neighborIds,Ee,le]),ue=L.useMemo(()=>le?xe.edges.get(le.id)??[]:[],[xe.edges,le]),me=L.useDeferredValue(E.query),Le=L.useMemo(()=>{const re=me.trim().toLocaleLowerCase();if(!re)return[];const Me=[];for(const ze of He)if(ze.text.includes(re)&&Me.push(ze.node),Me.length===20)break;return Me},[me,He]),ut=L.useCallback(re=>{X(null),F(null),_({type:"focus",nodeId:re})},[]),_e=L.useCallback(()=>{E.physicsRunning&&_({type:"setPhysics",running:!1})},[E.physicsRunning]),en=L.useCallback(()=>{X(null),F(null),_({type:"clearFocus"})},[]);L.useEffect(()=>{E.focusedNodeId&&!Ee.has(E.focusedNodeId)&&en()},[en,Ee,E.focusedNodeId]),L.useEffect(()=>{const re=Me=>{if(Me.metaKey||Me.ctrlKey||Me.altKey||dee(Me.target))return;const ze=Me.key.toLocaleLowerCase();let Lt=!0;if(ze==="f")Me.shiftKey&&R?V.current?.fitSelection([...R.nodeIds]):Me.shiftKey?Lt=!1:V.current?.fit();else if(ze==="+"||ze==="=")V.current?.zoomIn();else if(ze==="-"||ze==="_")V.current?.zoomOut();else if(ze==="0")V.current?.resetZoom();else if(ze==="i"&&le)_({type:"setIsolation",isolated:!E.isolateSelection});else if(ze==="[")_({type:"setNeighborhoodDepth",depth:Math.max(g2,E.neighborhoodDepth-1)});else if(ze==="]")_({type:"setNeighborhoodDepth",depth:Math.min(o2,E.neighborhoodDepth+1)});else if(ze==="d"){const Sn=Gu.indexOf(E.edgeDirection);_({type:"setEdgeDirection",direction:Gu[(Sn+1)%Gu.length]??"both"})}else ze==="m"?_({type:"setMinimap",visible:!E.showMinimap}):Lt=!1;Lt&&Me.preventDefault()};return document.addEventListener("keydown",re,{capture:!0}),()=>document.removeEventListener("keydown",re,{capture:!0})},[le,R,E.edgeDirection,E.isolateSelection,E.neighborhoodDepth,E.showMinimap]);const pn=L.useCallback(()=>{_({type:"stabilized"})},[]),k=L.useCallback(()=>{_({type:"revealLayout"})},[]),de=L.useCallback(re=>{const Me=Ee.get(re);if(!Me)return;const ze=_v(n,Me,t);ze.type==="community"&&Ie.current.openCommunity?.(ze.communityId),ze.type==="source"&&Ie.current.openSource(ze.source,Me.change==="removed"?I?.before:I?.after)},[t,Ee,n.stats.aggregated,I?.after,I?.before]),Oe=L.useCallback(re=>{const Me=Ze.get(re);if(!Me)return;const ze=yv(Me);ze&&Ie.current.openSource(ze,Me.change==="removed"?I?.before:I?.after)},[Ze,I?.after,I?.before]),Je=le&&E.isolateSelection&&R?`Isolated ${R.nodeIds.size} nodes · ${E.neighborhoodDepth} hop${E.neighborhoodDepth===1?"":"s"}`:le?`Inspecting ${le.label}`:E.layoutStyle!=="automatic"?cee[E.layoutStyle]:E.physicsRunning?"Layout running":"Layout static",Dt=i!=null?n.communities.find(re=>re.id===i):void 0,Bt=i!=null?{kind:"community",communityLabel:Dt?.label??`Community ${i}`}:E.initialLayoutPending?{kind:"layout"}:null;return f.jsxs("div",{className:"compass-workspace",style:{"--compass-inspector-width":`${c.width}px`},children:[f.jsxs("div",{className:"compass-workspace-content","data-inspector-collapsed":c.collapsed,inert:Bt?!0:void 0,"aria-hidden":Bt?!0:void 0,children:[f.jsxs("main",{className:"compass-graph-stage","data-comparison":U?"true":"false",children:[f.jsx(ree,{ref:V,model:n,focusedNodeId:le?.id??null,physicsRunning:E.physicsRunning,layoutStyle:E.layoutStyle,forceLabels:E.forceLabels,showEdgeLabels:E.showEdgeLabels,isolatedNodeIds:E.isolateSelection?R?.nodeIds:void 0,isolatedEdgeIds:E.isolateSelection?R?.edgeIds:void 0,layoutSpacing:E.layoutSpacing,showMinimap:E.showMinimap,semanticDetail:t!==void 0&&!U,hiddenCommunities:E.hiddenCommunities,hiddenChanges:E.hiddenChanges,onFocus:ut,onOpenSource:de,onOpenRelationshipSource:Oe,onInteractionStart:_e,onHover:X,onHoverEdge:F,onClear:en,onStabilized:pn}),x,f.jsx(y_,{status:Je,physicsRunning:E.physicsRunning,layoutStyle:E.layoutStyle,forceLabels:E.forceLabels,showEdgeLabels:E.showEdgeLabels,hasSelection:le!==void 0,isolateSelection:E.isolateSelection,neighborhoodDepth:E.neighborhoodDepth,edgeDirection:E.edgeDirection,layoutSpacing:E.layoutSpacing,showMinimap:E.showMinimap,leadingControls:m,leadingPanel:b,leadingPanelOpen:w,onLeadingPanelClose:O,onTogglePhysics:()=>_({type:"setPhysics",running:!E.physicsRunning}),onLayoutChange:re=>_({type:"setLayout",layout:re,runPhysics:!1}),onZoomOut:()=>V.current?.zoomOut(),onResetZoom:()=>V.current?.resetZoom(),onZoomIn:()=>V.current?.zoomIn(),onFit:()=>V.current?.fit(),onFitSelection:()=>{R&&V.current?.fitSelection([...R.nodeIds])},onReset:()=>{en(),_({type:"setIsolation",isolated:!1}),V.current?.reset()},onToggleLabels:()=>_({type:"setLabels",visible:!E.forceLabels}),onToggleEdgeLabels:()=>_({type:"setEdgeLabels",visible:!E.showEdgeLabels}),onToggleIsolation:()=>{const re=!E.isolateSelection;_({type:"setIsolation",isolated:re}),re&&R&&window.requestAnimationFrame(()=>{V.current?.fitSelection([...R.nodeIds])})},onNeighborhoodDepthChange:re=>_({type:"setNeighborhoodDepth",depth:re}),onEdgeDirectionChange:re=>_({type:"setEdgeDirection",direction:re}),onLayoutSpacingChange:re=>_({type:"setLayoutSpacing",spacing:re}),onToggleMinimap:()=>_({type:"setMinimap",visible:!E.showMinimap}),onBack:r}),U&&f.jsx("div",{className:"compass-change-legend","aria-label":"Graph change filters",children:lee.filter(({value:re})=>(ie.get(re)??0)>0).map(({value:re,label:Me})=>{const ze=!E.hiddenChanges.has(re);return f.jsxs("button",{type:"button","data-change":re,"aria-pressed":ze,onClick:()=>_({type:"toggleChange",change:re}),children:[f.jsx("span",{"aria-hidden":"true"}),Me,f.jsx("small",{children:ie.get(re)??0})]},re)})}),t!==void 0&&!U?f.jsx(Z_,{model:n}):null,o&&f.jsx("div",{className:"absolute bottom-4 left-4 z-20 max-w-md rounded-md border border-destructive/50 bg-background/95 px-3 py-2 text-sm text-destructive shadow-lg",role:"alert",children:o}),A&&f.jsxs("div",{className:"compass-bounded-notice",role:"status",children:[f.jsx("strong",{children:"Partial community comparison"}),f.jsxs("span",{children:["This view is limited to ",A.limit.toLocaleString()," nodes. Increase"," ",f.jsx("code",{children:"compass.graphNodeLimit"})," to inspect all"," ",Math.max(A.parentMembers,A.currentMembers).toLocaleString()," symbols."]})]}),j&&Q&&H&&f.jsx(F_,{node:Q,hover:j,activation:H}),ne&&ge&&ee&&T&&f.jsx(W_,{edge:ge,sourceNode:ee,targetNode:T,hover:ne})]}),!c.collapsed&&f.jsx(L_,{width:c.width,onResize:re=>h({...c,width:re})}),f.jsx(p_,{model:n,selected:le,neighbors:ae,connectedEdges:ue,query:E.query,matches:Le,hiddenCommunities:E.hiddenCommunities,comparisonMode:U,sourceRevisions:I,queryResult:l,renderedEdgeCount:Fe,showHeader:S,onQueryChange:re=>_({type:"search",query:re}),onFocus:ut,onOpenSource:e.openSource,onOpenCommunity:t===void 0?e.openCommunity:void 0,onQueryNode:e.queryNode,onToggleCommunity:re=>_({type:"toggleCommunity",communityId:re}),onSetAllVisible:re=>_({type:"setHiddenCommunities",communityIds:re?[]:n.communities.map(Me=>Me.id)}),collapsed:c.collapsed,onToggleCollapsed:()=>h({...c,collapsed:!c.collapsed})})]}),Bt?.kind==="community"?f.jsx(Nv,{kind:"community",communityLabel:Bt.communityLabel}):Bt?.kind==="layout"?f.jsx(Nv,{kind:"layout",onShowGraph:k}):null]})}const Vu=224,hee=76,pI=124,Uu=96,Ws=96,fee=288,pee=112,Yu=12;function mee(n,e,t={width:1280,height:620},i={},o){const r=n.filter(F=>F.nodeCount>0||F.incomingRelationships>0||F.outgoingRelationships>0);if(r.length===0)return{width:t.width,height:t.height,nodes:[],routes:[],lanes:[]};const A=new Set(r.map(F=>F.id)),I=e.filter(F=>A.has(F.sourceGroup)&&A.has(F.targetGroup)),l=vee(r,I),c=l.length,h=Math.max(t.width,Ws*2+fee*c),p=(h-Ws*2)/c;wee(l,I);const m=Math.max(...l.map(F=>F.length)),b=Math.max(t.height,pI+Uu+m*pee),w=l.findIndex(F=>F.some(V=>V.id===o)),O=Array.from({length:c},(F,V)=>({index:V,x:Ws+p*V,width:p,label:Oee(V,c,w<0?void 0:w)})),x=b-pI-Uu,S=l.flatMap((F,V)=>{const Ie=x/Math.max(1,F.length);return F.map((Ee,Ze)=>{const xe={x:Ws+p*V+p/2,y:pI+Ie*Ze+Ie/2},He=i[Ee.id]??xe;return{...Ee,x:Hu(He.x,Ws+Vu/2,h-Ws-Vu/2),y:Hu(He.y,pI,b-Uu),width:Math.min(Vu,p-40),height:hee,column:Tee(He.x,O)}})}),E=new Map(S.map(F=>[F.id,F])),_=Eee(I,E),j=C2(I,E,"source"),X=C2(I,E,"target"),ne=I.flatMap(F=>{const V=E.get(F.sourceGroup),Ie=E.get(F.targetGroup);if(!V||!Ie)return[];const Ee=I2(V,Ie);return[{...F,direction:Ee,path:xee(V,Ie,Ee,_.get(F.id)??0,{height:b},j.get(F.id)??0,X.get(F.id)??0),width:1+Math.min(4.4,Math.log10(F.relationships+1)*1.35)}]});return{width:h,height:b,nodes:S,routes:ne,lanes:O}}function vee(n,e){if(n.length===1)return[[n[0]]];if(e.length===0)return r2(n);const t=bee(n,e),i=new Map(t.map((c,h)=>[c.id,h])),o=new Map;for(const c of n)o.set(c.id,[]);for(const c of e)(i.get(c.sourceGroup)??0)<(i.get(c.targetGroup)??0)&&c.sourceGroup!==c.targetGroup&&o.get(c.targetGroup)?.push(c);const r=new Map;for(const c of t){const h=(o.get(c.id)??[]).map(p=>(r.get(p.sourceGroup)??0)+1);r.set(c.id,h.length>0?Math.max(...h):0)}const A=Math.max(0,...r.values()),I=Math.min(Yu,A+1);if(I===1)return r2(n);const l=Array.from({length:I},()=>[]);for(const c of t){const h=r.get(c.id)??0,p=Ac.length>0)}function bee(n,e){const t=new Map(n.map(A=>[A.id,A])),i=new Set(t.keys()),o=[],r=[];for(;i.size>0;){const A=yee(i,e),I=[...i].map(p=>({section:t.get(p),incoming:A.incoming.get(p)??0,outgoing:A.outgoing.get(p)??0})),l=I.filter(p=>p.incoming===0),c=I.filter(p=>p.outgoing===0);if(l.length>0){const p=l.sort((m,b)=>b.outgoing-m.outgoing||Va(m.section,b.section))[0];o.push(p.section),i.delete(p.section.id);continue}if(c.length>0){const p=c.sort((m,b)=>b.incoming-m.incoming||Va(m.section,b.section))[0];r.unshift(p.section),i.delete(p.section.id);continue}const h=I.sort((p,m)=>m.outgoing-m.incoming-(p.outgoing-p.incoming)||m.outgoing+m.incoming-(p.outgoing+p.incoming)||Va(p.section,m.section))[0];o.push(h.section),i.delete(h.section.id)}return[...o,...r]}function yee(n,e){const t=new Map,i=new Map;for(const o of e){if(o.sourceGroup===o.targetGroup||!n.has(o.sourceGroup)||!n.has(o.targetGroup))continue;const r=1+Math.log10(o.relationships+1);i.set(o.sourceGroup,(i.get(o.sourceGroup)??0)+r),t.set(o.targetGroup,(t.get(o.targetGroup)??0)+r)}return{incoming:t,outgoing:i}}function r2(n){const e=Math.min(6,Math.max(2,Math.ceil(Math.sqrt(n.length)))),t=Array.from({length:e},()=>[]);return[...n].sort(Va).forEach((i,o)=>{t[Math.floor(o*e/n.length)].push(i)}),t}function wee(n,e){const t=new Map;for(const i of e)a2(t,i.sourceGroup,i.targetGroup,i.relationships),a2(t,i.targetGroup,i.sourceGroup,i.relationships);for(let i=0;i<8;i+=1)for(const o of[1,-1]){const r=o===1?1:n.length-2,A=o===1?n.length:-1;for(let I=r;I!==A;I+=o){const l=new Map,c=o===1?n.slice(0,I):n.slice(I+1);for(const p of c)p.forEach((m,b)=>{l.set(m.id,p.length===1?.5:b/(p.length-1))});const h=new Map(n[I].map((p,m,b)=>[p.id,b.length===1?.5:m/(b.length-1)]));n[I].sort((p,m)=>{const b=A2(p.id,t,l),w=A2(m.id,t,l);return(b??h.get(p.id)??.5)-(w??h.get(m.id)??.5)||Va(p,m)})}}}function a2(n,e,t,i){const o=n.get(e)??new Map;o.set(t,(o.get(t)??0)+i),n.set(e,o)}function A2(n,e,t){let i=0,o=0;for(const[r,A]of e.get(n)??[]){const I=t.get(r);I!==void 0&&(i+=I*A,o+=A)}return o>0?i/o:void 0}function xee(n,e,t,i,o,r,A){const I=n.y+r,l=e.y+A;if(t==="forward"){const w=n.x+n.width/2,O=e.x-e.width/2,x=Math.max(1,O-w),S=Hu(x*.42,42,168),E=Nee(i%9,1.5);return[`M ${w} ${I}`,`C ${w+S} ${I+E}`,`${O-S} ${l+E}`,`${O} ${l}`].join(" ")}if(t==="backward"){const w=n.x-n.width/2,O=e.x+e.width/2,x=(I+l)/2{const I=e.get(r.sourceGroup),l=e.get(A.sourceGroup),c=e.get(r.targetGroup),h=e.get(A.targetGroup);return(I?.column??0)-(l?.column??0)||(c?.column??0)-(h?.column??0)||(I?.y??0)-(l?.y??0)||(c?.y??0)-(h?.y??0)||A.relationships-r.relationships||r.id.localeCompare(A.id)});for(const r of o){const A=e.get(r.sourceGroup),I=e.get(r.targetGroup);if(!A||!I)continue;const l=I2(A,I),c=`${Math.min(A.column,I.column)}:${Math.max(A.column,I.column)}:${l}`,h=i.get(c)??0;t.set(r.id,h),i.set(c,h+1)}return t}function C2(n,e,t){const i=new Map;for(const r of n){const A=t==="source"?r.sourceGroup:r.targetGroup,I=i.get(A)??[];I.push(r),i.set(A,I)}const o=new Map;for(const r of i.values()){r.sort((I,l)=>{const c=e.get(t==="source"?I.targetGroup:I.sourceGroup),h=e.get(t==="source"?l.targetGroup:l.sourceGroup);return(c?.y??0)-(h?.y??0)||(c?.x??0)-(h?.x??0)||I.id.localeCompare(l.id)});const A=Math.min(8,38/Math.max(1,r.length-1));r.forEach((I,l)=>{o.set(I.id,(l-(r.length-1)/2)*A)})}return o}function See(n,e,t,i,o){const r=Math.sign(i-e)||1,A=Math.sign(o-t)||1,I=Math.min(12,Math.abs(i-e)/2,Math.abs(t-n)/2);return[`M ${n} ${e}`,`H ${t-Math.sign(t-n)*I}`,`Q ${t} ${e} ${t} ${e+r*I}`,`V ${i-r*I}`,`Q ${t} ${i} ${t+A*I} ${i}`,`H ${o}`].join(" ")}function I2(n,e){return e.column>n.column?"forward":e.columnc2(o)),I=L.useRef(r),[l,c]=L.useState(1),[h,p]=L.useState("none"),m=L.useRef("none"),b=L.useRef(0),[w,O]=L.useState(Mee),[x,S]=L.useState("key"),[E,_]=L.useState(),j=L.useRef(null),X=L.useRef(void 0),ne=L.useRef(void 0);L.useEffect(()=>{const k=c2(o);I.current=k,A(k),c(1),m.current="start",b.current=0,p("start"),j.current?.scrollTo?.({left:0,top:0}),S("key")},[o]);const F=L.useMemo(()=>zee(n.routes,e),[n.routes,e]),V=L.useMemo(()=>x==="complete"?{routes:n.routes,reciprocals:new Map}:_ee(n.routes.filter(k=>F.has(k.id)),e?.kind==="route"?e.id:void 0),[F,n.routes,x,e]),Ie=V.routes,Ee=L.useMemo(()=>{if(x==="complete"||e===void 0)return n.groups;const k=new Set;e.kind==="group"&&k.add(e.id);for(const de of Ie)k.add(de.sourceGroup),k.add(de.targetGroup);return n.groups.filter(de=>k.has(de.id))},[n.groups,x,Ie,e]),Ze=L.useMemo(()=>mee(Ee,Ie,w,r,x==="key"&&e?.kind==="group"?e.id:void 0),[Ee,r,x,Ie,e,w]),xe=Ze.routes,He=L.useMemo(()=>e?.kind!=="group"?new Set:new Set(xe.filter(k=>k.sourceGroup===e.id||k.targetGroup===e.id).flatMap(k=>[k.id,k.sourceGroup,k.targetGroup])),[xe,e]),Fe=Math.max(1,...xe.map(k=>k.relationships)),le=n.routes.length-xe.length,R={width:Math.round(Ze.width*l),height:Math.round(Ze.height*l)},Q=k=>{t(k)},H=(k,de)=>{(k.key==="Enter"||k.key===" ")&&(k.preventDefault(),Q(de))},ge=(k,de)=>{const Oe={...I.current,[k]:de};I.current=Oe,A(Oe)},ee=()=>{try{window.localStorage.setItem(o,JSON.stringify(I.current))}catch{}},T=()=>{I.current={},A({});try{window.localStorage.removeItem(o)}catch{}},U=()=>{c(1),m.current="start",b.current=0,p("start");const k=window.matchMedia?.("(prefers-reduced-motion: reduce)").matches;j.current?.scrollTo?.({left:0,top:0,behavior:k?"auto":"smooth"})},ie=k=>{const de=Math.max(0,k.scrollWidth-k.clientWidth),Oe=de<=1?"none":k.scrollLeft<=1?"start":k.scrollLeft>=de-1?"end":"middle";b.current=de,m.current=Oe,p(Je=>Je===Oe?Je:Oe)},ae=k=>{ie(k.currentTarget)},ue=k=>{k.target!==k.currentTarget||!j.current||(X.current={x:k.clientX,y:k.clientY,scrollLeft:j.current.scrollLeft,scrollTop:j.current.scrollTop,pointerId:k.pointerId},k.currentTarget.setPointerCapture(k.pointerId))},me=k=>{const de=X.current,Oe=j.current;!de||!Oe||de.pointerId!==k.pointerId||(Oe.scrollLeft=de.scrollLeft-(k.clientX-de.x),Oe.scrollTop=de.scrollTop-(k.clientY-de.y))},Le=k=>{X.current?.pointerId===k.pointerId&&(X.current=void 0,k.currentTarget.hasPointerCapture(k.pointerId)&&k.currentTarget.releasePointerCapture(k.pointerId))},ut=(k,de)=>{k.stopPropagation();const Oe=l2(k.currentTarget.ownerSVGElement,k);Oe&&(ne.current={id:de.id,pointerId:k.pointerId,offsetX:Oe.x-de.x,offsetY:Oe.y-de.y,startClientX:k.clientX,startClientY:k.clientY,moved:!1},_(de.id),k.currentTarget.setPointerCapture(k.pointerId))},_e=(k,de)=>{const Oe=ne.current;!Oe||Oe.id!==de.id||Oe.pointerId!==k.pointerId||(k.currentTarget.hasPointerCapture(k.pointerId)&&k.currentTarget.releasePointerCapture(k.pointerId),ne.current=void 0,_(void 0),Oe.moved?ee():Q({kind:"group",id:de.id}))},en=k=>{ne.current?.pointerId===k.pointerId&&(ne.current=void 0,_(void 0))},pn=(k,de)=>{if(k.key==="Enter"||k.key===" "){k.preventDefault(),Q({kind:"group",id:de.id});return}if(!k.altKey||!k.key.startsWith("Arrow"))return;k.preventDefault();const Oe=k.shiftKey?24:8;ge(de.id,{x:de.x+(k.key==="ArrowRight"?Oe:k.key==="ArrowLeft"?-Oe:0),y:de.y+(k.key==="ArrowDown"?Oe:k.key==="ArrowUp"?-Oe:0)}),ee()};return L.useEffect(()=>{const k=j.current;if(!k)return;const de=()=>{const Je=b.current,Dt=Math.max(0,k.scrollWidth-k.clientWidth),Bt=Je>1&&k.scrollLeft>=Je-1;if(Dt>Je&&(m.current==="end"||Bt)&&(k.scrollLeft=Dt),ie(k),k.clientWidth<=0||k.clientHeight<=0)return;const re={width:Math.round(k.clientWidth),height:Math.round(k.clientHeight)};O(Me=>Me.width===re.width&&Me.height===re.height?Me:re)};if(de(),typeof ResizeObserver>"u")return;const Oe=new ResizeObserver(de);return Oe.observe(k),()=>Oe.disconnect()},[R.height,R.width]),f.jsxs("section",{className:"architecture-map-panel","aria-labelledby":"architecture-map-title","data-route-mode":x,children:[f.jsxs("header",{className:"architecture-map-header",children:[f.jsxs("div",{className:"architecture-map-intro",children:[f.jsx("span",{children:"Flow canvas"}),f.jsx("strong",{id:"architecture-map-title",children:"Subsystem relationship direction"}),f.jsx("small",{id:"architecture-map-help",children:"Scroll sideways or drag open canvas space to follow the complete architecture."})]}),f.jsxs("div",{className:"architecture-map-actions",children:[f.jsxs("div",{className:"architecture-route-mode",role:"group","aria-label":"Route visibility",children:[f.jsx("button",{type:"button","aria-pressed":x==="key",onClick:()=>S("key"),children:e?.kind==="group"?"Neighbors":"Key routes"}),f.jsxs("button",{type:"button","aria-pressed":x==="complete",onClick:()=>S("complete"),children:["All routes · ",n.routes.length]})]}),f.jsxs("div",{className:"architecture-map-toolbar","aria-label":"Map controls",children:[f.jsx("button",{type:"button","aria-label":"Zoom out",onClick:()=>c(k=>Math.max(.75,k-.25)),children:f.jsx(V3,{"aria-hidden":"true"})}),f.jsxs("span",{"aria-live":"polite",children:[Math.round(l*100),"%"]}),f.jsx("button",{type:"button","aria-label":"Zoom in",onClick:()=>c(k=>Math.min(2,k+.25)),children:f.jsx(iv,{"aria-hidden":"true"})}),f.jsx("button",{type:"button","aria-label":"Reset zoom and scroll position",title:"Reset zoom and scroll position",onClick:U,children:f.jsx(ev,{"aria-hidden":"true"})}),f.jsx("button",{type:"button","aria-label":"Reset subsystem positions",title:"Reset subsystem positions",disabled:Object.keys(r).length===0,onClick:T,children:f.jsx(gv,{"aria-hidden":"true"})})]})]})]}),f.jsx("div",{ref:j,className:"architecture-map-viewport",role:"region","aria-label":"Scrollable architecture flow diagram","aria-describedby":"architecture-map-help",tabIndex:0,"data-scroll-position":h,onScroll:ae,children:Ze.nodes.length>0?f.jsx("div",{className:"architecture-map-canvas",style:{width:R.width,height:R.height},children:f.jsxs("svg",{className:"architecture-map",viewBox:`0 0 ${Ze.width} ${Ze.height}`,role:"group","aria-label":Zee(Ze.nodes.length,xe.length,n.routes.length),onPointerDown:ue,onPointerMove:me,onPointerUp:Le,onPointerCancel:()=>{X.current=void 0},children:[f.jsxs("defs",{children:[f.jsx("marker",{id:"architecture-arrow",className:"architecture-arrow architecture-arrow-default",markerWidth:"8",markerHeight:"8",refX:"7",refY:"4",orient:"auto-start-reverse",markerUnits:"userSpaceOnUse",children:f.jsx("path",{d:"M 0 0 L 8 4 L 0 8 z"})}),f.jsx("marker",{id:"architecture-arrow-incoming",className:"architecture-arrow architecture-arrow-incoming",markerWidth:"8",markerHeight:"8",refX:"7",refY:"4",orient:"auto-start-reverse",markerUnits:"userSpaceOnUse",children:f.jsx("path",{d:"M 0 0 L 8 4 L 0 8 z"})}),f.jsx("marker",{id:"architecture-arrow-outgoing",className:"architecture-arrow architecture-arrow-outgoing",markerWidth:"8",markerHeight:"8",refX:"7",refY:"4",orient:"auto-start-reverse",markerUnits:"userSpaceOnUse",children:f.jsx("path",{d:"M 0 0 L 8 4 L 0 8 z"})})]}),f.jsxs("g",{className:"architecture-map-lanes","aria-hidden":"true",children:[Ze.lanes.map(k=>f.jsxs("g",{children:[f.jsx("rect",{x:k.x+8,y:34,width:k.width-16,height:Ze.height-76,rx:"12"}),f.jsx("text",{x:k.x+k.width/2,y:61,children:k.label})]},k.index)),f.jsx("text",{className:"architecture-map-direction",x:96,y:24,children:"PRIMARY CALL DIRECTION →"})]}),f.jsx("g",{className:"architecture-routes",children:xe.map(k=>{const de=V.reciprocals.get(k.id),Oe=e?.kind==="route"&&e.id===k.id,Je=Oe||e===void 0||e.kind==="group"&&He.has(k.id),Dt=k.inferred>k.extracted?"inferred":"extracted",Bt=e?.kind==="group"?k.targetGroup===e.id?"incoming":k.sourceGroup===e.id?"outgoing":void 0:void 0,re=x==="key"?.3+Math.sqrt(k.relationships/Fe)*.28:.1+Math.sqrt(k.relationships/Fe)*.2;return f.jsxs("g",{role:"button",tabIndex:0,"aria-label":`${k.sourceGroup} to ${k.targetGroup}, ${k.relationships} ${i}${de?`; bidirectional, ${de.relationships} reverse ${i}`:""}${k.direction==="backward"?", feedback route":""}`,"data-direction":k.direction,"data-evidence":Dt,"data-reciprocal":de?"true":void 0,"data-focus-direction":Bt,"data-selected":Oe||void 0,"data-dimmed":!Je||void 0,onClick:()=>Q({kind:"route",id:k.id}),onKeyDown:Me=>H(Me,{kind:"route",id:k.id}),children:[f.jsx("path",{className:"architecture-route-hit",d:k.path}),f.jsx("path",{className:"architecture-route-line",d:k.path,style:{strokeWidth:k.width,"--architecture-route-opacity":re},markerStart:de?jee(Bt):void 0,markerEnd:Bt==="incoming"?"url(#architecture-arrow-incoming)":Bt==="outgoing"?"url(#architecture-arrow-outgoing)":"url(#architecture-arrow)"}),f.jsxs("title",{children:[k.sourceGroup," → ",k.targetGroup,": ",k.relationships," ",i,de&&` · ${de.sourceGroup} → ${de.targetGroup}: ${de.relationships} ${i}`]})]},k.id)})}),f.jsx("g",{className:"architecture-map-nodes",children:Ze.nodes.map(k=>{const de=e?.kind==="group"&&e.id===k.id,Oe=de||e===void 0||e.kind==="group"&&He.has(k.id)||e.kind==="route"&&n.routes.some(Je=>Je.id===e.id&&(Je.sourceGroup===k.id||Je.targetGroup===k.id));return f.jsxs("g",{role:"button",tabIndex:0,"aria-label":`${k.name}, ${k.nodeCount} visible symbols, ${k.incomingRelationships} incoming and ${k.outgoingRelationships} outgoing ${i}; drag to reposition`,transform:`translate(${k.x-k.width/2} ${k.y-k.height/2})`,"data-selected":de||void 0,"data-dimmed":!Oe||void 0,"data-dragging":E===k.id||void 0,onPointerDown:Je=>ut(Je,k),onPointerMove:Je=>{const Dt=ne.current;if(!Dt||Dt.id!==k.id||Dt.pointerId!==Je.pointerId)return;const Bt=l2(Je.currentTarget.ownerSVGElement,Je);Bt&&((Math.abs(Je.clientX-Dt.startClientX)>3||Math.abs(Je.clientY-Dt.startClientY)>3)&&(Dt.moved=!0),ge(k.id,{x:Bt.x-Dt.offsetX,y:Bt.y-Dt.offsetY}))},onPointerUp:Je=>_e(Je,k),onPointerCancel:Je=>en(Je),onKeyDown:Je=>pn(Je,k),children:[f.jsx("rect",{className:"architecture-map-node-shadow",width:k.width,height:k.height,rx:"9"}),f.jsx("rect",{className:"architecture-map-node-card",width:k.width,height:k.height,rx:"9"}),f.jsx("rect",{className:"architecture-map-node-accent",width:"4",height:k.height-16,x:"8",y:"8",rx:"2"}),f.jsx("text",{x:"20",y:"27",className:"architecture-map-node-name",children:kee(k.name,24)}),f.jsxs("text",{x:"20",y:"48",className:"architecture-map-node-meta",children:[k.nodeCount.toLocaleString()," symbols"," · ","↓",k.incomingRelationships.toLocaleString()," ↑",k.outgoingRelationships.toLocaleString()]}),f.jsxs("g",{className:"architecture-map-node-grip","aria-hidden":"true",children:[f.jsx("circle",{cx:k.width-18,cy:"26",r:"1.2"}),f.jsx("circle",{cx:k.width-13,cy:"26",r:"1.2"}),f.jsx("circle",{cx:k.width-18,cy:"31",r:"1.2"}),f.jsx("circle",{cx:k.width-13,cy:"31",r:"1.2"}),f.jsx("circle",{cx:k.width-18,cy:"36",r:"1.2"}),f.jsx("circle",{cx:k.width-13,cy:"36",r:"1.2"})]}),f.jsxs("title",{children:[k.name," — drag to reposition"]})]},k.id)})})]})}):f.jsxs("div",{className:"architecture-map-empty",children:[f.jsx("strong",{children:"No architecture to draw"}),f.jsx("span",{children:"No subsystems match the current scope and evidence filters."})]})}),f.jsxs("footer",{className:"architecture-map-footer",children:[f.jsxs("div",{className:"architecture-map-legend","aria-label":"Map legend",children:[f.jsxs("span",{children:[f.jsx("i",{"data-evidence":"extracted"})," Extracted"]}),f.jsxs("span",{children:[f.jsx("i",{"data-evidence":"inferred"})," Inferred"]}),f.jsxs("span",{children:[f.jsx("i",{"data-direction":"incoming"})," Incoming"]}),f.jsxs("span",{children:[f.jsx("i",{"data-direction":"outgoing"})," Outgoing"]}),f.jsxs("span",{children:[f.jsx("i",{"data-direction":"bidirectional","aria-hidden":"true",children:"↔"})," Bidirectional"]}),f.jsxs("span",{children:[f.jsx("i",{"data-direction":"feedback"})," Feedback"]}),f.jsxs("span",{children:[f.jsx(U3,{"aria-hidden":"true"})," Drag cards to arrange"]}),le>0&&f.jsxs("button",{type:"button",onClick:()=>S("complete"),children:[xe.length," of ",n.routes.length," routes · Show all"]})]}),f.jsxs("details",{className:"architecture-map-table",children:[f.jsx("summary",{children:"View routes as a table"}),f.jsx("div",{children:f.jsxs("table",{children:[f.jsx("thead",{children:f.jsxs("tr",{children:[f.jsx("th",{children:"From"}),f.jsx("th",{children:"To"}),f.jsx("th",{children:"Relationships"}),f.jsx("th",{children:"Evidence"})]})}),f.jsx("tbody",{children:n.routes.map(k=>f.jsxs("tr",{children:[f.jsx("td",{children:d2(n,k.sourceGroup)}),f.jsx("td",{children:d2(n,k.targetGroup)}),f.jsx("td",{children:k.relationships.toLocaleString()}),f.jsxs("td",{children:[k.extracted," extracted · ",k.inferred," inferred"]})]},k.id))})]})})]})]})]})}function l2(n,e){if(!n)return;const t=n.getScreenCTM();if(!t)return;const i=n.createSVGPoint();i.x=e.clientX,i.y=e.clientY;const o=i.matrixTransform(t.inverse());return{x:o.x,y:o.y}}function c2(n){try{const e=JSON.parse(window.localStorage.getItem(n)??"{}");return!e||typeof e!="object"||Array.isArray(e)?{}:Object.fromEntries(Object.entries(e).flatMap(([t,i])=>i&&typeof i=="object"&&"x"in i&&"y"in i&&typeof i.x=="number"&&typeof i.y=="number"&&Number.isFinite(i.x)&&Number.isFinite(i.y)?[[t,{x:i.x,y:i.y}]]:[]))}catch{return{}}}function d2(n,e){return n.groups.find(t=>t.id===e)?.name??e}function kee(n,e){return n.length<=e?n:`${n.slice(0,e-1)}…`}function zee(n,e){const t=o=>[...o].sort((r,A)=>A.relationships-r.relationships||r.id.localeCompare(A.id)),i=new Set;if(e?.kind==="route"){const o=n.find(r=>r.id===e.id);if(o){i.add(o.id);const r=n.find(A=>A.sourceGroup===o.targetGroup&&A.targetGroup===o.sourceGroup);r&&i.add(r.id)}return i}else if(e?.kind==="group"){const o=t(n.filter(A=>A.targetGroup===e.id)).slice(0,6),r=t(n.filter(A=>A.sourceGroup===e.id)).slice(0,6);for(const A of t([...o,...r]))i.add(A.id);return i}for(const o of t(n)){if(i.size>=Dee)break;i.add(o.id)}return i}function _ee(n,e){const t=new Map(n.map(A=>[u2(A.sourceGroup,A.targetGroup),A])),i=new Set,o=[],r=new Map;for(const A of n){if(i.has(A.id))continue;const I=t.get(u2(A.targetGroup,A.sourceGroup));if(!I||I.id===A.id||i.has(I.id)){o.push(A),i.add(A.id);continue}const l=A.id===e?A:I.id===e?I:A.relationships>I.relationships||A.relationships===I.relationships&&A.id.localeCompare(I.id)<=0?A:I,c=l.id===A.id?I:A;o.push(l),r.set(l.id,c),i.add(A.id),i.add(I.id)}return o.sort((A,I)=>I.relationships-A.relationships||A.id.localeCompare(I.id)),{routes:o,reciprocals:r}}function u2(n,e){return`${n}\0${e}`}function jee(n){return n==="incoming"?"url(#architecture-arrow-outgoing)":n==="outgoing"?"url(#architecture-arrow-incoming)":"url(#architecture-arrow)"}function Zee(n,e,t){return e===t?`${n} subsystems and ${t} directed routes`:`${n} subsystems and ${e} of ${t} directed routes visible`}function Pee(n,e){const t=n.projections.find(x=>x.scope===(e.scope==="all"?"all_code":"production"));if(!t)throw new Error(`Architecture projection is missing scope '${e.scope}'`);const i=new Map(t.groups.map(x=>[x.id,x])),o=new Set(t.overviewGroupIds),r=new Map(t.memberships.map(x=>[n.nodes[x.nodeIndex].id,t.groups[x.groupIndex].id])),A=x=>{const S=r.get(x);return S?i.get(S)?.parentId??S:void 0},I=n.relationships.filter(x=>Bee(e.evidence,x.confidence)&&Lee(e.lens,x.relationClass)&&A(x.source)&&A(x.target)),l=new Map,c=new Map;for(const x of I){const S=A(x.source),E=A(x.target);if(S===E){l.set(S,(l.get(S)??0)+1);continue}if(!o.has(S)||!o.has(E))continue;const _=`${S}->${E}`,j=c.get(_)??[];j.push(x),c.set(_,j)}const h=[...c.entries()].map(([x,S])=>({id:x,sourceGroup:A(S[0].source),targetGroup:A(S[0].target),relationships:S.length,extracted:S.filter(E=>E.confidence==="extracted").length,inferred:S.filter(E=>E.confidence==="inferred").length,ambiguous:S.filter(E=>E.confidence==="ambiguous").length})).sort((x,S)=>S.relationships-x.relationships||x.id.localeCompare(S.id)),p=new Map,m=new Map;for(const x of h)m.set(x.sourceGroup,(m.get(x.sourceGroup)??0)+x.relationships),p.set(x.targetGroup,(p.get(x.targetGroup)??0)+x.relationships);const b=t.overviewGroupIds.flatMap(x=>{const S=i.get(x);return S?[{id:S.id,name:S.name.value,nodeCount:S.nodeCount,totalNodeCount:S.nodeCount,internalRelationshipCount:l.get(S.id)??0,incomingRelationships:p.get(S.id)??0,outgoingRelationships:m.get(S.id)??0,scopes:S.sourceScopes}]:[]}),w=b.reduce((x,S)=>x+S.nodeCount,0),O=b.reduce((x,S)=>x+S.internalRelationshipCount,0)+h.reduce((x,S)=>x+S.relationships,0);return{title:n.title,scope:e.scope,evidence:e.evidence,lens:e.lens,groups:b,routes:h,statistics:{visibleNodes:w,totalNodes:t.quality.metrics.sourceScopes.production+t.quality.metrics.sourceScopes.test+t.quality.metrics.sourceScopes.generated+t.quality.metrics.sourceScopes.vendor+t.quality.metrics.sourceScopes.unknown,visibleRelationships:O,totalRelationships:I.length,communities:n.statistics.communities,extracted:n.statistics.extracted,inferred:n.statistics.inferred,ambiguous:n.statistics.ambiguous},coverage:{internal:t.coverage.internal,crossGroup:t.coverage.crossGroup,unassigned:t.coverage.unassigned},omissions:t.omissions,quality:t.quality,provenance:n.provenance}}function Bee(n,e){return n==="all"||n===e}function Lee(n,e){return n==="all"?e!=="unknown":n==="architecture"?e==="execution"||e==="dependency":n===e}function h2(n){var e,t,i="";if(typeof n=="string"||typeof n=="number")i+=n;else if(typeof n=="object")if(Array.isArray(n)){var o=n.length;for(e=0;etypeof n=="boolean"?`${n}`:n===0?"0":n,m2=f2,Ku=(n,e)=>t=>{var i;if(e?.variants==null)return m2(n,t?.class,t?.className);const{variants:o,defaultVariants:r}=e,A=Object.keys(o).map(c=>{const h=t?.[c],p=r?.[c];if(h===null)return null;const m=p2(h)||p2(p);return o[c][m]}),I=t&&Object.entries(t).reduce((c,h)=>{let[p,m]=h;return m===void 0||(c[p]=m),c},{}),l=e==null||(i=e.compoundVariants)===null||i===void 0?void 0:i.reduce((c,h)=>{let{class:p,className:m,...b}=h;return Object.entries(b).every(w=>{let[O,x]=w;return Array.isArray(x)?x.includes({...r,...I}[O]):{...r,...I}[O]===x})?[...c,p,m]:c},[]);return m2(n,A,l,t?.class,t?.className)},Gee=(n,e)=>{const t=new Array(n.length+e.length);for(let i=0;i({classGroupId:n,validator:e}),v2=(n=new Map,e=null,t)=>({nextPart:n,validators:e,classGroupId:t}),mI="-",b2=[],Vee="arbitrary..",Uee=n=>{const e=Hee(n),{conflictingClassGroups:t,conflictingClassGroupModifiers:i}=n;return{getClassGroupId:A=>{if(A.startsWith("[")&&A.endsWith("]"))return Yee(A);const I=A.split(mI),l=I[0]===""&&I.length>1?1:0;return y2(I,l,e)},getConflictingClassGroupIds:(A,I)=>{if(I){const l=i[A],c=t[A];return l?c?Gee(c,l):l:c||b2}return t[A]||b2}}},y2=(n,e,t)=>{if(n.length-e===0)return t.classGroupId;const o=n[e],r=t.nextPart.get(o);if(r){const c=y2(n,e+1,r);if(c)return c}const A=t.validators;if(A===null)return;const I=e===0?n.join(mI):n.slice(e).join(mI),l=A.length;for(let c=0;cn.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const e=n.slice(1,-1),t=e.indexOf(":"),i=e.slice(0,t);return i?Vee+i:void 0})(),Hee=n=>{const{theme:e,classGroups:t}=n;return Kee(t,e)},Kee=(n,e)=>{const t=v2();for(const i in n){const o=n[i];Wu(o,t,i,e)}return t},Wu=(n,e,t,i)=>{const o=n.length;for(let r=0;r{if(typeof n=="string"){Qee(n,e,t);return}if(typeof n=="function"){Xee(n,e,t,i);return}$ee(n,e,t,i)},Qee=(n,e,t)=>{const i=n===""?e:w2(e,n);i.classGroupId=t},Xee=(n,e,t,i)=>{if(qee(n)){Wu(n(i),e,t,i);return}e.validators===null&&(e.validators=[]),e.validators.push(Fee(t,n))},$ee=(n,e,t,i)=>{const o=Object.entries(n),r=o.length;for(let A=0;A{let t=n;const i=e.split(mI),o=i.length;for(let r=0;r"isThemeGetter"in n&&n.isThemeGetter===!0,Jee=n=>{if(n<1)return{get:()=>{},set:()=>{}};let e=0,t=Object.create(null),i=Object.create(null);const o=(r,A)=>{t[r]=A,e++,e>n&&(e=0,i=t,t=Object.create(null))};return{get(r){let A=t[r];if(A!==void 0)return A;if((A=i[r])!==void 0)return o(r,A),A},set(r,A){r in t?t[r]=A:o(r,A)}}},Qu="!",x2=":",ete=[],E2=(n,e,t,i,o)=>({modifiers:n,hasImportantModifier:e,baseClassName:t,maybePostfixModifierPosition:i,isExternal:o}),tte=n=>{const{prefix:e,experimentalParseClassName:t}=n;let i=o=>{const r=[];let A=0,I=0,l=0,c;const h=o.length;for(let O=0;Ol?c-l:void 0;return E2(r,b,m,w)};if(e){const o=e+x2,r=i;i=A=>A.startsWith(o)?r(A.slice(o.length)):E2(ete,!1,A,void 0,!0)}if(t){const o=i;i=r=>t({className:r,parseClassName:o})}return i},nte=n=>{const e=new Map;return n.orderSensitiveModifiers.forEach((t,i)=>{e.set(t,1e6+i)}),t=>{const i=[];let o=[];for(let r=0;r0&&(o.sort(),i.push(...o),o=[]),i.push(A)):o.push(A)}return o.length>0&&(o.sort(),i.push(...o)),i}},ite=n=>({cache:Jee(n.cacheSize),parseClassName:tte(n),sortModifiers:nte(n),postfixLookupClassGroupIds:gte(n),...Uee(n)}),gte=n=>{const e=Object.create(null),t=n.postfixLookupClassGroups;if(t)for(let i=0;i{const{parseClassName:t,getClassGroupId:i,getConflictingClassGroupIds:o,sortModifiers:r,postfixLookupClassGroupIds:A}=e,I=[],l=n.trim().split(ote);let c="";for(let h=l.length-1;h>=0;h-=1){const p=l[h],{isExternal:m,modifiers:b,hasImportantModifier:w,baseClassName:O,maybePostfixModifierPosition:x}=t(p);if(m){c=p+(c.length>0?" "+c:c);continue}let S=!!x,E;if(S){const F=O.substring(0,x);E=i(F);const V=E&&A[E]?i(O):void 0;V&&V!==E&&(E=V,S=!1)}else E=i(O);if(!E){if(!S){c=p+(c.length>0?" "+c:c);continue}if(E=i(O),!E){c=p+(c.length>0?" "+c:c);continue}S=!1}const _=b.length===0?"":b.length===1?b[0]:r(b).join(":"),j=w?_+Qu:_,X=j+E;if(I.indexOf(X)>-1)continue;I.push(X);const ne=o(E,S);for(let F=0;F0?" "+c:c)}return c},rte=(...n)=>{let e=0,t,i,o="";for(;e{if(typeof n=="string")return n;let e,t="";for(let i=0;i{let t,i,o,r;const A=l=>{const c=e.reduce((h,p)=>p(h),n());return t=ite(c),i=t.cache.get,o=t.cache.set,r=I,I(l)},I=l=>{const c=i(l);if(c)return c;const h=ste(l,t);return o(l,h),h};return r=A,(...l)=>r(rte(...l))},Ate=[],an=n=>{const e=t=>t[n]||Ate;return e.isThemeGetter=!0,e},T2=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,O2=/^\((?:(\w[\w-]*):)?(.+)\)$/i,Cte=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,Ite=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,lte=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,cte=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,dte=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,ute=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,Ug=n=>Cte.test(n),Ye=n=>!!n&&!Number.isNaN(Number(n)),Fi=n=>!!n&&Number.isInteger(Number(n)),Xu=n=>n.endsWith("%")&&Ye(n.slice(0,-1)),og=n=>Ite.test(n),N2=()=>!0,hte=n=>lte.test(n)&&!cte.test(n),$u=()=>!1,fte=n=>dte.test(n),pte=n=>ute.test(n),mte=n=>!he(n)&&!fe(n),vte=n=>n.startsWith("@container")&&(n[10]==="/"&&n[11]!==void 0||n[11]==="s"&&n[16]!==void 0&&n.startsWith("-size/",10)||n[11]==="n"&&n[18]!==void 0&&n.startsWith("-normal/",10)),bte=n=>Yg(n,_2,$u),he=n=>T2.test(n),Lo=n=>Yg(n,j2,hte),D2=n=>Yg(n,Nte,Ye),yte=n=>Yg(n,P2,N2),wte=n=>Yg(n,Z2,$u),M2=n=>Yg(n,k2,$u),xte=n=>Yg(n,z2,pte),vI=n=>Yg(n,B2,fte),fe=n=>O2.test(n),Ua=n=>Go(n,j2),Ete=n=>Go(n,Z2),R2=n=>Go(n,k2),Ste=n=>Go(n,_2),Tte=n=>Go(n,z2),bI=n=>Go(n,B2,!0),Ote=n=>Go(n,P2,!0),Yg=(n,e,t)=>{const i=T2.exec(n);return i?i[1]?e(i[1]):t(i[2]):!1},Go=(n,e,t=!1)=>{const i=O2.exec(n);return i?i[1]?e(i[1]):t:!1},k2=n=>n==="position"||n==="percentage",z2=n=>n==="image"||n==="url",_2=n=>n==="length"||n==="size"||n==="bg-size",j2=n=>n==="length",Nte=n=>n==="number",Z2=n=>n==="family-name",P2=n=>n==="number"||n==="weight",B2=n=>n==="shadow",Dte=ate(()=>{const n=an("color"),e=an("font"),t=an("text"),i=an("font-weight"),o=an("tracking"),r=an("leading"),A=an("breakpoint"),I=an("container"),l=an("spacing"),c=an("radius"),h=an("shadow"),p=an("inset-shadow"),m=an("text-shadow"),b=an("drop-shadow"),w=an("blur"),O=an("perspective"),x=an("aspect"),S=an("ease"),E=an("animate"),_=()=>["auto","avoid","all","avoid-page","page","left","right","column"],j=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],X=()=>[...j(),fe,he],ne=()=>["auto","hidden","clip","visible","scroll"],F=()=>["auto","contain","none"],V=()=>[fe,he,l],Ie=()=>[Ug,"full","auto",...V()],Ee=()=>[Fi,"none","subgrid",fe,he],Ze=()=>["auto",{span:["full",Fi,fe,he]},Fi,fe,he],xe=()=>[Fi,"auto",fe,he],He=()=>["auto","min","max","fr",fe,he],Fe=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],le=()=>["start","end","center","stretch","center-safe","end-safe"],R=()=>["auto",...V()],Q=()=>[Ug,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...V()],H=()=>[Ug,"screen","full","dvw","lvw","svw","min","max","fit",...V()],ge=()=>[Ug,"screen","full","lh","dvh","lvh","svh","min","max","fit",...V()],ee=()=>[n,fe,he],T=()=>[...j(),R2,M2,{position:[fe,he]}],U=()=>["no-repeat",{repeat:["","x","y","space","round"]}],ie=()=>["auto","cover","contain",Ste,bte,{size:[fe,he]}],ae=()=>[Xu,Ua,Lo],ue=()=>["","none","full",c,fe,he],me=()=>["",Ye,Ua,Lo],Le=()=>["solid","dashed","dotted","double"],ut=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],_e=()=>[Ye,Xu,R2,M2],en=()=>["","none",w,fe,he],pn=()=>["none",Ye,fe,he],k=()=>["none",Ye,fe,he],de=()=>[Ye,fe,he],Oe=()=>[Ug,"full",...V()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[og],breakpoint:[og],color:[N2],container:[og],"drop-shadow":[og],ease:["in","out","in-out"],font:[mte],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[og],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[og],shadow:[og],spacing:["px",Ye],text:[og],"text-shadow":[og],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",Ug,he,fe,x]}],container:["container"],"container-type":[{"@container":["","normal","size",fe,he]}],"container-named":[vte],columns:[{columns:[Ye,he,fe,I]}],"break-after":[{"break-after":_()}],"break-before":[{"break-before":_()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:X()}],overflow:[{overflow:ne()}],"overflow-x":[{"overflow-x":ne()}],"overflow-y":[{"overflow-y":ne()}],overscroll:[{overscroll:F()}],"overscroll-x":[{"overscroll-x":F()}],"overscroll-y":[{"overscroll-y":F()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:Ie()}],"inset-x":[{"inset-x":Ie()}],"inset-y":[{"inset-y":Ie()}],start:[{"inset-s":Ie(),start:Ie()}],end:[{"inset-e":Ie(),end:Ie()}],"inset-bs":[{"inset-bs":Ie()}],"inset-be":[{"inset-be":Ie()}],top:[{top:Ie()}],right:[{right:Ie()}],bottom:[{bottom:Ie()}],left:[{left:Ie()}],visibility:["visible","invisible","collapse"],z:[{z:[Fi,"auto",fe,he]}],basis:[{basis:[Ug,"full","auto",I,...V()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[Ye,Ug,"auto","initial","none",he]}],grow:[{grow:["",Ye,fe,he]}],shrink:[{shrink:["",Ye,fe,he]}],order:[{order:[Fi,"first","last","none",fe,he]}],"grid-cols":[{"grid-cols":Ee()}],"col-start-end":[{col:Ze()}],"col-start":[{"col-start":xe()}],"col-end":[{"col-end":xe()}],"grid-rows":[{"grid-rows":Ee()}],"row-start-end":[{row:Ze()}],"row-start":[{"row-start":xe()}],"row-end":[{"row-end":xe()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":He()}],"auto-rows":[{"auto-rows":He()}],gap:[{gap:V()}],"gap-x":[{"gap-x":V()}],"gap-y":[{"gap-y":V()}],"justify-content":[{justify:[...Fe(),"normal"]}],"justify-items":[{"justify-items":[...le(),"normal"]}],"justify-self":[{"justify-self":["auto",...le()]}],"align-content":[{content:["normal",...Fe()]}],"align-items":[{items:[...le(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...le(),{baseline:["","last"]}]}],"place-content":[{"place-content":Fe()}],"place-items":[{"place-items":[...le(),"baseline"]}],"place-self":[{"place-self":["auto",...le()]}],p:[{p:V()}],px:[{px:V()}],py:[{py:V()}],ps:[{ps:V()}],pe:[{pe:V()}],pbs:[{pbs:V()}],pbe:[{pbe:V()}],pt:[{pt:V()}],pr:[{pr:V()}],pb:[{pb:V()}],pl:[{pl:V()}],m:[{m:R()}],mx:[{mx:R()}],my:[{my:R()}],ms:[{ms:R()}],me:[{me:R()}],mbs:[{mbs:R()}],mbe:[{mbe:R()}],mt:[{mt:R()}],mr:[{mr:R()}],mb:[{mb:R()}],ml:[{ml:R()}],"space-x":[{"space-x":V()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":V()}],"space-y-reverse":["space-y-reverse"],size:[{size:Q()}],"inline-size":[{inline:["auto",...H()]}],"min-inline-size":[{"min-inline":["auto",...H()]}],"max-inline-size":[{"max-inline":["none",...H()]}],"block-size":[{block:["auto",...ge()]}],"min-block-size":[{"min-block":["auto",...ge()]}],"max-block-size":[{"max-block":["none",...ge()]}],w:[{w:[I,"screen",...Q()]}],"min-w":[{"min-w":[I,"screen","none",...Q()]}],"max-w":[{"max-w":[I,"screen","none","prose",{screen:[A]},...Q()]}],h:[{h:["screen","lh",...Q()]}],"min-h":[{"min-h":["screen","lh","none",...Q()]}],"max-h":[{"max-h":["screen","lh",...Q()]}],"font-size":[{text:["base",t,Ua,Lo]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[i,Ote,yte]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",Xu,he]}],"font-family":[{font:[Ete,wte,e]}],"font-features":[{"font-features":[he]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[o,fe,he]}],"line-clamp":[{"line-clamp":[Ye,"none",fe,D2]}],leading:[{leading:[r,...V()]}],"list-image":[{"list-image":["none",fe,he]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",fe,he]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:ee()}],"text-color":[{text:ee()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...Le(),"wavy"]}],"text-decoration-thickness":[{decoration:[Ye,"from-font","auto",fe,Lo]}],"text-decoration-color":[{decoration:ee()}],"underline-offset":[{"underline-offset":[Ye,"auto",fe,he]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:V()}],"tab-size":[{tab:[Fi,fe,he]}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",fe,he]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",fe,he]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:T()}],"bg-repeat":[{bg:U()}],"bg-size":[{bg:ie()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},Fi,fe,he],radial:["",fe,he],conic:[Fi,fe,he]},Tte,xte]}],"bg-color":[{bg:ee()}],"gradient-from-pos":[{from:ae()}],"gradient-via-pos":[{via:ae()}],"gradient-to-pos":[{to:ae()}],"gradient-from":[{from:ee()}],"gradient-via":[{via:ee()}],"gradient-to":[{to:ee()}],rounded:[{rounded:ue()}],"rounded-s":[{"rounded-s":ue()}],"rounded-e":[{"rounded-e":ue()}],"rounded-t":[{"rounded-t":ue()}],"rounded-r":[{"rounded-r":ue()}],"rounded-b":[{"rounded-b":ue()}],"rounded-l":[{"rounded-l":ue()}],"rounded-ss":[{"rounded-ss":ue()}],"rounded-se":[{"rounded-se":ue()}],"rounded-ee":[{"rounded-ee":ue()}],"rounded-es":[{"rounded-es":ue()}],"rounded-tl":[{"rounded-tl":ue()}],"rounded-tr":[{"rounded-tr":ue()}],"rounded-br":[{"rounded-br":ue()}],"rounded-bl":[{"rounded-bl":ue()}],"border-w":[{border:me()}],"border-w-x":[{"border-x":me()}],"border-w-y":[{"border-y":me()}],"border-w-s":[{"border-s":me()}],"border-w-e":[{"border-e":me()}],"border-w-bs":[{"border-bs":me()}],"border-w-be":[{"border-be":me()}],"border-w-t":[{"border-t":me()}],"border-w-r":[{"border-r":me()}],"border-w-b":[{"border-b":me()}],"border-w-l":[{"border-l":me()}],"divide-x":[{"divide-x":me()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":me()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...Le(),"hidden","none"]}],"divide-style":[{divide:[...Le(),"hidden","none"]}],"border-color":[{border:ee()}],"border-color-x":[{"border-x":ee()}],"border-color-y":[{"border-y":ee()}],"border-color-s":[{"border-s":ee()}],"border-color-e":[{"border-e":ee()}],"border-color-bs":[{"border-bs":ee()}],"border-color-be":[{"border-be":ee()}],"border-color-t":[{"border-t":ee()}],"border-color-r":[{"border-r":ee()}],"border-color-b":[{"border-b":ee()}],"border-color-l":[{"border-l":ee()}],"divide-color":[{divide:ee()}],"outline-style":[{outline:[...Le(),"none","hidden"]}],"outline-offset":[{"outline-offset":[Ye,fe,he]}],"outline-w":[{outline:["",Ye,Ua,Lo]}],"outline-color":[{outline:ee()}],shadow:[{shadow:["","none",h,bI,vI]}],"shadow-color":[{shadow:ee()}],"inset-shadow":[{"inset-shadow":["none",p,bI,vI]}],"inset-shadow-color":[{"inset-shadow":ee()}],"ring-w":[{ring:me()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:ee()}],"ring-offset-w":[{"ring-offset":[Ye,Lo]}],"ring-offset-color":[{"ring-offset":ee()}],"inset-ring-w":[{"inset-ring":me()}],"inset-ring-color":[{"inset-ring":ee()}],"text-shadow":[{"text-shadow":["none",m,bI,vI]}],"text-shadow-color":[{"text-shadow":ee()}],opacity:[{opacity:[Ye,fe,he]}],"mix-blend":[{"mix-blend":[...ut(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":ut()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[Ye]}],"mask-image-linear-from-pos":[{"mask-linear-from":_e()}],"mask-image-linear-to-pos":[{"mask-linear-to":_e()}],"mask-image-linear-from-color":[{"mask-linear-from":ee()}],"mask-image-linear-to-color":[{"mask-linear-to":ee()}],"mask-image-t-from-pos":[{"mask-t-from":_e()}],"mask-image-t-to-pos":[{"mask-t-to":_e()}],"mask-image-t-from-color":[{"mask-t-from":ee()}],"mask-image-t-to-color":[{"mask-t-to":ee()}],"mask-image-r-from-pos":[{"mask-r-from":_e()}],"mask-image-r-to-pos":[{"mask-r-to":_e()}],"mask-image-r-from-color":[{"mask-r-from":ee()}],"mask-image-r-to-color":[{"mask-r-to":ee()}],"mask-image-b-from-pos":[{"mask-b-from":_e()}],"mask-image-b-to-pos":[{"mask-b-to":_e()}],"mask-image-b-from-color":[{"mask-b-from":ee()}],"mask-image-b-to-color":[{"mask-b-to":ee()}],"mask-image-l-from-pos":[{"mask-l-from":_e()}],"mask-image-l-to-pos":[{"mask-l-to":_e()}],"mask-image-l-from-color":[{"mask-l-from":ee()}],"mask-image-l-to-color":[{"mask-l-to":ee()}],"mask-image-x-from-pos":[{"mask-x-from":_e()}],"mask-image-x-to-pos":[{"mask-x-to":_e()}],"mask-image-x-from-color":[{"mask-x-from":ee()}],"mask-image-x-to-color":[{"mask-x-to":ee()}],"mask-image-y-from-pos":[{"mask-y-from":_e()}],"mask-image-y-to-pos":[{"mask-y-to":_e()}],"mask-image-y-from-color":[{"mask-y-from":ee()}],"mask-image-y-to-color":[{"mask-y-to":ee()}],"mask-image-radial":[{"mask-radial":[fe,he]}],"mask-image-radial-from-pos":[{"mask-radial-from":_e()}],"mask-image-radial-to-pos":[{"mask-radial-to":_e()}],"mask-image-radial-from-color":[{"mask-radial-from":ee()}],"mask-image-radial-to-color":[{"mask-radial-to":ee()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":j()}],"mask-image-conic-pos":[{"mask-conic":[Ye]}],"mask-image-conic-from-pos":[{"mask-conic-from":_e()}],"mask-image-conic-to-pos":[{"mask-conic-to":_e()}],"mask-image-conic-from-color":[{"mask-conic-from":ee()}],"mask-image-conic-to-color":[{"mask-conic-to":ee()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:T()}],"mask-repeat":[{mask:U()}],"mask-size":[{mask:ie()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",fe,he]}],filter:[{filter:["","none",fe,he]}],blur:[{blur:en()}],brightness:[{brightness:[Ye,fe,he]}],contrast:[{contrast:[Ye,fe,he]}],"drop-shadow":[{"drop-shadow":["","none",b,bI,vI]}],"drop-shadow-color":[{"drop-shadow":ee()}],grayscale:[{grayscale:["",Ye,fe,he]}],"hue-rotate":[{"hue-rotate":[Ye,fe,he]}],invert:[{invert:["",Ye,fe,he]}],saturate:[{saturate:[Ye,fe,he]}],sepia:[{sepia:["",Ye,fe,he]}],"backdrop-filter":[{"backdrop-filter":["","none",fe,he]}],"backdrop-blur":[{"backdrop-blur":en()}],"backdrop-brightness":[{"backdrop-brightness":[Ye,fe,he]}],"backdrop-contrast":[{"backdrop-contrast":[Ye,fe,he]}],"backdrop-grayscale":[{"backdrop-grayscale":["",Ye,fe,he]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[Ye,fe,he]}],"backdrop-invert":[{"backdrop-invert":["",Ye,fe,he]}],"backdrop-opacity":[{"backdrop-opacity":[Ye,fe,he]}],"backdrop-saturate":[{"backdrop-saturate":[Ye,fe,he]}],"backdrop-sepia":[{"backdrop-sepia":["",Ye,fe,he]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":V()}],"border-spacing-x":[{"border-spacing-x":V()}],"border-spacing-y":[{"border-spacing-y":V()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",fe,he]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[Ye,"initial",fe,he]}],ease:[{ease:["linear","initial",S,fe,he]}],delay:[{delay:[Ye,fe,he]}],animate:[{animate:["none",E,fe,he]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[O,fe,he]}],"perspective-origin":[{"perspective-origin":X()}],rotate:[{rotate:pn()}],"rotate-x":[{"rotate-x":pn()}],"rotate-y":[{"rotate-y":pn()}],"rotate-z":[{"rotate-z":pn()}],scale:[{scale:k()}],"scale-x":[{"scale-x":k()}],"scale-y":[{"scale-y":k()}],"scale-z":[{"scale-z":k()}],"scale-3d":["scale-3d"],skew:[{skew:de()}],"skew-x":[{"skew-x":de()}],"skew-y":[{"skew-y":de()}],transform:[{transform:[fe,he,"","none","gpu","cpu"]}],"transform-origin":[{origin:X()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:Oe()}],"translate-x":[{"translate-x":Oe()}],"translate-y":[{"translate-y":Oe()}],"translate-z":[{"translate-z":Oe()}],"translate-none":["translate-none"],zoom:[{zoom:[Fi,fe,he]}],accent:[{accent:ee()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:ee()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",fe,he]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scrollbar-thumb-color":[{"scrollbar-thumb":ee()}],"scrollbar-track-color":[{"scrollbar-track":ee()}],"scrollbar-gutter":[{"scrollbar-gutter":["auto","stable","both"]}],"scrollbar-w":[{scrollbar:["auto","thin","none"]}],"scroll-m":[{"scroll-m":V()}],"scroll-mx":[{"scroll-mx":V()}],"scroll-my":[{"scroll-my":V()}],"scroll-ms":[{"scroll-ms":V()}],"scroll-me":[{"scroll-me":V()}],"scroll-mbs":[{"scroll-mbs":V()}],"scroll-mbe":[{"scroll-mbe":V()}],"scroll-mt":[{"scroll-mt":V()}],"scroll-mr":[{"scroll-mr":V()}],"scroll-mb":[{"scroll-mb":V()}],"scroll-ml":[{"scroll-ml":V()}],"scroll-p":[{"scroll-p":V()}],"scroll-px":[{"scroll-px":V()}],"scroll-py":[{"scroll-py":V()}],"scroll-ps":[{"scroll-ps":V()}],"scroll-pe":[{"scroll-pe":V()}],"scroll-pbs":[{"scroll-pbs":V()}],"scroll-pbe":[{"scroll-pbe":V()}],"scroll-pt":[{"scroll-pt":V()}],"scroll-pr":[{"scroll-pr":V()}],"scroll-pb":[{"scroll-pb":V()}],"scroll-pl":[{"scroll-pl":V()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",fe,he]}],fill:[{fill:["none",...ee()]}],"stroke-w":[{stroke:[Ye,Ua,Lo,D2]}],stroke:[{stroke:["none",...ee()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{"container-named":["container-type"],overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","inset-bs","inset-be","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pbs","pbe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mbs","mbe","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-bs","border-w-be","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-bs","border-color-be","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mbs","scroll-mbe","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pbs","scroll-pbe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},postfixLookupClassGroups:["container-type"],orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}});function Ya(...n){return Dte(f2(n))}const Mte=Ku("group/alert relative grid w-full gap-0.5 rounded-lg border px-2.5 py-2 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-card text-card-foreground",destructive:"bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current"}},defaultVariants:{variant:"default"}});function qu({className:n,variant:e,...t}){return f.jsx("div",{"data-slot":"alert",role:"alert",className:Ya(Mte({variant:e}),n),...t})}function Ju({className:n,...e}){return f.jsx("div",{"data-slot":"alert-title",className:Ya("font-medium group-has-[>svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground",n),...e})}function eh({className:n,...e}){return f.jsx("div",{"data-slot":"alert-description",className:Ya("text-sm text-balance text-muted-foreground md:text-pretty [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4",n),...e})}var Rte=Object.defineProperty,th=(n,e)=>Rte(n,"name",{value:e,configurable:!0});function nh(n,e){if(typeof n=="function")return n(e);n!=null&&(n.current=e)}th(nh,"setRef");function L2(...n){return e=>{let t=!1;const i=n.map(o=>{const r=nh(o,e);return!t&&typeof r=="function"&&(t=!0),r});if(t)return()=>{for(let o=0;okte(n,"name",{value:e,configurable:!0});function F2(n){const e=L.forwardRef((t,i)=>{let{children:o,...r}=t,A=null,I=!1;const l=[];ih(o)&&typeof yI=="function"&&(o=yI(o._payload)),L.Children.forEach(o,m=>{if(K2(m)){I=!0;const b=m;let w="child"in b.props?b.props.child:b.props.children;ih(w)&&typeof yI=="function"&&(w=yI(w._payload)),A=_te(b,w),l.push(A?.props?.children)}else l.push(m)}),A?A=L.cloneElement(A,void 0,l):!I&&L.Children.count(o)===1&&L.isValidElement(o)&&(A=o);const c=A?H2(A):void 0,h=G2(i,c);if(!A){if(o||o===0)throw new Error(I?Pte(n):Zte(n));return o}const p=Y2(r,A.props??{});return A.type!==L.Fragment&&(p.ref=i?h:c),L.cloneElement(A,p)});return e.displayName=`${n}.Slot`,e}Oi(F2,"createSlot");var V2=F2("Slot"),U2=Symbol.for("radix.slottable");function zte(n){const e=Oi(t=>"child"in t?t.children(t.child):t.children,"Slottable");return e.displayName=`${n}.Slottable`,e.__radixId=U2,e}Oi(zte,"createSlottable");var _te=Oi((n,e)=>{if("child"in n.props){const t=n.props.child;return L.isValidElement(t)?L.cloneElement(t,void 0,n.props.children(t.props.children)):null}return L.isValidElement(e)?e:null},"getSlottableElementFromSlottable");function Y2(n,e){const t={...e};for(const i in e){const o=n[i],r=e[i];/^on[A-Z]/.test(i)?o&&r?t[i]=(...I)=>{const l=r(...I);return o(...I),l}:o&&(t[i]=o):i==="style"?t[i]={...o,...r}:i==="className"&&(t[i]=[o,r].filter(Boolean).join(" "))}return{...n,...t}}Oi(Y2,"mergeProps");function H2(n){let e=Object.getOwnPropertyDescriptor(n.props,"ref")?.get,t=e&&"isReactWarning"in e&&e.isReactWarning;return t?n.ref:(e=Object.getOwnPropertyDescriptor(n,"ref")?.get,t=e&&"isReactWarning"in e&&e.isReactWarning,t?n.props.ref:n.props.ref||n.ref)}Oi(H2,"getElementRef");function K2(n){return L.isValidElement(n)&&typeof n.type=="function"&&"__radixId"in n.type&&n.type.__radixId===U2}Oi(K2,"isSlottable");var jte=Symbol.for("react.lazy");function ih(n){return n!=null&&typeof n=="object"&&"$$typeof"in n&&n.$$typeof===jte&&"_payload"in n&&W2(n._payload)}Oi(ih,"isLazyComponent");function W2(n){return typeof n=="object"&&n!==null&&"then"in n}Oi(W2,"isPromiseLike");var Zte=Oi(n=>`${n} failed to slot onto its children. Expected a single React element child or \`Slottable\`.`,"createSlotError"),Pte=Oi(n=>`${n} failed to slot onto its \`Slottable\`. Expected \`Slottable\` to receive a single React element child.`,"createSlottableError"),yI=y3[" use ".trim().toString()];const Bte=Ku("group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!",{variants:{variant:{default:"bg-primary text-primary-foreground [a]:hover:bg-primary/80",secondary:"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",destructive:"bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20",outline:"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground",ghost:"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50",link:"text-primary underline-offset-4 hover:underline"}},defaultVariants:{variant:"default"}});function Hg({className:n,variant:e="default",asChild:t=!1,...i}){const o=t?V2:"span";return f.jsx(o,{"data-slot":"badge","data-variant":e,className:Ya(Bte({variant:e}),n),...i})}const Lte=Ku("group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/80",outline:"border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-[color-mix(in_oklch,var(--secondary),var(--foreground)_5%)] aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",ghost:"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",destructive:"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",xs:"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",lg:"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",icon:"size-8","icon-xs":"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg","icon-lg":"size-9"}},defaultVariants:{variant:"default",size:"default"}});function gh({className:n,variant:e="default",size:t="default",asChild:i=!1,...o}){const r=i?V2:"button";return f.jsx(r,{"data-slot":"button","data-variant":e,"data-size":t,className:Ya(Lte({variant:e,size:t,className:n})),...o})}const oh={resolved:0,inferred:1,ambiguous:2,unresolved:3};function Gte({graph:n,host:e}){const t=new Map,i=Fte(n);for(const r of n.edges){const A=t.get(r.target);(!A||oh[r.resolution]>oh[A])&&t.set(r.target,r.resolution)}const o={schema:"compass.viewer.graph/1",title:`Calls from ${n.nodes.find(r=>r.id===n.rootSymbol)?.name??n.rootSymbol}`,stats:{nodes:n.nodes.length,edges:n.edges.length,communities:4,aggregated:!1},nodes:n.nodes.map(r=>({id:r.id,label:r.name,kind:r.unresolved?"Unresolved call":"Function",community:oh[t.get(r.id)??"resolved"],communityName:t.get(r.id)??"resolved",depth:i.get(r.id),root:r.id===n.rootSymbol,source:Vte(r)})),edges:n.edges.map(r=>({id:r.id,source:r.source,target:r.target,relation:`${r.callee} · ${r.resolution}`,confidence:r.resolution==="resolved"?"extracted":r.resolution==="inferred"?"inferred":"ambiguous"})),communities:[{id:0,label:"Resolved",color:"#59A14F",hidden:!1},{id:1,label:"Inferred",color:"#4E79A7",hidden:!1},{id:2,label:"Ambiguous",color:"#F28E2B",hidden:!1},{id:3,label:"Unresolved",color:"#E15759",hidden:!1}],hyperedges:[]};return f.jsx(Fu,{model:o,host:e,preferredLayout:"hierarchical"})}function Fte(n){const e=new Map;for(const o of n.edges){const r=e.get(o.source)??[];r.push(o.target),e.set(o.source,r);const A=e.get(o.target)??[];A.push(o.source),e.set(o.target,A)}const t=new Map([[n.rootSymbol,0]]),i=[n.rootSymbol];for(;i.length>0;){const o=i.shift();if(o===void 0)break;const r=t.get(o)??0;for(const A of e.get(o)??[])t.has(A)||(t.set(A,r+1),i.push(A))}return t}function Vte(n){if(n.anchor)return{file:n.anchor.source_file,startByte:n.anchor.start_byte,endByte:n.anchor.end_byte};if(n.file)return{file:n.file,...n.startLine!=null?{startLine:n.startLine}:{},...n.endLine!=null?{endLine:n.endLine}:{},...n.startByte!=null?{startByte:n.startByte}:{},...n.endByte!=null?{endByte:n.endByte}:{}}}function Ute({coverage:n}){return!n.partial&&n.unresolved===0&&n.ambiguous===0?null:f.jsxs(qu,{children:[f.jsx(Ju,{children:"Partial call coverage"}),f.jsx(eh,{children:n.warning})]})}function Yte({graph:n,host:e}){const[t,i]=L.useState(!1),o=t?n.continuations:n.continuations.slice(0,20),r=n.direction==="callers"?"No callers found":n.direction==="callees"?"No callees found":"No calls found";return f.jsxs("div",{className:"call-graph-view relative h-screen",children:[f.jsx(Gte,{graph:n,host:e}),f.jsx("div",{className:"call-graph-direction absolute top-2 left-1/2 z-20 flex -translate-x-1/2 gap-1 rounded-md border bg-popover/95 p-1 shadow-lg backdrop-blur",role:"group","aria-label":"Call graph direction",children:[["callers","Callers"],["both","Both"],["callees","Callees"]].map(([A,I])=>f.jsx(gh,{size:"sm",variant:n.direction===A?"secondary":"ghost","aria-pressed":n.direction===A,disabled:!e.changeDirection,onClick:()=>{n.direction!==A&&e.changeDirection?.(A)},children:I},A))}),f.jsxs("section",{className:"call-graph-summary absolute bottom-3 left-3 z-20 flex max-w-[min(44rem,calc(100%-1.5rem))] flex-col gap-2 rounded-md border bg-popover/95 p-3 text-popover-foreground shadow-xl backdrop-blur",children:[f.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[f.jsxs(Hg,{variant:"outline",children:[f.jsx(lc,{})," depth ",n.depth]}),f.jsxs(Hg,{variant:"outline",children:[n.nodes.length," ",n.nodes.length===1?"node":"nodes"]}),f.jsxs(Hg,{variant:"outline",children:[n.edges.length," ",n.edges.length===1?"edge":"edges"]}),f.jsxs(Hg,{variant:"secondary",children:[n.coverage.resolved," resolved"]}),f.jsxs(Hg,{variant:"outline",children:[n.coverage.inferred," inferred"]}),f.jsxs(Hg,{variant:"outline",children:[n.coverage.ambiguous," ambiguous"]}),f.jsxs(Hg,{variant:"destructive",children:[n.coverage.unresolved," unresolved"]}),n.coverage.evidenceLayer&&f.jsx(Hg,{variant:"outline",children:Hte(n.coverage.evidenceLayer)})]}),n.edges.length===0&&f.jsxs(qu,{children:[f.jsx(Ju,{children:r}),f.jsx(eh,{children:"Compass found the root function but no represented relationships in this direction."})]}),n.truncated&&f.jsxs(qu,{children:[f.jsx(qA,{}),f.jsx(Ju,{children:"Partial call graph"}),f.jsx(eh,{children:"Compass reached the configured graph limit. Counts and paths may be incomplete."})]}),f.jsx(Ute,{coverage:n.coverage}),n.continuations.length>0&&f.jsxs("div",{children:[f.jsx("div",{className:"flex max-h-24 flex-wrap gap-1 overflow-auto","aria-label":"Call graph continuations",children:o.map(A=>f.jsxs(gh,{size:"xs",variant:"outline",disabled:!e.expand,onClick:()=>e.expand?.(A.symbol,A.direction,A.nextDepth),children:[A.direction==="callers"?f.jsx(M3,{}):A.direction==="callees"?f.jsx(O3,{}):f.jsx(iv,{}),"Expand ",A.direction]},`${A.symbol}:${A.direction}:${A.nextDepth}`))}),!t&&n.continuations.length>o.length&&f.jsxs("div",{className:"mt-2 flex flex-wrap items-center justify-between gap-2",children:[f.jsxs("p",{className:"text-xs text-muted-foreground",role:"status",children:["Showing ",o.length," of ",n.continuations.length," continuations"]}),f.jsxs(gh,{size:"xs",variant:"outline",onClick:()=>i(!0),children:["Show all ",n.continuations.length," continuations"]})]})]})]})]})}function Hte(n){return n.split("_").map((e,t)=>t===0?`${e.slice(0,1).toUpperCase()}${e.slice(1)}`:e).join(" ")}const Q2=0;function Kte(n,e){const t=new Set(n.nodes.map(l=>l.id)),i=n.edges.filter(l=>t.has(l.source)&&t.has(l.target)).map(Qte),o=new Map;for(const l of i)o.set(l.source,(o.get(l.source)??0)+1),o.set(l.target,(o.get(l.target)??0)+1);const r=$te(n),A=new Set(n.paths.flatMap(l=>l.nodeIds.slice(0,1))),I=n.nodes.map(l=>Wte(l,o.get(l.id)??0,r.get(l.id),A.has(l.id)));return{schema:"compass.viewer.graph/1",title:e,stats:{nodes:I.length,edges:i.length,communities:I.length>0?1:0,aggregated:!1},nodes:I,edges:i,communities:I.length>0?[{id:Q2,label:"Query result",color:"#6f7bf7",hidden:!1}]:[],hyperedges:[]}}function Wte(n,e,t,i){const o=n.details?.type==="symbol"?n.details.data.signature??void 0:void 0;return{id:n.id,label:n.name,kind:n.kind,community:Q2,communityName:"Query result",degree:e,...t!==void 0?{depth:t}:{},...i?{root:!0}:{},...n.language?{language:n.language}:{},...o?{signature:o}:{},...n.source?{source:n.source}:{},codeEvidence:n.evidence}}function Qte(n){const e=Xte(n);return{id:n.id,source:n.source,target:n.target,relation:n.kind,...n.relationshipSite?{relationshipSite:n.relationshipSite}:{},...n.details?{details:n.details}:{},...e?{confidence:e}:{},codeEvidence:n.evidence}}function Xte(n){return n.evidence.some(e=>e.confidence==="ambiguous")?"ambiguous":n.evidence.some(e=>e.confidence==="inferred")?"inferred":n.evidence.length>0?"extracted":void 0}function $te(n){const e=new Map;for(const t of n.paths)t.nodeIds.forEach((i,o)=>{const r=e.get(i);(r===void 0||o[x.id,x])),i=new Map(e.nodes.map(x=>[x.id,x])),o=new Map,r=[],A=X2(i,t),I=X2(t,i),l=new Map(Jte(i,t).map(x=>[x,Av(t.get(x),i.get(x),"node")])),c=[...l.entries()].filter(([,x])=>x.fields.length>0).map(([x])=>x),h=tne(n.edges,e.edges),p=h.matched.map(({before:x,after:S})=>({before:x,after:S,evidence:ene(x,S)})).filter(({evidence:x})=>x.fields.length>0);for(const x of A)sh(o,i.get(x),"added",JA(void 0,i.get(x)));for(const x of I)sh(o,t.get(x),"removed",JA(t.get(x),void 0));for(const x of c)sh(o,i.get(x),"changed",l.get(x));for(const x of h.added)r.push({...x,change:"added",evidence:JA(void 0,x)}),rh(o,x,t,i);for(const x of h.removed)r.push({...x,change:"removed",evidence:JA(x,void 0)}),rh(o,x,t,i);for(const{after:x,evidence:S}of p)r.push({...x,change:"changed",evidence:S}),rh(o,x,t,i);const m=[...o.values()].sort((x,S)=>x.id.localeCompare(S.id));r.sort((x,S)=>x.id.localeCompare(S.id));const b=nne(r),w=new Set(m.map(x=>x.community)),O=[...e.communities,...n.communities.filter(x=>!e.communities.some(S=>S.id===x.id))].filter(x=>w.has(x.id));return{addedNodes:A.length,removedNodes:I.length,changedNodes:c.length,addedEdges:h.added.length,removedEdges:h.removed.length,changedEdges:p.length,graph:{...e,title:`Graph delta · ${e.title}`,stats:{...e.stats,nodes:m.length,edges:b.length,communities:O.length,aggregated:n.stats.aggregated||e.stats.aggregated},nodes:m,edges:b,communities:O,hyperedges:[]}}}function X2(n,e){return[...n.keys()].filter(t=>!e.has(t))}function Jte(n,e){return[...n.keys()].filter(t=>e.has(t))}function sh(n,e,t,i){e&&n.set(e.id,{...e,change:t,...i?{evidence:i}:{}})}function $2(n,e,t,i){if(n.has(e))return;const o=i.get(e)??t.get(e);o&&n.set(e,{...o,change:"unchanged"})}function rh(n,e,t,i){$2(n,e.source,t,i),$2(n,e.target,t,i)}function ene(n,e){return Av({...n,id:e.id},e,"edge")}function tne(n,e){const t=new Set,i=new Set,o=[],r=(I,l)=>{t.add(I),i.add(l),o.push({before:n[I],after:e[l]})};q2(n,e,t,i,r,I=>xI(I.id)?void 0:I.id),q2(n,e,t,i,r,I=>xI(I.id)?ah(I):void 0);const A=new Map;n.forEach((I,l)=>{if(t.has(l)||!xI(I.id))return;const c=A.get(wI(I))??{parent:[],current:[]};c.parent.push(l),A.set(wI(I),c)}),e.forEach((I,l)=>{if(i.has(l)||!xI(I.id))return;const c=A.get(wI(I))??{parent:[],current:[]};c.current.push(l),A.set(wI(I),c)});for(const I of A.values()){I.parent.sort((c,h)=>J2(n[c],n[h])),I.current.sort((c,h)=>J2(e[c],e[h]));const l=Math.min(I.parent.length,I.current.length);for(let c=0;c!i.has(l)),removed:n.filter((I,l)=>!t.has(l))}}function q2(n,e,t,i,o,r){const A=new Map;e.forEach((I,l)=>{if(i.has(l))return;const c=r(I);if(c===void 0)return;const h=A.get(c)??[];h.push(l),A.set(c,h)}),n.forEach((I,l)=>{if(t.has(l))return;const c=r(I);if(c===void 0)return;const p=A.get(c)?.shift();p!==void 0&&o(l,p)})}function ah(n){return JSON.stringify(o_(n,"edge"))}function wI(n){return JSON.stringify([n.source,n.target,n.relation])}function J2(n,e){return ah(n).localeCompare(ah(e))||n.id.localeCompare(e.id)}function xI(n){return/^edge-\d+-/.test(n)}function nne(n){const e=new Map;return n.map(t=>{const i=e.get(t.id)??0;return e.set(t.id,i+1),i===0?t:{...t,id:`${t.id}::${t.change}-${i}`}})}function ine({workbench:n,host:e,communityDetail:t,communityLoading:i,communityError:o,onBackToOverview:r,initialInspectorLayout:A,onInspectorLayoutChange:I}){const[l,c]=L.useState(()=>tE(n)??n.defaultView),[h,p]=L.useState(!1),m=n.views.find(w=>w.id===l)??n.views[0];L.useEffect(()=>{const w=()=>{const O=tE(n);O&&c(O)};return window.addEventListener("hashchange",w),()=>window.removeEventListener("hashchange",w)},[n]);const b=w=>{c(w);const O=`view=${encodeURIComponent(w)}`;window.location.hash.slice(1)!==O&&(window.location.hash=O)};return m?f.jsxs("div",{className:"visualization-workbench","data-navigation-collapsed":h,children:[f.jsxs("aside",{className:"visualization-rail","data-collapsed":h,"aria-label":"Compass navigation",children:[f.jsxs("header",{children:[f.jsx("span",{className:"visualization-bearing","aria-hidden":"true",children:f.jsx(t_,{})}),f.jsxs("span",{children:[f.jsx("strong",{children:"Compass"}),f.jsx("small",{title:n.title,children:n.title})]}),f.jsx("button",{className:"visualization-rail-disclosure",type:"button","aria-label":h?"Expand graph navigation":"Collapse graph navigation",title:h?"Expand graph navigation":"Collapse graph navigation",onClick:()=>p(w=>!w),children:h?f.jsx(H3,{"aria-hidden":"true"}):f.jsx(Y3,{"aria-hidden":"true"})})]}),f.jsx("nav",{"aria-label":"Graph views",children:n.views.map(w=>f.jsxs("button",{type:"button","aria-current":w.id===m.id?"page":void 0,onClick:()=>b(w.id),children:[f.jsx(ane,{view:w}),f.jsxs("span",{children:[f.jsx("strong",{children:w.title}),f.jsx("small",{children:w.description})]}),f.jsx("i",{"data-status":w.coverage.status,title:`${w.coverage.status} view`})]},w.id))}),f.jsxs("footer",{children:[f.jsx("span",{children:"Snapshot"}),f.jsx("code",{children:Ane(n.graphIdentity)})]})]}),f.jsxs("main",{className:"visualization-main",children:[f.jsxs("header",{className:"visualization-context",children:[f.jsxs("div",{children:[f.jsx("span",{children:Cne(m)}),f.jsx("strong",{children:m.title})]}),f.jsxs("div",{className:"visualization-coverage","data-status":m.coverage.status,children:[m.kind!=="call"&&f.jsxs(f.Fragment,{children:[f.jsxs("span",{children:[m.coverage.nodes.toLocaleString()," nodes"]}),f.jsxs("span",{children:[m.coverage.edges.toLocaleString()," relationships"]})]}),f.jsx("strong",{children:Ine(m)})]})]}),f.jsx("section",{className:"visualization-stage","aria-label":`${m.title} visualization`,children:f.jsx(gne,{view:m,host:e,communityDetail:t,communityLoading:i,communityError:o,onBackToOverview:r,initialInspectorLayout:A,onInspectorLayoutChange:I},m.id)})]})]}):null}function gne({view:n,host:e,communityDetail:t,communityLoading:i,communityError:o,onBackToOverview:r,initialInspectorLayout:A,onInspectorLayoutChange:I}){if(n.kind==="call")return f.jsx(Yte,{graph:n.graph,host:{openSource:e.openSource,...e.expandCall?{expand:e.expandCall}:{},...e.changeCallDirection?{changeDirection:e.changeCallDirection}:{}}});if(n.kind==="architecture")return f.jsx(one,{model:n.model,host:e});if(n.kind==="impact")return f.jsx(Ah,{model:Kte(n.result,n.title),host:e,queryResult:n.result,preferredLayout:"hierarchical"});if(n.kind==="history"){const c=qte(n.before,n.after);return f.jsxs("div",{className:"workbench-history-view",children:[f.jsxs("div",{className:"workbench-history-banner",children:[f.jsx(Jm,{"aria-hidden":"true"}),f.jsxs("span",{children:[f.jsxs("strong",{children:[n.baseRevision," → ",n.targetRevision]}),f.jsxs("small",{children:["+",c.addedNodes," / −",c.removedNodes," / Δ",c.changedNodes," nodes"]})]})]}),f.jsx(Ah,{model:c.graph,host:e,preferredLayout:"grid",sourceRevisions:{before:n.baseRevision,after:n.targetRevision}})]})}const l=n.kind==="affected"?"hierarchical":n.kind==="artifact"?n.lens==="routes"?"hierarchical":"grid":"automatic";return f.jsx(Ah,{model:n.model,host:e,preferredLayout:l,communityDetails:n.kind==="code"?n.communityDetails:void 0,communityDetail:n.kind==="code"?t:void 0,communityLoading:n.kind==="code"?i:void 0,communityError:n.kind==="code"?o:void 0,onBackToOverview:n.kind==="code"?r:void 0,initialInspectorLayout:A,onInspectorLayoutChange:I})}function Ah({model:n,host:e,queryResult:t,sourceRevisions:i,preferredLayout:o,communityDetails:r,communityDetail:A,communityLoading:I,communityError:l,onBackToOverview:c,initialInspectorLayout:h,onInspectorLayoutChange:p}){const[m,b]=L.useState(""),[w,O]=L.useState(""),[x,S]=L.useState(""),[E,_]=L.useState(""),[j,X]=L.useState(),[ne,F]=L.useState(!1),V=L.useId(),Ie=L.useRef(null),Ee=L.useRef(null),xe=(j===void 0?void 0:{communityId:j,model:r?.[String(j)]??n})??A,He=xe?.model??n,Fe=xe?`community-${xe.communityId}`:"overview",le=L.useMemo(()=>sne(He),[He]),R=L.useMemo(()=>rne(He,{relation:m,evidence:w,kind:x,language:E}),[He,w,x,E,m]);L.useEffect(()=>{b(""),O(""),S(""),_(""),F(!1)},[Fe]),L.useEffect(()=>{if(!ne)return;const T=ie=>{ie.key==="Escape"&&(F(!1),Ie.current?.focus())},U=ie=>{const ae=ie.target;Ie.current?.contains(ae)||Ee.current?.contains(ae)||F(!1)};return document.addEventListener("keydown",T),document.addEventListener("pointerdown",U),()=>{document.removeEventListener("keydown",T),document.removeEventListener("pointerdown",U)}},[ne]);const Q=L.useCallback(()=>{b(""),O(""),S(""),_("")},[]),H=L.useCallback(()=>F(!1),[]),ge=[m,w,x,E].filter(Boolean).length,ee=ge>0&&R.nodes.length===0;return f.jsx("div",{className:"workbench-graph-lens",children:f.jsx(Fu,{model:xe?n:R,communityDetail:xe?{...xe,model:R}:void 0,communityLoading:I,communityError:l,onBackToOverview:j===void 0?c:()=>X(void 0),initialInspectorLayout:h,onInspectorLayoutChange:p,host:{...e,openCommunity:T=>{r?.[String(T)]?X(T):e.openCommunity?.(T)}},queryResult:t,sourceRevisions:i,showInspectorHeader:!1,preferredLayout:o,toolbarLeading:f.jsxs("button",{ref:Ie,className:"workbench-filter-trigger",type:"button","aria-label":"Graph filters","aria-expanded":ne,"aria-controls":V,onClick:()=>F(T=>!T),children:[f.jsx(J3,{"aria-hidden":"true"}),f.jsx("span",{children:"Filters"}),ge>0?f.jsx("b",{children:ge}):null,f.jsxs("small",{children:[R.nodes.length.toLocaleString()," / ",He.nodes.length.toLocaleString()]})]}),toolbarLeadingPanel:ne?f.jsxs("div",{ref:Ee,id:V,className:"workbench-filter-popover",role:"region","aria-label":"Graph filter options",children:[f.jsxs("header",{children:[f.jsxs("span",{children:[f.jsx("strong",{children:"Filter graph"}),f.jsx("small",{children:"Refine visible nodes and relationships"})]}),f.jsx("button",{type:"button",disabled:ge===0,onClick:Q,children:"Clear filters"})]}),f.jsx(Fo,{label:"Relationship",value:m,values:le.relations,onChange:b}),f.jsx(Fo,{label:"Evidence",value:w,values:le.evidence,onChange:O}),f.jsx(Fo,{label:"Node kind",value:x,values:le.kinds,onChange:S}),f.jsx(Fo,{label:"Language",value:E,values:le.languages,onChange:_}),f.jsx("footer",{role:"status",children:ee?"No nodes match these filters":`Showing ${R.nodes.length.toLocaleString()} of ${He.nodes.length.toLocaleString()} nodes`})]}):void 0,toolbarLeadingOpen:ne,onToolbarLeadingClose:H,stageOverlay:He.nodes.length===0?f.jsx(eE,{title:"This view has no graph nodes",detail:"The exported graph lens did not contain any nodes to visualize."}):ee&&!ne?f.jsx(eE,{title:"No nodes match these filters",detail:"Clear one or more filters to restore the graph.",onClear:Q}):void 0})})}function eE({title:n,detail:e,onClear:t}){return f.jsxs("div",{className:"workbench-graph-empty",role:"status",children:[f.jsx(cc,{"aria-hidden":"true"}),f.jsx("strong",{children:n}),f.jsx("span",{children:e}),t?f.jsx("button",{type:"button",onClick:t,children:"Clear filters"}):null]})}function Fo({label:n,value:e,values:t,onChange:i}){return f.jsxs("label",{children:[f.jsx("span",{children:n}),f.jsxs("select",{value:e,onChange:o=>i(o.target.value),children:[f.jsx("option",{value:"",children:"All"}),t.map(o=>f.jsx("option",{value:o,children:Ch(o)},o))]})]})}function one({model:n,host:e}){const[t,i]=L.useState("production"),[o,r]=L.useState("all"),[A,I]=L.useState("architecture"),l=L.useMemo(()=>Pee(n,{scope:t,evidence:o,lens:A}),[o,A,n,t]),c=l.groups.find(E=>E.nodeCount>0),[h,p]=L.useState(c?{kind:"group",id:c.id}:void 0),m=n.projections.find(E=>E.scope===(t==="all"?"all_code":"production")),b=h?.kind==="group"?m?.groups.find(E=>E.id===h.id):void 0,w=new Set(m?.groups.filter(E=>E.parentId===b?.id).map(E=>E.id)??[]),O=new Set(m?.memberships.filter(E=>{const _=m.groups[E.groupIndex]?.id;return _===b?.id||_!==void 0&&w.has(_)}).map(E=>n.nodes[E.nodeIndex]?.id).filter(E=>E!==void 0)??[]),x=n.nodes.filter(E=>O.has(E.id)),S=h?.kind==="route"?l.routes.find(E=>E.id===h.id):void 0;return f.jsxs("div",{className:"workbench-architecture",children:[f.jsxs("div",{className:"workbench-filter-strip","aria-label":"Architecture filters",children:[f.jsx(Fo,{label:"Source scope",value:t,values:["production","all"],onChange:E=>i(E)}),f.jsx(Fo,{label:"Evidence",value:o,values:["all","extracted","inferred","ambiguous"],onChange:E=>r(E)}),f.jsx(Fo,{label:"Lens",value:A,values:["architecture","execution","dependency","type","structure","all"],onChange:E=>I(E)}),f.jsxs("label",{children:["Subsystem directory",f.jsxs("select",{"aria-label":"Subsystem directory",value:b?.id??"",onChange:E=>E.target.value&&p({kind:"group",id:E.target.value}),children:[f.jsx("option",{value:"",children:"Select a subsystem"}),m?.groups.map(E=>f.jsxs("option",{value:E.id,children:[E.name.value," · ",E.nodeCount.toLocaleString()," symbols"]},E.id))]})]}),f.jsxs("span",{role:"status",children:[l.statistics.visibleRelationships.toLocaleString()," visible relationships"]}),f.jsxs("span",{role:"status",children:["Architecture quality: ",l.quality.status]}),f.jsxs("span",{role:"status",children:[l.omissions.shownGroups.toLocaleString()," of ",l.omissions.totalGroups.toLocaleString()," groups shown",l.omissions.omittedGroups>0?` · ${l.omissions.omittedGroups.toLocaleString()} available in directory`:""]})]}),f.jsxs("div",{className:"workbench-architecture-body",children:[f.jsx(Ree,{overview:l,selection:h,onSelect:p}),f.jsx("aside",{"aria-label":"Architecture details",children:b?f.jsxs(f.Fragment,{children:[f.jsx("span",{children:"Subsystem"}),f.jsx("h2",{children:b.name.value}),f.jsxs("p",{children:[x.length.toLocaleString()," symbols · ",b.relationshipCount.toLocaleString()," related relationships"]}),f.jsxs("small",{children:["Name source: ",b.name.provenance," · quality ",b.name.quality,"/100"]}),f.jsx("div",{className:"workbench-symbol-list",children:x.slice(0,100).map(E=>f.jsxs("button",{type:"button",disabled:!E.sourceFile,onClick:()=>E.sourceFile&&e.openSource({file:E.sourceFile}),children:[f.jsx("strong",{children:E.label}),f.jsxs("small",{children:[E.kind,E.sourceFile?` · ${E.sourceFile}`:""]})]},E.id))})]}):S?f.jsxs(f.Fragment,{children:[f.jsx("span",{children:"Subsystem route"}),f.jsxs("h2",{children:[nE(l,S.sourceGroup)," → ",nE(l,S.targetGroup)]}),f.jsxs("p",{children:[S.relationships.toLocaleString()," relationships cross this boundary."]})]}):f.jsx("p",{children:"Select a subsystem or route."})})]})]})}function sne(n){const e=t=>[...new Set(t.filter(i=>!!i))].sort();return{relations:e(n.edges.map(t=>t.relation)),evidence:e(n.edges.map(t=>t.confidence)),kinds:e(n.nodes.map(t=>t.kind)),languages:e(n.nodes.map(t=>t.language))}}function rne(n,e){const t=n.nodes.filter(I=>(!e.kind||I.kind===e.kind)&&(!e.language||I.language===e.language));let i=new Set(t.map(I=>I.id));const o=n.edges.filter(I=>i.has(I.source)&&i.has(I.target)&&(!e.relation||I.relation===e.relation)&&(!e.evidence||I.confidence===e.evidence));if(e.relation||e.evidence){const I=new Set(o.flatMap(l=>[l.source,l.target]));for(const l of t)l.root&&I.add(l.id);i=I}const r=t.filter(I=>i.has(I.id)),A=new Set(r.map(I=>I.community));return{...n,stats:{...n.stats,nodes:r.length,edges:o.length,communities:A.size},nodes:r,edges:o,communities:n.communities.filter(I=>A.has(I.id))}}function ane({view:n}){const e=n.kind==="code"?cc:n.kind==="call"?lc:n.kind==="impact"?_3:n.kind==="architecture"?k3:n.kind==="history"?Jm:n.kind==="affected"?$3:n.lens==="routes"?ov:n.lens==="provenance"?z3:Q3;return f.jsx(e,{"aria-hidden":"true"})}function tE(n){const e=new URLSearchParams(window.location.hash.slice(1)).get("view");return e&&n.views.some(t=>t.id===e)?e:void 0}function Ane(n){const e=n.startsWith("sha256:")?n.slice(7):n;return e.length>12?e.slice(0,12):e}function Cne(n){return n.kind==="artifact"?`${Ch(n.lens)} lens`:`${Ch(n.kind)} graph`}function Ine(n){return n.kind==="architecture"?n.coverage.status==="complete"?"Extraction complete":n.coverage.status==="summary"?"Extraction summary":"Extraction bounded":n.coverage.status==="complete"?"Complete":n.coverage.status==="summary"?"Community summary":"Bounded result"}function Ch(n){return n.replaceAll("_"," ").replace(/\b\w/g,e=>e.toUpperCase())}function nE(n,e){return n.groups.find(t=>t.id===e)?.name??e}const lne=ce({provider:Be(["github","gitlab","bitbucket"]),repositoryUrl:M().url(),revision:M().regex(/^(?:[0-9a-f]{40}|[0-9a-f]{64})$/i)});function cne(n,e,t=n.revision){if(!une(t))return;const i=hne(e.file);if(!i)return;const o=n.repositoryUrl.replace(/\/$/,""),r=fne(n.provider,e);return n.provider==="gitlab"?`${o}/-/blob/${t}/${i}${r}`:n.provider==="bitbucket"?`${o}/src/${t}/${i}${r}`:`${o}/blob/${t}/${i}${r}`}function dne(n,e,t){if(window.dispatchEvent(new CustomEvent("compass:open-source",{detail:e})),!n)return{kind:"unavailable"};const i=cne(n,e,t??n.revision);if(!i)return{kind:"unavailable"};const o=document.createElement("a");return o.href=i,o.target="_blank",o.rel="noopener noreferrer",o.click(),{kind:"opened",url:i}}function une(n){return/^(?:[0-9a-f]{40}|[0-9a-f]{64})$/i.test(n)}function hne(n){if(!n||n.startsWith("/")||n.startsWith("\\")||n.includes("\0"))return;const e=n.replaceAll("\\","/").split("/");if(!e.some(t=>!t||t==="."||t===".."))return e.map(encodeURIComponent).join("/")}function fne(n,e){const t=e.startLine;if(t===void 0)return"";const i=Math.max(t,e.endLine??t);return n==="gitlab"?i===t?`#L${t}`:`#L${t}-${i}`:n==="bitbucket"?i===t?`#lines-${t}`:`#lines-${t}:${i}`:i===t?`#L${t}`:`#L${t}-L${i}`}function iE(){const n=document.getElementById("compass-viewer-root"),e=document.getElementById("compass-viewer-model");if(!n||!e)throw new Error("Compass viewer root or model is missing");const t=JSON.parse(e.textContent??""),i=pne(),o=cN.createRoot(n),r=b3.safeParse(t);if(r.success){o.render(f.jsx(ine,{workbench:r.data,host:{openSource(m,b){gE(i,m,b)}}}));return}const A=Tg.parse(t),I=new Map;let l,c=null,h;const p=()=>{o.render(f.jsx(Fu,{model:A,communityDetail:l,communityLoading:c,communityError:h,onBackToOverview:l?()=>{l=void 0,h=void 0,p()}:void 0,host:{openSource(m,b){gE(i,m,b)},openCommunity(m){c===null&&(c=m,h=void 0,p(),window.setTimeout(()=>{try{let b=I.get(m);if(!b){const w=document.querySelector(`script[data-compass-community="${m}"]`);if(!w)throw new Error(`Community ${m} detail is unavailable in this export.`);b=Tg.parse(JSON.parse(w.textContent??"")),I.set(m,b)}l={communityId:m,model:b},window.dispatchEvent(new CustomEvent("compass:open-community",{detail:{communityId:m}}))}catch(b){h=b instanceof Error?b.message:String(b)}finally{c=null,p()}},0))}}}))};p()}function pne(){const n=document.getElementById("compass-source-navigation");if(!n?.textContent)return;const e=lne.safeParse(JSON.parse(n.textContent));return e.success?e.data:void 0}function gE(n,e,t){dne(n,e,t).kind==="unavailable"&&mne(e.file)}function mne(n){const e=document.getElementById("compass-source-notice"),t=e??document.createElement("div");t.id="compass-source-notice",t.className="compass-source-notice",t.setAttribute("role","status"),t.setAttribute("aria-live","polite"),t.textContent=["Source link unavailable.",`The exported revision for ${n} is not published by the configured remote.`,"Open this graph in VS Code to navigate to the local source."].join(" "),e||document.body.append(t)}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",iE,{once:!0}):iE()})(); +`;xo(nee);class iee{constructor(e,t,i,o){var r,A;this.body=e,this.canvas=t,this.selectionHandler=i,this.interactionHandler=o,this.editMode=!1,this.manipulationDiv=void 0,this.editModeDiv=void 0,this.closeDiv=void 0,this._domEventListenerCleanupQueue=[],this.temporaryUIFunctions={},this.temporaryEventFunctions=[],this.touchTime=0,this.temporaryIds={nodes:[],edges:[]},this.guiEnabled=!1,this.inMode=!1,this.selectedControlNode=void 0,this.options={},this.defaultOptions={enabled:!1,initiallyActive:!1,addNode:!0,addEdge:!0,editNode:void 0,editEdge:!0,deleteNode:!0,deleteEdge:!0,controlNodeStyle:{shape:"dot",size:6,color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968",border:"#3c3c3c"}},borderWidth:2,borderWidthSelected:2}},Yt(this.options,this.defaultOptions),this.body.emitter.on("destroy",()=>{this._clean()}),this.body.emitter.on("_dataChanged",ge(r=this._restore).call(r,this)),this.body.emitter.on("_resetData",ge(A=this._restore).call(A,this))}_restore(){this.inMode!==!1&&(this.options.initiallyActive===!0?this.enableEditMode():this.disableEditMode())}setOptions(e,t,i){t!==void 0&&(t.locale!==void 0?this.options.locale=t.locale:this.options.locale=i.locale,t.locales!==void 0?this.options.locales=t.locales:this.options.locales=i.locales),e!==void 0&&(typeof e=="boolean"?this.options.enabled=e:(this.options.enabled=!0,vt(this.options,e)),this.options.initiallyActive===!0&&(this.editMode=!0),this._setup())}toggleEditMode(){this.editMode===!0?this.disableEditMode():this.enableEditMode()}enableEditMode(){this.editMode=!0,this._clean(),this.guiEnabled===!0&&(this.manipulationDiv.style.display="block",this.closeDiv.style.display="block",this.editModeDiv.style.display="none",this.showManipulatorToolbar())}disableEditMode(){this.editMode=!1,this._clean(),this.guiEnabled===!0&&(this.manipulationDiv.style.display="none",this.closeDiv.style.display="none",this.editModeDiv.style.display="block",this._createEditButton())}showManipulatorToolbar(){if(this._clean(),this.manipulationDOM={},this.guiEnabled===!0){var e,t;this.editMode=!0,this.manipulationDiv.style.display="block",this.closeDiv.style.display="block";const i=this.selectionHandler.getSelectedNodeCount(),o=this.selectionHandler.getSelectedEdgeCount(),r=i+o,A=this.options.locales[this.options.locale];let I=!1;this.options.addNode!==!1&&(this._createAddNodeButton(A),I=!0),this.options.addEdge!==!1&&(I===!0?this._createSeperator(1):I=!0,this._createAddEdgeButton(A)),i===1&&typeof this.options.editNode=="function"?(I===!0?this._createSeperator(2):I=!0,this._createEditNodeButton(A)):o===1&&i===0&&this.options.editEdge!==!1&&(I===!0?this._createSeperator(3):I=!0,this._createEditEdgeButton(A)),r!==0&&(i>0&&this.options.deleteNode!==!1?(I===!0&&this._createSeperator(4),this._createDeleteButton(A)):i===0&&this.options.deleteEdge!==!1&&(I===!0&&this._createSeperator(4),this._createDeleteButton(A))),this._bindElementEvents(this.closeDiv,ge(e=this.toggleEditMode).call(e,this)),this._temporaryBindEvent("select",ge(t=this.showManipulatorToolbar).call(t,this))}this.body.emitter.emit("_redraw")}addNodeMode(){var e;if(this.editMode!==!0&&this.enableEditMode(),this._clean(),this.inMode="addNode",this.guiEnabled===!0){var t;const i=this.options.locales[this.options.locale];this.manipulationDOM={},this._createBackButton(i),this._createSeperator(),this._createDescription(i.addDescription||this.options.locales.en.addDescription),this._bindElementEvents(this.closeDiv,ge(t=this.toggleEditMode).call(t,this))}this._temporaryBindEvent("click",ge(e=this._performAddNode).call(e,this))}editNode(){this.editMode!==!0&&this.enableEditMode(),this._clean();const e=this.selectionHandler.getSelectedNodes()[0];if(e!==void 0)if(this.inMode="editNode",typeof this.options.editNode=="function")if(e.isCluster!==!0){const t=vt({},e.options,!1);if(t.x=e.x,t.y=e.y,this.options.editNode.length===2)this.options.editNode(t,i=>{i!=null&&this.inMode==="editNode"&&this.body.data.nodes.getDataSet().update(i),this.showManipulatorToolbar()});else throw new Error("The function for edit does not support two arguments (data, callback)")}else alert(this.options.locales[this.options.locale].editClusterError||this.options.locales.en.editClusterError);else throw new Error("No function has been configured to handle the editing of nodes.");else this.showManipulatorToolbar()}addEdgeMode(){var e,t,i,o,r;if(this.editMode!==!0&&this.enableEditMode(),this._clean(),this.inMode="addEdge",this.guiEnabled===!0){var A;const I=this.options.locales[this.options.locale];this.manipulationDOM={},this._createBackButton(I),this._createSeperator(),this._createDescription(I.edgeDescription||this.options.locales.en.edgeDescription),this._bindElementEvents(this.closeDiv,ge(A=this.toggleEditMode).call(A,this))}this._temporaryBindUI("onTouch",ge(e=this._handleConnect).call(e,this)),this._temporaryBindUI("onDragEnd",ge(t=this._finishConnect).call(t,this)),this._temporaryBindUI("onDrag",ge(i=this._dragControlNode).call(i,this)),this._temporaryBindUI("onRelease",ge(o=this._finishConnect).call(o,this)),this._temporaryBindUI("onDragStart",ge(r=this._dragStartEdge).call(r,this)),this._temporaryBindUI("onHold",()=>{})}editEdgeMode(){if(this.editMode!==!0&&this.enableEditMode(),this._clean(),this.inMode="editEdge",typeof this.options.editEdge=="object"&&typeof this.options.editEdge.editWithoutDrag=="function"&&(this.edgeBeingEditedId=this.selectionHandler.getSelectedEdgeIds()[0],this.edgeBeingEditedId!==void 0)){const A=this.body.edges[this.edgeBeingEditedId];this._performEditEdge(A.from.id,A.to.id);return}if(this.guiEnabled===!0){var e;const A=this.options.locales[this.options.locale];this.manipulationDOM={},this._createBackButton(A),this._createSeperator(),this._createDescription(A.editEdgeDescription||this.options.locales.en.editEdgeDescription),this._bindElementEvents(this.closeDiv,ge(e=this.toggleEditMode).call(e,this))}if(this.edgeBeingEditedId=this.selectionHandler.getSelectedEdgeIds()[0],this.edgeBeingEditedId!==void 0){var t,i,o,r;const A=this.body.edges[this.edgeBeingEditedId],I=this._getNewTargetNode(A.from.x,A.from.y),l=this._getNewTargetNode(A.to.x,A.to.y);this.temporaryIds.nodes.push(I.id),this.temporaryIds.nodes.push(l.id),this.body.nodes[I.id]=I,this.body.nodeIndices.push(I.id),this.body.nodes[l.id]=l,this.body.nodeIndices.push(l.id),this._temporaryBindUI("onTouch",ge(t=this._controlNodeTouch).call(t,this)),this._temporaryBindUI("onTap",()=>{}),this._temporaryBindUI("onHold",()=>{}),this._temporaryBindUI("onDragStart",ge(i=this._controlNodeDragStart).call(i,this)),this._temporaryBindUI("onDrag",ge(o=this._controlNodeDrag).call(o,this)),this._temporaryBindUI("onDragEnd",ge(r=this._controlNodeDragEnd).call(r,this)),this._temporaryBindUI("onMouseMove",()=>{}),this._temporaryBindEvent("beforeDrawing",c=>{const h=A.edgeType.findBorderPositions(c);I.selected===!1&&(I.x=h.from.x,I.y=h.from.y),l.selected===!1&&(l.x=h.to.x,l.y=h.to.y)}),this.body.emitter.emit("_redraw")}else this.showManipulatorToolbar()}deleteSelected(){this.editMode!==!0&&this.enableEditMode(),this._clean(),this.inMode="delete";const e=this.selectionHandler.getSelectedNodeIds(),t=this.selectionHandler.getSelectedEdgeIds();let i;if(e.length>0){for(let o=0;o0&&typeof this.options.deleteEdge=="function"&&(i=this.options.deleteEdge);if(typeof i=="function"){const o={nodes:e,edges:t};if(i.length===2)i(o,r=>{r!=null&&this.inMode==="delete"?(this.body.data.edges.getDataSet().remove(r.edges),this.body.data.nodes.getDataSet().remove(r.nodes),this.body.emitter.emit("startSimulation"),this.showManipulatorToolbar()):(this.body.emitter.emit("startSimulation"),this.showManipulatorToolbar())});else throw new Error("The function for delete does not support two arguments (data, callback)")}else this.body.data.edges.getDataSet().remove(t),this.body.data.nodes.getDataSet().remove(e),this.body.emitter.emit("startSimulation"),this.showManipulatorToolbar()}_setup(){this.options.enabled===!0?(this.guiEnabled=!0,this._createWrappers(),this.editMode===!1?this._createEditButton():this.showManipulatorToolbar()):(this._removeManipulationDOM(),this.guiEnabled=!1)}_createWrappers(){if(this.manipulationDiv===void 0&&(this.manipulationDiv=document.createElement("div"),this.manipulationDiv.className="vis-manipulation",this.editMode===!0?this.manipulationDiv.style.display="block":this.manipulationDiv.style.display="none",this.canvas.frame.appendChild(this.manipulationDiv)),this.editModeDiv===void 0&&(this.editModeDiv=document.createElement("div"),this.editModeDiv.className="vis-edit-mode",this.editMode===!0?this.editModeDiv.style.display="none":this.editModeDiv.style.display="block",this.canvas.frame.appendChild(this.editModeDiv)),this.closeDiv===void 0){var e,t;this.closeDiv=document.createElement("button"),this.closeDiv.className="vis-close",this.closeDiv.setAttribute("aria-label",(e=(t=this.options.locales[this.options.locale])===null||t===void 0?void 0:t.close)!==null&&e!==void 0?e:this.options.locales.en.close),this.closeDiv.style.display=this.manipulationDiv.style.display,this.canvas.frame.appendChild(this.closeDiv)}}_getNewTargetNode(e,t){const i=vt({},this.options.controlNodeStyle);i.id="targetNode"+Ys(),i.hidden=!1,i.physics=!1,i.x=e,i.y=t;const o=this.body.functions.createNode(i);return o.shape.boundingBox={left:e,right:e,top:t,bottom:t},o}_createEditButton(){var e;this._clean(),this.manipulationDOM={},jg(this.editModeDiv);const t=this.options.locales[this.options.locale],i=this._createButton("editMode","vis-edit vis-edit-mode",t.edit||this.options.locales.en.edit);this.editModeDiv.appendChild(i),this._bindElementEvents(i,ge(e=this.toggleEditMode).call(e,this))}_clean(){this.inMode=!1,this.guiEnabled===!0&&(jg(this.editModeDiv),jg(this.manipulationDiv),this._cleanupDOMEventListeners()),this._cleanupTemporaryNodesAndEdges(),this._unbindTemporaryUIs(),this._unbindTemporaryEvents(),this.body.emitter.emit("restorePhysics")}_cleanupDOMEventListeners(){for(const t of _i(e=this._domEventListenerCleanupQueue).call(e,0)){var e;t()}}_removeManipulationDOM(){this._clean(),jg(this.manipulationDiv),jg(this.editModeDiv),jg(this.closeDiv),this.manipulationDiv&&this.canvas.frame.removeChild(this.manipulationDiv),this.editModeDiv&&this.canvas.frame.removeChild(this.editModeDiv),this.closeDiv&&this.canvas.frame.removeChild(this.closeDiv),this.manipulationDiv=void 0,this.editModeDiv=void 0,this.closeDiv=void 0}_createSeperator(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:1;this.manipulationDOM["seperatorLineDiv"+e]=document.createElement("div"),this.manipulationDOM["seperatorLineDiv"+e].className="vis-separator-line",this.manipulationDiv.appendChild(this.manipulationDOM["seperatorLineDiv"+e])}_createAddNodeButton(e){var t;const i=this._createButton("addNode","vis-add",e.addNode||this.options.locales.en.addNode);this.manipulationDiv.appendChild(i),this._bindElementEvents(i,ge(t=this.addNodeMode).call(t,this))}_createAddEdgeButton(e){var t;const i=this._createButton("addEdge","vis-connect",e.addEdge||this.options.locales.en.addEdge);this.manipulationDiv.appendChild(i),this._bindElementEvents(i,ge(t=this.addEdgeMode).call(t,this))}_createEditNodeButton(e){var t;const i=this._createButton("editNode","vis-edit",e.editNode||this.options.locales.en.editNode);this.manipulationDiv.appendChild(i),this._bindElementEvents(i,ge(t=this.editNode).call(t,this))}_createEditEdgeButton(e){var t;const i=this._createButton("editEdge","vis-edit",e.editEdge||this.options.locales.en.editEdge);this.manipulationDiv.appendChild(i),this._bindElementEvents(i,ge(t=this.editEdgeMode).call(t,this))}_createDeleteButton(e){var t;let i;this.options.rtl?i="vis-delete-rtl":i="vis-delete";const o=this._createButton("delete",i,e.del||this.options.locales.en.del);this.manipulationDiv.appendChild(o),this._bindElementEvents(o,ge(t=this.deleteSelected).call(t,this))}_createBackButton(e){var t;const i=this._createButton("back","vis-back",e.back||this.options.locales.en.back);this.manipulationDiv.appendChild(i),this._bindElementEvents(i,ge(t=this.showManipulatorToolbar).call(t,this))}_createButton(e,t,i){let o=arguments.length>3&&arguments[3]!==void 0?arguments[3]:"vis-label";return this.manipulationDOM[e+"Div"]=document.createElement("button"),this.manipulationDOM[e+"Div"].className="vis-button "+t,this.manipulationDOM[e+"Label"]=document.createElement("div"),this.manipulationDOM[e+"Label"].className=o,this.manipulationDOM[e+"Label"].innerText=i,this.manipulationDOM[e+"Div"].appendChild(this.manipulationDOM[e+"Label"]),this.manipulationDOM[e+"Div"]}_createDescription(e){this.manipulationDOM.descriptionLabel=document.createElement("div"),this.manipulationDOM.descriptionLabel.className="vis-none",this.manipulationDOM.descriptionLabel.innerText=e,this.manipulationDiv.appendChild(this.manipulationDOM.descriptionLabel)}_temporaryBindEvent(e,t){this.temporaryEventFunctions.push({event:e,boundFunction:t}),this.body.emitter.on(e,t)}_temporaryBindUI(e,t){if(this.body.eventListeners[e]!==void 0)this.temporaryUIFunctions[e]=this.body.eventListeners[e],this.body.eventListeners[e]=t;else throw new Error("This UI function does not exist. Typo? You tried: "+e+" possible are: "+ks(xt(this.body.eventListeners)))}_unbindTemporaryUIs(){for(const e in this.temporaryUIFunctions)Object.prototype.hasOwnProperty.call(this.temporaryUIFunctions,e)&&(this.body.eventListeners[e]=this.temporaryUIFunctions[e],delete this.temporaryUIFunctions[e]);this.temporaryUIFunctions={}}_unbindTemporaryEvents(){for(let e=0;e{i.destroy()});const o=r=>{let{keyCode:A,key:I}=r;(I==="Enter"||I===" "||A===13||A===32)&&t()};e.addEventListener("keyup",o,!1),this._domEventListenerCleanupQueue.push(()=>{e.removeEventListener("keyup",o,!1)})}_cleanupTemporaryNodesAndEdges(){for(let r=0;r=0;I--)if(r[I]!==this.selectedControlNode.id){A=this.body.nodes[r[I]];break}if(A!==void 0&&this.selectedControlNode!==void 0)if(A.isCluster===!0)alert(this.options.locales[this.options.locale].createEdgeError||this.options.locales.en.createEdgeError);else{const I=this.body.nodes[this.temporaryIds.nodes[0]];this.selectedControlNode.id===I.id?this._performEditEdge(A.id,o.to.id):this._performEditEdge(o.from.id,A.id)}else o.updateEdgeType(),this.body.emitter.emit("restorePhysics");this.body.emitter.emit("_redraw")}_handleConnect(e){if(new Date().valueOf()-this.touchTime>100){this.lastTouch=this.body.functions.getPointer(e.center),this.lastTouch.translation=Yt({},this.body.view.translation),this.interactionHandler.drag.pointer=this.lastTouch,this.interactionHandler.drag.translation=this.lastTouch.translation;const t=this.lastTouch,i=this.selectionHandler.getNodeAt(t);if(i!==void 0)if(i.isCluster===!0)alert(this.options.locales[this.options.locale].createEdgeError||this.options.locales.en.createEdgeError);else{const o=this._getNewTargetNode(i.x,i.y);this.body.nodes[o.id]=o,this.body.nodeIndices.push(o.id);const r=this.body.functions.createEdge({id:"connectionEdge"+Ys(),from:i.id,to:o.id,physics:!1,smooth:{enabled:!0,type:"continuous",roundness:.5}});this.body.edges[r.id]=r,this.body.edgeIndices.push(r.id),this.temporaryIds.nodes.push(o.id),this.temporaryIds.edges.push(r.id)}this.touchTime=new Date().valueOf()}}_dragControlNode(e){const t=this.body.functions.getPointer(e.center),i=this.selectionHandler._pointerToPositionObject(t);let o;this.temporaryIds.edges[0]!==void 0&&(o=this.body.edges[this.temporaryIds.edges[0]].fromId);const r=this.selectionHandler._getAllNodesOverlappingWith(i);let A;for(let l=r.length-1;l>=0;l--){var I;if(lt(I=this.temporaryIds.nodes).call(I,r[l])===-1){A=this.body.nodes[r[l]];break}}if(e.controlEdge={from:o,to:A?A.id:void 0},this.selectionHandler.generateClickEvent("controlNodeDragging",e,t),this.temporaryIds.nodes[0]!==void 0){const l=this.body.nodes[this.temporaryIds.nodes[0]];l.x=this.canvas._XconvertDOMtoCanvas(t.x),l.y=this.canvas._YconvertDOMtoCanvas(t.y),this.body.emitter.emit("_redraw")}else this.interactionHandler.onDrag(e)}_finishConnect(e){const t=this.body.functions.getPointer(e.center),i=this.selectionHandler._pointerToPositionObject(t);let o;this.temporaryIds.edges[0]!==void 0&&(o=this.body.edges[this.temporaryIds.edges[0]].fromId);const r=this.selectionHandler._getAllNodesOverlappingWith(i);let A;for(let l=r.length-1;l>=0;l--){var I;if(lt(I=this.temporaryIds.nodes).call(I,r[l])===-1){A=this.body.nodes[r[l]];break}}this._cleanupTemporaryNodesAndEdges(),A!==void 0&&(A.isCluster===!0?alert(this.options.locales[this.options.locale].createEdgeError||this.options.locales.en.createEdgeError):this.body.nodes[o]!==void 0&&this.body.nodes[A.id]!==void 0&&this._performAddEdge(o,A.id)),e.controlEdge={from:o,to:A?A.id:void 0},this.selectionHandler.generateClickEvent("controlNodeDragEnd",e,t),this.body.emitter.emit("_redraw")}_dragStartEdge(e){const t=this.lastTouch;this.selectionHandler.generateClickEvent("dragStart",e,t,void 0,!0)}_performAddNode(e){const t={id:Ys(),x:e.pointer.canvas.x,y:e.pointer.canvas.y,label:"new"};if(typeof this.options.addNode=="function")if(this.options.addNode.length===2)this.options.addNode(t,i=>{i!=null&&this.inMode==="addNode"&&this.body.data.nodes.getDataSet().add(i),this.showManipulatorToolbar()});else throw this.showManipulatorToolbar(),new Error("The function for add does not support two arguments (data,callback)");else this.body.data.nodes.getDataSet().add(t),this.showManipulatorToolbar()}_performAddEdge(e,t){const i={from:e,to:t};if(typeof this.options.addEdge=="function")if(this.options.addEdge.length===2)this.options.addEdge(i,o=>{o!=null&&this.inMode==="addEdge"&&(this.body.data.edges.getDataSet().add(o),this.selectionHandler.unselectAll(),this.showManipulatorToolbar())});else throw new Error("The function for connect does not support two arguments (data,callback)");else this.body.data.edges.getDataSet().add(i),this.selectionHandler.unselectAll(),this.showManipulatorToolbar()}_performEditEdge(e,t){const i={id:this.edgeBeingEditedId,from:e,to:t,label:this.body.data.edges.get(this.edgeBeingEditedId).label};let o=this.options.editEdge;if(typeof o=="object"&&(o=o.editWithoutDrag),typeof o=="function")if(o.length===2)o(i,r=>{r==null||this.inMode!=="editEdge"?(this.body.edges[i.id].updateEdgeType(),this.body.emitter.emit("_redraw"),this.showManipulatorToolbar()):(this.body.data.edges.getDataSet().update(r),this.selectionHandler.unselectAll(),this.showManipulatorToolbar())});else throw new Error("The function for edit does not support two arguments (data, callback)");else this.body.data.edges.getDataSet().update(i),this.selectionHandler.unselectAll(),this.showManipulatorToolbar()}}const Ce="string",oe="boolean",W="number",Wa="array",we="object",s2="dom",gee="any",Vu=["arrow","bar","box","circle","crow","curve","diamond","image","inv_curve","inv_triangle","triangle","vee"],Uu={borderWidth:{number:W},borderWidthSelected:{number:W,undefined:"undefined"},brokenImage:{string:Ce,undefined:"undefined"},chosen:{label:{boolean:oe,function:"function"},node:{boolean:oe,function:"function"},__type__:{object:we,boolean:oe}},color:{border:{string:Ce},background:{string:Ce},highlight:{border:{string:Ce},background:{string:Ce},__type__:{object:we,string:Ce}},hover:{border:{string:Ce},background:{string:Ce},__type__:{object:we,string:Ce}},__type__:{object:we,string:Ce}},opacity:{number:W,undefined:"undefined"},fixed:{x:{boolean:oe},y:{boolean:oe},__type__:{object:we,boolean:oe}},font:{align:{string:Ce},color:{string:Ce},size:{number:W},face:{string:Ce},background:{string:Ce},strokeWidth:{number:W},strokeColor:{string:Ce},vadjust:{number:W},multi:{boolean:oe,string:Ce},bold:{color:{string:Ce},size:{number:W},face:{string:Ce},mod:{string:Ce},vadjust:{number:W},__type__:{object:we,string:Ce}},boldital:{color:{string:Ce},size:{number:W},face:{string:Ce},mod:{string:Ce},vadjust:{number:W},__type__:{object:we,string:Ce}},ital:{color:{string:Ce},size:{number:W},face:{string:Ce},mod:{string:Ce},vadjust:{number:W},__type__:{object:we,string:Ce}},mono:{color:{string:Ce},size:{number:W},face:{string:Ce},mod:{string:Ce},vadjust:{number:W},__type__:{object:we,string:Ce}},__type__:{object:we,string:Ce}},group:{string:Ce,number:W,undefined:"undefined"},heightConstraint:{minimum:{number:W},valign:{string:Ce},__type__:{object:we,boolean:oe,number:W}},hidden:{boolean:oe},icon:{face:{string:Ce},code:{string:Ce},size:{number:W},color:{string:Ce},weight:{string:Ce,number:W},__type__:{object:we}},id:{string:Ce,number:W},image:{selected:{string:Ce,undefined:"undefined"},unselected:{string:Ce,undefined:"undefined"},__type__:{object:we,string:Ce}},imagePadding:{top:{number:W},right:{number:W},bottom:{number:W},left:{number:W},__type__:{object:we,number:W}},label:{string:Ce,undefined:"undefined"},labelHighlightBold:{boolean:oe},level:{number:W,undefined:"undefined"},margin:{top:{number:W},right:{number:W},bottom:{number:W},left:{number:W},__type__:{object:we,number:W}},mass:{number:W},physics:{boolean:oe},scaling:{min:{number:W},max:{number:W},label:{enabled:{boolean:oe},min:{number:W},max:{number:W},maxVisible:{number:W},drawThreshold:{number:W},__type__:{object:we,boolean:oe}},customScalingFunction:{function:"function"},__type__:{object:we}},shadow:{enabled:{boolean:oe},color:{string:Ce},size:{number:W},x:{number:W},y:{number:W},__type__:{object:we,boolean:oe}},shape:{string:["custom","ellipse","circle","database","box","text","image","circularImage","diamond","dot","star","triangle","triangleDown","square","icon","hexagon"]},ctxRenderer:{function:"function"},shapeProperties:{borderDashes:{boolean:oe,array:Wa},borderRadius:{number:W},interpolation:{boolean:oe},useImageSize:{boolean:oe},useBorderWithImage:{boolean:oe},coordinateOrigin:{string:["center","top-left"]},__type__:{object:we}},size:{number:W},title:{string:Ce,dom:s2,undefined:"undefined"},value:{number:W,undefined:"undefined"},widthConstraint:{minimum:{number:W},maximum:{number:W},__type__:{object:we,boolean:oe,number:W}},x:{number:W},y:{number:W},__type__:{object:we}},oee={configure:{enabled:{boolean:oe},filter:{boolean:oe,string:Ce,array:Wa,function:"function"},container:{dom:s2},showButton:{boolean:oe},__type__:{object:we,boolean:oe,string:Ce,array:Wa,function:"function"}},edges:{arrows:{to:{enabled:{boolean:oe},scaleFactor:{number:W},type:{string:Vu},imageHeight:{number:W},imageWidth:{number:W},src:{string:Ce},__type__:{object:we,boolean:oe}},middle:{enabled:{boolean:oe},scaleFactor:{number:W},type:{string:Vu},imageWidth:{number:W},imageHeight:{number:W},src:{string:Ce},__type__:{object:we,boolean:oe}},from:{enabled:{boolean:oe},scaleFactor:{number:W},type:{string:Vu},imageWidth:{number:W},imageHeight:{number:W},src:{string:Ce},__type__:{object:we,boolean:oe}},__type__:{string:["from","to","middle"],object:we}},endPointOffset:{from:{number:W},to:{number:W},__type__:{object:we,number:W}},arrowStrikethrough:{boolean:oe},background:{enabled:{boolean:oe},color:{string:Ce},size:{number:W},dashes:{boolean:oe,array:Wa},__type__:{object:we,boolean:oe}},chosen:{label:{boolean:oe,function:"function"},edge:{boolean:oe,function:"function"},__type__:{object:we,boolean:oe}},color:{color:{string:Ce},highlight:{string:Ce},hover:{string:Ce},inherit:{string:["from","to","both"],boolean:oe},opacity:{number:W},__type__:{object:we,string:Ce}},dashes:{boolean:oe,array:Wa},font:{color:{string:Ce},size:{number:W},face:{string:Ce},background:{string:Ce},strokeWidth:{number:W},strokeColor:{string:Ce},align:{string:["horizontal","top","middle","bottom"]},vadjust:{number:W},multi:{boolean:oe,string:Ce},bold:{color:{string:Ce},size:{number:W},face:{string:Ce},mod:{string:Ce},vadjust:{number:W},__type__:{object:we,string:Ce}},boldital:{color:{string:Ce},size:{number:W},face:{string:Ce},mod:{string:Ce},vadjust:{number:W},__type__:{object:we,string:Ce}},ital:{color:{string:Ce},size:{number:W},face:{string:Ce},mod:{string:Ce},vadjust:{number:W},__type__:{object:we,string:Ce}},mono:{color:{string:Ce},size:{number:W},face:{string:Ce},mod:{string:Ce},vadjust:{number:W},__type__:{object:we,string:Ce}},__type__:{object:we,string:Ce}},hidden:{boolean:oe},hoverWidth:{function:"function",number:W},label:{string:Ce,undefined:"undefined"},labelHighlightBold:{boolean:oe},length:{number:W,undefined:"undefined"},physics:{boolean:oe},scaling:{min:{number:W},max:{number:W},label:{enabled:{boolean:oe},min:{number:W},max:{number:W},maxVisible:{number:W},drawThreshold:{number:W},__type__:{object:we,boolean:oe}},customScalingFunction:{function:"function"},__type__:{object:we}},selectionWidth:{function:"function",number:W},selfReferenceSize:{number:W},selfReference:{size:{number:W},angle:{number:W},renderBehindTheNode:{boolean:oe},__type__:{object:we}},shadow:{enabled:{boolean:oe},color:{string:Ce},size:{number:W},x:{number:W},y:{number:W},__type__:{object:we,boolean:oe}},smooth:{enabled:{boolean:oe},type:{string:["dynamic","continuous","discrete","diagonalCross","straightCross","horizontal","vertical","curvedCW","curvedCCW","cubicBezier"]},roundness:{number:W},forceDirection:{string:["horizontal","vertical","none"],boolean:oe},__type__:{object:we,boolean:oe}},title:{string:Ce,undefined:"undefined"},width:{number:W},widthConstraint:{maximum:{number:W},__type__:{object:we,boolean:oe,number:W}},value:{number:W,undefined:"undefined"},__type__:{object:we}},groups:{useDefaultGroups:{boolean:oe},__any__:Uu,__type__:{object:we}},interaction:{dragNodes:{boolean:oe},dragView:{boolean:oe},hideEdgesOnDrag:{boolean:oe},hideEdgesOnZoom:{boolean:oe},hideNodesOnDrag:{boolean:oe},hover:{boolean:oe},keyboard:{enabled:{boolean:oe},speed:{x:{number:W},y:{number:W},zoom:{number:W},__type__:{object:we}},bindToWindow:{boolean:oe},autoFocus:{boolean:oe},__type__:{object:we,boolean:oe}},multiselect:{boolean:oe},navigationButtons:{boolean:oe},selectable:{boolean:oe},selectConnectedEdges:{boolean:oe},hoverConnectedEdges:{boolean:oe},tooltipDelay:{number:W},zoomView:{boolean:oe},zoomSpeed:{number:W},__type__:{object:we}},layout:{randomSeed:{undefined:"undefined",number:W,string:Ce},improvedLayout:{boolean:oe},clusterThreshold:{number:W},hierarchical:{enabled:{boolean:oe},levelSeparation:{number:W},nodeSpacing:{number:W},treeSpacing:{number:W},blockShifting:{boolean:oe},edgeMinimization:{boolean:oe},parentCentralization:{boolean:oe},direction:{string:["UD","DU","LR","RL"]},sortMethod:{string:["hubsize","directed"]},shakeTowards:{string:["leaves","roots"]},__type__:{object:we,boolean:oe}},__type__:{object:we}},manipulation:{enabled:{boolean:oe},initiallyActive:{boolean:oe},addNode:{boolean:oe,function:"function"},addEdge:{boolean:oe,function:"function"},editNode:{function:"function"},editEdge:{editWithoutDrag:{function:"function"},__type__:{object:we,boolean:oe,function:"function"}},deleteNode:{boolean:oe,function:"function"},deleteEdge:{boolean:oe,function:"function"},controlNodeStyle:Uu,__type__:{object:we,boolean:oe}},nodes:Uu,physics:{enabled:{boolean:oe},barnesHut:{theta:{number:W},gravitationalConstant:{number:W},centralGravity:{number:W},springLength:{number:W},springConstant:{number:W},damping:{number:W},avoidOverlap:{number:W},__type__:{object:we}},forceAtlas2Based:{theta:{number:W},gravitationalConstant:{number:W},centralGravity:{number:W},springLength:{number:W},springConstant:{number:W},damping:{number:W},avoidOverlap:{number:W},__type__:{object:we}},repulsion:{centralGravity:{number:W},springLength:{number:W},springConstant:{number:W},nodeDistance:{number:W},damping:{number:W},__type__:{object:we}},hierarchicalRepulsion:{centralGravity:{number:W},springLength:{number:W},springConstant:{number:W},nodeDistance:{number:W},damping:{number:W},avoidOverlap:{number:W},__type__:{object:we}},maxVelocity:{number:W},minVelocity:{number:W},solver:{string:["barnesHut","repulsion","hierarchicalRepulsion","forceAtlas2Based"]},stabilization:{enabled:{boolean:oe},iterations:{number:W},updateInterval:{number:W},onlyDynamicEdges:{boolean:oe},fit:{boolean:oe},__type__:{object:we,boolean:oe}},timestep:{number:W},adaptiveTimestep:{boolean:oe},wind:{x:{number:W},y:{number:W},__type__:{object:we}},__type__:{object:we,boolean:oe}},autoResize:{boolean:oe},clickToUse:{boolean:oe},locale:{string:Ce},locales:{__any__:{any:gee},__type__:{object:we}},height:{string:Ce},width:{string:Ce},__type__:{object:we}},r2={nodes:{borderWidth:[1,0,10,1],borderWidthSelected:[2,0,10,1],color:{border:["color","#2B7CE9"],background:["color","#97C2FC"],highlight:{border:["color","#2B7CE9"],background:["color","#D2E5FF"]},hover:{border:["color","#2B7CE9"],background:["color","#D2E5FF"]}},opacity:[0,0,1,.1],fixed:{x:!1,y:!1},font:{color:["color","#343434"],size:[14,0,100,1],face:["arial","verdana","tahoma"],background:["color","none"],strokeWidth:[0,0,50,1],strokeColor:["color","#ffffff"]},hidden:!1,labelHighlightBold:!0,physics:!0,scaling:{min:[10,0,200,1],max:[30,0,200,1],label:{enabled:!1,min:[14,0,200,1],max:[30,0,200,1],maxVisible:[30,0,200,1],drawThreshold:[5,0,20,1]}},shadow:{enabled:!1,color:"rgba(0,0,0,0.5)",size:[10,0,20,1],x:[5,-30,30,1],y:[5,-30,30,1]},shape:["ellipse","box","circle","database","diamond","dot","square","star","text","triangle","triangleDown","hexagon"],shapeProperties:{borderDashes:!1,borderRadius:[6,0,20,1],interpolation:!0,useImageSize:!1},size:[25,0,200,1]},edges:{arrows:{to:{enabled:!1,scaleFactor:[1,0,3,.05],type:"arrow"},middle:{enabled:!1,scaleFactor:[1,0,3,.05],type:"arrow"},from:{enabled:!1,scaleFactor:[1,0,3,.05],type:"arrow"}},endPointOffset:{from:[0,-10,10,1],to:[0,-10,10,1]},arrowStrikethrough:!0,color:{color:["color","#848484"],highlight:["color","#848484"],hover:["color","#848484"],inherit:["from","to","both",!0,!1],opacity:[1,0,1,.05]},dashes:!1,font:{color:["color","#343434"],size:[14,0,100,1],face:["arial","verdana","tahoma"],background:["color","none"],strokeWidth:[2,0,50,1],strokeColor:["color","#ffffff"],align:["horizontal","top","middle","bottom"]},hidden:!1,hoverWidth:[1.5,0,5,.1],labelHighlightBold:!0,physics:!0,scaling:{min:[1,0,100,1],max:[15,0,100,1],label:{enabled:!0,min:[14,0,200,1],max:[30,0,200,1],maxVisible:[30,0,200,1],drawThreshold:[5,0,20,1]}},selectionWidth:[1.5,0,5,.1],selfReferenceSize:[20,0,200,1],selfReference:{size:[20,0,200,1],angle:[Math.PI/2,-6*Math.PI,6*Math.PI,Math.PI/8],renderBehindTheNode:!0},shadow:{enabled:!1,color:"rgba(0,0,0,0.5)",size:[10,0,20,1],x:[5,-30,30,1],y:[5,-30,30,1]},smooth:{enabled:!0,type:["dynamic","continuous","discrete","diagonalCross","straightCross","horizontal","vertical","curvedCW","curvedCCW","cubicBezier"],forceDirection:["horizontal","vertical","none"],roundness:[.5,0,1,.05]},width:[1,0,30,1]},layout:{hierarchical:{enabled:!1,levelSeparation:[150,20,500,5],nodeSpacing:[100,20,500,5],treeSpacing:[200,20,500,5],blockShifting:!0,edgeMinimization:!0,parentCentralization:!0,direction:["UD","DU","LR","RL"],sortMethod:["hubsize","directed"],shakeTowards:["leaves","roots"]}},interaction:{dragNodes:!0,dragView:!0,hideEdgesOnDrag:!1,hideEdgesOnZoom:!1,hideNodesOnDrag:!1,hover:!1,keyboard:{enabled:!1,speed:{x:[10,0,40,1],y:[10,0,40,1],zoom:[.02,0,.1,.005]},bindToWindow:!0,autoFocus:!0},multiselect:!1,navigationButtons:!1,selectable:!0,selectConnectedEdges:!0,hoverConnectedEdges:!0,tooltipDelay:[300,0,1e3,25],zoomView:!0,zoomSpeed:[1,.1,2,.1]},manipulation:{enabled:!1,initiallyActive:!1},physics:{enabled:!0,barnesHut:{theta:[.5,.1,1,.05],gravitationalConstant:[-2e3,-3e4,0,50],centralGravity:[.3,0,10,.05],springLength:[95,0,500,5],springConstant:[.04,0,1.2,.005],damping:[.09,0,1,.01],avoidOverlap:[0,0,1,.01]},forceAtlas2Based:{theta:[.5,.1,1,.05],gravitationalConstant:[-50,-500,0,1],centralGravity:[.01,0,1,.005],springLength:[95,0,500,5],springConstant:[.08,0,1.2,.005],damping:[.4,0,1,.01],avoidOverlap:[0,0,1,.01]},repulsion:{centralGravity:[.2,0,10,.05],springLength:[200,0,500,5],springConstant:[.05,0,1.2,.005],nodeDistance:[100,0,500,5],damping:[.09,0,1,.01]},hierarchicalRepulsion:{centralGravity:[.2,0,10,.05],springLength:[100,0,500,5],springConstant:[.01,0,1.2,.005],nodeDistance:[120,0,500,5],damping:[.09,0,1,.01],avoidOverlap:[0,0,1,.01]},maxVelocity:[50,0,150,1],minVelocity:[.1,.01,.5,.01],solver:["barnesHut","forceAtlas2Based","repulsion","hierarchicalRepulsion"],timestep:[.5,.01,1,.01],wind:{x:[0,-10,10,.1],y:[0,-10,10,.1]}}},see=(n,e,t)=>{var i;return!!(Rg(n).call(n,"physics")&&Rg(i=r2.physics.solver).call(i,e)&&t.physics.solver!==e&&e!=="wind")};class ree{constructor(){}getDistances(e,t,i){const o={},r=e.edges;for(let I=0;I2&&arguments[2]!==void 0?arguments[2]:!1;const o=this.distanceSolver.getDistances(this.body,e,t);this._createL_matrix(o),this._createK_matrix(o),this._createE_matrix();const r=.01,A=1;let I=0;const l=Math.max(1e3,Math.min(10*this.body.nodeIndices.length,6e3)),c=5;let h=1e9,p=0,m=0,v=0,x=0,O=0;for(;h>r&&IA&&Othis.body.emitter.emit("_requestRedraw")),this.groups=new UH,this.canvas=new nJ(this.body),this.selectionHandler=new jJ(this.body,this.canvas),this.interactionHandler=new rJ(this.body,this.canvas,this.selectionHandler),this.view=new gJ(this.body,this.canvas),this.renderer=new $q(this.body,this.canvas),this.physics=new Wq(this.body),this.layoutEngine=new tee(this.body),this.clustering=new Xq(this.body),this.manipulation=new iee(this.body,this.canvas,this.selectionHandler,this.interactionHandler),this.nodesHandler=new pq(this.body,this.images,this.groups,this.layoutEngine),this.edgesHandler=new Fq(this.body,this.images,this.groups),this.body.modules.kamadaKawai=new aee(this.body,150,.05),this.body.modules.clustering=this.clustering,this.canvas._create(),this.setOptions(t),this.setData(e)}Hb(ve.prototype),ve.prototype.setOptions=function(n){if(n===null&&(n=void 0),n!==void 0){if(_Y.validate(n,oee)===!0&&console.error("%cErrors have been found in the supplied options object.",K1),Zs(["locale","locales","clickToUse"],this.options,n),n.locale!==void 0&&(n.locale=WY(n.locales||this.options.locales,n.locale)),n=this.layoutEngine.setOptions(n.layout,n),this.canvas.setOptions(n),this.groups.setOptions(n.groups),this.nodesHandler.setOptions(n.nodes),this.edgesHandler.setOptions(n.edges),this.physics.setOptions(n.physics),this.manipulation.setOptions(n.manipulation,n,this.options),this.interactionHandler.setOptions(n.interaction),this.renderer.setOptions(n.interaction),this.selectionHandler.setOptions(n.interaction),n.groups!==void 0&&this.body.emitter.emit("refreshNodes"),"configure"in n&&(this.configurator||(this.configurator=new RY(this,this.body.container,r2,this.canvas.pixelRatio,see)),this.configurator.setOptions(n.configure)),this.configurator&&this.configurator.options.enabled===!0){const i={nodes:{},edges:{},layout:{},interaction:{},manipulation:{},physics:{},global:{}};vt(i.nodes,this.nodesHandler.options),vt(i.edges,this.edgesHandler.options),vt(i.layout,this.layoutEngine.options),vt(i.interaction,this.selectionHandler.options),vt(i.interaction,this.renderer.options),vt(i.interaction,this.interactionHandler.options),vt(i.manipulation,this.manipulation.options),vt(i.physics,this.physics.options),vt(i.global,this.canvas.options),vt(i.global,this.options),this.configurator.setModuleOptions(i)}n.clickToUse!==void 0?n.clickToUse===!0?this.activator===void 0&&(this.activator=new MY(this.canvas.frame),this.activator.on("change",()=>{this.body.emitter.emit("activate")})):(this.activator!==void 0&&(this.activator.destroy(),delete this.activator),this.body.emitter.emit("activate")):this.body.emitter.emit("activate"),this.canvas.setSize(),this.body.emitter.emit("startSimulation")}},ve.prototype._updateVisibleIndices=function(){const n=this.body.nodes,e=this.body.edges;this.body.nodeIndices=[],this.body.edgeIndices=[];for(const t in n)Object.prototype.hasOwnProperty.call(n,t)&&!this.clustering._isClusteredNode(t)&&n[t].options.hidden===!1&&this.body.nodeIndices.push(n[t].id);for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t)){const i=e[t],o=n[i.fromId],r=n[i.toId],A=o!==void 0&&r!==void 0;!this.clustering._isClusteredEdge(t)&&i.options.hidden===!1&&A&&o.options.hidden===!1&&r.options.hidden===!1&&this.body.edgeIndices.push(i.id)}},ve.prototype.bindEventListeners=function(){this.body.emitter.on("_dataChanged",()=>{this.edgesHandler._updateState(),this.body.emitter.emit("_dataUpdated")}),this.body.emitter.on("_dataUpdated",()=>{this.clustering._updateState(),this._updateVisibleIndices(),this._updateValueRange(this.body.nodes),this._updateValueRange(this.body.edges),this.body.emitter.emit("startSimulation"),this.body.emitter.emit("_requestRedraw")})},ve.prototype.setData=function(n){if(this.body.emitter.emit("resetPhysics"),this.body.emitter.emit("_resetData"),this.selectionHandler.unselectAll(),n&&n.dot&&(n.nodes||n.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.');if(this.setOptions(n&&n.options),n&&n.dot){console.warn("The dot property has been deprecated. Please use the static convertDot method to convert DOT into vis.network format and use the normal data format with nodes and edges. This converter is used like this: var data = vis.network.convertDot(dotString);");const e=YY(n.dot);this.setData(e);return}else if(n&&n.gephi){console.warn("The gephi property has been deprecated. Please use the static convertGephi method to convert gephi into vis.network format and use the normal data format with nodes and edges. This converter is used like this: var data = vis.network.convertGephi(gephiJson);");const e=HY(n.gephi);this.setData(e);return}else this.nodesHandler.setData(n&&n.nodes,!0),this.edgesHandler.setData(n&&n.edges,!0);this.body.emitter.emit("_dataChanged"),this.body.emitter.emit("_dataLoaded"),this.body.emitter.emit("initPhysics")},ve.prototype.destroy=function(){this.body.emitter.emit("destroy"),this.body.emitter.off(),this.off(),delete this.groups,delete this.canvas,delete this.selectionHandler,delete this.interactionHandler,delete this.view,delete this.renderer,delete this.physics,delete this.layoutEngine,delete this.clustering,delete this.manipulation,delete this.nodesHandler,delete this.edgesHandler,delete this.configurator,delete this.images;for(const n in this.body.nodes)Object.prototype.hasOwnProperty.call(this.body.nodes,n)&&delete this.body.nodes[n];for(const n in this.body.edges)Object.prototype.hasOwnProperty.call(this.body.edges,n)&&delete this.body.edges[n];jg(this.body.container)},ve.prototype._updateValueRange=function(n){let e,t,i,o=0;for(e in n)if(Object.prototype.hasOwnProperty.call(n,e)){const r=n[e].getValue();r!==void 0&&(t=t===void 0?r:Math.min(r,t),i=i===void 0?r:Math.max(r,i),o+=r)}if(t!==void 0&&i!==void 0)for(e in n)Object.prototype.hasOwnProperty.call(n,e)&&n[e].setValueRange(t,i,o)},ve.prototype.isActive=function(){return!this.activator||this.activator.active},ve.prototype.setSize=function(){return this.canvas.setSize.apply(this.canvas,arguments)},ve.prototype.canvasToDOM=function(){return this.canvas.canvasToDOM.apply(this.canvas,arguments)},ve.prototype.DOMtoCanvas=function(){return this.canvas.DOMtoCanvas.apply(this.canvas,arguments)},ve.prototype.findNode=function(){return this.clustering.findNode.apply(this.clustering,arguments)},ve.prototype.isCluster=function(){return this.clustering.isCluster.apply(this.clustering,arguments)},ve.prototype.openCluster=function(){return this.clustering.openCluster.apply(this.clustering,arguments)},ve.prototype.cluster=function(){return this.clustering.cluster.apply(this.clustering,arguments)},ve.prototype.getNodesInCluster=function(){return this.clustering.getNodesInCluster.apply(this.clustering,arguments)},ve.prototype.clusterByConnection=function(){return this.clustering.clusterByConnection.apply(this.clustering,arguments)},ve.prototype.clusterByHubsize=function(){return this.clustering.clusterByHubsize.apply(this.clustering,arguments)},ve.prototype.updateClusteredNode=function(){return this.clustering.updateClusteredNode.apply(this.clustering,arguments)},ve.prototype.getClusteredEdges=function(){return this.clustering.getClusteredEdges.apply(this.clustering,arguments)},ve.prototype.getBaseEdge=function(){return this.clustering.getBaseEdge.apply(this.clustering,arguments)},ve.prototype.getBaseEdges=function(){return this.clustering.getBaseEdges.apply(this.clustering,arguments)},ve.prototype.updateEdge=function(){return this.clustering.updateEdge.apply(this.clustering,arguments)},ve.prototype.clusterOutliers=function(){return this.clustering.clusterOutliers.apply(this.clustering,arguments)},ve.prototype.getSeed=function(){return this.layoutEngine.getSeed.apply(this.layoutEngine,arguments)},ve.prototype.enableEditMode=function(){return this.manipulation.enableEditMode.apply(this.manipulation,arguments)},ve.prototype.disableEditMode=function(){return this.manipulation.disableEditMode.apply(this.manipulation,arguments)},ve.prototype.addNodeMode=function(){return this.manipulation.addNodeMode.apply(this.manipulation,arguments)},ve.prototype.editNode=function(){return this.manipulation.editNode.apply(this.manipulation,arguments)},ve.prototype.editNodeMode=function(){return console.warn("Deprecated: Please use editNode instead of editNodeMode."),this.manipulation.editNode.apply(this.manipulation,arguments)},ve.prototype.addEdgeMode=function(){return this.manipulation.addEdgeMode.apply(this.manipulation,arguments)},ve.prototype.editEdgeMode=function(){return this.manipulation.editEdgeMode.apply(this.manipulation,arguments)},ve.prototype.deleteSelected=function(){return this.manipulation.deleteSelected.apply(this.manipulation,arguments)},ve.prototype.getPositions=function(){return this.nodesHandler.getPositions.apply(this.nodesHandler,arguments)},ve.prototype.getPosition=function(){return this.nodesHandler.getPosition.apply(this.nodesHandler,arguments)},ve.prototype.storePositions=function(){return this.nodesHandler.storePositions.apply(this.nodesHandler,arguments)},ve.prototype.moveNode=function(){return this.nodesHandler.moveNode.apply(this.nodesHandler,arguments)},ve.prototype.getBoundingBox=function(){return this.nodesHandler.getBoundingBox.apply(this.nodesHandler,arguments)},ve.prototype.getConnectedNodes=function(n){return this.body.nodes[n]!==void 0?this.nodesHandler.getConnectedNodes.apply(this.nodesHandler,arguments):this.edgesHandler.getConnectedNodes.apply(this.edgesHandler,arguments)},ve.prototype.getConnectedEdges=function(){return this.nodesHandler.getConnectedEdges.apply(this.nodesHandler,arguments)},ve.prototype.startSimulation=function(){return this.physics.startSimulation.apply(this.physics,arguments)},ve.prototype.stopSimulation=function(){return this.physics.stopSimulation.apply(this.physics,arguments)},ve.prototype.stabilize=function(){return this.physics.stabilize.apply(this.physics,arguments)},ve.prototype.getSelection=function(){return this.selectionHandler.getSelection.apply(this.selectionHandler,arguments)},ve.prototype.setSelection=function(){return this.selectionHandler.setSelection.apply(this.selectionHandler,arguments)},ve.prototype.getSelectedNodes=function(){return this.selectionHandler.getSelectedNodeIds.apply(this.selectionHandler,arguments)},ve.prototype.getSelectedEdges=function(){return this.selectionHandler.getSelectedEdgeIds.apply(this.selectionHandler,arguments)},ve.prototype.getNodeAt=function(){const n=this.selectionHandler.getNodeAt.apply(this.selectionHandler,arguments);return n!==void 0&&n.id!==void 0?n.id:n},ve.prototype.getEdgeAt=function(){const n=this.selectionHandler.getEdgeAt.apply(this.selectionHandler,arguments);return n!==void 0&&n.id!==void 0?n.id:n},ve.prototype.selectNodes=function(){return this.selectionHandler.selectNodes.apply(this.selectionHandler,arguments)},ve.prototype.selectEdges=function(){return this.selectionHandler.selectEdges.apply(this.selectionHandler,arguments)},ve.prototype.unselectAll=function(){this.selectionHandler.unselectAll.apply(this.selectionHandler,arguments),this.selectionHandler.commitWithoutEmitting.apply(this.selectionHandler),this.redraw()},ve.prototype.redraw=function(){return this.renderer.redraw.apply(this.renderer,arguments)},ve.prototype.getScale=function(){return this.view.getScale.apply(this.view,arguments)},ve.prototype.getViewPosition=function(){return this.view.getViewPosition.apply(this.view,arguments)},ve.prototype.fit=function(){return this.view.fit.apply(this.view,arguments)},ve.prototype.moveTo=function(){return this.view.moveTo.apply(this.view,arguments)},ve.prototype.focus=function(){return this.view.focus.apply(this.view,arguments)},ve.prototype.releaseNode=function(){return this.view.releaseNode.apply(this.view,arguments)},ve.prototype.getOptionsFromConfigurator=function(){let n={};return this.configurator&&(n=this.configurator.getOptions.apply(this.configurator)),n};function Aee(n,e){n.on("click",t=>{e.onHover(null),t.edges.length===0&&e.onHoverEdge(null);const i=t.nodes[0];i!==void 0?e.onFocus(String(i)):e.onClear()}),n.on("doubleClick",t=>{const i=t.nodes[0];if(i!==void 0){e.onOpenSource(String(i));return}const o=t.edges[0];o!==void 0&&e.onOpenRelationshipSource(String(o))}),n.on("hoverNode",t=>{t.node!==void 0&&(e.onInteractionStart(),e.onHoverEdge(null),e.onHover({nodeId:String(t.node),x:t.pointer.DOM.x,y:t.pointer.DOM.y}))}),n.on("blurNode",()=>e.onHover(null)),n.on("hoverEdge",t=>{t.edge!==void 0&&(e.onHover(null),e.onHoverEdge({edgeId:String(t.edge),x:t.pointer.DOM.x,y:t.pointer.DOM.y}))}),n.on("blurEdge",()=>e.onHoverEdge(null)),n.on("dragStart",()=>{e.onInteractionStart(),e.onHover(null),e.onHoverEdge(null)}),n.on("zoom",()=>{e.onHover(null),e.onHoverEdge(null)})}const Cee=1e3,Iee=4e3,Yu=4e3;function lee(n){return n.nodes.length>=Cee||n.edges.length>=Iee?"static":"interactive"}function cee(n,e=!1){if(e)return mee(n);const t=new Map;for(const h of n){const p=t.get(h.community)??[];p.push(h),t.set(h.community,p)}const i=[...t.entries()].sort(([h],[p])=>h-p).map(([h,p])=>({community:h,members:p.sort((m,v)=>m.id.localeCompare(v.id))})),o=i.reduce((h,p)=>Math.max(h,p.members.length),1),r=Math.max(1,Math.ceil(Math.sqrt(i.length))),A=Math.max(1,Math.ceil(i.length/r)),I=Math.max(280,Math.ceil(Math.sqrt(o))*48),l=Math.PI*(3-Math.sqrt(5)),c=new Map;return i.forEach((h,p)=>{const m=p%r,v=Math.floor(p/r),x=(m-(r-1)/2)*I,O=(v-(A-1)/2)*I;h.members.forEach((y,S)=>{if(S===0){c.set(y.id,{x,y:O});return}const E=24*Math.sqrt(S),_=S*l;c.set(y.id,{x:x+Math.cos(_)*E,y:O+Math.sin(_)*E})})}),c}function dee(n,e,t=!1){const i=[...n].sort((o,r)=>o.community-r.community||(r.degree??0)-(o.degree??0)||o.id.localeCompare(r.id));if(e==="circle"){const o=Math.max(160,i.length*44/(2*Math.PI));return new Map(i.map((r,A)=>{const I=-Math.PI/2+A*2*Math.PI/Math.max(1,i.length);return[r.id,{x:Math.cos(I)*o,y:Math.sin(I)*o}]}))}if(e==="concentric"){const o=[...n].sort((r,A)=>(A.degree??0)-(r.degree??0)||(A.memberCount??0)-(r.memberCount??0)||r.community-A.community||r.id.localeCompare(A.id));return hee(o)}return e==="hierarchical"?uee(i):e==="spiral"?fee(i):pee(i,t)}function uee(n){const e=new Map;for(const o of n){const r=o.depth??(o.root?0:1),A=e.get(r)??[];A.push(o),e.set(r,A)}const t=[...e.entries()].sort(([o],[r])=>o-r),i=new Map;for(const[o,r]of t){r.sort((I,l)=>Number(l.root??!1)-Number(I.root??!1)||(l.degree??0)-(I.degree??0)||I.id.localeCompare(l.id));const A=148;r.forEach((I,l)=>i.set(I.id,{x:(l-(r.length-1)/2)*A,y:o*168}))}return i}function hee(n){const e=new Map,t=n[0];if(!t)return e;e.set(t.id,{x:0,y:0});let i=1,o=1;for(;i{if(o===0)return[i.id,{x:0,y:0}];const r=36*Math.sqrt(o),A=o*.52;return[i.id,{x:Math.cos(A)*r,y:Math.sin(A)*r}]}))}function pee(n,e){const r=new Map;n.forEach((x,O)=>{const y=e?Math.floor(O/16):x.community,S=r.get(y)??[];S.push(x),r.set(y,S)});const A=[...r.entries()].sort(([x],[O])=>x-O).map(([x,O])=>{const y=Math.max(1,Math.ceil(Math.sqrt(O.length))),S=Math.max(1,Math.ceil(O.length/y));return{key:x,members:O,columns:y,rows:S,width:(y-1)*56,height:(S-1)*56}}),I=Math.max(1,Math.ceil(Math.sqrt(A.length))),l=Math.max(1,Math.ceil(A.length/I)),c=Array.from({length:I},()=>0),h=Array.from({length:l},()=>0);A.forEach((x,O)=>{const y=O%I,S=Math.floor(O/I);c[y]=Math.max(c[y]??0,x.width),h[S]=Math.max(h[S]??0,x.height)});const p=a2(c,112),m=a2(h,112),v=new Map;return A.forEach((x,O)=>{const y=O%I,S=Math.floor(O/I);x.members.forEach((E,_)=>{const j=Math.floor(_/x.columns),X=Math.min(x.columns,x.members.length-j*x.columns),ne=_%x.columns;v.set(E.id,{x:(p[y]??0)+(ne-(X-1)/2)*56,y:(m[S]??0)+(j-(x.rows-1)/2)*56})})}),v}function a2(n,e){let i=-(n.reduce((o,r)=>o+r,0)+Math.max(0,n.length-1)*e)/2;return n.map(o=>{const r=i+o/2;return i+=o+e,r})}function A2(n){if(!n.stats.aggregated||n.edges.length<=Yu)return n.edges;const e=[...n.edges].sort((A,I)=>(I.weight??C2(I.relation))-(A.weight??C2(A.relation))||A.source.localeCompare(I.source)||A.target.localeCompare(I.target)||A.id.localeCompare(I.id)),t=new Map(n.nodes.map(A=>[A.id,A.id])),i=A=>{let I=t.get(A)??A;for(;t.get(I)!==void 0&&t.get(I)!==I;)I=t.get(I);let l=A;for(;t.get(l)!==void 0&&t.get(l)!==I;){const c=t.get(l);t.set(l,I),l=c}return I},o=[],r=new Set;for(const A of e){const I=i(A.source),l=i(A.target);if(I!==l&&(t.set(l,I),o.push(A),r.add(A.id),o.length===Yu))return o}for(const A of e)if(!r.has(A.id)&&(o.push(A),o.length===Yu))break;return o}function C2(n){const e=Number.parseInt(n,10);return Number.isFinite(e)&&e>0?e:1}function mee(n){const e=[...n].sort((o,r)=>(r.degree??0)-(o.degree??0)||(r.memberCount??0)-(o.memberCount??0)||o.id.localeCompare(r.id)),t=Math.PI*(3-Math.sqrt(5)),i=34;return new Map(e.map((o,r)=>{if(r===0)return[o.id,{x:0,y:0}];const A=i*Math.sqrt(r),I=r*t;return[o.id,{x:Math.cos(I)*A,y:Math.sin(I)*A}]}))}const bI=176,yI=108,I2=8,vee=1500,bee=2e3;function yee(n){const e=[...n.positions.values()],t=n.viewport.left+n.viewport.width,i=n.viewport.top+n.viewport.height,o=[...e.map(F=>F.x),n.viewport.left,t],r=[...e.map(F=>F.y),n.viewport.top,i],A=Math.min(...o),I=Math.max(...o),l=Math.min(...r),c=Math.max(...r),h=Math.max(1,I-A),p=Math.max(1,c-l),m=bI-I2*2,v=yI-I2*2,x=Math.min(m/h,v/p),O=h*x,y=p*x,S=(bI-O)/2,E=(yI-y)/2,_=({x:F,y:V})=>({x:S+(F-A)*x,y:E+(V-l)*x}),j=({x:F,y:V})=>({x:A+(F-S)/x,y:l+(V-E)/x}),X=_({x:n.viewport.left,y:n.viewport.top}),ne=_({x:t,y:i});return{project:_,unproject:j,viewport:{x:X.x,y:X.y,width:ne.x-X.x,height:ne.y-X.y}}}function wee({model:n,snapshot:e,visibleNodeIds:t,visibleEdgeIds:i,focusedNodeId:o,semanticDetail:r=!1,onNavigate:A}){const I=P.useMemo(()=>yee(e),[e]),l=P.useMemo(()=>n.nodes.filter(v=>!t||t.has(v.id)).sort((v,x)=>v.id.localeCompare(x.id)),[n.nodes,t]),c=l.slice(0,vee),h=P.useMemo(()=>n.edges.filter(v=>(!i||i.has(v.id))&&(!t||t.has(v.source)&&t.has(v.target))).sort((v,x)=>v.id.localeCompare(x.id)).slice(0,bee),[n.edges,i,t]),p=P.useMemo(()=>new Map(n.communities.map(v=>[v.id,v.color])),[n.communities]),m=v=>{const x=v.currentTarget.getBoundingClientRect();x.width<=0||x.height<=0||A(I.unproject({x:(v.clientX-x.left)/x.width*bI,y:(v.clientY-x.top)/x.height*yI}))};return f.jsxs("aside",{className:"compass-minimap compass-glass-panel","aria-label":"Graph overview",children:[f.jsxs("header",{children:[f.jsx("span",{children:"Map"}),f.jsx("small",{children:c.length{const x=e.positions.get(v.source),O=e.positions.get(v.target);if(!x||!O)return null;const y=I.project(x),S=I.project(O);return f.jsx("line",{x1:y.x,y1:y.y,x2:S.x,y2:S.y},v.id)})}),f.jsx("g",{className:"compass-minimap-nodes",children:c.map(v=>{const x=e.positions.get(v.id);if(!x)return null;const O=I.project(x);return f.jsx("circle",{cx:O.x,cy:O.y,r:v.id===o?3:1.65,fill:r?dj(hs(v.kind)):v.color?.background??p.get(v.community)??"currentColor","data-node-category":r?hs(v.kind):void 0,"data-focused":v.id===o?"true":void 0},v.id)})}),f.jsx("rect",{className:"compass-minimap-viewport",x:I.viewport.x,y:I.viewport.y,width:I.viewport.width,height:I.viewport.height,rx:"2"})]})})]})}const l2={added:{background:"#163d24",border:"#56d364"},removed:{background:"#4b1f24",border:"#ff7b72"},changed:{background:"#3d3015",border:"#d7a72b"},unchanged:{background:"#29313b",border:"#8b949e"}},xee={callable:{background:"#193652",border:"#5fa8ff"},type:{background:"#3d341b",border:"#e3b341"},module:{background:"#193b38",border:"#56d4b4"},boundary:{background:"#432b29",border:"#ff9b87"},other:{background:"#29313b",border:"#8b949e"}},Eee={execution:"#5fa8ff",dependency:"#56d4b4",structure:"#e3b341",flow:"#ff9b87",other:"#60728b"},See=200,Tee=1500,c2=.1,Oee=3,Nee=18,Dee=96,kee=1500;function Mee(n,e){const t=[...e].sort().slice(0,kee),i=n.getPositions(t),o=Object.values(i),r=o.length===0?0:Math.max(Math.max(...o.map(({x:l})=>l))-Math.min(...o.map(({x:l})=>l)),Math.max(...o.map(({y:l})=>l))-Math.min(...o.map(({y:l})=>l))),A=Math.min(Dee,Math.max(Nee,r*.012)),I=Math.PI*(3-Math.sqrt(5));t.forEach((l,c)=>{const h=i[l];if(!h)return;const p=c*I;n.moveNode(l,h.x+Math.cos(p)*A,h.y+Math.sin(p)*A)})}function Qs(n){return window.matchMedia("(prefers-reduced-motion: reduce)").matches?!1:{duration:n,easingFunction:"easeInOutQuad"}}const Ree={autoResize:!0,interaction:{hover:!0,tooltipDelay:100,hideEdgesOnDrag:!0,navigationButtons:!1,keyboard:{enabled:!0}},layout:{improvedLayout:!0},nodes:{borderWidth:1.5,shape:"dot"},edges:{arrows:{to:{enabled:!0,scaleFactor:.5}},smooth:{enabled:!0,type:"continuous",roundness:.2},selectionWidth:3},physics:{enabled:!0,solver:"forceAtlas2Based",stabilization:{enabled:!0,iterations:200,fit:!0,updateInterval:20},forceAtlas2Based:{gravitationalConstant:-60,centralGravity:.005,springLength:120,springConstant:.08,damping:.4,avoidOverlap:.8}}},zee={autoResize:!0,interaction:{hover:!0,tooltipDelay:100,hideEdgesOnDrag:!0,navigationButtons:!1,keyboard:{enabled:!0}},layout:{improvedLayout:!0,randomSeed:17},nodes:{borderWidth:2,shape:"dot"},edges:{arrows:{to:{enabled:!0,scaleFactor:.38}},smooth:{enabled:!0,type:"continuous",roundness:.14},selectionWidth:3},physics:{enabled:!0,solver:"barnesHut",stabilization:{enabled:!0,iterations:520,fit:!0,updateInterval:25},maxVelocity:35,minVelocity:.55,barnesHut:{theta:.45,gravitationalConstant:-12e3,centralGravity:.12,springLength:180,springConstant:.025,damping:.3,avoidOverlap:.85}}},_ee={autoResize:!0,interaction:{hover:!0,tooltipDelay:100,hideEdgesOnDrag:!0,hideEdgesOnZoom:!0,hoverConnectedEdges:!1,selectConnectedEdges:!1,navigationButtons:!1,keyboard:{enabled:!0}},layout:{improvedLayout:!1,randomSeed:17},nodes:{borderWidth:1.5,shape:"dot"},edges:{arrows:{to:{enabled:!1}},chosen:!1,smooth:!1,selectionWidth:3},physics:{enabled:!1,solver:"barnesHut"}};function d2(n,e,t,i,o,r){if(e.groundingStatus==="GROUNDED")return{background:"#153d3a",border:e.challenged?"#fbbf24":"#5eead4"};const A=e.change&&i?i[e.change]:void 0,I=r?.[hs(e.kind)],l=A?A.background:I?.background??e.color?.background??o?.get(e.community)??n.communities.find(c=>c.id===e.community)?.color??"#6688aa";return{background:l,border:t??A?.border??I?.border??e.color?.border??l}}function _t(n,e){return typeof window>"u"?e:getComputedStyle(document.documentElement).getPropertyValue(n).trim()||e}function jee(n){return n==="extracted"?{dashes:!1,width:2,opacity:.7}:n==="ambiguous"?{dashes:[3,4],width:2,opacity:.62}:n==="aggregated"?{dashes:!1,width:1,opacity:.2}:{dashes:!0,width:1,opacity:.35}}function u2(n,e,t,i){if(n==="added")return{color:i.added.border,dashes:!1,width:1.7,opacity:.6};if(n==="removed")return{color:i.removed.border,dashes:[6,5],width:1.6,opacity:.56};if(n==="changed")return{color:i.changed.border,dashes:!1,width:1.65,opacity:.48};if(n==="unchanged")return{color:i.unchanged.border,dashes:!0,width:1,opacity:.2};const o=jee(e);return{color:t,...o}}function h2(n,e){return n.challenged?{color:"#fbbf24",dashes:[3,3],width:2.5,opacity:.9}:n.groundingStatus==="GROUNDED"?{color:"#5eead4",dashes:[7,4],width:2.3,opacity:.86}:e}function Pee(n){return n==="added"?{enabled:!0,type:"curvedCW",roundness:.13}:n==="removed"?{enabled:!0,type:"curvedCCW",roundness:.13}:{enabled:!0,type:"continuous",roundness:.1}}function Bee(n){const e=new Map;for(const r of[...n].sort((A,I)=>A.id.localeCompare(I.id))){const A=r.change??"unchanged",I=e.get(A)??[];I.push(r),e.set(A,I)}const t={added:-300,changed:0,removed:300,unchanged:0},i=new Map,o=Math.PI*(3-Math.sqrt(5));for(const[r,A]of e)A.forEach((I,l)=>{const c=l*o,h=r==="unchanged"?210+Math.sqrt(l)*34:42+Math.sqrt(l)*40;i.set(I.id,{x:t[r]+Math.cos(c)*h,y:Math.sin(c)*h})});return i}function Zee(){const[n,e]=P.useState(0);return P.useEffect(()=>{const t=()=>e(r=>r+1),i=new MutationObserver(t);i.observe(document.documentElement,{attributes:!0,attributeFilter:["class","style"]}),i.observe(document.body,{attributes:!0,attributeFilter:["class","style"]});const o=window.matchMedia("(prefers-color-scheme: dark)");return o.addEventListener("change",t),()=>{i.disconnect(),o.removeEventListener("change",t)}},[]),n}function Hu(n){const e=n.match(/^#([\da-f]{3}|[\da-f]{6})$/i)?.[1];if(e){const i=e.length===3?[...e].map(o=>`${o}${o}`).join(""):e;return[Number.parseInt(i.slice(0,2),16),Number.parseInt(i.slice(2,4),16),Number.parseInt(i.slice(4,6),16)]}const t=n.match(/^rgba?\(\s*([\d.]+)[,\s]+([\d.]+)[,\s]+([\d.]+)/i);if(t)return[Number.parseFloat(t[1]??"0"),Number.parseFloat(t[2]??"0"),Number.parseFloat(t[3]??"0")]}function Lee(n,e,t){const i=Hu(n),o=Hu(e);if(!i||!o)return e;const r=i.map((A,I)=>Math.round(A*(1-t)+o[I]*t));return`rgb(${r[0]}, ${r[1]}, ${r[2]})`}function f2(n){const e=Hu(n);return e?(e[0]*299+e[1]*587+e[2]*114)/1e3<145:!0}function Xs(n,e,t,i=!1){return{background:Lee(n,e,i?t?.18:.1:t?.26:.14),border:e}}const Gee=P.forwardRef(function({model:e,focusedNodeId:t,physicsRunning:i,layoutStyle:o="automatic",initialPositions:r,forceLabels:A,showEdgeLabels:I=!1,isolatedNodeIds:l,isolatedEdgeIds:c,layoutSpacing:h=1,showMinimap:p=!1,semanticDetail:m=!1,hiddenCommunities:v,hiddenChanges:x,onFocus:O,onOpenSource:y,onOpenRelationshipSource:S,onInteractionStart:E=()=>{},onHover:_,onHoverEdge:j,onClear:X,onStabilized:ne},F){const V=P.useRef(null),Ie=P.useRef(null),[Ee,Be]=P.useState(null),xe=P.useRef(i);xe.current=i;const Ue=P.useRef(i),Le=P.useRef({onFocus:O,onOpenSource:y,onOpenRelationshipSource:S,onInteractionStart:E,onHover:_,onHoverEdge:j,onClear:X});Le.current={onFocus:O,onOpenSource:y,onOpenRelationshipSource:S,onInteractionStart:E,onHover:_,onHoverEdge:j,onClear:X};const le=P.useRef(ne);le.current=ne;const M=P.useRef(null),Q=P.useRef(h),se=Zee(),K=P.useMemo(()=>lee(e),[e.edges.length,e.nodes.length]),q=P.useMemo(()=>A2(e),[e]),T=P.useMemo(()=>new Set(e.nodes.filter(Y=>!v.has(Y.community)&&!x.has(Y.change??"unchanged")&&(!l||l.has(Y.id))).map(Y=>Y.id)),[x,v,l,e.nodes]),U=P.useMemo(()=>new Set(q.filter(Y=>T.has(Y.source)&&T.has(Y.target)&&(!c||c.has(Y.id))).map(Y=>Y.id)),[c,q,T]),ie=P.useRef(T);ie.current=T;const ae=P.useCallback(()=>{const Y=Ie.current,Ae=V.current;if(!Y||!Ae)return;const Qe=Y.getPositions([...ie.current].sort().slice(0,Tee)),Et=Y.getViewPosition(),wt=Math.max(c2,Y.getScale()),Rn=Math.max(1,Ae.clientWidth)/wt,DI=Math.max(1,Ae.clientHeight)/wt;Be({positions:new Map(Object.entries(Qe)),viewport:{left:Et.x-Rn/2,top:Et.y-DI/2,width:Rn,height:DI}})},[]),ue=P.useMemo(()=>{let Y=1;for(const Ae of e.nodes)Y=Math.max(Y,Ae.degree??1);return Y},[e.nodes]),me=P.useMemo(()=>new Map(e.communities.map(Y=>[Y.id,Y.color])),[e.communities]),Ge=P.useMemo(()=>_t("--vscode-editor-foreground",_t("--foreground","#eef5ff")),[se]),ut=P.useMemo(()=>_t("--vscode-descriptionForeground",_t("--muted-foreground","#60728b")),[se]),Pe=P.useMemo(()=>_t("--vscode-editor-foreground",_t("--foreground","#d8e4f2")),[se]),en=P.useMemo(()=>{const Y=_t("--vscode-editor-background",_t("--background","#08111f")),Ae=f2(Y);return{added:Xs(Y,_t("--vscode-gitDecoration-addedResourceForeground",Ae?"#56d364":"#1a7f37"),Ae),removed:Xs(Y,_t("--vscode-gitDecoration-deletedResourceForeground",Ae?"#ff7b72":"#cf222e"),Ae),changed:Xs(Y,_t("--vscode-gitDecoration-modifiedResourceForeground",Ae?"#d7a72b":"#9a6700"),Ae),unchanged:Xs(Y,_t("--vscode-descriptionForeground",Ae?"#8b949e":"#656d76"),Ae,!0)}},[se]),pn=P.useMemo(()=>{const Y=_t("--vscode-editor-background",_t("--background","#08111f")),Ae=f2(Y),Qe=(Et,wt,Rn)=>Xs(Y,_t(Et,Ae?wt:Rn),Ae);return{callable:Qe("--vscode-symbolIcon-functionForeground","#5fa8ff","#0969da"),type:Qe("--vscode-symbolIcon-classForeground","#e3b341","#9a6700"),module:Qe("--vscode-symbolIcon-moduleForeground","#56d4b4","#168b76"),boundary:Qe("--vscode-symbolIcon-eventForeground","#ff9b87","#cf4c35"),other:Xs(Y,_t("--vscode-descriptionForeground",Ae?"#8b949e":"#656d76"),Ae,!0)}},[se]),R=P.useMemo(()=>({execution:_t("--vscode-symbolIcon-functionForeground","#5fa8ff"),dependency:_t("--vscode-symbolIcon-moduleForeground","#56d4b4"),structure:_t("--vscode-symbolIcon-classForeground","#e3b341"),flow:_t("--vscode-symbolIcon-eventForeground","#ff9b87"),other:ut}),[ut,se]),de=P.useMemo(()=>e.nodes.some(Y=>Y.change!==void 0)||e.edges.some(Y=>Y.change!==void 0),[e.edges,e.nodes]),Oe=P.useMemo(()=>new Set(de?e.nodes.filter(Y=>Y.change!=="unchanged").sort((Y,Ae)=>(Ae.degree??0)-(Y.degree??0)||Y.id.localeCompare(Ae.id)).slice(0,12).map(Y=>Y.id):K==="static"?[...e.nodes].sort((Y,Ae)=>(Ae.degree??0)-(Y.degree??0)||Y.id.localeCompare(Ae.id)).slice(0,20).map(Y=>Y.id):[]),[de,e.nodes,K]),et=P.useMemo(()=>K==="static"?new Set([...e.nodes].sort((Y,Ae)=>(Ae.degree??0)-(Y.degree??0)||Y.id.localeCompare(Ae.id)).slice(0,See).map(Y=>Y.id)):new Set,[e.nodes,K]),Dt=P.useMemo(()=>de?Bee(e.nodes):new Map,[de,e.nodes]),Zt=o==="automatic"?1:h,re=P.useMemo(()=>o==="automatic"?new Map:dee(e.nodes,o,e.stats.aggregated),[o,e.nodes,e.stats.aggregated]),Me=P.useMemo(()=>K==="static"&&!de?cee(e.nodes,e.stats.aggregated):new Map,[de,e.nodes,e.stats.aggregated,K]),_e=P.useMemo(()=>typeof document>"u"?void 0:document.body.classList.contains("vscode-high-contrast")||document.body.classList.contains("vscode-high-contrast-light")?_t("--vscode-contrastBorder","#ffffff"):void 0,[se]),Lt=P.useMemo(()=>new Hs(e.nodes.map(Y=>{const Ae=Y.size??Math.min(40,10+30*(Y.degree??1)/ue),Qe=de?Y.change==="unchanged"?7+5*Math.sqrt((Y.degree??1)/ue):11+12*Math.sqrt((Y.degree??1)/ue):Ae,Et=re.get(Y.id)??Dt.get(Y.id)??r?.get(Y.id)??Me.get(Y.id),wt=Et?{x:Et.x*Zt,y:Et.y*Zt}:void 0;return{id:Y.id,label:Y.label,color:d2(e,Y,void 0,l2,me,m?xee:void 0),shape:m?cj(hs(Y.kind)):"dot",size:Qe,...wt??{},opacity:Y.change==="unchanged"?.58:1,font:{color:"#eef5ff",face:"system-ui",size:de||K==="static"?Oe.has(Y.id)?12:0:(Y.degree??1)>=ue*.15?12:0}}})),[Oe,de,Dt,me,r,Zt,ue,e,K,m,re,Me]),Tn=P.useMemo(()=>new Hs(q.map(Y=>{const Ae=h2(Y,u2(Y.change,Y.confidence,m?Eee[yc(Y.relation)]:"#60728b",l2));return{id:Y.id,from:Y.source,to:Y.target,dashes:Ae.dashes,width:Ae.width,...de&&K!=="static"?{smooth:Pee(Y.change)}:{},color:{color:Ae.color,opacity:Ae.opacity}}})),[de,q,K,m]);return P.useEffect(()=>{const Y=V.current;if(!Y)return;M.current=null;const Ae=new ve(Y,{nodes:Lt,edges:Tn},K==="static"?_ee:de?zee:Ree);Ae.setOptions({physics:{enabled:xe.current}}),xe.current||Ae.stopSimulation(),Ie.current=Ae,Aee(Ae,{onFocus:wt=>Le.current.onFocus(wt),onOpenSource:wt=>Le.current.onOpenSource(wt),onOpenRelationshipSource:wt=>Le.current.onOpenRelationshipSource(wt),onInteractionStart:()=>{xe.current&&Ae.stopSimulation(),Le.current.onInteractionStart()},onHover:wt=>Le.current.onHover(wt),onHoverEdge:wt=>Le.current.onHoverEdge(wt),onClear:()=>Le.current.onClear()}),Ae.on("stabilizationIterationsDone",()=>{Ae.stopSimulation(),M.current={position:Ae.getViewPosition(),scale:Ae.getScale()},le.current(),ae()}),Ae.on("stabilized",ae),Ae.on("dragEnd",ae),Ae.on("zoom",ae),Ae.on("resize",ae),Ae.on("animationFinished",ae);const Qe=Dt.size>0||re.size>0||(r?.size??0)>0||Me.size>0;!xe.current&&Qe&&(Ae.stopSimulation(),Ae.fit({animation:!1}),M.current={position:Ae.getViewPosition(),scale:Ae.getScale()});const Et=window.setTimeout(ae,0);return()=>{window.clearTimeout(Et),Ae.destroy(),Ie.current=null}},[Tn,Lt,de,Dt,r,K,re,Me,ae]),P.useEffect(()=>{const Y=Ie.current;if(!Y)return;const Ae=Ue.current;Ue.current=i,Y.setOptions({physics:{enabled:i}}),i?(Ae||Mee(Y,ie.current),Y.startSimulation()):Y.stopSimulation()},[Tn,Lt,i]),P.useEffect(()=>{const Y=Ie.current;if(!Y||o!=="automatic"||K==="static")return;const Ae=Q.current;if(Q.current=h,Y.setOptions({physics:de?{barnesHut:{springLength:180*h}}:{forceAtlas2Based:{springLength:120*h}}}),!i&&Ae!==h){const Qe=h/Ae,Et=Y.getPositions();Lt.update(Object.entries(Et).map(([wt,Rn])=>({id:wt,x:Rn.x*Qe,y:Rn.y*Qe}))),Y.redraw(),ae()}},[de,h,o,Lt,i,ae,K]),P.useEffect(()=>{Lt.update(e.nodes.map(Y=>({id:Y.id,hidden:!T.has(Y.id)}))),Tn.update(q.map(Y=>({id:Y.id,hidden:!U.has(Y.id)}))),ae()},[Tn,ae,q,e.nodes,Lt,U,T]),P.useEffect(()=>{const Y=Ie.current;if(!Y)return;const Ae=t?new Set(Y.getConnectedNodes(t).map(String)):new Set;if(Lt.update(e.nodes.map(Qe=>{const Et=Qe.id===t,wt=!t||Et||Ae.has(Qe.id),Rn=Qe.change==="unchanged"?.58:1;return{id:Qe.id,opacity:t?wt?Math.max(Rn,.72):.08:Rn,borderWidth:Et?4:_e?2.5:1.5,color:d2(e,Qe,_e,en,me,m?pn:void 0),shadow:Et?{enabled:!0,color:Qe.change?en[Qe.change].border:m?pn[hs(Qe.kind)].border:Qe.color?.background??me.get(Qe.community)??"#76b7ff",size:24,x:0,y:0}:{enabled:!1}}})),Tn.update(q.map(Qe=>{const Et=h2(Qe,u2(Qe.change,Qe.confidence,m?R[yc(Qe.relation)]:ut,en)),wt=Qe.source===t||Qe.target===t;return{id:Qe.id,dashes:Et.dashes,color:{color:Et.color,opacity:t?wt?.92:.05:Et.opacity},width:wt?Math.max(3,Et.width):Et.width}})),t)if(Y.selectNodes([t]),xe.current)Y.focus(t,{scale:1.35,animation:window.matchMedia("(prefers-reduced-motion: reduce)").matches?!1:{duration:260,easingFunction:"easeInOutQuad"}});else{const Qe=Y.getPositions([t])[t];Qe&&Y.moveTo({position:Qe,scale:1.35,animation:!1})}else Y.unselectAll()},[_e,en,me,ut,Tn,t,e,Lt,q,m,R,pn]),P.useEffect(()=>{Lt.update(e.nodes.map(Y=>({id:Y.id,font:{color:Ge,size:A&&(K!=="static"||et.has(Y.id))||Y.id===t||(de||K==="static"?Oe.has(Y.id):(Y.degree??1)>=ue*.15)?12:0}})))},[Oe,de,et,t,A,Ge,ue,e.nodes,Lt,K]),P.useEffect(()=>{Tn.update(q.map(Y=>({id:Y.id,label:I?Y.relation:"",font:{align:"middle",color:Pe,face:"system-ui",size:10,strokeWidth:3,strokeColor:_t("--vscode-editor-background",_t("--background","#08111f"))}})))},[Tn,Pe,q,I]),P.useImperativeHandle(F,()=>({fit(){Ie.current?.fit({animation:Qs(280)})},fitSelection(Y){const Ae=Ie.current;!Ae||Y.length===0||Ae.fit({nodes:[...new Set(Y)],animation:Qs(240)})},reset(){const Y=Ie.current,Ae=M.current;if(Y){if(!Ae){Y.fit({animation:!1});return}Y.moveTo({position:Ae.position,scale:Ae.scale,animation:!1})}},resetZoom(){Ie.current?.moveTo({scale:1,animation:Qs(180)})},zoomIn(){const Y=Ie.current;Y&&Y.moveTo({scale:Math.min(Oee,Y.getScale()*1.25),animation:Qs(160)})},zoomOut(){const Y=Ie.current;Y&&Y.moveTo({scale:Math.max(c2,Y.getScale()/1.25),animation:Qs(160)})}}),[]),f.jsxs(f.Fragment,{children:[f.jsx("div",{ref:V,className:"compass-canvas","data-rendering-profile":K,"data-layout-style":o,"data-physics-running":i?"true":"false","data-isolated":l?"true":"false","data-layout-spacing":h,role:"region","aria-label":"Interactive Compass code graph",onMouseLeave:()=>{_(null),j(null)}}),p&&Ee?f.jsx(wee,{model:e,snapshot:Ee,visibleNodeIds:T,visibleEdgeIds:U,focusedNodeId:t,semanticDetail:m,onNavigate:Y=>Ie.current?.moveTo({position:Y,animation:Qs(180)})}):null]})}),p2=1,m2=4;function Fee(n){return Math.max(p2,Math.min(m2,Math.trunc(n)))}function Vee(n,e,t,i){const o=Fee(t),r=new Map,A=new Map;for(const h of n.edges){const p=r.get(h.source)??[];p.push(h),r.set(h.source,p);const m=A.get(h.target)??[];m.push(h),A.set(h.target,m)}for(const h of[...r.values(),...A.values()])h.sort((p,m)=>p.id.localeCompare(m.id));const I=new Set([e]),l=new Set;let c=[e];for(let h=0;h0;h+=1){const p=new Set;for(const m of c.sort()){if(i!=="incoming")for(const v of r.get(m)??[])l.add(v.id),I.has(v.target)||p.add(v.target);if(i!=="outgoing")for(const v of A.get(m)??[])l.add(v.id),I.has(v.source)||p.add(v.source)}c=[...p];for(const m of c)I.add(m)}return{nodeIds:I,edgeIds:l}}const v2={focusedNodeId:null,physicsRunning:!1,layoutStyle:"automatic",initialLayoutPending:!1,forceLabels:!1,showEdgeLabels:!1,isolateSelection:!1,neighborhoodDepth:1,edgeDirection:"both",layoutSpacing:1,showMinimap:!0,hiddenCommunities:new Set,hiddenChanges:new Set,query:""};function Uee(n,e="automatic"){return e!=="automatic"?{...v2,layoutStyle:e,physicsRunning:!1,initialLayoutPending:!1}:{...v2,physicsRunning:!1,initialLayoutPending:!1}}function Yee(n,e){switch(e.type){case"focus":return{...n,focusedNodeId:e.nodeId,physicsRunning:!1};case"clearFocus":return{...n,focusedNodeId:null,isolateSelection:!1};case"stabilized":return n.physicsRunning||n.initialLayoutPending?{...n,physicsRunning:!1,initialLayoutPending:!1}:n;case"revealLayout":return{...n,physicsRunning:!1,initialLayoutPending:!1};case"setPhysics":return{...n,physicsRunning:e.running};case"setLayout":return{...n,layoutStyle:e.layout,physicsRunning:e.runPhysics,initialLayoutPending:!1};case"setLabels":return{...n,forceLabels:e.visible};case"setEdgeLabels":return{...n,showEdgeLabels:e.visible};case"setIsolation":return{...n,isolateSelection:e.isolated};case"setNeighborhoodDepth":return{...n,neighborhoodDepth:Math.max(1,Math.min(4,Math.trunc(e.depth)))};case"setEdgeDirection":return{...n,edgeDirection:e.direction};case"setLayoutSpacing":return{...n,layoutSpacing:e.spacing};case"setMinimap":return{...n,showMinimap:e.visible};case"search":return{...n,query:e.query};case"toggleCommunity":{const t=new Set(n.hiddenCommunities);return t.has(e.communityId)?t.delete(e.communityId):t.add(e.communityId),{...n,hiddenCommunities:t}}case"setHiddenCommunities":return{...n,hiddenCommunities:new Set(e.communityIds)};case"toggleChange":{const t=new Set(n.hiddenChanges);return t.has(e.change)?t.delete(e.change):t.add(e.change),{...n,hiddenChanges:t}}}}const Hee=[{value:"added",label:"Added"},{value:"removed",label:"Removed"},{value:"changed",label:"Changed"},{value:"unchanged",label:"Context"}],Kee={hierarchical:"Depth-layer layout",circle:"Circle layout",concentric:"Concentric layout",spiral:"Spiral layout",grid:"Square grid layout"},Ku=["both","outgoing","incoming"];function Wee(n){return n instanceof HTMLElement&&(n.isContentEditable||n.tagName==="INPUT"||n.tagName==="TEXTAREA"||n.tagName==="SELECT")}function Wu({model:n,host:e,communityDetail:t,communityLoading:i,communityError:o,onBackToOverview:r,sourceRevisions:A,queryResult:I,initialInspectorLayout:l,onInspectorLayoutChange:c,preferredLayout:h="automatic",toolbarLeading:p,toolbarLeadingPanel:m,toolbarLeadingOpen:v,onToolbarLeadingClose:x,stageOverlay:O,showInspectorHeader:y=!0}){const[S,E]=P.useState(()=>Wv(l)),_=P.useCallback(ne=>{const F=Wv(ne);E(F),c?.(F)},[c]),j=t?.model??n,X=t?`community-${t.communityId}`:"overview";return f.jsx(Qee,{model:j,host:e,detailCommunityId:t?.communityId,communityLoading:i,communityError:o,onBackToOverview:t?r:void 0,bounded:t?.bounded,sourceRevisions:A,queryResult:I,inspectorLayout:S,onInspectorLayoutChange:_,preferredLayout:h,toolbarLeading:p,toolbarLeadingPanel:m,toolbarLeadingOpen:v,onToolbarLeadingClose:x,stageOverlay:O,showInspectorHeader:y},X)}function Qee({model:n,host:e,detailCommunityId:t,communityLoading:i,communityError:o,onBackToOverview:r,bounded:A,sourceRevisions:I,queryResult:l,inspectorLayout:c,onInspectorLayoutChange:h,preferredLayout:p,toolbarLeading:m,toolbarLeadingPanel:v,toolbarLeadingOpen:x,onToolbarLeadingClose:O,stageOverlay:y,showInspectorHeader:S}){const[E,_]=P.useReducer(Yee,n,re=>Uee(re,p)),[j,X]=P.useState(null),[ne,F]=P.useState(null),V=P.useRef(null),Ie=P.useRef(e);Ie.current=e;const Ee=P.useMemo(()=>new Map(n.nodes.map(re=>[re.id,re])),[n.nodes]),Be=P.useMemo(()=>new Map(n.edges.map(re=>[re.id,re])),[n.edges]),xe=P.useMemo(()=>{const re=new Map,Me=new Map;for(const _e of n.edges){const Lt=re.get(_e.source)??new Set;Lt.add(_e.target),re.set(_e.source,Lt);const Tn=re.get(_e.target)??new Set;Tn.add(_e.source),re.set(_e.target,Tn);const Y=Me.get(_e.source)??[];Y.push(_e),Me.set(_e.source,Y);const Ae=Me.get(_e.target)??[];Ae.push(_e),Me.set(_e.target,Ae)}return{neighborIds:re,edges:Me}},[n.edges]),Ue=P.useMemo(()=>n.nodes.map(re=>({node:re,text:[re.label,re.source?.file,re.kind].filter(Me=>Me!==void 0).join(` +`).toLocaleLowerCase()})),[n.nodes]),Le=P.useMemo(()=>A2(n).length,[n]),le=E.focusedNodeId?Ee.get(E.focusedNodeId):void 0,M=P.useMemo(()=>le?Vee(n,le.id,E.neighborhoodDepth,E.edgeDirection):null,[n,le,E.edgeDirection,E.neighborhoodDepth]),Q=j?Ee.get(j.nodeId):void 0,se=Q?Qv(n,Q,t):void 0,K=ne?Be.get(ne.edgeId):void 0,q=K?Ee.get(K.source):void 0,T=K?Ee.get(K.target):void 0,U=P.useMemo(()=>n.nodes.some(re=>re.change!==void 0)||n.edges.some(re=>re.change!==void 0),[n.edges,n.nodes]),ie=P.useMemo(()=>{const re=new Map;for(const Me of n.nodes){const _e=Me.change??"unchanged";re.set(_e,(re.get(_e)??0)+1)}return re},[n.nodes]),ae=P.useMemo(()=>le?[...xe.neighborIds.get(le.id)??[]].map(re=>Ee.get(re)).filter(re=>re!==void 0).sort((re,Me)=>re.label.localeCompare(Me.label)):[],[xe.neighborIds,Ee,le]),ue=P.useMemo(()=>le?xe.edges.get(le.id)??[]:[],[xe.edges,le]),me=P.useDeferredValue(E.query),Ge=P.useMemo(()=>{const re=me.trim().toLocaleLowerCase();if(!re)return[];const Me=[];for(const _e of Ue)if(_e.text.includes(re)&&Me.push(_e.node),Me.length===20)break;return Me},[me,Ue]),ut=P.useCallback(re=>{X(null),F(null),_({type:"focus",nodeId:re})},[]),Pe=P.useCallback(()=>{E.physicsRunning&&_({type:"setPhysics",running:!1})},[E.physicsRunning]),en=P.useCallback(()=>{X(null),F(null),_({type:"clearFocus"})},[]);P.useEffect(()=>{E.focusedNodeId&&!Ee.has(E.focusedNodeId)&&en()},[en,Ee,E.focusedNodeId]),P.useEffect(()=>{const re=Me=>{if(Me.metaKey||Me.ctrlKey||Me.altKey||Wee(Me.target))return;const _e=Me.key.toLocaleLowerCase();let Lt=!0;if(_e==="f")Me.shiftKey&&M?V.current?.fitSelection([...M.nodeIds]):Me.shiftKey?Lt=!1:V.current?.fit();else if(_e==="+"||_e==="=")V.current?.zoomIn();else if(_e==="-"||_e==="_")V.current?.zoomOut();else if(_e==="0")V.current?.resetZoom();else if(_e==="i"&&le)_({type:"setIsolation",isolated:!E.isolateSelection});else if(_e==="[")_({type:"setNeighborhoodDepth",depth:Math.max(p2,E.neighborhoodDepth-1)});else if(_e==="]")_({type:"setNeighborhoodDepth",depth:Math.min(m2,E.neighborhoodDepth+1)});else if(_e==="d"){const Tn=Ku.indexOf(E.edgeDirection);_({type:"setEdgeDirection",direction:Ku[(Tn+1)%Ku.length]??"both"})}else _e==="m"?_({type:"setMinimap",visible:!E.showMinimap}):Lt=!1;Lt&&Me.preventDefault()};return document.addEventListener("keydown",re,{capture:!0}),()=>document.removeEventListener("keydown",re,{capture:!0})},[le,M,E.edgeDirection,E.isolateSelection,E.neighborhoodDepth,E.showMinimap]);const pn=P.useCallback(()=>{_({type:"stabilized"})},[]),R=P.useCallback(()=>{_({type:"revealLayout"})},[]),de=P.useCallback(re=>{const Me=Ee.get(re);if(!Me)return;const _e=Qv(n,Me,t);_e.type==="community"&&Ie.current.openCommunity?.(_e.communityId),_e.type==="source"&&Ie.current.openSource(_e.source,Me.change==="removed"?I?.before:I?.after)},[t,Ee,n.stats.aggregated,I?.after,I?.before]),Oe=P.useCallback(re=>{const Me=Be.get(re);if(!Me)return;const _e=jv(Me);_e&&Ie.current.openSource(_e,Me.change==="removed"?I?.before:I?.after)},[Be,I?.after,I?.before]),et=le&&E.isolateSelection&&M?`Isolated ${M.nodeIds.size} nodes · ${E.neighborhoodDepth} hop${E.neighborhoodDepth===1?"":"s"}`:le?`Inspecting ${le.label}`:E.layoutStyle!=="automatic"?Kee[E.layoutStyle]:E.physicsRunning?"Layout running":"Layout static",Dt=i!=null?n.communities.find(re=>re.id===i):void 0,Zt=i!=null?{kind:"community",communityLabel:Dt?.label??`Community ${i}`}:E.initialLayoutPending?{kind:"layout"}:null;return f.jsxs("div",{className:"compass-workspace",style:{"--compass-inspector-width":`${c.width}px`},children:[f.jsxs("div",{className:"compass-workspace-content","data-inspector-collapsed":c.collapsed,inert:Zt?!0:void 0,"aria-hidden":Zt?!0:void 0,children:[f.jsxs("main",{className:"compass-graph-stage","data-comparison":U?"true":"false",children:[f.jsx(Gee,{ref:V,model:n,focusedNodeId:le?.id??null,physicsRunning:E.physicsRunning,layoutStyle:E.layoutStyle,forceLabels:E.forceLabels,showEdgeLabels:E.showEdgeLabels,isolatedNodeIds:E.isolateSelection?M?.nodeIds:void 0,isolatedEdgeIds:E.isolateSelection?M?.edgeIds:void 0,layoutSpacing:E.layoutSpacing,showMinimap:E.showMinimap,semanticDetail:t!==void 0&&!U,hiddenCommunities:E.hiddenCommunities,hiddenChanges:E.hiddenChanges,onFocus:ut,onOpenSource:de,onOpenRelationshipSource:Oe,onInteractionStart:Pe,onHover:X,onHoverEdge:F,onClear:en,onStabilized:pn}),y,f.jsx(nj,{status:et,physicsRunning:E.physicsRunning,layoutStyle:E.layoutStyle,forceLabels:E.forceLabels,showEdgeLabels:E.showEdgeLabels,hasSelection:le!==void 0,isolateSelection:E.isolateSelection,neighborhoodDepth:E.neighborhoodDepth,edgeDirection:E.edgeDirection,layoutSpacing:E.layoutSpacing,showMinimap:E.showMinimap,leadingControls:m,leadingPanel:v,leadingPanelOpen:x,onLeadingPanelClose:O,onTogglePhysics:()=>_({type:"setPhysics",running:!E.physicsRunning}),onLayoutChange:re=>_({type:"setLayout",layout:re,runPhysics:!1}),onZoomOut:()=>V.current?.zoomOut(),onResetZoom:()=>V.current?.resetZoom(),onZoomIn:()=>V.current?.zoomIn(),onFit:()=>V.current?.fit(),onFitSelection:()=>{M&&V.current?.fitSelection([...M.nodeIds])},onReset:()=>{en(),_({type:"setIsolation",isolated:!1}),V.current?.reset()},onToggleLabels:()=>_({type:"setLabels",visible:!E.forceLabels}),onToggleEdgeLabels:()=>_({type:"setEdgeLabels",visible:!E.showEdgeLabels}),onToggleIsolation:()=>{const re=!E.isolateSelection;_({type:"setIsolation",isolated:re}),re&&M&&window.requestAnimationFrame(()=>{V.current?.fitSelection([...M.nodeIds])})},onNeighborhoodDepthChange:re=>_({type:"setNeighborhoodDepth",depth:re}),onEdgeDirectionChange:re=>_({type:"setEdgeDirection",direction:re}),onLayoutSpacingChange:re=>_({type:"setLayoutSpacing",spacing:re}),onToggleMinimap:()=>_({type:"setMinimap",visible:!E.showMinimap}),onBack:r}),U&&f.jsx("div",{className:"compass-change-legend","aria-label":"Graph change filters",children:Hee.filter(({value:re})=>(ie.get(re)??0)>0).map(({value:re,label:Me})=>{const _e=!E.hiddenChanges.has(re);return f.jsxs("button",{type:"button","data-change":re,"aria-pressed":_e,onClick:()=>_({type:"toggleChange",change:re}),children:[f.jsx("span",{"aria-hidden":"true"}),Me,f.jsx("small",{children:ie.get(re)??0})]},re)})}),t!==void 0&&!U?f.jsx(fj,{model:n}):null,o&&f.jsx("div",{className:"absolute bottom-4 left-4 z-20 max-w-md rounded-md border border-destructive/50 bg-background/95 px-3 py-2 text-sm text-destructive shadow-lg",role:"alert",children:o}),A&&f.jsxs("div",{className:"compass-bounded-notice",role:"status",children:[f.jsx("strong",{children:"Partial community comparison"}),f.jsxs("span",{children:["This view is limited to ",A.limit.toLocaleString()," nodes. Increase"," ",f.jsx("code",{children:"compass.graphNodeLimit"})," to inspect all"," ",Math.max(A.parentMembers,A.currentMembers).toLocaleString()," symbols."]})]}),j&&Q&&se&&f.jsx(yj,{node:Q,hover:j,activation:se}),ne&&K&&q&&T&&f.jsx(Oj,{edge:K,sourceNode:q,targetNode:T,hover:ne})]}),!c.collapsed&&f.jsx(vj,{width:c.width,onResize:re=>h({...c,width:re})}),f.jsx(q_,{model:n,selected:le,neighbors:ae,connectedEdges:ue,query:E.query,matches:Ge,hiddenCommunities:E.hiddenCommunities,comparisonMode:U,sourceRevisions:I,queryResult:l,renderedEdgeCount:Le,showHeader:S,onQueryChange:re=>_({type:"search",query:re}),onFocus:ut,onOpenSource:e.openSource,onOpenCommunity:t===void 0?e.openCommunity:void 0,onQueryNode:e.queryNode,onToggleCommunity:re=>_({type:"toggleCommunity",communityId:re}),onSetAllVisible:re=>_({type:"setHiddenCommunities",communityIds:re?[]:n.communities.map(Me=>Me.id)}),collapsed:c.collapsed,onToggleCollapsed:()=>h({...c,collapsed:!c.collapsed})})]}),Zt?.kind==="community"?f.jsx(Vv,{kind:"community",communityLabel:Zt.communityLabel}):Zt?.kind==="layout"?f.jsx(Vv,{kind:"layout",onShowGraph:R}):null]})}const Qu=224,Xee=76,wI=124,Xu=96,$s=96,$ee=288,qee=112,$u=12;function Jee(n,e,t={width:1280,height:620},i={},o){const r=n.filter(F=>F.nodeCount>0||F.incomingRelationships>0||F.outgoingRelationships>0);if(r.length===0)return{width:t.width,height:t.height,nodes:[],routes:[],lanes:[]};const A=new Set(r.map(F=>F.id)),I=e.filter(F=>A.has(F.sourceGroup)&&A.has(F.targetGroup)),l=ete(r,I),c=l.length,h=Math.max(t.width,$s*2+$ee*c),p=(h-$s*2)/c;ite(l,I);const m=Math.max(...l.map(F=>F.length)),v=Math.max(t.height,wI+Xu+m*qee),x=l.findIndex(F=>F.some(V=>V.id===o)),O=Array.from({length:c},(F,V)=>({index:V,x:$s+p*V,width:p,label:ate(V,c,x<0?void 0:x)})),y=v-wI-Xu,S=l.flatMap((F,V)=>{const Ie=y/Math.max(1,F.length);return F.map((Ee,Be)=>{const xe={x:$s+p*V+p/2,y:wI+Ie*Be+Ie/2},Ue=i[Ee.id]??xe;return{...Ee,x:qu(Ue.x,$s+Qu/2,h-$s-Qu/2),y:qu(Ue.y,wI,v-Xu),width:Math.min(Qu,p-40),height:Xee,column:rte(Ue.x,O)}})}),E=new Map(S.map(F=>[F.id,F])),_=ote(I,E),j=x2(I,E,"source"),X=x2(I,E,"target"),ne=I.flatMap(F=>{const V=E.get(F.sourceGroup),Ie=E.get(F.targetGroup);if(!V||!Ie)return[];const Ee=E2(V,Ie);return[{...F,direction:Ee,path:gte(V,Ie,Ee,_.get(F.id)??0,{height:v},j.get(F.id)??0,X.get(F.id)??0),width:1+Math.min(4.4,Math.log10(F.relationships+1)*1.35)}]});return{width:h,height:v,nodes:S,routes:ne,lanes:O}}function ete(n,e){if(n.length===1)return[[n[0]]];if(e.length===0)return b2(n);const t=tte(n,e),i=new Map(t.map((c,h)=>[c.id,h])),o=new Map;for(const c of n)o.set(c.id,[]);for(const c of e)(i.get(c.sourceGroup)??0)<(i.get(c.targetGroup)??0)&&c.sourceGroup!==c.targetGroup&&o.get(c.targetGroup)?.push(c);const r=new Map;for(const c of t){const h=(o.get(c.id)??[]).map(p=>(r.get(p.sourceGroup)??0)+1);r.set(c.id,h.length>0?Math.max(...h):0)}const A=Math.max(0,...r.values()),I=Math.min($u,A+1);if(I===1)return b2(n);const l=Array.from({length:I},()=>[]);for(const c of t){const h=r.get(c.id)??0,p=A<$u?h:Math.ceil(h*($u-1)/A);l[p].push(c)}return l.filter(c=>c.length>0)}function tte(n,e){const t=new Map(n.map(A=>[A.id,A])),i=new Set(t.keys()),o=[],r=[];for(;i.size>0;){const A=nte(i,e),I=[...i].map(p=>({section:t.get(p),incoming:A.incoming.get(p)??0,outgoing:A.outgoing.get(p)??0})),l=I.filter(p=>p.incoming===0),c=I.filter(p=>p.outgoing===0);if(l.length>0){const p=l.sort((m,v)=>v.outgoing-m.outgoing||Qa(m.section,v.section))[0];o.push(p.section),i.delete(p.section.id);continue}if(c.length>0){const p=c.sort((m,v)=>v.incoming-m.incoming||Qa(m.section,v.section))[0];r.unshift(p.section),i.delete(p.section.id);continue}const h=I.sort((p,m)=>m.outgoing-m.incoming-(p.outgoing-p.incoming)||m.outgoing+m.incoming-(p.outgoing+p.incoming)||Qa(p.section,m.section))[0];o.push(h.section),i.delete(h.section.id)}return[...o,...r]}function nte(n,e){const t=new Map,i=new Map;for(const o of e){if(o.sourceGroup===o.targetGroup||!n.has(o.sourceGroup)||!n.has(o.targetGroup))continue;const r=1+Math.log10(o.relationships+1);i.set(o.sourceGroup,(i.get(o.sourceGroup)??0)+r),t.set(o.targetGroup,(t.get(o.targetGroup)??0)+r)}return{incoming:t,outgoing:i}}function b2(n){const e=Math.min(6,Math.max(2,Math.ceil(Math.sqrt(n.length)))),t=Array.from({length:e},()=>[]);return[...n].sort(Qa).forEach((i,o)=>{t[Math.floor(o*e/n.length)].push(i)}),t}function ite(n,e){const t=new Map;for(const i of e)y2(t,i.sourceGroup,i.targetGroup,i.relationships),y2(t,i.targetGroup,i.sourceGroup,i.relationships);for(let i=0;i<8;i+=1)for(const o of[1,-1]){const r=o===1?1:n.length-2,A=o===1?n.length:-1;for(let I=r;I!==A;I+=o){const l=new Map,c=o===1?n.slice(0,I):n.slice(I+1);for(const p of c)p.forEach((m,v)=>{l.set(m.id,p.length===1?.5:v/(p.length-1))});const h=new Map(n[I].map((p,m,v)=>[p.id,v.length===1?.5:m/(v.length-1)]));n[I].sort((p,m)=>{const v=w2(p.id,t,l),x=w2(m.id,t,l);return(v??h.get(p.id)??.5)-(x??h.get(m.id)??.5)||Qa(p,m)})}}}function y2(n,e,t,i){const o=n.get(e)??new Map;o.set(t,(o.get(t)??0)+i),n.set(e,o)}function w2(n,e,t){let i=0,o=0;for(const[r,A]of e.get(n)??[]){const I=t.get(r);I!==void 0&&(i+=I*A,o+=A)}return o>0?i/o:void 0}function gte(n,e,t,i,o,r,A){const I=n.y+r,l=e.y+A;if(t==="forward"){const x=n.x+n.width/2,O=e.x-e.width/2,y=Math.max(1,O-x),S=qu(y*.42,42,168),E=Ate(i%9,1.5);return[`M ${x} ${I}`,`C ${x+S} ${I+E}`,`${O-S} ${l+E}`,`${O} ${l}`].join(" ")}if(t==="backward"){const x=n.x-n.width/2,O=e.x+e.width/2,y=(I+l)/2{const I=e.get(r.sourceGroup),l=e.get(A.sourceGroup),c=e.get(r.targetGroup),h=e.get(A.targetGroup);return(I?.column??0)-(l?.column??0)||(c?.column??0)-(h?.column??0)||(I?.y??0)-(l?.y??0)||(c?.y??0)-(h?.y??0)||A.relationships-r.relationships||r.id.localeCompare(A.id)});for(const r of o){const A=e.get(r.sourceGroup),I=e.get(r.targetGroup);if(!A||!I)continue;const l=E2(A,I),c=`${Math.min(A.column,I.column)}:${Math.max(A.column,I.column)}:${l}`,h=i.get(c)??0;t.set(r.id,h),i.set(c,h+1)}return t}function x2(n,e,t){const i=new Map;for(const r of n){const A=t==="source"?r.sourceGroup:r.targetGroup,I=i.get(A)??[];I.push(r),i.set(A,I)}const o=new Map;for(const r of i.values()){r.sort((I,l)=>{const c=e.get(t==="source"?I.targetGroup:I.sourceGroup),h=e.get(t==="source"?l.targetGroup:l.sourceGroup);return(c?.y??0)-(h?.y??0)||(c?.x??0)-(h?.x??0)||I.id.localeCompare(l.id)});const A=Math.min(8,38/Math.max(1,r.length-1));r.forEach((I,l)=>{o.set(I.id,(l-(r.length-1)/2)*A)})}return o}function ste(n,e,t,i,o){const r=Math.sign(i-e)||1,A=Math.sign(o-t)||1,I=Math.min(12,Math.abs(i-e)/2,Math.abs(t-n)/2);return[`M ${n} ${e}`,`H ${t-Math.sign(t-n)*I}`,`Q ${t} ${e} ${t} ${e+r*I}`,`V ${i-r*I}`,`Q ${t} ${i} ${t+A*I} ${i}`,`H ${o}`].join(" ")}function E2(n,e){return e.column>n.column?"forward":e.columnT2(o)),I=P.useRef(r),[l,c]=P.useState(1),[h,p]=P.useState("none"),m=P.useRef("none"),v=P.useRef(0),[x,O]=P.useState(Ite),[y,S]=P.useState("key"),[E,_]=P.useState(),j=P.useRef(null),X=P.useRef(void 0),ne=P.useRef(void 0);P.useEffect(()=>{const R=T2(o);I.current=R,A(R),c(1),m.current="start",v.current=0,p("start"),j.current?.scrollTo?.({left:0,top:0}),S("key")},[o]);const F=P.useMemo(()=>dte(n.routes,e),[n.routes,e]),V=P.useMemo(()=>y==="complete"?{routes:n.routes,reciprocals:new Map}:ute(n.routes.filter(R=>F.has(R.id)),e?.kind==="route"?e.id:void 0),[F,n.routes,y,e]),Ie=V.routes,Ee=P.useMemo(()=>{if(y==="complete"||e===void 0)return n.groups;const R=new Set;e.kind==="group"&&R.add(e.id);for(const de of Ie)R.add(de.sourceGroup),R.add(de.targetGroup);return n.groups.filter(de=>R.has(de.id))},[n.groups,y,Ie,e]),Be=P.useMemo(()=>Jee(Ee,Ie,x,r,y==="key"&&e?.kind==="group"?e.id:void 0),[Ee,r,y,Ie,e,x]),xe=Be.routes,Ue=P.useMemo(()=>e?.kind!=="group"?new Set:new Set(xe.filter(R=>R.sourceGroup===e.id||R.targetGroup===e.id).flatMap(R=>[R.id,R.sourceGroup,R.targetGroup])),[xe,e]),Le=Math.max(1,...xe.map(R=>R.relationships)),le=n.routes.length-xe.length,M={width:Math.round(Be.width*l),height:Math.round(Be.height*l)},Q=R=>{t(R)},se=(R,de)=>{(R.key==="Enter"||R.key===" ")&&(R.preventDefault(),Q(de))},K=(R,de)=>{const Oe={...I.current,[R]:de};I.current=Oe,A(Oe)},q=()=>{try{window.localStorage.setItem(o,JSON.stringify(I.current))}catch{}},T=()=>{I.current={},A({});try{window.localStorage.removeItem(o)}catch{}},U=()=>{c(1),m.current="start",v.current=0,p("start");const R=window.matchMedia?.("(prefers-reduced-motion: reduce)").matches;j.current?.scrollTo?.({left:0,top:0,behavior:R?"auto":"smooth"})},ie=R=>{const de=Math.max(0,R.scrollWidth-R.clientWidth),Oe=de<=1?"none":R.scrollLeft<=1?"start":R.scrollLeft>=de-1?"end":"middle";v.current=de,m.current=Oe,p(et=>et===Oe?et:Oe)},ae=R=>{ie(R.currentTarget)},ue=R=>{R.target!==R.currentTarget||!j.current||(X.current={x:R.clientX,y:R.clientY,scrollLeft:j.current.scrollLeft,scrollTop:j.current.scrollTop,pointerId:R.pointerId},R.currentTarget.setPointerCapture(R.pointerId))},me=R=>{const de=X.current,Oe=j.current;!de||!Oe||de.pointerId!==R.pointerId||(Oe.scrollLeft=de.scrollLeft-(R.clientX-de.x),Oe.scrollTop=de.scrollTop-(R.clientY-de.y))},Ge=R=>{X.current?.pointerId===R.pointerId&&(X.current=void 0,R.currentTarget.hasPointerCapture(R.pointerId)&&R.currentTarget.releasePointerCapture(R.pointerId))},ut=(R,de)=>{R.stopPropagation();const Oe=S2(R.currentTarget.ownerSVGElement,R);Oe&&(ne.current={id:de.id,pointerId:R.pointerId,offsetX:Oe.x-de.x,offsetY:Oe.y-de.y,startClientX:R.clientX,startClientY:R.clientY,moved:!1},_(de.id),R.currentTarget.setPointerCapture(R.pointerId))},Pe=(R,de)=>{const Oe=ne.current;!Oe||Oe.id!==de.id||Oe.pointerId!==R.pointerId||(R.currentTarget.hasPointerCapture(R.pointerId)&&R.currentTarget.releasePointerCapture(R.pointerId),ne.current=void 0,_(void 0),Oe.moved?q():Q({kind:"group",id:de.id}))},en=R=>{ne.current?.pointerId===R.pointerId&&(ne.current=void 0,_(void 0))},pn=(R,de)=>{if(R.key==="Enter"||R.key===" "){R.preventDefault(),Q({kind:"group",id:de.id});return}if(!R.altKey||!R.key.startsWith("Arrow"))return;R.preventDefault();const Oe=R.shiftKey?24:8;K(de.id,{x:de.x+(R.key==="ArrowRight"?Oe:R.key==="ArrowLeft"?-Oe:0),y:de.y+(R.key==="ArrowDown"?Oe:R.key==="ArrowUp"?-Oe:0)}),q()};return P.useEffect(()=>{const R=j.current;if(!R)return;const de=()=>{const et=v.current,Dt=Math.max(0,R.scrollWidth-R.clientWidth),Zt=et>1&&R.scrollLeft>=et-1;if(Dt>et&&(m.current==="end"||Zt)&&(R.scrollLeft=Dt),ie(R),R.clientWidth<=0||R.clientHeight<=0)return;const re={width:Math.round(R.clientWidth),height:Math.round(R.clientHeight)};O(Me=>Me.width===re.width&&Me.height===re.height?Me:re)};if(de(),typeof ResizeObserver>"u")return;const Oe=new ResizeObserver(de);return Oe.observe(R),()=>Oe.disconnect()},[M.height,M.width]),f.jsxs("section",{className:"architecture-map-panel","aria-labelledby":"architecture-map-title","data-route-mode":y,children:[f.jsxs("header",{className:"architecture-map-header",children:[f.jsxs("div",{className:"architecture-map-intro",children:[f.jsx("span",{children:"Flow canvas"}),f.jsx("strong",{id:"architecture-map-title",children:"Subsystem relationship direction"}),f.jsx("small",{id:"architecture-map-help",children:"Scroll sideways or drag open canvas space to follow the complete architecture."})]}),f.jsxs("div",{className:"architecture-map-actions",children:[f.jsxs("div",{className:"architecture-route-mode",role:"group","aria-label":"Route visibility",children:[f.jsx("button",{type:"button","aria-pressed":y==="key",onClick:()=>S("key"),children:e?.kind==="group"?"Neighbors":"Key routes"}),f.jsxs("button",{type:"button","aria-pressed":y==="complete",onClick:()=>S("complete"),children:["All routes · ",n.routes.length]})]}),f.jsxs("div",{className:"architecture-map-toolbar","aria-label":"Map controls",children:[f.jsx("button",{type:"button","aria-label":"Zoom out",onClick:()=>c(R=>Math.max(.75,R-.25)),children:f.jsx(A_,{"aria-hidden":"true"})}),f.jsxs("span",{"aria-live":"polite",children:[Math.round(l*100),"%"]}),f.jsx("button",{type:"button","aria-label":"Zoom in",onClick:()=>c(R=>Math.min(2,R+.25)),children:f.jsx(Iv,{"aria-hidden":"true"})}),f.jsx("button",{type:"button","aria-label":"Reset zoom and scroll position",title:"Reset zoom and scroll position",onClick:U,children:f.jsx(av,{"aria-hidden":"true"})}),f.jsx("button",{type:"button","aria-label":"Reset subsystem positions",title:"Reset subsystem positions",disabled:Object.keys(r).length===0,onClick:T,children:f.jsx(lv,{"aria-hidden":"true"})})]})]})]}),f.jsx("div",{ref:j,className:"architecture-map-viewport",role:"region","aria-label":"Scrollable architecture flow diagram","aria-describedby":"architecture-map-help",tabIndex:0,"data-scroll-position":h,onScroll:ae,children:Be.nodes.length>0?f.jsx("div",{className:"architecture-map-canvas",style:{width:M.width,height:M.height},children:f.jsxs("svg",{className:"architecture-map",viewBox:`0 0 ${Be.width} ${Be.height}`,role:"group","aria-label":fte(Be.nodes.length,xe.length,n.routes.length),onPointerDown:ue,onPointerMove:me,onPointerUp:Ge,onPointerCancel:()=>{X.current=void 0},children:[f.jsxs("defs",{children:[f.jsx("marker",{id:"architecture-arrow",className:"architecture-arrow architecture-arrow-default",markerWidth:"8",markerHeight:"8",refX:"7",refY:"4",orient:"auto-start-reverse",markerUnits:"userSpaceOnUse",children:f.jsx("path",{d:"M 0 0 L 8 4 L 0 8 z"})}),f.jsx("marker",{id:"architecture-arrow-incoming",className:"architecture-arrow architecture-arrow-incoming",markerWidth:"8",markerHeight:"8",refX:"7",refY:"4",orient:"auto-start-reverse",markerUnits:"userSpaceOnUse",children:f.jsx("path",{d:"M 0 0 L 8 4 L 0 8 z"})}),f.jsx("marker",{id:"architecture-arrow-outgoing",className:"architecture-arrow architecture-arrow-outgoing",markerWidth:"8",markerHeight:"8",refX:"7",refY:"4",orient:"auto-start-reverse",markerUnits:"userSpaceOnUse",children:f.jsx("path",{d:"M 0 0 L 8 4 L 0 8 z"})})]}),f.jsxs("g",{className:"architecture-map-lanes","aria-hidden":"true",children:[Be.lanes.map(R=>f.jsxs("g",{children:[f.jsx("rect",{x:R.x+8,y:34,width:R.width-16,height:Be.height-76,rx:"12"}),f.jsx("text",{x:R.x+R.width/2,y:61,children:R.label})]},R.index)),f.jsx("text",{className:"architecture-map-direction",x:96,y:24,children:"PRIMARY CALL DIRECTION →"})]}),f.jsx("g",{className:"architecture-routes",children:xe.map(R=>{const de=V.reciprocals.get(R.id),Oe=e?.kind==="route"&&e.id===R.id,et=Oe||e===void 0||e.kind==="group"&&Ue.has(R.id),Dt=R.inferred>R.extracted?"inferred":"extracted",Zt=e?.kind==="group"?R.targetGroup===e.id?"incoming":R.sourceGroup===e.id?"outgoing":void 0:void 0,re=y==="key"?.3+Math.sqrt(R.relationships/Le)*.28:.1+Math.sqrt(R.relationships/Le)*.2;return f.jsxs("g",{role:"button",tabIndex:0,"aria-label":`${R.sourceGroup} to ${R.targetGroup}, ${R.relationships} ${i}${de?`; bidirectional, ${de.relationships} reverse ${i}`:""}${R.direction==="backward"?", feedback route":""}`,"data-direction":R.direction,"data-evidence":Dt,"data-reciprocal":de?"true":void 0,"data-focus-direction":Zt,"data-selected":Oe||void 0,"data-dimmed":!et||void 0,onClick:()=>Q({kind:"route",id:R.id}),onKeyDown:Me=>se(Me,{kind:"route",id:R.id}),children:[f.jsx("path",{className:"architecture-route-hit",d:R.path}),f.jsx("path",{className:"architecture-route-line",d:R.path,style:{strokeWidth:R.width,"--architecture-route-opacity":re},markerStart:de?hte(Zt):void 0,markerEnd:Zt==="incoming"?"url(#architecture-arrow-incoming)":Zt==="outgoing"?"url(#architecture-arrow-outgoing)":"url(#architecture-arrow)"}),f.jsxs("title",{children:[R.sourceGroup," → ",R.targetGroup,": ",R.relationships," ",i,de&&` · ${de.sourceGroup} → ${de.targetGroup}: ${de.relationships} ${i}`]})]},R.id)})}),f.jsx("g",{className:"architecture-map-nodes",children:Be.nodes.map(R=>{const de=e?.kind==="group"&&e.id===R.id,Oe=de||e===void 0||e.kind==="group"&&Ue.has(R.id)||e.kind==="route"&&n.routes.some(et=>et.id===e.id&&(et.sourceGroup===R.id||et.targetGroup===R.id));return f.jsxs("g",{role:"button",tabIndex:0,"aria-label":`${R.name}, ${R.nodeCount} visible symbols, ${R.incomingRelationships} incoming and ${R.outgoingRelationships} outgoing ${i}; drag to reposition`,transform:`translate(${R.x-R.width/2} ${R.y-R.height/2})`,"data-selected":de||void 0,"data-dimmed":!Oe||void 0,"data-dragging":E===R.id||void 0,onPointerDown:et=>ut(et,R),onPointerMove:et=>{const Dt=ne.current;if(!Dt||Dt.id!==R.id||Dt.pointerId!==et.pointerId)return;const Zt=S2(et.currentTarget.ownerSVGElement,et);Zt&&((Math.abs(et.clientX-Dt.startClientX)>3||Math.abs(et.clientY-Dt.startClientY)>3)&&(Dt.moved=!0),K(R.id,{x:Zt.x-Dt.offsetX,y:Zt.y-Dt.offsetY}))},onPointerUp:et=>Pe(et,R),onPointerCancel:et=>en(et),onKeyDown:et=>pn(et,R),children:[f.jsx("rect",{className:"architecture-map-node-shadow",width:R.width,height:R.height,rx:"9"}),f.jsx("rect",{className:"architecture-map-node-card",width:R.width,height:R.height,rx:"9"}),f.jsx("rect",{className:"architecture-map-node-accent",width:"4",height:R.height-16,x:"8",y:"8",rx:"2"}),f.jsx("text",{x:"20",y:"27",className:"architecture-map-node-name",children:cte(R.name,24)}),f.jsxs("text",{x:"20",y:"48",className:"architecture-map-node-meta",children:[R.nodeCount.toLocaleString()," symbols"," · ","↓",R.incomingRelationships.toLocaleString()," ↑",R.outgoingRelationships.toLocaleString()]}),f.jsxs("g",{className:"architecture-map-node-grip","aria-hidden":"true",children:[f.jsx("circle",{cx:R.width-18,cy:"26",r:"1.2"}),f.jsx("circle",{cx:R.width-13,cy:"26",r:"1.2"}),f.jsx("circle",{cx:R.width-18,cy:"31",r:"1.2"}),f.jsx("circle",{cx:R.width-13,cy:"31",r:"1.2"}),f.jsx("circle",{cx:R.width-18,cy:"36",r:"1.2"}),f.jsx("circle",{cx:R.width-13,cy:"36",r:"1.2"})]}),f.jsxs("title",{children:[R.name," — drag to reposition"]})]},R.id)})})]})}):f.jsxs("div",{className:"architecture-map-empty",children:[f.jsx("strong",{children:"No architecture to draw"}),f.jsx("span",{children:"No subsystems match the current scope and evidence filters."})]})}),f.jsxs("footer",{className:"architecture-map-footer",children:[f.jsxs("div",{className:"architecture-map-legend","aria-label":"Map legend",children:[f.jsxs("span",{children:[f.jsx("i",{"data-evidence":"extracted"})," Extracted"]}),f.jsxs("span",{children:[f.jsx("i",{"data-evidence":"inferred"})," Inferred"]}),f.jsxs("span",{children:[f.jsx("i",{"data-direction":"incoming"})," Incoming"]}),f.jsxs("span",{children:[f.jsx("i",{"data-direction":"outgoing"})," Outgoing"]}),f.jsxs("span",{children:[f.jsx("i",{"data-direction":"bidirectional","aria-hidden":"true",children:"↔"})," Bidirectional"]}),f.jsxs("span",{children:[f.jsx("i",{"data-direction":"feedback"})," Feedback"]}),f.jsxs("span",{children:[f.jsx(C_,{"aria-hidden":"true"})," Drag cards to arrange"]}),le>0&&f.jsxs("button",{type:"button",onClick:()=>S("complete"),children:[xe.length," of ",n.routes.length," routes · Show all"]})]}),f.jsxs("details",{className:"architecture-map-table",children:[f.jsx("summary",{children:"View routes as a table"}),f.jsx("div",{children:f.jsxs("table",{children:[f.jsx("thead",{children:f.jsxs("tr",{children:[f.jsx("th",{children:"From"}),f.jsx("th",{children:"To"}),f.jsx("th",{children:"Relationships"}),f.jsx("th",{children:"Evidence"})]})}),f.jsx("tbody",{children:n.routes.map(R=>f.jsxs("tr",{children:[f.jsx("td",{children:O2(n,R.sourceGroup)}),f.jsx("td",{children:O2(n,R.targetGroup)}),f.jsx("td",{children:R.relationships.toLocaleString()}),f.jsxs("td",{children:[R.extracted," extracted · ",R.inferred," inferred"]})]},R.id))})]})})]})]})]})}function S2(n,e){if(!n)return;const t=n.getScreenCTM();if(!t)return;const i=n.createSVGPoint();i.x=e.clientX,i.y=e.clientY;const o=i.matrixTransform(t.inverse());return{x:o.x,y:o.y}}function T2(n){try{const e=JSON.parse(window.localStorage.getItem(n)??"{}");return!e||typeof e!="object"||Array.isArray(e)?{}:Object.fromEntries(Object.entries(e).flatMap(([t,i])=>i&&typeof i=="object"&&"x"in i&&"y"in i&&typeof i.x=="number"&&typeof i.y=="number"&&Number.isFinite(i.x)&&Number.isFinite(i.y)?[[t,{x:i.x,y:i.y}]]:[]))}catch{return{}}}function O2(n,e){return n.groups.find(t=>t.id===e)?.name??e}function cte(n,e){return n.length<=e?n:`${n.slice(0,e-1)}…`}function dte(n,e){const t=o=>[...o].sort((r,A)=>A.relationships-r.relationships||r.id.localeCompare(A.id)),i=new Set;if(e?.kind==="route"){const o=n.find(r=>r.id===e.id);if(o){i.add(o.id);const r=n.find(A=>A.sourceGroup===o.targetGroup&&A.targetGroup===o.sourceGroup);r&&i.add(r.id)}return i}else if(e?.kind==="group"){const o=t(n.filter(A=>A.targetGroup===e.id)).slice(0,6),r=t(n.filter(A=>A.sourceGroup===e.id)).slice(0,6);for(const A of t([...o,...r]))i.add(A.id);return i}for(const o of t(n)){if(i.size>=Cte)break;i.add(o.id)}return i}function ute(n,e){const t=new Map(n.map(A=>[N2(A.sourceGroup,A.targetGroup),A])),i=new Set,o=[],r=new Map;for(const A of n){if(i.has(A.id))continue;const I=t.get(N2(A.targetGroup,A.sourceGroup));if(!I||I.id===A.id||i.has(I.id)){o.push(A),i.add(A.id);continue}const l=A.id===e?A:I.id===e?I:A.relationships>I.relationships||A.relationships===I.relationships&&A.id.localeCompare(I.id)<=0?A:I,c=l.id===A.id?I:A;o.push(l),r.set(l.id,c),i.add(A.id),i.add(I.id)}return o.sort((A,I)=>I.relationships-A.relationships||A.id.localeCompare(I.id)),{routes:o,reciprocals:r}}function N2(n,e){return`${n}\0${e}`}function hte(n){return n==="incoming"?"url(#architecture-arrow-outgoing)":n==="outgoing"?"url(#architecture-arrow-incoming)":"url(#architecture-arrow)"}function fte(n,e,t){return e===t?`${n} subsystems and ${t} directed routes`:`${n} subsystems and ${e} of ${t} directed routes visible`}function pte(n,e){const t=n.projections.find(y=>y.scope===(e.scope==="all"?"all_code":"production"));if(!t)throw new Error(`Architecture projection is missing scope '${e.scope}'`);const i=new Map(t.groups.map(y=>[y.id,y])),o=new Set(t.overviewGroupIds),r=new Map(t.memberships.map(y=>[n.nodes[y.nodeIndex].id,t.groups[y.groupIndex].id])),A=y=>{const S=r.get(y);return S?i.get(S)?.parentId??S:void 0},I=n.relationships.filter(y=>mte(e.evidence,y.confidence)&&vte(e.lens,y.relationClass)&&A(y.source)&&A(y.target)),l=new Map,c=new Map;for(const y of I){const S=A(y.source),E=A(y.target);if(S===E){l.set(S,(l.get(S)??0)+1);continue}if(!o.has(S)||!o.has(E))continue;const _=`${S}->${E}`,j=c.get(_)??[];j.push(y),c.set(_,j)}const h=[...c.entries()].map(([y,S])=>({id:y,sourceGroup:A(S[0].source),targetGroup:A(S[0].target),relationships:S.length,extracted:S.filter(E=>E.confidence==="extracted").length,inferred:S.filter(E=>E.confidence==="inferred").length,ambiguous:S.filter(E=>E.confidence==="ambiguous").length})).sort((y,S)=>S.relationships-y.relationships||y.id.localeCompare(S.id)),p=new Map,m=new Map;for(const y of h)m.set(y.sourceGroup,(m.get(y.sourceGroup)??0)+y.relationships),p.set(y.targetGroup,(p.get(y.targetGroup)??0)+y.relationships);const v=t.overviewGroupIds.flatMap(y=>{const S=i.get(y);return S?[{id:S.id,name:S.name.value,nodeCount:S.nodeCount,totalNodeCount:S.nodeCount,internalRelationshipCount:l.get(S.id)??0,incomingRelationships:p.get(S.id)??0,outgoingRelationships:m.get(S.id)??0,scopes:S.sourceScopes}]:[]}),x=v.reduce((y,S)=>y+S.nodeCount,0),O=v.reduce((y,S)=>y+S.internalRelationshipCount,0)+h.reduce((y,S)=>y+S.relationships,0);return{title:n.title,scope:e.scope,evidence:e.evidence,lens:e.lens,groups:v,routes:h,statistics:{visibleNodes:x,totalNodes:t.quality.metrics.sourceScopes.production+t.quality.metrics.sourceScopes.test+t.quality.metrics.sourceScopes.generated+t.quality.metrics.sourceScopes.vendor+t.quality.metrics.sourceScopes.unknown,visibleRelationships:O,totalRelationships:I.length,communities:n.statistics.communities,extracted:n.statistics.extracted,inferred:n.statistics.inferred,ambiguous:n.statistics.ambiguous},coverage:{internal:t.coverage.internal,crossGroup:t.coverage.crossGroup,unassigned:t.coverage.unassigned},omissions:t.omissions,quality:t.quality,provenance:n.provenance}}function mte(n,e){return n==="all"||n===e}function vte(n,e){return n==="all"?e!=="unknown":n==="architecture"?e==="execution"||e==="dependency":n===e}function D2(n){var e,t,i="";if(typeof n=="string"||typeof n=="number")i+=n;else if(typeof n=="object")if(Array.isArray(n)){var o=n.length;for(e=0;etypeof n=="boolean"?`${n}`:n===0?"0":n,R2=k2,Ju=(n,e)=>t=>{var i;if(e?.variants==null)return R2(n,t?.class,t?.className);const{variants:o,defaultVariants:r}=e,A=Object.keys(o).map(c=>{const h=t?.[c],p=r?.[c];if(h===null)return null;const m=M2(h)||M2(p);return o[c][m]}),I=t&&Object.entries(t).reduce((c,h)=>{let[p,m]=h;return m===void 0||(c[p]=m),c},{}),l=e==null||(i=e.compoundVariants)===null||i===void 0?void 0:i.reduce((c,h)=>{let{class:p,className:m,...v}=h;return Object.entries(v).every(x=>{let[O,y]=x;return Array.isArray(y)?y.includes({...r,...I}[O]):{...r,...I}[O]===y})?[...c,p,m]:c},[]);return R2(n,A,l,t?.class,t?.className)},bte=(n,e)=>{const t=new Array(n.length+e.length);for(let i=0;i({classGroupId:n,validator:e}),z2=(n=new Map,e=null,t)=>({nextPart:n,validators:e,classGroupId:t}),xI="-",_2=[],wte="arbitrary..",xte=n=>{const e=Ste(n),{conflictingClassGroups:t,conflictingClassGroupModifiers:i}=n;return{getClassGroupId:A=>{if(A.startsWith("[")&&A.endsWith("]"))return Ete(A);const I=A.split(xI),l=I[0]===""&&I.length>1?1:0;return j2(I,l,e)},getConflictingClassGroupIds:(A,I)=>{if(I){const l=i[A],c=t[A];return l?c?bte(c,l):l:c||_2}return t[A]||_2}}},j2=(n,e,t)=>{if(n.length-e===0)return t.classGroupId;const o=n[e],r=t.nextPart.get(o);if(r){const c=j2(n,e+1,r);if(c)return c}const A=t.validators;if(A===null)return;const I=e===0?n.join(xI):n.slice(e).join(xI),l=A.length;for(let c=0;cn.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const e=n.slice(1,-1),t=e.indexOf(":"),i=e.slice(0,t);return i?wte+i:void 0})(),Ste=n=>{const{theme:e,classGroups:t}=n;return Tte(t,e)},Tte=(n,e)=>{const t=z2();for(const i in n){const o=n[i];eh(o,t,i,e)}return t},eh=(n,e,t,i)=>{const o=n.length;for(let r=0;r{if(typeof n=="string"){Nte(n,e,t);return}if(typeof n=="function"){Dte(n,e,t,i);return}kte(n,e,t,i)},Nte=(n,e,t)=>{const i=n===""?e:P2(e,n);i.classGroupId=t},Dte=(n,e,t,i)=>{if(Mte(n)){eh(n(i),e,t,i);return}e.validators===null&&(e.validators=[]),e.validators.push(yte(t,n))},kte=(n,e,t,i)=>{const o=Object.entries(n),r=o.length;for(let A=0;A{let t=n;const i=e.split(xI),o=i.length;for(let r=0;r"isThemeGetter"in n&&n.isThemeGetter===!0,Rte=n=>{if(n<1)return{get:()=>{},set:()=>{}};let e=0,t=Object.create(null),i=Object.create(null);const o=(r,A)=>{t[r]=A,e++,e>n&&(e=0,i=t,t=Object.create(null))};return{get(r){let A=t[r];if(A!==void 0)return A;if((A=i[r])!==void 0)return o(r,A),A},set(r,A){r in t?t[r]=A:o(r,A)}}},th="!",B2=":",zte=[],Z2=(n,e,t,i,o)=>({modifiers:n,hasImportantModifier:e,baseClassName:t,maybePostfixModifierPosition:i,isExternal:o}),_te=n=>{const{prefix:e,experimentalParseClassName:t}=n;let i=o=>{const r=[];let A=0,I=0,l=0,c;const h=o.length;for(let O=0;Ol?c-l:void 0;return Z2(r,v,m,x)};if(e){const o=e+B2,r=i;i=A=>A.startsWith(o)?r(A.slice(o.length)):Z2(zte,!1,A,void 0,!0)}if(t){const o=i;i=r=>t({className:r,parseClassName:o})}return i},jte=n=>{const e=new Map;return n.orderSensitiveModifiers.forEach((t,i)=>{e.set(t,1e6+i)}),t=>{const i=[];let o=[];for(let r=0;r0&&(o.sort(),i.push(...o),o=[]),i.push(A)):o.push(A)}return o.length>0&&(o.sort(),i.push(...o)),i}},Pte=n=>({cache:Rte(n.cacheSize),parseClassName:_te(n),sortModifiers:jte(n),postfixLookupClassGroupIds:Bte(n),...xte(n)}),Bte=n=>{const e=Object.create(null),t=n.postfixLookupClassGroups;if(t)for(let i=0;i{const{parseClassName:t,getClassGroupId:i,getConflictingClassGroupIds:o,sortModifiers:r,postfixLookupClassGroupIds:A}=e,I=[],l=n.trim().split(Zte);let c="";for(let h=l.length-1;h>=0;h-=1){const p=l[h],{isExternal:m,modifiers:v,hasImportantModifier:x,baseClassName:O,maybePostfixModifierPosition:y}=t(p);if(m){c=p+(c.length>0?" "+c:c);continue}let S=!!y,E;if(S){const F=O.substring(0,y);E=i(F);const V=E&&A[E]?i(O):void 0;V&&V!==E&&(E=V,S=!1)}else E=i(O);if(!E){if(!S){c=p+(c.length>0?" "+c:c);continue}if(E=i(O),!E){c=p+(c.length>0?" "+c:c);continue}S=!1}const _=v.length===0?"":v.length===1?v[0]:r(v).join(":"),j=x?_+th:_,X=j+E;if(I.indexOf(X)>-1)continue;I.push(X);const ne=o(E,S);for(let F=0;F0?" "+c:c)}return c},Gte=(...n)=>{let e=0,t,i,o="";for(;e{if(typeof n=="string")return n;let e,t="";for(let i=0;i{let t,i,o,r;const A=l=>{const c=e.reduce((h,p)=>p(h),n());return t=Pte(c),i=t.cache.get,o=t.cache.set,r=I,I(l)},I=l=>{const c=i(l);if(c)return c;const h=Lte(l,t);return o(l,h),h};return r=A,(...l)=>r(Gte(...l))},Vte=[],an=n=>{const e=t=>t[n]||Vte;return e.isThemeGetter=!0,e},G2=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,F2=/^\((?:(\w[\w-]*):)?(.+)\)$/i,Ute=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,Yte=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,Hte=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,Kte=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,Wte=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,Qte=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,Hg=n=>Ute.test(n),He=n=>!!n&&!Number.isNaN(Number(n)),Vi=n=>!!n&&Number.isInteger(Number(n)),nh=n=>n.endsWith("%")&&He(n.slice(0,-1)),ag=n=>Yte.test(n),V2=()=>!0,Xte=n=>Hte.test(n)&&!Kte.test(n),ih=()=>!1,$te=n=>Wte.test(n),qte=n=>Qte.test(n),Jte=n=>!he(n)&&!fe(n),ene=n=>n.startsWith("@container")&&(n[10]==="/"&&n[11]!==void 0||n[11]==="s"&&n[16]!==void 0&&n.startsWith("-size/",10)||n[11]==="n"&&n[18]!==void 0&&n.startsWith("-normal/",10)),tne=n=>Kg(n,Q2,ih),he=n=>G2.test(n),Fo=n=>Kg(n,X2,Xte),U2=n=>Kg(n,Ane,He),nne=n=>Kg(n,q2,V2),ine=n=>Kg(n,$2,ih),Y2=n=>Kg(n,K2,ih),gne=n=>Kg(n,W2,qte),EI=n=>Kg(n,J2,$te),fe=n=>F2.test(n),Xa=n=>Vo(n,X2),one=n=>Vo(n,$2),H2=n=>Vo(n,K2),sne=n=>Vo(n,Q2),rne=n=>Vo(n,W2),SI=n=>Vo(n,J2,!0),ane=n=>Vo(n,q2,!0),Kg=(n,e,t)=>{const i=G2.exec(n);return i?i[1]?e(i[1]):t(i[2]):!1},Vo=(n,e,t=!1)=>{const i=F2.exec(n);return i?i[1]?e(i[1]):t:!1},K2=n=>n==="position"||n==="percentage",W2=n=>n==="image"||n==="url",Q2=n=>n==="length"||n==="size"||n==="bg-size",X2=n=>n==="length",Ane=n=>n==="number",$2=n=>n==="family-name",q2=n=>n==="number"||n==="weight",J2=n=>n==="shadow",Cne=Fte(()=>{const n=an("color"),e=an("font"),t=an("text"),i=an("font-weight"),o=an("tracking"),r=an("leading"),A=an("breakpoint"),I=an("container"),l=an("spacing"),c=an("radius"),h=an("shadow"),p=an("inset-shadow"),m=an("text-shadow"),v=an("drop-shadow"),x=an("blur"),O=an("perspective"),y=an("aspect"),S=an("ease"),E=an("animate"),_=()=>["auto","avoid","all","avoid-page","page","left","right","column"],j=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],X=()=>[...j(),fe,he],ne=()=>["auto","hidden","clip","visible","scroll"],F=()=>["auto","contain","none"],V=()=>[fe,he,l],Ie=()=>[Hg,"full","auto",...V()],Ee=()=>[Vi,"none","subgrid",fe,he],Be=()=>["auto",{span:["full",Vi,fe,he]},Vi,fe,he],xe=()=>[Vi,"auto",fe,he],Ue=()=>["auto","min","max","fr",fe,he],Le=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],le=()=>["start","end","center","stretch","center-safe","end-safe"],M=()=>["auto",...V()],Q=()=>[Hg,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...V()],se=()=>[Hg,"screen","full","dvw","lvw","svw","min","max","fit",...V()],K=()=>[Hg,"screen","full","lh","dvh","lvh","svh","min","max","fit",...V()],q=()=>[n,fe,he],T=()=>[...j(),H2,Y2,{position:[fe,he]}],U=()=>["no-repeat",{repeat:["","x","y","space","round"]}],ie=()=>["auto","cover","contain",sne,tne,{size:[fe,he]}],ae=()=>[nh,Xa,Fo],ue=()=>["","none","full",c,fe,he],me=()=>["",He,Xa,Fo],Ge=()=>["solid","dashed","dotted","double"],ut=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],Pe=()=>[He,nh,H2,Y2],en=()=>["","none",x,fe,he],pn=()=>["none",He,fe,he],R=()=>["none",He,fe,he],de=()=>[He,fe,he],Oe=()=>[Hg,"full",...V()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[ag],breakpoint:[ag],color:[V2],container:[ag],"drop-shadow":[ag],ease:["in","out","in-out"],font:[Jte],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[ag],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[ag],shadow:[ag],spacing:["px",He],text:[ag],"text-shadow":[ag],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",Hg,he,fe,y]}],container:["container"],"container-type":[{"@container":["","normal","size",fe,he]}],"container-named":[ene],columns:[{columns:[He,he,fe,I]}],"break-after":[{"break-after":_()}],"break-before":[{"break-before":_()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:X()}],overflow:[{overflow:ne()}],"overflow-x":[{"overflow-x":ne()}],"overflow-y":[{"overflow-y":ne()}],overscroll:[{overscroll:F()}],"overscroll-x":[{"overscroll-x":F()}],"overscroll-y":[{"overscroll-y":F()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:Ie()}],"inset-x":[{"inset-x":Ie()}],"inset-y":[{"inset-y":Ie()}],start:[{"inset-s":Ie(),start:Ie()}],end:[{"inset-e":Ie(),end:Ie()}],"inset-bs":[{"inset-bs":Ie()}],"inset-be":[{"inset-be":Ie()}],top:[{top:Ie()}],right:[{right:Ie()}],bottom:[{bottom:Ie()}],left:[{left:Ie()}],visibility:["visible","invisible","collapse"],z:[{z:[Vi,"auto",fe,he]}],basis:[{basis:[Hg,"full","auto",I,...V()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[He,Hg,"auto","initial","none",he]}],grow:[{grow:["",He,fe,he]}],shrink:[{shrink:["",He,fe,he]}],order:[{order:[Vi,"first","last","none",fe,he]}],"grid-cols":[{"grid-cols":Ee()}],"col-start-end":[{col:Be()}],"col-start":[{"col-start":xe()}],"col-end":[{"col-end":xe()}],"grid-rows":[{"grid-rows":Ee()}],"row-start-end":[{row:Be()}],"row-start":[{"row-start":xe()}],"row-end":[{"row-end":xe()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":Ue()}],"auto-rows":[{"auto-rows":Ue()}],gap:[{gap:V()}],"gap-x":[{"gap-x":V()}],"gap-y":[{"gap-y":V()}],"justify-content":[{justify:[...Le(),"normal"]}],"justify-items":[{"justify-items":[...le(),"normal"]}],"justify-self":[{"justify-self":["auto",...le()]}],"align-content":[{content:["normal",...Le()]}],"align-items":[{items:[...le(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...le(),{baseline:["","last"]}]}],"place-content":[{"place-content":Le()}],"place-items":[{"place-items":[...le(),"baseline"]}],"place-self":[{"place-self":["auto",...le()]}],p:[{p:V()}],px:[{px:V()}],py:[{py:V()}],ps:[{ps:V()}],pe:[{pe:V()}],pbs:[{pbs:V()}],pbe:[{pbe:V()}],pt:[{pt:V()}],pr:[{pr:V()}],pb:[{pb:V()}],pl:[{pl:V()}],m:[{m:M()}],mx:[{mx:M()}],my:[{my:M()}],ms:[{ms:M()}],me:[{me:M()}],mbs:[{mbs:M()}],mbe:[{mbe:M()}],mt:[{mt:M()}],mr:[{mr:M()}],mb:[{mb:M()}],ml:[{ml:M()}],"space-x":[{"space-x":V()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":V()}],"space-y-reverse":["space-y-reverse"],size:[{size:Q()}],"inline-size":[{inline:["auto",...se()]}],"min-inline-size":[{"min-inline":["auto",...se()]}],"max-inline-size":[{"max-inline":["none",...se()]}],"block-size":[{block:["auto",...K()]}],"min-block-size":[{"min-block":["auto",...K()]}],"max-block-size":[{"max-block":["none",...K()]}],w:[{w:[I,"screen",...Q()]}],"min-w":[{"min-w":[I,"screen","none",...Q()]}],"max-w":[{"max-w":[I,"screen","none","prose",{screen:[A]},...Q()]}],h:[{h:["screen","lh",...Q()]}],"min-h":[{"min-h":["screen","lh","none",...Q()]}],"max-h":[{"max-h":["screen","lh",...Q()]}],"font-size":[{text:["base",t,Xa,Fo]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[i,ane,nne]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",nh,he]}],"font-family":[{font:[one,ine,e]}],"font-features":[{"font-features":[he]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[o,fe,he]}],"line-clamp":[{"line-clamp":[He,"none",fe,U2]}],leading:[{leading:[r,...V()]}],"list-image":[{"list-image":["none",fe,he]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",fe,he]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:q()}],"text-color":[{text:q()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...Ge(),"wavy"]}],"text-decoration-thickness":[{decoration:[He,"from-font","auto",fe,Fo]}],"text-decoration-color":[{decoration:q()}],"underline-offset":[{"underline-offset":[He,"auto",fe,he]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:V()}],"tab-size":[{tab:[Vi,fe,he]}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",fe,he]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",fe,he]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:T()}],"bg-repeat":[{bg:U()}],"bg-size":[{bg:ie()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},Vi,fe,he],radial:["",fe,he],conic:[Vi,fe,he]},rne,gne]}],"bg-color":[{bg:q()}],"gradient-from-pos":[{from:ae()}],"gradient-via-pos":[{via:ae()}],"gradient-to-pos":[{to:ae()}],"gradient-from":[{from:q()}],"gradient-via":[{via:q()}],"gradient-to":[{to:q()}],rounded:[{rounded:ue()}],"rounded-s":[{"rounded-s":ue()}],"rounded-e":[{"rounded-e":ue()}],"rounded-t":[{"rounded-t":ue()}],"rounded-r":[{"rounded-r":ue()}],"rounded-b":[{"rounded-b":ue()}],"rounded-l":[{"rounded-l":ue()}],"rounded-ss":[{"rounded-ss":ue()}],"rounded-se":[{"rounded-se":ue()}],"rounded-ee":[{"rounded-ee":ue()}],"rounded-es":[{"rounded-es":ue()}],"rounded-tl":[{"rounded-tl":ue()}],"rounded-tr":[{"rounded-tr":ue()}],"rounded-br":[{"rounded-br":ue()}],"rounded-bl":[{"rounded-bl":ue()}],"border-w":[{border:me()}],"border-w-x":[{"border-x":me()}],"border-w-y":[{"border-y":me()}],"border-w-s":[{"border-s":me()}],"border-w-e":[{"border-e":me()}],"border-w-bs":[{"border-bs":me()}],"border-w-be":[{"border-be":me()}],"border-w-t":[{"border-t":me()}],"border-w-r":[{"border-r":me()}],"border-w-b":[{"border-b":me()}],"border-w-l":[{"border-l":me()}],"divide-x":[{"divide-x":me()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":me()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...Ge(),"hidden","none"]}],"divide-style":[{divide:[...Ge(),"hidden","none"]}],"border-color":[{border:q()}],"border-color-x":[{"border-x":q()}],"border-color-y":[{"border-y":q()}],"border-color-s":[{"border-s":q()}],"border-color-e":[{"border-e":q()}],"border-color-bs":[{"border-bs":q()}],"border-color-be":[{"border-be":q()}],"border-color-t":[{"border-t":q()}],"border-color-r":[{"border-r":q()}],"border-color-b":[{"border-b":q()}],"border-color-l":[{"border-l":q()}],"divide-color":[{divide:q()}],"outline-style":[{outline:[...Ge(),"none","hidden"]}],"outline-offset":[{"outline-offset":[He,fe,he]}],"outline-w":[{outline:["",He,Xa,Fo]}],"outline-color":[{outline:q()}],shadow:[{shadow:["","none",h,SI,EI]}],"shadow-color":[{shadow:q()}],"inset-shadow":[{"inset-shadow":["none",p,SI,EI]}],"inset-shadow-color":[{"inset-shadow":q()}],"ring-w":[{ring:me()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:q()}],"ring-offset-w":[{"ring-offset":[He,Fo]}],"ring-offset-color":[{"ring-offset":q()}],"inset-ring-w":[{"inset-ring":me()}],"inset-ring-color":[{"inset-ring":q()}],"text-shadow":[{"text-shadow":["none",m,SI,EI]}],"text-shadow-color":[{"text-shadow":q()}],opacity:[{opacity:[He,fe,he]}],"mix-blend":[{"mix-blend":[...ut(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":ut()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[He]}],"mask-image-linear-from-pos":[{"mask-linear-from":Pe()}],"mask-image-linear-to-pos":[{"mask-linear-to":Pe()}],"mask-image-linear-from-color":[{"mask-linear-from":q()}],"mask-image-linear-to-color":[{"mask-linear-to":q()}],"mask-image-t-from-pos":[{"mask-t-from":Pe()}],"mask-image-t-to-pos":[{"mask-t-to":Pe()}],"mask-image-t-from-color":[{"mask-t-from":q()}],"mask-image-t-to-color":[{"mask-t-to":q()}],"mask-image-r-from-pos":[{"mask-r-from":Pe()}],"mask-image-r-to-pos":[{"mask-r-to":Pe()}],"mask-image-r-from-color":[{"mask-r-from":q()}],"mask-image-r-to-color":[{"mask-r-to":q()}],"mask-image-b-from-pos":[{"mask-b-from":Pe()}],"mask-image-b-to-pos":[{"mask-b-to":Pe()}],"mask-image-b-from-color":[{"mask-b-from":q()}],"mask-image-b-to-color":[{"mask-b-to":q()}],"mask-image-l-from-pos":[{"mask-l-from":Pe()}],"mask-image-l-to-pos":[{"mask-l-to":Pe()}],"mask-image-l-from-color":[{"mask-l-from":q()}],"mask-image-l-to-color":[{"mask-l-to":q()}],"mask-image-x-from-pos":[{"mask-x-from":Pe()}],"mask-image-x-to-pos":[{"mask-x-to":Pe()}],"mask-image-x-from-color":[{"mask-x-from":q()}],"mask-image-x-to-color":[{"mask-x-to":q()}],"mask-image-y-from-pos":[{"mask-y-from":Pe()}],"mask-image-y-to-pos":[{"mask-y-to":Pe()}],"mask-image-y-from-color":[{"mask-y-from":q()}],"mask-image-y-to-color":[{"mask-y-to":q()}],"mask-image-radial":[{"mask-radial":[fe,he]}],"mask-image-radial-from-pos":[{"mask-radial-from":Pe()}],"mask-image-radial-to-pos":[{"mask-radial-to":Pe()}],"mask-image-radial-from-color":[{"mask-radial-from":q()}],"mask-image-radial-to-color":[{"mask-radial-to":q()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":j()}],"mask-image-conic-pos":[{"mask-conic":[He]}],"mask-image-conic-from-pos":[{"mask-conic-from":Pe()}],"mask-image-conic-to-pos":[{"mask-conic-to":Pe()}],"mask-image-conic-from-color":[{"mask-conic-from":q()}],"mask-image-conic-to-color":[{"mask-conic-to":q()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:T()}],"mask-repeat":[{mask:U()}],"mask-size":[{mask:ie()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",fe,he]}],filter:[{filter:["","none",fe,he]}],blur:[{blur:en()}],brightness:[{brightness:[He,fe,he]}],contrast:[{contrast:[He,fe,he]}],"drop-shadow":[{"drop-shadow":["","none",v,SI,EI]}],"drop-shadow-color":[{"drop-shadow":q()}],grayscale:[{grayscale:["",He,fe,he]}],"hue-rotate":[{"hue-rotate":[He,fe,he]}],invert:[{invert:["",He,fe,he]}],saturate:[{saturate:[He,fe,he]}],sepia:[{sepia:["",He,fe,he]}],"backdrop-filter":[{"backdrop-filter":["","none",fe,he]}],"backdrop-blur":[{"backdrop-blur":en()}],"backdrop-brightness":[{"backdrop-brightness":[He,fe,he]}],"backdrop-contrast":[{"backdrop-contrast":[He,fe,he]}],"backdrop-grayscale":[{"backdrop-grayscale":["",He,fe,he]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[He,fe,he]}],"backdrop-invert":[{"backdrop-invert":["",He,fe,he]}],"backdrop-opacity":[{"backdrop-opacity":[He,fe,he]}],"backdrop-saturate":[{"backdrop-saturate":[He,fe,he]}],"backdrop-sepia":[{"backdrop-sepia":["",He,fe,he]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":V()}],"border-spacing-x":[{"border-spacing-x":V()}],"border-spacing-y":[{"border-spacing-y":V()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",fe,he]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[He,"initial",fe,he]}],ease:[{ease:["linear","initial",S,fe,he]}],delay:[{delay:[He,fe,he]}],animate:[{animate:["none",E,fe,he]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[O,fe,he]}],"perspective-origin":[{"perspective-origin":X()}],rotate:[{rotate:pn()}],"rotate-x":[{"rotate-x":pn()}],"rotate-y":[{"rotate-y":pn()}],"rotate-z":[{"rotate-z":pn()}],scale:[{scale:R()}],"scale-x":[{"scale-x":R()}],"scale-y":[{"scale-y":R()}],"scale-z":[{"scale-z":R()}],"scale-3d":["scale-3d"],skew:[{skew:de()}],"skew-x":[{"skew-x":de()}],"skew-y":[{"skew-y":de()}],transform:[{transform:[fe,he,"","none","gpu","cpu"]}],"transform-origin":[{origin:X()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:Oe()}],"translate-x":[{"translate-x":Oe()}],"translate-y":[{"translate-y":Oe()}],"translate-z":[{"translate-z":Oe()}],"translate-none":["translate-none"],zoom:[{zoom:[Vi,fe,he]}],accent:[{accent:q()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:q()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",fe,he]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scrollbar-thumb-color":[{"scrollbar-thumb":q()}],"scrollbar-track-color":[{"scrollbar-track":q()}],"scrollbar-gutter":[{"scrollbar-gutter":["auto","stable","both"]}],"scrollbar-w":[{scrollbar:["auto","thin","none"]}],"scroll-m":[{"scroll-m":V()}],"scroll-mx":[{"scroll-mx":V()}],"scroll-my":[{"scroll-my":V()}],"scroll-ms":[{"scroll-ms":V()}],"scroll-me":[{"scroll-me":V()}],"scroll-mbs":[{"scroll-mbs":V()}],"scroll-mbe":[{"scroll-mbe":V()}],"scroll-mt":[{"scroll-mt":V()}],"scroll-mr":[{"scroll-mr":V()}],"scroll-mb":[{"scroll-mb":V()}],"scroll-ml":[{"scroll-ml":V()}],"scroll-p":[{"scroll-p":V()}],"scroll-px":[{"scroll-px":V()}],"scroll-py":[{"scroll-py":V()}],"scroll-ps":[{"scroll-ps":V()}],"scroll-pe":[{"scroll-pe":V()}],"scroll-pbs":[{"scroll-pbs":V()}],"scroll-pbe":[{"scroll-pbe":V()}],"scroll-pt":[{"scroll-pt":V()}],"scroll-pr":[{"scroll-pr":V()}],"scroll-pb":[{"scroll-pb":V()}],"scroll-pl":[{"scroll-pl":V()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",fe,he]}],fill:[{fill:["none",...q()]}],"stroke-w":[{stroke:[He,Xa,Fo,U2]}],stroke:[{stroke:["none",...q()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{"container-named":["container-type"],overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","inset-bs","inset-be","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pbs","pbe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mbs","mbe","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-bs","border-w-be","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-bs","border-color-be","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mbs","scroll-mbe","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pbs","scroll-pbe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},postfixLookupClassGroups:["container-type"],orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}});function $a(...n){return Cne(k2(n))}const Ine=Ju("group/alert relative grid w-full gap-0.5 rounded-lg border px-2.5 py-2 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-card text-card-foreground",destructive:"bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current"}},defaultVariants:{variant:"default"}});function gh({className:n,variant:e,...t}){return f.jsx("div",{"data-slot":"alert",role:"alert",className:$a(Ine({variant:e}),n),...t})}function oh({className:n,...e}){return f.jsx("div",{"data-slot":"alert-title",className:$a("font-medium group-has-[>svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground",n),...e})}function sh({className:n,...e}){return f.jsx("div",{"data-slot":"alert-description",className:$a("text-sm text-balance text-muted-foreground md:text-pretty [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4",n),...e})}var lne=Object.defineProperty,rh=(n,e)=>lne(n,"name",{value:e,configurable:!0});function ah(n,e){if(typeof n=="function")return n(e);n!=null&&(n.current=e)}rh(ah,"setRef");function eE(...n){return e=>{let t=!1;const i=n.map(o=>{const r=ah(o,e);return!t&&typeof r=="function"&&(t=!0),r});if(t)return()=>{for(let o=0;ocne(n,"name",{value:e,configurable:!0});function nE(n){const e=P.forwardRef((t,i)=>{let{children:o,...r}=t,A=null,I=!1;const l=[];Ah(o)&&typeof TI=="function"&&(o=TI(o._payload)),P.Children.forEach(o,m=>{if(rE(m)){I=!0;const v=m;let x="child"in v.props?v.props.child:v.props.children;Ah(x)&&typeof TI=="function"&&(x=TI(x._payload)),A=une(v,x),l.push(A?.props?.children)}else l.push(m)}),A?A=P.cloneElement(A,void 0,l):!I&&P.Children.count(o)===1&&P.isValidElement(o)&&(A=o);const c=A?sE(A):void 0,h=tE(i,c);if(!A){if(o||o===0)throw new Error(I?pne(n):fne(n));return o}const p=oE(r,A.props??{});return A.type!==P.Fragment&&(p.ref=i?h:c),P.cloneElement(A,p)});return e.displayName=`${n}.Slot`,e}Ni(nE,"createSlot");var iE=nE("Slot"),gE=Symbol.for("radix.slottable");function dne(n){const e=Ni(t=>"child"in t?t.children(t.child):t.children,"Slottable");return e.displayName=`${n}.Slottable`,e.__radixId=gE,e}Ni(dne,"createSlottable");var une=Ni((n,e)=>{if("child"in n.props){const t=n.props.child;return P.isValidElement(t)?P.cloneElement(t,void 0,n.props.children(t.props.children)):null}return P.isValidElement(e)?e:null},"getSlottableElementFromSlottable");function oE(n,e){const t={...e};for(const i in e){const o=n[i],r=e[i];/^on[A-Z]/.test(i)?o&&r?t[i]=(...I)=>{const l=r(...I);return o(...I),l}:o&&(t[i]=o):i==="style"?t[i]={...o,...r}:i==="className"&&(t[i]=[o,r].filter(Boolean).join(" "))}return{...n,...t}}Ni(oE,"mergeProps");function sE(n){let e=Object.getOwnPropertyDescriptor(n.props,"ref")?.get,t=e&&"isReactWarning"in e&&e.isReactWarning;return t?n.ref:(e=Object.getOwnPropertyDescriptor(n,"ref")?.get,t=e&&"isReactWarning"in e&&e.isReactWarning,t?n.props.ref:n.props.ref||n.ref)}Ni(sE,"getElementRef");function rE(n){return P.isValidElement(n)&&typeof n.type=="function"&&"__radixId"in n.type&&n.type.__radixId===gE}Ni(rE,"isSlottable");var hne=Symbol.for("react.lazy");function Ah(n){return n!=null&&typeof n=="object"&&"$$typeof"in n&&n.$$typeof===hne&&"_payload"in n&&aE(n._payload)}Ni(Ah,"isLazyComponent");function aE(n){return typeof n=="object"&&n!==null&&"then"in n}Ni(aE,"isPromiseLike");var fne=Ni(n=>`${n} failed to slot onto its children. Expected a single React element child or \`Slottable\`.`,"createSlotError"),pne=Ni(n=>`${n} failed to slot onto its \`Slottable\`. Expected \`Slottable\` to receive a single React element child.`,"createSlottableError"),TI=Z3[" use ".trim().toString()];const mne=Ju("group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!",{variants:{variant:{default:"bg-primary text-primary-foreground [a]:hover:bg-primary/80",secondary:"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",destructive:"bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20",outline:"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground",ghost:"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50",link:"text-primary underline-offset-4 hover:underline"}},defaultVariants:{variant:"default"}});function Wg({className:n,variant:e="default",asChild:t=!1,...i}){const o=t?iE:"span";return f.jsx(o,{"data-slot":"badge","data-variant":e,className:$a(mne({variant:e}),n),...i})}const vne=Ju("group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/80",outline:"border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-[color-mix(in_oklch,var(--secondary),var(--foreground)_5%)] aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",ghost:"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",destructive:"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",xs:"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",lg:"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",icon:"size-8","icon-xs":"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg","icon-lg":"size-9"}},defaultVariants:{variant:"default",size:"default"}});function Ch({className:n,variant:e="default",size:t="default",asChild:i=!1,...o}){const r=i?iE:"button";return f.jsx(r,{"data-slot":"button","data-variant":e,"data-size":t,className:$a(vne({variant:e,size:t,className:n})),...o})}const Ih={resolved:0,inferred:1,ambiguous:2,unresolved:3};function bne({graph:n,host:e}){const t=new Map,i=yne(n);for(const r of n.edges){const A=t.get(r.target);(!A||Ih[r.resolution]>Ih[A])&&t.set(r.target,r.resolution)}const o={schema:"compass.viewer.graph/1",title:`Calls from ${n.nodes.find(r=>r.id===n.rootSymbol)?.name??n.rootSymbol}`,stats:{nodes:n.nodes.length,edges:n.edges.length,communities:4,aggregated:!1},nodes:n.nodes.map(r=>({id:r.id,label:r.name,kind:r.unresolved?"Unresolved call":"Function",community:Ih[t.get(r.id)??"resolved"],communityName:t.get(r.id)??"resolved",depth:i.get(r.id),root:r.id===n.rootSymbol,source:wne(r)})),edges:n.edges.map(r=>({id:r.id,source:r.source,target:r.target,relation:`${r.callee} · ${r.resolution}`,confidence:r.resolution==="resolved"?"extracted":r.resolution==="inferred"?"inferred":"ambiguous"})),communities:[{id:0,label:"Resolved",color:"#59A14F",hidden:!1},{id:1,label:"Inferred",color:"#4E79A7",hidden:!1},{id:2,label:"Ambiguous",color:"#F28E2B",hidden:!1},{id:3,label:"Unresolved",color:"#E15759",hidden:!1}],hyperedges:[]};return f.jsx(Wu,{model:o,host:e,preferredLayout:"hierarchical"})}function yne(n){const e=new Map;for(const o of n.edges){const r=e.get(o.source)??[];r.push(o.target),e.set(o.source,r);const A=e.get(o.target)??[];A.push(o.source),e.set(o.target,A)}const t=new Map([[n.rootSymbol,0]]),i=[n.rootSymbol];for(;i.length>0;){const o=i.shift();if(o===void 0)break;const r=t.get(o)??0;for(const A of e.get(o)??[])t.has(A)||(t.set(A,r+1),i.push(A))}return t}function wne(n){if(n.anchor)return{file:n.anchor.source_file,startByte:n.anchor.start_byte,endByte:n.anchor.end_byte};if(n.file)return{file:n.file,...n.startLine!=null?{startLine:n.startLine}:{},...n.endLine!=null?{endLine:n.endLine}:{},...n.startByte!=null?{startByte:n.startByte}:{},...n.endByte!=null?{endByte:n.endByte}:{}}}function xne({coverage:n}){return!n.partial&&n.unresolved===0&&n.ambiguous===0?null:f.jsxs(gh,{children:[f.jsx(oh,{children:"Partial call coverage"}),f.jsx(sh,{children:n.warning})]})}function Ene({graph:n,host:e}){const[t,i]=P.useState(!1),o=t?n.continuations:n.continuations.slice(0,20),r=n.direction==="callers"?"No callers found":n.direction==="callees"?"No callees found":"No calls found";return f.jsxs("div",{className:"call-graph-view relative h-screen",children:[f.jsx(bne,{graph:n,host:e}),f.jsx("div",{className:"call-graph-direction absolute top-2 left-1/2 z-20 flex -translate-x-1/2 gap-1 rounded-md border bg-popover/95 p-1 shadow-lg backdrop-blur",role:"group","aria-label":"Call graph direction",children:[["callers","Callers"],["both","Both"],["callees","Callees"]].map(([A,I])=>f.jsx(Ch,{size:"sm",variant:n.direction===A?"secondary":"ghost","aria-pressed":n.direction===A,disabled:!e.changeDirection,onClick:()=>{n.direction!==A&&e.changeDirection?.(A)},children:I},A))}),f.jsxs("section",{className:"call-graph-summary absolute bottom-3 left-3 z-20 flex max-w-[min(44rem,calc(100%-1.5rem))] flex-col gap-2 rounded-md border bg-popover/95 p-3 text-popover-foreground shadow-xl backdrop-blur",children:[f.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[f.jsxs(Wg,{variant:"outline",children:[f.jsx(hc,{})," depth ",n.depth]}),f.jsxs(Wg,{variant:"outline",children:[n.nodes.length," ",n.nodes.length===1?"node":"nodes"]}),f.jsxs(Wg,{variant:"outline",children:[n.edges.length," ",n.edges.length===1?"edge":"edges"]}),f.jsxs(Wg,{variant:"secondary",children:[n.coverage.resolved," resolved"]}),f.jsxs(Wg,{variant:"outline",children:[n.coverage.inferred," inferred"]}),f.jsxs(Wg,{variant:"outline",children:[n.coverage.ambiguous," ambiguous"]}),f.jsxs(Wg,{variant:"destructive",children:[n.coverage.unresolved," unresolved"]}),n.coverage.evidenceLayer&&f.jsx(Wg,{variant:"outline",children:Sne(n.coverage.evidenceLayer)})]}),n.edges.length===0&&f.jsxs(gh,{children:[f.jsx(oh,{children:r}),f.jsx(sh,{children:"Compass found the root function but no represented relationships in this direction."})]}),n.truncated&&f.jsxs(gh,{children:[f.jsx(Ur,{}),f.jsx(oh,{children:"Partial call graph"}),f.jsx(sh,{children:"Compass reached the configured graph limit. Counts and paths may be incomplete."})]}),f.jsx(xne,{coverage:n.coverage}),n.continuations.length>0&&f.jsxs("div",{children:[f.jsx("div",{className:"flex max-h-24 flex-wrap gap-1 overflow-auto","aria-label":"Call graph continuations",children:o.map(A=>f.jsxs(Ch,{size:"xs",variant:"outline",disabled:!e.expand,onClick:()=>e.expand?.(A.symbol,A.direction,A.nextDepth),children:[A.direction==="callers"?f.jsx(W3,{}):A.direction==="callees"?f.jsx(Y3,{}):f.jsx(Iv,{}),"Expand ",A.direction]},`${A.symbol}:${A.direction}:${A.nextDepth}`))}),!t&&n.continuations.length>o.length&&f.jsxs("div",{className:"mt-2 flex flex-wrap items-center justify-between gap-2",children:[f.jsxs("p",{className:"text-xs text-muted-foreground",role:"status",children:["Showing ",o.length," of ",n.continuations.length," continuations"]}),f.jsxs(Ch,{size:"xs",variant:"outline",onClick:()=>i(!0),children:["Show all ",n.continuations.length," continuations"]})]})]})]})]})}function Sne(n){return n.split("_").map((e,t)=>t===0?`${e.slice(0,1).toUpperCase()}${e.slice(1)}`:e).join(" ")}const AE=0;function Tne(n,e){const t=new Set(n.nodes.map(l=>l.id)),i=n.edges.filter(l=>t.has(l.source)&&t.has(l.target)).map(Nne),o=new Map;for(const l of i)o.set(l.source,(o.get(l.source)??0)+1),o.set(l.target,(o.get(l.target)??0)+1);const r=kne(n),A=new Set(n.paths.flatMap(l=>l.nodeIds.slice(0,1))),I=n.nodes.map(l=>One(l,o.get(l.id)??0,r.get(l.id),A.has(l.id)));return{schema:"compass.viewer.graph/1",title:e,stats:{nodes:I.length,edges:i.length,communities:I.length>0?1:0,aggregated:!1},nodes:I,edges:i,communities:I.length>0?[{id:AE,label:"Query result",color:"#6f7bf7",hidden:!1}]:[],hyperedges:[]}}function One(n,e,t,i){const o=n.details?.type==="symbol"?n.details.data.signature??void 0:void 0;return{id:n.id,label:n.name,kind:n.kind,community:AE,communityName:"Query result",degree:e,...t!==void 0?{depth:t}:{},...i?{root:!0}:{},...n.language?{language:n.language}:{},...o?{signature:o}:{},...n.source?{source:n.source}:{},codeEvidence:n.evidence}}function Nne(n){const e=Dne(n);return{id:n.id,source:n.source,target:n.target,relation:n.kind,...n.relationshipSite?{relationshipSite:n.relationshipSite}:{},...n.details?{details:n.details}:{},...e?{confidence:e}:{},codeEvidence:n.evidence}}function Dne(n){return n.evidence.some(e=>e.confidence==="ambiguous")?"ambiguous":n.evidence.some(e=>e.confidence==="inferred")?"inferred":n.evidence.length>0?"extracted":void 0}function kne(n){const e=new Map;for(const t of n.paths)t.nodeIds.forEach((i,o)=>{const r=e.get(i);(r===void 0||o[y.id,y])),i=new Map(e.nodes.map(y=>[y.id,y])),o=new Map,r=[],A=CE(i,t),I=CE(t,i),l=new Map(Rne(i,t).map(y=>[y,pv(t.get(y),i.get(y),"node")])),c=[...l.entries()].filter(([,y])=>y.fields.length>0).map(([y])=>y),h=_ne(n.edges,e.edges),p=h.matched.map(({before:y,after:S})=>({before:y,after:S,evidence:zne(y,S)})).filter(({evidence:y})=>y.fields.length>0);for(const y of A)lh(o,i.get(y),"added",gC(void 0,i.get(y)));for(const y of I)lh(o,t.get(y),"removed",gC(t.get(y),void 0));for(const y of c)lh(o,i.get(y),"changed",l.get(y));for(const y of h.added)r.push({...y,change:"added",evidence:gC(void 0,y)}),ch(o,y,t,i);for(const y of h.removed)r.push({...y,change:"removed",evidence:gC(y,void 0)}),ch(o,y,t,i);for(const{after:y,evidence:S}of p)r.push({...y,change:"changed",evidence:S}),ch(o,y,t,i);const m=[...o.values()].sort((y,S)=>y.id.localeCompare(S.id));r.sort((y,S)=>y.id.localeCompare(S.id));const v=jne(r),x=new Set(m.map(y=>y.community)),O=[...e.communities,...n.communities.filter(y=>!e.communities.some(S=>S.id===y.id))].filter(y=>x.has(y.id));return{addedNodes:A.length,removedNodes:I.length,changedNodes:c.length,addedEdges:h.added.length,removedEdges:h.removed.length,changedEdges:p.length,graph:{...e,title:`Graph delta · ${e.title}`,stats:{...e.stats,nodes:m.length,edges:v.length,communities:O.length,aggregated:n.stats.aggregated||e.stats.aggregated},nodes:m,edges:v,communities:O,hyperedges:[]}}}function CE(n,e){return[...n.keys()].filter(t=>!e.has(t))}function Rne(n,e){return[...n.keys()].filter(t=>e.has(t))}function lh(n,e,t,i){e&&n.set(e.id,{...e,change:t,...i?{evidence:i}:{}})}function IE(n,e,t,i){if(n.has(e))return;const o=i.get(e)??t.get(e);o&&n.set(e,{...o,change:"unchanged"})}function ch(n,e,t,i){IE(n,e.source,t,i),IE(n,e.target,t,i)}function zne(n,e){return pv({...n,id:e.id},e,"edge")}function _ne(n,e){const t=new Set,i=new Set,o=[],r=(I,l)=>{t.add(I),i.add(l),o.push({before:n[I],after:e[l]})};lE(n,e,t,i,r,I=>NI(I.id)?void 0:I.id),lE(n,e,t,i,r,I=>NI(I.id)?dh(I):void 0);const A=new Map;n.forEach((I,l)=>{if(t.has(l)||!NI(I.id))return;const c=A.get(OI(I))??{parent:[],current:[]};c.parent.push(l),A.set(OI(I),c)}),e.forEach((I,l)=>{if(i.has(l)||!NI(I.id))return;const c=A.get(OI(I))??{parent:[],current:[]};c.current.push(l),A.set(OI(I),c)});for(const I of A.values()){I.parent.sort((c,h)=>cE(n[c],n[h])),I.current.sort((c,h)=>cE(e[c],e[h]));const l=Math.min(I.parent.length,I.current.length);for(let c=0;c!i.has(l)),removed:n.filter((I,l)=>!t.has(l))}}function lE(n,e,t,i,o,r){const A=new Map;e.forEach((I,l)=>{if(i.has(l))return;const c=r(I);if(c===void 0)return;const h=A.get(c)??[];h.push(l),A.set(c,h)}),n.forEach((I,l)=>{if(t.has(l))return;const c=r(I);if(c===void 0)return;const p=A.get(c)?.shift();p!==void 0&&o(l,p)})}function dh(n){return JSON.stringify(S_(n,"edge"))}function OI(n){return JSON.stringify([n.source,n.target,n.relation])}function cE(n,e){return dh(n).localeCompare(dh(e))||n.id.localeCompare(e.id)}function NI(n){return/^edge-\d+-/.test(n)}function jne(n){const e=new Map;return n.map(t=>{const i=e.get(t.id)??0;return e.set(t.id,i+1),i===0?t:{...t,id:`${t.id}::${t.change}-${i}`}})}function Pne({workbench:n,host:e,communityDetail:t,communityLoading:i,communityError:o,onBackToOverview:r,initialInspectorLayout:A,onInspectorLayoutChange:I}){const[l,c]=P.useState(()=>uE(n)??n.defaultView),[h,p]=P.useState(!1),m=n.views.find(x=>x.id===l)??n.views[0];P.useEffect(()=>{const x=()=>{const O=uE(n);O&&c(O)};return window.addEventListener("hashchange",x),()=>window.removeEventListener("hashchange",x)},[n]);const v=x=>{c(x);const O=`view=${encodeURIComponent(x)}`;window.location.hash.slice(1)!==O&&(window.location.hash=O)};return m?f.jsxs("div",{className:"visualization-workbench","data-navigation-collapsed":h,children:[f.jsxs("aside",{className:"visualization-rail","data-collapsed":h,"aria-label":"Compass navigation",children:[f.jsxs("header",{children:[f.jsx("span",{className:"visualization-bearing","aria-hidden":"true",children:f.jsx(y_,{})}),f.jsxs("span",{children:[f.jsx("strong",{children:"Compass"}),f.jsx("small",{title:n.title,children:n.title})]}),f.jsx("button",{className:"visualization-rail-disclosure",type:"button","aria-label":h?"Expand graph navigation":"Collapse graph navigation",title:h?"Expand graph navigation":"Collapse graph navigation",onClick:()=>p(x=>!x),children:h?f.jsx(l_,{"aria-hidden":"true"}):f.jsx(I_,{"aria-hidden":"true"})})]}),f.jsx("nav",{"aria-label":"Graph views",children:n.views.map(x=>f.jsxs("button",{type:"button","aria-current":x.id===m.id?"page":void 0,onClick:()=>v(x.id),children:[f.jsx(Fne,{view:x}),f.jsxs("span",{children:[f.jsx("strong",{children:x.title}),f.jsx("small",{children:x.description})]}),f.jsx("i",{"data-status":x.coverage.status,title:`${x.coverage.status} view`})]},x.id))}),f.jsxs("footer",{children:[f.jsx("span",{children:"Snapshot"}),f.jsx("code",{children:Vne(n.graphIdentity)})]})]}),f.jsxs("main",{className:"visualization-main",children:[f.jsxs("header",{className:"visualization-context",children:[f.jsxs("div",{children:[f.jsx("span",{children:Une(m)}),f.jsx("strong",{children:m.title})]}),f.jsxs("div",{className:"visualization-coverage","data-status":m.coverage.status,children:[m.kind!=="call"&&f.jsxs(f.Fragment,{children:[f.jsxs("span",{children:[m.coverage.nodes.toLocaleString()," nodes"]}),f.jsxs("span",{children:[m.coverage.edges.toLocaleString()," relationships"]})]}),f.jsx("strong",{children:Yne(m)})]})]}),f.jsx("section",{className:"visualization-stage","aria-label":`${m.title} visualization`,children:f.jsx(Bne,{view:m,host:e,communityDetail:t,communityLoading:i,communityError:o,onBackToOverview:r,initialInspectorLayout:A,onInspectorLayoutChange:I},m.id)})]})]}):null}function Bne({view:n,host:e,communityDetail:t,communityLoading:i,communityError:o,onBackToOverview:r,initialInspectorLayout:A,onInspectorLayoutChange:I}){if(n.kind==="call")return f.jsx(Ene,{graph:n.graph,host:{openSource:e.openSource,...e.expandCall?{expand:e.expandCall}:{},...e.changeCallDirection?{changeDirection:e.changeCallDirection}:{}}});if(n.kind==="architecture")return f.jsx(Zne,{model:n.model,host:e});if(n.kind==="impact")return f.jsx(uh,{model:Tne(n.result,n.title),host:e,queryResult:n.result,preferredLayout:"hierarchical"});if(n.kind==="history"){const c=Mne(n.before,n.after);return f.jsxs("div",{className:"workbench-history-view",children:[f.jsxs("div",{className:"workbench-history-banner",children:[f.jsx(rv,{"aria-hidden":"true"}),f.jsxs("span",{children:[f.jsxs("strong",{children:[n.baseRevision," → ",n.targetRevision]}),f.jsxs("small",{children:["+",c.addedNodes," / −",c.removedNodes," / Δ",c.changedNodes," nodes"]})]})]}),f.jsx(uh,{model:c.graph,host:e,preferredLayout:"grid",sourceRevisions:{before:n.baseRevision,after:n.targetRevision}})]})}const l=n.kind==="affected"?"hierarchical":n.kind==="artifact"?n.lens==="routes"?"hierarchical":"grid":"automatic";return f.jsx(uh,{model:n.model,host:e,preferredLayout:l,communityDetails:n.kind==="code"?n.communityDetails:void 0,communityDetail:n.kind==="code"?t:void 0,communityLoading:n.kind==="code"?i:void 0,communityError:n.kind==="code"?o:void 0,onBackToOverview:n.kind==="code"?r:void 0,initialInspectorLayout:A,onInspectorLayoutChange:I})}function uh({model:n,host:e,queryResult:t,sourceRevisions:i,preferredLayout:o,communityDetails:r,communityDetail:A,communityLoading:I,communityError:l,onBackToOverview:c,initialInspectorLayout:h,onInspectorLayoutChange:p}){const[m,v]=P.useState(""),[x,O]=P.useState(""),[y,S]=P.useState(""),[E,_]=P.useState(""),[j,X]=P.useState(),[ne,F]=P.useState(!1),V=P.useId(),Ie=P.useRef(null),Ee=P.useRef(null),xe=(j===void 0?void 0:{communityId:j,model:r?.[String(j)]??n})??A,Ue=xe?.model??n,Le=xe?`community-${xe.communityId}`:"overview",le=P.useMemo(()=>Lne(Ue),[Ue]),M=P.useMemo(()=>Gne(Ue,{relation:m,evidence:x,kind:y,language:E}),[Ue,x,y,E,m]);P.useEffect(()=>{v(""),O(""),S(""),_(""),F(!1)},[Le]),P.useEffect(()=>{if(!ne)return;const T=ie=>{ie.key==="Escape"&&(F(!1),Ie.current?.focus())},U=ie=>{const ae=ie.target;Ie.current?.contains(ae)||Ee.current?.contains(ae)||F(!1)};return document.addEventListener("keydown",T),document.addEventListener("pointerdown",U),()=>{document.removeEventListener("keydown",T),document.removeEventListener("pointerdown",U)}},[ne]);const Q=P.useCallback(()=>{v(""),O(""),S(""),_("")},[]),se=P.useCallback(()=>F(!1),[]),K=[m,x,y,E].filter(Boolean).length,q=K>0&&M.nodes.length===0;return f.jsx("div",{className:"workbench-graph-lens",children:f.jsx(Wu,{model:xe?n:M,communityDetail:xe?{...xe,model:M}:void 0,communityLoading:I,communityError:l,onBackToOverview:j===void 0?c:()=>X(void 0),initialInspectorLayout:h,onInspectorLayoutChange:p,host:{...e,openCommunity:T=>{r?.[String(T)]?X(T):e.openCommunity?.(T)}},queryResult:t,sourceRevisions:i,showInspectorHeader:!1,preferredLayout:o,toolbarLeading:f.jsxs("button",{ref:Ie,className:"workbench-filter-trigger",type:"button","aria-label":"Graph filters","aria-expanded":ne,"aria-controls":V,onClick:()=>F(T=>!T),children:[f.jsx(v_,{"aria-hidden":"true"}),f.jsx("span",{children:"Filters"}),K>0?f.jsx("b",{children:K}):null,f.jsxs("small",{children:[M.nodes.length.toLocaleString()," / ",Ue.nodes.length.toLocaleString()]})]}),toolbarLeadingPanel:ne?f.jsxs("div",{ref:Ee,id:V,className:"workbench-filter-popover",role:"region","aria-label":"Graph filter options",children:[f.jsxs("header",{children:[f.jsxs("span",{children:[f.jsx("strong",{children:"Filter graph"}),f.jsx("small",{children:"Refine visible nodes and relationships"})]}),f.jsx("button",{type:"button",disabled:K===0,onClick:Q,children:"Clear filters"})]}),f.jsx(Uo,{label:"Relationship",value:m,values:le.relations,onChange:v}),f.jsx(Uo,{label:"Evidence",value:x,values:le.evidence,onChange:O}),f.jsx(Uo,{label:"Node kind",value:y,values:le.kinds,onChange:S}),f.jsx(Uo,{label:"Language",value:E,values:le.languages,onChange:_}),f.jsx("footer",{role:"status",children:q?"No nodes match these filters":`Showing ${M.nodes.length.toLocaleString()} of ${Ue.nodes.length.toLocaleString()} nodes`})]}):void 0,toolbarLeadingOpen:ne,onToolbarLeadingClose:se,stageOverlay:Ue.nodes.length===0?f.jsx(dE,{title:"This view has no graph nodes",detail:"The exported graph lens did not contain any nodes to visualize."}):q&&!ne?f.jsx(dE,{title:"No nodes match these filters",detail:"Clear one or more filters to restore the graph.",onClear:Q}):void 0})})}function dE({title:n,detail:e,onClear:t}){return f.jsxs("div",{className:"workbench-graph-empty",role:"status",children:[f.jsx(fc,{"aria-hidden":"true"}),f.jsx("strong",{children:n}),f.jsx("span",{children:e}),t?f.jsx("button",{type:"button",onClick:t,children:"Clear filters"}):null]})}function Uo({label:n,value:e,values:t,onChange:i}){return f.jsxs("label",{children:[f.jsx("span",{children:n}),f.jsxs("select",{value:e,onChange:o=>i(o.target.value),children:[f.jsx("option",{value:"",children:"All"}),t.map(o=>f.jsx("option",{value:o,children:hh(o)},o))]})]})}function Zne({model:n,host:e}){const[t,i]=P.useState("production"),[o,r]=P.useState("all"),[A,I]=P.useState("architecture"),l=P.useMemo(()=>pte(n,{scope:t,evidence:o,lens:A}),[o,A,n,t]),c=l.groups.find(E=>E.nodeCount>0),[h,p]=P.useState(c?{kind:"group",id:c.id}:void 0),m=n.projections.find(E=>E.scope===(t==="all"?"all_code":"production")),v=h?.kind==="group"?m?.groups.find(E=>E.id===h.id):void 0,x=new Set(m?.groups.filter(E=>E.parentId===v?.id).map(E=>E.id)??[]),O=new Set(m?.memberships.filter(E=>{const _=m.groups[E.groupIndex]?.id;return _===v?.id||_!==void 0&&x.has(_)}).map(E=>n.nodes[E.nodeIndex]?.id).filter(E=>E!==void 0)??[]),y=n.nodes.filter(E=>O.has(E.id)),S=h?.kind==="route"?l.routes.find(E=>E.id===h.id):void 0;return f.jsxs("div",{className:"workbench-architecture",children:[f.jsxs("div",{className:"workbench-filter-strip","aria-label":"Architecture filters",children:[f.jsx(Uo,{label:"Source scope",value:t,values:["production","all"],onChange:E=>i(E)}),f.jsx(Uo,{label:"Evidence",value:o,values:["all","extracted","inferred","ambiguous"],onChange:E=>r(E)}),f.jsx(Uo,{label:"Lens",value:A,values:["architecture","execution","dependency","type","structure","all"],onChange:E=>I(E)}),f.jsxs("label",{children:["Subsystem directory",f.jsxs("select",{"aria-label":"Subsystem directory",value:v?.id??"",onChange:E=>E.target.value&&p({kind:"group",id:E.target.value}),children:[f.jsx("option",{value:"",children:"Select a subsystem"}),m?.groups.map(E=>f.jsxs("option",{value:E.id,children:[E.name.value," · ",E.nodeCount.toLocaleString()," symbols"]},E.id))]})]}),f.jsxs("span",{role:"status",children:[l.statistics.visibleRelationships.toLocaleString()," visible relationships"]}),f.jsxs("span",{role:"status",children:["Architecture quality: ",l.quality.status]}),f.jsxs("span",{role:"status",children:[l.omissions.shownGroups.toLocaleString()," of ",l.omissions.totalGroups.toLocaleString()," groups shown",l.omissions.omittedGroups>0?` · ${l.omissions.omittedGroups.toLocaleString()} available in directory`:""]})]}),f.jsxs("div",{className:"workbench-architecture-body",children:[f.jsx(lte,{overview:l,selection:h,onSelect:p}),f.jsx("aside",{"aria-label":"Architecture details",children:v?f.jsxs(f.Fragment,{children:[f.jsx("span",{children:"Subsystem"}),f.jsx("h2",{children:v.name.value}),f.jsxs("p",{children:[y.length.toLocaleString()," symbols · ",v.relationshipCount.toLocaleString()," related relationships"]}),f.jsxs("small",{children:["Name source: ",v.name.provenance," · quality ",v.name.quality,"/100"]}),f.jsx("div",{className:"workbench-symbol-list",children:y.slice(0,100).map(E=>f.jsxs("button",{type:"button",disabled:!E.sourceFile,onClick:()=>E.sourceFile&&e.openSource({file:E.sourceFile}),children:[f.jsx("strong",{children:E.label}),f.jsxs("small",{children:[E.kind,E.sourceFile?` · ${E.sourceFile}`:""]})]},E.id))})]}):S?f.jsxs(f.Fragment,{children:[f.jsx("span",{children:"Subsystem route"}),f.jsxs("h2",{children:[hE(l,S.sourceGroup)," → ",hE(l,S.targetGroup)]}),f.jsxs("p",{children:[S.relationships.toLocaleString()," relationships cross this boundary."]})]}):f.jsx("p",{children:"Select a subsystem or route."})})]})]})}function Lne(n){const e=t=>[...new Set(t.filter(i=>!!i))].sort();return{relations:e(n.edges.map(t=>t.relation)),evidence:e(n.edges.map(t=>t.confidence)),kinds:e(n.nodes.map(t=>t.kind)),languages:e(n.nodes.map(t=>t.language))}}function Gne(n,e){const t=n.nodes.filter(I=>(!e.kind||I.kind===e.kind)&&(!e.language||I.language===e.language));let i=new Set(t.map(I=>I.id));const o=n.edges.filter(I=>i.has(I.source)&&i.has(I.target)&&(!e.relation||I.relation===e.relation)&&(!e.evidence||I.confidence===e.evidence));if(e.relation||e.evidence){const I=new Set(o.flatMap(l=>[l.source,l.target]));for(const l of t)l.root&&I.add(l.id);i=I}const r=t.filter(I=>i.has(I.id)),A=new Set(r.map(I=>I.community));return{...n,stats:{...n.stats,nodes:r.length,edges:o.length,communities:A.size},nodes:r,edges:o,communities:n.communities.filter(I=>A.has(I.id))}}function Fne({view:n}){const e=n.kind==="code"?fc:n.kind==="call"?hc:n.kind==="impact"?J3:n.kind==="architecture"?X3:n.kind==="history"?rv:n.kind==="affected"?p_:n.lens==="routes"?cv:n.lens==="provenance"?$3:u_;return f.jsx(e,{"aria-hidden":"true"})}function uE(n){const e=new URLSearchParams(window.location.hash.slice(1)).get("view");return e&&n.views.some(t=>t.id===e)?e:void 0}function Vne(n){const e=n.startsWith("sha256:")?n.slice(7):n;return e.length>12?e.slice(0,12):e}function Une(n){return n.kind==="artifact"?`${hh(n.lens)} lens`:`${hh(n.kind)} graph`}function Yne(n){return n.kind==="architecture"?n.coverage.status==="complete"?"Extraction complete":n.coverage.status==="summary"?"Extraction summary":"Extraction bounded":n.coverage.status==="complete"?"Complete":n.coverage.status==="summary"?"Community summary":"Bounded result"}function hh(n){return n.replaceAll("_"," ").replace(/\b\w/g,e=>e.toUpperCase())}function hE(n,e){return n.groups.find(t=>t.id===e)?.name??e}const Hne=ce({provider:je(["github","gitlab","bitbucket"]),repositoryUrl:D().url(),revision:D().regex(/^(?:[0-9a-f]{40}|[0-9a-f]{64})$/i)});function Kne(n,e,t=n.revision){if(!Qne(t))return;const i=Xne(e.file);if(!i)return;const o=n.repositoryUrl.replace(/\/$/,""),r=$ne(n.provider,e);return n.provider==="gitlab"?`${o}/-/blob/${t}/${i}${r}`:n.provider==="bitbucket"?`${o}/src/${t}/${i}${r}`:`${o}/blob/${t}/${i}${r}`}function Wne(n,e,t){if(window.dispatchEvent(new CustomEvent("compass:open-source",{detail:e})),!n)return{kind:"unavailable"};const i=Kne(n,e,t??n.revision);if(!i)return{kind:"unavailable"};const o=document.createElement("a");return o.href=i,o.target="_blank",o.rel="noopener noreferrer",o.click(),{kind:"opened",url:i}}function Qne(n){return/^(?:[0-9a-f]{40}|[0-9a-f]{64})$/i.test(n)}function Xne(n){if(!n||n.startsWith("/")||n.startsWith("\\")||n.includes("\0"))return;const e=n.replaceAll("\\","/").split("/");if(!e.some(t=>!t||t==="."||t===".."))return e.map(encodeURIComponent).join("/")}function $ne(n,e){const t=e.startLine;if(t===void 0)return"";const i=Math.max(t,e.endLine??t);return n==="gitlab"?i===t?`#L${t}`:`#L${t}-${i}`:n==="bitbucket"?i===t?`#lines-${t}`:`#lines-${t}:${i}`:i===t?`#L${t}`:`#L${t}-L${i}`}function fE(){const n=document.getElementById("compass-viewer-root"),e=document.getElementById("compass-viewer-model");if(!n||!e)throw new Error("Compass viewer root or model is missing");const t=JSON.parse(e.textContent??""),i=qne(),o=TN.createRoot(n),r=B3.safeParse(t);if(r.success){o.render(f.jsx(Pne,{workbench:r.data,host:{openSource(m,v){pE(i,m,v)}}}));return}const A=Ng.parse(t),I=new Map;let l,c=null,h;const p=()=>{o.render(f.jsx(Wu,{model:A,communityDetail:l,communityLoading:c,communityError:h,onBackToOverview:l?()=>{l=void 0,h=void 0,p()}:void 0,host:{openSource(m,v){pE(i,m,v)},openCommunity(m){c===null&&(c=m,h=void 0,p(),window.setTimeout(()=>{try{let v=I.get(m);if(!v){const x=document.querySelector(`script[data-compass-community="${m}"]`);if(!x)throw new Error(`Community ${m} detail is unavailable in this export.`);v=Ng.parse(JSON.parse(x.textContent??"")),I.set(m,v)}l={communityId:m,model:v},window.dispatchEvent(new CustomEvent("compass:open-community",{detail:{communityId:m}}))}catch(v){h=v instanceof Error?v.message:String(v)}finally{c=null,p()}},0))}}}))};p()}function qne(){const n=document.getElementById("compass-source-navigation");if(!n?.textContent)return;const e=Hne.safeParse(JSON.parse(n.textContent));return e.success?e.data:void 0}function pE(n,e,t){Wne(n,e,t).kind==="unavailable"&&Jne(e.file)}function Jne(n){const e=document.getElementById("compass-source-notice"),t=e??document.createElement("div");t.id="compass-source-notice",t.className="compass-source-notice",t.setAttribute("role","status"),t.setAttribute("aria-live","polite"),t.textContent=["Source link unavailable.",`The exported revision for ${n} is not published by the configured remote.`,"Open this graph in VS Code to navigate to the local source."].join(" "),e||document.body.append(t)}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",fE,{once:!0}):fE()})(); diff --git a/crates/compass-output/assets/viewer/manifest.json b/crates/compass-output/assets/viewer/manifest.json index 29463ab7..3ecea94a 100644 --- a/crates/compass-output/assets/viewer/manifest.json +++ b/crates/compass-output/assets/viewer/manifest.json @@ -3,12 +3,12 @@ "viewerSchema": "compass.viewer.graph/1", "files": { "graph.js": { - "bytes": 1086882, - "sha256": "c1839aa0199937143cfdf39c3876c9f3eeb15d9fded754fc7863bf9982f5316c" + "bytes": 1098604, + "sha256": "40635538ce94903b438ae439d15c0609f384e304db3d300e93c5859637878263" }, "viewer.css": { - "bytes": 255848, - "sha256": "a9b91d60549e949999805c6791b3f99c34e3788efb9513757458c4ea673a8646" + "bytes": 272342, + "sha256": "6aafbe98455900b02652aa406f566e2dcc9293fc30a5db991342ba408d079279" } } } diff --git a/crates/compass-output/assets/viewer/viewer.css b/crates/compass-output/assets/viewer/viewer.css index 59c93f87..d47a8374 100644 --- a/crates/compass-output/assets/viewer/viewer.css +++ b/crates/compass-output/assets/viewer/viewer.css @@ -1 +1 @@ -@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-content:"";--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:root,:host{--spacing:.25rem;--container-xs:20rem;--container-md:28rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height: 1.5 ;--font-weight-medium:500;--radius-md:calc(var(--radius) - 2px);--radius-4xl:2rem;--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--compass-font-sans);--default-mono-font-family:var(--compass-font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.top-2{top:calc(var(--spacing) * 2)}.right-2{right:calc(var(--spacing) * 2)}.bottom-3{bottom:calc(var(--spacing) * 3)}.bottom-4{bottom:calc(var(--spacing) * 4)}.left-1\/2{left:50%}.left-3{left:calc(var(--spacing) * 3)}.left-4{left:calc(var(--spacing) * 4)}.isolate{isolation:isolate}.z-20{z-index:20}.z-50{z-index:50}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.mt-2{margin-top:calc(var(--spacing) * 2)}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.size-2\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-full{width:100%;height:100%}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-\[calc\(100\%-1px\)\]{height:calc(100% - 1px)}.h-screen{height:100vh}.max-h-24{max-height:calc(var(--spacing) * 24)}.w-fit{width:fit-content}.w-full{width:100%}.max-w-\[min\(44rem\,calc\(100\%-1\.5rem\)\)\]{max-width:min(44rem,100% - 1.5rem)}.max-w-md{max-width:var(--container-md)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:0}.min-w-7{min-width:calc(var(--spacing) * 7)}.min-w-8{min-width:calc(var(--spacing) * 8)}.min-w-9{min-width:calc(var(--spacing) * 9)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.origin-\(--radix-tooltip-content-transform-origin\){transform-origin:var(--radix-tooltip-content-transform-origin)}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-\[calc\(-50\%_-_2px\)\]{--tw-translate-y: calc(-50% - 2px) ;translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-45{rotate:45deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.touch-none{touch-action:none}.resize{resize:both}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-\[--spacing\(var\(--gap\)\)\]{gap:calc(var(--spacing) * var(--gap))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.rounded-4xl{border-radius:var(--radius-4xl)}.rounded-\[2px\]{border-radius:2px}.rounded-\[inherit\]{border-radius:inherit}.rounded-\[min\(var\(--radius-md\)\,10px\)\]{border-radius:min(var(--radius-md),10px)}.rounded-\[min\(var\(--radius-md\)\,12px\)\]{border-radius:min(var(--radius-md),12px)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.border{border-style:var(--tw-border-style);border-width:1px}.border-border{border-color:var(--border)}.border-destructive\/50{border-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.border-destructive\/50{border-color:color-mix(in oklab,var(--destructive) 50%,transparent)}}.border-input{border-color:var(--input)}.border-transparent{border-color:#0000}.bg-background,.bg-background\/95{background-color:var(--background)}@supports (color:color-mix(in lab,red,red)){.bg-background\/95{background-color:color-mix(in oklab,var(--background) 95%,transparent)}}.bg-border{background-color:var(--border)}.bg-card{background-color:var(--card)}.bg-destructive\/10{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.bg-destructive\/10{background-color:color-mix(in oklab,var(--destructive) 10%,transparent)}}.bg-foreground{background-color:var(--foreground)}.bg-muted{background-color:var(--muted)}.bg-popover\/95{background-color:var(--popover)}@supports (color:color-mix(in lab,red,red)){.bg-popover\/95{background-color:color-mix(in oklab,var(--popover) 95%,transparent)}}.bg-primary{background-color:var(--primary)}.bg-secondary{background-color:var(--secondary)}.bg-transparent{background-color:#0000}.bg-clip-padding{background-clip:padding-box}.fill-foreground{fill:var(--foreground)}.p-1{padding:var(--spacing)}.p-3{padding:calc(var(--spacing) * 3)}.p-\[3px\]{padding:3px}.p-px{padding:1px}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.text-left{text-align:left}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[0\.8rem\]{font-size:.8rem}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.text-balance{text-wrap:balance}.whitespace-nowrap{white-space:nowrap}.text-background{color:var(--background)}.text-card-foreground{color:var(--card-foreground)}.text-destructive{color:var(--destructive)}.text-foreground,.text-foreground\/60{color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.text-foreground\/60{color:color-mix(in oklab,var(--foreground) 60%,transparent)}}.text-muted-foreground{color:var(--muted-foreground)}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-secondary-foreground{color:var(--secondary-foreground)}.underline-offset-4{text-underline-offset:4px}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[color\,box-shadow\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.paused{animation-play-state:paused}.running{animation-play-state:running}.group-has-\[\>svg\]\/alert\:col-start-2:is(:where(.group\/alert):has(>svg) *){grid-column-start:2}.group-data-\[orientation\=horizontal\]\/tabs\:h-8:is(:where(.group\/tabs)[data-orientation=horizontal] *){height:calc(var(--spacing) * 8)}.group-data-\[orientation\=vertical\]\/tabs\:h-fit:is(:where(.group\/tabs)[data-orientation=vertical] *){height:fit-content}.group-data-\[orientation\=vertical\]\/tabs\:w-full:is(:where(.group\/tabs)[data-orientation=vertical] *){width:100%}.group-data-\[orientation\=vertical\]\/tabs\:flex-col:is(:where(.group\/tabs)[data-orientation=vertical] *){flex-direction:column}.group-data-\[orientation\=vertical\]\/tabs\:justify-start:is(:where(.group\/tabs)[data-orientation=vertical] *){justify-content:flex-start}.group-data-\[spacing\=0\]\/toggle-group\:rounded-none:is(:where(.group\/toggle-group)[data-spacing="0"] *){border-radius:0}.group-data-\[spacing\=0\]\/toggle-group\:px-2:is(:where(.group\/toggle-group)[data-spacing="0"] *){padding-inline:calc(var(--spacing) * 2)}.group-data-\[variant\=line\]\/tabs-list\:bg-transparent:is(:where(.group\/tabs-list)[data-variant=line] *){background-color:#0000}.file\:inline-flex::file-selector-button{display:inline-flex}.file\:h-6::file-selector-button{height:calc(var(--spacing) * 6)}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:text-foreground::file-selector-button{color:var(--foreground)}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:bg-foreground:after{content:var(--tw-content);background-color:var(--foreground)}.after\:opacity-0:after{content:var(--tw-content);opacity:0}.after\:transition-opacity:after{content:var(--tw-content);transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.group-data-\[orientation\=horizontal\]\/tabs\:after\:inset-x-0:is(:where(.group\/tabs)[data-orientation=horizontal] *):after{content:var(--tw-content);inset-inline:0}.group-data-\[orientation\=horizontal\]\/tabs\:after\:bottom-\[-5px\]:is(:where(.group\/tabs)[data-orientation=horizontal] *):after{content:var(--tw-content);bottom:-5px}.group-data-\[orientation\=horizontal\]\/tabs\:after\:h-0\.5:is(:where(.group\/tabs)[data-orientation=horizontal] *):after{content:var(--tw-content);height:calc(var(--spacing) * .5)}.group-data-\[orientation\=vertical\]\/tabs\:after\:inset-y-0:is(:where(.group\/tabs)[data-orientation=vertical] *):after{content:var(--tw-content);inset-block:0}.group-data-\[orientation\=vertical\]\/tabs\:after\:-right-1:is(:where(.group\/tabs)[data-orientation=vertical] *):after{content:var(--tw-content);right:calc(var(--spacing) * -1)}.group-data-\[orientation\=vertical\]\/tabs\:after\:w-0\.5:is(:where(.group\/tabs)[data-orientation=vertical] *):after{content:var(--tw-content);width:calc(var(--spacing) * .5)}@media(hover:hover){.hover\:bg-\[color-mix\(in_oklch\,var\(--secondary\)\,var\(--foreground\)_5\%\)\]:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-\[color-mix\(in_oklch\,var\(--secondary\)\,var\(--foreground\)_5\%\)\]:hover{background-color:color-mix(in oklch,var(--secondary),var(--foreground) 5%)}}.hover\:bg-destructive\/20:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-destructive\/20:hover{background-color:color-mix(in oklab,var(--destructive) 20%,transparent)}}.hover\:bg-muted:hover{background-color:var(--muted)}.hover\:bg-primary\/80:hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-primary\/80:hover{background-color:color-mix(in oklab,var(--primary) 80%,transparent)}}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:text-muted-foreground:hover{color:var(--muted-foreground)}.hover\:underline:hover{text-decoration-line:underline}}.focus\:z-10:focus,.focus-visible\:z-10:focus-visible{z-index:10}.focus-visible\:border-destructive\/40:focus-visible{border-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:border-destructive\/40:focus-visible{border-color:color-mix(in oklab,var(--destructive) 40%,transparent)}}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:ring-3:focus-visible,.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.focus-visible\:outline-1:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-ring:focus-visible{outline-color:var(--ring)}.active\:not-aria-\[haspopup\]\:translate-y-px:active:not([aria-haspopup]){--tw-translate-y:1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-input\/50:disabled{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.disabled\:bg-input\/50:disabled{background-color:color-mix(in oklab,var(--input) 50%,transparent)}}.disabled\:opacity-50:disabled{opacity:.5}:where([data-slot=button-group]) .in-data-\[slot\=button-group\]\:rounded-lg{border-radius:var(--radius)}.has-data-\[icon\=inline-end\]\:pr-1:has([data-icon=inline-end]){padding-right:var(--spacing)}.has-data-\[icon\=inline-end\]\:pr-1\.5:has([data-icon=inline-end]){padding-right:calc(var(--spacing) * 1.5)}.has-data-\[icon\=inline-end\]\:pr-2:has([data-icon=inline-end]){padding-right:calc(var(--spacing) * 2)}.group-data-\[spacing\=0\]\/toggle-group\:has-data-\[icon\=inline-end\]\:pr-1\.5:is(:where(.group\/toggle-group)[data-spacing="0"] *):has([data-icon=inline-end]){padding-right:calc(var(--spacing) * 1.5)}.has-data-\[icon\=inline-start\]\:pl-1:has([data-icon=inline-start]){padding-left:var(--spacing)}.has-data-\[icon\=inline-start\]\:pl-1\.5:has([data-icon=inline-start]){padding-left:calc(var(--spacing) * 1.5)}.has-data-\[icon\=inline-start\]\:pl-2:has([data-icon=inline-start]){padding-left:calc(var(--spacing) * 2)}.group-data-\[spacing\=0\]\/toggle-group\:has-data-\[icon\=inline-start\]\:pl-1\.5:is(:where(.group\/toggle-group)[data-spacing="0"] *):has([data-icon=inline-start]){padding-left:calc(var(--spacing) * 1.5)}.has-data-\[slot\=alert-action\]\:relative:has([data-slot=alert-action]){position:relative}.has-data-\[slot\=alert-action\]\:pr-18:has([data-slot=alert-action]){padding-right:calc(var(--spacing) * 18)}.has-data-\[slot\=kbd\]\:pr-1\.5:has([data-slot=kbd]){padding-right:calc(var(--spacing) * 1.5)}.has-\[\>svg\]\:grid-cols-\[auto_1fr\]:has(>svg){grid-template-columns:auto 1fr}.has-\[\>svg\]\:gap-x-2:has(>svg){column-gap:calc(var(--spacing) * 2)}.aria-expanded\:bg-muted[aria-expanded=true]{background-color:var(--muted)}.aria-expanded\:bg-secondary[aria-expanded=true]{background-color:var(--secondary)}.aria-expanded\:text-foreground[aria-expanded=true]{color:var(--foreground)}.aria-expanded\:text-secondary-foreground[aria-expanded=true]{color:var(--secondary-foreground)}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.aria-invalid\:ring-3[aria-invalid=true]{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.aria-pressed\:bg-muted[aria-pressed=true]{background-color:var(--muted)}.data-closed\:animate-out[data-closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-closed\:fade-out-0[data-closed]{--tw-exit-opacity:0}.data-closed\:zoom-out-95[data-closed]{--tw-exit-scale:.95}.data-horizontal\:h-2\.5[data-horizontal]{height:calc(var(--spacing) * 2.5)}.data-horizontal\:h-px[data-horizontal]{height:1px}.data-horizontal\:w-full[data-horizontal]{width:100%}.data-horizontal\:flex-col[data-horizontal]{flex-direction:column}.data-horizontal\:border-t[data-horizontal]{border-top-style:var(--tw-border-style);border-top-width:1px}.data-horizontal\:border-t-transparent[data-horizontal]{border-top-color:#0000}.data-open\:animate-in[data-open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-open\:fade-in-0[data-open]{--tw-enter-opacity:0}.data-open\:zoom-in-95[data-open]{--tw-enter-scale:.95}.data-vertical\:h-full[data-vertical]{height:100%}.data-vertical\:w-2\.5[data-vertical]{width:calc(var(--spacing) * 2.5)}.data-vertical\:w-px[data-vertical]{width:1px}.data-vertical\:flex-col[data-vertical]{flex-direction:column}.data-vertical\:items-stretch[data-vertical]{align-items:stretch}.data-vertical\:self-stretch[data-vertical]{align-self:stretch}.data-vertical\:border-l[data-vertical]{border-left-style:var(--tw-border-style);border-left-width:1px}.data-vertical\:border-l-transparent[data-vertical]{border-left-color:#0000}.data-\[orientation\=horizontal\]\:flex-col[data-orientation=horizontal]{flex-direction:column}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:calc(2*var(--spacing)*-1)}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:calc(2*var(--spacing))}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:calc(2*var(--spacing)*-1)}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:calc(2*var(--spacing))}.data-\[size\=sm\]\:rounded-\[min\(var\(--radius-md\)\,10px\)\][data-size=sm]{border-radius:min(var(--radius-md),10px)}:is(.\*\:data-\[slot\=alert-description\]\:text-destructive\/90>*)[data-slot=alert-description]{color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){:is(.\*\:data-\[slot\=alert-description\]\:text-destructive\/90>*)[data-slot=alert-description]{color:color-mix(in oklab,var(--destructive) 90%,transparent)}}:is(.\*\*\:data-\[slot\=kbd\]\:relative *)[data-slot=kbd]{position:relative}:is(.\*\*\:data-\[slot\=kbd\]\:isolate *)[data-slot=kbd]{isolation:isolate}:is(.\*\*\:data-\[slot\=kbd\]\:z-50 *)[data-slot=kbd]{z-index:50}:is(.\*\*\:data-\[slot\=kbd\]\:rounded-sm *)[data-slot=kbd]{border-radius:calc(var(--radius) - 4px)}.group-data-horizontal\/toggle-group\:data-\[spacing\=0\]\:first\:rounded-l-lg:is(:where(.group\/toggle-group)[data-horizontal] *)[data-spacing="0"]:first-child{border-top-left-radius:var(--radius);border-bottom-left-radius:var(--radius)}.group-data-vertical\/toggle-group\:data-\[spacing\=0\]\:first\:rounded-t-lg:is(:where(.group\/toggle-group)[data-vertical] *)[data-spacing="0"]:first-child{border-top-left-radius:var(--radius);border-top-right-radius:var(--radius)}.group-data-horizontal\/toggle-group\:data-\[spacing\=0\]\:last\:rounded-r-lg:is(:where(.group\/toggle-group)[data-horizontal] *)[data-spacing="0"]:last-child{border-top-right-radius:var(--radius);border-bottom-right-radius:var(--radius)}.group-data-vertical\/toggle-group\:data-\[spacing\=0\]\:last\:rounded-b-lg:is(:where(.group\/toggle-group)[data-vertical] *)[data-spacing="0"]:last-child{border-bottom-right-radius:var(--radius);border-bottom-left-radius:var(--radius)}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:var(--background)}.data-\[state\=active\]\:text-foreground[data-state=active]{color:var(--foreground)}.group-data-\[variant\=default\]\/tabs-list\:data-\[state\=active\]\:shadow-sm:is(:where(.group\/tabs-list)[data-variant=default] *)[data-state=active]{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.group-data-\[variant\=line\]\/tabs-list\:data-\[state\=active\]\:bg-transparent:is(:where(.group\/tabs-list)[data-variant=line] *)[data-state=active]{background-color:#0000}.group-data-\[variant\=line\]\/tabs-list\:data-\[state\=active\]\:shadow-none:is(:where(.group\/tabs-list)[data-variant=line] *)[data-state=active]{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.group-data-\[variant\=line\]\/tabs-list\:data-\[state\=active\]\:after\:opacity-100:is(:where(.group\/tabs-list)[data-variant=line] *)[data-state=active]:after{content:var(--tw-content);opacity:1}.data-\[state\=delayed-open\]\:animate-in[data-state=delayed-open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=delayed-open\]\:fade-in-0[data-state=delayed-open]{--tw-enter-opacity:0}.data-\[state\=delayed-open\]\:zoom-in-95[data-state=delayed-open]{--tw-enter-scale:.95}.data-\[state\=on\]\:bg-muted[data-state=on]{background-color:var(--muted)}.data-\[variant\=line\]\:rounded-none[data-variant=line]{border-radius:0}.group-data-horizontal\/toggle-group\:data-\[spacing\=0\]\:data-\[variant\=outline\]\:border-l-0:is(:where(.group\/toggle-group)[data-horizontal] *)[data-spacing="0"][data-variant=outline]{border-left-style:var(--tw-border-style);border-left-width:0}.group-data-vertical\/toggle-group\:data-\[spacing\=0\]\:data-\[variant\=outline\]\:border-t-0:is(:where(.group\/toggle-group)[data-vertical] *)[data-spacing="0"][data-variant=outline]{border-top-style:var(--tw-border-style);border-top-width:0}.group-data-horizontal\/toggle-group\:data-\[spacing\=0\]\:data-\[variant\=outline\]\:first\:border-l:is(:where(.group\/toggle-group)[data-horizontal] *)[data-spacing="0"][data-variant=outline]:first-child{border-left-style:var(--tw-border-style);border-left-width:1px}.group-data-vertical\/toggle-group\:data-\[spacing\=0\]\:data-\[variant\=outline\]\:first\:border-t:is(:where(.group\/toggle-group)[data-vertical] *)[data-spacing="0"][data-variant=outline]:first-child{border-top-style:var(--tw-border-style);border-top-width:1px}@media(min-width:48rem){.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.md\:text-pretty{text-wrap:pretty}}.dark\:border-input:is(.dark *){border-color:var(--input)}.dark\:bg-destructive\/20:is(.dark *){background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-destructive\/20:is(.dark *){background-color:color-mix(in oklab,var(--destructive) 20%,transparent)}}.dark\:bg-input\/30:is(.dark *){background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-input\/30:is(.dark *){background-color:color-mix(in oklab,var(--input) 30%,transparent)}}.dark\:text-muted-foreground:is(.dark *){color:var(--muted-foreground)}@media(hover:hover){.dark\:hover\:bg-destructive\/30:is(.dark *):hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-destructive\/30:is(.dark *):hover{background-color:color-mix(in oklab,var(--destructive) 30%,transparent)}}.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--input) 50%,transparent)}}.dark\:hover\:bg-muted\/50:is(.dark *):hover{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-muted\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--muted) 50%,transparent)}}.dark\:hover\:text-foreground:is(.dark *):hover{color:var(--foreground)}}.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:disabled\:bg-input\/80:is(.dark *):disabled{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:disabled\:bg-input\/80:is(.dark *):disabled{background-color:color-mix(in oklab,var(--input) 80%,transparent)}}.dark\:aria-invalid\:border-destructive\/50:is(.dark *)[aria-invalid=true]{border-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:aria-invalid\:border-destructive\/50:is(.dark *)[aria-invalid=true]{border-color:color-mix(in oklab,var(--destructive) 50%,transparent)}}.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:data-\[state\=active\]\:border-input:is(.dark *)[data-state=active]{border-color:var(--input)}.dark\:data-\[state\=active\]\:bg-input\/30:is(.dark *)[data-state=active]{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:data-\[state\=active\]\:bg-input\/30:is(.dark *)[data-state=active]{background-color:color-mix(in oklab,var(--input) 30%,transparent)}}.dark\:data-\[state\=active\]\:text-foreground:is(.dark *)[data-state=active]{color:var(--foreground)}.dark\:group-data-\[variant\=line\]\/tabs-list\:data-\[state\=active\]\:border-transparent:is(.dark *):is(:where(.group\/tabs-list)[data-variant=line] *)[data-state=active]{border-color:#0000}.dark\:group-data-\[variant\=line\]\/tabs-list\:data-\[state\=active\]\:bg-transparent:is(.dark *):is(:where(.group\/tabs-list)[data-variant=line] *)[data-state=active]{background-color:#0000}.\[\&_a\]\:underline a{text-decoration-line:underline}.\[\&_a\]\:underline-offset-3 a{text-underline-offset:3px}@media(hover:hover){.\[\&_a\]\:hover\:text-foreground a:hover{color:var(--foreground)}}.\[\&_p\:not\(\:last-child\)\]\:mb-4 p:not(:last-child){margin-bottom:calc(var(--spacing) * 4)}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3 svg:not([class*=size-]){width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3\.5 svg:not([class*=size-]){width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}@media(hover:hover){.\[a\]\:hover\:bg-destructive\/20:is(a):hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.\[a\]\:hover\:bg-destructive\/20:is(a):hover{background-color:color-mix(in oklab,var(--destructive) 20%,transparent)}}.\[a\]\:hover\:bg-muted:is(a):hover{background-color:var(--muted)}.\[a\]\:hover\:bg-primary\/80:is(a):hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.\[a\]\:hover\:bg-primary\/80:is(a):hover{background-color:color-mix(in oklab,var(--primary) 80%,transparent)}}.\[a\]\:hover\:bg-secondary\/80:is(a):hover{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){.\[a\]\:hover\:bg-secondary\/80:is(a):hover{background-color:color-mix(in oklab,var(--secondary) 80%,transparent)}}.\[a\]\:hover\:text-muted-foreground:is(a):hover{color:var(--muted-foreground)}}:is(.\*\:\[svg\]\:row-span-2>*):is(svg){grid-row:span 2/span 2}:is(.\*\:\[svg\]\:translate-y-0\.5>*):is(svg){--tw-translate-y:calc(var(--spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}:is(.\*\:\[svg\]\:text-current>*):is(svg){color:currentColor}:is(.\*\:\[svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4>*):is(svg:not([class*=size-])){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&\>svg\]\:pointer-events-none>svg{pointer-events:none}.\[\&\>svg\]\:size-3\!>svg{width:calc(var(--spacing) * 3)!important;height:calc(var(--spacing) * 3)!important}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}.init-shell{box-sizing:border-box;background:linear-gradient(var(--compass-grid) 1px,transparent 1px),linear-gradient(90deg,var(--compass-grid) 1px,transparent 1px),var(--background);height:100vh;min-height:100vh;color:var(--foreground);background-size:32px 32px;padding:clamp(28px,5vw,72px);overflow:auto}.init-header,.init-progress-header{justify-content:space-between;align-items:flex-end;gap:28px;width:min(1080px,100%);margin:0 auto clamp(26px,4vw,46px);display:flex}.init-eyebrow{color:var(--compass-focus);font:600 11px/1.3 var(--compass-font-mono);letter-spacing:.12em;text-transform:uppercase;margin:0 0 8px}.init-header h1,.init-progress-header h1,.init-result-card h1{color:var(--foreground);font:600 clamp(28px,4vw,44px)/1.08 var(--compass-font-sans);letter-spacing:-.035em;margin:0}.init-header-copy,.init-progress-header p:not(.init-eyebrow),.init-result-card>p:not(.init-eyebrow){max-width:650px;color:var(--muted-foreground);margin:13px 0 0;font-size:14px;line-height:1.65}.init-repository-badge{border:1px solid var(--compass-line);background:var(--vscode-editorWidget-background,var(--compass-panel));border-radius:5px;align-items:center;gap:11px;min-width:190px;max-width:320px;padding:11px 13px;display:flex}.init-repository-badge>svg{width:16px;color:var(--compass-focus)}.init-repository-badge span{min-width:0}.init-repository-badge small,.init-repository-badge strong{display:block}.init-repository-badge small{color:var(--compass-faint);font:10px/1.2 var(--compass-font-mono);text-transform:uppercase;margin-bottom:2px}.init-repository-badge strong{text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.init-layout{border:1px solid var(--compass-line-strong);background:var(--vscode-editorWidget-background,var(--compass-panel));width:min(1080px,100%);min-height:520px;box-shadow:0 22px 55px var(--vscode-widget-shadow,#0000003d);border-radius:7px;grid-template-columns:245px minmax(0,1fr);margin:0 auto;display:grid;overflow:hidden}.init-step-nav{border-right:1px solid var(--compass-line);background:var(--compass-panel);flex-direction:column;justify-content:space-between;min-width:0;padding:27px 20px 20px;display:flex}@supports (color:color-mix(in lab,red,red)){.init-step-nav{background:color-mix(in srgb,var(--compass-panel) 88%,var(--compass-canvas))}}.init-step-nav ol,.init-runway,.init-rule-list{margin:0;padding:0;list-style:none}.init-step-nav li{padding-bottom:10px;position:relative}.init-step-nav li:not(:last-child):after{background:var(--compass-line);content:"";width:1px;position:absolute;top:37px;bottom:-1px;left:22px}.init-step-nav li[data-state=complete]:after{background:var(--compass-success)}@supports (color:color-mix(in lab,red,red)){.init-step-nav li[data-state=complete]:after{background:color-mix(in srgb,var(--compass-success) 62%,var(--compass-line))}}.init-step-nav button{width:100%;color:var(--muted-foreground);text-align:left;background:0 0;border:0;border-radius:4px;align-items:center;gap:11px;padding:7px;display:flex}.init-step-nav button:not(:disabled):hover{background:var(--workbench-hover);color:var(--foreground)}.init-step-nav button:focus-visible{outline:2px solid var(--compass-focus);outline-offset:1px}.init-step-marker{z-index:1;border:1px solid var(--compass-line-strong);background:var(--compass-panel);border-radius:50%;flex:0 0 30px;place-items:center;width:30px;height:30px;display:grid}.init-step-marker svg{width:13px;height:13px}.init-step-nav li[data-state=active] button{color:var(--foreground)}.init-step-nav li[data-state=active] .init-step-marker{border-color:var(--compass-focus);background:var(--compass-focus-soft);color:var(--compass-focus);box-shadow:0 0 0 4px var(--compass-focus-soft)}.init-step-nav li[data-state=complete] .init-step-marker{border-color:var(--compass-success);color:var(--compass-success)}.init-step-nav button small,.init-step-nav button strong{display:block}.init-step-nav button small{color:var(--compass-faint);font:9px/1.2 var(--compass-font-mono);letter-spacing:.06em;text-transform:uppercase;margin-bottom:2px}.init-step-nav button strong{font-size:12px;font-weight:550}.init-local-note{border:1px solid var(--compass-line);background:var(--compass-focus);border-radius:5px;align-items:flex-start;gap:9px;padding:12px;display:flex}@supports (color:color-mix(in lab,red,red)){.init-local-note{background:color-mix(in srgb,var(--compass-focus) 6%,transparent)}}.init-local-note>svg{width:14px;color:var(--compass-focus);flex:0 0 14px}.init-local-note p{color:var(--muted-foreground);margin:0;font-size:10px;line-height:1.5}.init-local-note strong,.init-local-note code{display:block}.init-local-note strong{color:var(--foreground);margin-bottom:2px;font-size:10px}.init-local-note code{color:var(--compass-focus);font-family:var(--compass-font-mono);margin-top:4px}.init-stage{flex-direction:column;min-width:0;padding:clamp(28px,5vw,52px);display:flex}.init-stage-heading{align-items:flex-start;gap:16px;margin-bottom:28px;display:flex}.init-stage-heading>span{color:var(--compass-focus);font:600 11px/1 var(--compass-font-mono);padding-top:5px}.init-stage-heading h2{color:var(--foreground);font:600 clamp(21px,3vw,28px)/1.2 var(--compass-font-sans);letter-spacing:-.025em;margin:0}.init-stage-heading p{color:var(--muted-foreground);margin:8px 0 0;font-size:12px;line-height:1.55}.init-scope-grid,.init-fields{grid-template-columns:repeat(2,minmax(0,1fr));gap:13px;display:grid}.init-choice{border:1px solid var(--compass-line);background:var(--vscode-input-background,var(--background));cursor:pointer;border-radius:6px;align-items:flex-start;gap:12px;min-height:125px;padding:18px;display:flex;position:relative}.init-choice:hover{border-color:var(--compass-focus)}@supports (color:color-mix(in lab,red,red)){.init-choice:hover{border-color:color-mix(in srgb,var(--compass-focus) 48%,var(--compass-line))}}.init-choice[data-selected=true]{border-color:var(--compass-focus);background:var(--compass-focus-soft);box-shadow:inset 0 0 0 1px var(--compass-focus)}@supports (color:color-mix(in lab,red,red)){.init-choice[data-selected=true]{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--compass-focus) 30%,transparent)}}.init-choice input{opacity:0;width:1px;height:1px;position:absolute}.init-choice:has(input:focus-visible){outline:2px solid var(--compass-focus);outline-offset:2px}.init-choice-radio{width:20px;height:20px;color:var(--compass-faint);flex:0 0 20px;place-items:center;display:grid}.init-choice-radio svg{fill:#0000;width:16px}.init-choice[data-selected=true] .init-choice-radio svg{fill:var(--compass-focus);color:var(--compass-focus);stroke-width:4px}.init-choice strong,.init-choice small{display:block}.init-choice strong{color:var(--foreground);margin:1px 0 8px;font-size:13px}.init-choice small{color:var(--muted-foreground);font-size:11px;line-height:1.55}.init-scope-browser{border:1px solid var(--compass-line);background:var(--vscode-input-background,var(--background));border-radius:6px;margin-top:16px;overflow:hidden}.init-scope-browser>header{border-bottom:1px solid var(--compass-line);background:var(--compass-panel);justify-content:space-between;align-items:center;gap:16px;min-height:47px;padding:0 14px;display:flex}@supports (color:color-mix(in lab,red,red)){.init-scope-browser>header{background:color-mix(in srgb,var(--compass-panel) 84%,transparent)}}.init-scope-browser>header strong,.init-scope-browser>header small{display:block}.init-scope-browser>header strong{color:var(--foreground);margin-bottom:3px;font-size:11px}.init-scope-browser>header small{color:var(--compass-faint);font-size:9px}.init-scope-browser>header>span{border:1px solid var(--compass-focus);flex:none;padding:4px 7px}@supports (color:color-mix(in lab,red,red)){.init-scope-browser>header>span{border:1px solid color-mix(in srgb,var(--compass-focus) 45%,var(--compass-line))}}.init-scope-browser>header>span{background:var(--compass-focus-soft);color:var(--compass-focus);font:600 9px/1 var(--compass-font-mono);border-radius:999px}.init-scope-toolbar{border-bottom:1px solid var(--compass-line);align-items:center;gap:7px;height:35px;padding:0 10px;display:flex}.init-scope-toolbar>svg{width:13px;color:var(--compass-faint)}.init-scope-toolbar input{min-width:0;color:var(--foreground);font:10px/1.3 var(--compass-font-sans);background:0 0;border:0;outline:0;flex:1}.init-scope-toolbar input::placeholder{color:var(--vscode-input-placeholderForeground,var(--compass-faint))}.init-scope-toolbar:focus-within{box-shadow:inset 0 0 0 1px var(--compass-focus)}.init-scope-toolbar button,.init-scope-ledger button{width:22px;height:22px;color:var(--compass-faint);background:0 0;border:0;border-radius:3px;place-items:center;padding:0;display:grid}.init-scope-toolbar button:hover,.init-scope-ledger button:hover{background:var(--workbench-hover);color:var(--foreground)}.init-scope-toolbar button svg,.init-scope-ledger button svg{width:12px}.init-scope-body{grid-template-rows:minmax(0,1fr);grid-template-columns:minmax(0,1.45fr) minmax(180px,.8fr);height:clamp(230px,38vh,310px);min-height:0;display:grid;overflow:hidden}.init-scope-tree{overscroll-behavior:contain;border-right:1px solid var(--compass-line);scrollbar-gutter:stable;min-width:0;min-height:0;padding:6px 0;overflow:auto}.init-scope-tree:focus-visible{outline:2px solid var(--compass-focus);outline-offset:-2px}.init-scope-row{box-sizing:border-box;align-items:center;min-width:max-content;height:27px;padding-right:9px;display:flex}.init-scope-row:hover{background:var(--workbench-hover)}.init-scope-disclosure{width:20px;height:22px;color:var(--compass-faint);background:0 0;border:0;border-radius:3px;flex:0 0 20px;place-items:center;padding:0;display:grid}button.init-scope-disclosure:hover{color:var(--foreground)}.init-scope-disclosure svg{width:13px}.init-scope-row label{min-width:0;color:var(--muted-foreground);cursor:pointer;flex:1;align-items:center;gap:7px;font-size:10px;display:flex}.init-scope-row label input{width:13px;height:13px;accent-color:var(--compass-focus);margin:0}.init-scope-row label svg{width:13px;height:13px;color:var(--compass-focus)}.init-scope-row label span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.init-scope-ledger{overscroll-behavior:contain;background:var(--compass-panel);min-width:0;min-height:0;padding:10px;overflow:auto}@supports (color:color-mix(in lab,red,red)){.init-scope-ledger{background:color-mix(in srgb,var(--compass-panel) 73%,transparent)}}.init-scope-ledger{scrollbar-gutter:stable}.init-scope-ledger>div{padding:2px 3px 9px}.init-scope-ledger strong,.init-scope-ledger small{display:block}.init-scope-ledger strong{color:var(--foreground);margin-bottom:3px;font-size:10px}.init-scope-ledger small,.init-scope-ledger>p,.init-scope-empty,.init-scope-notice{color:var(--compass-faint);font-size:9px;line-height:1.45}.init-scope-ledger>p,.init-scope-empty{margin:8px 3px}.init-scope-ledger ul{margin:0;padding:0;list-style:none}.init-scope-ledger li{border-top:1px solid var(--compass-line);align-items:center;gap:5px;min-width:0;padding:4px 3px 4px 7px;display:flex}.init-scope-ledger code{min-width:0;color:var(--foreground);font:9px/1.4 var(--compass-font-mono);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.init-scope-notice{border-top:1px solid var(--compass-line);background:var(--compass-warning);margin:0;padding:7px 12px}@supports (color:color-mix(in lab,red,red)){.init-scope-notice{background:color-mix(in srgb,var(--compass-warning) 7%,transparent)}}.init-scope-notice{color:var(--compass-warning)}.init-facts{border:1px solid var(--compass-line);border-radius:5px;grid-template-columns:1.5fr 1fr 1fr;margin:22px 0 0;display:grid;overflow:hidden}.init-facts>div{background:var(--compass-panel);min-width:0;padding:11px 13px}@supports (color:color-mix(in lab,red,red)){.init-facts>div{background:color-mix(in srgb,var(--compass-panel) 82%,transparent)}}.init-facts>div:not(:last-child){border-right:1px solid var(--compass-line)}.init-facts dt,.init-review-row>span{color:var(--compass-faint);font:9px/1.2 var(--compass-font-mono);text-transform:uppercase}.init-facts dt{margin-bottom:4px}.init-facts dd{min-width:0;color:var(--muted-foreground);text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:10px;overflow:hidden}.init-facts code,.init-review-row code{font-family:var(--compass-font-mono)}.init-fields{gap:18px}.init-fields label>span{margin-bottom:9px;display:block}.init-fields label strong,.init-fields label small{display:block}.init-fields label strong{color:var(--foreground);margin-bottom:3px;font-size:12px}.init-fields label small{color:var(--compass-faint);font-size:10px}.init-fields textarea{box-sizing:border-box;resize:vertical;border:1px solid var(--vscode-input-border,var(--compass-line));background:var(--vscode-input-background,var(--background));width:100%;min-height:142px;color:var(--vscode-input-foreground,var(--foreground));font:11px/1.6 var(--compass-font-mono);border-radius:4px;outline:none;padding:11px 12px}.init-fields textarea::placeholder{color:var(--vscode-input-placeholderForeground,var(--compass-faint))}.init-fields textarea:focus{border-color:var(--compass-focus);outline:1px solid var(--compass-focus)}.init-fields textarea:disabled{opacity:.55;cursor:not-allowed}.init-validation{color:var(--destructive);margin:12px 0 0;font-size:11px}.init-stage-actions{justify-content:space-between;align-items:center;gap:10px;margin-top:auto;padding-top:30px;display:flex}.init-button{min-height:32px;font:500 12px/1.3 var(--compass-font-sans);border:1px solid #0000;border-radius:3px;justify-content:center;align-items:center;gap:8px;padding:6px 13px;display:inline-flex}.init-button svg{width:14px;height:14px}.init-button:focus-visible{outline:2px solid var(--compass-focus);outline-offset:2px}.init-button:disabled{opacity:.45;cursor:not-allowed}.init-button-primary{border-color:var(--vscode-button-border,transparent);background:var(--vscode-button-background,var(--primary));color:var(--vscode-button-foreground,var(--primary-foreground))}.init-button-primary:not(:disabled):hover{background:var(--vscode-button-hoverBackground,var(--primary))}.init-button-secondary{border-color:var(--compass-line);background:var(--vscode-button-secondaryBackground,var(--secondary));color:var(--vscode-button-secondaryForeground,var(--secondary-foreground))}.init-button-secondary:not(:disabled):hover,.init-button-quiet:hover{border-color:var(--compass-line-strong);background:var(--workbench-hover);color:var(--foreground)}.init-button-quiet{color:var(--muted-foreground);background:0 0}.init-button-build{min-width:170px}.init-review{border:1px solid var(--compass-line);border-radius:5px;overflow:hidden}.init-review-row{border-bottom:1px solid var(--compass-line);grid-template-columns:130px minmax(0,1fr);align-items:start;min-height:42px;display:grid}.init-review-row:last-child{border-bottom:0}.init-review-row>span{background:var(--compass-panel);align-self:stretch;padding:12px 13px}@supports (color:color-mix(in lab,red,red)){.init-review-row>span{background:color-mix(in srgb,var(--compass-panel) 76%,transparent)}}.init-review-row>div{min-width:0;color:var(--foreground);padding:11px 13px;font-size:11px}.init-review-row code{overflow-wrap:anywhere;color:var(--foreground)}.init-rule-default{color:var(--muted-foreground)}.init-rule-list{flex-wrap:wrap;gap:6px;display:flex}.init-rule-list li{border:1px solid var(--compass-line);background:var(--vscode-input-background,var(--background));border-radius:3px;padding:3px 7px}.init-build-callout{border-left:2px solid var(--compass-focus);background:var(--compass-focus-soft);align-items:flex-start;gap:12px;margin-top:16px;padding:13px 15px;display:flex}.init-build-callout>svg{width:17px;color:var(--compass-focus);flex:0 0 17px}.init-build-callout strong{color:var(--foreground);margin-bottom:3px;font-size:11px;display:block}.init-build-callout p{color:var(--muted-foreground);margin:0;font-size:10px;line-height:1.45}.init-replace-confirmation{border:1px solid var(--compass-warning);align-items:flex-start;gap:10px;margin-top:10px;padding:12px 14px;display:flex}@supports (color:color-mix(in lab,red,red)){.init-replace-confirmation{border:1px solid color-mix(in srgb,var(--compass-warning) 55%,var(--compass-line))}}.init-replace-confirmation{background:var(--compass-warning);border-radius:4px}@supports (color:color-mix(in lab,red,red)){.init-replace-confirmation{background:color-mix(in srgb,var(--compass-warning) 8%,transparent)}}.init-replace-confirmation{cursor:pointer}.init-replace-confirmation input{accent-color:var(--compass-focus);margin:2px 0 0}.init-replace-confirmation strong,.init-replace-confirmation small{display:block}.init-replace-confirmation strong{color:var(--compass-warning);margin-bottom:3px;font-size:11px}.init-replace-confirmation small{color:var(--muted-foreground);font-size:10px;line-height:1.45}.init-progress-shell{flex-direction:column;display:flex}.init-progress-header{align-items:center}.init-running-badge{border:1px solid var(--compass-focus);align-items:center;gap:7px;padding:6px 10px;display:inline-flex}@supports (color:color-mix(in lab,red,red)){.init-running-badge{border:1px solid color-mix(in srgb,var(--compass-focus) 46%,var(--compass-line))}}.init-running-badge{background:var(--compass-focus-soft);color:var(--compass-focus);font:600 10px/1 var(--compass-font-mono);text-transform:uppercase;border-radius:999px}.init-running-badge svg,.init-runway li[data-state=active] .init-runway-marker svg{animation:1.2s linear infinite init-spin}.init-progress-card{box-sizing:border-box;border:1px solid var(--compass-line-strong);background:var(--vscode-editorWidget-background,var(--compass-panel));width:min(880px,100%);box-shadow:0 22px 55px var(--vscode-widget-shadow,#0000003d);border-radius:7px;margin:auto;padding:clamp(26px,5vw,48px)}.init-progress-summary{justify-content:space-between;align-items:flex-end;gap:20px;display:flex}.init-progress-summary small,.init-progress-summary strong{display:block}.init-progress-summary small{color:var(--compass-faint);font:10px/1.2 var(--compass-font-mono);letter-spacing:.08em;text-transform:uppercase;margin-bottom:7px}.init-progress-summary strong{color:var(--foreground);font-size:18px;font-weight:580}.init-progress-summary>span{color:var(--compass-focus);font:600 24px/1 var(--compass-font-mono)}.init-progress-track{background:var(--foreground);border-radius:99px;height:7px;margin:18px 0 22px;position:relative;overflow:hidden}@supports (color:color-mix(in lab,red,red)){.init-progress-track{background:color-mix(in srgb,var(--foreground) 10%,transparent)}}.init-progress-track>span{border-radius:inherit;background:var(--workbench-progress);height:100%;box-shadow:0 0 15px var(--compass-focus);display:block}@supports (color:color-mix(in lab,red,red)){.init-progress-track>span{box-shadow:0 0 15px color-mix(in srgb,var(--compass-focus) 50%,transparent)}}.init-progress-track>span{transition:width .18s ease-out}.init-progress-track>span.is-indeterminate{width:28%;animation:1.35s ease-in-out infinite init-indeterminate}.init-current-file{border:1px solid var(--compass-line);background:var(--vscode-input-background,var(--compass-canvas));border-radius:5px;align-items:center;gap:12px;min-width:0;padding:13px 15px;display:flex}.init-current-file>svg{width:16px;color:var(--compass-focus);flex:0 0 16px}.init-current-file span{min-width:0}.init-current-file small,.init-current-file code{display:block}.init-current-file small{color:var(--compass-faint);font:9px/1 var(--compass-font-mono);text-transform:uppercase;margin-bottom:4px}.init-current-file code{color:var(--foreground);font:11px/1.4 var(--compass-font-mono);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.init-runway{grid-template-columns:repeat(3,minmax(0,1fr));margin-top:30px;display:grid}.init-runway li{align-items:flex-start;gap:10px;display:flex;position:relative}.init-runway li:not(:last-child):after{background:var(--compass-line);content:"";height:1px;position:absolute;top:13px;left:27px;right:8px}.init-runway li[data-state=complete]:after{background:var(--compass-success)}@supports (color:color-mix(in lab,red,red)){.init-runway li[data-state=complete]:after{background:color-mix(in srgb,var(--compass-success) 58%,var(--compass-line))}}.init-runway-marker{z-index:1;border:1px solid var(--compass-line-strong);background:var(--compass-panel);width:26px;height:26px;color:var(--compass-faint);border-radius:50%;flex:0 0 26px;place-items:center;display:grid}.init-runway-marker svg{width:12px;height:12px}.init-runway li[data-state=complete] .init-runway-marker{border-color:var(--compass-success);color:var(--compass-success)}.init-runway li[data-state=active] .init-runway-marker{border-color:var(--compass-focus);color:var(--compass-focus);box-shadow:0 0 0 4px var(--compass-focus-soft)}.init-runway li>span:last-child{min-width:0;padding-right:20px}.init-runway strong,.init-runway small{display:block}.init-runway strong{color:var(--foreground);margin:1px 0 4px;font-size:10px}.init-runway small{color:var(--compass-faint);font-size:9px;line-height:1.35}.init-progress-footer{box-sizing:border-box;justify-content:space-between;align-items:center;gap:20px;width:min(880px,100%);margin:22px auto 0;display:flex}.init-progress-footer p{color:var(--compass-faint);margin:0;font-size:10px}.init-result-shell{place-items:center;display:grid}.init-result-card{box-sizing:border-box;border:1px solid var(--compass-line-strong);background:var(--vscode-editorWidget-background,var(--compass-panel));width:min(580px,100%);box-shadow:0 22px 55px var(--vscode-widget-shadow,#0000003d);text-align:center;border-radius:7px;padding:clamp(32px,6vw,60px)}.init-result-icon{border:1px solid;border-radius:50%;place-items:center;width:54px;height:54px;margin:0 auto 22px;display:grid}.init-result-icon svg{width:24px}.init-result-icon-success{border-color:var(--compass-success);background:var(--compass-success)}@supports (color:color-mix(in lab,red,red)){.init-result-icon-success{background:color-mix(in srgb,var(--compass-success) 10%,transparent)}}.init-result-icon-success{color:var(--compass-success)}.init-result-icon-error{border-color:var(--destructive);background:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.init-result-icon-error{background:color-mix(in srgb,var(--destructive) 10%,transparent)}}.init-result-icon-error{color:var(--destructive)}.init-result-icon-cancelled{border-color:var(--compass-warning);background:var(--compass-warning)}@supports (color:color-mix(in lab,red,red)){.init-result-icon-cancelled{background:color-mix(in srgb,var(--compass-warning) 10%,transparent)}}.init-result-icon-cancelled{color:var(--compass-warning)}.init-result-card .init-eyebrow{text-align:center}.init-result-card>p:not(.init-eyebrow){margin-left:auto;margin-right:auto}.init-result-actions{flex-wrap:wrap;justify-content:center;gap:9px;margin-top:26px;display:flex}@keyframes init-spin{to{transform:rotate(360deg)}}@keyframes init-indeterminate{0%{transform:translate(-120%)}55%{transform:translate(180%)}to{transform:translate(320%)}}@media(max-width:760px){.init-shell{padding:24px 18px}.init-header,.init-progress-header{flex-direction:column;align-items:flex-start}.init-repository-badge{box-sizing:border-box;width:100%}.init-layout{grid-template-columns:1fr}.init-step-nav{border-right:0;border-bottom:1px solid var(--compass-line);padding:16px}.init-step-nav ol{grid-template-columns:repeat(3,1fr);display:grid}.init-step-nav li{padding:0}.init-step-nav li:not(:last-child):after{width:auto;height:1px;inset:22px -8px auto 37px}.init-step-nav button{flex-direction:column;align-items:flex-start}.init-step-nav button strong{font-size:10px}.init-local-note{display:none}.init-scope-grid,.init-fields{grid-template-columns:1fr}.init-scope-browser>header{flex-direction:column;align-items:flex-start;gap:8px;padding-block:10px}.init-scope-body{grid-template-rows:auto auto;grid-template-columns:1fr;height:auto;max-height:none;overflow:visible}.init-scope-tree{border-right:0;border-bottom:1px solid var(--compass-line);height:clamp(210px,42vh,300px);min-height:210px;max-height:none}.init-scope-ledger{max-height:150px}.init-facts{grid-template-columns:1fr}.init-facts>div:not(:last-child){border-right:0;border-bottom:1px solid var(--compass-line)}.init-review-row{grid-template-columns:95px minmax(0,1fr)}.init-runway{grid-template-columns:1fr;gap:13px}.init-runway li:not(:last-child):after{width:1px;height:auto;inset:26px auto -13px 13px}.init-progress-footer{flex-direction:column;align-items:flex-start}}@media(prefers-reduced-motion:reduce){.init-running-badge svg,.init-runway li[data-state=active] .init-runway-marker svg,.init-progress-track>span.is-indeterminate{animation:none}.init-progress-track>span{transition:none}}:root{color-scheme:light dark;--compass-font-sans:var(--vscode-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif);--compass-font-mono:var(--vscode-editor-font-family,"SFMono-Regular", Consolas, monospace);--background:var(--vscode-editor-background,#0d131d);--foreground:var(--vscode-editor-foreground,#d7e1ed);--card:var(--vscode-sideBar-background,#121b28);--card-foreground:var(--vscode-sideBar-foreground,#d7e1ed);--popover:var(--vscode-menu-background,#172231);--popover-foreground:var(--vscode-menu-foreground,#d7e1ed);--primary:var(--vscode-button-background,#2f81f7);--primary-foreground:var(--vscode-button-foreground,#fff);--secondary:var(--vscode-button-secondaryBackground,#263448);--secondary-foreground:var(--vscode-button-secondaryForeground,#d7e1ed);--muted:var(--vscode-list-inactiveSelectionBackground,#1d2938);--muted-foreground:var(--vscode-descriptionForeground,#93a4b8);--accent:var(--vscode-list-activeSelectionBackground,#264f78);--accent-foreground:var(--vscode-list-activeSelectionForeground,#fff);--destructive:var(--vscode-errorForeground,#f47067);--border:var(--vscode-panel-border,#2c3a4d);--input:var(--vscode-input-border,#3b4a5e);--ring:var(--vscode-focusBorder,#4f9cf9);--radius:.625rem;--compass-canvas:var(--vscode-editor-background,#08111f);--compass-canvas-deep:var(--compass-canvas)}@supports (color:color-mix(in lab,red,red)){:root{--compass-canvas-deep:color-mix(in srgb, var(--compass-canvas) 82%, #000)}}:root{--compass-panel:var(--vscode-sideBar-background,#101b2d);--compass-panel-raised:var(--vscode-menu-background,#142236)}@supports (color:color-mix(in lab,red,red)){:root{--compass-panel-raised:color-mix(in srgb, var(--vscode-menu-background,#142236) 88%, transparent)}}:root{--compass-line:var(--vscode-panel-border,#9ab2d329);--compass-line-strong:var(--vscode-contrastBorder,#9ab2d34d);--compass-focus:var(--vscode-focusBorder,#76b7ff);--compass-focus-soft:var(--compass-focus)}@supports (color:color-mix(in lab,red,red)){:root{--compass-focus-soft:color-mix(in srgb, var(--compass-focus) 14%, transparent)}}:root{--compass-faint:var(--vscode-disabledForeground,#60728b);--compass-grid:var(--foreground)}@supports (color:color-mix(in lab,red,red)){:root{--compass-grid:color-mix(in srgb, var(--foreground) 16%, transparent)}}:root{--compass-success:var(--vscode-testing-iconPassed,#3fb950);--compass-warning:var(--vscode-editorWarning-foreground,#d29922);--sidebar:var(--vscode-sideBar-background,var(--background));--sidebar-foreground:var(--vscode-sideBar-foreground,var(--foreground));--sidebar-accent:var(--vscode-list-activeSelectionBackground,var(--accent));--sidebar-accent-foreground:var(--vscode-list-activeSelectionForeground,var(--accent-foreground));--sidebar-primary:var(--vscode-focusBorder,var(--ring));--workbench-hover:var(--vscode-list-hoverBackground,var(--foreground))}@supports (color:color-mix(in lab,red,red)){:root{--workbench-hover:var(--vscode-list-hoverBackground,color-mix(in srgb, var(--foreground) 7%, transparent))}}:root{--workbench-hover-foreground:var(--vscode-list-hoverForeground,var(--foreground));--workbench-table-header:var(--vscode-editorStickyScroll-background,var(--background));--workbench-link:var(--vscode-textLink-foreground,var(--ring));--workbench-progress:var(--vscode-progressBar-background,var(--ring))}@media(prefers-color-scheme:light){:root{--background:var(--vscode-editor-background,#f7f9fc);--foreground:var(--vscode-editor-foreground,#172033);--card:var(--vscode-sideBar-background,#fff);--card-foreground:var(--vscode-sideBar-foreground,#172033);--popover:var(--vscode-menu-background,#fff);--popover-foreground:var(--vscode-menu-foreground,#172033);--primary:var(--vscode-button-background,#0969da);--primary-foreground:var(--vscode-button-foreground,#fff);--secondary:var(--vscode-button-secondaryBackground,#e8edf4);--secondary-foreground:var(--vscode-button-secondaryForeground,#172033);--muted:var(--vscode-list-inactiveSelectionBackground,#edf1f6);--muted-foreground:var(--vscode-descriptionForeground,#576579);--accent:var(--vscode-list-activeSelectionBackground,#dbeafe);--accent-foreground:var(--vscode-list-activeSelectionForeground,#172033);--border:var(--vscode-panel-border,#c8d1dc);--input:var(--vscode-input-border,#aeb9c8);--ring:var(--vscode-focusBorder,#0969da);--compass-canvas:var(--vscode-editor-background,#f4f7fb);--compass-canvas-deep:var(--compass-canvas)}@supports (color:color-mix(in lab,red,red)){:root{--compass-canvas-deep:color-mix(in srgb, var(--compass-canvas) 94%, #dbe3ed)}}:root{--compass-panel:var(--vscode-sideBar-background,#fff);--compass-panel-raised:var(--vscode-menu-background,#fff);--compass-line:var(--vscode-panel-border,#ccd6e1);--compass-line-strong:var(--vscode-contrastBorder,#9eacbd);--compass-faint:var(--vscode-disabledForeground,#68778a)}}body.vscode-light,body.vscode-high-contrast-light{color-scheme:light}body.vscode-dark,body.vscode-high-contrast{color-scheme:dark}.compass-source-notice{z-index:100;border:1px solid var(--compass-warning);max-width:min(420px,100vw - 32px);padding:12px 14px;position:fixed;bottom:16px;right:16px}@supports (color:color-mix(in lab,red,red)){.compass-source-notice{border:1px solid color-mix(in srgb,var(--compass-warning) 55%,var(--compass-line))}}.compass-source-notice{background:var(--compass-panel);border-radius:6px}@supports (color:color-mix(in lab,red,red)){.compass-source-notice{background:color-mix(in srgb,var(--compass-panel) 96%,transparent)}}.compass-source-notice{color:var(--foreground);font-size:13px;line-height:1.45;box-shadow:0 12px 32px #00000047}.visualization-workbench{background:var(--background);grid-template-columns:minmax(220px,268px) minmax(0,1fr);width:100vw;height:100vh;display:grid;overflow:hidden}.visualization-workbench[data-navigation-collapsed=true]{grid-template-columns:48px minmax(0,1fr)}.visualization-rail{border-right:1px solid var(--compass-line);background:linear-gradient(180deg,var(--compass-focus-soft),transparent 180px),var(--compass-panel);grid-template-rows:auto minmax(0,1fr) auto;min-width:0;display:grid}.visualization-rail>header{border-bottom:1px solid var(--compass-line);grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:11px;padding:18px 16px 16px;display:grid}.visualization-rail-disclosure{width:30px;height:30px;color:var(--muted-foreground);background:0 0;border:1px solid #0000;border-radius:3px;place-items:center;display:grid}.visualization-rail-disclosure:hover{border-color:var(--compass-line);background:var(--workbench-hover);color:var(--foreground)}.visualization-rail-disclosure svg{width:16px;height:16px}.visualization-rail[data-collapsed=true]>header{flex-direction:column;gap:9px;padding:12px 7px 10px;display:flex}.visualization-rail[data-collapsed=true]>header>span:nth-child(2),.visualization-rail[data-collapsed=true] nav button>span,.visualization-rail[data-collapsed=true] nav i,.visualization-rail[data-collapsed=true]>footer{display:none}.visualization-rail[data-collapsed=true] .visualization-bearing{width:30px;height:30px}.visualization-rail[data-collapsed=true] nav button{grid-template-columns:1fr;place-items:center;padding-inline:5px}.visualization-bearing{border:1px solid var(--compass-focus);place-items:center;width:34px;height:34px;display:grid}@supports (color:color-mix(in lab,red,red)){.visualization-bearing{border:1px solid color-mix(in srgb,var(--compass-focus) 48%,var(--border))}}.visualization-bearing{background:var(--compass-focus);border-radius:50%}@supports (color:color-mix(in lab,red,red)){.visualization-bearing{background:color-mix(in srgb,var(--compass-focus) 12%,transparent)}}.visualization-bearing{color:var(--compass-focus);box-shadow:inset 0 0 0 4px var(--compass-focus)}@supports (color:color-mix(in lab,red,red)){.visualization-bearing{box-shadow:inset 0 0 0 4px color-mix(in srgb,var(--compass-focus) 5%,transparent)}}.visualization-bearing svg{width:18px;height:18px}.visualization-rail header>span:nth-child(2),.visualization-rail nav button>span{gap:2px;min-width:0;display:grid}.visualization-rail header strong{letter-spacing:.02em;font-size:14px}.visualization-rail header small,.visualization-rail nav small{color:var(--muted-foreground);text-overflow:ellipsis;white-space:nowrap;font-size:10px;overflow:hidden}.visualization-rail nav{flex-direction:column;gap:3px;min-height:0;padding:10px 8px;display:flex;overflow:auto}.visualization-rail nav button{min-width:0;color:var(--foreground);text-align:left;background:0 0;border:1px solid #0000;border-radius:5px;grid-template-columns:24px minmax(0,1fr) 8px;align-items:center;gap:9px;padding:9px 8px;display:grid;position:relative}.visualization-rail nav button:hover{background:var(--workbench-hover)}.visualization-rail nav button[aria-current=page]{border-color:var(--compass-focus)}@supports (color:color-mix(in lab,red,red)){.visualization-rail nav button[aria-current=page]{border-color:color-mix(in srgb,var(--compass-focus) 28%,var(--border))}}.visualization-rail nav button[aria-current=page]{background:var(--compass-focus)}@supports (color:color-mix(in lab,red,red)){.visualization-rail nav button[aria-current=page]{background:color-mix(in srgb,var(--compass-focus) 13%,var(--compass-panel))}}.visualization-rail nav button[aria-current=page]{box-shadow:inset 2px 0 var(--compass-focus)}.visualization-rail nav svg{width:16px;height:16px;color:var(--muted-foreground)}.visualization-rail nav button[aria-current=page] svg{color:var(--compass-focus)}.visualization-rail nav strong{text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:600;overflow:hidden}.visualization-rail nav i{background:var(--compass-success);border-radius:50%;width:6px;height:6px}.visualization-rail nav i[data-status=summary]{background:var(--compass-warning)}.visualization-rail nav i[data-status=partial]{background:var(--destructive)}.visualization-rail>footer{border-top:1px solid var(--compass-line);color:var(--muted-foreground);justify-content:space-between;align-items:center;gap:10px;padding:11px 14px;font-size:10px;display:flex}.visualization-rail>footer code{color:var(--foreground);font-family:var(--compass-font-mono)}.visualization-main{grid-template-rows:49px minmax(0,1fr);min-width:0;min-height:0;display:grid}.visualization-context{border-bottom:1px solid var(--compass-line);background:var(--background);justify-content:space-between;align-items:center;gap:20px;min-width:0;padding:7px 14px 7px 16px;display:flex}@supports (color:color-mix(in lab,red,red)){.visualization-context{background:color-mix(in srgb,var(--background) 92%,var(--compass-panel))}}.visualization-context>div:first-child{gap:1px;min-width:0;display:grid}.visualization-context>div:first-child span{color:var(--muted-foreground);letter-spacing:.1em;text-transform:uppercase;font-size:9px;font-weight:650}.visualization-context>div:first-child strong{text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.visualization-coverage{color:var(--muted-foreground);align-items:center;gap:10px;font-size:10px;display:flex}.visualization-coverage strong{border:1px solid var(--compass-success);padding:3px 7px}@supports (color:color-mix(in lab,red,red)){.visualization-coverage strong{border:1px solid color-mix(in srgb,var(--compass-success) 36%,var(--border))}}.visualization-coverage strong{color:var(--compass-success);border-radius:999px;font-weight:600}.visualization-coverage[data-status=summary] strong{border-color:var(--compass-warning)}@supports (color:color-mix(in lab,red,red)){.visualization-coverage[data-status=summary] strong{border-color:color-mix(in srgb,var(--compass-warning) 42%,var(--border))}}.visualization-coverage[data-status=summary] strong{color:var(--compass-warning)}.visualization-coverage[data-status=partial] strong{border-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.visualization-coverage[data-status=partial] strong{border-color:color-mix(in srgb,var(--destructive) 42%,var(--border))}}.visualization-coverage[data-status=partial] strong{color:var(--destructive)}.visualization-stage,.workbench-graph-lens,.workbench-history-view,.workbench-architecture{min-width:0;height:100%;min-height:0}.workbench-architecture{grid-template-rows:39px minmax(0,1fr);display:grid}.workbench-graph-lens{position:relative}.workbench-graph-lens>.compass-workspace,.workbench-history-view .compass-workspace{height:100%;min-height:0}.visualization-stage .call-graph-view{height:100%}.visualization-stage .call-graph-direction{top:58px}.visualization-stage .call-graph-summary{max-height:min(42%,360px);overflow:auto}.workbench-filter-strip{border-bottom:1px solid var(--compass-line);background:var(--compass-panel);align-items:center;gap:7px;min-width:0;padding:5px 9px;display:flex;overflow-x:auto}.workbench-filter-strip label{color:var(--muted-foreground);white-space:nowrap;align-items:center;gap:5px;font-size:9px;display:flex}.workbench-filter-strip select{border:1px solid var(--input);background:var(--background);max-width:160px;height:27px;color:var(--foreground);font:inherit;border-radius:3px;padding:2px 22px 2px 7px;font-size:10px}.workbench-filter-strip>span{color:var(--muted-foreground);white-space:nowrap;margin-left:auto;font-size:9px}.compass-toolbar-leading{flex:none;align-items:center;min-width:0;display:flex}.workbench-filter-trigger{border:1px solid var(--compass-line);background:var(--vscode-dropdown-background,transparent);min-height:30px;color:var(--muted-foreground);cursor:pointer;font:inherit;white-space:nowrap;border-radius:3px;align-items:center;gap:6px;padding:0 8px;display:flex}.workbench-filter-trigger:hover,.workbench-filter-trigger[aria-expanded=true]{background:var(--workbench-hover);color:var(--foreground)}.workbench-filter-trigger:focus-visible{outline:2px solid var(--compass-focus);outline-offset:2px}.workbench-filter-trigger svg{width:15px;height:15px}.workbench-filter-trigger b{background:var(--compass-focus);min-width:17px;height:17px;color:var(--vscode-button-foreground,#fff);font:9px/1 var(--compass-font-mono);border-radius:9px;place-items:center;display:inline-grid}.workbench-filter-trigger small{color:var(--compass-faint);font:9px/1 var(--compass-font-mono)}.workbench-filter-popover{z-index:12;box-sizing:border-box;border:1px solid var(--compass-line-strong);background:var(--vscode-editorWidget-background,var(--compass-panel));width:min(310px,100%);max-height:calc(100vh - 84px);box-shadow:none;border-radius:5px;gap:10px;padding:12px;display:grid;position:absolute;top:calc(100% + 8px);right:6px;overflow-y:auto}.workbench-filter-popover>header{border-bottom:1px solid var(--compass-line);justify-content:space-between;align-items:flex-start;gap:12px;padding-bottom:9px;display:flex}.workbench-filter-popover>header span{gap:2px;display:grid}.workbench-filter-popover>header strong{font-size:11px}.workbench-filter-popover>header small,.workbench-filter-popover>footer{color:var(--compass-faint);font-size:10px}.workbench-filter-popover>header button{border:1px solid var(--compass-line);min-height:26px;color:var(--muted-foreground);white-space:nowrap;background:0 0;border-radius:3px;padding:0 7px;font-size:10px}.workbench-filter-popover>header button:disabled{opacity:.45}.workbench-filter-popover>label{color:var(--muted-foreground);grid-template-columns:88px minmax(0,1fr);align-items:center;gap:9px;font-size:10px;display:grid}.workbench-filter-popover select{border:1px solid var(--input);background:var(--vscode-dropdown-background,var(--background));width:100%;min-height:30px;color:var(--vscode-dropdown-foreground,var(--foreground));font:inherit;border-radius:3px;padding:2px 24px 2px 8px}.workbench-filter-popover select:focus-visible,.workbench-filter-popover button:focus-visible{outline:2px solid var(--compass-focus);outline-offset:2px}.workbench-filter-popover>footer{border-top:1px solid var(--compass-line);padding-top:8px}.workbench-graph-empty{z-index:3;box-sizing:border-box;border:1px solid var(--compass-line);background:var(--vscode-editorWidget-background,var(--compass-panel));width:min(360px,100% - 32px);color:var(--muted-foreground);text-align:center;border-radius:5px;justify-items:center;gap:7px;padding:18px;display:grid;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.workbench-graph-empty svg{width:24px;height:24px;color:var(--compass-faint);margin-bottom:3px}.workbench-graph-empty strong{color:var(--foreground);font-size:12px}.workbench-graph-empty span{max-width:290px;font-size:11px;line-height:1.45}.workbench-graph-empty button{border:1px solid var(--compass-line-strong);background:var(--vscode-button-background,var(--compass-focus));min-height:30px;color:var(--vscode-button-foreground,#fff);font:inherit;border-radius:3px;margin-top:5px;padding:0 10px;font-size:10px}.workbench-graph-empty button:hover{background:var(--vscode-button-hoverBackground,var(--compass-focus))}.workbench-graph-empty button:focus-visible{outline:2px solid var(--compass-focus);outline-offset:2px}.workbench-history-view{position:relative}.workbench-history-banner{z-index:24;border:1px solid var(--compass-line-strong);background:var(--compass-panel-raised);border-radius:5px;align-items:center;gap:9px;padding:8px 11px;display:flex;position:absolute;top:10px;left:50%;transform:translate(-50%);box-shadow:0 10px 28px #0000002e}.workbench-history-banner svg{width:17px;color:var(--compass-focus)}.workbench-history-banner span{gap:1px;display:grid}.workbench-history-banner strong{font-size:11px}.workbench-history-banner small{color:var(--muted-foreground);font-size:9px}.workbench-architecture-body{grid-template-columns:minmax(0,1fr) minmax(240px,310px);min-width:0;min-height:0;display:grid}.workbench-architecture-body>.architecture-map-panel{border:0;border-radius:0;min-width:0;height:100%;min-height:0}.workbench-architecture-body>aside{border-left:1px solid var(--compass-line);background:var(--compass-panel);min-width:0;padding:16px;overflow:auto}.workbench-architecture-body>aside>span{color:var(--muted-foreground);letter-spacing:.09em;text-transform:uppercase;font-size:9px;font-weight:650}.workbench-architecture-body>aside h2{margin:5px 0;font-size:15px}.workbench-architecture-body>aside p{color:var(--muted-foreground);font-size:10px;line-height:1.5}.workbench-symbol-list{gap:2px;margin-top:12px;display:grid}.workbench-symbol-list button{min-width:0;color:var(--foreground);text-align:left;background:0 0;border:1px solid #0000;border-radius:3px;gap:2px;padding:7px;display:grid}.workbench-symbol-list button:hover:not(:disabled){border-color:var(--border);background:var(--workbench-hover)}.workbench-symbol-list button:disabled{cursor:default}.workbench-symbol-list strong,.workbench-symbol-list small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.workbench-symbol-list strong{font-size:10px}.workbench-symbol-list small{color:var(--muted-foreground);font-size:9px}.visualization-workbench button:focus-visible,.visualization-workbench select:focus-visible{outline:1px solid var(--compass-focus);outline-offset:1px}@media(max-width:760px){.visualization-workbench{grid-template-columns:58px minmax(0,1fr)}.visualization-rail>header{flex-direction:column;justify-content:center;gap:9px;padding-inline:8px;display:flex}.visualization-rail header>span:nth-child(2),.visualization-rail nav button>span,.visualization-rail nav i,.visualization-rail>footer{display:none}.visualization-rail nav button{grid-template-columns:1fr;place-items:center;display:grid}.visualization-coverage>span{display:none}.workbench-architecture-body{grid-template-columns:minmax(0,1fr)}.workbench-architecture-body>aside{display:none}}@media(prefers-reduced-motion:no-preference){.visualization-rail nav button[aria-current=page]{animation:.18s ease-out compass-bearing}}@keyframes compass-bearing{0%{opacity:.7;transform:translate(-3px)}to{opacity:1;transform:translate(0)}}*{border-color:var(--border)}html,body,#root,#compass-viewer-root{min-height:100%;margin:0}body{background:var(--background);color:var(--foreground);font-family:var(--compass-font-sans);overflow:hidden}button:not(:disabled),[role=button]:not(:disabled){cursor:pointer}[data-slot=button],[data-slot=input],[data-slot=tabs-list],[data-slot=tabs-trigger]{border-radius:4px}.workbench-collection-toolbar{justify-content:space-between;align-items:center;gap:10px;min-width:0;display:flex}.workbench-search{flex:1;align-items:center;min-width:180px;max-width:540px;display:flex;position:relative}.workbench-search>svg{width:14px;height:14px;color:var(--vscode-input-placeholderForeground,var(--muted-foreground));pointer-events:none;position:absolute;left:8px}.workbench-search input{border:1px solid var(--vscode-input-border,var(--border));background:var(--vscode-input-background,var(--input));width:100%;height:30px;color:var(--vscode-input-foreground,var(--foreground));font:inherit;border-radius:3px;outline:none;padding:4px 30px 4px 29px;font-size:12px}.workbench-search input::placeholder{color:var(--vscode-input-placeholderForeground,var(--muted-foreground))}.workbench-search input:focus-visible{border-color:var(--ring);outline:1px solid var(--ring);outline-offset:-1px}.workbench-search-clear{width:24px;height:24px;color:var(--muted-foreground);background:0 0;border:0;border-radius:3px;place-items:center;display:grid;position:absolute;right:3px}.workbench-search-clear:hover{background:var(--workbench-hover);color:var(--workbench-hover-foreground)}.workbench-search-clear svg{width:13px;height:13px}.workbench-result-count,.workbench-pagination-range{color:var(--muted-foreground);white-space:nowrap;font-size:11px}.workbench-pagination{justify-content:space-between;align-items:center;gap:12px;min-height:36px;padding-top:8px;display:flex}.workbench-pagination-actions{color:var(--muted-foreground);align-items:center;gap:4px;font-size:11px;display:flex}.workbench-pagination-actions button{width:26px;height:26px;color:var(--foreground);background:0 0;border:1px solid #0000;border-radius:3px;place-items:center;display:grid}.workbench-pagination-actions button:hover:not(:disabled){border-color:var(--border);background:var(--workbench-hover)}.workbench-pagination-actions button:disabled{color:var(--vscode-disabledForeground,var(--compass-faint))}.workbench-pagination-actions svg{width:14px;height:14px}.workbench-state{width:min(520px,100% - 32px);min-height:180px;color:var(--muted-foreground);text-align:center;align-content:center;place-items:center;gap:12px;margin:auto;padding:24px;display:grid}.workbench-state>svg{width:28px;height:28px}.workbench-state[data-kind=error]>svg{color:var(--destructive)}.workbench-state h2{color:var(--foreground);margin:0;font-size:14px;font-weight:600}.workbench-state p{margin:5px 0 0;font-size:12px;line-height:1.55}.workbench-button{border:1px solid var(--vscode-button-border,transparent);background:var(--vscode-button-background,var(--primary));min-height:30px;color:var(--vscode-button-foreground,var(--primary-foreground));font:inherit;border-radius:3px;padding:4px 11px;font-size:12px}.workbench-button:hover{background:var(--vscode-button-hoverBackground,var(--primary))}.workbench-button:focus-visible,.workbench-search-clear:focus-visible,.workbench-pagination-actions button:focus-visible{outline:2px solid var(--ring);outline-offset:1px}.workbench-state-spinner{animation:1s linear infinite spin}.compass-load-shell{background:radial-gradient(circle at 50% 43%,var(--compass-focus),transparent 28%),radial-gradient(circle at 68% 62%,var(--compass-success),transparent 24%),linear-gradient(145deg,var(--compass-canvas) 0%,var(--compass-canvas-deep) 100%);place-content:center;min-height:100vh;padding:40px 24px;display:grid;position:relative;overflow:hidden}@supports (color:color-mix(in lab,red,red)){.compass-load-shell{background:radial-gradient(circle at 50% 43%,color-mix(in srgb,var(--compass-focus) 16%,transparent),transparent 28%),radial-gradient(circle at 68% 62%,color-mix(in srgb,var(--compass-success) 8%,transparent),transparent 24%),linear-gradient(145deg,var(--compass-canvas) 0%,var(--compass-canvas-deep) 100%)}}.compass-load-shell{text-align:center}.compass-load-shell:before{content:"";opacity:.18;background-image:radial-gradient(var(--compass-grid) .65px,transparent .65px);pointer-events:none;background-size:24px 24px;position:absolute;inset:0}.compass-load-visual{place-items:start center;width:92px;height:88px;margin:0 auto;display:grid;position:relative}.compass-load-mark{width:58px;height:58px;color:var(--compass-focus);place-items:center;display:grid;position:relative}.compass-load-logo{filter:drop-shadow(0 10px 22px);width:54px;height:54px}@supports (color:color-mix(in lab,red,red)){.compass-load-logo{filter:drop-shadow(0 10px 22px color-mix(in srgb,currentColor 24%,transparent))}}.compass-load-logo{transform-origin:50%;animation:2.4s ease-in-out infinite compass-load-logo-breathe}.compass-load-visual[data-state=error] .compass-load-mark{border:1px solid var(--destructive);width:48px;height:48px}@supports (color:color-mix(in lab,red,red)){.compass-load-visual[data-state=error] .compass-load-mark{border:1px solid color-mix(in srgb,var(--destructive) 66%,var(--compass-line))}}.compass-load-visual[data-state=error] .compass-load-mark{color:var(--destructive);box-shadow:0 18px 48px var(--destructive);border-radius:12px}@supports (color:color-mix(in lab,red,red)){.compass-load-visual[data-state=error] .compass-load-mark{box-shadow:0 18px 48px color-mix(in srgb,var(--destructive) 20%,transparent)}}.compass-load-visual[data-state=error] .compass-load-mark svg{width:22px;height:22px}.compass-load-copy{z-index:1;width:min(620px,100vw - 48px);position:relative}.compass-load-eyebrow{color:var(--compass-focus);letter-spacing:.16em;text-transform:uppercase;margin-bottom:10px;font-size:11px;font-weight:700;display:block}.compass-load-copy h1{color:var(--foreground);letter-spacing:-.035em;margin:0;font-size:clamp(24px,4vw,38px);font-weight:650;line-height:1.08}.compass-load-steps,.compass-load-error{color:var(--muted-foreground);margin:16px auto 0;font-size:13px;line-height:1.65}.compass-load-steps{flex-wrap:wrap;justify-content:center;gap:6px;display:flex}.compass-load-steps b{color:var(--compass-focus);font-weight:700}.compass-load-error{overflow-wrap:anywhere;max-width:560px}.compass-load-actions{flex-wrap:wrap;justify-content:center;gap:10px;margin-top:22px;display:flex}.compass-load-action{border:1px solid var(--compass-line-strong);background:var(--compass-panel-raised);min-height:38px;color:var(--foreground);font:inherit;border-radius:9px;outline:none;align-items:center;gap:8px;padding:0 14px;font-size:12px;display:inline-flex}.compass-load-action:hover{border-color:var(--compass-focus);background:var(--compass-focus-soft)}.compass-load-action-primary{border-color:var(--vscode-button-background,var(--compass-focus));background:var(--vscode-button-background,var(--compass-focus));color:var(--vscode-button-foreground,#fff)}.compass-load-action-primary:hover{background:var(--vscode-button-hoverBackground,var(--compass-focus))}.compass-load-action svg{width:15px;height:15px}@keyframes compass-load-logo-breathe{50%{opacity:.72;transform:scale(.94)}}.compass-load-shell{background:var(--vscode-editor-background,var(--background));grid-template-rows:auto auto;gap:18px}.compass-load-shell:before{display:none}.compass-load-visual{width:92px;height:88px;margin:0 auto}.compass-load-mark{color:var(--vscode-symbolIcon-classForeground,var(--vscode-progressBar-background,var(--compass-focus)));box-shadow:none}.compass-load-logo{filter:drop-shadow(0 9px 20px var(--vscode-progressBar-background,var(--workbench-progress)))}@supports (color:color-mix(in lab,red,red)){.compass-load-logo{filter:drop-shadow(0 9px 20px color-mix(in srgb,var(--vscode-progressBar-background,var(--workbench-progress)) 28%,transparent))}}.compass-load-progress{background:var(--vscode-progressBar-background,var(--workbench-progress));width:96px;height:2px;position:absolute;bottom:0;left:50%;overflow:hidden;transform:translate(-50%)}@supports (color:color-mix(in lab,red,red)){.compass-load-progress{background:var(--vscode-progressBar-background,color-mix(in srgb, var(--workbench-progress) 28%, transparent))}}.compass-load-progress i{background:var(--workbench-progress);width:45%;height:100%;animation:1.4s ease-in-out infinite compass-native-progress;display:block}@keyframes compass-native-progress{0%{transform:translate(-110%)}to{transform:translate(330%)}}.compass-load-copy{width:min(520px,100vw - 40px)}.compass-load-eyebrow{color:var(--muted-foreground);letter-spacing:.08em;margin-bottom:7px;font-size:10px}.compass-load-copy h1{letter-spacing:-.015em;font-size:clamp(19px,3vw,25px);font-weight:600;line-height:1.2}.compass-load-steps,.compass-load-error{margin-top:10px;font-size:12px}.compass-load-steps{gap:8px 14px}.compass-load-step{color:var(--vscode-disabledForeground,var(--muted-foreground));align-items:center;gap:6px;display:inline-flex}.compass-load-step>i{border:1px solid;border-radius:50%;width:6px;height:6px;display:block}.compass-load-step[data-state=complete]{color:var(--vscode-descriptionForeground,var(--muted-foreground))}.compass-load-step[data-state=complete]>i{border-color:var(--vscode-progressBar-background,var(--workbench-progress));background:var(--vscode-progressBar-background,var(--workbench-progress))}.compass-load-step[data-state=active]{color:var(--vscode-editor-foreground,var(--foreground))}.compass-load-step[data-state=active]>i{border-color:var(--vscode-progressBar-background,var(--workbench-progress));background:var(--vscode-progressBar-background,var(--workbench-progress));box-shadow:0 0 7px var(--vscode-progressBar-background,var(--workbench-progress))}@supports (color:color-mix(in lab,red,red)){.compass-load-step[data-state=active]>i{box-shadow:0 0 7px color-mix(in srgb,var(--vscode-progressBar-background,var(--workbench-progress)) 46%,transparent)}}.compass-load-action{background:var(--vscode-button-secondaryBackground,var(--secondary));min-height:30px;color:var(--vscode-button-secondaryForeground,var(--secondary-foreground));border-radius:3px;padding:0 11px}.compass-load-action-primary{background:var(--vscode-button-background,var(--primary));color:var(--vscode-button-foreground,var(--primary-foreground))}.compass-load-shell[data-variant=architecture]{text-align:left;grid-template-rows:auto auto;grid-template-columns:minmax(220px,390px) minmax(280px,560px);column-gap:clamp(24px,6vw,72px)}.compass-load-shell[data-variant=architecture] .compass-load-visual{grid-column:1;margin:0}.compass-load-shell[data-variant=architecture] .compass-load-copy{grid-column:1;width:auto}.compass-load-shell[data-variant=architecture] .compass-load-steps{justify-content:flex-start}.architecture-load-skeleton{border:1px solid var(--vscode-panel-border,var(--border));background:var(--vscode-editor-background,var(--background));border-radius:4px;grid-area:1/2/span 2;grid-template-rows:54px 1fr;grid-template-columns:92px 1fr;width:min(46vw,560px);height:min(46vh,360px);display:grid;overflow:hidden}.architecture-load-skeleton span{background-image:linear-gradient(90deg,transparent,var(--foreground),transparent)}@supports (color:color-mix(in lab,red,red)){.architecture-load-skeleton span{background-image:linear-gradient(90deg,transparent,color-mix(in srgb,var(--foreground) 7%,transparent),transparent)}}.architecture-load-skeleton span{background-size:220% 100%;animation:1.8s ease-in-out infinite compass-skeleton}.architecture-load-rail{border-right:1px solid var(--border);background-color:var(--vscode-sideBar-background,var(--sidebar));grid-row:1/span 2}.architecture-load-flow{border-bottom:1px solid var(--border)}.architecture-load-content{border:1px solid var(--border);border-radius:3px;margin:14px}@keyframes compass-skeleton{to{background-position:-220% 0}}.compass-workspace{isolation:isolate;background:var(--compass-canvas);height:100vh;min-height:30rem;position:relative;overflow:hidden}.compass-workspace-content{grid-template-columns:minmax(0,1fr) 8px var(--compass-inspector-width,340px);width:100%;height:100%;min-height:inherit;display:grid;overflow:hidden}.compass-workspace-content[data-inspector-collapsed=true]{grid-template-columns:minmax(0,1fr) 48px}.compass-graph-transition{z-index:30;background:var(--vscode-editor-background,var(--background));color:var(--foreground);text-align:center;grid-template-rows:auto auto;place-content:center;gap:18px;padding:40px 24px;display:grid;position:absolute;inset:0;overflow:hidden}.compass-graph-transition .compass-load-copy{width:min(520px,100vw - 40px)}.compass-graph-transition-description{max-width:470px;color:var(--vscode-descriptionForeground,var(--muted-foreground));margin:10px auto 0;font-size:12px;line-height:1.6}.compass-graph-transition .compass-load-action:focus-visible{outline:2px solid var(--vscode-focusBorder,var(--ring));outline-offset:2px}.compass-graph-stage{background:radial-gradient(circle at 45% 42%,var(--compass-focus),transparent 34%),radial-gradient(circle at 76% 75%,var(--compass-success),transparent 28%),linear-gradient(145deg,var(--compass-canvas) 0%,var(--compass-canvas-deep) 100%);min-width:0;min-height:0;position:relative;overflow:hidden}@supports (color:color-mix(in lab,red,red)){.compass-graph-stage{background:radial-gradient(circle at 45% 42%,color-mix(in srgb,var(--compass-focus) 21%,transparent),transparent 34%),radial-gradient(circle at 76% 75%,color-mix(in srgb,var(--compass-success) 10%,transparent),transparent 28%),linear-gradient(145deg,var(--compass-canvas) 0%,var(--compass-canvas-deep) 100%)}}.compass-graph-stage:after{content:"";pointer-events:none;opacity:.16;background-image:radial-gradient(var(--compass-grid) .55px,transparent .55px);background-size:22px 22px;position:absolute;inset:0}.compass-graph-stage[data-comparison=true]{background:var(--vscode-editor-background,var(--compass-canvas))}.compass-graph-stage[data-comparison=true]:after{opacity:.09}.compass-canvas{z-index:1;min-width:0;min-height:0;position:absolute;inset:0}.compass-glass-panel{background:var(--vscode-editorWidget-background,var(--compass-panel));border:1px solid var(--compass-line);box-shadow:none;-webkit-backdrop-filter:none}.compass-graph-toolbar{z-index:4;border-radius:4px;justify-content:space-between;align-items:center;gap:10px;min-height:42px;padding:5px 6px 5px 10px;display:flex;position:absolute;top:12px;left:12px;right:12px}.compass-viewer-status{min-width:0;color:var(--muted-foreground);letter-spacing:.015em;align-items:center;gap:10px;font-size:12px;display:flex}.compass-viewer-status-text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.compass-viewer-status-dot{background:var(--compass-focus);width:8px;height:8px;box-shadow:0 0 0 4px var(--compass-focus);border-radius:50%;flex:none}@supports (color:color-mix(in lab,red,red)){.compass-viewer-status-dot{box-shadow:0 0 0 4px color-mix(in srgb,var(--compass-focus) 12%,transparent)}}.compass-viewer-status[data-state=running] .compass-viewer-status-dot{animation:1.6s ease-in-out infinite compass-status-pulse}@keyframes compass-status-pulse{50%{box-shadow:0 0 0 8px color-mix(in srgb,var(--compass-focus) 0%,transparent)}}.compass-toolbar-actions{scrollbar-width:none;align-items:center;gap:6px;min-width:0;display:flex;overflow-x:auto}.compass-physics-button{border-color:var(--compass-line);background:var(--vscode-dropdown-background,transparent)}.compass-physics-button[aria-pressed=true]{border-color:var(--compass-focus)}@supports (color:color-mix(in lab,red,red)){.compass-physics-button[aria-pressed=true]{border-color:color-mix(in srgb,var(--compass-focus) 55%,var(--compass-line))}}.compass-physics-button[aria-pressed=true]{background:var(--compass-focus)}@supports (color:color-mix(in lab,red,red)){.compass-physics-button[aria-pressed=true]{background:color-mix(in srgb,var(--compass-focus) 13%,transparent)}}.compass-physics-button[aria-pressed=true]{color:var(--foreground)}.compass-toolbar-actions::-webkit-scrollbar{display:none}.compass-toolbar-separator{background:var(--compass-line);flex:none;width:1px;height:18px}.compass-zoom-controls{border:1px solid var(--compass-line);background:var(--vscode-dropdown-background,transparent);border-radius:3px;flex:none;min-height:30px;display:inline-flex;overflow:hidden}.compass-zoom-controls .compass-tool-button{border:0;border-radius:0;min-height:28px}.compass-zoom-controls .compass-tool-button+.compass-tool-button{border-left:1px solid var(--compass-line)}.compass-layout-picker{border:1px solid var(--compass-line);min-height:30px;color:var(--muted-foreground);background:var(--vscode-dropdown-background,transparent);border-radius:3px;align-items:center;gap:6px;padding-left:8px;display:inline-flex}.compass-layout-picker svg{flex:none;width:15px;height:15px}.compass-layout-picker select{min-height:28px;color:var(--vscode-dropdown-foreground,var(--foreground));font:inherit;background:0 0;border:0;outline:0;padding:0 24px 0 0}.compass-layout-picker:focus-within{outline:1px solid var(--vscode-focusBorder,var(--compass-focus));outline-offset:1px}.compass-tool-button:disabled{cursor:default;opacity:.55}.compass-tool-button{min-height:30px;color:var(--muted-foreground);white-space:nowrap;background:0 0;border:1px solid #0000;border-radius:3px;align-items:center;gap:7px;padding:0 8px;transition:none;display:inline-flex}.compass-tool-button svg{width:15px;height:15px}.compass-tool-icon-button{flex:0 0 30px;justify-content:center;width:30px;padding:0}.compass-zoom-reset{min-width:42px;color:var(--compass-faint);font:9px/1 var(--compass-font-mono);letter-spacing:.02em;justify-content:center;padding:0 7px}.compass-tool-button:hover,.compass-tool-button[aria-pressed=true]{border-color:var(--compass-line);background:var(--workbench-hover);color:var(--foreground)}.compass-tool-button:focus-visible,.compass-explore-panel button:focus-visible,.compass-explore-panel select:focus-visible,.compass-minimap button:focus-visible,.compass-change-legend button:focus-visible,.compass-search-field input:focus-visible,.compass-search-item:focus-visible,.compass-inspector-action:focus-visible,.compass-source-card:focus-visible,.compass-inspector-disclosure:focus-visible,.compass-inspector-resizer:focus-visible,.compass-load-action:focus-visible,.compass-neighbor-link:focus-visible,.compass-community-item:focus-within{outline:2px solid var(--compass-focus);outline-offset:2px}.compass-explore-panel{z-index:8;width:min(330px,100vw - 24px);max-height:calc(100vh - 84px);color:var(--foreground);border-radius:5px;gap:10px;padding:12px;display:grid;position:absolute;top:calc(100% + 7px);right:0;overflow-y:auto}.compass-explore-heading{border-bottom:1px solid var(--compass-line);justify-content:space-between;align-items:flex-start;gap:16px;padding-bottom:10px;display:flex}.compass-explore-heading>div{gap:3px;display:grid}.compass-explore-heading strong,.compass-explore-toggle strong,.compass-shortcut-title strong{letter-spacing:.02em;font-size:11px;font-weight:600}.compass-explore-heading span,.compass-explore-toggle small{color:var(--compass-faint);font-size:10px;line-height:1.35}.compass-selection-prompt{border:1px solid var(--compass-focus);grid-template-columns:18px minmax(0,1fr);align-items:start;gap:9px;padding:9px;display:grid}@supports (color:color-mix(in lab,red,red)){.compass-selection-prompt{border:1px solid color-mix(in srgb,var(--compass-focus) 28%,var(--compass-line))}}.compass-selection-prompt{background:var(--compass-focus);border-radius:4px}@supports (color:color-mix(in lab,red,red)){.compass-selection-prompt{background:color-mix(in srgb,var(--compass-focus) 7%,transparent)}}.compass-selection-prompt{color:var(--muted-foreground)}.compass-selection-prompt>svg{width:16px;height:16px;color:var(--compass-focus)}.compass-selection-prompt>span{gap:3px;display:grid}.compass-selection-prompt strong{color:var(--foreground);font-size:10px}.compass-selection-prompt small{color:var(--compass-faint);font-size:10px;line-height:1.4}.compass-explore-panel kbd{border:1px solid var(--compass-line);border-bottom-color:var(--compass-line);justify-content:center;align-items:center;min-width:20px;min-height:19px;padding:0 5px;display:inline-flex}@supports (color:color-mix(in lab,red,red)){.compass-explore-panel kbd{border-bottom-color:color-mix(in srgb,var(--compass-line) 72%,var(--foreground))}}.compass-explore-panel kbd{background:var(--vscode-keybindingLabel-background,var(--workbench-hover));color:var(--vscode-keybindingLabel-foreground,var(--foreground));font:9px/1 var(--compass-font-mono);border-radius:3px}.compass-explore-toggle{width:100%;color:var(--muted-foreground);text-align:left;background:0 0;border:1px solid #0000;border-radius:4px;grid-template-columns:18px minmax(0,1fr) 28px;align-items:center;gap:9px;padding:7px 8px;display:grid}.compass-explore-toggle:hover,.compass-explore-toggle[aria-pressed=true]{border-color:var(--compass-line);background:var(--workbench-hover);color:var(--foreground)}.compass-explore-toggle:disabled{cursor:default;opacity:.5}.compass-explore-toggle>svg{width:16px;height:16px}.compass-explore-toggle>span{gap:2px;min-width:0;display:grid}.compass-explore-toggle>i{border:1px solid var(--compass-line);background:var(--compass-canvas-deep);border-radius:8px;width:26px;height:14px;position:relative}.compass-explore-toggle>i:after{content:"";background:var(--compass-faint);border-radius:50%;width:8px;height:8px;position:absolute;top:2px;left:2px}.compass-explore-toggle[aria-pressed=true]>i{border-color:var(--compass-focus)}@supports (color:color-mix(in lab,red,red)){.compass-explore-toggle[aria-pressed=true]>i{border-color:color-mix(in srgb,var(--compass-focus) 65%,var(--compass-line))}}.compass-explore-toggle[aria-pressed=true]>i{background:var(--compass-focus)}@supports (color:color-mix(in lab,red,red)){.compass-explore-toggle[aria-pressed=true]>i{background:color-mix(in srgb,var(--compass-focus) 24%,var(--compass-canvas-deep))}}.compass-explore-toggle[aria-pressed=true]>i:after{background:var(--compass-focus);left:14px}.compass-explore-field{border:0;gap:6px;min-width:0;margin:0;padding:0;display:grid}.compass-explore-field:disabled{opacity:.5}.compass-explore-field legend,.compass-explore-select>span{color:var(--compass-faint);letter-spacing:.08em;text-transform:uppercase;margin-bottom:6px;font-size:9px;font-weight:600}.compass-segmented-control{border:1px solid var(--compass-line);border-radius:4px;grid-auto-columns:1fr;grid-auto-flow:column;display:grid;overflow:hidden}.compass-segmented-control button{min-height:28px;color:var(--compass-faint);font:10px/1 var(--compass-font-mono);background:0 0;border:0}.compass-segmented-control button+button{border-left:1px solid var(--compass-line)}.compass-segmented-control button:hover,.compass-segmented-control button[aria-pressed=true]{background:var(--workbench-hover);color:var(--foreground)}.compass-segmented-control button[aria-pressed=true]{box-shadow:inset 0 -2px var(--compass-focus)}.compass-explore-select{display:grid}.compass-explore-select select{border:1px solid var(--compass-line);background:var(--vscode-dropdown-background,var(--compass-canvas-deep));min-height:30px;color:var(--vscode-dropdown-foreground,var(--foreground));border-radius:4px;padding:0 28px 0 8px;font-size:10px}.compass-shortcut-guide{border-top:1px solid var(--compass-line);gap:9px;padding-top:10px;display:grid}.compass-shortcut-title{color:var(--muted-foreground);align-items:center;gap:7px;display:flex}.compass-shortcut-title svg{width:15px;height:15px}.compass-shortcut-guide dl{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px 14px;margin:0;display:grid}.compass-shortcut-guide dl>div{grid-template-columns:52px minmax(0,1fr);align-items:center;gap:5px;display:grid}.compass-shortcut-guide dt,.compass-shortcut-guide dd{margin:0}.compass-shortcut-guide dt{gap:3px;display:flex}.compass-shortcut-guide dd{color:var(--compass-faint);font-size:9px}.compass-minimap{z-index:3;border-radius:4px;width:178px;position:absolute;bottom:12px;right:12px;overflow:hidden}.compass-minimap header{border-bottom:1px solid var(--compass-line);min-height:26px;color:var(--muted-foreground);font:9px/1 var(--compass-font-mono);letter-spacing:.08em;text-transform:uppercase;justify-content:space-between;align-items:center;padding:0 8px;display:flex}.compass-minimap header small{color:var(--compass-faint);font:inherit;letter-spacing:0;text-transform:none}.compass-minimap button{background:var(--compass-canvas);border:0;width:100%;height:108px;padding:0;display:block}@supports (color:color-mix(in lab,red,red)){.compass-minimap button{background:color-mix(in srgb,var(--compass-canvas) 90%,transparent)}}.compass-minimap button{color:var(--compass-faint)}.compass-minimap svg{width:100%;height:100%;display:block}.compass-minimap-edges line{stroke:var(--compass-line);stroke-width:.65px;vector-effect:non-scaling-stroke}.compass-minimap-nodes circle[data-focused=true]{stroke:var(--foreground);stroke-width:1.25px;vector-effect:non-scaling-stroke}.compass-minimap-viewport{fill:var(--compass-focus)}@supports (color:color-mix(in lab,red,red)){.compass-minimap-viewport{fill:color-mix(in srgb,var(--compass-focus) 8%,transparent)}}.compass-minimap-viewport{stroke:var(--compass-focus);stroke-width:1px;vector-effect:non-scaling-stroke}.compass-changed-symbols button:focus-visible,.compass-evidence-source-actions button:focus-visible,.compass-relationship-detail>button:focus-visible{outline:2px solid var(--compass-focus);outline-offset:2px}.compass-change-legend{z-index:4;border:1px solid var(--compass-line);background:var(--vscode-editorWidget-background,var(--compass-panel));border-radius:4px;flex-wrap:wrap;gap:5px;max-width:calc(100% - 24px);padding:5px;display:flex;position:absolute;top:64px;left:12px}.compass-change-legend button{min-height:27px;color:var(--muted-foreground);background:0 0;border:1px solid #0000;border-radius:3px;align-items:center;gap:6px;padding:3px 7px;font-size:10px;display:inline-flex}.compass-change-legend button:hover,.compass-change-legend button[aria-pressed=true]{border-color:var(--compass-line);background:var(--workbench-hover);color:var(--foreground)}.compass-change-legend button[aria-pressed=false]{opacity:.42}.compass-change-legend button>span{border:1px solid var(--vscode-descriptionForeground,#6e7781);background:var(--vscode-descriptionForeground,#6e7781);border-radius:50%;width:8px;height:8px}@supports (color:color-mix(in lab,red,red)){.compass-change-legend button>span{background:color-mix(in srgb,var(--vscode-descriptionForeground,#6e7781) 18%,var(--vscode-editor-background,var(--background)))}}.compass-change-legend button[data-change=added]>span{border-color:var(--vscode-gitDecoration-addedResourceForeground,#2ea043);background:var(--vscode-gitDecoration-addedResourceForeground,#2ea043)}@supports (color:color-mix(in lab,red,red)){.compass-change-legend button[data-change=added]>span{background:color-mix(in srgb,var(--vscode-gitDecoration-addedResourceForeground,#2ea043) 22%,var(--vscode-editor-background,var(--background)))}}.compass-change-legend button[data-change=removed]>span{border-color:var(--vscode-gitDecoration-deletedResourceForeground,#f85149);background:var(--vscode-gitDecoration-deletedResourceForeground,#f85149)}@supports (color:color-mix(in lab,red,red)){.compass-change-legend button[data-change=removed]>span{background:color-mix(in srgb,var(--vscode-gitDecoration-deletedResourceForeground,#f85149) 22%,var(--vscode-editor-background,var(--background)))}}.compass-change-legend button[data-change=changed]>span{border-color:var(--vscode-gitDecoration-modifiedResourceForeground,#d29922);background:var(--vscode-gitDecoration-modifiedResourceForeground,#d29922)}@supports (color:color-mix(in lab,red,red)){.compass-change-legend button[data-change=changed]>span{background:color-mix(in srgb,var(--vscode-gitDecoration-modifiedResourceForeground,#d29922) 22%,var(--vscode-editor-background,var(--background)))}}.compass-change-legend button small{color:var(--compass-faint);font:9px/1 var(--compass-font-mono)}.compass-semantic-legend{z-index:4;border:1px solid var(--compass-line);background:var(--vscode-editorWidget-background,var(--compass-panel));max-width:calc(100% - 24px);color:var(--muted-foreground);border-radius:4px;flex-wrap:wrap;gap:5px 12px;padding:7px 8px;font-size:10px;display:flex;position:absolute;top:64px;left:12px}.compass-semantic-legend section{flex-wrap:wrap;align-items:center;gap:5px 9px;min-height:20px;display:flex}.compass-semantic-legend section+section{border-left:1px solid var(--compass-line);padding-left:12px}.compass-semantic-legend strong{color:var(--compass-faint);font:9px/1 var(--compass-font-mono);letter-spacing:.08em;text-transform:uppercase}.compass-semantic-legend-item{white-space:nowrap;align-items:center;gap:5px;display:inline-flex}.compass-semantic-legend-item small{color:var(--compass-faint);font:9px/1 var(--compass-font-mono)}.compass-semantic-legend-item i[data-node-category]{border:1.5px solid var(--vscode-descriptionForeground,#8b949e);background:var(--vscode-descriptionForeground,#8b949e);width:9px;height:9px;display:inline-block}@supports (color:color-mix(in lab,red,red)){.compass-semantic-legend-item i[data-node-category]{background:color-mix(in srgb,var(--vscode-descriptionForeground,#8b949e) 22%,var(--vscode-editor-background,var(--background)))}}.compass-semantic-legend-item i[data-node-category=callable]{border-color:var(--vscode-symbolIcon-functionForeground,#5fa8ff);background:var(--vscode-symbolIcon-functionForeground,#5fa8ff);border-radius:50%}@supports (color:color-mix(in lab,red,red)){.compass-semantic-legend-item i[data-node-category=callable]{background:color-mix(in srgb,var(--vscode-symbolIcon-functionForeground,#5fa8ff) 22%,var(--vscode-editor-background,var(--background)))}}.compass-semantic-legend-item i[data-node-category=type]{border-color:var(--vscode-symbolIcon-classForeground,#e3b341);background:var(--vscode-symbolIcon-classForeground,#e3b341)}@supports (color:color-mix(in lab,red,red)){.compass-semantic-legend-item i[data-node-category=type]{background:color-mix(in srgb,var(--vscode-symbolIcon-classForeground,#e3b341) 22%,var(--vscode-editor-background,var(--background)))}}.compass-semantic-legend-item i[data-node-category=type]{transform:rotate(45deg)scale(.82)}.compass-semantic-legend-item i[data-node-category=module]{border-color:var(--vscode-symbolIcon-moduleForeground,#56d4b4);background:var(--vscode-symbolIcon-moduleForeground,#56d4b4);border-radius:1px}@supports (color:color-mix(in lab,red,red)){.compass-semantic-legend-item i[data-node-category=module]{background:color-mix(in srgb,var(--vscode-symbolIcon-moduleForeground,#56d4b4) 22%,var(--vscode-editor-background,var(--background)))}}.compass-semantic-legend-item i[data-node-category=boundary]{background:var(--vscode-symbolIcon-eventForeground,#ff9b87);clip-path:polygon(50% 0,100% 100%,0 100%);border:0;width:11px;height:10px}.compass-semantic-legend-item i[data-edge-category]{background:var(--vscode-descriptionForeground,#8b949e);width:16px;height:2px;display:inline-block;position:relative}.compass-semantic-legend-item i[data-edge-category]:after{content:"";border-top:3px solid #0000;border-bottom:3px solid #0000;border-left:4px solid;width:0;height:0;position:absolute;top:-2px;right:-1px}.compass-semantic-legend-item i[data-edge-category=execution]{background:var(--vscode-symbolIcon-functionForeground,#5fa8ff);color:var(--vscode-symbolIcon-functionForeground,#5fa8ff)}.compass-semantic-legend-item i[data-edge-category=dependency]{background:var(--vscode-symbolIcon-moduleForeground,#56d4b4);color:var(--vscode-symbolIcon-moduleForeground,#56d4b4)}.compass-semantic-legend-item i[data-edge-category=structure]{background:var(--vscode-symbolIcon-classForeground,#e3b341);color:var(--vscode-symbolIcon-classForeground,#e3b341)}.compass-semantic-legend-item i[data-edge-category=flow]{background:var(--vscode-symbolIcon-eventForeground,#ff9b87);color:var(--vscode-symbolIcon-eventForeground,#ff9b87)}.compass-inspector-resizer{z-index:6;background:var(--compass-panel);cursor:col-resize;touch-action:none;border:0;outline:none;min-width:8px;position:relative}.compass-inspector-resizer span{background:var(--compass-line-strong);border-radius:999px;width:2px;height:42px;transition:height .16s,background .16s;position:absolute;top:50%;left:3px;transform:translateY(-50%)}.compass-inspector-resizer:hover span,.compass-inspector-resizer:focus-visible span{background:var(--compass-focus);height:68px}.compass-graph-inspector{z-index:5;border-left:1px solid var(--compass-line);background:var(--vscode-sideBar-background,var(--compass-panel));min-width:0;box-shadow:none;flex-direction:column;display:flex;position:relative;overflow:hidden}.compass-graph-inspector-collapsed{border-left:1px solid var(--compass-line);box-shadow:none;align-items:center}.compass-inspector-header{border-bottom:1px solid var(--compass-line);align-items:center;gap:11px;min-height:52px;padding:8px 12px;display:flex}.compass-inspector-title{flex:1;min-width:0}.compass-inspector-header strong,.compass-inspector-header small{display:block}.compass-inspector-header strong{letter-spacing:.01em;font-size:14px}.compass-inspector-header small{color:var(--compass-faint);text-overflow:ellipsis;white-space:nowrap;margin-top:2px;font-size:11px;overflow:hidden}.compass-product-mark{background:linear-gradient(145deg,var(--vscode-button-foreground,#eff8ff),var(--compass-focus));border-radius:4px;flex:none;place-items:center;width:32px;height:32px;display:grid}@supports (color:color-mix(in lab,red,red)){.compass-product-mark{background:linear-gradient(145deg,var(--vscode-button-foreground,#eff8ff),color-mix(in srgb,var(--compass-focus) 64%,#fff))}}.compass-product-mark{color:var(--vscode-button-background,#09182c);box-shadow:inset 0 0 0 1px #ffffff7a}.compass-product-mark svg{width:19px;height:19px}.compass-inspector-disclosure{width:32px;height:32px;color:var(--muted-foreground);background:0 0;border:1px solid #0000;border-radius:3px;outline:none;flex:none;place-items:center;transition:none;display:grid}.compass-inspector-disclosure:hover{border-color:var(--compass-line);background:var(--workbench-hover);color:var(--foreground)}.compass-inspector-disclosure svg{width:17px;height:17px}.compass-inspector-expand{margin-top:18px}.compass-inspector-rail-label{color:var(--compass-faint);letter-spacing:.12em;text-transform:uppercase;writing-mode:vertical-rl;margin-top:16px;font-size:10px;font-weight:650}.compass-inspector-search{border-bottom:1px solid var(--compass-line);padding:10px 12px;position:relative}.compass-inspector-search-row{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:6px;display:grid}.compass-inspector-search-row .compass-search-field:last-child{grid-column:1/-1}.compass-inspector-search-disclosure{border-color:var(--compass-line)}.compass-search-field{position:relative}.compass-search-field svg{width:15px;height:15px;color:var(--compass-faint);pointer-events:none;position:absolute;top:50%;left:13px;transform:translateY(-50%)}.compass-search-field input{border:1px solid var(--compass-line);background:var(--vscode-input-background,var(--background));width:100%;min-height:30px;color:var(--vscode-input-foreground,var(--foreground));border-radius:3px;outline:none;padding:0 10px 0 34px}.compass-search-field input::placeholder{color:var(--vscode-input-placeholderForeground,var(--compass-faint))}.compass-search-results{z-index:8;border:1px solid var(--compass-line-strong);background:var(--vscode-menu-background,var(--compass-panel));max-height:230px;box-shadow:0 4px 12px var(--vscode-widget-shadow,#00000047);border-radius:3px;padding:6px;position:absolute;top:46px;left:12px;right:12px;overflow-y:auto}.compass-search-item{width:100%;min-height:42px;color:var(--muted-foreground);text-align:left;background:0 0;border:0;border-left:3px solid #0000;border-radius:2px;padding:7px 10px;display:block;overflow:hidden}.compass-search-item strong,.compass-search-item span{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.compass-search-item strong{color:var(--foreground);font-size:12px}.compass-search-item span{color:var(--compass-faint);font:10px/1.4 var(--compass-font-mono)}.compass-search-item:hover,.compass-search-item[aria-selected=true]{background:var(--vscode-list-activeSelectionBackground,var(--compass-focus-soft));color:var(--vscode-list-activeSelectionForeground,var(--foreground))}.compass-info-panel{border-bottom:1px solid var(--compass-line);max-height:48%;padding:18px 16px;overflow-y:auto}.compass-changed-symbols{border-bottom:1px solid var(--compass-line);max-height:30%;padding:14px 16px;overflow-y:auto}.compass-changed-symbol-list{gap:4px;display:grid}.compass-changed-symbol-list>button{width:100%;color:var(--foreground);text-align:left;background:0 0;border:1px solid #0000;border-radius:3px;grid-template-columns:auto minmax(0,1fr);gap:2px 8px;padding:7px 8px;display:grid}.compass-changed-symbol-list>button:hover,.compass-changed-symbol-list>button[aria-pressed=true]{border-color:var(--compass-line);background:var(--vscode-list-activeSelectionBackground,var(--compass-focus-soft))}.compass-changed-symbol-list strong,.compass-changed-symbol-list small{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.compass-changed-symbol-list small{color:var(--compass-faint);font:9px/1.35 var(--compass-font-mono);grid-column:2}.compass-changed-symbol-status{color:var(--vscode-descriptionForeground);letter-spacing:.06em;text-transform:uppercase;grid-row:1/span 2;align-self:center;font-size:8px;font-weight:700}.compass-changed-symbol-list>button[data-change=added] .compass-changed-symbol-status{color:var(--vscode-gitDecoration-addedResourceForeground,#2ea043)}.compass-changed-symbol-list>button[data-change=removed] .compass-changed-symbol-status{color:var(--vscode-gitDecoration-deletedResourceForeground,#f85149)}.compass-changed-symbol-list>button[data-change=changed] .compass-changed-symbol-status{color:var(--vscode-gitDecoration-modifiedResourceForeground,#d29922)}.compass-changed-symbol-expand{border:1px solid var(--compass-line);width:100%;color:var(--vscode-textLink-foreground,var(--compass-focus));background:0 0;border-radius:3px;margin-top:8px;padding:6px 8px}.compass-record-evidence,.compass-relationship-evidence,.compass-code-evidence{margin-top:16px}.compass-code-query-actions{grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;margin-top:10px;display:grid}.compass-code-query-actions button{border:1px solid var(--compass-line);color:var(--vscode-textLink-foreground,var(--compass-focus));background:0 0;border-radius:3px;padding:5px 4px;font-size:9px}.compass-code-query-actions button:focus-visible{outline:2px solid var(--vscode-focusBorder,var(--compass-focus));outline-offset:1px}.compass-code-evidence-ledger{gap:6px;display:grid}.compass-code-evidence-entry{border:1px solid var(--compass-line);background:var(--vscode-editorWidget-background,var(--background));border-left-width:3px;border-radius:3px;grid-template-columns:24px minmax(0,1fr);gap:8px;padding:8px;display:grid}.compass-code-evidence-entry[data-status=exact],.compass-code-evidence-entry[data-status=config],.compass-code-evidence-entry[data-status=convention]{border-left-color:var(--vscode-testing-iconPassed,#2ea043)}.compass-code-evidence-entry[data-status=heuristic]{border-left-color:var(--vscode-charts-blue,#58a6ff)}.compass-code-evidence-entry[data-status=ambiguous],.compass-code-evidence-entry[data-status=unresolved]{border-left-color:var(--vscode-editorWarning-foreground,#d29922)}.compass-code-evidence-icon{background:var(--vscode-badge-background,var(--muted));width:24px;height:24px;color:var(--vscode-badge-foreground,var(--foreground));border-radius:50%;place-items:center;display:grid}.compass-code-evidence-icon svg{width:13px;height:13px}.compass-code-evidence-copy{min-width:0}.compass-code-evidence-status{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.compass-code-evidence-status strong{color:var(--foreground);font-size:10px}.compass-code-evidence-status span{color:var(--compass-faint);text-transform:uppercase;font-size:8px}.compass-code-evidence-copy dl{gap:3px;margin:7px 0 0;display:grid}.compass-code-evidence-copy dl>div{grid-template-columns:62px minmax(0,1fr);gap:6px;display:grid}.compass-code-evidence-copy dt{color:var(--compass-faint);text-transform:uppercase;font-size:8px}.compass-code-evidence-copy dd{overflow-wrap:anywhere;min-width:0;color:var(--foreground);font:9px/1.35 var(--compass-font-mono);margin:0}.compass-code-evidence-source{max-width:100%;color:var(--vscode-textLink-foreground,var(--compass-focus));font:9px/1.35 var(--compass-font-mono);overflow-wrap:anywhere;text-align:left;background:0 0;border:0;align-items:center;gap:5px;margin-top:7px;padding:0;display:inline-flex}button.compass-code-evidence-source{cursor:pointer}button.compass-code-evidence-source:focus-visible{outline:2px solid var(--vscode-focusBorder,var(--compass-focus));outline-offset:2px;border-radius:2px}.compass-code-evidence-source svg{width:11px;min-width:11px;height:11px}.compass-code-candidates{border-top:1px solid var(--compass-line);margin-top:8px;padding-top:7px}.compass-code-candidates>span{color:var(--compass-faint);text-transform:uppercase;font-size:8px}.compass-code-candidates ul{gap:5px;margin:6px 0 0;padding:0;list-style:none;display:grid}.compass-code-candidates li{grid-template-columns:minmax(0,1fr) auto;gap:1px 6px;display:grid}.compass-code-candidates code{overflow-wrap:anywhere;color:var(--foreground);font:9px/1.35 var(--compass-font-mono)}.compass-code-candidates li>span{color:var(--muted-foreground);grid-column:1/-1;font-size:9px}.compass-code-candidates small{color:var(--compass-faint);text-transform:uppercase;grid-area:1/2;font-size:8px}.compass-code-diagnostic{border:1px solid var(--vscode-editorWarning-foreground,#d29922);color:var(--muted-foreground);border-radius:3px;gap:7px;margin:0 0 6px;padding:7px 8px;font-size:9px;display:flex}.compass-code-diagnostic[data-severity=info]{border-color:var(--vscode-charts-blue,#58a6ff)}.compass-code-diagnostic svg{width:12px;min-width:12px;height:12px}.compass-code-diagnostic strong{color:var(--foreground);text-transform:capitalize}.compass-evidence-heading{justify-content:space-between;align-items:baseline;margin-bottom:7px;display:flex}.compass-evidence-heading h3{color:var(--foreground);font-size:11px}.compass-evidence-heading span{color:var(--compass-faint);font-size:9px}.compass-field-table-wrap{border:1px solid var(--compass-line);border-radius:3px;overflow-x:auto}.compass-field-table{border-collapse:collapse;table-layout:fixed;width:100%;min-width:360px}.compass-field-table th,.compass-field-table td{border-right:1px solid var(--compass-line);border-bottom:1px solid var(--compass-line);vertical-align:top;text-align:left;padding:6px 7px}.compass-field-table tr:last-child>*{border-bottom:0}.compass-field-table tr>:last-child{border-right:0}.compass-field-table thead th{background:var(--vscode-editorWidget-background,var(--background));color:var(--compass-faint);text-transform:uppercase;font-size:9px}.compass-field-table tbody th{width:27%;color:var(--foreground);font:9px/1.4 var(--compass-font-mono);overflow-wrap:anywhere}.compass-field-table code{color:var(--foreground);font:9px/1.4 var(--compass-font-mono);white-space:pre-wrap;overflow-wrap:anywhere}.compass-value-truncated{color:var(--vscode-editorWarning-foreground,#d29922);margin-top:4px;font-size:8px;display:block}.compass-evidence-source-actions{gap:6px;margin-top:8px;display:flex}.compass-evidence-source-actions button{border:1px solid var(--compass-line);color:var(--vscode-textLink-foreground,var(--compass-focus));background:0 0;border-radius:3px;align-items:center;gap:5px;padding:5px 7px;display:inline-flex}.compass-evidence-source-actions svg{width:12px;height:12px}.compass-relationship-list{gap:5px;margin-top:7px;display:grid}.compass-relationship-list details{border:1px solid var(--compass-line);background:var(--vscode-editorWidget-background,var(--background));border-radius:3px;padding:6px 7px}.compass-relationship-list summary{cursor:pointer;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:4px 7px;display:grid}.compass-relationship-target{color:var(--vscode-textLink-foreground,var(--compass-focus));text-align:left;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.compass-relationship-list summary small{color:var(--foreground);font:9px/1.3 var(--compass-font-mono);grid-column:2}.compass-relationship-list summary i{color:var(--compass-faint);text-transform:uppercase;grid-area:2/3;font-size:8px;font-style:normal}.compass-relationship-detail{margin-top:7px}.compass-relationship-detail>p{color:var(--compass-faint);font:9px/1.4 var(--compass-font-mono);margin:7px 0 0}.compass-relationship-detail>button{border:1px solid var(--compass-line);color:var(--vscode-textLink-foreground,var(--compass-focus));background:0 0;border-radius:3px;margin-top:7px;padding:4px 7px}.compass-bounded-notice{z-index:4;border:1px solid var(--vscode-editorWarning-foreground,#d29922);background:var(--vscode-editorWidget-background,var(--compass-panel));max-width:min(420px,100% - 24px);color:var(--foreground);border-radius:3px;gap:2px;padding:8px 10px;font-size:10px;display:grid;position:absolute;bottom:12px;right:12px}.compass-bounded-notice span{color:var(--muted-foreground)}.compass-hover-hint{border-top:1px solid var(--compass-line);color:var(--vscode-textLink-foreground,var(--compass-focus));align-items:center;gap:7px;margin-top:2px;padding-top:9px;font-size:11px;display:flex!important}.compass-hover-hint svg{flex:none;width:14px;height:14px}.compass-hover-hint strong{color:var(--vscode-editorHoverWidget-foreground,var(--foreground));font-weight:650}.compass-section-heading,.compass-neighbors-heading{justify-content:space-between;align-items:baseline;display:flex}.compass-section-heading{margin-bottom:15px}.compass-section-heading h2,.compass-community-panel h2{letter-spacing:.1em;text-transform:uppercase;font-size:11px;font-weight:700}.compass-section-heading span{color:var(--compass-faint);letter-spacing:.1em;text-transform:uppercase;font-size:9px}.compass-info-content{color:var(--muted-foreground);font-size:12px;line-height:1.45}.compass-node-identity{align-items:center;gap:11px;margin-bottom:15px;display:flex}.compass-node-identity>span:nth-child(2){flex:1;min-width:0}.compass-node-identity strong,.compass-node-identity small{display:block}.compass-node-identity strong{color:var(--foreground);text-overflow:ellipsis;white-space:nowrap;font-size:14px;overflow:hidden}.compass-node-identity small{background:var(--compass-success);border-radius:999px;width:max-content;margin-top:3px;padding:3px 7px}@supports (color:color-mix(in lab,red,red)){.compass-node-identity small{background:color-mix(in srgb,var(--compass-success) 20%,transparent)}}.compass-node-identity small{color:var(--compass-success);letter-spacing:.07em;text-transform:uppercase;font-size:9px;font-weight:800}.compass-node-swatch{border-radius:5px;flex:none;width:10px;height:36px}.compass-change-badge{width:max-content;color:var(--vscode-descriptionForeground,#6e7781);letter-spacing:.05em;text-transform:uppercase;border:1px solid;border-radius:999px;align-items:center;gap:5px;padding:3px 7px;font-size:9px;font-weight:700;display:inline-flex}.compass-node-identity .compass-change-badge{flex:none;margin-left:auto}.compass-change-badge[data-change=added]{color:var(--vscode-gitDecoration-addedResourceForeground,#2ea043)}.compass-change-badge[data-change=removed]{color:var(--vscode-gitDecoration-deletedResourceForeground,#f85149)}.compass-change-badge[data-change=changed]{color:var(--vscode-gitDecoration-modifiedResourceForeground,#d29922)}.compass-metadata-grid{grid-template-columns:1fr 1fr;gap:8px;margin-bottom:15px;display:grid}.compass-metadata-grid>div{border:1px solid var(--compass-line);background:var(--vscode-editorWidget-background,var(--background));border-radius:3px;min-width:0;padding:9px 10px}.compass-metadata-grid .compass-metadata-wide{grid-column:1/-1}.compass-metadata-grid dt{color:var(--compass-faint);letter-spacing:.08em;text-transform:uppercase;font-size:9px}.compass-metadata-grid dd{color:var(--foreground);text-overflow:ellipsis;white-space:nowrap;margin-top:4px;overflow:hidden}.compass-source-metadata[data-interactive=true]{padding:0;transition:border-color .16s,background .16s}.compass-source-metadata[data-interactive=true]:hover,.compass-source-metadata[data-interactive=true]:focus-within{border-color:var(--compass-focus);background:var(--compass-focus-soft)}.compass-source-metadata[data-interactive=true] dd{white-space:normal;margin:0;overflow:visible}.compass-source-card{width:100%;min-height:58px;color:var(--foreground);text-align:left;background:0 0;border:0;border-radius:2px;outline:none;justify-content:space-between;align-items:center;gap:10px;padding:9px 10px;display:flex}.compass-source-copy{min-width:0;display:block}.compass-source-eyebrow,.compass-source-path,.compass-source-range{display:block}.compass-source-eyebrow{color:var(--compass-faint);font-family:var(--compass-font-sans);letter-spacing:.08em;text-transform:uppercase;font-size:9px}.compass-source-path{font:11px/1.35 var(--compass-font-mono);text-overflow:ellipsis;white-space:nowrap;margin-top:4px;overflow:hidden}.compass-source-range{color:var(--muted-foreground);font:10px/1.25 var(--compass-font-sans);margin-top:3px}.compass-source-card>svg{width:15px;height:15px;color:var(--compass-focus);flex:none}.compass-source-card:hover>svg{color:var(--foreground)}.compass-signature-block{overflow-wrap:anywhere;border:1px solid var(--compass-line);background:var(--vscode-input-background,var(--background));color:var(--foreground);font:11px/1.45 var(--compass-font-mono);border-radius:3px;margin-bottom:15px;padding:10px;display:block}.compass-inspector-action{border:1px solid var(--compass-line);background:var(--workbench-hover);width:100%;min-height:36px;color:var(--foreground);border-radius:3px;justify-content:space-between;align-items:center;gap:8px;margin-bottom:14px;padding:0 10px;display:flex}.compass-inspector-action span{min-width:0;color:var(--muted-foreground);font:10px/1.2 var(--compass-font-mono);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.compass-neighbors-heading{margin:3px 0 7px}.compass-neighbors-heading strong{color:var(--compass-faint);font-size:10px}.compass-neighbors-list{max-height:154px;overflow-y:auto}.compass-neighbor-link{width:100%;min-height:36px;color:var(--muted-foreground);text-align:left;background:0 0;border:0;border-radius:3px;align-items:center;gap:9px;margin:3px 0;padding:8px 9px;display:flex;overflow:hidden}.compass-neighbor-link:hover{background:var(--workbench-hover);color:var(--foreground)}.compass-neighbor-dot{width:8px;height:8px;box-shadow:0 0 0 1px var(--foreground);border-radius:50%;flex:none}@supports (color:color-mix(in lab,red,red)){.compass-neighbor-dot{box-shadow:0 0 0 1px color-mix(in srgb,var(--foreground) 10%,transparent)}}.compass-neighbor-label{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.compass-empty{color:var(--compass-faint);padding:8px 0;font-size:12px;display:block}.compass-community-panel{flex:1;min-height:0;padding:16px;overflow-y:auto}.compass-community-panel h2{margin-bottom:10px}.compass-community-panel[data-secondary=true]{flex:0 auto;padding-top:12px}.compass-community-panel details>summary{cursor:pointer;min-height:30px;color:var(--muted-foreground);letter-spacing:.1em;text-transform:uppercase;justify-content:space-between;align-items:center;font-size:11px;font-weight:700;display:flex}.compass-community-panel details>summary span{color:var(--compass-faint);font:9px/1 var(--compass-font-mono)}.compass-community-controls{min-height:0}.compass-community-search{align-items:center;margin:2px 0 8px;display:flex;position:relative}.compass-community-search>svg{width:13px;height:13px;color:var(--compass-faint);pointer-events:none;position:absolute;left:8px}.compass-community-search input{border:1px solid var(--compass-line);background:var(--vscode-input-background,var(--background));width:100%;height:30px;color:var(--foreground);font:11px/1.3 var(--compass-font-sans);border-radius:3px;padding:0 8px 0 28px}.compass-community-limit{color:var(--compass-faint);margin:8px 0 0;font-size:10px;line-height:1.45}.compass-community-control,.compass-community-item{min-height:34px;color:var(--muted-foreground);align-items:center;gap:8px;font-size:12px;display:flex}.compass-community-item{border-radius:3px}.compass-community-item:hover{background:var(--workbench-hover);color:var(--foreground)}.compass-community-item[data-hidden=true]{opacity:.36}.compass-community-item input,.compass-community-control input{width:15px;height:15px;accent-color:var(--compass-focus)}.compass-community-dot{border-radius:50%;flex:none;width:9px;height:9px}.compass-community-label{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.compass-community-item small{color:var(--compass-faint);font-size:10px}.compass-graph-stats{border-top:1px solid var(--compass-line);color:var(--compass-faint);letter-spacing:.025em;padding:11px 16px;font-size:10px}.compass-node-hover-card{z-index:7;top:clamp(86px,var(--compass-hover-y),calc(100% - 10rem));left:clamp(12px,var(--compass-hover-x),calc(100% - min(27rem,90%) - 12px));border:1px solid var(--compass-line-strong);background:var(--vscode-editorHoverWidget-background,var(--compass-panel));width:max-content;max-width:min(26rem,100% - 24px);color:var(--vscode-editorHoverWidget-foreground,var(--muted-foreground));box-shadow:0 4px 12px var(--vscode-widget-shadow,#00000047);pointer-events:none;border-radius:3px;gap:7px;padding:13px 15px;font-size:12px;line-height:1.35;display:grid;position:absolute;overflow:hidden}.compass-node-hover-card>.compass-change-badge{margin:0}.compass-hover-heading{align-items:center;gap:8px;display:flex}.compass-hover-heading strong{min-width:0;color:var(--foreground);text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.compass-hover-heading span{background:var(--compass-success);border-radius:999px;width:max-content;padding:3px 7px}@supports (color:color-mix(in lab,red,red)){.compass-hover-heading span{background:color-mix(in srgb,var(--compass-success) 20%,transparent)}}.compass-hover-heading span{color:var(--compass-success);letter-spacing:.07em;font-size:9px;font-weight:800}.compass-node-hover-card p,.compass-node-hover-card code{display:block}.compass-hover-source{color:var(--compass-focus)}.compass-node-hover-card code{max-width:395px;color:var(--foreground);font-family:var(--compass-font-mono);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.compass-edge-hover-card{z-index:8;top:clamp(86px,var(--compass-hover-y),calc(100% - 15rem));left:clamp(12px,var(--compass-hover-x),calc(100% - min(31rem,92%) - 12px));border:1px solid var(--compass-line-strong);background:var(--vscode-editorHoverWidget-background,var(--compass-panel));width:min(31rem,100% - 24px);color:var(--vscode-editorHoverWidget-foreground,var(--muted-foreground));box-shadow:0 8px 24px var(--vscode-widget-shadow,#00000057);pointer-events:none;border-radius:4px;gap:10px;padding:13px 15px;font-size:11px;line-height:1.35;animation:90ms ease-out both compass-edge-card-enter;display:grid;position:absolute;overflow:hidden}@keyframes compass-edge-card-enter{0%{opacity:0;transform:translateY(3px)}}.compass-edge-hover-heading,.compass-edge-relation-row{justify-content:space-between;align-items:center;gap:10px;display:flex}.compass-edge-hover-eyebrow{color:var(--compass-faint);letter-spacing:.09em;text-transform:uppercase;align-items:center;gap:6px;font-size:9px;font-weight:750;display:inline-flex}.compass-edge-hover-eyebrow svg{width:12px;height:12px;color:var(--compass-focus)}.compass-edge-confidence{border:1px solid;padding:3px 7px}@supports (color:color-mix(in lab,red,red)){.compass-edge-confidence{border:1px solid color-mix(in srgb,currentColor 28%,transparent)}}.compass-edge-confidence{background:currentColor;border-radius:999px}@supports (color:color-mix(in lab,red,red)){.compass-edge-confidence{background:color-mix(in srgb,currentColor 11%,transparent)}}.compass-edge-confidence{color:var(--compass-faint);letter-spacing:.055em;text-transform:uppercase;font-size:9px;font-weight:800}.compass-edge-confidence[data-confidence=extracted]{color:var(--compass-success)}.compass-edge-confidence[data-confidence=inferred]{color:var(--compass-focus)}.compass-edge-confidence[data-confidence=ambiguous]{color:var(--compass-warning)}.compass-edge-confidence[data-confidence=aggregated]{color:var(--compass-faint)}.compass-edge-trace{border:1px solid var(--compass-line);background:var(--compass-focus);border-radius:3px;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:9px;min-width:0;padding:9px 10px;display:grid}@supports (color:color-mix(in lab,red,red)){.compass-edge-trace{background:color-mix(in srgb,var(--compass-focus) 7%,transparent)}}.compass-edge-trace strong{min-width:0;color:var(--foreground);font:600 11px/1.35 var(--compass-font-mono);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.compass-edge-trace strong:last-child{text-align:right}.compass-edge-trace>span{border:1px solid var(--compass-focus);place-items:center;width:22px;height:22px;display:grid}@supports (color:color-mix(in lab,red,red)){.compass-edge-trace>span{border:1px solid color-mix(in srgb,var(--compass-focus) 38%,transparent)}}.compass-edge-trace>span{background:var(--vscode-editorHoverWidget-background,var(--compass-panel));color:var(--compass-focus);border-radius:50%}.compass-edge-trace svg{width:12px;height:12px}.compass-edge-relation-row>strong{color:var(--foreground);font-size:12px;font-weight:700}.compass-edge-relation-row>.compass-change-badge{margin:0}.compass-edge-metadata{gap:5px;padding-top:1px;display:grid}.compass-edge-metadata p{grid-template-columns:54px minmax(0,1fr);align-items:baseline;gap:8px;display:grid}.compass-edge-metadata span{color:var(--compass-faint);letter-spacing:.06em;text-transform:uppercase;font-size:9px;font-weight:700}.compass-edge-metadata code{min-width:0;color:var(--vscode-textLink-foreground,var(--compass-focus));font:10px/1.4 var(--compass-font-mono);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}body.vscode-high-contrast .compass-glass-panel,body.vscode-high-contrast .compass-graph-inspector,body.vscode-high-contrast .compass-inspector-resizer,body.vscode-high-contrast .compass-load-action,body.vscode-high-contrast .compass-load-step>i,body.vscode-high-contrast .compass-source-metadata,body.vscode-high-contrast .compass-node-hover-card,body.vscode-high-contrast .compass-edge-hover-card,body.vscode-high-contrast-light .compass-glass-panel,body.vscode-high-contrast-light .compass-graph-inspector,body.vscode-high-contrast-light .compass-inspector-resizer,body.vscode-high-contrast-light .compass-load-action,body.vscode-high-contrast-light .compass-load-step>i,body.vscode-high-contrast-light .compass-source-metadata,body.vscode-high-contrast-light .compass-node-hover-card,body.vscode-high-contrast-light .compass-edge-hover-card{border-width:2px;border-color:var(--vscode-contrastBorder,var(--compass-focus))}body.vscode-high-contrast .compass-load-logo,body.vscode-high-contrast-light .compass-load-logo{color:var(--vscode-contrastBorder,currentColor)}@media(max-width:980px){.compass-tool-button span{display:none}.compass-tool-button{padding:0 11px}}@media(max-width:760px){.compass-workspace{height:auto;min-height:100vh;overflow:auto}.compass-workspace-content,.compass-workspace-content[data-inspector-collapsed=true]{height:auto;min-height:inherit;grid-template-rows:minmax(360px,62vh) minmax(280px,40vh);grid-template-columns:1fr;overflow:visible}.compass-workspace-content[data-inspector-collapsed=true]{grid-template-rows:minmax(360px,calc(100vh - 48px)) 48px}.compass-inspector-resizer{display:none}.compass-graph-inspector{border-top:1px solid var(--compass-line);min-height:280px;box-shadow:none;border-left:0;border-radius:0}.compass-graph-inspector-collapsed{border-radius:0;flex-direction:row;justify-content:center;min-height:48px}.compass-inspector-expand{margin-top:0}.compass-inspector-rail-label{writing-mode:horizontal-tb;margin-top:0;margin-left:10px}.compass-graph-toolbar{top:12px;left:12px;right:12px}.compass-toolbar-actions{max-width:62%;overflow-x:auto}.compass-explore-panel{max-height:calc(62vh - 82px)}.compass-info-panel{max-height:none}}@media(prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.compass-load-logo,.compass-load-progress i,.architecture-load-skeleton span,.workbench-state-spinner{animation:none!important}}.architecture-shell{background:var(--background);height:100vh;color:var(--foreground);grid-template-columns:minmax(220px,280px) minmax(0,1fr);display:grid}.query-shell{--query-surface:var(--vscode-editor-background,var(--background));--query-surface-raised:var(--vscode-editorWidget-background,var(--vscode-sideBar-background,var(--card)));--query-border:var(--vscode-panel-border,var(--border));--query-input:var(--vscode-input-background,var(--background));--query-input-foreground:var(--vscode-input-foreground,var(--foreground));--query-accent:var(--vscode-focusBorder,var(--ring));background:var(--background);height:100vh;min-height:420px;color:var(--foreground);grid-template-rows:auto 1fr;display:grid;overflow:hidden}.query-header{border-bottom:1px solid var(--query-border);background:var(--query-surface);padding:14px 18px 16px}.query-heading-row{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.query-context{color:var(--muted-foreground);font:10px/1.35 var(--compass-font-mono);letter-spacing:.04em;text-transform:uppercase}.query-heading-row h1{margin:3px 0 0;font-size:16px;font-weight:600;line-height:1.3}.query-mode{border-bottom:1px solid var(--query-border);background:0 0;gap:0;width:100%;margin-top:14px;display:flex;overflow-x:auto}.query-mode button{min-width:min(250px,42vw);min-height:48px;color:var(--muted-foreground);font:inherit;text-align:left;background:0 0;border:0;border-radius:0;flex:1 0 220px;grid-template-columns:18px minmax(0,1fr);align-items:center;gap:8px;padding:7px 12px 8px;display:grid;position:relative}.query-mode-indicator{background:var(--query-accent);height:3px;box-shadow:0 1px 5px var(--query-accent);position:absolute;top:0;left:0;right:0}@supports (color:color-mix(in lab,red,red)){.query-mode-indicator{box-shadow:0 1px 5px color-mix(in srgb,var(--query-accent) 35%,transparent)}}.query-mode-indicator{opacity:0;pointer-events:none}.query-mode button:hover{background:var(--workbench-hover);color:var(--foreground)}.query-mode button[aria-selected=true]{background:var(--vscode-tab-activeBackground,var(--query-surface-raised));box-shadow:inset 1px 0 var(--query-border),inset -1px 0 var(--query-border);color:var(--vscode-tab-activeForeground,var(--foreground))}.query-mode button[aria-selected=true] .query-mode-indicator,.query-mode button[aria-selected=true] svg,.query-mode button[aria-selected=true] strong{opacity:1}.query-mode svg{width:15px;height:15px}.query-mode button>span,.query-mode strong,.query-mode small{min-width:0;display:block}.query-mode strong{font-size:12px;font-weight:600;line-height:1.3}.query-mode small{color:inherit;opacity:.78;text-overflow:ellipsis;white-space:nowrap;margin-top:2px;font-size:10px;font-weight:400;line-height:1.3;overflow:hidden}.query-composer-panel{border:1px solid var(--query-border);background:var(--query-surface-raised);border-top:0;padding:12px}.query-composer{display:block}.query-editor-shell{border:1px solid var(--vscode-input-border,var(--border));background:var(--query-input);color:var(--query-input-foreground);border-radius:3px;overflow:hidden}.query-editor-shell:focus-within{border-color:var(--ring);outline:1px solid var(--ring);outline-offset:-1px}.query-editor{min-width:0;position:relative}.query-editor textarea{resize:vertical;background:var(--query-input);width:100%;min-height:96px;max-height:260px;color:inherit;font:13px/1.55 var(--compass-font-sans);box-sizing:border-box;border:0;border-radius:0;outline:none;padding:11px 12px;display:block}.query-composer-panel[data-mode=cql] .query-editor textarea,.query-composer-panel[data-mode=explain] .query-editor textarea{font-family:var(--compass-font-mono);font-size:12px}.query-editor textarea::placeholder,.query-params input::placeholder{color:var(--vscode-input-placeholderForeground,var(--muted-foreground))}.query-suggestions{border-top:1px solid var(--query-border);background:var(--vscode-editorSuggestWidget-background,var(--query-surface-raised));max-height:210px;color:var(--vscode-editorSuggestWidget-foreground,var(--foreground));display:grid;overflow-y:auto}.query-suggestions-label,.query-suggestions-hint{color:var(--vscode-descriptionForeground,var(--muted-foreground));font:9px/1.2 var(--compass-font-sans);padding:6px 10px}.query-suggestions-label{letter-spacing:.06em;text-transform:uppercase}.query-suggestions-hint{border-top:1px solid var(--query-border);text-align:right}.query-suggestions button{min-width:0;color:inherit;font:inherit;text-align:left;background:0 0;border:0;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:16px;padding:7px 10px;display:grid}.query-suggestions button[aria-selected=true],.query-suggestions button:hover{background:var(--vscode-editorSuggestWidget-selectedBackground,var(--accent));color:var(--vscode-editorSuggestWidget-selectedForeground,var(--foreground))}.query-suggestions button>span{font:11px/1.35 var(--compass-font-mono);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.query-suggestions button>small{color:var(--vscode-descriptionForeground,var(--muted-foreground));white-space:nowrap;font-size:10px}.query-completion-status{border-top:1px solid var(--query-border);background:var(--vscode-editorSuggestWidget-background,var(--query-surface-raised));min-width:0;min-height:34px;color:var(--vscode-descriptionForeground,var(--muted-foreground));justify-content:space-between;align-items:center;gap:12px;padding-block:7px;padding-inline:10px;font-size:10px;display:flex}.query-completion-status>span{overflow-wrap:anywhere;min-width:0}.query-completion-status button{border:1px solid var(--vscode-button-border,var(--query-border));background:var(--vscode-button-secondaryBackground,var(--secondary));color:var(--vscode-button-secondaryForeground,var(--secondary-foreground));font:inherit;border-radius:3px;flex:none;padding:3px 7px}.query-completion-status button:hover{background:var(--vscode-button-secondaryHoverBackground,var(--workbench-hover))}.query-params input:focus-visible{border-color:var(--ring);outline:1px solid var(--ring);outline-offset:-1px}.query-composer-footer{border-top:1px solid var(--query-border);background:var(--query-surface);align-items:center;gap:12px;min-height:40px;padding:5px 6px 5px 10px;display:flex}.query-footer-actions{flex:none;justify-content:flex-end;align-items:center;gap:8px;margin-left:auto;display:flex}.query-shortcut{color:var(--vscode-disabledForeground,var(--compass-faint));font:10px/1 var(--compass-font-sans);white-space:nowrap}.query-run{border:1px solid var(--vscode-button-border,transparent);background:var(--vscode-button-background,var(--primary));min-width:76px;min-height:30px;color:var(--vscode-button-foreground,var(--primary-foreground));font:inherit;border-radius:3px;justify-content:center;align-items:center;gap:6px;padding:5px 11px;font-size:12px;display:flex}.query-run:hover:not(:disabled){background:var(--vscode-button-hoverBackground,var(--primary))}.query-run:disabled{background:var(--vscode-button-secondaryBackground,var(--secondary));color:var(--vscode-disabledForeground,var(--compass-faint))}.query-run svg{width:13px;height:13px}.query-params{min-width:0;max-width:620px;color:var(--muted-foreground);flex:520px;align-items:center;gap:8px;font-size:10px;display:flex}.query-params>span{flex:none}.query-params input{border:1px solid var(--vscode-input-border,var(--border));background:var(--vscode-input-background,var(--input));min-width:0;max-width:520px;height:28px;color:var(--vscode-input-foreground,var(--foreground));font:11px var(--compass-font-mono);border-radius:3px;outline:none;flex:260px;padding:3px 8px}.query-examples{align-items:center;gap:5px;margin-top:9px;display:flex;overflow-x:auto}.query-examples>span{color:var(--muted-foreground);text-transform:uppercase;flex:none;font-size:10px;font-weight:600}.query-examples button,.query-history button{border:1px solid var(--border);color:var(--muted-foreground);font:inherit;white-space:nowrap;background:0 0;border-radius:3px;padding:4px 7px;font-size:10px}.query-examples button:hover,.query-history button:hover{background:var(--workbench-hover);color:var(--foreground)}.query-results{grid-template-rows:auto minmax(0,1fr);min-height:0;padding:0;display:grid;overflow:hidden}.query-result-stage{min-height:0;padding:clamp(12px,2vw,22px);overflow:auto}.query-result-stage>.workbench-state{min-height:100%}.query-result-tabs{border-bottom:1px solid var(--query-border);background:var(--vscode-editorGroupHeader-tabsBackground,var(--query-surface-raised));min-width:0;display:flex;overflow-x:auto}.query-result-tab{border-right:1px solid var(--query-border);background:var(--vscode-tab-inactiveBackground,transparent);grid-template-columns:minmax(0,1fr) 26px;min-width:150px;max-width:300px;display:grid}.query-result-tab:has([aria-selected=true]){background:var(--vscode-tab-activeBackground,var(--query-surface));box-shadow:inset 0 2px var(--vscode-tab-activeBorderTop,var(--query-accent))}.query-result-tab[data-status=error]{box-shadow:inset 0 2px var(--vscode-testing-iconFailed,var(--destructive))}.query-result-tab>[role=tab]{min-width:0;color:var(--vscode-tab-inactiveForeground,var(--muted-foreground));font:inherit;text-align:left;background:0 0;border:0;gap:1px;padding:7px 4px 7px 10px;display:grid;overflow:hidden}.query-result-tab>[role=tab][aria-selected=true]{color:var(--vscode-tab-activeForeground,var(--foreground))}.query-result-tab>[role=tab] span{color:var(--query-accent);font:9px/1.2 var(--compass-font-mono);letter-spacing:.05em;text-transform:uppercase}.query-result-tab>[role=tab] strong{text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:500;line-height:1.3;overflow:hidden}.query-result-close{width:22px;height:22px;color:var(--muted-foreground);background:0 0;border:0;border-radius:3px;align-self:center;place-items:center;padding:0;display:grid}.query-result-close:hover{background:var(--workbench-hover);color:var(--foreground)}.query-result-close svg{width:13px;height:13px}.query-result{width:min(1180px,100%);margin:0 auto}.query-result>header{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:9px;display:flex}.query-result>header span{color:var(--muted-foreground);font-size:10px}.query-result>header>span{font-family:var(--compass-font-mono);align-items:center;gap:5px;display:flex}.query-result>header svg{width:12px;height:12px}.query-result h2{margin:2px 0 0;font-size:14px;font-weight:600}.query-text-result,.query-json-result{border:1px solid var(--border);background:var(--vscode-textCodeBlock-background,var(--card));min-height:120px;color:var(--foreground);font:12px/1.6 var(--compass-font-mono);white-space:pre-wrap;overflow-wrap:anywhere;border-radius:3px;margin:0;padding:12px;overflow:auto}.query-prose-result{border:1px solid var(--query-border);background:var(--query-surface-raised);color:var(--foreground);border-radius:3px;padding:14px 16px;font-size:13px;line-height:1.65}.query-prose-result p,.query-prose-result ul{margin:0}.query-prose-result p+p,.query-prose-result p+ul,.query-prose-result ul+p{margin-top:10px}.query-prose-result ul{padding-left:20px}.query-traversal-result,.query-typed-result,.query-explanation{gap:10px;display:grid}.query-diagnostics{border:1px solid var(--query-border);border-left:3px solid var(--vscode-editorWarning-foreground,#cca700);background:var(--query-surface-raised);display:grid;overflow:hidden}.query-diagnostics>h3{border-bottom:1px solid var(--query-border);margin:0;padding:8px 11px;font-size:11px;font-weight:600}.query-diagnostics article{border-bottom:1px solid var(--query-border);grid-template-columns:16px minmax(0,1fr);gap:8px;min-width:0;padding:9px 11px;display:grid}.query-diagnostics article:last-child{border-bottom:0}.query-diagnostics article>svg{width:14px;height:14px;color:var(--vscode-editorWarning-foreground,#cca700);margin-top:1px}.query-diagnostics strong,.query-diagnostics p{overflow-wrap:anywhere;margin:0}.query-diagnostics strong{font-size:11px}.query-diagnostics p{color:var(--muted-foreground);margin-top:2px;font-size:11px;line-height:1.45}.query-explanation-card{border:1px solid var(--query-border);border-left:3px solid var(--query-accent);background:var(--query-surface-raised);grid-template-columns:minmax(180px,1fr) minmax(220px,1fr);gap:12px 18px;min-width:0;padding:13px 14px;display:grid}.query-explanation-card>div>span{color:var(--query-accent);font:9px/1.2 var(--compass-font-mono);letter-spacing:.05em;text-transform:uppercase}.query-explanation-card h3{margin:3px 0 4px;font-size:14px}.query-explanation-card code{color:var(--muted-foreground);font:10px/1.4 var(--compass-font-mono);text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.query-explanation-card>.query-source-action{align-self:center}.query-explanation-card dl{border-top:1px solid var(--query-border);grid-column:1/-1;gap:18px;margin:0;padding-top:10px;display:flex}.query-explanation-card dl>div{gap:6px;display:flex}.query-explanation-card dt,.query-explanation-card dd{margin:0;font-size:10px}.query-explanation-card dt{color:var(--muted-foreground)}.query-connections{border:1px solid var(--query-border);background:var(--query-surface);overflow:hidden}.query-connections>h3{border-bottom:1px solid var(--query-border);margin:0;padding:8px 11px;font-size:11px}.query-connections>h3 span{color:var(--muted-foreground);margin-left:4px;font-weight:400}.query-connections article{border-bottom:1px solid var(--query-border);grid-template-columns:18px minmax(0,1fr) auto;align-items:center;gap:8px;padding:8px 10px;display:grid}.query-connections article:last-child{border-bottom:0}.query-connections article>svg{width:14px;color:var(--query-accent)}.query-connections strong,.query-connections p{margin:0;font-size:11px}.query-connections p,.query-connections article>span{color:var(--muted-foreground);font-size:9px}.query-connections article>span{font-family:var(--compass-font-mono);text-transform:uppercase}.query-guidance{border:1px solid var(--query-border);background:var(--query-surface-raised);color:var(--muted-foreground);margin:0;padding:9px 11px;font-size:11px}.query-object-result{border:1px solid var(--query-border);background:var(--query-surface);margin:0;display:grid;overflow:hidden}.query-object-result>div{border-bottom:1px solid var(--query-border);grid-template-columns:minmax(120px,.28fr) minmax(0,1fr);display:grid}.query-object-result>div:last-child{border-bottom:0}.query-object-result dt,.query-object-result dd{overflow-wrap:anywhere;margin:0;padding:8px 10px}.query-object-result dt{color:var(--muted-foreground);text-transform:capitalize;font-size:10px}.query-object-result dd{border-left:1px solid var(--query-border);font:11px/1.5 var(--compass-font-mono);white-space:pre-wrap}.query-traversal-summary{border:1px solid var(--query-border);border-left:3px solid var(--query-accent);background:var(--query-surface-raised);justify-content:space-between;align-items:center;gap:16px;min-height:54px;padding:10px 12px;display:flex}.query-traversal-summary p{color:var(--foreground);margin:0;font-size:12px;font-weight:600}.query-result-metrics{color:var(--muted-foreground);flex-wrap:wrap;gap:5px 14px;margin-top:5px;font-size:10px;display:flex}.query-result-metrics strong{color:var(--foreground);font-weight:600}.query-graph-action{border:1px solid var(--vscode-button-border,transparent);background:var(--vscode-button-secondaryBackground,var(--secondary));min-height:30px;color:var(--vscode-button-secondaryForeground,var(--secondary-foreground));font:11px var(--compass-font-sans);border-radius:3px;flex:none;align-items:center;gap:6px;padding:5px 9px;display:inline-flex}.query-graph-action:hover{background:var(--vscode-button-secondaryHoverBackground,var(--workbench-hover))}.query-graph-action svg{width:14px;height:14px}.query-node-results{border:1px solid var(--query-border);background:var(--query-surface);border-radius:3px;overflow:hidden}.query-node-result{border-bottom:1px solid var(--query-border);grid-template-columns:18px minmax(160px,.72fr) minmax(240px,1.28fr);align-items:center;gap:9px;min-width:0;min-height:48px;padding:7px 10px;display:grid}.query-node-result:last-child{border-bottom:0}.query-node-result:hover{background:var(--workbench-hover)}.query-node-result>svg{width:14px;height:14px;color:var(--vscode-symbolIcon-functionForeground,var(--query-accent))}.query-node-copy,.query-node-copy h3,.query-node-copy p{min-width:0}.query-node-copy h3,.query-node-copy p{text-overflow:ellipsis;white-space:nowrap;margin:0;overflow:hidden}.query-node-copy h3{color:var(--vscode-editor-foreground,var(--foreground));font-size:12px;font-weight:600}.query-node-copy p{color:var(--muted-foreground);margin-top:2px;font-size:10px}.query-source-action{min-width:0;color:var(--workbench-link);font:10px/1.4 var(--compass-font-mono);text-align:left;background:0 0;border:1px solid #0000;border-radius:3px;justify-content:space-between;align-items:center;gap:8px;padding:5px 7px;display:flex;overflow:hidden}.query-source-action:hover{border-color:var(--query-border);background:var(--vscode-editorHoverWidget-background,var(--query-surface-raised))}.query-source-action span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.query-source-action small{color:var(--muted-foreground);font:10px var(--compass-font-mono);flex:none}.query-source-missing{color:var(--vscode-disabledForeground,var(--compass-faint));font:10px var(--compass-font-mono)}.query-table{border:1px solid var(--border);border-radius:3px;overflow:auto}.query-table table{border-collapse:collapse;width:100%;min-width:480px;font-size:11px}.query-table thead{background:var(--workbench-table-header);position:sticky;top:0}.query-table th,.query-table td{border-bottom:1px solid var(--border);text-align:left;text-overflow:ellipsis;white-space:nowrap;max-width:380px;padding:7px 9px;overflow:hidden}.query-table th{color:var(--muted-foreground);font-weight:500}.query-table tbody tr:hover{background:var(--workbench-hover)}.query-table tr:last-child td{border-bottom:0}.query-empty{place-content:center;display:grid}.query-history{text-align:center;width:min(720px,100vw - 40px);margin:-28px auto 20px}.query-history h2{color:var(--muted-foreground);margin:0 0 7px;font-size:10px;font-weight:500}.query-history button{text-overflow:ellipsis;max-width:min(100%,460px);margin:2px;overflow:hidden}.query-shell button:focus-visible{outline:2px solid var(--ring);outline-offset:1px}body.vscode-high-contrast .query-mode,body.vscode-high-contrast-light .query-mode,body.vscode-high-contrast .query-text-result,body.vscode-high-contrast-light .query-text-result,body.vscode-high-contrast .query-json-result,body.vscode-high-contrast-light .query-json-result,body.vscode-high-contrast .query-table,body.vscode-high-contrast-light .query-table,body.vscode-high-contrast .query-composer-panel,body.vscode-high-contrast-light .query-composer-panel,body.vscode-high-contrast .query-editor-shell,body.vscode-high-contrast-light .query-editor-shell,body.vscode-high-contrast .query-prose-result,body.vscode-high-contrast-light .query-prose-result,body.vscode-high-contrast .query-traversal-summary,body.vscode-high-contrast-light .query-traversal-summary,body.vscode-high-contrast .query-node-results,body.vscode-high-contrast-light .query-node-results,body.vscode-high-contrast .query-diagnostics,body.vscode-high-contrast-light .query-diagnostics,body.vscode-high-contrast .query-explanation-card,body.vscode-high-contrast-light .query-explanation-card,body.vscode-high-contrast .query-connections,body.vscode-high-contrast-light .query-connections,body.vscode-high-contrast .query-object-result,body.vscode-high-contrast-light .query-object-result,body.vscode-high-contrast .query-suggestions,body.vscode-high-contrast-light .query-suggestions,body.vscode-high-contrast .query-completion-status,body.vscode-high-contrast-light .query-completion-status{border-width:2px;border-color:var(--vscode-contrastBorder,var(--ring))}body.vscode-high-contrast .query-mode button[aria-selected=true],body.vscode-high-contrast-light .query-mode button[aria-selected=true]{border:2px solid var(--vscode-contrastBorder,var(--ring));border-bottom:0}.history-shell{background:var(--background);height:100vh;min-height:440px;color:var(--foreground);grid-template-columns:minmax(270px,340px) minmax(0,1fr);display:grid;overflow:hidden}.history-bootstrap{background:var(--vscode-editor-background,var(--background));place-items:center;min-height:100vh;display:grid}.history-sidebar{border-right:1px solid var(--border);background:var(--sidebar);min-width:0;min-height:0;color:var(--sidebar-foreground);flex-direction:column;display:flex}.history-sidebar-header{border-bottom:1px solid var(--border);flex:none;padding:14px 12px 12px}.history-title{align-items:flex-start;gap:9px;display:flex}.history-title>svg{width:16px;height:16px;color:var(--muted-foreground);margin-top:1px}.history-title h1{margin:0;font-size:13px;font-weight:600;line-height:1.25}.history-title p{color:var(--muted-foreground);margin:3px 0 0;font-size:11px}.history-search{align-items:center;margin-top:12px;display:flex;position:relative}.history-search>svg{width:14px;height:14px;color:var(--vscode-input-placeholderForeground,var(--muted-foreground));pointer-events:none;position:absolute;left:8px}.history-search input,.history-mobile-select select{border:1px solid var(--vscode-input-border,transparent);background:var(--vscode-input-background,var(--input));width:100%;min-height:28px;color:var(--vscode-input-foreground,var(--foreground));font:inherit;border-radius:2px;outline:none;font-size:12px}.history-search input{padding:4px 8px 4px 28px}.history-search input::placeholder{color:var(--vscode-input-placeholderForeground,var(--muted-foreground))}.history-search input:focus-visible,.history-mobile-select select:focus-visible,.history-rail:focus-visible,.history-commit:focus-visible{border-color:var(--ring);outline:1px solid var(--ring);outline-offset:-1px}.history-mobile-select{display:none}.history-rail{outline:none;flex:auto;min-height:0;overflow:auto}.history-pagination{border-top:1px solid var(--border);color:var(--muted-foreground);flex:none;justify-items:start;gap:6px;padding:8px 10px;font-size:11px;display:grid}.history-pagination [role=alert]{color:var(--destructive)}.history-commit{border:0;border-bottom:1px solid var(--border);width:100%;color:inherit;text-align:left;background:0 0;border-radius:0;align-items:center;gap:.625rem;padding:8px 11px;display:flex;position:absolute;left:0;right:0}.history-commit:hover{background:var(--workbench-hover);color:var(--workbench-hover-foreground)}.history-commit[aria-selected=true]{background:var(--sidebar-accent);color:var(--sidebar-accent-foreground);box-shadow:inset 2px 0 var(--sidebar-primary)}.history-commit>svg{width:15px;height:15px;color:var(--muted-foreground);flex:none}.history-commit>svg[data-state=available]{color:var(--compass-success)}.history-commit>svg[data-state=building]{color:var(--vscode-progressBar-background,var(--ring))}.history-commit>svg[data-state=failed]{color:var(--destructive)}.history-commit-row-copy,.history-commit-subject,.history-commit-byline{min-width:0}.history-commit-row-copy{flex:1;display:block}.history-commit-subject{text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:500;line-height:1.4;display:block;overflow:hidden}.history-commit-byline{color:var(--muted-foreground);white-space:nowrap;align-items:center;gap:5px;margin-top:3px;font-size:10px;display:flex;overflow:hidden}.history-commit[aria-selected=true] .history-commit-byline{color:currentColor}@supports (color:color-mix(in lab,red,red)){.history-commit[aria-selected=true] .history-commit-byline{color:color-mix(in srgb,currentColor 72%,transparent)}}.history-commit-byline code{color:inherit;font-family:var(--compass-font-mono)}.history-commit-byline span{text-overflow:ellipsis;overflow:hidden}.history-commit-byline time{margin-left:auto}.history-content{background:var(--vscode-editor-background,var(--background));min-width:0;min-height:0;padding:16px;overflow:auto}.history-commit-details{border:1px solid var(--border);background:var(--vscode-editor-background,var(--background));padding:14px}.history-commit-heading{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.history-commit-copy{min-width:0}.history-eyebrow{color:var(--muted-foreground);letter-spacing:.06em;text-transform:uppercase;font-size:10px;font-weight:600;display:block}.history-commit-copy h2{overflow-wrap:anywhere;margin:4px 0 0;font-size:16px;font-weight:600;line-height:1.35}.history-commit-metadata{color:var(--muted-foreground);flex-wrap:wrap;gap:4px 12px;margin-top:7px;font-size:11px;display:flex}.history-commit-metadata code{color:var(--vscode-textLink-foreground,var(--workbench-link));font-family:var(--compass-font-mono)}.history-state-badge{text-transform:capitalize;border-radius:2px;flex:none}.history-commit-actions,.history-change-counts{flex-wrap:wrap;margin-top:12px;display:flex}.history-commit-actions{align-items:flex-end;gap:10px}.history-change-counts{gap:6px}.history-change-counts-help{color:var(--vscode-descriptionForeground,#9aa7b7);margin:-.15rem 0 0;font-size:.78rem;line-height:1.45}.history-commit-actions:empty{display:none}.history-commit-actions button{border-radius:2px}.history-comparison-control{grid-template-columns:minmax(180px,1fr) auto;gap:5px 7px;min-width:min(100%,440px);display:grid}.history-comparison-control label{color:var(--muted-foreground);letter-spacing:.04em;text-transform:uppercase;grid-column:1/-1;font-size:10px;font-weight:600}.history-comparison-control select{border:1px solid var(--vscode-dropdown-border,var(--border));background:var(--vscode-dropdown-background,var(--background));min-width:0;height:28px;color:var(--vscode-dropdown-foreground,var(--foreground));border-radius:2px;outline:none;padding:0 26px 0 8px;font-size:11px}.history-comparison-control select option{background:var(--vscode-dropdown-background,var(--background));color:var(--vscode-dropdown-foreground,var(--foreground))}.history-comparison-control select:focus-visible{border-color:var(--vscode-focusBorder,var(--ring));outline:1px solid var(--vscode-focusBorder,var(--ring));outline-offset:-1px}.history-comparison-control select:disabled{color:var(--vscode-disabledForeground,var(--muted-foreground));cursor:not-allowed}.history-comparison-help,.history-inline-error{color:var(--muted-foreground);margin:9px 0 0;font-size:11px;line-height:1.45}.history-inline-error{color:var(--destructive)}.history-change-counts{color:var(--muted-foreground);font-size:11px}.history-change-counts span{border:1px solid var(--border);background:var(--vscode-badge-background,var(--muted));color:var(--vscode-badge-foreground,var(--foreground));border-radius:2px;padding:3px 6px}.history-change-counts strong{font-weight:600}.history-comparison,.history-diff-evidence{border:1px solid var(--border);background:var(--vscode-editor-background,var(--background));color:var(--vscode-editor-foreground,var(--foreground));margin-top:12px}.history-comparison{box-shadow:inset 3px 0 0 var(--vscode-focusBorder,var(--ring))}.history-comparison-heading{grid-template-columns:18px minmax(0,1fr) auto;align-items:start;gap:8px;padding:11px 12px 9px;display:grid}.history-comparison-heading>svg,.history-diff-heading>svg{width:15px;height:15px;color:var(--vscode-focusBorder,var(--ring));margin-top:2px}.history-comparison-heading h2{color:var(--vscode-editor-foreground,var(--foreground));margin:2px 0 0;font-size:13px;font-weight:600}.history-comparison-heading code{color:var(--vscode-textLink-foreground,var(--workbench-link));font-family:var(--compass-font-mono);background:0 0}.history-comparison-heading button{border:1px solid var(--border);min-height:26px;color:var(--foreground);background:0 0;border-radius:2px;align-items:center;gap:5px;padding:3px 7px;font-size:10px;display:inline-flex}.history-comparison-heading button:hover{border-color:var(--vscode-focusBorder,var(--ring));background:var(--workbench-hover)}.history-comparison-heading button svg{width:12px;height:12px}.history-comparison-legend{font:10px/1.4 var(--compass-font-mono);flex-wrap:wrap;gap:6px;padding:0 12px 10px 38px;display:flex}.history-delta-card{border:1px solid var(--border);background:var(--vscode-editor-foreground,var(--foreground));border-radius:2px;gap:4px;min-width:200px;padding:6px 8px;display:grid}@supports (color:color-mix(in lab,red,red)){.history-delta-card{background:color-mix(in srgb,var(--vscode-editor-foreground,var(--foreground)) 5%,var(--vscode-editor-background,var(--background)))}}.history-delta-card{color:var(--vscode-editor-foreground,var(--foreground))}.history-delta-card>span{flex-wrap:wrap;gap:5px 10px;display:flex}.history-delta-card strong{color:var(--vscode-editor-foreground,var(--foreground));text-transform:capitalize}.history-delta-card i{font-style:normal;font-weight:600}.history-delta-card i small{color:var(--muted-foreground);font-size:9px;font-weight:400}.history-delta-card i[data-change=added]{color:var(--vscode-gitDecoration-addedResourceForeground,#2ea043)}.history-delta-card i[data-change=removed]{color:var(--vscode-gitDecoration-deletedResourceForeground,#f85149)}.history-delta-card i[data-change=changed]{color:var(--vscode-gitDecoration-modifiedResourceForeground,#d29922)}.history-comparison-empty{border-top:1px solid var(--border);color:var(--muted-foreground);gap:2px;padding:9px 12px 10px 38px;font-size:11px;display:grid}.history-comparison-empty strong{color:var(--foreground);font-size:12px}.history-comparison-workspace{border:1px solid var(--border);background:var(--vscode-editor-background,var(--background));min-width:0;color:var(--vscode-editor-foreground,var(--foreground));margin-top:12px;overflow:hidden}.history-comparison-tabs{border-bottom:1px solid var(--border);background:var(--vscode-editorGroupHeader-tabsBackground,var(--vscode-sideBar-background,var(--background)));scrollbar-width:thin;min-width:0;display:flex;overflow-x:auto}.history-comparison-tabs button{border:0;border-right:1px solid var(--border);min-width:max-content;min-height:41px;color:var(--vscode-tab-inactiveForeground,var(--muted-foreground));font:11px/1 var(--compass-font-sans);background:0 0;align-items:center;gap:7px;padding:0 14px;display:inline-flex;position:relative}.history-comparison-tabs button:hover{background:var(--workbench-hover);color:var(--vscode-tab-activeForeground,var(--foreground))}.history-comparison-tabs button[aria-selected=true]{background:var(--vscode-tab-activeBackground,var(--vscode-editor-background,var(--background)));color:var(--vscode-tab-activeForeground,var(--foreground));box-shadow:inset 0 2px 0 var(--vscode-tab-activeBorder,var(--vscode-focusBorder,var(--ring)))}.history-comparison-tabs button:focus-visible{z-index:1;outline:1px solid var(--vscode-focusBorder,var(--ring));outline-offset:-2px}.history-comparison-tabs button>svg{width:14px;height:14px;color:var(--vscode-focusBorder,var(--ring))}.history-comparison-tab-count{border:1px solid var(--border);background:var(--vscode-badge-background,var(--muted));min-width:19px;height:19px;color:var(--vscode-badge-foreground,var(--foreground));font:9px/1 var(--compass-font-mono);border-radius:9px;justify-content:center;align-items:center;padding:0 5px;display:inline-flex}.history-comparison-tab-panel{background:var(--vscode-editor-background,var(--background));min-width:0}.history-evidence-panel{min-width:0;padding:15px 15px 17px}.history-evidence-header{border-bottom:1px solid var(--border);padding-bottom:12px}.history-evidence-header>p,.history-findings-header>div>p{color:var(--muted-foreground);margin:4px 0 0 22px;font-size:11px;line-height:1.45}.history-diff-heading{align-items:center;gap:7px;display:flex}.history-diff-heading h2{margin:0;font-size:13px;font-weight:600}.history-findings-header{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.history-findings-expand{border:1px solid var(--border);min-height:27px;color:var(--foreground);background:0 0;border-radius:2px;flex:none;padding:4px 9px;font-size:10px}.history-findings-expand:hover{border-color:var(--vscode-focusBorder,var(--ring));background:var(--workbench-hover)}.history-source-changes{gap:6px;margin-top:12px;display:grid}.history-source-changes details{border:1px solid var(--border);background:var(--vscode-editor-background,var(--background));color:var(--vscode-editor-foreground,var(--foreground));border-radius:2px;overflow:hidden}.history-diff-toolbar{align-items:center;gap:6px;margin-top:12px;display:flex}.history-diff-layout{border:1px solid var(--border);border-radius:2px;display:inline-flex;overflow:hidden}.history-diff-toolbar button{min-height:25px;color:var(--muted-foreground);background:0 0;border:0;padding:3px 8px;font-size:10px}.history-diff-layout button+button{border-left:1px solid var(--border)}.history-diff-toolbar button:hover:not(:disabled){background:var(--workbench-hover);color:var(--foreground)}.history-diff-toolbar button[aria-pressed=true],.history-diff-toolbar button[aria-pressed=true]:hover{background:var(--vscode-tab-activeBackground,var(--vscode-editor-background,var(--background)));color:var(--vscode-tab-activeForeground,var(--vscode-editor-foreground,var(--foreground)));box-shadow:inset 0 2px 0 var(--vscode-tab-activeBorder,var(--vscode-focusBorder,var(--ring)))}.history-diff-toolbar button:disabled{cursor:not-allowed;opacity:.45}.history-diff-wrap{min-height:25px;color:var(--muted-foreground);align-items:center;gap:5px;font-size:10px;display:inline-flex}.history-diff-wrap input{margin:0}.history-diff-expand{border-radius:2px;margin-left:auto;border:1px solid var(--border)!important}.history-source-changes summary{cursor:pointer;border-bottom:1px solid var(--border);background:var(--vscode-editorGroupHeader-tabsBackground,var(--background));justify-content:space-between;align-items:center;gap:10px;padding:6px 8px;font-size:10px;display:flex}.history-source-path{align-items:center;gap:8px;min-width:0;display:inline-flex}.history-source-path code{color:var(--vscode-textLink-foreground,var(--workbench-link));font-family:var(--compass-font-mono);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.history-source-path small{color:var(--muted-foreground);text-transform:capitalize;font-size:9px}.history-source-stats{font-family:var(--compass-font-mono);flex:none;gap:6px;display:inline-flex}.history-source-stats i{font-style:normal;font-weight:600}.history-source-stats i[data-change=added]{color:var(--vscode-gitDecoration-addedResourceForeground,#2ea043)}.history-source-stats i[data-change=removed]{color:var(--vscode-gitDecoration-deletedResourceForeground,#f85149)}.history-source-diff{contain:inline-size;background:var(--vscode-editor-background,var(--background));width:100%;min-width:0;max-width:100%;display:block}.history-diff-fallback>p{border-bottom:1px solid var(--border);color:var(--vscode-gitDecoration-modifiedResourceForeground,#d29922);margin:0;padding:7px 8px}.history-diff-fallback pre{max-height:260px;color:var(--vscode-editor-foreground,var(--foreground));font:10px/1.5 var(--compass-font-mono);white-space:pre;margin:0;padding:8px;overflow:auto}.history-source-changes p,.history-diff-empty{color:var(--muted-foreground);margin:12px 0 0;font-size:11px}.history-finding-list{gap:10px;margin-top:14px;display:grid}.history-finding-list details{border:1px solid var(--border);background:var(--vscode-editor-foreground,var(--foreground));border-radius:4px;overflow:hidden}@supports (color:color-mix(in lab,red,red)){.history-finding-list details{background:color-mix(in srgb,var(--vscode-editor-foreground,var(--foreground)) 2%,var(--vscode-editor-background,var(--background)))}}.history-finding-list details{color:var(--vscode-editor-foreground,var(--foreground))}.history-finding-list details[open]{border-color:var(--vscode-focusBorder,var(--ring))}@supports (color:color-mix(in lab,red,red)){.history-finding-list details[open]{border-color:color-mix(in srgb,var(--vscode-focusBorder,var(--ring)) 58%,var(--border))}}.history-finding-list details[open]{box-shadow:inset 3px 0 0 var(--vscode-focusBorder,var(--ring))}.history-finding-list summary{cursor:pointer;grid-template-columns:28px minmax(0,1fr) 16px;align-items:center;gap:11px;min-height:58px;padding:11px 13px;list-style:none;display:grid}.history-finding-list summary::-webkit-details-marker{display:none}.history-finding-list summary:hover{background:var(--workbench-hover)}.history-finding-list summary:focus-visible{outline:1px solid var(--vscode-focusBorder,var(--ring));outline-offset:-2px}.history-finding-index{border:1px solid var(--border);background:var(--vscode-editor-background,var(--background));width:27px;height:27px;color:var(--vscode-focusBorder,var(--ring));font:600 10px/1 var(--compass-font-mono);border-radius:3px;justify-content:center;align-items:center;display:inline-flex}.history-finding-summary{gap:4px;min-width:0;display:grid}.history-finding-summary strong{text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:600;line-height:1.35;overflow:hidden}.history-finding-summary small{color:var(--muted-foreground);font-size:10px}.history-finding-list summary>svg{width:15px;height:15px;color:var(--muted-foreground);transition:transform .12s}.history-finding-list details[open] summary>svg{transform:rotate(90deg)}.history-finding-body{border-top:1px solid var(--border);padding:0 14px 15px 52px}.history-finding-body>p{color:var(--muted-foreground);margin:13px 0 0;font-size:11px}.history-finding-body dl{gap:0;margin:0;display:grid}.history-finding-body dl>div{border-bottom:1px solid var(--border);grid-template-columns:minmax(110px,170px) minmax(0,1fr);gap:16px;padding:12px 0;display:grid}.history-finding-body dl>div:last-child{border-bottom:0;padding-bottom:0}.history-finding-body dt{color:var(--muted-foreground);letter-spacing:.06em;text-transform:uppercase;font-size:9px;font-weight:600}.history-finding-body dd{min-width:0;margin:0;font-size:11px;line-height:1.5}.history-finding-body dd ul{gap:5px;margin:0;padding-left:17px;display:grid}.history-finding-body dd pre{border:1px solid var(--border);background:var(--vscode-textCodeBlock-background,var(--muted));max-height:280px;color:var(--vscode-editor-foreground,var(--foreground));font:10px/1.55 var(--compass-font-mono);white-space:pre-wrap;border-radius:3px;margin:0;padding:9px 10px;overflow:auto}.history-finding-body dd code{font-family:var(--compass-font-mono)}.history-finding-muted{color:var(--muted-foreground);font-style:italic}.history-findings-empty{border:1px dashed var(--border);color:var(--muted-foreground);border-radius:4px;align-items:flex-start;gap:10px;margin-top:14px;padding:15px;display:flex}.history-findings-empty>svg{width:17px;height:17px;color:var(--vscode-focusBorder,var(--ring))}.history-findings-empty strong{color:var(--foreground);font-size:12px}.history-findings-empty p{margin:4px 0 0;font-size:11px}.history-standalone-evidence{gap:12px;margin-top:12px;display:grid}.history-standalone-evidence>section{border:1px solid var(--border);background:var(--vscode-editor-background,var(--background))}.history-graph-frame{border:1px solid var(--border);background:var(--vscode-editor-background,var(--background));height:max(400px,100vh - 190px);min-height:360px;margin-top:12px;display:grid;overflow:hidden}.history-graph-frame-tabbed{border:0;height:max(460px,100vh - 230px);min-height:420px;margin-top:0}.history-graph-ready,.history-graph-canvas{min-width:0;min-height:0}.history-graph-ready{flex-direction:column;display:flex}.history-graph-status{border-bottom:1px solid var(--border);background:var(--vscode-editorGroupHeader-tabsBackground,var(--background));min-height:30px;color:var(--muted-foreground);flex:none;padding:7px 10px;font-size:11px}.history-graph-status span{color:var(--foreground);font-family:var(--compass-font-mono)}.history-graph-canvas{isolation:isolate;flex:1;position:relative}.history-graph-canvas .compass-workspace{height:100%;min-height:0}.history-content>section:last-child{margin-top:12px}body.vscode-high-contrast .history-sidebar,body.vscode-high-contrast-light .history-sidebar,body.vscode-high-contrast .history-commit-details,body.vscode-high-contrast-light .history-commit-details,body.vscode-high-contrast .history-graph-frame,body.vscode-high-contrast-light .history-graph-frame,body.vscode-high-contrast .history-comparison,body.vscode-high-contrast-light .history-comparison,body.vscode-high-contrast .history-diff-evidence,body.vscode-high-contrast-light .history-diff-evidence,body.vscode-high-contrast .history-comparison-workspace,body.vscode-high-contrast-light .history-comparison-workspace,body.vscode-high-contrast .history-finding-list details,body.vscode-high-contrast-light .history-finding-list details,body.vscode-high-contrast .history-source-changes details,body.vscode-high-contrast-light .history-source-changes details,body.vscode-high-contrast .history-change-counts span,body.vscode-high-contrast-light .history-change-counts span,body.vscode-high-contrast .history-comparison-control select,body.vscode-high-contrast-light .history-comparison-control select,body.vscode-high-contrast .compass-change-legend,body.vscode-high-contrast-light .compass-change-legend,body.vscode-high-contrast .compass-semantic-legend,body.vscode-high-contrast-light .compass-semantic-legend,body.vscode-high-contrast .compass-change-badge,body.vscode-high-contrast-light .compass-change-badge{border-color:var(--vscode-contrastBorder,var(--ring));border-width:2px}@media(max-width:760px){.query-header{padding:10px}.query-heading-row,.query-composer{flex-direction:column;align-items:stretch}.query-mode{align-self:flex-start}.query-mode button{min-width:180px}.query-mode small{display:none}.query-suggestions button{grid-template-columns:1fr;gap:2px}.query-suggestions button>small,.query-suggestions-hint{display:none}.query-explanation-card{grid-template-columns:1fr}.query-explanation-card dl{grid-column:auto}.history-diff-toolbar{flex-wrap:wrap}.history-comparison-control{grid-template-columns:1fr;width:100%}.history-commit-actions{flex-direction:column;align-items:stretch}.history-commit-actions>button{align-self:flex-start}.history-comparison-control label{grid-column:auto}.history-diff-expand{margin-left:0}.history-comparison-tabs button{min-height:39px;padding-inline:11px}.history-evidence-panel{padding:12px}.history-findings-header{flex-direction:column;align-items:stretch}.history-findings-expand{align-self:flex-start}.history-finding-body{padding-left:14px}.history-finding-body dl>div{grid-template-columns:1fr;gap:5px}.query-composer-footer{flex-wrap:wrap}.query-params{flex:1 0 100%;max-width:none}.query-params input{max-width:none}.query-footer-actions{justify-content:flex-end;width:100%}.query-examples{padding-bottom:2px}.compass-load-shell[data-variant=architecture]{text-align:center;grid-template-rows:auto auto auto;grid-template-columns:1fr}.compass-load-shell[data-variant=architecture] .compass-load-visual,.compass-load-shell[data-variant=architecture] .compass-load-copy,.architecture-load-skeleton{grid-column:1}.compass-load-shell[data-variant=architecture] .compass-load-visual{margin:0 auto}.compass-load-shell[data-variant=architecture] .compass-load-steps{justify-content:center}.architecture-load-skeleton{grid-row:3;width:min(88vw,460px);height:190px;margin-top:14px}.history-shell{grid-template-rows:auto minmax(0,1fr);grid-template-columns:1fr}.history-sidebar{border-right:0;border-bottom:1px solid var(--border)}.history-sidebar-header{padding:10px}.history-title p,.history-search,.history-rail{display:none}.history-mobile-select{color:var(--muted-foreground);gap:4px;margin-top:9px;font-size:10px;display:grid}.history-mobile-select select{padding:4px 7px}.history-content{padding:10px}.history-commit-heading{gap:8px}.history-commit-metadata{gap:3px;display:grid}.history-graph-frame{height:max(750px,102vh + 30px);margin-top:10px}.history-graph-canvas .compass-workspace{height:auto;min-height:max(720px,102vh)}}@media(max-width:420px){.query-params{flex-direction:column;align-items:stretch;gap:4px}.query-params input{flex:none;width:100%}}.architecture-nav{border-right:1px solid var(--border);background:var(--sidebar);min-height:0;color:var(--sidebar-foreground);flex-direction:column;display:flex}.architecture-nav-header{border-bottom:1px solid var(--border);padding:14px 14px 12px}.architecture-nav-header>span,.architecture-eyebrow{color:var(--muted-foreground);letter-spacing:.08em;text-transform:uppercase;font-size:10px;font-weight:600;display:block}.architecture-nav-header h1{text-overflow:ellipsis;white-space:nowrap;margin:4px 0 0;font-size:13px;font-weight:600;line-height:1.35;overflow:hidden}.architecture-section-list{flex:1;min-height:0;padding:5px;overflow:auto}.architecture-section-list>button{width:100%;min-height:48px;color:inherit;text-align:left;background:0 0;border:1px solid #0000;border-radius:3px;grid-template-columns:18px minmax(0,1fr);align-items:start;gap:7px;padding:7px 8px;display:grid}.architecture-section-list>button:hover{background:var(--workbench-hover);color:var(--workbench-hover-foreground)}.architecture-section-list>button[aria-current=page]{border-color:var(--vscode-list-activeSelectionBackground,var(--sidebar-primary));background:var(--sidebar-accent);color:var(--sidebar-accent-foreground)}.architecture-section-list svg{width:14px;height:14px;margin-top:2px}.architecture-section-list strong,.architecture-section-list small{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.architecture-section-list strong{font-size:12px;font-weight:500}.architecture-section-list small{color:var(--muted-foreground);margin-top:2px;font-size:10px}.architecture-section-list>button[aria-current=page] small{color:inherit;opacity:.78}.architecture-stats{border-top:1px solid var(--border);color:var(--muted-foreground);text-align:center;grid-template-columns:repeat(3,1fr);gap:1px;padding:8px 6px;font-size:9px;display:grid}.architecture-stats strong{color:var(--sidebar-foreground);margin-bottom:1px;font-size:11px;display:block}.architecture-main{min-width:0;padding:14px clamp(14px,2.2vw,24px) 32px;overflow:auto}.architecture-global-search{z-index:20;max-width:760px;margin:0 auto 18px;position:sticky;top:0}.architecture-global-search>label{align-items:center;display:flex;position:relative}.architecture-global-search>label>svg{width:15px;height:15px;color:var(--vscode-input-placeholderForeground,var(--muted-foreground));position:absolute;left:10px}.architecture-global-search input{border:1px solid var(--vscode-input-border,var(--border));background:var(--vscode-input-background,var(--input));width:100%;height:34px;color:var(--vscode-input-foreground,var(--foreground));font:inherit;border-radius:3px;outline:none;padding:5px 84px 5px 33px;font-size:12px}.architecture-global-search input:focus-visible{border-color:var(--ring);outline:1px solid var(--ring);outline-offset:-1px}.architecture-global-search label>span{color:var(--muted-foreground);font-size:10px;position:absolute;right:8px}.architecture-search-results{border:1px solid var(--vscode-menu-border,var(--border));background:var(--vscode-menu-background,var(--popover));max-height:min(440px,65vh);color:var(--vscode-menu-foreground,var(--popover-foreground));box-shadow:0 4px 12px var(--vscode-widget-shadow,#00000047);border-radius:3px;position:absolute;top:calc(100% + 2px);left:0;right:0;overflow:auto}.architecture-search-results>p{color:var(--muted-foreground);margin:0;padding:14px;font-size:12px}.architecture-search-results section+section{border-top:1px solid var(--vscode-menu-separatorBackground,var(--border))}.architecture-search-results h2{color:var(--muted-foreground);letter-spacing:.06em;text-transform:uppercase;margin:0;padding:7px 10px 4px;font-size:10px;font-weight:600}.architecture-search-results button{width:100%;color:inherit;text-align:left;background:0 0;border:0;padding:6px 10px;display:block}.architecture-search-results button:hover,.architecture-search-results button:focus-visible{background:var(--vscode-menu-selectionBackground,var(--vscode-list-activeSelectionBackground,var(--accent)));color:var(--vscode-menu-selectionForeground,var(--vscode-list-activeSelectionForeground,var(--accent-foreground)));outline:none}.architecture-search-results button span,.architecture-search-results button small{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.architecture-search-results button span{font-size:12px}.architecture-search-results button small{color:inherit;opacity:.72;margin-top:2px;font-size:10px}.architecture-overview,.architecture-detail{max-width:1500px;margin-left:auto;margin-right:auto}.architecture-detail{margin-top:26px}.architecture-section-heading{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:10px;display:flex}.architecture-section-heading h2{margin:0;font-size:15px;font-weight:600;line-height:1.35}.architecture-section-heading p{color:var(--muted-foreground);margin:3px 0 0;font-size:11px}.architecture-detail-count{color:var(--muted-foreground);white-space:nowrap;font-size:11px}.architecture-flow-grid,.architecture-symbol-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:6px;display:grid}.architecture-flow{border:1px solid var(--border);background:var(--vscode-editorWidget-background,var(--card));min-width:0;min-height:38px;color:var(--foreground);font:inherit;text-align:left;border-radius:3px;grid-template-columns:minmax(0,1fr) 14px minmax(0,1fr) auto;align-items:center;gap:6px;padding:6px 8px;font-size:11px;display:grid}.architecture-flow:hover{border-color:var(--vscode-focusBorder,var(--ring));background:var(--workbench-hover)}.architecture-flow>span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.architecture-flow>svg{width:13px;height:13px;color:var(--muted-foreground)}.architecture-flow-footer{justify-content:space-between;align-items:center;gap:10px;margin-top:8px;display:flex}.architecture-flow-footer p{color:var(--muted-foreground);margin:0;font-size:10px}.architecture-flow-footer button{border:1px solid var(--border);color:var(--foreground);font:inherit;background:0 0;border-radius:3px;padding:3px 7px;font-size:10px}.architecture-tab-content{min-height:280px;padding-top:8px}.architecture-detail [data-slot=tabs-list]{border-bottom:1px solid var(--border);justify-content:flex-start;gap:0;width:100%;height:30px;padding:0}.architecture-detail [data-slot=tabs-trigger]{min-width:76px;height:30px;color:var(--muted-foreground);border-radius:0;flex:none;padding:4px 10px;font-size:11px;font-weight:500}.architecture-detail [data-slot=tabs-trigger][data-state=active]{color:var(--foreground)}.architecture-detail [data-slot=tabs-trigger]>span{background:var(--vscode-badge-background,var(--muted));min-width:22px;color:var(--vscode-badge-foreground,var(--muted-foreground));font:9px/1.4 var(--compass-font-mono);border-radius:9px;margin-left:4px;padding:1px 5px}.architecture-detail [data-slot=tabs-trigger][data-state=active]>span{color:var(--vscode-badge-foreground,var(--foreground))}.architecture-detail [data-slot=tabs-trigger]:after{background:var(--vscode-tab-activeBorder,var(--ring));bottom:-1px}.architecture-symbol-grid{grid-template-columns:repeat(auto-fill,minmax(210px,1fr));margin-top:8px}.architecture-symbol-card{border:1px solid var(--border);background:var(--vscode-editorWidget-background,var(--card));min-width:0;min-height:92px;color:var(--card-foreground);border-radius:3px;grid-template-rows:auto 1fr;grid-template-columns:18px minmax(0,1fr);gap:0 7px;padding:9px;display:grid}.architecture-symbol-card>svg{width:15px;height:15px;color:var(--vscode-symbolIcon-functionForeground,var(--muted-foreground));margin-top:1px}.architecture-symbol-card h3,.architecture-symbol-card p{text-overflow:ellipsis;white-space:nowrap;margin:0;overflow:hidden}.architecture-symbol-card h3{color:var(--vscode-editor-foreground,var(--foreground));font-size:12px;font-weight:600}.architecture-symbol-card p{color:var(--muted-foreground);margin-top:2px;font-size:10px}.architecture-symbol-card>button,.architecture-symbol-card>span{color:var(--workbench-link);font:10px/1.35 var(--compass-font-mono);text-align:left;text-overflow:ellipsis;white-space:nowrap;background:0 0;border:0;grid-column:1/span 2;align-self:end;margin-top:9px;padding:0;overflow:hidden}.architecture-symbol-card>button:hover{text-decoration:underline}.architecture-symbol-card>span{color:var(--vscode-disabledForeground,var(--compass-faint))}.architecture-call-table{border:1px solid var(--border);border-radius:3px;max-height:min(54vh,620px);margin-top:8px;overflow:auto}.architecture-call-table table{border-collapse:collapse;table-layout:fixed;width:100%;min-width:620px;font-size:11px}.architecture-call-table thead{z-index:2;background:var(--workbench-table-header);position:sticky;top:0}.architecture-call-table th,.architecture-call-table td{border-bottom:1px solid var(--border);text-align:left;text-overflow:ellipsis;white-space:nowrap;padding:7px 9px;overflow:hidden}.architecture-call-table th{color:var(--muted-foreground);padding:0;font-weight:500}.architecture-call-table th button{width:100%;min-height:30px;color:inherit;font:inherit;text-align:left;background:0 0;border:0;align-items:center;gap:5px;padding:6px 9px;display:flex}.architecture-call-table th button:hover{background:var(--workbench-hover);color:var(--foreground)}.architecture-call-table tbody tr:hover{background:var(--workbench-hover)}.architecture-call-table tr:last-child td{border-bottom:0}.architecture-call-table th:nth-child(2),.architecture-call-table th:nth-child(4),.architecture-call-table td:nth-child(2),.architecture-call-table td:nth-child(4){width:126px}.architecture-shell button:focus-visible,.architecture-shell input:focus-visible{outline:2px solid var(--ring);outline-offset:1px}body.vscode-high-contrast .architecture-section-list>button[aria-current=page],body.vscode-high-contrast-light .architecture-section-list>button[aria-current=page],body.vscode-high-contrast .architecture-flow:focus-visible,body.vscode-high-contrast-light .architecture-flow:focus-visible,body.vscode-high-contrast .architecture-symbol-card,body.vscode-high-contrast-light .architecture-symbol-card,body.vscode-high-contrast .architecture-call-table,body.vscode-high-contrast-light .architecture-call-table{border-width:2px;border-color:var(--vscode-contrastBorder,var(--ring))}@media(max-width:760px){.architecture-shell{grid-template-rows:auto 1fr;grid-template-columns:1fr}.architecture-nav{border-right:0;border-bottom:1px solid var(--border);max-height:38vh}.architecture-main{padding:10px 10px 24px}.architecture-global-search{margin-bottom:14px}.architecture-section-heading{align-items:flex-start}.architecture-flow-grid,.architecture-symbol-grid{grid-template-columns:1fr}.architecture-flow-footer,.workbench-pagination{flex-direction:column;align-items:flex-start}.workbench-collection-toolbar{flex-direction:column;align-items:stretch}.workbench-search{width:100%;max-width:none}}.architecture-workspace{--architecture-border:var(--vscode-panel-border,var(--border));--architecture-surface:var(--vscode-editor-background,var(--background));--architecture-raised:var(--vscode-editorWidget-background,var(--vscode-sideBar-background,var(--card)));background:var(--architecture-surface);height:100vh;min-height:520px;color:var(--vscode-editor-foreground,var(--foreground));grid-template-columns:minmax(210px,240px) minmax(520px,1fr) minmax(300px,350px);display:grid;overflow:hidden}.architecture-workspace[data-inspector-open=false]{grid-template-columns:minmax(210px,240px) minmax(520px,1fr)}.architecture-rail,.architecture-inspector{background:var(--vscode-sideBar-background,var(--sidebar));min-width:0;min-height:0}.architecture-rail{border-right:1px solid var(--architecture-border);grid-template-rows:auto 1fr auto;display:grid}.architecture-rail-header,.architecture-inspector-header{border-bottom:1px solid var(--architecture-border);padding:16px}.architecture-rail-header>span,.architecture-inspector-header>span{color:var(--vscode-descriptionForeground,var(--muted-foreground));font:700 9px/1.2 var(--compass-font-mono);letter-spacing:.13em;text-transform:uppercase}.architecture-rail-header h1,.architecture-inspector-header h2{text-overflow:ellipsis;margin:7px 0 0;font-size:14px;font-weight:650;line-height:1.35;overflow:hidden}.architecture-rail-header p,.architecture-inspector-header p{color:var(--vscode-descriptionForeground,var(--muted-foreground));margin:5px 0 0;font-size:10px}.architecture-rail nav{min-height:0;padding:6px;overflow:auto}.architecture-rail nav>button{width:100%;color:inherit;text-align:left;background:0 0;border:1px solid #0000;border-radius:5px;grid-template-columns:18px minmax(0,1fr) auto;align-items:center;gap:7px;padding:8px;display:grid}.architecture-rail nav>button:hover,.architecture-rail nav>button:focus-visible{background:var(--vscode-list-hoverBackground,var(--workbench-hover))}.architecture-rail nav>button[aria-current=page]{border-color:var(--vscode-focusBorder,var(--ring))}@supports (color:color-mix(in lab,red,red)){.architecture-rail nav>button[aria-current=page]{border-color:color-mix(in srgb,var(--vscode-focusBorder,var(--ring)) 48%,transparent)}}.architecture-rail nav>button[aria-current=page]{background:var(--vscode-list-activeSelectionBackground,var(--vscode-sideBarSectionHeader-background,var(--sidebar-accent)));color:var(--vscode-list-activeSelectionForeground,inherit)}.architecture-rail nav>button[data-empty=true]{opacity:.57}.architecture-rail nav svg{width:14px;height:14px;color:var(--vscode-symbolIcon-moduleForeground,var(--compass-focus))}.architecture-rail nav strong,.architecture-rail nav small{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.architecture-rail nav strong{font-size:11px;font-weight:600}.architecture-rail nav small{color:var(--vscode-descriptionForeground,var(--muted-foreground));font:9px/1.35 var(--compass-font-mono);margin-top:2px}.architecture-rail nav i{background:var(--vscode-badge-background,var(--muted));min-width:24px;color:var(--vscode-badge-foreground,var(--muted-foreground));font:normal 9px/1.3 var(--compass-font-mono);text-align:center;border-radius:10px;padding:2px 5px}.architecture-scope-totals{border-top:1px solid var(--architecture-border);color:var(--vscode-descriptionForeground,var(--muted-foreground));text-align:center;grid-template-columns:repeat(3,1fr);padding:10px 6px;font-size:8px;display:grid}.architecture-scope-totals strong{color:var(--vscode-sideBar-foreground,var(--foreground));font:600 10px/1.2 var(--compass-font-mono);margin-bottom:2px;display:block}.architecture-stage{grid-template-rows:auto auto minmax(0,1fr);min-width:0;min-height:0;display:grid;overflow:hidden}.architecture-command-bar{border-bottom:1px solid var(--architecture-border);background:var(--architecture-surface);grid-template-columns:minmax(240px,1fr) auto auto 30px;align-items:center;gap:8px;padding:9px 12px;display:grid}.architecture-inspector-toggle{border:1px solid var(--architecture-border);background:var(--architecture-raised);width:30px;height:30px;color:var(--vscode-descriptionForeground,var(--muted-foreground));border-radius:4px;place-items:center;display:grid}.architecture-inspector-toggle:hover{background:var(--vscode-toolbar-hoverBackground,var(--workbench-hover));color:var(--foreground)}.architecture-inspector-toggle svg{width:14px;height:14px}.architecture-search{min-width:0;position:relative}.architecture-search>svg,.architecture-detail-filter>svg{z-index:1;width:13px;height:13px;color:var(--vscode-input-placeholderForeground,var(--muted-foreground));pointer-events:none;position:absolute;top:50%;left:9px;transform:translateY(-50%)}.architecture-search>input,.architecture-detail-filter>input,.architecture-evidence-filter select{border:1px solid var(--vscode-input-border,var(--architecture-border));background:var(--vscode-input-background,var(--input));width:100%;height:30px;color:var(--vscode-input-foreground,var(--foreground));font:11px/1.3 var(--vscode-font-family,system-ui);border-radius:4px;outline:none}.architecture-search>input,.architecture-detail-filter>input{padding:4px 72px 4px 29px}.architecture-search>input:focus,.architecture-detail-filter>input:focus,.architecture-evidence-filter select:focus{border-color:var(--vscode-focusBorder,var(--ring));outline:1px solid var(--vscode-focusBorder,var(--ring));outline-offset:-1px}.architecture-search>span{color:var(--vscode-descriptionForeground,var(--muted-foreground));font:9px/1.4 var(--compass-font-mono);position:absolute;top:8px;right:8px}.architecture-search-popover{z-index:30;border:1px solid var(--vscode-menu-border,var(--architecture-border));background:var(--vscode-menu-background,var(--popover));max-height:min(440px,70vh);box-shadow:0 8px 24px var(--vscode-widget-shadow,#00000047);border-radius:5px;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow:auto}.architecture-search-popover>button{width:100%;color:var(--vscode-menu-foreground,var(--foreground));text-align:left;background:0 0;border:0;padding:7px 10px;display:block}.architecture-search-popover>button:hover,.architecture-search-popover>button:focus-visible{background:var(--vscode-menu-selectionBackground,var(--accent));color:var(--vscode-menu-selectionForeground,var(--accent-foreground))}.architecture-search-popover strong,.architecture-search-popover small{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.architecture-search-popover strong{font-size:11px}.architecture-search-popover small{opacity:.75;margin-top:2px;font-size:9px}.architecture-search-popover p{color:var(--muted-foreground);margin:0;padding:16px;font-size:11px}.architecture-directory-pagination{border-top:1px solid var(--architecture-border);font:9px/1.2 var(--compass-font-mono);justify-content:space-between;align-items:center;gap:8px;padding:6px 8px;display:flex}.architecture-directory-pagination button{border:1px solid var(--architecture-border);color:inherit;background:0 0;border-radius:4px;padding:3px 7px}.architecture-scope-switch{border:1px solid var(--architecture-border);border-radius:4px;display:flex;overflow:hidden}.architecture-scope-switch button{min-height:28px;color:var(--vscode-descriptionForeground,var(--muted-foreground));font:10px/1.2 var(--compass-font-mono);background:0 0;border:0;padding:4px 9px}.architecture-scope-switch button+button{border-left:1px solid var(--architecture-border)}.architecture-scope-switch button[aria-pressed=true]{background:var(--vscode-button-secondaryBackground,var(--accent));color:var(--vscode-button-secondaryForeground,var(--accent-foreground))}.architecture-evidence-filter{align-items:center;gap:5px;display:flex}.architecture-evidence-filter>svg{width:13px;height:13px;color:var(--vscode-descriptionForeground,var(--muted-foreground))}.architecture-evidence-filter select{width:auto;min-width:110px;padding:3px 22px 3px 7px}.architecture-context-strip{border-bottom:1px solid var(--architecture-border);background:var(--vscode-breadcrumb-background,var(--architecture-raised));min-height:34px;color:var(--vscode-descriptionForeground,var(--muted-foreground));font:9px/1.3 var(--compass-font-mono);flex-wrap:wrap;align-items:center;gap:6px 14px;padding:6px 12px;display:flex}.architecture-context-strip strong{color:var(--vscode-foreground,var(--foreground));font-weight:600}.architecture-context-strip button{border:1px solid var(--architecture-border);color:var(--vscode-textLink-foreground,var(--primary));font:inherit;cursor:pointer;background:0 0;border-radius:4px;padding:1px 5px}.architecture-quality-status{border:1px solid var(--architecture-border);text-transform:capitalize;border-radius:999px;padding:2px 6px}.architecture-quality-status[data-status=good]{color:var(--vscode-testing-iconPassed,var(--success))}.architecture-quality-status[data-status=degraded]{color:var(--vscode-editorWarning-foreground,var(--warning))}.architecture-quality-status[data-status=insufficient]{color:var(--vscode-editorError-foreground,var(--destructive))}.architecture-coverage-warning{color:var(--vscode-editorWarning-foreground,var(--warning));align-items:center;gap:4px;display:inline-flex}.architecture-omitted-selection{border:1px solid var(--compass-border);color:var(--compass-muted);background:var(--compass-surface-raised);border-radius:8px;margin:12px 14px 0;padding:8px 10px}@supports (color:color-mix(in lab,red,red)){.architecture-omitted-selection{background:color-mix(in srgb,var(--compass-surface-raised) 88%,transparent)}}.architecture-coverage-warning svg{width:12px;height:12px}.architecture-map-panel{border:1px solid var(--architecture-border);background:var(--architecture-raised);border-radius:10px;grid-template-rows:auto minmax(0,1fr) auto;min-width:0;min-height:0;margin:clamp(14px,2vw,24px);display:grid;position:relative;overflow:hidden;box-shadow:0 12px 32px #0000001a}.architecture-map-header{border-bottom:1px solid var(--architecture-border);background:var(--architecture-raised);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px 24px;min-width:0;padding:14px 16px;display:flex}.architecture-map-intro{gap:3px;min-width:min(100%,260px);display:grid}.architecture-map-intro>span{color:var(--vscode-descriptionForeground,var(--muted-foreground));font:700 8px/1.2 var(--compass-font-mono);letter-spacing:.14em;text-transform:uppercase}.architecture-map-intro>strong{overflow-wrap:anywhere;font-size:12px;font-weight:650;line-height:1.35}.architecture-map-intro>small{max-width:560px;color:var(--vscode-descriptionForeground,var(--muted-foreground));font-size:9.5px;line-height:1.45}.architecture-map-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;min-width:0;display:flex}.architecture-map-viewport{overscroll-behavior:contain;scrollbar-color:var(--vscode-scrollbarSlider-background,var(--muted)) transparent;scrollbar-gutter:stable;min-width:0;height:auto;min-height:0;box-shadow:inset -26px 0 22px -24px var(--foreground);position:relative;overflow:auto}@supports (color:color-mix(in lab,red,red)){.architecture-map-viewport{box-shadow:inset -26px 0 22px -24px color-mix(in srgb,var(--foreground) 30%,transparent)}}.architecture-map-viewport{background:linear-gradient(var(--vscode-editorRuler-foreground,var(--border)) 1px,transparent 1px),linear-gradient(90deg,var(--vscode-editorRuler-foreground,var(--border)) 1px,transparent 1px),var(--architecture-surface)}@supports (color:color-mix(in lab,red,red)){.architecture-map-viewport{background:linear-gradient(color-mix(in srgb,var(--vscode-editorRuler-foreground,var(--border)) 9%,transparent) 1px,transparent 1px),linear-gradient(90deg,color-mix(in srgb,var(--vscode-editorRuler-foreground,var(--border)) 9%,transparent) 1px,transparent 1px),var(--architecture-surface)}}.architecture-map-viewport{background-size:32px 32px}.architecture-map-viewport[data-scroll-position=end],.architecture-map-viewport[data-scroll-position=none]{box-shadow:none}.architecture-map-canvas{min-width:100%;min-height:100%}.architecture-route-mode{border:1px solid var(--architecture-border);background:var(--architecture-surface);border-radius:5px;display:flex;overflow:hidden}.architecture-route-mode button{min-width:66px;height:27px;color:var(--vscode-descriptionForeground,var(--muted-foreground));font:9px/1 var(--compass-font-mono);background:0 0;border:0;padding:0 9px}.architecture-route-mode button+button{border-left:1px solid var(--architecture-border)}.architecture-route-mode button:hover{background:var(--vscode-toolbar-hoverBackground,var(--workbench-hover));color:var(--vscode-foreground,var(--foreground))}.architecture-route-mode button[aria-pressed=true]{background:var(--vscode-list-activeSelectionBackground,var(--accent))}@supports (color:color-mix(in lab,red,red)){.architecture-route-mode button[aria-pressed=true]{background:color-mix(in srgb,var(--vscode-list-activeSelectionBackground,var(--accent)) 72%,var(--architecture-raised))}}.architecture-route-mode button[aria-pressed=true]{color:var(--vscode-list-activeSelectionForeground,var(--foreground))}.architecture-map-toolbar{border:1px solid var(--architecture-border);background:var(--architecture-surface);border-radius:5px;align-items:center;display:flex;overflow:hidden}.architecture-map-toolbar button{width:28px;height:27px;color:var(--foreground);background:0 0;border:0;place-items:center;display:grid}.architecture-map-toolbar button:hover{background:var(--workbench-hover)}.architecture-map-toolbar button:disabled{opacity:.38;pointer-events:none}.architecture-map-toolbar button+button,.architecture-map-toolbar span+button{border-left:1px solid var(--architecture-border)}.architecture-map-toolbar svg{width:13px;height:13px}.architecture-map-toolbar span{min-width:40px;color:var(--muted-foreground);font:9px/27px var(--compass-font-mono);text-align:center;padding:0 5px}.architecture-map{cursor:grab;touch-action:none;width:100%;height:100%;display:block}.architecture-map:active{cursor:grabbing}.architecture-arrow-default path{fill:var(--vscode-textLink-foreground,var(--compass-focus))}.architecture-arrow-incoming path{fill:var(--vscode-symbolIcon-interfaceForeground,#b7a1ff)}.architecture-arrow-outgoing path{fill:var(--vscode-charts-blue,#49a6ff)}.architecture-map-lanes{pointer-events:none}.architecture-map-lanes rect{fill:var(--architecture-raised)}@supports (color:color-mix(in lab,red,red)){.architecture-map-lanes rect{fill:color-mix(in srgb,var(--architecture-raised) 8%,transparent)}}.architecture-map-lanes rect{stroke:var(--architecture-border)}@supports (color:color-mix(in lab,red,red)){.architecture-map-lanes rect{stroke:color-mix(in srgb,var(--architecture-border) 20%,transparent)}}.architecture-map-lanes rect{stroke-width:1px}.architecture-map-lanes text{fill:var(--vscode-descriptionForeground,var(--muted-foreground))}@supports (color:color-mix(in lab,red,red)){.architecture-map-lanes text{fill:color-mix(in srgb,var(--vscode-descriptionForeground,var(--muted-foreground)) 72%,transparent)}}.architecture-map-lanes text{font:700 8px/1 var(--compass-font-mono);letter-spacing:.12em;text-anchor:middle;text-transform:uppercase}.architecture-map-lanes .architecture-map-direction{fill:var(--vscode-descriptionForeground,var(--muted-foreground))}@supports (color:color-mix(in lab,red,red)){.architecture-map-lanes .architecture-map-direction{fill:color-mix(in srgb,var(--vscode-descriptionForeground,var(--muted-foreground)) 52%,transparent)}}.architecture-map-lanes .architecture-map-direction{letter-spacing:.16em;text-anchor:start;font-size:7px}.architecture-route-line{fill:none;stroke:var(--vscode-textLink-foreground,var(--compass-focus));opacity:var(--architecture-route-opacity,.2);stroke-linecap:round;stroke-linejoin:round;transition:opacity .14s,stroke-width .14s}.architecture-routes g[data-evidence=inferred] .architecture-route-line{stroke:var(--vscode-editorWarning-foreground,var(--warning));stroke-dasharray:6 5}.architecture-routes g[data-direction=backward] .architecture-route-line{stroke-dasharray:3 5}.architecture-route-hit{fill:none;stroke:#0000;stroke-width:16px;cursor:pointer}.architecture-routes g[data-selected=true] .architecture-route-line{opacity:1;filter:drop-shadow(0 0 3px var(--compass-focus))}@supports (color:color-mix(in lab,red,red)){.architecture-routes g[data-selected=true] .architecture-route-line{filter:drop-shadow(0 0 3px color-mix(in srgb,var(--compass-focus) 55%,transparent))}}.architecture-routes g[data-focus-direction=incoming] .architecture-route-line{stroke:var(--vscode-symbolIcon-interfaceForeground,#b7a1ff);opacity:.86}.architecture-routes g[data-focus-direction=outgoing] .architecture-route-line{stroke:var(--vscode-charts-blue,#49a6ff);opacity:.9}.architecture-routes g[data-dimmed=true]{opacity:.09}.architecture-map-panel[data-route-mode=key] .architecture-routes g[data-dimmed=true]{opacity:.38}.architecture-map-nodes g[data-dimmed=true]{opacity:.27}.architecture-map-panel[data-route-mode=key] .architecture-map-nodes g[data-dimmed=true]{opacity:.48}.architecture-routes g:focus-visible .architecture-route-line{stroke:var(--vscode-focusBorder,var(--ring));opacity:1}.architecture-map-nodes g{cursor:grab;touch-action:none;transition:opacity .12s}.architecture-map-nodes g[data-dragging=true]{cursor:grabbing}.architecture-map-node-card{fill:var(--vscode-editorWidget-background,var(--card));stroke:var(--vscode-symbolIcon-moduleForeground,var(--compass-focus))}@supports (color:color-mix(in lab,red,red)){.architecture-map-node-card{stroke:color-mix(in srgb,var(--vscode-symbolIcon-moduleForeground,var(--compass-focus)) 25%,var(--architecture-border))}}.architecture-map-node-card{stroke-width:1px}.architecture-map-node-shadow{fill:#0000002b;stroke:none;transform:translateY(3px)}.architecture-map-node-accent{fill:var(--vscode-symbolIcon-moduleForeground,var(--compass-focus));opacity:.62;pointer-events:none}.architecture-map-nodes g:hover .architecture-map-node-card,.architecture-map-nodes g:focus-visible .architecture-map-node-card,.architecture-map-nodes g[data-selected=true] .architecture-map-node-card,.architecture-map-nodes g[data-dragging=true] .architecture-map-node-card{fill:var(--vscode-list-activeSelectionBackground,var(--accent))}@supports (color:color-mix(in lab,red,red)){.architecture-map-nodes g:hover .architecture-map-node-card,.architecture-map-nodes g:focus-visible .architecture-map-node-card,.architecture-map-nodes g[data-selected=true] .architecture-map-node-card,.architecture-map-nodes g[data-dragging=true] .architecture-map-node-card{fill:color-mix(in srgb,var(--vscode-list-activeSelectionBackground,var(--accent)) 38%,var(--vscode-editorWidget-background,var(--card)))}}.architecture-map-nodes g:hover .architecture-map-node-card,.architecture-map-nodes g:focus-visible .architecture-map-node-card,.architecture-map-nodes g[data-selected=true] .architecture-map-node-card,.architecture-map-nodes g[data-dragging=true] .architecture-map-node-card{stroke:var(--vscode-focusBorder,var(--ring));stroke-width:1.6px}.architecture-map-nodes g[data-selected=true] .architecture-map-node-accent,.architecture-map-nodes g[data-dragging=true] .architecture-map-node-accent{opacity:1}.architecture-map-nodes g[data-dragging=true] .architecture-map-node-shadow{transform:translateY(7px)}.architecture-map-node-name{fill:var(--vscode-editor-foreground,var(--foreground));font:650 12px/1.2 var(--vscode-font-family,system-ui);pointer-events:none}.architecture-map-node-meta{fill:var(--vscode-descriptionForeground,var(--muted-foreground));font:8.5px/1.2 var(--compass-font-mono);pointer-events:none}.architecture-map-node-grip{fill:var(--vscode-descriptionForeground,var(--muted-foreground));opacity:.45;pointer-events:none}.architecture-map-nodes g:hover .architecture-map-node-grip,.architecture-map-nodes g[data-dragging=true] .architecture-map-node-grip{opacity:.9}.architecture-map-legend{min-width:0;color:var(--muted-foreground);font:8px/1.2 var(--compass-font-mono);flex-wrap:wrap;gap:7px 12px;display:flex}.architecture-map-legend span{align-items:center;gap:4px;display:inline-flex}.architecture-map-legend button{color:var(--vscode-textLink-foreground,var(--workbench-link));font:inherit;background:0 0;border:0;padding:0}.architecture-map-legend button:hover{text-decoration:underline}.architecture-map-legend i,.architecture-map-legend svg{background:var(--vscode-textLink-foreground,var(--compass-focus));flex:none;width:18px;height:2px}.architecture-map-legend svg{background:0 0;width:11px;height:11px}.architecture-map-legend i[data-evidence=inferred]{background:repeating-linear-gradient(90deg,var(--vscode-editorWarning-foreground,var(--warning)) 0 4px,transparent 4px 7px)}.architecture-map-legend i[data-direction=incoming]{background:var(--vscode-symbolIcon-interfaceForeground,#b7a1ff)}.architecture-map-legend i[data-direction=outgoing]{background:var(--vscode-charts-blue,#49a6ff)}.architecture-map-legend i[data-direction=bidirectional]{width:18px;height:12px;color:var(--vscode-textLink-foreground,var(--compass-focus));font:normal 10px/1 var(--compass-font-mono);background:0 0;place-items:center;display:grid}.architecture-map-legend i[data-direction=feedback]{background:repeating-linear-gradient(90deg,var(--vscode-textLink-foreground,var(--compass-focus)) 0 3px,transparent 3px 6px)}.architecture-map-table{flex:none;min-width:0;font-size:9px}.architecture-map-table summary{cursor:pointer;color:var(--muted-foreground);white-space:nowrap;padding:3px 0}.architecture-map-table[open]>div{z-index:8;border:1px solid var(--architecture-border);background:var(--architecture-raised);border-radius:6px;width:min(620px,100% - 24px);max-height:280px;position:absolute;bottom:42px;right:12px;overflow:auto;box-shadow:0 8px 24px #00000038}.architecture-map-table table{border-collapse:collapse;table-layout:fixed;width:100%}.architecture-map-table th,.architecture-map-table td{border-top:1px solid var(--architecture-border);overflow-wrap:anywhere;text-align:left;padding:5px 7px}.architecture-map-empty{min-width:min(100%,760px);min-height:100%;color:var(--muted-foreground);text-align:center;align-content:center;place-items:center;gap:5px;padding:30px;font-size:11px;display:grid}.architecture-map-empty strong{color:var(--foreground);font-size:12px}.architecture-map-footer{border-top:1px solid var(--architecture-border);background:var(--architecture-raised);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 18px;min-width:0;min-height:40px;padding:8px 12px;display:flex;position:relative}.architecture-inspector{border-left:1px solid var(--architecture-border);grid-template-rows:auto auto auto 1fr auto;display:grid}.architecture-route-metrics,.architecture-evidence-counts{color:var(--muted-foreground);font:9px/1.3 var(--compass-font-mono);flex-wrap:wrap;gap:5px 12px;margin-top:9px;display:flex}.architecture-route-metrics span{align-items:center;gap:3px;display:inline-flex}.architecture-route-metrics svg{width:11px;height:11px}.architecture-inspector-tabs{border-bottom:1px solid var(--architecture-border);display:flex}.architecture-inspector-tabs button{min-height:32px;color:var(--muted-foreground);background:0 0;border:0;flex:1;font-size:10px;position:relative}.architecture-inspector-tabs button[aria-selected=true]{color:var(--foreground)}.architecture-inspector-tabs button[aria-selected=true]:after{background:var(--vscode-focusBorder,var(--ring));content:"";height:2px;position:absolute;bottom:-1px;left:10px;right:10px}.architecture-detail-filter{border-bottom:1px solid var(--architecture-border);padding:8px 10px;display:block;position:relative}.architecture-detail-filter>svg{left:19px}.architecture-inspector-scroll{min-height:0;padding:8px;overflow:auto}.architecture-symbol-list,.architecture-call-list{gap:6px;display:grid}.architecture-symbol-list article,.architecture-call-list article{border:1px solid var(--architecture-border);background:var(--vscode-editorWidget-background,var(--card));border-radius:5px;min-width:0;padding:9px}.architecture-symbol-list article{grid-template-columns:16px minmax(0,1fr);gap:7px;display:grid}.architecture-symbol-list svg{width:14px;height:14px;color:var(--vscode-symbolIcon-functionForeground,var(--compass-focus))}.architecture-symbol-list strong,.architecture-symbol-list small,.architecture-symbol-list article button,.architecture-symbol-list article span{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.architecture-symbol-list strong,.architecture-call-list strong{font-size:10px;font-weight:600}.architecture-symbol-list small,.architecture-call-list small{color:var(--muted-foreground);font:8.5px/1.35 var(--compass-font-mono);margin-top:2px}.architecture-symbol-list article button,.architecture-symbol-list article span{width:100%;color:var(--vscode-textLink-foreground,var(--workbench-link));font:8.5px/1.3 var(--compass-font-mono);text-align:left;background:0 0;border:0;margin-top:7px;padding:0}.architecture-symbol-list article span{color:var(--vscode-disabledForeground,var(--muted-foreground))}.architecture-call-list article>div:first-child{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:5px;display:grid}.architecture-call-list article>div:first-child strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.architecture-call-list article>div:first-child span{color:var(--vscode-textLink-foreground,var(--compass-focus))}.architecture-call-list article>div:last-child{gap:8px;margin-top:7px;display:flex}.architecture-call-list button{color:var(--vscode-textLink-foreground,var(--workbench-link));background:0 0;border:0;padding:0;font-size:8.5px}.architecture-call-list button:hover,.architecture-symbol-list button:hover{text-decoration:underline}.architecture-inspector>.workbench-pagination{border-top:1px solid var(--architecture-border);padding:7px 9px}.architecture-inspector-empty{min-height:160px;color:var(--muted-foreground);text-align:center;place-items:center;padding:24px;font-size:10px;line-height:1.5;display:grid}.architecture-loading-rows{gap:7px;display:grid}.architecture-loading-rows i{border:1px solid var(--architecture-border);background:linear-gradient(90deg,var(--architecture-raised),var(--architecture-raised),var(--architecture-raised));border-radius:5px;height:58px}@supports (color:color-mix(in lab,red,red)){.architecture-loading-rows i{background:linear-gradient(90deg,var(--architecture-raised),color-mix(in srgb,var(--architecture-raised) 72%,var(--foreground)),var(--architecture-raised))}}.architecture-loading-rows i{background-size:240% 100%;animation:1.3s infinite architecture-row-load}@keyframes architecture-row-load{to{background-position:-140% 0}}.architecture-workspace button:focus-visible,.architecture-workspace [role=button]:focus-visible,.architecture-workspace select:focus-visible,.architecture-workspace input:focus-visible,.architecture-workspace summary:focus-visible{outline:2px solid var(--vscode-focusBorder,var(--ring));outline-offset:-1px}body.vscode-high-contrast .architecture-map-node-card,body.vscode-high-contrast-light .architecture-map-node-card,body.vscode-high-contrast .architecture-map-panel,body.vscode-high-contrast-light .architecture-map-panel,body.vscode-high-contrast .architecture-symbol-list article,body.vscode-high-contrast-light .architecture-symbol-list article,body.vscode-high-contrast .architecture-call-list article,body.vscode-high-contrast-light .architecture-call-list article{stroke:var(--vscode-contrastBorder,var(--ring));border-color:var(--vscode-contrastBorder,var(--ring));stroke-width:2px}body.vscode-high-contrast .architecture-map-panel,body.vscode-high-contrast-light .architecture-map-panel{box-shadow:none;border-width:2px}@media(max-width:1100px){.architecture-workspace{grid-template-columns:200px minmax(440px,1fr) 300px}.architecture-workspace[data-inspector-open=false]{grid-template-columns:200px minmax(440px,1fr)}.architecture-command-bar{grid-template-columns:minmax(220px,1fr) auto 30px}.architecture-evidence-filter{grid-area:2/2}.architecture-inspector-toggle{grid-area:1/3}}@media(max-width:1180px){.architecture-workspace{grid-template-rows:minmax(650px,78vh) auto;grid-template-columns:minmax(190px,220px) minmax(0,1fr);height:auto;min-height:100vh;overflow:auto}.architecture-workspace[data-inspector-open=false]{grid-template-columns:minmax(190px,220px) minmax(0,1fr)}.architecture-rail{grid-row:1/span 2}.architecture-stage{min-height:650px}.architecture-inspector{border-top:1px solid var(--architecture-border);border-left:0;height:min(560px,72vh);min-height:440px;overflow:hidden}}@media(max-width:620px){.architecture-workspace{display:block}.architecture-rail{border-right:0;border-bottom:1px solid var(--architecture-border);max-height:310px}.architecture-rail nav{max-height:190px}.architecture-stage{min-height:650px}.architecture-command-bar{grid-template-columns:1fr}.architecture-evidence-filter,.architecture-inspector-toggle{grid-area:auto}.architecture-map-legend{display:none}}@media(prefers-reduced-motion:reduce){.architecture-route-line,.architecture-map-nodes g{transition:none}.architecture-loading-rows i{animation:none}}.call-guide-shell{box-sizing:border-box;background:radial-gradient(circle at 77% 8%,var(--compass-focus),transparent 28rem),var(--vscode-editor-background,var(--background));min-height:100vh;padding:clamp(28px,5vw,72px) clamp(20px,5vw,72px) 40px;position:relative;overflow:auto}@supports (color:color-mix(in lab,red,red)){.call-guide-shell{background:radial-gradient(circle at 77% 8%,color-mix(in srgb,var(--compass-focus) 9%,transparent),transparent 28rem),var(--vscode-editor-background,var(--background))}}.call-guide-shell{isolation:isolate}.call-guide-grid{z-index:-1;opacity:.19;background-image:linear-gradient(var(--compass-grid) 1px,transparent 1px),linear-gradient(90deg,var(--compass-grid) 1px,transparent 1px);pointer-events:none;background-size:32px 32px;position:fixed;inset:0;-webkit-mask-image:linear-gradient(#000,#0000 68%);mask-image:linear-gradient(#000,#0000 68%)}.call-guide-hero,.call-guide-section,.call-guide-footer{width:min(1120px,100%);margin-inline:auto}.call-guide-hero{border-bottom:1px solid var(--vscode-panel-border,var(--border));grid-template-columns:minmax(300px,.9fr) minmax(420px,1.1fr);align-items:center;gap:clamp(40px,7vw,96px);min-height:330px;padding-bottom:clamp(36px,5vw,64px);display:grid}.call-guide-kicker,.call-guide-overline,.call-guide-route-label,.call-guide-route-readout,.call-guide-shortcut,.call-guide-coverage-badge{font-family:var(--compass-font-mono);text-transform:uppercase;letter-spacing:.12em}.call-guide-kicker{color:var(--vscode-textLink-foreground,var(--compass-focus));align-items:center;gap:8px;font-size:10px;font-weight:700;display:inline-flex}.call-guide-kicker svg{width:14px;height:14px}.call-guide-intro h1{max-width:650px;color:var(--vscode-editor-foreground,var(--foreground));letter-spacing:-.052em;text-wrap:balance;margin:18px 0 0;font-size:clamp(34px,5vw,62px);font-weight:620;line-height:.98}.call-guide-lead{max-width:580px;color:var(--vscode-descriptionForeground,var(--muted-foreground));margin:22px 0 0;font-size:clamp(14px,1.7vw,17px);line-height:1.65}.call-guide-source{border:1px solid var(--vscode-panel-border,var(--border));background:var(--vscode-editorWidget-background,var(--card));border-radius:4px;align-items:center;gap:8px;max-width:min(100%,560px);min-height:34px;margin-top:24px;padding:0 10px;display:inline-flex}@supports (color:color-mix(in lab,red,red)){.call-guide-source{background:color-mix(in srgb,var(--vscode-editorWidget-background,var(--card)) 88%,transparent)}}.call-guide-source{color:var(--vscode-descriptionForeground,var(--muted-foreground));font:11px/1.3 var(--compass-font-mono)}.call-guide-lookup{max-width:620px;margin-top:26px;position:relative}.call-guide-lookup>label{color:var(--vscode-textLink-foreground,var(--compass-focus));font:700 9px/1 var(--compass-font-mono);letter-spacing:.12em;text-transform:uppercase;margin-bottom:8px;display:block}.call-guide-lookup-row{border:1px solid var(--vscode-input-border,var(--border));background:var(--vscode-input-background,var(--card));border-radius:5px;grid-template-columns:minmax(0,1fr) auto;display:grid;box-shadow:0 12px 32px #0000001f}.call-guide-lookup-row:focus-within{border-color:var(--vscode-focusBorder,var(--compass-focus));box-shadow:0 0 0 1px var(--vscode-focusBorder,var(--compass-focus)),0 12px 32px #0000001f}.call-guide-lookup-input{grid-template-columns:auto minmax(0,1fr);align-items:center;gap:9px;min-width:0;padding-inline:12px;display:grid}.call-guide-lookup-input svg{width:15px;height:15px;color:var(--vscode-textLink-foreground,var(--compass-focus))}.call-guide-lookup-input input{min-width:0;height:42px;color:var(--vscode-input-foreground,var(--foreground));font:12px/1 var(--compass-font-mono);background:0 0;border:0;outline:0;padding:0}.call-guide-lookup-input input::placeholder{color:var(--vscode-input-placeholderForeground,var(--muted-foreground))}.call-guide-lookup-row>button{background:var(--vscode-button-background,var(--compass-focus));color:var(--vscode-button-foreground,var(--primary-foreground));font:600 11px/1 var(--compass-font-sans);border:0;border-radius:3px;outline:0;align-items:center;gap:8px;margin:3px;padding:0 13px;display:inline-flex}.call-guide-lookup-row>button:hover:not(:disabled){background:var(--vscode-button-hoverBackground,var(--primary))}.call-guide-lookup-row>button:focus-visible,.call-guide-lookup-directions button:focus-visible{outline:2px solid var(--vscode-focusBorder,var(--ring));outline-offset:2px}.call-guide-lookup-row>button:disabled{cursor:not-allowed;opacity:.5}.call-guide-lookup-row>button svg{width:13px;height:13px}.call-guide-suggestions{border:1px solid var(--vscode-editorSuggestWidget-border,var(--vscode-panel-border,var(--border)));background:var(--vscode-editorSuggestWidget-background,var(--card));max-height:230px;color:var(--vscode-editorSuggestWidget-foreground,var(--foreground));border-radius:4px;margin-top:4px;display:grid;overflow-y:auto;box-shadow:0 12px 32px #00000029}.call-guide-suggestions-label,.call-guide-suggestions-hint{color:var(--vscode-descriptionForeground,var(--muted-foreground));font:9px/1.25 var(--compass-font-mono);padding-block:6px;padding-inline:10px}.call-guide-suggestions-label{letter-spacing:.08em;text-transform:uppercase}.call-guide-suggestions-hint{border-top:1px solid var(--vscode-editorSuggestWidget-border,var(--border));text-align:end}.call-guide-suggestions>button{min-width:0;color:inherit;text-align:start;background:0 0;border:0;outline:0;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:16px;padding-block:8px;padding-inline:10px;display:grid}.call-guide-suggestions>button:hover,.call-guide-suggestions>button[aria-selected=true]{background:var(--vscode-editorSuggestWidget-selectedBackground,var(--accent));color:var(--vscode-editorSuggestWidget-selectedForeground,var(--foreground))}.call-guide-suggestions>button:focus-visible{outline:2px solid var(--vscode-focusBorder,var(--ring));outline-offset:-2px}.call-guide-suggestions>button>span{min-width:0;font:11px/1.35 var(--compass-font-mono);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.call-guide-suggestions>button>small{color:var(--vscode-descriptionForeground,var(--muted-foreground));text-overflow:ellipsis;white-space:nowrap;font-size:10px;overflow:hidden}.call-guide-completion-status{border:1px solid var(--vscode-editorSuggestWidget-border,var(--vscode-panel-border,var(--border)));background:var(--vscode-editorSuggestWidget-background,var(--card));min-width:0;min-height:34px;color:var(--vscode-descriptionForeground,var(--muted-foreground));border-radius:4px;justify-content:space-between;align-items:center;gap:12px;margin-top:4px;padding-block:7px;padding-inline:10px;font-size:10px;display:flex}.call-guide-completion-status>span{overflow-wrap:anywhere;min-width:0}.call-guide-completion-status>button{border:1px solid var(--vscode-button-border,var(--border));background:var(--vscode-button-secondaryBackground,var(--secondary));color:var(--vscode-button-secondaryForeground,var(--secondary-foreground));font:inherit;border-radius:3px;flex:none;padding-block:3px;padding-inline:7px}.call-guide-completion-status>button:hover{background:var(--vscode-button-secondaryHoverBackground,var(--workbench-hover))}.call-guide-lookup-directions{border:0;align-items:center;gap:3px;margin:8px 0 0;padding:0;display:flex}.call-guide-lookup-directions legend{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.call-guide-lookup-directions button{min-height:25px;color:var(--vscode-descriptionForeground,var(--muted-foreground));font:9px/1 var(--compass-font-mono);text-transform:uppercase;background:0 0;border:1px solid #0000;border-radius:3px;outline:0;padding:0 9px}.call-guide-lookup-directions button:hover,.call-guide-lookup-directions button[aria-pressed=true]{border-color:var(--vscode-panel-border,var(--border));background:var(--vscode-list-hoverBackground,var(--workbench-hover));color:var(--vscode-editor-foreground,var(--foreground))}.call-guide-lookup-directions button[aria-pressed=true]{border-color:var(--vscode-focusBorder,var(--compass-focus))}@supports (color:color-mix(in lab,red,red)){.call-guide-lookup-directions button[aria-pressed=true]{border-color:color-mix(in srgb,var(--vscode-focusBorder,var(--compass-focus)) 65%,var(--border))}}.call-guide-lookup-directions>span{color:var(--vscode-disabledForeground,var(--compass-faint));font:9px/1 var(--compass-font-mono);margin-left:auto}.call-guide-source>span:not(.call-guide-source-light){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.call-guide-source>svg{flex:none;width:14px;height:14px}.call-guide-source code{border-left:1px solid var(--vscode-panel-border,var(--border));color:var(--vscode-textLink-foreground,var(--compass-focus));font:inherit;flex:none;margin-left:3px;padding-left:9px}.call-guide-source-light{background:var(--vscode-disabledForeground,var(--compass-faint));border-radius:50%;flex:none;width:6px;height:6px}.call-guide-source[data-ready=true] .call-guide-source-light{background:var(--vscode-testing-iconPassed,var(--compass-success));box-shadow:0 0 9px var(--vscode-testing-iconPassed,var(--compass-success))}@supports (color:color-mix(in lab,red,red)){.call-guide-source[data-ready=true] .call-guide-source-light{box-shadow:0 0 9px color-mix(in srgb,var(--vscode-testing-iconPassed,var(--compass-success)) 60%,transparent)}}.call-guide-route{border:1px solid var(--vscode-panel-border,var(--border));background:linear-gradient(135deg,var(--vscode-editorWidget-background,var(--card)),var(--vscode-editor-background,var(--background)));border-radius:8px;padding:16px;position:relative;overflow:hidden}@supports (color:color-mix(in lab,red,red)){.call-guide-route{background:linear-gradient(135deg,color-mix(in srgb,var(--vscode-editorWidget-background,var(--card)) 94%,transparent),color-mix(in srgb,var(--vscode-editor-background,var(--background)) 82%,transparent))}}.call-guide-route{box-shadow:0 24px 70px #00000038}.call-guide-route:before{content:"";border:1px solid var(--compass-focus);width:230px;height:230px;position:absolute;top:46%;left:50%}@supports (color:color-mix(in lab,red,red)){.call-guide-route:before{border:1px solid color-mix(in srgb,var(--compass-focus) 14%,transparent)}}.call-guide-route:before{box-shadow:0 0 0 44px var(--compass-focus),0 0 0 88px var(--compass-focus);border-radius:50%;transform:translate(-50%,-50%)}@supports (color:color-mix(in lab,red,red)){.call-guide-route:before{box-shadow:0 0 0 44px color-mix(in srgb,var(--compass-focus) 3%,transparent),0 0 0 88px color-mix(in srgb,var(--compass-focus) 2%,transparent)}}.call-guide-route:before{pointer-events:none}.call-guide-route-label,.call-guide-route-readout{z-index:2;color:var(--vscode-disabledForeground,var(--compass-faint));justify-content:space-between;font-size:9px;display:flex;position:relative}.call-guide-route-label code{color:var(--vscode-textLink-foreground,var(--compass-focus));font:inherit;text-transform:none}.call-guide-route-stage{z-index:1;grid-template-columns:repeat(3,minmax(0,1fr));align-items:center;gap:13%;min-height:226px;display:grid;position:relative}.call-guide-route-node{border:1px solid var(--vscode-panel-border,var(--border));background:var(--vscode-editor-background,var(--background));border-radius:5px;flex-direction:column;gap:4px;min-width:0;padding:12px;display:flex;position:relative;box-shadow:0 12px 32px #0003}.call-guide-route-node>span{color:var(--vscode-descriptionForeground,var(--muted-foreground));font:8px/1 var(--compass-font-mono);letter-spacing:.12em}.call-guide-route-node strong{color:var(--vscode-editor-foreground,var(--foreground));font:600 11px/1.3 var(--compass-font-mono);text-overflow:ellipsis;overflow:hidden}.call-guide-route-node small{color:var(--vscode-descriptionForeground,var(--muted-foreground));text-overflow:ellipsis;white-space:nowrap;font-size:9px;overflow:hidden}.call-guide-route-current{border-color:var(--vscode-focusBorder,var(--compass-focus));background:var(--vscode-focusBorder,var(--compass-focus));align-items:center;padding-block:17px}@supports (color:color-mix(in lab,red,red)){.call-guide-route-current{background:color-mix(in srgb,var(--vscode-focusBorder,var(--compass-focus)) 9%,var(--vscode-editor-background,var(--background)))}}.call-guide-route-current{text-align:center;box-shadow:0 0 0 1px var(--compass-focus),0 15px 40px var(--compass-focus)}@supports (color:color-mix(in lab,red,red)){.call-guide-route-current{box-shadow:0 0 0 1px color-mix(in srgb,var(--compass-focus) 16%,transparent),0 15px 40px color-mix(in srgb,var(--compass-focus) 14%,transparent)}}.call-guide-route-current>svg{width:17px;height:17px;color:var(--vscode-textLink-foreground,var(--compass-focus));margin-bottom:3px}.call-guide-route-line{z-index:-1;background:var(--compass-focus);width:32%;height:1px;position:absolute;top:50%;overflow:hidden}@supports (color:color-mix(in lab,red,red)){.call-guide-route-line{background:color-mix(in srgb,var(--compass-focus) 44%,var(--border))}}.call-guide-route-line-in{left:18%}.call-guide-route-line-out{right:18%}.call-guide-route-line i{background:var(--vscode-focusBorder,var(--compass-focus));width:5px;height:5px;box-shadow:0 0 9px var(--vscode-focusBorder,var(--compass-focus));border-radius:50%;animation:2.2s linear infinite call-guide-trace;position:absolute;top:-2px}.call-guide-route-line-out i{animation-delay:1.1s}@keyframes call-guide-trace{0%{left:-8px}to{left:calc(100% + 8px)}}.call-guide-route-readout{border-top:1px solid var(--vscode-panel-border,var(--border));letter-spacing:.08em;padding-top:11px}.call-guide-section{border-bottom:1px solid var(--vscode-panel-border,var(--border));padding-block:clamp(34px,5vw,58px)}.call-guide-heading{justify-content:space-between;align-items:flex-end;gap:28px;margin-bottom:24px;display:flex}.call-guide-overline{color:var(--vscode-textLink-foreground,var(--compass-focus));margin-bottom:7px;font-size:9px;font-weight:700;display:block}.call-guide-heading h2{color:var(--vscode-editor-foreground,var(--foreground));letter-spacing:-.025em;margin:0;font-size:clamp(19px,2.4vw,26px);font-weight:600}.call-guide-heading>p{max-width:420px;color:var(--vscode-descriptionForeground,var(--muted-foreground));text-align:right;margin:0;font-size:11px;line-height:1.5}.call-guide-shortcut{color:var(--vscode-descriptionForeground,var(--muted-foreground));white-space:nowrap;align-items:center;gap:7px;font-size:9px;display:inline-flex}.call-guide-shortcut svg{width:12px;height:12px;color:var(--vscode-textLink-foreground,var(--compass-focus))}.call-guide-steps{grid-template-columns:minmax(170px,.8fr) minmax(340px,1.45fr) minmax(170px,.8fr);gap:10px;margin:0;padding:0;list-style:none;display:grid}.call-guide-steps>li{border:1px solid var(--vscode-panel-border,var(--border));background:var(--vscode-editorWidget-background,var(--card));border-radius:5px;align-content:start;gap:17px;min-height:168px;padding:18px;display:grid;position:relative}@supports (color:color-mix(in lab,red,red)){.call-guide-steps>li{background:color-mix(in srgb,var(--vscode-editorWidget-background,var(--card)) 72%,transparent)}}.call-guide-steps>li>svg{width:22px;height:22px;color:var(--vscode-textLink-foreground,var(--compass-focus))}.call-guide-step-number{color:var(--vscode-disabledForeground,var(--compass-faint));font:9px/1 var(--compass-font-mono);letter-spacing:.1em;position:absolute;top:17px;right:17px}.call-guide-steps h3{color:var(--vscode-editor-foreground,var(--foreground));margin:0;font-size:13px;font-weight:600}.call-guide-steps p{color:var(--vscode-descriptionForeground,var(--muted-foreground));margin:6px 0 0;font-size:11px;line-height:1.5}.call-guide-step-menu{grid-template-columns:minmax(150px,.85fr) minmax(195px,1.15fr);align-items:center}.call-guide-menu-preview{min-width:0;padding-right:44%;font-size:10px;position:relative}.call-guide-menu-parent,.call-guide-submenu{border:1px solid var(--vscode-menu-border,var(--border));background:var(--vscode-menu-background,var(--popover));color:var(--vscode-menu-foreground,var(--popover-foreground));border-radius:4px;box-shadow:0 12px 30px #00000040}.call-guide-menu-parent{border-color:var(--vscode-focusBorder,var(--compass-focus));background:var(--vscode-menu-selectionBackground,var(--accent));min-height:31px;color:var(--vscode-menu-selectionForeground,var(--accent-foreground));grid-template-columns:15px 1fr 13px;align-items:center;gap:7px;padding:0 8px;display:grid}.call-guide-menu-parent svg,.call-guide-submenu svg{width:13px;height:13px}.call-guide-submenu{z-index:2;width:58%;min-width:165px;padding:4px;position:absolute;top:22px;right:0}.call-guide-submenu span{white-space:nowrap;border-radius:2px;align-items:center;gap:7px;min-height:26px;padding:0 7px;display:flex}.call-guide-submenu span.is-active{background:var(--vscode-menu-selectionBackground,var(--accent));color:var(--vscode-menu-selectionForeground,var(--accent-foreground))}.call-guide-actions{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.call-guide-action{border:1px solid var(--vscode-panel-border,var(--border));background:var(--vscode-editorWidget-background,var(--card));min-height:104px;color:var(--vscode-editor-foreground,var(--foreground));font:inherit;text-align:left;border-radius:5px;outline:none;grid-template-columns:auto 1fr auto;align-items:center;gap:13px;padding:18px;transition:border-color .14s,background .14s,transform .14s;display:grid;position:relative}.call-guide-action:not(:disabled):hover{border-color:var(--vscode-focusBorder,var(--compass-focus));background:var(--vscode-list-hoverBackground,var(--workbench-hover))}@supports (color:color-mix(in lab,red,red)){.call-guide-action:not(:disabled):hover{background:color-mix(in srgb,var(--vscode-list-hoverBackground,var(--workbench-hover)) 70%,var(--vscode-editorWidget-background,var(--card)))}}.call-guide-action:not(:disabled):hover{transform:translateY(-2px)}.call-guide-action:focus-visible,.call-guide-walkthrough:focus-visible{outline:2px solid var(--vscode-focusBorder,var(--ring));outline-offset:2px}.call-guide-action:disabled{cursor:not-allowed;opacity:.46}.call-guide-action[data-primary=true]{border-color:var(--vscode-focusBorder,var(--compass-focus))}@supports (color:color-mix(in lab,red,red)){.call-guide-action[data-primary=true]{border-color:color-mix(in srgb,var(--vscode-focusBorder,var(--compass-focus)) 72%,var(--border))}}.call-guide-action[data-primary=true]{background:linear-gradient(130deg,var(--vscode-focusBorder,var(--compass-focus)),transparent 58%),var(--vscode-editorWidget-background,var(--card))}@supports (color:color-mix(in lab,red,red)){.call-guide-action[data-primary=true]{background:linear-gradient(130deg,color-mix(in srgb,var(--vscode-focusBorder,var(--compass-focus)) 13%,transparent),transparent 58%),var(--vscode-editorWidget-background,var(--card))}}.call-guide-action-icon{border:1px solid var(--vscode-panel-border,var(--border));background:var(--vscode-editor-background,var(--background));width:34px;height:34px;color:var(--vscode-textLink-foreground,var(--compass-focus));border-radius:4px;place-items:center;display:grid}.call-guide-action-icon svg{width:16px;height:16px}.call-guide-action strong,.call-guide-action small{display:block}.call-guide-action strong{font-size:12px;font-weight:600}.call-guide-action small{color:var(--vscode-descriptionForeground,var(--muted-foreground));margin-top:5px;font-size:10px}.call-guide-action-arrow{width:15px;height:15px;color:var(--vscode-disabledForeground,var(--compass-faint));transition:transform .14s}.call-guide-action:not(:disabled):hover .call-guide-action-arrow{color:var(--vscode-textLink-foreground,var(--compass-focus));transform:translate(3px)}.call-guide-action em{color:var(--vscode-textLink-foreground,var(--compass-focus));font:normal 8px/1 var(--compass-font-mono);letter-spacing:.08em;text-transform:uppercase;position:absolute;top:8px;right:8px}.call-guide-footer{justify-content:space-between;align-items:center;gap:30px;padding-top:24px;display:flex}.call-guide-coverage{align-items:center;gap:13px;max-width:760px;display:flex}.call-guide-coverage-badge{border:1px solid var(--vscode-testing-iconPassed,var(--compass-success));flex:none;padding:5px 7px}@supports (color:color-mix(in lab,red,red)){.call-guide-coverage-badge{border:1px solid color-mix(in srgb,var(--vscode-testing-iconPassed,var(--compass-success)) 50%,var(--border))}}.call-guide-coverage-badge{color:var(--vscode-testing-iconPassed,var(--compass-success));border-radius:3px;font-size:8px;font-weight:700}.call-guide-coverage p{color:var(--vscode-descriptionForeground,var(--muted-foreground));margin:0;font-size:10px;line-height:1.55}.call-guide-walkthrough{color:var(--vscode-textLink-foreground,var(--compass-focus));font:11px/1 var(--compass-font-sans);background:0 0;border:0;outline:none;flex:none;align-items:center;gap:7px;padding:7px 0;display:inline-flex}.call-guide-walkthrough svg{width:14px;height:14px}.call-guide-walkthrough svg:last-child{width:12px;transition:transform .14s}.call-guide-walkthrough:hover svg:last-child{transform:translate(2px)}body.vscode-high-contrast .call-guide-route,body.vscode-high-contrast-light .call-guide-route,body.vscode-high-contrast .call-guide-steps>li,body.vscode-high-contrast-light .call-guide-steps>li,body.vscode-high-contrast .call-guide-action,body.vscode-high-contrast-light .call-guide-action,body.vscode-high-contrast .call-guide-lookup-row,body.vscode-high-contrast-light .call-guide-lookup-row,body.vscode-high-contrast .call-guide-suggestions,body.vscode-high-contrast-light .call-guide-suggestions,body.vscode-high-contrast .call-guide-completion-status,body.vscode-high-contrast-light .call-guide-completion-status{border-width:2px;border-color:var(--vscode-contrastBorder,var(--ring))}@media(max-width:900px){.call-guide-hero{grid-template-columns:1fr;gap:32px}.call-guide-route{box-sizing:border-box;width:min(620px,100%)}.call-guide-steps{grid-template-columns:1fr 1fr}.call-guide-step-menu{grid-area:2/1/auto/-1}}@media(max-width:680px){.call-guide-shell{padding-inline:16px}.call-guide-heading,.call-guide-footer{flex-direction:column;align-items:flex-start}.call-guide-heading>p{text-align:left}.call-guide-shortcut{display:none}.call-guide-steps,.call-guide-actions{grid-template-columns:1fr}.call-guide-step-menu{grid-area:auto;grid-template-columns:1fr}.call-guide-menu-preview{padding-right:min(42%,180px)}.call-guide-coverage{flex-direction:column;align-items:flex-start}}@media(max-width:440px){.call-guide-lookup-row{grid-template-columns:1fr}.call-guide-lookup-row>button{justify-content:center;min-height:36px}.call-guide-lookup-directions{flex-wrap:wrap}.call-guide-lookup-directions>span{width:100%;margin:5px 0 0}.call-guide-suggestions>button{grid-template-columns:minmax(0,1fr);gap:2px}.call-guide-suggestions>button>small{white-space:normal}.call-guide-route-stage{gap:5%}.call-guide-route-node{padding:9px 7px}.call-guide-route-node small{display:none}.call-guide-menu-preview{padding:0}.call-guide-submenu{width:auto;margin:6px 0 0 18px;position:relative;top:auto}}@media(prefers-reduced-motion:reduce){.call-guide-route-line i{animation:none}.call-guide-action,.call-guide-action-arrow,.call-guide-walkthrough svg:last-child{transition:none}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));filter:blur(var(--tw-exit-blur,0))}} +@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-font-weight:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-content:"";--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:root,:host{--spacing:.25rem;--container-xs:20rem;--container-md:28rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height: 1.5 ;--font-weight-medium:500;--radius-md:calc(var(--radius) - 2px);--radius-4xl:2rem;--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--compass-font-sans);--default-mono-font-family:var(--compass-font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.top-2{top:calc(var(--spacing) * 2)}.right-2{right:calc(var(--spacing) * 2)}.bottom-3{bottom:calc(var(--spacing) * 3)}.bottom-4{bottom:calc(var(--spacing) * 4)}.left-1\/2{left:50%}.left-3{left:calc(var(--spacing) * 3)}.left-4{left:calc(var(--spacing) * 4)}.isolate{isolation:isolate}.z-20{z-index:20}.z-50{z-index:50}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.mt-2{margin-top:calc(var(--spacing) * 2)}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.size-2\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-full{width:100%;height:100%}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-\[calc\(100\%-1px\)\]{height:calc(100% - 1px)}.h-screen{height:100vh}.max-h-24{max-height:calc(var(--spacing) * 24)}.w-fit{width:fit-content}.w-full{width:100%}.max-w-\[min\(44rem\,calc\(100\%-1\.5rem\)\)\]{max-width:min(44rem,100% - 1.5rem)}.max-w-md{max-width:var(--container-md)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:0}.min-w-7{min-width:calc(var(--spacing) * 7)}.min-w-8{min-width:calc(var(--spacing) * 8)}.min-w-9{min-width:calc(var(--spacing) * 9)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.origin-\(--radix-tooltip-content-transform-origin\){transform-origin:var(--radix-tooltip-content-transform-origin)}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-\[calc\(-50\%_-_2px\)\]{--tw-translate-y: calc(-50% - 2px) ;translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-45{rotate:45deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.touch-none{touch-action:none}.resize{resize:both}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-\[--spacing\(var\(--gap\)\)\]{gap:calc(var(--spacing) * var(--gap))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.rounded-4xl{border-radius:var(--radius-4xl)}.rounded-\[2px\]{border-radius:2px}.rounded-\[inherit\]{border-radius:inherit}.rounded-\[min\(var\(--radius-md\)\,10px\)\]{border-radius:min(var(--radius-md),10px)}.rounded-\[min\(var\(--radius-md\)\,12px\)\]{border-radius:min(var(--radius-md),12px)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.border{border-style:var(--tw-border-style);border-width:1px}.border-border{border-color:var(--border)}.border-destructive\/50{border-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.border-destructive\/50{border-color:color-mix(in oklab,var(--destructive) 50%,transparent)}}.border-input{border-color:var(--input)}.border-transparent{border-color:#0000}.bg-background,.bg-background\/95{background-color:var(--background)}@supports (color:color-mix(in lab,red,red)){.bg-background\/95{background-color:color-mix(in oklab,var(--background) 95%,transparent)}}.bg-border{background-color:var(--border)}.bg-card{background-color:var(--card)}.bg-destructive\/10{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.bg-destructive\/10{background-color:color-mix(in oklab,var(--destructive) 10%,transparent)}}.bg-foreground{background-color:var(--foreground)}.bg-muted{background-color:var(--muted)}.bg-popover\/95{background-color:var(--popover)}@supports (color:color-mix(in lab,red,red)){.bg-popover\/95{background-color:color-mix(in oklab,var(--popover) 95%,transparent)}}.bg-primary{background-color:var(--primary)}.bg-secondary{background-color:var(--secondary)}.bg-transparent{background-color:#0000}.bg-clip-padding{background-clip:padding-box}.fill-foreground{fill:var(--foreground)}.p-1{padding:var(--spacing)}.p-3{padding:calc(var(--spacing) * 3)}.p-\[3px\]{padding:3px}.p-px{padding:1px}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.text-left{text-align:left}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[0\.8rem\]{font-size:.8rem}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.text-balance{text-wrap:balance}.whitespace-nowrap{white-space:nowrap}.text-background{color:var(--background)}.text-card-foreground{color:var(--card-foreground)}.text-destructive{color:var(--destructive)}.text-foreground,.text-foreground\/60{color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.text-foreground\/60{color:color-mix(in oklab,var(--foreground) 60%,transparent)}}.text-muted-foreground{color:var(--muted-foreground)}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-secondary-foreground{color:var(--secondary-foreground)}.ordinal{--tw-ordinal:ordinal;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.underline-offset-4{text-underline-offset:4px}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[color\,box-shadow\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.paused{animation-play-state:paused}.running{animation-play-state:running}.group-has-\[\>svg\]\/alert\:col-start-2:is(:where(.group\/alert):has(>svg) *){grid-column-start:2}.group-data-\[orientation\=horizontal\]\/tabs\:h-8:is(:where(.group\/tabs)[data-orientation=horizontal] *){height:calc(var(--spacing) * 8)}.group-data-\[orientation\=vertical\]\/tabs\:h-fit:is(:where(.group\/tabs)[data-orientation=vertical] *){height:fit-content}.group-data-\[orientation\=vertical\]\/tabs\:w-full:is(:where(.group\/tabs)[data-orientation=vertical] *){width:100%}.group-data-\[orientation\=vertical\]\/tabs\:flex-col:is(:where(.group\/tabs)[data-orientation=vertical] *){flex-direction:column}.group-data-\[orientation\=vertical\]\/tabs\:justify-start:is(:where(.group\/tabs)[data-orientation=vertical] *){justify-content:flex-start}.group-data-\[spacing\=0\]\/toggle-group\:rounded-none:is(:where(.group\/toggle-group)[data-spacing="0"] *){border-radius:0}.group-data-\[spacing\=0\]\/toggle-group\:px-2:is(:where(.group\/toggle-group)[data-spacing="0"] *){padding-inline:calc(var(--spacing) * 2)}.group-data-\[variant\=line\]\/tabs-list\:bg-transparent:is(:where(.group\/tabs-list)[data-variant=line] *){background-color:#0000}.file\:inline-flex::file-selector-button{display:inline-flex}.file\:h-6::file-selector-button{height:calc(var(--spacing) * 6)}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:text-foreground::file-selector-button{color:var(--foreground)}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:bg-foreground:after{content:var(--tw-content);background-color:var(--foreground)}.after\:opacity-0:after{content:var(--tw-content);opacity:0}.after\:transition-opacity:after{content:var(--tw-content);transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.group-data-\[orientation\=horizontal\]\/tabs\:after\:inset-x-0:is(:where(.group\/tabs)[data-orientation=horizontal] *):after{content:var(--tw-content);inset-inline:0}.group-data-\[orientation\=horizontal\]\/tabs\:after\:bottom-\[-5px\]:is(:where(.group\/tabs)[data-orientation=horizontal] *):after{content:var(--tw-content);bottom:-5px}.group-data-\[orientation\=horizontal\]\/tabs\:after\:h-0\.5:is(:where(.group\/tabs)[data-orientation=horizontal] *):after{content:var(--tw-content);height:calc(var(--spacing) * .5)}.group-data-\[orientation\=vertical\]\/tabs\:after\:inset-y-0:is(:where(.group\/tabs)[data-orientation=vertical] *):after{content:var(--tw-content);inset-block:0}.group-data-\[orientation\=vertical\]\/tabs\:after\:-right-1:is(:where(.group\/tabs)[data-orientation=vertical] *):after{content:var(--tw-content);right:calc(var(--spacing) * -1)}.group-data-\[orientation\=vertical\]\/tabs\:after\:w-0\.5:is(:where(.group\/tabs)[data-orientation=vertical] *):after{content:var(--tw-content);width:calc(var(--spacing) * .5)}@media(hover:hover){.hover\:bg-\[color-mix\(in_oklch\,var\(--secondary\)\,var\(--foreground\)_5\%\)\]:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-\[color-mix\(in_oklch\,var\(--secondary\)\,var\(--foreground\)_5\%\)\]:hover{background-color:color-mix(in oklch,var(--secondary),var(--foreground) 5%)}}.hover\:bg-destructive\/20:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-destructive\/20:hover{background-color:color-mix(in oklab,var(--destructive) 20%,transparent)}}.hover\:bg-muted:hover{background-color:var(--muted)}.hover\:bg-primary\/80:hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-primary\/80:hover{background-color:color-mix(in oklab,var(--primary) 80%,transparent)}}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:text-muted-foreground:hover{color:var(--muted-foreground)}.hover\:underline:hover{text-decoration-line:underline}}.focus\:z-10:focus,.focus-visible\:z-10:focus-visible{z-index:10}.focus-visible\:border-destructive\/40:focus-visible{border-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:border-destructive\/40:focus-visible{border-color:color-mix(in oklab,var(--destructive) 40%,transparent)}}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:ring-3:focus-visible,.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.focus-visible\:outline-1:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-ring:focus-visible{outline-color:var(--ring)}.active\:not-aria-\[haspopup\]\:translate-y-px:active:not([aria-haspopup]){--tw-translate-y:1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-input\/50:disabled{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.disabled\:bg-input\/50:disabled{background-color:color-mix(in oklab,var(--input) 50%,transparent)}}.disabled\:opacity-50:disabled{opacity:.5}:where([data-slot=button-group]) .in-data-\[slot\=button-group\]\:rounded-lg{border-radius:var(--radius)}.has-data-\[icon\=inline-end\]\:pr-1:has([data-icon=inline-end]){padding-right:var(--spacing)}.has-data-\[icon\=inline-end\]\:pr-1\.5:has([data-icon=inline-end]){padding-right:calc(var(--spacing) * 1.5)}.has-data-\[icon\=inline-end\]\:pr-2:has([data-icon=inline-end]){padding-right:calc(var(--spacing) * 2)}.group-data-\[spacing\=0\]\/toggle-group\:has-data-\[icon\=inline-end\]\:pr-1\.5:is(:where(.group\/toggle-group)[data-spacing="0"] *):has([data-icon=inline-end]){padding-right:calc(var(--spacing) * 1.5)}.has-data-\[icon\=inline-start\]\:pl-1:has([data-icon=inline-start]){padding-left:var(--spacing)}.has-data-\[icon\=inline-start\]\:pl-1\.5:has([data-icon=inline-start]){padding-left:calc(var(--spacing) * 1.5)}.has-data-\[icon\=inline-start\]\:pl-2:has([data-icon=inline-start]){padding-left:calc(var(--spacing) * 2)}.group-data-\[spacing\=0\]\/toggle-group\:has-data-\[icon\=inline-start\]\:pl-1\.5:is(:where(.group\/toggle-group)[data-spacing="0"] *):has([data-icon=inline-start]){padding-left:calc(var(--spacing) * 1.5)}.has-data-\[slot\=alert-action\]\:relative:has([data-slot=alert-action]){position:relative}.has-data-\[slot\=alert-action\]\:pr-18:has([data-slot=alert-action]){padding-right:calc(var(--spacing) * 18)}.has-data-\[slot\=kbd\]\:pr-1\.5:has([data-slot=kbd]){padding-right:calc(var(--spacing) * 1.5)}.has-\[\>svg\]\:grid-cols-\[auto_1fr\]:has(>svg){grid-template-columns:auto 1fr}.has-\[\>svg\]\:gap-x-2:has(>svg){column-gap:calc(var(--spacing) * 2)}.aria-expanded\:bg-muted[aria-expanded=true]{background-color:var(--muted)}.aria-expanded\:bg-secondary[aria-expanded=true]{background-color:var(--secondary)}.aria-expanded\:text-foreground[aria-expanded=true]{color:var(--foreground)}.aria-expanded\:text-secondary-foreground[aria-expanded=true]{color:var(--secondary-foreground)}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.aria-invalid\:ring-3[aria-invalid=true]{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.aria-pressed\:bg-muted[aria-pressed=true]{background-color:var(--muted)}.data-closed\:animate-out[data-closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-closed\:fade-out-0[data-closed]{--tw-exit-opacity:0}.data-closed\:zoom-out-95[data-closed]{--tw-exit-scale:.95}.data-horizontal\:h-2\.5[data-horizontal]{height:calc(var(--spacing) * 2.5)}.data-horizontal\:h-px[data-horizontal]{height:1px}.data-horizontal\:w-full[data-horizontal]{width:100%}.data-horizontal\:flex-col[data-horizontal]{flex-direction:column}.data-horizontal\:border-t[data-horizontal]{border-top-style:var(--tw-border-style);border-top-width:1px}.data-horizontal\:border-t-transparent[data-horizontal]{border-top-color:#0000}.data-open\:animate-in[data-open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-open\:fade-in-0[data-open]{--tw-enter-opacity:0}.data-open\:zoom-in-95[data-open]{--tw-enter-scale:.95}.data-vertical\:h-full[data-vertical]{height:100%}.data-vertical\:w-2\.5[data-vertical]{width:calc(var(--spacing) * 2.5)}.data-vertical\:w-px[data-vertical]{width:1px}.data-vertical\:flex-col[data-vertical]{flex-direction:column}.data-vertical\:items-stretch[data-vertical]{align-items:stretch}.data-vertical\:self-stretch[data-vertical]{align-self:stretch}.data-vertical\:border-l[data-vertical]{border-left-style:var(--tw-border-style);border-left-width:1px}.data-vertical\:border-l-transparent[data-vertical]{border-left-color:#0000}.data-\[orientation\=horizontal\]\:flex-col[data-orientation=horizontal]{flex-direction:column}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:calc(2*var(--spacing)*-1)}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:calc(2*var(--spacing))}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:calc(2*var(--spacing)*-1)}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:calc(2*var(--spacing))}.data-\[size\=sm\]\:rounded-\[min\(var\(--radius-md\)\,10px\)\][data-size=sm]{border-radius:min(var(--radius-md),10px)}:is(.\*\:data-\[slot\=alert-description\]\:text-destructive\/90>*)[data-slot=alert-description]{color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){:is(.\*\:data-\[slot\=alert-description\]\:text-destructive\/90>*)[data-slot=alert-description]{color:color-mix(in oklab,var(--destructive) 90%,transparent)}}:is(.\*\*\:data-\[slot\=kbd\]\:relative *)[data-slot=kbd]{position:relative}:is(.\*\*\:data-\[slot\=kbd\]\:isolate *)[data-slot=kbd]{isolation:isolate}:is(.\*\*\:data-\[slot\=kbd\]\:z-50 *)[data-slot=kbd]{z-index:50}:is(.\*\*\:data-\[slot\=kbd\]\:rounded-sm *)[data-slot=kbd]{border-radius:calc(var(--radius) - 4px)}.group-data-horizontal\/toggle-group\:data-\[spacing\=0\]\:first\:rounded-l-lg:is(:where(.group\/toggle-group)[data-horizontal] *)[data-spacing="0"]:first-child{border-top-left-radius:var(--radius);border-bottom-left-radius:var(--radius)}.group-data-vertical\/toggle-group\:data-\[spacing\=0\]\:first\:rounded-t-lg:is(:where(.group\/toggle-group)[data-vertical] *)[data-spacing="0"]:first-child{border-top-left-radius:var(--radius);border-top-right-radius:var(--radius)}.group-data-horizontal\/toggle-group\:data-\[spacing\=0\]\:last\:rounded-r-lg:is(:where(.group\/toggle-group)[data-horizontal] *)[data-spacing="0"]:last-child{border-top-right-radius:var(--radius);border-bottom-right-radius:var(--radius)}.group-data-vertical\/toggle-group\:data-\[spacing\=0\]\:last\:rounded-b-lg:is(:where(.group\/toggle-group)[data-vertical] *)[data-spacing="0"]:last-child{border-bottom-right-radius:var(--radius);border-bottom-left-radius:var(--radius)}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:var(--background)}.data-\[state\=active\]\:text-foreground[data-state=active]{color:var(--foreground)}.group-data-\[variant\=default\]\/tabs-list\:data-\[state\=active\]\:shadow-sm:is(:where(.group\/tabs-list)[data-variant=default] *)[data-state=active]{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.group-data-\[variant\=line\]\/tabs-list\:data-\[state\=active\]\:bg-transparent:is(:where(.group\/tabs-list)[data-variant=line] *)[data-state=active]{background-color:#0000}.group-data-\[variant\=line\]\/tabs-list\:data-\[state\=active\]\:shadow-none:is(:where(.group\/tabs-list)[data-variant=line] *)[data-state=active]{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.group-data-\[variant\=line\]\/tabs-list\:data-\[state\=active\]\:after\:opacity-100:is(:where(.group\/tabs-list)[data-variant=line] *)[data-state=active]:after{content:var(--tw-content);opacity:1}.data-\[state\=delayed-open\]\:animate-in[data-state=delayed-open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=delayed-open\]\:fade-in-0[data-state=delayed-open]{--tw-enter-opacity:0}.data-\[state\=delayed-open\]\:zoom-in-95[data-state=delayed-open]{--tw-enter-scale:.95}.data-\[state\=on\]\:bg-muted[data-state=on]{background-color:var(--muted)}.data-\[variant\=line\]\:rounded-none[data-variant=line]{border-radius:0}.group-data-horizontal\/toggle-group\:data-\[spacing\=0\]\:data-\[variant\=outline\]\:border-l-0:is(:where(.group\/toggle-group)[data-horizontal] *)[data-spacing="0"][data-variant=outline]{border-left-style:var(--tw-border-style);border-left-width:0}.group-data-vertical\/toggle-group\:data-\[spacing\=0\]\:data-\[variant\=outline\]\:border-t-0:is(:where(.group\/toggle-group)[data-vertical] *)[data-spacing="0"][data-variant=outline]{border-top-style:var(--tw-border-style);border-top-width:0}.group-data-horizontal\/toggle-group\:data-\[spacing\=0\]\:data-\[variant\=outline\]\:first\:border-l:is(:where(.group\/toggle-group)[data-horizontal] *)[data-spacing="0"][data-variant=outline]:first-child{border-left-style:var(--tw-border-style);border-left-width:1px}.group-data-vertical\/toggle-group\:data-\[spacing\=0\]\:data-\[variant\=outline\]\:first\:border-t:is(:where(.group\/toggle-group)[data-vertical] *)[data-spacing="0"][data-variant=outline]:first-child{border-top-style:var(--tw-border-style);border-top-width:1px}@media(min-width:48rem){.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.md\:text-pretty{text-wrap:pretty}}.dark\:border-input:is(.dark *){border-color:var(--input)}.dark\:bg-destructive\/20:is(.dark *){background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-destructive\/20:is(.dark *){background-color:color-mix(in oklab,var(--destructive) 20%,transparent)}}.dark\:bg-input\/30:is(.dark *){background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-input\/30:is(.dark *){background-color:color-mix(in oklab,var(--input) 30%,transparent)}}.dark\:text-muted-foreground:is(.dark *){color:var(--muted-foreground)}@media(hover:hover){.dark\:hover\:bg-destructive\/30:is(.dark *):hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-destructive\/30:is(.dark *):hover{background-color:color-mix(in oklab,var(--destructive) 30%,transparent)}}.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--input) 50%,transparent)}}.dark\:hover\:bg-muted\/50:is(.dark *):hover{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-muted\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--muted) 50%,transparent)}}.dark\:hover\:text-foreground:is(.dark *):hover{color:var(--foreground)}}.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:disabled\:bg-input\/80:is(.dark *):disabled{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:disabled\:bg-input\/80:is(.dark *):disabled{background-color:color-mix(in oklab,var(--input) 80%,transparent)}}.dark\:aria-invalid\:border-destructive\/50:is(.dark *)[aria-invalid=true]{border-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:aria-invalid\:border-destructive\/50:is(.dark *)[aria-invalid=true]{border-color:color-mix(in oklab,var(--destructive) 50%,transparent)}}.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:data-\[state\=active\]\:border-input:is(.dark *)[data-state=active]{border-color:var(--input)}.dark\:data-\[state\=active\]\:bg-input\/30:is(.dark *)[data-state=active]{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:data-\[state\=active\]\:bg-input\/30:is(.dark *)[data-state=active]{background-color:color-mix(in oklab,var(--input) 30%,transparent)}}.dark\:data-\[state\=active\]\:text-foreground:is(.dark *)[data-state=active]{color:var(--foreground)}.dark\:group-data-\[variant\=line\]\/tabs-list\:data-\[state\=active\]\:border-transparent:is(.dark *):is(:where(.group\/tabs-list)[data-variant=line] *)[data-state=active]{border-color:#0000}.dark\:group-data-\[variant\=line\]\/tabs-list\:data-\[state\=active\]\:bg-transparent:is(.dark *):is(:where(.group\/tabs-list)[data-variant=line] *)[data-state=active]{background-color:#0000}.\[\&_a\]\:underline a{text-decoration-line:underline}.\[\&_a\]\:underline-offset-3 a{text-underline-offset:3px}@media(hover:hover){.\[\&_a\]\:hover\:text-foreground a:hover{color:var(--foreground)}}.\[\&_p\:not\(\:last-child\)\]\:mb-4 p:not(:last-child){margin-bottom:calc(var(--spacing) * 4)}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3 svg:not([class*=size-]){width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3\.5 svg:not([class*=size-]){width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}@media(hover:hover){.\[a\]\:hover\:bg-destructive\/20:is(a):hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.\[a\]\:hover\:bg-destructive\/20:is(a):hover{background-color:color-mix(in oklab,var(--destructive) 20%,transparent)}}.\[a\]\:hover\:bg-muted:is(a):hover{background-color:var(--muted)}.\[a\]\:hover\:bg-primary\/80:is(a):hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.\[a\]\:hover\:bg-primary\/80:is(a):hover{background-color:color-mix(in oklab,var(--primary) 80%,transparent)}}.\[a\]\:hover\:bg-secondary\/80:is(a):hover{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){.\[a\]\:hover\:bg-secondary\/80:is(a):hover{background-color:color-mix(in oklab,var(--secondary) 80%,transparent)}}.\[a\]\:hover\:text-muted-foreground:is(a):hover{color:var(--muted-foreground)}}:is(.\*\:\[svg\]\:row-span-2>*):is(svg){grid-row:span 2/span 2}:is(.\*\:\[svg\]\:translate-y-0\.5>*):is(svg){--tw-translate-y:calc(var(--spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}:is(.\*\:\[svg\]\:text-current>*):is(svg){color:currentColor}:is(.\*\:\[svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4>*):is(svg:not([class*=size-])){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&\>svg\]\:pointer-events-none>svg{pointer-events:none}.\[\&\>svg\]\:size-3\!>svg{width:calc(var(--spacing) * 3)!important;height:calc(var(--spacing) * 3)!important}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}.init-shell{box-sizing:border-box;background:linear-gradient(var(--compass-grid) 1px,transparent 1px),linear-gradient(90deg,var(--compass-grid) 1px,transparent 1px),var(--background);height:100vh;min-height:100vh;color:var(--foreground);background-size:32px 32px;padding:clamp(28px,5vw,72px);overflow:auto}.init-header,.init-progress-header{justify-content:space-between;align-items:flex-end;gap:28px;width:min(1080px,100%);margin:0 auto clamp(26px,4vw,46px);display:flex}.init-eyebrow{color:var(--compass-focus);font:600 11px/1.3 var(--compass-font-mono);letter-spacing:.12em;text-transform:uppercase;margin:0 0 8px}.init-header h1,.init-progress-header h1,.init-result-card h1{color:var(--foreground);font:600 clamp(28px,4vw,44px)/1.08 var(--compass-font-sans);letter-spacing:-.035em;margin:0}.init-header-copy,.init-progress-header p:not(.init-eyebrow),.init-result-card>p:not(.init-eyebrow){max-width:650px;color:var(--muted-foreground);margin:13px 0 0;font-size:14px;line-height:1.65}.init-repository-badge{border:1px solid var(--compass-line);background:var(--vscode-editorWidget-background,var(--compass-panel));border-radius:5px;align-items:center;gap:11px;min-width:190px;max-width:320px;padding:11px 13px;display:flex}.init-repository-badge>svg{width:16px;color:var(--compass-focus)}.init-repository-badge span{min-width:0}.init-repository-badge small,.init-repository-badge strong{display:block}.init-repository-badge small{color:var(--compass-faint);font:10px/1.2 var(--compass-font-mono);text-transform:uppercase;margin-bottom:2px}.init-repository-badge strong{text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.init-layout{border:1px solid var(--compass-line-strong);background:var(--vscode-editorWidget-background,var(--compass-panel));width:min(1080px,100%);min-height:520px;box-shadow:0 22px 55px var(--vscode-widget-shadow,#0000003d);border-radius:7px;grid-template-columns:245px minmax(0,1fr);margin:0 auto;display:grid;overflow:hidden}.init-step-nav{border-right:1px solid var(--compass-line);background:var(--compass-panel);flex-direction:column;justify-content:space-between;min-width:0;padding:27px 20px 20px;display:flex}@supports (color:color-mix(in lab,red,red)){.init-step-nav{background:color-mix(in srgb,var(--compass-panel) 88%,var(--compass-canvas))}}.init-step-nav ol,.init-runway,.init-rule-list{margin:0;padding:0;list-style:none}.init-step-nav li{padding-bottom:10px;position:relative}.init-step-nav li:not(:last-child):after{background:var(--compass-line);content:"";width:1px;position:absolute;top:37px;bottom:-1px;left:22px}.init-step-nav li[data-state=complete]:after{background:var(--compass-success)}@supports (color:color-mix(in lab,red,red)){.init-step-nav li[data-state=complete]:after{background:color-mix(in srgb,var(--compass-success) 62%,var(--compass-line))}}.init-step-nav button{width:100%;color:var(--muted-foreground);text-align:left;background:0 0;border:0;border-radius:4px;align-items:center;gap:11px;padding:7px;display:flex}.init-step-nav button:not(:disabled):hover{background:var(--workbench-hover);color:var(--foreground)}.init-step-nav button:focus-visible{outline:2px solid var(--compass-focus);outline-offset:1px}.init-step-marker{z-index:1;border:1px solid var(--compass-line-strong);background:var(--compass-panel);border-radius:50%;flex:0 0 30px;place-items:center;width:30px;height:30px;display:grid}.init-step-marker svg{width:13px;height:13px}.init-step-nav li[data-state=active] button{color:var(--foreground)}.init-step-nav li[data-state=active] .init-step-marker{border-color:var(--compass-focus);background:var(--compass-focus-soft);color:var(--compass-focus);box-shadow:0 0 0 4px var(--compass-focus-soft)}.init-step-nav li[data-state=complete] .init-step-marker{border-color:var(--compass-success);color:var(--compass-success)}.init-step-nav button small,.init-step-nav button strong{display:block}.init-step-nav button small{color:var(--compass-faint);font:9px/1.2 var(--compass-font-mono);letter-spacing:.06em;text-transform:uppercase;margin-bottom:2px}.init-step-nav button strong{font-size:12px;font-weight:550}.init-local-note{border:1px solid var(--compass-line);background:var(--compass-focus);border-radius:5px;align-items:flex-start;gap:9px;padding:12px;display:flex}@supports (color:color-mix(in lab,red,red)){.init-local-note{background:color-mix(in srgb,var(--compass-focus) 6%,transparent)}}.init-local-note>svg{width:14px;color:var(--compass-focus);flex:0 0 14px}.init-local-note p{color:var(--muted-foreground);margin:0;font-size:10px;line-height:1.5}.init-local-note strong,.init-local-note code{display:block}.init-local-note strong{color:var(--foreground);margin-bottom:2px;font-size:10px}.init-local-note code{color:var(--compass-focus);font-family:var(--compass-font-mono);margin-top:4px}.init-stage{flex-direction:column;min-width:0;padding:clamp(28px,5vw,52px);display:flex}.init-stage-heading{align-items:flex-start;gap:16px;margin-bottom:28px;display:flex}.init-stage-heading>span{color:var(--compass-focus);font:600 11px/1 var(--compass-font-mono);padding-top:5px}.init-stage-heading h2{color:var(--foreground);font:600 clamp(21px,3vw,28px)/1.2 var(--compass-font-sans);letter-spacing:-.025em;margin:0}.init-stage-heading p{color:var(--muted-foreground);margin:8px 0 0;font-size:12px;line-height:1.55}.init-scope-grid,.init-fields{grid-template-columns:repeat(2,minmax(0,1fr));gap:13px;display:grid}.init-choice{border:1px solid var(--compass-line);background:var(--vscode-input-background,var(--background));cursor:pointer;border-radius:6px;align-items:flex-start;gap:12px;min-height:125px;padding:18px;display:flex;position:relative}.init-choice:hover{border-color:var(--compass-focus)}@supports (color:color-mix(in lab,red,red)){.init-choice:hover{border-color:color-mix(in srgb,var(--compass-focus) 48%,var(--compass-line))}}.init-choice[data-selected=true]{border-color:var(--compass-focus);background:var(--compass-focus-soft);box-shadow:inset 0 0 0 1px var(--compass-focus)}@supports (color:color-mix(in lab,red,red)){.init-choice[data-selected=true]{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--compass-focus) 30%,transparent)}}.init-choice input{opacity:0;width:1px;height:1px;position:absolute}.init-choice:has(input:focus-visible){outline:2px solid var(--compass-focus);outline-offset:2px}.init-choice-radio{width:20px;height:20px;color:var(--compass-faint);flex:0 0 20px;place-items:center;display:grid}.init-choice-radio svg{fill:#0000;width:16px}.init-choice[data-selected=true] .init-choice-radio svg{fill:var(--compass-focus);color:var(--compass-focus);stroke-width:4px}.init-choice strong,.init-choice small{display:block}.init-choice strong{color:var(--foreground);margin:1px 0 8px;font-size:13px}.init-choice small{color:var(--muted-foreground);font-size:11px;line-height:1.55}.init-scope-browser{border:1px solid var(--compass-line);background:var(--vscode-input-background,var(--background));border-radius:6px;margin-top:16px;overflow:hidden}.init-scope-browser>header{border-bottom:1px solid var(--compass-line);background:var(--compass-panel);justify-content:space-between;align-items:center;gap:16px;min-height:47px;padding:0 14px;display:flex}@supports (color:color-mix(in lab,red,red)){.init-scope-browser>header{background:color-mix(in srgb,var(--compass-panel) 84%,transparent)}}.init-scope-browser>header strong,.init-scope-browser>header small{display:block}.init-scope-browser>header strong{color:var(--foreground);margin-bottom:3px;font-size:11px}.init-scope-browser>header small{color:var(--compass-faint);font-size:9px}.init-scope-browser>header>span{border:1px solid var(--compass-focus);flex:none;padding:4px 7px}@supports (color:color-mix(in lab,red,red)){.init-scope-browser>header>span{border:1px solid color-mix(in srgb,var(--compass-focus) 45%,var(--compass-line))}}.init-scope-browser>header>span{background:var(--compass-focus-soft);color:var(--compass-focus);font:600 9px/1 var(--compass-font-mono);border-radius:999px}.init-scope-toolbar{border-bottom:1px solid var(--compass-line);align-items:center;gap:7px;height:35px;padding:0 10px;display:flex}.init-scope-toolbar>svg{width:13px;color:var(--compass-faint)}.init-scope-toolbar input{min-width:0;color:var(--foreground);font:10px/1.3 var(--compass-font-sans);background:0 0;border:0;outline:0;flex:1}.init-scope-toolbar input::placeholder{color:var(--vscode-input-placeholderForeground,var(--compass-faint))}.init-scope-toolbar:focus-within{box-shadow:inset 0 0 0 1px var(--compass-focus)}.init-scope-toolbar button,.init-scope-ledger button{width:22px;height:22px;color:var(--compass-faint);background:0 0;border:0;border-radius:3px;place-items:center;padding:0;display:grid}.init-scope-toolbar button:hover,.init-scope-ledger button:hover{background:var(--workbench-hover);color:var(--foreground)}.init-scope-toolbar button svg,.init-scope-ledger button svg{width:12px}.init-scope-body{grid-template-rows:minmax(0,1fr);grid-template-columns:minmax(0,1.45fr) minmax(180px,.8fr);height:clamp(230px,38vh,310px);min-height:0;display:grid;overflow:hidden}.init-scope-tree{overscroll-behavior:contain;border-right:1px solid var(--compass-line);scrollbar-gutter:stable;min-width:0;min-height:0;padding:6px 0;overflow:auto}.init-scope-tree:focus-visible{outline:2px solid var(--compass-focus);outline-offset:-2px}.init-scope-row{box-sizing:border-box;align-items:center;min-width:max-content;height:27px;padding-right:9px;display:flex}.init-scope-row:hover{background:var(--workbench-hover)}.init-scope-disclosure{width:20px;height:22px;color:var(--compass-faint);background:0 0;border:0;border-radius:3px;flex:0 0 20px;place-items:center;padding:0;display:grid}button.init-scope-disclosure:hover{color:var(--foreground)}.init-scope-disclosure svg{width:13px}.init-scope-row label{min-width:0;color:var(--muted-foreground);cursor:pointer;flex:1;align-items:center;gap:7px;font-size:10px;display:flex}.init-scope-row label input{width:13px;height:13px;accent-color:var(--compass-focus);margin:0}.init-scope-row label svg{width:13px;height:13px;color:var(--compass-focus)}.init-scope-row label span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.init-scope-ledger{overscroll-behavior:contain;background:var(--compass-panel);min-width:0;min-height:0;padding:10px;overflow:auto}@supports (color:color-mix(in lab,red,red)){.init-scope-ledger{background:color-mix(in srgb,var(--compass-panel) 73%,transparent)}}.init-scope-ledger{scrollbar-gutter:stable}.init-scope-ledger>div{padding:2px 3px 9px}.init-scope-ledger strong,.init-scope-ledger small{display:block}.init-scope-ledger strong{color:var(--foreground);margin-bottom:3px;font-size:10px}.init-scope-ledger small,.init-scope-ledger>p,.init-scope-empty,.init-scope-notice{color:var(--compass-faint);font-size:9px;line-height:1.45}.init-scope-ledger>p,.init-scope-empty{margin:8px 3px}.init-scope-ledger ul{margin:0;padding:0;list-style:none}.init-scope-ledger li{border-top:1px solid var(--compass-line);align-items:center;gap:5px;min-width:0;padding:4px 3px 4px 7px;display:flex}.init-scope-ledger code{min-width:0;color:var(--foreground);font:9px/1.4 var(--compass-font-mono);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.init-scope-notice{border-top:1px solid var(--compass-line);background:var(--compass-warning);margin:0;padding:7px 12px}@supports (color:color-mix(in lab,red,red)){.init-scope-notice{background:color-mix(in srgb,var(--compass-warning) 7%,transparent)}}.init-scope-notice{color:var(--compass-warning)}.init-facts{border:1px solid var(--compass-line);border-radius:5px;grid-template-columns:1.5fr 1fr 1fr;margin:22px 0 0;display:grid;overflow:hidden}.init-facts>div{background:var(--compass-panel);min-width:0;padding:11px 13px}@supports (color:color-mix(in lab,red,red)){.init-facts>div{background:color-mix(in srgb,var(--compass-panel) 82%,transparent)}}.init-facts>div:not(:last-child){border-right:1px solid var(--compass-line)}.init-facts dt,.init-review-row>span{color:var(--compass-faint);font:9px/1.2 var(--compass-font-mono);text-transform:uppercase}.init-facts dt{margin-bottom:4px}.init-facts dd{min-width:0;color:var(--muted-foreground);text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:10px;overflow:hidden}.init-facts code,.init-review-row code{font-family:var(--compass-font-mono)}.init-fields{gap:18px}.init-fields label>span{margin-bottom:9px;display:block}.init-fields label strong,.init-fields label small{display:block}.init-fields label strong{color:var(--foreground);margin-bottom:3px;font-size:12px}.init-fields label small{color:var(--compass-faint);font-size:10px}.init-fields textarea{box-sizing:border-box;resize:vertical;border:1px solid var(--vscode-input-border,var(--compass-line));background:var(--vscode-input-background,var(--background));width:100%;min-height:142px;color:var(--vscode-input-foreground,var(--foreground));font:11px/1.6 var(--compass-font-mono);border-radius:4px;outline:none;padding:11px 12px}.init-fields textarea::placeholder{color:var(--vscode-input-placeholderForeground,var(--compass-faint))}.init-fields textarea:focus{border-color:var(--compass-focus);outline:1px solid var(--compass-focus)}.init-fields textarea:disabled{opacity:.55;cursor:not-allowed}.init-validation{color:var(--destructive);margin:12px 0 0;font-size:11px}.init-stage-actions{justify-content:space-between;align-items:center;gap:10px;margin-top:auto;padding-top:30px;display:flex}.init-button{min-height:32px;font:500 12px/1.3 var(--compass-font-sans);border:1px solid #0000;border-radius:3px;justify-content:center;align-items:center;gap:8px;padding:6px 13px;display:inline-flex}.init-button svg{width:14px;height:14px}.init-button:focus-visible{outline:2px solid var(--compass-focus);outline-offset:2px}.init-button:disabled{opacity:.45;cursor:not-allowed}.init-button-primary{border-color:var(--vscode-button-border,transparent);background:var(--vscode-button-background,var(--primary));color:var(--vscode-button-foreground,var(--primary-foreground))}.init-button-primary:not(:disabled):hover{background:var(--vscode-button-hoverBackground,var(--primary))}.init-button-secondary{border-color:var(--compass-line);background:var(--vscode-button-secondaryBackground,var(--secondary));color:var(--vscode-button-secondaryForeground,var(--secondary-foreground))}.init-button-secondary:not(:disabled):hover,.init-button-quiet:hover{border-color:var(--compass-line-strong);background:var(--workbench-hover);color:var(--foreground)}.init-button-quiet{color:var(--muted-foreground);background:0 0}.init-button-build{min-width:170px}.init-review{border:1px solid var(--compass-line);border-radius:5px;overflow:hidden}.init-review-row{border-bottom:1px solid var(--compass-line);grid-template-columns:130px minmax(0,1fr);align-items:start;min-height:42px;display:grid}.init-review-row:last-child{border-bottom:0}.init-review-row>span{background:var(--compass-panel);align-self:stretch;padding:12px 13px}@supports (color:color-mix(in lab,red,red)){.init-review-row>span{background:color-mix(in srgb,var(--compass-panel) 76%,transparent)}}.init-review-row>div{min-width:0;color:var(--foreground);padding:11px 13px;font-size:11px}.init-review-row code{overflow-wrap:anywhere;color:var(--foreground)}.init-rule-default{color:var(--muted-foreground)}.init-rule-list{flex-wrap:wrap;gap:6px;display:flex}.init-rule-list li{border:1px solid var(--compass-line);background:var(--vscode-input-background,var(--background));border-radius:3px;padding:3px 7px}.init-build-callout{border-left:2px solid var(--compass-focus);background:var(--compass-focus-soft);align-items:flex-start;gap:12px;margin-top:16px;padding:13px 15px;display:flex}.init-ocr-card{border:1px solid var(--compass-focus);gap:10px;margin-top:16px;padding:15px;display:grid}@supports (color:color-mix(in lab,red,red)){.init-ocr-card{border:1px solid color-mix(in srgb,var(--compass-focus) 35%,var(--compass-line))}}.init-ocr-card{background:linear-gradient(130deg,#e2a94b1a,transparent 55%),var(--vscode-editorWidget-background,var(--compass-panel));border-radius:6px}.init-ocr-card-heading{grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;display:grid}.init-ocr-card-icon{border:1px solid #e2a94b;place-items:center;width:30px;height:30px;display:grid}@supports (color:color-mix(in lab,red,red)){.init-ocr-card-icon{border:1px solid color-mix(in srgb,#e2a94b 58%,var(--compass-line))}}.init-ocr-card-icon{color:#e2a94b;background:#e2a94b1f;border-radius:5px}.init-ocr-card-icon svg{width:16px;height:16px}.init-ocr-card-heading>span:nth-child(2){gap:3px;min-width:0;display:grid}.init-ocr-card-heading small{color:var(--compass-faint);font:600 9px/1.2 var(--compass-font-mono);letter-spacing:.08em;text-transform:uppercase}.init-ocr-card-heading strong{color:var(--foreground);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.init-ocr-card-status{border:1px solid var(--compass-warning);padding:4px 7px}@supports (color:color-mix(in lab,red,red)){.init-ocr-card-status{border:1px solid color-mix(in srgb,var(--compass-warning) 48%,var(--compass-line))}}.init-ocr-card-status{color:var(--compass-warning);font:700 9px/1 var(--compass-font-mono);white-space:nowrap;border-radius:999px}.init-ocr-card-status[data-status=ready]{border-color:var(--compass-success)}@supports (color:color-mix(in lab,red,red)){.init-ocr-card-status[data-status=ready]{border-color:color-mix(in srgb,var(--compass-success) 48%,var(--compass-line))}}.init-ocr-card-status[data-status=ready]{color:var(--compass-success)}.init-ocr-card-status[data-status=error],.init-ocr-card-status[data-status=invalid]{border-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.init-ocr-card-status[data-status=error],.init-ocr-card-status[data-status=invalid]{border-color:color-mix(in srgb,var(--destructive) 48%,var(--compass-line))}}.init-ocr-card-status[data-status=error],.init-ocr-card-status[data-status=invalid]{color:var(--destructive)}.init-ocr-card>p{color:var(--muted-foreground);margin:0 0 0 40px;font-size:11px;line-height:1.5}.init-ocr-card>p[role=alert]{color:var(--destructive)}.init-ocr-facts{flex-wrap:wrap;gap:6px;margin-left:40px;display:flex}.init-ocr-facts span{border:1px solid var(--compass-line);color:var(--compass-faint);font:9px/1.2 var(--compass-font-mono);border-radius:3px;padding:4px 7px}.init-ocr-action{justify-self:start;min-height:30px;margin-left:40px;padding-inline:10px}.init-ocr-action svg{width:14px;height:14px}.init-ocr-progress{align-items:center;gap:7px;display:flex}.init-ocr-progress svg{width:13px;height:13px;animation:1s linear infinite init-ocr-spin}@keyframes init-ocr-spin{to{transform:rotate(360deg)}}@media(max-width:640px){.init-ocr-card-heading{grid-template-columns:auto minmax(0,1fr)}.init-ocr-card-status{grid-column:2;justify-self:start}.init-ocr-card>p,.init-ocr-facts,.init-ocr-action{margin-left:0}}@media(prefers-reduced-motion:reduce){.init-ocr-progress svg{animation:none}}.init-build-callout>svg{width:17px;color:var(--compass-focus);flex:0 0 17px}.init-build-callout strong{color:var(--foreground);margin-bottom:3px;font-size:11px;display:block}.init-build-callout p{color:var(--muted-foreground);margin:0;font-size:10px;line-height:1.45}.init-replace-confirmation{border:1px solid var(--compass-warning);align-items:flex-start;gap:10px;margin-top:10px;padding:12px 14px;display:flex}@supports (color:color-mix(in lab,red,red)){.init-replace-confirmation{border:1px solid color-mix(in srgb,var(--compass-warning) 55%,var(--compass-line))}}.init-replace-confirmation{background:var(--compass-warning);border-radius:4px}@supports (color:color-mix(in lab,red,red)){.init-replace-confirmation{background:color-mix(in srgb,var(--compass-warning) 8%,transparent)}}.init-replace-confirmation{cursor:pointer}.init-replace-confirmation input{accent-color:var(--compass-focus);margin:2px 0 0}.init-replace-confirmation strong,.init-replace-confirmation small{display:block}.init-replace-confirmation strong{color:var(--compass-warning);margin-bottom:3px;font-size:11px}.init-replace-confirmation small{color:var(--muted-foreground);font-size:10px;line-height:1.45}.init-progress-shell{flex-direction:column;display:flex}.init-progress-header{align-items:center}.init-running-badge{border:1px solid var(--compass-focus);align-items:center;gap:7px;padding:6px 10px;display:inline-flex}@supports (color:color-mix(in lab,red,red)){.init-running-badge{border:1px solid color-mix(in srgb,var(--compass-focus) 46%,var(--compass-line))}}.init-running-badge{background:var(--compass-focus-soft);color:var(--compass-focus);font:600 10px/1 var(--compass-font-mono);text-transform:uppercase;border-radius:999px}.init-running-badge svg,.init-runway li[data-state=active] .init-runway-marker svg{animation:1.2s linear infinite init-spin}.init-progress-card{box-sizing:border-box;border:1px solid var(--compass-line-strong);background:var(--vscode-editorWidget-background,var(--compass-panel));width:min(880px,100%);box-shadow:0 22px 55px var(--vscode-widget-shadow,#0000003d);border-radius:7px;margin:auto;padding:clamp(26px,5vw,48px)}.init-progress-summary{justify-content:space-between;align-items:flex-end;gap:20px;display:flex}.init-progress-summary small,.init-progress-summary strong{display:block}.init-progress-summary small{color:var(--compass-faint);font:10px/1.2 var(--compass-font-mono);letter-spacing:.08em;text-transform:uppercase;margin-bottom:7px}.init-progress-summary strong{color:var(--foreground);font-size:18px;font-weight:580}.init-progress-summary>span{color:var(--compass-focus);font:600 24px/1 var(--compass-font-mono)}.init-progress-track{background:var(--foreground);border-radius:99px;height:7px;margin:18px 0 22px;position:relative;overflow:hidden}@supports (color:color-mix(in lab,red,red)){.init-progress-track{background:color-mix(in srgb,var(--foreground) 10%,transparent)}}.init-progress-track>span{border-radius:inherit;background:var(--workbench-progress);height:100%;box-shadow:0 0 15px var(--compass-focus);display:block}@supports (color:color-mix(in lab,red,red)){.init-progress-track>span{box-shadow:0 0 15px color-mix(in srgb,var(--compass-focus) 50%,transparent)}}.init-progress-track>span{transition:width .18s ease-out}.init-progress-track>span.is-indeterminate{width:28%;animation:1.35s ease-in-out infinite init-indeterminate}.init-current-file{border:1px solid var(--compass-line);background:var(--vscode-input-background,var(--compass-canvas));border-radius:5px;align-items:center;gap:12px;min-width:0;padding:13px 15px;display:flex}.init-current-file>svg{width:16px;color:var(--compass-focus);flex:0 0 16px}.init-current-file span{min-width:0}.init-current-file small,.init-current-file code{display:block}.init-current-file small{color:var(--compass-faint);font:9px/1 var(--compass-font-mono);text-transform:uppercase;margin-bottom:4px}.init-current-file code{color:var(--foreground);font:11px/1.4 var(--compass-font-mono);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.init-runway{grid-template-columns:repeat(3,minmax(0,1fr));margin-top:30px;display:grid}.init-runway li{align-items:flex-start;gap:10px;display:flex;position:relative}.init-runway li:not(:last-child):after{background:var(--compass-line);content:"";height:1px;position:absolute;top:13px;left:27px;right:8px}.init-runway li[data-state=complete]:after{background:var(--compass-success)}@supports (color:color-mix(in lab,red,red)){.init-runway li[data-state=complete]:after{background:color-mix(in srgb,var(--compass-success) 58%,var(--compass-line))}}.init-runway-marker{z-index:1;border:1px solid var(--compass-line-strong);background:var(--compass-panel);width:26px;height:26px;color:var(--compass-faint);border-radius:50%;flex:0 0 26px;place-items:center;display:grid}.init-runway-marker svg{width:12px;height:12px}.init-runway li[data-state=complete] .init-runway-marker{border-color:var(--compass-success);color:var(--compass-success)}.init-runway li[data-state=active] .init-runway-marker{border-color:var(--compass-focus);color:var(--compass-focus);box-shadow:0 0 0 4px var(--compass-focus-soft)}.init-runway li>span:last-child{min-width:0;padding-right:20px}.init-runway strong,.init-runway small{display:block}.init-runway strong{color:var(--foreground);margin:1px 0 4px;font-size:10px}.init-runway small{color:var(--compass-faint);font-size:9px;line-height:1.35}.init-progress-footer{box-sizing:border-box;justify-content:space-between;align-items:center;gap:20px;width:min(880px,100%);margin:22px auto 0;display:flex}.init-progress-footer p{color:var(--compass-faint);margin:0;font-size:10px}.init-result-shell{place-items:center;display:grid}.init-result-card{box-sizing:border-box;border:1px solid var(--compass-line-strong);background:var(--vscode-editorWidget-background,var(--compass-panel));width:min(580px,100%);box-shadow:0 22px 55px var(--vscode-widget-shadow,#0000003d);text-align:center;border-radius:7px;padding:clamp(32px,6vw,60px)}.init-result-icon{border:1px solid;border-radius:50%;place-items:center;width:54px;height:54px;margin:0 auto 22px;display:grid}.init-result-icon svg{width:24px}.init-result-icon-success{border-color:var(--compass-success);background:var(--compass-success)}@supports (color:color-mix(in lab,red,red)){.init-result-icon-success{background:color-mix(in srgb,var(--compass-success) 10%,transparent)}}.init-result-icon-success{color:var(--compass-success)}.init-result-icon-error{border-color:var(--destructive);background:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.init-result-icon-error{background:color-mix(in srgb,var(--destructive) 10%,transparent)}}.init-result-icon-error{color:var(--destructive)}.init-result-icon-cancelled{border-color:var(--compass-warning);background:var(--compass-warning)}@supports (color:color-mix(in lab,red,red)){.init-result-icon-cancelled{background:color-mix(in srgb,var(--compass-warning) 10%,transparent)}}.init-result-icon-cancelled{color:var(--compass-warning)}.init-result-card .init-eyebrow{text-align:center}.init-result-card>p:not(.init-eyebrow){margin-left:auto;margin-right:auto}.init-result-actions{flex-wrap:wrap;justify-content:center;gap:9px;margin-top:26px;display:flex}@keyframes init-spin{to{transform:rotate(360deg)}}@keyframes init-indeterminate{0%{transform:translate(-120%)}55%{transform:translate(180%)}to{transform:translate(320%)}}@media(max-width:760px){.init-shell{padding:24px 18px}.init-header,.init-progress-header{flex-direction:column;align-items:flex-start}.init-repository-badge{box-sizing:border-box;width:100%}.init-layout{grid-template-columns:1fr}.init-step-nav{border-right:0;border-bottom:1px solid var(--compass-line);padding:16px}.init-step-nav ol{grid-template-columns:repeat(3,1fr);display:grid}.init-step-nav li{padding:0}.init-step-nav li:not(:last-child):after{width:auto;height:1px;inset:22px -8px auto 37px}.init-step-nav button{flex-direction:column;align-items:flex-start}.init-step-nav button strong{font-size:10px}.init-local-note{display:none}.init-scope-grid,.init-fields{grid-template-columns:1fr}.init-scope-browser>header{flex-direction:column;align-items:flex-start;gap:8px;padding-block:10px}.init-scope-body{grid-template-rows:auto auto;grid-template-columns:1fr;height:auto;max-height:none;overflow:visible}.init-scope-tree{border-right:0;border-bottom:1px solid var(--compass-line);height:clamp(210px,42vh,300px);min-height:210px;max-height:none}.init-scope-ledger{max-height:150px}.init-facts{grid-template-columns:1fr}.init-facts>div:not(:last-child){border-right:0;border-bottom:1px solid var(--compass-line)}.init-review-row{grid-template-columns:95px minmax(0,1fr)}.init-runway{grid-template-columns:1fr;gap:13px}.init-runway li:not(:last-child):after{width:1px;height:auto;inset:26px auto -13px 13px}.init-progress-footer{flex-direction:column;align-items:flex-start}}@media(prefers-reduced-motion:reduce){.init-running-badge svg,.init-runway li[data-state=active] .init-runway-marker svg,.init-progress-track>span.is-indeterminate{animation:none}.init-progress-track>span{transition:none}}:root{color-scheme:light dark;--compass-font-sans:var(--vscode-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif);--compass-font-mono:var(--vscode-editor-font-family,"SFMono-Regular", Consolas, monospace);--background:var(--vscode-editor-background,#0d131d);--foreground:var(--vscode-editor-foreground,#d7e1ed);--card:var(--vscode-sideBar-background,#121b28);--card-foreground:var(--vscode-sideBar-foreground,#d7e1ed);--popover:var(--vscode-menu-background,#172231);--popover-foreground:var(--vscode-menu-foreground,#d7e1ed);--primary:var(--vscode-button-background,#2f81f7);--primary-foreground:var(--vscode-button-foreground,#fff);--secondary:var(--vscode-button-secondaryBackground,#263448);--secondary-foreground:var(--vscode-button-secondaryForeground,#d7e1ed);--muted:var(--vscode-list-inactiveSelectionBackground,#1d2938);--muted-foreground:var(--vscode-descriptionForeground,#93a4b8);--accent:var(--vscode-list-activeSelectionBackground,#264f78);--accent-foreground:var(--vscode-list-activeSelectionForeground,#fff);--destructive:var(--vscode-errorForeground,#f47067);--border:var(--vscode-panel-border,#2c3a4d);--input:var(--vscode-input-border,#3b4a5e);--ring:var(--vscode-focusBorder,#4f9cf9);--radius:.625rem;--compass-canvas:var(--vscode-editor-background,#08111f);--compass-canvas-deep:var(--compass-canvas)}@supports (color:color-mix(in lab,red,red)){:root{--compass-canvas-deep:color-mix(in srgb, var(--compass-canvas) 82%, #000)}}:root{--compass-panel:var(--vscode-sideBar-background,#101b2d);--compass-panel-raised:var(--vscode-menu-background,#142236)}@supports (color:color-mix(in lab,red,red)){:root{--compass-panel-raised:color-mix(in srgb, var(--vscode-menu-background,#142236) 88%, transparent)}}:root{--compass-line:var(--vscode-panel-border,#9ab2d329);--compass-line-strong:var(--vscode-contrastBorder,#9ab2d34d);--compass-focus:var(--vscode-focusBorder,#76b7ff);--compass-focus-soft:var(--compass-focus)}@supports (color:color-mix(in lab,red,red)){:root{--compass-focus-soft:color-mix(in srgb, var(--compass-focus) 14%, transparent)}}:root{--compass-faint:var(--vscode-disabledForeground,#60728b);--compass-grid:var(--foreground)}@supports (color:color-mix(in lab,red,red)){:root{--compass-grid:color-mix(in srgb, var(--foreground) 16%, transparent)}}:root{--compass-success:var(--vscode-testing-iconPassed,#3fb950);--compass-warning:var(--vscode-editorWarning-foreground,#d29922);--sidebar:var(--vscode-sideBar-background,var(--background));--sidebar-foreground:var(--vscode-sideBar-foreground,var(--foreground));--sidebar-accent:var(--vscode-list-activeSelectionBackground,var(--accent));--sidebar-accent-foreground:var(--vscode-list-activeSelectionForeground,var(--accent-foreground));--sidebar-primary:var(--vscode-focusBorder,var(--ring));--workbench-hover:var(--vscode-list-hoverBackground,var(--foreground))}@supports (color:color-mix(in lab,red,red)){:root{--workbench-hover:var(--vscode-list-hoverBackground,color-mix(in srgb, var(--foreground) 7%, transparent))}}:root{--workbench-hover-foreground:var(--vscode-list-hoverForeground,var(--foreground));--workbench-table-header:var(--vscode-editorStickyScroll-background,var(--background));--workbench-link:var(--vscode-textLink-foreground,var(--ring));--workbench-progress:var(--vscode-progressBar-background,var(--ring))}@media(prefers-color-scheme:light){:root{--background:var(--vscode-editor-background,#f7f9fc);--foreground:var(--vscode-editor-foreground,#172033);--card:var(--vscode-sideBar-background,#fff);--card-foreground:var(--vscode-sideBar-foreground,#172033);--popover:var(--vscode-menu-background,#fff);--popover-foreground:var(--vscode-menu-foreground,#172033);--primary:var(--vscode-button-background,#0969da);--primary-foreground:var(--vscode-button-foreground,#fff);--secondary:var(--vscode-button-secondaryBackground,#e8edf4);--secondary-foreground:var(--vscode-button-secondaryForeground,#172033);--muted:var(--vscode-list-inactiveSelectionBackground,#edf1f6);--muted-foreground:var(--vscode-descriptionForeground,#576579);--accent:var(--vscode-list-activeSelectionBackground,#dbeafe);--accent-foreground:var(--vscode-list-activeSelectionForeground,#172033);--border:var(--vscode-panel-border,#c8d1dc);--input:var(--vscode-input-border,#aeb9c8);--ring:var(--vscode-focusBorder,#0969da);--compass-canvas:var(--vscode-editor-background,#f4f7fb);--compass-canvas-deep:var(--compass-canvas)}@supports (color:color-mix(in lab,red,red)){:root{--compass-canvas-deep:color-mix(in srgb, var(--compass-canvas) 94%, #dbe3ed)}}:root{--compass-panel:var(--vscode-sideBar-background,#fff);--compass-panel-raised:var(--vscode-menu-background,#fff);--compass-line:var(--vscode-panel-border,#ccd6e1);--compass-line-strong:var(--vscode-contrastBorder,#9eacbd);--compass-faint:var(--vscode-disabledForeground,#68778a)}}body.vscode-light,body.vscode-high-contrast-light{color-scheme:light}body.vscode-dark,body.vscode-high-contrast{color-scheme:dark}.compass-source-notice{z-index:100;border:1px solid var(--compass-warning);max-width:min(420px,100vw - 32px);padding:12px 14px;position:fixed;bottom:16px;right:16px}@supports (color:color-mix(in lab,red,red)){.compass-source-notice{border:1px solid color-mix(in srgb,var(--compass-warning) 55%,var(--compass-line))}}.compass-source-notice{background:var(--compass-panel);border-radius:6px}@supports (color:color-mix(in lab,red,red)){.compass-source-notice{background:color-mix(in srgb,var(--compass-panel) 96%,transparent)}}.compass-source-notice{color:var(--foreground);font-size:13px;line-height:1.45;box-shadow:0 12px 32px #00000047}.visualization-workbench{background:var(--background);grid-template-columns:minmax(220px,268px) minmax(0,1fr);width:100vw;height:100vh;display:grid;overflow:hidden}.visualization-workbench[data-navigation-collapsed=true]{grid-template-columns:48px minmax(0,1fr)}.visualization-rail{border-right:1px solid var(--compass-line);background:linear-gradient(180deg,var(--compass-focus-soft),transparent 180px),var(--compass-panel);grid-template-rows:auto minmax(0,1fr) auto;min-width:0;display:grid}.visualization-rail>header{border-bottom:1px solid var(--compass-line);grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:11px;padding:18px 16px 16px;display:grid}.visualization-rail-disclosure{width:30px;height:30px;color:var(--muted-foreground);background:0 0;border:1px solid #0000;border-radius:3px;place-items:center;display:grid}.visualization-rail-disclosure:hover{border-color:var(--compass-line);background:var(--workbench-hover);color:var(--foreground)}.visualization-rail-disclosure svg{width:16px;height:16px}.visualization-rail[data-collapsed=true]>header{flex-direction:column;gap:9px;padding:12px 7px 10px;display:flex}.visualization-rail[data-collapsed=true]>header>span:nth-child(2),.visualization-rail[data-collapsed=true] nav button>span,.visualization-rail[data-collapsed=true] nav i,.visualization-rail[data-collapsed=true]>footer{display:none}.visualization-rail[data-collapsed=true] .visualization-bearing{width:30px;height:30px}.visualization-rail[data-collapsed=true] nav button{grid-template-columns:1fr;place-items:center;padding-inline:5px}.visualization-bearing{border:1px solid var(--compass-focus);place-items:center;width:34px;height:34px;display:grid}@supports (color:color-mix(in lab,red,red)){.visualization-bearing{border:1px solid color-mix(in srgb,var(--compass-focus) 48%,var(--border))}}.visualization-bearing{background:var(--compass-focus);border-radius:50%}@supports (color:color-mix(in lab,red,red)){.visualization-bearing{background:color-mix(in srgb,var(--compass-focus) 12%,transparent)}}.visualization-bearing{color:var(--compass-focus);box-shadow:inset 0 0 0 4px var(--compass-focus)}@supports (color:color-mix(in lab,red,red)){.visualization-bearing{box-shadow:inset 0 0 0 4px color-mix(in srgb,var(--compass-focus) 5%,transparent)}}.visualization-bearing svg{width:18px;height:18px}.visualization-rail header>span:nth-child(2),.visualization-rail nav button>span{gap:2px;min-width:0;display:grid}.visualization-rail header strong{letter-spacing:.02em;font-size:14px}.visualization-rail header small,.visualization-rail nav small{color:var(--muted-foreground);text-overflow:ellipsis;white-space:nowrap;font-size:10px;overflow:hidden}.visualization-rail nav{flex-direction:column;gap:3px;min-height:0;padding:10px 8px;display:flex;overflow:auto}.visualization-rail nav button{min-width:0;color:var(--foreground);text-align:left;background:0 0;border:1px solid #0000;border-radius:5px;grid-template-columns:24px minmax(0,1fr) 8px;align-items:center;gap:9px;padding:9px 8px;display:grid;position:relative}.visualization-rail nav button:hover{background:var(--workbench-hover)}.visualization-rail nav button[aria-current=page]{border-color:var(--compass-focus)}@supports (color:color-mix(in lab,red,red)){.visualization-rail nav button[aria-current=page]{border-color:color-mix(in srgb,var(--compass-focus) 28%,var(--border))}}.visualization-rail nav button[aria-current=page]{background:var(--compass-focus)}@supports (color:color-mix(in lab,red,red)){.visualization-rail nav button[aria-current=page]{background:color-mix(in srgb,var(--compass-focus) 13%,var(--compass-panel))}}.visualization-rail nav button[aria-current=page]{box-shadow:inset 2px 0 var(--compass-focus)}.visualization-rail nav svg{width:16px;height:16px;color:var(--muted-foreground)}.visualization-rail nav button[aria-current=page] svg{color:var(--compass-focus)}.visualization-rail nav strong{text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:600;overflow:hidden}.visualization-rail nav i{background:var(--compass-success);border-radius:50%;width:6px;height:6px}.visualization-rail nav i[data-status=summary]{background:var(--compass-warning)}.visualization-rail nav i[data-status=partial]{background:var(--destructive)}.visualization-rail>footer{border-top:1px solid var(--compass-line);color:var(--muted-foreground);justify-content:space-between;align-items:center;gap:10px;padding:11px 14px;font-size:10px;display:flex}.visualization-rail>footer code{color:var(--foreground);font-family:var(--compass-font-mono)}.visualization-main{grid-template-rows:49px minmax(0,1fr);min-width:0;min-height:0;display:grid}.visualization-context{border-bottom:1px solid var(--compass-line);background:var(--background);justify-content:space-between;align-items:center;gap:20px;min-width:0;padding:7px 14px 7px 16px;display:flex}@supports (color:color-mix(in lab,red,red)){.visualization-context{background:color-mix(in srgb,var(--background) 92%,var(--compass-panel))}}.visualization-context>div:first-child{gap:1px;min-width:0;display:grid}.visualization-context>div:first-child span{color:var(--muted-foreground);letter-spacing:.1em;text-transform:uppercase;font-size:9px;font-weight:650}.visualization-context>div:first-child strong{text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.visualization-coverage{color:var(--muted-foreground);align-items:center;gap:10px;font-size:10px;display:flex}.visualization-coverage strong{border:1px solid var(--compass-success);padding:3px 7px}@supports (color:color-mix(in lab,red,red)){.visualization-coverage strong{border:1px solid color-mix(in srgb,var(--compass-success) 36%,var(--border))}}.visualization-coverage strong{color:var(--compass-success);border-radius:999px;font-weight:600}.visualization-coverage[data-status=summary] strong{border-color:var(--compass-warning)}@supports (color:color-mix(in lab,red,red)){.visualization-coverage[data-status=summary] strong{border-color:color-mix(in srgb,var(--compass-warning) 42%,var(--border))}}.visualization-coverage[data-status=summary] strong{color:var(--compass-warning)}.visualization-coverage[data-status=partial] strong{border-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.visualization-coverage[data-status=partial] strong{border-color:color-mix(in srgb,var(--destructive) 42%,var(--border))}}.visualization-coverage[data-status=partial] strong{color:var(--destructive)}.visualization-stage,.workbench-graph-lens,.workbench-history-view,.workbench-architecture{min-width:0;height:100%;min-height:0}.workbench-architecture{grid-template-rows:39px minmax(0,1fr);display:grid}.workbench-graph-lens{position:relative}.workbench-graph-lens>.compass-workspace,.workbench-history-view .compass-workspace{height:100%;min-height:0}.visualization-stage .call-graph-view{height:100%}.visualization-stage .call-graph-direction{top:58px}.visualization-stage .call-graph-summary{max-height:min(42%,360px);overflow:auto}.workbench-filter-strip{border-bottom:1px solid var(--compass-line);background:var(--compass-panel);align-items:center;gap:7px;min-width:0;padding:5px 9px;display:flex;overflow-x:auto}.workbench-filter-strip label{color:var(--muted-foreground);white-space:nowrap;align-items:center;gap:5px;font-size:9px;display:flex}.workbench-filter-strip select{border:1px solid var(--input);background:var(--background);max-width:160px;height:27px;color:var(--foreground);font:inherit;border-radius:3px;padding:2px 22px 2px 7px;font-size:10px}.workbench-filter-strip>span{color:var(--muted-foreground);white-space:nowrap;margin-left:auto;font-size:9px}.compass-toolbar-leading{flex:none;align-items:center;min-width:0;display:flex}.workbench-filter-trigger{border:1px solid var(--compass-line);background:var(--vscode-dropdown-background,transparent);min-height:30px;color:var(--muted-foreground);cursor:pointer;font:inherit;white-space:nowrap;border-radius:3px;align-items:center;gap:6px;padding:0 8px;display:flex}.workbench-filter-trigger:hover,.workbench-filter-trigger[aria-expanded=true]{background:var(--workbench-hover);color:var(--foreground)}.workbench-filter-trigger:focus-visible{outline:2px solid var(--compass-focus);outline-offset:2px}.workbench-filter-trigger svg{width:15px;height:15px}.workbench-filter-trigger b{background:var(--compass-focus);min-width:17px;height:17px;color:var(--vscode-button-foreground,#fff);font:9px/1 var(--compass-font-mono);border-radius:9px;place-items:center;display:inline-grid}.workbench-filter-trigger small{color:var(--compass-faint);font:9px/1 var(--compass-font-mono)}.workbench-filter-popover{z-index:12;box-sizing:border-box;border:1px solid var(--compass-line-strong);background:var(--vscode-editorWidget-background,var(--compass-panel));width:min(310px,100%);max-height:calc(100vh - 84px);box-shadow:none;border-radius:5px;gap:10px;padding:12px;display:grid;position:absolute;top:calc(100% + 8px);right:6px;overflow-y:auto}.workbench-filter-popover>header{border-bottom:1px solid var(--compass-line);justify-content:space-between;align-items:flex-start;gap:12px;padding-bottom:9px;display:flex}.workbench-filter-popover>header span{gap:2px;display:grid}.workbench-filter-popover>header strong{font-size:11px}.workbench-filter-popover>header small,.workbench-filter-popover>footer{color:var(--compass-faint);font-size:10px}.workbench-filter-popover>header button{border:1px solid var(--compass-line);min-height:26px;color:var(--muted-foreground);white-space:nowrap;background:0 0;border-radius:3px;padding:0 7px;font-size:10px}.workbench-filter-popover>header button:disabled{opacity:.45}.workbench-filter-popover>label{color:var(--muted-foreground);grid-template-columns:88px minmax(0,1fr);align-items:center;gap:9px;font-size:10px;display:grid}.workbench-filter-popover select{border:1px solid var(--input);background:var(--vscode-dropdown-background,var(--background));width:100%;min-height:30px;color:var(--vscode-dropdown-foreground,var(--foreground));font:inherit;border-radius:3px;padding:2px 24px 2px 8px}.workbench-filter-popover select:focus-visible,.workbench-filter-popover button:focus-visible{outline:2px solid var(--compass-focus);outline-offset:2px}.workbench-filter-popover>footer{border-top:1px solid var(--compass-line);padding-top:8px}.workbench-graph-empty{z-index:3;box-sizing:border-box;border:1px solid var(--compass-line);background:var(--vscode-editorWidget-background,var(--compass-panel));width:min(360px,100% - 32px);color:var(--muted-foreground);text-align:center;border-radius:5px;justify-items:center;gap:7px;padding:18px;display:grid;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.workbench-graph-empty svg{width:24px;height:24px;color:var(--compass-faint);margin-bottom:3px}.workbench-graph-empty strong{color:var(--foreground);font-size:12px}.workbench-graph-empty span{max-width:290px;font-size:11px;line-height:1.45}.workbench-graph-empty button{border:1px solid var(--compass-line-strong);background:var(--vscode-button-background,var(--compass-focus));min-height:30px;color:var(--vscode-button-foreground,#fff);font:inherit;border-radius:3px;margin-top:5px;padding:0 10px;font-size:10px}.workbench-graph-empty button:hover{background:var(--vscode-button-hoverBackground,var(--compass-focus))}.workbench-graph-empty button:focus-visible{outline:2px solid var(--compass-focus);outline-offset:2px}.workbench-history-view{position:relative}.workbench-history-banner{z-index:24;border:1px solid var(--compass-line-strong);background:var(--compass-panel-raised);border-radius:5px;align-items:center;gap:9px;padding:8px 11px;display:flex;position:absolute;top:10px;left:50%;transform:translate(-50%);box-shadow:0 10px 28px #0000002e}.workbench-history-banner svg{width:17px;color:var(--compass-focus)}.workbench-history-banner span{gap:1px;display:grid}.workbench-history-banner strong{font-size:11px}.workbench-history-banner small{color:var(--muted-foreground);font-size:9px}.workbench-architecture-body{grid-template-columns:minmax(0,1fr) minmax(240px,310px);min-width:0;min-height:0;display:grid}.workbench-architecture-body>.architecture-map-panel{border:0;border-radius:0;min-width:0;height:100%;min-height:0}.workbench-architecture-body>aside{border-left:1px solid var(--compass-line);background:var(--compass-panel);min-width:0;padding:16px;overflow:auto}.workbench-architecture-body>aside>span{color:var(--muted-foreground);letter-spacing:.09em;text-transform:uppercase;font-size:9px;font-weight:650}.workbench-architecture-body>aside h2{margin:5px 0;font-size:15px}.workbench-architecture-body>aside p{color:var(--muted-foreground);font-size:10px;line-height:1.5}.workbench-symbol-list{gap:2px;margin-top:12px;display:grid}.workbench-symbol-list button{min-width:0;color:var(--foreground);text-align:left;background:0 0;border:1px solid #0000;border-radius:3px;gap:2px;padding:7px;display:grid}.workbench-symbol-list button:hover:not(:disabled){border-color:var(--border);background:var(--workbench-hover)}.workbench-symbol-list button:disabled{cursor:default}.workbench-symbol-list strong,.workbench-symbol-list small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.workbench-symbol-list strong{font-size:10px}.workbench-symbol-list small{color:var(--muted-foreground);font-size:9px}.visualization-workbench button:focus-visible,.visualization-workbench select:focus-visible{outline:1px solid var(--compass-focus);outline-offset:1px}@media(max-width:760px){.visualization-workbench{grid-template-columns:58px minmax(0,1fr)}.visualization-rail>header{flex-direction:column;justify-content:center;gap:9px;padding-inline:8px;display:flex}.visualization-rail header>span:nth-child(2),.visualization-rail nav button>span,.visualization-rail nav i,.visualization-rail>footer{display:none}.visualization-rail nav button{grid-template-columns:1fr;place-items:center;display:grid}.visualization-coverage>span{display:none}.workbench-architecture-body{grid-template-columns:minmax(0,1fr)}.workbench-architecture-body>aside{display:none}}@media(prefers-reduced-motion:no-preference){.visualization-rail nav button[aria-current=page]{animation:.18s ease-out compass-bearing}}@keyframes compass-bearing{0%{opacity:.7;transform:translate(-3px)}to{opacity:1;transform:translate(0)}}*{border-color:var(--border)}html,body,#root,#compass-viewer-root{min-height:100%;margin:0}body{background:var(--background);color:var(--foreground);font-family:var(--compass-font-sans);overflow:hidden}button:not(:disabled),[role=button]:not(:disabled){cursor:pointer}[data-slot=button],[data-slot=input],[data-slot=tabs-list],[data-slot=tabs-trigger]{border-radius:4px}.workbench-collection-toolbar{justify-content:space-between;align-items:center;gap:10px;min-width:0;display:flex}.workbench-search{flex:1;align-items:center;min-width:180px;max-width:540px;display:flex;position:relative}.workbench-search>svg{width:14px;height:14px;color:var(--vscode-input-placeholderForeground,var(--muted-foreground));pointer-events:none;position:absolute;left:8px}.workbench-search input{border:1px solid var(--vscode-input-border,var(--border));background:var(--vscode-input-background,var(--input));width:100%;height:30px;color:var(--vscode-input-foreground,var(--foreground));font:inherit;border-radius:3px;outline:none;padding:4px 30px 4px 29px;font-size:12px}.workbench-search input::placeholder{color:var(--vscode-input-placeholderForeground,var(--muted-foreground))}.workbench-search input:focus-visible{border-color:var(--ring);outline:1px solid var(--ring);outline-offset:-1px}.workbench-search-clear{width:24px;height:24px;color:var(--muted-foreground);background:0 0;border:0;border-radius:3px;place-items:center;display:grid;position:absolute;right:3px}.workbench-search-clear:hover{background:var(--workbench-hover);color:var(--workbench-hover-foreground)}.workbench-search-clear svg{width:13px;height:13px}.workbench-result-count,.workbench-pagination-range{color:var(--muted-foreground);white-space:nowrap;font-size:11px}.workbench-pagination{justify-content:space-between;align-items:center;gap:12px;min-height:36px;padding-top:8px;display:flex}.workbench-pagination-actions{color:var(--muted-foreground);align-items:center;gap:4px;font-size:11px;display:flex}.workbench-pagination-actions button{width:26px;height:26px;color:var(--foreground);background:0 0;border:1px solid #0000;border-radius:3px;place-items:center;display:grid}.workbench-pagination-actions button:hover:not(:disabled){border-color:var(--border);background:var(--workbench-hover)}.workbench-pagination-actions button:disabled{color:var(--vscode-disabledForeground,var(--compass-faint))}.workbench-pagination-actions svg{width:14px;height:14px}.workbench-state{width:min(520px,100% - 32px);min-height:180px;color:var(--muted-foreground);text-align:center;align-content:center;place-items:center;gap:12px;margin:auto;padding:24px;display:grid}.workbench-state>svg{width:28px;height:28px}.workbench-state[data-kind=error]>svg{color:var(--destructive)}.workbench-state h2{color:var(--foreground);margin:0;font-size:14px;font-weight:600}.workbench-state p{margin:5px 0 0;font-size:12px;line-height:1.55}.workbench-button{border:1px solid var(--vscode-button-border,transparent);background:var(--vscode-button-background,var(--primary));min-height:30px;color:var(--vscode-button-foreground,var(--primary-foreground));font:inherit;border-radius:3px;padding:4px 11px;font-size:12px}.workbench-button:hover{background:var(--vscode-button-hoverBackground,var(--primary))}.workbench-button:focus-visible,.workbench-search-clear:focus-visible,.workbench-pagination-actions button:focus-visible{outline:2px solid var(--ring);outline-offset:1px}.workbench-state-spinner{animation:1s linear infinite spin}.compass-load-shell{background:radial-gradient(circle at 50% 43%,var(--compass-focus),transparent 28%),radial-gradient(circle at 68% 62%,var(--compass-success),transparent 24%),linear-gradient(145deg,var(--compass-canvas) 0%,var(--compass-canvas-deep) 100%);place-content:center;min-height:100vh;padding:40px 24px;display:grid;position:relative;overflow:hidden}@supports (color:color-mix(in lab,red,red)){.compass-load-shell{background:radial-gradient(circle at 50% 43%,color-mix(in srgb,var(--compass-focus) 16%,transparent),transparent 28%),radial-gradient(circle at 68% 62%,color-mix(in srgb,var(--compass-success) 8%,transparent),transparent 24%),linear-gradient(145deg,var(--compass-canvas) 0%,var(--compass-canvas-deep) 100%)}}.compass-load-shell{text-align:center}.compass-load-shell:before{content:"";opacity:.18;background-image:radial-gradient(var(--compass-grid) .65px,transparent .65px);pointer-events:none;background-size:24px 24px;position:absolute;inset:0}.compass-load-visual{place-items:start center;width:92px;height:88px;margin:0 auto;display:grid;position:relative}.compass-load-mark{width:58px;height:58px;color:var(--compass-focus);place-items:center;display:grid;position:relative}.compass-load-logo{filter:drop-shadow(0 10px 22px);width:54px;height:54px}@supports (color:color-mix(in lab,red,red)){.compass-load-logo{filter:drop-shadow(0 10px 22px color-mix(in srgb,currentColor 24%,transparent))}}.compass-load-logo{transform-origin:50%;animation:2.4s ease-in-out infinite compass-load-logo-breathe}.compass-load-visual[data-state=error] .compass-load-mark{border:1px solid var(--destructive);width:48px;height:48px}@supports (color:color-mix(in lab,red,red)){.compass-load-visual[data-state=error] .compass-load-mark{border:1px solid color-mix(in srgb,var(--destructive) 66%,var(--compass-line))}}.compass-load-visual[data-state=error] .compass-load-mark{color:var(--destructive);box-shadow:0 18px 48px var(--destructive);border-radius:12px}@supports (color:color-mix(in lab,red,red)){.compass-load-visual[data-state=error] .compass-load-mark{box-shadow:0 18px 48px color-mix(in srgb,var(--destructive) 20%,transparent)}}.compass-load-visual[data-state=error] .compass-load-mark svg{width:22px;height:22px}.compass-load-copy{z-index:1;width:min(620px,100vw - 48px);position:relative}.compass-load-eyebrow{color:var(--compass-focus);letter-spacing:.16em;text-transform:uppercase;margin-bottom:10px;font-size:11px;font-weight:700;display:block}.compass-load-copy h1{color:var(--foreground);letter-spacing:-.035em;margin:0;font-size:clamp(24px,4vw,38px);font-weight:650;line-height:1.08}.compass-load-steps,.compass-load-error{color:var(--muted-foreground);margin:16px auto 0;font-size:13px;line-height:1.65}.compass-load-steps{flex-wrap:wrap;justify-content:center;gap:6px;display:flex}.compass-load-steps b{color:var(--compass-focus);font-weight:700}.compass-load-error{overflow-wrap:anywhere;max-width:560px}.compass-load-actions{flex-wrap:wrap;justify-content:center;gap:10px;margin-top:22px;display:flex}.compass-load-action{border:1px solid var(--compass-line-strong);background:var(--compass-panel-raised);min-height:38px;color:var(--foreground);font:inherit;border-radius:9px;outline:none;align-items:center;gap:8px;padding:0 14px;font-size:12px;display:inline-flex}.compass-load-action:hover{border-color:var(--compass-focus);background:var(--compass-focus-soft)}.compass-load-action-primary{border-color:var(--vscode-button-background,var(--compass-focus));background:var(--vscode-button-background,var(--compass-focus));color:var(--vscode-button-foreground,#fff)}.compass-load-action-primary:hover{background:var(--vscode-button-hoverBackground,var(--compass-focus))}.compass-load-action svg{width:15px;height:15px}@keyframes compass-load-logo-breathe{50%{opacity:.72;transform:scale(.94)}}.compass-load-shell{background:var(--vscode-editor-background,var(--background));grid-template-rows:auto auto;gap:18px}.compass-load-shell:before{display:none}.compass-load-visual{width:92px;height:88px;margin:0 auto}.compass-load-mark{color:var(--vscode-symbolIcon-classForeground,var(--vscode-progressBar-background,var(--compass-focus)));box-shadow:none}.compass-load-logo{filter:drop-shadow(0 9px 20px var(--vscode-progressBar-background,var(--workbench-progress)))}@supports (color:color-mix(in lab,red,red)){.compass-load-logo{filter:drop-shadow(0 9px 20px color-mix(in srgb,var(--vscode-progressBar-background,var(--workbench-progress)) 28%,transparent))}}.compass-load-progress{background:var(--vscode-progressBar-background,var(--workbench-progress));width:96px;height:2px;position:absolute;bottom:0;left:50%;overflow:hidden;transform:translate(-50%)}@supports (color:color-mix(in lab,red,red)){.compass-load-progress{background:var(--vscode-progressBar-background,color-mix(in srgb, var(--workbench-progress) 28%, transparent))}}.compass-load-progress i{background:var(--workbench-progress);width:45%;height:100%;animation:1.4s ease-in-out infinite compass-native-progress;display:block}@keyframes compass-native-progress{0%{transform:translate(-110%)}to{transform:translate(330%)}}.compass-load-copy{width:min(520px,100vw - 40px)}.compass-load-eyebrow{color:var(--muted-foreground);letter-spacing:.08em;margin-bottom:7px;font-size:10px}.compass-load-copy h1{letter-spacing:-.015em;font-size:clamp(19px,3vw,25px);font-weight:600;line-height:1.2}.compass-load-steps,.compass-load-error{margin-top:10px;font-size:12px}.compass-load-steps{gap:8px 14px}.compass-load-step{color:var(--vscode-disabledForeground,var(--muted-foreground));align-items:center;gap:6px;display:inline-flex}.compass-load-step>i{border:1px solid;border-radius:50%;width:6px;height:6px;display:block}.compass-load-step[data-state=complete]{color:var(--vscode-descriptionForeground,var(--muted-foreground))}.compass-load-step[data-state=complete]>i{border-color:var(--vscode-progressBar-background,var(--workbench-progress));background:var(--vscode-progressBar-background,var(--workbench-progress))}.compass-load-step[data-state=active]{color:var(--vscode-editor-foreground,var(--foreground))}.compass-load-step[data-state=active]>i{border-color:var(--vscode-progressBar-background,var(--workbench-progress));background:var(--vscode-progressBar-background,var(--workbench-progress));box-shadow:0 0 7px var(--vscode-progressBar-background,var(--workbench-progress))}@supports (color:color-mix(in lab,red,red)){.compass-load-step[data-state=active]>i{box-shadow:0 0 7px color-mix(in srgb,var(--vscode-progressBar-background,var(--workbench-progress)) 46%,transparent)}}.compass-load-action{background:var(--vscode-button-secondaryBackground,var(--secondary));min-height:30px;color:var(--vscode-button-secondaryForeground,var(--secondary-foreground));border-radius:3px;padding:0 11px}.compass-load-action-primary{background:var(--vscode-button-background,var(--primary));color:var(--vscode-button-foreground,var(--primary-foreground))}.compass-load-shell[data-variant=architecture]{text-align:left;grid-template-rows:auto auto;grid-template-columns:minmax(220px,390px) minmax(280px,560px);column-gap:clamp(24px,6vw,72px)}.compass-load-shell[data-variant=architecture] .compass-load-visual{grid-column:1;margin:0}.compass-load-shell[data-variant=architecture] .compass-load-copy{grid-column:1;width:auto}.compass-load-shell[data-variant=architecture] .compass-load-steps{justify-content:flex-start}.architecture-load-skeleton{border:1px solid var(--vscode-panel-border,var(--border));background:var(--vscode-editor-background,var(--background));border-radius:4px;grid-area:1/2/span 2;grid-template-rows:54px 1fr;grid-template-columns:92px 1fr;width:min(46vw,560px);height:min(46vh,360px);display:grid;overflow:hidden}.architecture-load-skeleton span{background-image:linear-gradient(90deg,transparent,var(--foreground),transparent)}@supports (color:color-mix(in lab,red,red)){.architecture-load-skeleton span{background-image:linear-gradient(90deg,transparent,color-mix(in srgb,var(--foreground) 7%,transparent),transparent)}}.architecture-load-skeleton span{background-size:220% 100%;animation:1.8s ease-in-out infinite compass-skeleton}.architecture-load-rail{border-right:1px solid var(--border);background-color:var(--vscode-sideBar-background,var(--sidebar));grid-row:1/span 2}.architecture-load-flow{border-bottom:1px solid var(--border)}.architecture-load-content{border:1px solid var(--border);border-radius:3px;margin:14px}@keyframes compass-skeleton{to{background-position:-220% 0}}.compass-workspace{isolation:isolate;background:var(--compass-canvas);height:100vh;min-height:30rem;position:relative;overflow:hidden}.compass-workspace-content{grid-template-columns:minmax(0,1fr) 8px var(--compass-inspector-width,340px);width:100%;height:100%;min-height:inherit;display:grid;overflow:hidden}.compass-workspace-content[data-inspector-collapsed=true]{grid-template-columns:minmax(0,1fr) 48px}.compass-graph-transition{z-index:30;background:var(--vscode-editor-background,var(--background));color:var(--foreground);text-align:center;grid-template-rows:auto auto;place-content:center;gap:18px;padding:40px 24px;display:grid;position:absolute;inset:0;overflow:hidden}.compass-graph-transition .compass-load-copy{width:min(520px,100vw - 40px)}.compass-graph-transition-description{max-width:470px;color:var(--vscode-descriptionForeground,var(--muted-foreground));margin:10px auto 0;font-size:12px;line-height:1.6}.compass-graph-transition .compass-load-action:focus-visible{outline:2px solid var(--vscode-focusBorder,var(--ring));outline-offset:2px}.compass-graph-stage{background:radial-gradient(circle at 45% 42%,var(--compass-focus),transparent 34%),radial-gradient(circle at 76% 75%,var(--compass-success),transparent 28%),linear-gradient(145deg,var(--compass-canvas) 0%,var(--compass-canvas-deep) 100%);min-width:0;min-height:0;position:relative;overflow:hidden}@supports (color:color-mix(in lab,red,red)){.compass-graph-stage{background:radial-gradient(circle at 45% 42%,color-mix(in srgb,var(--compass-focus) 21%,transparent),transparent 34%),radial-gradient(circle at 76% 75%,color-mix(in srgb,var(--compass-success) 10%,transparent),transparent 28%),linear-gradient(145deg,var(--compass-canvas) 0%,var(--compass-canvas-deep) 100%)}}.compass-graph-stage:after{content:"";pointer-events:none;opacity:.16;background-image:radial-gradient(var(--compass-grid) .55px,transparent .55px);background-size:22px 22px;position:absolute;inset:0}.compass-graph-stage[data-comparison=true]{background:var(--vscode-editor-background,var(--compass-canvas))}.compass-graph-stage[data-comparison=true]:after{opacity:.09}.compass-canvas{z-index:1;min-width:0;min-height:0;position:absolute;inset:0}.compass-glass-panel{background:var(--vscode-editorWidget-background,var(--compass-panel));border:1px solid var(--compass-line);box-shadow:none;-webkit-backdrop-filter:none}.compass-graph-toolbar{z-index:4;border-radius:4px;justify-content:space-between;align-items:center;gap:10px;min-height:42px;padding:5px 6px 5px 10px;display:flex;position:absolute;top:12px;left:12px;right:12px}.compass-viewer-status{min-width:0;color:var(--muted-foreground);letter-spacing:.015em;align-items:center;gap:10px;font-size:12px;display:flex}.compass-viewer-status-text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.compass-viewer-status-dot{background:var(--compass-focus);width:8px;height:8px;box-shadow:0 0 0 4px var(--compass-focus);border-radius:50%;flex:none}@supports (color:color-mix(in lab,red,red)){.compass-viewer-status-dot{box-shadow:0 0 0 4px color-mix(in srgb,var(--compass-focus) 12%,transparent)}}.compass-viewer-status[data-state=running] .compass-viewer-status-dot{animation:1.6s ease-in-out infinite compass-status-pulse}@keyframes compass-status-pulse{50%{box-shadow:0 0 0 8px color-mix(in srgb,var(--compass-focus) 0%,transparent)}}.compass-toolbar-actions{scrollbar-width:none;align-items:center;gap:6px;min-width:0;display:flex;overflow-x:auto}.compass-physics-button{border-color:var(--compass-line);background:var(--vscode-dropdown-background,transparent)}.compass-physics-button[aria-pressed=true]{border-color:var(--compass-focus)}@supports (color:color-mix(in lab,red,red)){.compass-physics-button[aria-pressed=true]{border-color:color-mix(in srgb,var(--compass-focus) 55%,var(--compass-line))}}.compass-physics-button[aria-pressed=true]{background:var(--compass-focus)}@supports (color:color-mix(in lab,red,red)){.compass-physics-button[aria-pressed=true]{background:color-mix(in srgb,var(--compass-focus) 13%,transparent)}}.compass-physics-button[aria-pressed=true]{color:var(--foreground)}.compass-toolbar-actions::-webkit-scrollbar{display:none}.compass-toolbar-separator{background:var(--compass-line);flex:none;width:1px;height:18px}.compass-zoom-controls{border:1px solid var(--compass-line);background:var(--vscode-dropdown-background,transparent);border-radius:3px;flex:none;min-height:30px;display:inline-flex;overflow:hidden}.compass-zoom-controls .compass-tool-button{border:0;border-radius:0;min-height:28px}.compass-zoom-controls .compass-tool-button+.compass-tool-button{border-left:1px solid var(--compass-line)}.compass-layout-picker{border:1px solid var(--compass-line);min-height:30px;color:var(--muted-foreground);background:var(--vscode-dropdown-background,transparent);border-radius:3px;align-items:center;gap:6px;padding-left:8px;display:inline-flex}.compass-layout-picker svg{flex:none;width:15px;height:15px}.compass-layout-picker select{min-height:28px;color:var(--vscode-dropdown-foreground,var(--foreground));font:inherit;background:0 0;border:0;outline:0;padding:0 24px 0 0}.compass-layout-picker:focus-within{outline:1px solid var(--vscode-focusBorder,var(--compass-focus));outline-offset:1px}.compass-tool-button:disabled{cursor:default;opacity:.55}.compass-tool-button{min-height:30px;color:var(--muted-foreground);white-space:nowrap;background:0 0;border:1px solid #0000;border-radius:3px;align-items:center;gap:7px;padding:0 8px;transition:none;display:inline-flex}.compass-tool-button svg{width:15px;height:15px}.compass-tool-icon-button{flex:0 0 30px;justify-content:center;width:30px;padding:0}.compass-zoom-reset{min-width:42px;color:var(--compass-faint);font:9px/1 var(--compass-font-mono);letter-spacing:.02em;justify-content:center;padding:0 7px}.compass-tool-button:hover,.compass-tool-button[aria-pressed=true]{border-color:var(--compass-line);background:var(--workbench-hover);color:var(--foreground)}.compass-tool-button:focus-visible,.compass-explore-panel button:focus-visible,.compass-explore-panel select:focus-visible,.compass-minimap button:focus-visible,.compass-change-legend button:focus-visible,.compass-search-field input:focus-visible,.compass-search-item:focus-visible,.compass-inspector-action:focus-visible,.compass-source-card:focus-visible,.compass-inspector-disclosure:focus-visible,.compass-inspector-resizer:focus-visible,.compass-load-action:focus-visible,.compass-neighbor-link:focus-visible,.compass-community-item:focus-within{outline:2px solid var(--compass-focus);outline-offset:2px}.compass-explore-panel{z-index:8;width:min(330px,100vw - 24px);max-height:calc(100vh - 84px);color:var(--foreground);border-radius:5px;gap:10px;padding:12px;display:grid;position:absolute;top:calc(100% + 7px);right:0;overflow-y:auto}.compass-explore-heading{border-bottom:1px solid var(--compass-line);justify-content:space-between;align-items:flex-start;gap:16px;padding-bottom:10px;display:flex}.compass-explore-heading>div{gap:3px;display:grid}.compass-explore-heading strong,.compass-explore-toggle strong,.compass-shortcut-title strong{letter-spacing:.02em;font-size:11px;font-weight:600}.compass-explore-heading span,.compass-explore-toggle small{color:var(--compass-faint);font-size:10px;line-height:1.35}.compass-selection-prompt{border:1px solid var(--compass-focus);grid-template-columns:18px minmax(0,1fr);align-items:start;gap:9px;padding:9px;display:grid}@supports (color:color-mix(in lab,red,red)){.compass-selection-prompt{border:1px solid color-mix(in srgb,var(--compass-focus) 28%,var(--compass-line))}}.compass-selection-prompt{background:var(--compass-focus);border-radius:4px}@supports (color:color-mix(in lab,red,red)){.compass-selection-prompt{background:color-mix(in srgb,var(--compass-focus) 7%,transparent)}}.compass-selection-prompt{color:var(--muted-foreground)}.compass-selection-prompt>svg{width:16px;height:16px;color:var(--compass-focus)}.compass-selection-prompt>span{gap:3px;display:grid}.compass-selection-prompt strong{color:var(--foreground);font-size:10px}.compass-selection-prompt small{color:var(--compass-faint);font-size:10px;line-height:1.4}.compass-explore-panel kbd{border:1px solid var(--compass-line);border-bottom-color:var(--compass-line);justify-content:center;align-items:center;min-width:20px;min-height:19px;padding:0 5px;display:inline-flex}@supports (color:color-mix(in lab,red,red)){.compass-explore-panel kbd{border-bottom-color:color-mix(in srgb,var(--compass-line) 72%,var(--foreground))}}.compass-explore-panel kbd{background:var(--vscode-keybindingLabel-background,var(--workbench-hover));color:var(--vscode-keybindingLabel-foreground,var(--foreground));font:9px/1 var(--compass-font-mono);border-radius:3px}.compass-explore-toggle{width:100%;color:var(--muted-foreground);text-align:left;background:0 0;border:1px solid #0000;border-radius:4px;grid-template-columns:18px minmax(0,1fr) 28px;align-items:center;gap:9px;padding:7px 8px;display:grid}.compass-explore-toggle:hover,.compass-explore-toggle[aria-pressed=true]{border-color:var(--compass-line);background:var(--workbench-hover);color:var(--foreground)}.compass-explore-toggle:disabled{cursor:default;opacity:.5}.compass-explore-toggle>svg{width:16px;height:16px}.compass-explore-toggle>span{gap:2px;min-width:0;display:grid}.compass-explore-toggle>i{border:1px solid var(--compass-line);background:var(--compass-canvas-deep);border-radius:8px;width:26px;height:14px;position:relative}.compass-explore-toggle>i:after{content:"";background:var(--compass-faint);border-radius:50%;width:8px;height:8px;position:absolute;top:2px;left:2px}.compass-explore-toggle[aria-pressed=true]>i{border-color:var(--compass-focus)}@supports (color:color-mix(in lab,red,red)){.compass-explore-toggle[aria-pressed=true]>i{border-color:color-mix(in srgb,var(--compass-focus) 65%,var(--compass-line))}}.compass-explore-toggle[aria-pressed=true]>i{background:var(--compass-focus)}@supports (color:color-mix(in lab,red,red)){.compass-explore-toggle[aria-pressed=true]>i{background:color-mix(in srgb,var(--compass-focus) 24%,var(--compass-canvas-deep))}}.compass-explore-toggle[aria-pressed=true]>i:after{background:var(--compass-focus);left:14px}.compass-explore-field{border:0;gap:6px;min-width:0;margin:0;padding:0;display:grid}.compass-explore-field:disabled{opacity:.5}.compass-explore-field legend,.compass-explore-select>span{color:var(--compass-faint);letter-spacing:.08em;text-transform:uppercase;margin-bottom:6px;font-size:9px;font-weight:600}.compass-segmented-control{border:1px solid var(--compass-line);border-radius:4px;grid-auto-columns:1fr;grid-auto-flow:column;display:grid;overflow:hidden}.compass-segmented-control button{min-height:28px;color:var(--compass-faint);font:10px/1 var(--compass-font-mono);background:0 0;border:0}.compass-segmented-control button+button{border-left:1px solid var(--compass-line)}.compass-segmented-control button:hover,.compass-segmented-control button[aria-pressed=true]{background:var(--workbench-hover);color:var(--foreground)}.compass-segmented-control button[aria-pressed=true]{box-shadow:inset 0 -2px var(--compass-focus)}.compass-explore-select{display:grid}.compass-explore-select select{border:1px solid var(--compass-line);background:var(--vscode-dropdown-background,var(--compass-canvas-deep));min-height:30px;color:var(--vscode-dropdown-foreground,var(--foreground));border-radius:4px;padding:0 28px 0 8px;font-size:10px}.compass-shortcut-guide{border-top:1px solid var(--compass-line);gap:9px;padding-top:10px;display:grid}.compass-shortcut-title{color:var(--muted-foreground);align-items:center;gap:7px;display:flex}.compass-shortcut-title svg{width:15px;height:15px}.compass-shortcut-guide dl{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px 14px;margin:0;display:grid}.compass-shortcut-guide dl>div{grid-template-columns:52px minmax(0,1fr);align-items:center;gap:5px;display:grid}.compass-shortcut-guide dt,.compass-shortcut-guide dd{margin:0}.compass-shortcut-guide dt{gap:3px;display:flex}.compass-shortcut-guide dd{color:var(--compass-faint);font-size:9px}.compass-minimap{z-index:3;border-radius:4px;width:178px;position:absolute;bottom:12px;right:12px;overflow:hidden}.compass-minimap header{border-bottom:1px solid var(--compass-line);min-height:26px;color:var(--muted-foreground);font:9px/1 var(--compass-font-mono);letter-spacing:.08em;text-transform:uppercase;justify-content:space-between;align-items:center;padding:0 8px;display:flex}.compass-minimap header small{color:var(--compass-faint);font:inherit;letter-spacing:0;text-transform:none}.compass-minimap button{background:var(--compass-canvas);border:0;width:100%;height:108px;padding:0;display:block}@supports (color:color-mix(in lab,red,red)){.compass-minimap button{background:color-mix(in srgb,var(--compass-canvas) 90%,transparent)}}.compass-minimap button{color:var(--compass-faint)}.compass-minimap svg{width:100%;height:100%;display:block}.compass-minimap-edges line{stroke:var(--compass-line);stroke-width:.65px;vector-effect:non-scaling-stroke}.compass-minimap-nodes circle[data-focused=true]{stroke:var(--foreground);stroke-width:1.25px;vector-effect:non-scaling-stroke}.compass-minimap-viewport{fill:var(--compass-focus)}@supports (color:color-mix(in lab,red,red)){.compass-minimap-viewport{fill:color-mix(in srgb,var(--compass-focus) 8%,transparent)}}.compass-minimap-viewport{stroke:var(--compass-focus);stroke-width:1px;vector-effect:non-scaling-stroke}.compass-changed-symbols button:focus-visible,.compass-evidence-source-actions button:focus-visible,.compass-relationship-detail>button:focus-visible{outline:2px solid var(--compass-focus);outline-offset:2px}.compass-change-legend{z-index:4;border:1px solid var(--compass-line);background:var(--vscode-editorWidget-background,var(--compass-panel));border-radius:4px;flex-wrap:wrap;gap:5px;max-width:calc(100% - 24px);padding:5px;display:flex;position:absolute;top:64px;left:12px}.compass-change-legend button{min-height:27px;color:var(--muted-foreground);background:0 0;border:1px solid #0000;border-radius:3px;align-items:center;gap:6px;padding:3px 7px;font-size:10px;display:inline-flex}.compass-change-legend button:hover,.compass-change-legend button[aria-pressed=true]{border-color:var(--compass-line);background:var(--workbench-hover);color:var(--foreground)}.compass-change-legend button[aria-pressed=false]{opacity:.42}.compass-change-legend button>span{border:1px solid var(--vscode-descriptionForeground,#6e7781);background:var(--vscode-descriptionForeground,#6e7781);border-radius:50%;width:8px;height:8px}@supports (color:color-mix(in lab,red,red)){.compass-change-legend button>span{background:color-mix(in srgb,var(--vscode-descriptionForeground,#6e7781) 18%,var(--vscode-editor-background,var(--background)))}}.compass-change-legend button[data-change=added]>span{border-color:var(--vscode-gitDecoration-addedResourceForeground,#2ea043);background:var(--vscode-gitDecoration-addedResourceForeground,#2ea043)}@supports (color:color-mix(in lab,red,red)){.compass-change-legend button[data-change=added]>span{background:color-mix(in srgb,var(--vscode-gitDecoration-addedResourceForeground,#2ea043) 22%,var(--vscode-editor-background,var(--background)))}}.compass-change-legend button[data-change=removed]>span{border-color:var(--vscode-gitDecoration-deletedResourceForeground,#f85149);background:var(--vscode-gitDecoration-deletedResourceForeground,#f85149)}@supports (color:color-mix(in lab,red,red)){.compass-change-legend button[data-change=removed]>span{background:color-mix(in srgb,var(--vscode-gitDecoration-deletedResourceForeground,#f85149) 22%,var(--vscode-editor-background,var(--background)))}}.compass-change-legend button[data-change=changed]>span{border-color:var(--vscode-gitDecoration-modifiedResourceForeground,#d29922);background:var(--vscode-gitDecoration-modifiedResourceForeground,#d29922)}@supports (color:color-mix(in lab,red,red)){.compass-change-legend button[data-change=changed]>span{background:color-mix(in srgb,var(--vscode-gitDecoration-modifiedResourceForeground,#d29922) 22%,var(--vscode-editor-background,var(--background)))}}.compass-change-legend button small{color:var(--compass-faint);font:9px/1 var(--compass-font-mono)}.compass-semantic-legend{z-index:4;border:1px solid var(--compass-line);background:var(--vscode-editorWidget-background,var(--compass-panel));max-width:calc(100% - 24px);color:var(--muted-foreground);border-radius:4px;flex-wrap:wrap;gap:5px 12px;padding:7px 8px;font-size:10px;display:flex;position:absolute;top:64px;left:12px}.compass-semantic-legend section{flex-wrap:wrap;align-items:center;gap:5px 9px;min-height:20px;display:flex}.compass-semantic-legend section+section{border-left:1px solid var(--compass-line);padding-left:12px}.compass-semantic-legend strong{color:var(--compass-faint);font:9px/1 var(--compass-font-mono);letter-spacing:.08em;text-transform:uppercase}.compass-semantic-legend-item{white-space:nowrap;align-items:center;gap:5px;display:inline-flex}.compass-semantic-legend-item small{color:var(--compass-faint);font:9px/1 var(--compass-font-mono)}.compass-semantic-legend-item i[data-node-category]{border:1.5px solid var(--vscode-descriptionForeground,#8b949e);background:var(--vscode-descriptionForeground,#8b949e);width:9px;height:9px;display:inline-block}@supports (color:color-mix(in lab,red,red)){.compass-semantic-legend-item i[data-node-category]{background:color-mix(in srgb,var(--vscode-descriptionForeground,#8b949e) 22%,var(--vscode-editor-background,var(--background)))}}.compass-semantic-legend-item i[data-node-category=callable]{border-color:var(--vscode-symbolIcon-functionForeground,#5fa8ff);background:var(--vscode-symbolIcon-functionForeground,#5fa8ff);border-radius:50%}@supports (color:color-mix(in lab,red,red)){.compass-semantic-legend-item i[data-node-category=callable]{background:color-mix(in srgb,var(--vscode-symbolIcon-functionForeground,#5fa8ff) 22%,var(--vscode-editor-background,var(--background)))}}.compass-semantic-legend-item i[data-node-category=type]{border-color:var(--vscode-symbolIcon-classForeground,#e3b341);background:var(--vscode-symbolIcon-classForeground,#e3b341)}@supports (color:color-mix(in lab,red,red)){.compass-semantic-legend-item i[data-node-category=type]{background:color-mix(in srgb,var(--vscode-symbolIcon-classForeground,#e3b341) 22%,var(--vscode-editor-background,var(--background)))}}.compass-semantic-legend-item i[data-node-category=type]{transform:rotate(45deg)scale(.82)}.compass-semantic-legend-item i[data-node-category=module]{border-color:var(--vscode-symbolIcon-moduleForeground,#56d4b4);background:var(--vscode-symbolIcon-moduleForeground,#56d4b4);border-radius:1px}@supports (color:color-mix(in lab,red,red)){.compass-semantic-legend-item i[data-node-category=module]{background:color-mix(in srgb,var(--vscode-symbolIcon-moduleForeground,#56d4b4) 22%,var(--vscode-editor-background,var(--background)))}}.compass-semantic-legend-item i[data-node-category=boundary]{background:var(--vscode-symbolIcon-eventForeground,#ff9b87);clip-path:polygon(50% 0,100% 100%,0 100%);border:0;width:11px;height:10px}.compass-semantic-legend-item i[data-edge-category]{background:var(--vscode-descriptionForeground,#8b949e);width:16px;height:2px;display:inline-block;position:relative}.compass-semantic-legend-item i[data-edge-category]:after{content:"";border-top:3px solid #0000;border-bottom:3px solid #0000;border-left:4px solid;width:0;height:0;position:absolute;top:-2px;right:-1px}.compass-semantic-legend-item i[data-edge-category=execution]{background:var(--vscode-symbolIcon-functionForeground,#5fa8ff);color:var(--vscode-symbolIcon-functionForeground,#5fa8ff)}.compass-semantic-legend-item i[data-edge-category=dependency]{background:var(--vscode-symbolIcon-moduleForeground,#56d4b4);color:var(--vscode-symbolIcon-moduleForeground,#56d4b4)}.compass-semantic-legend-item i[data-edge-category=structure]{background:var(--vscode-symbolIcon-classForeground,#e3b341);color:var(--vscode-symbolIcon-classForeground,#e3b341)}.compass-semantic-legend-item i[data-edge-category=flow]{background:var(--vscode-symbolIcon-eventForeground,#ff9b87);color:var(--vscode-symbolIcon-eventForeground,#ff9b87)}.compass-inspector-resizer{z-index:6;background:var(--compass-panel);cursor:col-resize;touch-action:none;border:0;outline:none;min-width:8px;position:relative}.compass-inspector-resizer span{background:var(--compass-line-strong);border-radius:999px;width:2px;height:42px;transition:height .16s,background .16s;position:absolute;top:50%;left:3px;transform:translateY(-50%)}.compass-inspector-resizer:hover span,.compass-inspector-resizer:focus-visible span{background:var(--compass-focus);height:68px}.compass-graph-inspector{z-index:5;border-left:1px solid var(--compass-line);background:var(--vscode-sideBar-background,var(--compass-panel));min-width:0;box-shadow:none;flex-direction:column;display:flex;position:relative;overflow:hidden}.compass-graph-inspector-collapsed{border-left:1px solid var(--compass-line);box-shadow:none;align-items:center}.compass-inspector-header{border-bottom:1px solid var(--compass-line);align-items:center;gap:11px;min-height:52px;padding:8px 12px;display:flex}.compass-inspector-title{flex:1;min-width:0}.compass-inspector-header strong,.compass-inspector-header small{display:block}.compass-inspector-header strong{letter-spacing:.01em;font-size:14px}.compass-inspector-header small{color:var(--compass-faint);text-overflow:ellipsis;white-space:nowrap;margin-top:2px;font-size:11px;overflow:hidden}.compass-product-mark{background:linear-gradient(145deg,var(--vscode-button-foreground,#eff8ff),var(--compass-focus));border-radius:4px;flex:none;place-items:center;width:32px;height:32px;display:grid}@supports (color:color-mix(in lab,red,red)){.compass-product-mark{background:linear-gradient(145deg,var(--vscode-button-foreground,#eff8ff),color-mix(in srgb,var(--compass-focus) 64%,#fff))}}.compass-product-mark{color:var(--vscode-button-background,#09182c);box-shadow:inset 0 0 0 1px #ffffff7a}.compass-product-mark svg{width:19px;height:19px}.compass-inspector-disclosure{width:32px;height:32px;color:var(--muted-foreground);background:0 0;border:1px solid #0000;border-radius:3px;outline:none;flex:none;place-items:center;transition:none;display:grid}.compass-inspector-disclosure:hover{border-color:var(--compass-line);background:var(--workbench-hover);color:var(--foreground)}.compass-inspector-disclosure svg{width:17px;height:17px}.compass-inspector-expand{margin-top:18px}.compass-inspector-rail-label{color:var(--compass-faint);letter-spacing:.12em;text-transform:uppercase;writing-mode:vertical-rl;margin-top:16px;font-size:10px;font-weight:650}.compass-inspector-search{border-bottom:1px solid var(--compass-line);padding:10px 12px;position:relative}.compass-inspector-search-row{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:6px;display:grid}.compass-inspector-search-row .compass-search-field:last-child{grid-column:1/-1}.compass-inspector-search-disclosure{border-color:var(--compass-line)}.compass-search-field{position:relative}.compass-search-field svg{width:15px;height:15px;color:var(--compass-faint);pointer-events:none;position:absolute;top:50%;left:13px;transform:translateY(-50%)}.compass-search-field input{border:1px solid var(--compass-line);background:var(--vscode-input-background,var(--background));width:100%;min-height:30px;color:var(--vscode-input-foreground,var(--foreground));border-radius:3px;outline:none;padding:0 10px 0 34px}.compass-search-field input::placeholder{color:var(--vscode-input-placeholderForeground,var(--compass-faint))}.compass-search-results{z-index:8;border:1px solid var(--compass-line-strong);background:var(--vscode-menu-background,var(--compass-panel));max-height:230px;box-shadow:0 4px 12px var(--vscode-widget-shadow,#00000047);border-radius:3px;padding:6px;position:absolute;top:46px;left:12px;right:12px;overflow-y:auto}.compass-search-item{width:100%;min-height:42px;color:var(--muted-foreground);text-align:left;background:0 0;border:0;border-left:3px solid #0000;border-radius:2px;padding:7px 10px;display:block;overflow:hidden}.compass-search-item strong,.compass-search-item span{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.compass-search-item strong{color:var(--foreground);font-size:12px}.compass-search-item span{color:var(--compass-faint);font:10px/1.4 var(--compass-font-mono)}.compass-search-item:hover,.compass-search-item[aria-selected=true]{background:var(--vscode-list-activeSelectionBackground,var(--compass-focus-soft));color:var(--vscode-list-activeSelectionForeground,var(--foreground))}.compass-info-panel{border-bottom:1px solid var(--compass-line);max-height:48%;padding:18px 16px;overflow-y:auto}.compass-document-evidence{--compass-ocr-accent:#e2a94b;--compass-ocr-preview-surface:var(--compass-focus)}@supports (color:color-mix(in lab,red,red)){.compass-document-evidence{--compass-ocr-preview-surface:color-mix(in srgb, var(--compass-focus) 7%, var(--background))}}.compass-document-evidence{border:1px solid var(--compass-ocr-accent);gap:10px;margin:15px 0 16px;padding:12px;display:grid}@supports (color:color-mix(in lab,red,red)){.compass-document-evidence{border:1px solid color-mix(in srgb,var(--compass-ocr-accent) 28%,var(--compass-line))}}.compass-document-evidence{background:linear-gradient(135deg,var(--compass-ocr-accent),transparent 48%),var(--vscode-editorWidget-background,var(--background));border-radius:5px}@supports (color:color-mix(in lab,red,red)){.compass-document-evidence{background:linear-gradient(135deg,color-mix(in srgb,var(--compass-ocr-accent) 7%,transparent),transparent 48%),var(--vscode-editorWidget-background,var(--background))}}.compass-document-evidence-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:10px;min-width:0;display:flex}.compass-document-evidence-heading{align-items:center;gap:9px;min-width:0;display:flex}.compass-document-evidence-heading>span:last-child{gap:3px;min-width:0;display:grid}.compass-document-evidence-heading small{color:var(--compass-faint);font:600 8px/1.2 var(--compass-font-mono);letter-spacing:.1em;text-transform:uppercase}.compass-document-evidence-heading h3{color:var(--foreground);text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:650;overflow:hidden}.compass-document-evidence-mark{border:1px solid var(--compass-ocr-accent);flex:0 0 28px;place-items:center;width:28px;height:28px;display:grid}@supports (color:color-mix(in lab,red,red)){.compass-document-evidence-mark{border:1px solid color-mix(in srgb,var(--compass-ocr-accent) 58%,var(--compass-line))}}.compass-document-evidence-mark{background:var(--compass-ocr-accent);border-radius:4px}@supports (color:color-mix(in lab,red,red)){.compass-document-evidence-mark{background:color-mix(in srgb,var(--compass-ocr-accent) 13%,transparent)}}.compass-document-evidence-mark{color:var(--compass-ocr-accent)}.compass-document-evidence-mark svg{width:15px;height:15px}.compass-ocr-status-chip{border:1px solid var(--compass-success);align-items:center;gap:6px;min-width:0;max-width:100%;padding:5px 7px;display:inline-flex}@supports (color:color-mix(in lab,red,red)){.compass-ocr-status-chip{border:1px solid color-mix(in srgb,var(--compass-success) 42%,var(--compass-line))}}.compass-ocr-status-chip{background:var(--compass-success);border-radius:4px}@supports (color:color-mix(in lab,red,red)){.compass-ocr-status-chip{background:color-mix(in srgb,var(--compass-success) 8%,transparent)}}.compass-ocr-status-chip{color:var(--compass-success)}.compass-ocr-status-chip[data-status=partial],.compass-ocr-status-chip[data-status=failed],.compass-ocr-status-chip[data-status=not_requested]{border-color:var(--compass-warning)}@supports (color:color-mix(in lab,red,red)){.compass-ocr-status-chip[data-status=partial],.compass-ocr-status-chip[data-status=failed],.compass-ocr-status-chip[data-status=not_requested]{border-color:color-mix(in srgb,var(--compass-warning) 48%,var(--compass-line))}}.compass-ocr-status-chip[data-status=partial],.compass-ocr-status-chip[data-status=failed],.compass-ocr-status-chip[data-status=not_requested]{background:var(--compass-warning)}@supports (color:color-mix(in lab,red,red)){.compass-ocr-status-chip[data-status=partial],.compass-ocr-status-chip[data-status=failed],.compass-ocr-status-chip[data-status=not_requested]{background:color-mix(in srgb,var(--compass-warning) 8%,transparent)}}.compass-ocr-status-chip[data-status=partial],.compass-ocr-status-chip[data-status=failed],.compass-ocr-status-chip[data-status=not_requested]{color:var(--compass-warning)}.compass-ocr-status-chip>svg{flex:none;width:13px;height:13px}.compass-ocr-status-chip>span{gap:1px;min-width:0;display:grid}.compass-ocr-status-chip strong,.compass-ocr-status-chip small,.compass-ocr-status-chip em{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.compass-ocr-status-chip strong{font-size:9px;font-weight:700}.compass-ocr-status-chip small{color:currentColor}@supports (color:color-mix(in lab,red,red)){.compass-ocr-status-chip small{color:color-mix(in srgb,currentColor 74%,var(--foreground))}}.compass-ocr-status-chip small{font-size:8px}.compass-ocr-status-chip em{border-left:1px solid;max-width:90px;padding-left:5px}@supports (color:color-mix(in lab,red,red)){.compass-ocr-status-chip em{border-left:1px solid color-mix(in srgb,currentColor 35%,transparent)}}.compass-ocr-status-chip em{font:8px/1.2 var(--compass-font-mono);font-style:normal}.compass-document-warning{border:1px solid var(--compass-warning);align-items:flex-start;gap:8px;padding:8px 9px;display:flex}@supports (color:color-mix(in lab,red,red)){.compass-document-warning{border:1px solid color-mix(in srgb,var(--compass-warning) 42%,var(--compass-line))}}.compass-document-warning{background:var(--compass-warning);border-radius:3px}@supports (color:color-mix(in lab,red,red)){.compass-document-warning{background:color-mix(in srgb,var(--compass-warning) 8%,transparent)}}.compass-document-warning{color:var(--compass-warning)}.compass-document-warning[data-status=failed]{border-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.compass-document-warning[data-status=failed]{border-color:color-mix(in srgb,var(--destructive) 46%,var(--compass-line))}}.compass-document-warning[data-status=failed]{background:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.compass-document-warning[data-status=failed]{background:color-mix(in srgb,var(--destructive) 8%,transparent)}}.compass-document-warning[data-status=failed]{color:var(--destructive)}.compass-document-warning>svg{flex:0 0 14px;width:14px;height:14px;margin-top:1px}.compass-document-warning span{gap:2px;display:grid}.compass-document-warning strong{color:var(--foreground);font-size:9px}.compass-document-warning small{color:var(--muted-foreground);font-size:9px;line-height:1.35}.compass-document-tabs{border:1px solid var(--compass-line);background:var(--background);border-radius:4px;grid-template-columns:repeat(3,minmax(0,1fr));gap:2px;padding:2px;display:grid}@supports (color:color-mix(in lab,red,red)){.compass-document-tabs{background:color-mix(in srgb,var(--background) 78%,var(--compass-panel))}}.compass-document-tab{min-width:0;min-height:27px;color:var(--muted-foreground);white-space:nowrap;background:0 0;border:0;border-radius:3px;justify-content:center;align-items:center;gap:5px;padding:0 5px;font-size:9px;font-weight:650;display:flex}.compass-document-tab:hover,.compass-document-tab[aria-selected=true]{background:var(--compass-focus-soft);color:var(--foreground)}.compass-document-tab[aria-selected=true]{box-shadow:inset 0 -2px var(--compass-focus)}.compass-document-tab:focus-visible,.compass-document-tab-panel:focus-visible,.compass-document-block:focus-visible{outline:2px solid var(--compass-focus);outline-offset:2px}.compass-document-tab>span{background:var(--foreground);border-radius:8px;place-items:center;min-width:16px;height:16px;display:inline-grid}@supports (color:color-mix(in lab,red,red)){.compass-document-tab>span{background:color-mix(in srgb,var(--foreground) 9%,transparent)}}.compass-document-tab>span{color:var(--compass-faint);font:8px/1 var(--compass-font-mono)}.compass-document-tab-panel{scrollbar-width:thin;min-height:0;max-height:250px;overflow-y:auto}.compass-document-block-list{gap:5px;display:grid}.compass-document-block{border:1px solid var(--compass-line);border-left:3px solid var(--compass-line-strong);background:var(--background);border-radius:3px;gap:5px;width:100%;padding:8px 9px;display:grid}@supports (color:color-mix(in lab,red,red)){.compass-document-block{background:color-mix(in srgb,var(--background) 74%,transparent)}}.compass-document-block{color:var(--foreground);text-align:left;transition:border-color .14s,background .14s}.compass-document-block[data-origin=ocr]{border-left-color:var(--compass-ocr-accent)}.compass-document-block:hover,.compass-document-block[data-active=true]{border-color:var(--compass-focus)}@supports (color:color-mix(in lab,red,red)){.compass-document-block:hover,.compass-document-block[data-active=true]{border-color:color-mix(in srgb,var(--compass-focus) 54%,var(--compass-line))}}.compass-document-block:hover,.compass-document-block[data-active=true]{background:var(--compass-focus-soft)}.compass-document-block[data-active=true]{box-shadow:inset 0 0 0 1px var(--compass-focus)}@supports (color:color-mix(in lab,red,red)){.compass-document-block[data-active=true]{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--compass-focus) 24%,transparent)}}.compass-document-block-topline,.compass-document-block-locator{justify-content:space-between;align-items:center;gap:7px;min-width:0;display:flex}.compass-document-block-kind{min-width:0;color:var(--compass-faint);font:600 8px/1.2 var(--compass-font-mono);letter-spacing:.05em;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap;align-items:center;gap:5px;display:inline-flex;overflow:hidden}.compass-document-block-kind svg{width:12px;height:12px;color:var(--compass-focus)}.compass-document-block[data-origin=ocr] .compass-document-block-kind svg{color:var(--compass-ocr-accent)}.compass-document-block-text{color:var(--foreground);-webkit-line-clamp:3;-webkit-box-orient:vertical;font-size:10px;line-height:1.45;display:-webkit-box;overflow:hidden}.compass-document-block-locator{color:var(--muted-foreground);font:9px/1.3 var(--compass-font-mono);justify-content:flex-start}.compass-document-block-locator svg{width:11px;height:11px;color:var(--compass-faint);flex:0 0 11px}.compass-document-block-locator svg:last-child{color:var(--compass-ocr-accent);margin-left:auto}.compass-ocr-confidence{color:var(--compass-success);font:700 8px/1 var(--compass-font-mono);letter-spacing:.02em;border:1px solid;border-radius:999px;align-items:center;padding:3px 6px;display:inline-flex}.compass-ocr-confidence[data-confidence=medium]{color:var(--compass-warning)}.compass-ocr-confidence[data-confidence=low]{color:var(--destructive)}.compass-document-empty{color:var(--muted-foreground);text-align:center;justify-items:center;gap:5px;padding:18px 10px;display:grid}.compass-document-empty svg{width:19px;height:19px;color:var(--compass-faint)}.compass-document-empty strong{color:var(--foreground);font-size:10px}.compass-document-empty span{max-width:240px;font-size:9px;line-height:1.4}.compass-ocr-preview{border-top:1px solid var(--compass-line);gap:7px;padding-top:10px;display:grid}.compass-ocr-preview>header{justify-content:space-between;align-items:center;gap:8px;display:flex}.compass-ocr-preview>header>span:first-child{gap:2px;min-width:0;display:grid}.compass-ocr-preview strong{font-size:9px}.compass-ocr-preview small,.compass-ocr-preview-key{color:var(--compass-faint);font:8px/1.3 var(--compass-font-mono)}.compass-ocr-preview small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.compass-ocr-preview-key{white-space:nowrap;align-items:center;gap:4px;display:inline-flex}.compass-ocr-preview-key i{border:1px solid var(--compass-ocr-accent);background:var(--compass-ocr-accent);width:7px;height:7px}@supports (color:color-mix(in lab,red,red)){.compass-ocr-preview-key i{background:color-mix(in srgb,var(--compass-ocr-accent) 20%,transparent)}}.compass-ocr-preview-canvas{border:1px solid var(--compass-line-strong);background:var(--compass-ocr-preview-surface);width:100%;max-height:190px;color:var(--compass-focus);border-radius:3px;display:block}.compass-ocr-preview-box{fill:var(--compass-ocr-accent)}@supports (color:color-mix(in lab,red,red)){.compass-ocr-preview-box{fill:color-mix(in srgb,var(--compass-ocr-accent) 18%,transparent)}}.compass-ocr-preview-box{stroke:var(--compass-ocr-accent);stroke-width:3px;cursor:pointer;vector-effect:non-scaling-stroke}.compass-ocr-preview-box:hover,.compass-ocr-preview-box:focus,.compass-ocr-preview-box[data-active=true]{fill:var(--compass-focus)}@supports (color:color-mix(in lab,red,red)){.compass-ocr-preview-box:hover,.compass-ocr-preview-box:focus,.compass-ocr-preview-box[data-active=true]{fill:color-mix(in srgb,var(--compass-focus) 22%,transparent)}}.compass-ocr-preview-box:hover,.compass-ocr-preview-box:focus,.compass-ocr-preview-box[data-active=true]{stroke:var(--compass-focus);stroke-width:4px}.compass-ocr-preview>p{color:var(--compass-faint);margin:0;font-size:8px;line-height:1.35}.compass-changed-symbols{border-bottom:1px solid var(--compass-line);max-height:30%;padding:14px 16px;overflow-y:auto}.compass-changed-symbol-list{gap:4px;display:grid}.compass-changed-symbol-list>button{width:100%;color:var(--foreground);text-align:left;background:0 0;border:1px solid #0000;border-radius:3px;grid-template-columns:auto minmax(0,1fr);gap:2px 8px;padding:7px 8px;display:grid}.compass-changed-symbol-list>button:hover,.compass-changed-symbol-list>button[aria-pressed=true]{border-color:var(--compass-line);background:var(--vscode-list-activeSelectionBackground,var(--compass-focus-soft))}.compass-changed-symbol-list strong,.compass-changed-symbol-list small{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.compass-changed-symbol-list small{color:var(--compass-faint);font:9px/1.35 var(--compass-font-mono);grid-column:2}.compass-changed-symbol-status{color:var(--vscode-descriptionForeground);letter-spacing:.06em;text-transform:uppercase;grid-row:1/span 2;align-self:center;font-size:8px;font-weight:700}.compass-changed-symbol-list>button[data-change=added] .compass-changed-symbol-status{color:var(--vscode-gitDecoration-addedResourceForeground,#2ea043)}.compass-changed-symbol-list>button[data-change=removed] .compass-changed-symbol-status{color:var(--vscode-gitDecoration-deletedResourceForeground,#f85149)}.compass-changed-symbol-list>button[data-change=changed] .compass-changed-symbol-status{color:var(--vscode-gitDecoration-modifiedResourceForeground,#d29922)}.compass-changed-symbol-expand{border:1px solid var(--compass-line);width:100%;color:var(--vscode-textLink-foreground,var(--compass-focus));background:0 0;border-radius:3px;margin-top:8px;padding:6px 8px}.compass-record-evidence,.compass-relationship-evidence,.compass-code-evidence{margin-top:16px}.compass-code-query-actions{grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;margin-top:10px;display:grid}.compass-code-query-actions button{border:1px solid var(--compass-line);color:var(--vscode-textLink-foreground,var(--compass-focus));background:0 0;border-radius:3px;padding:5px 4px;font-size:9px}.compass-code-query-actions button:focus-visible{outline:2px solid var(--vscode-focusBorder,var(--compass-focus));outline-offset:1px}.compass-code-evidence-ledger{gap:6px;display:grid}.compass-code-evidence-entry{border:1px solid var(--compass-line);background:var(--vscode-editorWidget-background,var(--background));border-left-width:3px;border-radius:3px;grid-template-columns:24px minmax(0,1fr);gap:8px;padding:8px;display:grid}.compass-code-evidence-entry[data-status=exact],.compass-code-evidence-entry[data-status=config],.compass-code-evidence-entry[data-status=convention]{border-left-color:var(--vscode-testing-iconPassed,#2ea043)}.compass-code-evidence-entry[data-status=heuristic]{border-left-color:var(--vscode-charts-blue,#58a6ff)}.compass-code-evidence-entry[data-status=ambiguous],.compass-code-evidence-entry[data-status=unresolved]{border-left-color:var(--vscode-editorWarning-foreground,#d29922)}.compass-code-evidence-icon{background:var(--vscode-badge-background,var(--muted));width:24px;height:24px;color:var(--vscode-badge-foreground,var(--foreground));border-radius:50%;place-items:center;display:grid}.compass-code-evidence-icon svg{width:13px;height:13px}.compass-code-evidence-copy{min-width:0}.compass-code-evidence-status{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.compass-code-evidence-status strong{color:var(--foreground);font-size:10px}.compass-code-evidence-status span{color:var(--compass-faint);text-transform:uppercase;font-size:8px}.compass-code-evidence-copy dl{gap:3px;margin:7px 0 0;display:grid}.compass-code-evidence-copy dl>div{grid-template-columns:62px minmax(0,1fr);gap:6px;display:grid}.compass-code-evidence-copy dt{color:var(--compass-faint);text-transform:uppercase;font-size:8px}.compass-code-evidence-copy dd{overflow-wrap:anywhere;min-width:0;color:var(--foreground);font:9px/1.35 var(--compass-font-mono);margin:0}.compass-code-evidence-source{max-width:100%;color:var(--vscode-textLink-foreground,var(--compass-focus));font:9px/1.35 var(--compass-font-mono);overflow-wrap:anywhere;text-align:left;background:0 0;border:0;align-items:center;gap:5px;margin-top:7px;padding:0;display:inline-flex}button.compass-code-evidence-source{cursor:pointer}button.compass-code-evidence-source:focus-visible{outline:2px solid var(--vscode-focusBorder,var(--compass-focus));outline-offset:2px;border-radius:2px}.compass-code-evidence-source svg{width:11px;min-width:11px;height:11px}.compass-code-candidates{border-top:1px solid var(--compass-line);margin-top:8px;padding-top:7px}.compass-code-candidates>span{color:var(--compass-faint);text-transform:uppercase;font-size:8px}.compass-code-candidates ul{gap:5px;margin:6px 0 0;padding:0;list-style:none;display:grid}.compass-code-candidates li{grid-template-columns:minmax(0,1fr) auto;gap:1px 6px;display:grid}.compass-code-candidates code{overflow-wrap:anywhere;color:var(--foreground);font:9px/1.35 var(--compass-font-mono)}.compass-code-candidates li>span{color:var(--muted-foreground);grid-column:1/-1;font-size:9px}.compass-code-candidates small{color:var(--compass-faint);text-transform:uppercase;grid-area:1/2;font-size:8px}.compass-code-diagnostic{border:1px solid var(--vscode-editorWarning-foreground,#d29922);color:var(--muted-foreground);border-radius:3px;gap:7px;margin:0 0 6px;padding:7px 8px;font-size:9px;display:flex}.compass-code-diagnostic[data-severity=info]{border-color:var(--vscode-charts-blue,#58a6ff)}.compass-code-diagnostic svg{width:12px;min-width:12px;height:12px}.compass-code-diagnostic strong{color:var(--foreground);text-transform:capitalize}.compass-evidence-heading{justify-content:space-between;align-items:baseline;margin-bottom:7px;display:flex}.compass-evidence-heading h3{color:var(--foreground);font-size:11px}.compass-evidence-heading span{color:var(--compass-faint);font-size:9px}.compass-field-table-wrap{border:1px solid var(--compass-line);border-radius:3px;overflow-x:auto}.compass-field-table{border-collapse:collapse;table-layout:fixed;width:100%;min-width:360px}.compass-field-table th,.compass-field-table td{border-right:1px solid var(--compass-line);border-bottom:1px solid var(--compass-line);vertical-align:top;text-align:left;padding:6px 7px}.compass-field-table tr:last-child>*{border-bottom:0}.compass-field-table tr>:last-child{border-right:0}.compass-field-table thead th{background:var(--vscode-editorWidget-background,var(--background));color:var(--compass-faint);text-transform:uppercase;font-size:9px}.compass-field-table tbody th{width:27%;color:var(--foreground);font:9px/1.4 var(--compass-font-mono);overflow-wrap:anywhere}.compass-field-table code{color:var(--foreground);font:9px/1.4 var(--compass-font-mono);white-space:pre-wrap;overflow-wrap:anywhere}.compass-value-truncated{color:var(--vscode-editorWarning-foreground,#d29922);margin-top:4px;font-size:8px;display:block}.compass-evidence-source-actions{gap:6px;margin-top:8px;display:flex}.compass-evidence-source-actions button{border:1px solid var(--compass-line);color:var(--vscode-textLink-foreground,var(--compass-focus));background:0 0;border-radius:3px;align-items:center;gap:5px;padding:5px 7px;display:inline-flex}.compass-evidence-source-actions svg{width:12px;height:12px}.compass-relationship-list{gap:5px;margin-top:7px;display:grid}.compass-relationship-list details{border:1px solid var(--compass-line);background:var(--vscode-editorWidget-background,var(--background));border-radius:3px;padding:6px 7px}.compass-relationship-list summary{cursor:pointer;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:4px 7px;display:grid}.compass-relationship-target{color:var(--vscode-textLink-foreground,var(--compass-focus));text-align:left;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.compass-relationship-list summary small{color:var(--foreground);font:9px/1.3 var(--compass-font-mono);grid-column:2}.compass-relationship-list summary i{color:var(--compass-faint);text-transform:uppercase;grid-area:2/3;font-size:8px;font-style:normal}.compass-relationship-detail{margin-top:7px}.compass-relationship-detail>p{color:var(--compass-faint);font:9px/1.4 var(--compass-font-mono);margin:7px 0 0}.compass-relationship-detail>button{border:1px solid var(--compass-line);color:var(--vscode-textLink-foreground,var(--compass-focus));background:0 0;border-radius:3px;margin-top:7px;padding:4px 7px}.compass-bounded-notice{z-index:4;border:1px solid var(--vscode-editorWarning-foreground,#d29922);background:var(--vscode-editorWidget-background,var(--compass-panel));max-width:min(420px,100% - 24px);color:var(--foreground);border-radius:3px;gap:2px;padding:8px 10px;font-size:10px;display:grid;position:absolute;bottom:12px;right:12px}.compass-bounded-notice span{color:var(--muted-foreground)}.compass-hover-hint{border-top:1px solid var(--compass-line);color:var(--vscode-textLink-foreground,var(--compass-focus));align-items:center;gap:7px;margin-top:2px;padding-top:9px;font-size:11px;display:flex!important}.compass-hover-hint svg{flex:none;width:14px;height:14px}.compass-hover-hint strong{color:var(--vscode-editorHoverWidget-foreground,var(--foreground));font-weight:650}.compass-section-heading,.compass-neighbors-heading{justify-content:space-between;align-items:baseline;display:flex}.compass-section-heading{margin-bottom:15px}.compass-section-heading h2,.compass-community-panel h2{letter-spacing:.1em;text-transform:uppercase;font-size:11px;font-weight:700}.compass-section-heading span{color:var(--compass-faint);letter-spacing:.1em;text-transform:uppercase;font-size:9px}.compass-info-content{color:var(--muted-foreground);font-size:12px;line-height:1.45}.compass-node-identity{align-items:center;gap:11px;margin-bottom:15px;display:flex}.compass-node-identity>span:nth-child(2){flex:1;min-width:0}.compass-node-identity strong,.compass-node-identity small{display:block}.compass-node-identity strong{color:var(--foreground);text-overflow:ellipsis;white-space:nowrap;font-size:14px;overflow:hidden}.compass-node-identity small{background:var(--compass-success);border-radius:999px;width:max-content;margin-top:3px;padding:3px 7px}@supports (color:color-mix(in lab,red,red)){.compass-node-identity small{background:color-mix(in srgb,var(--compass-success) 20%,transparent)}}.compass-node-identity small{color:var(--compass-success);letter-spacing:.07em;text-transform:uppercase;font-size:9px;font-weight:800}.compass-node-swatch{border-radius:5px;flex:none;width:10px;height:36px}.compass-change-badge{width:max-content;color:var(--vscode-descriptionForeground,#6e7781);letter-spacing:.05em;text-transform:uppercase;border:1px solid;border-radius:999px;align-items:center;gap:5px;padding:3px 7px;font-size:9px;font-weight:700;display:inline-flex}.compass-node-identity .compass-change-badge{flex:none;margin-left:auto}.compass-change-badge[data-change=added]{color:var(--vscode-gitDecoration-addedResourceForeground,#2ea043)}.compass-change-badge[data-change=removed]{color:var(--vscode-gitDecoration-deletedResourceForeground,#f85149)}.compass-change-badge[data-change=changed]{color:var(--vscode-gitDecoration-modifiedResourceForeground,#d29922)}.compass-metadata-grid{grid-template-columns:1fr 1fr;gap:8px;margin-bottom:15px;display:grid}.compass-metadata-grid>div{border:1px solid var(--compass-line);background:var(--vscode-editorWidget-background,var(--background));border-radius:3px;min-width:0;padding:9px 10px}.compass-metadata-grid .compass-metadata-wide{grid-column:1/-1}.compass-metadata-grid dt{color:var(--compass-faint);letter-spacing:.08em;text-transform:uppercase;font-size:9px}.compass-metadata-grid dd{color:var(--foreground);text-overflow:ellipsis;white-space:nowrap;margin-top:4px;overflow:hidden}.compass-source-metadata[data-interactive=true]{padding:0;transition:border-color .16s,background .16s}.compass-source-metadata[data-interactive=true]:hover,.compass-source-metadata[data-interactive=true]:focus-within{border-color:var(--compass-focus);background:var(--compass-focus-soft)}.compass-source-metadata[data-interactive=true] dd{white-space:normal;margin:0;overflow:visible}.compass-source-card{width:100%;min-height:58px;color:var(--foreground);text-align:left;background:0 0;border:0;border-radius:2px;outline:none;justify-content:space-between;align-items:center;gap:10px;padding:9px 10px;display:flex}.compass-source-copy{min-width:0;display:block}.compass-source-eyebrow,.compass-source-path,.compass-source-range{display:block}.compass-source-eyebrow{color:var(--compass-faint);font-family:var(--compass-font-sans);letter-spacing:.08em;text-transform:uppercase;font-size:9px}.compass-source-path{font:11px/1.35 var(--compass-font-mono);text-overflow:ellipsis;white-space:nowrap;margin-top:4px;overflow:hidden}.compass-source-range{color:var(--muted-foreground);font:10px/1.25 var(--compass-font-sans);margin-top:3px}.compass-source-card>svg{width:15px;height:15px;color:var(--compass-focus);flex:none}.compass-source-card:hover>svg{color:var(--foreground)}.compass-signature-block{overflow-wrap:anywhere;border:1px solid var(--compass-line);background:var(--vscode-input-background,var(--background));color:var(--foreground);font:11px/1.45 var(--compass-font-mono);border-radius:3px;margin-bottom:15px;padding:10px;display:block}.compass-inspector-action{border:1px solid var(--compass-line);background:var(--workbench-hover);width:100%;min-height:36px;color:var(--foreground);border-radius:3px;justify-content:space-between;align-items:center;gap:8px;margin-bottom:14px;padding:0 10px;display:flex}.compass-inspector-action span{min-width:0;color:var(--muted-foreground);font:10px/1.2 var(--compass-font-mono);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.compass-neighbors-heading{margin:3px 0 7px}.compass-neighbors-heading strong{color:var(--compass-faint);font-size:10px}.compass-neighbors-list{max-height:154px;overflow-y:auto}.compass-neighbor-link{width:100%;min-height:36px;color:var(--muted-foreground);text-align:left;background:0 0;border:0;border-radius:3px;align-items:center;gap:9px;margin:3px 0;padding:8px 9px;display:flex;overflow:hidden}.compass-neighbor-link:hover{background:var(--workbench-hover);color:var(--foreground)}.compass-neighbor-dot{width:8px;height:8px;box-shadow:0 0 0 1px var(--foreground);border-radius:50%;flex:none}@supports (color:color-mix(in lab,red,red)){.compass-neighbor-dot{box-shadow:0 0 0 1px color-mix(in srgb,var(--foreground) 10%,transparent)}}.compass-neighbor-label{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.compass-empty{color:var(--compass-faint);padding:8px 0;font-size:12px;display:block}.compass-community-panel{flex:1;min-height:0;padding:16px;overflow-y:auto}.compass-community-panel h2{margin-bottom:10px}.compass-community-panel[data-secondary=true]{flex:0 auto;padding-top:12px}.compass-community-panel details>summary{cursor:pointer;min-height:30px;color:var(--muted-foreground);letter-spacing:.1em;text-transform:uppercase;justify-content:space-between;align-items:center;font-size:11px;font-weight:700;display:flex}.compass-community-panel details>summary span{color:var(--compass-faint);font:9px/1 var(--compass-font-mono)}.compass-community-controls{min-height:0}.compass-community-search{align-items:center;margin:2px 0 8px;display:flex;position:relative}.compass-community-search>svg{width:13px;height:13px;color:var(--compass-faint);pointer-events:none;position:absolute;left:8px}.compass-community-search input{border:1px solid var(--compass-line);background:var(--vscode-input-background,var(--background));width:100%;height:30px;color:var(--foreground);font:11px/1.3 var(--compass-font-sans);border-radius:3px;padding:0 8px 0 28px}.compass-community-limit{color:var(--compass-faint);margin:8px 0 0;font-size:10px;line-height:1.45}.compass-community-control,.compass-community-item{min-height:34px;color:var(--muted-foreground);align-items:center;gap:8px;font-size:12px;display:flex}.compass-community-item{border-radius:3px}.compass-community-item:hover{background:var(--workbench-hover);color:var(--foreground)}.compass-community-item[data-hidden=true]{opacity:.36}.compass-community-item input,.compass-community-control input{width:15px;height:15px;accent-color:var(--compass-focus)}.compass-community-dot{border-radius:50%;flex:none;width:9px;height:9px}.compass-community-label{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.compass-community-item small{color:var(--compass-faint);font-size:10px}.compass-graph-stats{border-top:1px solid var(--compass-line);color:var(--compass-faint);letter-spacing:.025em;padding:11px 16px;font-size:10px}.compass-node-hover-card{z-index:7;top:clamp(86px,var(--compass-hover-y),calc(100% - 10rem));left:clamp(12px,var(--compass-hover-x),calc(100% - min(27rem,90%) - 12px));border:1px solid var(--compass-line-strong);background:var(--vscode-editorHoverWidget-background,var(--compass-panel));width:max-content;max-width:min(26rem,100% - 24px);color:var(--vscode-editorHoverWidget-foreground,var(--muted-foreground));box-shadow:0 4px 12px var(--vscode-widget-shadow,#00000047);pointer-events:none;border-radius:3px;gap:7px;padding:13px 15px;font-size:12px;line-height:1.35;display:grid;position:absolute;overflow:hidden}.compass-node-hover-card>.compass-change-badge{margin:0}.compass-hover-heading{align-items:center;gap:8px;display:flex}.compass-hover-heading strong{min-width:0;color:var(--foreground);text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.compass-hover-heading span{background:var(--compass-success);border-radius:999px;width:max-content;padding:3px 7px}@supports (color:color-mix(in lab,red,red)){.compass-hover-heading span{background:color-mix(in srgb,var(--compass-success) 20%,transparent)}}.compass-hover-heading span{color:var(--compass-success);letter-spacing:.07em;font-size:9px;font-weight:800}.compass-node-hover-card p,.compass-node-hover-card code{display:block}.compass-hover-source{color:var(--compass-focus)}.compass-node-hover-card code{max-width:395px;color:var(--foreground);font-family:var(--compass-font-mono);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.compass-edge-hover-card{z-index:8;top:clamp(86px,var(--compass-hover-y),calc(100% - 15rem));left:clamp(12px,var(--compass-hover-x),calc(100% - min(31rem,92%) - 12px));border:1px solid var(--compass-line-strong);background:var(--vscode-editorHoverWidget-background,var(--compass-panel));width:min(31rem,100% - 24px);color:var(--vscode-editorHoverWidget-foreground,var(--muted-foreground));box-shadow:0 8px 24px var(--vscode-widget-shadow,#00000057);pointer-events:none;border-radius:4px;gap:10px;padding:13px 15px;font-size:11px;line-height:1.35;animation:90ms ease-out both compass-edge-card-enter;display:grid;position:absolute;overflow:hidden}@keyframes compass-edge-card-enter{0%{opacity:0;transform:translateY(3px)}}.compass-edge-hover-heading,.compass-edge-relation-row{justify-content:space-between;align-items:center;gap:10px;display:flex}.compass-edge-hover-eyebrow{color:var(--compass-faint);letter-spacing:.09em;text-transform:uppercase;align-items:center;gap:6px;font-size:9px;font-weight:750;display:inline-flex}.compass-edge-hover-eyebrow svg{width:12px;height:12px;color:var(--compass-focus)}.compass-edge-confidence{border:1px solid;padding:3px 7px}@supports (color:color-mix(in lab,red,red)){.compass-edge-confidence{border:1px solid color-mix(in srgb,currentColor 28%,transparent)}}.compass-edge-confidence{background:currentColor;border-radius:999px}@supports (color:color-mix(in lab,red,red)){.compass-edge-confidence{background:color-mix(in srgb,currentColor 11%,transparent)}}.compass-edge-confidence{color:var(--compass-faint);letter-spacing:.055em;text-transform:uppercase;font-size:9px;font-weight:800}.compass-edge-confidence[data-confidence=extracted]{color:var(--compass-success)}.compass-edge-confidence[data-confidence=inferred]{color:var(--compass-focus)}.compass-edge-confidence[data-confidence=ambiguous]{color:var(--compass-warning)}.compass-edge-confidence[data-confidence=aggregated]{color:var(--compass-faint)}.compass-edge-trace{border:1px solid var(--compass-line);background:var(--compass-focus);border-radius:3px;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:9px;min-width:0;padding:9px 10px;display:grid}@supports (color:color-mix(in lab,red,red)){.compass-edge-trace{background:color-mix(in srgb,var(--compass-focus) 7%,transparent)}}.compass-edge-trace strong{min-width:0;color:var(--foreground);font:600 11px/1.35 var(--compass-font-mono);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.compass-edge-trace strong:last-child{text-align:right}.compass-edge-trace>span{border:1px solid var(--compass-focus);place-items:center;width:22px;height:22px;display:grid}@supports (color:color-mix(in lab,red,red)){.compass-edge-trace>span{border:1px solid color-mix(in srgb,var(--compass-focus) 38%,transparent)}}.compass-edge-trace>span{background:var(--vscode-editorHoverWidget-background,var(--compass-panel));color:var(--compass-focus);border-radius:50%}.compass-edge-trace svg{width:12px;height:12px}.compass-edge-relation-row>strong{color:var(--foreground);font-size:12px;font-weight:700}.compass-edge-relation-row>.compass-change-badge{margin:0}.compass-edge-metadata{gap:5px;padding-top:1px;display:grid}.compass-edge-metadata p{grid-template-columns:54px minmax(0,1fr);align-items:baseline;gap:8px;display:grid}.compass-edge-metadata span{color:var(--compass-faint);letter-spacing:.06em;text-transform:uppercase;font-size:9px;font-weight:700}.compass-edge-metadata code{min-width:0;color:var(--vscode-textLink-foreground,var(--compass-focus));font:10px/1.4 var(--compass-font-mono);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}body.vscode-high-contrast .compass-glass-panel,body.vscode-high-contrast .compass-graph-inspector,body.vscode-high-contrast .compass-inspector-resizer,body.vscode-high-contrast .compass-load-action,body.vscode-high-contrast .compass-load-step>i,body.vscode-high-contrast .compass-source-metadata,body.vscode-high-contrast .compass-node-hover-card,body.vscode-high-contrast .compass-edge-hover-card,body.vscode-high-contrast-light .compass-glass-panel,body.vscode-high-contrast-light .compass-graph-inspector,body.vscode-high-contrast-light .compass-inspector-resizer,body.vscode-high-contrast-light .compass-load-action,body.vscode-high-contrast-light .compass-load-step>i,body.vscode-high-contrast-light .compass-source-metadata,body.vscode-high-contrast-light .compass-node-hover-card,body.vscode-high-contrast-light .compass-edge-hover-card{border-width:2px;border-color:var(--vscode-contrastBorder,var(--compass-focus))}body.vscode-high-contrast .compass-load-logo,body.vscode-high-contrast-light .compass-load-logo{color:var(--vscode-contrastBorder,currentColor)}@media(max-width:980px){.compass-tool-button span{display:none}.compass-tool-button{padding:0 11px}}@media(max-width:760px){.compass-workspace{height:auto;min-height:100vh;overflow:auto}.compass-workspace-content,.compass-workspace-content[data-inspector-collapsed=true]{height:auto;min-height:inherit;grid-template-rows:minmax(360px,62vh) minmax(280px,40vh);grid-template-columns:1fr;overflow:visible}.compass-workspace-content[data-inspector-collapsed=true]{grid-template-rows:minmax(360px,calc(100vh - 48px)) 48px}.compass-inspector-resizer{display:none}.compass-graph-inspector{border-top:1px solid var(--compass-line);min-height:280px;box-shadow:none;border-left:0;border-radius:0}.compass-graph-inspector-collapsed{border-radius:0;flex-direction:row;justify-content:center;min-height:48px}.compass-inspector-expand{margin-top:0}.compass-inspector-rail-label{writing-mode:horizontal-tb;margin-top:0;margin-left:10px}.compass-graph-toolbar{top:12px;left:12px;right:12px}.compass-toolbar-actions{max-width:62%;overflow-x:auto}.compass-explore-panel{max-height:calc(62vh - 82px)}.compass-info-panel{max-height:none}}@media(prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.compass-load-logo,.compass-load-progress i,.architecture-load-skeleton span,.workbench-state-spinner{animation:none!important}}.architecture-shell{background:var(--background);height:100vh;color:var(--foreground);grid-template-columns:minmax(220px,280px) minmax(0,1fr);display:grid}.query-shell{--query-surface:var(--vscode-editor-background,var(--background));--query-surface-raised:var(--vscode-editorWidget-background,var(--vscode-sideBar-background,var(--card)));--query-border:var(--vscode-panel-border,var(--border));--query-input:var(--vscode-input-background,var(--background));--query-input-foreground:var(--vscode-input-foreground,var(--foreground));--query-accent:var(--vscode-focusBorder,var(--ring));background:var(--background);height:100vh;min-height:420px;color:var(--foreground);grid-template-rows:auto 1fr;display:grid;overflow:hidden}.query-header{border-bottom:1px solid var(--query-border);background:var(--query-surface);padding:14px 18px 16px}.query-heading-row{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.query-context{color:var(--muted-foreground);font:10px/1.35 var(--compass-font-mono);letter-spacing:.04em;text-transform:uppercase}.query-heading-row h1{margin:3px 0 0;font-size:16px;font-weight:600;line-height:1.3}.query-mode{border-bottom:1px solid var(--query-border);background:0 0;gap:0;width:100%;margin-top:14px;display:flex;overflow-x:auto}.query-mode button{min-width:min(250px,42vw);min-height:48px;color:var(--muted-foreground);font:inherit;text-align:left;background:0 0;border:0;border-radius:0;flex:1 0 220px;grid-template-columns:18px minmax(0,1fr);align-items:center;gap:8px;padding:7px 12px 8px;display:grid;position:relative}.query-mode-indicator{background:var(--query-accent);height:3px;box-shadow:0 1px 5px var(--query-accent);position:absolute;top:0;left:0;right:0}@supports (color:color-mix(in lab,red,red)){.query-mode-indicator{box-shadow:0 1px 5px color-mix(in srgb,var(--query-accent) 35%,transparent)}}.query-mode-indicator{opacity:0;pointer-events:none}.query-mode button:hover{background:var(--workbench-hover);color:var(--foreground)}.query-mode button[aria-selected=true]{background:var(--vscode-tab-activeBackground,var(--query-surface-raised));box-shadow:inset 1px 0 var(--query-border),inset -1px 0 var(--query-border);color:var(--vscode-tab-activeForeground,var(--foreground))}.query-mode button[aria-selected=true] .query-mode-indicator,.query-mode button[aria-selected=true] svg,.query-mode button[aria-selected=true] strong{opacity:1}.query-mode svg{width:15px;height:15px}.query-mode button>span,.query-mode strong,.query-mode small{min-width:0;display:block}.query-mode strong{font-size:12px;font-weight:600;line-height:1.3}.query-mode small{color:inherit;opacity:.78;text-overflow:ellipsis;white-space:nowrap;margin-top:2px;font-size:10px;font-weight:400;line-height:1.3;overflow:hidden}.query-composer-panel{border:1px solid var(--query-border);background:var(--query-surface-raised);border-top:0;padding:12px}.query-composer{display:block}.query-editor-shell{border:1px solid var(--vscode-input-border,var(--border));background:var(--query-input);color:var(--query-input-foreground);border-radius:3px;overflow:hidden}.query-editor-shell:focus-within{border-color:var(--ring);outline:1px solid var(--ring);outline-offset:-1px}.query-editor{min-width:0;position:relative}.query-editor textarea{resize:vertical;background:var(--query-input);width:100%;min-height:96px;max-height:260px;color:inherit;font:13px/1.55 var(--compass-font-sans);box-sizing:border-box;border:0;border-radius:0;outline:none;padding:11px 12px;display:block}.query-composer-panel[data-mode=cql] .query-editor textarea,.query-composer-panel[data-mode=explain] .query-editor textarea{font-family:var(--compass-font-mono);font-size:12px}.query-editor textarea::placeholder,.query-params input::placeholder{color:var(--vscode-input-placeholderForeground,var(--muted-foreground))}.query-suggestions{border-top:1px solid var(--query-border);background:var(--vscode-editorSuggestWidget-background,var(--query-surface-raised));max-height:210px;color:var(--vscode-editorSuggestWidget-foreground,var(--foreground));display:grid;overflow-y:auto}.query-suggestions-label,.query-suggestions-hint{color:var(--vscode-descriptionForeground,var(--muted-foreground));font:9px/1.2 var(--compass-font-sans);padding:6px 10px}.query-suggestions-label{letter-spacing:.06em;text-transform:uppercase}.query-suggestions-hint{border-top:1px solid var(--query-border);text-align:right}.query-suggestions button{min-width:0;color:inherit;font:inherit;text-align:left;background:0 0;border:0;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:16px;padding:7px 10px;display:grid}.query-suggestions button[aria-selected=true],.query-suggestions button:hover{background:var(--vscode-editorSuggestWidget-selectedBackground,var(--accent));color:var(--vscode-editorSuggestWidget-selectedForeground,var(--foreground))}.query-suggestions button>span{font:11px/1.35 var(--compass-font-mono);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.query-suggestions button>small{color:var(--vscode-descriptionForeground,var(--muted-foreground));white-space:nowrap;font-size:10px}.query-completion-status{border-top:1px solid var(--query-border);background:var(--vscode-editorSuggestWidget-background,var(--query-surface-raised));min-width:0;min-height:34px;color:var(--vscode-descriptionForeground,var(--muted-foreground));justify-content:space-between;align-items:center;gap:12px;padding-block:7px;padding-inline:10px;font-size:10px;display:flex}.query-completion-status>span{overflow-wrap:anywhere;min-width:0}.query-completion-status button{border:1px solid var(--vscode-button-border,var(--query-border));background:var(--vscode-button-secondaryBackground,var(--secondary));color:var(--vscode-button-secondaryForeground,var(--secondary-foreground));font:inherit;border-radius:3px;flex:none;padding:3px 7px}.query-completion-status button:hover{background:var(--vscode-button-secondaryHoverBackground,var(--workbench-hover))}.query-params input:focus-visible{border-color:var(--ring);outline:1px solid var(--ring);outline-offset:-1px}.query-composer-footer{border-top:1px solid var(--query-border);background:var(--query-surface);align-items:center;gap:12px;min-height:40px;padding:5px 6px 5px 10px;display:flex}.query-footer-actions{flex:none;justify-content:flex-end;align-items:center;gap:8px;margin-left:auto;display:flex}.query-shortcut{color:var(--vscode-disabledForeground,var(--compass-faint));font:10px/1 var(--compass-font-sans);white-space:nowrap}.query-run{border:1px solid var(--vscode-button-border,transparent);background:var(--vscode-button-background,var(--primary));min-width:76px;min-height:30px;color:var(--vscode-button-foreground,var(--primary-foreground));font:inherit;border-radius:3px;justify-content:center;align-items:center;gap:6px;padding:5px 11px;font-size:12px;display:flex}.query-run:hover:not(:disabled){background:var(--vscode-button-hoverBackground,var(--primary))}.query-run:disabled{background:var(--vscode-button-secondaryBackground,var(--secondary));color:var(--vscode-disabledForeground,var(--compass-faint))}.query-run svg{width:13px;height:13px}.query-params{min-width:0;max-width:620px;color:var(--muted-foreground);flex:520px;align-items:center;gap:8px;font-size:10px;display:flex}.query-params>span{flex:none}.query-params input{border:1px solid var(--vscode-input-border,var(--border));background:var(--vscode-input-background,var(--input));min-width:0;max-width:520px;height:28px;color:var(--vscode-input-foreground,var(--foreground));font:11px var(--compass-font-mono);border-radius:3px;outline:none;flex:260px;padding:3px 8px}.query-examples{align-items:center;gap:5px;margin-top:9px;display:flex;overflow-x:auto}.query-examples>span{color:var(--muted-foreground);text-transform:uppercase;flex:none;font-size:10px;font-weight:600}.query-examples button,.query-history button{border:1px solid var(--border);color:var(--muted-foreground);font:inherit;white-space:nowrap;background:0 0;border-radius:3px;padding:4px 7px;font-size:10px}.query-examples button:hover,.query-history button:hover{background:var(--workbench-hover);color:var(--foreground)}.query-results{grid-template-rows:auto minmax(0,1fr);min-height:0;padding:0;display:grid;overflow:hidden}.query-result-stage{min-height:0;padding:clamp(12px,2vw,22px);overflow:auto}.query-result-stage>.workbench-state{min-height:100%}.query-result-tabs{border-bottom:1px solid var(--query-border);background:var(--vscode-editorGroupHeader-tabsBackground,var(--query-surface-raised));min-width:0;display:flex;overflow-x:auto}.query-result-tab{border-right:1px solid var(--query-border);background:var(--vscode-tab-inactiveBackground,transparent);grid-template-columns:minmax(0,1fr) 26px;min-width:150px;max-width:300px;display:grid}.query-result-tab:has([aria-selected=true]){background:var(--vscode-tab-activeBackground,var(--query-surface));box-shadow:inset 0 2px var(--vscode-tab-activeBorderTop,var(--query-accent))}.query-result-tab[data-status=error]{box-shadow:inset 0 2px var(--vscode-testing-iconFailed,var(--destructive))}.query-result-tab>[role=tab]{min-width:0;color:var(--vscode-tab-inactiveForeground,var(--muted-foreground));font:inherit;text-align:left;background:0 0;border:0;gap:1px;padding:7px 4px 7px 10px;display:grid;overflow:hidden}.query-result-tab>[role=tab][aria-selected=true]{color:var(--vscode-tab-activeForeground,var(--foreground))}.query-result-tab>[role=tab] span{color:var(--query-accent);font:9px/1.2 var(--compass-font-mono);letter-spacing:.05em;text-transform:uppercase}.query-result-tab>[role=tab] strong{text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:500;line-height:1.3;overflow:hidden}.query-result-close{width:22px;height:22px;color:var(--muted-foreground);background:0 0;border:0;border-radius:3px;align-self:center;place-items:center;padding:0;display:grid}.query-result-close:hover{background:var(--workbench-hover);color:var(--foreground)}.query-result-close svg{width:13px;height:13px}.query-result{width:min(1180px,100%);margin:0 auto}.query-result>header{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:9px;display:flex}.query-result>header span{color:var(--muted-foreground);font-size:10px}.query-result>header>span{font-family:var(--compass-font-mono);align-items:center;gap:5px;display:flex}.query-result>header svg{width:12px;height:12px}.query-result h2{margin:2px 0 0;font-size:14px;font-weight:600}.query-text-result,.query-json-result{border:1px solid var(--border);background:var(--vscode-textCodeBlock-background,var(--card));min-height:120px;color:var(--foreground);font:12px/1.6 var(--compass-font-mono);white-space:pre-wrap;overflow-wrap:anywhere;border-radius:3px;margin:0;padding:12px;overflow:auto}.query-prose-result{border:1px solid var(--query-border);background:var(--query-surface-raised);color:var(--foreground);border-radius:3px;padding:14px 16px;font-size:13px;line-height:1.65}.query-prose-result p,.query-prose-result ul{margin:0}.query-prose-result p+p,.query-prose-result p+ul,.query-prose-result ul+p{margin-top:10px}.query-prose-result ul{padding-left:20px}.query-traversal-result,.query-typed-result,.query-explanation{gap:10px;display:grid}.query-diagnostics{border:1px solid var(--query-border);border-left:3px solid var(--vscode-editorWarning-foreground,#cca700);background:var(--query-surface-raised);display:grid;overflow:hidden}.query-diagnostics>h3{border-bottom:1px solid var(--query-border);margin:0;padding:8px 11px;font-size:11px;font-weight:600}.query-diagnostics article{border-bottom:1px solid var(--query-border);grid-template-columns:16px minmax(0,1fr);gap:8px;min-width:0;padding:9px 11px;display:grid}.query-diagnostics article:last-child{border-bottom:0}.query-diagnostics article>svg{width:14px;height:14px;color:var(--vscode-editorWarning-foreground,#cca700);margin-top:1px}.query-diagnostics strong,.query-diagnostics p{overflow-wrap:anywhere;margin:0}.query-diagnostics strong{font-size:11px}.query-diagnostics p{color:var(--muted-foreground);margin-top:2px;font-size:11px;line-height:1.45}.query-explanation-card{border:1px solid var(--query-border);border-left:3px solid var(--query-accent);background:var(--query-surface-raised);grid-template-columns:minmax(180px,1fr) minmax(220px,1fr);gap:12px 18px;min-width:0;padding:13px 14px;display:grid}.query-explanation-card>div>span{color:var(--query-accent);font:9px/1.2 var(--compass-font-mono);letter-spacing:.05em;text-transform:uppercase}.query-explanation-card h3{margin:3px 0 4px;font-size:14px}.query-explanation-card code{color:var(--muted-foreground);font:10px/1.4 var(--compass-font-mono);text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.query-explanation-card>.query-source-action{align-self:center}.query-explanation-card dl{border-top:1px solid var(--query-border);grid-column:1/-1;gap:18px;margin:0;padding-top:10px;display:flex}.query-explanation-card dl>div{gap:6px;display:flex}.query-explanation-card dt,.query-explanation-card dd{margin:0;font-size:10px}.query-explanation-card dt{color:var(--muted-foreground)}.query-connections{border:1px solid var(--query-border);background:var(--query-surface);overflow:hidden}.query-connections>h3{border-bottom:1px solid var(--query-border);margin:0;padding:8px 11px;font-size:11px}.query-connections>h3 span{color:var(--muted-foreground);margin-left:4px;font-weight:400}.query-connections article{border-bottom:1px solid var(--query-border);grid-template-columns:18px minmax(0,1fr) auto;align-items:center;gap:8px;padding:8px 10px;display:grid}.query-connections article:last-child{border-bottom:0}.query-connections article>svg{width:14px;color:var(--query-accent)}.query-connections strong,.query-connections p{margin:0;font-size:11px}.query-connections p,.query-connections article>span{color:var(--muted-foreground);font-size:9px}.query-connections article>span{font-family:var(--compass-font-mono);text-transform:uppercase}.query-guidance{border:1px solid var(--query-border);background:var(--query-surface-raised);color:var(--muted-foreground);margin:0;padding:9px 11px;font-size:11px}.query-object-result{border:1px solid var(--query-border);background:var(--query-surface);margin:0;display:grid;overflow:hidden}.query-object-result>div{border-bottom:1px solid var(--query-border);grid-template-columns:minmax(120px,.28fr) minmax(0,1fr);display:grid}.query-object-result>div:last-child{border-bottom:0}.query-object-result dt,.query-object-result dd{overflow-wrap:anywhere;margin:0;padding:8px 10px}.query-object-result dt{color:var(--muted-foreground);text-transform:capitalize;font-size:10px}.query-object-result dd{border-left:1px solid var(--query-border);font:11px/1.5 var(--compass-font-mono);white-space:pre-wrap}.query-traversal-summary{border:1px solid var(--query-border);border-left:3px solid var(--query-accent);background:var(--query-surface-raised);justify-content:space-between;align-items:center;gap:16px;min-height:54px;padding:10px 12px;display:flex}.query-traversal-summary p{color:var(--foreground);margin:0;font-size:12px;font-weight:600}.query-result-metrics{color:var(--muted-foreground);flex-wrap:wrap;gap:5px 14px;margin-top:5px;font-size:10px;display:flex}.query-result-metrics strong{color:var(--foreground);font-weight:600}.query-graph-action{border:1px solid var(--vscode-button-border,transparent);background:var(--vscode-button-secondaryBackground,var(--secondary));min-height:30px;color:var(--vscode-button-secondaryForeground,var(--secondary-foreground));font:11px var(--compass-font-sans);border-radius:3px;flex:none;align-items:center;gap:6px;padding:5px 9px;display:inline-flex}.query-graph-action:hover{background:var(--vscode-button-secondaryHoverBackground,var(--workbench-hover))}.query-graph-action svg{width:14px;height:14px}.query-node-results{border:1px solid var(--query-border);background:var(--query-surface);border-radius:3px;overflow:hidden}.query-node-result{border-bottom:1px solid var(--query-border);grid-template-columns:18px minmax(160px,.72fr) minmax(240px,1.28fr);align-items:center;gap:9px;min-width:0;min-height:48px;padding:7px 10px;display:grid}.query-node-result:last-child{border-bottom:0}.query-node-result:hover{background:var(--workbench-hover)}.query-node-result>svg{width:14px;height:14px;color:var(--vscode-symbolIcon-functionForeground,var(--query-accent))}.query-node-copy,.query-node-copy h3,.query-node-copy p{min-width:0}.query-node-copy h3,.query-node-copy p{text-overflow:ellipsis;white-space:nowrap;margin:0;overflow:hidden}.query-node-copy h3{color:var(--vscode-editor-foreground,var(--foreground));font-size:12px;font-weight:600}.query-node-copy p{color:var(--muted-foreground);margin-top:2px;font-size:10px}.query-source-action{min-width:0;color:var(--workbench-link);font:10px/1.4 var(--compass-font-mono);text-align:left;background:0 0;border:1px solid #0000;border-radius:3px;justify-content:space-between;align-items:center;gap:8px;padding:5px 7px;display:flex;overflow:hidden}.query-source-action:hover{border-color:var(--query-border);background:var(--vscode-editorHoverWidget-background,var(--query-surface-raised))}.query-source-action span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.query-source-action small{color:var(--muted-foreground);font:10px var(--compass-font-mono);flex:none}.query-source-missing{color:var(--vscode-disabledForeground,var(--compass-faint));font:10px var(--compass-font-mono)}.query-table{border:1px solid var(--border);border-radius:3px;overflow:auto}.query-table table{border-collapse:collapse;width:100%;min-width:480px;font-size:11px}.query-table thead{background:var(--workbench-table-header);position:sticky;top:0}.query-table th,.query-table td{border-bottom:1px solid var(--border);text-align:left;text-overflow:ellipsis;white-space:nowrap;max-width:380px;padding:7px 9px;overflow:hidden}.query-table th{color:var(--muted-foreground);font-weight:500}.query-table tbody tr:hover{background:var(--workbench-hover)}.query-table tr:last-child td{border-bottom:0}.query-empty{place-content:center;display:grid}.query-history{text-align:center;width:min(720px,100vw - 40px);margin:-28px auto 20px}.query-history h2{color:var(--muted-foreground);margin:0 0 7px;font-size:10px;font-weight:500}.query-history button{text-overflow:ellipsis;max-width:min(100%,460px);margin:2px;overflow:hidden}.query-shell button:focus-visible{outline:2px solid var(--ring);outline-offset:1px}body.vscode-high-contrast .query-mode,body.vscode-high-contrast-light .query-mode,body.vscode-high-contrast .query-text-result,body.vscode-high-contrast-light .query-text-result,body.vscode-high-contrast .query-json-result,body.vscode-high-contrast-light .query-json-result,body.vscode-high-contrast .query-table,body.vscode-high-contrast-light .query-table,body.vscode-high-contrast .query-composer-panel,body.vscode-high-contrast-light .query-composer-panel,body.vscode-high-contrast .query-editor-shell,body.vscode-high-contrast-light .query-editor-shell,body.vscode-high-contrast .query-prose-result,body.vscode-high-contrast-light .query-prose-result,body.vscode-high-contrast .query-traversal-summary,body.vscode-high-contrast-light .query-traversal-summary,body.vscode-high-contrast .query-node-results,body.vscode-high-contrast-light .query-node-results,body.vscode-high-contrast .query-diagnostics,body.vscode-high-contrast-light .query-diagnostics,body.vscode-high-contrast .query-explanation-card,body.vscode-high-contrast-light .query-explanation-card,body.vscode-high-contrast .query-connections,body.vscode-high-contrast-light .query-connections,body.vscode-high-contrast .query-object-result,body.vscode-high-contrast-light .query-object-result,body.vscode-high-contrast .query-suggestions,body.vscode-high-contrast-light .query-suggestions,body.vscode-high-contrast .query-completion-status,body.vscode-high-contrast-light .query-completion-status{border-width:2px;border-color:var(--vscode-contrastBorder,var(--ring))}body.vscode-high-contrast .query-mode button[aria-selected=true],body.vscode-high-contrast-light .query-mode button[aria-selected=true]{border:2px solid var(--vscode-contrastBorder,var(--ring));border-bottom:0}.history-shell{background:var(--background);height:100vh;min-height:440px;color:var(--foreground);grid-template-columns:minmax(270px,340px) minmax(0,1fr);display:grid;overflow:hidden}.history-bootstrap{background:var(--vscode-editor-background,var(--background));place-items:center;min-height:100vh;display:grid}.history-sidebar{border-right:1px solid var(--border);background:var(--sidebar);min-width:0;min-height:0;color:var(--sidebar-foreground);flex-direction:column;display:flex}.history-sidebar-header{border-bottom:1px solid var(--border);flex:none;padding:14px 12px 12px}.history-title{align-items:flex-start;gap:9px;display:flex}.history-title>svg{width:16px;height:16px;color:var(--muted-foreground);margin-top:1px}.history-title h1{margin:0;font-size:13px;font-weight:600;line-height:1.25}.history-title p{color:var(--muted-foreground);margin:3px 0 0;font-size:11px}.history-search{align-items:center;margin-top:12px;display:flex;position:relative}.history-search>svg{width:14px;height:14px;color:var(--vscode-input-placeholderForeground,var(--muted-foreground));pointer-events:none;position:absolute;left:8px}.history-search input,.history-mobile-select select{border:1px solid var(--vscode-input-border,transparent);background:var(--vscode-input-background,var(--input));width:100%;min-height:28px;color:var(--vscode-input-foreground,var(--foreground));font:inherit;border-radius:2px;outline:none;font-size:12px}.history-search input{padding:4px 8px 4px 28px}.history-search input::placeholder{color:var(--vscode-input-placeholderForeground,var(--muted-foreground))}.history-search input:focus-visible,.history-mobile-select select:focus-visible,.history-rail:focus-visible,.history-commit:focus-visible{border-color:var(--ring);outline:1px solid var(--ring);outline-offset:-1px}.history-mobile-select{display:none}.history-rail{outline:none;flex:auto;min-height:0;overflow:auto}.history-pagination{border-top:1px solid var(--border);color:var(--muted-foreground);flex:none;justify-items:start;gap:6px;padding:8px 10px;font-size:11px;display:grid}.history-pagination [role=alert]{color:var(--destructive)}.history-commit{border:0;border-bottom:1px solid var(--border);width:100%;color:inherit;text-align:left;background:0 0;border-radius:0;align-items:center;gap:.625rem;padding:8px 11px;display:flex;position:absolute;left:0;right:0}.history-commit:hover{background:var(--workbench-hover);color:var(--workbench-hover-foreground)}.history-commit[aria-selected=true]{background:var(--sidebar-accent);color:var(--sidebar-accent-foreground);box-shadow:inset 2px 0 var(--sidebar-primary)}.history-commit>svg{width:15px;height:15px;color:var(--muted-foreground);flex:none}.history-commit>svg[data-state=available]{color:var(--compass-success)}.history-commit>svg[data-state=building]{color:var(--vscode-progressBar-background,var(--ring))}.history-commit>svg[data-state=failed]{color:var(--destructive)}.history-commit-row-copy,.history-commit-subject,.history-commit-byline{min-width:0}.history-commit-row-copy{flex:1;display:block}.history-commit-subject{text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:500;line-height:1.4;display:block;overflow:hidden}.history-commit-byline{color:var(--muted-foreground);white-space:nowrap;align-items:center;gap:5px;margin-top:3px;font-size:10px;display:flex;overflow:hidden}.history-commit[aria-selected=true] .history-commit-byline{color:currentColor}@supports (color:color-mix(in lab,red,red)){.history-commit[aria-selected=true] .history-commit-byline{color:color-mix(in srgb,currentColor 72%,transparent)}}.history-commit-byline code{color:inherit;font-family:var(--compass-font-mono)}.history-commit-byline span{text-overflow:ellipsis;overflow:hidden}.history-commit-byline time{margin-left:auto}.history-content{background:var(--vscode-editor-background,var(--background));min-width:0;min-height:0;padding:16px;overflow:auto}.history-commit-details{border:1px solid var(--border);background:var(--vscode-editor-background,var(--background));padding:14px}.history-commit-heading{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.history-commit-copy{min-width:0}.history-eyebrow{color:var(--muted-foreground);letter-spacing:.06em;text-transform:uppercase;font-size:10px;font-weight:600;display:block}.history-commit-copy h2{overflow-wrap:anywhere;margin:4px 0 0;font-size:16px;font-weight:600;line-height:1.35}.history-commit-metadata{color:var(--muted-foreground);flex-wrap:wrap;gap:4px 12px;margin-top:7px;font-size:11px;display:flex}.history-commit-metadata code{color:var(--vscode-textLink-foreground,var(--workbench-link));font-family:var(--compass-font-mono)}.history-state-badge{text-transform:capitalize;border-radius:2px;flex:none}.history-commit-actions,.history-change-counts{flex-wrap:wrap;margin-top:12px;display:flex}.history-commit-actions{align-items:flex-end;gap:10px}.history-change-counts{gap:6px}.history-change-counts-help{color:var(--vscode-descriptionForeground,#9aa7b7);margin:-.15rem 0 0;font-size:.78rem;line-height:1.45}.history-commit-actions:empty{display:none}.history-commit-actions button{border-radius:2px}.history-comparison-control{grid-template-columns:minmax(180px,1fr) auto;gap:5px 7px;min-width:min(100%,440px);display:grid}.history-comparison-control label{color:var(--muted-foreground);letter-spacing:.04em;text-transform:uppercase;grid-column:1/-1;font-size:10px;font-weight:600}.history-comparison-control select{border:1px solid var(--vscode-dropdown-border,var(--border));background:var(--vscode-dropdown-background,var(--background));min-width:0;height:28px;color:var(--vscode-dropdown-foreground,var(--foreground));border-radius:2px;outline:none;padding:0 26px 0 8px;font-size:11px}.history-comparison-control select option{background:var(--vscode-dropdown-background,var(--background));color:var(--vscode-dropdown-foreground,var(--foreground))}.history-comparison-control select:focus-visible{border-color:var(--vscode-focusBorder,var(--ring));outline:1px solid var(--vscode-focusBorder,var(--ring));outline-offset:-1px}.history-comparison-control select:disabled{color:var(--vscode-disabledForeground,var(--muted-foreground));cursor:not-allowed}.history-comparison-help,.history-inline-error{color:var(--muted-foreground);margin:9px 0 0;font-size:11px;line-height:1.45}.history-inline-error{color:var(--destructive)}.history-change-counts{color:var(--muted-foreground);font-size:11px}.history-change-counts span{border:1px solid var(--border);background:var(--vscode-badge-background,var(--muted));color:var(--vscode-badge-foreground,var(--foreground));border-radius:2px;padding:3px 6px}.history-change-counts strong{font-weight:600}.history-comparison,.history-diff-evidence{border:1px solid var(--border);background:var(--vscode-editor-background,var(--background));color:var(--vscode-editor-foreground,var(--foreground));margin-top:12px}.history-comparison{box-shadow:inset 3px 0 0 var(--vscode-focusBorder,var(--ring))}.history-comparison-heading{grid-template-columns:18px minmax(0,1fr) auto;align-items:start;gap:8px;padding:11px 12px 9px;display:grid}.history-comparison-heading>svg,.history-diff-heading>svg{width:15px;height:15px;color:var(--vscode-focusBorder,var(--ring));margin-top:2px}.history-comparison-heading h2{color:var(--vscode-editor-foreground,var(--foreground));margin:2px 0 0;font-size:13px;font-weight:600}.history-comparison-heading code{color:var(--vscode-textLink-foreground,var(--workbench-link));font-family:var(--compass-font-mono);background:0 0}.history-comparison-heading button{border:1px solid var(--border);min-height:26px;color:var(--foreground);background:0 0;border-radius:2px;align-items:center;gap:5px;padding:3px 7px;font-size:10px;display:inline-flex}.history-comparison-heading button:hover{border-color:var(--vscode-focusBorder,var(--ring));background:var(--workbench-hover)}.history-comparison-heading button svg{width:12px;height:12px}.history-comparison-legend{font:10px/1.4 var(--compass-font-mono);flex-wrap:wrap;gap:6px;padding:0 12px 10px 38px;display:flex}.history-delta-card{border:1px solid var(--border);background:var(--vscode-editor-foreground,var(--foreground));border-radius:2px;gap:4px;min-width:200px;padding:6px 8px;display:grid}@supports (color:color-mix(in lab,red,red)){.history-delta-card{background:color-mix(in srgb,var(--vscode-editor-foreground,var(--foreground)) 5%,var(--vscode-editor-background,var(--background)))}}.history-delta-card{color:var(--vscode-editor-foreground,var(--foreground))}.history-delta-card>span{flex-wrap:wrap;gap:5px 10px;display:flex}.history-delta-card strong{color:var(--vscode-editor-foreground,var(--foreground));text-transform:capitalize}.history-delta-card i{font-style:normal;font-weight:600}.history-delta-card i small{color:var(--muted-foreground);font-size:9px;font-weight:400}.history-delta-card i[data-change=added]{color:var(--vscode-gitDecoration-addedResourceForeground,#2ea043)}.history-delta-card i[data-change=removed]{color:var(--vscode-gitDecoration-deletedResourceForeground,#f85149)}.history-delta-card i[data-change=changed]{color:var(--vscode-gitDecoration-modifiedResourceForeground,#d29922)}.history-comparison-empty{border-top:1px solid var(--border);color:var(--muted-foreground);gap:2px;padding:9px 12px 10px 38px;font-size:11px;display:grid}.history-comparison-empty strong{color:var(--foreground);font-size:12px}.history-comparison-workspace{border:1px solid var(--border);background:var(--vscode-editor-background,var(--background));min-width:0;color:var(--vscode-editor-foreground,var(--foreground));margin-top:12px;overflow:hidden}.history-comparison-tabs{border-bottom:1px solid var(--border);background:var(--vscode-editorGroupHeader-tabsBackground,var(--vscode-sideBar-background,var(--background)));scrollbar-width:thin;min-width:0;display:flex;overflow-x:auto}.history-comparison-tabs button{border:0;border-right:1px solid var(--border);min-width:max-content;min-height:41px;color:var(--vscode-tab-inactiveForeground,var(--muted-foreground));font:11px/1 var(--compass-font-sans);background:0 0;align-items:center;gap:7px;padding:0 14px;display:inline-flex;position:relative}.history-comparison-tabs button:hover{background:var(--workbench-hover);color:var(--vscode-tab-activeForeground,var(--foreground))}.history-comparison-tabs button[aria-selected=true]{background:var(--vscode-tab-activeBackground,var(--vscode-editor-background,var(--background)));color:var(--vscode-tab-activeForeground,var(--foreground));box-shadow:inset 0 2px 0 var(--vscode-tab-activeBorder,var(--vscode-focusBorder,var(--ring)))}.history-comparison-tabs button:focus-visible{z-index:1;outline:1px solid var(--vscode-focusBorder,var(--ring));outline-offset:-2px}.history-comparison-tabs button>svg{width:14px;height:14px;color:var(--vscode-focusBorder,var(--ring))}.history-comparison-tab-count{border:1px solid var(--border);background:var(--vscode-badge-background,var(--muted));min-width:19px;height:19px;color:var(--vscode-badge-foreground,var(--foreground));font:9px/1 var(--compass-font-mono);border-radius:9px;justify-content:center;align-items:center;padding:0 5px;display:inline-flex}.history-comparison-tab-panel{background:var(--vscode-editor-background,var(--background));min-width:0}.history-evidence-panel{min-width:0;padding:15px 15px 17px}.history-evidence-header{border-bottom:1px solid var(--border);padding-bottom:12px}.history-evidence-header>p,.history-findings-header>div>p{color:var(--muted-foreground);margin:4px 0 0 22px;font-size:11px;line-height:1.45}.history-diff-heading{align-items:center;gap:7px;display:flex}.history-diff-heading h2{margin:0;font-size:13px;font-weight:600}.history-findings-header{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.history-findings-expand{border:1px solid var(--border);min-height:27px;color:var(--foreground);background:0 0;border-radius:2px;flex:none;padding:4px 9px;font-size:10px}.history-findings-expand:hover{border-color:var(--vscode-focusBorder,var(--ring));background:var(--workbench-hover)}.history-source-changes{gap:6px;margin-top:12px;display:grid}.history-source-changes details{border:1px solid var(--border);background:var(--vscode-editor-background,var(--background));color:var(--vscode-editor-foreground,var(--foreground));border-radius:2px;overflow:hidden}.history-diff-toolbar{align-items:center;gap:6px;margin-top:12px;display:flex}.history-diff-layout{border:1px solid var(--border);border-radius:2px;display:inline-flex;overflow:hidden}.history-diff-toolbar button{min-height:25px;color:var(--muted-foreground);background:0 0;border:0;padding:3px 8px;font-size:10px}.history-diff-layout button+button{border-left:1px solid var(--border)}.history-diff-toolbar button:hover:not(:disabled){background:var(--workbench-hover);color:var(--foreground)}.history-diff-toolbar button[aria-pressed=true],.history-diff-toolbar button[aria-pressed=true]:hover{background:var(--vscode-tab-activeBackground,var(--vscode-editor-background,var(--background)));color:var(--vscode-tab-activeForeground,var(--vscode-editor-foreground,var(--foreground)));box-shadow:inset 0 2px 0 var(--vscode-tab-activeBorder,var(--vscode-focusBorder,var(--ring)))}.history-diff-toolbar button:disabled{cursor:not-allowed;opacity:.45}.history-diff-wrap{min-height:25px;color:var(--muted-foreground);align-items:center;gap:5px;font-size:10px;display:inline-flex}.history-diff-wrap input{margin:0}.history-diff-expand{border-radius:2px;margin-left:auto;border:1px solid var(--border)!important}.history-source-changes summary{cursor:pointer;border-bottom:1px solid var(--border);background:var(--vscode-editorGroupHeader-tabsBackground,var(--background));justify-content:space-between;align-items:center;gap:10px;padding:6px 8px;font-size:10px;display:flex}.history-source-path{align-items:center;gap:8px;min-width:0;display:inline-flex}.history-source-path code{color:var(--vscode-textLink-foreground,var(--workbench-link));font-family:var(--compass-font-mono);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.history-source-path small{color:var(--muted-foreground);text-transform:capitalize;font-size:9px}.history-source-stats{font-family:var(--compass-font-mono);flex:none;gap:6px;display:inline-flex}.history-source-stats i{font-style:normal;font-weight:600}.history-source-stats i[data-change=added]{color:var(--vscode-gitDecoration-addedResourceForeground,#2ea043)}.history-source-stats i[data-change=removed]{color:var(--vscode-gitDecoration-deletedResourceForeground,#f85149)}.history-source-diff{contain:inline-size;background:var(--vscode-editor-background,var(--background));width:100%;min-width:0;max-width:100%;display:block}.history-diff-fallback>p{border-bottom:1px solid var(--border);color:var(--vscode-gitDecoration-modifiedResourceForeground,#d29922);margin:0;padding:7px 8px}.history-diff-fallback pre{max-height:260px;color:var(--vscode-editor-foreground,var(--foreground));font:10px/1.5 var(--compass-font-mono);white-space:pre;margin:0;padding:8px;overflow:auto}.history-source-changes p,.history-diff-empty{color:var(--muted-foreground);margin:12px 0 0;font-size:11px}.history-finding-list{gap:10px;margin-top:14px;display:grid}.history-finding-list details{border:1px solid var(--border);background:var(--vscode-editor-foreground,var(--foreground));border-radius:4px;overflow:hidden}@supports (color:color-mix(in lab,red,red)){.history-finding-list details{background:color-mix(in srgb,var(--vscode-editor-foreground,var(--foreground)) 2%,var(--vscode-editor-background,var(--background)))}}.history-finding-list details{color:var(--vscode-editor-foreground,var(--foreground))}.history-finding-list details[open]{border-color:var(--vscode-focusBorder,var(--ring))}@supports (color:color-mix(in lab,red,red)){.history-finding-list details[open]{border-color:color-mix(in srgb,var(--vscode-focusBorder,var(--ring)) 58%,var(--border))}}.history-finding-list details[open]{box-shadow:inset 3px 0 0 var(--vscode-focusBorder,var(--ring))}.history-finding-list summary{cursor:pointer;grid-template-columns:28px minmax(0,1fr) 16px;align-items:center;gap:11px;min-height:58px;padding:11px 13px;list-style:none;display:grid}.history-finding-list summary::-webkit-details-marker{display:none}.history-finding-list summary:hover{background:var(--workbench-hover)}.history-finding-list summary:focus-visible{outline:1px solid var(--vscode-focusBorder,var(--ring));outline-offset:-2px}.history-finding-index{border:1px solid var(--border);background:var(--vscode-editor-background,var(--background));width:27px;height:27px;color:var(--vscode-focusBorder,var(--ring));font:600 10px/1 var(--compass-font-mono);border-radius:3px;justify-content:center;align-items:center;display:inline-flex}.history-finding-summary{gap:4px;min-width:0;display:grid}.history-finding-summary strong{text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:600;line-height:1.35;overflow:hidden}.history-finding-summary small{color:var(--muted-foreground);font-size:10px}.history-finding-list summary>svg{width:15px;height:15px;color:var(--muted-foreground);transition:transform .12s}.history-finding-list details[open] summary>svg{transform:rotate(90deg)}.history-finding-body{border-top:1px solid var(--border);padding:0 14px 15px 52px}.history-finding-body>p{color:var(--muted-foreground);margin:13px 0 0;font-size:11px}.history-finding-body dl{gap:0;margin:0;display:grid}.history-finding-body dl>div{border-bottom:1px solid var(--border);grid-template-columns:minmax(110px,170px) minmax(0,1fr);gap:16px;padding:12px 0;display:grid}.history-finding-body dl>div:last-child{border-bottom:0;padding-bottom:0}.history-finding-body dt{color:var(--muted-foreground);letter-spacing:.06em;text-transform:uppercase;font-size:9px;font-weight:600}.history-finding-body dd{min-width:0;margin:0;font-size:11px;line-height:1.5}.history-finding-body dd ul{gap:5px;margin:0;padding-left:17px;display:grid}.history-finding-body dd pre{border:1px solid var(--border);background:var(--vscode-textCodeBlock-background,var(--muted));max-height:280px;color:var(--vscode-editor-foreground,var(--foreground));font:10px/1.55 var(--compass-font-mono);white-space:pre-wrap;border-radius:3px;margin:0;padding:9px 10px;overflow:auto}.history-finding-body dd code{font-family:var(--compass-font-mono)}.history-finding-muted{color:var(--muted-foreground);font-style:italic}.history-findings-empty{border:1px dashed var(--border);color:var(--muted-foreground);border-radius:4px;align-items:flex-start;gap:10px;margin-top:14px;padding:15px;display:flex}.history-findings-empty>svg{width:17px;height:17px;color:var(--vscode-focusBorder,var(--ring))}.history-findings-empty strong{color:var(--foreground);font-size:12px}.history-findings-empty p{margin:4px 0 0;font-size:11px}.history-standalone-evidence{gap:12px;margin-top:12px;display:grid}.history-standalone-evidence>section{border:1px solid var(--border);background:var(--vscode-editor-background,var(--background))}.history-graph-frame{border:1px solid var(--border);background:var(--vscode-editor-background,var(--background));height:max(400px,100vh - 190px);min-height:360px;margin-top:12px;display:grid;overflow:hidden}.history-graph-frame-tabbed{border:0;height:max(460px,100vh - 230px);min-height:420px;margin-top:0}.history-graph-ready,.history-graph-canvas{min-width:0;min-height:0}.history-graph-ready{flex-direction:column;display:flex}.history-graph-status{border-bottom:1px solid var(--border);background:var(--vscode-editorGroupHeader-tabsBackground,var(--background));min-height:30px;color:var(--muted-foreground);flex:none;padding:7px 10px;font-size:11px}.history-graph-status span{color:var(--foreground);font-family:var(--compass-font-mono)}.history-graph-canvas{isolation:isolate;flex:1;position:relative}.history-graph-canvas .compass-workspace{height:100%;min-height:0}.history-content>section:last-child{margin-top:12px}body.vscode-high-contrast .history-sidebar,body.vscode-high-contrast-light .history-sidebar,body.vscode-high-contrast .history-commit-details,body.vscode-high-contrast-light .history-commit-details,body.vscode-high-contrast .history-graph-frame,body.vscode-high-contrast-light .history-graph-frame,body.vscode-high-contrast .history-comparison,body.vscode-high-contrast-light .history-comparison,body.vscode-high-contrast .history-diff-evidence,body.vscode-high-contrast-light .history-diff-evidence,body.vscode-high-contrast .history-comparison-workspace,body.vscode-high-contrast-light .history-comparison-workspace,body.vscode-high-contrast .history-finding-list details,body.vscode-high-contrast-light .history-finding-list details,body.vscode-high-contrast .history-source-changes details,body.vscode-high-contrast-light .history-source-changes details,body.vscode-high-contrast .history-change-counts span,body.vscode-high-contrast-light .history-change-counts span,body.vscode-high-contrast .history-comparison-control select,body.vscode-high-contrast-light .history-comparison-control select,body.vscode-high-contrast .compass-change-legend,body.vscode-high-contrast-light .compass-change-legend,body.vscode-high-contrast .compass-semantic-legend,body.vscode-high-contrast-light .compass-semantic-legend,body.vscode-high-contrast .compass-change-badge,body.vscode-high-contrast-light .compass-change-badge{border-color:var(--vscode-contrastBorder,var(--ring));border-width:2px}@media(max-width:760px){.query-header{padding:10px}.query-heading-row,.query-composer{flex-direction:column;align-items:stretch}.query-mode{align-self:flex-start}.query-mode button{min-width:180px}.query-mode small{display:none}.query-suggestions button{grid-template-columns:1fr;gap:2px}.query-suggestions button>small,.query-suggestions-hint{display:none}.query-explanation-card{grid-template-columns:1fr}.query-explanation-card dl{grid-column:auto}.history-diff-toolbar{flex-wrap:wrap}.history-comparison-control{grid-template-columns:1fr;width:100%}.history-commit-actions{flex-direction:column;align-items:stretch}.history-commit-actions>button{align-self:flex-start}.history-comparison-control label{grid-column:auto}.history-diff-expand{margin-left:0}.history-comparison-tabs button{min-height:39px;padding-inline:11px}.history-evidence-panel{padding:12px}.history-findings-header{flex-direction:column;align-items:stretch}.history-findings-expand{align-self:flex-start}.history-finding-body{padding-left:14px}.history-finding-body dl>div{grid-template-columns:1fr;gap:5px}.query-composer-footer{flex-wrap:wrap}.query-params{flex:1 0 100%;max-width:none}.query-params input{max-width:none}.query-footer-actions{justify-content:flex-end;width:100%}.query-examples{padding-bottom:2px}.compass-load-shell[data-variant=architecture]{text-align:center;grid-template-rows:auto auto auto;grid-template-columns:1fr}.compass-load-shell[data-variant=architecture] .compass-load-visual,.compass-load-shell[data-variant=architecture] .compass-load-copy,.architecture-load-skeleton{grid-column:1}.compass-load-shell[data-variant=architecture] .compass-load-visual{margin:0 auto}.compass-load-shell[data-variant=architecture] .compass-load-steps{justify-content:center}.architecture-load-skeleton{grid-row:3;width:min(88vw,460px);height:190px;margin-top:14px}.history-shell{grid-template-rows:auto minmax(0,1fr);grid-template-columns:1fr}.history-sidebar{border-right:0;border-bottom:1px solid var(--border)}.history-sidebar-header{padding:10px}.history-title p,.history-search,.history-rail{display:none}.history-mobile-select{color:var(--muted-foreground);gap:4px;margin-top:9px;font-size:10px;display:grid}.history-mobile-select select{padding:4px 7px}.history-content{padding:10px}.history-commit-heading{gap:8px}.history-commit-metadata{gap:3px;display:grid}.history-graph-frame{height:max(750px,102vh + 30px);margin-top:10px}.history-graph-canvas .compass-workspace{height:auto;min-height:max(720px,102vh)}}@media(max-width:420px){.query-params{flex-direction:column;align-items:stretch;gap:4px}.query-params input{flex:none;width:100%}}.architecture-nav{border-right:1px solid var(--border);background:var(--sidebar);min-height:0;color:var(--sidebar-foreground);flex-direction:column;display:flex}.architecture-nav-header{border-bottom:1px solid var(--border);padding:14px 14px 12px}.architecture-nav-header>span,.architecture-eyebrow{color:var(--muted-foreground);letter-spacing:.08em;text-transform:uppercase;font-size:10px;font-weight:600;display:block}.architecture-nav-header h1{text-overflow:ellipsis;white-space:nowrap;margin:4px 0 0;font-size:13px;font-weight:600;line-height:1.35;overflow:hidden}.architecture-section-list{flex:1;min-height:0;padding:5px;overflow:auto}.architecture-section-list>button{width:100%;min-height:48px;color:inherit;text-align:left;background:0 0;border:1px solid #0000;border-radius:3px;grid-template-columns:18px minmax(0,1fr);align-items:start;gap:7px;padding:7px 8px;display:grid}.architecture-section-list>button:hover{background:var(--workbench-hover);color:var(--workbench-hover-foreground)}.architecture-section-list>button[aria-current=page]{border-color:var(--vscode-list-activeSelectionBackground,var(--sidebar-primary));background:var(--sidebar-accent);color:var(--sidebar-accent-foreground)}.architecture-section-list svg{width:14px;height:14px;margin-top:2px}.architecture-section-list strong,.architecture-section-list small{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.architecture-section-list strong{font-size:12px;font-weight:500}.architecture-section-list small{color:var(--muted-foreground);margin-top:2px;font-size:10px}.architecture-section-list>button[aria-current=page] small{color:inherit;opacity:.78}.architecture-stats{border-top:1px solid var(--border);color:var(--muted-foreground);text-align:center;grid-template-columns:repeat(3,1fr);gap:1px;padding:8px 6px;font-size:9px;display:grid}.architecture-stats strong{color:var(--sidebar-foreground);margin-bottom:1px;font-size:11px;display:block}.architecture-main{min-width:0;padding:14px clamp(14px,2.2vw,24px) 32px;overflow:auto}.architecture-global-search{z-index:20;max-width:760px;margin:0 auto 18px;position:sticky;top:0}.architecture-global-search>label{align-items:center;display:flex;position:relative}.architecture-global-search>label>svg{width:15px;height:15px;color:var(--vscode-input-placeholderForeground,var(--muted-foreground));position:absolute;left:10px}.architecture-global-search input{border:1px solid var(--vscode-input-border,var(--border));background:var(--vscode-input-background,var(--input));width:100%;height:34px;color:var(--vscode-input-foreground,var(--foreground));font:inherit;border-radius:3px;outline:none;padding:5px 84px 5px 33px;font-size:12px}.architecture-global-search input:focus-visible{border-color:var(--ring);outline:1px solid var(--ring);outline-offset:-1px}.architecture-global-search label>span{color:var(--muted-foreground);font-size:10px;position:absolute;right:8px}.architecture-search-results{border:1px solid var(--vscode-menu-border,var(--border));background:var(--vscode-menu-background,var(--popover));max-height:min(440px,65vh);color:var(--vscode-menu-foreground,var(--popover-foreground));box-shadow:0 4px 12px var(--vscode-widget-shadow,#00000047);border-radius:3px;position:absolute;top:calc(100% + 2px);left:0;right:0;overflow:auto}.architecture-search-results>p{color:var(--muted-foreground);margin:0;padding:14px;font-size:12px}.architecture-search-results section+section{border-top:1px solid var(--vscode-menu-separatorBackground,var(--border))}.architecture-search-results h2{color:var(--muted-foreground);letter-spacing:.06em;text-transform:uppercase;margin:0;padding:7px 10px 4px;font-size:10px;font-weight:600}.architecture-search-results button{width:100%;color:inherit;text-align:left;background:0 0;border:0;padding:6px 10px;display:block}.architecture-search-results button:hover,.architecture-search-results button:focus-visible{background:var(--vscode-menu-selectionBackground,var(--vscode-list-activeSelectionBackground,var(--accent)));color:var(--vscode-menu-selectionForeground,var(--vscode-list-activeSelectionForeground,var(--accent-foreground)));outline:none}.architecture-search-results button span,.architecture-search-results button small{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.architecture-search-results button span{font-size:12px}.architecture-search-results button small{color:inherit;opacity:.72;margin-top:2px;font-size:10px}.architecture-overview,.architecture-detail{max-width:1500px;margin-left:auto;margin-right:auto}.architecture-detail{margin-top:26px}.architecture-section-heading{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:10px;display:flex}.architecture-section-heading h2{margin:0;font-size:15px;font-weight:600;line-height:1.35}.architecture-section-heading p{color:var(--muted-foreground);margin:3px 0 0;font-size:11px}.architecture-detail-count{color:var(--muted-foreground);white-space:nowrap;font-size:11px}.architecture-flow-grid,.architecture-symbol-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:6px;display:grid}.architecture-flow{border:1px solid var(--border);background:var(--vscode-editorWidget-background,var(--card));min-width:0;min-height:38px;color:var(--foreground);font:inherit;text-align:left;border-radius:3px;grid-template-columns:minmax(0,1fr) 14px minmax(0,1fr) auto;align-items:center;gap:6px;padding:6px 8px;font-size:11px;display:grid}.architecture-flow:hover{border-color:var(--vscode-focusBorder,var(--ring));background:var(--workbench-hover)}.architecture-flow>span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.architecture-flow>svg{width:13px;height:13px;color:var(--muted-foreground)}.architecture-flow-footer{justify-content:space-between;align-items:center;gap:10px;margin-top:8px;display:flex}.architecture-flow-footer p{color:var(--muted-foreground);margin:0;font-size:10px}.architecture-flow-footer button{border:1px solid var(--border);color:var(--foreground);font:inherit;background:0 0;border-radius:3px;padding:3px 7px;font-size:10px}.architecture-tab-content{min-height:280px;padding-top:8px}.architecture-detail [data-slot=tabs-list]{border-bottom:1px solid var(--border);justify-content:flex-start;gap:0;width:100%;height:30px;padding:0}.architecture-detail [data-slot=tabs-trigger]{min-width:76px;height:30px;color:var(--muted-foreground);border-radius:0;flex:none;padding:4px 10px;font-size:11px;font-weight:500}.architecture-detail [data-slot=tabs-trigger][data-state=active]{color:var(--foreground)}.architecture-detail [data-slot=tabs-trigger]>span{background:var(--vscode-badge-background,var(--muted));min-width:22px;color:var(--vscode-badge-foreground,var(--muted-foreground));font:9px/1.4 var(--compass-font-mono);border-radius:9px;margin-left:4px;padding:1px 5px}.architecture-detail [data-slot=tabs-trigger][data-state=active]>span{color:var(--vscode-badge-foreground,var(--foreground))}.architecture-detail [data-slot=tabs-trigger]:after{background:var(--vscode-tab-activeBorder,var(--ring));bottom:-1px}.architecture-symbol-grid{grid-template-columns:repeat(auto-fill,minmax(210px,1fr));margin-top:8px}.architecture-symbol-card{border:1px solid var(--border);background:var(--vscode-editorWidget-background,var(--card));min-width:0;min-height:92px;color:var(--card-foreground);border-radius:3px;grid-template-rows:auto 1fr;grid-template-columns:18px minmax(0,1fr);gap:0 7px;padding:9px;display:grid}.architecture-symbol-card>svg{width:15px;height:15px;color:var(--vscode-symbolIcon-functionForeground,var(--muted-foreground));margin-top:1px}.architecture-symbol-card h3,.architecture-symbol-card p{text-overflow:ellipsis;white-space:nowrap;margin:0;overflow:hidden}.architecture-symbol-card h3{color:var(--vscode-editor-foreground,var(--foreground));font-size:12px;font-weight:600}.architecture-symbol-card p{color:var(--muted-foreground);margin-top:2px;font-size:10px}.architecture-symbol-card>button,.architecture-symbol-card>span{color:var(--workbench-link);font:10px/1.35 var(--compass-font-mono);text-align:left;text-overflow:ellipsis;white-space:nowrap;background:0 0;border:0;grid-column:1/span 2;align-self:end;margin-top:9px;padding:0;overflow:hidden}.architecture-symbol-card>button:hover{text-decoration:underline}.architecture-symbol-card>span{color:var(--vscode-disabledForeground,var(--compass-faint))}.architecture-call-table{border:1px solid var(--border);border-radius:3px;max-height:min(54vh,620px);margin-top:8px;overflow:auto}.architecture-call-table table{border-collapse:collapse;table-layout:fixed;width:100%;min-width:620px;font-size:11px}.architecture-call-table thead{z-index:2;background:var(--workbench-table-header);position:sticky;top:0}.architecture-call-table th,.architecture-call-table td{border-bottom:1px solid var(--border);text-align:left;text-overflow:ellipsis;white-space:nowrap;padding:7px 9px;overflow:hidden}.architecture-call-table th{color:var(--muted-foreground);padding:0;font-weight:500}.architecture-call-table th button{width:100%;min-height:30px;color:inherit;font:inherit;text-align:left;background:0 0;border:0;align-items:center;gap:5px;padding:6px 9px;display:flex}.architecture-call-table th button:hover{background:var(--workbench-hover);color:var(--foreground)}.architecture-call-table tbody tr:hover{background:var(--workbench-hover)}.architecture-call-table tr:last-child td{border-bottom:0}.architecture-call-table th:nth-child(2),.architecture-call-table th:nth-child(4),.architecture-call-table td:nth-child(2),.architecture-call-table td:nth-child(4){width:126px}.architecture-shell button:focus-visible,.architecture-shell input:focus-visible{outline:2px solid var(--ring);outline-offset:1px}body.vscode-high-contrast .architecture-section-list>button[aria-current=page],body.vscode-high-contrast-light .architecture-section-list>button[aria-current=page],body.vscode-high-contrast .architecture-flow:focus-visible,body.vscode-high-contrast-light .architecture-flow:focus-visible,body.vscode-high-contrast .architecture-symbol-card,body.vscode-high-contrast-light .architecture-symbol-card,body.vscode-high-contrast .architecture-call-table,body.vscode-high-contrast-light .architecture-call-table{border-width:2px;border-color:var(--vscode-contrastBorder,var(--ring))}@media(max-width:760px){.architecture-shell{grid-template-rows:auto 1fr;grid-template-columns:1fr}.architecture-nav{border-right:0;border-bottom:1px solid var(--border);max-height:38vh}.architecture-main{padding:10px 10px 24px}.architecture-global-search{margin-bottom:14px}.architecture-section-heading{align-items:flex-start}.architecture-flow-grid,.architecture-symbol-grid{grid-template-columns:1fr}.architecture-flow-footer,.workbench-pagination{flex-direction:column;align-items:flex-start}.workbench-collection-toolbar{flex-direction:column;align-items:stretch}.workbench-search{width:100%;max-width:none}}.architecture-workspace{--architecture-border:var(--vscode-panel-border,var(--border));--architecture-surface:var(--vscode-editor-background,var(--background));--architecture-raised:var(--vscode-editorWidget-background,var(--vscode-sideBar-background,var(--card)));background:var(--architecture-surface);height:100vh;min-height:520px;color:var(--vscode-editor-foreground,var(--foreground));grid-template-columns:minmax(210px,240px) minmax(520px,1fr) minmax(300px,350px);display:grid;overflow:hidden}.architecture-workspace[data-inspector-open=false]{grid-template-columns:minmax(210px,240px) minmax(520px,1fr)}.architecture-rail,.architecture-inspector{background:var(--vscode-sideBar-background,var(--sidebar));min-width:0;min-height:0}.architecture-rail{border-right:1px solid var(--architecture-border);grid-template-rows:auto 1fr auto;display:grid}.architecture-rail-header,.architecture-inspector-header{border-bottom:1px solid var(--architecture-border);padding:16px}.architecture-rail-header>span,.architecture-inspector-header>span{color:var(--vscode-descriptionForeground,var(--muted-foreground));font:700 9px/1.2 var(--compass-font-mono);letter-spacing:.13em;text-transform:uppercase}.architecture-rail-header h1,.architecture-inspector-header h2{text-overflow:ellipsis;margin:7px 0 0;font-size:14px;font-weight:650;line-height:1.35;overflow:hidden}.architecture-rail-header p,.architecture-inspector-header p{color:var(--vscode-descriptionForeground,var(--muted-foreground));margin:5px 0 0;font-size:10px}.architecture-rail nav{min-height:0;padding:6px;overflow:auto}.architecture-rail nav>button{width:100%;color:inherit;text-align:left;background:0 0;border:1px solid #0000;border-radius:5px;grid-template-columns:18px minmax(0,1fr) auto;align-items:center;gap:7px;padding:8px;display:grid}.architecture-rail nav>button:hover,.architecture-rail nav>button:focus-visible{background:var(--vscode-list-hoverBackground,var(--workbench-hover))}.architecture-rail nav>button[aria-current=page]{border-color:var(--vscode-focusBorder,var(--ring))}@supports (color:color-mix(in lab,red,red)){.architecture-rail nav>button[aria-current=page]{border-color:color-mix(in srgb,var(--vscode-focusBorder,var(--ring)) 48%,transparent)}}.architecture-rail nav>button[aria-current=page]{background:var(--vscode-list-activeSelectionBackground,var(--vscode-sideBarSectionHeader-background,var(--sidebar-accent)));color:var(--vscode-list-activeSelectionForeground,inherit)}.architecture-rail nav>button[data-empty=true]{opacity:.57}.architecture-rail nav svg{width:14px;height:14px;color:var(--vscode-symbolIcon-moduleForeground,var(--compass-focus))}.architecture-rail nav strong,.architecture-rail nav small{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.architecture-rail nav strong{font-size:11px;font-weight:600}.architecture-rail nav small{color:var(--vscode-descriptionForeground,var(--muted-foreground));font:9px/1.35 var(--compass-font-mono);margin-top:2px}.architecture-rail nav i{background:var(--vscode-badge-background,var(--muted));min-width:24px;color:var(--vscode-badge-foreground,var(--muted-foreground));font:normal 9px/1.3 var(--compass-font-mono);text-align:center;border-radius:10px;padding:2px 5px}.architecture-scope-totals{border-top:1px solid var(--architecture-border);color:var(--vscode-descriptionForeground,var(--muted-foreground));text-align:center;grid-template-columns:repeat(3,1fr);padding:10px 6px;font-size:8px;display:grid}.architecture-scope-totals strong{color:var(--vscode-sideBar-foreground,var(--foreground));font:600 10px/1.2 var(--compass-font-mono);margin-bottom:2px;display:block}.architecture-stage{grid-template-rows:auto auto minmax(0,1fr);min-width:0;min-height:0;display:grid;overflow:hidden}.architecture-command-bar{border-bottom:1px solid var(--architecture-border);background:var(--architecture-surface);grid-template-columns:minmax(240px,1fr) auto auto 30px;align-items:center;gap:8px;padding:9px 12px;display:grid}.architecture-inspector-toggle{border:1px solid var(--architecture-border);background:var(--architecture-raised);width:30px;height:30px;color:var(--vscode-descriptionForeground,var(--muted-foreground));border-radius:4px;place-items:center;display:grid}.architecture-inspector-toggle:hover{background:var(--vscode-toolbar-hoverBackground,var(--workbench-hover));color:var(--foreground)}.architecture-inspector-toggle svg{width:14px;height:14px}.architecture-search{min-width:0;position:relative}.architecture-search>svg,.architecture-detail-filter>svg{z-index:1;width:13px;height:13px;color:var(--vscode-input-placeholderForeground,var(--muted-foreground));pointer-events:none;position:absolute;top:50%;left:9px;transform:translateY(-50%)}.architecture-search>input,.architecture-detail-filter>input,.architecture-evidence-filter select{border:1px solid var(--vscode-input-border,var(--architecture-border));background:var(--vscode-input-background,var(--input));width:100%;height:30px;color:var(--vscode-input-foreground,var(--foreground));font:11px/1.3 var(--vscode-font-family,system-ui);border-radius:4px;outline:none}.architecture-search>input,.architecture-detail-filter>input{padding:4px 72px 4px 29px}.architecture-search>input:focus,.architecture-detail-filter>input:focus,.architecture-evidence-filter select:focus{border-color:var(--vscode-focusBorder,var(--ring));outline:1px solid var(--vscode-focusBorder,var(--ring));outline-offset:-1px}.architecture-search>span{color:var(--vscode-descriptionForeground,var(--muted-foreground));font:9px/1.4 var(--compass-font-mono);position:absolute;top:8px;right:8px}.architecture-search-popover{z-index:30;border:1px solid var(--vscode-menu-border,var(--architecture-border));background:var(--vscode-menu-background,var(--popover));max-height:min(440px,70vh);box-shadow:0 8px 24px var(--vscode-widget-shadow,#00000047);border-radius:5px;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow:auto}.architecture-search-popover>button{width:100%;color:var(--vscode-menu-foreground,var(--foreground));text-align:left;background:0 0;border:0;padding:7px 10px;display:block}.architecture-search-popover>button:hover,.architecture-search-popover>button:focus-visible{background:var(--vscode-menu-selectionBackground,var(--accent));color:var(--vscode-menu-selectionForeground,var(--accent-foreground))}.architecture-search-popover strong,.architecture-search-popover small{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.architecture-search-popover strong{font-size:11px}.architecture-search-popover small{opacity:.75;margin-top:2px;font-size:9px}.architecture-search-popover p{color:var(--muted-foreground);margin:0;padding:16px;font-size:11px}.architecture-directory-pagination{border-top:1px solid var(--architecture-border);font:9px/1.2 var(--compass-font-mono);justify-content:space-between;align-items:center;gap:8px;padding:6px 8px;display:flex}.architecture-directory-pagination button{border:1px solid var(--architecture-border);color:inherit;background:0 0;border-radius:4px;padding:3px 7px}.architecture-scope-switch{border:1px solid var(--architecture-border);border-radius:4px;display:flex;overflow:hidden}.architecture-scope-switch button{min-height:28px;color:var(--vscode-descriptionForeground,var(--muted-foreground));font:10px/1.2 var(--compass-font-mono);background:0 0;border:0;padding:4px 9px}.architecture-scope-switch button+button{border-left:1px solid var(--architecture-border)}.architecture-scope-switch button[aria-pressed=true]{background:var(--vscode-button-secondaryBackground,var(--accent));color:var(--vscode-button-secondaryForeground,var(--accent-foreground))}.architecture-evidence-filter{align-items:center;gap:5px;display:flex}.architecture-evidence-filter>svg{width:13px;height:13px;color:var(--vscode-descriptionForeground,var(--muted-foreground))}.architecture-evidence-filter select{width:auto;min-width:110px;padding:3px 22px 3px 7px}.architecture-context-strip{border-bottom:1px solid var(--architecture-border);background:var(--vscode-breadcrumb-background,var(--architecture-raised));min-height:34px;color:var(--vscode-descriptionForeground,var(--muted-foreground));font:9px/1.3 var(--compass-font-mono);flex-wrap:wrap;align-items:center;gap:6px 14px;padding:6px 12px;display:flex}.architecture-context-strip strong{color:var(--vscode-foreground,var(--foreground));font-weight:600}.architecture-context-strip button{border:1px solid var(--architecture-border);color:var(--vscode-textLink-foreground,var(--primary));font:inherit;cursor:pointer;background:0 0;border-radius:4px;padding:1px 5px}.architecture-quality-status{border:1px solid var(--architecture-border);text-transform:capitalize;border-radius:999px;padding:2px 6px}.architecture-quality-status[data-status=good]{color:var(--vscode-testing-iconPassed,var(--success))}.architecture-quality-status[data-status=degraded]{color:var(--vscode-editorWarning-foreground,var(--warning))}.architecture-quality-status[data-status=insufficient]{color:var(--vscode-editorError-foreground,var(--destructive))}.architecture-coverage-warning{color:var(--vscode-editorWarning-foreground,var(--warning));align-items:center;gap:4px;display:inline-flex}.architecture-omitted-selection{border:1px solid var(--compass-border);color:var(--compass-muted);background:var(--compass-surface-raised);border-radius:8px;margin:12px 14px 0;padding:8px 10px}@supports (color:color-mix(in lab,red,red)){.architecture-omitted-selection{background:color-mix(in srgb,var(--compass-surface-raised) 88%,transparent)}}.architecture-coverage-warning svg{width:12px;height:12px}.architecture-map-panel{border:1px solid var(--architecture-border);background:var(--architecture-raised);border-radius:10px;grid-template-rows:auto minmax(0,1fr) auto;min-width:0;min-height:0;margin:clamp(14px,2vw,24px);display:grid;position:relative;overflow:hidden;box-shadow:0 12px 32px #0000001a}.architecture-map-header{border-bottom:1px solid var(--architecture-border);background:var(--architecture-raised);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px 24px;min-width:0;padding:14px 16px;display:flex}.architecture-map-intro{gap:3px;min-width:min(100%,260px);display:grid}.architecture-map-intro>span{color:var(--vscode-descriptionForeground,var(--muted-foreground));font:700 8px/1.2 var(--compass-font-mono);letter-spacing:.14em;text-transform:uppercase}.architecture-map-intro>strong{overflow-wrap:anywhere;font-size:12px;font-weight:650;line-height:1.35}.architecture-map-intro>small{max-width:560px;color:var(--vscode-descriptionForeground,var(--muted-foreground));font-size:9.5px;line-height:1.45}.architecture-map-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;min-width:0;display:flex}.architecture-map-viewport{overscroll-behavior:contain;scrollbar-color:var(--vscode-scrollbarSlider-background,var(--muted)) transparent;scrollbar-gutter:stable;min-width:0;height:auto;min-height:0;box-shadow:inset -26px 0 22px -24px var(--foreground);position:relative;overflow:auto}@supports (color:color-mix(in lab,red,red)){.architecture-map-viewport{box-shadow:inset -26px 0 22px -24px color-mix(in srgb,var(--foreground) 30%,transparent)}}.architecture-map-viewport{background:linear-gradient(var(--vscode-editorRuler-foreground,var(--border)) 1px,transparent 1px),linear-gradient(90deg,var(--vscode-editorRuler-foreground,var(--border)) 1px,transparent 1px),var(--architecture-surface)}@supports (color:color-mix(in lab,red,red)){.architecture-map-viewport{background:linear-gradient(color-mix(in srgb,var(--vscode-editorRuler-foreground,var(--border)) 9%,transparent) 1px,transparent 1px),linear-gradient(90deg,color-mix(in srgb,var(--vscode-editorRuler-foreground,var(--border)) 9%,transparent) 1px,transparent 1px),var(--architecture-surface)}}.architecture-map-viewport{background-size:32px 32px}.architecture-map-viewport[data-scroll-position=end],.architecture-map-viewport[data-scroll-position=none]{box-shadow:none}.architecture-map-canvas{min-width:100%;min-height:100%}.architecture-route-mode{border:1px solid var(--architecture-border);background:var(--architecture-surface);border-radius:5px;display:flex;overflow:hidden}.architecture-route-mode button{min-width:66px;height:27px;color:var(--vscode-descriptionForeground,var(--muted-foreground));font:9px/1 var(--compass-font-mono);background:0 0;border:0;padding:0 9px}.architecture-route-mode button+button{border-left:1px solid var(--architecture-border)}.architecture-route-mode button:hover{background:var(--vscode-toolbar-hoverBackground,var(--workbench-hover));color:var(--vscode-foreground,var(--foreground))}.architecture-route-mode button[aria-pressed=true]{background:var(--vscode-list-activeSelectionBackground,var(--accent))}@supports (color:color-mix(in lab,red,red)){.architecture-route-mode button[aria-pressed=true]{background:color-mix(in srgb,var(--vscode-list-activeSelectionBackground,var(--accent)) 72%,var(--architecture-raised))}}.architecture-route-mode button[aria-pressed=true]{color:var(--vscode-list-activeSelectionForeground,var(--foreground))}.architecture-map-toolbar{border:1px solid var(--architecture-border);background:var(--architecture-surface);border-radius:5px;align-items:center;display:flex;overflow:hidden}.architecture-map-toolbar button{width:28px;height:27px;color:var(--foreground);background:0 0;border:0;place-items:center;display:grid}.architecture-map-toolbar button:hover{background:var(--workbench-hover)}.architecture-map-toolbar button:disabled{opacity:.38;pointer-events:none}.architecture-map-toolbar button+button,.architecture-map-toolbar span+button{border-left:1px solid var(--architecture-border)}.architecture-map-toolbar svg{width:13px;height:13px}.architecture-map-toolbar span{min-width:40px;color:var(--muted-foreground);font:9px/27px var(--compass-font-mono);text-align:center;padding:0 5px}.architecture-map{cursor:grab;touch-action:none;width:100%;height:100%;display:block}.architecture-map:active{cursor:grabbing}.architecture-arrow-default path{fill:var(--vscode-textLink-foreground,var(--compass-focus))}.architecture-arrow-incoming path{fill:var(--vscode-symbolIcon-interfaceForeground,#b7a1ff)}.architecture-arrow-outgoing path{fill:var(--vscode-charts-blue,#49a6ff)}.architecture-map-lanes{pointer-events:none}.architecture-map-lanes rect{fill:var(--architecture-raised)}@supports (color:color-mix(in lab,red,red)){.architecture-map-lanes rect{fill:color-mix(in srgb,var(--architecture-raised) 8%,transparent)}}.architecture-map-lanes rect{stroke:var(--architecture-border)}@supports (color:color-mix(in lab,red,red)){.architecture-map-lanes rect{stroke:color-mix(in srgb,var(--architecture-border) 20%,transparent)}}.architecture-map-lanes rect{stroke-width:1px}.architecture-map-lanes text{fill:var(--vscode-descriptionForeground,var(--muted-foreground))}@supports (color:color-mix(in lab,red,red)){.architecture-map-lanes text{fill:color-mix(in srgb,var(--vscode-descriptionForeground,var(--muted-foreground)) 72%,transparent)}}.architecture-map-lanes text{font:700 8px/1 var(--compass-font-mono);letter-spacing:.12em;text-anchor:middle;text-transform:uppercase}.architecture-map-lanes .architecture-map-direction{fill:var(--vscode-descriptionForeground,var(--muted-foreground))}@supports (color:color-mix(in lab,red,red)){.architecture-map-lanes .architecture-map-direction{fill:color-mix(in srgb,var(--vscode-descriptionForeground,var(--muted-foreground)) 52%,transparent)}}.architecture-map-lanes .architecture-map-direction{letter-spacing:.16em;text-anchor:start;font-size:7px}.architecture-route-line{fill:none;stroke:var(--vscode-textLink-foreground,var(--compass-focus));opacity:var(--architecture-route-opacity,.2);stroke-linecap:round;stroke-linejoin:round;transition:opacity .14s,stroke-width .14s}.architecture-routes g[data-evidence=inferred] .architecture-route-line{stroke:var(--vscode-editorWarning-foreground,var(--warning));stroke-dasharray:6 5}.architecture-routes g[data-direction=backward] .architecture-route-line{stroke-dasharray:3 5}.architecture-route-hit{fill:none;stroke:#0000;stroke-width:16px;cursor:pointer}.architecture-routes g[data-selected=true] .architecture-route-line{opacity:1;filter:drop-shadow(0 0 3px var(--compass-focus))}@supports (color:color-mix(in lab,red,red)){.architecture-routes g[data-selected=true] .architecture-route-line{filter:drop-shadow(0 0 3px color-mix(in srgb,var(--compass-focus) 55%,transparent))}}.architecture-routes g[data-focus-direction=incoming] .architecture-route-line{stroke:var(--vscode-symbolIcon-interfaceForeground,#b7a1ff);opacity:.86}.architecture-routes g[data-focus-direction=outgoing] .architecture-route-line{stroke:var(--vscode-charts-blue,#49a6ff);opacity:.9}.architecture-routes g[data-dimmed=true]{opacity:.09}.architecture-map-panel[data-route-mode=key] .architecture-routes g[data-dimmed=true]{opacity:.38}.architecture-map-nodes g[data-dimmed=true]{opacity:.27}.architecture-map-panel[data-route-mode=key] .architecture-map-nodes g[data-dimmed=true]{opacity:.48}.architecture-routes g:focus-visible .architecture-route-line{stroke:var(--vscode-focusBorder,var(--ring));opacity:1}.architecture-map-nodes g{cursor:grab;touch-action:none;transition:opacity .12s}.architecture-map-nodes g[data-dragging=true]{cursor:grabbing}.architecture-map-node-card{fill:var(--vscode-editorWidget-background,var(--card));stroke:var(--vscode-symbolIcon-moduleForeground,var(--compass-focus))}@supports (color:color-mix(in lab,red,red)){.architecture-map-node-card{stroke:color-mix(in srgb,var(--vscode-symbolIcon-moduleForeground,var(--compass-focus)) 25%,var(--architecture-border))}}.architecture-map-node-card{stroke-width:1px}.architecture-map-node-shadow{fill:#0000002b;stroke:none;transform:translateY(3px)}.architecture-map-node-accent{fill:var(--vscode-symbolIcon-moduleForeground,var(--compass-focus));opacity:.62;pointer-events:none}.architecture-map-nodes g:hover .architecture-map-node-card,.architecture-map-nodes g:focus-visible .architecture-map-node-card,.architecture-map-nodes g[data-selected=true] .architecture-map-node-card,.architecture-map-nodes g[data-dragging=true] .architecture-map-node-card{fill:var(--vscode-list-activeSelectionBackground,var(--accent))}@supports (color:color-mix(in lab,red,red)){.architecture-map-nodes g:hover .architecture-map-node-card,.architecture-map-nodes g:focus-visible .architecture-map-node-card,.architecture-map-nodes g[data-selected=true] .architecture-map-node-card,.architecture-map-nodes g[data-dragging=true] .architecture-map-node-card{fill:color-mix(in srgb,var(--vscode-list-activeSelectionBackground,var(--accent)) 38%,var(--vscode-editorWidget-background,var(--card)))}}.architecture-map-nodes g:hover .architecture-map-node-card,.architecture-map-nodes g:focus-visible .architecture-map-node-card,.architecture-map-nodes g[data-selected=true] .architecture-map-node-card,.architecture-map-nodes g[data-dragging=true] .architecture-map-node-card{stroke:var(--vscode-focusBorder,var(--ring));stroke-width:1.6px}.architecture-map-nodes g[data-selected=true] .architecture-map-node-accent,.architecture-map-nodes g[data-dragging=true] .architecture-map-node-accent{opacity:1}.architecture-map-nodes g[data-dragging=true] .architecture-map-node-shadow{transform:translateY(7px)}.architecture-map-node-name{fill:var(--vscode-editor-foreground,var(--foreground));font:650 12px/1.2 var(--vscode-font-family,system-ui);pointer-events:none}.architecture-map-node-meta{fill:var(--vscode-descriptionForeground,var(--muted-foreground));font:8.5px/1.2 var(--compass-font-mono);pointer-events:none}.architecture-map-node-grip{fill:var(--vscode-descriptionForeground,var(--muted-foreground));opacity:.45;pointer-events:none}.architecture-map-nodes g:hover .architecture-map-node-grip,.architecture-map-nodes g[data-dragging=true] .architecture-map-node-grip{opacity:.9}.architecture-map-legend{min-width:0;color:var(--muted-foreground);font:8px/1.2 var(--compass-font-mono);flex-wrap:wrap;gap:7px 12px;display:flex}.architecture-map-legend span{align-items:center;gap:4px;display:inline-flex}.architecture-map-legend button{color:var(--vscode-textLink-foreground,var(--workbench-link));font:inherit;background:0 0;border:0;padding:0}.architecture-map-legend button:hover{text-decoration:underline}.architecture-map-legend i,.architecture-map-legend svg{background:var(--vscode-textLink-foreground,var(--compass-focus));flex:none;width:18px;height:2px}.architecture-map-legend svg{background:0 0;width:11px;height:11px}.architecture-map-legend i[data-evidence=inferred]{background:repeating-linear-gradient(90deg,var(--vscode-editorWarning-foreground,var(--warning)) 0 4px,transparent 4px 7px)}.architecture-map-legend i[data-direction=incoming]{background:var(--vscode-symbolIcon-interfaceForeground,#b7a1ff)}.architecture-map-legend i[data-direction=outgoing]{background:var(--vscode-charts-blue,#49a6ff)}.architecture-map-legend i[data-direction=bidirectional]{width:18px;height:12px;color:var(--vscode-textLink-foreground,var(--compass-focus));font:normal 10px/1 var(--compass-font-mono);background:0 0;place-items:center;display:grid}.architecture-map-legend i[data-direction=feedback]{background:repeating-linear-gradient(90deg,var(--vscode-textLink-foreground,var(--compass-focus)) 0 3px,transparent 3px 6px)}.architecture-map-table{flex:none;min-width:0;font-size:9px}.architecture-map-table summary{cursor:pointer;color:var(--muted-foreground);white-space:nowrap;padding:3px 0}.architecture-map-table[open]>div{z-index:8;border:1px solid var(--architecture-border);background:var(--architecture-raised);border-radius:6px;width:min(620px,100% - 24px);max-height:280px;position:absolute;bottom:42px;right:12px;overflow:auto;box-shadow:0 8px 24px #00000038}.architecture-map-table table{border-collapse:collapse;table-layout:fixed;width:100%}.architecture-map-table th,.architecture-map-table td{border-top:1px solid var(--architecture-border);overflow-wrap:anywhere;text-align:left;padding:5px 7px}.architecture-map-empty{min-width:min(100%,760px);min-height:100%;color:var(--muted-foreground);text-align:center;align-content:center;place-items:center;gap:5px;padding:30px;font-size:11px;display:grid}.architecture-map-empty strong{color:var(--foreground);font-size:12px}.architecture-map-footer{border-top:1px solid var(--architecture-border);background:var(--architecture-raised);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 18px;min-width:0;min-height:40px;padding:8px 12px;display:flex;position:relative}.architecture-inspector{border-left:1px solid var(--architecture-border);grid-template-rows:auto auto auto 1fr auto;display:grid}.architecture-route-metrics,.architecture-evidence-counts{color:var(--muted-foreground);font:9px/1.3 var(--compass-font-mono);flex-wrap:wrap;gap:5px 12px;margin-top:9px;display:flex}.architecture-route-metrics span{align-items:center;gap:3px;display:inline-flex}.architecture-route-metrics svg{width:11px;height:11px}.architecture-inspector-tabs{border-bottom:1px solid var(--architecture-border);display:flex}.architecture-inspector-tabs button{min-height:32px;color:var(--muted-foreground);background:0 0;border:0;flex:1;font-size:10px;position:relative}.architecture-inspector-tabs button[aria-selected=true]{color:var(--foreground)}.architecture-inspector-tabs button[aria-selected=true]:after{background:var(--vscode-focusBorder,var(--ring));content:"";height:2px;position:absolute;bottom:-1px;left:10px;right:10px}.architecture-detail-filter{border-bottom:1px solid var(--architecture-border);padding:8px 10px;display:block;position:relative}.architecture-detail-filter>svg{left:19px}.architecture-inspector-scroll{min-height:0;padding:8px;overflow:auto}.architecture-symbol-list,.architecture-call-list{gap:6px;display:grid}.architecture-symbol-list article,.architecture-call-list article{border:1px solid var(--architecture-border);background:var(--vscode-editorWidget-background,var(--card));border-radius:5px;min-width:0;padding:9px}.architecture-symbol-list article{grid-template-columns:16px minmax(0,1fr);gap:7px;display:grid}.architecture-symbol-list svg{width:14px;height:14px;color:var(--vscode-symbolIcon-functionForeground,var(--compass-focus))}.architecture-symbol-list strong,.architecture-symbol-list small,.architecture-symbol-list article button,.architecture-symbol-list article span{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.architecture-symbol-list strong,.architecture-call-list strong{font-size:10px;font-weight:600}.architecture-symbol-list small,.architecture-call-list small{color:var(--muted-foreground);font:8.5px/1.35 var(--compass-font-mono);margin-top:2px}.architecture-symbol-list article button,.architecture-symbol-list article span{width:100%;color:var(--vscode-textLink-foreground,var(--workbench-link));font:8.5px/1.3 var(--compass-font-mono);text-align:left;background:0 0;border:0;margin-top:7px;padding:0}.architecture-symbol-list article span{color:var(--vscode-disabledForeground,var(--muted-foreground))}.architecture-call-list article>div:first-child{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:5px;display:grid}.architecture-call-list article>div:first-child strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.architecture-call-list article>div:first-child span{color:var(--vscode-textLink-foreground,var(--compass-focus))}.architecture-call-list article>div:last-child{gap:8px;margin-top:7px;display:flex}.architecture-call-list button{color:var(--vscode-textLink-foreground,var(--workbench-link));background:0 0;border:0;padding:0;font-size:8.5px}.architecture-call-list button:hover,.architecture-symbol-list button:hover{text-decoration:underline}.architecture-inspector>.workbench-pagination{border-top:1px solid var(--architecture-border);padding:7px 9px}.architecture-inspector-empty{min-height:160px;color:var(--muted-foreground);text-align:center;place-items:center;padding:24px;font-size:10px;line-height:1.5;display:grid}.architecture-loading-rows{gap:7px;display:grid}.architecture-loading-rows i{border:1px solid var(--architecture-border);background:linear-gradient(90deg,var(--architecture-raised),var(--architecture-raised),var(--architecture-raised));border-radius:5px;height:58px}@supports (color:color-mix(in lab,red,red)){.architecture-loading-rows i{background:linear-gradient(90deg,var(--architecture-raised),color-mix(in srgb,var(--architecture-raised) 72%,var(--foreground)),var(--architecture-raised))}}.architecture-loading-rows i{background-size:240% 100%;animation:1.3s infinite architecture-row-load}@keyframes architecture-row-load{to{background-position:-140% 0}}.architecture-workspace button:focus-visible,.architecture-workspace [role=button]:focus-visible,.architecture-workspace select:focus-visible,.architecture-workspace input:focus-visible,.architecture-workspace summary:focus-visible{outline:2px solid var(--vscode-focusBorder,var(--ring));outline-offset:-1px}body.vscode-high-contrast .architecture-map-node-card,body.vscode-high-contrast-light .architecture-map-node-card,body.vscode-high-contrast .architecture-map-panel,body.vscode-high-contrast-light .architecture-map-panel,body.vscode-high-contrast .architecture-symbol-list article,body.vscode-high-contrast-light .architecture-symbol-list article,body.vscode-high-contrast .architecture-call-list article,body.vscode-high-contrast-light .architecture-call-list article{stroke:var(--vscode-contrastBorder,var(--ring));border-color:var(--vscode-contrastBorder,var(--ring));stroke-width:2px}body.vscode-high-contrast .architecture-map-panel,body.vscode-high-contrast-light .architecture-map-panel{box-shadow:none;border-width:2px}@media(max-width:1100px){.architecture-workspace{grid-template-columns:200px minmax(440px,1fr) 300px}.architecture-workspace[data-inspector-open=false]{grid-template-columns:200px minmax(440px,1fr)}.architecture-command-bar{grid-template-columns:minmax(220px,1fr) auto 30px}.architecture-evidence-filter{grid-area:2/2}.architecture-inspector-toggle{grid-area:1/3}}@media(max-width:1180px){.architecture-workspace{grid-template-rows:minmax(650px,78vh) auto;grid-template-columns:minmax(190px,220px) minmax(0,1fr);height:auto;min-height:100vh;overflow:auto}.architecture-workspace[data-inspector-open=false]{grid-template-columns:minmax(190px,220px) minmax(0,1fr)}.architecture-rail{grid-row:1/span 2}.architecture-stage{min-height:650px}.architecture-inspector{border-top:1px solid var(--architecture-border);border-left:0;height:min(560px,72vh);min-height:440px;overflow:hidden}}@media(max-width:620px){.architecture-workspace{display:block}.architecture-rail{border-right:0;border-bottom:1px solid var(--architecture-border);max-height:310px}.architecture-rail nav{max-height:190px}.architecture-stage{min-height:650px}.architecture-command-bar{grid-template-columns:1fr}.architecture-evidence-filter,.architecture-inspector-toggle{grid-area:auto}.architecture-map-legend{display:none}}@media(prefers-reduced-motion:reduce){.architecture-route-line,.architecture-map-nodes g{transition:none}.architecture-loading-rows i{animation:none}}.call-guide-shell{box-sizing:border-box;background:radial-gradient(circle at 77% 8%,var(--compass-focus),transparent 28rem),var(--vscode-editor-background,var(--background));min-height:100vh;padding:clamp(28px,5vw,72px) clamp(20px,5vw,72px) 40px;position:relative;overflow:auto}@supports (color:color-mix(in lab,red,red)){.call-guide-shell{background:radial-gradient(circle at 77% 8%,color-mix(in srgb,var(--compass-focus) 9%,transparent),transparent 28rem),var(--vscode-editor-background,var(--background))}}.call-guide-shell{isolation:isolate}.call-guide-grid{z-index:-1;opacity:.19;background-image:linear-gradient(var(--compass-grid) 1px,transparent 1px),linear-gradient(90deg,var(--compass-grid) 1px,transparent 1px);pointer-events:none;background-size:32px 32px;position:fixed;inset:0;-webkit-mask-image:linear-gradient(#000,#0000 68%);mask-image:linear-gradient(#000,#0000 68%)}.call-guide-hero,.call-guide-section,.call-guide-footer{width:min(1120px,100%);margin-inline:auto}.call-guide-hero{border-bottom:1px solid var(--vscode-panel-border,var(--border));grid-template-columns:minmax(300px,.9fr) minmax(420px,1.1fr);align-items:center;gap:clamp(40px,7vw,96px);min-height:330px;padding-bottom:clamp(36px,5vw,64px);display:grid}.call-guide-kicker,.call-guide-overline,.call-guide-route-label,.call-guide-route-readout,.call-guide-shortcut,.call-guide-coverage-badge{font-family:var(--compass-font-mono);text-transform:uppercase;letter-spacing:.12em}.call-guide-kicker{color:var(--vscode-textLink-foreground,var(--compass-focus));align-items:center;gap:8px;font-size:10px;font-weight:700;display:inline-flex}.call-guide-kicker svg{width:14px;height:14px}.call-guide-intro h1{max-width:650px;color:var(--vscode-editor-foreground,var(--foreground));letter-spacing:-.052em;text-wrap:balance;margin:18px 0 0;font-size:clamp(34px,5vw,62px);font-weight:620;line-height:.98}.call-guide-lead{max-width:580px;color:var(--vscode-descriptionForeground,var(--muted-foreground));margin:22px 0 0;font-size:clamp(14px,1.7vw,17px);line-height:1.65}.call-guide-source{border:1px solid var(--vscode-panel-border,var(--border));background:var(--vscode-editorWidget-background,var(--card));border-radius:4px;align-items:center;gap:8px;max-width:min(100%,560px);min-height:34px;margin-top:24px;padding:0 10px;display:inline-flex}@supports (color:color-mix(in lab,red,red)){.call-guide-source{background:color-mix(in srgb,var(--vscode-editorWidget-background,var(--card)) 88%,transparent)}}.call-guide-source{color:var(--vscode-descriptionForeground,var(--muted-foreground));font:11px/1.3 var(--compass-font-mono)}.call-guide-lookup{max-width:620px;margin-top:26px;position:relative}.call-guide-lookup>label{color:var(--vscode-textLink-foreground,var(--compass-focus));font:700 9px/1 var(--compass-font-mono);letter-spacing:.12em;text-transform:uppercase;margin-bottom:8px;display:block}.call-guide-lookup-row{border:1px solid var(--vscode-input-border,var(--border));background:var(--vscode-input-background,var(--card));border-radius:5px;grid-template-columns:minmax(0,1fr) auto;display:grid;box-shadow:0 12px 32px #0000001f}.call-guide-lookup-row:focus-within{border-color:var(--vscode-focusBorder,var(--compass-focus));box-shadow:0 0 0 1px var(--vscode-focusBorder,var(--compass-focus)),0 12px 32px #0000001f}.call-guide-lookup-input{grid-template-columns:auto minmax(0,1fr);align-items:center;gap:9px;min-width:0;padding-inline:12px;display:grid}.call-guide-lookup-input svg{width:15px;height:15px;color:var(--vscode-textLink-foreground,var(--compass-focus))}.call-guide-lookup-input input{min-width:0;height:42px;color:var(--vscode-input-foreground,var(--foreground));font:12px/1 var(--compass-font-mono);background:0 0;border:0;outline:0;padding:0}.call-guide-lookup-input input::placeholder{color:var(--vscode-input-placeholderForeground,var(--muted-foreground))}.call-guide-lookup-row>button{background:var(--vscode-button-background,var(--compass-focus));color:var(--vscode-button-foreground,var(--primary-foreground));font:600 11px/1 var(--compass-font-sans);border:0;border-radius:3px;outline:0;align-items:center;gap:8px;margin:3px;padding:0 13px;display:inline-flex}.call-guide-lookup-row>button:hover:not(:disabled){background:var(--vscode-button-hoverBackground,var(--primary))}.call-guide-lookup-row>button:focus-visible,.call-guide-lookup-directions button:focus-visible{outline:2px solid var(--vscode-focusBorder,var(--ring));outline-offset:2px}.call-guide-lookup-row>button:disabled{cursor:not-allowed;opacity:.5}.call-guide-lookup-row>button svg{width:13px;height:13px}.call-guide-suggestions{border:1px solid var(--vscode-editorSuggestWidget-border,var(--vscode-panel-border,var(--border)));background:var(--vscode-editorSuggestWidget-background,var(--card));max-height:230px;color:var(--vscode-editorSuggestWidget-foreground,var(--foreground));border-radius:4px;margin-top:4px;display:grid;overflow-y:auto;box-shadow:0 12px 32px #00000029}.call-guide-suggestions-label,.call-guide-suggestions-hint{color:var(--vscode-descriptionForeground,var(--muted-foreground));font:9px/1.25 var(--compass-font-mono);padding-block:6px;padding-inline:10px}.call-guide-suggestions-label{letter-spacing:.08em;text-transform:uppercase}.call-guide-suggestions-hint{border-top:1px solid var(--vscode-editorSuggestWidget-border,var(--border));text-align:end}.call-guide-suggestions>button{min-width:0;color:inherit;text-align:start;background:0 0;border:0;outline:0;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:16px;padding-block:8px;padding-inline:10px;display:grid}.call-guide-suggestions>button:hover,.call-guide-suggestions>button[aria-selected=true]{background:var(--vscode-editorSuggestWidget-selectedBackground,var(--accent));color:var(--vscode-editorSuggestWidget-selectedForeground,var(--foreground))}.call-guide-suggestions>button:focus-visible{outline:2px solid var(--vscode-focusBorder,var(--ring));outline-offset:-2px}.call-guide-suggestions>button>span{min-width:0;font:11px/1.35 var(--compass-font-mono);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.call-guide-suggestions>button>small{color:var(--vscode-descriptionForeground,var(--muted-foreground));text-overflow:ellipsis;white-space:nowrap;font-size:10px;overflow:hidden}.call-guide-completion-status{border:1px solid var(--vscode-editorSuggestWidget-border,var(--vscode-panel-border,var(--border)));background:var(--vscode-editorSuggestWidget-background,var(--card));min-width:0;min-height:34px;color:var(--vscode-descriptionForeground,var(--muted-foreground));border-radius:4px;justify-content:space-between;align-items:center;gap:12px;margin-top:4px;padding-block:7px;padding-inline:10px;font-size:10px;display:flex}.call-guide-completion-status>span{overflow-wrap:anywhere;min-width:0}.call-guide-completion-status>button{border:1px solid var(--vscode-button-border,var(--border));background:var(--vscode-button-secondaryBackground,var(--secondary));color:var(--vscode-button-secondaryForeground,var(--secondary-foreground));font:inherit;border-radius:3px;flex:none;padding-block:3px;padding-inline:7px}.call-guide-completion-status>button:hover{background:var(--vscode-button-secondaryHoverBackground,var(--workbench-hover))}.call-guide-lookup-directions{border:0;align-items:center;gap:3px;margin:8px 0 0;padding:0;display:flex}.call-guide-lookup-directions legend{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.call-guide-lookup-directions button{min-height:25px;color:var(--vscode-descriptionForeground,var(--muted-foreground));font:9px/1 var(--compass-font-mono);text-transform:uppercase;background:0 0;border:1px solid #0000;border-radius:3px;outline:0;padding:0 9px}.call-guide-lookup-directions button:hover,.call-guide-lookup-directions button[aria-pressed=true]{border-color:var(--vscode-panel-border,var(--border));background:var(--vscode-list-hoverBackground,var(--workbench-hover));color:var(--vscode-editor-foreground,var(--foreground))}.call-guide-lookup-directions button[aria-pressed=true]{border-color:var(--vscode-focusBorder,var(--compass-focus))}@supports (color:color-mix(in lab,red,red)){.call-guide-lookup-directions button[aria-pressed=true]{border-color:color-mix(in srgb,var(--vscode-focusBorder,var(--compass-focus)) 65%,var(--border))}}.call-guide-lookup-directions>span{color:var(--vscode-disabledForeground,var(--compass-faint));font:9px/1 var(--compass-font-mono);margin-left:auto}.call-guide-source>span:not(.call-guide-source-light){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.call-guide-source>svg{flex:none;width:14px;height:14px}.call-guide-source code{border-left:1px solid var(--vscode-panel-border,var(--border));color:var(--vscode-textLink-foreground,var(--compass-focus));font:inherit;flex:none;margin-left:3px;padding-left:9px}.call-guide-source-light{background:var(--vscode-disabledForeground,var(--compass-faint));border-radius:50%;flex:none;width:6px;height:6px}.call-guide-source[data-ready=true] .call-guide-source-light{background:var(--vscode-testing-iconPassed,var(--compass-success));box-shadow:0 0 9px var(--vscode-testing-iconPassed,var(--compass-success))}@supports (color:color-mix(in lab,red,red)){.call-guide-source[data-ready=true] .call-guide-source-light{box-shadow:0 0 9px color-mix(in srgb,var(--vscode-testing-iconPassed,var(--compass-success)) 60%,transparent)}}.call-guide-route{border:1px solid var(--vscode-panel-border,var(--border));background:linear-gradient(135deg,var(--vscode-editorWidget-background,var(--card)),var(--vscode-editor-background,var(--background)));border-radius:8px;padding:16px;position:relative;overflow:hidden}@supports (color:color-mix(in lab,red,red)){.call-guide-route{background:linear-gradient(135deg,color-mix(in srgb,var(--vscode-editorWidget-background,var(--card)) 94%,transparent),color-mix(in srgb,var(--vscode-editor-background,var(--background)) 82%,transparent))}}.call-guide-route{box-shadow:0 24px 70px #00000038}.call-guide-route:before{content:"";border:1px solid var(--compass-focus);width:230px;height:230px;position:absolute;top:46%;left:50%}@supports (color:color-mix(in lab,red,red)){.call-guide-route:before{border:1px solid color-mix(in srgb,var(--compass-focus) 14%,transparent)}}.call-guide-route:before{box-shadow:0 0 0 44px var(--compass-focus),0 0 0 88px var(--compass-focus);border-radius:50%;transform:translate(-50%,-50%)}@supports (color:color-mix(in lab,red,red)){.call-guide-route:before{box-shadow:0 0 0 44px color-mix(in srgb,var(--compass-focus) 3%,transparent),0 0 0 88px color-mix(in srgb,var(--compass-focus) 2%,transparent)}}.call-guide-route:before{pointer-events:none}.call-guide-route-label,.call-guide-route-readout{z-index:2;color:var(--vscode-disabledForeground,var(--compass-faint));justify-content:space-between;font-size:9px;display:flex;position:relative}.call-guide-route-label code{color:var(--vscode-textLink-foreground,var(--compass-focus));font:inherit;text-transform:none}.call-guide-route-stage{z-index:1;grid-template-columns:repeat(3,minmax(0,1fr));align-items:center;gap:13%;min-height:226px;display:grid;position:relative}.call-guide-route-node{border:1px solid var(--vscode-panel-border,var(--border));background:var(--vscode-editor-background,var(--background));border-radius:5px;flex-direction:column;gap:4px;min-width:0;padding:12px;display:flex;position:relative;box-shadow:0 12px 32px #0003}.call-guide-route-node>span{color:var(--vscode-descriptionForeground,var(--muted-foreground));font:8px/1 var(--compass-font-mono);letter-spacing:.12em}.call-guide-route-node strong{color:var(--vscode-editor-foreground,var(--foreground));font:600 11px/1.3 var(--compass-font-mono);text-overflow:ellipsis;overflow:hidden}.call-guide-route-node small{color:var(--vscode-descriptionForeground,var(--muted-foreground));text-overflow:ellipsis;white-space:nowrap;font-size:9px;overflow:hidden}.call-guide-route-current{border-color:var(--vscode-focusBorder,var(--compass-focus));background:var(--vscode-focusBorder,var(--compass-focus));align-items:center;padding-block:17px}@supports (color:color-mix(in lab,red,red)){.call-guide-route-current{background:color-mix(in srgb,var(--vscode-focusBorder,var(--compass-focus)) 9%,var(--vscode-editor-background,var(--background)))}}.call-guide-route-current{text-align:center;box-shadow:0 0 0 1px var(--compass-focus),0 15px 40px var(--compass-focus)}@supports (color:color-mix(in lab,red,red)){.call-guide-route-current{box-shadow:0 0 0 1px color-mix(in srgb,var(--compass-focus) 16%,transparent),0 15px 40px color-mix(in srgb,var(--compass-focus) 14%,transparent)}}.call-guide-route-current>svg{width:17px;height:17px;color:var(--vscode-textLink-foreground,var(--compass-focus));margin-bottom:3px}.call-guide-route-line{z-index:-1;background:var(--compass-focus);width:32%;height:1px;position:absolute;top:50%;overflow:hidden}@supports (color:color-mix(in lab,red,red)){.call-guide-route-line{background:color-mix(in srgb,var(--compass-focus) 44%,var(--border))}}.call-guide-route-line-in{left:18%}.call-guide-route-line-out{right:18%}.call-guide-route-line i{background:var(--vscode-focusBorder,var(--compass-focus));width:5px;height:5px;box-shadow:0 0 9px var(--vscode-focusBorder,var(--compass-focus));border-radius:50%;animation:2.2s linear infinite call-guide-trace;position:absolute;top:-2px}.call-guide-route-line-out i{animation-delay:1.1s}@keyframes call-guide-trace{0%{left:-8px}to{left:calc(100% + 8px)}}.call-guide-route-readout{border-top:1px solid var(--vscode-panel-border,var(--border));letter-spacing:.08em;padding-top:11px}.call-guide-section{border-bottom:1px solid var(--vscode-panel-border,var(--border));padding-block:clamp(34px,5vw,58px)}.call-guide-heading{justify-content:space-between;align-items:flex-end;gap:28px;margin-bottom:24px;display:flex}.call-guide-overline{color:var(--vscode-textLink-foreground,var(--compass-focus));margin-bottom:7px;font-size:9px;font-weight:700;display:block}.call-guide-heading h2{color:var(--vscode-editor-foreground,var(--foreground));letter-spacing:-.025em;margin:0;font-size:clamp(19px,2.4vw,26px);font-weight:600}.call-guide-heading>p{max-width:420px;color:var(--vscode-descriptionForeground,var(--muted-foreground));text-align:right;margin:0;font-size:11px;line-height:1.5}.call-guide-shortcut{color:var(--vscode-descriptionForeground,var(--muted-foreground));white-space:nowrap;align-items:center;gap:7px;font-size:9px;display:inline-flex}.call-guide-shortcut svg{width:12px;height:12px;color:var(--vscode-textLink-foreground,var(--compass-focus))}.call-guide-steps{grid-template-columns:minmax(170px,.8fr) minmax(340px,1.45fr) minmax(170px,.8fr);gap:10px;margin:0;padding:0;list-style:none;display:grid}.call-guide-steps>li{border:1px solid var(--vscode-panel-border,var(--border));background:var(--vscode-editorWidget-background,var(--card));border-radius:5px;align-content:start;gap:17px;min-height:168px;padding:18px;display:grid;position:relative}@supports (color:color-mix(in lab,red,red)){.call-guide-steps>li{background:color-mix(in srgb,var(--vscode-editorWidget-background,var(--card)) 72%,transparent)}}.call-guide-steps>li>svg{width:22px;height:22px;color:var(--vscode-textLink-foreground,var(--compass-focus))}.call-guide-step-number{color:var(--vscode-disabledForeground,var(--compass-faint));font:9px/1 var(--compass-font-mono);letter-spacing:.1em;position:absolute;top:17px;right:17px}.call-guide-steps h3{color:var(--vscode-editor-foreground,var(--foreground));margin:0;font-size:13px;font-weight:600}.call-guide-steps p{color:var(--vscode-descriptionForeground,var(--muted-foreground));margin:6px 0 0;font-size:11px;line-height:1.5}.call-guide-step-menu{grid-template-columns:minmax(150px,.85fr) minmax(195px,1.15fr);align-items:center}.call-guide-menu-preview{min-width:0;padding-right:44%;font-size:10px;position:relative}.call-guide-menu-parent,.call-guide-submenu{border:1px solid var(--vscode-menu-border,var(--border));background:var(--vscode-menu-background,var(--popover));color:var(--vscode-menu-foreground,var(--popover-foreground));border-radius:4px;box-shadow:0 12px 30px #00000040}.call-guide-menu-parent{border-color:var(--vscode-focusBorder,var(--compass-focus));background:var(--vscode-menu-selectionBackground,var(--accent));min-height:31px;color:var(--vscode-menu-selectionForeground,var(--accent-foreground));grid-template-columns:15px 1fr 13px;align-items:center;gap:7px;padding:0 8px;display:grid}.call-guide-menu-parent svg,.call-guide-submenu svg{width:13px;height:13px}.call-guide-submenu{z-index:2;width:58%;min-width:165px;padding:4px;position:absolute;top:22px;right:0}.call-guide-submenu span{white-space:nowrap;border-radius:2px;align-items:center;gap:7px;min-height:26px;padding:0 7px;display:flex}.call-guide-submenu span.is-active{background:var(--vscode-menu-selectionBackground,var(--accent));color:var(--vscode-menu-selectionForeground,var(--accent-foreground))}.call-guide-actions{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.call-guide-action{border:1px solid var(--vscode-panel-border,var(--border));background:var(--vscode-editorWidget-background,var(--card));min-height:104px;color:var(--vscode-editor-foreground,var(--foreground));font:inherit;text-align:left;border-radius:5px;outline:none;grid-template-columns:auto 1fr auto;align-items:center;gap:13px;padding:18px;transition:border-color .14s,background .14s,transform .14s;display:grid;position:relative}.call-guide-action:not(:disabled):hover{border-color:var(--vscode-focusBorder,var(--compass-focus));background:var(--vscode-list-hoverBackground,var(--workbench-hover))}@supports (color:color-mix(in lab,red,red)){.call-guide-action:not(:disabled):hover{background:color-mix(in srgb,var(--vscode-list-hoverBackground,var(--workbench-hover)) 70%,var(--vscode-editorWidget-background,var(--card)))}}.call-guide-action:not(:disabled):hover{transform:translateY(-2px)}.call-guide-action:focus-visible,.call-guide-walkthrough:focus-visible{outline:2px solid var(--vscode-focusBorder,var(--ring));outline-offset:2px}.call-guide-action:disabled{cursor:not-allowed;opacity:.46}.call-guide-action[data-primary=true]{border-color:var(--vscode-focusBorder,var(--compass-focus))}@supports (color:color-mix(in lab,red,red)){.call-guide-action[data-primary=true]{border-color:color-mix(in srgb,var(--vscode-focusBorder,var(--compass-focus)) 72%,var(--border))}}.call-guide-action[data-primary=true]{background:linear-gradient(130deg,var(--vscode-focusBorder,var(--compass-focus)),transparent 58%),var(--vscode-editorWidget-background,var(--card))}@supports (color:color-mix(in lab,red,red)){.call-guide-action[data-primary=true]{background:linear-gradient(130deg,color-mix(in srgb,var(--vscode-focusBorder,var(--compass-focus)) 13%,transparent),transparent 58%),var(--vscode-editorWidget-background,var(--card))}}.call-guide-action-icon{border:1px solid var(--vscode-panel-border,var(--border));background:var(--vscode-editor-background,var(--background));width:34px;height:34px;color:var(--vscode-textLink-foreground,var(--compass-focus));border-radius:4px;place-items:center;display:grid}.call-guide-action-icon svg{width:16px;height:16px}.call-guide-action strong,.call-guide-action small{display:block}.call-guide-action strong{font-size:12px;font-weight:600}.call-guide-action small{color:var(--vscode-descriptionForeground,var(--muted-foreground));margin-top:5px;font-size:10px}.call-guide-action-arrow{width:15px;height:15px;color:var(--vscode-disabledForeground,var(--compass-faint));transition:transform .14s}.call-guide-action:not(:disabled):hover .call-guide-action-arrow{color:var(--vscode-textLink-foreground,var(--compass-focus));transform:translate(3px)}.call-guide-action em{color:var(--vscode-textLink-foreground,var(--compass-focus));font:normal 8px/1 var(--compass-font-mono);letter-spacing:.08em;text-transform:uppercase;position:absolute;top:8px;right:8px}.call-guide-footer{justify-content:space-between;align-items:center;gap:30px;padding-top:24px;display:flex}.call-guide-coverage{align-items:center;gap:13px;max-width:760px;display:flex}.call-guide-coverage-badge{border:1px solid var(--vscode-testing-iconPassed,var(--compass-success));flex:none;padding:5px 7px}@supports (color:color-mix(in lab,red,red)){.call-guide-coverage-badge{border:1px solid color-mix(in srgb,var(--vscode-testing-iconPassed,var(--compass-success)) 50%,var(--border))}}.call-guide-coverage-badge{color:var(--vscode-testing-iconPassed,var(--compass-success));border-radius:3px;font-size:8px;font-weight:700}.call-guide-coverage p{color:var(--vscode-descriptionForeground,var(--muted-foreground));margin:0;font-size:10px;line-height:1.55}.call-guide-walkthrough{color:var(--vscode-textLink-foreground,var(--compass-focus));font:11px/1 var(--compass-font-sans);background:0 0;border:0;outline:none;flex:none;align-items:center;gap:7px;padding:7px 0;display:inline-flex}.call-guide-walkthrough svg{width:14px;height:14px}.call-guide-walkthrough svg:last-child{width:12px;transition:transform .14s}.call-guide-walkthrough:hover svg:last-child{transform:translate(2px)}body.vscode-high-contrast .call-guide-route,body.vscode-high-contrast-light .call-guide-route,body.vscode-high-contrast .call-guide-steps>li,body.vscode-high-contrast-light .call-guide-steps>li,body.vscode-high-contrast .call-guide-action,body.vscode-high-contrast-light .call-guide-action,body.vscode-high-contrast .call-guide-lookup-row,body.vscode-high-contrast-light .call-guide-lookup-row,body.vscode-high-contrast .call-guide-suggestions,body.vscode-high-contrast-light .call-guide-suggestions,body.vscode-high-contrast .call-guide-completion-status,body.vscode-high-contrast-light .call-guide-completion-status{border-width:2px;border-color:var(--vscode-contrastBorder,var(--ring))}@media(max-width:900px){.call-guide-hero{grid-template-columns:1fr;gap:32px}.call-guide-route{box-sizing:border-box;width:min(620px,100%)}.call-guide-steps{grid-template-columns:1fr 1fr}.call-guide-step-menu{grid-area:2/1/auto/-1}}@media(max-width:680px){.call-guide-shell{padding-inline:16px}.call-guide-heading,.call-guide-footer{flex-direction:column;align-items:flex-start}.call-guide-heading>p{text-align:left}.call-guide-shortcut{display:none}.call-guide-steps,.call-guide-actions{grid-template-columns:1fr}.call-guide-step-menu{grid-area:auto;grid-template-columns:1fr}.call-guide-menu-preview{padding-right:min(42%,180px)}.call-guide-coverage{flex-direction:column;align-items:flex-start}}@media(max-width:440px){.call-guide-lookup-row{grid-template-columns:1fr}.call-guide-lookup-row>button{justify-content:center;min-height:36px}.call-guide-lookup-directions{flex-wrap:wrap}.call-guide-lookup-directions>span{width:100%;margin:5px 0 0}.call-guide-suggestions>button{grid-template-columns:minmax(0,1fr);gap:2px}.call-guide-suggestions>button>small{white-space:normal}.call-guide-route-stage{gap:5%}.call-guide-route-node{padding:9px 7px}.call-guide-route-node small{display:none}.call-guide-menu-preview{padding:0}.call-guide-submenu{width:auto;margin:6px 0 0 18px;position:relative;top:auto}}@media(prefers-reduced-motion:reduce){.call-guide-route-line i{animation:none}.call-guide-action,.call-guide-action-arrow,.call-guide-walkthrough svg:last-child{transition:none}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));filter:blur(var(--tw-exit-blur,0))}} diff --git a/crates/compass-output/src/html.rs b/crates/compass-output/src/html.rs index 07ba7202..84579d4a 100644 --- a/crates/compass-output/src/html.rs +++ b/crates/compass-output/src/html.rs @@ -689,6 +689,9 @@ pub(crate) fn node_values( ); output.insert("end_byte".into(), end_byte.map_or(Value::Null, Value::from)); output.insert("signature".into(), Value::String(signature.clone())); + if let Some(document) = document_value(node) { + output.insert("document".into(), document); + } if let Some(counts) = options.member_counts { output.insert("is_community".into(), Value::Bool(true)); output.insert( @@ -738,6 +741,107 @@ fn source_anchor_unsigned(node: &NodeRecord, legacy_key: &str, v1_key: &str) -> }) } +fn document_value(node: &NodeRecord) -> Option { + const DOCUMENT_VIEWER_TEXT_LIMIT: usize = 4_096; + let is_document = + node.string("file_type") == "document" || node.property("document_kind").is_some(); + if !is_document { + return None; + } + let kind = if node.string("document_kind").is_empty() { + node.string("symbol_kind") + } else { + node.string("document_kind") + }; + let role = if kind == "document" { "root" } else { "block" }; + let mut document = Map::new(); + document.insert("role".into(), Value::String(role.to_owned())); + if !kind.is_empty() { + document.insert("kind".into(), Value::String(kind)); + } + for (target, source) in [ + ("format", "document_format"), + ("visualCoverage", "document_visual_coverage"), + ("ocrMode", "document_ocr_mode"), + ] { + if let Some(value) = node + .property(source) + .and_then(|value| bounded_document_json(&value, 0)) + { + document.insert(target.to_owned(), value); + } + } + if let Some(text) = node + .property("document_text") + .and_then(|value| value.as_str().map(str::to_owned)) + { + document.insert( + "text".to_owned(), + Value::String(sanitize_metadata(&text, DOCUMENT_VIEWER_TEXT_LIMIT)), + ); + } + if let Some(value) = node + .property("document_complete") + .and_then(|value| bounded_document_json(&value, 0)) + { + document.insert("complete".into(), value); + } + if let Some(value) = node + .property("block_index") + .and_then(|value| bounded_document_json(&value, 0)) + { + document.insert("ordinal".into(), value); + } + for (target, source) in [ + ("origin", "document_origin"), + ("locator", "document_locator"), + ("ocrProfile", "document_ocr_profile"), + ] { + if let Some(value) = node + .property(source) + .and_then(|value| bounded_document_json(&value, 0)) + { + document.insert(target.to_owned(), value); + } + } + Some(Value::Object(document)) +} + +fn bounded_document_json(value: &Value, depth: usize) -> Option { + const MAX_DEPTH: usize = 5; + const MAX_OBJECT_ENTRIES: usize = 128; + const MAX_ARRAY_ENTRIES: usize = 512; + const MAX_STRING_CHARS: usize = 16_384; + + if depth > MAX_DEPTH { + return None; + } + match value { + Value::Null => None, + Value::Bool(_) | Value::Number(_) => Some(value.clone()), + Value::String(value) => Some(Value::String(sanitize_metadata(value, MAX_STRING_CHARS))), + Value::Array(values) => Some(Value::Array( + values + .iter() + .take(MAX_ARRAY_ENTRIES) + .filter_map(|value| bounded_document_json(value, depth + 1)) + .collect(), + )), + Value::Object(values) => Some(Value::Object( + values + .iter() + .take(MAX_OBJECT_ENTRIES) + .filter_map(|(key, value)| { + Some(( + sanitize_metadata(key, 128), + bounded_document_json(value, depth + 1)?, + )) + }) + .collect(), + )), + } +} + #[allow(dead_code)] fn community_details( document: &GraphDocument, diff --git a/crates/compass-output/src/lib.rs b/crates/compass-output/src/lib.rs index a8ee6409..df89d33b 100644 --- a/crates/compass-output/src/lib.rs +++ b/crates/compass-output/src/lib.rs @@ -80,9 +80,10 @@ pub use review::{ pub use svg::{SvgOptions, spring_layout, svg_document, write_svg}; pub use tree::{TreeNode, TreeOptions, build_tree, tree_html_document, write_tree_html}; pub use viewer_model::{ - EffectiveGraphViewContext, GRAPH_VIEWER_SCHEMA, GraphViewCommunity, GraphViewEdge, - GraphViewModel, GraphViewNode, GraphViewSource, GraphViewStats, effective_graph_view_model, - graph_view_model, shared_viewer_html, shared_viewer_html_with_communities, + EffectiveGraphViewContext, GRAPH_VIEWER_SCHEMA, GraphViewCommunity, GraphViewDocument, + GraphViewEdge, GraphViewModel, GraphViewNode, GraphViewSource, GraphViewStats, + effective_graph_view_model, graph_view_model, shared_viewer_html, + shared_viewer_html_with_communities, }; pub use wiki::{WikiExport, WikiOptions, export_wiki}; pub use workbench::{ diff --git a/crates/compass-output/src/viewer_model.rs b/crates/compass-output/src/viewer_model.rs index f7b18b38..e8dda7b4 100644 --- a/crates/compass-output/src/viewer_model.rs +++ b/crates/compass-output/src/viewer_model.rs @@ -91,6 +91,35 @@ pub struct GraphViewNode { pub challenged: Option, #[serde(skip_serializing_if = "Option::is_none")] pub challenge: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub document: Option, +} + +#[derive(Clone, Debug, Serialize)] +#[serde(rename_all = "camelCase")] +pub struct GraphViewDocument { + #[serde(skip_serializing_if = "Option::is_none")] + pub role: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub kind: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub format: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub text: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub ordinal: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub complete: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub visual_coverage: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub ocr_mode: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub origin: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub locator: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub ocr_profile: Option, } #[derive(Clone, Debug, Serialize)] @@ -203,6 +232,7 @@ pub fn graph_view_model( grounding_status: None, challenged: None, challenge: None, + document: object.get("document").and_then(document_from_value), }) }) .collect::>(); @@ -472,6 +502,23 @@ fn non_empty(object: &Map, key: &str) -> Option { string(object, key).filter(|value| !value.is_empty()) } +fn document_from_value(value: &Value) -> Option { + let object = value.as_object()?; + Some(GraphViewDocument { + role: string(object, "role"), + kind: string(object, "kind"), + format: string(object, "format"), + text: string(object, "text"), + ordinal: object.get("ordinal").and_then(Value::as_u64), + complete: object.get("complete").and_then(Value::as_bool), + visual_coverage: string(object, "visualCoverage"), + ocr_mode: string(object, "ocrMode"), + origin: object.get("origin").cloned(), + locator: object.get("locator").cloned(), + ocr_profile: object.get("ocrProfile").cloned(), + }) +} + fn escape_html(value: &str) -> String { value .replace('&', "&") @@ -542,6 +589,73 @@ mod tests { Ok(()) } + #[test] + fn graph_model_exposes_document_ocr_provenance_for_the_viewer() + -> Result<(), Box> { + let document: GraphDocument = serde_json::from_value(json!({ + "nodes": [{ + "id": "scan", + "label": "scan.pdf", + "file_type": "document", + "document_kind": "document", + "document_format": "pdf", + "document_visual_coverage": "partial", + "document_ocr_mode": "auto", + "document_complete": false, + "document_ocr_profile": { + "engine": "OAR-OCR", + "engine_version": "0.9.2", + "profile": "pp-ocrv6-small" + }, + "source_file": "docs/scan.pdf" + }, { + "id": "region", + "label": "Invoice total", + "file_type": "document", + "document_kind": "paragraph", + "document_text": "Invoice total", + "document_origin": { + "kind": "ocr", + "profile": { + "engine": "OAR-OCR", + "engine_version": "0.9.2", + "profile": "pp-ocrv6-small" + }, + "confidence_bps": 9234 + }, + "document_locator": { + "kind": "ocr", + "owner": {"kind": "pdf", "page": 4, "item": 1}, + "candidate_id": "page-4", + "width": 1000, + "height": 800, + "polygon": [{"x": 10, "y": 12}], + "occurrence": 0 + }, + "block_index": 1, + "source_file": "docs/scan.pdf" + }], + "links": [] + }))?; + let communities: Communities = + BTreeMap::from([(0, vec!["scan".to_owned(), "region".to_owned()])]); + let model = graph_view_model( + &document, + &communities, + "OCR", + &HtmlOptions::default(), + false, + ); + let json = serde_json::to_value(&model.nodes)?; + assert_eq!(json[0]["document"]["role"], "root"); + assert_eq!(json[0]["document"]["ocrMode"], "auto"); + assert_eq!(json[0]["document"]["visualCoverage"], "partial"); + assert_eq!(json[1]["document"]["origin"]["kind"], "ocr"); + assert_eq!(json[1]["document"]["origin"]["confidence_bps"], 9234); + assert_eq!(json[1]["document"]["locator"]["owner"]["page"], 4); + Ok(()) + } + #[test] fn graph_model_preserves_code_graph_v1_source_anchor() -> Result<(), Box> { diff --git a/docs/reference/commands.md b/docs/reference/commands.md index 2886a225..0c8225c5 100644 --- a/docs/reference/commands.md +++ b/docs/reference/commands.md @@ -118,6 +118,15 @@ compass extract [PATH] [--exclude-hubs N] ``` +`--backend` and `--model` select the semantic provider and model. The +non-secret `COMPASS_BACKEND` and `COMPASS_MODEL` environment values are used +when the flags are omitted; explicit flags win. Built-ins are `claude`, `kimi`, +`ollama`, `gemini`, `openai`, `deepseek`, `azure`, `bedrock`, and `claude-cli`. +Set only the selected provider's documented credential variable, or register a +custom OpenAI-compatible provider with `compass provider add`. OCR remains +local and does not require an LLM credential; document semantic enrichment may +use the selected provider. + Use `--code-only` for an explicit fully local structural profile; it limits structural node and edge extraction to code-classified files while retaining the scanned file inventory. Program IR is opt-in with `--program`; @@ -783,7 +792,10 @@ compass provider add NAME compass provider remove NAME ``` -Built-in provider names cannot be overridden. +Built-in provider names cannot be overridden. The built-ins are `claude`, +`kimi`, `ollama`, `gemini`, `openai`, `deepseek`, `azure`, `bedrock`, and +`claude-cli`; credentials are read from each provider's documented environment +variable and are never written to the registry. ### `add` diff --git a/docs/reference/configuration.md b/docs/reference/configuration.md index 00b7b3dc..33444e6a 100644 --- a/docs/reference/configuration.md +++ b/docs/reference/configuration.md @@ -191,17 +191,35 @@ Current built-in backend code recognizes families including: | Backend | Key variables | Endpoint/model examples | | --- | --- | --- | | Anthropic/Claude | `ANTHROPIC_API_KEY` | `ANTHROPIC_BASE_URL`, `ANTHROPIC_MODEL` | +| Kimi/Moonshot | `MOONSHOT_API_KEY` | `KIMI_BASE_URL` | | Gemini | `GEMINI_API_KEY`, `GOOGLE_API_KEY` | `GEMINI_BASE_URL`, `COMPASS_GEMINI_MODEL` | | OpenAI | `OPENAI_API_KEY` | `OPENAI_BASE_URL`, `OPENAI_MODEL`, `COMPASS_OPENAI_MODEL` | +| DeepSeek | `DEEPSEEK_API_KEY` | `DEEPSEEK_BASE_URL`, `COMPASS_DEEPSEEK_MODEL` | | Azure OpenAI | `AZURE_OPENAI_API_KEY` | `AZURE_OPENAI_ENDPOINT`, `AZURE_OPENAI_API_VERSION`, `AZURE_OPENAI_DEPLOYMENT` | | Ollama-compatible | optional `OLLAMA_API_KEY` | `OLLAMA_BASE_URL`, `OLLAMA_MODEL` | | Bedrock | AWS credential chain | `COMPASS_BEDROCK_MODEL` | +| Claude CLI | local `claude` login | `COMPASS_CLAUDE_CLI_MODEL` | Some Compass variables retain `COMPASS_` names. Their presence does not change the public executable name. -Use `compass extract --help` and current provider documentation before -deployment; backend support and model defaults can evolve. +Choose a provider explicitly when more than one credential is present: + +```bash +COMPASS_BACKEND=openai OPENAI_API_KEY="$OPENAI_API_KEY" \ + COMPASS_MODEL=gpt-4.1-mini compass extract . +``` + +`--backend` and `--model` take precedence over `COMPASS_BACKEND` and +`COMPASS_MODEL`. If neither is supplied, Compass detects the first configured +built-in provider in this order: Gemini, Kimi, Claude, OpenAI, DeepSeek, Azure, +Bedrock, then Ollama; custom providers are considered after built-ins. The +selector and model are not secrets; `COMPASS_MODEL` also takes precedence over +a provider-specific model variable. Provider credentials remain in the +provider-specific environment variable or secret store and are never written +to graph artifacts or history profiles. Use `compass extract --help` and +current provider documentation before deployment; backend support and model +defaults can evolve. ## Custom provider registry @@ -239,6 +257,13 @@ compass provider list compass provider show internal ``` +Use the registered provider without putting its secret in the registry: + +```bash +COMPASS_BACKEND=internal INTERNAL_MODEL_API_KEY="$INTERNAL_MODEL_API_KEY" \ + compass extract . +``` + Remove: ```bash diff --git a/editors/vscode/src/views/initializationPanel.ts b/editors/vscode/src/views/initializationPanel.ts index a2c9de04..25930663 100644 --- a/editors/vscode/src/views/initializationPanel.ts +++ b/editors/vscode/src/views/initializationPanel.ts @@ -2,11 +2,25 @@ import path from "node:path"; import { randomUUID } from "node:crypto"; import { stat } from "node:fs/promises"; import * as vscode from "vscode"; +import { z } from "zod"; import { buildInitArgs } from "../commands/buildArguments"; import { parseInitializationRequest } from "../initialize/panelMessages"; import { discoverScopeFiles } from "../initialize/scopeFiles"; import type { RepositorySession } from "../workspace/repositorySession"; +const OCR_PROFILE = "pp-ocrv6-small"; +const ModelsResponseSchema = z.object({ + schema: z.literal("compass.models/1"), + profiles: z.array(z.object({ + profile: z.string().min(1).max(128), + installed: z.boolean(), + verified: z.boolean(), + bytes: z.number().int().nonnegative().max(1_000_000_000), + license: z.string().max(512) + }).passthrough()).max(16) +}).strict(); +type OcrModelStatus = import("@compass/viewer").OcrModelStatus; + export async function openInitializationPanel( context: vscode.ExtensionContext, session: RepositorySession, @@ -31,6 +45,8 @@ export async function openInitializationPanel( cancelRequested: boolean; } | undefined; + let ocrModel: OcrModelStatus = { kind: "checking", profile: OCR_PROFILE }; + let activeOcrModelInstall: ReturnType | undefined; const post = (message: unknown): Thenable => disposed ? Promise.resolve(false) : panel.webview.postMessage(message); const configPath = path.join(session.root, ".compass", "config.toml"); @@ -48,12 +64,111 @@ export async function openInitializationPanel( repositoryRoot: session.root, configurationExists: await isFile(configPath), scopeFiles: discovered.files, - scopeFilesTruncated: discovered.truncated + scopeFilesTruncated: discovered.truncated, + ocrModel }); }; + const refreshOcrModel = async (): Promise => { + ocrModel = { kind: "checking", profile: OCR_PROFILE }; + await post({ type: "ocrModel", status: ocrModel }); + try { + const response = await session.processes.runJson( + session.root, + ["models", "list", "--format", "json"], + ModelsResponseSchema + ); + const profile = response.profiles.find((candidate) => candidate.profile === OCR_PROFILE); + if (!profile) { + ocrModel = { + kind: "error", + profile: OCR_PROFILE, + message: `The active Compass CLI does not advertise ${OCR_PROFILE}. Update Compass to enable managed OCR.`, + canRetry: false + }; + } else if (profile.verified) { + ocrModel = { + kind: "ready", + profile: OCR_PROFILE, + bytes: profile.bytes, + engine: "OAR-OCR", + engineVersion: "0.9.2" + }; + } else if (profile.installed) { + ocrModel = { + kind: "invalid", + profile: OCR_PROFILE, + message: "The OCR model is present but its verification marker is stale or invalid.", + installCommand: `compass models install ${OCR_PROFILE}` + }; + } else { + ocrModel = { + kind: "missing", + profile: OCR_PROFILE, + installCommand: `compass models install ${OCR_PROFILE}` + }; + } + } catch (error) { + ocrModel = { + kind: "error", + profile: OCR_PROFILE, + message: firstLine(error instanceof Error ? error.message : String(error)), + canRetry: true + }; + } + await post({ type: "ocrModel", status: ocrModel }); + }; + + const installOcrModel = async (): Promise => { + if (activeOcrModelInstall || session.activeWriter) { + ocrModel = { + kind: "error", + profile: OCR_PROFILE, + message: "Finish the active Compass operation before installing the OCR model.", + canRetry: true + }; + await post({ type: "ocrModel", status: ocrModel }); + return; + } + ocrModel = { kind: "installing", profile: OCR_PROFILE }; + await post({ type: "ocrModel", status: ocrModel }); + const command = session.processes.startCommand( + session.root, + ["models", "install", OCR_PROFILE] + ); + activeOcrModelInstall = command; + session.activeWriter = command; + try { + output.appendLine(`> compass models install ${OCR_PROFILE}`); + const result = await command.completed; + output.append(result.stdout); + output.append(result.stderr); + if (result.code !== 0) { + throw new Error(result.stderr || `Compass exited with ${result.code}`); + } + await refreshOcrModel(); + } catch (error) { + ocrModel = { + kind: "error", + profile: OCR_PROFILE, + message: firstLine(error instanceof Error ? error.message : String(error)), + canRetry: true + }; + await post({ type: "ocrModel", status: ocrModel }); + } finally { + if (activeOcrModelInstall?.operationId === command.operationId) { + activeOcrModelInstall = undefined; + } + if (session.activeWriter?.operationId === command.operationId) { + session.activeWriter = undefined; + } + } + }; + panel.onDidDispose(() => { disposed = true; + activeOcrModelInstall?.cancel(); + activeOcrModelInstall = undefined; }); panel.webview.html = html(context, panel.webview); panel.webview.onDidReceiveMessage(async (message) => { @@ -65,6 +180,15 @@ export async function openInitializationPanel( })); } await hydrate(); + void refreshOcrModel(); + return; + } + if (message?.type === "installOcrModel") { + await installOcrModel(); + return; + } + if (message?.type === "verifyOcrModel") { + await refreshOcrModel(); return; } if (message?.type === "showOutput") { @@ -84,10 +208,10 @@ export async function openInitializationPanel( } const request = parseInitializationRequest(message); if (!request) return; - if (session.activeWriter) { + if (session.activeWriter || activeOcrModelInstall) { await post({ type: "failed", - message: "Another Compass write operation is already running." + message: "Another Compass operation is already running." }); return; } @@ -184,7 +308,7 @@ function html(context: vscode.ExtensionContext, webview: vscode.Webview): string } function firstLine(value: string): string { - return value.split(/\r?\n/, 1)[0] || "Compass initialization failed."; + return (value.split(/\r?\n/, 1)[0] || "Compass initialization failed.").slice(0, 8_192); } async function isFile(target: string): Promise { diff --git a/editors/vscode/src/webviews/initialize.tsx b/editors/vscode/src/webviews/initialize.tsx index c91dc256..6c73992f 100644 --- a/editors/vscode/src/webviews/initialize.tsx +++ b/editors/vscode/src/webviews/initialize.tsx @@ -1,7 +1,9 @@ import { InitializationWizard, + OcrModelStatusSchema, type InitializationRequest, - type InitializationStatus + type InitializationStatus, + type OcrModelStatus } from "@compass/viewer"; import { createRoot } from "react-dom/client"; @@ -18,6 +20,7 @@ let configurationExists = false; let scopeFiles: string[] = []; let scopeFilesTruncated = false; let status: InitializationStatus | undefined; +let ocrModel: OcrModelStatus = { kind: "checking", profile: "pp-ocrv6-small" }; function render(): void { root.render( @@ -27,6 +30,7 @@ function render(): void { configurationExists={configurationExists} scopeFiles={scopeFiles} scopeFilesTruncated={scopeFilesTruncated} + ocrModel={ocrModel} {...(status ? { status } : {})} host={{ start(request: InitializationRequest) { @@ -51,6 +55,12 @@ function render(): void { }, showOutput() { vscode.postMessage({ type: "showOutput" }); + }, + installOcrModel() { + vscode.postMessage({ type: "installOcrModel" }); + }, + verifyOcrModel() { + vscode.postMessage({ type: "verifyOcrModel" }); } }} /> @@ -67,6 +77,8 @@ window.addEventListener("message", (event) => { ? message.scopeFiles.filter((value: unknown): value is string => typeof value === "string") : []; scopeFilesTruncated = message.scopeFilesTruncated === true; + const parsedOcrModel = OcrModelStatusSchema.safeParse(message.ocrModel); + if (parsedOcrModel.success) ocrModel = parsedOcrModel.data; } else if (message?.type === "progress") { const progress = message.event; status = { @@ -87,6 +99,10 @@ window.addEventListener("message", (event) => { status = { kind: "cancelled" }; } else if (message?.type === "configurationChanged") { configurationExists = message.configurationExists === true; + } else if (message?.type === "ocrModel") { + const parsedOcrModel = OcrModelStatusSchema.safeParse(message.status); + if (!parsedOcrModel.success) return; + ocrModel = parsedOcrModel.data; } else { return; } diff --git a/packages/compass-viewer/src/contracts/graph.test.ts b/packages/compass-viewer/src/contracts/graph.test.ts index ce3ad614..c02cb181 100644 --- a/packages/compass-viewer/src/contracts/graph.test.ts +++ b/packages/compass-viewer/src/contracts/graph.test.ts @@ -157,4 +157,61 @@ describe("GraphViewModelSchema", () => { expect(parsed.nodes[0]?.challenge?.summary).toContain("contradicts"); expect(parsed.effectiveGraph?.retractions.examples).toHaveLength(1); }); + + it("accepts bounded document OCR provenance and geometry", () => { + const parsed = GraphViewModelSchema.parse({ + schema: "compass.viewer.graph/1", + title: "Documents", + stats: { nodes: 2, edges: 1, communities: 1, aggregated: false }, + nodes: [ + { + id: "report", + label: "report.pdf", + community: 0, + document: { + role: "root", + format: "pdf", + visualCoverage: "partial", + ocrMode: "auto", + complete: false, + ocrProfile: { profile: "pp-ocrv6-small" } + } + }, + { + id: "region", + label: "Invoice total", + community: 0, + document: { + role: "block", + kind: "paragraph", + text: "Invoice total", + origin: { + kind: "ocr", + profile: { profile: "pp-ocrv6-small" }, + confidence_bps: 9234 + }, + locator: { + kind: "ocr", + owner: { kind: "pdf", page: 4, item: 1 }, + candidate_id: "page-4", + width: 1000, + height: 800, + polygon: [{ x: 80, y: 100 }, { x: 390, y: 100 }, { x: 390, y: 160 }] + } + } + } + ], + edges: [], + communities: [{ id: 0, label: "Documents", color: "#4E79A7" }] + }); + + expect(parsed.nodes[1]?.document?.origin).toMatchObject({ + kind: "ocr", + confidence_bps: 9234 + }); + expect(parsed.nodes[1]?.document?.locator).toMatchObject({ + kind: "ocr", + owner: { kind: "pdf", page: 4 } + }); + }); }); diff --git a/packages/compass-viewer/src/contracts/graph.ts b/packages/compass-viewer/src/contracts/graph.ts index f806e3ce..efd96207 100644 --- a/packages/compass-viewer/src/contracts/graph.ts +++ b/packages/compass-viewer/src/contracts/graph.ts @@ -44,6 +44,35 @@ export const AgentRetractionsSchema = z.object({ omittedExamples: z.number().int().nonnegative() }).strict(); +export const DocumentOcrProfileSchema = z.record(z.string(), z.unknown()); + +export const DocumentOriginSchema = z.discriminatedUnion("kind", [ + z.object({ kind: z.literal("native") }).passthrough(), + z.object({ + kind: z.literal("ocr"), + profile: DocumentOcrProfileSchema, + confidence_bps: z.number().int().min(0).max(10_000) + }).passthrough() +]); + +export const DocumentLocatorSchema = z.object({ + kind: z.string().min(1) +}).passthrough(); + +export const GraphDocumentSchema = z.object({ + role: z.enum(["root", "block"]).optional(), + kind: z.string().optional(), + format: z.string().optional(), + text: z.string().optional(), + ordinal: z.number().int().nonnegative().optional(), + complete: z.boolean().optional(), + visualCoverage: z.enum(["not_requested", "complete", "partial", "failed"]).optional(), + ocrMode: z.enum(["off", "auto", "always"]).optional(), + origin: DocumentOriginSchema.optional(), + locator: DocumentLocatorSchema.optional(), + ocrProfile: DocumentOcrProfileSchema.optional() +}).passthrough(); + export const GraphNodeSchema = z.object({ id: z.string().min(1), label: z.string(), @@ -72,7 +101,8 @@ export const GraphNodeSchema = z.object({ color: z.object({ background: z.string(), border: z.string() - }).passthrough().optional() + }).passthrough().optional(), + document: GraphDocumentSchema.optional() }).passthrough(); export const GraphEdgeSchema = z.object({ @@ -141,6 +171,10 @@ export const GraphViewModelSchema = z.object({ export type SourceLocation = z.infer; export type GraphFieldChange = z.infer; export type GraphRecordEvidence = z.infer; +export type DocumentOcrProfile = z.infer; +export type DocumentOrigin = z.infer; +export type DocumentLocator = z.infer; +export type GraphDocument = z.infer; export type GraphNode = z.infer; export type GraphEdge = z.infer; export type GraphViewModel = z.infer; diff --git a/packages/compass-viewer/src/graph/DocumentOcrPanel.test.tsx b/packages/compass-viewer/src/graph/DocumentOcrPanel.test.tsx new file mode 100644 index 00000000..2b6f17e1 --- /dev/null +++ b/packages/compass-viewer/src/graph/DocumentOcrPanel.test.tsx @@ -0,0 +1,145 @@ +import { fireEvent, render, screen } from "@testing-library/react"; +import { describe, expect, it, vi } from "vitest"; +import type { GraphNode, GraphViewModel } from "../contracts/graph"; +import { documentContextForNode, DocumentOcrPanel } from "./DocumentOcrPanel"; + +const profile = { + engine: "OAR-OCR", + engine_version: "0.9.2", + profile: "pp-ocrv6-small", + model_digests: {}, + languages: [], + preprocessing_version: 2 +}; + +const root: GraphNode = { + id: "document", + label: "scan.pdf", + kind: "document", + community: 0, + source: { file: "docs/scan.pdf" }, + document: { + role: "root", + kind: "document", + format: "pdf", + ocrMode: "auto", + visualCoverage: "partial", + complete: false, + ocrProfile: profile + } +}; + +const native: GraphNode = { + id: "native", + label: "Native title", + kind: "paragraph", + community: 0, + source: { file: "docs/scan.pdf" }, + document: { + role: "block", + kind: "paragraph", + text: "Native title", + origin: { kind: "native" }, + locator: { kind: "pdf", page: 4, item: 2 }, + ordinal: 1 + } +}; + +const ocr: GraphNode = { + id: "ocr", + label: "Invoice total", + kind: "paragraph", + community: 0, + source: { file: "docs/scan.pdf" }, + document: { + role: "block", + kind: "paragraph", + text: "Invoice total", + origin: { kind: "ocr", profile, confidence_bps: 9_234 }, + locator: { + kind: "ocr", + owner: { kind: "pdf", page: 4, item: 1 }, + candidate_id: "page-4", + width: 1_000, + height: 800, + polygon: [ + { x: 80, y: 100 }, + { x: 390, y: 100 }, + { x: 390, y: 160 }, + { x: 80, y: 160 } + ], + occurrence: 0 + }, + ordinal: 2 + } +}; + +const model: GraphViewModel = { + schema: "compass.viewer.graph/1", + title: "OCR fixture", + stats: { nodes: 3, edges: 2, communities: 1, aggregated: false }, + nodes: [root, native, ocr], + edges: [ + { id: "contains-native", source: root.id, target: native.id, relation: "contains" }, + { id: "contains-ocr", source: root.id, target: ocr.id, relation: "contains" } + ], + communities: [{ id: 0, label: "Documents", color: "#4e79a7", hidden: false }], + hyperedges: [] +}; + +describe("DocumentOcrPanel", () => { + it("groups document blocks and preserves the selected document context", () => { + const context = documentContextForNode(model, ocr); + expect(context?.root?.id).toBe("document"); + expect(context?.blocks.map((block) => block.id)).toEqual(["native", "ocr"]); + }); + + it("shows OCR status, confidence, locators, warning, and a bounding-box preview", () => { + const context = documentContextForNode(model, ocr); + if (!context) throw new Error("document context missing"); + const onFocus = vi.fn(); + render(); + + expect(screen.getByText("OCR Auto")).toBeInTheDocument(); + expect(screen.getByText("Partial coverage")).toBeInTheDocument(); + expect(screen.getByText("92.34%")).toBeInTheDocument(); + expect(screen.getAllByText("Page 4").length).toBeGreaterThan(0); + expect(screen.getByRole("alert")).toHaveTextContent("OCR coverage is partial"); + expect(screen.getByRole("img", { name: /OCR bounding boxes/i })).toBeInTheDocument(); + + fireEvent.click(screen.getByRole("tab", { name: /OCR evidence/i })); + expect(screen.getAllByText("Invoice total").length).toBeGreaterThan(0); + const ocrBlock = screen + .getAllByRole("button", { name: /Invoice total/i }) + .find((button) => button.classList.contains("compass-document-block")); + if (!ocrBlock) throw new Error("OCR block button missing"); + fireEvent.click(ocrBlock); + expect(onFocus).toHaveBeenCalledWith("ocr"); + }); + + it("does not mislabel native-only parse incompleteness as an OCR failure", () => { + const nativeOnly = { + ...model, + nodes: model.nodes + .filter((node) => node.id !== "ocr") + .map((node) => node.id === "document" + ? { + ...node, + document: { + ...node.document, + complete: false, + visualCoverage: "not_requested" as const, + ocrMode: "off" as const + } + } + : node) + }; + const context = documentContextForNode(nativeOnly, native); + if (!context) throw new Error("document context missing"); + render(); + + expect(screen.getByText("Native only")).toBeInTheDocument(); + expect(screen.getByRole("alert")).toHaveTextContent("Document extraction is incomplete"); + expect(screen.getByRole("alert")).not.toHaveTextContent("OCR coverage is partial"); + }); +}); diff --git a/packages/compass-viewer/src/graph/DocumentOcrPanel.tsx b/packages/compass-viewer/src/graph/DocumentOcrPanel.tsx new file mode 100644 index 00000000..4486282f --- /dev/null +++ b/packages/compass-viewer/src/graph/DocumentOcrPanel.tsx @@ -0,0 +1,552 @@ +import { + AlertTriangle, + CheckCircle2, + Eye, + FileImage, + MapPin, + ScanText, + ShieldAlert +} from "lucide-react"; +import { useEffect, useMemo, useState } from "react"; +import type { + DocumentLocator, + DocumentOrigin, + GraphDocument, + GraphNode, + GraphViewModel +} from "../contracts/graph"; + +type EvidenceTab = "combined" | "native" | "ocr"; + +export type DocumentContext = { + sourceFile?: string; + root?: GraphNode; + blocks: GraphNode[]; +}; + +type OcrLocator = DocumentLocator & { + kind: "ocr"; + owner?: DocumentLocator; + candidate_id?: string; + width?: number; + height?: number; + polygon?: Array<{ x: number; y: number }>; + occurrence?: number; +}; + +type OcrBlock = GraphNode & { + document: GraphDocument & { + origin: Extract; + locator: OcrLocator; + }; +}; + +const TABS: Array<{ id: EvidenceTab; label: string }> = [ + { id: "combined", label: "Combined" }, + { id: "native", label: "Native" }, + { id: "ocr", label: "OCR evidence" } +]; + +export function documentContextForNode( + model: GraphViewModel, + selected: GraphNode +): DocumentContext | undefined { + if (!selected.document) return undefined; + const sourceFile = selected.source?.file; + const candidates = model.nodes.filter((node) => { + if (!node.document) return false; + return sourceFile === undefined || node.source?.file === sourceFile; + }); + const root = candidates.find((node) => node.document?.role === "root") + ?? (selected.document.role === "root" ? selected : undefined); + const blocks = candidates.filter((node) => node.document?.role === "block"); + if (selected.document.role === "block" && !blocks.some((node) => node.id === selected.id)) { + blocks.push(selected); + } + if (!root && blocks.length === 0) return undefined; + blocks.sort(documentBlockOrder); + return { + ...(sourceFile !== undefined ? { sourceFile } : {}), + ...(root ? { root } : {}), + blocks + }; +} + +export function DocumentOcrPanel({ + context, + selectedId, + onFocus +}: { + context: DocumentContext; + selectedId?: string; + onFocus(nodeId: string): void; +}) { + const [tab, setTab] = useState("combined"); + const ocrBlocks = useMemo( + () => context.blocks.filter(isOcrBlock), + [context.blocks] + ); + const nativeBlocks = useMemo( + () => context.blocks.filter((block) => !isOcrBlock(block)), + [context.blocks] + ); + const [previewId, setPreviewId] = useState( + selectedId && ocrBlocks.some((block) => block.id === selectedId) + ? selectedId + : ocrBlocks[0]?.id + ); + useEffect(() => { + setTab("combined"); + setPreviewId( + selectedId && ocrBlocks.some((block) => block.id === selectedId) + ? selectedId + : ocrBlocks[0]?.id + ); + }, [context.sourceFile, ocrBlocks, selectedId]); + + const visibleBlocks = tab === "ocr" + ? ocrBlocks + : tab === "native" + ? nativeBlocks + : context.blocks; + const rootDocument = context.root?.document; + const coverage = rootDocument?.visualCoverage + ?? (ocrBlocks.length > 0 ? "complete" : "not_requested"); + const mode = rootDocument?.ocrMode + ?? (ocrBlocks.length > 0 ? "auto" : "off"); + const profile = profileName(rootDocument?.ocrProfile) + ?? ocrBlocks.map((block) => profileName(ocrOrigin(block)?.profile)).find(Boolean); + const warningStatus = coverage === "failed" + ? "failed" + : coverage === "partial" + ? "partial" + : rootDocument?.complete === false + ? "incomplete" + : undefined; + const previewBlock = ocrBlocks.find((block) => block.id === previewId); + + return ( +
+
+
+ + + Document evidence +

+ {formatDocumentName(context.sourceFile, rootDocument?.format)} +

+
+
+ +
+ + {warningStatus && ( +
+
+ )} + +
+ {TABS.map((item, index) => { + const count = item.id === "ocr" + ? ocrBlocks.length + : item.id === "native" + ? nativeBlocks.length + : context.blocks.length; + const active = tab === item.id; + return ( + + ); + })} +
+ +
+ {visibleBlocks.length > 0 ? ( +
+ {visibleBlocks.map((block) => ( + { + if (isOcrBlock(block)) setPreviewId(block.id); + onFocus(block.id); + }} + /> + ))} +
+ ) : ( +
+
+ )} +
+ + {previewBlock && ( + { + setPreviewId(nodeId); + onFocus(nodeId); + }} + /> + )} +
+ ); +} + +function OcrStatusChip({ + mode, + coverage, + profile +}: { + mode: string; + coverage: string; + profile?: string; +}) { + const isHealthy = coverage === "complete"; + const isRequested = mode !== "off"; + const statusLabel = `OCR ${isRequested ? modeLabel(mode) : "Off"} · ${ + isRequested ? coverageLabel(coverage) : "Native only" + }${profile ? ` · ${profile}` : ""}`; + return ( + + {isHealthy ? + ); +} + +function DocumentBlockCard({ + block, + active, + onClick +}: { + block: GraphNode; + active: boolean; + onClick(): void; +}) { + const ocr = ocrOrigin(block); + const text = block.document?.text ?? block.label; + const locator = block.document?.locator; + return ( + + ); +} + +function ConfidenceBadge({ confidence }: { confidence: number }) { + const percentage = Math.max(0, Math.min(100, confidence / 100)); + const band = percentage >= 85 ? "high" : percentage >= 60 ? "medium" : "low"; + return ( + + {percentage.toFixed(2)}% + + ); +} + +function OcrPreview({ + block, + siblings, + onFocus +}: { + block: OcrBlock; + siblings: OcrBlock[]; + onFocus(nodeId: string): void; +}) { + const locator = block.document.locator; + const width = boundedDimension(locator.width); + const height = boundedDimension(locator.height); + const candidateId = locator.candidate_id; + const regions = siblings.filter((candidate) => { + const candidateLocator = candidate.document.locator; + return candidateLocator.candidate_id === candidateId + && candidateLocator.width === locator.width + && candidateLocator.height === locator.height; + }); + if (!width || !height) return null; + return ( +
+
+ + Visual region + {formatLocator(locator.owner)} · {width} × {height}px + + OCR boxes +
+ + + + + + + + + {regions.map((candidate) => { + const candidateLocator = candidate.document.locator; + const points = polygonPoints(candidateLocator.polygon, width, height); + if (!points) return null; + const active = candidate.id === block.id; + return ( + onFocus(candidate.id)} + onKeyDown={(event) => { + if (event.key === "Enter" || event.key === " ") { + event.preventDefault(); + onFocus(candidate.id); + } + }} + > + {candidate.document.text ?? candidate.label} + + ); + })} + +

Click a highlighted region to inspect its text and confidence.

+
+ ); +} + +function isOcrBlock(block: GraphNode): block is OcrBlock { + return ocrOrigin(block) !== undefined && block.document?.locator?.kind === "ocr"; +} + +function ocrOrigin(block: GraphNode): Extract | undefined { + return block.document?.origin?.kind === "ocr" ? block.document.origin : undefined; +} + +function documentBlockOrder(left: GraphNode, right: GraphNode): number { + const leftOrdinal = left.document?.ordinal ?? Number.MAX_SAFE_INTEGER; + const rightOrdinal = right.document?.ordinal ?? Number.MAX_SAFE_INTEGER; + return leftOrdinal - rightOrdinal || left.id.localeCompare(right.id); +} + +function profileName(profile: Record | undefined): string | undefined { + const value = profile?.profile; + return typeof value === "string" ? prettyProfile(value) : undefined; +} + +function prettyProfile(value: string): string { + return value + .replace(/^pp-/, "PP-") + .replace(/ocrv(\d+)/i, "OCRv$1") + .replace(/-(small|medium)$/i, (_, size: string) => ` ${size[0]?.toUpperCase()}${size.slice(1)}`); +} + +function modeLabel(value: string): string { + return value.length > 0 ? `${value[0]?.toUpperCase()}${value.slice(1)}` : "Off"; +} + +function coverageLabel(value: string): string { + return { + complete: "Complete", + partial: "Partial coverage", + failed: "Failed", + not_requested: "Not requested" + }[value] ?? "Unknown"; +} + +function formatDocumentName(sourceFile: string | undefined, format: string | undefined): string { + const name = sourceFile?.split(/[\\/]/).pop() ?? "Document"; + return format ? `${name} · ${format.toUpperCase()}` : name; +} + +function formatBlockKind(value: string | undefined): string { + if (!value) return "Native text"; + return value + .replaceAll("_", " ") + .replace(/\b\w/g, (character) => character.toUpperCase()); +} + +function formatLocator(locator: DocumentLocator | undefined): string { + if (!locator) return "Location unavailable"; + switch (locator.kind) { + case "ocr": { + const owner = field(locator, "owner"); + const occurrence = numberValue(field(locator, "occurrence")) ?? 0; + return `${formatLocator(isLocator(owner) ? owner : undefined)} · Region ${occurrence + 1}`; + } + case "pdf": + return `Page ${numberValue(field(locator, "page")) ?? "?"}`; + case "slide": + return `Slide ${numberValue(field(locator, "slide")) ?? "?"}${field(locator, "shape") !== undefined ? ` · Shape ${String(field(locator, "shape"))}` : ""}`; + case "spreadsheet": { + const sheet = field(locator, "sheet"); + return `${typeof sheet === "string" ? sheet : "Sheet"}!${columnName(numberValue(field(locator, "column")) ?? 1)}${numberValue(field(locator, "row")) ?? "?"}`; + } + case "package": { + const part = field(locator, "part"); + const path = field(locator, "path"); + const partText = typeof part === "string" ? part : "Package part"; + if (/\/(?:media|embeddings)\//i.test(partText) || /\.(?:avif|bmp|gif|jpe?g|png|tiff?|webp)$/i.test(partText)) { + return "Embedded image"; + } + const shortPart = partText.split(/[\\/]/).pop() || "Package part"; + return typeof path === "string" && path.length > 0 + ? `${shortPart} · ${path}` + : shortPart; + } + case "text_range": { + const startLine = numberValue(field(locator, "start_line")); + const endLine = numberValue(field(locator, "end_line")); + return startLine !== undefined + ? `Lines ${startLine}${endLine !== undefined && endLine !== startLine ? `–${endLine}` : ""}` + : "Text range"; + } + default: + return "Document location"; + } +} + +function field(value: object, key: string): unknown { + return (value as Record)[key]; +} + +function isLocator(value: unknown): value is DocumentLocator { + return typeof value === "object" + && value !== null + && typeof field(value, "kind") === "string"; +} + +function numberValue(value: unknown): number | undefined { + return typeof value === "number" && Number.isFinite(value) ? value : undefined; +} + +function columnName(value: number): string { + let current = Math.max(1, Math.floor(value)); + let output = ""; + while (current > 0) { + const remainder = (current - 1) % 26; + output = String.fromCharCode(65 + remainder) + output; + current = Math.floor((current - 1) / 26); + } + return output; +} + +function boundedDimension(value: number | undefined): number | undefined { + return value !== undefined && Number.isFinite(value) && value > 0 && value <= 10_000 + ? value + : undefined; +} + +function polygonPoints(value: unknown, width: number, height: number): string | undefined { + if (!Array.isArray(value)) return undefined; + const points = value.slice(0, 256).flatMap((point) => { + if (typeof point !== "object" || point === null) return []; + const x = numberValue(field(point, "x")); + const y = numberValue(field(point, "y")); + return x !== undefined && y !== undefined + ? [`${clamp(x, 0, width)},${clamp(y, 0, height)}`] + : []; + }); + return points.length >= 3 ? points.join(" ") : undefined; +} + +function clamp(value: number, minimum: number, maximum: number): number { + return Math.max(minimum, Math.min(maximum, value)); +} diff --git a/packages/compass-viewer/src/graph/GraphInspector.tsx b/packages/compass-viewer/src/graph/GraphInspector.tsx index d995d13f..104ab4eb 100644 --- a/packages/compass-viewer/src/graph/GraphInspector.tsx +++ b/packages/compass-viewer/src/graph/GraphInspector.tsx @@ -16,6 +16,10 @@ import type { CodeQueryResponse } from "../contracts/codeQuery"; import { ChangeEvidence, type GraphSourceRevisions } from "./ChangeEvidence"; import { ChangedSymbolList } from "./ChangedSymbolList"; import { CodeEvidence } from "./CodeEvidence"; +import { + documentContextForNode, + DocumentOcrPanel +} from "./DocumentOcrPanel"; import { navigableSource } from "./sourceNavigation"; export const COMMUNITY_CONTROL_LIMIT = 200; @@ -148,6 +152,7 @@ export function GraphInspector({ const selectedQueryNode = selected ? queryResult?.nodes.find((node) => node.id === selected.id) : undefined; + const documentContext = selected ? documentContextForNode(model, selected) : undefined; const selectedCodeEvidence = selectedQueryNode?.evidence ?? selected?.codeEvidence ?? []; const relationshipCodeEvidence = selected ? (queryResult @@ -368,6 +373,13 @@ export function GraphInspector({ {selected.signature && ( {selected.signature} )} + {documentContext && ( + + )} {onQueryNode && (
+ {ocrModel && }