diff --git a/dev/404.html b/dev/404.html index fca4c86..38445f5 100644 --- a/dev/404.html +++ b/dev/404.html @@ -5,17 +5,17 @@ 404 | Julia Constraints - - + + - +
- + \ No newline at end of file diff --git a/dev/assets/app.D0yb2-jB.js b/dev/assets/app.31_Vw2Nv.js similarity index 81% rename from dev/assets/app.D0yb2-jB.js rename to dev/assets/app.31_Vw2Nv.js index 60f6e79..c15f22e 100644 --- a/dev/assets/app.D0yb2-jB.js +++ b/dev/assets/app.31_Vw2Nv.js @@ -1 +1 @@ -import{U as o,a7 as p,a8 as u,a9 as l,aa as c,ab as f,ac as d,ad as m,ae as h,af as g,ag as A,d as P,u as v,y,x as w,ah as C,ai as R,aj as b,a5 as E}from"./chunks/framework.U9t3ZutP.js";import{R as S}from"./chunks/theme.AgFVpptx.js";function i(e){if(e.extends){const a=i(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const s=i(S),T=P({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=v();return y(()=>{w(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&C(),R(),b(),s.setup&&s.setup(),()=>E(s.Layout)}});async function _(){globalThis.__VITEPRESS__=!0;const e=x(),a=j();a.provide(u,e);const t=l(e.route);return a.provide(c,t),a.component("Content",f),a.component("ClientOnly",d),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),s.enhanceApp&&await s.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function j(){return h(T)}function x(){let e=o,a;return g(t=>{let n=A(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=import(n)),o&&(e=!1),r},s.NotFound)}o&&_().then(({app:e,router:a,data:t})=>{a.go().then(()=>{p(a.route,t.site),e.mount("#app")})});export{_ as createApp}; +import{U as o,a8 as p,a9 as u,aa as l,ab as c,ac as f,ad as d,ae as m,af as h,ag as g,ah as A,d as P,u as v,y,x as w,ai as C,aj as R,ak as b,a6 as E}from"./chunks/framework.CBLuZwrP.js";import{R as S}from"./chunks/theme.DW52ZK5I.js";function i(e){if(e.extends){const a=i(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const s=i(S),T=P({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=v();return y(()=>{w(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&C(),R(),b(),s.setup&&s.setup(),()=>E(s.Layout)}});async function _(){globalThis.__VITEPRESS__=!0;const e=x(),a=j();a.provide(u,e);const t=l(e.route);return a.provide(c,t),a.component("Content",f),a.component("ClientOnly",d),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),s.enhanceApp&&await s.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function j(){return h(T)}function x(){let e=o,a;return g(t=>{let n=A(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=import(n)),o&&(e=!1),r},s.NotFound)}o&&_().then(({app:e,router:a,data:t})=>{a.go().then(()=>{p(a.route,t.site),e.mount("#app")})});export{_ as createApp}; diff --git a/dev/assets/chunks/@localSearchIndexroot.BxSwYjVK.js b/dev/assets/chunks/@localSearchIndexroot.BxSwYjVK.js deleted file mode 100644 index ce0e936..0000000 --- a/dev/assets/chunks/@localSearchIndexroot.BxSwYjVK.js +++ /dev/null @@ -1 +0,0 @@ -const i='{"documentCount":145,"nextId":145,"documentIds":{"0":"/dev/constraints/comparison_constraints#Constraints.jl:-Streamlining-Constraint-Definition-and-Integration-in-Julia","1":"/dev/constraints/comparison_constraints#Comparison-based-Constraints","2":"/dev/constraints/connection_constraints#Constraints.jl:-Streamlining-Constraint-Definition-and-Integration-in-Julia","3":"/dev/constraints/connection_constraints#Connection-Constraints","4":"/dev/constraints/constraint_commons#constraintcommons-jl","5":"/dev/constraints/constraint_commons#parameters","6":"/dev/constraints/constraint_commons#performances","7":"/dev/constraints/constraint_commons#languages","8":"/dev/constraints/constraint_commons#Performances-2","9":"/dev/constraints/constraint_commons#extensions","10":"/dev/constraints/constraint_commons#Performances-3","11":"/dev/constraints/constraint_commons#sampling","12":"/dev/constraints/constraint_commons#Performances-4","13":"/dev/constraints/constraint_commons#extrema","14":"/dev/constraints/constraint_commons#Performances-5","15":"/dev/constraints/constraint_commons#dictionaries","16":"/dev/constraints/constraint_commons#Performances-6","17":"/dev/constraints/constraint_domains#ConstraintDomains.jl:-Defining-and-Exploring-Variable-Domains-within-JuliaConstraints","18":"/dev/constraints/constraint_domains#Key-Features-and-Functionalities","19":"/dev/constraints/constraint_domains#Empowering-Constraint-Programming-in-Julia","20":"/dev/constraints/constraint_domains#commons","21":"/dev/constraints/constraint_domains#Extension-to-Base-module","22":"/dev/constraints/constraint_domains#performances","23":"/dev/constraints/constraint_domains#continuous","24":"/dev/constraints/constraint_domains#Extension-to-Base-module-2","25":"/dev/constraints/constraint_domains#discrete","26":"/dev/constraints/constraint_domains#Extension-to-Base-module-3","27":"/dev/constraints/constraint_domains#general","28":"/dev/constraints/constraint_domains#exploration","29":"/dev/constraints/constraint_domains#parameters","30":"/dev/constraints/constraint_models#constraintmodels-jl","31":"/dev/constraints/constraints#Constraints.jl:-Streamlining-Constraint-Definition-and-Integration-in-Julia","32":"/dev/constraints/constraints#Key-Features-and-Functionalities","33":"/dev/constraints/constraints#Enabling-Advanced-Modeling-in-Constraint-Programming","34":"/dev/constraints/constraints#Basic-tools","35":"/dev/constraints/constraints#Usual-constraints-(based-on-and-including-XCSP3-core-categories)","36":"/dev/constraints/counting_summing_constraints#Constraints.jl:-Streamlining-Constraint-Definition-and-Integration-in-Julia","37":"/dev/constraints/counting_summing_constraints#Counting-and-Summing-Constraints","38":"/dev/constraints/elementary_constraints#Constraints.jl:-Streamlining-Constraint-Definition-and-Integration-in-Julia","39":"/dev/constraints/elementary_constraints#Elementary-Constraints","40":"/dev/constraints/generic_constraints#Generic-Constraints","41":"/dev/constraints/generic_constraints#Intention-Constraints","42":"/dev/constraints/generic_constraints#Defining-an-intention-constraint-in-JC-API","43":"/dev/constraints/generic_constraints#apis","44":"/dev/constraints/generic_constraints#Test-for-DocumenterVitePress-Issue","45":"/dev/constraints/generic_constraints#Specific-documentation","46":"/dev/constraints/generic_constraints#Extension-Constraints","47":"/dev/constraints/graph_constraints#Constraints.jl:-Streamlining-Constraint-Definition-and-Integration-in-Julia","48":"/dev/constraints/graph_constraints#Constraints-on-Graphs","49":"/dev/constraints/intro#Introduction-to-basics-constraint-based-modeling-tools","50":"/dev/constraints/intro#Domain-defined-variables","51":"/dev/constraints/intro#Constraints.jl:-A-versatile-API","52":"/dev/constraints/intro#Models-Through-ConstraintModels.jl","53":"/dev/constraints/intro#Internal-Aspects","54":"/dev/constraints/language_constraints#Constraints.jl:-Streamlining-Constraint-Definition-and-Integration-in-Julia","55":"/dev/constraints/language_constraints#Constraints-defined-from-Languages","56":"/dev/constraints/packing_scheduling_constraints#Constraints.jl:-Streamlining-Constraint-Definition-and-Integration-in-Julia","57":"/dev/constraints/packing_scheduling_constraints#Packing-and-Scheduling-Constraints","58":"/dev/cp/advanced#Advanced-Constraint-Programming-Techniques","59":"/dev/cp/advanced#Global-Constraints-and-Their-Uses","60":"/dev/cp/advanced#Search-Strategies-and-Optimization","61":"/dev/cp/applications#Applying-Optimization-Methods","62":"/dev/cp/applications#Case-Studies-and-Real-World-Applications","63":"/dev/cp/applications#From-Theory-to-Practice","64":"/dev/cp/contribution#Community-and-Contribution","65":"/dev/cp/contribution#Joining-the-JuliaConstraint-Community","66":"/dev/cp/contribution#Future-Directions","67":"/dev/cp/cp101#Constraint-Programming-101","68":"/dev/cp/cp101#What-is-Constraint-Programming?","69":"/dev/cp/cp101#Basic-Concepts-and-Terminology","70":"/dev/cp/cp101#How-CP-differs-from-other-optimization-techniques","71":"/dev/cp/ecosystem#Exploring-JuliaConstraint-Packages","72":"/dev/cp/ecosystem#Package-Overviews","73":"/dev/cp/ecosystem#Installation-and-Getting-Started-Guides","74":"/dev/cp/getting_started#Getting-Started-with-Julia-for-CP-and-Optimization","75":"/dev/cp/getting_started#Why-Julia?","76":"/dev/cp/getting_started#Setting-Up-Your-Julia-Environment","77":"/dev/cp/getting_started#Your-First-Julia-CP-Model","78":"/dev/cp/intro#Welcome-to-Julia-Constraints","79":"/dev/cp/models#Building-and-Analyzing-Models","80":"/dev/cp/models#Modeling-Best-Practices","81":"/dev/cp/models#Performance-Analysis-and-Improvement","82":"/dev/cp/opt#Dive-into-Optimization","83":"/dev/cp/opt#Understanding-Optimization","84":"/dev/cp/opt#Metaheuristics-Overview","85":"/dev/cp/opt#Mathematical-Programming-Basics","86":"/dev/cp/tuto_xp#Tutorials-and-Experiments","87":"/dev/cp/tuto_xp#Hands-On-Tutorials","88":"/dev/cp/tuto_xp#Experimental-Analysis","89":"/dev/full_api#Full-API","90":"/dev/index-old#juliaconstraints","91":"/dev/index-old#Operational-Research-vs-Constraint-Programming","92":"/dev/index-old#Constraint-Based-Local-Search","93":"/dev/learning/aggregation#Aggregation-Layer","94":"/dev/learning/aggregation#List-of-aggregations","95":"/dev/learning/aggregation#Layer-generation","96":"/dev/learning/arithmetic#Arithmetic-Layer","97":"/dev/learning/arithmetic#List-of-arithmetic-operations","98":"/dev/learning/arithmetic#Layer-generation","99":"/dev/learning/comparison#Comparison-Layer","100":"/dev/learning/comparison#List-of-comparisons","101":"/dev/learning/comparison#non-parametric","102":"/dev/learning/comparison#Param:-:val","103":"/dev/learning/comparison#Layer-generation","104":"/dev/learning/compositional_networks#compositionalnetworks-jl","105":"/dev/learning/compositional_networks#utilities","106":"/dev/learning/compositional_networks#metrics","107":"/dev/learning/constraint_learning#constraintlearning-jl","108":"/dev/learning/intro#Learning-about-Constraints","109":"/dev/learning/layers#A-layer-structure-for-any-ICN","110":"/dev/learning/qubo_constraints#Introduction-to-QUBOConstraints.jl","111":"/dev/learning/qubo_constraints#Basic-features","112":"/dev/learning/qubo_encoding#Encoding-for-QUBO-programs","113":"/dev/learning/qubo_learning#Learning-QUBO-matrices","114":"/dev/learning/qubo_learning#interface","115":"/dev/learning/qubo_learning#Examples-with-various-optimizers","116":"/dev/learning/qubo_learning#Gradient-Descent","117":"/dev/learning/qubo_learning#Constraint-based-Local-Search","118":"/dev/learning/transformation#Transformations-Layer","119":"/dev/learning/transformation#List-of-transformations","120":"/dev/learning/transformation#non-parametric","121":"/dev/learning/transformation#Param:-:val","122":"/dev/learning/transformation#Layer-generation","123":"/dev/meta/meta_strategist#metastrategist-jl","124":"/dev/perf/api#api","125":"/dev/perf/benchmark_ext#BenchmarkTools-Extension","126":"/dev/perf/benchmark_ext#usage","127":"/dev/perf/benchmark_ext#options","128":"/dev/perf/chairmarks_ext#Chairmarks-Extension","129":"/dev/perf/chairmarks_ext#usage","130":"/dev/perf/chairmarks_ext#options","131":"/dev/perf/perf_checker#perfchecker-jl","132":"/dev/perf/perf_checker#usage","133":"/dev/perf/perf_interface#Extending-PerfChecker","134":"/dev/perf/perf_interface#The-Default-Options","135":"/dev/perf/perf_interface#Package-initialization","136":"/dev/perf/perf_interface#Preparatory-Code:","137":"/dev/perf/perf_interface#Main-Code-to-be-Performance-Tested","138":"/dev/perf/perf_interface#Post-Performance-Testing-Code","139":"/dev/perf/perf_interface#Converting-the-result-into-a-Table","140":"/dev/perf/tutorial#tutorial","141":"/dev/public_api#Public-API","142":"/dev/solvers/cbls#cbls-jl","143":"/dev/solvers/intro#solvers","144":"/dev/solvers/local_search_solvers#localsearchsolvers-jl"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[9,1,1],"1":[3,9,75],"2":[9,1,1],"3":[2,9,98],"4":[2,1,66],"5":[1,2,117],"6":[1,3,1],"7":[1,2,86],"8":[1,3,1],"9":[1,2,46],"10":[1,3,1],"11":[1,2,42],"12":[1,3,1],"13":[1,2,31],"14":[1,3,1],"15":[1,2,36],"16":[1,3,1],"17":[9,1,42],"18":[4,9,168],"19":[5,9,54],"20":[1,9,137],"21":[4,10,87],"22":[1,10,1],"23":[1,9,127],"24":[4,10,94],"25":[1,9,138],"26":[4,10,98],"27":[1,9,19],"28":[1,9,96],"29":[1,9,115],"30":[2,1,287],"31":[9,1,39],"32":[4,9,170],"33":[6,9,57],"34":[2,9,185],"35":[10,9,208],"36":[9,1,1],"37":[4,9,134],"38":[9,1,1],"39":[2,9,57],"40":[2,1,17],"41":[2,2,77],"42":[7,3,69],"43":[1,3,213],"44":[4,3,13],"45":[2,3,77],"46":[2,2,55],"47":[9,1,1],"48":[3,9,71],"49":[7,1,24],"50":[3,7,28],"51":[5,7,35],"52":[4,7,38],"53":[2,7,40],"54":[9,1,1],"55":[4,9,126],"56":[9,1,1],"57":[4,9,106],"58":[4,1,1],"59":[5,4,12],"60":[4,4,12],"61":[3,1,1],"62":[6,3,11],"63":[4,3,18],"64":[3,1,1],"65":[4,3,14],"66":[2,3,13],"67":[3,1,1],"68":[5,3,10],"69":[4,3,10],"70":[7,3,10],"71":[3,1,1],"72":[2,3,13],"73":[5,1,13],"74":[8,1,1],"75":[3,8,16],"76":[5,8,104],"77":[5,8,191],"78":[4,1,35],"79":[4,1,1],"80":[3,4,12],"81":[4,4,11],"82":[3,1,1],"83":[2,3,12],"84":[2,3,11],"85":[3,3,12],"86":[3,1,1],"87":[3,3,11],"88":[2,3,15],"89":[2,1,1160],"90":[1,1,122],"91":[5,1,93],"92":[4,1,80],"93":[2,1,11],"94":[3,2,26],"95":[2,2,26],"96":[2,1,11],"97":[4,2,22],"98":[2,2,25],"99":[2,1,11],"100":[3,2,10],"101":[2,5,38],"102":[2,5,18],"103":[2,5,50],"104":[2,1,5],"105":[1,2,94],"106":[1,2,46],"107":[2,1,232],"108":[3,1,6],"109":[6,1,145],"110":[4,1,5],"111":[2,4,35],"112":[4,1,64],"113":[3,1,1],"114":[1,3,31],"115":[4,3,1],"116":[2,7,102],"117":[4,7,1],"118":[2,1,30],"119":[3,2,10],"120":[2,5,67],"121":[2,5,20],"122":[2,5,159],"123":[2,1,5],"124":[1,1,57],"125":[2,1,26],"126":[1,2,48],"127":[1,2,31],"128":[2,1,26],"129":[1,2,49],"130":[1,2,25],"131":[2,1,51],"132":[1,2,150],"133":[2,1,49],"134":[3,2,53],"135":[2,2,38],"136":[3,2,58],"137":[6,2,61],"138":[4,2,42],"139":[6,2,59],"140":[1,1,129],"141":[2,1,609],"142":[2,1,473],"143":[1,1,3],"144":[2,1,508]},"averageFieldLength":[3.2,3.4896551724137943,67.54482758620689],"storedFields":{"0":{"title":"Constraints.jl: Streamlining Constraint Definition and Integration in Julia","titles":[]},"1":{"title":"Comparison-based Constraints","titles":["Constraints.jl: Streamlining Constraint Definition and Integration in Julia"]},"2":{"title":"Constraints.jl: Streamlining Constraint Definition and Integration in Julia","titles":[]},"3":{"title":"Connection Constraints","titles":["Constraints.jl: Streamlining Constraint Definition and Integration in Julia"]},"4":{"title":"ConstraintCommons.jl","titles":[]},"5":{"title":"Parameters","titles":["ConstraintCommons.jl"]},"6":{"title":"Performances","titles":["ConstraintCommons.jl","Parameters"]},"7":{"title":"Languages","titles":["ConstraintCommons.jl"]},"8":{"title":"Performances","titles":["ConstraintCommons.jl","Languages"]},"9":{"title":"Extensions","titles":["ConstraintCommons.jl"]},"10":{"title":"Performances","titles":["ConstraintCommons.jl","Extensions"]},"11":{"title":"Sampling","titles":["ConstraintCommons.jl"]},"12":{"title":"Performances","titles":["ConstraintCommons.jl","Sampling"]},"13":{"title":"Extrema","titles":["ConstraintCommons.jl"]},"14":{"title":"Performances","titles":["ConstraintCommons.jl","Extrema"]},"15":{"title":"Dictionaries","titles":["ConstraintCommons.jl"]},"16":{"title":"Performances","titles":["ConstraintCommons.jl","Dictionaries"]},"17":{"title":"ConstraintDomains.jl: Defining and Exploring Variable Domains within JuliaConstraints","titles":[]},"18":{"title":"Key Features and Functionalities","titles":["ConstraintDomains.jl: Defining and Exploring Variable Domains within JuliaConstraints"]},"19":{"title":"Empowering Constraint Programming in Julia","titles":["ConstraintDomains.jl: Defining and Exploring Variable Domains within JuliaConstraints"]},"20":{"title":"Commons","titles":["ConstraintDomains.jl: Defining and Exploring Variable Domains within JuliaConstraints"]},"21":{"title":"Extension to Base module","titles":["ConstraintDomains.jl: Defining and Exploring Variable Domains within JuliaConstraints","Commons"]},"22":{"title":"Performances","titles":["ConstraintDomains.jl: Defining and Exploring Variable Domains within JuliaConstraints","Commons"]},"23":{"title":"Continuous","titles":["ConstraintDomains.jl: Defining and Exploring Variable Domains within JuliaConstraints"]},"24":{"title":"Extension to Base module","titles":["ConstraintDomains.jl: Defining and Exploring Variable Domains within JuliaConstraints","Continuous"]},"25":{"title":"Discrete","titles":["ConstraintDomains.jl: Defining and Exploring Variable Domains within JuliaConstraints"]},"26":{"title":"Extension to Base module","titles":["ConstraintDomains.jl: Defining and Exploring Variable Domains within JuliaConstraints","Discrete"]},"27":{"title":"General","titles":["ConstraintDomains.jl: Defining and Exploring Variable Domains within JuliaConstraints"]},"28":{"title":"Exploration","titles":["ConstraintDomains.jl: Defining and Exploring Variable Domains within JuliaConstraints"]},"29":{"title":"Parameters","titles":["ConstraintDomains.jl: Defining and Exploring Variable Domains within JuliaConstraints"]},"30":{"title":"ConstraintModels.jl","titles":[]},"31":{"title":"Constraints.jl: Streamlining Constraint Definition and Integration in Julia","titles":[]},"32":{"title":"Key Features and Functionalities","titles":["Constraints.jl: Streamlining Constraint Definition and Integration in Julia"]},"33":{"title":"Enabling Advanced Modeling in Constraint Programming","titles":["Constraints.jl: Streamlining Constraint Definition and Integration in Julia"]},"34":{"title":"Basic tools","titles":["Constraints.jl: Streamlining Constraint Definition and Integration in Julia"]},"35":{"title":"Usual constraints (based on and including XCSP3-core categories)","titles":["Constraints.jl: Streamlining Constraint Definition and Integration in Julia"]},"36":{"title":"Constraints.jl: Streamlining Constraint Definition and Integration in Julia","titles":[]},"37":{"title":"Counting and Summing Constraints","titles":["Constraints.jl: Streamlining Constraint Definition and Integration in Julia"]},"38":{"title":"Constraints.jl: Streamlining Constraint Definition and Integration in Julia","titles":[]},"39":{"title":"Elementary Constraints","titles":["Constraints.jl: Streamlining Constraint Definition and Integration in Julia"]},"40":{"title":"Generic Constraints","titles":[]},"41":{"title":"Intention Constraints","titles":["Generic Constraints"]},"42":{"title":"Defining an intention constraint in JC-API","titles":["Generic Constraints","Intention Constraints"]},"43":{"title":"APIs","titles":["Generic Constraints","Intention Constraints"]},"44":{"title":"Test for DocumenterVitePress Issue","titles":["Generic Constraints","Intention Constraints"]},"45":{"title":"Specific documentation","titles":["Generic Constraints","Intention Constraints"]},"46":{"title":"Extension Constraints","titles":["Generic Constraints"]},"47":{"title":"Constraints.jl: Streamlining Constraint Definition and Integration in Julia","titles":[]},"48":{"title":"Constraints on Graphs","titles":["Constraints.jl: Streamlining Constraint Definition and Integration in Julia"]},"49":{"title":"Introduction to basics constraint-based modeling tools","titles":[]},"50":{"title":"Domain-defined variables","titles":["Introduction to basics constraint-based modeling tools"]},"51":{"title":"Constraints.jl: A versatile API","titles":["Introduction to basics constraint-based modeling tools"]},"52":{"title":"Models Through ConstraintModels.jl","titles":["Introduction to basics constraint-based modeling tools"]},"53":{"title":"Internal Aspects","titles":["Introduction to basics constraint-based modeling tools"]},"54":{"title":"Constraints.jl: Streamlining Constraint Definition and Integration in Julia","titles":[]},"55":{"title":"Constraints defined from Languages","titles":["Constraints.jl: Streamlining Constraint Definition and Integration in Julia"]},"56":{"title":"Constraints.jl: Streamlining Constraint Definition and Integration in Julia","titles":[]},"57":{"title":"Packing and Scheduling Constraints","titles":["Constraints.jl: Streamlining Constraint Definition and Integration in Julia"]},"58":{"title":"Advanced Constraint Programming Techniques","titles":[]},"59":{"title":"Global Constraints and Their Uses","titles":["Advanced Constraint Programming Techniques"]},"60":{"title":"Search Strategies and Optimization","titles":["Advanced Constraint Programming Techniques"]},"61":{"title":"Applying Optimization Methods","titles":[]},"62":{"title":"Case Studies and Real-World Applications","titles":["Applying Optimization Methods"]},"63":{"title":"From Theory to Practice","titles":["Applying Optimization Methods"]},"64":{"title":"Community and Contribution","titles":[]},"65":{"title":"Joining the JuliaConstraint Community","titles":["Community and Contribution"]},"66":{"title":"Future Directions","titles":["Community and Contribution"]},"67":{"title":"Constraint Programming 101","titles":[]},"68":{"title":"What is Constraint Programming?","titles":["Constraint Programming 101"]},"69":{"title":"Basic Concepts and Terminology","titles":["Constraint Programming 101"]},"70":{"title":"How CP differs from other optimization techniques","titles":["Constraint Programming 101"]},"71":{"title":"Exploring JuliaConstraint Packages","titles":[]},"72":{"title":"Package Overviews","titles":["Exploring JuliaConstraint Packages"]},"73":{"title":"Installation and Getting Started Guides","titles":[]},"74":{"title":"Getting Started with Julia for CP and Optimization","titles":[]},"75":{"title":"Why Julia?","titles":["Getting Started with Julia for CP and Optimization"]},"76":{"title":"Setting Up Your Julia Environment","titles":["Getting Started with Julia for CP and Optimization"]},"77":{"title":"Your First Julia CP Model","titles":["Getting Started with Julia for CP and Optimization"]},"78":{"title":"Welcome to Julia Constraints","titles":[]},"79":{"title":"Building and Analyzing Models","titles":[]},"80":{"title":"Modeling Best Practices","titles":["Building and Analyzing Models"]},"81":{"title":"Performance Analysis and Improvement","titles":["Building and Analyzing Models"]},"82":{"title":"Dive into Optimization","titles":[]},"83":{"title":"Understanding Optimization","titles":["Dive into Optimization"]},"84":{"title":"Metaheuristics Overview","titles":["Dive into Optimization"]},"85":{"title":"Mathematical Programming Basics","titles":["Dive into Optimization"]},"86":{"title":"Tutorials and Experiments","titles":[]},"87":{"title":"Hands-On Tutorials","titles":["Tutorials and Experiments"]},"88":{"title":"Experimental Analysis","titles":["Tutorials and Experiments"]},"89":{"title":"Full API","titles":[]},"90":{"title":"JuliaConstraints","titles":[]},"91":{"title":"Operational Research vs Constraint Programming","titles":["JuliaConstraints"]},"92":{"title":"Constraint-Based Local Search","titles":["JuliaConstraints"]},"93":{"title":"Aggregation Layer","titles":[]},"94":{"title":"List of aggregations","titles":["Aggregation Layer"]},"95":{"title":"Layer generation","titles":["Aggregation Layer"]},"96":{"title":"Arithmetic Layer","titles":[]},"97":{"title":"List of arithmetic operations","titles":["Arithmetic Layer"]},"98":{"title":"Layer generation","titles":["Arithmetic Layer"]},"99":{"title":"Comparison Layer","titles":[]},"100":{"title":"List of comparisons","titles":["Comparison Layer"]},"101":{"title":"Non-parametric","titles":["Comparison Layer","List of comparisons"]},"102":{"title":"Param: :val","titles":["Comparison Layer","List of comparisons"]},"103":{"title":"Layer generation","titles":["Comparison Layer","List of comparisons"]},"104":{"title":"CompositionalNetworks.jl","titles":[]},"105":{"title":"Utilities","titles":["CompositionalNetworks.jl"]},"106":{"title":"Metrics","titles":["CompositionalNetworks.jl"]},"107":{"title":"ConstraintLearning.jl","titles":[]},"108":{"title":"Learning about Constraints","titles":[]},"109":{"title":"A layer structure for any ICN","titles":[]},"110":{"title":"Introduction to QUBOConstraints.jl","titles":[]},"111":{"title":"Basic features","titles":["Introduction to QUBOConstraints.jl"]},"112":{"title":"Encoding for QUBO programs","titles":[]},"113":{"title":"Learning QUBO matrices","titles":[]},"114":{"title":"Interface","titles":["Learning QUBO matrices"]},"115":{"title":"Examples with various optimizers","titles":["Learning QUBO matrices"]},"116":{"title":"Gradient Descent","titles":["Learning QUBO matrices","Examples with various optimizers"]},"117":{"title":"Constraint-based Local Search","titles":["Learning QUBO matrices","Examples with various optimizers"]},"118":{"title":"Transformations Layer","titles":[]},"119":{"title":"List of transformations","titles":["Transformations Layer"]},"120":{"title":"Non-parametric","titles":["Transformations Layer","List of transformations"]},"121":{"title":"Param: :val","titles":["Transformations Layer","List of transformations"]},"122":{"title":"Layer generation","titles":["Transformations Layer","List of transformations"]},"123":{"title":"MetaStrategist.jl","titles":[]},"124":{"title":"API","titles":[]},"125":{"title":"BenchmarkTools Extension","titles":[]},"126":{"title":"Usage","titles":["BenchmarkTools Extension"]},"127":{"title":"Options","titles":["BenchmarkTools Extension"]},"128":{"title":"Chairmarks Extension","titles":[]},"129":{"title":"Usage","titles":["Chairmarks Extension"]},"130":{"title":"Options","titles":["Chairmarks Extension"]},"131":{"title":"PerfChecker.jl","titles":[]},"132":{"title":"Usage","titles":["PerfChecker.jl"]},"133":{"title":"Extending PerfChecker","titles":[]},"134":{"title":"The Default Options","titles":["Extending PerfChecker"]},"135":{"title":"Package initialization","titles":["Extending PerfChecker"]},"136":{"title":"Preparatory Code:","titles":["Extending PerfChecker"]},"137":{"title":"Main Code to be Performance Tested","titles":["Extending PerfChecker"]},"138":{"title":"Post Performance Testing Code","titles":["Extending PerfChecker"]},"139":{"title":"Converting the result into a Table","titles":["Extending PerfChecker"]},"140":{"title":"Tutorial","titles":[]},"141":{"title":"Public API","titles":[]},"142":{"title":"CBLS.jl","titles":[]},"143":{"title":"Solvers","titles":[]},"144":{"title":"LocalSearchSolvers.jl","titles":[]}},"dirtCount":0,"index":[["∅",{"2":{"142":1}}],["∩",{"2":{"142":1}}],["$kwarg",{"2":{"140":1}}],["$d",{"2":{"137":1}}],["$block",{"2":{"136":1,"137":1}}],["θ",{"2":{"116":2}}],["^2",{"2":{"116":1}}],["η",{"2":{"107":1,"116":6}}],["σ",{"2":{"89":2,"111":2,"141":2}}],["∉",{"2":{"89":3,"142":2}}],["⋯",{"2":{"77":2}}],["×",{"2":{"77":3}}],["+",{"2":{"45":2,"89":9,"90":1,"94":1,"126":1,"129":1}}],["z",{"2":{"43":12}}],["zeros",{"2":{"116":3}}],["zero",{"2":{"30":1,"57":11,"89":11}}],["\\tindex",{"2":{"43":1}}],["\\tzero",{"2":{"43":1}}],["\\tcondition",{"2":{"43":2}}],["\\theights",{"2":{"43":1}}],["\\tlengths",{"2":{"43":2}}],["\\tlist",{"2":{"43":5}}],["\\torigins",{"2":{"43":2}}],["\\t",{"2":{"43":5}}],["\\t\\toperator",{"2":{"43":1}}],["\\t\\toccurs",{"2":{"43":1}}],["\\t\\texcept",{"2":{"43":1}}],["\\t\\tvalues",{"2":{"43":2}}],["\\t\\tcondition",{"2":{"43":3}}],["≥",{"2":{"43":4,"116":1}}],[">",{"2":{"43":16,"48":1,"89":1,"116":8,"142":2}}],["≠",{"2":{"42":1,"43":1}}],["||",{"2":{"89":2,"142":1}}],["|the",{"2":{"42":1}}],["|≠|x",{"2":{"42":1}}],["|x",{"2":{"42":1}}],["−x",{"2":{"42":2}}],["yes",{"2":{"144":1}}],["yet",{"2":{"18":1,"20":1,"23":1,"30":1,"32":1,"89":2}}],["you",{"2":{"90":1,"126":1,"129":1}}],["your",{"0":{"76":1,"77":1}}],["y",{"2":{"41":2,"43":23,"46":1,"90":1,"107":4,"116":7,"144":2}}],["y=1",{"2":{"35":1,"89":1}}],["7",{"2":{"30":3,"37":2,"57":3,"89":5,"124":1}}],["`function",{"2":{"144":1}}],["`struct",{"2":{"144":1}}],["``",{"2":{"142":3}}],["`",{"2":{"55":1,"89":1,"107":1}}],["`automaton`",{"2":{"55":1,"89":1}}],["`x`",{"2":{"55":2,"89":2}}],["`grid`",{"2":{"30":1}}],["`m`",{"2":{"30":1}}],["`rangedomain``",{"2":{"20":1,"23":1,"25":1,"89":1,"141":1}}],["q",{"2":{"107":7,"116":18}}],["qubooptimizer",{"2":{"107":2}}],["qubogradientoptimizer",{"2":{"107":4}}],["qubo",{"0":{"112":1,"113":1},"1":{"114":1,"115":1,"116":1,"117":1},"2":{"89":5,"107":4,"111":4,"114":1,"141":2}}],["quboconstraints",{"0":{"110":1},"1":{"111":1},"2":{"89":7,"107":1,"110":1,"111":2,"112":3,"114":2,"116":1,"141":5}}],["quite",{"2":{"77":1}}],["quote",{"2":{"135":1,"136":1,"137":1}}],["quot",{"2":{"34":6,"57":4,"77":6,"89":10,"90":4,"132":2,"136":2}}],["quadractic",{"2":{"30":1}}],["queens",{"2":{"30":4}}],["qap",{"2":{"30":1}}],["≤6",{"2":{"43":1}}],["≤12",{"2":{"43":1}}],["≤1",{"2":{"43":1}}],["≤10",{"2":{"43":3}}],["≤2",{"2":{"43":1}}],["≤5",{"2":{"43":17}}],["≤4",{"2":{"43":7}}],["≤",{"2":{"21":4,"24":4,"26":4,"43":5,"57":1,"77":2,"89":5}}],["9×9",{"2":{"30":4}}],["9",{"2":{"20":1,"23":1,"25":1,"30":4,"43":3,"77":7,"89":1,"141":1}}],["8",{"2":{"30":3,"37":5,"43":9,"57":1,"89":6}}],["86",{"2":{"20":1,"23":1,"25":1,"89":1,"141":1}}],["89",{"2":{"20":2,"23":2,"25":2,"89":2,"141":2,"144":1}}],["right",{"2":{"89":18,"120":15,"122":3}}],["rich",{"2":{"19":1}}],["round",{"2":{"116":1,"144":1}}],["routing",{"2":{"48":2,"89":2,"91":1}}],["role",{"2":{"85":1}}],["robust",{"2":{"33":1,"53":1}}],["rows",{"2":{"77":1}}],["row",{"2":{"30":1,"77":1}}],["rules",{"2":{"55":2,"89":2,"142":1}}],["ruler",{"2":{"30":1,"42":4,"45":2,"89":2,"142":2}}],["runtime",{"2":{"144":1}}],["runs",{"2":{"136":1,"137":1}}],["running",{"2":{"136":1}}],["run",{"2":{"30":1,"77":1,"107":1,"136":1,"137":1,"138":1,"142":1,"144":5}}],["rawoptimizerattribute",{"2":{"142":2}}],["raw",{"2":{"30":2}}],["rates",{"2":{"30":1}}],["rate",{"2":{"30":1}}],["rand",{"2":{"18":1,"20":1,"21":16,"24":9,"26":9,"29":8,"89":13,"140":1,"141":1,"144":2}}],["randomly",{"2":{"21":2,"24":1,"26":1,"29":1,"89":1,"144":1}}],["random",{"2":{"18":2,"21":2,"24":1,"26":1,"29":10,"89":10,"141":1,"144":2}}],["rangedomain",{"2":{"18":1,"25":2,"27":2,"89":4,"141":2}}],["ranges",{"2":{"18":3,"25":1,"89":1,"141":1}}],["range",{"2":{"17":1,"18":1,"20":1,"23":1,"25":3,"32":2,"50":1,"51":1,"55":1,"89":4,"141":3,"142":1}}],["r",{"2":{"20":2,"23":2,"25":2,"30":2,"55":3,"89":5,"116":8,"141":2}}],["remote",{"2":{"144":2}}],["remotely",{"2":{"144":1}}],["re",{"2":{"144":1}}],["recommended",{"2":{"142":1,"144":1}}],["recognize",{"2":{"7":1}}],["ref",{"2":{"118":1,"144":6}}],["reference",{"2":{"133":1}}],["refer",{"2":{"30":4}}],["relies",{"2":{"118":1}}],["related",{"2":{"89":1,"107":1,"108":1,"122":1,"125":1,"128":1,"139":1,"141":1}}],["relate",{"2":{"89":1,"122":1}}],["relatively",{"2":{"89":1,"105":1,"144":1}}],["relationships",{"2":{"46":1}}],["rev",{"2":{"89":5,"120":1,"122":1}}],["reverse",{"2":{"30":1,"89":1,"122":1,"140":2}}],["registries",{"2":{"124":1}}],["regions",{"2":{"77":1}}],["regularconstraint",{"2":{"142":1}}],["regularization",{"2":{"89":2,"141":2}}],["regular",{"2":{"4":1,"5":1,"55":9,"89":10,"142":2}}],["reproducible",{"2":{"131":1}}],["represented",{"2":{"55":2,"89":2,"136":1,"142":1}}],["represents",{"2":{"35":1,"89":1,"142":3}}],["represent",{"2":{"18":1}}],["representing",{"2":{"18":1,"55":1,"89":1,"142":3}}],["repositories",{"2":{"90":1}}],["replace",{"2":{"144":1}}],["repl",{"2":{"76":1}}],["reusable",{"2":{"52":1}}],["reduce",{"2":{"89":3,"91":1,"97":2,"105":1}}],["reduced",{"2":{"28":1,"89":1,"141":1}}],["redundant",{"2":{"32":1}}],["retrieve",{"2":{"30":1}}],["returned",{"2":{"34":1,"89":1}}],["returns",{"2":{"9":2,"21":3,"24":2,"26":2,"28":1,"29":1,"34":13,"89":19,"122":1,"124":1,"126":1,"129":1,"141":3,"142":19,"144":1}}],["return",{"2":{"1":3,"3":4,"5":1,"7":3,"20":3,"21":5,"23":3,"24":8,"25":3,"26":8,"29":2,"30":1,"34":7,"35":6,"37":4,"39":1,"48":1,"55":1,"57":2,"89":63,"105":1,"107":4,"109":5,"116":8,"134":1,"137":1,"139":1,"140":1,"141":20,"142":1,"144":21}}],["reach",{"2":{"89":1,"106":1,"141":1}}],["reactants",{"2":{"30":2}}],["reactions",{"2":{"30":1}}],["reaction",{"2":{"30":4}}],["readers",{"2":{"63":1,"65":1,"78":1}}],["realm",{"2":{"19":1}}],["real",{"0":{"62":1},"2":{"18":1,"20":3,"23":5,"25":4,"34":1,"63":1,"78":1,"89":7,"141":6,"142":2}}],["requires",{"2":{"140":1}}],["required",{"2":{"28":1,"89":2,"114":1,"141":1}}],["requirements",{"2":{"7":2,"89":2}}],["reinforcement",{"2":{"28":1,"89":1,"90":1,"141":1}}],["resume",{"2":{"144":1}}],["result",{"0":{"139":1},"2":{"34":3,"89":23,"105":1,"120":8,"122":2,"136":1,"137":1,"138":1}}],["results",{"2":{"23":2,"30":1,"32":1,"34":1,"89":3,"132":3,"140":1}}],["restart",{"2":{"144":6}}],["restricting",{"2":{"144":2}}],["restriction",{"2":{"34":2,"89":2,"141":2}}],["restricts",{"2":{"37":3,"89":3}}],["restricted",{"2":{"21":1,"24":1,"26":1,"144":4}}],["respect",{"2":{"89":1,"122":1}}],["respectively",{"2":{"18":1,"30":2}}],["resource",{"2":{"52":1}}],["resources",{"2":{"18":1}}],["researchers",{"2":{"31":1}}],["research",{"0":{"91":1},"2":{"19":1,"33":1,"66":1,"90":1,"91":1}}],["δ",{"2":{"13":1,"89":1,"107":1,"116":1,"141":1}}],["heavily",{"2":{"118":1}}],["helps",{"2":{"90":1}}],["help",{"2":{"90":2,"91":1}}],["heuristic",{"2":{"77":1,"92":2}}],["heights",{"2":{"57":5,"89":5,"142":1}}],["here",{"2":{"35":1,"43":1,"89":1,"124":1,"126":1,"129":1,"132":2,"136":2,"137":1,"138":1,"140":1,"142":1}}],["highly",{"2":{"109":1}}],["highlight",{"2":{"78":1}}],["highlighting",{"2":{"65":1,"75":1}}],["high",{"2":{"90":1}}],["higher",{"2":{"41":1,"43":1}}],["highest",{"2":{"20":1,"23":1,"25":1,"89":1,"141":1,"144":1}}],["hide",{"2":{"45":2,"89":2}}],["https",{"2":{"35":1,"89":1,"141":1}}],["hot",{"2":{"89":3,"112":3,"116":1,"141":3}}],["hosts",{"2":{"90":1}}],["host",{"2":{"76":1}}],["however",{"2":{"53":1,"77":1}}],["how",{"0":{"70":1},"2":{"32":1,"41":1,"42":1,"43":17,"59":1,"65":1,"81":1,"88":1,"100":1,"119":1}}],["holds",{"2":{"90":1}}],["hold",{"2":{"3":4,"89":4,"107":1}}],["hamming",{"2":{"89":4,"106":2,"107":3,"141":4}}],["hand",{"2":{"91":1}}],["hands",{"0":{"87":1}}],["handling",{"2":{"31":1,"32":2}}],["handled",{"2":{"23":1,"89":1}}],["handle",{"2":{"20":1,"43":17,"89":1,"144":2}}],["handles",{"2":{"18":1}}],["hardware",{"2":{"76":1}}],["have",{"2":{"30":1,"35":1,"45":1,"62":1,"76":1,"89":6,"92":1,"105":2,"141":4,"142":1}}],["half",{"2":{"28":1,"89":1,"141":1}}],["has",{"2":{"11":1,"35":3,"77":1,"89":6,"109":1,"112":1,"125":1,"128":1,"133":1,"141":2,"144":10}}],["∈",{"2":{"9":1,"18":1,"20":1,"21":7,"24":7,"26":7,"89":9,"141":2,"142":2,"144":3}}],["wrappers",{"2":{"90":1}}],["wrapping",{"2":{"90":1}}],["write",{"2":{"89":2,"90":1,"141":2}}],["was",{"2":{"133":1,"144":1}}],["want",{"2":{"126":1,"129":1}}],["way",{"2":{"35":1,"41":1,"43":1,"46":1,"89":3,"126":1,"129":1,"142":1}}],["warning",{"2":{"30":1,"34":1,"89":1}}],["would",{"2":{"35":1,"89":1}}],["worse",{"2":{"144":3}}],["world",{"0":{"62":1},"2":{"63":1,"78":1}}],["works",{"2":{"34":1,"89":1,"133":1,"134":1,"141":1}}],["work",{"2":{"32":2}}],["working",{"2":{"31":1,"33":1}}],["word",{"2":{"7":6,"29":2,"55":2,"89":8,"141":1,"142":1}}],["why",{"0":{"75":1}}],["what",{"0":{"68":1},"2":{"35":1,"77":1,"78":1,"89":1}}],["whole",{"2":{"34":1,"89":1,"141":1,"144":1}}],["which",{"2":{"21":1,"30":7,"35":1,"55":2,"77":1,"89":6,"105":1,"109":1,"131":1,"133":1,"141":1,"142":1}}],["while",{"2":{"18":1,"91":2,"92":1,"144":5}}],["whether",{"2":{"19":1,"33":1,"34":1,"35":1,"37":1,"57":1,"89":4,"142":1}}],["where",{"2":{"18":1,"20":5,"21":5,"23":5,"24":4,"25":5,"26":4,"29":2,"30":1,"37":1,"45":1,"48":2,"55":1,"62":1,"89":18,"91":1,"92":2,"116":1,"132":1,"141":6,"142":8,"144":69}}],["when",{"2":{"9":2,"30":1,"77":1,"89":21,"107":2,"120":8,"122":2,"132":1,"141":2,"142":1,"144":2}}],["well",{"2":{"77":1}}],["welcome",{"0":{"78":1},"2":{"52":1}}],["weighting",{"2":{"107":1}}],["weighted",{"2":{"89":1}}],["weight",{"2":{"30":1,"89":2,"111":1,"141":1}}],["weights=nothing",{"2":{"89":1,"141":1}}],["weights",{"2":{"30":3,"89":18,"107":5,"109":6,"141":8}}],["weigths",{"2":{"30":1,"106":1,"109":1}}],["we",{"2":{"9":1,"11":1,"13":1,"15":1,"41":1,"42":1,"43":1,"76":4,"77":6}}],["w",{"2":{"7":2,"29":2,"89":4,"107":2,"109":2,"141":2}}],["wip",{"2":{"131":1}}],["width",{"2":{"35":2,"89":2,"141":2}}],["width=150",{"2":{"35":1,"89":1,"141":1}}],["wide",{"2":{"32":1,"51":1,"55":1,"89":1,"142":1}}],["wikipedia",{"2":{"30":2,"77":1}}],["without",{"2":{"89":17,"120":8}}],["with",{"0":{"74":1,"115":1},"1":{"75":1,"76":1,"77":1,"116":1,"117":1},"2":{"5":1,"7":1,"18":1,"23":1,"29":1,"30":8,"32":4,"33":1,"34":7,"35":7,"51":1,"52":1,"55":4,"57":3,"70":1,"73":1,"77":5,"89":57,"90":3,"91":3,"92":1,"103":1,"105":2,"107":3,"109":4,"120":8,"122":3,"125":1,"127":1,"128":1,"130":1,"132":2,"134":1,"135":1,"140":1,"141":10,"142":6,"144":8}}],["within",{"0":{"17":1},"1":{"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1},"2":{"4":1,"17":1,"18":1,"31":1,"32":3,"43":1,"55":2,"72":1,"76":1,"89":8,"93":1,"96":1,"99":1,"118":1,"142":6,"144":1}}],["will",{"2":{"5":1,"28":1,"35":1,"76":2,"77":1,"89":9,"95":1,"98":1,"103":1,"107":1,"109":1,"112":1,"125":1,"128":1,"141":8,"142":2}}],["kwarg",{"2":{"140":2}}],["keep",{"2":{"89":1,"111":1}}],["keyword",{"2":{"34":2,"35":8,"89":9,"133":1,"141":1,"144":1}}],["keywords",{"2":{"5":1,"89":2,"141":1}}],["key",{"0":{"18":1,"32":1},"2":{"35":2,"69":1,"89":2,"136":1,"137":1}}],["k",{"2":{"89":2,"97":2,"144":1}}],["known",{"2":{"30":1,"37":3,"89":5,"141":2,"144":1}}],["kargs",{"2":{"5":1,"34":6,"35":5,"89":7,"107":6,"141":5}}],["kind=",{"2":{"144":1}}],["kinds",{"2":{"7":1}}],["kind",{"2":{"5":1,"13":1,"28":1,"29":1,"89":3,"141":1,"144":6}}],["giving",{"2":{"132":1}}],["give",{"2":{"89":1,"141":1}}],["gives",{"2":{"43":4}}],["given",{"2":{"30":2,"34":1,"37":7,"55":2,"89":18,"107":6,"109":2,"111":1,"112":1,"132":1,"141":7,"142":6}}],["gctimes",{"2":{"139":3,"140":1}}],["gctrial",{"2":{"127":2}}],["gc=d",{"2":{"137":1}}],["gc",{"2":{"130":1,"134":1,"137":1,"139":1}}],["gcsample",{"2":{"127":2}}],["gcc",{"2":{"37":3,"89":3}}],["game",{"2":{"77":1}}],["guides",{"0":{"73":1}}],["guide",{"2":{"63":1,"140":1}}],["gt",{"2":{"42":1,"90":1,"132":6}}],["good",{"2":{"92":1,"133":1}}],["goes",{"2":{"32":1,"126":1,"129":1,"132":2}}],["goal",{"2":{"30":1,"90":1}}],["golomb",{"2":{"30":2,"42":2,"45":1,"89":1,"142":1}}],["g",{"2":{"30":1,"83":1,"89":15,"120":8,"121":1,"122":3}}],["grads",{"2":{"116":2}}],["gradientdescentoptimizer",{"2":{"116":5}}],["gradient",{"0":{"116":1},"2":{"107":1,"116":1}}],["graphs",{"0":{"48":1}}],["graph",{"2":{"30":4,"55":1,"89":1,"142":1,"144":1}}],["greater",{"2":{"34":1,"89":12,"120":7,"122":3}}],["grid",{"2":{"30":5,"77":3}}],["groundwork",{"2":{"19":1}}],["genetic",{"2":{"84":1,"89":4,"107":3,"141":4}}],["generalstate",{"2":{"144":2}}],["generally",{"2":{"30":1}}],["general",{"0":{"27":1},"2":{"144":1}}],["generated",{"2":{"89":18,"120":8,"141":1}}],["generates",{"2":{"29":1,"89":5,"109":2,"122":1,"141":1}}],["generate",{"2":{"18":1,"29":10,"35":1,"89":26,"95":1,"98":1,"103":1,"105":2,"107":2,"109":4,"122":2,"141":7}}],["generation",{"0":{"95":1,"98":1,"103":1,"122":1},"2":{"18":1,"89":2,"141":2}}],["generating",{"2":{"18":2}}],["generic",{"0":{"40":1},"1":{"41":1,"42":1,"43":1,"44":1,"45":1,"46":1},"2":{"4":1,"40":1,"45":1,"51":1,"89":1,"90":1,"142":1,"144":2}}],["getting",{"0":{"73":1,"74":1},"1":{"75":1,"76":1,"77":1},"2":{"73":1}}],["get",{"2":{"18":1,"20":1,"30":2,"35":2,"77":1,"89":5,"122":2,"124":2,"141":1,"142":6,"144":17}}],["global",{"0":{"59":1},"2":{"1":7,"3":6,"32":1,"37":4,"39":2,"48":2,"57":6,"59":1,"77":1,"89":36,"107":2,"141":5,"142":15}}],["branch",{"2":{"132":1}}],["breaking",{"2":{"124":3,"132":3}}],["broad",{"2":{"17":1}}],["build",{"2":{"90":1,"101":4,"102":4,"103":1,"105":1,"106":1,"109":1,"120":2,"121":6,"133":1,"142":2}}],["building",{"0":{"79":1},"1":{"80":1,"81":1},"2":{"80":1}}],["but",{"2":{"30":1,"77":1,"139":1}}],["block",{"2":{"77":1,"132":1,"136":4,"137":2}}],["blocks",{"2":{"51":1,"77":2}}],["blank",{"2":{"30":2}}],["binarization==",{"2":{"116":1}}],["binarization",{"2":{"89":4,"107":2,"112":4,"116":13,"141":4}}],["binarize",{"2":{"89":2,"112":2,"116":3,"141":2}}],["binarized",{"2":{"89":1,"111":1}}],["binary",{"2":{"46":1,"89":1,"112":1,"141":1}}],["bias",{"2":{"89":3,"106":1,"141":3}}],["bit",{"2":{"89":2,"112":1,"141":2}}],["bits",{"2":{"89":3,"109":2,"141":1}}],["bitvector",{"2":{"89":5,"105":4,"141":1}}],["bijective",{"2":{"3":2,"89":2}}],["b2",{"2":{"43":1}}],["b1",{"2":{"43":1}}],["bariable",{"2":{"144":1}}],["backends",{"2":{"131":1,"132":1}}],["backend",{"2":{"127":1,"130":1,"132":3,"135":1,"139":1}}],["back",{"2":{"48":2,"89":2}}],["backward",{"2":{"30":1}}],["basis",{"2":{"77":1}}],["basics",{"0":{"49":1,"85":1},"1":{"50":1,"51":1,"52":1,"53":1}}],["basic",{"0":{"34":1,"69":1,"111":1},"2":{"4":1,"18":1,"76":1,"89":5,"107":1,"111":1,"122":4,"139":1}}],["base",{"0":{"21":1,"24":1,"26":1},"2":{"4":1,"9":2,"20":3,"21":12,"24":8,"26":9,"27":3,"29":4,"30":9,"89":29,"109":1,"111":2,"141":6,"142":5,"144":4}}],["based",{"0":{"1":1,"35":1,"49":1,"92":1,"117":1},"1":{"50":1,"51":1,"52":1,"53":1},"2":{"5":3,"15":1,"18":1,"29":1,"34":1,"35":1,"49":1,"89":9,"92":1,"107":2,"109":1,"112":1,"122":2,"125":1,"128":1,"141":4,"142":1}}],["b",{"2":{"20":1,"21":8,"23":1,"24":8,"25":1,"26":8,"55":2,"89":11,"141":1}}],["boxplots",{"2":{"140":4}}],["boxes",{"2":{"77":1}}],["bounded",{"2":{"89":1}}],["bounding",{"2":{"89":6,"121":1,"122":2}}],["bounds",{"2":{"20":1,"89":1,"141":1}}],["bool=true",{"2":{"37":1,"43":1,"89":1}}],["bool=false",{"2":{"37":3,"43":1,"89":3}}],["boolparameterdomain",{"2":{"29":1,"89":1}}],["boolean",{"2":{"5":1,"11":1,"29":1,"32":1,"34":2,"89":5,"132":1,"141":2}}],["bool",{"2":{"5":1,"20":4,"23":4,"25":4,"37":1,"57":3,"89":9,"116":1,"132":1,"141":4,"142":8,"144":4}}],["both",{"2":{"4":1,"13":1,"17":1,"28":1,"30":2,"31":1,"34":2,"89":6,"91":1,"141":2,"142":1}}],["bytes",{"2":{"139":4,"140":1}}],["by",{"2":{"3":2,"4":1,"7":1,"9":2,"18":1,"19":1,"21":1,"24":1,"25":1,"26":1,"28":1,"30":1,"32":3,"33":1,"34":1,"35":1,"37":1,"41":2,"46":3,"55":4,"73":1,"87":1,"89":21,"92":1,"105":1,"107":4,"109":1,"136":2,"141":6,"142":4,"144":10}}],["below",{"2":{"140":1}}],["belongs",{"2":{"21":1,"24":1,"26":1,"144":2}}],["begin",{"2":{"126":2,"129":2,"132":2,"140":2,"142":4,"144":22}}],["benchmarked",{"2":{"126":1,"129":1}}],["benchmark",{"2":{"126":1,"139":1}}],["benchmarking",{"2":{"125":1,"128":1}}],["benchmarktools",{"0":{"125":1},"1":{"126":1,"127":1},"2":{"125":1,"126":2,"127":8,"129":1,"132":1}}],["better",{"2":{"91":1,"144":2}}],["between",{"2":{"3":2,"5":1,"13":2,"18":1,"20":3,"23":2,"25":2,"30":2,"35":1,"42":2,"43":1,"45":4,"46":1,"89":15,"141":7,"142":4,"144":1}}],["best",{"0":{"80":1},"2":{"76":1,"80":1,"107":1,"144":1}}],["been",{"2":{"62":1,"125":1,"128":1,"144":7}}],["before",{"2":{"57":8,"89":8,"136":1}}],["because",{"2":{"41":1,"46":1}}],["behave",{"2":{"32":1}}],["behaviors",{"2":{"32":1,"33":1}}],["behavior",{"2":{"18":1,"28":1,"32":1,"89":1}}],["beware",{"2":{"28":1,"89":1,"141":1}}],["beyond",{"2":{"18":1,"32":1}}],["be",{"0":{"137":1},"2":{"3":2,"18":1,"20":1,"28":2,"30":2,"34":3,"35":2,"37":2,"41":2,"46":3,"53":1,"55":3,"76":1,"77":1,"89":27,"91":2,"92":2,"95":1,"98":1,"103":1,"107":2,"109":5,"112":1,"122":1,"126":2,"129":2,"132":4,"133":1,"134":1,"135":1,"136":2,"137":2,"138":2,"139":2,"141":8,"142":18,"144":3}}],["69",{"2":{"20":1,"23":1,"25":1,"89":1,"141":1}}],["6",{"2":{"3":1,"30":2,"39":1,"43":5,"57":3,"89":5,"124":1,"133":1}}],["up",{"0":{"76":1},"2":{"144":1}}],["upcoming",{"2":{"66":1}}],["update",{"2":{"35":2,"89":2}}],["unfold",{"2":{"140":2}}],["undefkeyworderror",{"2":{"116":1}}],["under",{"2":{"89":1,"122":1}}],["understanding",{"0":{"83":1},"2":{"91":1}}],["underpin",{"2":{"17":1}}],["unrolled",{"2":{"89":1}}],["unacceptable",{"2":{"89":2,"142":1}}],["unlikely",{"2":{"53":1}}],["unordered",{"2":{"25":1,"89":1}}],["until",{"2":{"11":1,"89":1,"141":1}}],["unique",{"2":{"3":2,"42":2,"45":1,"89":3,"142":2}}],["union",{"2":{"3":4,"5":1,"7":2,"15":1,"21":2,"24":1,"26":1,"27":2,"29":2,"35":1,"37":1,"89":12,"141":4,"142":4,"144":69}}],["utility",{"2":{"32":1}}],["utilities",{"0":{"105":1},"2":{"11":1,"53":1}}],["utilized",{"2":{"4":1,"89":1,"142":1}}],["us",{"2":{"142":1}}],["usage",{"0":{"126":1,"129":1,"132":1},"2":{"43":1,"125":1,"128":1,"132":1}}],["using",{"2":{"35":1,"43":1,"77":1,"89":1,"90":1,"107":1,"126":2,"129":2,"131":1,"132":3,"135":1,"140":3,"141":1,"142":1}}],["usually",{"2":{"45":1,"89":1,"144":1}}],["usual",{"0":{"35":1},"2":{"5":8,"32":5,"34":2,"35":19,"41":1,"42":3,"43":1,"89":24,"93":1,"96":1,"99":1,"118":1,"141":14}}],["useful",{"2":{"89":1,"92":2,"109":1,"142":4,"144":1}}],["uses",{"0":{"59":1},"2":{"89":1,"91":2,"92":2,"107":1,"122":1}}],["user",{"2":{"33":1,"51":1,"136":1,"137":1,"144":2}}],["users",{"2":{"4":1,"19":1,"32":2,"53":1,"76":2,"133":1,"134":1}}],["used",{"2":{"3":6,"5":2,"7":3,"20":1,"29":8,"34":2,"35":2,"39":2,"48":2,"53":1,"55":1,"57":8,"76":1,"89":40,"91":1,"105":1,"107":2,"109":2,"114":1,"126":1,"129":1,"132":3,"141":1,"142":4,"144":1}}],["use",{"2":{"1":2,"4":1,"11":1,"25":1,"32":1,"37":1,"42":2,"53":1,"75":1,"76":2,"77":1,"89":5,"92":2,"118":1,"131":1,"133":1,"141":2,"142":2,"144":2}}],["ptm",{"2":{"144":1}}],["png",{"2":{"140":2}}],["pkgextensions",{"2":{"133":1}}],["pkgs",{"2":{"132":1,"140":1}}],["pkg",{"2":{"124":2,"132":1,"133":1}}],["penalty",{"2":{"107":9,"116":20}}],["perform",{"2":{"144":1}}],["performance",{"0":{"81":1,"137":1,"138":1},"2":{"32":1,"53":1,"75":1,"81":1,"131":2,"132":4,"134":1,"136":1,"137":1,"138":1,"140":2,"144":1}}],["performances",{"0":{"6":1,"8":1,"10":1,"12":1,"14":1,"16":1,"22":1}}],["perfchecker",{"0":{"131":1,"133":1},"1":{"132":1,"134":1,"135":1,"136":1,"137":1,"138":1,"139":1},"2":{"124":5,"125":1,"126":1,"128":1,"129":1,"131":1,"132":2,"133":2,"134":3,"135":1,"136":1,"137":2,"138":1,"139":3,"140":3}}],["per",{"2":{"89":1,"112":1,"141":1}}],["pôpulation",{"2":{"107":1}}],["phase",{"2":{"89":1,"109":2}}],["public",{"0":{"141":1}}],["push",{"2":{"116":1}}],["pure",{"2":{"90":3}}],["purely",{"2":{"90":1}}],["purpose",{"2":{"72":1}}],["purposes",{"2":{"19":1,"33":1,"34":1,"89":1,"107":1}}],["puzzles",{"2":{"77":1}}],["puzzle",{"2":{"77":3}}],["plots",{"2":{"140":2}}],["plotting",{"2":{"139":1,"140":1}}],["plainly",{"2":{"135":1}}],["platform",{"2":{"33":1}}],["pluto",{"2":{"76":1}}],["please",{"2":{"42":1,"76":1}}],["p",{"2":{"30":2,"89":1,"106":1,"141":1,"142":1}}],["pool",{"2":{"144":1}}],["populate",{"2":{"134":1}}],["population",{"2":{"89":2,"107":2,"141":2}}],["pop",{"2":{"107":2}}],["popsize=100",{"2":{"107":1}}],["popsize=200",{"2":{"89":1,"141":1}}],["popsize",{"2":{"89":4,"141":4}}],["post",{"0":{"138":1},"2":{"78":1,"138":2,"139":1,"144":1}}],["posed",{"2":{"77":1}}],["possible",{"2":{"76":1,"91":1,"100":1,"119":1,"142":1,"144":2}}],["possibly",{"2":{"25":1,"35":1,"89":2}}],["positional",{"2":{"34":1,"89":1}}],["positive",{"2":{"34":4,"89":15,"94":3,"141":4}}],["pos",{"2":{"30":2}}],["point",{"2":{"21":3,"24":2,"26":2,"29":1,"57":2,"89":4}}],["points",{"2":{"20":1,"23":1,"24":1,"25":3,"26":2,"89":5,"141":3}}],["powerful",{"2":{"32":1,"49":1}}],["power",{"2":{"19":1}}],["printing",{"2":{"144":2}}],["print",{"2":{"77":1,"144":8}}],["primary",{"2":{"72":1,"132":1}}],["practices",{"0":{"80":1},"2":{"80":1}}],["practice",{"0":{"63":1}}],["practical",{"2":{"19":1,"33":1}}],["practitioners",{"2":{"33":1}}],["prep",{"2":{"136":3}}],["preparatory",{"0":{"136":1},"2":{"132":1,"136":1}}],["previous",{"2":{"132":3}}],["previously",{"2":{"43":1}}],["prelimnary",{"2":{"126":1,"129":1}}],["preliminaries",{"2":{"107":2,"116":3}}],["precision",{"2":{"107":1,"116":6}}],["predict",{"2":{"107":1,"116":9}}],["predictions",{"2":{"107":1}}],["prediction",{"2":{"107":1}}],["predicate",{"2":{"34":4,"41":1,"42":4,"43":2,"45":4,"89":9,"109":1,"142":7}}],["predicates",{"2":{"32":1,"77":2}}],["predefined",{"2":{"52":1}}],["pretty",{"2":{"35":3,"89":3,"116":1,"141":3,"144":2}}],["prefix",{"2":{"34":3,"89":3}}],["preferences",{"2":{"34":1,"89":1,"141":1}}],["preference",{"2":{"32":1}}],["present",{"2":{"30":1,"35":1,"89":1,"140":1}}],["programs",{"0":{"112":1}}],["programming",{"0":{"19":1,"33":1,"58":1,"67":1,"68":1,"85":1,"91":1},"1":{"59":1,"60":1,"68":1,"69":1,"70":1},"2":{"3":6,"4":1,"17":2,"19":2,"31":1,"33":1,"37":3,"39":2,"46":1,"48":2,"49":1,"57":6,"70":1,"77":1,"78":1,"83":1,"85":1,"89":20,"90":3,"91":2,"92":4,"122":1,"142":1}}],["proportional",{"2":{"89":1,"141":1}}],["property",{"2":{"41":1}}],["properties",{"2":{"18":1,"30":1,"32":1}}],["properly",{"2":{"20":1,"89":1,"141":1}}],["produce",{"2":{"89":1,"105":1}}],["product",{"2":{"89":1,"97":1}}],["products",{"2":{"30":2}}],["prod",{"2":{"89":2,"97":2}}],["projects",{"2":{"66":1}}],["proceeds",{"2":{"30":1}}],["processing",{"2":{"89":1,"122":1}}],["process",{"2":{"18":2,"28":1,"52":1,"63":1,"89":2,"91":1,"107":1,"122":1,"132":1,"141":1,"144":7}}],["processes",{"2":{"11":1,"91":1}}],["providing",{"2":{"18":1,"19":1,"32":1,"33":1,"51":1,"89":2,"142":1}}],["provided",{"2":{"34":1,"89":18,"120":8,"132":2,"136":1}}],["provide",{"2":{"15":1,"18":1,"41":2,"43":2,"46":1,"73":1,"76":1,"87":1,"90":1,"125":1,"128":1,"132":1,"134":1,"142":1}}],["provides",{"2":{"4":1,"17":1,"18":1,"32":1,"49":1,"52":1,"53":1,"77":1,"78":1,"90":1,"131":2}}],["problem",{"2":{"18":2,"19":1,"30":6,"42":1,"63":1,"77":1,"91":2,"92":1,"144":3}}],["problems",{"2":{"17":1,"18":1,"19":1,"30":2,"32":2,"33":1,"48":2,"49":1,"52":1,"55":1,"57":6,"59":1,"60":1,"68":1,"77":1,"78":1,"83":1,"89":11,"90":4,"91":3,"92":6,"142":2,"144":1}}],["pseudo",{"2":{"18":1,"29":1,"89":1}}],["pivotal",{"2":{"18":1,"31":1}}],["pacakge",{"2":{"132":1}}],["packing",{"0":{"57":1}}],["packages",{"0":{"71":1},"1":{"72":1},"2":{"4":2,"7":2,"32":1,"89":2,"90":4,"131":1}}],["package",{"0":{"72":1,"135":1},"2":{"4":3,"5":1,"17":2,"18":3,"19":1,"31":2,"32":4,"72":1,"73":1,"124":1,"131":2,"132":1,"135":1,"140":1}}],["page",{"2":{"76":1}}],["patterfolds",{"2":{"140":1}}],["patterns",{"2":{"140":1}}],["pattern",{"2":{"89":1,"109":1}}],["patternfolds",{"2":{"23":1,"89":1,"140":3}}],["patch",{"2":{"124":2,"132":2}}],["patches",{"2":{"124":1,"132":1}}],["path",{"2":{"55":1,"89":6,"126":1,"129":1,"132":2,"140":1,"141":5,"142":1,"144":5}}],["passed",{"2":{"34":2,"89":2}}],["paradigm",{"2":{"49":1,"91":1}}],["param=nothing",{"2":{"89":1,"141":1}}],["parametric",{"0":{"101":1,"120":1},"2":{"34":1,"89":4,"103":1,"107":1,"122":2,"141":3}}],["parameterization",{"2":{"89":1,"122":1}}],["parameter",{"2":{"5":3,"18":2,"28":1,"29":1,"55":2,"89":19,"105":2,"107":1,"111":1,"122":6,"136":1,"141":5,"142":1}}],["parameters=constraintcommons",{"2":{"5":1,"35":1,"89":1,"141":1}}],["parameters",{"0":{"5":1,"29":1},"1":{"6":1},"2":{"4":1,"5":19,"18":3,"29":12,"32":1,"34":2,"35":18,"89":41,"100":1,"107":5,"119":1,"122":2,"127":8,"141":22}}],["params",{"2":{"32":1,"34":2,"89":2,"116":1,"141":1}}],["param",{"0":{"102":1,"121":1},"2":{"28":2,"29":2,"34":4,"35":2,"89":39,"102":4,"103":2,"105":5,"121":6,"122":16,"141":22}}],["parse",{"2":{"35":1,"89":1}}],["particularly",{"2":{"109":1}}],["partially",{"2":{"77":1,"89":1,"141":1}}],["partial",{"2":{"11":1,"28":1,"89":3,"141":2,"144":1}}],["parts",{"2":{"53":1}}],["part",{"2":{"28":1,"34":1,"76":1,"89":2,"90":1,"141":1}}],["pairs",{"2":{"30":2,"45":1,"89":1,"142":2}}],["pairvarsparameterdomain",{"2":{"29":1,"89":1}}],["paired",{"2":{"5":1,"29":1,"89":2}}],["pair",{"2":{"1":16,"5":2,"28":1,"30":5,"37":2,"39":4,"43":9,"57":15,"89":64,"107":3,"109":1,"141":1,"142":15}}],["mts",{"2":{"144":7}}],["mkpath",{"2":{"140":1}}],["myperfextension",{"2":{"134":1,"135":1,"136":1,"137":1,"138":1}}],["mypackagename",{"2":{"132":1}}],["missing",{"2":{"101":8,"102":8,"103":2,"105":2,"106":2,"109":2,"120":4,"121":12}}],["mission",{"2":{"78":1}}],["mixed",{"2":{"90":1}}],["might",{"2":{"77":2}}],["minor",{"2":{"132":2}}],["min",{"2":{"116":2,"142":1}}],["minkowski",{"2":{"89":1,"106":1,"141":1}}],["minus",{"2":{"89":28,"101":2,"102":2,"120":2,"121":2,"122":4}}],["mincut",{"2":{"30":1,"144":2}}],["minimization",{"2":{"142":1}}],["minimizing",{"2":{"30":1}}],["minimal",{"2":{"7":2,"89":4,"105":1,"106":1,"141":3,"144":3}}],["minimum",{"2":{"3":11,"13":1,"30":1,"43":6,"89":12,"116":2,"141":1,"142":4}}],["move",{"2":{"144":3}}],["mostly",{"2":{"139":1}}],["most",{"2":{"37":4,"43":6,"51":1,"53":1,"77":1,"89":5,"112":1,"141":1,"142":1}}],["more",{"2":{"35":1,"52":1,"89":2,"132":1}}],["moisupports",{"2":{"142":1}}],["moisum",{"2":{"142":1}}],["moiregular",{"2":{"142":1}}],["moiordered",{"2":{"142":1}}],["moinooverlap",{"2":{"142":1}}],["moinvalues",{"2":{"142":1}}],["moimultivalueddecisiondiagram",{"2":{"142":1}}],["moiminimum",{"2":{"142":1}}],["moimaximum",{"2":{"142":1}}],["moiintention",{"2":{"142":17}}],["moiinstantiation",{"2":{"142":1}}],["moiextension",{"2":{"142":1}}],["moierror",{"2":{"142":5}}],["moielement",{"2":{"142":1}}],["moidistdifferent",{"2":{"142":1}}],["moicumulative",{"2":{"142":1}}],["moiconflicts",{"2":{"142":1}}],["moiallequal",{"2":{"142":1}}],["moialldifferent",{"2":{"142":1}}],["moi",{"2":{"30":1,"43":17,"142":38}}],["mode",{"2":{"142":1}}],["modeled",{"2":{"144":1}}],["modeler",{"2":{"30":13}}],["modellike",{"2":{"142":2}}],["modelize",{"2":{"30":1}}],["modeling",{"0":{"33":1,"49":1,"80":1},"1":{"50":1,"51":1,"52":1,"53":1},"2":{"18":1,"19":1,"33":1,"41":1,"43":1,"52":1,"76":2,"77":1,"90":1}}],["model",{"0":{"77":1},"2":{"30":14,"32":1,"43":106,"55":1,"77":3,"89":3,"142":45,"144":75}}],["models",{"0":{"52":1,"79":1},"1":{"80":1,"81":1},"2":{"18":1,"49":1,"52":3,"77":1,"80":1,"81":1,"89":1,"90":2,"91":2,"122":1}}],["module",{"0":{"21":1,"24":1,"26":1},"2":{"34":1,"89":1}}],["mutable",{"2":{"144":2}}],["mutually",{"2":{"89":4,"95":1,"98":1,"103":1,"107":1,"109":1,"141":3}}],["much",{"2":{"92":1}}],["must",{"2":{"18":1,"20":1,"25":1,"30":2,"37":2,"41":1,"46":2,"55":2,"89":8,"91":1,"141":2,"142":7}}],["multithreading",{"2":{"144":1}}],["multithreaded",{"2":{"144":1}}],["multi",{"2":{"55":1,"89":1,"142":1}}],["multiplied",{"2":{"30":1}}],["multiplication",{"2":{"9":1,"89":1,"141":1}}],["multimedia",{"2":{"30":4}}],["multivalued",{"2":{"7":3,"89":2,"141":1}}],["major",{"2":{"124":2,"132":2}}],["may",{"2":{"92":1}}],["map",{"2":{"89":1,"105":1,"116":5,"144":4}}],["mapping",{"2":{"89":1,"122":1}}],["mainsolver",{"2":{"142":1,"144":7}}],["main",{"0":{"137":1},"2":{"40":1,"89":1,"131":1,"134":1,"135":1,"141":1,"142":1,"144":5}}],["mainly",{"2":{"34":1,"89":1}}],["macro",{"2":{"35":6,"89":6,"118":1,"131":1,"134":1,"140":1,"141":2,"142":1}}],["makie",{"2":{"131":1,"132":1}}],["making",{"2":{"31":1,"92":1}}],["makes",{"2":{"90":1}}],["make",{"2":{"11":1,"34":3,"35":2,"89":8,"90":1,"91":1,"103":1,"107":3,"116":2,"118":2,"122":3,"140":1,"144":1}}],["matter",{"2":{"132":1,"142":1}}],["matters",{"2":{"108":1}}],["matrices",{"0":{"113":1},"1":{"114":1,"115":1,"116":1,"117":1},"2":{"89":1,"107":1,"114":1}}],["matrix",{"2":{"30":4,"89":2,"107":2,"111":2,"141":1}}],["match",{"2":{"89":3,"142":2}}],["matches",{"2":{"89":3,"142":2}}],["maths",{"2":{"89":1,"141":1}}],["mathematical",{"0":{"85":1},"2":{"85":1,"91":2,"92":1}}],["mathoptinterface",{"2":{"30":2,"142":17}}],["magic",{"2":{"30":2}}],["marks",{"2":{"30":1,"42":2,"45":2,"89":2,"142":2}}],["max",{"2":{"28":2,"89":6,"105":2,"109":2,"141":2,"142":1,"144":10}}],["maximum",{"2":{"3":11,"13":1,"18":1,"20":1,"23":1,"25":1,"43":5,"89":14,"141":3,"142":4,"144":6}}],["manipulating",{"2":{"109":1}}],["manipulations",{"2":{"19":1}}],["manipulation",{"2":{"17":1,"18":2,"31":1,"32":1,"89":1,"122":1}}],["manufacturing",{"2":{"91":1}}],["manhattan",{"2":{"89":1,"106":1,"141":1}}],["manages",{"2":{"144":1}}],["manage",{"2":{"144":1}}],["managed",{"2":{"144":1}}],["manager",{"2":{"76":1}}],["managing",{"2":{"32":1}}],["many",{"2":{"11":1,"89":1,"132":1,"141":1}}],["mmds",{"2":{"7":1}}],["m",{"2":{"5":2,"30":6,"35":2,"77":5,"89":2,"141":2,"144":139}}],["mddconstraint",{"2":{"142":2}}],["mdd",{"2":{"5":1,"7":3,"29":1,"55":12,"89":16,"141":2,"142":2}}],["mdash",{"2":{"1":3,"3":4,"5":2,"7":6,"9":3,"11":1,"13":1,"15":1,"20":6,"21":5,"23":8,"24":4,"25":10,"26":5,"27":2,"28":3,"29":13,"30":18,"34":10,"35":7,"37":4,"39":1,"45":1,"48":1,"55":2,"57":2,"89":187,"94":2,"95":1,"97":2,"98":1,"101":1,"103":1,"105":6,"106":3,"107":28,"109":11,"111":2,"112":3,"114":2,"120":9,"122":2,"124":4,"141":73,"142":72,"144":144}}],["memory",{"2":{"127":2}}],["membership",{"2":{"18":1}}],["metasolver",{"2":{"144":4}}],["metastrategist",{"0":{"123":1},"2":{"123":1}}],["metadata",{"2":{"90":1}}],["metaheuristics",{"0":{"84":1},"2":{"70":1}}],["metrics",{"0":{"106":1},"2":{"131":1,"140":1}}],["metric=hamming",{"2":{"89":1,"107":1,"141":1}}],["metric",{"2":{"89":8,"107":6,"141":8}}],["method",{"2":{"5":1,"7":1,"20":1,"21":3,"23":1,"24":3,"25":1,"26":3,"30":16,"35":1,"89":171,"107":26,"109":1,"114":2,"120":8,"124":3,"134":1,"135":2,"136":2,"137":1,"138":2,"139":1,"141":55,"142":24,"144":128}}],["methods",{"0":{"61":1},"1":{"62":1,"63":1},"2":{"4":2,"7":1,"18":2,"20":1,"29":1,"32":2,"70":1,"89":4,"105":2,"141":3,"144":3}}],["meaningful",{"2":{"88":1}}],["meaning",{"2":{"37":2,"89":2,"109":1}}],["means",{"2":{"3":2,"35":3,"43":1,"89":5}}],["measurement",{"2":{"144":1}}],["measure",{"2":{"32":1,"89":2,"141":2}}],["merge",{"2":{"18":1,"23":2,"25":2,"89":2,"141":2,"144":1}}],["merging",{"2":{"18":1}}],["56",{"2":{"144":1}}],["53",{"2":{"20":1,"23":1,"25":1,"89":1,"141":1}}],["5",{"2":{"1":1,"3":11,"20":1,"23":1,"25":1,"30":2,"37":29,"39":3,"43":69,"57":13,"89":75,"90":1,"116":1,"124":1,"126":1,"129":1,"132":1,"141":1,"142":1,"144":1}}],["nbits",{"2":{"89":2,"109":1,"141":1}}],["nbsp",{"2":{"1":3,"3":4,"5":2,"7":6,"9":3,"11":1,"13":1,"15":1,"20":6,"21":5,"23":8,"24":4,"25":10,"26":5,"27":2,"28":3,"29":13,"30":18,"34":10,"35":7,"37":4,"39":1,"45":1,"48":1,"55":2,"57":2,"89":187,"94":2,"95":1,"97":2,"98":1,"101":1,"103":1,"105":6,"106":3,"107":28,"109":11,"111":2,"112":3,"114":2,"120":9,"122":2,"124":4,"141":73,"142":72,"144":144}}],["nvars",{"2":{"89":12,"141":4}}],["nvalues",{"2":{"37":8,"43":9,"89":8,"142":1}}],["nine",{"2":{"77":1}}],["n5",{"2":{"55":2,"89":2}}],["n4",{"2":{"55":3,"89":3}}],["n3",{"2":{"55":2,"89":2}}],["n2",{"2":{"55":2,"89":2}}],["n1",{"2":{"55":2,"89":2}}],["n²",{"2":{"30":1}}],["n×n",{"2":{"30":1}}],["n",{"2":{"30":16,"89":7,"105":4,"111":3,"116":9,"141":2}}],["numeric",{"2":{"25":1,"89":1}}],["number",{"2":{"20":1,"24":3,"25":2,"26":3,"28":3,"30":2,"34":3,"37":11,"89":53,"94":1,"106":1,"107":2,"109":5,"112":3,"120":8,"132":1,"141":18,"142":23,"144":12}}],["numbers",{"2":{"18":2,"89":2,"132":1}}],["normalized",{"2":{"89":1,"141":1}}],["normal",{"2":{"89":1,"122":1}}],["norm",{"2":{"89":2}}],["nooverlap",{"2":{"43":4,"142":2}}],["now",{"2":{"30":1,"77":1}}],["node",{"2":{"30":2,"55":3,"89":3,"142":3}}],["no",{"2":{"30":4,"43":6,"45":1,"57":20,"89":24,"105":1,"107":1,"109":1,"122":1,"142":1}}],["nonnegative",{"2":{"142":1}}],["none",{"2":{"89":4,"112":1,"116":2,"122":3,"127":1,"130":1,"134":1,"141":1,"142":1}}],["nonlinear",{"2":{"83":1}}],["non",{"0":{"101":1,"120":1},"2":{"25":1,"28":2,"89":4,"107":4,"122":1,"141":3,"144":1}}],["not",{"2":{"23":1,"30":2,"34":1,"35":2,"37":1,"41":1,"43":1,"57":6,"76":1,"77":3,"89":18,"112":1,"122":1,"141":2,"142":4,"144":1}}],["notebooks",{"2":{"76":1,"125":1,"128":1}}],["note",{"2":{"5":1,"41":1,"43":5,"76":1,"77":1,"142":1}}],["nothing",{"2":{"1":1,"9":5,"28":1,"34":4,"35":1,"37":2,"89":18,"105":1,"107":2,"116":1,"130":2,"134":2,"136":1,"140":1,"141":12,"142":15}}],["neighbours",{"2":{"144":2}}],["neighbourhood",{"2":{"144":2}}],["neither",{"2":{"34":1,"89":1}}],["never",{"2":{"144":1}}],["necessarily",{"2":{"76":1}}],["necessary",{"2":{"17":1,"144":3}}],["next",{"2":{"48":2,"89":2,"124":2,"132":3}}],["negation",{"2":{"34":1,"89":1}}],["networks",{"2":{"91":1}}],["network",{"2":{"89":1,"109":1,"141":1}}],["net",{"2":{"30":1}}],["new",{"2":{"23":3,"32":2,"35":5,"52":1,"89":8,"90":1,"132":1,"141":3,"142":1,"144":2}}],["needs",{"2":{"18":1,"28":1,"89":3,"122":1,"141":2}}],["need",{"2":{"13":1,"77":2,"133":1}}],["natural",{"2":{"41":1,"43":1}}],["nature",{"2":{"5":1,"23":1,"25":1,"89":2,"141":1}}],["names",{"2":{"89":1,"122":1}}],["name=",{"2":{"89":1,"141":1}}],["name",{"2":{"5":1,"34":1,"35":3,"89":9,"132":4,"141":8,"142":2,"144":8}}],["lst",{"2":{"144":5}}],["ls",{"2":{"142":1}}],["load",{"2":{"135":1}}],["loss",{"2":{"107":2,"116":2}}],["loggingextra",{"2":{"144":1}}],["logging",{"2":{"144":1}}],["log",{"2":{"101":4,"102":4,"103":1,"105":1,"106":1,"109":1,"120":2,"121":6,"144":1}}],["logic",{"2":{"89":2,"142":1}}],["logical",{"2":{"41":1}}],["local",{"0":{"92":1,"117":1},"2":{"89":5,"92":1,"107":1,"109":1,"132":1,"141":5,"142":1,"144":7}}],["localsearchsolverscblstodo",{"2":{"76":1}}],["localsearchsolvers",{"0":{"144":1},"2":{"76":2,"90":1,"107":1,"142":1,"144":141}}],["locations",{"2":{"30":5}}],["loop",{"2":{"144":8}}],["loops",{"2":{"35":1,"48":2,"89":3}}],["looks",{"2":{"132":1,"134":1,"135":1,"137":1,"140":1}}],["look",{"2":{"76":1,"77":1}}],["lower",{"2":{"89":1,"141":1}}],["lowest",{"2":{"20":1,"23":1,"25":1,"89":1,"141":1}}],["low",{"2":{"28":1,"89":1,"90":1,"141":1}}],["l",{"2":{"30":1,"89":15,"120":4,"121":1,"122":3,"139":5,"142":2}}],["l=n²",{"2":{"30":1}}],["lt",{"2":{"7":2,"20":1,"21":4,"24":4,"25":1,"26":4,"30":1,"41":1,"42":1,"55":2,"89":10,"141":2,"142":2,"144":3}}],["launch",{"2":{"144":1}}],["lazy",{"2":{"89":2,"105":2,"118":2,"141":2}}],["lang",{"2":{"89":3,"141":1}}],["lang=",{"2":{"89":1,"141":1}}],["language=",{"2":{"89":1,"141":1}}],["languageparameterdomain",{"2":{"29":1,"89":1}}],["language",{"2":{"5":2,"41":1,"43":1,"55":17,"76":3,"89":25,"141":5,"142":4}}],["languages",{"0":{"7":1,"55":1},"1":{"8":1},"2":{"4":1,"7":1,"29":1,"89":1}}],["large",{"2":{"77":1,"91":1,"92":1}}],["labels",{"2":{"55":2,"89":2,"142":2}}],["labeled",{"2":{"55":2,"89":2,"142":2}}],["last",{"2":{"55":1,"77":1,"89":1,"124":2,"132":5,"142":1,"144":1}}],["lays",{"2":{"19":1}}],["layered",{"2":{"89":1,"141":1}}],["layers",{"2":{"89":9,"122":1,"141":4}}],["layer",{"0":{"93":1,"95":1,"96":1,"98":1,"99":1,"103":1,"109":1,"118":1,"122":1},"1":{"94":1,"95":1,"97":1,"98":1,"100":1,"101":1,"102":1,"103":1,"119":1,"120":1,"121":1,"122":1},"2":{"4":1,"24":2,"26":2,"89":42,"93":1,"95":3,"96":1,"98":3,"99":1,"101":1,"103":3,"107":4,"109":28,"118":1,"122":3,"141":16}}],["liking",{"2":{"134":1}}],["like",{"2":{"70":1,"84":1,"126":1,"129":1,"132":2,"134":1,"135":1,"137":1,"140":1}}],["likely",{"2":{"4":1}}],["littledict",{"2":{"89":2,"109":2,"122":1}}],["links",{"2":{"30":1,"125":1,"128":1,"144":1}}],["linear",{"2":{"70":1,"83":1,"89":3,"111":3,"141":3}}],["line",{"2":{"30":9,"76":1}}],["limited",{"2":{"28":1,"89":1,"141":1}}],["limit",{"2":{"28":7,"57":2,"89":11,"141":9,"142":1,"144":10}}],["limits",{"2":{"18":1}}],["listed",{"2":{"89":2,"142":3}}],["listing",{"2":{"46":1}}],["list=x",{"2":{"35":2,"89":2,"141":1}}],["list",{"0":{"94":1,"97":1,"100":1,"119":1},"1":{"101":1,"102":1,"103":1,"120":1,"121":1,"122":1},"2":{"1":13,"3":16,"5":5,"25":1,"26":1,"34":1,"37":24,"39":6,"42":1,"43":7,"45":5,"48":5,"55":8,"57":5,"89":92,"100":1,"119":1,"132":2,"141":3,"142":1,"144":11}}],["left",{"2":{"89":18,"120":10,"122":3}}],["let",{"2":{"77":1}}],["leverage",{"2":{"51":1}}],["levels",{"2":{"87":1}}],["level",{"2":{"41":1,"43":1,"55":3,"89":3,"90":2,"144":9}}],["lesser",{"2":{"89":11,"120":6,"122":3}}],["less",{"2":{"41":1,"77":1,"142":1}}],["leadsolvers",{"2":{"144":3}}],["leadsolver",{"2":{"144":1}}],["least",{"2":{"37":4,"43":6,"89":4,"107":2,"142":1}}],["learn",{"2":{"78":1,"89":7,"107":5,"109":1,"114":1,"141":6}}],["learned",{"2":{"32":1,"33":1,"89":1,"107":1,"141":1}}],["learning",{"0":{"108":1,"113":1},"1":{"114":1,"115":1,"116":1,"117":1},"2":{"4":1,"11":1,"18":1,"28":1,"32":2,"51":1,"89":4,"90":1,"107":1,"108":1,"109":2,"141":3}}],["length",{"2":{"18":1,"20":2,"21":1,"23":1,"24":6,"25":1,"26":6,"32":1,"34":4,"57":3,"89":23,"97":2,"109":2,"116":4,"139":1,"141":6,"144":12}}],["lengths",{"2":{"1":3,"57":6,"89":9}}],["swap",{"2":{"144":2}}],["switch",{"2":{"89":1,"106":1,"141":1}}],["src",{"2":{"142":2}}],["sltns",{"2":{"107":2}}],["smaller",{"2":{"92":1}}],["small",{"2":{"92":1}}],["script",{"2":{"140":1}}],["scatterlines",{"2":{"132":1,"140":1}}],["scalarfunction",{"2":{"142":3}}],["scalars",{"2":{"89":1,"101":1}}],["scalar",{"2":{"5":2,"89":5,"94":1,"142":1}}],["science",{"2":{"75":1}}],["scenario",{"2":{"63":1}}],["scheduling",{"0":{"57":1},"2":{"57":6,"89":6,"91":1}}],["square",{"2":{"30":3}}],["sqrt",{"2":{"28":1,"89":1,"141":1}}],["syntax",{"2":{"32":1,"76":1,"77":1,"142":1,"144":1}}],["systems",{"2":{"91":2}}],["system",{"2":{"30":1}}],["symb",{"2":{"34":2,"89":2}}],["symbols",{"2":{"9":2,"89":11,"105":4,"109":1,"132":2,"141":6}}],["symbol",{"2":{"5":4,"9":3,"34":7,"35":19,"89":33,"109":1,"112":1,"116":1,"122":5,"132":1,"133":1,"141":14,"144":3}}],["symmetries",{"2":{"32":3,"34":4,"89":4,"141":4}}],["symmetry",{"2":{"32":1,"34":1,"89":1,"141":1}}],["symcon",{"2":{"9":1,"89":1,"141":1}}],["subs",{"2":{"144":3}}],["subsolvers",{"2":{"144":4}}],["subsolver",{"2":{"144":6}}],["subset",{"2":{"142":1}}],["subsets",{"2":{"77":2}}],["sub",{"2":{"107":1,"144":1}}],["subtract",{"2":{"89":1,"122":1}}],["subtraction",{"2":{"89":1,"122":1}}],["subtype",{"2":{"30":1}}],["subgrid",{"2":{"77":1}}],["subgrids",{"2":{"77":1}}],["successfully",{"2":{"62":1}}],["such",{"2":{"5":2,"30":2,"32":2,"41":3,"43":2,"45":1,"50":1,"55":1,"69":1,"89":5,"90":1,"91":2,"109":1,"122":1,"142":1,"144":4}}],["sudoku",{"2":{"30":17,"77":4,"144":1}}],["sudokuinstances",{"2":{"30":1}}],["sudokuinstance",{"2":{"30":19}}],["summary",{"2":{"92":1}}],["summing",{"0":{"37":1}}],["sum",{"2":{"24":1,"26":1,"28":1,"30":1,"37":8,"43":8,"57":2,"89":20,"94":2,"97":3,"111":3,"141":4,"142":3}}],["supply",{"2":{"91":1}}],["supplies",{"2":{"30":1,"90":1}}],["supported",{"2":{"89":4,"142":2}}],["support",{"2":{"18":1,"89":1,"142":1}}],["supports=nothing",{"2":{"89":1}}],["supports",{"2":{"18":1,"32":1,"50":1,"89":7,"142":13}}],["supertype",{"2":{"18":3,"23":1,"25":1,"89":2,"141":2}}],["super",{"2":{"18":1,"20":1,"89":1,"141":1}}],["stop",{"2":{"144":5}}],["storing",{"2":{"90":1,"140":1}}],["stored",{"2":{"136":1,"137":1}}],["stores",{"2":{"25":2,"89":2,"140":2}}],["store",{"2":{"23":3,"29":8,"35":1,"89":15,"105":1,"109":2,"141":1,"144":3}}],["stuff",{"2":{"116":2}}],["studio",{"2":{"76":1}}],["studies",{"0":{"62":1},"2":{"62":1}}],["stipulates",{"2":{"89":1,"142":2}}],["step",{"2":{"35":2,"73":2,"87":2,"89":2,"144":3}}],["stamp",{"2":{"144":4}}],["status",{"2":{"144":4}}],["static",{"2":{"144":1}}],["statistical",{"2":{"91":1}}],["states",{"2":{"55":4,"89":4}}],["state",{"2":{"30":3,"144":36}}],["started",{"0":{"73":1,"74":1},"1":{"75":1,"76":1,"77":1},"2":{"73":1}}],["starts",{"2":{"34":1,"57":8,"89":9,"92":1,"144":2}}],["start",{"2":{"30":1,"48":2,"55":2,"77":1,"89":4,"132":1}}],["starting",{"2":{"30":2,"34":1,"89":1,"144":1}}],["start=",{"2":{"30":1}}],["standout",{"2":{"32":1}}],["standards",{"2":{"51":1}}],["standard",{"2":{"30":3,"31":1,"32":1,"33":1,"40":1,"90":1}}],["stands",{"2":{"17":1}}],["stdout",{"2":{"30":1}}],["str",{"2":{"144":1}}],["streamline",{"2":{"52":1}}],["streamlining",{"0":{"0":1,"2":1,"31":1,"36":1,"38":1,"47":1,"54":1,"56":1},"1":{"1":1,"3":1,"32":1,"33":1,"34":1,"35":1,"37":1,"39":1,"48":1,"55":1,"57":1}}],["straight",{"2":{"77":1}}],["straightforward",{"2":{"32":1,"41":1,"142":1}}],["strategies",{"0":{"60":1},"2":{"19":1,"60":1}}],["string",{"2":{"21":4,"24":4,"26":4,"30":1,"34":1,"89":8,"105":1,"109":1,"132":1,"141":1,"142":1,"144":1}}],["strictly",{"2":{"1":8,"34":3,"89":13,"94":1,"141":3}}],["struct",{"2":{"20":1,"30":3,"89":1,"144":4}}],["structure",{"0":{"109":1},"2":{"7":3,"20":2,"29":1,"30":1,"34":1,"89":7,"92":1,"107":1,"109":4,"141":5,"144":5}}],["structures",{"2":{"4":1}}],["silent",{"2":{"142":4,"144":1}}],["sig",{"2":{"89":17,"120":8}}],["signature",{"2":{"89":2,"105":2,"141":2}}],["significance",{"2":{"68":1}}],["significantly",{"2":{"32":1,"33":1}}],["single",{"2":{"77":1,"89":3,"94":1,"97":2}}],["since",{"2":{"41":1,"43":1,"144":1}}],["sink",{"2":{"30":3}}],["simulated",{"2":{"84":1}}],["simplify",{"2":{"59":1}}],["simplified",{"2":{"35":3,"89":3}}],["simplifies",{"2":{"32":1}}],["simple",{"2":{"28":1,"32":1,"35":1,"77":2,"89":2,"141":2}}],["simply",{"2":{"21":2,"24":1,"26":1,"29":1,"34":1,"77":1,"89":2,"132":1}}],["similar",{"2":{"20":1,"43":1,"89":1,"141":1}}],["situations",{"2":{"13":1}}],["size",{"2":{"5":1,"18":1,"20":5,"23":8,"25":8,"28":2,"30":3,"48":3,"89":32,"105":1,"107":7,"109":2,"116":2,"141":16,"144":4}}],["split",{"2":{"107":1}}],["specialize",{"2":{"144":10}}],["specialized",{"2":{"89":2,"101":1,"120":1,"144":10}}],["specializing",{"2":{"144":1}}],["specifying",{"2":{"17":1,"89":2,"142":5}}],["specific",{"0":{"45":1},"2":{"32":1,"39":4,"89":6,"107":2,"122":1,"127":1,"130":1,"142":2}}],["specifically",{"2":{"21":2,"24":1,"26":1,"29":1,"45":1,"89":2,"142":1}}],["specification",{"2":{"5":1,"18":1}}],["specifications",{"2":{"5":2,"32":1,"35":1,"89":1,"141":1}}],["specified",{"2":{"21":2,"24":1,"26":1,"29":1,"30":2,"89":2,"122":1,"142":2}}],["specifies",{"2":{"3":6,"37":1,"41":1,"46":1,"89":8,"122":1}}],["space",{"2":{"28":4,"34":1,"89":11,"91":1,"141":9,"142":3,"144":1}}],["spaces",{"2":{"11":1,"17":1,"18":1,"32":1}}],["span",{"2":{"23":1,"25":1,"89":1}}],["s2",{"2":{"9":1,"89":1,"141":1}}],["s1",{"2":{"9":1,"89":1,"141":1}}],["s",{"2":{"5":3,"7":6,"18":2,"20":2,"23":1,"25":1,"30":5,"32":1,"33":1,"34":6,"35":8,"77":1,"89":18,"101":4,"102":4,"103":1,"105":1,"106":1,"109":1,"120":2,"121":6,"124":1,"135":1,"137":1,"141":14,"144":109}}],["sat",{"2":{"144":3}}],["satisfying",{"2":{"144":2}}],["satisfy",{"2":{"37":3,"41":1,"46":1,"89":3,"90":1,"91":1,"92":1,"142":2}}],["satisfies",{"2":{"34":1,"37":6,"55":1,"89":8,"92":1,"141":1,"142":4}}],["satisfied",{"2":{"3":4,"34":1,"39":1,"48":1,"55":1,"57":2,"89":10,"91":1,"141":1,"142":1,"144":1}}],["satisfaction",{"2":{"32":1,"52":1,"89":2,"90":1,"142":1,"144":3}}],["save",{"2":{"140":2}}],["say",{"2":{"89":1,"112":1,"141":1}}],["samples=d",{"2":{"137":1}}],["samples",{"2":{"127":2,"130":1,"134":1,"137":1,"139":5,"140":1}}],["samplings",{"2":{"18":1,"28":2,"89":2,"141":2}}],["sampling",{"0":{"11":1},"1":{"12":1},"2":{"4":1,"11":2}}],["same",{"2":{"23":1,"25":1,"30":2,"34":1,"35":1,"45":1,"89":4,"141":2,"142":1}}],["shifted",{"2":{"116":3}}],["share",{"2":{"66":1,"80":1}}],["shared",{"2":{"4":1,"53":1}}],["shrink",{"2":{"34":1,"35":1,"89":2}}],["show",{"2":{"89":4,"105":1,"109":1,"141":1}}],["showcase",{"2":{"62":1}}],["shortcut",{"2":{"34":1,"35":1,"89":1,"141":1}}],["should",{"2":{"3":6,"41":1,"43":1,"45":1,"89":11,"105":2,"141":2,"142":4,"144":3}}],["soon",{"2":{"142":1}}],["sophisticated",{"2":{"33":1}}],["so",{"2":{"30":1,"35":2,"77":1,"89":2,"91":1}}],["sols",{"2":{"89":1,"107":4,"141":1}}],["solve",{"2":{"30":1,"77":1,"90":2,"91":1,"144":3}}],["solverversion",{"2":{"142":1}}],["solvername",{"2":{"142":1}}],["solvers",{"0":{"143":1},"2":{"76":3,"77":4,"90":10,"92":3,"109":1,"143":1,"144":2}}],["solver",{"2":{"30":6,"77":2,"90":1,"92":2,"107":1,"142":11,"144":29}}],["solving",{"2":{"19":1,"33":1,"49":1,"60":1,"63":1,"68":1,"76":1,"78":1,"91":4,"144":4}}],["sol",{"2":{"28":1,"89":1,"141":1}}],["solution",{"2":{"18":1,"30":2,"43":4,"77":3,"89":3,"91":1,"92":4,"106":1,"141":1,"142":3,"144":4}}],["solutions",{"2":{"4":1,"28":10,"89":14,"90":1,"91":2,"92":4,"106":1,"107":8,"141":14,"144":9}}],["something",{"2":{"34":1,"89":1}}],["some",{"2":{"9":1,"11":1,"77":1,"89":1,"90":1,"93":1,"96":1,"99":1,"107":1,"118":1,"125":1,"128":1,"132":1,"141":1,"142":1}}],["source",{"2":{"1":3,"3":4,"5":3,"7":7,"9":3,"11":1,"13":1,"15":1,"20":10,"21":15,"23":12,"24":15,"25":14,"26":16,"27":2,"28":3,"29":17,"30":21,"34":11,"35":9,"37":4,"39":1,"45":1,"48":1,"55":2,"57":2,"89":187,"94":2,"95":1,"97":2,"98":1,"101":1,"103":1,"105":6,"106":3,"107":28,"109":11,"111":2,"112":3,"114":2,"120":9,"122":2,"124":4,"141":73,"142":74,"144":144}}],["seaperl",{"2":{"90":1}}],["searching",{"2":{"34":1,"89":1,"141":1}}],["searches",{"2":{"18":1}}],["search",{"0":{"60":1,"92":1,"117":1},"2":{"11":1,"17":1,"18":3,"28":9,"32":1,"60":1,"84":1,"89":20,"91":1,"92":3,"109":1,"141":20,"142":1,"144":1}}],["select",{"2":{"132":1,"144":4}}],["selection",{"2":{"89":1,"122":1}}],["selected",{"2":{"89":8,"95":1,"98":1,"103":1,"107":2,"109":6,"141":4,"144":1}}],["series",{"2":{"77":1,"144":1}}],["serves",{"2":{"4":1,"18":1}}],["sequence",{"2":{"48":6,"55":4,"89":10,"142":3}}],["see",{"2":{"42":1,"144":1}}],["separates",{"2":{"89":1,"105":1}}],["separator",{"2":{"30":1}}],["sep",{"2":{"30":2,"89":2,"105":2}}],["segment",{"2":{"30":3}}],["several",{"2":{"13":1,"53":1,"76":1,"90":1,"109":1}}],["sec",{"2":{"144":1}}],["section",{"2":{"5":1,"42":1,"125":1,"128":1}}],["seconds=d",{"2":{"137":1}}],["seconds",{"2":{"127":2,"130":1,"134":1,"137":1,"140":1,"144":1}}],["second",{"2":{"3":2,"57":8,"89":10}}],["setter",{"2":{"77":1}}],["setting",{"0":{"76":1},"2":{"144":1}}],["settings",{"2":{"18":1,"28":1,"89":1,"141":1,"144":1}}],["setup",{"2":{"76":1}}],["setdomain",{"2":{"20":1,"23":1,"25":3,"26":2,"89":5,"141":4}}],["set",{"2":{"3":4,"7":1,"9":2,"19":1,"21":2,"24":1,"25":3,"26":1,"29":1,"30":4,"37":3,"39":2,"46":2,"89":31,"91":1,"103":1,"105":1,"107":11,"112":2,"122":1,"141":10,"142":68,"144":22}}],["sets",{"2":{"3":2,"18":1,"50":1,"89":2,"107":3}}],["001",{"2":{"116":1}}],["00514",{"2":{"35":1,"89":1,"141":1}}],["0≤z",{"2":{"43":2}}],["0≤y",{"2":{"43":1}}],["0≤x",{"2":{"43":1}}],["0",{"2":{"1":14,"3":1,"20":1,"21":2,"23":1,"24":1,"25":1,"26":1,"30":54,"34":7,"37":8,"43":16,"48":1,"55":22,"77":2,"89":73,"116":1,"124":8,"140":11,"141":3,"142":2,"144":9}}],["42",{"2":{"20":1,"23":1,"25":1,"37":2,"89":3,"141":1}}],["4",{"2":{"1":12,"3":15,"20":1,"23":1,"25":1,"30":3,"37":14,"39":4,"42":2,"43":84,"44":2,"45":3,"46":3,"48":4,"57":18,"89":82,"124":1,"140":1,"141":1,"142":1,"144":1}}],["3j+1",{"2":{"77":1}}],["3i+1",{"2":{"77":1}}],["39",{"2":{"18":2,"20":1,"21":1,"24":1,"26":1,"32":1,"33":1,"34":1,"35":3,"76":1,"77":1,"89":6,"101":4,"102":4,"103":1,"105":1,"106":1,"109":1,"120":2,"121":6,"124":1,"132":1,"137":1,"141":1,"144":4}}],["3",{"2":{"1":17,"3":15,"20":2,"23":2,"25":2,"30":6,"34":4,"35":1,"37":33,"39":4,"42":2,"43":109,"44":6,"45":7,"46":3,"48":6,"57":26,"77":6,"89":125,"124":1,"140":1,"141":3,"142":1,"144":1}}],["28",{"2":{"144":1}}],["225",{"2":{"89":1}}],["200",{"2":{"89":2,"107":1,"141":2}}],["2009",{"2":{"35":1,"89":1,"141":1}}],["2",{"2":{"1":15,"3":16,"20":2,"23":2,"25":2,"30":5,"34":3,"35":1,"37":40,"39":4,"42":2,"43":140,"44":4,"45":7,"46":3,"48":3,"55":10,"57":28,"77":2,"89":146,"124":1,"140":8,"141":3,"142":3,"144":1}}],["15",{"2":{"43":1,"126":1,"129":1}}],["1≤z",{"2":{"43":4}}],["1≤y",{"2":{"43":8}}],["1≤x",{"2":{"43":15}}],["101",{"0":{"67":1},"1":{"68":1,"69":1,"70":1}}],["10",{"2":{"37":27,"43":28,"89":29,"90":1,"126":1,"129":1,"140":1,"141":2,"144":2}}],["100",{"2":{"28":2,"89":4,"140":1,"141":4,"144":1}}],["10000",{"2":{"144":1}}],["1000",{"2":{"28":1,"89":1,"140":4,"141":1}}],["10^6",{"2":{"28":1,"89":1,"141":1}}],["123",{"2":{"20":1,"23":1,"25":1,"89":1,"141":1}}],["12",{"2":{"20":1,"23":1,"25":1,"43":1,"57":1,"89":2,"141":1}}],["1",{"2":{"1":19,"3":17,"15":2,"20":2,"23":2,"25":2,"30":3,"34":6,"35":1,"37":34,"39":4,"42":2,"43":261,"44":4,"45":5,"46":3,"48":4,"55":15,"57":41,"77":5,"89":174,"111":1,"112":1,"116":4,"124":8,"127":1,"130":2,"134":2,"139":4,"140":3,"141":6,"142":4,"144":4}}],["=>",{"2":{"55":15,"89":15,"116":1,"126":3,"127":10,"129":3,"130":6,"132":2,"134":6,"140":7}}],["=usual",{"2":{"35":1,"89":1,"141":1}}],["=0",{"2":{"30":1}}],["==",{"2":{"3":4,"21":1,"37":2,"43":18,"48":1,"89":9,"112":1,"116":2,"141":1,"142":3}}],["=",{"2":{"1":3,"3":12,"5":1,"15":2,"20":5,"21":4,"23":5,"24":4,"25":5,"26":4,"28":7,"30":11,"34":3,"35":3,"37":16,"39":1,"42":5,"43":167,"44":2,"45":2,"48":5,"55":16,"57":17,"77":1,"89":126,"90":1,"97":2,"103":1,"105":1,"107":12,"111":1,"112":3,"116":34,"122":5,"132":8,"135":1,"136":1,"137":1,"138":1,"139":9,"140":7,"141":36,"142":19,"144":48}}],["epoch",{"2":{"144":1}}],["err",{"2":{"142":3}}],["error",{"2":{"32":2,"34":20,"35":3,"89":24,"107":1,"141":6,"142":4,"144":4}}],["euclidian",{"2":{"101":1,"102":1}}],["euclidean",{"2":{"89":6}}],["eq",{"2":{"89":22,"120":12,"121":1,"122":6}}],["equiped",{"2":{"30":1}}],["equilibrium",{"2":{"30":4}}],["equivalent",{"2":{"21":1,"24":1,"26":1,"89":1}}],["equalities",{"2":{"89":2,"122":2}}],["equal",{"2":{"1":8,"3":2,"30":1,"34":1,"37":1,"43":5,"89":17,"120":3,"122":1,"142":4}}],["editors",{"2":{"76":1}}],["edge",{"2":{"55":2,"89":2,"142":2}}],["educational",{"2":{"19":1,"33":1}}],["etc",{"2":{"50":1,"132":1}}],["e",{"2":{"30":1,"34":4,"48":2,"55":4,"57":4,"83":1,"89":15,"106":1,"116":3,"141":1,"144":1}}],["else",{"2":{"116":4}}],["eltype",{"2":{"27":3,"89":3,"107":2}}],["elementary",{"0":{"39":1}}],["elements",{"2":{"11":1,"18":2,"20":1,"30":1,"32":1,"89":18,"94":1,"105":1,"109":1,"120":8,"141":2}}],["element",{"2":{"3":9,"43":9,"89":9,"107":2,"124":1,"142":2,"144":1}}],["either",{"2":{"20":1,"23":1,"25":1,"46":2,"57":4,"89":8,"90":1,"141":4}}],["efficient",{"2":{"49":1,"53":1,"80":1,"89":1}}],["efficiently",{"2":{"11":1,"30":1,"142":1}}],["efficiency",{"2":{"19":1,"91":1}}],["earlier",{"2":{"124":1}}],["easily",{"2":{"131":1,"132":1}}],["easier",{"2":{"35":1,"89":1}}],["easy",{"2":{"90":1,"131":1,"133":1}}],["ease",{"2":{"19":1,"75":1}}],["eachrow",{"2":{"116":4}}],["each",{"2":{"3":2,"5":2,"24":1,"26":1,"30":3,"34":1,"35":1,"48":2,"51":1,"55":2,"72":1,"73":1,"77":5,"89":12,"109":1,"118":1,"133":1,"141":2,"142":2,"144":1}}],["embodies",{"2":{"19":1,"33":1,"89":2,"142":1}}],["empty",{"2":{"89":1,"107":2,"122":1,"141":1,"142":7,"144":11}}],["emptydomain",{"2":{"18":1,"20":2,"23":1,"25":1,"89":2,"141":1}}],["empowering",{"0":{"19":1}}],["evolution",{"2":{"140":2}}],["evolves",{"2":{"144":1}}],["evolve",{"2":{"18":1}}],["evals=d",{"2":{"137":1}}],["evals",{"2":{"127":2,"130":1,"134":1,"137":1,"140":1}}],["evaluation",{"2":{"107":1}}],["evaluates",{"2":{"34":1,"35":1,"89":2}}],["evaluated",{"2":{"32":1,"144":1}}],["eventually",{"2":{"48":2,"89":2}}],["even",{"2":{"30":1}}],["everuseful",{"2":{"15":1}}],["enabled",{"2":{"144":1}}],["enabling",{"0":{"33":1},"2":{"17":1}}],["enumerate",{"2":{"116":1}}],["enforcing",{"2":{"89":2,"142":1}}],["environment",{"0":{"76":1},"2":{"132":1,"140":1}}],["encode",{"2":{"107":1}}],["encoded",{"2":{"55":2,"89":2,"142":1}}],["encoding",{"0":{"112":1},"2":{"89":5,"111":1,"112":4,"141":4}}],["encourage",{"2":{"65":1,"76":2}}],["encompass",{"2":{"45":1,"89":1}}],["encapsulate",{"2":{"89":1,"122":1,"144":2}}],["encapsulating",{"2":{"32":1}}],["encapsuler",{"2":{"23":1,"89":1}}],["entry",{"2":{"35":3,"89":3,"144":1}}],["enhancement",{"2":{"32":1}}],["enhances",{"2":{"19":1,"33":1}}],["enhancing",{"2":{"32":1}}],["ensure",{"2":{"77":1,"89":1,"111":1}}],["ensures",{"2":{"32":1,"39":2,"42":2,"48":2,"55":2,"57":6,"77":1,"89":12,"142":2}}],["ensuring",{"2":{"1":7,"37":5,"45":2,"51":1,"89":17,"107":3,"122":1,"142":18}}],["energy",{"2":{"30":1}}],["enough",{"2":{"29":1,"89":1}}],["end``",{"2":{"144":1}}],["end",{"2":{"7":2,"77":2,"89":2,"116":15,"126":2,"129":2,"132":2,"134":1,"135":1,"136":1,"137":2,"139":1,"140":3,"142":1,"144":4}}],["exclu",{"2":{"89":3,"109":3}}],["exclusive",{"2":{"89":11,"95":1,"98":1,"103":1,"107":3,"109":9,"141":3}}],["excluded",{"2":{"89":1,"142":2}}],["exclude",{"2":{"37":1,"89":1}}],["exceed",{"2":{"57":2,"89":2}}],["except",{"2":{"37":2,"89":2}}],["except=vals",{"2":{"35":2,"89":2,"141":1}}],["exact",{"2":{"92":4}}],["exactly",{"2":{"37":4,"43":7,"89":4,"142":3}}],["examine",{"2":{"32":1}}],["exampleusing",{"2":{"45":2,"89":2}}],["example2",{"2":{"45":2,"89":2}}],["example",{"2":{"5":1,"34":1,"35":8,"41":2,"43":5,"46":1,"76":1,"89":8,"124":1,"126":2,"129":2,"133":1,"136":1,"141":6}}],["examples",{"0":{"115":1},"1":{"116":1,"117":1},"2":{"1":3,"3":4,"34":2,"37":4,"39":1,"45":1,"48":1,"55":2,"57":2,"76":1,"89":22,"122":1,"125":1,"128":1,"140":1}}],["existing",{"2":{"35":2,"89":2,"90":1,"91":1}}],["exists",{"2":{"34":3,"77":1,"89":3,"136":1}}],["ex",{"2":{"35":3,"89":3}}],["expansion",{"2":{"89":1}}],["export",{"2":{"89":1,"141":1,"144":1}}],["experimental",{"0":{"88":1},"2":{"88":1}}],["experiments",{"0":{"86":1},"1":{"87":1,"88":1},"2":{"88":1}}],["expect",{"2":{"78":1}}],["expectations",{"2":{"76":1}}],["expected",{"2":{"34":2,"35":1,"89":4,"141":3}}],["explicit",{"2":{"89":2,"142":1}}],["explicitly",{"2":{"46":1,"89":2,"142":3}}],["explanation",{"2":{"35":1,"83":1,"89":1}}],["explored",{"2":{"89":1,"141":1}}],["explore",{"2":{"28":4,"89":7,"141":4}}],["exploresettings",{"2":{"18":1,"28":1,"89":1,"141":1}}],["exploring",{"0":{"17":1,"71":1},"1":{"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"72":1},"2":{"19":1}}],["explorations",{"2":{"32":1}}],["exploration",{"0":{"28":1},"2":{"11":1,"18":4,"28":2,"29":1,"89":3,"141":1}}],["express",{"2":{"142":1}}],["expressions",{"2":{"109":1}}],["expression",{"2":{"35":7,"37":1,"41":1,"89":8}}],["expr",{"2":{"35":2,"89":2,"135":1,"136":3,"137":3}}],["externally",{"2":{"144":1}}],["external",{"2":{"18":1,"89":1,"122":1}}],["extensibility",{"2":{"53":1}}],["extensionally",{"2":{"46":1}}],["extensional",{"2":{"46":1}}],["extension",{"0":{"21":1,"24":1,"26":1,"46":1,"125":1,"128":1},"1":{"126":1,"127":1,"129":1,"130":1},"2":{"40":1,"89":8,"125":1,"126":1,"128":1,"129":1,"133":4,"142":4}}],["extensions",{"0":{"9":1},"1":{"10":1},"2":{"4":1,"126":1,"129":1}}],["extending",{"0":{"133":1},"1":{"134":1,"135":1,"136":1,"137":1,"138":1,"139":1},"2":{"133":1}}],["extend",{"2":{"20":1,"27":1,"89":2,"133":1,"139":1,"141":1}}],["extends",{"2":{"9":3,"21":5,"24":3,"26":3,"27":1,"29":2,"30":4,"89":7,"107":3,"141":3}}],["extended",{"2":{"9":1,"89":19,"105":2,"120":8,"133":1,"141":2}}],["extracted",{"2":{"51":1}}],["extracts",{"2":{"5":1,"35":2,"89":2,"141":1}}],["extract",{"2":{"5":2,"35":1,"89":2,"141":2}}],["extrema",{"0":{"13":1},"1":{"14":1},"2":{"4":1,"13":3,"89":2,"107":1,"116":1,"141":2,"144":3}}],["ecosystem",{"2":{"4":1,"17":1,"19":1,"31":1,"33":1,"76":1,"90":1}}],["especially",{"2":{"92":1}}],["essential",{"2":{"4":1,"18":1,"32":1,"133":1}}],["establishes",{"2":{"3":2,"89":2}}],["x``or",{"2":{"107":1}}],["x̅",{"2":{"107":4}}],["xto",{"2":{"89":1,"106":1,"141":1}}],["xn",{"2":{"77":1}}],["x=x1",{"2":{"77":1}}],["x3",{"2":{"55":1,"89":1}}],["x3c",{"2":{"1":4,"7":3,"20":6,"21":9,"23":11,"24":8,"25":12,"26":8,"29":12,"30":3,"37":2,"43":10,"55":1,"57":1,"89":48,"107":1,"116":2,"141":16,"142":70,"144":91}}],["x2",{"2":{"55":1,"89":1,"144":2}}],["x26",{"2":{"44":4,"45":4,"89":4}}],["x1",{"2":{"55":1,"89":1,"144":2}}],["x",{"2":{"1":23,"3":8,"11":2,"13":2,"21":10,"24":10,"26":10,"30":4,"34":7,"35":5,"37":28,"39":2,"41":2,"42":8,"43":65,"45":6,"46":1,"48":2,"55":6,"57":8,"77":6,"89":298,"90":2,"94":3,"97":4,"101":1,"105":6,"106":8,"107":33,"112":8,"116":42,"120":60,"126":1,"129":1,"140":4,"141":33,"142":50,"144":68}}],["xcsp³",{"2":{"40":1}}],["xcsp3",{"0":{"35":1},"2":{"5":3,"7":1,"32":3,"35":1,"51":1,"89":3,"141":1}}],["xcsp",{"2":{"1":3,"3":4,"32":1,"35":2,"37":4,"39":1,"42":1,"43":14,"45":1,"48":1,"55":2,"57":2,"89":21,"141":1}}],["ci",{"2":{"131":1,"142":3}}],["circuit",{"2":{"48":12,"89":12}}],["cn",{"2":{"77":1}}],["c=c1",{"2":{"77":1}}],["c=usual",{"2":{"35":2,"89":2,"141":2}}],["clear",{"2":{"92":1}}],["classic",{"2":{"77":2}}],["closed",{"2":{"37":9,"43":1,"89":9,"140":1}}],["csps",{"2":{"52":1,"90":1}}],["c2",{"2":{"43":1,"140":2}}],["c1",{"2":{"43":1}}],["cblstodo",{"2":{"77":4}}],["cbls",{"0":{"142":1},"2":{"43":34,"76":2,"77":3,"90":3,"92":3,"107":1,"142":49,"144":1}}],["cc",{"2":{"37":2,"89":2}}],["central",{"2":{"31":1}}],["certain",{"2":{"3":4,"57":2,"89":6,"142":2}}],["cplex",{"2":{"90":1}}],["cp",{"0":{"70":1,"74":1,"77":1},"1":{"75":1,"76":1,"77":1},"2":{"31":2,"32":2,"33":2,"49":1,"50":1,"60":1,"62":1,"68":1,"76":1,"77":2,"78":1,"80":1,"88":1,"90":9,"91":4}}],["current",{"2":{"89":2,"109":1,"141":1,"144":1}}],["currently",{"2":{"21":2,"24":1,"26":1,"29":1,"89":1,"142":1}}],["customize",{"2":{"134":1}}],["custom",{"2":{"50":1,"132":4,"135":1,"139":1,"140":1}}],["cumulative",{"2":{"43":9,"57":9,"89":9,"142":3}}],["cut",{"2":{"30":1,"144":1}}],["cairomakie",{"2":{"140":1}}],["case",{"0":{"62":1},"2":{"126":1,"129":1,"132":1,"135":1,"138":1,"139":1}}],["cast",{"2":{"34":1,"77":1,"89":1}}],["call",{"2":{"140":1}}],["called",{"2":{"41":1,"46":1,"77":3,"89":1,"144":2}}],["calls",{"2":{"35":2,"89":2}}],["cardinalityclosed",{"2":{"43":1}}],["cardinalityopen",{"2":{"43":1}}],["cardinality",{"2":{"37":20,"43":9,"89":20}}],["care",{"2":{"35":1,"89":1,"141":1}}],["catch",{"2":{"116":1}}],["categorized",{"2":{"40":1}}],["categories",{"0":{"35":1}}],["cater",{"2":{"18":1}}],["catalog",{"2":{"32":1,"52":1}}],["capacited",{"2":{"144":1}}],["capacity",{"2":{"144":1}}],["capacities",{"2":{"30":1}}],["capabilities",{"2":{"33":1}}],["capability",{"2":{"32":1}}],["can",{"2":{"20":1,"32":1,"37":3,"55":1,"65":1,"76":1,"77":3,"78":1,"89":10,"92":1,"109":5,"112":1,"122":1,"126":1,"129":1,"132":3,"133":1,"134":1,"139":1,"141":3,"142":2,"144":1}}],["creating",{"2":{"132":1}}],["creation",{"2":{"32":1,"89":1,"122":1}}],["created",{"2":{"142":1,"144":1}}],["creates",{"2":{"35":1,"89":1,"140":1}}],["create",{"2":{"30":3,"34":1,"89":2,"141":1,"142":3}}],["crucial",{"2":{"18":1,"32":1,"53":1}}],["critical",{"2":{"17":1}}],["choose",{"2":{"144":1}}],["choice",{"2":{"76":1}}],["chuffed",{"2":{"90":1}}],["chemical",{"2":{"30":3}}],["checked",{"2":{"142":1}}],["checkout",{"2":{"132":1}}],["checkres",{"2":{"132":1,"140":2}}],["checks",{"2":{"34":2,"35":2,"45":1,"55":1,"89":6,"142":1}}],["checking",{"2":{"18":1}}],["check",{"2":{"1":3,"3":8,"21":1,"24":1,"26":1,"34":1,"37":7,"39":2,"42":1,"48":1,"55":2,"57":1,"77":1,"89":27,"101":4,"102":4,"103":1,"105":1,"106":1,"109":2,"112":1,"120":2,"121":6,"126":1,"129":1,"131":2,"132":1,"134":1,"137":3,"138":1,"140":1,"141":1,"142":4,"144":10}}],["chair",{"2":{"139":6,"140":2}}],["chairmark",{"2":{"129":1,"132":1,"134":1,"135":1,"136":1,"137":1,"138":1,"140":3}}],["chairmarks",{"0":{"128":1},"1":{"129":1,"130":1},"2":{"128":1,"129":1,"133":1,"134":1,"135":2,"136":1,"137":1,"138":1,"139":2,"140":5}}],["chains",{"2":{"91":1}}],["chapter",{"2":{"78":1}}],["characteristics",{"2":{"18":1,"51":1}}],["change",{"2":{"30":2}}],["changes",{"2":{"18":1,"23":1,"25":1,"30":1,"89":2,"92":1,"141":1}}],["channel",{"2":{"3":9,"43":12,"89":9}}],["c",{"2":{"1":14,"3":15,"21":1,"24":1,"26":1,"34":16,"35":8,"37":19,"39":2,"43":41,"44":4,"45":6,"48":4,"55":10,"57":11,"89":116,"140":2,"141":24,"144":31}}],["cosntriction",{"2":{"144":1}}],["cost",{"2":{"144":19}}],["costs",{"2":{"91":1,"144":20}}],["copied",{"2":{"142":7}}],["copy",{"2":{"142":19}}],["cops",{"2":{"90":1}}],["covering",{"2":{"87":1}}],["cover",{"2":{"85":1}}],["covers",{"2":{"4":1}}],["code",{"0":{"136":1,"137":1,"138":1},"2":{"76":1,"89":5,"126":2,"129":2,"132":2,"136":3,"137":2,"138":1,"140":1,"141":3}}],["could",{"2":{"41":1,"46":1}}],["count",{"2":{"37":6,"43":9,"89":95,"94":3,"120":40,"121":4,"122":21,"142":4}}],["counting",{"0":{"37":1},"2":{"89":1,"122":1}}],["counter",{"2":{"15":2,"89":2,"141":2,"144":1}}],["co",{"2":{"37":2,"89":11,"101":5,"102":4}}],["coefficients",{"2":{"37":1,"89":1}}],["coeffs",{"2":{"37":2,"43":1,"89":2}}],["columns",{"2":{"77":1}}],["column",{"2":{"77":1}}],["collect",{"2":{"116":1,"140":4}}],["collection",{"2":{"15":1,"21":2,"23":1,"24":1,"26":1,"28":2,"29":1,"41":1,"42":1,"43":1,"52":1,"77":4,"89":8,"90":1,"106":1,"107":3,"141":5,"142":1,"144":5}}],["collections",{"2":{"13":2,"89":1,"141":1}}],["collaborate",{"2":{"65":1}}],["col",{"2":{"30":1}}],["coordinates",{"2":{"30":1}}],["come",{"2":{"142":1}}],["combinatorial",{"2":{"49":1,"68":1,"91":1,"109":1}}],["commonly",{"2":{"132":1}}],["common",{"2":{"90":1}}],["commons",{"0":{"20":1},"1":{"21":1,"22":1}}],["command",{"2":{"76":1}}],["community",{"0":{"64":1,"65":1},"1":{"65":1,"66":1},"2":{"65":1}}],["commitment",{"2":{"33":1}}],["compile",{"2":{"89":1,"122":1}}],["compliance",{"2":{"55":2,"89":2,"142":1}}],["complexity",{"2":{"87":1}}],["complex",{"2":{"19":1,"31":1,"32":1,"46":1,"52":1,"59":1,"91":2,"92":1}}],["completely",{"2":{"89":1,"141":1}}],["completed",{"2":{"77":1}}],["complete",{"2":{"18":1,"28":2,"89":6,"141":5}}],["compatibility",{"2":{"51":1}}],["compare",{"2":{"1":1,"34":1,"89":2,"142":2}}],["comparisons",{"0":{"100":1},"1":{"101":1,"102":1,"103":1},"2":{"89":2,"103":1,"122":2}}],["comparison",{"0":{"1":1,"99":1},"1":{"100":1,"101":1,"102":1,"103":1},"2":{"1":1,"5":1,"37":1,"89":10,"99":1,"100":1,"101":1,"103":2,"122":1,"141":5}}],["compositions",{"2":{"89":1}}],["compositionalneworks",{"2":{"105":1}}],["compositionalnetworks",{"0":{"104":1},"1":{"105":1,"106":1},"2":{"89":77,"94":2,"95":1,"97":2,"98":1,"101":1,"103":1,"104":1,"105":6,"106":3,"107":3,"109":10,"120":9,"122":2,"141":26}}],["compositional",{"2":{"89":1,"109":1,"141":1}}],["composition",{"2":{"89":24,"105":1,"141":21}}],["compose",{"2":{"77":1,"89":12,"109":1,"141":8}}],["composed",{"2":{"28":1,"89":3,"141":3}}],["components",{"2":{"32":1,"52":1,"53":1,"89":2,"105":2,"141":2}}],["compounds",{"2":{"30":1}}],["comprehensive",{"2":{"19":1,"33":1,"89":2,"142":1}}],["computational",{"2":{"18":1,"75":1}}],["computes",{"2":{"144":1}}],["computed",{"2":{"89":17,"120":8}}],["compute",{"2":{"13":2,"23":2,"25":1,"30":1,"89":7,"106":1,"107":1,"112":1,"141":4,"142":1,"144":17}}],["core",{"0":{"35":1},"2":{"4":1,"5":3,"7":1,"32":4,"35":1,"40":1,"51":2,"89":3,"141":1}}],["corresponding",{"2":{"30":1,"89":1,"122":1}}],["corresponds",{"2":{"3":2,"89":2}}],["correspondence",{"2":{"3":2,"89":2}}],["config",{"2":{"132":3,"134":1,"136":1,"137":1,"138":1}}],["configuring",{"2":{"142":1}}],["configurable",{"2":{"131":1}}],["configuration",{"2":{"30":2,"89":8,"107":4,"136":1,"137":1,"140":1,"141":2,"142":6,"144":3}}],["configurations",{"2":{"11":1,"28":2,"89":7,"107":1,"141":3,"142":4,"144":1}}],["configure",{"2":{"18":1}}],["conflict",{"2":{"89":1,"142":1}}],["conflicted",{"2":{"89":3,"142":1}}],["conflicts",{"2":{"89":8,"142":4}}],["conflicts=nothing",{"2":{"89":1}}],["conduct",{"2":{"88":1}}],["conditions",{"2":{"89":1,"91":1,"122":1,"144":1}}],["condition",{"2":{"3":13,"37":15,"43":2,"57":3,"89":31,"142":6}}],["concerned",{"2":{"91":2}}],["concentrations",{"2":{"30":2}}],["concepts",{"0":{"69":1},"2":{"69":1,"84":1}}],["concept",{"2":{"1":10,"3":8,"28":3,"32":2,"34":19,"35":18,"37":15,"39":2,"42":1,"43":59,"44":2,"45":3,"48":2,"55":4,"57":6,"89":95,"141":20,"142":2}}],["converting",{"0":{"139":1}}],["converted",{"2":{"138":1,"142":4}}],["convert",{"2":{"20":1,"27":3,"89":7,"105":2,"109":1,"139":1,"141":1,"142":2}}],["containing",{"2":{"142":1,"144":1}}],["container",{"2":{"89":1,"109":1,"142":1}}],["contains",{"2":{"34":1,"35":2,"77":1,"89":4,"109":1,"141":2}}],["content",{"2":{"78":1}}],["contexts",{"2":{"32":1}}],["context",{"2":{"20":1,"89":1,"109":2,"141":1}}],["contrast",{"2":{"70":1,"92":1}}],["contribute",{"2":{"65":1}}],["contribution",{"0":{"64":1},"1":{"65":1,"66":1}}],["contributions",{"2":{"52":1}}],["contributing",{"2":{"53":1}}],["contiguous",{"2":{"89":12,"120":2,"122":4}}],["contiuous",{"2":{"23":1,"25":1,"89":1,"141":1}}],["continuousdomain",{"2":{"18":1,"23":2,"89":2,"141":1}}],["continuous",{"0":{"23":1},"1":{"24":1},"2":{"17":1,"18":2,"20":2,"23":2,"25":1,"30":1,"50":1,"89":3,"141":3}}],["connecting",{"2":{"9":1,"89":1,"141":1}}],["connection",{"0":{"3":1}}],["connector",{"2":{"9":1,"89":1,"141":1}}],["cons=dictionary",{"2":{"144":1}}],["cons",{"2":{"144":31}}],["considered",{"2":{"37":2,"89":2,"144":1}}],["considers",{"2":{"7":1}}],["consistent",{"2":{"35":1,"89":1}}],["consisempty",{"2":{"9":1,"89":1,"141":1}}],["consin",{"2":{"9":1,"89":1,"141":1}}],["constriction",{"2":{"144":4}}],["constrains",{"2":{"144":1}}],["constrained",{"2":{"142":2,"144":2}}],["constraintlearning",{"0":{"107":1},"2":{"107":27,"124":1}}],["constraintprogrammingextensions",{"2":{"90":1}}],["constraintmodels",{"0":{"30":1,"52":1},"2":{"30":14,"52":1,"90":1}}],["constraintdomains",{"0":{"17":1},"1":{"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1},"2":{"17":1,"18":3,"19":2,"20":6,"23":8,"25":10,"28":3,"29":11,"50":1,"89":35,"90":1,"141":18}}],["constraintcommons",{"0":{"4":1},"1":{"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1},"2":{"4":1,"5":3,"7":6,"9":3,"11":1,"13":1,"15":1,"29":2,"35":2,"53":1,"89":18,"141":12,"142":2}}],["constraint",{"0":{"0":1,"2":1,"19":1,"31":1,"33":1,"36":1,"38":1,"42":1,"47":1,"49":1,"54":1,"56":1,"58":1,"67":1,"68":1,"91":1,"92":1,"117":1},"1":{"1":1,"3":1,"32":1,"33":1,"34":1,"35":1,"37":1,"39":1,"48":1,"50":1,"51":1,"52":1,"53":1,"55":1,"57":1,"59":1,"60":1,"68":1,"69":1,"70":1},"2":{"1":7,"3":24,"4":1,"5":9,"11":1,"17":2,"18":1,"19":2,"21":3,"24":3,"26":3,"28":2,"31":1,"32":10,"33":2,"34":17,"35":24,"37":20,"39":7,"41":5,"42":5,"43":40,"45":4,"46":3,"48":7,"49":2,"51":1,"52":1,"55":6,"57":20,"77":7,"78":1,"89":156,"90":5,"91":1,"92":5,"107":4,"109":1,"111":1,"122":3,"141":39,"142":66,"144":33}}],["constraintsolver",{"2":{"90":1}}],["constraints",{"0":{"0":1,"1":1,"2":1,"3":1,"31":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"46":1,"47":1,"48":1,"51":1,"54":1,"55":1,"56":1,"57":1,"59":1,"78":1,"108":1},"1":{"1":1,"3":1,"32":1,"33":1,"34":1,"35":1,"37":1,"39":1,"41":1,"42":2,"43":2,"44":2,"45":2,"46":1,"48":1,"55":1,"57":1},"2":{"1":3,"3":4,"4":1,"5":9,"7":3,"17":1,"31":3,"32":17,"33":5,"34":12,"35":38,"37":4,"39":1,"40":2,"41":3,"42":3,"43":49,"45":3,"46":2,"48":1,"49":1,"51":2,"53":1,"55":2,"57":2,"59":1,"69":1,"76":1,"77":2,"89":75,"90":4,"91":3,"92":2,"107":1,"108":1,"114":1,"141":40,"142":1,"144":23}}],["constructor",{"2":{"30":1,"107":3,"144":1}}],["constructing",{"2":{"30":1,"52":1}}],["construct",{"2":{"20":3,"23":3,"25":3,"29":1,"30":3,"89":6,"141":5,"144":3}}],["constant",{"2":{"5":1,"34":1,"35":1,"89":3,"141":2}}],["o",{"2":{"107":1,"144":16}}],["objs=dictionary",{"2":{"144":1}}],["objs",{"2":{"144":7}}],["objectives",{"2":{"144":10}}],["objective",{"2":{"77":1,"142":4,"144":24}}],["observable",{"2":{"30":1}}],["own",{"2":{"76":1,"77":1,"144":1}}],["occurs",{"2":{"37":2,"43":1,"89":2}}],["occurrences",{"2":{"37":7,"89":7,"142":4}}],["output",{"2":{"89":2,"107":1,"136":1,"137":1,"138":1,"139":1,"141":2}}],["outputs",{"2":{"34":1,"89":1,"124":3,"141":1}}],["out",{"2":{"77":1}}],["outlined",{"2":{"32":1}}],["our",{"2":{"11":1,"77":2}}],["others",{"2":{"90":1}}],["other",{"0":{"70":1},"2":{"30":1,"70":1,"76":1,"77":4,"90":1,"91":1,"92":2,"126":1,"129":1,"132":1,"139":1,"144":2}}],["otherwise",{"2":{"1":3,"3":4,"7":1,"21":1,"24":1,"26":1,"29":1,"34":3,"37":4,"39":1,"48":1,"57":2,"89":28,"141":3,"142":4,"144":1}}],["overloading",{"2":{"138":1}}],["overloaded",{"2":{"134":1,"135":1,"136":1,"137":1,"138":1,"139":2}}],["overlap",{"2":{"43":6,"57":21,"89":21,"142":1}}],["overhead",{"2":{"127":2}}],["oversampling",{"2":{"107":1,"116":6}}],["oversample",{"2":{"11":2,"89":2,"116":1,"141":2}}],["overview",{"0":{"84":1},"2":{"78":1}}],["overviews",{"0":{"72":1}}],["over",{"2":{"13":1,"28":1,"32":1,"34":1,"35":1,"45":2,"77":2,"89":7,"106":1,"107":1,"131":1,"141":4,"144":1}}],["once",{"2":{"76":1}}],["ongoing",{"2":{"57":2,"89":2}}],["ones",{"2":{"50":1}}],["one",{"2":{"5":2,"29":1,"32":1,"35":1,"77":3,"89":16,"95":1,"98":1,"103":1,"105":2,"107":2,"109":2,"111":1,"112":4,"116":1,"132":1,"141":10,"142":1,"144":3}}],["on",{"0":{"35":1,"48":1,"87":1},"2":{"5":3,"17":1,"18":1,"20":1,"28":1,"29":1,"30":1,"34":1,"35":3,"39":2,"41":1,"42":2,"45":1,"60":1,"76":1,"89":15,"90":1,"91":3,"107":3,"112":1,"118":1,"122":2,"125":1,"128":1,"132":1,"137":1,"141":4,"142":4,"144":2}}],["only",{"2":{"4":1,"37":1,"77":1,"89":6,"95":1,"98":1,"103":1,"109":2,"114":1,"141":3,"142":2,"144":1}}],["originating",{"2":{"89":1,"142":2}}],["origins",{"2":{"57":6,"89":6}}],["oriented",{"2":{"4":1}}],["org",{"2":{"35":1,"89":1,"141":1}}],["organizations",{"2":{"91":1}}],["organization",{"2":{"32":1,"72":1,"78":1}}],["or",{"2":{"4":2,"5":4,"9":1,"15":1,"18":4,"19":1,"20":2,"21":1,"23":1,"24":1,"25":1,"26":1,"30":1,"33":1,"34":1,"35":2,"37":1,"41":1,"46":2,"50":1,"57":4,"66":1,"76":1,"77":1,"89":28,"90":2,"91":4,"92":2,"112":1,"122":5,"124":3,"132":7,"141":9,"142":2,"144":6}}],["order",{"2":{"1":6,"30":1,"39":2,"89":9,"122":1,"142":3}}],["ordered",{"2":{"1":6,"43":6,"89":8,"109":1,"142":2,"144":1}}],["opt",{"2":{"142":2}}],["optmizers",{"2":{"107":1}}],["optimisation",{"2":{"90":1}}],["optimizing",{"2":{"91":1,"144":7}}],["optimization",{"0":{"60":1,"61":1,"70":1,"74":1,"82":1,"83":1},"1":{"62":1,"63":1,"75":1,"76":1,"77":1,"83":1,"84":1,"85":1},"2":{"32":1,"52":1,"62":1,"63":1,"75":1,"78":1,"80":1,"83":2,"85":1,"91":2,"144":2}}],["optimized",{"2":{"142":1}}],["optimizers",{"0":{"115":1},"1":{"116":1,"117":1},"2":{"107":1}}],["optimizer",{"2":{"43":14,"77":1,"90":1,"107":6,"116":8,"142":59,"144":3}}],["optimize",{"2":{"30":1,"43":14,"89":1,"91":1,"107":11,"141":1,"142":4}}],["option",{"2":{"132":4,"142":1}}],["option2",{"2":{"126":1,"129":1,"132":1}}],["option1",{"2":{"126":1,"129":1,"132":1}}],["optionally",{"2":{"34":2,"35":1,"89":2,"141":2}}],["optional",{"2":{"28":1,"30":1,"89":10,"107":1,"112":1,"132":1,"141":10,"144":2}}],["options",{"0":{"127":1,"130":1,"134":1},"2":{"18":1,"107":2,"127":1,"130":1,"132":3,"134":3,"142":5,"144":34}}],["open",{"2":{"37":6,"43":1,"89":6,"118":1,"140":1}}],["operate",{"2":{"89":1,"122":1}}],["operational",{"0":{"91":1},"2":{"91":1}}],["operation",{"2":{"89":5,"107":2,"109":5}}],["operations",{"0":{"97":1},"2":{"9":1,"24":2,"26":2,"89":21,"95":1,"98":2,"103":1,"107":3,"109":13,"122":1,"141":7}}],["operators",{"2":{"29":1,"89":1}}],["operator",{"2":{"1":3,"5":2,"37":1,"89":6}}],["opparameterdomain",{"2":{"29":1,"89":1}}],["op",{"2":{"3":8,"5":1,"37":10,"43":27,"48":4,"57":4,"89":29,"109":2,"142":9}}],["op==",{"2":{"37":1,"89":1}}],["op===",{"2":{"3":2,"37":4,"89":6}}],["op=>",{"2":{"1":2,"89":2}}],["op=≥",{"2":{"1":2,"37":1,"43":1,"89":3}}],["op=≤",{"2":{"1":6,"37":3,"43":1,"89":9}}],["op=",{"2":{"1":6,"43":1,"89":6}}],["op=+",{"2":{"1":2,"89":2}}],["official",{"2":{"76":1}}],["offer",{"2":{"32":1}}],["offering",{"2":{"19":1,"32":1,"33":1}}],["offers",{"2":{"18":1,"33":1,"52":1}}],["often",{"2":{"48":2,"57":6,"89":8,"91":1,"132":1}}],["of",{"0":{"94":1,"97":1,"100":1,"119":1},"1":{"101":1,"102":1,"103":1,"120":1,"121":1,"122":1},"2":{"1":14,"3":17,"4":1,"5":12,"7":3,"11":2,"13":4,"17":3,"18":8,"19":4,"20":3,"21":5,"23":7,"24":10,"25":7,"26":11,"28":14,"29":2,"30":33,"31":1,"32":13,"33":1,"34":18,"35":23,"37":35,"39":6,"45":3,"46":4,"48":8,"50":1,"51":3,"52":1,"53":3,"55":10,"57":14,"63":1,"66":1,"75":2,"76":1,"77":11,"78":2,"81":1,"83":2,"85":1,"88":1,"89":298,"90":7,"91":2,"92":4,"94":2,"95":2,"98":2,"103":2,"105":6,"106":3,"107":14,"109":15,"112":3,"118":3,"120":13,"122":8,"124":2,"131":1,"132":15,"135":1,"136":1,"137":1,"138":1,"139":1,"140":2,"141":96,"142":48,"144":78}}],["fetch",{"2":{"144":1}}],["feasible",{"2":{"77":2,"92":1}}],["features",{"0":{"18":1,"32":1,"111":1},"2":{"32":1,"51":1,"72":1,"131":1}}],["feature",{"2":{"4":1,"18":1,"32":1,"133":1}}],["f2",{"2":{"144":2}}],["fraction",{"2":{"139":1}}],["framework",{"2":{"49":1,"53":1,"90":1}}],["front",{"2":{"118":1}}],["from",{"0":{"55":1,"63":1,"70":1},"2":{"21":4,"24":2,"26":3,"29":2,"30":2,"32":2,"35":1,"45":1,"51":1,"55":1,"63":1,"77":2,"78":1,"89":14,"91":1,"107":1,"114":1,"122":2,"131":1,"136":1,"137":1,"138":1,"139":1,"140":4,"141":2,"142":6,"144":17}}],["friendly",{"2":{"33":1,"51":1}}],["free",{"2":{"30":1}}],["finds",{"2":{"124":1}}],["find",{"2":{"92":5,"144":2}}],["finding",{"2":{"90":1,"91":1,"92":2}}],["finishes",{"2":{"57":8,"89":8}}],["finish",{"2":{"55":2,"89":2}}],["filter",{"2":{"116":1}}],["file",{"2":{"89":7,"109":1,"141":7}}],["filled",{"2":{"77":1}}],["fill",{"2":{"30":4,"77":1}}],["fields",{"2":{"34":1,"89":1,"141":1,"142":1}}],["first",{"0":{"77":1},"2":{"3":2,"34":1,"35":3,"43":1,"55":1,"57":8,"77":1,"89":15,"107":1,"116":4,"124":1,"132":4,"142":1,"144":1}}],["flatten",{"2":{"116":1}}],["flexibility",{"2":{"32":2,"76":1}}],["flexible",{"2":{"18":1,"28":2,"32":1,"33":1,"46":1,"49":1,"89":5,"122":1,"141":3}}],["float64",{"2":{"34":2,"89":2,"116":1,"142":1,"144":5}}],["flows",{"2":{"30":1}}],["flow",{"2":{"30":1}}],["floor",{"2":{"28":1,"89":1,"141":1}}],["f",{"2":{"7":1,"11":2,"32":1,"34":3,"89":16,"105":6,"141":14,"142":40,"144":7}}],["full",{"0":{"89":1}}],["func",{"2":{"144":6}}],["funcs",{"2":{"89":2,"105":2,"141":2}}],["functioning",{"2":{"53":1}}],["functionalities",{"0":{"18":1,"32":1},"2":{"18":1,"19":1,"32":1,"53":1}}],["functions",{"2":{"4":1,"18":1,"30":1,"34":2,"89":8,"103":1,"109":3,"122":4,"133":1,"139":2,"141":2}}],["function",{"2":{"1":3,"3":4,"5":2,"7":2,"9":3,"11":2,"13":1,"15":2,"20":4,"21":5,"23":6,"24":4,"25":7,"26":5,"27":2,"28":3,"29":4,"30":1,"32":2,"34":29,"35":14,"37":4,"39":1,"41":1,"45":2,"48":1,"55":3,"57":2,"77":1,"89":67,"94":2,"95":1,"97":2,"98":1,"101":2,"103":1,"105":12,"106":3,"107":4,"109":9,"111":2,"112":3,"114":1,"116":7,"118":1,"120":10,"122":6,"124":1,"139":1,"141":31,"142":30,"144":18}}],["fundamentals",{"2":{"85":1}}],["fundamental",{"2":{"45":1,"89":1,"142":1}}],["further",{"2":{"30":1,"76":1}}],["future",{"0":{"66":1},"2":{"5":1,"28":1,"89":1,"141":1}}],["found",{"2":{"109":1}}],["foundation",{"2":{"18":1}}],["foundational",{"2":{"4":1}}],["follwing",{"2":{"131":1}}],["following",{"2":{"20":1,"32":1,"34":1,"37":1,"89":8,"105":2,"112":1,"122":1,"126":1,"129":1,"140":1,"141":6,"144":1}}],["follows",{"2":{"11":1,"77":1,"132":1,"142":1}}],["follow",{"2":{"5":1}}],["folder",{"2":{"140":2}}],["fold",{"2":{"90":1,"140":1}}],["focuses",{"2":{"90":1,"91":2}}],["focusing",{"2":{"17":1}}],["forbidden",{"2":{"30":1,"89":1,"142":2}}],["forwarded",{"2":{"144":1}}],["forward",{"2":{"30":2,"77":1}}],["formal",{"2":{"144":1}}],["formatted",{"2":{"89":2,"105":1,"141":1}}],["format",{"2":{"5":1,"20":1,"30":9,"89":3,"112":1,"141":2}}],["formulating",{"2":{"63":1}}],["formulation",{"2":{"18":1}}],["form",{"2":{"48":2,"89":2}}],["foreseeable",{"2":{"5":1}}],["for",{"0":{"44":1,"74":1,"109":1,"112":1},"1":{"75":1,"76":1,"77":1},"2":{"3":4,"5":1,"7":3,"9":1,"15":1,"17":1,"18":13,"19":3,"20":3,"21":3,"23":2,"24":3,"25":2,"26":3,"27":2,"28":1,"29":2,"30":12,"31":1,"32":6,"33":4,"34":5,"35":4,"41":1,"42":1,"43":6,"46":1,"49":2,"52":1,"53":1,"57":6,"66":1,"73":1,"75":1,"76":3,"77":2,"80":1,"89":53,"90":5,"91":1,"92":3,"101":9,"102":8,"103":2,"104":1,"105":4,"106":2,"107":8,"109":4,"111":1,"112":2,"114":1,"116":2,"120":5,"121":12,"122":5,"123":1,"124":1,"131":3,"132":5,"133":2,"134":1,"136":2,"137":1,"139":5,"140":5,"141":12,"142":14,"144":18}}],["faster",{"2":{"144":1}}],["facilities",{"2":{"30":6}}],["facilitating",{"2":{"18":1,"33":1}}],["facilitates",{"2":{"18":1,"89":1,"122":1}}],["facilitate",{"2":{"4":1,"31":1}}],["fake",{"2":{"29":1,"89":1}}],["fakeautomaton",{"2":{"7":2,"18":1,"21":2,"24":1,"26":1,"29":5,"89":5}}],["fallback",{"2":{"20":1,"21":2,"23":1,"24":2,"25":1,"26":2,"89":4,"141":1}}],["false",{"2":{"1":3,"3":10,"7":1,"9":1,"11":1,"21":2,"24":2,"26":2,"29":1,"34":3,"35":1,"37":4,"39":1,"43":18,"48":1,"57":2,"89":31,"103":1,"116":3,"141":5,"142":4,"144":2}}],["fa",{"2":{"7":1,"21":4,"24":2,"26":2,"29":3,"89":3}}],["vov",{"2":{"142":5}}],["vf",{"2":{"140":5}}],["v",{"2":{"89":3,"105":3,"124":7,"140":5,"141":2,"142":12,"144":3}}],["v3",{"2":{"43":3}}],["v2",{"2":{"43":3}}],["v1",{"2":{"43":3}}],["vs",{"0":{"91":1},"2":{"34":3,"89":3}}],["vi",{"2":{"142":3}}],["via",{"2":{"131":1,"133":1,"134":1,"138":1}}],["viable",{"2":{"89":6,"109":5,"141":1}}],["visuals",{"2":{"140":4}}],["visualization",{"2":{"131":1,"132":1}}],["visual",{"2":{"76":1}}],["vision",{"2":{"66":1}}],["vital",{"2":{"32":1}}],["vice",{"2":{"3":2,"89":3,"122":1}}],["vec",{"2":{"77":1}}],["vectorofvariables",{"2":{"142":3}}],["vectors",{"2":{"89":3,"97":2,"120":1,"140":1}}],["vector",{"2":{"1":6,"5":5,"7":1,"20":1,"21":4,"23":4,"24":3,"25":1,"26":3,"28":1,"29":1,"35":2,"37":9,"45":1,"55":2,"89":63,"94":1,"97":2,"105":2,"112":2,"116":5,"120":8,"122":1,"124":2,"132":2,"140":1,"141":11,"142":17,"144":1}}],["verbose",{"2":{"144":4}}],["verbosity",{"2":{"142":1,"144":1}}],["very",{"2":{"91":1}}],["verifies",{"2":{"55":2,"89":2,"142":1}}],["versionnumber",{"2":{"124":1,"132":1}}],["versions",{"2":{"124":3,"132":4,"140":1}}],["version",{"2":{"35":1,"76":1,"89":2,"122":1,"124":3,"132":5,"142":1}}],["versatile",{"0":{"51":1},"2":{"89":2,"142":1}}],["versatility",{"2":{"19":1}}],["versa",{"2":{"3":2,"89":3,"122":1}}],["var",{"2":{"89":20,"144":12}}],["variety",{"2":{"92":1}}],["various",{"0":{"115":1},"1":{"116":1,"117":1},"2":{"13":1,"18":1,"20":1,"32":1,"50":1,"60":1,"76":1,"87":1,"89":2,"92":1,"122":1,"131":2,"141":1}}],["variant",{"2":{"57":2,"89":2}}],["variants",{"2":{"1":3,"3":4,"37":4,"39":1,"45":1,"48":1,"55":2,"57":2,"77":1,"89":19}}],["variableconstrainedoncreation",{"2":{"142":1}}],["variableinfo",{"2":{"142":2}}],["variable",{"0":{"17":1},"1":{"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1},"2":{"3":6,"5":2,"17":1,"18":1,"19":1,"21":3,"24":3,"26":3,"32":1,"34":1,"41":2,"43":32,"46":2,"77":2,"89":11,"141":2,"142":9,"144":40}}],["variables",{"0":{"50":1},"2":{"3":8,"29":1,"37":8,"39":2,"45":1,"46":1,"48":2,"50":1,"55":1,"69":1,"77":3,"89":32,"90":1,"106":1,"111":2,"141":4,"142":9,"144":26}}],["vars",{"2":{"5":2,"39":2,"43":9,"57":15,"89":51,"101":3,"142":20,"144":24}}],["vars=dictionary",{"2":{"144":1}}],["vars=ones",{"2":{"37":2,"89":2}}],["vars=nothing",{"2":{"1":10,"89":10}}],["vars=",{"2":{"1":4,"39":2,"89":11}}],["vars=zeros",{"2":{"1":2,"89":2}}],["valparameterdomain",{"2":{"29":1,"89":1}}],["validity",{"2":{"45":1,"89":1,"142":1}}],["valid",{"2":{"20":1,"55":1,"89":10,"91":2,"111":2,"112":3,"141":5,"142":7}}],["val=3",{"2":{"37":1,"43":1,"89":1}}],["val=2",{"2":{"3":1,"37":3,"43":3,"89":4}}],["val=15",{"2":{"37":2,"43":2,"89":2}}],["val=1",{"2":{"1":2,"3":1,"37":1,"43":1,"89":4}}],["val=nothing",{"2":{"1":2,"3":2,"89":4}}],["value2",{"2":{"126":1,"129":1,"132":1}}],["value1",{"2":{"126":1,"129":1,"132":1}}],["valued",{"2":{"55":1,"89":1,"142":1}}],["value",{"2":{"1":1,"3":13,"5":1,"21":8,"24":7,"25":2,"26":10,"29":2,"30":1,"34":3,"35":5,"37":5,"43":32,"48":4,"55":3,"77":3,"89":59,"103":2,"109":1,"112":1,"122":8,"132":1,"141":13,"142":15,"144":20}}],["values",{"2":{"1":13,"3":4,"5":1,"20":2,"23":2,"25":4,"29":3,"30":4,"34":2,"35":1,"37":24,"39":6,"46":2,"48":3,"55":2,"77":2,"89":67,"122":5,"127":1,"130":1,"132":1,"141":4,"142":12,"144":11}}],["val",{"0":{"102":1,"121":1},"2":{"1":3,"3":8,"5":1,"15":2,"20":1,"30":4,"37":21,"43":39,"48":4,"57":6,"89":124,"101":3,"102":3,"121":2,"122":8,"134":2,"135":2,"136":2,"137":2,"138":2,"140":2,"141":3,"142":16,"144":8}}],["valsparameterdomain",{"2":{"29":1,"89":1}}],["vals=nothing",{"2":{"35":2,"89":2,"141":1}}],["vals=",{"2":{"1":2,"37":13,"43":7,"89":15}}],["vals",{"2":{"1":2,"5":2,"37":18,"43":20,"89":24,"120":2,"122":2,"142":7}}],["t2",{"2":{"142":4}}],["t1",{"2":{"142":3}}],["tbw",{"2":{"107":4,"144":2}}],["typically",{"2":{"91":1}}],["typeof",{"2":{"142":1}}],["typemax",{"2":{"116":1,"144":1}}],["type",{"2":{"7":4,"18":2,"20":6,"23":2,"25":5,"27":1,"28":1,"29":9,"30":7,"32":1,"34":1,"89":34,"92":2,"107":7,"109":1,"114":2,"122":1,"141":13,"142":55,"144":17}}],["types",{"2":{"4":1,"18":3,"40":1,"46":1,"50":1,"83":1,"89":2,"122":2,"144":8}}],["tutorial",{"0":{"140":1}}],["tutorials",{"0":{"86":1,"87":1},"1":{"87":1,"88":1},"2":{"87":1}}],["tuples",{"2":{"46":2,"89":6,"142":4}}],["tuple",{"2":{"3":7,"20":5,"23":5,"25":5,"30":2,"57":1,"89":17,"132":1,"141":5,"142":9}}],["tips",{"2":{"80":1}}],["timelimitsec",{"2":{"142":1}}],["timestamps",{"2":{"144":1}}],["times",{"2":{"37":3,"43":1,"89":3,"139":3,"140":2}}],["time",{"2":{"30":1,"57":8,"89":10,"92":1,"109":2,"122":1,"127":2,"139":1,"142":1,"144":27}}],["temporary",{"2":{"144":1}}],["templates",{"2":{"52":1}}],["text",{"2":{"93":1,"96":1,"99":1,"118":1}}],["teach",{"2":{"81":1}}],["terminology",{"0":{"69":1}}],["techniques",{"0":{"58":1,"70":1},"1":{"59":1,"60":1},"2":{"91":2,"92":2}}],["tests",{"2":{"132":1}}],["tested",{"0":{"137":1},"2":{"132":1,"136":1}}],["test",{"0":{"44":1},"2":{"107":2,"116":6,"131":1,"132":2}}],["testing",{"0":{"138":1},"2":{"34":1,"89":1,"107":1,"131":1,"134":1,"137":1,"138":1,"140":2}}],["tendency",{"2":{"30":1}}],["tries",{"2":{"92":1}}],["tr",{"2":{"89":58,"105":3,"120":29,"121":6}}],["try",{"2":{"76":1,"92":1,"116":1}}],["track",{"2":{"127":1,"130":1,"134":1}}],["train",{"2":{"89":3,"107":2,"114":3,"116":5,"141":2}}],["training",{"2":{"89":1,"107":7,"141":1}}],["transpose",{"2":{"116":3}}],["transportation",{"2":{"91":1}}],["transported",{"2":{"30":1}}],["transform",{"2":{"89":1,"112":1,"141":1}}],["transforms",{"2":{"89":4,"122":4}}],["transformations",{"0":{"118":1,"119":1},"1":{"119":1,"120":2,"121":2,"122":2},"2":{"89":16,"103":1,"119":1,"122":15,"141":3}}],["transformation",{"2":{"89":12,"118":3,"122":8,"141":4}}],["traditional",{"2":{"32":1}}],["true",{"2":{"1":3,"3":6,"7":3,"9":1,"11":1,"21":2,"24":2,"26":2,"29":1,"34":2,"35":1,"37":4,"39":1,"43":21,"44":2,"48":1,"57":2,"89":28,"107":1,"109":1,"130":1,"134":1,"140":1,"141":4,"142":6,"144":3}}],["tag",{"2":{"132":1}}],["tags",{"2":{"132":2,"140":1}}],["tabu",{"2":{"84":1,"144":46}}],["table",{"0":{"139":1},"2":{"35":4,"89":4,"116":1,"138":2,"139":4,"141":4}}],["task",{"2":{"57":16,"89":16}}],["tasks",{"2":{"57":18,"89":18,"142":1,"144":1}}],["taken",{"2":{"140":1}}],["take",{"2":{"35":1,"77":1,"89":1,"92":1,"132":1,"141":1}}],["takes",{"2":{"34":1,"35":1,"39":2,"89":4,"142":1}}],["tailoring",{"2":{"18":1,"32":1}}],["targeted",{"2":{"28":1,"76":1,"89":2,"141":2,"144":3}}],["target",{"2":{"5":1,"89":1}}],["t",{"2":{"7":2,"20":8,"23":11,"25":14,"29":5,"30":10,"34":1,"35":2,"55":2,"89":29,"132":1,"141":12,"142":25,"144":7}}],["two",{"2":{"3":2,"7":1,"20":1,"23":3,"25":3,"30":1,"35":1,"40":1,"45":1,"46":1,"57":4,"89":11,"90":1,"141":3,"142":1}}],["th",{"2":{"89":1,"109":1}}],["threads",{"2":{"127":1,"130":1,"132":2,"134":1,"144":12}}],["threshold",{"2":{"89":1,"122":1}}],["throw",{"2":{"116":1}}],["through",{"0":{"52":1},"2":{"32":1,"41":3,"43":2,"50":1,"63":1,"76":3,"89":3,"94":1,"97":2,"107":2}}],["than",{"2":{"34":1,"35":1,"41":1,"52":1,"89":11,"120":5,"122":1,"142":1}}],["that",{"2":{"1":7,"3":14,"4":1,"5":2,"17":1,"20":2,"21":2,"23":1,"24":2,"25":3,"26":2,"28":1,"30":2,"32":1,"34":11,"35":2,"37":11,"39":4,"41":4,"42":2,"43":5,"45":2,"46":4,"48":2,"55":5,"57":12,"76":1,"77":6,"78":1,"89":102,"90":3,"91":4,"92":5,"95":1,"98":1,"103":2,"105":2,"107":3,"109":3,"111":1,"122":3,"131":1,"133":1,"139":1,"141":16,"142":33,"144":10}}],["those",{"2":{"32":1,"109":1}}],["thus",{"2":{"30":1}}],["this",{"2":{"3":2,"5":1,"17":1,"18":1,"19":1,"28":1,"30":1,"31":1,"32":3,"34":1,"35":4,"42":1,"43":4,"45":1,"52":1,"55":2,"57":2,"77":2,"89":17,"109":2,"122":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"132":2,"133":1,"134":2,"135":2,"136":2,"137":1,"140":2,"141":2,"142":8,"144":3}}],["third",{"2":{"3":2,"89":2}}],["theory",{"0":{"63":1}}],["them",{"2":{"45":1,"89":1,"90":1,"142":1,"144":1}}],["their",{"0":{"59":1},"2":{"32":1,"50":1,"60":1,"76":1,"77":1,"89":1,"122":1,"127":1,"130":1,"131":1,"134":1}}],["they",{"2":{"30":1,"41":3,"46":3,"59":1,"65":1,"90":1,"91":1,"92":1}}],["there",{"2":{"30":3,"35":1,"55":1,"89":2,"133":1,"139":1,"142":1}}],["thereby",{"2":{"17":1}}],["then",{"2":{"28":1,"35":2,"42":1,"89":3,"141":1,"144":2}}],["these",{"2":{"5":1,"18":1,"32":3,"35":1,"41":1,"46":2,"89":1,"92":1,"139":1}}],["the",{"0":{"65":1,"134":1,"139":1},"2":{"1":10,"3":25,"4":3,"5":17,"7":2,"9":3,"11":1,"13":5,"15":2,"17":4,"18":14,"19":5,"20":8,"21":4,"23":8,"24":8,"25":6,"26":9,"28":13,"29":5,"30":50,"31":2,"32":19,"33":3,"34":46,"35":67,"37":41,"39":3,"40":1,"41":6,"42":9,"43":12,"45":6,"46":4,"48":16,"51":1,"52":2,"53":2,"55":17,"57":33,"63":1,"65":1,"66":1,"72":1,"75":1,"76":9,"77":13,"78":3,"81":1,"85":1,"88":1,"89":474,"90":4,"91":3,"92":3,"93":1,"94":1,"95":3,"96":1,"98":3,"99":1,"100":2,"101":1,"103":4,"105":4,"106":2,"107":17,"109":19,"111":1,"112":1,"118":5,"119":2,"120":21,"122":12,"124":5,"126":3,"129":3,"131":2,"132":19,"133":3,"134":2,"135":2,"136":6,"137":5,"138":5,"139":3,"140":10,"141":139,"142":155,"144":120}}],["tolerance",{"2":{"127":4}}],["too",{"2":{"92":1}}],["tool",{"2":{"31":1}}],["toolkit",{"2":{"19":1}}],["tools",{"0":{"34":1,"49":1},"1":{"50":1,"51":1,"52":1,"53":1},"2":{"18":1,"33":2}}],["towards",{"2":{"89":1,"141":1}}],["topics",{"2":{"87":1}}],["todo",{"2":{"34":1,"42":1,"43":17,"76":1,"77":4,"89":1,"144":1}}],["total",{"2":{"24":1,"26":1,"89":1}}],["to",{"0":{"21":1,"24":1,"26":1,"49":1,"63":1,"78":1,"110":1,"137":1},"1":{"50":1,"51":1,"52":1,"53":1,"111":1},"2":{"1":9,"3":12,"4":2,"5":2,"7":1,"9":1,"11":1,"13":1,"15":1,"18":6,"20":4,"21":6,"23":3,"24":4,"25":1,"26":4,"28":3,"29":18,"30":16,"31":2,"32":4,"33":2,"34":17,"35":23,"37":13,"39":2,"41":1,"42":6,"43":18,"46":1,"48":3,"51":1,"52":1,"53":3,"55":4,"57":2,"65":1,"76":4,"77":6,"78":1,"81":1,"88":1,"89":188,"90":3,"91":5,"92":9,"93":1,"96":1,"97":2,"99":1,"105":6,"106":1,"107":12,"109":3,"110":1,"111":1,"112":1,"114":1,"116":1,"118":2,"120":16,"122":7,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":3,"132":10,"133":3,"134":4,"135":2,"136":3,"137":2,"138":3,"139":5,"140":3,"141":46,"142":36,"144":49}}],["i+1",{"2":{"77":1}}],["iconic",{"2":{"77":1}}],["icnlocalsearchoptimizer",{"2":{"107":3}}],["icngeneticoptimizer",{"2":{"107":4}}],["icnoptimizer",{"2":{"107":3}}],["icnconfig",{"2":{"107":4}}],["icns",{"2":{"93":1,"96":1,"99":1,"107":1,"109":1,"118":1}}],["icn=icn",{"2":{"89":1,"141":1}}],["icn",{"0":{"109":1},"2":{"24":2,"26":2,"34":1,"89":36,"95":1,"98":1,"103":1,"107":12,"109":7,"122":1,"141":23}}],["ignores",{"2":{"57":1,"89":1}}],["ignore",{"2":{"57":1,"89":1}}],["ignored",{"2":{"43":1,"57":2,"89":2}}],["illustrate",{"2":{"42":1}}],["io",{"2":{"30":2}}],["impossible",{"2":{"92":1}}],["importance",{"2":{"78":1,"88":1}}],["improve",{"2":{"81":1,"91":1,"92":1}}],["improvement",{"0":{"81":1},"2":{"144":1}}],["improving",{"2":{"32":1,"144":1}}],["impact",{"2":{"60":1}}],["implemented",{"2":{"90":1}}],["implements",{"2":{"51":1}}],["implement",{"2":{"7":1,"20":1,"29":1,"89":2,"141":1}}],["implementations",{"2":{"18":1}}],["implementation",{"2":{"7":2,"89":2,"118":1,"141":2}}],["immutable",{"2":{"25":1,"89":1,"141":1}}],["i`",{"2":{"21":1,"24":1,"26":1,"89":1}}],["i",{"2":{"21":10,"23":7,"24":8,"25":3,"26":8,"29":2,"48":2,"57":4,"77":4,"89":64,"105":2,"106":1,"109":2,"116":2,"120":17,"139":8,"140":4,"141":3,"142":2,"144":1}}],["identity",{"2":{"89":14,"101":4,"120":6,"122":4}}],["identified",{"2":{"34":1,"89":1}}],["ids",{"2":{"29":1,"89":1}}],["idparameterdomain",{"2":{"29":1,"89":1}}],["id",{"2":{"5":1,"30":2,"43":3,"89":1,"142":2,"144":13}}],["id=3",{"2":{"3":1,"43":1,"89":1}}],["id=1",{"2":{"3":3,"43":3,"89":3}}],["id=nothing",{"2":{"3":4,"89":4}}],["iterate",{"2":{"144":1}}],["iterators",{"2":{"116":1}}],["iterations",{"2":{"144":3}}],["iteration",{"2":{"89":2,"141":2,"144":8}}],["iter=100",{"2":{"89":2,"141":2}}],["iter",{"2":{"89":8,"107":3,"141":8,"144":1}}],["itself",{"2":{"89":1,"141":1}}],["its",{"2":{"23":1,"25":1,"30":1,"32":2,"34":1,"53":1,"68":1,"72":1,"75":1,"76":2,"77":1,"78":1,"85":1,"89":5,"105":2,"132":1,"141":3,"144":2}}],["ith",{"2":{"21":2,"24":1,"26":1,"29":1,"89":1}}],["itvls",{"2":{"23":3,"89":3}}],["itv",{"2":{"20":2,"21":8,"23":2,"24":7,"25":2,"26":7,"29":3,"89":9,"140":2,"141":2}}],["it",{"2":{"4":2,"20":1,"29":8,"31":1,"34":9,"35":25,"37":2,"41":1,"42":1,"43":1,"45":2,"48":2,"51":2,"53":1,"55":1,"57":6,"76":1,"77":4,"89":65,"90":2,"92":2,"100":1,"107":1,"109":1,"112":1,"119":1,"122":1,"124":1,"131":1,"132":1,"133":1,"134":2,"135":1,"137":1,"140":2,"141":6,"142":7,"144":6}}],["isa",{"2":{"116":1}}],["issue",{"0":{"44":1},"2":{"118":1}}],["isempty",{"2":{"9":1,"21":3,"89":4,"141":1}}],["is",{"0":{"68":1},"2":{"3":10,"4":1,"5":3,"9":2,"18":2,"20":2,"21":5,"23":3,"24":4,"26":4,"28":3,"29":9,"30":9,"31":2,"32":3,"34":7,"35":14,"37":15,"39":3,"41":3,"42":1,"43":3,"45":2,"48":5,"49":1,"53":1,"55":9,"57":10,"76":1,"77":6,"89":157,"90":5,"91":5,"92":4,"95":1,"98":1,"103":2,"105":1,"107":5,"109":7,"112":4,"114":1,"120":16,"122":4,"131":1,"132":2,"133":1,"135":1,"138":2,"140":3,"141":28,"142":32,"144":17}}],["iff",{"2":{"89":2,"103":1,"122":1,"141":2}}],["if",{"2":{"1":3,"3":4,"7":3,"20":1,"21":10,"24":9,"26":9,"28":2,"29":2,"34":9,"35":8,"37":4,"39":1,"48":1,"55":2,"57":2,"76":1,"77":1,"89":65,"107":1,"109":4,"112":4,"116":4,"141":12,"142":9,"144":14}}],["initpkgs",{"2":{"135":2}}],["init",{"2":{"116":1}}],["initialization",{"0":{"135":1}}],["initializes",{"2":{"35":1,"89":1}}],["initial",{"2":{"92":1}}],["inner",{"2":{"107":1,"144":1}}],["involves",{"2":{"90":1}}],["involving",{"2":{"89":1,"122":1}}],["invalid",{"2":{"32":1,"34":1,"89":3,"141":1,"142":1}}],["inf",{"2":{"144":1}}],["information",{"2":{"76":1,"89":1,"107":1,"141":1,"142":1,"144":1}}],["info",{"2":{"43":76,"142":2,"144":6}}],["infrastructure",{"2":{"17":1}}],["inside",{"2":{"133":1,"136":1,"137":1}}],["instructions",{"2":{"73":1}}],["installed",{"2":{"76":1,"124":1}}],["install",{"2":{"76":1}}],["installing",{"2":{"73":1}}],["installation",{"0":{"73":1}}],["instantiation",{"2":{"39":9,"89":9,"142":2}}],["instances",{"2":{"76":1}}],["instance",{"2":{"18":1,"30":4,"55":2,"89":3,"112":1,"141":1,"142":13,"144":2}}],["instead",{"2":{"5":1,"89":4,"105":2,"112":1,"141":3,"142":2,"144":1}}],["insertion",{"2":{"15":1,"89":1,"141":1,"142":1}}],["insert",{"2":{"15":1,"89":1,"141":1,"144":3}}],["industry",{"2":{"90":1}}],["indice",{"2":{"144":1}}],["indices",{"2":{"144":6}}],["indicate",{"2":{"144":2}}],["indicates",{"2":{"30":1,"34":2,"89":2,"141":2}}],["individuals",{"2":{"107":1}}],["indispensable",{"2":{"31":1}}],["ind",{"2":{"15":1,"89":1,"141":1,"144":2}}],["independently",{"2":{"144":1}}],["independent",{"2":{"5":1,"89":1,"144":1}}],["indexed",{"2":{"3":2,"89":2}}],["index",{"2":{"3":3,"5":1,"48":2,"89":6,"142":7,"144":1}}],["inc",{"2":{"144":6}}],["increment",{"2":{"144":3}}],["incremental",{"2":{"142":4}}],["increase",{"2":{"15":1,"89":1,"141":1}}],["increasing",{"2":{"1":10,"43":1,"89":10}}],["inclusive",{"2":{"89":3,"109":3}}],["included",{"2":{"89":1,"142":1}}],["includes",{"2":{"51":1,"57":1,"89":3,"103":1,"122":1,"141":2}}],["include",{"2":{"32":1,"90":1,"142":1}}],["including",{"0":{"35":1},"2":{"18":1,"32":1}}],["incorporation",{"2":{"32":1,"33":1}}],["incsert",{"2":{"15":2,"89":1,"141":1}}],["inputs",{"2":{"18":1,"34":1,"89":1}}],["input",{"2":{"5":3,"30":1,"35":3,"89":6,"132":3,"133":1}}],["introductory",{"2":{"78":1}}],["introduction",{"0":{"49":1,"110":1},"1":{"50":1,"51":1,"52":1,"53":1,"111":1},"2":{"110":1}}],["introduce",{"2":{"69":1,"72":1,"84":1,"144":1}}],["into",{"0":{"82":1,"139":1},"1":{"83":1,"84":1,"85":1},"2":{"20":1,"30":1,"40":1,"59":1,"89":6,"94":1,"105":1,"107":1,"109":1,"112":1,"138":1,"139":1,"141":3,"144":1}}],["intend",{"2":{"144":1}}],["intended",{"2":{"132":1}}],["intentionally",{"2":{"41":1}}],["intentional",{"2":{"41":1}}],["intention",{"0":{"41":1,"42":1},"1":{"42":1,"43":1,"44":1,"45":1},"2":{"40":1,"41":2,"42":1,"43":17,"142":17}}],["intensional",{"2":{"32":1,"45":1,"89":1}}],["intension",{"2":{"32":1,"42":1,"43":3,"45":2,"89":2}}],["interpretable",{"2":{"89":1,"109":1,"141":1}}],["interpreted",{"2":{"55":2,"89":2,"142":1}}],["interacting",{"2":{"32":1,"109":1}}],["interdiction",{"2":{"30":2,"144":2}}],["interval",{"2":{"20":1,"21":2,"23":6,"24":2,"25":3,"26":2,"29":1,"43":1,"89":8,"140":1,"141":1}}],["intervalsfold",{"2":{"140":1}}],["intervals",{"2":{"18":2,"20":2,"21":5,"23":5,"24":4,"25":2,"26":4,"27":2,"29":2,"50":1,"89":11,"140":2,"141":2}}],["intersect",{"2":{"18":1,"23":2,"25":1,"89":2,"141":1}}],["intersecting",{"2":{"18":1}}],["intersections",{"2":{"23":2,"25":1,"89":2,"141":1}}],["intersection",{"2":{"5":1,"35":1,"89":1,"141":1}}],["internally",{"2":{"89":1,"105":1}}],["internals",{"2":{"18":1,"28":1,"89":1}}],["internal",{"0":{"53":1},"2":{"7":1,"20":1,"30":2,"53":1,"89":4,"109":1,"141":1,"144":4}}],["interfaced",{"2":{"125":1,"128":1}}],["interfaces",{"2":{"76":1,"131":1}}],["interface",{"0":{"114":1},"2":{"7":2,"20":1,"41":1,"43":1,"51":1,"76":2,"89":4,"90":3,"114":1,"131":1,"133":1,"141":1,"142":4}}],["interoperability",{"2":{"4":1}}],["integrating",{"2":{"33":1}}],["integration",{"0":{"0":1,"2":1,"31":1,"36":1,"38":1,"47":1,"54":1,"56":1},"1":{"1":1,"3":1,"32":1,"33":1,"34":1,"35":1,"37":1,"39":1,"48":1,"55":1,"57":1},"2":{"32":3}}],["integrates",{"2":{"18":1}}],["integer",{"2":{"5":1,"30":3,"37":1,"83":1,"89":2,"90":1,"132":1,"142":5}}],["int",{"2":{"1":8,"3":1,"21":2,"24":2,"26":2,"28":1,"30":11,"35":1,"37":9,"43":32,"45":1,"48":1,"55":2,"77":1,"89":35,"105":8,"116":2,"141":4,"142":9,"144":30}}],["in",{"0":{"0":1,"2":1,"19":1,"31":1,"33":1,"36":1,"38":1,"42":1,"47":1,"54":1,"56":1},"1":{"1":1,"3":1,"32":1,"33":1,"34":1,"35":1,"37":1,"39":1,"48":1,"55":1,"57":1},"2":{"1":6,"3":14,"4":1,"5":4,"7":2,"9":1,"13":1,"15":1,"19":1,"20":4,"21":6,"23":3,"24":8,"25":5,"26":9,"28":2,"29":1,"30":9,"31":2,"32":3,"33":1,"34":4,"35":7,"37":24,"39":4,"40":1,"41":2,"42":1,"43":51,"45":1,"46":1,"48":6,"50":1,"57":18,"68":1,"76":1,"77":7,"78":1,"85":1,"88":1,"89":135,"90":7,"92":3,"101":2,"105":2,"106":1,"107":3,"109":7,"116":2,"118":1,"120":1,"122":1,"124":1,"126":2,"129":2,"132":1,"133":1,"135":1,"136":1,"138":1,"139":5,"140":3,"141":30,"142":39,"144":16}}],["df",{"2":{"107":2,"116":24}}],["ds",{"2":{"107":2}}],["datatype",{"2":{"144":1}}],["dataframe",{"2":{"107":1,"116":2}}],["data",{"2":{"89":2,"122":2,"144":1}}],["due",{"2":{"76":1}}],["during",{"2":{"11":1,"89":1,"109":2}}],["done",{"2":{"138":1}}],["docstring",{"2":{"101":8,"102":8,"103":2,"105":2,"106":2,"109":2,"120":4,"121":12,"142":23,"144":29}}],["documenter",{"2":{"101":4,"102":4,"103":1,"105":1,"106":1,"109":1,"120":2,"121":6}}],["documentervitepress",{"0":{"44":1}}],["documentation",{"0":{"45":1},"2":{"30":1,"76":1,"104":1,"107":1,"123":1,"125":1,"128":1,"132":1,"142":1,"144":1}}],["domath",{"2":{"126":1,"129":1}}],["domain",{"0":{"50":1},"2":{"18":10,"19":1,"20":19,"21":1,"23":12,"24":1,"25":15,"26":1,"28":1,"29":9,"30":1,"37":1,"50":1,"77":1,"89":46,"90":1,"107":3,"112":4,"141":32,"144":20}}],["domains",{"0":{"17":1},"1":{"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1},"2":{"17":2,"18":8,"19":1,"20":4,"21":3,"23":9,"24":2,"25":7,"26":2,"27":2,"28":6,"29":1,"30":1,"50":2,"69":1,"89":30,"107":2,"116":11,"141":23,"144":3}}],["dom",{"2":{"89":8,"107":2,"116":4,"141":4}}],["download",{"2":{"76":1}}],["do",{"2":{"57":4,"89":6,"122":1,"141":1}}],["doesn",{"2":{"34":1,"35":2,"89":3,"132":1}}],["does",{"2":{"34":1,"35":3,"57":2,"89":9,"142":4}}],["d₂",{"2":{"23":2,"25":2,"89":2,"141":2}}],["d₁",{"2":{"23":2,"25":2,"89":2,"141":2}}],["draw",{"2":{"21":2,"24":1,"26":1,"29":1,"89":1,"144":5}}],["d5",{"2":{"20":1,"23":1,"25":1,"89":1,"141":1}}],["d4",{"2":{"20":1,"23":1,"25":1,"89":1,"141":1}}],["d3",{"2":{"20":1,"23":1,"25":1,"89":1,"141":1}}],["d2",{"2":{"20":1,"23":1,"25":1,"89":1,"141":1}}],["dynamic",{"2":{"18":3,"20":1,"23":1,"30":1,"89":3,"122":1,"141":1,"144":11}}],["d",{"2":{"15":1,"20":14,"21":29,"23":7,"24":23,"25":9,"26":26,"27":1,"29":12,"55":4,"89":54,"107":2,"116":2,"137":2,"138":2,"140":3,"141":22,"144":9}}],["dir",{"2":{"126":1,"129":1,"140":4}}],["directions",{"0":{"66":1},"2":{"89":1,"122":1}}],["directed",{"2":{"55":1,"89":1,"142":1}}],["direct",{"2":{"53":1}}],["directly",{"2":{"32":1,"41":1,"43":1,"89":1,"142":1}}],["diff",{"2":{"89":4,"101":1,"102":1}}],["differs",{"0":{"70":1}}],["difference",{"2":{"13":2,"20":1,"23":1,"25":1,"89":12,"141":2}}],["different",{"2":{"1":8,"5":1,"18":1,"30":1,"34":5,"35":8,"41":1,"42":6,"43":8,"44":2,"45":6,"53":1,"76":1,"77":1,"89":29,"91":1,"122":3,"131":1,"140":1,"141":4,"142":1,"144":1}}],["digits",{"2":{"77":2}}],["dive",{"0":{"82":1},"1":{"83":1,"84":1,"85":1},"2":{"59":1}}],["dispatch",{"2":{"89":1,"107":1,"122":1,"144":2}}],["displays",{"2":{"30":1}}],["display",{"2":{"30":13}}],["discuss",{"2":{"60":1,"75":1,"88":1}}],["discreteset",{"2":{"142":6}}],["discretedomain",{"2":{"18":1,"20":1,"21":3,"23":1,"24":3,"25":4,"26":3,"29":1,"89":7,"116":1,"141":2}}],["discrete",{"0":{"25":1},"1":{"26":1},"2":{"17":1,"18":2,"20":1,"23":1,"25":4,"50":1,"89":5,"107":1,"141":4,"142":5,"144":1}}],["distributed",{"2":{"144":1}}],["distdifferent",{"2":{"43":2,"142":1}}],["dist",{"2":{"41":1,"42":6,"43":3,"44":2,"45":5,"89":5,"144":1}}],["distinct",{"2":{"37":2,"77":2,"89":2,"142":1}}],["distinguishes",{"2":{"18":1}}],["distances",{"2":{"30":4,"42":2,"45":1,"89":1,"142":1}}],["distance",{"2":{"20":2,"23":1,"25":1,"30":1,"45":3,"89":8,"106":1,"141":5,"142":3,"144":1}}],["diagram",{"2":{"7":1,"55":4,"89":5,"141":1,"142":1}}],["diagrams",{"2":{"7":2,"89":1}}],["dictionaryview",{"2":{"144":1}}],["dictionary",{"2":{"5":1,"15":1,"30":3,"32":2,"34":1,"35":14,"89":18,"122":2,"131":1,"132":1,"134":2,"136":1,"137":1,"140":1,"141":8,"144":6}}],["dictionaries",{"0":{"15":1},"1":{"16":1},"2":{"4":1,"15":1}}],["dict",{"2":{"5":3,"35":8,"55":4,"89":12,"126":1,"129":1,"132":1,"134":2,"136":3,"137":3,"138":3,"140":1,"141":8}}],["dict=usual",{"2":{"5":1,"35":1,"89":1,"141":1}}],["dimparameterdomain",{"2":{"29":1,"89":1}}],["dimensions",{"2":{"29":1,"89":1}}],["dimension",{"2":{"5":1,"89":1,"142":5,"144":1}}],["dim",{"2":{"5":1,"43":2,"57":2,"89":3,"116":3,"142":7,"144":4}}],["dim=2",{"2":{"3":2,"43":2,"89":2}}],["dim=1",{"2":{"3":2,"89":2}}],["deepcopy",{"2":{"144":1}}],["deeper",{"2":{"59":1}}],["debugging",{"2":{"144":1}}],["debinarize",{"2":{"89":1,"112":1,"141":1}}],["deprecated",{"2":{"142":1}}],["dependencies",{"2":{"140":1}}],["depend",{"2":{"89":1,"122":1}}],["depending",{"2":{"76":1,"132":1}}],["depends",{"2":{"20":1,"89":1,"141":1,"144":1}}],["devops",{"2":{"132":2,"140":1}}],["develop",{"2":{"132":1}}],["developing",{"2":{"49":1}}],["developers",{"2":{"4":1,"31":1}}],["development",{"2":{"4":1,"132":1}}],["details",{"2":{"101":4,"102":4,"103":1,"105":1,"106":1,"109":1,"120":2,"121":6}}],["determined",{"2":{"144":1}}],["determine",{"2":{"34":1,"89":2,"141":1}}],["determining",{"2":{"18":1,"32":1}}],["deterministic",{"2":{"7":1,"89":1,"141":1}}],["denotes",{"2":{"89":2}}],["density",{"2":{"28":1,"89":1,"141":1}}],["derived",{"2":{"89":1,"142":1}}],["delta",{"2":{"144":6}}],["delegates",{"2":{"89":1,"122":1}}],["delete",{"2":{"18":1,"20":1,"26":3,"34":1,"89":5,"141":4,"144":13}}],["deletion",{"2":{"18":1}}],["delineation",{"2":{"89":2,"142":1}}],["dedicated",{"2":{"42":1}}],["decrement",{"2":{"144":1}}],["decrease",{"2":{"144":2}}],["decreasing",{"2":{"1":8,"89":8}}],["decay",{"2":{"144":3}}],["declare",{"2":{"89":1,"142":1}}],["decisions",{"2":{"91":1}}],["decision",{"2":{"7":3,"55":1,"89":3,"141":1,"142":1}}],["descent",{"0":{"116":1},"2":{"107":1}}],["descriptions",{"2":{"35":4,"89":4,"141":4}}],["description",{"2":{"35":2,"42":1,"89":3,"141":2,"142":12,"144":10}}],["describes",{"2":{"30":1}}],["describe",{"2":{"5":1,"35":2,"89":3,"93":1,"96":1,"99":1,"116":1,"118":1,"141":2,"144":3}}],["designed",{"2":{"4":1,"31":1,"41":1,"43":1,"131":1}}],["define",{"2":{"32":1,"35":3,"41":1,"42":2,"46":1,"68":1,"77":1,"89":6,"141":2,"142":1}}],["defines",{"2":{"23":1,"25":1,"43":1,"89":2,"109":1,"141":1,"142":1}}],["defined",{"0":{"50":1,"55":1},"2":{"18":2,"20":1,"25":1,"32":1,"35":1,"37":1,"41":3,"45":1,"46":3,"50":1,"77":2,"89":9,"101":1,"107":2,"120":1,"127":1,"130":1,"132":1,"141":2,"142":4,"144":1}}],["defining",{"0":{"17":1,"42":1},"1":{"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1},"2":{"18":1,"19":1,"32":2,"35":1,"41":1,"43":1,"89":1,"141":1,"142":2}}],["definitions",{"2":{"18":1}}],["definition",{"0":{"0":1,"2":1,"31":1,"36":1,"38":1,"47":1,"54":1,"56":1},"1":{"1":1,"3":1,"32":1,"33":1,"34":1,"35":1,"37":1,"39":1,"48":1,"55":1,"57":1},"2":{"17":1,"18":1,"31":1,"32":1,"33":1,"35":1,"89":1}}],["default",{"0":{"134":1},"2":{"5":3,"21":1,"28":1,"30":9,"35":8,"37":1,"89":17,"107":4,"112":1,"114":1,"127":9,"130":1,"132":3,"134":2,"141":10,"144":2}}],["defaults",{"2":{"1":1,"5":1,"15":1,"35":6,"89":8,"107":2,"141":2}}],["after",{"2":{"138":1}}],["affects",{"2":{"100":1,"119":1}}],["affect",{"2":{"89":1,"141":1}}],["authors",{"2":{"131":1}}],["auto",{"2":{"116":1}}],["automated",{"2":{"35":1,"89":1}}],["automatic",{"2":{"28":1,"89":1,"141":1}}],["automatically",{"2":{"28":1,"89":1}}],["automata",{"2":{"7":2,"18":1,"89":1}}],["automaton",{"2":{"5":1,"7":5,"29":4,"55":7,"89":16,"141":3,"142":2}}],["among",{"2":{"107":1,"144":1}}],["amount",{"2":{"30":1}}],["aggragation",{"2":{"93":1}}],["aggregate",{"2":{"89":1,"94":1}}],["aggregations",{"0":{"94":1},"2":{"89":1,"95":1,"141":1}}],["aggregation",{"0":{"93":1},"1":{"94":1,"95":1},"2":{"89":4,"95":1,"141":4}}],["ag",{"2":{"89":2,"94":2}}],["against",{"2":{"39":1,"89":2,"122":1}}],["again",{"2":{"30":1}}],["achieve",{"2":{"131":1}}],["accurate",{"2":{"116":2}}],["according",{"2":{"89":1,"122":1,"140":1,"142":1}}],["access",{"2":{"20":1,"89":5,"109":1,"141":4,"144":20}}],["accessing",{"2":{"18":1}}],["acceptable",{"2":{"89":2,"142":1}}],["accepted",{"2":{"34":2,"55":2,"89":4,"141":2,"142":1}}],["accepts",{"2":{"7":3,"29":1,"30":4,"89":3,"141":1}}],["accept",{"2":{"7":6,"29":3,"89":7,"141":1}}],["action",{"2":{"89":2,"141":2}}],["actual",{"2":{"89":1,"140":1,"141":1}}],["across",{"2":{"53":1,"140":1}}],["a2",{"2":{"43":2}}],["a1",{"2":{"43":2}}],["apixcspjumpmoi",{"2":{"43":17}}],["apis",{"0":{"43":1}}],["api",{"0":{"42":1,"51":1,"89":1,"124":1,"141":1},"2":{"41":1,"43":1,"124":1}}],["appropriate",{"2":{"89":1,"122":1,"137":1,"139":1}}],["approach",{"2":{"32":1,"77":1,"91":2}}],["appear",{"2":{"37":3,"89":3}}],["applies",{"2":{"89":1,"105":1,"142":1}}],["applied",{"2":{"34":1,"35":1,"62":1,"77":1,"89":3,"122":1,"141":2,"142":1,"144":2}}],["applicability",{"2":{"32":1}}],["application",{"2":{"31":1,"32":1,"33":1,"89":1}}],["applications",{"0":{"62":1},"2":{"17":1,"19":1}}],["applying",{"0":{"61":1},"1":{"62":1,"63":1}}],["apply",{"2":{"32":1,"34":5,"35":3,"89":7,"122":2,"141":5}}],["about",{"0":{"108":1},"2":{"90":1,"108":1,"142":1,"143":1,"144":1}}],["absolute",{"2":{"89":2}}],["abs",{"2":{"35":1,"42":2,"43":2,"89":5,"101":1,"102":1,"141":1}}],["abstractstring",{"2":{"144":2}}],["abstractstring=",{"2":{"9":1,"89":1,"141":1}}],["abstractstate",{"2":{"144":1}}],["abstractsolver",{"2":{"144":70}}],["abstractscalarset",{"2":{"142":2}}],["abstractscalarfunction",{"2":{"142":1}}],["abstractoptimizer",{"2":{"89":2,"107":2,"114":2,"116":1,"141":1,"142":1}}],["abstractmatrix",{"2":{"30":4}}],["abstractmultivalueddecisiondiagram",{"2":{"7":3,"89":3,"141":1,"142":1}}],["abstractrange",{"2":{"20":1,"23":1,"25":2,"89":2,"141":2}}],["abstracting",{"2":{"19":1}}],["abstractdomain",{"2":{"18":3,"20":5,"21":6,"23":4,"24":5,"25":4,"26":5,"27":1,"29":10,"89":25,"141":10,"144":6}}],["abstractdictionary",{"2":{"15":1,"89":1,"141":1}}],["abstractdict",{"2":{"15":1,"89":1,"141":1}}],["abstractautomaton`",{"2":{"55":1,"89":1}}],["abstractautomaton",{"2":{"7":3,"29":1,"55":2,"89":6,"141":1,"142":2}}],["abstract",{"2":{"4":1,"7":2,"18":1,"20":1,"23":1,"25":1,"89":6,"107":2,"114":1,"141":3,"144":2}}],["abstractvectorset",{"2":{"142":22}}],["abstractvector",{"2":{"3":4,"39":2,"48":1,"57":5,"89":31,"105":1,"120":9,"144":1}}],["ability",{"2":{"32":1}}],["avoid",{"2":{"34":1,"89":2,"141":1,"142":2,"144":1}}],["avoiding",{"2":{"32":1}}],["available",{"2":{"18":1,"30":2,"33":1,"35":1,"41":1,"43":1,"76":2,"89":2,"90":1,"122":1,"141":1,"144":1}}],["advantages",{"2":{"75":1}}],["advanced",{"0":{"33":1,"58":1},"1":{"59":1,"60":1},"2":{"4":1,"18":1,"19":1,"32":1}}],["adjusted",{"2":{"28":1,"89":1}}],["added",{"2":{"42":1,"43":1,"142":1}}],["adds",{"2":{"35":4,"89":4}}],["adding",{"2":{"35":2,"89":2,"141":2}}],["additionally",{"2":{"20":1,"89":1,"141":1}}],["addition",{"2":{"18":1,"32":1}}],["add",{"2":{"18":1,"20":1,"25":2,"34":1,"41":1,"42":1,"76":1,"77":4,"89":4,"141":3,"142":9,"144":20}}],["attribution",{"2":{"144":1}}],["attributed",{"2":{"144":6}}],["attribute",{"2":{"144":2}}],["attached",{"2":{"144":1}}],["atmost",{"2":{"43":1,"142":2}}],["atleast",{"2":{"43":1,"142":2}}],["atoms",{"2":{"30":1}}],["at",{"2":{"7":1,"18":1,"30":1,"32":1,"35":1,"37":8,"43":12,"57":2,"76":1,"89":15,"107":2,"109":2,"112":1,"141":3,"142":3,"144":1}}],["alternative",{"2":{"109":1}}],["although",{"2":{"76":1}}],["algorithm",{"2":{"89":4,"92":2,"107":3,"141":4}}],["algorithms",{"2":{"84":1,"92":1}}],["already",{"2":{"35":1,"77":1,"89":3,"101":1,"107":1,"120":1,"144":1}}],["also",{"2":{"18":1,"37":3,"77":1,"89":5,"103":1,"122":1,"139":1,"141":2}}],["along",{"2":{"5":1,"76":1,"89":1}}],["allocs",{"2":{"139":4,"140":1}}],["allocation",{"2":{"91":1}}],["allocations",{"2":{"89":17,"120":8,"140":1}}],["allow",{"2":{"46":1}}],["allows",{"2":{"32":2}}],["allowing",{"2":{"18":1,"89":3,"122":1,"142":1}}],["alldifferent",{"2":{"43":2,"77":5,"142":2}}],["allequal",{"2":{"43":1,"142":2}}],["all",{"2":{"1":24,"5":1,"13":1,"18":1,"23":1,"30":1,"34":4,"35":9,"37":1,"43":10,"46":1,"76":1,"77":2,"89":45,"90":1,"92":1,"103":1,"105":1,"122":1,"124":2,"126":1,"129":1,"141":10,"142":6,"144":4}}],["aspects",{"0":{"53":1}}],["assert",{"2":{"89":1,"109":1}}],["associated",{"2":{"30":1,"77":1,"109":1,"135":1}}],["assign",{"2":{"30":1,"89":1,"141":1,"144":1}}],["assignments",{"2":{"32":2,"34":1,"89":1,"141":1}}],["assignment",{"2":{"30":1,"34":1,"89":1,"141":1}}],["as",{"2":{"4":1,"5":2,"7":1,"11":1,"17":1,"18":1,"23":1,"25":3,"30":3,"32":2,"34":1,"35":9,"37":3,"41":3,"43":2,"45":1,"50":1,"55":2,"69":1,"76":1,"77":1,"89":29,"90":1,"91":2,"101":1,"105":2,"107":1,"109":1,"120":1,"122":1,"124":1,"127":1,"130":1,"132":5,"133":1,"141":7,"142":4,"144":6}}],["a",{"0":{"51":1,"109":1,"139":1},"2":{"1":3,"3":22,"4":1,"5":4,"7":11,"15":2,"17":2,"18":2,"19":2,"20":9,"21":19,"23":8,"24":17,"25":8,"26":17,"28":6,"29":15,"30":26,"31":1,"32":7,"33":1,"34":18,"35":21,"37":13,"39":8,"41":10,"42":2,"43":7,"45":5,"46":4,"48":8,"49":1,"51":2,"52":1,"55":29,"57":8,"63":1,"76":2,"77":12,"89":281,"90":7,"91":4,"92":7,"94":2,"97":2,"105":8,"106":2,"107":23,"109":16,"111":2,"112":7,"114":1,"118":1,"122":10,"124":3,"125":1,"128":1,"131":3,"132":8,"133":2,"134":1,"138":1,"139":1,"140":1,"141":75,"142":48,"144":51}}],["angles",{"2":{"91":1}}],["anonymous",{"2":{"89":1,"105":1}}],["another",{"2":{"3":2,"89":2,"90":1}}],["annealing",{"2":{"84":1}}],["analyze",{"2":{"81":1,"91":1}}],["analyzing",{"0":{"79":1},"1":{"80":1,"81":1}}],["analysis",{"0":{"81":1,"88":1},"2":{"88":1,"91":1}}],["any",{"0":{"109":1},"2":{"9":1,"20":2,"21":1,"24":1,"26":1,"30":1,"34":2,"45":1,"57":6,"89":19,"114":1,"132":1,"141":8,"142":4,"144":1}}],["an",{"0":{"42":1},"2":{"1":3,"4":1,"5":3,"7":2,"9":1,"18":1,"20":2,"23":6,"24":1,"25":3,"26":1,"28":1,"30":3,"31":1,"32":1,"34":4,"35":6,"37":1,"42":1,"43":1,"45":1,"49":1,"55":3,"63":1,"77":1,"78":2,"89":60,"92":3,"105":3,"107":7,"109":5,"114":1,"118":1,"122":1,"131":1,"132":1,"133":1,"139":1,"140":1,"141":19,"142":12,"144":11}}],["and",{"0":{"0":1,"2":1,"17":1,"18":1,"31":1,"32":1,"35":1,"36":1,"37":1,"38":1,"47":1,"54":1,"56":1,"57":1,"59":1,"60":1,"62":1,"64":1,"69":1,"73":1,"74":1,"79":1,"81":1,"86":1},"1":{"1":1,"3":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"32":1,"33":1,"34":1,"35":1,"37":1,"39":1,"48":1,"55":1,"57":1,"65":1,"66":1,"75":1,"76":1,"77":1,"80":1,"81":1,"87":1,"88":1},"2":{"3":2,"4":4,"5":1,"7":1,"9":1,"11":1,"13":1,"17":2,"18":11,"19":4,"20":2,"23":2,"25":1,"28":2,"29":2,"30":13,"31":3,"32":14,"33":2,"34":10,"35":10,"37":1,"40":1,"41":1,"43":2,"45":3,"46":1,"48":2,"49":2,"50":1,"51":2,"52":2,"53":2,"55":1,"59":1,"60":1,"62":1,"63":1,"65":1,"66":1,"68":1,"69":1,"70":1,"72":1,"73":1,"75":2,"76":2,"77":4,"78":2,"80":2,"81":1,"84":1,"85":1,"87":1,"88":1,"89":66,"90":3,"91":8,"92":3,"100":1,"105":1,"107":10,"109":3,"111":1,"112":1,"119":1,"120":5,"122":3,"124":1,"125":1,"128":1,"132":1,"134":1,"140":2,"141":24,"142":10,"144":11}}],["arrange",{"2":{"124":3}}],["arrangement",{"2":{"107":1}}],["array",{"2":{"43":1}}],["ar",{"2":{"89":2,"97":2}}],["arxiv",{"2":{"35":1,"89":1,"141":1}}],["arbitrary",{"2":{"25":1,"34":1,"89":2,"136":1}}],["arbitrarydomain",{"2":{"25":1,"89":1}}],["argmax",{"2":{"144":3}}],["argument",{"2":{"30":4,"35":7,"89":7,"142":1}}],["arguments",{"2":{"1":3,"3":4,"5":1,"20":1,"23":1,"28":1,"30":1,"34":9,"35":11,"37":4,"39":1,"45":1,"48":1,"55":2,"57":2,"89":43,"141":15,"142":27,"144":8}}],["args",{"2":{"20":4,"28":1,"32":1,"34":7,"35":4,"89":13,"107":3,"114":1,"141":10}}],["arithmetic",{"0":{"96":1,"97":1},"1":{"97":1,"98":1},"2":{"5":1,"89":6,"96":1,"98":2,"141":5}}],["areas",{"2":{"66":1}}],["are",{"2":{"1":10,"4":1,"5":1,"18":1,"23":1,"25":1,"28":1,"30":5,"32":2,"35":1,"40":1,"41":4,"42":2,"45":2,"46":4,"50":1,"52":1,"53":1,"57":2,"77":1,"89":43,"90":2,"91":2,"95":1,"98":1,"103":1,"109":2,"120":8,"122":1,"127":1,"130":1,"132":1,"133":1,"136":1,"137":1,"139":2,"141":6,"142":8,"144":2}}],["jacop",{"2":{"90":1}}],["j+1",{"2":{"77":1}}],["j",{"2":{"77":1}}],["joinpath",{"2":{"140":3}}],["join",{"2":{"65":1}}],["joining",{"0":{"65":1}}],["jc",{"0":{"42":1},"2":{"41":1,"43":18}}],["just",{"2":{"136":1}}],["jump",{"2":{"30":17,"41":1,"43":47,"76":3,"77":2,"90":1,"142":10,"144":1}}],["juliajump",{"2":{"142":3}}],["juliajulia>",{"2":{"124":1,"126":1,"129":1}}],["julia>",{"2":{"126":1,"129":1}}],["juliapost",{"2":{"144":1}}],["juliaperfchecker",{"2":{"135":1,"136":1,"138":1}}],["juliapredicate",{"2":{"142":1}}],["juliapredict",{"2":{"107":1}}],["juliapreliminaries",{"2":{"107":1}}],["juliaparameter",{"2":{"107":1}}],["juliaparams",{"2":{"34":1,"89":1,"141":1}}],["juliapairvarsparameterdomain",{"2":{"29":1,"89":1}}],["juliaqubogradientoptimizer",{"2":{"107":1}}],["juliaqubo",{"2":{"89":2,"107":1,"111":2,"141":1}}],["juliaqap",{"2":{"30":1}}],["juliaweights",{"2":{"89":3,"141":3}}],["juliatrain",{"2":{"89":1,"107":2,"114":1,"141":1}}],["juliatransformation",{"2":{"89":1,"122":1,"141":1}}],["juliatr",{"2":{"89":19,"120":9}}],["juliato",{"2":{"20":1,"89":1,"141":1}}],["juliaremote",{"2":{"144":2}}],["juliaregularization",{"2":{"89":1,"141":1}}],["juliareduce",{"2":{"89":1,"105":1}}],["juliarangedomain",{"2":{"25":1,"89":1,"141":1}}],["juliahamming",{"2":{"89":1,"106":1,"141":1}}],["juliafunction",{"2":{"134":1,"137":1,"139":1}}],["juliafunctions",{"2":{"89":1,"109":1}}],["juliafor",{"2":{"77":2}}],["juliafake",{"2":{"29":1,"89":1}}],["juliafakeautomaton",{"2":{"29":1,"89":1}}],["juliaup",{"2":{"76":1}}],["juliausing",{"2":{"43":50,"76":2,"140":1}}],["juliausual",{"2":{"34":1,"35":2,"89":3,"141":2}}],["juliano",{"2":{"107":1}}],["julianbits",{"2":{"89":2,"109":1,"141":1}}],["julian",{"2":{"30":1}}],["juliagolomb",{"2":{"30":1}}],["juliageneralstate",{"2":{"144":1}}],["juliagenerate",{"2":{"29":1,"89":5,"107":1,"109":2,"141":1}}],["juliaget",{"2":{"20":1,"89":1,"141":1,"144":12}}],["juliavalue",{"2":{"77":1}}],["juliavalsparameterdomain",{"2":{"29":1,"89":1}}],["juliavalparameterdomain",{"2":{"29":1,"89":1}}],["juliavariable",{"2":{"144":3}}],["juliavar",{"2":{"21":1,"24":1,"26":1,"144":1}}],["juliao",{"2":{"144":1}}],["juliaobjective",{"2":{"144":4}}],["juliaoptions",{"2":{"144":1}}],["juliaoptimizer",{"2":{"142":2}}],["juliaoptimize",{"2":{"77":1,"107":1}}],["juliaopparameterdomain",{"2":{"29":1,"89":1}}],["juliaoversample",{"2":{"11":1,"89":1,"141":1}}],["julialoss",{"2":{"107":1}}],["julialeadsolver",{"2":{"144":1}}],["julialearn",{"2":{"89":1,"141":1}}],["julialength",{"2":{"24":1,"26":1,"89":1,"109":1,"144":5}}],["julialazy",{"2":{"89":2,"105":2,"141":2}}],["julialayers",{"2":{"89":1}}],["julialayer",{"2":{"89":1,"109":1}}],["julialanguageparameterdomain",{"2":{"29":1,"89":1}}],["juliais",{"2":{"89":2,"109":1,"112":1,"141":1,"144":2}}],["juliaicnlocalsearchoptimizer",{"2":{"107":1}}],["juliaicngeneticoptimizer",{"2":{"107":1}}],["juliaicnconfig",{"2":{"107":1}}],["juliaicn",{"2":{"89":1,"107":1,"141":1}}],["juliaidparameterdomain",{"2":{"29":1,"89":1}}],["juliaintention",{"2":{"142":1}}],["juliaintersect",{"2":{"23":2,"25":1,"89":2,"141":1}}],["juliaintervals",{"2":{"23":1,"89":1}}],["juliaincsert",{"2":{"15":1,"89":1,"141":1}}],["juliabinarize",{"2":{"89":1,"112":1,"141":1}}],["juliaboolparameterdomain",{"2":{"29":1,"89":1}}],["juliabase",{"2":{"21":13,"23":1,"24":12,"25":1,"26":13,"27":2,"29":4,"30":4,"89":17,"141":1,"142":5}}],["juliastop",{"2":{"144":1}}],["juliastatus",{"2":{"144":1}}],["juliastruct",{"2":{"89":1,"107":1,"116":1,"141":1}}],["juliaspecialize",{"2":{"144":2}}],["juliasolve",{"2":{"144":2}}],["juliasolution",{"2":{"144":1}}],["juliascalarfunction",{"2":{"142":1}}],["juliasub",{"2":{"107":1}}],["juliasudoku",{"2":{"30":1}}],["juliasudokuinstance",{"2":{"30":2}}],["juliashow",{"2":{"89":2,"109":1,"141":1}}],["juliashrink",{"2":{"34":1,"89":1}}],["juliaselected",{"2":{"89":1,"109":1}}],["juliasetdomain",{"2":{"25":1,"89":1}}],["juliasymbols",{"2":{"89":1,"141":1}}],["juliasymbol",{"2":{"89":1,"109":1}}],["juliasymmetries",{"2":{"34":1,"89":1,"141":1}}],["juliasymcon",{"2":{"9":1,"89":1,"141":1}}],["juliamodel",{"2":{"144":1}}],["juliamoi",{"2":{"142":17}}],["juliamoisupports",{"2":{"142":1}}],["juliamoisum",{"2":{"142":1}}],["juliamoiregular",{"2":{"142":1}}],["juliamoiordered",{"2":{"142":1}}],["juliamoinooverlap",{"2":{"142":1}}],["juliamoinvalues",{"2":{"142":1}}],["juliamoimultivalueddecisiondiagram",{"2":{"142":1}}],["juliamoiminimum",{"2":{"142":1}}],["juliamoimaximum",{"2":{"142":1}}],["juliamoiintention",{"2":{"142":1}}],["juliamoiinstantiation",{"2":{"142":1}}],["juliamoiextension",{"2":{"142":1}}],["juliamoierror",{"2":{"142":1}}],["juliamoielement",{"2":{"142":1}}],["juliamoidistdifferent",{"2":{"142":1}}],["juliamoicumulative",{"2":{"142":1}}],["juliamoiconflicts",{"2":{"142":1}}],["juliamoiallequal",{"2":{"142":1}}],["juliamoialldifferent",{"2":{"142":1}}],["juliamts",{"2":{"144":1}}],["juliamutually",{"2":{"107":1}}],["juliamutable",{"2":{"30":1}}],["juliaminkowski",{"2":{"89":1,"106":1,"141":1}}],["juliamincut",{"2":{"30":1}}],["juliam",{"2":{"77":1}}],["juliamax",{"2":{"144":1}}],["juliamainsolver",{"2":{"144":1}}],["juliamap",{"2":{"89":1,"105":1}}],["juliamanhattan",{"2":{"89":1,"106":1,"141":1}}],["juliamake",{"2":{"34":1,"89":2,"107":3,"122":1}}],["juliamagic",{"2":{"30":1}}],["juliamerge",{"2":{"23":1,"25":1,"89":1,"141":1}}],["juliamdd",{"2":{"7":1,"89":1,"141":1}}],["juliax",{"2":{"21":1,"24":1,"26":1,"144":1}}],["juliaxcsp",{"2":{"1":3,"3":4,"37":4,"39":1,"45":1,"48":1,"55":2,"57":2,"89":19}}],["juliad",{"2":{"144":1}}],["juliadraw",{"2":{"144":1}}],["juliadelete",{"2":{"144":2}}],["juliadebinarize",{"2":{"89":1,"112":1,"141":1}}],["juliadescribe",{"2":{"35":2,"89":2,"141":2,"144":1}}],["juliadist",{"2":{"144":1}}],["juliadiscreteset",{"2":{"142":1}}],["juliadiscretedomain",{"2":{"25":1,"89":1,"141":1}}],["juliadisplay",{"2":{"30":1}}],["juliadimparameterdomain",{"2":{"29":1,"89":1}}],["juliad1",{"2":{"20":1,"23":1,"25":1,"89":1,"141":1}}],["juliadomain",{"2":{"20":6,"23":6,"25":6,"89":6,"107":1,"141":6,"144":1}}],["juliaempty",{"2":{"144":2}}],["juliaemptydomain",{"2":{"20":1,"89":1}}],["juliae",{"2":{"34":1,"89":1}}],["juliaerror",{"2":{"34":1,"89":1,"141":1,"142":1}}],["juliaexclu",{"2":{"89":1,"109":1}}],["juliaexplore",{"2":{"28":1,"89":2,"141":2}}],["juliaexploresettings",{"2":{"28":1,"89":1,"141":1}}],["juliaextract",{"2":{"5":3,"35":3,"89":3,"141":3}}],["juliaδ",{"2":{"13":1,"89":1,"107":1,"141":1}}],["juliaas",{"2":{"89":2,"105":2}}],["juliaaggregation",{"2":{"89":1,"95":1,"141":1}}],["juliaag",{"2":{"89":2,"94":2}}],["juliaarithmetic",{"2":{"89":1,"98":1,"141":1}}],["juliaar",{"2":{"89":2,"97":2}}],["juliaargs",{"2":{"34":1,"89":1,"141":1}}],["juliaarbitrarydomain",{"2":{"25":1,"89":1}}],["juliaadd",{"2":{"25":1,"89":1,"141":1,"144":2}}],["juliaat",{"2":{"7":1,"89":1}}],["juliaaccept",{"2":{"7":1,"29":1,"89":1,"141":1}}],["juliaautomaton",{"2":{"7":1,"89":1,"141":1}}],["juliaabstractsolver",{"2":{"144":1}}],["juliaabstractoptimizer",{"2":{"89":1,"114":1}}],["juliaabstractdomain",{"2":{"20":1,"89":1,"141":1}}],["juliaabstractautomaton",{"2":{"7":1,"89":1}}],["juliaabstractmultivalueddecisiondiagram",{"2":{"7":1,"89":1}}],["juliacompose",{"2":{"89":2,"141":2}}],["juliacompositionalnetworks",{"2":{"107":2}}],["juliacomposition",{"2":{"89":3,"141":3}}],["juliacomparison",{"2":{"89":1,"103":1,"141":1}}],["juliacode",{"2":{"89":1,"141":1}}],["juliaco",{"2":{"89":9,"101":1}}],["juliacontinuousdomain",{"2":{"23":1,"89":1,"141":1}}],["juliaconsisempty",{"2":{"9":1,"89":1,"141":1}}],["juliaconsin",{"2":{"9":1,"89":1,"141":1}}],["juliaconstriction",{"2":{"144":1}}],["juliaconstraint",{"0":{"65":1,"71":1},"1":{"72":1},"2":{"34":1,"66":1,"72":1,"78":1,"89":1,"141":1,"144":3}}],["juliaconstraints",{"0":{"17":1,"90":1},"1":{"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"91":1,"92":1},"2":{"19":1,"31":1,"32":1,"33":1,"35":4,"89":4,"90":6,"141":4}}],["juliaconstraintcommons",{"2":{"7":1,"29":1,"89":1}}],["juliaconst",{"2":{"5":2,"42":1,"89":2,"107":2}}],["juliaconcept",{"2":{"1":7,"3":4,"34":5,"35":3,"37":9,"39":1,"45":1,"48":1,"55":2,"57":4,"89":37,"141":3}}],["juliachemical",{"2":{"30":1}}],["juliac",{"2":{"1":3,"3":4,"37":4,"39":1,"44":2,"48":1,"55":2,"57":2,"89":18}}],["julia",{"0":{"0":1,"2":1,"19":1,"31":1,"36":1,"38":1,"47":1,"54":1,"56":1,"74":1,"75":1,"76":1,"77":1,"78":1},"1":{"1":1,"3":1,"32":1,"33":1,"34":1,"35":1,"37":1,"39":1,"48":1,"55":1,"57":1,"75":1,"76":1,"77":1},"2":{"4":2,"7":2,"17":1,"25":1,"28":1,"30":5,"32":2,"33":1,"35":2,"43":18,"49":1,"51":1,"53":1,"75":1,"76":7,"77":5,"89":13,"90":8,"101":1,"107":1,"120":1,"122":1,"127":1,"130":1,"132":3,"133":1,"141":5,"142":17,"144":83}}],["jl",{"0":{"0":1,"2":1,"4":1,"17":1,"30":1,"31":1,"36":1,"38":1,"47":1,"51":1,"52":1,"54":1,"56":1,"104":1,"107":1,"110":1,"123":1,"131":1,"142":1,"144":1},"1":{"1":1,"3":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"32":1,"33":1,"34":1,"35":1,"37":1,"39":1,"48":1,"55":1,"57":1,"105":1,"106":1,"111":1,"132":1},"2":{"4":1,"17":1,"18":3,"19":2,"30":1,"31":1,"32":3,"33":3,"35":1,"41":1,"42":1,"43":1,"50":1,"52":1,"53":1,"76":3,"89":1,"90":8,"104":1,"107":1,"109":1,"110":1,"123":1,"124":1,"125":2,"128":2,"131":2,"132":1,"134":1,"135":1,"136":1,"137":1,"138":1,"139":1,"140":4,"141":1,"142":2,"144":2}}]],"serializationVersion":2}';export{i as default}; diff --git a/dev/assets/chunks/@localSearchIndexroot.dXriGepY.js b/dev/assets/chunks/@localSearchIndexroot.dXriGepY.js new file mode 100644 index 0000000..71b0bac --- /dev/null +++ b/dev/assets/chunks/@localSearchIndexroot.dXriGepY.js @@ -0,0 +1 @@ +const i='{"documentCount":150,"nextId":150,"documentIds":{"0":"/dev/constraints/comparison_constraints#Constraints.jl:-Streamlining-Constraint-Definition-and-Integration-in-Julia","1":"/dev/constraints/comparison_constraints#Comparison-based-Constraints","2":"/dev/constraints/connection_constraints#Constraints.jl:-Streamlining-Constraint-Definition-and-Integration-in-Julia","3":"/dev/constraints/connection_constraints#Connection-Constraints","4":"/dev/constraints/constraint_commons#constraintcommons-jl","5":"/dev/constraints/constraint_commons#parameters","6":"/dev/constraints/constraint_commons#performances","7":"/dev/constraints/constraint_commons#languages","8":"/dev/constraints/constraint_commons#Performances-2","9":"/dev/constraints/constraint_commons#extensions","10":"/dev/constraints/constraint_commons#Performances-3","11":"/dev/constraints/constraint_commons#sampling","12":"/dev/constraints/constraint_commons#Performances-4","13":"/dev/constraints/constraint_commons#extrema","14":"/dev/constraints/constraint_commons#Performances-5","15":"/dev/constraints/constraint_commons#dictionaries","16":"/dev/constraints/constraint_commons#Performances-6","17":"/dev/constraints/constraint_domains#ConstraintDomains.jl:-Defining-and-Exploring-Variable-Domains-within-JuliaConstraints","18":"/dev/constraints/constraint_domains#Key-Features-and-Functionalities","19":"/dev/constraints/constraint_domains#Empowering-Constraint-Programming-in-Julia","20":"/dev/constraints/constraint_domains#commons","21":"/dev/constraints/constraint_domains#Extension-to-Base-module","22":"/dev/constraints/constraint_domains#performances","23":"/dev/constraints/constraint_domains#continuous","24":"/dev/constraints/constraint_domains#Extension-to-Base-module-2","25":"/dev/constraints/constraint_domains#discrete","26":"/dev/constraints/constraint_domains#Extension-to-Base-module-3","27":"/dev/constraints/constraint_domains#general","28":"/dev/constraints/constraint_domains#exploration","29":"/dev/constraints/constraint_domains#parameters","30":"/dev/constraints/constraint_models#constraintmodels-jl","31":"/dev/constraints/constraints#Constraints.jl:-Streamlining-Constraint-Definition-and-Integration-in-Julia","32":"/dev/constraints/constraints#Key-Features-and-Functionalities","33":"/dev/constraints/constraints#Enabling-Advanced-Modeling-in-Constraint-Programming","34":"/dev/constraints/constraints#Basic-tools","35":"/dev/constraints/constraints#Usual-constraints-(based-on-and-including-XCSP3-core-categories)","36":"/dev/constraints/counting_summing_constraints#Constraints.jl:-Streamlining-Constraint-Definition-and-Integration-in-Julia","37":"/dev/constraints/counting_summing_constraints#Counting-and-Summing-Constraints","38":"/dev/constraints/elementary_constraints#Constraints.jl:-Streamlining-Constraint-Definition-and-Integration-in-Julia","39":"/dev/constraints/elementary_constraints#Elementary-Constraints","40":"/dev/constraints/generic_constraints#Generic-Constraints","41":"/dev/constraints/generic_constraints#Intention-Constraints","42":"/dev/constraints/generic_constraints#Defining-an-intention-constraint-in-JC-API","43":"/dev/constraints/generic_constraints#apis","44":"/dev/constraints/generic_constraints#Test-for-DocumenterVitePress-Issue","45":"/dev/constraints/generic_constraints#Specific-documentation","46":"/dev/constraints/generic_constraints#Extension-Constraints","47":"/dev/constraints/graph_constraints#Constraints.jl:-Streamlining-Constraint-Definition-and-Integration-in-Julia","48":"/dev/constraints/graph_constraints#Constraints-on-Graphs","49":"/dev/constraints/intro#Introduction-to-basics-constraint-based-modeling-tools","50":"/dev/constraints/intro#terminology","51":"/dev/constraints/intro#constraint","52":"/dev/constraints/intro#Constraint-Instantiation","53":"/dev/constraints/intro#configuration","54":"/dev/constraints/intro#Constraint-Satisfaction-or-Violation-by-a-Configuration","55":"/dev/constraints/intro#Domain-defined-variables","56":"/dev/constraints/intro#Constraints.jl:-A-versatile-API","57":"/dev/constraints/intro#Models-Through-ConstraintModels.jl","58":"/dev/constraints/intro#Internal-Aspects","59":"/dev/constraints/language_constraints#Constraints.jl:-Streamlining-Constraint-Definition-and-Integration-in-Julia","60":"/dev/constraints/language_constraints#Constraints-defined-from-Languages","61":"/dev/constraints/packing_scheduling_constraints#Constraints.jl:-Streamlining-Constraint-Definition-and-Integration-in-Julia","62":"/dev/constraints/packing_scheduling_constraints#Packing-and-Scheduling-Constraints","63":"/dev/cp/advanced#Advanced-Constraint-Programming-Techniques","64":"/dev/cp/advanced#Global-Constraints-and-Their-Uses","65":"/dev/cp/advanced#Search-Strategies-and-Optimization","66":"/dev/cp/applications#Applying-Optimization-Methods","67":"/dev/cp/applications#Case-Studies-and-Real-World-Applications","68":"/dev/cp/applications#From-Theory-to-Practice","69":"/dev/cp/contribution#Community-and-Contribution","70":"/dev/cp/contribution#Joining-the-JuliaConstraint-Community","71":"/dev/cp/contribution#Future-Directions","72":"/dev/cp/cp101#Constraint-Programming-101","73":"/dev/cp/cp101#What-is-Constraint-Programming?","74":"/dev/cp/cp101#Basic-Concepts-and-Terminology","75":"/dev/cp/cp101#How-CP-differs-from-other-optimization-techniques","76":"/dev/cp/ecosystem#Exploring-JuliaConstraint-Packages","77":"/dev/cp/ecosystem#Package-Overviews","78":"/dev/cp/ecosystem#Installation-and-Getting-Started-Guides","79":"/dev/cp/getting_started#Getting-Started-with-Julia-for-CP-and-Optimization","80":"/dev/cp/getting_started#Why-Julia?","81":"/dev/cp/getting_started#Setting-Up-Your-Julia-Environment","82":"/dev/cp/getting_started#Your-First-Julia-CP-Model","83":"/dev/cp/intro#Welcome-to-Julia-Constraints","84":"/dev/cp/models#Building-and-Analyzing-Models","85":"/dev/cp/models#Modeling-Best-Practices","86":"/dev/cp/models#Performance-Analysis-and-Improvement","87":"/dev/cp/opt#Dive-into-Optimization","88":"/dev/cp/opt#Understanding-Optimization","89":"/dev/cp/opt#Metaheuristics-Overview","90":"/dev/cp/opt#Mathematical-Programming-Basics","91":"/dev/cp/tuto_xp#Tutorials-and-Experiments","92":"/dev/cp/tuto_xp#Hands-On-Tutorials","93":"/dev/cp/tuto_xp#Experimental-Analysis","94":"/dev/full_api#Full-API","95":"/dev/index-old#juliaconstraints","96":"/dev/index-old#Operational-Research-vs-Constraint-Programming","97":"/dev/index-old#Constraint-Based-Local-Search","98":"/dev/learning/aggregation#Aggregation-Layer","99":"/dev/learning/aggregation#List-of-aggregations","100":"/dev/learning/aggregation#Layer-generation","101":"/dev/learning/arithmetic#Arithmetic-Layer","102":"/dev/learning/arithmetic#List-of-arithmetic-operations","103":"/dev/learning/arithmetic#Layer-generation","104":"/dev/learning/comparison#Comparison-Layer","105":"/dev/learning/comparison#List-of-comparisons","106":"/dev/learning/comparison#non-parametric","107":"/dev/learning/comparison#Param:-:val","108":"/dev/learning/comparison#Layer-generation","109":"/dev/learning/compositional_networks#compositionalnetworks-jl","110":"/dev/learning/compositional_networks#utilities","111":"/dev/learning/compositional_networks#metrics","112":"/dev/learning/constraint_learning#constraintlearning-jl","113":"/dev/learning/intro#Learning-about-Constraints","114":"/dev/learning/layers#A-layer-structure-for-any-ICN","115":"/dev/learning/qubo_constraints#Introduction-to-QUBOConstraints.jl","116":"/dev/learning/qubo_constraints#Basic-features","117":"/dev/learning/qubo_encoding#Encoding-for-QUBO-programs","118":"/dev/learning/qubo_learning#Learning-QUBO-matrices","119":"/dev/learning/qubo_learning#interface","120":"/dev/learning/qubo_learning#Examples-with-various-optimizers","121":"/dev/learning/qubo_learning#Gradient-Descent","122":"/dev/learning/qubo_learning#Constraint-based-Local-Search","123":"/dev/learning/transformation#Transformations-Layer","124":"/dev/learning/transformation#List-of-transformations","125":"/dev/learning/transformation#non-parametric","126":"/dev/learning/transformation#Param:-:val","127":"/dev/learning/transformation#Layer-generation","128":"/dev/meta/meta_strategist#metastrategist-jl","129":"/dev/perf/api#api","130":"/dev/perf/benchmark_ext#BenchmarkTools-Extension","131":"/dev/perf/benchmark_ext#usage","132":"/dev/perf/benchmark_ext#options","133":"/dev/perf/chairmarks_ext#Chairmarks-Extension","134":"/dev/perf/chairmarks_ext#usage","135":"/dev/perf/chairmarks_ext#options","136":"/dev/perf/perf_checker#perfchecker-jl","137":"/dev/perf/perf_checker#usage","138":"/dev/perf/perf_interface#Extending-PerfChecker","139":"/dev/perf/perf_interface#The-Default-Options","140":"/dev/perf/perf_interface#Package-initialization","141":"/dev/perf/perf_interface#Preparatory-Code:","142":"/dev/perf/perf_interface#Main-Code-to-be-Performance-Tested","143":"/dev/perf/perf_interface#Post-Performance-Testing-Code","144":"/dev/perf/perf_interface#Converting-the-result-into-a-Table","145":"/dev/perf/tutorial#tutorial","146":"/dev/public_api#Public-API","147":"/dev/solvers/cbls#cbls-jl","148":"/dev/solvers/intro#solvers","149":"/dev/solvers/local_search_solvers#localsearchsolvers-jl"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[9,1,1],"1":[3,9,75],"2":[9,1,1],"3":[2,9,98],"4":[2,1,66],"5":[1,2,117],"6":[1,3,1],"7":[1,2,86],"8":[1,3,1],"9":[1,2,46],"10":[1,3,1],"11":[1,2,42],"12":[1,3,1],"13":[1,2,31],"14":[1,3,1],"15":[1,2,36],"16":[1,3,1],"17":[9,1,42],"18":[4,9,168],"19":[5,9,54],"20":[1,9,137],"21":[4,10,87],"22":[1,10,1],"23":[1,9,127],"24":[4,10,94],"25":[1,9,138],"26":[4,10,98],"27":[1,9,19],"28":[1,9,96],"29":[1,9,115],"30":[2,1,287],"31":[9,1,39],"32":[4,9,170],"33":[6,9,57],"34":[2,9,185],"35":[10,9,208],"36":[9,1,1],"37":[4,9,134],"38":[9,1,1],"39":[2,9,57],"40":[2,1,17],"41":[2,2,77],"42":[7,3,69],"43":[1,3,213],"44":[4,3,13],"45":[2,3,77],"46":[2,2,55],"47":[9,1,1],"48":[3,9,71],"49":[7,1,25],"50":[1,7,50],"51":[1,8,42],"52":[2,8,40],"53":[1,8,39],"54":[7,8,49],"55":[3,7,28],"56":[5,7,35],"57":[4,7,38],"58":[2,7,40],"59":[9,1,1],"60":[4,9,126],"61":[9,1,1],"62":[4,9,106],"63":[4,1,1],"64":[5,4,12],"65":[4,4,12],"66":[3,1,1],"67":[6,3,11],"68":[4,3,18],"69":[3,1,1],"70":[4,3,14],"71":[2,3,13],"72":[3,1,1],"73":[5,3,10],"74":[4,3,10],"75":[7,3,10],"76":[3,1,1],"77":[2,3,13],"78":[5,1,13],"79":[8,1,1],"80":[3,8,16],"81":[5,8,104],"82":[5,8,191],"83":[4,1,35],"84":[4,1,1],"85":[3,4,12],"86":[4,4,11],"87":[3,1,1],"88":[2,3,12],"89":[2,3,11],"90":[3,3,12],"91":[3,1,1],"92":[3,3,11],"93":[2,3,15],"94":[2,1,1160],"95":[1,1,122],"96":[5,1,93],"97":[4,1,80],"98":[2,1,11],"99":[3,2,26],"100":[2,2,26],"101":[2,1,11],"102":[4,2,22],"103":[2,2,25],"104":[2,1,11],"105":[3,2,10],"106":[2,5,38],"107":[2,5,18],"108":[2,5,50],"109":[2,1,5],"110":[1,2,94],"111":[1,2,46],"112":[2,1,232],"113":[3,1,6],"114":[6,1,145],"115":[4,1,5],"116":[2,4,35],"117":[4,1,64],"118":[3,1,1],"119":[1,3,31],"120":[4,3,1],"121":[2,7,102],"122":[4,7,1],"123":[2,1,30],"124":[3,2,10],"125":[2,5,67],"126":[2,5,20],"127":[2,5,159],"128":[2,1,5],"129":[1,1,57],"130":[2,1,26],"131":[1,2,48],"132":[1,2,31],"133":[2,1,26],"134":[1,2,49],"135":[1,2,25],"136":[2,1,51],"137":[1,2,150],"138":[2,1,49],"139":[3,2,53],"140":[2,2,38],"141":[3,2,58],"142":[6,2,61],"143":[4,2,42],"144":[6,2,59],"145":[1,1,129],"146":[2,1,609],"147":[2,1,473],"148":[1,1,3],"149":[2,1,508]},"averageFieldLength":[3.173333333333333,3.6333333333333333,66.76666666666668],"storedFields":{"0":{"title":"Constraints.jl: Streamlining Constraint Definition and Integration in Julia","titles":[]},"1":{"title":"Comparison-based Constraints","titles":["Constraints.jl: Streamlining Constraint Definition and Integration in Julia"]},"2":{"title":"Constraints.jl: Streamlining Constraint Definition and Integration in Julia","titles":[]},"3":{"title":"Connection Constraints","titles":["Constraints.jl: Streamlining Constraint Definition and Integration in Julia"]},"4":{"title":"ConstraintCommons.jl","titles":[]},"5":{"title":"Parameters","titles":["ConstraintCommons.jl"]},"6":{"title":"Performances","titles":["ConstraintCommons.jl","Parameters"]},"7":{"title":"Languages","titles":["ConstraintCommons.jl"]},"8":{"title":"Performances","titles":["ConstraintCommons.jl","Languages"]},"9":{"title":"Extensions","titles":["ConstraintCommons.jl"]},"10":{"title":"Performances","titles":["ConstraintCommons.jl","Extensions"]},"11":{"title":"Sampling","titles":["ConstraintCommons.jl"]},"12":{"title":"Performances","titles":["ConstraintCommons.jl","Sampling"]},"13":{"title":"Extrema","titles":["ConstraintCommons.jl"]},"14":{"title":"Performances","titles":["ConstraintCommons.jl","Extrema"]},"15":{"title":"Dictionaries","titles":["ConstraintCommons.jl"]},"16":{"title":"Performances","titles":["ConstraintCommons.jl","Dictionaries"]},"17":{"title":"ConstraintDomains.jl: Defining and Exploring Variable Domains within JuliaConstraints","titles":[]},"18":{"title":"Key Features and Functionalities","titles":["ConstraintDomains.jl: Defining and Exploring Variable Domains within JuliaConstraints"]},"19":{"title":"Empowering Constraint Programming in Julia","titles":["ConstraintDomains.jl: Defining and Exploring Variable Domains within JuliaConstraints"]},"20":{"title":"Commons","titles":["ConstraintDomains.jl: Defining and Exploring Variable Domains within JuliaConstraints"]},"21":{"title":"Extension to Base module","titles":["ConstraintDomains.jl: Defining and Exploring Variable Domains within JuliaConstraints","Commons"]},"22":{"title":"Performances","titles":["ConstraintDomains.jl: Defining and Exploring Variable Domains within JuliaConstraints","Commons"]},"23":{"title":"Continuous","titles":["ConstraintDomains.jl: Defining and Exploring Variable Domains within JuliaConstraints"]},"24":{"title":"Extension to Base module","titles":["ConstraintDomains.jl: Defining and Exploring Variable Domains within JuliaConstraints","Continuous"]},"25":{"title":"Discrete","titles":["ConstraintDomains.jl: Defining and Exploring Variable Domains within JuliaConstraints"]},"26":{"title":"Extension to Base module","titles":["ConstraintDomains.jl: Defining and Exploring Variable Domains within JuliaConstraints","Discrete"]},"27":{"title":"General","titles":["ConstraintDomains.jl: Defining and Exploring Variable Domains within JuliaConstraints"]},"28":{"title":"Exploration","titles":["ConstraintDomains.jl: Defining and Exploring Variable Domains within JuliaConstraints"]},"29":{"title":"Parameters","titles":["ConstraintDomains.jl: Defining and Exploring Variable Domains within JuliaConstraints"]},"30":{"title":"ConstraintModels.jl","titles":[]},"31":{"title":"Constraints.jl: Streamlining Constraint Definition and Integration in Julia","titles":[]},"32":{"title":"Key Features and Functionalities","titles":["Constraints.jl: Streamlining Constraint Definition and Integration in Julia"]},"33":{"title":"Enabling Advanced Modeling in Constraint Programming","titles":["Constraints.jl: Streamlining Constraint Definition and Integration in Julia"]},"34":{"title":"Basic tools","titles":["Constraints.jl: Streamlining Constraint Definition and Integration in Julia"]},"35":{"title":"Usual constraints (based on and including XCSP3-core categories)","titles":["Constraints.jl: Streamlining Constraint Definition and Integration in Julia"]},"36":{"title":"Constraints.jl: Streamlining Constraint Definition and Integration in Julia","titles":[]},"37":{"title":"Counting and Summing Constraints","titles":["Constraints.jl: Streamlining Constraint Definition and Integration in Julia"]},"38":{"title":"Constraints.jl: Streamlining Constraint Definition and Integration in Julia","titles":[]},"39":{"title":"Elementary Constraints","titles":["Constraints.jl: Streamlining Constraint Definition and Integration in Julia"]},"40":{"title":"Generic Constraints","titles":[]},"41":{"title":"Intention Constraints","titles":["Generic Constraints"]},"42":{"title":"Defining an intention constraint in JC-API","titles":["Generic Constraints","Intention Constraints"]},"43":{"title":"APIs","titles":["Generic Constraints","Intention Constraints"]},"44":{"title":"Test for DocumenterVitePress Issue","titles":["Generic Constraints","Intention Constraints"]},"45":{"title":"Specific documentation","titles":["Generic Constraints","Intention Constraints"]},"46":{"title":"Extension Constraints","titles":["Generic Constraints"]},"47":{"title":"Constraints.jl: Streamlining Constraint Definition and Integration in Julia","titles":[]},"48":{"title":"Constraints on Graphs","titles":["Constraints.jl: Streamlining Constraint Definition and Integration in Julia"]},"49":{"title":"Introduction to basics constraint-based modeling tools","titles":[]},"50":{"title":"Terminology","titles":["Introduction to basics constraint-based modeling tools"]},"51":{"title":"Constraint","titles":["Introduction to basics constraint-based modeling tools","Terminology"]},"52":{"title":"Constraint Instantiation","titles":["Introduction to basics constraint-based modeling tools","Terminology"]},"53":{"title":"Configuration","titles":["Introduction to basics constraint-based modeling tools","Terminology"]},"54":{"title":"Constraint Satisfaction or Violation by a Configuration","titles":["Introduction to basics constraint-based modeling tools","Terminology"]},"55":{"title":"Domain-defined variables","titles":["Introduction to basics constraint-based modeling tools"]},"56":{"title":"Constraints.jl: A versatile API","titles":["Introduction to basics constraint-based modeling tools"]},"57":{"title":"Models Through ConstraintModels.jl","titles":["Introduction to basics constraint-based modeling tools"]},"58":{"title":"Internal Aspects","titles":["Introduction to basics constraint-based modeling tools"]},"59":{"title":"Constraints.jl: Streamlining Constraint Definition and Integration in Julia","titles":[]},"60":{"title":"Constraints defined from Languages","titles":["Constraints.jl: Streamlining Constraint Definition and Integration in Julia"]},"61":{"title":"Constraints.jl: Streamlining Constraint Definition and Integration in Julia","titles":[]},"62":{"title":"Packing and Scheduling Constraints","titles":["Constraints.jl: Streamlining Constraint Definition and Integration in Julia"]},"63":{"title":"Advanced Constraint Programming Techniques","titles":[]},"64":{"title":"Global Constraints and Their Uses","titles":["Advanced Constraint Programming Techniques"]},"65":{"title":"Search Strategies and Optimization","titles":["Advanced Constraint Programming Techniques"]},"66":{"title":"Applying Optimization Methods","titles":[]},"67":{"title":"Case Studies and Real-World Applications","titles":["Applying Optimization Methods"]},"68":{"title":"From Theory to Practice","titles":["Applying Optimization Methods"]},"69":{"title":"Community and Contribution","titles":[]},"70":{"title":"Joining the JuliaConstraint Community","titles":["Community and Contribution"]},"71":{"title":"Future Directions","titles":["Community and Contribution"]},"72":{"title":"Constraint Programming 101","titles":[]},"73":{"title":"What is Constraint Programming?","titles":["Constraint Programming 101"]},"74":{"title":"Basic Concepts and Terminology","titles":["Constraint Programming 101"]},"75":{"title":"How CP differs from other optimization techniques","titles":["Constraint Programming 101"]},"76":{"title":"Exploring JuliaConstraint Packages","titles":[]},"77":{"title":"Package Overviews","titles":["Exploring JuliaConstraint Packages"]},"78":{"title":"Installation and Getting Started Guides","titles":[]},"79":{"title":"Getting Started with Julia for CP and Optimization","titles":[]},"80":{"title":"Why Julia?","titles":["Getting Started with Julia for CP and Optimization"]},"81":{"title":"Setting Up Your Julia Environment","titles":["Getting Started with Julia for CP and Optimization"]},"82":{"title":"Your First Julia CP Model","titles":["Getting Started with Julia for CP and Optimization"]},"83":{"title":"Welcome to Julia Constraints","titles":[]},"84":{"title":"Building and Analyzing Models","titles":[]},"85":{"title":"Modeling Best Practices","titles":["Building and Analyzing Models"]},"86":{"title":"Performance Analysis and Improvement","titles":["Building and Analyzing Models"]},"87":{"title":"Dive into Optimization","titles":[]},"88":{"title":"Understanding Optimization","titles":["Dive into Optimization"]},"89":{"title":"Metaheuristics Overview","titles":["Dive into Optimization"]},"90":{"title":"Mathematical Programming Basics","titles":["Dive into Optimization"]},"91":{"title":"Tutorials and Experiments","titles":[]},"92":{"title":"Hands-On Tutorials","titles":["Tutorials and Experiments"]},"93":{"title":"Experimental Analysis","titles":["Tutorials and Experiments"]},"94":{"title":"Full API","titles":[]},"95":{"title":"JuliaConstraints","titles":[]},"96":{"title":"Operational Research vs Constraint Programming","titles":["JuliaConstraints"]},"97":{"title":"Constraint-Based Local Search","titles":["JuliaConstraints"]},"98":{"title":"Aggregation Layer","titles":[]},"99":{"title":"List of aggregations","titles":["Aggregation Layer"]},"100":{"title":"Layer generation","titles":["Aggregation Layer"]},"101":{"title":"Arithmetic Layer","titles":[]},"102":{"title":"List of arithmetic operations","titles":["Arithmetic Layer"]},"103":{"title":"Layer generation","titles":["Arithmetic Layer"]},"104":{"title":"Comparison Layer","titles":[]},"105":{"title":"List of comparisons","titles":["Comparison Layer"]},"106":{"title":"Non-parametric","titles":["Comparison Layer","List of comparisons"]},"107":{"title":"Param: :val","titles":["Comparison Layer","List of comparisons"]},"108":{"title":"Layer generation","titles":["Comparison Layer","List of comparisons"]},"109":{"title":"CompositionalNetworks.jl","titles":[]},"110":{"title":"Utilities","titles":["CompositionalNetworks.jl"]},"111":{"title":"Metrics","titles":["CompositionalNetworks.jl"]},"112":{"title":"ConstraintLearning.jl","titles":[]},"113":{"title":"Learning about Constraints","titles":[]},"114":{"title":"A layer structure for any ICN","titles":[]},"115":{"title":"Introduction to QUBOConstraints.jl","titles":[]},"116":{"title":"Basic features","titles":["Introduction to QUBOConstraints.jl"]},"117":{"title":"Encoding for QUBO programs","titles":[]},"118":{"title":"Learning QUBO matrices","titles":[]},"119":{"title":"Interface","titles":["Learning QUBO matrices"]},"120":{"title":"Examples with various optimizers","titles":["Learning QUBO matrices"]},"121":{"title":"Gradient Descent","titles":["Learning QUBO matrices","Examples with various optimizers"]},"122":{"title":"Constraint-based Local Search","titles":["Learning QUBO matrices","Examples with various optimizers"]},"123":{"title":"Transformations Layer","titles":[]},"124":{"title":"List of transformations","titles":["Transformations Layer"]},"125":{"title":"Non-parametric","titles":["Transformations Layer","List of transformations"]},"126":{"title":"Param: :val","titles":["Transformations Layer","List of transformations"]},"127":{"title":"Layer generation","titles":["Transformations Layer","List of transformations"]},"128":{"title":"MetaStrategist.jl","titles":[]},"129":{"title":"API","titles":[]},"130":{"title":"BenchmarkTools Extension","titles":[]},"131":{"title":"Usage","titles":["BenchmarkTools Extension"]},"132":{"title":"Options","titles":["BenchmarkTools Extension"]},"133":{"title":"Chairmarks Extension","titles":[]},"134":{"title":"Usage","titles":["Chairmarks Extension"]},"135":{"title":"Options","titles":["Chairmarks Extension"]},"136":{"title":"PerfChecker.jl","titles":[]},"137":{"title":"Usage","titles":["PerfChecker.jl"]},"138":{"title":"Extending PerfChecker","titles":[]},"139":{"title":"The Default Options","titles":["Extending PerfChecker"]},"140":{"title":"Package initialization","titles":["Extending PerfChecker"]},"141":{"title":"Preparatory Code:","titles":["Extending PerfChecker"]},"142":{"title":"Main Code to be Performance Tested","titles":["Extending PerfChecker"]},"143":{"title":"Post Performance Testing Code","titles":["Extending PerfChecker"]},"144":{"title":"Converting the result into a Table","titles":["Extending PerfChecker"]},"145":{"title":"Tutorial","titles":[]},"146":{"title":"Public API","titles":[]},"147":{"title":"CBLS.jl","titles":[]},"148":{"title":"Solvers","titles":[]},"149":{"title":"LocalSearchSolvers.jl","titles":[]}},"dirtCount":0,"index":[["∅",{"2":{"147":1}}],["∩",{"2":{"147":1}}],["$kwarg",{"2":{"145":1}}],["$d",{"2":{"142":1}}],["$block",{"2":{"141":1,"142":1}}],["θ",{"2":{"121":2}}],["^2",{"2":{"121":1}}],["η",{"2":{"112":1,"121":6}}],["σ",{"2":{"94":2,"116":2,"146":2}}],["∉",{"2":{"94":3,"147":2}}],["⋯",{"2":{"82":2}}],["×",{"2":{"82":3}}],["+",{"2":{"45":2,"94":9,"95":1,"99":1,"131":1,"134":1}}],["z",{"2":{"43":12}}],["zeros",{"2":{"121":3}}],["zero",{"2":{"30":1,"62":11,"94":11}}],["\\tindex",{"2":{"43":1}}],["\\tzero",{"2":{"43":1}}],["\\tcondition",{"2":{"43":2}}],["\\theights",{"2":{"43":1}}],["\\tlengths",{"2":{"43":2}}],["\\tlist",{"2":{"43":5}}],["\\torigins",{"2":{"43":2}}],["\\t",{"2":{"43":5}}],["\\t\\toperator",{"2":{"43":1}}],["\\t\\toccurs",{"2":{"43":1}}],["\\t\\texcept",{"2":{"43":1}}],["\\t\\tvalues",{"2":{"43":2}}],["\\t\\tcondition",{"2":{"43":3}}],["≥",{"2":{"43":4,"121":1}}],[">",{"2":{"43":16,"48":1,"94":1,"121":8,"147":2}}],["≠",{"2":{"42":1,"43":1}}],["||",{"2":{"94":2,"147":1}}],["|the",{"2":{"42":1}}],["|≠|x",{"2":{"42":1}}],["|x",{"2":{"42":1}}],["−x",{"2":{"42":2}}],["yes",{"2":{"149":1}}],["yet",{"2":{"18":1,"20":1,"23":1,"30":1,"32":1,"94":2}}],["you",{"2":{"95":1,"131":1,"134":1}}],["your",{"0":{"81":1,"82":1}}],["y=5",{"2":{"54":1}}],["y=2",{"2":{"53":1,"54":1}}],["y=1",{"2":{"35":1,"94":1}}],["y",{"2":{"41":2,"43":23,"46":1,"51":1,"53":1,"95":1,"112":4,"121":7,"149":2}}],["7",{"2":{"30":3,"37":2,"62":3,"94":5,"129":1}}],["`function",{"2":{"149":1}}],["`struct",{"2":{"149":1}}],["``",{"2":{"147":3}}],["`",{"2":{"60":1,"94":1,"112":1}}],["`automaton`",{"2":{"60":1,"94":1}}],["`x`",{"2":{"60":2,"94":2}}],["`grid`",{"2":{"30":1}}],["`m`",{"2":{"30":1}}],["`rangedomain``",{"2":{"20":1,"23":1,"25":1,"94":1,"146":1}}],["q",{"2":{"112":7,"121":18}}],["qubooptimizer",{"2":{"112":2}}],["qubogradientoptimizer",{"2":{"112":4}}],["qubo",{"0":{"117":1,"118":1},"1":{"119":1,"120":1,"121":1,"122":1},"2":{"94":5,"112":4,"116":4,"119":1,"146":2}}],["quboconstraints",{"0":{"115":1},"1":{"116":1},"2":{"94":7,"112":1,"115":1,"116":2,"117":3,"119":2,"121":1,"146":5}}],["quite",{"2":{"82":1}}],["quote",{"2":{"140":1,"141":1,"142":1}}],["quot",{"2":{"34":6,"62":4,"82":6,"94":10,"95":4,"137":2,"141":2}}],["quadractic",{"2":{"30":1}}],["queens",{"2":{"30":4}}],["qap",{"2":{"30":1}}],["≤6",{"2":{"43":1}}],["≤12",{"2":{"43":1}}],["≤1",{"2":{"43":1}}],["≤10",{"2":{"43":3}}],["≤2",{"2":{"43":1}}],["≤5",{"2":{"43":17}}],["≤4",{"2":{"43":7}}],["≤",{"2":{"21":4,"24":4,"26":4,"43":5,"62":1,"82":2,"94":5}}],["9×9",{"2":{"30":4}}],["9",{"2":{"20":1,"23":1,"25":1,"30":4,"43":3,"82":7,"94":1,"146":1}}],["8",{"2":{"30":3,"37":5,"43":9,"62":1,"94":6}}],["86",{"2":{"20":1,"23":1,"25":1,"94":1,"146":1}}],["89",{"2":{"20":2,"23":2,"25":2,"94":2,"146":2,"149":1}}],["right",{"2":{"94":18,"125":15,"127":3}}],["rich",{"2":{"19":1}}],["round",{"2":{"121":1,"149":1}}],["routing",{"2":{"48":2,"94":2,"96":1}}],["role",{"2":{"90":1}}],["robust",{"2":{"33":1,"58":1}}],["rows",{"2":{"82":1}}],["row",{"2":{"30":1,"82":1}}],["rules",{"2":{"60":2,"94":2,"147":1}}],["ruler",{"2":{"30":1,"42":4,"45":2,"94":2,"147":2}}],["runtime",{"2":{"149":1}}],["runs",{"2":{"141":1,"142":1}}],["running",{"2":{"141":1}}],["run",{"2":{"30":1,"82":1,"112":1,"141":1,"142":1,"143":1,"147":1,"149":5}}],["rawoptimizerattribute",{"2":{"147":2}}],["raw",{"2":{"30":2}}],["rates",{"2":{"30":1}}],["rate",{"2":{"30":1}}],["rand",{"2":{"18":1,"20":1,"21":16,"24":9,"26":9,"29":8,"94":13,"145":1,"146":1,"149":2}}],["randomly",{"2":{"21":2,"24":1,"26":1,"29":1,"94":1,"149":1}}],["random",{"2":{"18":2,"21":2,"24":1,"26":1,"29":10,"94":10,"146":1,"149":2}}],["rangedomain",{"2":{"18":1,"25":2,"27":2,"94":4,"146":2}}],["ranges",{"2":{"18":3,"25":1,"94":1,"146":1}}],["range",{"2":{"17":1,"18":1,"20":1,"23":1,"25":3,"32":2,"55":1,"56":1,"60":1,"94":4,"146":3,"147":1}}],["r",{"2":{"20":2,"23":2,"25":2,"30":2,"60":3,"94":5,"121":8,"146":2}}],["remote",{"2":{"149":2}}],["remotely",{"2":{"149":1}}],["re",{"2":{"149":1}}],["recommended",{"2":{"147":1,"149":1}}],["recognize",{"2":{"7":1}}],["ref",{"2":{"123":1,"149":6}}],["reference",{"2":{"138":1}}],["refers",{"2":{"52":1,"54":1}}],["refer",{"2":{"30":4}}],["relies",{"2":{"123":1}}],["related",{"2":{"94":1,"112":1,"113":1,"127":1,"130":1,"133":1,"144":1,"146":1}}],["relate",{"2":{"94":1,"127":1}}],["relatively",{"2":{"94":1,"110":1,"149":1}}],["relation",{"2":{"51":1}}],["relationships",{"2":{"46":1}}],["rev",{"2":{"94":5,"125":1,"127":1}}],["reverse",{"2":{"30":1,"94":1,"127":1,"145":2}}],["registries",{"2":{"129":1}}],["regions",{"2":{"82":1}}],["regularconstraint",{"2":{"147":1}}],["regularization",{"2":{"94":2,"146":2}}],["regular",{"2":{"4":1,"5":1,"60":9,"94":10,"147":2}}],["reproducible",{"2":{"136":1}}],["represented",{"2":{"60":2,"94":2,"141":1,"147":1}}],["represents",{"2":{"35":1,"53":1,"94":1,"147":3}}],["represent",{"2":{"18":1}}],["representing",{"2":{"18":1,"60":1,"94":1,"147":3}}],["repositories",{"2":{"95":1}}],["replace",{"2":{"149":1}}],["repl",{"2":{"81":1}}],["reusable",{"2":{"57":1}}],["reduce",{"2":{"94":3,"96":1,"102":2,"110":1}}],["reduced",{"2":{"28":1,"94":1,"146":1}}],["redundant",{"2":{"32":1}}],["retrieve",{"2":{"30":1}}],["returned",{"2":{"34":1,"94":1}}],["returns",{"2":{"9":2,"21":3,"24":2,"26":2,"28":1,"29":1,"34":13,"94":19,"127":1,"129":1,"131":1,"134":1,"146":3,"147":19,"149":1}}],["return",{"2":{"1":3,"3":4,"5":1,"7":3,"20":3,"21":5,"23":3,"24":8,"25":3,"26":8,"29":2,"30":1,"34":7,"35":6,"37":4,"39":1,"48":1,"60":1,"62":2,"94":63,"110":1,"112":4,"114":5,"121":8,"139":1,"142":1,"144":1,"145":1,"146":20,"147":1,"149":21}}],["reach",{"2":{"94":1,"111":1,"146":1}}],["reactants",{"2":{"30":2}}],["reactions",{"2":{"30":1}}],["reaction",{"2":{"30":4}}],["readers",{"2":{"68":1,"70":1,"83":1}}],["realm",{"2":{"19":1}}],["real",{"0":{"67":1},"2":{"18":1,"20":3,"23":5,"25":4,"34":1,"68":1,"83":1,"94":7,"146":6,"147":2}}],["requires",{"2":{"145":1}}],["required",{"2":{"28":1,"94":2,"119":1,"146":1}}],["requirements",{"2":{"7":2,"94":2}}],["reinforcement",{"2":{"28":1,"94":1,"95":1,"146":1}}],["resume",{"2":{"149":1}}],["result",{"0":{"144":1},"2":{"34":3,"94":23,"110":1,"125":8,"127":2,"141":1,"142":1,"143":1}}],["results",{"2":{"23":2,"30":1,"32":1,"34":1,"94":3,"137":3,"145":1}}],["restart",{"2":{"149":6}}],["restricting",{"2":{"149":2}}],["restriction",{"2":{"34":2,"94":2,"146":2}}],["restricts",{"2":{"37":3,"94":3}}],["restricted",{"2":{"21":1,"24":1,"26":1,"149":4}}],["respect",{"2":{"94":1,"127":1}}],["respective",{"2":{"53":1}}],["respectively",{"2":{"18":1,"30":2}}],["resource",{"2":{"57":1}}],["resources",{"2":{"18":1}}],["researchers",{"2":{"31":1}}],["research",{"0":{"96":1},"2":{"19":1,"33":1,"71":1,"95":1,"96":1}}],["δ",{"2":{"13":1,"94":1,"112":1,"121":1,"146":1}}],["heavily",{"2":{"123":1}}],["helps",{"2":{"95":1}}],["help",{"2":{"95":2,"96":1}}],["heuristic",{"2":{"82":1,"97":2}}],["heights",{"2":{"62":5,"94":5,"147":1}}],["here",{"2":{"35":1,"43":1,"94":1,"129":1,"131":1,"134":1,"137":2,"141":2,"142":1,"143":1,"145":1,"147":1}}],["highly",{"2":{"114":1}}],["highlight",{"2":{"83":1}}],["highlighting",{"2":{"70":1,"80":1}}],["high",{"2":{"49":1,"95":1}}],["higher",{"2":{"41":1,"43":1}}],["highest",{"2":{"20":1,"23":1,"25":1,"94":1,"146":1,"149":1}}],["hide",{"2":{"45":2,"94":2}}],["https",{"2":{"35":1,"94":1,"146":1}}],["hot",{"2":{"94":3,"117":3,"121":1,"146":3}}],["hosts",{"2":{"95":1}}],["host",{"2":{"81":1}}],["however",{"2":{"54":1,"58":1,"82":1}}],["how",{"0":{"75":1},"2":{"32":1,"41":1,"42":1,"43":17,"64":1,"70":1,"86":1,"93":1,"105":1,"124":1}}],["holds",{"2":{"95":1}}],["hold",{"2":{"3":4,"94":4,"112":1}}],["hamming",{"2":{"94":4,"111":2,"112":3,"146":4}}],["hand",{"2":{"96":1}}],["hands",{"0":{"92":1}}],["handling",{"2":{"31":1,"32":2}}],["handled",{"2":{"23":1,"94":1}}],["handle",{"2":{"20":1,"43":17,"94":1,"149":2}}],["handles",{"2":{"18":1}}],["hardware",{"2":{"81":1}}],["have",{"2":{"30":1,"35":1,"45":1,"52":1,"67":1,"81":1,"94":6,"97":1,"110":2,"146":4,"147":1}}],["half",{"2":{"28":1,"94":1,"146":1}}],["has",{"2":{"11":1,"35":3,"82":1,"94":6,"114":1,"117":1,"130":1,"133":1,"138":1,"146":2,"149":10}}],["∈",{"2":{"9":1,"18":1,"20":1,"21":7,"24":7,"26":7,"94":9,"146":2,"147":2,"149":3}}],["wrappers",{"2":{"95":1}}],["wrapping",{"2":{"95":1}}],["write",{"2":{"94":2,"95":1,"146":2}}],["was",{"2":{"138":1,"149":1}}],["want",{"2":{"131":1,"134":1}}],["way",{"2":{"35":1,"41":1,"43":1,"46":1,"94":3,"131":1,"134":1,"147":1}}],["warning",{"2":{"30":1,"34":1,"50":1,"94":1}}],["would",{"2":{"35":1,"52":1,"94":1}}],["worse",{"2":{"149":3}}],["world",{"0":{"67":1},"2":{"68":1,"83":1}}],["works",{"2":{"34":1,"94":1,"138":1,"139":1,"146":1}}],["work",{"2":{"32":2}}],["working",{"2":{"31":1,"33":1}}],["word",{"2":{"7":6,"29":2,"60":2,"94":8,"146":1,"147":1}}],["why",{"0":{"80":1}}],["what",{"0":{"73":1},"2":{"35":1,"82":1,"83":1,"94":1}}],["whole",{"2":{"34":1,"94":1,"146":1,"149":1}}],["which",{"2":{"21":1,"30":7,"35":1,"54":2,"60":2,"82":1,"94":6,"110":1,"114":1,"136":1,"138":1,"146":1,"147":1}}],["while",{"2":{"18":1,"96":2,"97":1,"149":5}}],["whether",{"2":{"19":1,"33":1,"34":1,"35":1,"37":1,"50":1,"54":1,"62":1,"94":4,"147":1}}],["where",{"2":{"18":1,"20":5,"21":5,"23":5,"24":4,"25":5,"26":4,"29":2,"30":1,"37":1,"45":1,"48":2,"60":1,"67":1,"94":18,"96":1,"97":2,"121":1,"137":1,"146":6,"147":8,"149":69}}],["when",{"2":{"9":2,"30":1,"82":1,"94":21,"112":2,"125":8,"127":2,"137":1,"146":2,"147":1,"149":2}}],["well",{"2":{"82":1}}],["welcome",{"0":{"83":1},"2":{"57":1}}],["weighting",{"2":{"112":1}}],["weighted",{"2":{"94":1}}],["weight",{"2":{"30":1,"94":2,"116":1,"146":1}}],["weights=nothing",{"2":{"94":1,"146":1}}],["weights",{"2":{"30":3,"94":18,"112":5,"114":6,"146":8}}],["weigths",{"2":{"30":1,"111":1,"114":1}}],["we",{"2":{"9":1,"11":1,"13":1,"15":1,"41":1,"42":1,"43":1,"50":1,"52":1,"81":4,"82":6}}],["w",{"2":{"7":2,"29":2,"94":4,"112":2,"114":2,"146":2}}],["wip",{"2":{"136":1}}],["width",{"2":{"35":2,"94":2,"146":2}}],["width=150",{"2":{"35":1,"94":1,"146":1}}],["wide",{"2":{"32":1,"56":1,"60":1,"94":1,"147":1}}],["wikipedia",{"2":{"30":2,"82":1}}],["without",{"2":{"94":17,"125":8}}],["with",{"0":{"79":1,"120":1},"1":{"80":1,"81":1,"82":1,"121":1,"122":1},"2":{"5":1,"7":1,"18":1,"23":1,"29":1,"30":8,"32":4,"33":1,"34":7,"35":7,"50":1,"52":1,"53":1,"56":1,"57":1,"60":4,"62":3,"75":1,"78":1,"82":5,"94":57,"95":3,"96":3,"97":1,"108":1,"110":2,"112":3,"114":4,"125":8,"127":3,"130":1,"132":1,"133":1,"135":1,"137":2,"139":1,"140":1,"145":1,"146":10,"147":6,"149":8}}],["within",{"0":{"17":1},"1":{"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1},"2":{"4":1,"17":1,"18":1,"31":1,"32":3,"43":1,"60":2,"77":1,"81":1,"94":8,"98":1,"101":1,"104":1,"123":1,"147":6,"149":1}}],["will",{"2":{"5":1,"28":1,"35":1,"81":2,"82":1,"94":9,"100":1,"103":1,"108":1,"112":1,"114":1,"117":1,"130":1,"133":1,"146":8,"147":2}}],["kwarg",{"2":{"145":2}}],["keep",{"2":{"94":1,"116":1}}],["keyword",{"2":{"34":2,"35":8,"94":9,"138":1,"146":1,"149":1}}],["keywords",{"2":{"5":1,"94":2,"146":1}}],["key",{"0":{"18":1,"32":1},"2":{"35":2,"74":1,"94":2,"141":1,"142":1}}],["k",{"2":{"94":2,"102":2,"149":1}}],["known",{"2":{"30":1,"37":3,"53":1,"94":5,"146":2,"149":1}}],["kargs",{"2":{"5":1,"34":6,"35":5,"94":7,"112":6,"146":5}}],["kind=",{"2":{"149":1}}],["kinds",{"2":{"7":1}}],["kind",{"2":{"5":1,"13":1,"28":1,"29":1,"94":3,"146":1,"149":6}}],["giving",{"2":{"137":1}}],["give",{"2":{"94":1,"146":1}}],["gives",{"2":{"43":4}}],["given",{"2":{"30":2,"34":1,"37":7,"52":1,"54":2,"60":2,"94":18,"112":6,"114":2,"116":1,"117":1,"137":1,"146":7,"147":6}}],["gctimes",{"2":{"144":3,"145":1}}],["gctrial",{"2":{"132":2}}],["gc=d",{"2":{"142":1}}],["gc",{"2":{"135":1,"139":1,"142":1,"144":1}}],["gcsample",{"2":{"132":2}}],["gcc",{"2":{"37":3,"94":3}}],["game",{"2":{"82":1}}],["guides",{"0":{"78":1}}],["guide",{"2":{"68":1,"145":1}}],["gt",{"2":{"42":1,"95":1,"137":6}}],["good",{"2":{"97":1,"138":1}}],["goes",{"2":{"32":1,"131":1,"134":1,"137":2}}],["goal",{"2":{"30":1,"95":1}}],["golomb",{"2":{"30":2,"42":2,"45":1,"94":1,"147":1}}],["g",{"2":{"30":1,"88":1,"94":15,"125":8,"126":1,"127":3}}],["grads",{"2":{"121":2}}],["gradientdescentoptimizer",{"2":{"121":5}}],["gradient",{"0":{"121":1},"2":{"112":1,"121":1}}],["graphs",{"0":{"48":1}}],["graph",{"2":{"30":4,"60":1,"94":1,"147":1,"149":1}}],["greater",{"2":{"34":1,"94":12,"125":7,"127":3}}],["grid",{"2":{"30":5,"82":3}}],["groundwork",{"2":{"19":1}}],["genetic",{"2":{"89":1,"94":4,"112":3,"146":4}}],["generalstate",{"2":{"149":2}}],["generally",{"2":{"30":1}}],["general",{"0":{"27":1},"2":{"50":1,"149":1}}],["generated",{"2":{"94":18,"125":8,"146":1}}],["generates",{"2":{"29":1,"94":5,"114":2,"127":1,"146":1}}],["generate",{"2":{"18":1,"29":10,"35":1,"94":26,"100":1,"103":1,"108":1,"110":2,"112":2,"114":4,"127":2,"146":7}}],["generation",{"0":{"100":1,"103":1,"108":1,"127":1},"2":{"18":1,"94":2,"146":2}}],["generating",{"2":{"18":2}}],["generic",{"0":{"40":1},"1":{"41":1,"42":1,"43":1,"44":1,"45":1,"46":1},"2":{"4":1,"40":1,"45":1,"52":2,"56":1,"94":1,"95":1,"147":1,"149":2}}],["getting",{"0":{"78":1,"79":1},"1":{"80":1,"81":1,"82":1},"2":{"78":1}}],["get",{"2":{"18":1,"20":1,"30":2,"35":2,"82":1,"94":5,"127":2,"129":2,"146":1,"147":6,"149":17}}],["global",{"0":{"64":1},"2":{"1":7,"3":6,"32":1,"37":4,"39":2,"48":2,"62":6,"64":1,"82":1,"94":36,"112":2,"146":5,"147":15}}],["branch",{"2":{"137":1}}],["breaking",{"2":{"129":3,"137":3}}],["broad",{"2":{"17":1}}],["build",{"2":{"95":1,"106":4,"107":4,"108":1,"110":1,"111":1,"114":1,"125":2,"126":6,"138":1,"147":2}}],["building",{"0":{"84":1},"1":{"85":1,"86":1},"2":{"85":1}}],["but",{"2":{"30":1,"82":1,"144":1}}],["block",{"2":{"82":1,"137":1,"141":4,"142":2}}],["blocks",{"2":{"56":1,"82":2}}],["blank",{"2":{"30":2}}],["binarization==",{"2":{"121":1}}],["binarization",{"2":{"94":4,"112":2,"117":4,"121":13,"146":4}}],["binarize",{"2":{"94":2,"117":2,"121":3,"146":2}}],["binarized",{"2":{"94":1,"116":1}}],["binary",{"2":{"46":1,"94":1,"117":1,"146":1}}],["bias",{"2":{"94":3,"111":1,"146":3}}],["bit",{"2":{"94":2,"117":1,"146":2}}],["bits",{"2":{"94":3,"114":2,"146":1}}],["bitvector",{"2":{"94":5,"110":4,"146":1}}],["bijective",{"2":{"3":2,"94":2}}],["b2",{"2":{"43":1}}],["b1",{"2":{"43":1}}],["bariable",{"2":{"149":1}}],["backends",{"2":{"136":1,"137":1}}],["backend",{"2":{"132":1,"135":1,"137":3,"140":1,"144":1}}],["back",{"2":{"48":2,"94":2}}],["backward",{"2":{"30":1}}],["basis",{"2":{"82":1}}],["basics",{"0":{"49":1,"90":1},"1":{"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1}}],["basic",{"0":{"34":1,"74":1,"116":1},"2":{"4":1,"18":1,"81":1,"94":5,"112":1,"116":1,"127":4,"144":1}}],["base",{"0":{"21":1,"24":1,"26":1},"2":{"4":1,"9":2,"20":3,"21":12,"24":8,"26":9,"27":3,"29":4,"30":9,"94":29,"114":1,"116":2,"146":6,"147":5,"149":4}}],["based",{"0":{"1":1,"35":1,"49":1,"97":1,"122":1},"1":{"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1},"2":{"5":3,"15":1,"18":1,"29":1,"34":1,"35":1,"49":1,"94":9,"97":1,"112":2,"114":1,"117":1,"127":2,"130":1,"133":1,"146":4,"147":1}}],["b",{"2":{"20":1,"21":8,"23":1,"24":8,"25":1,"26":8,"60":2,"94":11,"146":1}}],["boxplots",{"2":{"145":4}}],["boxes",{"2":{"82":1}}],["bounded",{"2":{"94":1}}],["bounding",{"2":{"94":6,"126":1,"127":2}}],["bounds",{"2":{"20":1,"94":1,"146":1}}],["bold",{"2":{"50":1}}],["bool=true",{"2":{"37":1,"43":1,"94":1}}],["bool=false",{"2":{"37":3,"43":1,"94":3}}],["boolparameterdomain",{"2":{"29":1,"94":1}}],["boolean",{"2":{"5":1,"11":1,"29":1,"32":1,"34":2,"94":5,"137":1,"146":2}}],["bool",{"2":{"5":1,"20":4,"23":4,"25":4,"37":1,"62":3,"94":9,"121":1,"137":1,"146":4,"147":8,"149":4}}],["both",{"2":{"4":1,"13":1,"17":1,"28":1,"30":2,"31":1,"34":2,"94":6,"96":1,"146":2,"147":1}}],["bytes",{"2":{"144":4,"145":1}}],["by",{"0":{"54":1},"2":{"3":2,"4":1,"7":1,"9":2,"18":1,"19":1,"21":1,"24":1,"25":1,"26":1,"28":1,"30":1,"32":3,"33":1,"34":1,"35":1,"37":1,"41":2,"46":3,"60":4,"78":1,"92":1,"94":21,"97":1,"110":1,"112":4,"114":1,"141":2,"146":6,"147":4,"149":10}}],["below",{"2":{"145":1}}],["belongs",{"2":{"21":1,"24":1,"26":1,"149":2}}],["begin",{"2":{"131":2,"134":2,"137":2,"145":2,"147":4,"149":22}}],["benchmarked",{"2":{"131":1,"134":1}}],["benchmark",{"2":{"131":1,"144":1}}],["benchmarking",{"2":{"130":1,"133":1}}],["benchmarktools",{"0":{"130":1},"1":{"131":1,"132":1},"2":{"130":1,"131":2,"132":8,"134":1,"137":1}}],["better",{"2":{"96":1,"149":2}}],["between",{"2":{"3":2,"5":1,"13":2,"18":1,"20":3,"23":2,"25":2,"30":2,"35":1,"42":2,"43":1,"45":4,"46":1,"50":1,"51":1,"94":15,"146":7,"147":4,"149":1}}],["best",{"0":{"85":1},"2":{"81":1,"85":1,"112":1,"149":1}}],["been",{"2":{"67":1,"130":1,"133":1,"149":7}}],["before",{"2":{"62":8,"94":8,"141":1}}],["because",{"2":{"41":1,"46":1,"54":2}}],["behave",{"2":{"32":1}}],["behaviors",{"2":{"32":1,"33":1}}],["behavior",{"2":{"18":1,"28":1,"32":1,"94":1}}],["beware",{"2":{"28":1,"94":1,"146":1}}],["beyond",{"2":{"18":1,"32":1}}],["be",{"0":{"142":1},"2":{"3":2,"18":1,"20":1,"28":2,"30":2,"34":3,"35":2,"37":2,"41":2,"46":3,"50":1,"51":1,"52":1,"53":1,"58":1,"60":3,"81":1,"82":1,"94":27,"96":2,"97":2,"100":1,"103":1,"108":1,"112":2,"114":5,"117":1,"127":1,"131":2,"134":2,"137":4,"138":1,"139":1,"140":1,"141":2,"142":2,"143":2,"144":2,"146":8,"147":18,"149":3}}],["6+5=11",{"2":{"54":1}}],["69",{"2":{"20":1,"23":1,"25":1,"94":1,"146":1}}],["6",{"2":{"3":1,"30":2,"39":1,"43":5,"62":3,"94":5,"129":1,"138":1}}],["up",{"0":{"81":1},"2":{"149":1}}],["upcoming",{"2":{"71":1}}],["update",{"2":{"35":2,"94":2}}],["unfold",{"2":{"145":2}}],["undefkeyworderror",{"2":{"121":1}}],["under",{"2":{"94":1,"127":1}}],["understanding",{"0":{"88":1},"2":{"96":1}}],["underpin",{"2":{"17":1}}],["unrolled",{"2":{"94":1}}],["unacceptable",{"2":{"94":2,"147":1}}],["unlikely",{"2":{"58":1}}],["unordered",{"2":{"25":1,"94":1}}],["until",{"2":{"11":1,"94":1,"146":1}}],["unique",{"2":{"3":2,"42":2,"45":1,"94":3,"147":2}}],["union",{"2":{"3":4,"5":1,"7":2,"15":1,"21":2,"24":1,"26":1,"27":2,"29":2,"35":1,"37":1,"94":12,"146":4,"147":4,"149":69}}],["utility",{"2":{"32":1}}],["utilities",{"0":{"110":1},"2":{"11":1,"58":1}}],["utilized",{"2":{"4":1,"94":1,"147":1}}],["us",{"2":{"147":1}}],["usage",{"0":{"131":1,"134":1,"137":1},"2":{"43":1,"130":1,"133":1,"137":1}}],["using",{"2":{"35":1,"43":1,"82":1,"94":1,"95":1,"112":1,"131":2,"134":2,"136":1,"137":3,"140":1,"145":3,"146":1,"147":1}}],["usually",{"2":{"45":1,"94":1,"149":1}}],["usual",{"0":{"35":1},"2":{"5":8,"32":5,"34":2,"35":19,"41":1,"42":3,"43":1,"94":24,"98":1,"101":1,"104":1,"123":1,"146":14}}],["useful",{"2":{"94":1,"97":2,"114":1,"147":4,"149":1}}],["uses",{"0":{"64":1},"2":{"94":1,"96":2,"97":2,"112":1,"127":1}}],["user",{"2":{"33":1,"56":1,"141":1,"142":1,"149":2}}],["users",{"2":{"4":1,"19":1,"32":2,"58":1,"81":2,"138":1,"139":1}}],["used",{"2":{"3":6,"5":2,"7":3,"20":1,"29":8,"34":2,"35":2,"39":2,"48":2,"58":1,"60":1,"62":8,"81":1,"94":40,"96":1,"110":1,"112":2,"114":2,"119":1,"131":1,"134":1,"137":3,"146":1,"147":4,"149":1}}],["use",{"2":{"1":2,"4":1,"11":1,"25":1,"32":1,"37":1,"42":2,"58":1,"80":1,"81":2,"82":1,"94":5,"97":2,"123":1,"136":1,"138":1,"146":2,"147":2,"149":2}}],["ptm",{"2":{"149":1}}],["png",{"2":{"145":2}}],["pkgextensions",{"2":{"138":1}}],["pkgs",{"2":{"137":1,"145":1}}],["pkg",{"2":{"129":2,"137":1,"138":1}}],["penalty",{"2":{"112":9,"121":20}}],["perform",{"2":{"149":1}}],["performance",{"0":{"86":1,"142":1,"143":1},"2":{"32":1,"58":1,"80":1,"86":1,"136":2,"137":4,"139":1,"141":1,"142":1,"143":1,"145":2,"149":1}}],["performances",{"0":{"6":1,"8":1,"10":1,"12":1,"14":1,"16":1,"22":1}}],["perfchecker",{"0":{"136":1,"138":1},"1":{"137":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1},"2":{"129":5,"130":1,"131":1,"133":1,"134":1,"136":1,"137":2,"138":2,"139":3,"140":1,"141":1,"142":2,"143":1,"144":3,"145":3}}],["per",{"2":{"94":1,"117":1,"146":1}}],["pôpulation",{"2":{"112":1}}],["phase",{"2":{"94":1,"114":2}}],["public",{"0":{"146":1}}],["push",{"2":{"121":1}}],["pure",{"2":{"95":3}}],["purely",{"2":{"95":1}}],["purpose",{"2":{"77":1}}],["purposes",{"2":{"19":1,"33":1,"34":1,"94":1,"112":1}}],["puzzles",{"2":{"82":1}}],["puzzle",{"2":{"82":3}}],["plots",{"2":{"145":2}}],["plotting",{"2":{"144":1,"145":1}}],["plainly",{"2":{"140":1}}],["platform",{"2":{"33":1}}],["pluto",{"2":{"81":1}}],["please",{"2":{"42":1,"81":1}}],["p",{"2":{"30":2,"94":1,"111":1,"146":1,"147":1}}],["pool",{"2":{"149":1}}],["populate",{"2":{"139":1}}],["population",{"2":{"94":2,"112":2,"146":2}}],["pop",{"2":{"112":2}}],["popsize=100",{"2":{"112":1}}],["popsize=200",{"2":{"94":1,"146":1}}],["popsize",{"2":{"94":4,"146":4}}],["post",{"0":{"143":1},"2":{"83":1,"143":2,"144":1,"149":1}}],["posed",{"2":{"82":1}}],["possible",{"2":{"53":1,"81":1,"96":1,"105":1,"124":1,"147":1,"149":2}}],["possibly",{"2":{"25":1,"35":1,"94":2}}],["positional",{"2":{"34":1,"94":1}}],["positive",{"2":{"34":4,"94":15,"99":3,"146":4}}],["pos",{"2":{"30":2}}],["point",{"2":{"21":3,"24":2,"26":2,"29":1,"62":2,"94":4}}],["points",{"2":{"20":1,"23":1,"24":1,"25":3,"26":2,"94":5,"146":3}}],["powerful",{"2":{"32":1}}],["power",{"2":{"19":1}}],["printing",{"2":{"149":2}}],["print",{"2":{"82":1,"149":8}}],["principles",{"2":{"50":1}}],["primary",{"2":{"77":1,"137":1}}],["practices",{"0":{"85":1},"2":{"85":1}}],["practice",{"0":{"68":1}}],["practical",{"2":{"19":1,"33":1}}],["practitioners",{"2":{"33":1}}],["prep",{"2":{"141":3}}],["preparatory",{"0":{"141":1},"2":{"137":1,"141":1}}],["previous",{"2":{"137":3}}],["previously",{"2":{"43":1}}],["prelimnary",{"2":{"131":1,"134":1}}],["preliminaries",{"2":{"112":2,"121":3}}],["precision",{"2":{"112":1,"121":6}}],["predict",{"2":{"112":1,"121":9}}],["predictions",{"2":{"112":1}}],["prediction",{"2":{"112":1}}],["predicate",{"2":{"34":4,"41":1,"42":4,"43":2,"45":4,"50":1,"51":1,"94":9,"114":1,"147":7}}],["predicates",{"2":{"32":1,"82":2}}],["predefined",{"2":{"57":1}}],["pretty",{"2":{"35":3,"94":3,"121":1,"146":3,"149":2}}],["prefix",{"2":{"34":3,"94":3}}],["preferences",{"2":{"34":1,"94":1,"146":1}}],["preference",{"2":{"32":1}}],["present",{"2":{"30":1,"35":1,"94":1,"145":1}}],["programs",{"0":{"117":1}}],["programming",{"0":{"19":1,"33":1,"63":1,"72":1,"73":1,"90":1,"96":1},"1":{"64":1,"65":1,"73":1,"74":1,"75":1},"2":{"3":6,"4":1,"17":2,"19":2,"31":1,"33":1,"37":3,"39":2,"46":1,"48":2,"49":1,"62":6,"75":1,"82":1,"83":1,"88":1,"90":1,"94":20,"95":3,"96":2,"97":4,"127":1,"147":1}}],["proportional",{"2":{"94":1,"146":1}}],["property",{"2":{"41":1}}],["properties",{"2":{"18":1,"30":1,"32":1}}],["properly",{"2":{"20":1,"94":1,"146":1}}],["produce",{"2":{"94":1,"110":1}}],["product",{"2":{"94":1,"102":1}}],["products",{"2":{"30":2}}],["prod",{"2":{"94":2,"102":2}}],["projects",{"2":{"71":1}}],["proceeds",{"2":{"30":1}}],["processing",{"2":{"94":1,"127":1}}],["process",{"2":{"18":2,"28":1,"57":1,"68":1,"94":2,"96":1,"112":1,"127":1,"137":1,"146":1,"149":7}}],["processes",{"2":{"11":1,"96":1}}],["providing",{"2":{"18":1,"19":1,"32":1,"33":1,"56":1,"94":2,"147":1}}],["provided",{"2":{"34":1,"94":18,"125":8,"137":2,"141":1}}],["provide",{"2":{"15":1,"18":1,"41":2,"43":2,"46":1,"78":1,"81":1,"92":1,"95":1,"130":1,"133":1,"137":1,"139":1,"147":1}}],["provides",{"2":{"4":1,"17":1,"18":1,"32":1,"49":1,"57":1,"58":1,"82":1,"83":1,"95":1,"136":2}}],["problem",{"2":{"18":2,"19":1,"30":6,"42":1,"52":3,"68":1,"82":1,"96":2,"97":1,"149":3}}],["problems",{"2":{"17":1,"18":1,"19":1,"30":2,"32":2,"33":1,"48":2,"49":1,"57":1,"60":1,"62":6,"64":1,"65":1,"73":1,"82":1,"83":1,"88":1,"94":11,"95":4,"96":3,"97":6,"147":2,"149":1}}],["pseudo",{"2":{"18":1,"29":1,"94":1}}],["pivotal",{"2":{"18":1,"31":1}}],["pacakge",{"2":{"137":1}}],["packing",{"0":{"62":1}}],["packages",{"0":{"76":1},"1":{"77":1},"2":{"4":2,"7":2,"32":1,"94":2,"95":4,"136":1}}],["package",{"0":{"77":1,"140":1},"2":{"4":3,"5":1,"17":2,"18":3,"19":1,"31":2,"32":4,"77":1,"78":1,"129":1,"136":2,"137":1,"140":1,"145":1}}],["page",{"2":{"81":1}}],["patterfolds",{"2":{"145":1}}],["patterns",{"2":{"145":1}}],["pattern",{"2":{"94":1,"114":1}}],["patternfolds",{"2":{"23":1,"94":1,"145":3}}],["patch",{"2":{"129":2,"137":2}}],["patches",{"2":{"129":1,"137":1}}],["path",{"2":{"60":1,"94":6,"131":1,"134":1,"137":2,"145":1,"146":5,"147":1,"149":5}}],["passed",{"2":{"34":2,"94":2}}],["paradigm",{"2":{"49":1,"96":1}}],["param=nothing",{"2":{"94":1,"146":1}}],["parametric",{"0":{"106":1,"125":1},"2":{"34":1,"94":4,"108":1,"112":1,"127":2,"146":3}}],["parameterization",{"2":{"94":1,"127":1}}],["parameter",{"2":{"5":3,"18":2,"28":1,"29":1,"60":2,"94":19,"110":2,"112":1,"116":1,"127":6,"141":1,"146":5,"147":1}}],["parameters=constraintcommons",{"2":{"5":1,"35":1,"94":1,"146":1}}],["parameters",{"0":{"5":1,"29":1},"1":{"6":1},"2":{"4":1,"5":19,"18":3,"29":12,"32":1,"34":2,"35":18,"94":41,"105":1,"112":5,"124":1,"127":2,"132":8,"146":22}}],["params",{"2":{"32":1,"34":2,"94":2,"121":1,"146":1}}],["param",{"0":{"107":1,"126":1},"2":{"28":2,"29":2,"34":4,"35":2,"94":39,"107":4,"108":2,"110":5,"126":6,"127":16,"146":22}}],["parse",{"2":{"35":1,"94":1}}],["parts",{"2":{"58":1}}],["particularly",{"2":{"114":1}}],["particular",{"2":{"52":1}}],["partially",{"2":{"82":1,"94":1,"146":1}}],["partial",{"2":{"11":1,"28":1,"94":3,"146":2,"149":1}}],["part",{"2":{"28":1,"34":1,"81":1,"94":2,"95":1,"146":1}}],["pairs",{"2":{"30":2,"45":1,"94":1,"147":2}}],["pairvarsparameterdomain",{"2":{"29":1,"94":1}}],["paired",{"2":{"5":1,"29":1,"94":2}}],["pair",{"2":{"1":16,"5":2,"28":1,"30":5,"37":2,"39":4,"43":9,"62":15,"94":64,"112":3,"114":1,"146":1,"147":15}}],["mts",{"2":{"149":7}}],["mkpath",{"2":{"145":1}}],["myperfextension",{"2":{"139":1,"140":1,"141":1,"142":1,"143":1}}],["mypackagename",{"2":{"137":1}}],["missing",{"2":{"106":8,"107":8,"108":2,"110":2,"111":2,"114":2,"125":4,"126":12}}],["mission",{"2":{"83":1}}],["mixed",{"2":{"95":1}}],["might",{"2":{"82":2}}],["minor",{"2":{"137":2}}],["min",{"2":{"121":2,"147":1}}],["minkowski",{"2":{"94":1,"111":1,"146":1}}],["minus",{"2":{"94":28,"106":2,"107":2,"125":2,"126":2,"127":4}}],["mincut",{"2":{"30":1,"149":2}}],["minimization",{"2":{"147":1}}],["minimizing",{"2":{"30":1}}],["minimal",{"2":{"7":2,"94":4,"110":1,"111":1,"146":3,"149":3}}],["minimum",{"2":{"3":11,"13":1,"30":1,"43":6,"94":12,"121":2,"146":1,"147":4}}],["move",{"2":{"149":3}}],["mostly",{"2":{"144":1}}],["most",{"2":{"37":4,"43":6,"56":1,"58":1,"82":1,"94":5,"117":1,"146":1,"147":1}}],["more",{"2":{"35":1,"57":1,"94":2,"137":1}}],["moisupports",{"2":{"147":1}}],["moisum",{"2":{"147":1}}],["moiregular",{"2":{"147":1}}],["moiordered",{"2":{"147":1}}],["moinooverlap",{"2":{"147":1}}],["moinvalues",{"2":{"147":1}}],["moimultivalueddecisiondiagram",{"2":{"147":1}}],["moiminimum",{"2":{"147":1}}],["moimaximum",{"2":{"147":1}}],["moiintention",{"2":{"147":17}}],["moiinstantiation",{"2":{"147":1}}],["moiextension",{"2":{"147":1}}],["moierror",{"2":{"147":5}}],["moielement",{"2":{"147":1}}],["moidistdifferent",{"2":{"147":1}}],["moicumulative",{"2":{"147":1}}],["moiconflicts",{"2":{"147":1}}],["moiallequal",{"2":{"147":1}}],["moialldifferent",{"2":{"147":1}}],["moi",{"2":{"30":1,"43":17,"147":38}}],["mode",{"2":{"147":1}}],["modeled",{"2":{"149":1}}],["modeler",{"2":{"30":13}}],["modellike",{"2":{"147":2}}],["modelize",{"2":{"30":1}}],["modeling",{"0":{"33":1,"49":1,"85":1},"1":{"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1},"2":{"18":1,"19":1,"33":1,"41":1,"43":1,"57":1,"81":2,"82":1,"95":1}}],["model",{"0":{"82":1},"2":{"30":14,"32":1,"43":106,"60":1,"82":3,"94":3,"147":45,"149":75}}],["models",{"0":{"57":1,"84":1},"1":{"85":1,"86":1},"2":{"18":1,"49":1,"57":3,"82":1,"85":1,"86":1,"94":1,"95":2,"96":2,"127":1}}],["module",{"0":{"21":1,"24":1,"26":1},"2":{"34":1,"94":1}}],["mutable",{"2":{"149":2}}],["mutually",{"2":{"94":4,"100":1,"103":1,"108":1,"112":1,"114":1,"146":3}}],["much",{"2":{"97":1}}],["must",{"2":{"18":1,"20":1,"25":1,"30":2,"37":2,"41":1,"46":2,"51":2,"60":2,"94":8,"96":1,"146":2,"147":7}}],["multithreading",{"2":{"149":1}}],["multithreaded",{"2":{"149":1}}],["multi",{"2":{"60":1,"94":1,"147":1}}],["multiplied",{"2":{"30":1}}],["multiplication",{"2":{"9":1,"94":1,"146":1}}],["multimedia",{"2":{"30":4}}],["multivalued",{"2":{"7":3,"94":2,"146":1}}],["major",{"2":{"129":2,"137":2}}],["may",{"2":{"97":1}}],["map",{"2":{"94":1,"110":1,"121":5,"149":4}}],["mapping",{"2":{"94":1,"127":1}}],["mainsolver",{"2":{"147":1,"149":7}}],["main",{"0":{"142":1},"2":{"40":1,"94":1,"136":1,"139":1,"140":1,"146":1,"147":1,"149":5}}],["mainly",{"2":{"34":1,"94":1}}],["macro",{"2":{"35":6,"94":6,"123":1,"136":1,"139":1,"145":1,"146":2,"147":1}}],["makie",{"2":{"136":1,"137":1}}],["making",{"2":{"31":1,"97":1}}],["makes",{"2":{"54":1,"95":1}}],["make",{"2":{"11":1,"34":3,"35":2,"94":8,"95":1,"96":1,"108":1,"112":3,"121":2,"123":2,"127":3,"145":1,"149":1}}],["matter",{"2":{"137":1,"147":1}}],["matters",{"2":{"113":1}}],["matrices",{"0":{"118":1},"1":{"119":1,"120":1,"121":1,"122":1},"2":{"94":1,"112":1,"119":1}}],["matrix",{"2":{"30":4,"94":2,"112":2,"116":2,"146":1}}],["match",{"2":{"94":3,"147":2}}],["matches",{"2":{"94":3,"147":2}}],["maths",{"2":{"94":1,"146":1}}],["mathematical",{"0":{"90":1},"2":{"50":1,"51":1,"90":1,"96":2,"97":1}}],["mathoptinterface",{"2":{"30":2,"147":17}}],["magic",{"2":{"30":2}}],["marks",{"2":{"30":1,"42":2,"45":2,"94":2,"147":2}}],["max",{"2":{"28":2,"94":6,"110":2,"114":2,"146":2,"147":1,"149":10}}],["maximum",{"2":{"3":11,"13":1,"18":1,"20":1,"23":1,"25":1,"43":5,"94":14,"146":3,"147":4,"149":6}}],["manipulating",{"2":{"114":1}}],["manipulations",{"2":{"19":1}}],["manipulation",{"2":{"17":1,"18":2,"31":1,"32":1,"94":1,"127":1}}],["manufacturing",{"2":{"96":1}}],["manhattan",{"2":{"94":1,"111":1,"146":1}}],["manages",{"2":{"149":1}}],["manage",{"2":{"149":1}}],["managed",{"2":{"149":1}}],["manager",{"2":{"81":1}}],["managing",{"2":{"32":1}}],["many",{"2":{"11":1,"94":1,"137":1,"146":1}}],["mmds",{"2":{"7":1}}],["m",{"2":{"5":2,"30":6,"35":2,"82":5,"94":2,"146":2,"149":139}}],["mddconstraint",{"2":{"147":2}}],["mdd",{"2":{"5":1,"7":3,"29":1,"60":12,"94":16,"146":2,"147":2}}],["mdash",{"2":{"1":3,"3":4,"5":2,"7":6,"9":3,"11":1,"13":1,"15":1,"20":6,"21":5,"23":8,"24":4,"25":10,"26":5,"27":2,"28":3,"29":13,"30":18,"34":10,"35":7,"37":4,"39":1,"45":1,"48":1,"60":2,"62":2,"94":187,"99":2,"100":1,"102":2,"103":1,"106":1,"108":1,"110":6,"111":3,"112":28,"114":11,"116":2,"117":3,"119":2,"125":9,"127":2,"129":4,"146":73,"147":72,"149":144}}],["memory",{"2":{"132":2}}],["membership",{"2":{"18":1}}],["metasolver",{"2":{"149":4}}],["metastrategist",{"0":{"128":1},"2":{"128":1}}],["metadata",{"2":{"95":1}}],["metaheuristics",{"0":{"89":1},"2":{"75":1}}],["metrics",{"0":{"111":1},"2":{"136":1,"145":1}}],["metric=hamming",{"2":{"94":1,"112":1,"146":1}}],["metric",{"2":{"94":8,"112":6,"146":8}}],["method",{"2":{"5":1,"7":1,"20":1,"21":3,"23":1,"24":3,"25":1,"26":3,"30":16,"35":1,"94":171,"112":26,"114":1,"119":2,"125":8,"129":3,"139":1,"140":2,"141":2,"142":1,"143":2,"144":1,"146":55,"147":24,"149":128}}],["methods",{"0":{"66":1},"1":{"67":1,"68":1},"2":{"4":2,"7":1,"18":2,"20":1,"29":1,"32":2,"50":1,"75":1,"94":4,"110":2,"146":3,"149":3}}],["meet",{"2":{"50":1}}],["meets",{"2":{"50":1}}],["meaningful",{"2":{"93":1}}],["meaning",{"2":{"37":2,"94":2,"114":1}}],["means",{"2":{"3":2,"35":3,"43":1,"94":5}}],["measurement",{"2":{"149":1}}],["measure",{"2":{"32":1,"94":2,"146":2}}],["merge",{"2":{"18":1,"23":2,"25":2,"94":2,"146":2,"149":1}}],["merging",{"2":{"18":1}}],["56",{"2":{"149":1}}],["53",{"2":{"20":1,"23":1,"25":1,"94":1,"146":1}}],["5",{"2":{"1":1,"3":11,"20":1,"23":1,"25":1,"30":2,"37":29,"39":3,"43":69,"53":1,"62":13,"94":75,"95":1,"121":1,"129":1,"131":1,"134":1,"137":1,"146":1,"147":1,"149":1}}],["nbits",{"2":{"94":2,"114":1,"146":1}}],["nbsp",{"2":{"1":3,"3":4,"5":2,"7":6,"9":3,"11":1,"13":1,"15":1,"20":6,"21":5,"23":8,"24":4,"25":10,"26":5,"27":2,"28":3,"29":13,"30":18,"34":10,"35":7,"37":4,"39":1,"45":1,"48":1,"60":2,"62":2,"94":187,"99":2,"100":1,"102":2,"103":1,"106":1,"108":1,"110":6,"111":3,"112":28,"114":11,"116":2,"117":3,"119":2,"125":9,"127":2,"129":4,"146":73,"147":72,"149":144}}],["nvars",{"2":{"94":12,"146":4}}],["nvalues",{"2":{"37":8,"43":9,"94":8,"147":1}}],["nine",{"2":{"82":1}}],["n5",{"2":{"60":2,"94":2}}],["n4",{"2":{"60":3,"94":3}}],["n3",{"2":{"60":2,"94":2}}],["n2",{"2":{"60":2,"94":2}}],["n1",{"2":{"60":2,"94":2}}],["n²",{"2":{"30":1}}],["n×n",{"2":{"30":1}}],["n",{"2":{"30":16,"94":7,"110":4,"116":3,"121":9,"146":2}}],["numeric",{"2":{"25":1,"94":1}}],["number",{"2":{"20":1,"24":3,"25":2,"26":3,"28":3,"30":2,"34":3,"37":11,"94":53,"99":1,"111":1,"112":2,"114":5,"117":3,"125":8,"137":1,"146":18,"147":23,"149":12}}],["numbers",{"2":{"18":2,"94":2,"137":1}}],["normalized",{"2":{"94":1,"146":1}}],["normal",{"2":{"94":1,"127":1}}],["norm",{"2":{"94":2}}],["nooverlap",{"2":{"43":4,"147":2}}],["now",{"2":{"30":1,"82":1}}],["node",{"2":{"30":2,"60":3,"94":3,"147":3}}],["no",{"2":{"30":4,"43":6,"45":1,"62":20,"94":24,"110":1,"112":1,"114":1,"127":1,"147":1}}],["nonnegative",{"2":{"147":1}}],["none",{"2":{"94":4,"117":1,"121":2,"127":3,"132":1,"135":1,"139":1,"146":1,"147":1}}],["nonlinear",{"2":{"88":1}}],["non",{"0":{"106":1,"125":1},"2":{"25":1,"28":2,"94":4,"112":4,"127":1,"146":3,"149":1}}],["not",{"2":{"23":1,"30":2,"34":1,"35":2,"37":1,"41":1,"43":1,"51":1,"62":6,"81":1,"82":3,"94":18,"117":1,"127":1,"146":2,"147":4,"149":1}}],["notebooks",{"2":{"81":1,"130":1,"133":1}}],["note",{"2":{"5":1,"41":1,"43":5,"81":1,"82":1,"147":1}}],["nothing",{"2":{"1":1,"9":5,"28":1,"34":4,"35":1,"37":2,"94":18,"110":1,"112":2,"121":1,"135":2,"139":2,"141":1,"145":1,"146":12,"147":15}}],["neighbours",{"2":{"149":2}}],["neighbourhood",{"2":{"149":2}}],["neither",{"2":{"34":1,"94":1}}],["never",{"2":{"149":1}}],["necessarily",{"2":{"81":1}}],["necessary",{"2":{"17":1,"149":3}}],["next",{"2":{"48":2,"94":2,"129":2,"137":3}}],["negation",{"2":{"34":1,"94":1}}],["networks",{"2":{"96":1}}],["network",{"2":{"94":1,"114":1,"146":1}}],["net",{"2":{"30":1}}],["new",{"2":{"23":3,"32":2,"35":5,"57":1,"94":8,"95":1,"137":1,"146":3,"147":1,"149":2}}],["needs",{"2":{"18":1,"28":1,"94":3,"127":1,"146":2}}],["need",{"2":{"13":1,"82":2,"138":1}}],["natural",{"2":{"41":1,"43":1}}],["nature",{"2":{"5":1,"23":1,"25":1,"94":2,"146":1}}],["names",{"2":{"94":1,"127":1}}],["name=",{"2":{"94":1,"146":1}}],["name",{"2":{"5":1,"34":1,"35":3,"94":9,"137":4,"146":8,"147":2,"149":8}}],["lst",{"2":{"149":5}}],["ls",{"2":{"147":1}}],["load",{"2":{"140":1}}],["loss",{"2":{"112":2,"121":2}}],["loggingextra",{"2":{"149":1}}],["logging",{"2":{"149":1}}],["log",{"2":{"106":4,"107":4,"108":1,"110":1,"111":1,"114":1,"125":2,"126":6,"149":1}}],["logic",{"2":{"94":2,"147":1}}],["logical",{"2":{"41":1}}],["local",{"0":{"97":1,"122":1},"2":{"94":5,"97":1,"112":1,"114":1,"137":1,"146":5,"147":1,"149":7}}],["localsearchsolverscblstodo",{"2":{"81":1}}],["localsearchsolvers",{"0":{"149":1},"2":{"81":2,"95":1,"112":1,"147":1,"149":141}}],["locations",{"2":{"30":5}}],["loop",{"2":{"149":8}}],["loops",{"2":{"35":1,"48":2,"94":3}}],["looks",{"2":{"137":1,"139":1,"140":1,"142":1,"145":1}}],["look",{"2":{"81":1,"82":1}}],["lower",{"2":{"94":1,"146":1}}],["lowest",{"2":{"20":1,"23":1,"25":1,"94":1,"146":1}}],["low",{"2":{"28":1,"94":1,"95":1,"146":1}}],["l",{"2":{"30":1,"94":15,"125":4,"126":1,"127":3,"144":5,"147":2}}],["l=n²",{"2":{"30":1}}],["lt",{"2":{"7":2,"20":1,"21":4,"24":4,"25":1,"26":4,"30":1,"41":1,"42":1,"60":2,"94":10,"146":2,"147":2,"149":3}}],["launch",{"2":{"149":1}}],["lazy",{"2":{"94":2,"110":2,"123":2,"146":2}}],["lang",{"2":{"94":3,"146":1}}],["lang=",{"2":{"94":1,"146":1}}],["language=",{"2":{"94":1,"146":1}}],["languageparameterdomain",{"2":{"29":1,"94":1}}],["language",{"2":{"5":2,"41":1,"43":1,"60":17,"81":3,"94":25,"146":5,"147":4}}],["languages",{"0":{"7":1,"60":1},"1":{"8":1},"2":{"4":1,"7":1,"29":1,"94":1}}],["large",{"2":{"82":1,"96":1,"97":1}}],["labels",{"2":{"60":2,"94":2,"147":2}}],["labeled",{"2":{"60":2,"94":2,"147":2}}],["last",{"2":{"60":1,"82":1,"94":1,"129":2,"137":5,"147":1,"149":1}}],["lays",{"2":{"19":1}}],["layered",{"2":{"94":1,"146":1}}],["layers",{"2":{"94":9,"127":1,"146":4}}],["layer",{"0":{"98":1,"100":1,"101":1,"103":1,"104":1,"108":1,"114":1,"123":1,"127":1},"1":{"99":1,"100":1,"102":1,"103":1,"105":1,"106":1,"107":1,"108":1,"124":1,"125":1,"126":1,"127":1},"2":{"4":1,"24":2,"26":2,"94":42,"98":1,"100":3,"101":1,"103":3,"104":1,"106":1,"108":3,"112":4,"114":28,"123":1,"127":3,"146":16}}],["liking",{"2":{"139":1}}],["like",{"2":{"75":1,"89":1,"131":1,"134":1,"137":2,"139":1,"140":1,"142":1,"145":1}}],["likely",{"2":{"4":1}}],["littledict",{"2":{"94":2,"114":2,"127":1}}],["links",{"2":{"30":1,"130":1,"133":1,"149":1}}],["linear",{"2":{"75":1,"88":1,"94":3,"116":3,"146":3}}],["line",{"2":{"30":9,"81":1}}],["limited",{"2":{"28":1,"94":1,"146":1}}],["limit",{"2":{"28":7,"62":2,"94":11,"146":9,"147":1,"149":10}}],["limits",{"2":{"18":1}}],["listed",{"2":{"94":2,"147":3}}],["listing",{"2":{"46":1}}],["list=x",{"2":{"35":2,"94":2,"146":1}}],["list",{"0":{"99":1,"102":1,"105":1,"124":1},"1":{"106":1,"107":1,"108":1,"125":1,"126":1,"127":1},"2":{"1":13,"3":16,"5":5,"25":1,"26":1,"34":1,"37":24,"39":6,"42":1,"43":7,"45":5,"48":5,"60":8,"62":5,"94":92,"105":1,"124":1,"137":2,"146":3,"147":1,"149":11}}],["left",{"2":{"94":18,"125":10,"127":3}}],["let",{"2":{"82":1}}],["leverage",{"2":{"56":1}}],["levels",{"2":{"92":1}}],["level",{"2":{"41":1,"43":1,"49":1,"60":3,"94":3,"95":2,"149":9}}],["lesser",{"2":{"94":11,"125":6,"127":3}}],["less",{"2":{"41":1,"54":1,"82":1,"147":1}}],["leadsolvers",{"2":{"149":3}}],["leadsolver",{"2":{"149":1}}],["least",{"2":{"37":4,"43":6,"94":4,"112":2,"147":1}}],["learn",{"2":{"83":1,"94":7,"112":5,"114":1,"119":1,"146":6}}],["learned",{"2":{"32":1,"33":1,"94":1,"112":1,"146":1}}],["learning",{"0":{"113":1,"118":1},"1":{"119":1,"120":1,"121":1,"122":1},"2":{"4":1,"11":1,"18":1,"28":1,"32":2,"56":1,"94":4,"95":1,"112":1,"113":1,"114":2,"146":3}}],["length",{"2":{"18":1,"20":2,"21":1,"23":1,"24":6,"25":1,"26":6,"32":1,"34":4,"62":3,"94":23,"102":2,"114":2,"121":4,"144":1,"146":6,"149":12}}],["lengths",{"2":{"1":3,"62":6,"94":9}}],["swap",{"2":{"149":2}}],["switch",{"2":{"94":1,"111":1,"146":1}}],["src",{"2":{"147":2}}],["sltns",{"2":{"112":2}}],["smaller",{"2":{"97":1}}],["small",{"2":{"97":1}}],["script",{"2":{"145":1}}],["scatterlines",{"2":{"137":1,"145":1}}],["scalarfunction",{"2":{"147":3}}],["scalars",{"2":{"94":1,"106":1}}],["scalar",{"2":{"5":2,"94":5,"99":1,"147":1}}],["science",{"2":{"80":1}}],["scenario",{"2":{"68":1}}],["scheduling",{"0":{"62":1},"2":{"62":6,"94":6,"96":1}}],["square",{"2":{"30":3}}],["sqrt",{"2":{"28":1,"94":1,"146":1}}],["syntax",{"2":{"32":1,"81":1,"82":1,"147":1,"149":1}}],["systems",{"2":{"96":2}}],["system",{"2":{"30":1}}],["symb",{"2":{"34":2,"94":2}}],["symbols",{"2":{"9":2,"94":11,"110":4,"114":1,"137":2,"146":6}}],["symbol",{"2":{"5":4,"9":3,"34":7,"35":19,"94":33,"114":1,"117":1,"121":1,"127":5,"137":1,"138":1,"146":14,"149":3}}],["symmetries",{"2":{"32":3,"34":4,"94":4,"146":4}}],["symmetry",{"2":{"32":1,"34":1,"94":1,"146":1}}],["symcon",{"2":{"9":1,"94":1,"146":1}}],["successfully",{"2":{"67":1}}],["such",{"2":{"5":2,"30":2,"32":2,"41":3,"43":2,"45":1,"55":1,"60":1,"74":1,"94":5,"95":1,"96":2,"114":1,"127":1,"147":1,"149":4}}],["subs",{"2":{"149":3}}],["subsolvers",{"2":{"149":4}}],["subsolver",{"2":{"149":6}}],["subsets",{"2":{"82":2}}],["subset",{"2":{"52":1,"147":1}}],["sub",{"2":{"112":1,"149":1}}],["subtract",{"2":{"94":1,"127":1}}],["subtraction",{"2":{"94":1,"127":1}}],["subtype",{"2":{"30":1}}],["subgrid",{"2":{"82":1}}],["subgrids",{"2":{"82":1}}],["sudoku",{"2":{"30":17,"82":4,"149":1}}],["sudokuinstances",{"2":{"30":1}}],["sudokuinstance",{"2":{"30":19}}],["summary",{"2":{"97":1}}],["summing",{"0":{"37":1}}],["sum",{"2":{"24":1,"26":1,"28":1,"30":1,"37":8,"43":8,"51":1,"62":2,"94":20,"99":2,"102":3,"116":3,"146":4,"147":3}}],["supply",{"2":{"96":1}}],["supplies",{"2":{"30":1,"95":1}}],["supported",{"2":{"94":4,"147":2}}],["support",{"2":{"18":1,"94":1,"147":1}}],["supports=nothing",{"2":{"94":1}}],["supports",{"2":{"18":1,"32":1,"55":1,"94":7,"147":13}}],["supertype",{"2":{"18":3,"23":1,"25":1,"94":2,"146":2}}],["super",{"2":{"18":1,"20":1,"94":1,"146":1}}],["stop",{"2":{"149":5}}],["storing",{"2":{"95":1,"145":1}}],["stored",{"2":{"141":1,"142":1}}],["stores",{"2":{"25":2,"94":2,"145":2}}],["store",{"2":{"23":3,"29":8,"35":1,"94":15,"110":1,"114":2,"146":1,"149":3}}],["stuff",{"2":{"121":2}}],["studio",{"2":{"81":1}}],["studies",{"0":{"67":1},"2":{"67":1}}],["stipulates",{"2":{"94":1,"147":2}}],["step",{"2":{"35":2,"78":2,"92":2,"94":2,"149":3}}],["stamp",{"2":{"149":4}}],["status",{"2":{"149":4}}],["static",{"2":{"149":1}}],["statistical",{"2":{"96":1}}],["states",{"2":{"60":4,"94":4}}],["statement",{"2":{"51":1}}],["state",{"2":{"30":3,"53":1,"149":36}}],["started",{"0":{"78":1,"79":1},"1":{"80":1,"81":1,"82":1},"2":{"78":1}}],["starts",{"2":{"34":1,"62":8,"94":9,"97":1,"149":2}}],["start",{"2":{"30":1,"48":2,"60":2,"82":1,"94":4,"137":1}}],["starting",{"2":{"30":2,"34":1,"94":1,"149":1}}],["start=",{"2":{"30":1}}],["standout",{"2":{"32":1}}],["standards",{"2":{"56":1}}],["standard",{"2":{"30":3,"31":1,"32":1,"33":1,"40":1,"95":1}}],["stands",{"2":{"17":1}}],["stdout",{"2":{"30":1}}],["str",{"2":{"149":1}}],["streamline",{"2":{"57":1}}],["streamlining",{"0":{"0":1,"2":1,"31":1,"36":1,"38":1,"47":1,"59":1,"61":1},"1":{"1":1,"3":1,"32":1,"33":1,"34":1,"35":1,"37":1,"39":1,"48":1,"60":1,"62":1}}],["strongly",{"2":{"50":1}}],["straight",{"2":{"82":1}}],["straightforward",{"2":{"32":1,"41":1,"147":1}}],["strategies",{"0":{"65":1},"2":{"19":1,"65":1}}],["string",{"2":{"21":4,"24":4,"26":4,"30":1,"34":1,"94":8,"110":1,"114":1,"137":1,"146":1,"147":1,"149":1}}],["strictly",{"2":{"1":8,"34":3,"94":13,"99":1,"146":3}}],["struct",{"2":{"20":1,"30":3,"94":1,"149":4}}],["structure",{"0":{"114":1},"2":{"7":3,"20":2,"29":1,"30":1,"34":1,"94":7,"97":1,"112":1,"114":4,"146":5,"149":5}}],["structures",{"2":{"4":1}}],["silent",{"2":{"147":4,"149":1}}],["sig",{"2":{"94":17,"125":8}}],["signature",{"2":{"94":2,"110":2,"146":2}}],["significance",{"2":{"73":1}}],["significantly",{"2":{"32":1,"33":1}}],["single",{"2":{"82":1,"94":3,"99":1,"102":2}}],["since",{"2":{"41":1,"43":1,"149":1}}],["sink",{"2":{"30":3}}],["simulated",{"2":{"89":1}}],["simplify",{"2":{"64":1}}],["simplified",{"2":{"35":3,"94":3}}],["simplifies",{"2":{"32":1}}],["simple",{"2":{"28":1,"32":1,"35":1,"82":2,"94":2,"146":2}}],["simply",{"2":{"21":2,"24":1,"26":1,"29":1,"34":1,"82":1,"94":2,"137":1}}],["similar",{"2":{"20":1,"43":1,"94":1,"146":1}}],["situations",{"2":{"13":1}}],["size",{"2":{"5":1,"18":1,"20":5,"23":8,"25":8,"28":2,"30":3,"48":3,"94":32,"110":1,"112":7,"114":2,"121":2,"146":16,"149":4}}],["split",{"2":{"112":1}}],["specialize",{"2":{"149":10}}],["specialized",{"2":{"94":2,"106":1,"125":1,"149":10}}],["specializing",{"2":{"149":1}}],["specifying",{"2":{"17":1,"94":2,"147":5}}],["specific",{"0":{"45":1},"2":{"32":1,"39":4,"50":2,"52":1,"53":1,"54":1,"94":6,"112":2,"127":1,"132":1,"135":1,"147":2}}],["specifically",{"2":{"21":2,"24":1,"26":1,"29":1,"45":1,"94":2,"147":1}}],["specification",{"2":{"5":1,"18":1}}],["specifications",{"2":{"5":2,"32":1,"35":1,"94":1,"146":1}}],["specified",{"2":{"21":2,"24":1,"26":1,"29":1,"30":2,"94":2,"127":1,"147":2}}],["specifies",{"2":{"3":6,"37":1,"41":1,"46":1,"51":1,"94":8,"127":1}}],["space",{"2":{"28":4,"34":1,"94":11,"96":1,"146":9,"147":3,"149":1}}],["spaces",{"2":{"11":1,"17":1,"18":1,"32":1}}],["span",{"2":{"23":1,"25":1,"94":1}}],["s2",{"2":{"9":1,"94":1,"146":1}}],["s1",{"2":{"9":1,"94":1,"146":1}}],["s",{"2":{"5":3,"7":6,"18":2,"20":2,"23":1,"25":1,"30":5,"32":1,"33":1,"34":6,"35":8,"82":1,"94":18,"106":4,"107":4,"108":1,"110":1,"111":1,"114":1,"125":2,"126":6,"129":1,"140":1,"142":1,"146":14,"149":109}}],["sat",{"2":{"149":3}}],["satisfying",{"2":{"149":2}}],["satisfy",{"2":{"37":3,"41":1,"46":1,"51":1,"94":3,"95":1,"96":1,"97":1,"147":2}}],["satisfies",{"2":{"34":1,"37":6,"54":1,"60":1,"94":8,"97":1,"146":1,"147":4}}],["satisfied",{"2":{"3":4,"34":1,"39":1,"48":1,"54":2,"60":1,"62":2,"94":10,"96":1,"146":1,"147":1,"149":1}}],["satisfaction",{"0":{"54":1},"2":{"32":1,"50":1,"57":1,"94":2,"95":1,"147":1,"149":3}}],["save",{"2":{"145":2}}],["say",{"2":{"94":1,"117":1,"146":1}}],["samples=d",{"2":{"142":1}}],["samples",{"2":{"132":2,"135":1,"139":1,"142":1,"144":5,"145":1}}],["samplings",{"2":{"18":1,"28":2,"94":2,"146":2}}],["sampling",{"0":{"11":1},"1":{"12":1},"2":{"4":1,"11":2}}],["same",{"2":{"23":1,"25":1,"30":2,"34":1,"35":1,"45":1,"94":4,"146":2,"147":1}}],["shifted",{"2":{"121":3}}],["share",{"2":{"71":1,"85":1}}],["shared",{"2":{"4":1,"58":1}}],["shrink",{"2":{"34":1,"35":1,"94":2}}],["show",{"2":{"94":4,"110":1,"114":1,"146":1}}],["showcase",{"2":{"67":1}}],["shortcut",{"2":{"34":1,"35":1,"94":1,"146":1}}],["should",{"2":{"3":6,"41":1,"43":1,"45":1,"94":11,"110":2,"146":2,"147":4,"149":3}}],["soon",{"2":{"147":1}}],["sophisticated",{"2":{"33":1}}],["so",{"2":{"30":1,"35":2,"82":1,"94":2,"96":1}}],["sols",{"2":{"94":1,"112":4,"146":1}}],["solve",{"2":{"30":1,"82":1,"95":2,"96":1,"149":3}}],["solverversion",{"2":{"147":1}}],["solvername",{"2":{"147":1}}],["solvers",{"0":{"148":1},"2":{"81":3,"82":4,"95":10,"97":3,"114":1,"148":1,"149":2}}],["solver",{"2":{"30":6,"82":2,"95":1,"97":2,"112":1,"147":11,"149":29}}],["solving",{"2":{"19":1,"33":1,"49":1,"65":1,"68":1,"73":1,"81":1,"83":1,"96":4,"149":4}}],["sol",{"2":{"28":1,"94":1,"146":1}}],["solution",{"2":{"18":1,"30":2,"43":4,"82":3,"94":3,"96":1,"97":4,"111":1,"146":1,"147":3,"149":4}}],["solutions",{"2":{"4":1,"28":10,"94":14,"95":1,"96":2,"97":4,"111":1,"112":8,"146":14,"149":9}}],["something",{"2":{"34":1,"94":1}}],["some",{"2":{"9":1,"11":1,"82":1,"94":1,"95":1,"98":1,"101":1,"104":1,"112":1,"123":1,"130":1,"133":1,"137":1,"146":1,"147":1}}],["source",{"2":{"1":3,"3":4,"5":3,"7":7,"9":3,"11":1,"13":1,"15":1,"20":10,"21":15,"23":12,"24":15,"25":14,"26":16,"27":2,"28":3,"29":17,"30":21,"34":11,"35":9,"37":4,"39":1,"45":1,"48":1,"60":2,"62":2,"94":187,"99":2,"100":1,"102":2,"103":1,"106":1,"108":1,"110":6,"111":3,"112":28,"114":11,"116":2,"117":3,"119":2,"125":9,"127":2,"129":4,"146":73,"147":74,"149":144}}],["seaperl",{"2":{"95":1}}],["searching",{"2":{"34":1,"94":1,"146":1}}],["searches",{"2":{"18":1}}],["search",{"0":{"65":1,"97":1,"122":1},"2":{"11":1,"17":1,"18":3,"28":9,"32":1,"65":1,"89":1,"94":20,"96":1,"97":3,"114":1,"146":20,"147":1,"149":1}}],["select",{"2":{"137":1,"149":4}}],["selection",{"2":{"94":1,"127":1}}],["selected",{"2":{"94":8,"100":1,"103":1,"108":1,"112":2,"114":6,"146":4,"149":1}}],["series",{"2":{"82":1,"149":1}}],["serves",{"2":{"4":1,"18":1}}],["sequence",{"2":{"48":6,"60":4,"94":10,"147":3}}],["seen",{"2":{"51":1}}],["see",{"2":{"42":1,"149":1}}],["separates",{"2":{"94":1,"110":1}}],["separator",{"2":{"30":1}}],["sep",{"2":{"30":2,"94":2,"110":2}}],["segment",{"2":{"30":3}}],["several",{"2":{"13":1,"58":1,"81":1,"95":1,"114":1}}],["sec",{"2":{"149":1}}],["section",{"2":{"5":1,"42":1,"130":1,"133":1}}],["seconds=d",{"2":{"142":1}}],["seconds",{"2":{"132":2,"135":1,"139":1,"142":1,"145":1,"149":1}}],["second",{"2":{"3":2,"62":8,"94":10}}],["setter",{"2":{"82":1}}],["setting",{"0":{"81":1},"2":{"149":1}}],["settings",{"2":{"18":1,"28":1,"94":1,"146":1,"149":1}}],["setup",{"2":{"81":1}}],["setdomain",{"2":{"20":1,"23":1,"25":3,"26":2,"94":5,"146":4}}],["set",{"2":{"3":4,"7":1,"9":2,"19":1,"21":2,"24":1,"25":3,"26":1,"29":1,"30":4,"37":3,"39":2,"46":2,"51":1,"53":1,"54":1,"94":31,"96":1,"108":1,"110":1,"112":11,"117":2,"127":1,"146":10,"147":68,"149":22}}],["sets",{"2":{"3":2,"18":1,"55":1,"94":2,"112":3}}],["001",{"2":{"121":1}}],["00514",{"2":{"35":1,"94":1,"146":1}}],["0≤z",{"2":{"43":2}}],["0≤y",{"2":{"43":1}}],["0≤x",{"2":{"43":1}}],["0",{"2":{"1":14,"3":1,"20":1,"21":2,"23":1,"24":1,"25":1,"26":1,"30":54,"34":7,"37":8,"43":16,"48":1,"53":1,"60":22,"82":2,"94":73,"121":1,"129":8,"145":11,"146":3,"147":2,"149":9}}],["42",{"2":{"20":1,"23":1,"25":1,"37":2,"94":3,"146":1}}],["4",{"2":{"1":12,"3":15,"20":1,"23":1,"25":1,"30":3,"37":14,"39":4,"42":2,"43":84,"44":2,"45":3,"46":3,"48":4,"62":18,"94":82,"129":1,"145":1,"146":1,"147":1,"149":1}}],["3j+1",{"2":{"82":1}}],["3i+1",{"2":{"82":1}}],["3+2=5",{"2":{"54":1}}],["39",{"2":{"18":2,"20":1,"21":1,"24":1,"26":1,"32":1,"33":1,"34":1,"35":3,"81":1,"82":1,"94":6,"106":4,"107":4,"108":1,"110":1,"111":1,"114":1,"125":2,"126":6,"129":1,"137":1,"142":1,"146":1,"149":4}}],["3",{"2":{"1":17,"3":15,"20":2,"23":2,"25":2,"30":6,"34":4,"35":1,"37":33,"39":4,"42":2,"43":109,"44":6,"45":7,"46":3,"48":6,"62":26,"82":6,"94":125,"129":1,"145":1,"146":3,"147":1,"149":1}}],["28",{"2":{"149":1}}],["225",{"2":{"94":1}}],["200",{"2":{"94":2,"112":1,"146":2}}],["2009",{"2":{"35":1,"94":1,"146":1}}],["2",{"2":{"1":15,"3":16,"20":2,"23":2,"25":2,"30":5,"34":3,"35":1,"37":40,"39":4,"42":2,"43":140,"44":4,"45":7,"46":3,"48":3,"60":10,"62":28,"82":2,"94":146,"129":1,"145":8,"146":3,"147":3,"149":1}}],["15",{"2":{"43":1,"131":1,"134":1}}],["1≤z",{"2":{"43":4}}],["1≤y",{"2":{"43":8}}],["1≤x",{"2":{"43":15}}],["101",{"0":{"72":1},"1":{"73":1,"74":1,"75":1}}],["10",{"2":{"37":27,"43":28,"51":1,"54":2,"94":29,"95":1,"131":1,"134":1,"145":1,"146":2,"149":2}}],["100",{"2":{"28":2,"94":4,"145":1,"146":4,"149":1}}],["10000",{"2":{"149":1}}],["1000",{"2":{"28":1,"94":1,"145":4,"146":1}}],["10^6",{"2":{"28":1,"94":1,"146":1}}],["123",{"2":{"20":1,"23":1,"25":1,"94":1,"146":1}}],["12",{"2":{"20":1,"23":1,"25":1,"43":1,"62":1,"94":2,"146":1}}],["1",{"2":{"1":19,"3":17,"15":2,"20":2,"23":2,"25":2,"30":3,"34":6,"35":1,"37":34,"39":4,"42":2,"43":261,"44":4,"45":5,"46":3,"48":4,"60":15,"62":41,"82":5,"94":174,"116":1,"117":1,"121":4,"129":8,"132":1,"135":2,"139":2,"144":4,"145":3,"146":6,"147":4,"149":4}}],["=>",{"2":{"60":15,"94":15,"121":1,"131":3,"132":10,"134":3,"135":6,"137":2,"139":6,"145":7}}],["=usual",{"2":{"35":1,"94":1,"146":1}}],["=0",{"2":{"30":1}}],["==",{"2":{"3":4,"21":1,"37":2,"43":18,"48":1,"94":9,"117":1,"121":2,"146":1,"147":3}}],["=",{"2":{"1":3,"3":12,"5":1,"15":2,"20":5,"21":4,"23":5,"24":4,"25":5,"26":4,"28":7,"30":11,"34":3,"35":3,"37":16,"39":1,"42":5,"43":167,"44":2,"45":2,"48":5,"60":16,"62":17,"82":1,"94":126,"95":1,"102":2,"108":1,"110":1,"112":12,"116":1,"117":3,"121":34,"127":5,"137":8,"140":1,"141":1,"142":1,"143":1,"144":9,"145":7,"146":36,"147":19,"149":48}}],["epoch",{"2":{"149":1}}],["err",{"2":{"147":3}}],["error",{"2":{"32":2,"34":20,"35":3,"94":24,"112":1,"146":6,"147":4,"149":4}}],["euclidian",{"2":{"106":1,"107":1}}],["euclidean",{"2":{"94":6}}],["eq",{"2":{"94":22,"125":12,"126":1,"127":6}}],["equiped",{"2":{"30":1}}],["equilibrium",{"2":{"30":4}}],["equivalent",{"2":{"21":1,"24":1,"26":1,"94":1}}],["equalities",{"2":{"94":2,"127":2}}],["equal",{"2":{"1":8,"3":2,"30":1,"34":1,"37":1,"43":5,"54":1,"94":17,"125":3,"127":1,"147":4}}],["editors",{"2":{"81":1}}],["edge",{"2":{"60":2,"94":2,"147":2}}],["educational",{"2":{"19":1,"33":1}}],["etc",{"2":{"55":1,"137":1}}],["e",{"2":{"30":1,"34":4,"48":2,"60":4,"62":4,"88":1,"94":15,"111":1,"121":3,"146":1,"149":1}}],["else",{"2":{"121":4}}],["eltype",{"2":{"27":3,"94":3,"112":2}}],["elementary",{"0":{"39":1}}],["elements",{"2":{"11":1,"18":2,"20":1,"30":1,"32":1,"94":18,"99":1,"110":1,"114":1,"125":8,"146":2}}],["element",{"2":{"3":9,"43":9,"94":9,"112":2,"129":1,"147":2,"149":1}}],["either",{"2":{"20":1,"23":1,"25":1,"46":2,"62":4,"94":8,"95":1,"146":4}}],["efficient",{"2":{"49":1,"58":1,"85":1,"94":1}}],["efficiently",{"2":{"11":1,"30":1,"147":1}}],["efficiency",{"2":{"19":1,"96":1}}],["earlier",{"2":{"129":1}}],["easily",{"2":{"136":1,"137":1}}],["easier",{"2":{"35":1,"94":1}}],["easy",{"2":{"95":1,"136":1,"138":1}}],["ease",{"2":{"19":1,"80":1}}],["eachrow",{"2":{"121":4}}],["each",{"2":{"3":2,"5":2,"24":1,"26":1,"30":3,"34":1,"35":1,"48":2,"56":1,"60":2,"77":1,"78":1,"82":5,"94":12,"114":1,"123":1,"138":1,"146":2,"147":2,"149":1}}],["embodies",{"2":{"19":1,"33":1,"94":2,"147":1}}],["empty",{"2":{"94":1,"112":2,"127":1,"146":1,"147":7,"149":11}}],["emptydomain",{"2":{"18":1,"20":2,"23":1,"25":1,"94":2,"146":1}}],["empowering",{"0":{"19":1}}],["evolution",{"2":{"145":2}}],["evolves",{"2":{"149":1}}],["evolve",{"2":{"18":1}}],["evals=d",{"2":{"142":1}}],["evals",{"2":{"132":2,"135":1,"139":1,"142":1,"145":1}}],["evaluation",{"2":{"112":1}}],["evaluates",{"2":{"34":1,"35":1,"94":2}}],["evaluated",{"2":{"32":1,"149":1}}],["eventually",{"2":{"48":2,"94":2}}],["even",{"2":{"30":1}}],["everuseful",{"2":{"15":1}}],["enabled",{"2":{"149":1}}],["enabling",{"0":{"33":1},"2":{"17":1}}],["enumerate",{"2":{"121":1}}],["enforcing",{"2":{"94":2,"147":1}}],["environment",{"0":{"81":1},"2":{"137":1,"145":1}}],["encode",{"2":{"112":1}}],["encoded",{"2":{"60":2,"94":2,"147":1}}],["encoding",{"0":{"117":1},"2":{"94":5,"116":1,"117":4,"146":4}}],["encourage",{"2":{"70":1,"81":2}}],["encompass",{"2":{"45":1,"94":1}}],["encapsulate",{"2":{"94":1,"127":1,"149":2}}],["encapsulating",{"2":{"32":1}}],["encapsuler",{"2":{"23":1,"94":1}}],["entry",{"2":{"35":3,"94":3,"149":1}}],["enhancement",{"2":{"32":1}}],["enhances",{"2":{"19":1,"33":1}}],["enhancing",{"2":{"32":1}}],["ensure",{"2":{"82":1,"94":1,"116":1}}],["ensures",{"2":{"32":1,"39":2,"42":2,"48":2,"60":2,"62":6,"82":1,"94":12,"147":2}}],["ensuring",{"2":{"1":7,"37":5,"45":2,"56":1,"94":17,"112":3,"127":1,"147":18}}],["energy",{"2":{"30":1}}],["enough",{"2":{"29":1,"94":1}}],["end``",{"2":{"149":1}}],["end",{"2":{"7":2,"82":2,"94":2,"121":15,"131":2,"134":2,"137":2,"139":1,"140":1,"141":1,"142":2,"144":1,"145":3,"147":1,"149":4}}],["exclu",{"2":{"94":3,"114":3}}],["exclusive",{"2":{"94":11,"100":1,"103":1,"108":1,"112":3,"114":9,"146":3}}],["excluded",{"2":{"94":1,"147":2}}],["exclude",{"2":{"37":1,"94":1}}],["exceeds",{"2":{"54":1}}],["exceed",{"2":{"51":1,"62":2,"94":2}}],["except",{"2":{"37":2,"94":2}}],["except=vals",{"2":{"35":2,"94":2,"146":1}}],["exact",{"2":{"97":4}}],["exactly",{"2":{"37":4,"43":7,"94":4,"147":3}}],["examine",{"2":{"32":1}}],["exampleusing",{"2":{"45":2,"94":2}}],["example2",{"2":{"45":2,"94":2}}],["example",{"2":{"5":1,"34":1,"35":8,"41":2,"43":5,"46":1,"51":1,"52":1,"53":1,"54":1,"81":1,"94":8,"129":1,"131":2,"134":2,"138":1,"141":1,"146":6}}],["examples",{"0":{"120":1},"1":{"121":1,"122":1},"2":{"1":3,"3":4,"34":2,"37":4,"39":1,"45":1,"48":1,"60":2,"62":2,"81":1,"94":22,"127":1,"130":1,"133":1,"145":1}}],["existing",{"2":{"35":2,"94":2,"95":1,"96":1}}],["exists",{"2":{"34":3,"82":1,"94":3,"141":1}}],["ex",{"2":{"35":3,"94":3}}],["expansion",{"2":{"94":1}}],["export",{"2":{"94":1,"146":1,"149":1}}],["experimental",{"0":{"93":1},"2":{"93":1}}],["experiments",{"0":{"91":1},"1":{"92":1,"93":1},"2":{"93":1}}],["expect",{"2":{"83":1}}],["expectations",{"2":{"81":1}}],["expected",{"2":{"34":2,"35":1,"94":4,"146":3}}],["explicit",{"2":{"94":2,"147":1}}],["explicitly",{"2":{"46":1,"94":2,"147":3}}],["explanation",{"2":{"35":1,"88":1,"94":1}}],["explored",{"2":{"94":1,"146":1}}],["explore",{"2":{"28":4,"94":7,"146":4}}],["exploresettings",{"2":{"18":1,"28":1,"94":1,"146":1}}],["exploring",{"0":{"17":1,"76":1},"1":{"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"77":1},"2":{"19":1}}],["explorations",{"2":{"32":1}}],["exploration",{"0":{"28":1},"2":{"11":1,"18":4,"28":2,"29":1,"94":3,"146":1}}],["express",{"2":{"147":1}}],["expresses",{"2":{"51":1}}],["expressions",{"2":{"114":1}}],["expression",{"2":{"35":7,"37":1,"41":1,"94":8}}],["expr",{"2":{"35":2,"94":2,"140":1,"141":3,"142":3}}],["externally",{"2":{"149":1}}],["external",{"2":{"18":1,"94":1,"127":1}}],["extensibility",{"2":{"58":1}}],["extensionally",{"2":{"46":1}}],["extensional",{"2":{"46":1}}],["extension",{"0":{"21":1,"24":1,"26":1,"46":1,"130":1,"133":1},"1":{"131":1,"132":1,"134":1,"135":1},"2":{"40":1,"94":8,"130":1,"131":1,"133":1,"134":1,"138":4,"147":4}}],["extensions",{"0":{"9":1},"1":{"10":1},"2":{"4":1,"131":1,"134":1}}],["extending",{"0":{"138":1},"1":{"139":1,"140":1,"141":1,"142":1,"143":1,"144":1},"2":{"138":1}}],["extend",{"2":{"20":1,"27":1,"94":2,"138":1,"144":1,"146":1}}],["extends",{"2":{"9":3,"21":5,"24":3,"26":3,"27":1,"29":2,"30":4,"94":7,"112":3,"146":3}}],["extended",{"2":{"9":1,"94":19,"110":2,"125":8,"138":1,"146":2}}],["extracted",{"2":{"56":1}}],["extracts",{"2":{"5":1,"35":2,"94":2,"146":1}}],["extract",{"2":{"5":2,"35":1,"94":2,"146":2}}],["extrema",{"0":{"13":1},"1":{"14":1},"2":{"4":1,"13":3,"94":2,"112":1,"121":1,"146":2,"149":3}}],["ecosystem",{"2":{"4":1,"17":1,"19":1,"31":1,"33":1,"81":1,"95":1}}],["especially",{"2":{"97":1}}],["essentially",{"2":{"52":1}}],["essential",{"2":{"4":1,"18":1,"32":1,"138":1}}],["establishes",{"2":{"3":2,"94":2}}],["x``or",{"2":{"112":1}}],["x̅",{"2":{"112":4}}],["xto",{"2":{"94":1,"111":1,"146":1}}],["xn",{"2":{"82":1}}],["x3",{"2":{"60":1,"94":1}}],["x3c",{"2":{"1":4,"7":3,"20":6,"21":9,"23":11,"24":8,"25":12,"26":8,"29":12,"30":3,"37":2,"43":10,"60":1,"62":1,"94":48,"112":1,"121":2,"146":16,"147":70,"149":91}}],["x=x1",{"2":{"82":1}}],["x=6",{"2":{"54":1}}],["x=3",{"2":{"53":1,"54":1}}],["x2",{"2":{"52":1,"60":1,"94":1,"149":2}}],["x26",{"2":{"44":4,"45":4,"94":4}}],["x1+x2≤10",{"2":{"52":1}}],["x1",{"2":{"52":1,"60":1,"94":1,"149":2}}],["x+y≤10",{"2":{"51":1,"52":1,"54":1}}],["x",{"2":{"1":23,"3":8,"11":2,"13":2,"21":10,"24":10,"26":10,"30":4,"34":7,"35":5,"37":28,"39":2,"41":2,"42":8,"43":65,"45":6,"46":1,"48":2,"51":1,"53":1,"60":6,"62":8,"82":6,"94":298,"95":2,"99":3,"102":4,"106":1,"110":6,"111":8,"112":33,"117":8,"121":42,"125":60,"131":1,"134":1,"145":4,"146":33,"147":50,"149":68}}],["xcsp³",{"2":{"40":1}}],["xcsp3",{"0":{"35":1},"2":{"5":3,"7":1,"32":3,"35":1,"56":1,"94":3,"146":1}}],["xcsp",{"2":{"1":3,"3":4,"32":1,"35":2,"37":4,"39":1,"42":1,"43":14,"45":1,"48":1,"60":2,"62":2,"94":21,"146":1}}],["ci",{"2":{"136":1,"147":3}}],["circuit",{"2":{"48":12,"94":12}}],["cn",{"2":{"82":1}}],["c=c1",{"2":{"82":1}}],["c=usual",{"2":{"35":2,"94":2,"146":2}}],["clear",{"2":{"97":1}}],["classic",{"2":{"82":2}}],["closed",{"2":{"37":9,"43":1,"94":9,"145":1}}],["csps",{"2":{"57":1,"95":1}}],["c2",{"2":{"43":1,"145":2}}],["c1",{"2":{"43":1}}],["cblstodo",{"2":{"82":4}}],["cbls",{"0":{"147":1},"2":{"43":34,"81":2,"82":3,"95":3,"97":3,"112":1,"147":49,"149":1}}],["cc",{"2":{"37":2,"94":2}}],["central",{"2":{"31":1}}],["certain",{"2":{"3":4,"62":2,"94":6,"147":2}}],["cplex",{"2":{"95":1}}],["cp",{"0":{"75":1,"79":1,"82":1},"1":{"80":1,"81":1,"82":1},"2":{"31":2,"32":2,"33":2,"49":1,"55":1,"65":1,"67":1,"73":1,"81":1,"82":2,"83":1,"85":1,"93":1,"95":9,"96":4}}],["current",{"2":{"94":2,"114":1,"146":1,"149":1}}],["currently",{"2":{"21":2,"24":1,"26":1,"29":1,"94":1,"147":1}}],["customize",{"2":{"139":1}}],["custom",{"2":{"55":1,"137":4,"140":1,"144":1,"145":1}}],["cumulative",{"2":{"43":9,"62":9,"94":9,"147":3}}],["cut",{"2":{"30":1,"149":1}}],["cairomakie",{"2":{"145":1}}],["case",{"0":{"67":1},"2":{"131":1,"134":1,"137":1,"140":1,"143":1,"144":1}}],["cast",{"2":{"34":1,"82":1,"94":1}}],["call",{"2":{"145":1}}],["called",{"2":{"41":1,"46":1,"82":3,"94":1,"149":2}}],["calls",{"2":{"35":2,"94":2}}],["cardinalityclosed",{"2":{"43":1}}],["cardinalityopen",{"2":{"43":1}}],["cardinality",{"2":{"37":20,"43":9,"94":20}}],["care",{"2":{"35":1,"94":1,"146":1}}],["catch",{"2":{"121":1}}],["categorized",{"2":{"40":1}}],["categories",{"0":{"35":1}}],["cater",{"2":{"18":1}}],["catalog",{"2":{"32":1,"57":1}}],["capacited",{"2":{"149":1}}],["capacity",{"2":{"149":1}}],["capacities",{"2":{"30":1}}],["capabilities",{"2":{"33":1}}],["capability",{"2":{"32":1}}],["can",{"2":{"20":1,"32":1,"37":3,"51":1,"60":1,"70":1,"81":1,"82":3,"83":1,"94":10,"97":1,"114":5,"117":1,"127":1,"131":1,"134":1,"137":3,"138":1,"139":1,"144":1,"146":3,"147":2,"149":1}}],["creating",{"2":{"137":1}}],["creation",{"2":{"32":1,"94":1,"127":1}}],["created",{"2":{"147":1,"149":1}}],["creates",{"2":{"35":1,"94":1,"145":1}}],["create",{"2":{"30":3,"34":1,"94":2,"146":1,"147":3}}],["crucial",{"2":{"18":1,"32":1,"58":1}}],["critical",{"2":{"17":1}}],["choose",{"2":{"149":1}}],["choice",{"2":{"81":1}}],["chuffed",{"2":{"95":1}}],["chemical",{"2":{"30":3}}],["checked",{"2":{"147":1}}],["checkout",{"2":{"137":1}}],["checkres",{"2":{"137":1,"145":2}}],["checks",{"2":{"34":2,"35":2,"45":1,"60":1,"94":6,"147":1}}],["checking",{"2":{"18":1}}],["check",{"2":{"1":3,"3":8,"21":1,"24":1,"26":1,"34":1,"37":7,"39":2,"42":1,"48":1,"60":2,"62":1,"82":1,"94":27,"106":4,"107":4,"108":1,"110":1,"111":1,"114":2,"117":1,"125":2,"126":6,"131":1,"134":1,"136":2,"137":1,"139":1,"142":3,"143":1,"145":1,"146":1,"147":4,"149":10}}],["chair",{"2":{"144":6,"145":2}}],["chairmark",{"2":{"134":1,"137":1,"139":1,"140":1,"141":1,"142":1,"143":1,"145":3}}],["chairmarks",{"0":{"133":1},"1":{"134":1,"135":1},"2":{"133":1,"134":1,"138":1,"139":1,"140":2,"141":1,"142":1,"143":1,"144":2,"145":5}}],["chains",{"2":{"96":1}}],["chapter",{"2":{"83":1}}],["characteristics",{"2":{"18":1,"56":1}}],["change",{"2":{"30":2}}],["changes",{"2":{"18":1,"23":1,"25":1,"30":1,"94":2,"97":1,"146":1}}],["channel",{"2":{"3":9,"43":12,"94":9}}],["c",{"2":{"1":14,"3":15,"21":1,"24":1,"26":1,"34":16,"35":8,"37":19,"39":2,"43":41,"44":4,"45":6,"48":4,"60":10,"62":11,"94":116,"145":2,"146":24,"149":31}}],["cosntriction",{"2":{"149":1}}],["cost",{"2":{"149":19}}],["costs",{"2":{"96":1,"149":20}}],["copied",{"2":{"147":7}}],["copy",{"2":{"147":19}}],["cops",{"2":{"95":1}}],["covering",{"2":{"92":1}}],["cover",{"2":{"90":1}}],["covers",{"2":{"4":1}}],["code",{"0":{"141":1,"142":1,"143":1},"2":{"81":1,"94":5,"131":2,"134":2,"137":2,"141":3,"142":2,"143":1,"145":1,"146":3}}],["could",{"2":{"41":1,"46":1,"53":1}}],["count",{"2":{"37":6,"43":9,"94":95,"99":3,"125":40,"126":4,"127":21,"147":4}}],["counting",{"0":{"37":1},"2":{"94":1,"127":1}}],["counter",{"2":{"15":2,"94":2,"146":2,"149":1}}],["co",{"2":{"37":2,"94":11,"106":5,"107":4}}],["coefficients",{"2":{"37":1,"94":1}}],["coeffs",{"2":{"37":2,"43":1,"94":2}}],["columns",{"2":{"82":1}}],["column",{"2":{"82":1}}],["collect",{"2":{"121":1,"145":4}}],["collection",{"2":{"15":1,"21":2,"23":1,"24":1,"26":1,"28":2,"29":1,"41":1,"42":1,"43":1,"57":1,"82":4,"94":8,"95":1,"111":1,"112":3,"146":5,"147":1,"149":5}}],["collections",{"2":{"13":2,"94":1,"146":1}}],["collaborate",{"2":{"70":1}}],["col",{"2":{"30":1}}],["coordinates",{"2":{"30":1}}],["come",{"2":{"147":1}}],["combinatorial",{"2":{"49":1,"73":1,"96":1,"114":1}}],["commonly",{"2":{"137":1}}],["common",{"2":{"95":1}}],["commons",{"0":{"20":1},"1":{"21":1,"22":1}}],["command",{"2":{"81":1}}],["community",{"0":{"69":1,"70":1},"1":{"70":1,"71":1},"2":{"70":1}}],["communities",{"2":{"50":1}}],["commitment",{"2":{"33":1}}],["compile",{"2":{"94":1,"127":1}}],["compliance",{"2":{"60":2,"94":2,"147":1}}],["complexity",{"2":{"92":1}}],["complex",{"2":{"19":1,"31":1,"32":1,"46":1,"57":1,"64":1,"96":2,"97":1}}],["completely",{"2":{"94":1,"146":1}}],["completed",{"2":{"82":1}}],["complete",{"2":{"18":1,"28":2,"94":6,"146":5}}],["compatibility",{"2":{"56":1}}],["compare",{"2":{"1":1,"34":1,"94":2,"147":2}}],["comparisons",{"0":{"105":1},"1":{"106":1,"107":1,"108":1},"2":{"94":2,"108":1,"127":2}}],["comparison",{"0":{"1":1,"104":1},"1":{"105":1,"106":1,"107":1,"108":1},"2":{"1":1,"5":1,"37":1,"94":10,"104":1,"105":1,"106":1,"108":2,"127":1,"146":5}}],["compositions",{"2":{"94":1}}],["compositionalneworks",{"2":{"110":1}}],["compositionalnetworks",{"0":{"109":1},"1":{"110":1,"111":1},"2":{"94":77,"99":2,"100":1,"102":2,"103":1,"106":1,"108":1,"109":1,"110":6,"111":3,"112":3,"114":10,"125":9,"127":2,"146":26}}],["compositional",{"2":{"94":1,"114":1,"146":1}}],["composition",{"2":{"94":24,"110":1,"146":21}}],["compose",{"2":{"82":1,"94":12,"114":1,"146":8}}],["composed",{"2":{"28":1,"94":3,"146":3}}],["components",{"2":{"32":1,"57":1,"58":1,"94":2,"110":2,"146":2}}],["compounds",{"2":{"30":1}}],["comprehensive",{"2":{"19":1,"33":1,"94":2,"147":1}}],["computational",{"2":{"18":1,"80":1}}],["computes",{"2":{"149":1}}],["computed",{"2":{"94":17,"125":8}}],["compute",{"2":{"13":2,"23":2,"25":1,"30":1,"94":7,"111":1,"112":1,"117":1,"146":4,"147":1,"149":17}}],["core",{"0":{"35":1},"2":{"4":1,"5":3,"7":1,"32":4,"35":1,"40":1,"56":2,"94":3,"146":1}}],["corresponding",{"2":{"30":1,"94":1,"127":1}}],["corresponds",{"2":{"3":2,"94":2}}],["correspondence",{"2":{"3":2,"94":2}}],["config",{"2":{"137":3,"139":1,"141":1,"142":1,"143":1}}],["configuring",{"2":{"147":1}}],["configurable",{"2":{"136":1}}],["configuration",{"0":{"53":1,"54":1},"2":{"30":2,"50":2,"53":2,"54":4,"94":8,"112":4,"141":1,"142":1,"145":1,"146":2,"147":6,"149":3}}],["configurations",{"2":{"11":1,"28":2,"94":7,"112":1,"146":3,"147":4,"149":1}}],["configure",{"2":{"18":1}}],["conflict",{"2":{"94":1,"147":1}}],["conflicted",{"2":{"94":3,"147":1}}],["conflicts",{"2":{"94":8,"147":4}}],["conflicts=nothing",{"2":{"94":1}}],["conduct",{"2":{"93":1}}],["conditions",{"2":{"94":1,"96":1,"127":1,"149":1}}],["condition",{"2":{"3":13,"37":15,"43":2,"51":1,"62":3,"94":31,"147":6}}],["concerned",{"2":{"96":2}}],["concentrations",{"2":{"30":2}}],["concepts",{"0":{"74":1},"2":{"74":1,"89":1}}],["concept",{"2":{"1":10,"3":8,"28":3,"32":2,"34":19,"35":18,"37":15,"39":2,"42":1,"43":59,"44":2,"45":3,"48":2,"60":4,"62":6,"94":95,"146":20,"147":2}}],["converting",{"0":{"144":1}}],["converted",{"2":{"143":1,"147":4}}],["convert",{"2":{"20":1,"27":3,"94":7,"110":2,"114":1,"144":1,"146":1,"147":2}}],["containing",{"2":{"147":1,"149":1}}],["container",{"2":{"94":1,"114":1,"147":1}}],["contains",{"2":{"34":1,"35":2,"82":1,"94":4,"114":1,"146":2}}],["content",{"2":{"83":1}}],["contexts",{"2":{"32":1}}],["context",{"2":{"20":1,"94":1,"114":2,"146":1}}],["contrast",{"2":{"75":1,"97":1}}],["contribute",{"2":{"70":1}}],["contribution",{"0":{"69":1},"1":{"70":1,"71":1}}],["contributions",{"2":{"57":1}}],["contributing",{"2":{"58":1}}],["contiguous",{"2":{"94":12,"125":2,"127":4}}],["contiuous",{"2":{"23":1,"25":1,"94":1,"146":1}}],["continuousdomain",{"2":{"18":1,"23":2,"94":2,"146":1}}],["continuous",{"0":{"23":1},"1":{"24":1},"2":{"17":1,"18":2,"20":2,"23":2,"25":1,"30":1,"55":1,"94":3,"146":3}}],["connecting",{"2":{"9":1,"94":1,"146":1}}],["connection",{"0":{"3":1}}],["connector",{"2":{"9":1,"94":1,"146":1}}],["cons=dictionary",{"2":{"149":1}}],["cons",{"2":{"149":31}}],["consider",{"2":{"51":1}}],["considered",{"2":{"37":2,"94":2,"149":1}}],["considers",{"2":{"7":1}}],["consistent",{"2":{"35":1,"50":1,"94":1}}],["consisempty",{"2":{"9":1,"94":1,"146":1}}],["consin",{"2":{"9":1,"94":1,"146":1}}],["constriction",{"2":{"149":4}}],["constrains",{"2":{"149":1}}],["constrained",{"2":{"147":2,"149":2}}],["constraintlearning",{"0":{"112":1},"2":{"112":27,"129":1}}],["constraintprogrammingextensions",{"2":{"95":1}}],["constraintmodels",{"0":{"30":1,"57":1},"2":{"30":14,"57":1,"95":1}}],["constraintdomains",{"0":{"17":1},"1":{"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1},"2":{"17":1,"18":3,"19":2,"20":6,"23":8,"25":10,"28":3,"29":11,"55":1,"94":35,"95":1,"146":18}}],["constraintcommons",{"0":{"4":1},"1":{"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1},"2":{"4":1,"5":3,"7":6,"9":3,"11":1,"13":1,"15":1,"29":2,"35":2,"58":1,"94":18,"146":12,"147":2}}],["constraint",{"0":{"0":1,"2":1,"19":1,"31":1,"33":1,"36":1,"38":1,"42":1,"47":1,"49":1,"51":1,"52":1,"54":1,"59":1,"61":1,"63":1,"72":1,"73":1,"96":1,"97":1,"122":1},"1":{"1":1,"3":1,"32":1,"33":1,"34":1,"35":1,"37":1,"39":1,"48":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"60":1,"62":1,"64":1,"65":1,"73":1,"74":1,"75":1},"2":{"1":7,"3":24,"4":1,"5":9,"11":1,"17":2,"18":1,"19":2,"21":3,"24":3,"26":3,"28":2,"31":1,"32":10,"33":2,"34":17,"35":24,"37":20,"39":7,"41":5,"42":5,"43":40,"45":4,"46":3,"48":7,"49":2,"50":5,"51":3,"52":5,"54":6,"56":1,"57":1,"60":6,"62":20,"82":7,"83":1,"94":156,"95":5,"96":1,"97":5,"112":4,"114":1,"116":1,"127":3,"146":39,"147":66,"149":33}}],["constraintsolver",{"2":{"95":1}}],["constraints",{"0":{"0":1,"1":1,"2":1,"3":1,"31":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"46":1,"47":1,"48":1,"56":1,"59":1,"60":1,"61":1,"62":1,"64":1,"83":1,"113":1},"1":{"1":1,"3":1,"32":1,"33":1,"34":1,"35":1,"37":1,"39":1,"41":1,"42":2,"43":2,"44":2,"45":2,"46":1,"48":1,"60":1,"62":1},"2":{"1":3,"3":4,"4":1,"5":9,"7":3,"17":1,"31":3,"32":17,"33":5,"34":12,"35":38,"37":4,"39":1,"40":2,"41":3,"42":3,"43":49,"45":3,"46":2,"48":1,"49":1,"56":2,"58":1,"60":2,"62":2,"64":1,"74":1,"81":1,"82":2,"94":75,"95":4,"96":3,"97":2,"112":1,"113":1,"119":1,"146":40,"147":1,"149":23}}],["constructor",{"2":{"30":1,"112":3,"149":1}}],["constructing",{"2":{"30":1,"57":1}}],["construct",{"2":{"20":3,"23":3,"25":3,"29":1,"30":3,"94":6,"146":5,"149":3}}],["constant",{"2":{"5":1,"34":1,"35":1,"94":3,"146":2}}],["o",{"2":{"112":1,"149":16}}],["objs=dictionary",{"2":{"149":1}}],["objs",{"2":{"149":7}}],["objectives",{"2":{"149":10}}],["objective",{"2":{"82":1,"147":4,"149":24}}],["observable",{"2":{"30":1}}],["own",{"2":{"81":1,"82":1,"149":1}}],["occurs",{"2":{"37":2,"43":1,"94":2}}],["occurrences",{"2":{"37":7,"94":7,"147":4}}],["output",{"2":{"94":2,"112":1,"141":1,"142":1,"143":1,"144":1,"146":2}}],["outputs",{"2":{"34":1,"94":1,"129":3,"146":1}}],["out",{"2":{"82":1}}],["outlined",{"2":{"32":1}}],["our",{"2":{"11":1,"52":1,"82":2}}],["others",{"2":{"95":1}}],["other",{"0":{"75":1},"2":{"30":1,"75":1,"81":1,"82":4,"95":1,"96":1,"97":2,"131":1,"134":1,"137":1,"144":1,"149":2}}],["otherwise",{"2":{"1":3,"3":4,"7":1,"21":1,"24":1,"26":1,"29":1,"34":3,"37":4,"39":1,"48":1,"54":1,"62":2,"94":28,"146":3,"147":4,"149":1}}],["overloading",{"2":{"143":1}}],["overloaded",{"2":{"139":1,"140":1,"141":1,"142":1,"143":1,"144":2}}],["overlap",{"2":{"43":6,"62":21,"94":21,"147":1}}],["overhead",{"2":{"132":2}}],["oversampling",{"2":{"112":1,"121":6}}],["oversample",{"2":{"11":2,"94":2,"121":1,"146":2}}],["overview",{"0":{"89":1},"2":{"83":1}}],["overviews",{"0":{"77":1}}],["over",{"2":{"13":1,"28":1,"32":1,"34":1,"35":1,"45":2,"82":2,"94":7,"111":1,"112":1,"136":1,"146":4,"149":1}}],["once",{"2":{"81":1}}],["ongoing",{"2":{"62":2,"94":2}}],["ones",{"2":{"55":1}}],["one",{"2":{"5":2,"29":1,"32":1,"35":1,"82":3,"94":16,"100":1,"103":1,"108":1,"110":2,"112":2,"114":2,"116":1,"117":4,"121":1,"137":1,"146":10,"147":1,"149":3}}],["on",{"0":{"35":1,"48":1,"92":1},"2":{"5":3,"17":1,"18":1,"20":1,"28":1,"29":1,"30":1,"34":1,"35":3,"39":2,"41":1,"42":2,"45":1,"65":1,"81":1,"94":15,"95":1,"96":3,"112":3,"117":1,"123":1,"127":2,"130":1,"133":1,"137":1,"142":1,"146":4,"147":4,"149":2}}],["only",{"2":{"4":1,"37":1,"82":1,"94":6,"100":1,"103":1,"108":1,"114":2,"119":1,"146":3,"147":2,"149":1}}],["originating",{"2":{"94":1,"147":2}}],["origins",{"2":{"62":6,"94":6}}],["oriented",{"2":{"4":1}}],["org",{"2":{"35":1,"94":1,"146":1}}],["organizations",{"2":{"96":1}}],["organization",{"2":{"32":1,"77":1,"83":1}}],["or",{"0":{"54":1},"2":{"4":2,"5":4,"9":1,"15":1,"18":4,"19":1,"20":2,"21":1,"23":1,"24":1,"25":1,"26":1,"30":1,"33":1,"34":1,"35":2,"37":1,"41":1,"46":2,"50":1,"51":1,"54":2,"55":1,"62":4,"71":1,"81":1,"82":1,"94":28,"95":2,"96":4,"97":2,"117":1,"127":5,"129":3,"137":7,"146":9,"147":2,"149":6}}],["order",{"2":{"1":6,"30":1,"39":2,"94":9,"127":1,"147":3}}],["ordered",{"2":{"1":6,"43":6,"94":8,"114":1,"147":2,"149":1}}],["opt",{"2":{"147":2}}],["optmizers",{"2":{"112":1}}],["optimisation",{"2":{"95":1}}],["optimizing",{"2":{"96":1,"149":7}}],["optimization",{"0":{"65":1,"66":1,"75":1,"79":1,"87":1,"88":1},"1":{"67":1,"68":1,"80":1,"81":1,"82":1,"88":1,"89":1,"90":1},"2":{"32":1,"50":1,"57":1,"67":1,"68":1,"80":1,"83":1,"85":1,"88":2,"90":1,"96":2,"149":2}}],["optimized",{"2":{"147":1}}],["optimizers",{"0":{"120":1},"1":{"121":1,"122":1},"2":{"112":1}}],["optimizer",{"2":{"43":14,"82":1,"95":1,"112":6,"121":8,"147":59,"149":3}}],["optimize",{"2":{"30":1,"43":14,"94":1,"96":1,"112":11,"146":1,"147":4}}],["option",{"2":{"137":4,"147":1}}],["option2",{"2":{"131":1,"134":1,"137":1}}],["option1",{"2":{"131":1,"134":1,"137":1}}],["optionally",{"2":{"34":2,"35":1,"94":2,"146":2}}],["optional",{"2":{"28":1,"30":1,"94":10,"112":1,"117":1,"137":1,"146":10,"149":2}}],["options",{"0":{"132":1,"135":1,"139":1},"2":{"18":1,"112":2,"132":1,"135":1,"137":3,"139":3,"147":5,"149":34}}],["open",{"2":{"37":6,"43":1,"94":6,"123":1,"145":1}}],["operate",{"2":{"94":1,"127":1}}],["operational",{"0":{"96":1},"2":{"96":1}}],["operation",{"2":{"94":5,"112":2,"114":5}}],["operations",{"0":{"102":1},"2":{"9":1,"24":2,"26":2,"94":21,"100":1,"103":2,"108":1,"112":3,"114":13,"127":1,"146":7}}],["operators",{"2":{"29":1,"94":1}}],["operator",{"2":{"1":3,"5":2,"37":1,"94":6}}],["opparameterdomain",{"2":{"29":1,"94":1}}],["op",{"2":{"3":8,"5":1,"37":10,"43":27,"48":4,"62":4,"94":29,"114":2,"147":9}}],["op==",{"2":{"37":1,"94":1}}],["op===",{"2":{"3":2,"37":4,"94":6}}],["op=>",{"2":{"1":2,"94":2}}],["op=≥",{"2":{"1":2,"37":1,"43":1,"94":3}}],["op=≤",{"2":{"1":6,"37":3,"43":1,"94":9}}],["op=",{"2":{"1":6,"43":1,"94":6}}],["op=+",{"2":{"1":2,"94":2}}],["official",{"2":{"81":1}}],["offer",{"2":{"32":1}}],["offering",{"2":{"19":1,"32":1,"33":1}}],["offers",{"2":{"18":1,"33":1,"57":1}}],["often",{"2":{"48":2,"62":6,"94":8,"96":1,"137":1}}],["of",{"0":{"99":1,"102":1,"105":1,"124":1},"1":{"106":1,"107":1,"108":1,"125":1,"126":1,"127":1},"2":{"1":14,"3":17,"4":1,"5":12,"7":3,"11":2,"13":4,"17":3,"18":8,"19":4,"20":3,"21":5,"23":7,"24":10,"25":7,"26":11,"28":14,"29":2,"30":33,"31":1,"32":13,"33":1,"34":18,"35":23,"37":35,"39":6,"45":3,"46":4,"48":8,"50":2,"51":1,"52":3,"53":2,"54":1,"55":1,"56":3,"57":1,"58":3,"60":10,"62":14,"68":1,"71":1,"80":2,"81":1,"82":11,"83":2,"86":1,"88":2,"90":1,"93":1,"94":298,"95":7,"96":2,"97":4,"99":2,"100":2,"103":2,"108":2,"110":6,"111":3,"112":14,"114":15,"117":3,"123":3,"125":13,"127":8,"129":2,"136":1,"137":15,"140":1,"141":1,"142":1,"143":1,"144":1,"145":2,"146":96,"147":48,"149":78}}],["fetch",{"2":{"149":1}}],["feasible",{"2":{"82":2,"97":1}}],["features",{"0":{"18":1,"32":1,"116":1},"2":{"32":1,"56":1,"77":1,"136":1}}],["feature",{"2":{"4":1,"18":1,"32":1,"138":1}}],["f2",{"2":{"149":2}}],["fraction",{"2":{"144":1}}],["framework",{"2":{"49":1,"58":1,"95":1}}],["front",{"2":{"123":1}}],["from",{"0":{"60":1,"68":1,"75":1},"2":{"21":4,"24":2,"26":3,"29":2,"30":2,"32":2,"35":1,"45":1,"52":1,"56":1,"60":1,"68":1,"82":2,"83":1,"94":14,"96":1,"112":1,"119":1,"127":2,"136":1,"141":1,"142":1,"143":1,"144":1,"145":4,"146":2,"147":6,"149":17}}],["friendly",{"2":{"33":1,"56":1}}],["free",{"2":{"30":1}}],["finds",{"2":{"129":1}}],["find",{"2":{"97":5,"149":2}}],["finding",{"2":{"95":1,"96":1,"97":2}}],["finishes",{"2":{"62":8,"94":8}}],["finish",{"2":{"60":2,"94":2}}],["filter",{"2":{"121":1}}],["file",{"2":{"94":7,"114":1,"146":7}}],["filled",{"2":{"82":1}}],["fill",{"2":{"30":4,"82":1}}],["fields",{"2":{"34":1,"94":1,"146":1,"147":1}}],["first",{"0":{"82":1},"2":{"3":2,"34":1,"35":3,"43":1,"60":1,"62":8,"82":1,"94":15,"112":1,"121":4,"129":1,"137":4,"147":1,"149":1}}],["flatten",{"2":{"121":1}}],["flexibility",{"2":{"32":2,"81":1}}],["flexible",{"2":{"18":1,"28":2,"32":1,"33":1,"46":1,"49":1,"94":5,"127":1,"146":3}}],["float64",{"2":{"34":2,"94":2,"121":1,"147":1,"149":5}}],["flows",{"2":{"30":1}}],["flow",{"2":{"30":1}}],["floor",{"2":{"28":1,"94":1,"146":1}}],["f",{"2":{"7":1,"11":2,"32":1,"34":3,"94":16,"110":6,"146":14,"147":40,"149":7}}],["full",{"0":{"94":1}}],["func",{"2":{"149":6}}],["funcs",{"2":{"94":2,"110":2,"146":2}}],["functioning",{"2":{"58":1}}],["functionalities",{"0":{"18":1,"32":1},"2":{"18":1,"19":1,"32":1,"58":1}}],["functions",{"2":{"4":1,"18":1,"30":1,"34":2,"94":8,"108":1,"114":3,"127":4,"138":1,"144":2,"146":2}}],["function",{"2":{"1":3,"3":4,"5":2,"7":2,"9":3,"11":2,"13":1,"15":2,"20":4,"21":5,"23":6,"24":4,"25":7,"26":5,"27":2,"28":3,"29":4,"30":1,"32":2,"34":29,"35":14,"37":4,"39":1,"41":1,"45":2,"48":1,"60":3,"62":2,"82":1,"94":67,"99":2,"100":1,"102":2,"103":1,"106":2,"108":1,"110":12,"111":3,"112":4,"114":9,"116":2,"117":3,"119":1,"121":7,"123":1,"125":10,"127":6,"129":1,"144":1,"146":31,"147":30,"149":18}}],["fundamentals",{"2":{"90":1}}],["fundamental",{"2":{"45":1,"94":1,"147":1}}],["further",{"2":{"30":1,"81":1}}],["future",{"0":{"71":1},"2":{"5":1,"28":1,"94":1,"146":1}}],["found",{"2":{"114":1}}],["foundation",{"2":{"18":1}}],["foundational",{"2":{"4":1}}],["follwing",{"2":{"136":1}}],["following",{"2":{"20":1,"32":1,"34":1,"37":1,"50":1,"94":8,"110":2,"117":1,"127":1,"131":1,"134":1,"145":1,"146":6,"149":1}}],["follows",{"2":{"11":1,"82":1,"137":1,"147":1}}],["follow",{"2":{"5":1}}],["folder",{"2":{"145":2}}],["fold",{"2":{"95":1,"145":1}}],["focuses",{"2":{"95":1,"96":2}}],["focusing",{"2":{"17":1}}],["forbidden",{"2":{"30":1,"94":1,"147":2}}],["forwarded",{"2":{"149":1}}],["forward",{"2":{"30":2,"82":1}}],["formulating",{"2":{"68":1}}],["formulation",{"2":{"18":1}}],["formal",{"2":{"51":1,"149":1}}],["formatted",{"2":{"94":2,"110":1,"146":1}}],["format",{"2":{"5":1,"20":1,"30":9,"94":3,"117":1,"146":2}}],["form",{"2":{"48":2,"94":2}}],["foreseeable",{"2":{"5":1}}],["for",{"0":{"44":1,"79":1,"114":1,"117":1},"1":{"80":1,"81":1,"82":1},"2":{"3":4,"5":1,"7":3,"9":1,"15":1,"17":1,"18":13,"19":3,"20":3,"21":3,"23":2,"24":3,"25":2,"26":3,"27":2,"28":1,"29":2,"30":12,"31":1,"32":6,"33":4,"34":5,"35":4,"41":1,"42":1,"43":6,"46":1,"49":2,"53":1,"54":1,"57":1,"58":1,"62":6,"71":1,"78":1,"80":1,"81":3,"82":2,"85":1,"94":53,"95":5,"96":1,"97":3,"106":9,"107":8,"108":2,"109":1,"110":4,"111":2,"112":8,"114":4,"116":1,"117":2,"119":1,"121":2,"125":5,"126":12,"127":5,"128":1,"129":1,"136":3,"137":5,"138":2,"139":1,"141":2,"142":1,"144":5,"145":5,"146":12,"147":14,"149":18}}],["faster",{"2":{"149":1}}],["fails",{"2":{"50":1}}],["facilities",{"2":{"30":6}}],["facilitating",{"2":{"18":1,"33":1}}],["facilitates",{"2":{"18":1,"94":1,"127":1}}],["facilitate",{"2":{"4":1,"31":1}}],["fake",{"2":{"29":1,"94":1}}],["fakeautomaton",{"2":{"7":2,"18":1,"21":2,"24":1,"26":1,"29":5,"94":5}}],["fallback",{"2":{"20":1,"21":2,"23":1,"24":2,"25":1,"26":2,"94":4,"146":1}}],["false",{"2":{"1":3,"3":10,"7":1,"9":1,"11":1,"21":2,"24":2,"26":2,"29":1,"34":3,"35":1,"37":4,"39":1,"43":18,"48":1,"54":1,"62":2,"94":31,"108":1,"121":3,"146":5,"147":4,"149":2}}],["fa",{"2":{"7":1,"21":4,"24":2,"26":2,"29":3,"94":3}}],["vov",{"2":{"147":5}}],["vf",{"2":{"145":5}}],["v",{"2":{"94":3,"110":3,"129":7,"145":5,"146":2,"147":12,"149":3}}],["v3",{"2":{"43":3}}],["v2",{"2":{"43":3}}],["v1",{"2":{"43":3}}],["vs",{"0":{"96":1},"2":{"34":3,"94":3}}],["vi",{"2":{"147":3}}],["via",{"2":{"136":1,"138":1,"139":1,"143":1}}],["viable",{"2":{"94":6,"114":5,"146":1}}],["visuals",{"2":{"145":4}}],["visualization",{"2":{"136":1,"137":1}}],["visual",{"2":{"81":1}}],["vision",{"2":{"71":1}}],["violated",{"2":{"54":2}}],["violates",{"2":{"54":1}}],["violation",{"0":{"54":1},"2":{"50":1}}],["vital",{"2":{"32":1}}],["vice",{"2":{"3":2,"94":3,"127":1}}],["vec",{"2":{"82":1}}],["vectorofvariables",{"2":{"147":3}}],["vectors",{"2":{"94":3,"102":2,"125":1,"145":1}}],["vector",{"2":{"1":6,"5":5,"7":1,"20":1,"21":4,"23":4,"24":3,"25":1,"26":3,"28":1,"29":1,"35":2,"37":9,"45":1,"60":2,"94":63,"99":1,"102":2,"110":2,"117":2,"121":5,"125":8,"127":1,"129":2,"137":2,"145":1,"146":11,"147":17,"149":1}}],["verbose",{"2":{"149":4}}],["verbosity",{"2":{"147":1,"149":1}}],["very",{"2":{"96":1}}],["verifies",{"2":{"60":2,"94":2,"147":1}}],["versionnumber",{"2":{"129":1,"137":1}}],["versions",{"2":{"129":3,"137":4,"145":1}}],["version",{"2":{"35":1,"81":1,"94":2,"127":1,"129":3,"137":5,"147":1}}],["versatile",{"0":{"56":1},"2":{"94":2,"147":1}}],["versatility",{"2":{"19":1}}],["versa",{"2":{"3":2,"94":3,"127":1}}],["var",{"2":{"94":20,"149":12}}],["variety",{"2":{"97":1}}],["varies",{"2":{"50":1}}],["various",{"0":{"120":1},"1":{"121":1,"122":1},"2":{"13":1,"18":1,"20":1,"32":1,"55":1,"65":1,"81":1,"92":1,"94":2,"97":1,"127":1,"136":2,"146":1}}],["variant",{"2":{"62":2,"94":2}}],["variants",{"2":{"1":3,"3":4,"37":4,"39":1,"45":1,"48":1,"60":2,"62":2,"82":1,"94":19}}],["variableconstrainedoncreation",{"2":{"147":1}}],["variableinfo",{"2":{"147":2}}],["variable",{"0":{"17":1},"1":{"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1},"2":{"3":6,"5":2,"17":1,"18":1,"19":1,"21":3,"24":3,"26":3,"32":1,"34":1,"41":2,"43":32,"46":2,"54":1,"82":2,"94":11,"146":2,"147":9,"149":40}}],["variables",{"0":{"55":1},"2":{"3":8,"29":1,"37":8,"39":2,"45":1,"46":1,"48":2,"50":3,"51":3,"52":3,"53":3,"55":1,"60":1,"74":1,"82":3,"94":32,"95":1,"111":1,"116":2,"146":4,"147":9,"149":26}}],["vars",{"2":{"5":2,"39":2,"43":9,"62":15,"94":51,"106":3,"147":20,"149":24}}],["vars=dictionary",{"2":{"149":1}}],["vars=ones",{"2":{"37":2,"94":2}}],["vars=nothing",{"2":{"1":10,"94":10}}],["vars=",{"2":{"1":4,"39":2,"94":11}}],["vars=zeros",{"2":{"1":2,"94":2}}],["valparameterdomain",{"2":{"29":1,"94":1}}],["validity",{"2":{"45":1,"94":1,"147":1}}],["valid",{"2":{"20":1,"60":1,"94":10,"96":2,"116":2,"117":3,"146":5,"147":7}}],["val=3",{"2":{"37":1,"43":1,"94":1}}],["val=2",{"2":{"3":1,"37":3,"43":3,"94":4}}],["val=15",{"2":{"37":2,"43":2,"94":2}}],["val=1",{"2":{"1":2,"3":1,"37":1,"43":1,"94":4}}],["val=nothing",{"2":{"1":2,"3":2,"94":4}}],["value2",{"2":{"131":1,"134":1,"137":1}}],["value1",{"2":{"131":1,"134":1,"137":1}}],["valued",{"2":{"60":1,"94":1,"147":1}}],["value",{"2":{"1":1,"3":13,"5":1,"21":8,"24":7,"25":2,"26":10,"29":2,"30":1,"34":3,"35":5,"37":5,"43":32,"48":4,"60":3,"82":3,"94":59,"108":2,"114":1,"117":1,"127":8,"137":1,"146":13,"147":15,"149":20}}],["values",{"2":{"1":13,"3":4,"5":1,"20":2,"23":2,"25":4,"29":3,"30":4,"34":2,"35":1,"37":24,"39":6,"46":2,"48":3,"50":1,"53":1,"60":2,"82":2,"94":67,"127":5,"132":1,"135":1,"137":1,"146":4,"147":12,"149":11}}],["val",{"0":{"107":1,"126":1},"2":{"1":3,"3":8,"5":1,"15":2,"20":1,"30":4,"37":21,"43":39,"48":4,"62":6,"94":124,"106":3,"107":3,"126":2,"127":8,"139":2,"140":2,"141":2,"142":2,"143":2,"145":2,"146":3,"147":16,"149":8}}],["valsparameterdomain",{"2":{"29":1,"94":1}}],["vals=nothing",{"2":{"35":2,"94":2,"146":1}}],["vals=",{"2":{"1":2,"37":13,"43":7,"94":15}}],["vals",{"2":{"1":2,"5":2,"37":18,"43":20,"94":24,"125":2,"127":2,"147":7}}],["t2",{"2":{"147":4}}],["t1",{"2":{"147":3}}],["tbw",{"2":{"112":4,"149":2}}],["typically",{"2":{"96":1}}],["typeof",{"2":{"147":1}}],["typemax",{"2":{"121":1,"149":1}}],["type",{"2":{"7":4,"18":2,"20":6,"23":2,"25":5,"27":1,"28":1,"29":9,"30":7,"32":1,"34":1,"94":34,"97":2,"112":7,"114":1,"119":2,"127":1,"146":13,"147":55,"149":17}}],["types",{"2":{"4":1,"18":3,"40":1,"46":1,"55":1,"88":1,"94":2,"127":2,"149":8}}],["tutorial",{"0":{"145":1}}],["tutorials",{"0":{"91":1,"92":1},"1":{"92":1,"93":1},"2":{"92":1}}],["tuples",{"2":{"46":2,"94":6,"147":4}}],["tuple",{"2":{"3":7,"20":5,"23":5,"25":5,"30":2,"62":1,"94":17,"137":1,"146":5,"147":9}}],["tips",{"2":{"85":1}}],["timelimitsec",{"2":{"147":1}}],["timestamps",{"2":{"149":1}}],["times",{"2":{"37":3,"43":1,"94":3,"144":3,"145":2}}],["time",{"2":{"30":1,"62":8,"94":10,"97":1,"114":2,"127":1,"132":2,"144":1,"147":1,"149":27}}],["temporary",{"2":{"149":1}}],["templates",{"2":{"57":1}}],["text",{"2":{"98":1,"101":1,"104":1,"123":1}}],["teach",{"2":{"86":1}}],["techniques",{"0":{"63":1,"75":1},"1":{"64":1,"65":1},"2":{"96":2,"97":2}}],["terminology",{"0":{"50":1,"74":1},"1":{"51":1,"52":1,"53":1,"54":1},"2":{"50":1}}],["tests",{"2":{"137":1}}],["tested",{"0":{"142":1},"2":{"137":1,"141":1}}],["test",{"0":{"44":1},"2":{"112":2,"121":6,"136":1,"137":2}}],["testing",{"0":{"143":1},"2":{"34":1,"94":1,"112":1,"136":1,"139":1,"142":1,"143":1,"145":2}}],["tendency",{"2":{"30":1}}],["tries",{"2":{"97":1}}],["tr",{"2":{"94":58,"110":3,"125":29,"126":6}}],["try",{"2":{"50":1,"81":1,"97":1,"121":1}}],["track",{"2":{"132":1,"135":1,"139":1}}],["train",{"2":{"94":3,"112":2,"119":3,"121":5,"146":2}}],["training",{"2":{"94":1,"112":7,"146":1}}],["transpose",{"2":{"121":3}}],["transportation",{"2":{"96":1}}],["transported",{"2":{"30":1}}],["transform",{"2":{"94":1,"117":1,"146":1}}],["transforms",{"2":{"94":4,"127":4}}],["transformations",{"0":{"123":1,"124":1},"1":{"124":1,"125":2,"126":2,"127":2},"2":{"94":16,"108":1,"124":1,"127":15,"146":3}}],["transformation",{"2":{"94":12,"123":3,"127":8,"146":4}}],["traditional",{"2":{"32":1}}],["true",{"2":{"1":3,"3":6,"7":3,"9":1,"11":1,"21":2,"24":2,"26":2,"29":1,"34":2,"35":1,"37":4,"39":1,"43":21,"44":2,"48":1,"54":1,"62":2,"94":28,"112":1,"114":1,"135":1,"139":1,"145":1,"146":4,"147":6,"149":3}}],["tag",{"2":{"137":1}}],["tags",{"2":{"137":2,"145":1}}],["tabu",{"2":{"89":1,"149":46}}],["table",{"0":{"144":1},"2":{"35":4,"94":4,"121":1,"143":2,"144":4,"146":4}}],["task",{"2":{"62":16,"94":16}}],["tasks",{"2":{"62":18,"94":18,"147":1,"149":1}}],["taken",{"2":{"145":1}}],["take",{"2":{"35":1,"82":1,"94":1,"97":1,"137":1,"146":1}}],["takes",{"2":{"34":1,"35":1,"39":2,"94":4,"147":1}}],["tailoring",{"2":{"18":1,"32":1}}],["targeted",{"2":{"28":1,"81":1,"94":2,"146":2,"149":3}}],["target",{"2":{"5":1,"94":1}}],["t",{"2":{"7":2,"20":8,"23":11,"25":14,"29":5,"30":10,"34":1,"35":2,"60":2,"94":29,"137":1,"146":12,"147":25,"149":7}}],["two",{"2":{"3":2,"7":1,"20":1,"23":3,"25":3,"30":1,"35":1,"40":1,"45":1,"46":1,"51":1,"62":4,"94":11,"95":1,"146":3,"147":1}}],["th",{"2":{"94":1,"114":1}}],["threads",{"2":{"132":1,"135":1,"137":2,"139":1,"149":12}}],["threshold",{"2":{"94":1,"127":1}}],["throw",{"2":{"121":1}}],["through",{"0":{"57":1},"2":{"32":1,"41":3,"43":2,"55":1,"68":1,"81":3,"94":3,"99":1,"102":2,"112":2}}],["than",{"2":{"34":1,"35":1,"41":1,"54":1,"57":1,"94":11,"125":5,"127":1,"147":1}}],["that",{"2":{"1":7,"3":14,"4":1,"5":2,"17":1,"20":2,"21":2,"23":1,"24":2,"25":3,"26":2,"28":1,"30":2,"32":1,"34":11,"35":2,"37":11,"39":4,"41":4,"42":2,"43":5,"45":2,"46":4,"48":2,"51":3,"60":5,"62":12,"81":1,"82":6,"83":1,"94":102,"95":3,"96":4,"97":5,"100":1,"103":1,"108":2,"110":2,"112":3,"114":3,"116":1,"127":3,"136":1,"138":1,"144":1,"146":16,"147":33,"149":10}}],["those",{"2":{"32":1,"114":1}}],["thus",{"2":{"30":1}}],["this",{"2":{"3":2,"5":1,"17":1,"18":1,"19":1,"28":1,"30":1,"31":1,"32":3,"34":1,"35":4,"42":1,"43":4,"45":1,"50":1,"51":1,"54":1,"57":1,"60":2,"62":2,"82":2,"94":17,"114":2,"127":1,"130":1,"131":1,"132":1,"133":1,"134":1,"135":1,"137":2,"138":1,"139":2,"140":2,"141":2,"142":1,"145":2,"146":2,"147":8,"149":3}}],["third",{"2":{"3":2,"94":2}}],["theory",{"0":{"68":1}}],["them",{"2":{"45":1,"94":1,"95":1,"147":1,"149":1}}],["their",{"0":{"64":1},"2":{"32":1,"51":1,"53":1,"55":1,"65":1,"81":1,"82":1,"94":1,"127":1,"132":1,"135":1,"136":1,"139":1}}],["they",{"2":{"30":1,"41":3,"46":3,"64":1,"70":1,"95":1,"96":1,"97":1}}],["there",{"2":{"30":3,"35":1,"60":1,"94":2,"138":1,"144":1,"147":1}}],["thereby",{"2":{"17":1}}],["then",{"2":{"28":1,"35":2,"42":1,"52":1,"94":3,"146":1,"149":2}}],["these",{"2":{"5":1,"18":1,"32":3,"35":1,"41":1,"46":2,"94":1,"97":1,"144":1}}],["the",{"0":{"70":1,"139":1,"144":1},"2":{"1":10,"3":25,"4":3,"5":17,"7":2,"9":3,"11":1,"13":5,"15":2,"17":4,"18":14,"19":5,"20":8,"21":4,"23":8,"24":8,"25":6,"26":9,"28":13,"29":5,"30":50,"31":2,"32":19,"33":3,"34":46,"35":67,"37":41,"39":3,"40":1,"41":6,"42":9,"43":12,"45":6,"46":4,"48":16,"50":3,"51":2,"52":5,"53":2,"54":7,"56":1,"57":2,"58":2,"60":17,"62":33,"68":1,"70":1,"71":1,"77":1,"80":1,"81":9,"82":13,"83":3,"86":1,"90":1,"93":1,"94":474,"95":4,"96":3,"97":3,"98":1,"99":1,"100":3,"101":1,"103":3,"104":1,"105":2,"106":1,"108":4,"110":4,"111":2,"112":17,"114":19,"116":1,"117":1,"123":5,"124":2,"125":21,"127":12,"129":5,"131":3,"134":3,"136":2,"137":19,"138":3,"139":2,"140":2,"141":6,"142":5,"143":5,"144":3,"145":10,"146":139,"147":155,"149":120}}],["tolerance",{"2":{"132":4}}],["too",{"2":{"97":1}}],["tool",{"2":{"31":1}}],["toolkit",{"2":{"19":1}}],["tools",{"0":{"34":1,"49":1},"1":{"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1},"2":{"18":1,"33":2}}],["towards",{"2":{"94":1,"146":1}}],["topics",{"2":{"92":1}}],["todo",{"2":{"34":1,"42":1,"43":17,"81":1,"82":4,"94":1,"149":1}}],["total",{"2":{"24":1,"26":1,"94":1}}],["to",{"0":{"21":1,"24":1,"26":1,"49":1,"68":1,"83":1,"115":1,"142":1},"1":{"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"116":1},"2":{"1":9,"3":12,"4":2,"5":2,"7":1,"9":1,"11":1,"13":1,"15":1,"18":6,"20":4,"21":6,"23":3,"24":4,"25":1,"26":4,"28":3,"29":18,"30":16,"31":2,"32":4,"33":2,"34":17,"35":23,"37":13,"39":2,"41":1,"42":6,"43":18,"46":1,"48":3,"50":4,"52":2,"53":1,"54":2,"56":1,"57":1,"58":3,"60":4,"62":2,"70":1,"81":4,"82":6,"83":1,"86":1,"93":1,"94":188,"95":3,"96":5,"97":9,"98":1,"101":1,"102":2,"104":1,"110":6,"111":1,"112":12,"114":3,"115":1,"116":1,"117":1,"119":1,"121":1,"123":2,"125":16,"127":7,"130":1,"131":1,"132":1,"133":1,"134":1,"135":1,"136":3,"137":10,"138":3,"139":4,"140":2,"141":3,"142":2,"143":3,"144":5,"145":3,"146":46,"147":36,"149":49}}],["i+1",{"2":{"82":1}}],["iconic",{"2":{"82":1}}],["icnlocalsearchoptimizer",{"2":{"112":3}}],["icngeneticoptimizer",{"2":{"112":4}}],["icnoptimizer",{"2":{"112":3}}],["icnconfig",{"2":{"112":4}}],["icns",{"2":{"98":1,"101":1,"104":1,"112":1,"114":1,"123":1}}],["icn=icn",{"2":{"94":1,"146":1}}],["icn",{"0":{"114":1},"2":{"24":2,"26":2,"34":1,"94":36,"100":1,"103":1,"108":1,"112":12,"114":7,"127":1,"146":23}}],["ignores",{"2":{"62":1,"94":1}}],["ignore",{"2":{"62":1,"94":1}}],["ignored",{"2":{"43":1,"62":2,"94":2}}],["illustrate",{"2":{"42":1}}],["io",{"2":{"30":2}}],["impossible",{"2":{"97":1}}],["importance",{"2":{"83":1,"93":1}}],["improve",{"2":{"86":1,"96":1,"97":1}}],["improvement",{"0":{"86":1},"2":{"149":1}}],["improving",{"2":{"32":1,"149":1}}],["impact",{"2":{"65":1}}],["implemented",{"2":{"95":1}}],["implements",{"2":{"56":1}}],["implement",{"2":{"7":1,"20":1,"29":1,"94":2,"146":1}}],["implementations",{"2":{"18":1}}],["implementation",{"2":{"7":2,"94":2,"123":1,"146":2}}],["immutable",{"2":{"25":1,"94":1,"146":1}}],["i`",{"2":{"21":1,"24":1,"26":1,"94":1}}],["i",{"2":{"21":10,"23":7,"24":8,"25":3,"26":8,"29":2,"48":2,"62":4,"82":4,"94":64,"110":2,"111":1,"114":2,"121":2,"125":17,"144":8,"145":4,"146":3,"147":2,"149":1}}],["identity",{"2":{"94":14,"106":4,"125":6,"127":4}}],["identified",{"2":{"34":1,"94":1}}],["ids",{"2":{"29":1,"94":1}}],["idparameterdomain",{"2":{"29":1,"94":1}}],["id",{"2":{"5":1,"30":2,"43":3,"94":1,"147":2,"149":13}}],["id=3",{"2":{"3":1,"43":1,"94":1}}],["id=1",{"2":{"3":3,"43":3,"94":3}}],["id=nothing",{"2":{"3":4,"94":4}}],["iterate",{"2":{"149":1}}],["iterators",{"2":{"121":1}}],["iterations",{"2":{"149":3}}],["iteration",{"2":{"94":2,"146":2,"149":8}}],["iter=100",{"2":{"94":2,"146":2}}],["iter",{"2":{"94":8,"112":3,"146":8,"149":1}}],["itself",{"2":{"94":1,"146":1}}],["its",{"2":{"23":1,"25":1,"30":1,"32":2,"34":1,"58":1,"73":1,"77":1,"80":1,"81":2,"82":1,"83":1,"90":1,"94":5,"110":2,"137":1,"146":3,"149":2}}],["ith",{"2":{"21":2,"24":1,"26":1,"29":1,"94":1}}],["itvls",{"2":{"23":3,"94":3}}],["itv",{"2":{"20":2,"21":8,"23":2,"24":7,"25":2,"26":7,"29":3,"94":9,"145":2,"146":2}}],["it",{"2":{"4":2,"20":1,"29":8,"31":1,"34":9,"35":25,"37":2,"41":1,"42":1,"43":1,"45":2,"48":2,"51":1,"52":1,"53":1,"54":1,"56":2,"58":1,"60":1,"62":6,"81":1,"82":4,"94":65,"95":2,"97":2,"105":1,"112":1,"114":1,"117":1,"124":1,"127":1,"129":1,"136":1,"137":1,"138":1,"139":2,"140":1,"142":1,"145":2,"146":6,"147":7,"149":6}}],["isa",{"2":{"121":1}}],["issue",{"0":{"44":1},"2":{"123":1}}],["isempty",{"2":{"9":1,"21":3,"94":4,"146":1}}],["is",{"0":{"73":1},"2":{"3":10,"4":1,"5":3,"9":2,"18":2,"20":2,"21":5,"23":3,"24":4,"26":4,"28":3,"29":9,"30":9,"31":2,"32":3,"34":7,"35":14,"37":15,"39":3,"41":3,"42":1,"43":3,"45":2,"48":5,"49":1,"51":1,"52":1,"53":1,"54":5,"58":1,"60":9,"62":10,"81":1,"82":6,"94":157,"95":5,"96":5,"97":4,"100":1,"103":1,"108":2,"110":1,"112":5,"114":7,"117":4,"119":1,"125":16,"127":4,"136":1,"137":2,"138":1,"140":1,"143":2,"145":3,"146":28,"147":32,"149":17}}],["iff",{"2":{"94":2,"108":1,"127":1,"146":2}}],["if",{"2":{"1":3,"3":4,"7":3,"20":1,"21":10,"24":9,"26":9,"28":2,"29":2,"34":9,"35":8,"37":4,"39":1,"48":1,"52":1,"54":1,"60":2,"62":2,"81":1,"82":1,"94":65,"112":1,"114":4,"117":4,"121":4,"146":12,"147":9,"149":14}}],["initpkgs",{"2":{"140":2}}],["init",{"2":{"121":1}}],["initialization",{"0":{"140":1}}],["initializes",{"2":{"35":1,"94":1}}],["initial",{"2":{"97":1}}],["inner",{"2":{"112":1,"149":1}}],["involves",{"2":{"51":1,"95":1}}],["involving",{"2":{"50":1,"94":1,"127":1}}],["invalid",{"2":{"32":1,"34":1,"94":3,"146":1,"147":1}}],["inf",{"2":{"149":1}}],["information",{"2":{"81":1,"94":1,"112":1,"146":1,"147":1,"149":1}}],["info",{"2":{"43":76,"147":2,"149":6}}],["infrastructure",{"2":{"17":1}}],["inside",{"2":{"138":1,"141":1,"142":1}}],["instructions",{"2":{"78":1}}],["installed",{"2":{"81":1,"129":1}}],["install",{"2":{"81":1}}],["installing",{"2":{"78":1}}],["installation",{"0":{"78":1}}],["instantiated",{"2":{"52":1}}],["instantiation",{"0":{"52":1},"2":{"39":9,"50":1,"52":1,"54":2,"94":9,"147":2}}],["instances",{"2":{"81":1}}],["instance",{"2":{"18":1,"30":4,"60":2,"94":3,"117":1,"146":1,"147":13,"149":2}}],["instead",{"2":{"5":1,"94":4,"110":2,"117":1,"146":3,"147":2,"149":1}}],["insertion",{"2":{"15":1,"94":1,"146":1,"147":1}}],["insert",{"2":{"15":1,"94":1,"146":1,"149":3}}],["industry",{"2":{"95":1}}],["indice",{"2":{"149":1}}],["indices",{"2":{"149":6}}],["indicate",{"2":{"149":2}}],["indicates",{"2":{"30":1,"34":2,"94":2,"146":2}}],["individuals",{"2":{"112":1}}],["indispensable",{"2":{"31":1}}],["ind",{"2":{"15":1,"94":1,"146":1,"149":2}}],["independently",{"2":{"149":1}}],["independent",{"2":{"5":1,"94":1,"149":1}}],["indexed",{"2":{"3":2,"94":2}}],["index",{"2":{"3":3,"5":1,"48":2,"94":6,"147":7,"149":1}}],["inc",{"2":{"149":6}}],["increment",{"2":{"149":3}}],["incremental",{"2":{"147":4}}],["increase",{"2":{"15":1,"94":1,"146":1}}],["increasing",{"2":{"1":10,"43":1,"94":10}}],["inclusive",{"2":{"94":3,"114":3}}],["included",{"2":{"94":1,"147":1}}],["includes",{"2":{"56":1,"62":1,"94":3,"108":1,"127":1,"146":2}}],["include",{"2":{"32":1,"95":1,"147":1}}],["including",{"0":{"35":1},"2":{"18":1,"32":1}}],["incorporation",{"2":{"32":1,"33":1}}],["incsert",{"2":{"15":2,"94":1,"146":1}}],["inputs",{"2":{"18":1,"34":1,"94":1}}],["input",{"2":{"5":3,"30":1,"35":3,"94":6,"137":3,"138":1}}],["introductory",{"2":{"83":1}}],["introduction",{"0":{"49":1,"115":1},"1":{"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"116":1},"2":{"115":1}}],["introduce",{"2":{"74":1,"77":1,"89":1,"149":1}}],["into",{"0":{"87":1,"144":1},"1":{"88":1,"89":1,"90":1},"2":{"20":1,"30":1,"40":1,"64":1,"94":6,"99":1,"110":1,"112":1,"114":1,"117":1,"143":1,"144":1,"146":3,"149":1}}],["intend",{"2":{"149":1}}],["intended",{"2":{"137":1}}],["intentionally",{"2":{"41":1}}],["intentional",{"2":{"41":1}}],["intention",{"0":{"41":1,"42":1},"1":{"42":1,"43":1,"44":1,"45":1},"2":{"40":1,"41":2,"42":1,"43":17,"147":17}}],["intensional",{"2":{"32":1,"45":1,"94":1}}],["intension",{"2":{"32":1,"42":1,"43":3,"45":2,"94":2}}],["interpretable",{"2":{"94":1,"114":1,"146":1}}],["interpreted",{"2":{"60":2,"94":2,"147":1}}],["interacting",{"2":{"32":1,"114":1}}],["interdiction",{"2":{"30":2,"149":2}}],["interval",{"2":{"20":1,"21":2,"23":6,"24":2,"25":3,"26":2,"29":1,"43":1,"94":8,"145":1,"146":1}}],["intervalsfold",{"2":{"145":1}}],["intervals",{"2":{"18":2,"20":2,"21":5,"23":5,"24":4,"25":2,"26":4,"27":2,"29":2,"55":1,"94":11,"145":2,"146":2}}],["intersect",{"2":{"18":1,"23":2,"25":1,"94":2,"146":1}}],["intersecting",{"2":{"18":1}}],["intersections",{"2":{"23":2,"25":1,"94":2,"146":1}}],["intersection",{"2":{"5":1,"35":1,"94":1,"146":1}}],["internally",{"2":{"94":1,"110":1}}],["internals",{"2":{"18":1,"28":1,"94":1}}],["internal",{"0":{"58":1},"2":{"7":1,"20":1,"30":2,"58":1,"94":4,"114":1,"146":1,"149":4}}],["interfaced",{"2":{"130":1,"133":1}}],["interfaces",{"2":{"81":1,"136":1}}],["interface",{"0":{"119":1},"2":{"7":2,"20":1,"41":1,"43":1,"56":1,"81":2,"94":4,"95":3,"119":1,"136":1,"138":1,"146":1,"147":4}}],["interoperability",{"2":{"4":1}}],["integrating",{"2":{"33":1}}],["integration",{"0":{"0":1,"2":1,"31":1,"36":1,"38":1,"47":1,"59":1,"61":1},"1":{"1":1,"3":1,"32":1,"33":1,"34":1,"35":1,"37":1,"39":1,"48":1,"60":1,"62":1},"2":{"32":3}}],["integrates",{"2":{"18":1}}],["integer",{"2":{"5":1,"30":3,"37":1,"88":1,"94":2,"95":1,"137":1,"147":5}}],["int",{"2":{"1":8,"3":1,"21":2,"24":2,"26":2,"28":1,"30":11,"35":1,"37":9,"43":32,"45":1,"48":1,"60":2,"82":1,"94":35,"110":8,"121":2,"146":4,"147":9,"149":30}}],["in",{"0":{"0":1,"2":1,"19":1,"31":1,"33":1,"36":1,"38":1,"42":1,"47":1,"59":1,"61":1},"1":{"1":1,"3":1,"32":1,"33":1,"34":1,"35":1,"37":1,"39":1,"48":1,"60":1,"62":1},"2":{"1":6,"3":14,"4":1,"5":4,"7":2,"9":1,"13":1,"15":1,"19":1,"20":4,"21":6,"23":3,"24":8,"25":5,"26":9,"28":2,"29":1,"30":9,"31":2,"32":3,"33":1,"34":4,"35":7,"37":24,"39":4,"40":1,"41":2,"42":1,"43":51,"45":1,"46":1,"48":6,"50":3,"52":1,"53":1,"55":1,"62":18,"73":1,"81":1,"82":7,"83":1,"90":1,"93":1,"94":135,"95":7,"97":3,"106":2,"110":2,"111":1,"112":3,"114":7,"121":2,"123":1,"125":1,"127":1,"129":1,"131":2,"134":2,"137":1,"138":1,"140":1,"141":1,"143":1,"144":5,"145":3,"146":30,"147":39,"149":16}}],["df",{"2":{"112":2,"121":24}}],["ds",{"2":{"112":2}}],["datatype",{"2":{"149":1}}],["dataframe",{"2":{"112":1,"121":2}}],["data",{"2":{"94":2,"127":2,"149":1}}],["due",{"2":{"81":1}}],["during",{"2":{"11":1,"94":1,"114":2}}],["done",{"2":{"143":1}}],["domath",{"2":{"131":1,"134":1}}],["domain",{"0":{"55":1},"2":{"18":10,"19":1,"20":19,"21":1,"23":12,"24":1,"25":15,"26":1,"28":1,"29":9,"30":1,"37":1,"55":1,"82":1,"94":46,"95":1,"112":3,"117":4,"146":32,"149":20}}],["domains",{"0":{"17":1},"1":{"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1},"2":{"17":2,"18":8,"19":1,"20":4,"21":3,"23":9,"24":2,"25":7,"26":2,"27":2,"28":6,"29":1,"30":1,"53":2,"55":2,"74":1,"94":30,"112":2,"121":11,"146":23,"149":3}}],["dom",{"2":{"94":8,"112":2,"121":4,"146":4}}],["download",{"2":{"81":1}}],["do",{"2":{"62":4,"94":6,"127":1,"146":1}}],["docstring",{"2":{"106":8,"107":8,"108":2,"110":2,"111":2,"114":2,"125":4,"126":12,"147":23,"149":29}}],["doc",{"2":{"50":1}}],["documenter",{"2":{"106":4,"107":4,"108":1,"110":1,"111":1,"114":1,"125":2,"126":6}}],["documentervitepress",{"0":{"44":1}}],["documentation",{"0":{"45":1},"2":{"30":1,"81":1,"109":1,"112":1,"128":1,"130":1,"133":1,"137":1,"147":1,"149":1}}],["doesn",{"2":{"34":1,"35":2,"94":3,"137":1}}],["does",{"2":{"34":1,"35":3,"62":2,"94":9,"147":4}}],["d₂",{"2":{"23":2,"25":2,"94":2,"146":2}}],["d₁",{"2":{"23":2,"25":2,"94":2,"146":2}}],["draw",{"2":{"21":2,"24":1,"26":1,"29":1,"94":1,"149":5}}],["d5",{"2":{"20":1,"23":1,"25":1,"94":1,"146":1}}],["d4",{"2":{"20":1,"23":1,"25":1,"94":1,"146":1}}],["d3",{"2":{"20":1,"23":1,"25":1,"94":1,"146":1}}],["d2",{"2":{"20":1,"23":1,"25":1,"94":1,"146":1}}],["dynamic",{"2":{"18":3,"20":1,"23":1,"30":1,"94":3,"127":1,"146":1,"149":11}}],["d",{"2":{"15":1,"20":14,"21":29,"23":7,"24":23,"25":9,"26":26,"27":1,"29":12,"60":4,"94":54,"112":2,"121":2,"142":2,"143":2,"145":3,"146":22,"149":9}}],["dir",{"2":{"131":1,"134":1,"145":4}}],["directions",{"0":{"71":1},"2":{"94":1,"127":1}}],["directed",{"2":{"60":1,"94":1,"147":1}}],["direct",{"2":{"58":1}}],["directly",{"2":{"32":1,"41":1,"43":1,"94":1,"147":1}}],["diff",{"2":{"94":4,"106":1,"107":1}}],["differs",{"0":{"75":1}}],["difference",{"2":{"13":2,"20":1,"23":1,"25":1,"94":12,"146":2}}],["different",{"2":{"1":8,"5":1,"18":1,"30":1,"34":5,"35":8,"41":1,"42":6,"43":8,"44":2,"45":6,"50":1,"58":1,"81":1,"82":1,"94":29,"96":1,"127":3,"136":1,"145":1,"146":4,"147":1,"149":1}}],["digits",{"2":{"82":2}}],["dive",{"0":{"87":1},"1":{"88":1,"89":1,"90":1},"2":{"64":1}}],["dispatch",{"2":{"94":1,"112":1,"127":1,"149":2}}],["displays",{"2":{"30":1}}],["display",{"2":{"30":13}}],["discuss",{"2":{"65":1,"80":1,"93":1}}],["discreteset",{"2":{"147":6}}],["discretedomain",{"2":{"18":1,"20":1,"21":3,"23":1,"24":3,"25":4,"26":3,"29":1,"94":7,"121":1,"146":2}}],["discrete",{"0":{"25":1},"1":{"26":1},"2":{"17":1,"18":2,"20":1,"23":1,"25":4,"55":1,"94":5,"112":1,"146":4,"147":5,"149":1}}],["distributed",{"2":{"149":1}}],["distdifferent",{"2":{"43":2,"147":1}}],["dist",{"2":{"41":1,"42":6,"43":3,"44":2,"45":5,"94":5,"149":1}}],["distinct",{"2":{"37":2,"82":2,"94":2,"147":1}}],["distinguishes",{"2":{"18":1}}],["distances",{"2":{"30":4,"42":2,"45":1,"94":1,"147":1}}],["distance",{"2":{"20":2,"23":1,"25":1,"30":1,"45":3,"94":8,"111":1,"146":5,"147":3,"149":1}}],["diagram",{"2":{"7":1,"60":4,"94":5,"146":1,"147":1}}],["diagrams",{"2":{"7":2,"94":1}}],["dictionaryview",{"2":{"149":1}}],["dictionary",{"2":{"5":1,"15":1,"30":3,"32":2,"34":1,"35":14,"94":18,"127":2,"136":1,"137":1,"139":2,"141":1,"142":1,"145":1,"146":8,"149":6}}],["dictionaries",{"0":{"15":1},"1":{"16":1},"2":{"4":1,"15":1}}],["dict",{"2":{"5":3,"35":8,"60":4,"94":12,"131":1,"134":1,"137":1,"139":2,"141":3,"142":3,"143":3,"145":1,"146":8}}],["dict=usual",{"2":{"5":1,"35":1,"94":1,"146":1}}],["dimparameterdomain",{"2":{"29":1,"94":1}}],["dimensions",{"2":{"29":1,"94":1}}],["dimension",{"2":{"5":1,"94":1,"147":5,"149":1}}],["dim",{"2":{"5":1,"43":2,"62":2,"94":3,"121":3,"147":7,"149":4}}],["dim=2",{"2":{"3":2,"43":2,"94":2}}],["dim=1",{"2":{"3":2,"94":2}}],["deepcopy",{"2":{"149":1}}],["deeper",{"2":{"64":1}}],["debugging",{"2":{"149":1}}],["debinarize",{"2":{"94":1,"117":1,"146":1}}],["deprecated",{"2":{"147":1}}],["dependencies",{"2":{"145":1}}],["depend",{"2":{"94":1,"127":1}}],["depending",{"2":{"81":1,"137":1}}],["depends",{"2":{"20":1,"94":1,"146":1,"149":1}}],["devops",{"2":{"137":2,"145":1}}],["develop",{"2":{"137":1}}],["developing",{"2":{"49":1}}],["developers",{"2":{"4":1,"31":1}}],["development",{"2":{"4":1,"137":1}}],["details",{"2":{"106":4,"107":4,"108":1,"110":1,"111":1,"114":1,"125":2,"126":6}}],["determined",{"2":{"149":1}}],["determine",{"2":{"34":1,"94":2,"146":1}}],["determining",{"2":{"18":1,"32":1}}],["deterministic",{"2":{"7":1,"94":1,"146":1}}],["denotes",{"2":{"94":2}}],["density",{"2":{"28":1,"94":1,"146":1}}],["derived",{"2":{"94":1,"147":1}}],["delta",{"2":{"149":6}}],["delegates",{"2":{"94":1,"127":1}}],["delete",{"2":{"18":1,"20":1,"26":3,"34":1,"94":5,"146":4,"149":13}}],["deletion",{"2":{"18":1}}],["delineation",{"2":{"94":2,"147":1}}],["dedicated",{"2":{"42":1}}],["decrement",{"2":{"149":1}}],["decrease",{"2":{"149":2}}],["decreasing",{"2":{"1":8,"94":8}}],["decay",{"2":{"149":3}}],["declare",{"2":{"94":1,"147":1}}],["decisions",{"2":{"96":1}}],["decision",{"2":{"7":3,"60":1,"94":3,"146":1,"147":1}}],["descent",{"0":{"121":1},"2":{"112":1}}],["descriptions",{"2":{"35":4,"94":4,"146":4}}],["description",{"2":{"35":2,"42":1,"94":3,"146":2,"147":12,"149":10}}],["describes",{"2":{"30":1}}],["describe",{"2":{"5":1,"35":2,"94":3,"98":1,"101":1,"104":1,"121":1,"123":1,"146":2,"149":3}}],["designed",{"2":{"4":1,"31":1,"41":1,"43":1,"136":1}}],["define",{"2":{"32":1,"35":3,"41":1,"42":2,"46":1,"73":1,"82":1,"94":6,"146":2,"147":1}}],["defines",{"2":{"23":1,"25":1,"43":1,"94":2,"114":1,"146":1,"147":1}}],["defined",{"0":{"55":1,"60":1},"2":{"18":2,"20":1,"25":1,"32":1,"35":1,"37":1,"41":3,"45":1,"46":3,"55":1,"82":2,"94":9,"106":1,"112":2,"125":1,"132":1,"135":1,"137":1,"146":2,"147":4,"149":1}}],["defining",{"0":{"17":1,"42":1},"1":{"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1},"2":{"18":1,"19":1,"32":2,"35":1,"41":1,"43":1,"94":1,"146":1,"147":2}}],["definitions",{"2":{"18":1}}],["definition",{"0":{"0":1,"2":1,"31":1,"36":1,"38":1,"47":1,"59":1,"61":1},"1":{"1":1,"3":1,"32":1,"33":1,"34":1,"35":1,"37":1,"39":1,"48":1,"60":1,"62":1},"2":{"17":1,"18":1,"31":1,"32":1,"33":1,"35":1,"51":1,"52":1,"53":1,"54":1,"94":1}}],["default",{"0":{"139":1},"2":{"5":3,"21":1,"28":1,"30":9,"35":8,"37":1,"94":17,"112":4,"117":1,"119":1,"132":9,"135":1,"137":3,"139":2,"146":10,"149":2}}],["defaults",{"2":{"1":1,"5":1,"15":1,"35":6,"94":8,"112":2,"146":2}}],["after",{"2":{"143":1}}],["affects",{"2":{"105":1,"124":1}}],["affect",{"2":{"94":1,"146":1}}],["authors",{"2":{"136":1}}],["auto",{"2":{"121":1}}],["automated",{"2":{"35":1,"94":1}}],["automatic",{"2":{"28":1,"94":1,"146":1}}],["automatically",{"2":{"28":1,"94":1}}],["automata",{"2":{"7":2,"18":1,"94":1}}],["automaton",{"2":{"5":1,"7":5,"29":4,"60":7,"94":16,"146":3,"147":2}}],["among",{"2":{"112":1,"149":1}}],["amount",{"2":{"30":1}}],["aggragation",{"2":{"98":1}}],["aggregate",{"2":{"94":1,"99":1}}],["aggregations",{"0":{"99":1},"2":{"94":1,"100":1,"146":1}}],["aggregation",{"0":{"98":1},"1":{"99":1,"100":1},"2":{"94":4,"100":1,"146":4}}],["ag",{"2":{"94":2,"99":2}}],["against",{"2":{"39":1,"94":2,"127":1}}],["again",{"2":{"30":1}}],["achieve",{"2":{"136":1}}],["accurate",{"2":{"121":2}}],["according",{"2":{"94":1,"127":1,"145":1,"147":1}}],["access",{"2":{"20":1,"94":5,"114":1,"146":4,"149":20}}],["accessing",{"2":{"18":1}}],["acceptable",{"2":{"94":2,"147":1}}],["accepted",{"2":{"34":2,"60":2,"94":4,"146":2,"147":1}}],["accepts",{"2":{"7":3,"29":1,"30":4,"94":3,"146":1}}],["accept",{"2":{"7":6,"29":3,"94":7,"146":1}}],["action",{"2":{"94":2,"146":2}}],["actual",{"2":{"52":1,"94":1,"145":1,"146":1}}],["across",{"2":{"58":1,"145":1}}],["a2",{"2":{"43":2}}],["a1",{"2":{"43":2}}],["apixcspjumpmoi",{"2":{"43":17}}],["apis",{"0":{"43":1}}],["api",{"0":{"42":1,"56":1,"94":1,"129":1,"146":1},"2":{"41":1,"43":1,"129":1}}],["appropriate",{"2":{"94":1,"127":1,"142":1,"144":1}}],["approach",{"2":{"32":1,"82":1,"96":2}}],["appear",{"2":{"37":3,"94":3}}],["applies",{"2":{"94":1,"110":1,"147":1}}],["applied",{"2":{"34":1,"35":1,"52":1,"67":1,"82":1,"94":3,"127":1,"146":2,"147":1,"149":2}}],["applicability",{"2":{"32":1}}],["application",{"2":{"31":1,"32":1,"33":1,"50":1,"52":1,"94":1}}],["applications",{"0":{"67":1},"2":{"17":1,"19":1}}],["applying",{"0":{"66":1},"1":{"67":1,"68":1}}],["apply",{"2":{"32":1,"34":5,"35":3,"94":7,"127":2,"146":5}}],["about",{"0":{"113":1},"2":{"95":1,"113":1,"147":1,"148":1,"149":1}}],["absolute",{"2":{"94":2}}],["abs",{"2":{"35":1,"42":2,"43":2,"94":5,"106":1,"107":1,"146":1}}],["abstractstring",{"2":{"149":2}}],["abstractstring=",{"2":{"9":1,"94":1,"146":1}}],["abstractstate",{"2":{"149":1}}],["abstractsolver",{"2":{"149":70}}],["abstractscalarset",{"2":{"147":2}}],["abstractscalarfunction",{"2":{"147":1}}],["abstractoptimizer",{"2":{"94":2,"112":2,"119":2,"121":1,"146":1,"147":1}}],["abstractmatrix",{"2":{"30":4}}],["abstractmultivalueddecisiondiagram",{"2":{"7":3,"94":3,"146":1,"147":1}}],["abstractrange",{"2":{"20":1,"23":1,"25":2,"94":2,"146":2}}],["abstracting",{"2":{"19":1}}],["abstractdomain",{"2":{"18":3,"20":5,"21":6,"23":4,"24":5,"25":4,"26":5,"27":1,"29":10,"94":25,"146":10,"149":6}}],["abstractdictionary",{"2":{"15":1,"94":1,"146":1}}],["abstractdict",{"2":{"15":1,"94":1,"146":1}}],["abstractautomaton`",{"2":{"60":1,"94":1}}],["abstractautomaton",{"2":{"7":3,"29":1,"60":2,"94":6,"146":1,"147":2}}],["abstract",{"2":{"4":1,"7":2,"18":1,"20":1,"23":1,"25":1,"94":6,"112":2,"119":1,"146":3,"149":2}}],["abstractvectorset",{"2":{"147":22}}],["abstractvector",{"2":{"3":4,"39":2,"48":1,"62":5,"94":31,"110":1,"125":9,"149":1}}],["ability",{"2":{"32":1}}],["avoid",{"2":{"34":1,"94":2,"146":1,"147":2,"149":1}}],["avoiding",{"2":{"32":1}}],["available",{"2":{"18":1,"30":2,"33":1,"35":1,"41":1,"43":1,"81":2,"94":2,"95":1,"127":1,"146":1,"149":1}}],["advantages",{"2":{"80":1}}],["advanced",{"0":{"33":1,"63":1},"1":{"64":1,"65":1},"2":{"4":1,"18":1,"19":1,"32":1}}],["adjusted",{"2":{"28":1,"94":1}}],["added",{"2":{"42":1,"43":1,"147":1}}],["adds",{"2":{"35":4,"94":4}}],["adding",{"2":{"35":2,"94":2,"146":2}}],["additionally",{"2":{"20":1,"94":1,"146":1}}],["addition",{"2":{"18":1,"32":1}}],["add",{"2":{"18":1,"20":1,"25":2,"34":1,"41":1,"42":1,"81":1,"82":4,"94":4,"146":3,"147":9,"149":20}}],["attribution",{"2":{"149":1}}],["attributed",{"2":{"149":6}}],["attribute",{"2":{"149":2}}],["attached",{"2":{"149":1}}],["atmost",{"2":{"43":1,"147":2}}],["atleast",{"2":{"43":1,"147":2}}],["atoms",{"2":{"30":1}}],["at",{"2":{"7":1,"18":1,"30":1,"32":1,"35":1,"37":8,"43":12,"62":2,"81":1,"94":15,"112":2,"114":2,"117":1,"146":3,"147":3,"149":1}}],["alternative",{"2":{"114":1}}],["although",{"2":{"81":1}}],["algorithm",{"2":{"94":4,"97":2,"112":3,"146":4}}],["algorithms",{"2":{"89":1,"97":1}}],["already",{"2":{"35":1,"82":1,"94":3,"106":1,"112":1,"125":1,"149":1}}],["also",{"2":{"18":1,"37":3,"53":1,"82":1,"94":5,"108":1,"127":1,"144":1,"146":2}}],["along",{"2":{"5":1,"81":1,"94":1}}],["allocs",{"2":{"144":4,"145":1}}],["allocation",{"2":{"96":1}}],["allocations",{"2":{"94":17,"125":8,"145":1}}],["allow",{"2":{"46":1}}],["allows",{"2":{"32":2}}],["allowing",{"2":{"18":1,"94":3,"127":1,"147":1}}],["alldifferent",{"2":{"43":2,"82":5,"147":2}}],["allequal",{"2":{"43":1,"147":2}}],["all",{"2":{"1":24,"5":1,"13":1,"18":1,"23":1,"30":1,"34":4,"35":9,"37":1,"43":10,"46":1,"81":1,"82":2,"94":45,"95":1,"97":1,"108":1,"110":1,"127":1,"129":2,"131":1,"134":1,"146":10,"147":6,"149":4}}],["aspects",{"0":{"58":1}}],["assert",{"2":{"94":1,"114":1}}],["associated",{"2":{"30":1,"82":1,"114":1,"140":1}}],["assigned",{"2":{"53":1}}],["assign",{"2":{"30":1,"94":1,"146":1,"149":1}}],["assignments",{"2":{"32":2,"34":1,"54":1,"94":1,"146":1}}],["assignment",{"2":{"30":1,"34":1,"50":1,"53":1,"94":1,"146":1}}],["as",{"2":{"4":1,"5":2,"7":1,"11":1,"17":1,"18":1,"23":1,"25":3,"30":3,"32":2,"34":1,"35":9,"37":3,"41":3,"43":2,"45":1,"51":1,"53":1,"55":1,"60":2,"74":1,"81":1,"82":1,"94":29,"95":1,"96":2,"106":1,"110":2,"112":1,"114":1,"125":1,"127":1,"129":1,"132":1,"135":1,"137":5,"138":1,"146":7,"147":4,"149":6}}],["a",{"0":{"54":1,"56":1,"114":1,"144":1},"2":{"1":3,"3":22,"4":1,"5":4,"7":11,"15":2,"17":2,"18":2,"19":2,"20":9,"21":19,"23":8,"24":17,"25":8,"26":17,"28":6,"29":15,"30":26,"31":1,"32":7,"33":1,"34":18,"35":21,"37":13,"39":8,"41":10,"42":2,"43":7,"45":5,"46":4,"48":8,"49":1,"50":5,"51":6,"52":5,"53":4,"54":3,"56":2,"57":1,"60":29,"62":8,"68":1,"81":2,"82":12,"94":281,"95":7,"96":4,"97":7,"99":2,"102":2,"110":8,"111":2,"112":23,"114":16,"116":2,"117":7,"119":1,"123":1,"127":10,"129":3,"130":1,"133":1,"136":3,"137":8,"138":2,"139":1,"143":1,"144":1,"145":1,"146":75,"147":48,"149":51}}],["angles",{"2":{"96":1}}],["anonymous",{"2":{"94":1,"110":1}}],["another",{"2":{"3":2,"94":2,"95":1}}],["annealing",{"2":{"89":1}}],["analyze",{"2":{"86":1,"96":1}}],["analyzing",{"0":{"84":1},"1":{"85":1,"86":1}}],["analysis",{"0":{"86":1,"93":1},"2":{"93":1,"96":1}}],["any",{"0":{"114":1},"2":{"9":1,"20":2,"21":1,"24":1,"26":1,"30":1,"34":2,"45":1,"62":6,"94":19,"119":1,"137":1,"146":8,"147":4,"149":1}}],["an",{"0":{"42":1},"2":{"1":3,"4":1,"5":3,"7":2,"9":1,"18":1,"20":2,"23":6,"24":1,"25":3,"26":1,"28":1,"30":3,"31":1,"32":1,"34":4,"35":6,"37":1,"42":1,"43":1,"45":1,"49":1,"53":1,"60":3,"68":1,"82":1,"83":2,"94":60,"97":3,"110":3,"112":7,"114":5,"119":1,"123":1,"127":1,"136":1,"137":1,"138":1,"144":1,"145":1,"146":19,"147":12,"149":11}}],["and",{"0":{"0":1,"2":1,"17":1,"18":1,"31":1,"32":1,"35":1,"36":1,"37":1,"38":1,"47":1,"59":1,"61":1,"62":1,"64":1,"65":1,"67":1,"69":1,"74":1,"78":1,"79":1,"84":1,"86":1,"91":1},"1":{"1":1,"3":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"32":1,"33":1,"34":1,"35":1,"37":1,"39":1,"48":1,"60":1,"62":1,"70":1,"71":1,"80":1,"81":1,"82":1,"85":1,"86":1,"92":1,"93":1},"2":{"3":2,"4":4,"5":1,"7":1,"9":1,"11":1,"13":1,"17":2,"18":11,"19":4,"20":2,"23":2,"25":1,"28":2,"29":2,"30":13,"31":3,"32":14,"33":2,"34":10,"35":10,"37":1,"40":1,"41":1,"43":2,"45":3,"46":1,"48":2,"49":2,"50":1,"51":2,"52":1,"53":2,"54":3,"55":1,"56":2,"57":2,"58":2,"60":1,"64":1,"65":1,"67":1,"68":1,"70":1,"71":1,"73":1,"74":1,"75":1,"77":1,"78":1,"80":2,"81":2,"82":4,"83":2,"85":2,"86":1,"89":1,"90":1,"92":1,"93":1,"94":66,"95":3,"96":8,"97":3,"105":1,"110":1,"112":10,"114":3,"116":1,"117":1,"124":1,"125":5,"127":3,"129":1,"130":1,"133":1,"137":1,"139":1,"145":2,"146":24,"147":10,"149":11}}],["arrange",{"2":{"129":3}}],["arrangement",{"2":{"112":1}}],["array",{"2":{"43":1}}],["ar",{"2":{"94":2,"102":2}}],["arxiv",{"2":{"35":1,"94":1,"146":1}}],["arbitrary",{"2":{"25":1,"34":1,"94":2,"141":1}}],["arbitrarydomain",{"2":{"25":1,"94":1}}],["argmax",{"2":{"149":3}}],["argument",{"2":{"30":4,"35":7,"94":7,"147":1}}],["arguments",{"2":{"1":3,"3":4,"5":1,"20":1,"23":1,"28":1,"30":1,"34":9,"35":11,"37":4,"39":1,"45":1,"48":1,"60":2,"62":2,"94":43,"146":15,"147":27,"149":8}}],["args",{"2":{"20":4,"28":1,"32":1,"34":7,"35":4,"94":13,"112":3,"119":1,"146":10}}],["arithmetic",{"0":{"101":1,"102":1},"1":{"102":1,"103":1},"2":{"5":1,"94":6,"101":1,"103":2,"146":5}}],["areas",{"2":{"71":1}}],["are",{"2":{"1":10,"4":1,"5":1,"18":1,"23":1,"25":1,"28":1,"30":5,"32":2,"35":1,"40":1,"41":4,"42":2,"45":2,"46":4,"55":1,"57":1,"58":1,"62":2,"82":1,"94":43,"95":2,"96":2,"100":1,"103":1,"108":1,"114":2,"125":8,"127":1,"132":1,"135":1,"137":1,"138":1,"141":1,"142":1,"144":2,"146":6,"147":8,"149":2}}],["jacop",{"2":{"95":1}}],["j+1",{"2":{"82":1}}],["j",{"2":{"82":1}}],["joinpath",{"2":{"145":3}}],["join",{"2":{"70":1}}],["joining",{"0":{"70":1}}],["jc",{"0":{"42":1},"2":{"41":1,"43":18}}],["just",{"2":{"141":1}}],["jump",{"2":{"30":17,"41":1,"43":47,"81":3,"82":2,"95":1,"147":10,"149":1}}],["juliajump",{"2":{"147":3}}],["juliajulia>",{"2":{"129":1,"131":1,"134":1}}],["julia>",{"2":{"131":1,"134":1}}],["juliapost",{"2":{"149":1}}],["juliaperfchecker",{"2":{"140":1,"141":1,"143":1}}],["juliapredicate",{"2":{"147":1}}],["juliapredict",{"2":{"112":1}}],["juliapreliminaries",{"2":{"112":1}}],["juliaparameter",{"2":{"112":1}}],["juliaparams",{"2":{"34":1,"94":1,"146":1}}],["juliapairvarsparameterdomain",{"2":{"29":1,"94":1}}],["juliaqubogradientoptimizer",{"2":{"112":1}}],["juliaqubo",{"2":{"94":2,"112":1,"116":2,"146":1}}],["juliaqap",{"2":{"30":1}}],["juliaweights",{"2":{"94":3,"146":3}}],["juliatrain",{"2":{"94":1,"112":2,"119":1,"146":1}}],["juliatransformation",{"2":{"94":1,"127":1,"146":1}}],["juliatr",{"2":{"94":19,"125":9}}],["juliato",{"2":{"20":1,"94":1,"146":1}}],["juliaremote",{"2":{"149":2}}],["juliaregularization",{"2":{"94":1,"146":1}}],["juliareduce",{"2":{"94":1,"110":1}}],["juliarangedomain",{"2":{"25":1,"94":1,"146":1}}],["juliahamming",{"2":{"94":1,"111":1,"146":1}}],["juliafunction",{"2":{"139":1,"142":1,"144":1}}],["juliafunctions",{"2":{"94":1,"114":1}}],["juliafor",{"2":{"82":2}}],["juliafake",{"2":{"29":1,"94":1}}],["juliafakeautomaton",{"2":{"29":1,"94":1}}],["juliaup",{"2":{"81":1}}],["juliausing",{"2":{"43":50,"81":2,"145":1}}],["juliausual",{"2":{"34":1,"35":2,"94":3,"146":2}}],["juliano",{"2":{"112":1}}],["julianbits",{"2":{"94":2,"114":1,"146":1}}],["julian",{"2":{"30":1}}],["juliagolomb",{"2":{"30":1}}],["juliageneralstate",{"2":{"149":1}}],["juliagenerate",{"2":{"29":1,"94":5,"112":1,"114":2,"146":1}}],["juliaget",{"2":{"20":1,"94":1,"146":1,"149":12}}],["juliavalue",{"2":{"82":1}}],["juliavalsparameterdomain",{"2":{"29":1,"94":1}}],["juliavalparameterdomain",{"2":{"29":1,"94":1}}],["juliavariable",{"2":{"149":3}}],["juliavar",{"2":{"21":1,"24":1,"26":1,"149":1}}],["juliao",{"2":{"149":1}}],["juliaobjective",{"2":{"149":4}}],["juliaoptions",{"2":{"149":1}}],["juliaoptimizer",{"2":{"147":2}}],["juliaoptimize",{"2":{"82":1,"112":1}}],["juliaopparameterdomain",{"2":{"29":1,"94":1}}],["juliaoversample",{"2":{"11":1,"94":1,"146":1}}],["julialoss",{"2":{"112":1}}],["julialeadsolver",{"2":{"149":1}}],["julialearn",{"2":{"94":1,"146":1}}],["julialength",{"2":{"24":1,"26":1,"94":1,"114":1,"149":5}}],["julialazy",{"2":{"94":2,"110":2,"146":2}}],["julialayers",{"2":{"94":1}}],["julialayer",{"2":{"94":1,"114":1}}],["julialanguageparameterdomain",{"2":{"29":1,"94":1}}],["juliais",{"2":{"94":2,"114":1,"117":1,"146":1,"149":2}}],["juliaicnlocalsearchoptimizer",{"2":{"112":1}}],["juliaicngeneticoptimizer",{"2":{"112":1}}],["juliaicnconfig",{"2":{"112":1}}],["juliaicn",{"2":{"94":1,"112":1,"146":1}}],["juliaidparameterdomain",{"2":{"29":1,"94":1}}],["juliaintention",{"2":{"147":1}}],["juliaintersect",{"2":{"23":2,"25":1,"94":2,"146":1}}],["juliaintervals",{"2":{"23":1,"94":1}}],["juliaincsert",{"2":{"15":1,"94":1,"146":1}}],["juliabinarize",{"2":{"94":1,"117":1,"146":1}}],["juliaboolparameterdomain",{"2":{"29":1,"94":1}}],["juliabase",{"2":{"21":13,"23":1,"24":12,"25":1,"26":13,"27":2,"29":4,"30":4,"94":17,"146":1,"147":5}}],["juliastop",{"2":{"149":1}}],["juliastatus",{"2":{"149":1}}],["juliastruct",{"2":{"94":1,"112":1,"121":1,"146":1}}],["juliaspecialize",{"2":{"149":2}}],["juliasolve",{"2":{"149":2}}],["juliasolution",{"2":{"149":1}}],["juliascalarfunction",{"2":{"147":1}}],["juliasub",{"2":{"112":1}}],["juliasudoku",{"2":{"30":1}}],["juliasudokuinstance",{"2":{"30":2}}],["juliashow",{"2":{"94":2,"114":1,"146":1}}],["juliashrink",{"2":{"34":1,"94":1}}],["juliaselected",{"2":{"94":1,"114":1}}],["juliasetdomain",{"2":{"25":1,"94":1}}],["juliasymbols",{"2":{"94":1,"146":1}}],["juliasymbol",{"2":{"94":1,"114":1}}],["juliasymmetries",{"2":{"34":1,"94":1,"146":1}}],["juliasymcon",{"2":{"9":1,"94":1,"146":1}}],["juliamodel",{"2":{"149":1}}],["juliamoi",{"2":{"147":17}}],["juliamoisupports",{"2":{"147":1}}],["juliamoisum",{"2":{"147":1}}],["juliamoiregular",{"2":{"147":1}}],["juliamoiordered",{"2":{"147":1}}],["juliamoinooverlap",{"2":{"147":1}}],["juliamoinvalues",{"2":{"147":1}}],["juliamoimultivalueddecisiondiagram",{"2":{"147":1}}],["juliamoiminimum",{"2":{"147":1}}],["juliamoimaximum",{"2":{"147":1}}],["juliamoiintention",{"2":{"147":1}}],["juliamoiinstantiation",{"2":{"147":1}}],["juliamoiextension",{"2":{"147":1}}],["juliamoierror",{"2":{"147":1}}],["juliamoielement",{"2":{"147":1}}],["juliamoidistdifferent",{"2":{"147":1}}],["juliamoicumulative",{"2":{"147":1}}],["juliamoiconflicts",{"2":{"147":1}}],["juliamoiallequal",{"2":{"147":1}}],["juliamoialldifferent",{"2":{"147":1}}],["juliamts",{"2":{"149":1}}],["juliamutually",{"2":{"112":1}}],["juliamutable",{"2":{"30":1}}],["juliaminkowski",{"2":{"94":1,"111":1,"146":1}}],["juliamincut",{"2":{"30":1}}],["juliam",{"2":{"82":1}}],["juliamax",{"2":{"149":1}}],["juliamainsolver",{"2":{"149":1}}],["juliamap",{"2":{"94":1,"110":1}}],["juliamanhattan",{"2":{"94":1,"111":1,"146":1}}],["juliamake",{"2":{"34":1,"94":2,"112":3,"127":1}}],["juliamagic",{"2":{"30":1}}],["juliamerge",{"2":{"23":1,"25":1,"94":1,"146":1}}],["juliamdd",{"2":{"7":1,"94":1,"146":1}}],["juliax",{"2":{"21":1,"24":1,"26":1,"149":1}}],["juliaxcsp",{"2":{"1":3,"3":4,"37":4,"39":1,"45":1,"48":1,"60":2,"62":2,"94":19}}],["juliad",{"2":{"149":1}}],["juliadraw",{"2":{"149":1}}],["juliadelete",{"2":{"149":2}}],["juliadebinarize",{"2":{"94":1,"117":1,"146":1}}],["juliadescribe",{"2":{"35":2,"94":2,"146":2,"149":1}}],["juliadist",{"2":{"149":1}}],["juliadiscreteset",{"2":{"147":1}}],["juliadiscretedomain",{"2":{"25":1,"94":1,"146":1}}],["juliadisplay",{"2":{"30":1}}],["juliadimparameterdomain",{"2":{"29":1,"94":1}}],["juliad1",{"2":{"20":1,"23":1,"25":1,"94":1,"146":1}}],["juliadomain",{"2":{"20":6,"23":6,"25":6,"94":6,"112":1,"146":6,"149":1}}],["juliaempty",{"2":{"149":2}}],["juliaemptydomain",{"2":{"20":1,"94":1}}],["juliae",{"2":{"34":1,"94":1}}],["juliaerror",{"2":{"34":1,"94":1,"146":1,"147":1}}],["juliaexclu",{"2":{"94":1,"114":1}}],["juliaexplore",{"2":{"28":1,"94":2,"146":2}}],["juliaexploresettings",{"2":{"28":1,"94":1,"146":1}}],["juliaextract",{"2":{"5":3,"35":3,"94":3,"146":3}}],["juliaδ",{"2":{"13":1,"94":1,"112":1,"146":1}}],["juliaas",{"2":{"94":2,"110":2}}],["juliaaggregation",{"2":{"94":1,"100":1,"146":1}}],["juliaag",{"2":{"94":2,"99":2}}],["juliaarithmetic",{"2":{"94":1,"103":1,"146":1}}],["juliaar",{"2":{"94":2,"102":2}}],["juliaargs",{"2":{"34":1,"94":1,"146":1}}],["juliaarbitrarydomain",{"2":{"25":1,"94":1}}],["juliaadd",{"2":{"25":1,"94":1,"146":1,"149":2}}],["juliaat",{"2":{"7":1,"94":1}}],["juliaaccept",{"2":{"7":1,"29":1,"94":1,"146":1}}],["juliaautomaton",{"2":{"7":1,"94":1,"146":1}}],["juliaabstractsolver",{"2":{"149":1}}],["juliaabstractoptimizer",{"2":{"94":1,"119":1}}],["juliaabstractdomain",{"2":{"20":1,"94":1,"146":1}}],["juliaabstractautomaton",{"2":{"7":1,"94":1}}],["juliaabstractmultivalueddecisiondiagram",{"2":{"7":1,"94":1}}],["juliacompose",{"2":{"94":2,"146":2}}],["juliacompositionalnetworks",{"2":{"112":2}}],["juliacomposition",{"2":{"94":3,"146":3}}],["juliacomparison",{"2":{"94":1,"108":1,"146":1}}],["juliacode",{"2":{"94":1,"146":1}}],["juliaco",{"2":{"94":9,"106":1}}],["juliacontinuousdomain",{"2":{"23":1,"94":1,"146":1}}],["juliaconsisempty",{"2":{"9":1,"94":1,"146":1}}],["juliaconsin",{"2":{"9":1,"94":1,"146":1}}],["juliaconstriction",{"2":{"149":1}}],["juliaconstraint",{"0":{"70":1,"76":1},"1":{"77":1},"2":{"34":1,"71":1,"77":1,"83":1,"94":1,"146":1,"149":3}}],["juliaconstraints",{"0":{"17":1,"95":1},"1":{"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"96":1,"97":1},"2":{"19":1,"31":1,"32":1,"33":1,"35":4,"94":4,"95":6,"146":4}}],["juliaconstraintcommons",{"2":{"7":1,"29":1,"94":1}}],["juliaconst",{"2":{"5":2,"42":1,"94":2,"112":2}}],["juliaconcept",{"2":{"1":7,"3":4,"34":5,"35":3,"37":9,"39":1,"45":1,"48":1,"60":2,"62":4,"94":37,"146":3}}],["juliachemical",{"2":{"30":1}}],["juliac",{"2":{"1":3,"3":4,"37":4,"39":1,"44":2,"48":1,"60":2,"62":2,"94":18}}],["julia",{"0":{"0":1,"2":1,"19":1,"31":1,"36":1,"38":1,"47":1,"59":1,"61":1,"79":1,"80":1,"81":1,"82":1,"83":1},"1":{"1":1,"3":1,"32":1,"33":1,"34":1,"35":1,"37":1,"39":1,"48":1,"60":1,"62":1,"80":1,"81":1,"82":1},"2":{"4":2,"7":2,"17":1,"25":1,"28":1,"30":5,"32":2,"33":1,"35":2,"43":18,"49":1,"56":1,"58":1,"80":1,"81":7,"82":5,"94":13,"95":8,"106":1,"112":1,"125":1,"127":1,"132":1,"135":1,"137":3,"138":1,"146":5,"147":17,"149":83}}],["jl",{"0":{"0":1,"2":1,"4":1,"17":1,"30":1,"31":1,"36":1,"38":1,"47":1,"56":1,"57":1,"59":1,"61":1,"109":1,"112":1,"115":1,"128":1,"136":1,"147":1,"149":1},"1":{"1":1,"3":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"32":1,"33":1,"34":1,"35":1,"37":1,"39":1,"48":1,"60":1,"62":1,"110":1,"111":1,"116":1,"137":1},"2":{"4":1,"17":1,"18":3,"19":2,"30":1,"31":1,"32":3,"33":3,"35":1,"41":1,"42":1,"43":1,"55":1,"57":1,"58":1,"81":3,"94":1,"95":8,"109":1,"112":1,"114":1,"115":1,"128":1,"129":1,"130":2,"133":2,"136":2,"137":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":4,"146":1,"147":2,"149":2}}]],"serializationVersion":2}';export{i as default}; diff --git a/dev/assets/chunks/VPLocalSearchBox.B8T5L0wy.js b/dev/assets/chunks/VPLocalSearchBox.B8T5L0wy.js deleted file mode 100644 index eac0b2a..0000000 --- a/dev/assets/chunks/VPLocalSearchBox.B8T5L0wy.js +++ /dev/null @@ -1,7 +0,0 @@ -var Ct=Object.defineProperty;var It=(o,e,t)=>e in o?Ct(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t;var Oe=(o,e,t)=>It(o,typeof e!="symbol"?e+"":e,t);import{X as Dt,s as oe,v as $e,ak as kt,al as Ot,d as Rt,G as xe,am as tt,h as Fe,an as _t,ao as Mt,x as Lt,ap as zt,y as Re,R as de,Q as Ee,aq as Pt,ar as Bt,Y as Vt,U as $t,as as Wt,o as ee,b as Kt,j as k,a1 as Jt,k as j,at as Ut,au as jt,av as Gt,c as re,n as rt,e as Se,E as at,F as nt,a as ve,t as pe,aw as Qt,p as qt,l as Ht,ax as it,ay as Yt,aa as Zt,ag as Xt,az as er,_ as tr}from"./framework.U9t3ZutP.js";import{u as rr,c as ar}from"./theme.AgFVpptx.js";const nr={root:()=>Dt(()=>import("./@localSearchIndexroot.BxSwYjVK.js"),[])};/*! -* tabbable 6.2.0 -* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE -*/var yt=["input:not([inert])","select:not([inert])","textarea:not([inert])","a[href]:not([inert])","button:not([inert])","[tabindex]:not(slot):not([inert])","audio[controls]:not([inert])","video[controls]:not([inert])",'[contenteditable]:not([contenteditable="false"]):not([inert])',"details>summary:first-of-type:not([inert])","details:not([inert])"],Ne=yt.join(","),mt=typeof Element>"u",ue=mt?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,Ce=!mt&&Element.prototype.getRootNode?function(o){var e;return o==null||(e=o.getRootNode)===null||e===void 0?void 0:e.call(o)}:function(o){return o==null?void 0:o.ownerDocument},Ie=function o(e,t){var r;t===void 0&&(t=!0);var n=e==null||(r=e.getAttribute)===null||r===void 0?void 0:r.call(e,"inert"),a=n===""||n==="true",i=a||t&&e&&o(e.parentNode);return i},ir=function(e){var t,r=e==null||(t=e.getAttribute)===null||t===void 0?void 0:t.call(e,"contenteditable");return r===""||r==="true"},gt=function(e,t,r){if(Ie(e))return[];var n=Array.prototype.slice.apply(e.querySelectorAll(Ne));return t&&ue.call(e,Ne)&&n.unshift(e),n=n.filter(r),n},bt=function o(e,t,r){for(var n=[],a=Array.from(e);a.length;){var i=a.shift();if(!Ie(i,!1))if(i.tagName==="SLOT"){var s=i.assignedElements(),u=s.length?s:i.children,l=o(u,!0,r);r.flatten?n.push.apply(n,l):n.push({scopeParent:i,candidates:l})}else{var h=ue.call(i,Ne);h&&r.filter(i)&&(t||!e.includes(i))&&n.push(i);var d=i.shadowRoot||typeof r.getShadowRoot=="function"&&r.getShadowRoot(i),v=!Ie(d,!1)&&(!r.shadowRootFilter||r.shadowRootFilter(i));if(d&&v){var y=o(d===!0?i.children:d.children,!0,r);r.flatten?n.push.apply(n,y):n.push({scopeParent:i,candidates:y})}else a.unshift.apply(a,i.children)}}return n},wt=function(e){return!isNaN(parseInt(e.getAttribute("tabindex"),10))},se=function(e){if(!e)throw new Error("No node provided");return e.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||ir(e))&&!wt(e)?0:e.tabIndex},or=function(e,t){var r=se(e);return r<0&&t&&!wt(e)?0:r},sr=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},xt=function(e){return e.tagName==="INPUT"},ur=function(e){return xt(e)&&e.type==="hidden"},lr=function(e){var t=e.tagName==="DETAILS"&&Array.prototype.slice.apply(e.children).some(function(r){return r.tagName==="SUMMARY"});return t},cr=function(e,t){for(var r=0;rsummary:first-of-type"),i=a?e.parentElement:e;if(ue.call(i,"details:not([open]) *"))return!0;if(!r||r==="full"||r==="legacy-full"){if(typeof n=="function"){for(var s=e;e;){var u=e.parentElement,l=Ce(e);if(u&&!u.shadowRoot&&n(u)===!0)return ot(e);e.assignedSlot?e=e.assignedSlot:!u&&l!==e.ownerDocument?e=l.host:e=u}e=s}if(vr(e))return!e.getClientRects().length;if(r!=="legacy-full")return!0}else if(r==="non-zero-area")return ot(e);return!1},yr=function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if(t.tagName==="FIELDSET"&&t.disabled){for(var r=0;r=0)},gr=function o(e){var t=[],r=[];return e.forEach(function(n,a){var i=!!n.scopeParent,s=i?n.scopeParent:n,u=or(s,i),l=i?o(n.candidates):s;u===0?i?t.push.apply(t,l):t.push(s):r.push({documentOrder:a,tabIndex:u,item:n,isScope:i,content:l})}),r.sort(sr).reduce(function(n,a){return a.isScope?n.push.apply(n,a.content):n.push(a.content),n},[]).concat(t)},br=function(e,t){t=t||{};var r;return t.getShadowRoot?r=bt([e],t.includeContainer,{filter:We.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:mr}):r=gt(e,t.includeContainer,We.bind(null,t)),gr(r)},wr=function(e,t){t=t||{};var r;return t.getShadowRoot?r=bt([e],t.includeContainer,{filter:De.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):r=gt(e,t.includeContainer,De.bind(null,t)),r},le=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ue.call(e,Ne)===!1?!1:We(t,e)},xr=yt.concat("iframe").join(","),_e=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ue.call(e,xr)===!1?!1:De(t,e)};/*! -* focus-trap 7.5.4 -* @license MIT, https://github.com/focus-trap/focus-trap/blob/master/LICENSE -*/function st(o,e){var t=Object.keys(o);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(o);e&&(r=r.filter(function(n){return Object.getOwnPropertyDescriptor(o,n).enumerable})),t.push.apply(t,r)}return t}function ut(o){for(var e=1;e0){var r=e[e.length-1];r!==t&&r.pause()}var n=e.indexOf(t);n===-1||e.splice(n,1),e.push(t)},deactivateTrap:function(e,t){var r=e.indexOf(t);r!==-1&&e.splice(r,1),e.length>0&&e[e.length-1].unpause()}},Ar=function(e){return e.tagName&&e.tagName.toLowerCase()==="input"&&typeof e.select=="function"},Tr=function(e){return(e==null?void 0:e.key)==="Escape"||(e==null?void 0:e.key)==="Esc"||(e==null?void 0:e.keyCode)===27},ge=function(e){return(e==null?void 0:e.key)==="Tab"||(e==null?void 0:e.keyCode)===9},Nr=function(e){return ge(e)&&!e.shiftKey},Cr=function(e){return ge(e)&&e.shiftKey},ct=function(e){return setTimeout(e,0)},ft=function(e,t){var r=-1;return e.every(function(n,a){return t(n)?(r=a,!1):!0}),r},ye=function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n1?p-1:0),I=1;I=0)c=r.activeElement;else{var f=i.tabbableGroups[0],p=f&&f.firstTabbableNode;c=p||h("fallbackFocus")}if(!c)throw new Error("Your focus-trap needs to have at least one focusable element");return c},v=function(){if(i.containerGroups=i.containers.map(function(c){var f=br(c,a.tabbableOptions),p=wr(c,a.tabbableOptions),C=f.length>0?f[0]:void 0,I=f.length>0?f[f.length-1]:void 0,M=p.find(function(m){return le(m)}),z=p.slice().reverse().find(function(m){return le(m)}),P=!!f.find(function(m){return se(m)>0});return{container:c,tabbableNodes:f,focusableNodes:p,posTabIndexesFound:P,firstTabbableNode:C,lastTabbableNode:I,firstDomTabbableNode:M,lastDomTabbableNode:z,nextTabbableNode:function(x){var $=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,K=f.indexOf(x);return K<0?$?p.slice(p.indexOf(x)+1).find(function(Q){return le(Q)}):p.slice(0,p.indexOf(x)).reverse().find(function(Q){return le(Q)}):f[K+($?1:-1)]}}}),i.tabbableGroups=i.containerGroups.filter(function(c){return c.tabbableNodes.length>0}),i.tabbableGroups.length<=0&&!h("fallbackFocus"))throw new Error("Your focus-trap must have at least one container with at least one tabbable node in it at all times");if(i.containerGroups.find(function(c){return c.posTabIndexesFound})&&i.containerGroups.length>1)throw new Error("At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps.")},y=function w(c){var f=c.activeElement;if(f)return f.shadowRoot&&f.shadowRoot.activeElement!==null?w(f.shadowRoot):f},b=function w(c){if(c!==!1&&c!==y(document)){if(!c||!c.focus){w(d());return}c.focus({preventScroll:!!a.preventScroll}),i.mostRecentlyFocusedNode=c,Ar(c)&&c.select()}},E=function(c){var f=h("setReturnFocus",c);return f||(f===!1?!1:c)},g=function(c){var f=c.target,p=c.event,C=c.isBackward,I=C===void 0?!1:C;f=f||Ae(p),v();var M=null;if(i.tabbableGroups.length>0){var z=l(f,p),P=z>=0?i.containerGroups[z]:void 0;if(z<0)I?M=i.tabbableGroups[i.tabbableGroups.length-1].lastTabbableNode:M=i.tabbableGroups[0].firstTabbableNode;else if(I){var m=ft(i.tabbableGroups,function(B){var U=B.firstTabbableNode;return f===U});if(m<0&&(P.container===f||_e(f,a.tabbableOptions)&&!le(f,a.tabbableOptions)&&!P.nextTabbableNode(f,!1))&&(m=z),m>=0){var x=m===0?i.tabbableGroups.length-1:m-1,$=i.tabbableGroups[x];M=se(f)>=0?$.lastTabbableNode:$.lastDomTabbableNode}else ge(p)||(M=P.nextTabbableNode(f,!1))}else{var K=ft(i.tabbableGroups,function(B){var U=B.lastTabbableNode;return f===U});if(K<0&&(P.container===f||_e(f,a.tabbableOptions)&&!le(f,a.tabbableOptions)&&!P.nextTabbableNode(f))&&(K=z),K>=0){var Q=K===i.tabbableGroups.length-1?0:K+1,q=i.tabbableGroups[Q];M=se(f)>=0?q.firstTabbableNode:q.firstDomTabbableNode}else ge(p)||(M=P.nextTabbableNode(f))}}else M=h("fallbackFocus");return M},S=function(c){var f=Ae(c);if(!(l(f,c)>=0)){if(ye(a.clickOutsideDeactivates,c)){s.deactivate({returnFocus:a.returnFocusOnDeactivate});return}ye(a.allowOutsideClick,c)||c.preventDefault()}},T=function(c){var f=Ae(c),p=l(f,c)>=0;if(p||f instanceof Document)p&&(i.mostRecentlyFocusedNode=f);else{c.stopImmediatePropagation();var C,I=!0;if(i.mostRecentlyFocusedNode)if(se(i.mostRecentlyFocusedNode)>0){var M=l(i.mostRecentlyFocusedNode),z=i.containerGroups[M].tabbableNodes;if(z.length>0){var P=z.findIndex(function(m){return m===i.mostRecentlyFocusedNode});P>=0&&(a.isKeyForward(i.recentNavEvent)?P+1=0&&(C=z[P-1],I=!1))}}else i.containerGroups.some(function(m){return m.tabbableNodes.some(function(x){return se(x)>0})})||(I=!1);else I=!1;I&&(C=g({target:i.mostRecentlyFocusedNode,isBackward:a.isKeyBackward(i.recentNavEvent)})),b(C||i.mostRecentlyFocusedNode||d())}i.recentNavEvent=void 0},F=function(c){var f=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;i.recentNavEvent=c;var p=g({event:c,isBackward:f});p&&(ge(c)&&c.preventDefault(),b(p))},L=function(c){if(Tr(c)&&ye(a.escapeDeactivates,c)!==!1){c.preventDefault(),s.deactivate();return}(a.isKeyForward(c)||a.isKeyBackward(c))&&F(c,a.isKeyBackward(c))},_=function(c){var f=Ae(c);l(f,c)>=0||ye(a.clickOutsideDeactivates,c)||ye(a.allowOutsideClick,c)||(c.preventDefault(),c.stopImmediatePropagation())},V=function(){if(i.active)return lt.activateTrap(n,s),i.delayInitialFocusTimer=a.delayInitialFocus?ct(function(){b(d())}):b(d()),r.addEventListener("focusin",T,!0),r.addEventListener("mousedown",S,{capture:!0,passive:!1}),r.addEventListener("touchstart",S,{capture:!0,passive:!1}),r.addEventListener("click",_,{capture:!0,passive:!1}),r.addEventListener("keydown",L,{capture:!0,passive:!1}),s},N=function(){if(i.active)return r.removeEventListener("focusin",T,!0),r.removeEventListener("mousedown",S,!0),r.removeEventListener("touchstart",S,!0),r.removeEventListener("click",_,!0),r.removeEventListener("keydown",L,!0),s},R=function(c){var f=c.some(function(p){var C=Array.from(p.removedNodes);return C.some(function(I){return I===i.mostRecentlyFocusedNode})});f&&b(d())},A=typeof window<"u"&&"MutationObserver"in window?new MutationObserver(R):void 0,O=function(){A&&(A.disconnect(),i.active&&!i.paused&&i.containers.map(function(c){A.observe(c,{subtree:!0,childList:!0})}))};return s={get active(){return i.active},get paused(){return i.paused},activate:function(c){if(i.active)return this;var f=u(c,"onActivate"),p=u(c,"onPostActivate"),C=u(c,"checkCanFocusTrap");C||v(),i.active=!0,i.paused=!1,i.nodeFocusedBeforeActivation=r.activeElement,f==null||f();var I=function(){C&&v(),V(),O(),p==null||p()};return C?(C(i.containers.concat()).then(I,I),this):(I(),this)},deactivate:function(c){if(!i.active)return this;var f=ut({onDeactivate:a.onDeactivate,onPostDeactivate:a.onPostDeactivate,checkCanReturnFocus:a.checkCanReturnFocus},c);clearTimeout(i.delayInitialFocusTimer),i.delayInitialFocusTimer=void 0,N(),i.active=!1,i.paused=!1,O(),lt.deactivateTrap(n,s);var p=u(f,"onDeactivate"),C=u(f,"onPostDeactivate"),I=u(f,"checkCanReturnFocus"),M=u(f,"returnFocus","returnFocusOnDeactivate");p==null||p();var z=function(){ct(function(){M&&b(E(i.nodeFocusedBeforeActivation)),C==null||C()})};return M&&I?(I(E(i.nodeFocusedBeforeActivation)).then(z,z),this):(z(),this)},pause:function(c){if(i.paused||!i.active)return this;var f=u(c,"onPause"),p=u(c,"onPostPause");return i.paused=!0,f==null||f(),N(),O(),p==null||p(),this},unpause:function(c){if(!i.paused||!i.active)return this;var f=u(c,"onUnpause"),p=u(c,"onPostUnpause");return i.paused=!1,f==null||f(),v(),V(),O(),p==null||p(),this},updateContainerElements:function(c){var f=[].concat(c).filter(Boolean);return i.containers=f.map(function(p){return typeof p=="string"?r.querySelector(p):p}),i.active&&v(),O(),this}},s.updateContainerElements(e),s};function kr(o,e={}){let t;const{immediate:r,...n}=e,a=oe(!1),i=oe(!1),s=d=>t&&t.activate(d),u=d=>t&&t.deactivate(d),l=()=>{t&&(t.pause(),i.value=!0)},h=()=>{t&&(t.unpause(),i.value=!1)};return $e(()=>kt(o),d=>{d&&(t=Dr(d,{...n,onActivate(){a.value=!0,e.onActivate&&e.onActivate()},onDeactivate(){a.value=!1,e.onDeactivate&&e.onDeactivate()}}),r&&s())},{flush:"post"}),Ot(()=>u()),{hasFocus:a,isPaused:i,activate:s,deactivate:u,pause:l,unpause:h}}class fe{constructor(e,t=!0,r=[],n=5e3){this.ctx=e,this.iframes=t,this.exclude=r,this.iframesTimeout=n}static matches(e,t){const r=typeof t=="string"?[t]:t,n=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector;if(n){let a=!1;return r.every(i=>n.call(e,i)?(a=!0,!1):!0),a}else return!1}getContexts(){let e,t=[];return typeof this.ctx>"u"||!this.ctx?e=[]:NodeList.prototype.isPrototypeOf(this.ctx)?e=Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?e=this.ctx:typeof this.ctx=="string"?e=Array.prototype.slice.call(document.querySelectorAll(this.ctx)):e=[this.ctx],e.forEach(r=>{const n=t.filter(a=>a.contains(r)).length>0;t.indexOf(r)===-1&&!n&&t.push(r)}),t}getIframeContents(e,t,r=()=>{}){let n;try{const a=e.contentWindow;if(n=a.document,!a||!n)throw new Error("iframe inaccessible")}catch{r()}n&&t(n)}isIframeBlank(e){const t="about:blank",r=e.getAttribute("src").trim();return e.contentWindow.location.href===t&&r!==t&&r}observeIframeLoad(e,t,r){let n=!1,a=null;const i=()=>{if(!n){n=!0,clearTimeout(a);try{this.isIframeBlank(e)||(e.removeEventListener("load",i),this.getIframeContents(e,t,r))}catch{r()}}};e.addEventListener("load",i),a=setTimeout(i,this.iframesTimeout)}onIframeReady(e,t,r){try{e.contentWindow.document.readyState==="complete"?this.isIframeBlank(e)?this.observeIframeLoad(e,t,r):this.getIframeContents(e,t,r):this.observeIframeLoad(e,t,r)}catch{r()}}waitForIframes(e,t){let r=0;this.forEachIframe(e,()=>!0,n=>{r++,this.waitForIframes(n.querySelector("html"),()=>{--r||t()})},n=>{n||t()})}forEachIframe(e,t,r,n=()=>{}){let a=e.querySelectorAll("iframe"),i=a.length,s=0;a=Array.prototype.slice.call(a);const u=()=>{--i<=0&&n(s)};i||u(),a.forEach(l=>{fe.matches(l,this.exclude)?u():this.onIframeReady(l,h=>{t(l)&&(s++,r(h)),u()},u)})}createIterator(e,t,r){return document.createNodeIterator(e,t,r,!1)}createInstanceOnIframe(e){return new fe(e.querySelector("html"),this.iframes)}compareNodeIframe(e,t,r){const n=e.compareDocumentPosition(r),a=Node.DOCUMENT_POSITION_PRECEDING;if(n&a)if(t!==null){const i=t.compareDocumentPosition(r),s=Node.DOCUMENT_POSITION_FOLLOWING;if(i&s)return!0}else return!0;return!1}getIteratorNode(e){const t=e.previousNode();let r;return t===null?r=e.nextNode():r=e.nextNode()&&e.nextNode(),{prevNode:t,node:r}}checkIframeFilter(e,t,r,n){let a=!1,i=!1;return n.forEach((s,u)=>{s.val===r&&(a=u,i=s.handled)}),this.compareNodeIframe(e,t,r)?(a===!1&&!i?n.push({val:r,handled:!0}):a!==!1&&!i&&(n[a].handled=!0),!0):(a===!1&&n.push({val:r,handled:!1}),!1)}handleOpenIframes(e,t,r,n){e.forEach(a=>{a.handled||this.getIframeContents(a.val,i=>{this.createInstanceOnIframe(i).forEachNode(t,r,n)})})}iterateThroughNodes(e,t,r,n,a){const i=this.createIterator(t,e,n);let s=[],u=[],l,h,d=()=>({prevNode:h,node:l}=this.getIteratorNode(i),l);for(;d();)this.iframes&&this.forEachIframe(t,v=>this.checkIframeFilter(l,h,v,s),v=>{this.createInstanceOnIframe(v).forEachNode(e,y=>u.push(y),n)}),u.push(l);u.forEach(v=>{r(v)}),this.iframes&&this.handleOpenIframes(s,e,r,n),a()}forEachNode(e,t,r,n=()=>{}){const a=this.getContexts();let i=a.length;i||n(),a.forEach(s=>{const u=()=>{this.iterateThroughNodes(e,s,t,r,()=>{--i<=0&&n()})};this.iframes?this.waitForIframes(s,u):u()})}}let Or=class{constructor(e){this.ctx=e,this.ie=!1;const t=window.navigator.userAgent;(t.indexOf("MSIE")>-1||t.indexOf("Trident")>-1)&&(this.ie=!0)}set opt(e){this._opt=Object.assign({},{element:"",className:"",exclude:[],iframes:!1,iframesTimeout:5e3,separateWordSearch:!0,diacritics:!0,synonyms:{},accuracy:"partially",acrossElements:!1,caseSensitive:!1,ignoreJoiners:!1,ignoreGroups:0,ignorePunctuation:[],wildcards:"disabled",each:()=>{},noMatch:()=>{},filter:()=>!0,done:()=>{},debug:!1,log:window.console},e)}get opt(){return this._opt}get iterator(){return new fe(this.ctx,this.opt.iframes,this.opt.exclude,this.opt.iframesTimeout)}log(e,t="debug"){const r=this.opt.log;this.opt.debug&&typeof r=="object"&&typeof r[t]=="function"&&r[t](`mark.js: ${e}`)}escapeStr(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}createRegExp(e){return this.opt.wildcards!=="disabled"&&(e=this.setupWildcardsRegExp(e)),e=this.escapeStr(e),Object.keys(this.opt.synonyms).length&&(e=this.createSynonymsRegExp(e)),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),this.opt.diacritics&&(e=this.createDiacriticsRegExp(e)),e=this.createMergedBlanksRegExp(e),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.createJoinersRegExp(e)),this.opt.wildcards!=="disabled"&&(e=this.createWildcardsRegExp(e)),e=this.createAccuracyRegExp(e),e}createSynonymsRegExp(e){const t=this.opt.synonyms,r=this.opt.caseSensitive?"":"i",n=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"";for(let a in t)if(t.hasOwnProperty(a)){const i=t[a],s=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(a):this.escapeStr(a),u=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(i):this.escapeStr(i);s!==""&&u!==""&&(e=e.replace(new RegExp(`(${this.escapeStr(s)}|${this.escapeStr(u)})`,`gm${r}`),n+`(${this.processSynomyms(s)}|${this.processSynomyms(u)})`+n))}return e}processSynomyms(e){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),e}setupWildcardsRegExp(e){return e=e.replace(/(?:\\)*\?/g,t=>t.charAt(0)==="\\"?"?":""),e.replace(/(?:\\)*\*/g,t=>t.charAt(0)==="\\"?"*":"")}createWildcardsRegExp(e){let t=this.opt.wildcards==="withSpaces";return e.replace(/\u0001/g,t?"[\\S\\s]?":"\\S?").replace(/\u0002/g,t?"[\\S\\s]*?":"\\S*")}setupIgnoreJoinersRegExp(e){return e.replace(/[^(|)\\]/g,(t,r,n)=>{let a=n.charAt(r+1);return/[(|)\\]/.test(a)||a===""?t:t+"\0"})}createJoinersRegExp(e){let t=[];const r=this.opt.ignorePunctuation;return Array.isArray(r)&&r.length&&t.push(this.escapeStr(r.join(""))),this.opt.ignoreJoiners&&t.push("\\u00ad\\u200b\\u200c\\u200d"),t.length?e.split(/\u0000+/).join(`[${t.join("")}]*`):e}createDiacriticsRegExp(e){const t=this.opt.caseSensitive?"":"i",r=this.opt.caseSensitive?["aàáảãạăằắẳẵặâầấẩẫậäåāą","AÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćč","CÇĆČ","dđď","DĐĎ","eèéẻẽẹêềếểễệëěēę","EÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïī","IÌÍỈĨỊÎÏĪ","lł","LŁ","nñňń","NÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøō","OÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rř","RŘ","sšśșş","SŠŚȘŞ","tťțţ","TŤȚŢ","uùúủũụưừứửữựûüůū","UÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿ","YÝỲỶỸỴŸ","zžżź","ZŽŻŹ"]:["aàáảãạăằắẳẵặâầấẩẫậäåāąAÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćčCÇĆČ","dđďDĐĎ","eèéẻẽẹêềếểễệëěēęEÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïīIÌÍỈĨỊÎÏĪ","lłLŁ","nñňńNÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøōOÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rřRŘ","sšśșşSŠŚȘŞ","tťțţTŤȚŢ","uùúủũụưừứửữựûüůūUÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿYÝỲỶỸỴŸ","zžżźZŽŻŹ"];let n=[];return e.split("").forEach(a=>{r.every(i=>{if(i.indexOf(a)!==-1){if(n.indexOf(i)>-1)return!1;e=e.replace(new RegExp(`[${i}]`,`gm${t}`),`[${i}]`),n.push(i)}return!0})}),e}createMergedBlanksRegExp(e){return e.replace(/[\s]+/gmi,"[\\s]+")}createAccuracyRegExp(e){const t="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~¡¿";let r=this.opt.accuracy,n=typeof r=="string"?r:r.value,a=typeof r=="string"?[]:r.limiters,i="";switch(a.forEach(s=>{i+=`|${this.escapeStr(s)}`}),n){case"partially":default:return`()(${e})`;case"complementary":return i="\\s"+(i||this.escapeStr(t)),`()([^${i}]*${e}[^${i}]*)`;case"exactly":return`(^|\\s${i})(${e})(?=$|\\s${i})`}}getSeparatedKeywords(e){let t=[];return e.forEach(r=>{this.opt.separateWordSearch?r.split(" ").forEach(n=>{n.trim()&&t.indexOf(n)===-1&&t.push(n)}):r.trim()&&t.indexOf(r)===-1&&t.push(r)}),{keywords:t.sort((r,n)=>n.length-r.length),length:t.length}}isNumeric(e){return Number(parseFloat(e))==e}checkRanges(e){if(!Array.isArray(e)||Object.prototype.toString.call(e[0])!=="[object Object]")return this.log("markRanges() will only accept an array of objects"),this.opt.noMatch(e),[];const t=[];let r=0;return e.sort((n,a)=>n.start-a.start).forEach(n=>{let{start:a,end:i,valid:s}=this.callNoMatchOnInvalidRanges(n,r);s&&(n.start=a,n.length=i-a,t.push(n),r=i)}),t}callNoMatchOnInvalidRanges(e,t){let r,n,a=!1;return e&&typeof e.start<"u"?(r=parseInt(e.start,10),n=r+parseInt(e.length,10),this.isNumeric(e.start)&&this.isNumeric(e.length)&&n-t>0&&n-r>0?a=!0:(this.log(`Ignoring invalid or overlapping range: ${JSON.stringify(e)}`),this.opt.noMatch(e))):(this.log(`Ignoring invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)),{start:r,end:n,valid:a}}checkWhitespaceRanges(e,t,r){let n,a=!0,i=r.length,s=t-i,u=parseInt(e.start,10)-s;return u=u>i?i:u,n=u+parseInt(e.length,10),n>i&&(n=i,this.log(`End range automatically set to the max value of ${i}`)),u<0||n-u<0||u>i||n>i?(a=!1,this.log(`Invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)):r.substring(u,n).replace(/\s+/g,"")===""&&(a=!1,this.log("Skipping whitespace only range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:u,end:n,valid:a}}getTextNodes(e){let t="",r=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,n=>{r.push({start:t.length,end:(t+=n.textContent).length,node:n})},n=>this.matchesExclude(n.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT,()=>{e({value:t,nodes:r})})}matchesExclude(e){return fe.matches(e,this.opt.exclude.concat(["script","style","title","head","html"]))}wrapRangeInTextNode(e,t,r){const n=this.opt.element?this.opt.element:"mark",a=e.splitText(t),i=a.splitText(r-t);let s=document.createElement(n);return s.setAttribute("data-markjs","true"),this.opt.className&&s.setAttribute("class",this.opt.className),s.textContent=a.textContent,a.parentNode.replaceChild(s,a),i}wrapRangeInMappedTextNode(e,t,r,n,a){e.nodes.every((i,s)=>{const u=e.nodes[s+1];if(typeof u>"u"||u.start>t){if(!n(i.node))return!1;const l=t-i.start,h=(r>i.end?i.end:r)-i.start,d=e.value.substr(0,i.start),v=e.value.substr(h+i.start);if(i.node=this.wrapRangeInTextNode(i.node,l,h),e.value=d+v,e.nodes.forEach((y,b)=>{b>=s&&(e.nodes[b].start>0&&b!==s&&(e.nodes[b].start-=h),e.nodes[b].end-=h)}),r-=h,a(i.node.previousSibling,i.start),r>i.end)t=i.end;else return!1}return!0})}wrapMatches(e,t,r,n,a){const i=t===0?0:t+1;this.getTextNodes(s=>{s.nodes.forEach(u=>{u=u.node;let l;for(;(l=e.exec(u.textContent))!==null&&l[i]!=="";){if(!r(l[i],u))continue;let h=l.index;if(i!==0)for(let d=1;d{let u;for(;(u=e.exec(s.value))!==null&&u[i]!=="";){let l=u.index;if(i!==0)for(let d=1;dr(u[i],d),(d,v)=>{e.lastIndex=v,n(d)})}a()})}wrapRangeFromIndex(e,t,r,n){this.getTextNodes(a=>{const i=a.value.length;e.forEach((s,u)=>{let{start:l,end:h,valid:d}=this.checkWhitespaceRanges(s,i,a.value);d&&this.wrapRangeInMappedTextNode(a,l,h,v=>t(v,s,a.value.substring(l,h),u),v=>{r(v,s)})}),n()})}unwrapMatches(e){const t=e.parentNode;let r=document.createDocumentFragment();for(;e.firstChild;)r.appendChild(e.removeChild(e.firstChild));t.replaceChild(r,e),this.ie?this.normalizeTextNode(t):t.normalize()}normalizeTextNode(e){if(e){if(e.nodeType===3)for(;e.nextSibling&&e.nextSibling.nodeType===3;)e.nodeValue+=e.nextSibling.nodeValue,e.parentNode.removeChild(e.nextSibling);else this.normalizeTextNode(e.firstChild);this.normalizeTextNode(e.nextSibling)}}markRegExp(e,t){this.opt=t,this.log(`Searching with expression "${e}"`);let r=0,n="wrapMatches";const a=i=>{r++,this.opt.each(i)};this.opt.acrossElements&&(n="wrapMatchesAcrossElements"),this[n](e,this.opt.ignoreGroups,(i,s)=>this.opt.filter(s,i,r),a,()=>{r===0&&this.opt.noMatch(e),this.opt.done(r)})}mark(e,t){this.opt=t;let r=0,n="wrapMatches";const{keywords:a,length:i}=this.getSeparatedKeywords(typeof e=="string"?[e]:e),s=this.opt.caseSensitive?"":"i",u=l=>{let h=new RegExp(this.createRegExp(l),`gm${s}`),d=0;this.log(`Searching with expression "${h}"`),this[n](h,1,(v,y)=>this.opt.filter(y,l,r,d),v=>{d++,r++,this.opt.each(v)},()=>{d===0&&this.opt.noMatch(l),a[i-1]===l?this.opt.done(r):u(a[a.indexOf(l)+1])})};this.opt.acrossElements&&(n="wrapMatchesAcrossElements"),i===0?this.opt.done(r):u(a[0])}markRanges(e,t){this.opt=t;let r=0,n=this.checkRanges(e);n&&n.length?(this.log("Starting to mark with the following ranges: "+JSON.stringify(n)),this.wrapRangeFromIndex(n,(a,i,s,u)=>this.opt.filter(a,i,s,u),(a,i)=>{r++,this.opt.each(a,i)},()=>{this.opt.done(r)})):this.opt.done(r)}unmark(e){this.opt=e;let t=this.opt.element?this.opt.element:"*";t+="[data-markjs]",this.opt.className&&(t+=`.${this.opt.className}`),this.log(`Removal selector "${t}"`),this.iterator.forEachNode(NodeFilter.SHOW_ELEMENT,r=>{this.unwrapMatches(r)},r=>{const n=fe.matches(r,t),a=this.matchesExclude(r);return!n||a?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},this.opt.done)}};function Rr(o){const e=new Or(o);return this.mark=(t,r)=>(e.mark(t,r),this),this.markRegExp=(t,r)=>(e.markRegExp(t,r),this),this.markRanges=(t,r)=>(e.markRanges(t,r),this),this.unmark=t=>(e.unmark(t),this),this}var W=function(){return W=Object.assign||function(e){for(var t,r=1,n=arguments.length;r0&&a[a.length-1])&&(l[0]===6||l[0]===2)){t=0;continue}if(l[0]===3&&(!a||l[1]>a[0]&&l[1]=o.length&&(o=void 0),{value:o&&o[r++],done:!o}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function J(o,e){var t=typeof Symbol=="function"&&o[Symbol.iterator];if(!t)return o;var r=t.call(o),n,a=[],i;try{for(;(e===void 0||e-- >0)&&!(n=r.next()).done;)a.push(n.value)}catch(s){i={error:s}}finally{try{n&&!n.done&&(t=r.return)&&t.call(r)}finally{if(i)throw i.error}}return a}var Lr="ENTRIES",Ft="KEYS",Et="VALUES",G="",Me=function(){function o(e,t){var r=e._tree,n=Array.from(r.keys());this.set=e,this._type=t,this._path=n.length>0?[{node:r,keys:n}]:[]}return o.prototype.next=function(){var e=this.dive();return this.backtrack(),e},o.prototype.dive=function(){if(this._path.length===0)return{done:!0,value:void 0};var e=ce(this._path),t=e.node,r=e.keys;if(ce(r)===G)return{done:!1,value:this.result()};var n=t.get(ce(r));return this._path.push({node:n,keys:Array.from(n.keys())}),this.dive()},o.prototype.backtrack=function(){if(this._path.length!==0){var e=ce(this._path).keys;e.pop(),!(e.length>0)&&(this._path.pop(),this.backtrack())}},o.prototype.key=function(){return this.set._prefix+this._path.map(function(e){var t=e.keys;return ce(t)}).filter(function(e){return e!==G}).join("")},o.prototype.value=function(){return ce(this._path).node.get(G)},o.prototype.result=function(){switch(this._type){case Et:return this.value();case Ft:return this.key();default:return[this.key(),this.value()]}},o.prototype[Symbol.iterator]=function(){return this},o}(),ce=function(o){return o[o.length-1]},zr=function(o,e,t){var r=new Map;if(e===void 0)return r;for(var n=e.length+1,a=n+t,i=new Uint8Array(a*n).fill(t+1),s=0;st)continue e}St(o.get(y),e,t,r,n,E,i,s+y)}}}catch(f){u={error:f}}finally{try{v&&!v.done&&(l=d.return)&&l.call(d)}finally{if(u)throw u.error}}},Le=function(){function o(e,t){e===void 0&&(e=new Map),t===void 0&&(t=""),this._size=void 0,this._tree=e,this._prefix=t}return o.prototype.atPrefix=function(e){var t,r;if(!e.startsWith(this._prefix))throw new Error("Mismatched prefix");var n=J(ke(this._tree,e.slice(this._prefix.length)),2),a=n[0],i=n[1];if(a===void 0){var s=J(je(i),2),u=s[0],l=s[1];try{for(var h=D(u.keys()),d=h.next();!d.done;d=h.next()){var v=d.value;if(v!==G&&v.startsWith(l)){var y=new Map;return y.set(v.slice(l.length),u.get(v)),new o(y,e)}}}catch(b){t={error:b}}finally{try{d&&!d.done&&(r=h.return)&&r.call(h)}finally{if(t)throw t.error}}}return new o(a,e)},o.prototype.clear=function(){this._size=void 0,this._tree.clear()},o.prototype.delete=function(e){return this._size=void 0,Pr(this._tree,e)},o.prototype.entries=function(){return new Me(this,Lr)},o.prototype.forEach=function(e){var t,r;try{for(var n=D(this),a=n.next();!a.done;a=n.next()){var i=J(a.value,2),s=i[0],u=i[1];e(s,u,this)}}catch(l){t={error:l}}finally{try{a&&!a.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}},o.prototype.fuzzyGet=function(e,t){return zr(this._tree,e,t)},o.prototype.get=function(e){var t=Ke(this._tree,e);return t!==void 0?t.get(G):void 0},o.prototype.has=function(e){var t=Ke(this._tree,e);return t!==void 0&&t.has(G)},o.prototype.keys=function(){return new Me(this,Ft)},o.prototype.set=function(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;var r=ze(this._tree,e);return r.set(G,t),this},Object.defineProperty(o.prototype,"size",{get:function(){if(this._size)return this._size;this._size=0;for(var e=this.entries();!e.next().done;)this._size+=1;return this._size},enumerable:!1,configurable:!0}),o.prototype.update=function(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;var r=ze(this._tree,e);return r.set(G,t(r.get(G))),this},o.prototype.fetch=function(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;var r=ze(this._tree,e),n=r.get(G);return n===void 0&&r.set(G,n=t()),n},o.prototype.values=function(){return new Me(this,Et)},o.prototype[Symbol.iterator]=function(){return this.entries()},o.from=function(e){var t,r,n=new o;try{for(var a=D(e),i=a.next();!i.done;i=a.next()){var s=J(i.value,2),u=s[0],l=s[1];n.set(u,l)}}catch(h){t={error:h}}finally{try{i&&!i.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}return n},o.fromObject=function(e){return o.from(Object.entries(e))},o}(),ke=function(o,e,t){var r,n;if(t===void 0&&(t=[]),e.length===0||o==null)return[o,t];try{for(var a=D(o.keys()),i=a.next();!i.done;i=a.next()){var s=i.value;if(s!==G&&e.startsWith(s))return t.push([o,s]),ke(o.get(s),e.slice(s.length),t)}}catch(u){r={error:u}}finally{try{i&&!i.done&&(n=a.return)&&n.call(a)}finally{if(r)throw r.error}}return t.push([o,e]),ke(void 0,"",t)},Ke=function(o,e){var t,r;if(e.length===0||o==null)return o;try{for(var n=D(o.keys()),a=n.next();!a.done;a=n.next()){var i=a.value;if(i!==G&&e.startsWith(i))return Ke(o.get(i),e.slice(i.length))}}catch(s){t={error:s}}finally{try{a&&!a.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}},ze=function(o,e){var t,r,n=e.length;e:for(var a=0;o&&a0)throw new Error("Expected documents to be present. Omit the argument to remove all documents.");this._index=new Le,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldLength=new Map,this._avgFieldLength=[],this._storedFields=new Map,this._nextId=0}},o.prototype.discard=function(e){var t=this,r=this._idToShortId.get(e);if(r==null)throw new Error("MiniSearch: cannot discard document with ID ".concat(e,": it is not in the index"));this._idToShortId.delete(e),this._documentIds.delete(r),this._storedFields.delete(r),(this._fieldLength.get(r)||[]).forEach(function(n,a){t.removeFieldLength(r,a,t._documentCount,n)}),this._fieldLength.delete(r),this._documentCount-=1,this._dirtCount+=1,this.maybeAutoVacuum()},o.prototype.maybeAutoVacuum=function(){if(this._options.autoVacuum!==!1){var e=this._options.autoVacuum,t=e.minDirtFactor,r=e.minDirtCount,n=e.batchSize,a=e.batchWait;this.conditionalVacuum({batchSize:n,batchWait:a},{minDirtCount:r,minDirtFactor:t})}},o.prototype.discardAll=function(e){var t,r,n=this._options.autoVacuum;try{this._options.autoVacuum=!1;try{for(var a=D(e),i=a.next();!i.done;i=a.next()){var s=i.value;this.discard(s)}}catch(u){t={error:u}}finally{try{i&&!i.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}}finally{this._options.autoVacuum=n}this.maybeAutoVacuum()},o.prototype.replace=function(e){var t=this._options,r=t.idField,n=t.extractField,a=n(e,r);this.discard(a),this.add(e)},o.prototype.vacuum=function(e){return e===void 0&&(e={}),this.conditionalVacuum(e)},o.prototype.conditionalVacuum=function(e,t){var r=this;return this._currentVacuum?(this._enqueuedVacuumConditions=this._enqueuedVacuumConditions&&t,this._enqueuedVacuum!=null?this._enqueuedVacuum:(this._enqueuedVacuum=this._currentVacuum.then(function(){var n=r._enqueuedVacuumConditions;return r._enqueuedVacuumConditions=Ue,r.performVacuuming(e,n)}),this._enqueuedVacuum)):this.vacuumConditionsMet(t)===!1?Promise.resolve():(this._currentVacuum=this.performVacuuming(e),this._currentVacuum)},o.prototype.performVacuuming=function(e,t){return _r(this,void 0,void 0,function(){var r,n,a,i,s,u,l,h,d,v,y,b,E,g,S,T,F,L,_,V,N,R,A,O,w;return Mr(this,function(c){switch(c.label){case 0:if(r=this._dirtCount,!this.vacuumConditionsMet(t))return[3,10];n=e.batchSize||Je.batchSize,a=e.batchWait||Je.batchWait,i=1,c.label=1;case 1:c.trys.push([1,7,8,9]),s=D(this._index),u=s.next(),c.label=2;case 2:if(u.done)return[3,6];l=J(u.value,2),h=l[0],d=l[1];try{for(v=(R=void 0,D(d)),y=v.next();!y.done;y=v.next()){b=J(y.value,2),E=b[0],g=b[1];try{for(S=(O=void 0,D(g)),T=S.next();!T.done;T=S.next())F=J(T.value,1),L=F[0],!this._documentIds.has(L)&&(g.size<=1?d.delete(E):g.delete(L))}catch(f){O={error:f}}finally{try{T&&!T.done&&(w=S.return)&&w.call(S)}finally{if(O)throw O.error}}}}catch(f){R={error:f}}finally{try{y&&!y.done&&(A=v.return)&&A.call(v)}finally{if(R)throw R.error}}return this._index.get(h).size===0&&this._index.delete(h),i%n!==0?[3,4]:[4,new Promise(function(f){return setTimeout(f,a)})];case 3:c.sent(),c.label=4;case 4:i+=1,c.label=5;case 5:return u=s.next(),[3,2];case 6:return[3,9];case 7:return _=c.sent(),V={error:_},[3,9];case 8:try{u&&!u.done&&(N=s.return)&&N.call(s)}finally{if(V)throw V.error}return[7];case 9:this._dirtCount-=r,c.label=10;case 10:return[4,null];case 11:return c.sent(),this._currentVacuum=this._enqueuedVacuum,this._enqueuedVacuum=null,[2]}})})},o.prototype.vacuumConditionsMet=function(e){if(e==null)return!0;var t=e.minDirtCount,r=e.minDirtFactor;return t=t||Ve.minDirtCount,r=r||Ve.minDirtFactor,this.dirtCount>=t&&this.dirtFactor>=r},Object.defineProperty(o.prototype,"isVacuuming",{get:function(){return this._currentVacuum!=null},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"dirtCount",{get:function(){return this._dirtCount},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"dirtFactor",{get:function(){return this._dirtCount/(1+this._documentCount+this._dirtCount)},enumerable:!1,configurable:!0}),o.prototype.has=function(e){return this._idToShortId.has(e)},o.prototype.getStoredFields=function(e){var t=this._idToShortId.get(e);if(t!=null)return this._storedFields.get(t)},o.prototype.search=function(e,t){var r,n;t===void 0&&(t={});var a=this.executeQuery(e,t),i=[];try{for(var s=D(a),u=s.next();!u.done;u=s.next()){var l=J(u.value,2),h=l[0],d=l[1],v=d.score,y=d.terms,b=d.match,E=y.length||1,g={id:this._documentIds.get(h),score:v*E,terms:Object.keys(b),queryTerms:y,match:b};Object.assign(g,this._storedFields.get(h)),(t.filter==null||t.filter(g))&&i.push(g)}}catch(S){r={error:S}}finally{try{u&&!u.done&&(n=s.return)&&n.call(s)}finally{if(r)throw r.error}}return e===o.wildcard&&t.boostDocument==null&&this._options.searchOptions.boostDocument==null||i.sort(vt),i},o.prototype.autoSuggest=function(e,t){var r,n,a,i;t===void 0&&(t={}),t=W(W({},this._options.autoSuggestOptions),t);var s=new Map;try{for(var u=D(this.search(e,t)),l=u.next();!l.done;l=u.next()){var h=l.value,d=h.score,v=h.terms,y=v.join(" "),b=s.get(y);b!=null?(b.score+=d,b.count+=1):s.set(y,{score:d,terms:v,count:1})}}catch(_){r={error:_}}finally{try{l&&!l.done&&(n=u.return)&&n.call(u)}finally{if(r)throw r.error}}var E=[];try{for(var g=D(s),S=g.next();!S.done;S=g.next()){var T=J(S.value,2),b=T[0],F=T[1],d=F.score,v=F.terms,L=F.count;E.push({suggestion:b,terms:v,score:d/L})}}catch(_){a={error:_}}finally{try{S&&!S.done&&(i=g.return)&&i.call(g)}finally{if(a)throw a.error}}return E.sort(vt),E},Object.defineProperty(o.prototype,"documentCount",{get:function(){return this._documentCount},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"termCount",{get:function(){return this._index.size},enumerable:!1,configurable:!0}),o.loadJSON=function(e,t){if(t==null)throw new Error("MiniSearch: loadJSON should be given the same options used when serializing the index");return this.loadJS(JSON.parse(e),t)},o.getDefault=function(e){if(Be.hasOwnProperty(e))return Pe(Be,e);throw new Error('MiniSearch: unknown option "'.concat(e,'"'))},o.loadJS=function(e,t){var r,n,a,i,s,u,l=e.index,h=e.documentCount,d=e.nextId,v=e.documentIds,y=e.fieldIds,b=e.fieldLength,E=e.averageFieldLength,g=e.storedFields,S=e.dirtCount,T=e.serializationVersion;if(T!==1&&T!==2)throw new Error("MiniSearch: cannot deserialize an index created with an incompatible version");var F=new o(t);F._documentCount=h,F._nextId=d,F._documentIds=Te(v),F._idToShortId=new Map,F._fieldIds=y,F._fieldLength=Te(b),F._avgFieldLength=E,F._storedFields=Te(g),F._dirtCount=S||0,F._index=new Le;try{for(var L=D(F._documentIds),_=L.next();!_.done;_=L.next()){var V=J(_.value,2),N=V[0],R=V[1];F._idToShortId.set(R,N)}}catch(P){r={error:P}}finally{try{_&&!_.done&&(n=L.return)&&n.call(L)}finally{if(r)throw r.error}}try{for(var A=D(l),O=A.next();!O.done;O=A.next()){var w=J(O.value,2),c=w[0],f=w[1],p=new Map;try{for(var C=(s=void 0,D(Object.keys(f))),I=C.next();!I.done;I=C.next()){var M=I.value,z=f[M];T===1&&(z=z.ds),p.set(parseInt(M,10),Te(z))}}catch(P){s={error:P}}finally{try{I&&!I.done&&(u=C.return)&&u.call(C)}finally{if(s)throw s.error}}F._index.set(c,p)}}catch(P){a={error:P}}finally{try{O&&!O.done&&(i=A.return)&&i.call(A)}finally{if(a)throw a.error}}return F},o.prototype.executeQuery=function(e,t){var r=this;if(t===void 0&&(t={}),e===o.wildcard)return this.executeWildcardQuery(t);if(typeof e!="string"){var n=W(W(W({},t),e),{queries:void 0}),a=e.queries.map(function(g){return r.executeQuery(g,n)});return this.combineResults(a,n.combineWith)}var i=this._options,s=i.tokenize,u=i.processTerm,l=i.searchOptions,h=W(W({tokenize:s,processTerm:u},l),t),d=h.tokenize,v=h.processTerm,y=d(e).flatMap(function(g){return v(g)}).filter(function(g){return!!g}),b=y.map(Jr(h)),E=b.map(function(g){return r.executeQuerySpec(g,h)});return this.combineResults(E,h.combineWith)},o.prototype.executeQuerySpec=function(e,t){var r,n,a,i,s=W(W({},this._options.searchOptions),t),u=(s.fields||this._options.fields).reduce(function(M,z){var P;return W(W({},M),(P={},P[z]=Pe(s.boost,z)||1,P))},{}),l=s.boostDocument,h=s.weights,d=s.maxFuzzy,v=s.bm25,y=W(W({},ht.weights),h),b=y.fuzzy,E=y.prefix,g=this._index.get(e.term),S=this.termResults(e.term,e.term,1,g,u,l,v),T,F;if(e.prefix&&(T=this._index.atPrefix(e.term)),e.fuzzy){var L=e.fuzzy===!0?.2:e.fuzzy,_=L<1?Math.min(d,Math.round(e.term.length*L)):L;_&&(F=this._index.fuzzyGet(e.term,_))}if(T)try{for(var V=D(T),N=V.next();!N.done;N=V.next()){var R=J(N.value,2),A=R[0],O=R[1],w=A.length-e.term.length;if(w){F==null||F.delete(A);var c=E*A.length/(A.length+.3*w);this.termResults(e.term,A,c,O,u,l,v,S)}}}catch(M){r={error:M}}finally{try{N&&!N.done&&(n=V.return)&&n.call(V)}finally{if(r)throw r.error}}if(F)try{for(var f=D(F.keys()),p=f.next();!p.done;p=f.next()){var A=p.value,C=J(F.get(A),2),I=C[0],w=C[1];if(w){var c=b*A.length/(A.length+w);this.termResults(e.term,A,c,I,u,l,v,S)}}}catch(M){a={error:M}}finally{try{p&&!p.done&&(i=f.return)&&i.call(f)}finally{if(a)throw a.error}}return S},o.prototype.executeWildcardQuery=function(e){var t,r,n=new Map,a=W(W({},this._options.searchOptions),e);try{for(var i=D(this._documentIds),s=i.next();!s.done;s=i.next()){var u=J(s.value,2),l=u[0],h=u[1],d=a.boostDocument?a.boostDocument(h,"",this._storedFields.get(l)):1;n.set(l,{score:d,terms:[],match:{}})}}catch(v){t={error:v}}finally{try{s&&!s.done&&(r=i.return)&&r.call(i)}finally{if(t)throw t.error}}return n},o.prototype.combineResults=function(e,t){if(t===void 0&&(t=Ge),e.length===0)return new Map;var r=t.toLowerCase();return e.reduce($r[r])||new Map},o.prototype.toJSON=function(){var e,t,r,n,a=[];try{for(var i=D(this._index),s=i.next();!s.done;s=i.next()){var u=J(s.value,2),l=u[0],h=u[1],d={};try{for(var v=(r=void 0,D(h)),y=v.next();!y.done;y=v.next()){var b=J(y.value,2),E=b[0],g=b[1];d[E]=Object.fromEntries(g)}}catch(S){r={error:S}}finally{try{y&&!y.done&&(n=v.return)&&n.call(v)}finally{if(r)throw r.error}}a.push([l,d])}}catch(S){e={error:S}}finally{try{s&&!s.done&&(t=i.return)&&t.call(i)}finally{if(e)throw e.error}}return{documentCount:this._documentCount,nextId:this._nextId,documentIds:Object.fromEntries(this._documentIds),fieldIds:this._fieldIds,fieldLength:Object.fromEntries(this._fieldLength),averageFieldLength:this._avgFieldLength,storedFields:Object.fromEntries(this._storedFields),dirtCount:this._dirtCount,index:a,serializationVersion:2}},o.prototype.termResults=function(e,t,r,n,a,i,s,u){var l,h,d,v,y;if(u===void 0&&(u=new Map),n==null)return u;try{for(var b=D(Object.keys(a)),E=b.next();!E.done;E=b.next()){var g=E.value,S=a[g],T=this._fieldIds[g],F=n.get(T);if(F!=null){var L=F.size,_=this._avgFieldLength[T];try{for(var V=(d=void 0,D(F.keys())),N=V.next();!N.done;N=V.next()){var R=N.value;if(!this._documentIds.has(R)){this.removeTerm(T,R,t),L-=1;continue}var A=i?i(this._documentIds.get(R),t,this._storedFields.get(R)):1;if(A){var O=F.get(R),w=this._fieldLength.get(R)[T],c=Kr(O,L,this._documentCount,w,_,s),f=r*S*A*c,p=u.get(R);if(p){p.score+=f,jr(p.terms,e);var C=Pe(p.match,t);C?C.push(g):p.match[t]=[g]}else u.set(R,{score:f,terms:[e],match:(y={},y[t]=[g],y)})}}}catch(I){d={error:I}}finally{try{N&&!N.done&&(v=V.return)&&v.call(V)}finally{if(d)throw d.error}}}}}catch(I){l={error:I}}finally{try{E&&!E.done&&(h=b.return)&&h.call(b)}finally{if(l)throw l.error}}return u},o.prototype.addTerm=function(e,t,r){var n=this._index.fetch(r,pt),a=n.get(e);if(a==null)a=new Map,a.set(t,1),n.set(e,a);else{var i=a.get(t);a.set(t,(i||0)+1)}},o.prototype.removeTerm=function(e,t,r){if(!this._index.has(r)){this.warnDocumentChanged(t,e,r);return}var n=this._index.fetch(r,pt),a=n.get(e);a==null||a.get(t)==null?this.warnDocumentChanged(t,e,r):a.get(t)<=1?a.size<=1?n.delete(e):a.delete(t):a.set(t,a.get(t)-1),this._index.get(r).size===0&&this._index.delete(r)},o.prototype.warnDocumentChanged=function(e,t,r){var n,a;try{for(var i=D(Object.keys(this._fieldIds)),s=i.next();!s.done;s=i.next()){var u=s.value;if(this._fieldIds[u]===t){this._options.logger("warn","MiniSearch: document with ID ".concat(this._documentIds.get(e),' has changed before removal: term "').concat(r,'" was not present in field "').concat(u,'". Removing a document after it has changed can corrupt the index!'),"version_conflict");return}}}catch(l){n={error:l}}finally{try{s&&!s.done&&(a=i.return)&&a.call(i)}finally{if(n)throw n.error}}},o.prototype.addDocumentId=function(e){var t=this._nextId;return this._idToShortId.set(e,t),this._documentIds.set(t,e),this._documentCount+=1,this._nextId+=1,t},o.prototype.addFields=function(e){for(var t=0;t(qt("data-v-f4c4f812"),o=o(),Ht(),o),qr=["aria-owns"],Hr={class:"shell"},Yr=["title"],Zr=Y(()=>k("span",{"aria-hidden":"true",class:"vpi-search search-icon local-search-icon"},null,-1)),Xr=[Zr],ea={class:"search-actions before"},ta=["title"],ra=Y(()=>k("span",{class:"vpi-arrow-left local-search-icon"},null,-1)),aa=[ra],na=["placeholder"],ia={class:"search-actions"},oa=["title"],sa=Y(()=>k("span",{class:"vpi-layout-list local-search-icon"},null,-1)),ua=[sa],la=["disabled","title"],ca=Y(()=>k("span",{class:"vpi-delete local-search-icon"},null,-1)),fa=[ca],ha=["id","role","aria-labelledby"],da=["aria-selected"],va=["href","aria-label","onMouseenter","onFocusin"],pa={class:"titles"},ya=Y(()=>k("span",{class:"title-icon"},"#",-1)),ma=["innerHTML"],ga=Y(()=>k("span",{class:"vpi-chevron-right local-search-icon"},null,-1)),ba={class:"title main"},wa=["innerHTML"],xa={key:0,class:"excerpt-wrapper"},Fa={key:0,class:"excerpt",inert:""},Ea=["innerHTML"],Sa=Y(()=>k("div",{class:"excerpt-gradient-bottom"},null,-1)),Aa=Y(()=>k("div",{class:"excerpt-gradient-top"},null,-1)),Ta={key:0,class:"no-results"},Na={class:"search-keyboard-shortcuts"},Ca=["aria-label"],Ia=Y(()=>k("span",{class:"vpi-arrow-up navigate-icon"},null,-1)),Da=[Ia],ka=["aria-label"],Oa=Y(()=>k("span",{class:"vpi-arrow-down navigate-icon"},null,-1)),Ra=[Oa],_a=["aria-label"],Ma=Y(()=>k("span",{class:"vpi-corner-down-left navigate-icon"},null,-1)),La=[Ma],za=["aria-label"],Pa=Rt({__name:"VPLocalSearchBox",emits:["close"],setup(o,{emit:e}){var z,P;const t=e,r=xe(),n=xe(),a=xe(nr),i=rr(),{activate:s}=kr(r,{immediate:!0,allowOutsideClick:!0,clickOutsideDeactivates:!0,escapeDeactivates:!0}),{localeIndex:u,theme:l}=i,h=tt(async()=>{var m,x,$,K,Q,q,B,U,Z;return it(Vr.loadJSON(($=await((x=(m=a.value)[u.value])==null?void 0:x.call(m)))==null?void 0:$.default,{fields:["title","titles","text"],storeFields:["title","titles"],searchOptions:{fuzzy:.2,prefix:!0,boost:{title:4,text:2,titles:1},...((K=l.value.search)==null?void 0:K.provider)==="local"&&((q=(Q=l.value.search.options)==null?void 0:Q.miniSearch)==null?void 0:q.searchOptions)},...((B=l.value.search)==null?void 0:B.provider)==="local"&&((Z=(U=l.value.search.options)==null?void 0:U.miniSearch)==null?void 0:Z.options)}))}),v=Fe(()=>{var m,x;return((m=l.value.search)==null?void 0:m.provider)==="local"&&((x=l.value.search.options)==null?void 0:x.disableQueryPersistence)===!0}).value?oe(""):_t("vitepress:local-search-filter",""),y=Mt("vitepress:local-search-detailed-list",((z=l.value.search)==null?void 0:z.provider)==="local"&&((P=l.value.search.options)==null?void 0:P.detailedView)===!0),b=Fe(()=>{var m,x,$;return((m=l.value.search)==null?void 0:m.provider)==="local"&&(((x=l.value.search.options)==null?void 0:x.disableDetailedView)===!0||(($=l.value.search.options)==null?void 0:$.detailedView)===!1)}),E=Fe(()=>{var x,$,K,Q,q,B,U;const m=((x=l.value.search)==null?void 0:x.options)??l.value.algolia;return((q=(Q=(K=($=m==null?void 0:m.locales)==null?void 0:$[u.value])==null?void 0:K.translations)==null?void 0:Q.button)==null?void 0:q.buttonText)||((U=(B=m==null?void 0:m.translations)==null?void 0:B.button)==null?void 0:U.buttonText)||"Search"});Lt(()=>{b.value&&(y.value=!1)});const g=xe([]),S=oe(!1);$e(v,()=>{S.value=!1});const T=tt(async()=>{if(n.value)return it(new Rr(n.value))},null),F=new Qr(16);zt(()=>[h.value,v.value,y.value],async([m,x,$],K,Q)=>{var be,Qe,qe,He;(K==null?void 0:K[0])!==m&&F.clear();let q=!1;if(Q(()=>{q=!0}),!m)return;g.value=m.search(x).slice(0,16),S.value=!0;const B=$?await Promise.all(g.value.map(H=>L(H.id))):[];if(q)return;for(const{id:H,mod:ae}of B){const ne=H.slice(0,H.indexOf("#"));let te=F.get(ne);if(te)continue;te=new Map,F.set(ne,te);const X=ae.default??ae;if(X!=null&&X.render||X!=null&&X.setup){const ie=Yt(X);ie.config.warnHandler=()=>{},ie.provide(Zt,i),Object.defineProperties(ie.config.globalProperties,{$frontmatter:{get(){return i.frontmatter.value}},$params:{get(){return i.page.value.params}}});const Ye=document.createElement("div");ie.mount(Ye),Ye.querySelectorAll("h1, h2, h3, h4, h5, h6").forEach(he=>{var et;const we=(et=he.querySelector("a"))==null?void 0:et.getAttribute("href"),Ze=(we==null?void 0:we.startsWith("#"))&&we.slice(1);if(!Ze)return;let Xe="";for(;(he=he.nextElementSibling)&&!/^h[1-6]$/i.test(he.tagName);)Xe+=he.outerHTML;te.set(Ze,Xe)}),ie.unmount()}if(q)return}const U=new Set;if(g.value=g.value.map(H=>{const[ae,ne]=H.id.split("#"),te=F.get(ae),X=(te==null?void 0:te.get(ne))??"";for(const ie in H.match)U.add(ie);return{...H,text:X}}),await de(),q)return;await new Promise(H=>{var ae;(ae=T.value)==null||ae.unmark({done:()=>{var ne;(ne=T.value)==null||ne.markRegExp(M(U),{done:H})}})});const Z=((be=r.value)==null?void 0:be.querySelectorAll(".result .excerpt"))??[];for(const H of Z)(Qe=H.querySelector('mark[data-markjs="true"]'))==null||Qe.scrollIntoView({block:"center"});(He=(qe=n.value)==null?void 0:qe.firstElementChild)==null||He.scrollIntoView({block:"start"})},{debounce:200,immediate:!0});async function L(m){const x=Xt(m.slice(0,m.indexOf("#")));try{if(!x)throw new Error(`Cannot find file for id: ${m}`);return{id:m,mod:await import(x)}}catch($){return console.error($),{id:m,mod:{}}}}const _=oe(),V=Fe(()=>{var m;return((m=v.value)==null?void 0:m.length)<=0});function N(m=!0){var x,$;(x=_.value)==null||x.focus(),m&&(($=_.value)==null||$.select())}Re(()=>{N()});function R(m){m.pointerType==="mouse"&&N()}const A=oe(-1),O=oe(!1);$e(g,m=>{A.value=m.length?0:-1,w()});function w(){de(()=>{const m=document.querySelector(".result.selected");m==null||m.scrollIntoView({block:"nearest"})})}Ee("ArrowUp",m=>{m.preventDefault(),A.value--,A.value<0&&(A.value=g.value.length-1),O.value=!0,w()}),Ee("ArrowDown",m=>{m.preventDefault(),A.value++,A.value>=g.value.length&&(A.value=0),O.value=!0,w()});const c=Pt();Ee("Enter",m=>{if(m.isComposing||m.target instanceof HTMLButtonElement&&m.target.type!=="submit")return;const x=g.value[A.value];if(m.target instanceof HTMLInputElement&&!x){m.preventDefault();return}x&&(c.go(x.id),t("close"))}),Ee("Escape",()=>{t("close")});const p=ar({modal:{displayDetails:"Display detailed list",resetButtonTitle:"Reset search",backButtonTitle:"Close search",noResultsText:"No results for",footer:{selectText:"to select",selectKeyAriaLabel:"enter",navigateText:"to navigate",navigateUpKeyAriaLabel:"up arrow",navigateDownKeyAriaLabel:"down arrow",closeText:"to close",closeKeyAriaLabel:"escape"}}});Re(()=>{window.history.pushState(null,"",null)}),Bt("popstate",m=>{m.preventDefault(),t("close")});const C=Vt($t?document.body:null);Re(()=>{de(()=>{C.value=!0,de().then(()=>s())})}),Wt(()=>{C.value=!1});function I(){v.value="",de().then(()=>N(!1))}function M(m){return new RegExp([...m].sort((x,$)=>$.length-x.length).map(x=>`(${er(x)})`).join("|"),"gi")}return(m,x)=>{var $,K,Q,q;return ee(),Kt(Qt,{to:"body"},[k("div",{ref_key:"el",ref:r,role:"button","aria-owns":($=g.value)!=null&&$.length?"localsearch-list":void 0,"aria-expanded":"true","aria-haspopup":"listbox","aria-labelledby":"localsearch-label",class:"VPLocalSearchBox"},[k("div",{class:"backdrop",onClick:x[0]||(x[0]=B=>m.$emit("close"))}),k("div",Hr,[k("form",{class:"search-bar",onPointerup:x[4]||(x[4]=B=>R(B)),onSubmit:x[5]||(x[5]=Jt(()=>{},["prevent"]))},[k("label",{title:E.value,id:"localsearch-label",for:"localsearch-input"},Xr,8,Yr),k("div",ea,[k("button",{class:"back-button",title:j(p)("modal.backButtonTitle"),onClick:x[1]||(x[1]=B=>m.$emit("close"))},aa,8,ta)]),Ut(k("input",{ref_key:"searchInput",ref:_,"onUpdate:modelValue":x[2]||(x[2]=B=>Gt(v)?v.value=B:null),placeholder:E.value,id:"localsearch-input","aria-labelledby":"localsearch-label",class:"search-input"},null,8,na),[[jt,j(v)]]),k("div",ia,[b.value?Se("",!0):(ee(),re("button",{key:0,class:rt(["toggle-layout-button",{"detailed-list":j(y)}]),type:"button",title:j(p)("modal.displayDetails"),onClick:x[3]||(x[3]=B=>A.value>-1&&(y.value=!j(y)))},ua,10,oa)),k("button",{class:"clear-button",type:"reset",disabled:V.value,title:j(p)("modal.resetButtonTitle"),onClick:I},fa,8,la)])],32),k("ul",{ref_key:"resultsEl",ref:n,id:(K=g.value)!=null&&K.length?"localsearch-list":void 0,role:(Q=g.value)!=null&&Q.length?"listbox":void 0,"aria-labelledby":(q=g.value)!=null&&q.length?"localsearch-label":void 0,class:"results",onMousemove:x[7]||(x[7]=B=>O.value=!1)},[(ee(!0),re(nt,null,at(g.value,(B,U)=>(ee(),re("li",{key:B.id,role:"option","aria-selected":A.value===U?"true":"false"},[k("a",{href:B.id,class:rt(["result",{selected:A.value===U}]),"aria-label":[...B.titles,B.title].join(" > "),onMouseenter:Z=>!O.value&&(A.value=U),onFocusin:Z=>A.value=U,onClick:x[6]||(x[6]=Z=>m.$emit("close"))},[k("div",null,[k("div",pa,[ya,(ee(!0),re(nt,null,at(B.titles,(Z,be)=>(ee(),re("span",{key:be,class:"title"},[k("span",{class:"text",innerHTML:Z},null,8,ma),ga]))),128)),k("span",ba,[k("span",{class:"text",innerHTML:B.title},null,8,wa)])]),j(y)?(ee(),re("div",xa,[B.text?(ee(),re("div",Fa,[k("div",{class:"vp-doc",innerHTML:B.text},null,8,Ea)])):Se("",!0),Sa,Aa])):Se("",!0)])],42,va)],8,da))),128)),j(v)&&!g.value.length&&S.value?(ee(),re("li",Ta,[ve(pe(j(p)("modal.noResultsText"))+' "',1),k("strong",null,pe(j(v)),1),ve('" ')])):Se("",!0)],40,ha),k("div",Na,[k("span",null,[k("kbd",{"aria-label":j(p)("modal.footer.navigateUpKeyAriaLabel")},Da,8,Ca),k("kbd",{"aria-label":j(p)("modal.footer.navigateDownKeyAriaLabel")},Ra,8,ka),ve(" "+pe(j(p)("modal.footer.navigateText")),1)]),k("span",null,[k("kbd",{"aria-label":j(p)("modal.footer.selectKeyAriaLabel")},La,8,_a),ve(" "+pe(j(p)("modal.footer.selectText")),1)]),k("span",null,[k("kbd",{"aria-label":j(p)("modal.footer.closeKeyAriaLabel")},"esc",8,za),ve(" "+pe(j(p)("modal.footer.closeText")),1)])])])],8,qr)])}}}),Ja=tr(Pa,[["__scopeId","data-v-f4c4f812"]]);export{Ja as default}; diff --git a/dev/assets/chunks/VPLocalSearchBox.Dvyzb8w2.js b/dev/assets/chunks/VPLocalSearchBox.Dvyzb8w2.js new file mode 100644 index 0000000..55d6289 --- /dev/null +++ b/dev/assets/chunks/VPLocalSearchBox.Dvyzb8w2.js @@ -0,0 +1,7 @@ +var kt=Object.defineProperty;var Ft=(a,e,t)=>e in a?kt(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t;var Ce=(a,e,t)=>Ft(a,typeof e!="symbol"?e+"":e,t);import{X as Ot,s as ne,v as Ve,al as Rt,am as Ct,d as Mt,G as be,an as et,h as ye,ao as At,ap as Lt,x as Dt,aq as zt,y as Me,R as de,Q as we,ar as Pt,as as jt,Y as Vt,U as $t,a1 as Bt,o as Q,b as Wt,j as x,a2 as Kt,k as D,at as Jt,au as Ut,av as qt,c as Z,n as tt,e as _e,E as st,F as nt,a as he,t as fe,aw as Gt,p as Qt,l as Ht,ax as it,ay as Yt,ab as Zt,ah as Xt,az as es,_ as ts}from"./framework.CBLuZwrP.js";import{u as ss,c as ns}from"./theme.DW52ZK5I.js";const is={root:()=>Ot(()=>import("./@localSearchIndexroot.dXriGepY.js"),[])};/*! +* tabbable 6.2.0 +* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE +*/var vt=["input:not([inert])","select:not([inert])","textarea:not([inert])","a[href]:not([inert])","button:not([inert])","[tabindex]:not(slot):not([inert])","audio[controls]:not([inert])","video[controls]:not([inert])",'[contenteditable]:not([contenteditable="false"]):not([inert])',"details>summary:first-of-type:not([inert])","details:not([inert])"],Ie=vt.join(","),mt=typeof Element>"u",re=mt?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,Ne=!mt&&Element.prototype.getRootNode?function(a){var e;return a==null||(e=a.getRootNode)===null||e===void 0?void 0:e.call(a)}:function(a){return a==null?void 0:a.ownerDocument},ke=function a(e,t){var s;t===void 0&&(t=!0);var n=e==null||(s=e.getAttribute)===null||s===void 0?void 0:s.call(e,"inert"),r=n===""||n==="true",i=r||t&&e&&a(e.parentNode);return i},rs=function(e){var t,s=e==null||(t=e.getAttribute)===null||t===void 0?void 0:t.call(e,"contenteditable");return s===""||s==="true"},gt=function(e,t,s){if(ke(e))return[];var n=Array.prototype.slice.apply(e.querySelectorAll(Ie));return t&&re.call(e,Ie)&&n.unshift(e),n=n.filter(s),n},bt=function a(e,t,s){for(var n=[],r=Array.from(e);r.length;){var i=r.shift();if(!ke(i,!1))if(i.tagName==="SLOT"){var o=i.assignedElements(),c=o.length?o:i.children,l=a(c,!0,s);s.flatten?n.push.apply(n,l):n.push({scopeParent:i,candidates:l})}else{var h=re.call(i,Ie);h&&s.filter(i)&&(t||!e.includes(i))&&n.push(i);var f=i.shadowRoot||typeof s.getShadowRoot=="function"&&s.getShadowRoot(i),v=!ke(f,!1)&&(!s.shadowRootFilter||s.shadowRootFilter(i));if(f&&v){var b=a(f===!0?i.children:f.children,!0,s);s.flatten?n.push.apply(n,b):n.push({scopeParent:i,candidates:b})}else r.unshift.apply(r,i.children)}}return n},yt=function(e){return!isNaN(parseInt(e.getAttribute("tabindex"),10))},ie=function(e){if(!e)throw new Error("No node provided");return e.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||rs(e))&&!yt(e)?0:e.tabIndex},as=function(e,t){var s=ie(e);return s<0&&t&&!yt(e)?0:s},os=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},wt=function(e){return e.tagName==="INPUT"},cs=function(e){return wt(e)&&e.type==="hidden"},ls=function(e){var t=e.tagName==="DETAILS"&&Array.prototype.slice.apply(e.children).some(function(s){return s.tagName==="SUMMARY"});return t},us=function(e,t){for(var s=0;ssummary:first-of-type"),i=r?e.parentElement:e;if(re.call(i,"details:not([open]) *"))return!0;if(!s||s==="full"||s==="legacy-full"){if(typeof n=="function"){for(var o=e;e;){var c=e.parentElement,l=Ne(e);if(c&&!c.shadowRoot&&n(c)===!0)return rt(e);e.assignedSlot?e=e.assignedSlot:!c&&l!==e.ownerDocument?e=l.host:e=c}e=o}if(ps(e))return!e.getClientRects().length;if(s!=="legacy-full")return!0}else if(s==="non-zero-area")return rt(e);return!1},ms=function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if(t.tagName==="FIELDSET"&&t.disabled){for(var s=0;s=0)},bs=function a(e){var t=[],s=[];return e.forEach(function(n,r){var i=!!n.scopeParent,o=i?n.scopeParent:n,c=as(o,i),l=i?a(n.candidates):o;c===0?i?t.push.apply(t,l):t.push(o):s.push({documentOrder:r,tabIndex:c,item:n,isScope:i,content:l})}),s.sort(os).reduce(function(n,r){return r.isScope?n.push.apply(n,r.content):n.push(r.content),n},[]).concat(t)},ys=function(e,t){t=t||{};var s;return t.getShadowRoot?s=bt([e],t.includeContainer,{filter:$e.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:gs}):s=gt(e,t.includeContainer,$e.bind(null,t)),bs(s)},ws=function(e,t){t=t||{};var s;return t.getShadowRoot?s=bt([e],t.includeContainer,{filter:Fe.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):s=gt(e,t.includeContainer,Fe.bind(null,t)),s},ae=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return re.call(e,Ie)===!1?!1:$e(t,e)},_s=vt.concat("iframe").join(","),Ae=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return re.call(e,_s)===!1?!1:Fe(t,e)};/*! +* focus-trap 7.5.4 +* @license MIT, https://github.com/focus-trap/focus-trap/blob/master/LICENSE +*/function at(a,e){var t=Object.keys(a);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(a);e&&(s=s.filter(function(n){return Object.getOwnPropertyDescriptor(a,n).enumerable})),t.push.apply(t,s)}return t}function ot(a){for(var e=1;e0){var s=e[e.length-1];s!==t&&s.pause()}var n=e.indexOf(t);n===-1||e.splice(n,1),e.push(t)},deactivateTrap:function(e,t){var s=e.indexOf(t);s!==-1&&e.splice(s,1),e.length>0&&e[e.length-1].unpause()}},Ts=function(e){return e.tagName&&e.tagName.toLowerCase()==="input"&&typeof e.select=="function"},Is=function(e){return(e==null?void 0:e.key)==="Escape"||(e==null?void 0:e.key)==="Esc"||(e==null?void 0:e.keyCode)===27},ve=function(e){return(e==null?void 0:e.key)==="Tab"||(e==null?void 0:e.keyCode)===9},Ns=function(e){return ve(e)&&!e.shiftKey},ks=function(e){return ve(e)&&e.shiftKey},lt=function(e){return setTimeout(e,0)},ut=function(e,t){var s=-1;return e.every(function(n,r){return t(n)?(s=r,!1):!0}),s},pe=function(e){for(var t=arguments.length,s=new Array(t>1?t-1:0),n=1;n1?m-1:0),E=1;E=0)u=s.activeElement;else{var d=i.tabbableGroups[0],m=d&&d.firstTabbableNode;u=m||h("fallbackFocus")}if(!u)throw new Error("Your focus-trap needs to have at least one focusable element");return u},v=function(){if(i.containerGroups=i.containers.map(function(u){var d=ys(u,r.tabbableOptions),m=ws(u,r.tabbableOptions),S=d.length>0?d[0]:void 0,E=d.length>0?d[d.length-1]:void 0,k=m.find(function(p){return ae(p)}),F=m.slice().reverse().find(function(p){return ae(p)}),M=!!d.find(function(p){return ie(p)>0});return{container:u,tabbableNodes:d,focusableNodes:m,posTabIndexesFound:M,firstTabbableNode:S,lastTabbableNode:E,firstDomTabbableNode:k,lastDomTabbableNode:F,nextTabbableNode:function(g){var N=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,O=d.indexOf(g);return O<0?N?m.slice(m.indexOf(g)+1).find(function(P){return ae(P)}):m.slice(0,m.indexOf(g)).reverse().find(function(P){return ae(P)}):d[O+(N?1:-1)]}}}),i.tabbableGroups=i.containerGroups.filter(function(u){return u.tabbableNodes.length>0}),i.tabbableGroups.length<=0&&!h("fallbackFocus"))throw new Error("Your focus-trap must have at least one container with at least one tabbable node in it at all times");if(i.containerGroups.find(function(u){return u.posTabIndexesFound})&&i.containerGroups.length>1)throw new Error("At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps.")},b=function T(u){var d=u.activeElement;if(d)return d.shadowRoot&&d.shadowRoot.activeElement!==null?T(d.shadowRoot):d},w=function T(u){if(u!==!1&&u!==b(document)){if(!u||!u.focus){T(f());return}u.focus({preventScroll:!!r.preventScroll}),i.mostRecentlyFocusedNode=u,Ts(u)&&u.select()}},_=function(u){var d=h("setReturnFocus",u);return d||(d===!1?!1:u)},y=function(u){var d=u.target,m=u.event,S=u.isBackward,E=S===void 0?!1:S;d=d||xe(m),v();var k=null;if(i.tabbableGroups.length>0){var F=l(d,m),M=F>=0?i.containerGroups[F]:void 0;if(F<0)E?k=i.tabbableGroups[i.tabbableGroups.length-1].lastTabbableNode:k=i.tabbableGroups[0].firstTabbableNode;else if(E){var p=ut(i.tabbableGroups,function(I){var L=I.firstTabbableNode;return d===L});if(p<0&&(M.container===d||Ae(d,r.tabbableOptions)&&!ae(d,r.tabbableOptions)&&!M.nextTabbableNode(d,!1))&&(p=F),p>=0){var g=p===0?i.tabbableGroups.length-1:p-1,N=i.tabbableGroups[g];k=ie(d)>=0?N.lastTabbableNode:N.lastDomTabbableNode}else ve(m)||(k=M.nextTabbableNode(d,!1))}else{var O=ut(i.tabbableGroups,function(I){var L=I.lastTabbableNode;return d===L});if(O<0&&(M.container===d||Ae(d,r.tabbableOptions)&&!ae(d,r.tabbableOptions)&&!M.nextTabbableNode(d))&&(O=F),O>=0){var P=O===i.tabbableGroups.length-1?0:O+1,j=i.tabbableGroups[P];k=ie(d)>=0?j.firstTabbableNode:j.firstDomTabbableNode}else ve(m)||(k=M.nextTabbableNode(d))}}else k=h("fallbackFocus");return k},R=function(u){var d=xe(u);if(!(l(d,u)>=0)){if(pe(r.clickOutsideDeactivates,u)){o.deactivate({returnFocus:r.returnFocusOnDeactivate});return}pe(r.allowOutsideClick,u)||u.preventDefault()}},C=function(u){var d=xe(u),m=l(d,u)>=0;if(m||d instanceof Document)m&&(i.mostRecentlyFocusedNode=d);else{u.stopImmediatePropagation();var S,E=!0;if(i.mostRecentlyFocusedNode)if(ie(i.mostRecentlyFocusedNode)>0){var k=l(i.mostRecentlyFocusedNode),F=i.containerGroups[k].tabbableNodes;if(F.length>0){var M=F.findIndex(function(p){return p===i.mostRecentlyFocusedNode});M>=0&&(r.isKeyForward(i.recentNavEvent)?M+1=0&&(S=F[M-1],E=!1))}}else i.containerGroups.some(function(p){return p.tabbableNodes.some(function(g){return ie(g)>0})})||(E=!1);else E=!1;E&&(S=y({target:i.mostRecentlyFocusedNode,isBackward:r.isKeyBackward(i.recentNavEvent)})),w(S||i.mostRecentlyFocusedNode||f())}i.recentNavEvent=void 0},J=function(u){var d=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;i.recentNavEvent=u;var m=y({event:u,isBackward:d});m&&(ve(u)&&u.preventDefault(),w(m))},H=function(u){if(Is(u)&&pe(r.escapeDeactivates,u)!==!1){u.preventDefault(),o.deactivate();return}(r.isKeyForward(u)||r.isKeyBackward(u))&&J(u,r.isKeyBackward(u))},W=function(u){var d=xe(u);l(d,u)>=0||pe(r.clickOutsideDeactivates,u)||pe(r.allowOutsideClick,u)||(u.preventDefault(),u.stopImmediatePropagation())},V=function(){if(i.active)return ct.activateTrap(n,o),i.delayInitialFocusTimer=r.delayInitialFocus?lt(function(){w(f())}):w(f()),s.addEventListener("focusin",C,!0),s.addEventListener("mousedown",R,{capture:!0,passive:!1}),s.addEventListener("touchstart",R,{capture:!0,passive:!1}),s.addEventListener("click",W,{capture:!0,passive:!1}),s.addEventListener("keydown",H,{capture:!0,passive:!1}),o},$=function(){if(i.active)return s.removeEventListener("focusin",C,!0),s.removeEventListener("mousedown",R,!0),s.removeEventListener("touchstart",R,!0),s.removeEventListener("click",W,!0),s.removeEventListener("keydown",H,!0),o},Re=function(u){var d=u.some(function(m){var S=Array.from(m.removedNodes);return S.some(function(E){return E===i.mostRecentlyFocusedNode})});d&&w(f())},A=typeof window<"u"&&"MutationObserver"in window?new MutationObserver(Re):void 0,U=function(){A&&(A.disconnect(),i.active&&!i.paused&&i.containers.map(function(u){A.observe(u,{subtree:!0,childList:!0})}))};return o={get active(){return i.active},get paused(){return i.paused},activate:function(u){if(i.active)return this;var d=c(u,"onActivate"),m=c(u,"onPostActivate"),S=c(u,"checkCanFocusTrap");S||v(),i.active=!0,i.paused=!1,i.nodeFocusedBeforeActivation=s.activeElement,d==null||d();var E=function(){S&&v(),V(),U(),m==null||m()};return S?(S(i.containers.concat()).then(E,E),this):(E(),this)},deactivate:function(u){if(!i.active)return this;var d=ot({onDeactivate:r.onDeactivate,onPostDeactivate:r.onPostDeactivate,checkCanReturnFocus:r.checkCanReturnFocus},u);clearTimeout(i.delayInitialFocusTimer),i.delayInitialFocusTimer=void 0,$(),i.active=!1,i.paused=!1,U(),ct.deactivateTrap(n,o);var m=c(d,"onDeactivate"),S=c(d,"onPostDeactivate"),E=c(d,"checkCanReturnFocus"),k=c(d,"returnFocus","returnFocusOnDeactivate");m==null||m();var F=function(){lt(function(){k&&w(_(i.nodeFocusedBeforeActivation)),S==null||S()})};return k&&E?(E(_(i.nodeFocusedBeforeActivation)).then(F,F),this):(F(),this)},pause:function(u){if(i.paused||!i.active)return this;var d=c(u,"onPause"),m=c(u,"onPostPause");return i.paused=!0,d==null||d(),$(),U(),m==null||m(),this},unpause:function(u){if(!i.paused||!i.active)return this;var d=c(u,"onUnpause"),m=c(u,"onPostUnpause");return i.paused=!1,d==null||d(),v(),V(),U(),m==null||m(),this},updateContainerElements:function(u){var d=[].concat(u).filter(Boolean);return i.containers=d.map(function(m){return typeof m=="string"?s.querySelector(m):m}),i.active&&v(),U(),this}},o.updateContainerElements(e),o};function Rs(a,e={}){let t;const{immediate:s,...n}=e,r=ne(!1),i=ne(!1),o=f=>t&&t.activate(f),c=f=>t&&t.deactivate(f),l=()=>{t&&(t.pause(),i.value=!0)},h=()=>{t&&(t.unpause(),i.value=!1)};return Ve(()=>Rt(a),f=>{f&&(t=Os(f,{...n,onActivate(){r.value=!0,e.onActivate&&e.onActivate()},onDeactivate(){r.value=!1,e.onDeactivate&&e.onDeactivate()}}),s&&o())},{flush:"post"}),Ct(()=>c()),{hasFocus:r,isPaused:i,activate:o,deactivate:c,pause:l,unpause:h}}class ce{constructor(e,t=!0,s=[],n=5e3){this.ctx=e,this.iframes=t,this.exclude=s,this.iframesTimeout=n}static matches(e,t){const s=typeof t=="string"?[t]:t,n=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector;if(n){let r=!1;return s.every(i=>n.call(e,i)?(r=!0,!1):!0),r}else return!1}getContexts(){let e,t=[];return typeof this.ctx>"u"||!this.ctx?e=[]:NodeList.prototype.isPrototypeOf(this.ctx)?e=Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?e=this.ctx:typeof this.ctx=="string"?e=Array.prototype.slice.call(document.querySelectorAll(this.ctx)):e=[this.ctx],e.forEach(s=>{const n=t.filter(r=>r.contains(s)).length>0;t.indexOf(s)===-1&&!n&&t.push(s)}),t}getIframeContents(e,t,s=()=>{}){let n;try{const r=e.contentWindow;if(n=r.document,!r||!n)throw new Error("iframe inaccessible")}catch{s()}n&&t(n)}isIframeBlank(e){const t="about:blank",s=e.getAttribute("src").trim();return e.contentWindow.location.href===t&&s!==t&&s}observeIframeLoad(e,t,s){let n=!1,r=null;const i=()=>{if(!n){n=!0,clearTimeout(r);try{this.isIframeBlank(e)||(e.removeEventListener("load",i),this.getIframeContents(e,t,s))}catch{s()}}};e.addEventListener("load",i),r=setTimeout(i,this.iframesTimeout)}onIframeReady(e,t,s){try{e.contentWindow.document.readyState==="complete"?this.isIframeBlank(e)?this.observeIframeLoad(e,t,s):this.getIframeContents(e,t,s):this.observeIframeLoad(e,t,s)}catch{s()}}waitForIframes(e,t){let s=0;this.forEachIframe(e,()=>!0,n=>{s++,this.waitForIframes(n.querySelector("html"),()=>{--s||t()})},n=>{n||t()})}forEachIframe(e,t,s,n=()=>{}){let r=e.querySelectorAll("iframe"),i=r.length,o=0;r=Array.prototype.slice.call(r);const c=()=>{--i<=0&&n(o)};i||c(),r.forEach(l=>{ce.matches(l,this.exclude)?c():this.onIframeReady(l,h=>{t(l)&&(o++,s(h)),c()},c)})}createIterator(e,t,s){return document.createNodeIterator(e,t,s,!1)}createInstanceOnIframe(e){return new ce(e.querySelector("html"),this.iframes)}compareNodeIframe(e,t,s){const n=e.compareDocumentPosition(s),r=Node.DOCUMENT_POSITION_PRECEDING;if(n&r)if(t!==null){const i=t.compareDocumentPosition(s),o=Node.DOCUMENT_POSITION_FOLLOWING;if(i&o)return!0}else return!0;return!1}getIteratorNode(e){const t=e.previousNode();let s;return t===null?s=e.nextNode():s=e.nextNode()&&e.nextNode(),{prevNode:t,node:s}}checkIframeFilter(e,t,s,n){let r=!1,i=!1;return n.forEach((o,c)=>{o.val===s&&(r=c,i=o.handled)}),this.compareNodeIframe(e,t,s)?(r===!1&&!i?n.push({val:s,handled:!0}):r!==!1&&!i&&(n[r].handled=!0),!0):(r===!1&&n.push({val:s,handled:!1}),!1)}handleOpenIframes(e,t,s,n){e.forEach(r=>{r.handled||this.getIframeContents(r.val,i=>{this.createInstanceOnIframe(i).forEachNode(t,s,n)})})}iterateThroughNodes(e,t,s,n,r){const i=this.createIterator(t,e,n);let o=[],c=[],l,h,f=()=>({prevNode:h,node:l}=this.getIteratorNode(i),l);for(;f();)this.iframes&&this.forEachIframe(t,v=>this.checkIframeFilter(l,h,v,o),v=>{this.createInstanceOnIframe(v).forEachNode(e,b=>c.push(b),n)}),c.push(l);c.forEach(v=>{s(v)}),this.iframes&&this.handleOpenIframes(o,e,s,n),r()}forEachNode(e,t,s,n=()=>{}){const r=this.getContexts();let i=r.length;i||n(),r.forEach(o=>{const c=()=>{this.iterateThroughNodes(e,o,t,s,()=>{--i<=0&&n()})};this.iframes?this.waitForIframes(o,c):c()})}}let Cs=class{constructor(e){this.ctx=e,this.ie=!1;const t=window.navigator.userAgent;(t.indexOf("MSIE")>-1||t.indexOf("Trident")>-1)&&(this.ie=!0)}set opt(e){this._opt=Object.assign({},{element:"",className:"",exclude:[],iframes:!1,iframesTimeout:5e3,separateWordSearch:!0,diacritics:!0,synonyms:{},accuracy:"partially",acrossElements:!1,caseSensitive:!1,ignoreJoiners:!1,ignoreGroups:0,ignorePunctuation:[],wildcards:"disabled",each:()=>{},noMatch:()=>{},filter:()=>!0,done:()=>{},debug:!1,log:window.console},e)}get opt(){return this._opt}get iterator(){return new ce(this.ctx,this.opt.iframes,this.opt.exclude,this.opt.iframesTimeout)}log(e,t="debug"){const s=this.opt.log;this.opt.debug&&typeof s=="object"&&typeof s[t]=="function"&&s[t](`mark.js: ${e}`)}escapeStr(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}createRegExp(e){return this.opt.wildcards!=="disabled"&&(e=this.setupWildcardsRegExp(e)),e=this.escapeStr(e),Object.keys(this.opt.synonyms).length&&(e=this.createSynonymsRegExp(e)),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),this.opt.diacritics&&(e=this.createDiacriticsRegExp(e)),e=this.createMergedBlanksRegExp(e),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.createJoinersRegExp(e)),this.opt.wildcards!=="disabled"&&(e=this.createWildcardsRegExp(e)),e=this.createAccuracyRegExp(e),e}createSynonymsRegExp(e){const t=this.opt.synonyms,s=this.opt.caseSensitive?"":"i",n=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"";for(let r in t)if(t.hasOwnProperty(r)){const i=t[r],o=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(r):this.escapeStr(r),c=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(i):this.escapeStr(i);o!==""&&c!==""&&(e=e.replace(new RegExp(`(${this.escapeStr(o)}|${this.escapeStr(c)})`,`gm${s}`),n+`(${this.processSynomyms(o)}|${this.processSynomyms(c)})`+n))}return e}processSynomyms(e){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),e}setupWildcardsRegExp(e){return e=e.replace(/(?:\\)*\?/g,t=>t.charAt(0)==="\\"?"?":""),e.replace(/(?:\\)*\*/g,t=>t.charAt(0)==="\\"?"*":"")}createWildcardsRegExp(e){let t=this.opt.wildcards==="withSpaces";return e.replace(/\u0001/g,t?"[\\S\\s]?":"\\S?").replace(/\u0002/g,t?"[\\S\\s]*?":"\\S*")}setupIgnoreJoinersRegExp(e){return e.replace(/[^(|)\\]/g,(t,s,n)=>{let r=n.charAt(s+1);return/[(|)\\]/.test(r)||r===""?t:t+"\0"})}createJoinersRegExp(e){let t=[];const s=this.opt.ignorePunctuation;return Array.isArray(s)&&s.length&&t.push(this.escapeStr(s.join(""))),this.opt.ignoreJoiners&&t.push("\\u00ad\\u200b\\u200c\\u200d"),t.length?e.split(/\u0000+/).join(`[${t.join("")}]*`):e}createDiacriticsRegExp(e){const t=this.opt.caseSensitive?"":"i",s=this.opt.caseSensitive?["aàáảãạăằắẳẵặâầấẩẫậäåāą","AÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćč","CÇĆČ","dđď","DĐĎ","eèéẻẽẹêềếểễệëěēę","EÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïī","IÌÍỈĨỊÎÏĪ","lł","LŁ","nñňń","NÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøō","OÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rř","RŘ","sšśșş","SŠŚȘŞ","tťțţ","TŤȚŢ","uùúủũụưừứửữựûüůū","UÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿ","YÝỲỶỸỴŸ","zžżź","ZŽŻŹ"]:["aàáảãạăằắẳẵặâầấẩẫậäåāąAÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćčCÇĆČ","dđďDĐĎ","eèéẻẽẹêềếểễệëěēęEÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïīIÌÍỈĨỊÎÏĪ","lłLŁ","nñňńNÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøōOÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rřRŘ","sšśșşSŠŚȘŞ","tťțţTŤȚŢ","uùúủũụưừứửữựûüůūUÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿYÝỲỶỸỴŸ","zžżźZŽŻŹ"];let n=[];return e.split("").forEach(r=>{s.every(i=>{if(i.indexOf(r)!==-1){if(n.indexOf(i)>-1)return!1;e=e.replace(new RegExp(`[${i}]`,`gm${t}`),`[${i}]`),n.push(i)}return!0})}),e}createMergedBlanksRegExp(e){return e.replace(/[\s]+/gmi,"[\\s]+")}createAccuracyRegExp(e){const t="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~¡¿";let s=this.opt.accuracy,n=typeof s=="string"?s:s.value,r=typeof s=="string"?[]:s.limiters,i="";switch(r.forEach(o=>{i+=`|${this.escapeStr(o)}`}),n){case"partially":default:return`()(${e})`;case"complementary":return i="\\s"+(i||this.escapeStr(t)),`()([^${i}]*${e}[^${i}]*)`;case"exactly":return`(^|\\s${i})(${e})(?=$|\\s${i})`}}getSeparatedKeywords(e){let t=[];return e.forEach(s=>{this.opt.separateWordSearch?s.split(" ").forEach(n=>{n.trim()&&t.indexOf(n)===-1&&t.push(n)}):s.trim()&&t.indexOf(s)===-1&&t.push(s)}),{keywords:t.sort((s,n)=>n.length-s.length),length:t.length}}isNumeric(e){return Number(parseFloat(e))==e}checkRanges(e){if(!Array.isArray(e)||Object.prototype.toString.call(e[0])!=="[object Object]")return this.log("markRanges() will only accept an array of objects"),this.opt.noMatch(e),[];const t=[];let s=0;return e.sort((n,r)=>n.start-r.start).forEach(n=>{let{start:r,end:i,valid:o}=this.callNoMatchOnInvalidRanges(n,s);o&&(n.start=r,n.length=i-r,t.push(n),s=i)}),t}callNoMatchOnInvalidRanges(e,t){let s,n,r=!1;return e&&typeof e.start<"u"?(s=parseInt(e.start,10),n=s+parseInt(e.length,10),this.isNumeric(e.start)&&this.isNumeric(e.length)&&n-t>0&&n-s>0?r=!0:(this.log(`Ignoring invalid or overlapping range: ${JSON.stringify(e)}`),this.opt.noMatch(e))):(this.log(`Ignoring invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)),{start:s,end:n,valid:r}}checkWhitespaceRanges(e,t,s){let n,r=!0,i=s.length,o=t-i,c=parseInt(e.start,10)-o;return c=c>i?i:c,n=c+parseInt(e.length,10),n>i&&(n=i,this.log(`End range automatically set to the max value of ${i}`)),c<0||n-c<0||c>i||n>i?(r=!1,this.log(`Invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)):s.substring(c,n).replace(/\s+/g,"")===""&&(r=!1,this.log("Skipping whitespace only range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:c,end:n,valid:r}}getTextNodes(e){let t="",s=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,n=>{s.push({start:t.length,end:(t+=n.textContent).length,node:n})},n=>this.matchesExclude(n.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT,()=>{e({value:t,nodes:s})})}matchesExclude(e){return ce.matches(e,this.opt.exclude.concat(["script","style","title","head","html"]))}wrapRangeInTextNode(e,t,s){const n=this.opt.element?this.opt.element:"mark",r=e.splitText(t),i=r.splitText(s-t);let o=document.createElement(n);return o.setAttribute("data-markjs","true"),this.opt.className&&o.setAttribute("class",this.opt.className),o.textContent=r.textContent,r.parentNode.replaceChild(o,r),i}wrapRangeInMappedTextNode(e,t,s,n,r){e.nodes.every((i,o)=>{const c=e.nodes[o+1];if(typeof c>"u"||c.start>t){if(!n(i.node))return!1;const l=t-i.start,h=(s>i.end?i.end:s)-i.start,f=e.value.substr(0,i.start),v=e.value.substr(h+i.start);if(i.node=this.wrapRangeInTextNode(i.node,l,h),e.value=f+v,e.nodes.forEach((b,w)=>{w>=o&&(e.nodes[w].start>0&&w!==o&&(e.nodes[w].start-=h),e.nodes[w].end-=h)}),s-=h,r(i.node.previousSibling,i.start),s>i.end)t=i.end;else return!1}return!0})}wrapMatches(e,t,s,n,r){const i=t===0?0:t+1;this.getTextNodes(o=>{o.nodes.forEach(c=>{c=c.node;let l;for(;(l=e.exec(c.textContent))!==null&&l[i]!=="";){if(!s(l[i],c))continue;let h=l.index;if(i!==0)for(let f=1;f{let c;for(;(c=e.exec(o.value))!==null&&c[i]!=="";){let l=c.index;if(i!==0)for(let f=1;fs(c[i],f),(f,v)=>{e.lastIndex=v,n(f)})}r()})}wrapRangeFromIndex(e,t,s,n){this.getTextNodes(r=>{const i=r.value.length;e.forEach((o,c)=>{let{start:l,end:h,valid:f}=this.checkWhitespaceRanges(o,i,r.value);f&&this.wrapRangeInMappedTextNode(r,l,h,v=>t(v,o,r.value.substring(l,h),c),v=>{s(v,o)})}),n()})}unwrapMatches(e){const t=e.parentNode;let s=document.createDocumentFragment();for(;e.firstChild;)s.appendChild(e.removeChild(e.firstChild));t.replaceChild(s,e),this.ie?this.normalizeTextNode(t):t.normalize()}normalizeTextNode(e){if(e){if(e.nodeType===3)for(;e.nextSibling&&e.nextSibling.nodeType===3;)e.nodeValue+=e.nextSibling.nodeValue,e.parentNode.removeChild(e.nextSibling);else this.normalizeTextNode(e.firstChild);this.normalizeTextNode(e.nextSibling)}}markRegExp(e,t){this.opt=t,this.log(`Searching with expression "${e}"`);let s=0,n="wrapMatches";const r=i=>{s++,this.opt.each(i)};this.opt.acrossElements&&(n="wrapMatchesAcrossElements"),this[n](e,this.opt.ignoreGroups,(i,o)=>this.opt.filter(o,i,s),r,()=>{s===0&&this.opt.noMatch(e),this.opt.done(s)})}mark(e,t){this.opt=t;let s=0,n="wrapMatches";const{keywords:r,length:i}=this.getSeparatedKeywords(typeof e=="string"?[e]:e),o=this.opt.caseSensitive?"":"i",c=l=>{let h=new RegExp(this.createRegExp(l),`gm${o}`),f=0;this.log(`Searching with expression "${h}"`),this[n](h,1,(v,b)=>this.opt.filter(b,l,s,f),v=>{f++,s++,this.opt.each(v)},()=>{f===0&&this.opt.noMatch(l),r[i-1]===l?this.opt.done(s):c(r[r.indexOf(l)+1])})};this.opt.acrossElements&&(n="wrapMatchesAcrossElements"),i===0?this.opt.done(s):c(r[0])}markRanges(e,t){this.opt=t;let s=0,n=this.checkRanges(e);n&&n.length?(this.log("Starting to mark with the following ranges: "+JSON.stringify(n)),this.wrapRangeFromIndex(n,(r,i,o,c)=>this.opt.filter(r,i,o,c),(r,i)=>{s++,this.opt.each(r,i)},()=>{this.opt.done(s)})):this.opt.done(s)}unmark(e){this.opt=e;let t=this.opt.element?this.opt.element:"*";t+="[data-markjs]",this.opt.className&&(t+=`.${this.opt.className}`),this.log(`Removal selector "${t}"`),this.iterator.forEachNode(NodeFilter.SHOW_ELEMENT,s=>{this.unwrapMatches(s)},s=>{const n=ce.matches(s,t),r=this.matchesExclude(s);return!n||r?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},this.opt.done)}};function Ms(a){const e=new Cs(a);return this.mark=(t,s)=>(e.mark(t,s),this),this.markRegExp=(t,s)=>(e.markRegExp(t,s),this),this.markRanges=(t,s)=>(e.markRanges(t,s),this),this.unmark=t=>(e.unmark(t),this),this}function Te(a,e,t,s){function n(r){return r instanceof t?r:new t(function(i){i(r)})}return new(t||(t=Promise))(function(r,i){function o(h){try{l(s.next(h))}catch(f){i(f)}}function c(h){try{l(s.throw(h))}catch(f){i(f)}}function l(h){h.done?r(h.value):n(h.value).then(o,c)}l((s=s.apply(a,[])).next())})}const As="ENTRIES",_t="KEYS",xt="VALUES",z="";class Le{constructor(e,t){const s=e._tree,n=Array.from(s.keys());this.set=e,this._type=t,this._path=n.length>0?[{node:s,keys:n}]:[]}next(){const e=this.dive();return this.backtrack(),e}dive(){if(this._path.length===0)return{done:!0,value:void 0};const{node:e,keys:t}=oe(this._path);if(oe(t)===z)return{done:!1,value:this.result()};const s=e.get(oe(t));return this._path.push({node:s,keys:Array.from(s.keys())}),this.dive()}backtrack(){if(this._path.length===0)return;const e=oe(this._path).keys;e.pop(),!(e.length>0)&&(this._path.pop(),this.backtrack())}key(){return this.set._prefix+this._path.map(({keys:e})=>oe(e)).filter(e=>e!==z).join("")}value(){return oe(this._path).node.get(z)}result(){switch(this._type){case xt:return this.value();case _t:return this.key();default:return[this.key(),this.value()]}}[Symbol.iterator](){return this}}const oe=a=>a[a.length-1],Ls=(a,e,t)=>{const s=new Map;if(e===void 0)return s;const n=e.length+1,r=n+t,i=new Uint8Array(r*n).fill(t+1);for(let o=0;o{const c=r*i;e:for(const l of a.keys())if(l===z){const h=n[c-1];h<=t&&s.set(o,[a.get(l),h])}else{let h=r;for(let f=0;ft)continue e}St(a.get(l),e,t,s,n,h,i,o+l)}};class X{constructor(e=new Map,t=""){this._size=void 0,this._tree=e,this._prefix=t}atPrefix(e){if(!e.startsWith(this._prefix))throw new Error("Mismatched prefix");const[t,s]=Oe(this._tree,e.slice(this._prefix.length));if(t===void 0){const[n,r]=Je(s);for(const i of n.keys())if(i!==z&&i.startsWith(r)){const o=new Map;return o.set(i.slice(r.length),n.get(i)),new X(o,e)}}return new X(t,e)}clear(){this._size=void 0,this._tree.clear()}delete(e){return this._size=void 0,Ds(this._tree,e)}entries(){return new Le(this,As)}forEach(e){for(const[t,s]of this)e(t,s,this)}fuzzyGet(e,t){return Ls(this._tree,e,t)}get(e){const t=Be(this._tree,e);return t!==void 0?t.get(z):void 0}has(e){const t=Be(this._tree,e);return t!==void 0&&t.has(z)}keys(){return new Le(this,_t)}set(e,t){if(typeof e!="string")throw new Error("key must be a string");return this._size=void 0,De(this._tree,e).set(z,t),this}get size(){if(this._size)return this._size;this._size=0;const e=this.entries();for(;!e.next().done;)this._size+=1;return this._size}update(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;const s=De(this._tree,e);return s.set(z,t(s.get(z))),this}fetch(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;const s=De(this._tree,e);let n=s.get(z);return n===void 0&&s.set(z,n=t()),n}values(){return new Le(this,xt)}[Symbol.iterator](){return this.entries()}static from(e){const t=new X;for(const[s,n]of e)t.set(s,n);return t}static fromObject(e){return X.from(Object.entries(e))}}const Oe=(a,e,t=[])=>{if(e.length===0||a==null)return[a,t];for(const s of a.keys())if(s!==z&&e.startsWith(s))return t.push([a,s]),Oe(a.get(s),e.slice(s.length),t);return t.push([a,e]),Oe(void 0,"",t)},Be=(a,e)=>{if(e.length===0||a==null)return a;for(const t of a.keys())if(t!==z&&e.startsWith(t))return Be(a.get(t),e.slice(t.length))},De=(a,e)=>{const t=e.length;e:for(let s=0;a&&s{const[t,s]=Oe(a,e);if(t!==void 0){if(t.delete(z),t.size===0)Et(s);else if(t.size===1){const[n,r]=t.entries().next().value;Tt(s,n,r)}}},Et=a=>{if(a.length===0)return;const[e,t]=Je(a);if(e.delete(t),e.size===0)Et(a.slice(0,-1));else if(e.size===1){const[s,n]=e.entries().next().value;s!==z&&Tt(a.slice(0,-1),s,n)}},Tt=(a,e,t)=>{if(a.length===0)return;const[s,n]=Je(a);s.set(n+e,t),s.delete(n)},Je=a=>a[a.length-1],Ue="or",It="and",zs="and_not";class le{constructor(e){if((e==null?void 0:e.fields)==null)throw new Error('MiniSearch: option "fields" must be provided');const t=e.autoVacuum==null||e.autoVacuum===!0?je:e.autoVacuum;this._options=Object.assign(Object.assign(Object.assign({},Pe),e),{autoVacuum:t,searchOptions:Object.assign(Object.assign({},dt),e.searchOptions||{}),autoSuggestOptions:Object.assign(Object.assign({},Bs),e.autoSuggestOptions||{})}),this._index=new X,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldIds={},this._fieldLength=new Map,this._avgFieldLength=[],this._nextId=0,this._storedFields=new Map,this._dirtCount=0,this._currentVacuum=null,this._enqueuedVacuum=null,this._enqueuedVacuumConditions=Ke,this.addFields(this._options.fields)}add(e){const{extractField:t,tokenize:s,processTerm:n,fields:r,idField:i}=this._options,o=t(e,i);if(o==null)throw new Error(`MiniSearch: document does not have ID field "${i}"`);if(this._idToShortId.has(o))throw new Error(`MiniSearch: duplicate ID ${o}`);const c=this.addDocumentId(o);this.saveStoredFields(c,e);for(const l of r){const h=t(e,l);if(h==null)continue;const f=s(h.toString(),l),v=this._fieldIds[l],b=new Set(f).size;this.addFieldLength(c,v,this._documentCount-1,b);for(const w of f){const _=n(w,l);if(Array.isArray(_))for(const y of _)this.addTerm(v,c,y);else _&&this.addTerm(v,c,_)}}}addAll(e){for(const t of e)this.add(t)}addAllAsync(e,t={}){const{chunkSize:s=10}=t,n={chunk:[],promise:Promise.resolve()},{chunk:r,promise:i}=e.reduce(({chunk:o,promise:c},l,h)=>(o.push(l),(h+1)%s===0?{chunk:[],promise:c.then(()=>new Promise(f=>setTimeout(f,0))).then(()=>this.addAll(o))}:{chunk:o,promise:c}),n);return i.then(()=>this.addAll(r))}remove(e){const{tokenize:t,processTerm:s,extractField:n,fields:r,idField:i}=this._options,o=n(e,i);if(o==null)throw new Error(`MiniSearch: document does not have ID field "${i}"`);const c=this._idToShortId.get(o);if(c==null)throw new Error(`MiniSearch: cannot remove document with ID ${o}: it is not in the index`);for(const l of r){const h=n(e,l);if(h==null)continue;const f=t(h.toString(),l),v=this._fieldIds[l],b=new Set(f).size;this.removeFieldLength(c,v,this._documentCount,b);for(const w of f){const _=s(w,l);if(Array.isArray(_))for(const y of _)this.removeTerm(v,c,y);else _&&this.removeTerm(v,c,_)}}this._storedFields.delete(c),this._documentIds.delete(c),this._idToShortId.delete(o),this._fieldLength.delete(c),this._documentCount-=1}removeAll(e){if(e)for(const t of e)this.remove(t);else{if(arguments.length>0)throw new Error("Expected documents to be present. Omit the argument to remove all documents.");this._index=new X,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldLength=new Map,this._avgFieldLength=[],this._storedFields=new Map,this._nextId=0}}discard(e){const t=this._idToShortId.get(e);if(t==null)throw new Error(`MiniSearch: cannot discard document with ID ${e}: it is not in the index`);this._idToShortId.delete(e),this._documentIds.delete(t),this._storedFields.delete(t),(this._fieldLength.get(t)||[]).forEach((s,n)=>{this.removeFieldLength(t,n,this._documentCount,s)}),this._fieldLength.delete(t),this._documentCount-=1,this._dirtCount+=1,this.maybeAutoVacuum()}maybeAutoVacuum(){if(this._options.autoVacuum===!1)return;const{minDirtFactor:e,minDirtCount:t,batchSize:s,batchWait:n}=this._options.autoVacuum;this.conditionalVacuum({batchSize:s,batchWait:n},{minDirtCount:t,minDirtFactor:e})}discardAll(e){const t=this._options.autoVacuum;try{this._options.autoVacuum=!1;for(const s of e)this.discard(s)}finally{this._options.autoVacuum=t}this.maybeAutoVacuum()}replace(e){const{idField:t,extractField:s}=this._options,n=s(e,t);this.discard(n),this.add(e)}vacuum(e={}){return this.conditionalVacuum(e)}conditionalVacuum(e,t){return this._currentVacuum?(this._enqueuedVacuumConditions=this._enqueuedVacuumConditions&&t,this._enqueuedVacuum!=null?this._enqueuedVacuum:(this._enqueuedVacuum=this._currentVacuum.then(()=>{const s=this._enqueuedVacuumConditions;return this._enqueuedVacuumConditions=Ke,this.performVacuuming(e,s)}),this._enqueuedVacuum)):this.vacuumConditionsMet(t)===!1?Promise.resolve():(this._currentVacuum=this.performVacuuming(e),this._currentVacuum)}performVacuuming(e,t){return Te(this,void 0,void 0,function*(){const s=this._dirtCount;if(this.vacuumConditionsMet(t)){const n=e.batchSize||We.batchSize,r=e.batchWait||We.batchWait;let i=1;for(const[o,c]of this._index){for(const[l,h]of c)for(const[f]of h)this._documentIds.has(f)||(h.size<=1?c.delete(l):h.delete(f));this._index.get(o).size===0&&this._index.delete(o),i%n===0&&(yield new Promise(l=>setTimeout(l,r))),i+=1}this._dirtCount-=s}yield null,this._currentVacuum=this._enqueuedVacuum,this._enqueuedVacuum=null})}vacuumConditionsMet(e){if(e==null)return!0;let{minDirtCount:t,minDirtFactor:s}=e;return t=t||je.minDirtCount,s=s||je.minDirtFactor,this.dirtCount>=t&&this.dirtFactor>=s}get isVacuuming(){return this._currentVacuum!=null}get dirtCount(){return this._dirtCount}get dirtFactor(){return this._dirtCount/(1+this._documentCount+this._dirtCount)}has(e){return this._idToShortId.has(e)}getStoredFields(e){const t=this._idToShortId.get(e);if(t!=null)return this._storedFields.get(t)}search(e,t={}){const s=this.executeQuery(e,t),n=[];for(const[r,{score:i,terms:o,match:c}]of s){const l=o.length||1,h={id:this._documentIds.get(r),score:i*l,terms:Object.keys(c),queryTerms:o,match:c};Object.assign(h,this._storedFields.get(r)),(t.filter==null||t.filter(h))&&n.push(h)}return e===le.wildcard&&t.boostDocument==null&&this._options.searchOptions.boostDocument==null||n.sort(ft),n}autoSuggest(e,t={}){t=Object.assign(Object.assign({},this._options.autoSuggestOptions),t);const s=new Map;for(const{score:r,terms:i}of this.search(e,t)){const o=i.join(" "),c=s.get(o);c!=null?(c.score+=r,c.count+=1):s.set(o,{score:r,terms:i,count:1})}const n=[];for(const[r,{score:i,terms:o,count:c}]of s)n.push({suggestion:r,terms:o,score:i/c});return n.sort(ft),n}get documentCount(){return this._documentCount}get termCount(){return this._index.size}static loadJSON(e,t){if(t==null)throw new Error("MiniSearch: loadJSON should be given the same options used when serializing the index");return this.loadJS(JSON.parse(e),t)}static loadJSONAsync(e,t){return Te(this,void 0,void 0,function*(){if(t==null)throw new Error("MiniSearch: loadJSON should be given the same options used when serializing the index");return this.loadJSAsync(JSON.parse(e),t)})}static getDefault(e){if(Pe.hasOwnProperty(e))return ze(Pe,e);throw new Error(`MiniSearch: unknown option "${e}"`)}static loadJS(e,t){const{index:s,documentIds:n,fieldLength:r,storedFields:i,serializationVersion:o}=e,c=this.instantiateMiniSearch(e,t);c._documentIds=Se(n),c._fieldLength=Se(r),c._storedFields=Se(i);for(const[l,h]of c._documentIds)c._idToShortId.set(h,l);for(const[l,h]of s){const f=new Map;for(const v of Object.keys(h)){let b=h[v];o===1&&(b=b.ds),f.set(parseInt(v,10),Se(b))}c._index.set(l,f)}return c}static loadJSAsync(e,t){return Te(this,void 0,void 0,function*(){const{index:s,documentIds:n,fieldLength:r,storedFields:i,serializationVersion:o}=e,c=this.instantiateMiniSearch(e,t);c._documentIds=yield Ee(n),c._fieldLength=yield Ee(r),c._storedFields=yield Ee(i);for(const[h,f]of c._documentIds)c._idToShortId.set(f,h);let l=0;for(const[h,f]of s){const v=new Map;for(const b of Object.keys(f)){let w=f[b];o===1&&(w=w.ds),v.set(parseInt(b,10),yield Ee(w))}++l%1e3===0&&(yield Nt(0)),c._index.set(h,v)}return c})}static instantiateMiniSearch(e,t){const{documentCount:s,nextId:n,fieldIds:r,averageFieldLength:i,dirtCount:o,serializationVersion:c}=e;if(c!==1&&c!==2)throw new Error("MiniSearch: cannot deserialize an index created with an incompatible version");const l=new le(t);return l._documentCount=s,l._nextId=n,l._idToShortId=new Map,l._fieldIds=r,l._avgFieldLength=i,l._dirtCount=o||0,l._index=new X,l}executeQuery(e,t={}){if(e===le.wildcard)return this.executeWildcardQuery(t);if(typeof e!="string"){const v=Object.assign(Object.assign(Object.assign({},t),e),{queries:void 0}),b=e.queries.map(w=>this.executeQuery(w,v));return this.combineResults(b,v.combineWith)}const{tokenize:s,processTerm:n,searchOptions:r}=this._options,i=Object.assign(Object.assign({tokenize:s,processTerm:n},r),t),{tokenize:o,processTerm:c}=i,f=o(e).flatMap(v=>c(v)).filter(v=>!!v).map($s(i)).map(v=>this.executeQuerySpec(v,i));return this.combineResults(f,i.combineWith)}executeQuerySpec(e,t){const s=Object.assign(Object.assign({},this._options.searchOptions),t),n=(s.fields||this._options.fields).reduce((_,y)=>Object.assign(Object.assign({},_),{[y]:ze(s.boost,y)||1}),{}),{boostDocument:r,weights:i,maxFuzzy:o,bm25:c}=s,{fuzzy:l,prefix:h}=Object.assign(Object.assign({},dt.weights),i),f=this._index.get(e.term),v=this.termResults(e.term,e.term,1,e.termBoost,f,n,r,c);let b,w;if(e.prefix&&(b=this._index.atPrefix(e.term)),e.fuzzy){const _=e.fuzzy===!0?.2:e.fuzzy,y=_<1?Math.min(o,Math.round(e.term.length*_)):_;y&&(w=this._index.fuzzyGet(e.term,y))}if(b)for(const[_,y]of b){const R=_.length-e.term.length;if(!R)continue;w==null||w.delete(_);const C=h*_.length/(_.length+.3*R);this.termResults(e.term,_,C,e.termBoost,y,n,r,c,v)}if(w)for(const _ of w.keys()){const[y,R]=w.get(_);if(!R)continue;const C=l*_.length/(_.length+R);this.termResults(e.term,_,C,e.termBoost,y,n,r,c,v)}return v}executeWildcardQuery(e){const t=new Map,s=Object.assign(Object.assign({},this._options.searchOptions),e);for(const[n,r]of this._documentIds){const i=s.boostDocument?s.boostDocument(r,"",this._storedFields.get(n)):1;t.set(n,{score:i,terms:[],match:{}})}return t}combineResults(e,t=Ue){if(e.length===0)return new Map;const s=t.toLowerCase(),n=Ps[s];if(!n)throw new Error(`Invalid combination operator: ${t}`);return e.reduce(n)||new Map}toJSON(){const e=[];for(const[t,s]of this._index){const n={};for(const[r,i]of s)n[r]=Object.fromEntries(i);e.push([t,n])}return{documentCount:this._documentCount,nextId:this._nextId,documentIds:Object.fromEntries(this._documentIds),fieldIds:this._fieldIds,fieldLength:Object.fromEntries(this._fieldLength),averageFieldLength:this._avgFieldLength,storedFields:Object.fromEntries(this._storedFields),dirtCount:this._dirtCount,index:e,serializationVersion:2}}termResults(e,t,s,n,r,i,o,c,l=new Map){if(r==null)return l;for(const h of Object.keys(i)){const f=i[h],v=this._fieldIds[h],b=r.get(v);if(b==null)continue;let w=b.size;const _=this._avgFieldLength[v];for(const y of b.keys()){if(!this._documentIds.has(y)){this.removeTerm(v,y,t),w-=1;continue}const R=o?o(this._documentIds.get(y),t,this._storedFields.get(y)):1;if(!R)continue;const C=b.get(y),J=this._fieldLength.get(y)[v],H=Vs(C,w,this._documentCount,J,_,c),W=s*n*f*R*H,V=l.get(y);if(V){V.score+=W,Ws(V.terms,e);const $=ze(V.match,t);$?$.push(h):V.match[t]=[h]}else l.set(y,{score:W,terms:[e],match:{[t]:[h]}})}}return l}addTerm(e,t,s){const n=this._index.fetch(s,pt);let r=n.get(e);if(r==null)r=new Map,r.set(t,1),n.set(e,r);else{const i=r.get(t);r.set(t,(i||0)+1)}}removeTerm(e,t,s){if(!this._index.has(s)){this.warnDocumentChanged(t,e,s);return}const n=this._index.fetch(s,pt),r=n.get(e);r==null||r.get(t)==null?this.warnDocumentChanged(t,e,s):r.get(t)<=1?r.size<=1?n.delete(e):r.delete(t):r.set(t,r.get(t)-1),this._index.get(s).size===0&&this._index.delete(s)}warnDocumentChanged(e,t,s){for(const n of Object.keys(this._fieldIds))if(this._fieldIds[n]===t){this._options.logger("warn",`MiniSearch: document with ID ${this._documentIds.get(e)} has changed before removal: term "${s}" was not present in field "${n}". Removing a document after it has changed can corrupt the index!`,"version_conflict");return}}addDocumentId(e){const t=this._nextId;return this._idToShortId.set(e,t),this._documentIds.set(t,e),this._documentCount+=1,this._nextId+=1,t}addFields(e){for(let t=0;tObject.prototype.hasOwnProperty.call(a,e)?a[e]:void 0,Ps={[Ue]:(a,e)=>{for(const t of e.keys()){const s=a.get(t);if(s==null)a.set(t,e.get(t));else{const{score:n,terms:r,match:i}=e.get(t);s.score=s.score+n,s.match=Object.assign(s.match,i),ht(s.terms,r)}}return a},[It]:(a,e)=>{const t=new Map;for(const s of e.keys()){const n=a.get(s);if(n==null)continue;const{score:r,terms:i,match:o}=e.get(s);ht(n.terms,i),t.set(s,{score:n.score+r,terms:n.terms,match:Object.assign(n.match,o)})}return t},[zs]:(a,e)=>{for(const t of e.keys())a.delete(t);return a}},js={k:1.2,b:.7,d:.5},Vs=(a,e,t,s,n,r)=>{const{k:i,b:o,d:c}=r;return Math.log(1+(t-e+.5)/(e+.5))*(c+a*(i+1)/(a+i*(1-o+o*s/n)))},$s=a=>(e,t,s)=>{const n=typeof a.fuzzy=="function"?a.fuzzy(e,t,s):a.fuzzy||!1,r=typeof a.prefix=="function"?a.prefix(e,t,s):a.prefix===!0,i=typeof a.boostTerm=="function"?a.boostTerm(e,t,s):1;return{term:e,fuzzy:n,prefix:r,termBoost:i}},Pe={idField:"id",extractField:(a,e)=>a[e],tokenize:a=>a.split(Ks),processTerm:a=>a.toLowerCase(),fields:void 0,searchOptions:void 0,storeFields:[],logger:(a,e)=>{typeof(console==null?void 0:console[a])=="function"&&console[a](e)},autoVacuum:!0},dt={combineWith:Ue,prefix:!1,fuzzy:!1,maxFuzzy:6,boost:{},weights:{fuzzy:.45,prefix:.375},bm25:js},Bs={combineWith:It,prefix:(a,e,t)=>e===t.length-1},We={batchSize:1e3,batchWait:10},Ke={minDirtFactor:.1,minDirtCount:20},je=Object.assign(Object.assign({},We),Ke),Ws=(a,e)=>{a.includes(e)||a.push(e)},ht=(a,e)=>{for(const t of e)a.includes(t)||a.push(t)},ft=({score:a},{score:e})=>e-a,pt=()=>new Map,Se=a=>{const e=new Map;for(const t of Object.keys(a))e.set(parseInt(t,10),a[t]);return e},Ee=a=>Te(void 0,void 0,void 0,function*(){const e=new Map;let t=0;for(const s of Object.keys(a))e.set(parseInt(s,10),a[s]),++t%1e3===0&&(yield Nt(0));return e}),Nt=a=>new Promise(e=>setTimeout(e,a)),Ks=/[\n\r\p{Z}\p{P}]+/u;class Js{constructor(e=10){Ce(this,"max");Ce(this,"cache");this.max=e,this.cache=new Map}get(e){let t=this.cache.get(e);return t!==void 0&&(this.cache.delete(e),this.cache.set(e,t)),t}set(e,t){this.cache.has(e)?this.cache.delete(e):this.cache.size===this.max&&this.cache.delete(this.first()),this.cache.set(e,t)}first(){return this.cache.keys().next().value}clear(){this.cache.clear()}}const K=a=>(Qt("data-v-f4c4f812"),a=a(),Ht(),a),Us=["aria-owns"],qs={class:"shell"},Gs=["title"],Qs=K(()=>x("span",{"aria-hidden":"true",class:"vpi-search search-icon local-search-icon"},null,-1)),Hs=[Qs],Ys={class:"search-actions before"},Zs=["title"],Xs=K(()=>x("span",{class:"vpi-arrow-left local-search-icon"},null,-1)),en=[Xs],tn=["placeholder"],sn={class:"search-actions"},nn=["title"],rn=K(()=>x("span",{class:"vpi-layout-list local-search-icon"},null,-1)),an=[rn],on=["disabled","title"],cn=K(()=>x("span",{class:"vpi-delete local-search-icon"},null,-1)),ln=[cn],un=["id","role","aria-labelledby"],dn=["aria-selected"],hn=["href","aria-label","onMouseenter","onFocusin"],fn={class:"titles"},pn=K(()=>x("span",{class:"title-icon"},"#",-1)),vn=["innerHTML"],mn=K(()=>x("span",{class:"vpi-chevron-right local-search-icon"},null,-1)),gn={class:"title main"},bn=["innerHTML"],yn={key:0,class:"excerpt-wrapper"},wn={key:0,class:"excerpt",inert:""},_n=["innerHTML"],xn=K(()=>x("div",{class:"excerpt-gradient-bottom"},null,-1)),Sn=K(()=>x("div",{class:"excerpt-gradient-top"},null,-1)),En={key:0,class:"no-results"},Tn={class:"search-keyboard-shortcuts"},In=["aria-label"],Nn=K(()=>x("span",{class:"vpi-arrow-up navigate-icon"},null,-1)),kn=[Nn],Fn=["aria-label"],On=K(()=>x("span",{class:"vpi-arrow-down navigate-icon"},null,-1)),Rn=[On],Cn=["aria-label"],Mn=K(()=>x("span",{class:"vpi-corner-down-left navigate-icon"},null,-1)),An=[Mn],Ln=["aria-label"],Dn=Mt({__name:"VPLocalSearchBox",emits:["close"],setup(a,{emit:e}){var F,M;const t=e,s=be(),n=be(),r=be(is),i=ss(),{activate:o}=Rs(s,{immediate:!0,allowOutsideClick:!0,clickOutsideDeactivates:!0,escapeDeactivates:!0}),{localeIndex:c,theme:l}=i,h=et(async()=>{var p,g,N,O,P,j,I,L,q;return it(le.loadJSON((N=await((g=(p=r.value)[c.value])==null?void 0:g.call(p)))==null?void 0:N.default,{fields:["title","titles","text"],storeFields:["title","titles"],searchOptions:{fuzzy:.2,prefix:!0,boost:{title:4,text:2,titles:1},...((O=l.value.search)==null?void 0:O.provider)==="local"&&((j=(P=l.value.search.options)==null?void 0:P.miniSearch)==null?void 0:j.searchOptions)},...((I=l.value.search)==null?void 0:I.provider)==="local"&&((q=(L=l.value.search.options)==null?void 0:L.miniSearch)==null?void 0:q.options)}))}),v=ye(()=>{var p,g;return((p=l.value.search)==null?void 0:p.provider)==="local"&&((g=l.value.search.options)==null?void 0:g.disableQueryPersistence)===!0}).value?ne(""):At("vitepress:local-search-filter",""),b=Lt("vitepress:local-search-detailed-list",((F=l.value.search)==null?void 0:F.provider)==="local"&&((M=l.value.search.options)==null?void 0:M.detailedView)===!0),w=ye(()=>{var p,g,N;return((p=l.value.search)==null?void 0:p.provider)==="local"&&(((g=l.value.search.options)==null?void 0:g.disableDetailedView)===!0||((N=l.value.search.options)==null?void 0:N.detailedView)===!1)}),_=ye(()=>{var g,N,O,P,j,I,L;const p=((g=l.value.search)==null?void 0:g.options)??l.value.algolia;return((j=(P=(O=(N=p==null?void 0:p.locales)==null?void 0:N[c.value])==null?void 0:O.translations)==null?void 0:P.button)==null?void 0:j.buttonText)||((L=(I=p==null?void 0:p.translations)==null?void 0:I.button)==null?void 0:L.buttonText)||"Search"});Dt(()=>{w.value&&(b.value=!1)});const y=be([]),R=ne(!1);Ve(v,()=>{R.value=!1});const C=et(async()=>{if(n.value)return it(new Ms(n.value))},null),J=new Js(16);zt(()=>[h.value,v.value,b.value],async([p,g,N],O,P)=>{var me,qe,Ge,Qe;(O==null?void 0:O[0])!==p&&J.clear();let j=!1;if(P(()=>{j=!0}),!p)return;y.value=p.search(g).slice(0,16),R.value=!0;const I=N?await Promise.all(y.value.map(B=>H(B.id))):[];if(j)return;for(const{id:B,mod:ee}of I){const te=B.slice(0,B.indexOf("#"));let Y=J.get(te);if(Y)continue;Y=new Map,J.set(te,Y);const G=ee.default??ee;if(G!=null&&G.render||G!=null&&G.setup){const se=Yt(G);se.config.warnHandler=()=>{},se.provide(Zt,i),Object.defineProperties(se.config.globalProperties,{$frontmatter:{get(){return i.frontmatter.value}},$params:{get(){return i.page.value.params}}});const He=document.createElement("div");se.mount(He),He.querySelectorAll("h1, h2, h3, h4, h5, h6").forEach(ue=>{var Xe;const ge=(Xe=ue.querySelector("a"))==null?void 0:Xe.getAttribute("href"),Ye=(ge==null?void 0:ge.startsWith("#"))&&ge.slice(1);if(!Ye)return;let Ze="";for(;(ue=ue.nextElementSibling)&&!/^h[1-6]$/i.test(ue.tagName);)Ze+=ue.outerHTML;Y.set(Ye,Ze)}),se.unmount()}if(j)return}const L=new Set;if(y.value=y.value.map(B=>{const[ee,te]=B.id.split("#"),Y=J.get(ee),G=(Y==null?void 0:Y.get(te))??"";for(const se in B.match)L.add(se);return{...B,text:G}}),await de(),j)return;await new Promise(B=>{var ee;(ee=C.value)==null||ee.unmark({done:()=>{var te;(te=C.value)==null||te.markRegExp(k(L),{done:B})}})});const q=((me=s.value)==null?void 0:me.querySelectorAll(".result .excerpt"))??[];for(const B of q)(qe=B.querySelector('mark[data-markjs="true"]'))==null||qe.scrollIntoView({block:"center"});(Qe=(Ge=n.value)==null?void 0:Ge.firstElementChild)==null||Qe.scrollIntoView({block:"start"})},{debounce:200,immediate:!0});async function H(p){const g=Xt(p.slice(0,p.indexOf("#")));try{if(!g)throw new Error(`Cannot find file for id: ${p}`);return{id:p,mod:await import(g)}}catch(N){return console.error(N),{id:p,mod:{}}}}const W=ne(),V=ye(()=>{var p;return((p=v.value)==null?void 0:p.length)<=0});function $(p=!0){var g,N;(g=W.value)==null||g.focus(),p&&((N=W.value)==null||N.select())}Me(()=>{$()});function Re(p){p.pointerType==="mouse"&&$()}const A=ne(-1),U=ne(!1);Ve(y,p=>{A.value=p.length?0:-1,T()});function T(){de(()=>{const p=document.querySelector(".result.selected");p==null||p.scrollIntoView({block:"nearest"})})}we("ArrowUp",p=>{p.preventDefault(),A.value--,A.value<0&&(A.value=y.value.length-1),U.value=!0,T()}),we("ArrowDown",p=>{p.preventDefault(),A.value++,A.value>=y.value.length&&(A.value=0),U.value=!0,T()});const u=Pt();we("Enter",p=>{if(p.isComposing||p.target instanceof HTMLButtonElement&&p.target.type!=="submit")return;const g=y.value[A.value];if(p.target instanceof HTMLInputElement&&!g){p.preventDefault();return}g&&(u.go(g.id),t("close"))}),we("Escape",()=>{t("close")});const m=ns({modal:{displayDetails:"Display detailed list",resetButtonTitle:"Reset search",backButtonTitle:"Close search",noResultsText:"No results for",footer:{selectText:"to select",selectKeyAriaLabel:"enter",navigateText:"to navigate",navigateUpKeyAriaLabel:"up arrow",navigateDownKeyAriaLabel:"down arrow",closeText:"to close",closeKeyAriaLabel:"escape"}}});Me(()=>{window.history.pushState(null,"",null)}),jt("popstate",p=>{p.preventDefault(),t("close")});const S=Vt($t?document.body:null);Me(()=>{de(()=>{S.value=!0,de().then(()=>o())})}),Bt(()=>{S.value=!1});function E(){v.value="",de().then(()=>$(!1))}function k(p){return new RegExp([...p].sort((g,N)=>N.length-g.length).map(g=>`(${es(g)})`).join("|"),"gi")}return(p,g)=>{var N,O,P,j;return Q(),Wt(Gt,{to:"body"},[x("div",{ref_key:"el",ref:s,role:"button","aria-owns":(N=y.value)!=null&&N.length?"localsearch-list":void 0,"aria-expanded":"true","aria-haspopup":"listbox","aria-labelledby":"localsearch-label",class:"VPLocalSearchBox"},[x("div",{class:"backdrop",onClick:g[0]||(g[0]=I=>p.$emit("close"))}),x("div",qs,[x("form",{class:"search-bar",onPointerup:g[4]||(g[4]=I=>Re(I)),onSubmit:g[5]||(g[5]=Kt(()=>{},["prevent"]))},[x("label",{title:_.value,id:"localsearch-label",for:"localsearch-input"},Hs,8,Gs),x("div",Ys,[x("button",{class:"back-button",title:D(m)("modal.backButtonTitle"),onClick:g[1]||(g[1]=I=>p.$emit("close"))},en,8,Zs)]),Jt(x("input",{ref_key:"searchInput",ref:W,"onUpdate:modelValue":g[2]||(g[2]=I=>qt(v)?v.value=I:null),placeholder:_.value,id:"localsearch-input","aria-labelledby":"localsearch-label",class:"search-input"},null,8,tn),[[Ut,D(v)]]),x("div",sn,[w.value?_e("",!0):(Q(),Z("button",{key:0,class:tt(["toggle-layout-button",{"detailed-list":D(b)}]),type:"button",title:D(m)("modal.displayDetails"),onClick:g[3]||(g[3]=I=>A.value>-1&&(b.value=!D(b)))},an,10,nn)),x("button",{class:"clear-button",type:"reset",disabled:V.value,title:D(m)("modal.resetButtonTitle"),onClick:E},ln,8,on)])],32),x("ul",{ref_key:"resultsEl",ref:n,id:(O=y.value)!=null&&O.length?"localsearch-list":void 0,role:(P=y.value)!=null&&P.length?"listbox":void 0,"aria-labelledby":(j=y.value)!=null&&j.length?"localsearch-label":void 0,class:"results",onMousemove:g[7]||(g[7]=I=>U.value=!1)},[(Q(!0),Z(nt,null,st(y.value,(I,L)=>(Q(),Z("li",{key:I.id,role:"option","aria-selected":A.value===L?"true":"false"},[x("a",{href:I.id,class:tt(["result",{selected:A.value===L}]),"aria-label":[...I.titles,I.title].join(" > "),onMouseenter:q=>!U.value&&(A.value=L),onFocusin:q=>A.value=L,onClick:g[6]||(g[6]=q=>p.$emit("close"))},[x("div",null,[x("div",fn,[pn,(Q(!0),Z(nt,null,st(I.titles,(q,me)=>(Q(),Z("span",{key:me,class:"title"},[x("span",{class:"text",innerHTML:q},null,8,vn),mn]))),128)),x("span",gn,[x("span",{class:"text",innerHTML:I.title},null,8,bn)])]),D(b)?(Q(),Z("div",yn,[I.text?(Q(),Z("div",wn,[x("div",{class:"vp-doc",innerHTML:I.text},null,8,_n)])):_e("",!0),xn,Sn])):_e("",!0)])],42,hn)],8,dn))),128)),D(v)&&!y.value.length&&R.value?(Q(),Z("li",En,[he(fe(D(m)("modal.noResultsText"))+' "',1),x("strong",null,fe(D(v)),1),he('" ')])):_e("",!0)],40,un),x("div",Tn,[x("span",null,[x("kbd",{"aria-label":D(m)("modal.footer.navigateUpKeyAriaLabel")},kn,8,In),x("kbd",{"aria-label":D(m)("modal.footer.navigateDownKeyAriaLabel")},Rn,8,Fn),he(" "+fe(D(m)("modal.footer.navigateText")),1)]),x("span",null,[x("kbd",{"aria-label":D(m)("modal.footer.selectKeyAriaLabel")},An,8,Cn),he(" "+fe(D(m)("modal.footer.selectText")),1)]),x("span",null,[x("kbd",{"aria-label":D(m)("modal.footer.closeKeyAriaLabel")},"esc",8,Ln),he(" "+fe(D(m)("modal.footer.closeText")),1)])])])],8,Us)])}}}),Bn=ts(Dn,[["__scopeId","data-v-f4c4f812"]]);export{Bn as default}; diff --git a/dev/assets/chunks/framework.CBLuZwrP.js b/dev/assets/chunks/framework.CBLuZwrP.js new file mode 100644 index 0000000..1867df0 --- /dev/null +++ b/dev/assets/chunks/framework.CBLuZwrP.js @@ -0,0 +1,17 @@ +/** +* @vue/shared v3.4.34 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**//*! #__NO_SIDE_EFFECTS__ */function wr(e,t){const n=new Set(e.split(","));return r=>n.has(r)}const ne={},yt=[],Te=()=>{},Pi=()=>!1,Kt=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Er=e=>e.startsWith("onUpdate:"),fe=Object.assign,Cr=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Ni=Object.prototype.hasOwnProperty,z=(e,t)=>Ni.call(e,t),B=Array.isArray,_t=e=>xn(e)==="[object Map]",zs=e=>xn(e)==="[object Set]",K=e=>typeof e=="function",ie=e=>typeof e=="string",Qe=e=>typeof e=="symbol",Z=e=>e!==null&&typeof e=="object",Js=e=>(Z(e)||K(e))&&K(e.then)&&K(e.catch),Qs=Object.prototype.toString,xn=e=>Qs.call(e),Fi=e=>xn(e).slice(8,-1),Zs=e=>xn(e)==="[object Object]",Sr=e=>ie(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,vt=wr(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Tn=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},$i=/-(\w)/g,Oe=Tn(e=>e.replace($i,(t,n)=>n?n.toUpperCase():"")),Hi=/\B([A-Z])/g,Ze=Tn(e=>e.replace(Hi,"-$1").toLowerCase()),An=Tn(e=>e.charAt(0).toUpperCase()+e.slice(1)),fn=Tn(e=>e?`on${An(e)}`:""),ze=(e,t)=>!Object.is(e,t),dn=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})},cr=e=>{const t=parseFloat(e);return isNaN(t)?e:t},ji=e=>{const t=ie(e)?Number(e):NaN;return isNaN(t)?e:t};let Jr;const to=()=>Jr||(Jr=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function xr(e){if(B(e)){const t={};for(let n=0;n{if(n){const r=n.split(Di);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function Tr(e){let t="";if(ie(e))t=e;else if(B(e))for(let n=0;n!!(e&&e.__v_isRef===!0),Wi=e=>ie(e)?e:e==null?"":B(e)||Z(e)&&(e.toString===Qs||!K(e.toString))?ro(e)?Wi(e.value):JSON.stringify(e,so,2):String(e),so=(e,t)=>ro(t)?so(e,t.value):_t(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,s],o)=>(n[kn(r,o)+" =>"]=s,n),{})}:zs(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>kn(n))}:Qe(t)?kn(t):Z(t)&&!B(t)&&!Zs(t)?String(t):t,kn=(e,t="")=>{var n;return Qe(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** +* @vue/reactivity v3.4.34 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let we;class qi{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=we,!t&&we&&(this.index=(we.scopes||(we.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const n=we;try{return we=this,t()}finally{we=n}}}on(){we=this}off(){we=this.parent}stop(t){if(this._active){let n,r;for(n=0,r=this.effects.length;n=4))break}this._dirtyLevel===1&&(this._dirtyLevel=0),tt()}return this._dirtyLevel>=4}set dirty(t){this._dirtyLevel=t?4:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let t=Xe,n=ct;try{return Xe=!0,ct=this,this._runnings++,Qr(this),this.fn()}finally{Zr(this),this._runnings--,ct=n,Xe=t}}stop(){this.active&&(Qr(this),Zr(this),this.onStop&&this.onStop(),this.active=!1)}}function Yi(e){return e.value}function Qr(e){e._trackId++,e._depsLength=0}function Zr(e){if(e.deps.length>e._depsLength){for(let t=e._depsLength;t{const n=new Map;return n.cleanup=e,n.computed=t,n},yn=new WeakMap,at=Symbol(""),fr=Symbol("");function ve(e,t,n){if(Xe&&ct){let r=yn.get(e);r||yn.set(e,r=new Map);let s=r.get(n);s||r.set(n,s=uo(()=>r.delete(n))),co(ct,s)}}function Ve(e,t,n,r,s,o){const i=yn.get(e);if(!i)return;let l=[];if(t==="clear")l=[...i.values()];else if(n==="length"&&B(e)){const c=Number(r);i.forEach((u,f)=>{(f==="length"||!Qe(f)&&f>=c)&&l.push(u)})}else switch(n!==void 0&&l.push(i.get(n)),t){case"add":B(e)?Sr(n)&&l.push(i.get("length")):(l.push(i.get(at)),_t(e)&&l.push(i.get(fr)));break;case"delete":B(e)||(l.push(i.get(at)),_t(e)&&l.push(i.get(fr)));break;case"set":_t(e)&&l.push(i.get(at));break}Rr();for(const c of l)c&&ao(c,4);Or()}function zi(e,t){const n=yn.get(e);return n&&n.get(t)}const Ji=wr("__proto__,__v_isRef,__isVue"),fo=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Qe)),es=Qi();function Qi(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const r=J(this);for(let o=0,i=this.length;o{e[t]=function(...n){et(),Rr();const r=J(this)[t].apply(this,n);return Or(),tt(),r}}),e}function Zi(e){Qe(e)||(e=String(e));const t=J(this);return ve(t,"has",e),t.hasOwnProperty(e)}class ho{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,r){const s=this._isReadonly,o=this._isShallow;if(n==="__v_isReactive")return!s;if(n==="__v_isReadonly")return s;if(n==="__v_isShallow")return o;if(n==="__v_raw")return r===(s?o?dl:yo:o?mo:go).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(r)?t:void 0;const i=B(t);if(!s){if(i&&z(es,n))return Reflect.get(es,n,r);if(n==="hasOwnProperty")return Zi}const l=Reflect.get(t,n,r);return(Qe(n)?fo.has(n):Ji(n))||(s||ve(t,"get",n),o)?l:de(l)?i&&Sr(n)?l:l.value:Z(l)?s?Ln(l):On(l):l}}class po extends ho{constructor(t=!1){super(!1,t)}set(t,n,r,s){let o=t[n];if(!this._isShallow){const c=dt(o);if(!St(r)&&!dt(r)&&(o=J(o),r=J(r)),!B(t)&&de(o)&&!de(r))return c?!1:(o.value=r,!0)}const i=B(t)&&Sr(n)?Number(n)e,Rn=e=>Reflect.getPrototypeOf(e);function Jt(e,t,n=!1,r=!1){e=e.__v_raw;const s=J(e),o=J(t);n||(ze(t,o)&&ve(s,"get",t),ve(s,"get",o));const{has:i}=Rn(s),l=r?Lr:n?Pr:jt;if(i.call(s,t))return l(e.get(t));if(i.call(s,o))return l(e.get(o));e!==s&&e.get(t)}function Qt(e,t=!1){const n=this.__v_raw,r=J(n),s=J(e);return t||(ze(e,s)&&ve(r,"has",e),ve(r,"has",s)),e===s?n.has(e):n.has(e)||n.has(s)}function Zt(e,t=!1){return e=e.__v_raw,!t&&ve(J(e),"iterate",at),Reflect.get(e,"size",e)}function ts(e,t=!1){!t&&!St(e)&&!dt(e)&&(e=J(e));const n=J(this);return Rn(n).has.call(n,e)||(n.add(e),Ve(n,"add",e,e)),this}function ns(e,t,n=!1){!n&&!St(t)&&!dt(t)&&(t=J(t));const r=J(this),{has:s,get:o}=Rn(r);let i=s.call(r,e);i||(e=J(e),i=s.call(r,e));const l=o.call(r,e);return r.set(e,t),i?ze(t,l)&&Ve(r,"set",e,t):Ve(r,"add",e,t),this}function rs(e){const t=J(this),{has:n,get:r}=Rn(t);let s=n.call(t,e);s||(e=J(e),s=n.call(t,e)),r&&r.call(t,e);const o=t.delete(e);return s&&Ve(t,"delete",e,void 0),o}function ss(){const e=J(this),t=e.size!==0,n=e.clear();return t&&Ve(e,"clear",void 0,void 0),n}function en(e,t){return function(r,s){const o=this,i=o.__v_raw,l=J(i),c=t?Lr:e?Pr:jt;return!e&&ve(l,"iterate",at),i.forEach((u,f)=>r.call(s,c(u),c(f),o))}}function tn(e,t,n){return function(...r){const s=this.__v_raw,o=J(s),i=_t(o),l=e==="entries"||e===Symbol.iterator&&i,c=e==="keys"&&i,u=s[e](...r),f=n?Lr:t?Pr:jt;return!t&&ve(o,"iterate",c?fr:at),{next(){const{value:h,done:m}=u.next();return m?{value:h,done:m}:{value:l?[f(h[0]),f(h[1])]:f(h),done:m}},[Symbol.iterator](){return this}}}}function Ue(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function sl(){const e={get(o){return Jt(this,o)},get size(){return Zt(this)},has:Qt,add:ts,set:ns,delete:rs,clear:ss,forEach:en(!1,!1)},t={get(o){return Jt(this,o,!1,!0)},get size(){return Zt(this)},has:Qt,add(o){return ts.call(this,o,!0)},set(o,i){return ns.call(this,o,i,!0)},delete:rs,clear:ss,forEach:en(!1,!0)},n={get(o){return Jt(this,o,!0)},get size(){return Zt(this,!0)},has(o){return Qt.call(this,o,!0)},add:Ue("add"),set:Ue("set"),delete:Ue("delete"),clear:Ue("clear"),forEach:en(!0,!1)},r={get(o){return Jt(this,o,!0,!0)},get size(){return Zt(this,!0)},has(o){return Qt.call(this,o,!0)},add:Ue("add"),set:Ue("set"),delete:Ue("delete"),clear:Ue("clear"),forEach:en(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(o=>{e[o]=tn(o,!1,!1),n[o]=tn(o,!0,!1),t[o]=tn(o,!1,!0),r[o]=tn(o,!0,!0)}),[e,n,t,r]}const[ol,il,ll,cl]=sl();function Mr(e,t){const n=t?e?cl:ll:e?il:ol;return(r,s,o)=>s==="__v_isReactive"?!e:s==="__v_isReadonly"?e:s==="__v_raw"?r:Reflect.get(z(n,s)&&s in r?n:r,s,o)}const al={get:Mr(!1,!1)},ul={get:Mr(!1,!0)},fl={get:Mr(!0,!1)};const go=new WeakMap,mo=new WeakMap,yo=new WeakMap,dl=new WeakMap;function hl(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function pl(e){return e.__v_skip||!Object.isExtensible(e)?0:hl(Fi(e))}function On(e){return dt(e)?e:Ir(e,!1,tl,al,go)}function gl(e){return Ir(e,!1,rl,ul,mo)}function Ln(e){return Ir(e,!0,nl,fl,yo)}function Ir(e,t,n,r,s){if(!Z(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=s.get(e);if(o)return o;const i=pl(e);if(i===0)return e;const l=new Proxy(e,i===2?r:n);return s.set(e,l),l}function bt(e){return dt(e)?bt(e.__v_raw):!!(e&&e.__v_isReactive)}function dt(e){return!!(e&&e.__v_isReadonly)}function St(e){return!!(e&&e.__v_isShallow)}function _o(e){return e?!!e.__v_raw:!1}function J(e){const t=e&&e.__v_raw;return t?J(t):e}function hn(e){return Object.isExtensible(e)&&eo(e,"__v_skip",!0),e}const jt=e=>Z(e)?On(e):e,Pr=e=>Z(e)?Ln(e):e;class vo{constructor(t,n,r,s){this.getter=t,this._setter=n,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new Ar(()=>t(this._value),()=>Mt(this,this.effect._dirtyLevel===2?2:3)),this.effect.computed=this,this.effect.active=this._cacheable=!s,this.__v_isReadonly=r}get value(){const t=J(this);return(!t._cacheable||t.effect.dirty)&&ze(t._value,t._value=t.effect.run())&&Mt(t,4),Nr(t),t.effect._dirtyLevel>=2&&Mt(t,2),t._value}set value(t){this._setter(t)}get _dirty(){return this.effect.dirty}set _dirty(t){this.effect.dirty=t}}function ml(e,t,n=!1){let r,s;const o=K(e);return o?(r=e,s=Te):(r=e.get,s=e.set),new vo(r,s,o||!s,n)}function Nr(e){var t;Xe&&ct&&(e=J(e),co(ct,(t=e.dep)!=null?t:e.dep=uo(()=>e.dep=void 0,e instanceof vo?e:void 0)))}function Mt(e,t=4,n,r){e=J(e);const s=e.dep;s&&ao(s,t)}function de(e){return!!(e&&e.__v_isRef===!0)}function oe(e){return bo(e,!1)}function Fr(e){return bo(e,!0)}function bo(e,t){return de(e)?e:new yl(e,t)}class yl{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:J(t),this._value=n?t:jt(t)}get value(){return Nr(this),this._value}set value(t){const n=this.__v_isShallow||St(t)||dt(t);t=n?t:J(t),ze(t,this._rawValue)&&(this._rawValue,this._rawValue=t,this._value=n?t:jt(t),Mt(this,4))}}function wo(e){return de(e)?e.value:e}const _l={get:(e,t,n)=>wo(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const s=e[t];return de(s)&&!de(n)?(s.value=n,!0):Reflect.set(e,t,n,r)}};function Eo(e){return bt(e)?e:new Proxy(e,_l)}class vl{constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:n,set:r}=t(()=>Nr(this),()=>Mt(this));this._get=n,this._set=r}get value(){return this._get()}set value(t){this._set(t)}}function bl(e){return new vl(e)}class wl{constructor(t,n,r){this._object=t,this._key=n,this._defaultValue=r,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return zi(J(this._object),this._key)}}class El{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function Cl(e,t,n){return de(e)?e:K(e)?new El(e):Z(e)&&arguments.length>1?Sl(e,t,n):oe(e)}function Sl(e,t,n){const r=e[t];return de(r)?r:new wl(e,t,n)}/** +* @vue/runtime-core v3.4.34 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function Ye(e,t,n,r){try{return r?e(...r):e()}catch(s){Wt(s,t,n)}}function Ae(e,t,n,r){if(K(e)){const s=Ye(e,t,n,r);return s&&Js(s)&&s.catch(o=>{Wt(o,t,n)}),s}if(B(e)){const s=[];for(let o=0;o>>1,s=pe[r],o=Dt(s);oNe&&pe.splice(t,1)}function Rl(e){B(e)?wt.push(...e):(!Ke||!Ke.includes(e,e.allowRecurse?it+1:it))&&wt.push(e),So()}function os(e,t,n=Vt?Ne+1:0){for(;nDt(n)-Dt(r));if(wt.length=0,Ke){Ke.push(...t);return}for(Ke=t,it=0;ite.id==null?1/0:e.id,Ol=(e,t)=>{const n=Dt(e)-Dt(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function xo(e){dr=!1,Vt=!0,pe.sort(Ol);try{for(Ne=0;Ne{r._d&&ws(-1);const o=vn(t);let i;try{i=e(...s)}finally{vn(o),r._d&&ws(1)}return i};return r._n=!0,r._c=!0,r._d=!0,r}function uu(e,t){if(ue===null)return e;const n=Vn(ue),r=e.dirs||(e.dirs=[]);for(let s=0;s{e.isMounted=!0}),Mo(()=>{e.isUnmounting=!0}),e}const Ce=[Function,Array],To={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Ce,onEnter:Ce,onAfterEnter:Ce,onEnterCancelled:Ce,onBeforeLeave:Ce,onLeave:Ce,onAfterLeave:Ce,onLeaveCancelled:Ce,onBeforeAppear:Ce,onAppear:Ce,onAfterAppear:Ce,onAppearCancelled:Ce},Ao=e=>{const t=e.subTree;return t.component?Ao(t.component):t},Il={name:"BaseTransition",props:To,setup(e,{slots:t}){const n=jn(),r=Ml();return()=>{const s=t.default&&Oo(t.default(),!0);if(!s||!s.length)return;let o=s[0];if(s.length>1){for(const m of s)if(m.type!==me){o=m;break}}const i=J(e),{mode:l}=i;if(r.isLeaving)return Kn(o);const c=is(o);if(!c)return Kn(o);let u=hr(c,i,r,n,m=>u=m);bn(c,u);const f=n.subTree,h=f&&is(f);if(h&&h.type!==me&&!lt(c,h)&&Ao(n).type!==me){const m=hr(h,i,r,n);if(bn(h,m),l==="out-in"&&c.type!==me)return r.isLeaving=!0,m.afterLeave=()=>{r.isLeaving=!1,n.update.active!==!1&&(n.effect.dirty=!0,n.update())},Kn(o);l==="in-out"&&c.type!==me&&(m.delayLeave=(b,S,O)=>{const k=Ro(r,h);k[String(h.key)]=h,b[We]=()=>{S(),b[We]=void 0,delete u.delayedLeave},u.delayedLeave=O})}return o}}},Pl=Il;function Ro(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function hr(e,t,n,r,s){const{appear:o,mode:i,persisted:l=!1,onBeforeEnter:c,onEnter:u,onAfterEnter:f,onEnterCancelled:h,onBeforeLeave:m,onLeave:b,onAfterLeave:S,onLeaveCancelled:O,onBeforeAppear:k,onAppear:W,onAfterAppear:D,onAppearCancelled:p}=t,y=String(e.key),I=Ro(n,e),T=(M,_)=>{M&&Ae(M,r,9,_)},F=(M,_)=>{const N=_[1];T(M,_),B(M)?M.every(x=>x.length<=1)&&N():M.length<=1&&N()},$={mode:i,persisted:l,beforeEnter(M){let _=c;if(!n.isMounted)if(o)_=k||c;else return;M[We]&&M[We](!0);const N=I[y];N&<(e,N)&&N.el[We]&&N.el[We](),T(_,[M])},enter(M){let _=u,N=f,x=h;if(!n.isMounted)if(o)_=W||u,N=D||f,x=p||h;else return;let G=!1;const ee=M[nn]=re=>{G||(G=!0,re?T(x,[M]):T(N,[M]),$.delayedLeave&&$.delayedLeave(),M[nn]=void 0)};_?F(_,[M,ee]):ee()},leave(M,_){const N=String(e.key);if(M[nn]&&M[nn](!0),n.isUnmounting)return _();T(m,[M]);let x=!1;const G=M[We]=ee=>{x||(x=!0,_(),ee?T(O,[M]):T(S,[M]),M[We]=void 0,I[N]===e&&delete I[N])};I[N]=e,b?F(b,[M,G]):G()},clone(M){const _=hr(M,t,n,r,s);return s&&s(_),_}};return $}function Kn(e){if(qt(e))return e=Je(e),e.children=null,e}function is(e){if(!qt(e))return e;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&K(n.default))return n.default()}}function bn(e,t){e.shapeFlag&6&&e.component?bn(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Oo(e,t=!1,n){let r=[],s=0;for(let o=0;o1)for(let o=0;o!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function fu(e){K(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:r,delay:s=200,timeout:o,suspensible:i=!0,onError:l}=e;let c=null,u,f=0;const h=()=>(f++,c=null,m()),m=()=>{let b;return c||(b=c=t().catch(S=>{if(S=S instanceof Error?S:new Error(String(S)),l)return new Promise((O,k)=>{l(S,()=>O(h()),()=>k(S),f+1)});throw S}).then(S=>b!==c&&c?c:(S&&(S.__esModule||S[Symbol.toStringTag]==="Module")&&(S=S.default),u=S,S)))};return Hr({name:"AsyncComponentWrapper",__asyncLoader:m,get __asyncResolved(){return u},setup(){const b=ae;if(u)return()=>Wn(u,b);const S=D=>{c=null,Wt(D,b,13,!r)};if(i&&b.suspense||Xt)return m().then(D=>()=>Wn(D,b)).catch(D=>(S(D),()=>r?le(r,{error:D}):null));const O=oe(!1),k=oe(),W=oe(!!s);return s&&setTimeout(()=>{W.value=!1},s),o!=null&&setTimeout(()=>{if(!O.value&&!k.value){const D=new Error(`Async component timed out after ${o}ms.`);S(D),k.value=D}},o),m().then(()=>{O.value=!0,b.parent&&qt(b.parent.vnode)&&(b.parent.effect.dirty=!0,In(b.parent.update))}).catch(D=>{S(D),k.value=D}),()=>{if(O.value&&u)return Wn(u,b);if(k.value&&r)return le(r,{error:k.value});if(n&&!W.value)return le(n)}}})}function Wn(e,t){const{ref:n,props:r,children:s,ce:o}=t.vnode,i=le(e,r,s);return i.ref=n,i.ce=o,delete t.vnode.ce,i}const qt=e=>e.type.__isKeepAlive;function Nl(e,t){Lo(e,"a",t)}function Fl(e,t){Lo(e,"da",t)}function Lo(e,t,n=ae){const r=e.__wdc||(e.__wdc=()=>{let s=n;for(;s;){if(s.isDeactivated)return;s=s.parent}return e()});if(Nn(t,r,n),n){let s=n.parent;for(;s&&s.parent;)qt(s.parent.vnode)&&$l(r,t,n,s),s=s.parent}}function $l(e,t,n,r){const s=Nn(t,e,r,!0);Fn(()=>{Cr(r[t],s)},n)}function Nn(e,t,n=ae,r=!1){if(n){const s=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...i)=>{et();const l=Gt(n),c=Ae(t,n,e,i);return l(),tt(),c});return r?s.unshift(o):s.push(o),o}}const De=e=>(t,n=ae)=>{(!Xt||e==="sp")&&Nn(e,(...r)=>t(...r),n)},Hl=De("bm"),Tt=De("m"),jl=De("bu"),Vl=De("u"),Mo=De("bum"),Fn=De("um"),Dl=De("sp"),Ul=De("rtg"),Bl=De("rtc");function kl(e,t=ae){Nn("ec",e,t)}const Io="components";function du(e,t){return No(Io,e,!0,t)||e}const Po=Symbol.for("v-ndc");function hu(e){return ie(e)?No(Io,e,!1)||e:e||Po}function No(e,t,n=!0,r=!1){const s=ue||ae;if(s){const o=s.type;{const l=Fc(o,!1);if(l&&(l===t||l===Oe(t)||l===An(Oe(t))))return o}const i=ls(s[e]||o[e],t)||ls(s.appContext[e],t);return!i&&r?o:i}}function ls(e,t){return e&&(e[t]||e[Oe(t)]||e[An(Oe(t))])}function pu(e,t,n,r){let s;const o=n;if(B(e)||ie(e)){s=new Array(e.length);for(let i=0,l=e.length;it(i,l,void 0,o));else{const i=Object.keys(e);s=new Array(i.length);for(let l=0,c=i.length;lCn(t)?!(t.type===me||t.type===_e&&!Fo(t.children)):!0)?e:null}function mu(e,t){const n={};for(const r in e)n[/[A-Z]/.test(r)?`on:${r}`:fn(r)]=e[r];return n}const pr=e=>e?li(e)?Vn(e):pr(e.parent):null,It=fe(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>pr(e.parent),$root:e=>pr(e.root),$emit:e=>e.emit,$options:e=>jr(e),$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,In(e.update)}),$nextTick:e=>e.n||(e.n=Mn.bind(e.proxy)),$watch:e=>yc.bind(e)}),qn=(e,t)=>e!==ne&&!e.__isScriptSetup&&z(e,t),Kl={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:r,data:s,props:o,accessCache:i,type:l,appContext:c}=e;let u;if(t[0]!=="$"){const b=i[t];if(b!==void 0)switch(b){case 1:return r[t];case 2:return s[t];case 4:return n[t];case 3:return o[t]}else{if(qn(r,t))return i[t]=1,r[t];if(s!==ne&&z(s,t))return i[t]=2,s[t];if((u=e.propsOptions[0])&&z(u,t))return i[t]=3,o[t];if(n!==ne&&z(n,t))return i[t]=4,n[t];gr&&(i[t]=0)}}const f=It[t];let h,m;if(f)return t==="$attrs"&&ve(e.attrs,"get",""),f(e);if((h=l.__cssModules)&&(h=h[t]))return h;if(n!==ne&&z(n,t))return i[t]=4,n[t];if(m=c.config.globalProperties,z(m,t))return m[t]},set({_:e},t,n){const{data:r,setupState:s,ctx:o}=e;return qn(s,t)?(s[t]=n,!0):r!==ne&&z(r,t)?(r[t]=n,!0):z(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:s,propsOptions:o}},i){let l;return!!n[i]||e!==ne&&z(e,i)||qn(t,i)||(l=o[0])&&z(l,i)||z(r,i)||z(It,i)||z(s.config.globalProperties,i)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:z(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function yu(){return Wl().slots}function Wl(){const e=jn();return e.setupContext||(e.setupContext=ai(e))}function cs(e){return B(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let gr=!0;function ql(e){const t=jr(e),n=e.proxy,r=e.ctx;gr=!1,t.beforeCreate&&as(t.beforeCreate,e,"bc");const{data:s,computed:o,methods:i,watch:l,provide:c,inject:u,created:f,beforeMount:h,mounted:m,beforeUpdate:b,updated:S,activated:O,deactivated:k,beforeDestroy:W,beforeUnmount:D,destroyed:p,unmounted:y,render:I,renderTracked:T,renderTriggered:F,errorCaptured:$,serverPrefetch:M,expose:_,inheritAttrs:N,components:x,directives:G,filters:ee}=t;if(u&&Gl(u,r,null),i)for(const Y in i){const j=i[Y];K(j)&&(r[Y]=j.bind(n))}if(s){const Y=s.call(n,n);Z(Y)&&(e.data=On(Y))}if(gr=!0,o)for(const Y in o){const j=o[Y],He=K(j)?j.bind(n,n):K(j.get)?j.get.bind(n,n):Te,Yt=!K(j)&&K(j.set)?j.set.bind(n):Te,nt=se({get:He,set:Yt});Object.defineProperty(r,Y,{enumerable:!0,configurable:!0,get:()=>nt.value,set:Me=>nt.value=Me})}if(l)for(const Y in l)$o(l[Y],r,n,Y);if(c){const Y=K(c)?c.call(n):c;Reflect.ownKeys(Y).forEach(j=>{Zl(j,Y[j])})}f&&as(f,e,"c");function U(Y,j){B(j)?j.forEach(He=>Y(He.bind(n))):j&&Y(j.bind(n))}if(U(Hl,h),U(Tt,m),U(jl,b),U(Vl,S),U(Nl,O),U(Fl,k),U(kl,$),U(Bl,T),U(Ul,F),U(Mo,D),U(Fn,y),U(Dl,M),B(_))if(_.length){const Y=e.exposed||(e.exposed={});_.forEach(j=>{Object.defineProperty(Y,j,{get:()=>n[j],set:He=>n[j]=He})})}else e.exposed||(e.exposed={});I&&e.render===Te&&(e.render=I),N!=null&&(e.inheritAttrs=N),x&&(e.components=x),G&&(e.directives=G)}function Gl(e,t,n=Te){B(e)&&(e=mr(e));for(const r in e){const s=e[r];let o;Z(s)?"default"in s?o=Ct(s.from||r,s.default,!0):o=Ct(s.from||r):o=Ct(s),de(o)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>o.value,set:i=>o.value=i}):t[r]=o}}function as(e,t,n){Ae(B(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function $o(e,t,n,r){const s=r.includes(".")?Qo(n,r):()=>n[r];if(ie(e)){const o=t[e];K(o)&&Fe(s,o)}else if(K(e))Fe(s,e.bind(n));else if(Z(e))if(B(e))e.forEach(o=>$o(o,t,n,r));else{const o=K(e.handler)?e.handler.bind(n):t[e.handler];K(o)&&Fe(s,o,e)}}function jr(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:s,optionsCache:o,config:{optionMergeStrategies:i}}=e.appContext,l=o.get(t);let c;return l?c=l:!s.length&&!n&&!r?c=t:(c={},s.length&&s.forEach(u=>wn(c,u,i,!0)),wn(c,t,i)),Z(t)&&o.set(t,c),c}function wn(e,t,n,r=!1){const{mixins:s,extends:o}=t;o&&wn(e,o,n,!0),s&&s.forEach(i=>wn(e,i,n,!0));for(const i in t)if(!(r&&i==="expose")){const l=Xl[i]||n&&n[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const Xl={data:us,props:fs,emits:fs,methods:Lt,computed:Lt,beforeCreate:ge,created:ge,beforeMount:ge,mounted:ge,beforeUpdate:ge,updated:ge,beforeDestroy:ge,beforeUnmount:ge,destroyed:ge,unmounted:ge,activated:ge,deactivated:ge,errorCaptured:ge,serverPrefetch:ge,components:Lt,directives:Lt,watch:zl,provide:us,inject:Yl};function us(e,t){return t?e?function(){return fe(K(e)?e.call(this,this):e,K(t)?t.call(this,this):t)}:t:e}function Yl(e,t){return Lt(mr(e),mr(t))}function mr(e){if(B(e)){const t={};for(let n=0;n1)return n&&K(t)?t.call(r&&r.proxy):t}}const jo={},Vo=()=>Object.create(jo),Do=e=>Object.getPrototypeOf(e)===jo;function ec(e,t,n,r=!1){const s={},o=Vo();e.propsDefaults=Object.create(null),Uo(e,t,s,o);for(const i in e.propsOptions[0])i in s||(s[i]=void 0);n?e.props=r?s:gl(s):e.type.props?e.props=s:e.props=o,e.attrs=o}function tc(e,t,n,r){const{props:s,attrs:o,vnode:{patchFlag:i}}=e,l=J(s),[c]=e.propsOptions;let u=!1;if((r||i>0)&&!(i&16)){if(i&8){const f=e.vnode.dynamicProps;for(let h=0;h{c=!0;const[m,b]=Bo(h,t,!0);fe(i,m),b&&l.push(...b)};!n&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}if(!o&&!c)return Z(e)&&r.set(e,yt),yt;if(B(o))for(let f=0;f-1,b[1]=O<0||S-1||z(b,"default"))&&l.push(h)}}}const u=[i,l];return Z(e)&&r.set(e,u),u}function ds(e){return e[0]!=="$"&&!vt(e)}function hs(e){return e===null?"null":typeof e=="function"?e.name||"":typeof e=="object"&&e.constructor&&e.constructor.name||""}function ps(e,t){return hs(e)===hs(t)}function gs(e,t){return B(t)?t.findIndex(n=>ps(n,e)):K(t)&&ps(t,e)?0:-1}const ko=e=>e[0]==="_"||e==="$stable",Vr=e=>B(e)?e.map(xe):[xe(e)],rc=(e,t,n)=>{if(t._n)return t;const r=Ll((...s)=>Vr(t(...s)),n);return r._c=!1,r},Ko=(e,t,n)=>{const r=e._ctx;for(const s in e){if(ko(s))continue;const o=e[s];if(K(o))t[s]=rc(s,o,r);else if(o!=null){const i=Vr(o);t[s]=()=>i}}},Wo=(e,t)=>{const n=Vr(t);e.slots.default=()=>n},qo=(e,t,n)=>{for(const r in t)(n||r!=="_")&&(e[r]=t[r])},sc=(e,t,n)=>{const r=e.slots=Vo();if(e.vnode.shapeFlag&32){const s=t._;s?(qo(r,t,n),n&&eo(r,"_",s,!0)):Ko(t,r)}else t&&Wo(e,t)},oc=(e,t,n)=>{const{vnode:r,slots:s}=e;let o=!0,i=ne;if(r.shapeFlag&32){const l=t._;l?n&&l===1?o=!1:qo(s,t,n):(o=!t.$stable,Ko(t,s)),i=t}else t&&(Wo(e,t),i={default:1});if(o)for(const l in s)!ko(l)&&i[l]==null&&delete s[l]};function En(e,t,n,r,s=!1){if(B(e)){e.forEach((m,b)=>En(m,t&&(B(t)?t[b]:t),n,r,s));return}if(Et(r)&&!s)return;const o=r.shapeFlag&4?Vn(r.component):r.el,i=s?null:o,{i:l,r:c}=e,u=t&&t.r,f=l.refs===ne?l.refs={}:l.refs,h=l.setupState;if(u!=null&&u!==c&&(ie(u)?(f[u]=null,z(h,u)&&(h[u]=null)):de(u)&&(u.value=null)),K(c))Ye(c,l,12,[i,f]);else{const m=ie(c),b=de(c);if(m||b){const S=()=>{if(e.f){const O=m?z(h,c)?h[c]:f[c]:c.value;s?B(O)&&Cr(O,o):B(O)?O.includes(o)||O.push(o):m?(f[c]=[o],z(h,c)&&(h[c]=f[c])):(c.value=[o],e.k&&(f[e.k]=c.value))}else m?(f[c]=i,z(h,c)&&(h[c]=i)):b&&(c.value=i,e.k&&(f[e.k]=i))};i?(S.id=-1,ye(S,n)):S()}}}const Go=Symbol("_vte"),ic=e=>e.__isTeleport,Nt=e=>e&&(e.disabled||e.disabled===""),ms=e=>typeof SVGElement<"u"&&e instanceof SVGElement,ys=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,_r=(e,t)=>{const n=e&&e.to;return ie(n)?t?t(n):null:n},lc={name:"Teleport",__isTeleport:!0,process(e,t,n,r,s,o,i,l,c,u){const{mc:f,pc:h,pbc:m,o:{insert:b,querySelector:S,createText:O,createComment:k}}=u,W=Nt(t.props);let{shapeFlag:D,children:p,dynamicChildren:y}=t;if(e==null){const I=t.el=O(""),T=t.anchor=O(""),F=t.target=_r(t.props,S),$=t.targetStart=O(""),M=t.targetAnchor=O("");b(I,n,r),b(T,n,r),$[Go]=M,F&&(b($,F),b(M,F),i==="svg"||ms(F)?i="svg":(i==="mathml"||ys(F))&&(i="mathml"));const _=(N,x)=>{D&16&&f(p,N,x,s,o,i,l,c)};W?_(n,T):F&&_(F,M)}else{t.el=e.el,t.targetStart=e.targetStart;const I=t.anchor=e.anchor,T=t.target=e.target,F=t.targetAnchor=e.targetAnchor,$=Nt(e.props),M=$?n:T,_=$?I:F;if(i==="svg"||ms(T)?i="svg":(i==="mathml"||ys(T))&&(i="mathml"),y?(m(e.dynamicChildren,y,M,s,o,i,l),Dr(e,t,!0)):c||h(e,t,M,_,s,o,i,l,!1),W)$?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):rn(t,n,I,u,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const N=t.target=_r(t.props,S);N&&rn(t,N,null,u,0)}else $&&rn(t,T,F,u,1)}Xo(t)},remove(e,t,n,{um:r,o:{remove:s}},o){const{shapeFlag:i,children:l,anchor:c,targetStart:u,targetAnchor:f,target:h,props:m}=e;if(h&&(s(u),s(f)),o&&s(c),i&16){const b=o||!Nt(m);for(let S=0;S{_s||(console.error("Hydration completed but contains mismatches."),_s=!0)},ac=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",uc=e=>e.namespaceURI.includes("MathML"),sn=e=>{if(ac(e))return"svg";if(uc(e))return"mathml"},on=e=>e.nodeType===8;function fc(e){const{mt:t,p:n,o:{patchProp:r,createText:s,nextSibling:o,parentNode:i,remove:l,insert:c,createComment:u}}=e,f=(p,y)=>{if(!y.hasChildNodes()){n(null,p,y),_n(),y._vnode=p;return}h(y.firstChild,p,null,null,null),_n(),y._vnode=p},h=(p,y,I,T,F,$=!1)=>{$=$||!!y.dynamicChildren;const M=on(p)&&p.data==="[",_=()=>O(p,y,I,T,F,M),{type:N,ref:x,shapeFlag:G,patchFlag:ee}=y;let re=p.nodeType;y.el=p,ee===-2&&($=!1,y.dynamicChildren=null);let U=null;switch(N){case ut:re!==3?y.children===""?(c(y.el=s(""),i(p),p),U=p):U=_():(p.data!==y.children&&(gt(),p.data=y.children),U=o(p));break;case me:D(p)?(U=o(p),W(y.el=p.content.firstChild,p,I)):re!==8||M?U=_():U=o(p);break;case Ft:if(M&&(p=o(p),re=p.nodeType),re===1||re===3){U=p;const Y=!y.children.length;for(let j=0;j{$=$||!!y.dynamicChildren;const{type:M,props:_,patchFlag:N,shapeFlag:x,dirs:G,transition:ee}=y,re=M==="input"||M==="option";if(re||N!==-1){G&&Pe(y,null,I,"created");let U=!1;if(D(p)){U=zo(T,ee)&&I&&I.vnode.props&&I.vnode.props.appear;const j=p.content.firstChild;U&&ee.beforeEnter(j),W(j,p,I),y.el=p=j}if(x&16&&!(_&&(_.innerHTML||_.textContent))){let j=b(p.firstChild,y,p,I,T,F,$);for(;j;){gt();const He=j;j=j.nextSibling,l(He)}}else x&8&&p.textContent!==y.children&&(gt(),p.textContent=y.children);if(_){if(re||!$||N&48)for(const j in _)(re&&(j.endsWith("value")||j==="indeterminate")||Kt(j)&&!vt(j)||j[0]===".")&&r(p,j,null,_[j],void 0,I);else if(_.onClick)r(p,"onClick",null,_.onClick,void 0,I);else if(N&4&&bt(_.style))for(const j in _.style)_.style[j]}let Y;(Y=_&&_.onVnodeBeforeMount)&&Se(Y,I,y),G&&Pe(y,null,I,"beforeMount"),((Y=_&&_.onVnodeMounted)||G||U)&&ei(()=>{Y&&Se(Y,I,y),U&&ee.enter(p),G&&Pe(y,null,I,"mounted")},T)}return p.nextSibling},b=(p,y,I,T,F,$,M)=>{M=M||!!y.dynamicChildren;const _=y.children,N=_.length;for(let x=0;x{const{slotScopeIds:M}=y;M&&(F=F?F.concat(M):M);const _=i(p),N=b(o(p),y,_,I,T,F,$);return N&&on(N)&&N.data==="]"?o(y.anchor=N):(gt(),c(y.anchor=u("]"),_,N),N)},O=(p,y,I,T,F,$)=>{if(gt(),y.el=null,$){const N=k(p);for(;;){const x=o(p);if(x&&x!==N)l(x);else break}}const M=o(p),_=i(p);return l(p),n(null,y,_,M,I,T,sn(_),F),M},k=(p,y="[",I="]")=>{let T=0;for(;p;)if(p=o(p),p&&on(p)&&(p.data===y&&T++,p.data===I)){if(T===0)return o(p);T--}return p},W=(p,y,I)=>{const T=y.parentNode;T&&T.replaceChild(p,y);let F=I;for(;F;)F.vnode.el===y&&(F.vnode.el=F.subTree.el=p),F=F.parent},D=p=>p.nodeType===1&&p.tagName.toLowerCase()==="template";return[f,h]}const ye=ei;function dc(e){return Yo(e)}function hc(e){return Yo(e,fc)}function Yo(e,t){const n=to();n.__VUE__=!0;const{insert:r,remove:s,patchProp:o,createElement:i,createText:l,createComment:c,setText:u,setElementText:f,parentNode:h,nextSibling:m,setScopeId:b=Te,insertStaticContent:S}=e,O=(a,d,g,E=null,v=null,C=null,L=void 0,A=null,R=!!d.dynamicChildren)=>{if(a===d)return;a&&!lt(a,d)&&(E=zt(a),Me(a,v,C,!0),a=null),d.patchFlag===-2&&(R=!1,d.dynamicChildren=null);const{type:w,ref:P,shapeFlag:V}=d;switch(w){case ut:k(a,d,g,E);break;case me:W(a,d,g,E);break;case Ft:a==null&&D(d,g,E,L);break;case _e:x(a,d,g,E,v,C,L,A,R);break;default:V&1?I(a,d,g,E,v,C,L,A,R):V&6?G(a,d,g,E,v,C,L,A,R):(V&64||V&128)&&w.process(a,d,g,E,v,C,L,A,R,ht)}P!=null&&v&&En(P,a&&a.ref,C,d||a,!d)},k=(a,d,g,E)=>{if(a==null)r(d.el=l(d.children),g,E);else{const v=d.el=a.el;d.children!==a.children&&u(v,d.children)}},W=(a,d,g,E)=>{a==null?r(d.el=c(d.children||""),g,E):d.el=a.el},D=(a,d,g,E)=>{[a.el,a.anchor]=S(a.children,d,g,E,a.el,a.anchor)},p=({el:a,anchor:d},g,E)=>{let v;for(;a&&a!==d;)v=m(a),r(a,g,E),a=v;r(d,g,E)},y=({el:a,anchor:d})=>{let g;for(;a&&a!==d;)g=m(a),s(a),a=g;s(d)},I=(a,d,g,E,v,C,L,A,R)=>{d.type==="svg"?L="svg":d.type==="math"&&(L="mathml"),a==null?T(d,g,E,v,C,L,A,R):M(a,d,v,C,L,A,R)},T=(a,d,g,E,v,C,L,A)=>{let R,w;const{props:P,shapeFlag:V,transition:H,dirs:q}=a;if(R=a.el=i(a.type,C,P&&P.is,P),V&8?f(R,a.children):V&16&&$(a.children,R,null,E,v,Gn(a,C),L,A),q&&Pe(a,null,E,"created"),F(R,a,a.scopeId,L,E),P){for(const te in P)te!=="value"&&!vt(te)&&o(R,te,null,P[te],C,E);"value"in P&&o(R,"value",null,P.value,C),(w=P.onVnodeBeforeMount)&&Se(w,E,a)}q&&Pe(a,null,E,"beforeMount");const X=zo(v,H);X&&H.beforeEnter(R),r(R,d,g),((w=P&&P.onVnodeMounted)||X||q)&&ye(()=>{w&&Se(w,E,a),X&&H.enter(R),q&&Pe(a,null,E,"mounted")},v)},F=(a,d,g,E,v)=>{if(g&&b(a,g),E)for(let C=0;C{for(let w=R;w{const A=d.el=a.el;let{patchFlag:R,dynamicChildren:w,dirs:P}=d;R|=a.patchFlag&16;const V=a.props||ne,H=d.props||ne;let q;if(g&&rt(g,!1),(q=H.onVnodeBeforeUpdate)&&Se(q,g,d,a),P&&Pe(d,a,g,"beforeUpdate"),g&&rt(g,!0),(V.innerHTML&&H.innerHTML==null||V.textContent&&H.textContent==null)&&f(A,""),w?_(a.dynamicChildren,w,A,g,E,Gn(d,v),C):L||j(a,d,A,null,g,E,Gn(d,v),C,!1),R>0){if(R&16)N(A,V,H,g,v);else if(R&2&&V.class!==H.class&&o(A,"class",null,H.class,v),R&4&&o(A,"style",V.style,H.style,v),R&8){const X=d.dynamicProps;for(let te=0;te{q&&Se(q,g,d,a),P&&Pe(d,a,g,"updated")},E)},_=(a,d,g,E,v,C,L)=>{for(let A=0;A{if(d!==g){if(d!==ne)for(const C in d)!vt(C)&&!(C in g)&&o(a,C,d[C],null,v,E);for(const C in g){if(vt(C))continue;const L=g[C],A=d[C];L!==A&&C!=="value"&&o(a,C,A,L,v,E)}"value"in g&&o(a,"value",d.value,g.value,v)}},x=(a,d,g,E,v,C,L,A,R)=>{const w=d.el=a?a.el:l(""),P=d.anchor=a?a.anchor:l("");let{patchFlag:V,dynamicChildren:H,slotScopeIds:q}=d;q&&(A=A?A.concat(q):q),a==null?(r(w,g,E),r(P,g,E),$(d.children||[],g,P,v,C,L,A,R)):V>0&&V&64&&H&&a.dynamicChildren?(_(a.dynamicChildren,H,g,v,C,L,A),(d.key!=null||v&&d===v.subTree)&&Dr(a,d,!0)):j(a,d,g,P,v,C,L,A,R)},G=(a,d,g,E,v,C,L,A,R)=>{d.slotScopeIds=A,a==null?d.shapeFlag&512?v.ctx.activate(d,g,E,L,R):ee(d,g,E,v,C,L,R):re(a,d,R)},ee=(a,d,g,E,v,C,L)=>{const A=a.component=Mc(a,E,v);if(qt(a)&&(A.ctx.renderer=ht),Ic(A,!1,L),A.asyncDep){if(v&&v.registerDep(A,U,L),!a.el){const R=A.subTree=le(me);W(null,R,d,g)}}else U(A,a,d,g,v,C,L)},re=(a,d,g)=>{const E=d.component=a.component;if(Ec(a,d,g))if(E.asyncDep&&!E.asyncResolved){Y(E,d,g);return}else E.next=d,Al(E.update),E.effect.dirty=!0,E.update();else d.el=a.el,E.vnode=d},U=(a,d,g,E,v,C,L)=>{const A=()=>{if(a.isMounted){let{next:P,bu:V,u:H,parent:q,vnode:X}=a;{const pt=Jo(a);if(pt){P&&(P.el=X.el,Y(a,P,L)),pt.asyncDep.then(()=>{a.isUnmounted||A()});return}}let te=P,Q;rt(a,!1),P?(P.el=X.el,Y(a,P,L)):P=X,V&&dn(V),(Q=P.props&&P.props.onVnodeBeforeUpdate)&&Se(Q,q,P,X),rt(a,!0);const ce=Xn(a),Re=a.subTree;a.subTree=ce,O(Re,ce,h(Re.el),zt(Re),a,v,C),P.el=ce.el,te===null&&Cc(a,ce.el),H&&ye(H,v),(Q=P.props&&P.props.onVnodeUpdated)&&ye(()=>Se(Q,q,P,X),v)}else{let P;const{el:V,props:H}=d,{bm:q,m:X,parent:te}=a,Q=Et(d);if(rt(a,!1),q&&dn(q),!Q&&(P=H&&H.onVnodeBeforeMount)&&Se(P,te,d),rt(a,!0),V&&Bn){const ce=()=>{a.subTree=Xn(a),Bn(V,a.subTree,a,v,null)};Q?d.type.__asyncLoader().then(()=>!a.isUnmounted&&ce()):ce()}else{const ce=a.subTree=Xn(a);O(null,ce,g,E,a,v,C),d.el=ce.el}if(X&&ye(X,v),!Q&&(P=H&&H.onVnodeMounted)){const ce=d;ye(()=>Se(P,te,ce),v)}(d.shapeFlag&256||te&&Et(te.vnode)&&te.vnode.shapeFlag&256)&&a.a&&ye(a.a,v),a.isMounted=!0,d=g=E=null}},R=a.effect=new Ar(A,Te,()=>In(w),a.scope),w=a.update=()=>{R.dirty&&R.run()};w.i=a,w.id=a.uid,rt(a,!0),w()},Y=(a,d,g)=>{d.component=a;const E=a.vnode.props;a.vnode=d,a.next=null,tc(a,d.props,E,g),oc(a,d.children,g),et(),os(a),tt()},j=(a,d,g,E,v,C,L,A,R=!1)=>{const w=a&&a.children,P=a?a.shapeFlag:0,V=d.children,{patchFlag:H,shapeFlag:q}=d;if(H>0){if(H&128){Yt(w,V,g,E,v,C,L,A,R);return}else if(H&256){He(w,V,g,E,v,C,L,A,R);return}}q&8?(P&16&&At(w,v,C),V!==w&&f(g,V)):P&16?q&16?Yt(w,V,g,E,v,C,L,A,R):At(w,v,C,!0):(P&8&&f(g,""),q&16&&$(V,g,E,v,C,L,A,R))},He=(a,d,g,E,v,C,L,A,R)=>{a=a||yt,d=d||yt;const w=a.length,P=d.length,V=Math.min(w,P);let H;for(H=0;HP?At(a,v,C,!0,!1,V):$(d,g,E,v,C,L,A,R,V)},Yt=(a,d,g,E,v,C,L,A,R)=>{let w=0;const P=d.length;let V=a.length-1,H=P-1;for(;w<=V&&w<=H;){const q=a[w],X=d[w]=R?qe(d[w]):xe(d[w]);if(lt(q,X))O(q,X,g,null,v,C,L,A,R);else break;w++}for(;w<=V&&w<=H;){const q=a[V],X=d[H]=R?qe(d[H]):xe(d[H]);if(lt(q,X))O(q,X,g,null,v,C,L,A,R);else break;V--,H--}if(w>V){if(w<=H){const q=H+1,X=qH)for(;w<=V;)Me(a[w],v,C,!0),w++;else{const q=w,X=w,te=new Map;for(w=X;w<=H;w++){const be=d[w]=R?qe(d[w]):xe(d[w]);be.key!=null&&te.set(be.key,w)}let Q,ce=0;const Re=H-X+1;let pt=!1,Xr=0;const Rt=new Array(Re);for(w=0;w=Re){Me(be,v,C,!0);continue}let Ie;if(be.key!=null)Ie=te.get(be.key);else for(Q=X;Q<=H;Q++)if(Rt[Q-X]===0&<(be,d[Q])){Ie=Q;break}Ie===void 0?Me(be,v,C,!0):(Rt[Ie-X]=w+1,Ie>=Xr?Xr=Ie:pt=!0,O(be,d[Ie],g,null,v,C,L,A,R),ce++)}const Yr=pt?pc(Rt):yt;for(Q=Yr.length-1,w=Re-1;w>=0;w--){const be=X+w,Ie=d[be],zr=be+1{const{el:C,type:L,transition:A,children:R,shapeFlag:w}=a;if(w&6){nt(a.component.subTree,d,g,E);return}if(w&128){a.suspense.move(d,g,E);return}if(w&64){L.move(a,d,g,ht);return}if(L===_e){r(C,d,g);for(let V=0;VA.enter(C),v);else{const{leave:V,delayLeave:H,afterLeave:q}=A,X=()=>r(C,d,g),te=()=>{V(C,()=>{X(),q&&q()})};H?H(C,X,te):te()}else r(C,d,g)},Me=(a,d,g,E=!1,v=!1)=>{const{type:C,props:L,ref:A,children:R,dynamicChildren:w,shapeFlag:P,patchFlag:V,dirs:H,cacheIndex:q}=a;if(V===-2&&(v=!1),A!=null&&En(A,null,g,a,!0),q!=null&&(d.renderCache[q]=void 0),P&256){d.ctx.deactivate(a);return}const X=P&1&&H,te=!Et(a);let Q;if(te&&(Q=L&&L.onVnodeBeforeUnmount)&&Se(Q,d,a),P&6)Ii(a.component,g,E);else{if(P&128){a.suspense.unmount(g,E);return}X&&Pe(a,null,d,"beforeUnmount"),P&64?a.type.remove(a,d,g,ht,E):w&&!w.hasOnce&&(C!==_e||V>0&&V&64)?At(w,d,g,!1,!0):(C===_e&&V&384||!v&&P&16)&&At(R,d,g),E&&qr(a)}(te&&(Q=L&&L.onVnodeUnmounted)||X)&&ye(()=>{Q&&Se(Q,d,a),X&&Pe(a,null,d,"unmounted")},g)},qr=a=>{const{type:d,el:g,anchor:E,transition:v}=a;if(d===_e){Mi(g,E);return}if(d===Ft){y(a);return}const C=()=>{s(g),v&&!v.persisted&&v.afterLeave&&v.afterLeave()};if(a.shapeFlag&1&&v&&!v.persisted){const{leave:L,delayLeave:A}=v,R=()=>L(g,C);A?A(a.el,C,R):R()}else C()},Mi=(a,d)=>{let g;for(;a!==d;)g=m(a),s(a),a=g;s(d)},Ii=(a,d,g)=>{const{bum:E,scope:v,update:C,subTree:L,um:A,m:R,a:w}=a;vs(R),vs(w),E&&dn(E),v.stop(),C&&(C.active=!1,Me(L,a,d,g)),A&&ye(A,d),ye(()=>{a.isUnmounted=!0},d),d&&d.pendingBranch&&!d.isUnmounted&&a.asyncDep&&!a.asyncResolved&&a.suspenseId===d.pendingId&&(d.deps--,d.deps===0&&d.resolve())},At=(a,d,g,E=!1,v=!1,C=0)=>{for(let L=C;L{if(a.shapeFlag&6)return zt(a.component.subTree);if(a.shapeFlag&128)return a.suspense.next();const d=m(a.anchor||a.el),g=d&&d[Go];return g?m(g):d};let Dn=!1;const Gr=(a,d,g)=>{a==null?d._vnode&&Me(d._vnode,null,null,!0):O(d._vnode||null,a,d,null,null,null,g),Dn||(Dn=!0,os(),_n(),Dn=!1),d._vnode=a},ht={p:O,um:Me,m:nt,r:qr,mt:ee,mc:$,pc:j,pbc:_,n:zt,o:e};let Un,Bn;return t&&([Un,Bn]=t(ht)),{render:Gr,hydrate:Un,createApp:Ql(Gr,Un)}}function Gn({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function rt({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function zo(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Dr(e,t,n=!1){const r=e.children,s=t.children;if(B(r)&&B(s))for(let o=0;o>1,e[n[l]]0&&(t[r]=n[o-1]),n[o]=r)}}for(o=n.length,i=n[o-1];o-- >0;)n[o]=i,i=t[i];return n}function Jo(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Jo(t)}function vs(e){if(e)for(let t=0;tCt(gc);function Ur(e,t){return $n(e,null,t)}function vu(e,t){return $n(e,null,{flush:"post"})}const ln={};function Fe(e,t,n){return $n(e,t,n)}function $n(e,t,{immediate:n,deep:r,flush:s,once:o,onTrack:i,onTrigger:l}=ne){if(t&&o){const T=t;t=(...F)=>{T(...F),I()}}const c=ae,u=T=>r===!0?T:Ge(T,r===!1?1:void 0);let f,h=!1,m=!1;if(de(e)?(f=()=>e.value,h=St(e)):bt(e)?(f=()=>u(e),h=!0):B(e)?(m=!0,h=e.some(T=>bt(T)||St(T)),f=()=>e.map(T=>{if(de(T))return T.value;if(bt(T))return u(T);if(K(T))return Ye(T,c,2)})):K(e)?t?f=()=>Ye(e,c,2):f=()=>(b&&b(),Ae(e,c,3,[S])):f=Te,t&&r){const T=f;f=()=>Ge(T())}let b,S=T=>{b=p.onStop=()=>{Ye(T,c,4),b=p.onStop=void 0}},O;if(Xt)if(S=Te,t?n&&Ae(t,c,3,[f(),m?[]:void 0,S]):f(),s==="sync"){const T=mc();O=T.__watcherHandles||(T.__watcherHandles=[])}else return Te;let k=m?new Array(e.length).fill(ln):ln;const W=()=>{if(!(!p.active||!p.dirty))if(t){const T=p.run();(r||h||(m?T.some((F,$)=>ze(F,k[$])):ze(T,k)))&&(b&&b(),Ae(t,c,3,[T,k===ln?void 0:m&&k[0]===ln?[]:k,S]),k=T)}else p.run()};W.allowRecurse=!!t;let D;s==="sync"?D=W:s==="post"?D=()=>ye(W,c&&c.suspense):(W.pre=!0,c&&(W.id=c.uid),D=()=>In(W));const p=new Ar(f,Te,D),y=oo(),I=()=>{p.stop(),y&&Cr(y.effects,p)};return t?n?W():k=p.run():s==="post"?ye(p.run.bind(p),c&&c.suspense):p.run(),O&&O.push(I),I}function yc(e,t,n){const r=this.proxy,s=ie(e)?e.includes(".")?Qo(r,e):()=>r[e]:e.bind(r,r);let o;K(t)?o=t:(o=t.handler,n=t);const i=Gt(this),l=$n(s,o.bind(r),n);return i(),l}function Qo(e,t){const n=t.split(".");return()=>{let r=e;for(let s=0;s{Ge(r,t,n)});else if(Zs(e)){for(const r in e)Ge(e[r],t,n);for(const r of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,r)&&Ge(e[r],t,n)}return e}const _c=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Oe(t)}Modifiers`]||e[`${Ze(t)}Modifiers`];function vc(e,t,...n){if(e.isUnmounted)return;const r=e.vnode.props||ne;let s=n;const o=t.startsWith("update:"),i=o&&_c(r,t.slice(7));i&&(i.trim&&(s=n.map(f=>ie(f)?f.trim():f)),i.number&&(s=n.map(cr)));let l,c=r[l=fn(t)]||r[l=fn(Oe(t))];!c&&o&&(c=r[l=fn(Ze(t))]),c&&Ae(c,e,6,s);const u=r[l+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Ae(u,e,6,s)}}function Zo(e,t,n=!1){const r=t.emitsCache,s=r.get(e);if(s!==void 0)return s;const o=e.emits;let i={},l=!1;if(!K(e)){const c=u=>{const f=Zo(u,t,!0);f&&(l=!0,fe(i,f))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!o&&!l?(Z(e)&&r.set(e,null),null):(B(o)?o.forEach(c=>i[c]=null):fe(i,o),Z(e)&&r.set(e,i),i)}function Hn(e,t){return!e||!Kt(t)?!1:(t=t.slice(2).replace(/Once$/,""),z(e,t[0].toLowerCase()+t.slice(1))||z(e,Ze(t))||z(e,t))}function Xn(e){const{type:t,vnode:n,proxy:r,withProxy:s,propsOptions:[o],slots:i,attrs:l,emit:c,render:u,renderCache:f,props:h,data:m,setupState:b,ctx:S,inheritAttrs:O}=e,k=vn(e);let W,D;try{if(n.shapeFlag&4){const y=s||r,I=y;W=xe(u.call(I,y,f,h,b,m,S)),D=l}else{const y=t;W=xe(y.length>1?y(h,{attrs:l,slots:i,emit:c}):y(h,null)),D=t.props?l:bc(l)}}catch(y){$t.length=0,Wt(y,e,1),W=le(me)}let p=W;if(D&&O!==!1){const y=Object.keys(D),{shapeFlag:I}=p;y.length&&I&7&&(o&&y.some(Er)&&(D=wc(D,o)),p=Je(p,D,!1,!0))}return n.dirs&&(p=Je(p,null,!1,!0),p.dirs=p.dirs?p.dirs.concat(n.dirs):n.dirs),n.transition&&(p.transition=n.transition),W=p,vn(k),W}const bc=e=>{let t;for(const n in e)(n==="class"||n==="style"||Kt(n))&&((t||(t={}))[n]=e[n]);return t},wc=(e,t)=>{const n={};for(const r in e)(!Er(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function Ec(e,t,n){const{props:r,children:s,component:o}=e,{props:i,children:l,patchFlag:c}=t,u=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return r?bs(r,i,u):!!i;if(c&8){const f=t.dynamicProps;for(let h=0;he.__isSuspense;function ei(e,t){t&&t.pendingBranch?B(e)?t.effects.push(...e):t.effects.push(e):Rl(e)}const _e=Symbol.for("v-fgt"),ut=Symbol.for("v-txt"),me=Symbol.for("v-cmt"),Ft=Symbol.for("v-stc"),$t=[];let Ee=null;function ti(e=!1){$t.push(Ee=e?null:[])}function xc(){$t.pop(),Ee=$t[$t.length-1]||null}let Ut=1;function ws(e){Ut+=e,e<0&&Ee&&(Ee.hasOnce=!0)}function ni(e){return e.dynamicChildren=Ut>0?Ee||yt:null,xc(),Ut>0&&Ee&&Ee.push(e),e}function bu(e,t,n,r,s,o){return ni(oi(e,t,n,r,s,o,!0))}function ri(e,t,n,r,s){return ni(le(e,t,n,r,s,!0))}function Cn(e){return e?e.__v_isVNode===!0:!1}function lt(e,t){return e.type===t.type&&e.key===t.key}const si=({key:e})=>e??null,pn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?ie(e)||de(e)||K(e)?{i:ue,r:e,k:t,f:!!n}:e:null);function oi(e,t=null,n=null,r=0,s=null,o=e===_e?0:1,i=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&si(t),ref:t&&pn(t),scopeId:Pn,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:r,dynamicProps:s,dynamicChildren:null,appContext:null,ctx:ue};return l?(Br(c,n),o&128&&e.normalize(c)):n&&(c.shapeFlag|=ie(n)?8:16),Ut>0&&!i&&Ee&&(c.patchFlag>0||o&6)&&c.patchFlag!==32&&Ee.push(c),c}const le=Tc;function Tc(e,t=null,n=null,r=0,s=null,o=!1){if((!e||e===Po)&&(e=me),Cn(e)){const l=Je(e,t,!0);return n&&Br(l,n),Ut>0&&!o&&Ee&&(l.shapeFlag&6?Ee[Ee.indexOf(e)]=l:Ee.push(l)),l.patchFlag=-2,l}if($c(e)&&(e=e.__vccOpts),t){t=Ac(t);let{class:l,style:c}=t;l&&!ie(l)&&(t.class=Tr(l)),Z(c)&&(_o(c)&&!B(c)&&(c=fe({},c)),t.style=xr(c))}const i=ie(e)?1:Sc(e)?128:ic(e)?64:Z(e)?4:K(e)?2:0;return oi(e,t,n,r,s,i,o,!0)}function Ac(e){return e?_o(e)||Do(e)?fe({},e):e:null}function Je(e,t,n=!1,r=!1){const{props:s,ref:o,patchFlag:i,children:l,transition:c}=e,u=t?Rc(s||{},t):s,f={__v_isVNode:!0,__v_skip:!0,type:e.type,props:u,key:u&&si(u),ref:t&&t.ref?n&&o?B(o)?o.concat(pn(t)):[o,pn(t)]:pn(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==_e?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Je(e.ssContent),ssFallback:e.ssFallback&&Je(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&r&&bn(f,c.clone(f)),f}function ii(e=" ",t=0){return le(ut,null,e,t)}function wu(e,t){const n=le(Ft,null,e);return n.staticCount=t,n}function Eu(e="",t=!1){return t?(ti(),ri(me,null,e)):le(me,null,e)}function xe(e){return e==null||typeof e=="boolean"?le(me):B(e)?le(_e,null,e.slice()):typeof e=="object"?qe(e):le(ut,null,String(e))}function qe(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Je(e)}function Br(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(B(t))n=16;else if(typeof t=="object")if(r&65){const s=t.default;s&&(s._c&&(s._d=!1),Br(e,s()),s._c&&(s._d=!0));return}else{n=32;const s=t._;!s&&!Do(t)?t._ctx=ue:s===3&&ue&&(ue.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else K(t)?(t={default:t,_ctx:ue},n=32):(t=String(t),r&64?(n=16,t=[ii(t)]):n=8);e.children=t,e.shapeFlag|=n}function Rc(...e){const t={};for(let n=0;nae||ue;let Sn,vr;{const e=to(),t=(n,r)=>{let s;return(s=e[n])||(s=e[n]=[]),s.push(r),o=>{s.length>1?s.forEach(i=>i(o)):s[0](o)}};Sn=t("__VUE_INSTANCE_SETTERS__",n=>ae=n),vr=t("__VUE_SSR_SETTERS__",n=>Xt=n)}const Gt=e=>{const t=ae;return Sn(e),e.scope.on(),()=>{e.scope.off(),Sn(t)}},Es=()=>{ae&&ae.scope.off(),Sn(null)};function li(e){return e.vnode.shapeFlag&4}let Xt=!1;function Ic(e,t=!1,n=!1){t&&vr(t);const{props:r,children:s}=e.vnode,o=li(e);ec(e,r,o,t),sc(e,s,n);const i=o?Pc(e,t):void 0;return t&&vr(!1),i}function Pc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Kl);const{setup:r}=n;if(r){const s=e.setupContext=r.length>1?ai(e):null,o=Gt(e);et();const i=Ye(r,e,0,[e.props,s]);if(tt(),o(),Js(i)){if(i.then(Es,Es),t)return i.then(l=>{Cs(e,l,t)}).catch(l=>{Wt(l,e,0)});e.asyncDep=i}else Cs(e,i,t)}else ci(e,t)}function Cs(e,t,n){K(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Z(t)&&(e.setupState=Eo(t)),ci(e,n)}let Ss;function ci(e,t,n){const r=e.type;if(!e.render){if(!t&&Ss&&!r.render){const s=r.template||jr(e).template;if(s){const{isCustomElement:o,compilerOptions:i}=e.appContext.config,{delimiters:l,compilerOptions:c}=r,u=fe(fe({isCustomElement:o,delimiters:l},i),c);r.render=Ss(s,u)}}e.render=r.render||Te}{const s=Gt(e);et();try{ql(e)}finally{tt(),s()}}}const Nc={get(e,t){return ve(e,"get",""),e[t]}};function ai(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,Nc),slots:e.slots,emit:e.emit,expose:t}}function Vn(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Eo(hn(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in It)return It[n](e)},has(t,n){return n in t||n in It}})):e.proxy}function Fc(e,t=!0){return K(e)?e.displayName||e.name:e.name||t&&e.__name}function $c(e){return K(e)&&"__vccOpts"in e}const se=(e,t)=>ml(e,t,Xt);function br(e,t,n){const r=arguments.length;return r===2?Z(t)&&!B(t)?Cn(t)?le(e,null,[t]):le(e,t):le(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&Cn(n)&&(n=[n]),le(e,t,n))}const Hc="3.4.34";/** +* @vue/runtime-dom v3.4.34 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/const jc="http://www.w3.org/2000/svg",Vc="http://www.w3.org/1998/Math/MathML",je=typeof document<"u"?document:null,xs=je&&je.createElement("template"),Dc={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const s=t==="svg"?je.createElementNS(jc,e):t==="mathml"?je.createElementNS(Vc,e):n?je.createElement(e,{is:n}):je.createElement(e);return e==="select"&&r&&r.multiple!=null&&s.setAttribute("multiple",r.multiple),s},createText:e=>je.createTextNode(e),createComment:e=>je.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>je.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,s,o){const i=n?n.previousSibling:t.lastChild;if(s&&(s===o||s.nextSibling))for(;t.insertBefore(s.cloneNode(!0),n),!(s===o||!(s=s.nextSibling)););else{xs.innerHTML=r==="svg"?`${e}`:r==="mathml"?`${e}`:e;const l=xs.content;if(r==="svg"||r==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Be="transition",Ot="animation",Bt=Symbol("_vtc"),ui=(e,{slots:t})=>br(Pl,Uc(e),t);ui.displayName="Transition";const fi={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String};ui.props=fe({},To,fi);const st=(e,t=[])=>{B(e)?e.forEach(n=>n(...t)):e&&e(...t)},Ts=e=>e?B(e)?e.some(t=>t.length>1):e.length>1:!1;function Uc(e){const t={};for(const x in e)x in fi||(t[x]=e[x]);if(e.css===!1)return t;const{name:n="v",type:r,duration:s,enterFromClass:o=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:c=o,appearActiveClass:u=i,appearToClass:f=l,leaveFromClass:h=`${n}-leave-from`,leaveActiveClass:m=`${n}-leave-active`,leaveToClass:b=`${n}-leave-to`}=e,S=Bc(s),O=S&&S[0],k=S&&S[1],{onBeforeEnter:W,onEnter:D,onEnterCancelled:p,onLeave:y,onLeaveCancelled:I,onBeforeAppear:T=W,onAppear:F=D,onAppearCancelled:$=p}=t,M=(x,G,ee)=>{ot(x,G?f:l),ot(x,G?u:i),ee&&ee()},_=(x,G)=>{x._isLeaving=!1,ot(x,h),ot(x,b),ot(x,m),G&&G()},N=x=>(G,ee)=>{const re=x?F:D,U=()=>M(G,x,ee);st(re,[G,U]),As(()=>{ot(G,x?c:o),ke(G,x?f:l),Ts(re)||Rs(G,r,O,U)})};return fe(t,{onBeforeEnter(x){st(W,[x]),ke(x,o),ke(x,i)},onBeforeAppear(x){st(T,[x]),ke(x,c),ke(x,u)},onEnter:N(!1),onAppear:N(!0),onLeave(x,G){x._isLeaving=!0;const ee=()=>_(x,G);ke(x,h),ke(x,m),Wc(),As(()=>{x._isLeaving&&(ot(x,h),ke(x,b),Ts(y)||Rs(x,r,k,ee))}),st(y,[x,ee])},onEnterCancelled(x){M(x,!1),st(p,[x])},onAppearCancelled(x){M(x,!0),st($,[x])},onLeaveCancelled(x){_(x),st(I,[x])}})}function Bc(e){if(e==null)return null;if(Z(e))return[Yn(e.enter),Yn(e.leave)];{const t=Yn(e);return[t,t]}}function Yn(e){return ji(e)}function ke(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[Bt]||(e[Bt]=new Set)).add(t)}function ot(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const n=e[Bt];n&&(n.delete(t),n.size||(e[Bt]=void 0))}function As(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let kc=0;function Rs(e,t,n,r){const s=e._endId=++kc,o=()=>{s===e._endId&&r()};if(n)return setTimeout(o,n);const{type:i,timeout:l,propCount:c}=Kc(e,t);if(!i)return r();const u=i+"end";let f=0;const h=()=>{e.removeEventListener(u,m),o()},m=b=>{b.target===e&&++f>=c&&h()};setTimeout(()=>{f(n[S]||"").split(", "),s=r(`${Be}Delay`),o=r(`${Be}Duration`),i=Os(s,o),l=r(`${Ot}Delay`),c=r(`${Ot}Duration`),u=Os(l,c);let f=null,h=0,m=0;t===Be?i>0&&(f=Be,h=i,m=o.length):t===Ot?u>0&&(f=Ot,h=u,m=c.length):(h=Math.max(i,u),f=h>0?i>u?Be:Ot:null,m=f?f===Be?o.length:c.length:0);const b=f===Be&&/\b(transform|all)(,|$)/.test(r(`${Be}Property`).toString());return{type:f,timeout:h,propCount:m,hasTransform:b}}function Os(e,t){for(;e.lengthLs(n)+Ls(e[r])))}function Ls(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function Wc(){return document.body.offsetHeight}function qc(e,t,n){const r=e[Bt];r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Ms=Symbol("_vod"),Gc=Symbol("_vsh"),Xc=Symbol(""),Yc=/(^|;)\s*display\s*:/;function zc(e,t,n){const r=e.style,s=ie(n);let o=!1;if(n&&!s){if(t)if(ie(t))for(const i of t.split(";")){const l=i.slice(0,i.indexOf(":")).trim();n[l]==null&&gn(r,l,"")}else for(const i in t)n[i]==null&&gn(r,i,"");for(const i in n)i==="display"&&(o=!0),gn(r,i,n[i])}else if(s){if(t!==n){const i=r[Xc];i&&(n+=";"+i),r.cssText=n,o=Yc.test(n)}}else t&&e.removeAttribute("style");Ms in e&&(e[Ms]=o?r.display:"",e[Gc]&&(r.display="none"))}const Is=/\s*!important$/;function gn(e,t,n){if(B(n))n.forEach(r=>gn(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=Jc(e,t);Is.test(n)?e.setProperty(Ze(r),n.replace(Is,""),"important"):e[r]=n}}const Ps=["Webkit","Moz","ms"],zn={};function Jc(e,t){const n=zn[t];if(n)return n;let r=Oe(t);if(r!=="filter"&&r in e)return zn[t]=r;r=An(r);for(let s=0;sJn||(na.then(()=>Jn=0),Jn=Date.now());function sa(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;Ae(oa(r,n.value),t,5,[r])};return n.value=e,n.attached=ra(),n}function oa(e,t){if(B(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(r=>s=>!s._stopped&&r&&r(s))}else return t}const js=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,ia=(e,t,n,r,s,o)=>{const i=s==="svg";t==="class"?qc(e,r,i):t==="style"?zc(e,n,r):Kt(t)?Er(t)||ea(e,t,n,r,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):la(e,t,r,i))?(Qc(e,t,r),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Fs(e,t,r,i,o,t!=="value")):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),Fs(e,t,r,i))};function la(e,t,n,r){if(r)return!!(t==="innerHTML"||t==="textContent"||t in e&&js(t)&&K(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const s=e.tagName;if(s==="IMG"||s==="VIDEO"||s==="CANVAS"||s==="SOURCE")return!1}return js(t)&&ie(n)?!1:t in e}const Vs=e=>{const t=e.props["onUpdate:modelValue"]||!1;return B(t)?n=>dn(t,n):t};function ca(e){e.target.composing=!0}function Ds(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Qn=Symbol("_assign"),Cu={created(e,{modifiers:{lazy:t,trim:n,number:r}},s){e[Qn]=Vs(s);const o=r||s.props&&s.props.type==="number";mt(e,t?"change":"input",i=>{if(i.target.composing)return;let l=e.value;n&&(l=l.trim()),o&&(l=cr(l)),e[Qn](l)}),n&&mt(e,"change",()=>{e.value=e.value.trim()}),t||(mt(e,"compositionstart",ca),mt(e,"compositionend",Ds),mt(e,"change",Ds))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:r,trim:s,number:o}},i){if(e[Qn]=Vs(i),e.composing)return;const l=(o||e.type==="number")&&!/^0\d/.test(e.value)?cr(e.value):e.value,c=t??"";l!==c&&(document.activeElement===e&&e.type!=="range"&&(r&&t===n||s&&e.value.trim()===c)||(e.value=c))}},aa=["ctrl","shift","alt","meta"],ua={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>aa.some(n=>e[`${n}Key`]&&!t.includes(n))},Su=(e,t)=>{const n=e._withMods||(e._withMods={}),r=t.join(".");return n[r]||(n[r]=(s,...o)=>{for(let i=0;i{const n=e._withKeys||(e._withKeys={}),r=t.join(".");return n[r]||(n[r]=s=>{if(!("key"in s))return;const o=Ze(s.key);if(t.some(i=>i===o||fa[i]===o))return e(s)})},di=fe({patchProp:ia},Dc);let Ht,Us=!1;function da(){return Ht||(Ht=dc(di))}function ha(){return Ht=Us?Ht:hc(di),Us=!0,Ht}const Tu=(...e)=>{const t=da().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=pi(r);if(!s)return;const o=t._component;!K(o)&&!o.render&&!o.template&&(o.template=s.innerHTML),s.innerHTML="";const i=n(s,!1,hi(s));return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),i},t},Au=(...e)=>{const t=ha().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=pi(r);if(s)return n(s,!0,hi(s))},t};function hi(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function pi(e){return ie(e)?document.querySelector(e):e}const Ru=(e,t)=>{const n=e.__vccOpts||e;for(const[r,s]of t)n[r]=s;return n},pa="modulepreload",ga=function(e){return"/dev/"+e},Bs={},Ou=function(t,n,r){let s=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const o=document.querySelector("meta[property=csp-nonce]"),i=(o==null?void 0:o.nonce)||(o==null?void 0:o.getAttribute("nonce"));s=Promise.all(n.map(l=>{if(l=ga(l),l in Bs)return;Bs[l]=!0;const c=l.endsWith(".css"),u=c?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${l}"]${u}`))return;const f=document.createElement("link");if(f.rel=c?"stylesheet":pa,c||(f.as="script",f.crossOrigin=""),f.href=l,i&&f.setAttribute("nonce",i),document.head.appendChild(f),c)return new Promise((h,m)=>{f.addEventListener("load",h),f.addEventListener("error",()=>m(new Error(`Unable to preload CSS for ${l}`)))})}))}return s.then(()=>t()).catch(o=>{const i=new Event("vite:preloadError",{cancelable:!0});if(i.payload=o,window.dispatchEvent(i),!i.defaultPrevented)throw o})},ma=window.__VP_SITE_DATA__;function kr(e){return oo()?(Xi(e),!0):!1}function $e(e){return typeof e=="function"?e():wo(e)}const gi=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const ya=Object.prototype.toString,_a=e=>ya.call(e)==="[object Object]",kt=()=>{},ks=va();function va(){var e,t;return gi&&((e=window==null?void 0:window.navigator)==null?void 0:e.userAgent)&&(/iP(?:ad|hone|od)/.test(window.navigator.userAgent)||((t=window==null?void 0:window.navigator)==null?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test(window==null?void 0:window.navigator.userAgent))}function ba(e,t){function n(...r){return new Promise((s,o)=>{Promise.resolve(e(()=>t.apply(this,r),{fn:t,thisArg:this,args:r})).then(s).catch(o)})}return n}const mi=e=>e();function wa(e,t={}){let n,r,s=kt;const o=l=>{clearTimeout(l),s(),s=kt};return l=>{const c=$e(e),u=$e(t.maxWait);return n&&o(n),c<=0||u!==void 0&&u<=0?(r&&(o(r),r=null),Promise.resolve(l())):new Promise((f,h)=>{s=t.rejectOnCancel?h:f,u&&!r&&(r=setTimeout(()=>{n&&o(n),r=null,f(l())},u)),n=setTimeout(()=>{r&&o(r),r=null,f(l())},c)})}}function Ea(e=mi){const t=oe(!0);function n(){t.value=!1}function r(){t.value=!0}const s=(...o)=>{t.value&&e(...o)};return{isActive:Ln(t),pause:n,resume:r,eventFilter:s}}function Ca(e){return jn()}function yi(...e){if(e.length!==1)return Cl(...e);const t=e[0];return typeof t=="function"?Ln(bl(()=>({get:t,set:kt}))):oe(t)}function _i(e,t,n={}){const{eventFilter:r=mi,...s}=n;return Fe(e,ba(r,t),s)}function Sa(e,t,n={}){const{eventFilter:r,...s}=n,{eventFilter:o,pause:i,resume:l,isActive:c}=Ea(r);return{stop:_i(e,t,{...s,eventFilter:o}),pause:i,resume:l,isActive:c}}function Kr(e,t=!0,n){Ca()?Tt(e,n):t?e():Mn(e)}function Lu(e,t,n={}){const{debounce:r=0,maxWait:s=void 0,...o}=n;return _i(e,t,{...o,eventFilter:wa(r,{maxWait:s})})}function Mu(e,t,n){let r;de(n)?r={evaluating:n}:r={};const{lazy:s=!1,evaluating:o=void 0,shallow:i=!0,onError:l=kt}=r,c=oe(!s),u=i?Fr(t):oe(t);let f=0;return Ur(async h=>{if(!c.value)return;f++;const m=f;let b=!1;o&&Promise.resolve().then(()=>{o.value=!0});try{const S=await e(O=>{h(()=>{o&&(o.value=!1),b||O()})});m===f&&(u.value=S)}catch(S){l(S)}finally{o&&m===f&&(o.value=!1),b=!0}}),s?se(()=>(c.value=!0,u.value)):u}function vi(e){var t;const n=$e(e);return(t=n==null?void 0:n.$el)!=null?t:n}const Le=gi?window:void 0;function xt(...e){let t,n,r,s;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,r,s]=e,t=Le):[t,n,r,s]=e,!t)return kt;Array.isArray(n)||(n=[n]),Array.isArray(r)||(r=[r]);const o=[],i=()=>{o.forEach(f=>f()),o.length=0},l=(f,h,m,b)=>(f.addEventListener(h,m,b),()=>f.removeEventListener(h,m,b)),c=Fe(()=>[vi(t),$e(s)],([f,h])=>{if(i(),!f)return;const m=_a(h)?{...h}:h;o.push(...n.flatMap(b=>r.map(S=>l(f,b,S,m))))},{immediate:!0,flush:"post"}),u=()=>{c(),i()};return kr(u),u}function xa(e){return typeof e=="function"?e:typeof e=="string"?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function Iu(...e){let t,n,r={};e.length===3?(t=e[0],n=e[1],r=e[2]):e.length===2?typeof e[1]=="object"?(t=!0,n=e[0],r=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);const{target:s=Le,eventName:o="keydown",passive:i=!1,dedupe:l=!1}=r,c=xa(t);return xt(s,o,f=>{f.repeat&&$e(l)||c(f)&&n(f)},i)}function Ta(){const e=oe(!1),t=jn();return t&&Tt(()=>{e.value=!0},t),e}function Aa(e){const t=Ta();return se(()=>(t.value,!!e()))}function bi(e,t={}){const{window:n=Le}=t,r=Aa(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let s;const o=oe(!1),i=u=>{o.value=u.matches},l=()=>{s&&("removeEventListener"in s?s.removeEventListener("change",i):s.removeListener(i))},c=Ur(()=>{r.value&&(l(),s=n.matchMedia($e(e)),"addEventListener"in s?s.addEventListener("change",i):s.addListener(i),o.value=s.matches)});return kr(()=>{c(),l(),s=void 0}),o}const cn=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},an="__vueuse_ssr_handlers__",Ra=Oa();function Oa(){return an in cn||(cn[an]=cn[an]||{}),cn[an]}function wi(e,t){return Ra[e]||t}function La(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const Ma={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},Ks="vueuse-storage";function Wr(e,t,n,r={}){var s;const{flush:o="pre",deep:i=!0,listenToStorageChanges:l=!0,writeDefaults:c=!0,mergeDefaults:u=!1,shallow:f,window:h=Le,eventFilter:m,onError:b=_=>{console.error(_)},initOnMounted:S}=r,O=(f?Fr:oe)(typeof t=="function"?t():t);if(!n)try{n=wi("getDefaultStorage",()=>{var _;return(_=Le)==null?void 0:_.localStorage})()}catch(_){b(_)}if(!n)return O;const k=$e(t),W=La(k),D=(s=r.serializer)!=null?s:Ma[W],{pause:p,resume:y}=Sa(O,()=>T(O.value),{flush:o,deep:i,eventFilter:m});h&&l&&Kr(()=>{xt(h,"storage",$),xt(h,Ks,M),S&&$()}),S||$();function I(_,N){h&&h.dispatchEvent(new CustomEvent(Ks,{detail:{key:e,oldValue:_,newValue:N,storageArea:n}}))}function T(_){try{const N=n.getItem(e);if(_==null)I(N,null),n.removeItem(e);else{const x=D.write(_);N!==x&&(n.setItem(e,x),I(N,x))}}catch(N){b(N)}}function F(_){const N=_?_.newValue:n.getItem(e);if(N==null)return c&&k!=null&&n.setItem(e,D.write(k)),k;if(!_&&u){const x=D.read(N);return typeof u=="function"?u(x,k):W==="object"&&!Array.isArray(x)?{...k,...x}:x}else return typeof N!="string"?N:D.read(N)}function $(_){if(!(_&&_.storageArea!==n)){if(_&&_.key==null){O.value=k;return}if(!(_&&_.key!==e)){p();try{(_==null?void 0:_.newValue)!==D.write(O.value)&&(O.value=F(_))}catch(N){b(N)}finally{_?Mn(y):y()}}}}function M(_){$(_.detail)}return O}function Ei(e){return bi("(prefers-color-scheme: dark)",e)}function Ia(e={}){const{selector:t="html",attribute:n="class",initialValue:r="auto",window:s=Le,storage:o,storageKey:i="vueuse-color-scheme",listenToStorageChanges:l=!0,storageRef:c,emitAuto:u,disableTransition:f=!0}=e,h={auto:"",light:"light",dark:"dark",...e.modes||{}},m=Ei({window:s}),b=se(()=>m.value?"dark":"light"),S=c||(i==null?yi(r):Wr(i,r,o,{window:s,listenToStorageChanges:l})),O=se(()=>S.value==="auto"?b.value:S.value),k=wi("updateHTMLAttrs",(y,I,T)=>{const F=typeof y=="string"?s==null?void 0:s.document.querySelector(y):vi(y);if(!F)return;let $;if(f&&($=s.document.createElement("style"),$.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),s.document.head.appendChild($)),I==="class"){const M=T.split(/\s/g);Object.values(h).flatMap(_=>(_||"").split(/\s/g)).filter(Boolean).forEach(_=>{M.includes(_)?F.classList.add(_):F.classList.remove(_)})}else F.setAttribute(I,T);f&&(s.getComputedStyle($).opacity,document.head.removeChild($))});function W(y){var I;k(t,n,(I=h[y])!=null?I:y)}function D(y){e.onChanged?e.onChanged(y,W):W(y)}Fe(O,D,{flush:"post",immediate:!0}),Kr(()=>D(O.value));const p=se({get(){return u?S.value:O.value},set(y){S.value=y}});try{return Object.assign(p,{store:S,system:b,state:O})}catch{return p}}function Pa(e={}){const{valueDark:t="dark",valueLight:n="",window:r=Le}=e,s=Ia({...e,onChanged:(l,c)=>{var u;e.onChanged?(u=e.onChanged)==null||u.call(e,l==="dark",c,l):c(l)},modes:{dark:t,light:n}}),o=se(()=>s.system?s.system.value:Ei({window:r}).value?"dark":"light");return se({get(){return s.value==="dark"},set(l){const c=l?"dark":"light";o.value===c?s.value="auto":s.value=c}})}function Zn(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function Pu(e,t,n={}){const{window:r=Le}=n;return Wr(e,t,r==null?void 0:r.localStorage,n)}function Ci(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth1?!0:(t.preventDefault&&t.preventDefault(),!1)}const er=new WeakMap;function Nu(e,t=!1){const n=oe(t);let r=null,s="";Fe(yi(e),l=>{const c=Zn($e(l));if(c){const u=c;if(er.get(u)||er.set(u,u.style.overflow),u.style.overflow!=="hidden"&&(s=u.style.overflow),u.style.overflow==="hidden")return n.value=!0;if(n.value)return u.style.overflow="hidden"}},{immediate:!0});const o=()=>{const l=Zn($e(e));!l||n.value||(ks&&(r=xt(l,"touchmove",c=>{Na(c)},{passive:!1})),l.style.overflow="hidden",n.value=!0)},i=()=>{const l=Zn($e(e));!l||!n.value||(ks&&(r==null||r()),l.style.overflow=s,er.delete(l),n.value=!1)};return kr(i),se({get(){return n.value},set(l){l?o():i()}})}function Fu(e,t,n={}){const{window:r=Le}=n;return Wr(e,t,r==null?void 0:r.sessionStorage,n)}function $u(e={}){const{window:t=Le,behavior:n="auto"}=e;if(!t)return{x:oe(0),y:oe(0)};const r=oe(t.scrollX),s=oe(t.scrollY),o=se({get(){return r.value},set(l){scrollTo({left:l,behavior:n})}}),i=se({get(){return s.value},set(l){scrollTo({top:l,behavior:n})}});return xt(t,"scroll",()=>{r.value=t.scrollX,s.value=t.scrollY},{capture:!1,passive:!0}),{x:o,y:i}}function Hu(e={}){const{window:t=Le,initialWidth:n=Number.POSITIVE_INFINITY,initialHeight:r=Number.POSITIVE_INFINITY,listenOrientation:s=!0,includeScrollbar:o=!0}=e,i=oe(n),l=oe(r),c=()=>{t&&(o?(i.value=t.innerWidth,l.value=t.innerHeight):(i.value=t.document.documentElement.clientWidth,l.value=t.document.documentElement.clientHeight))};if(c(),Kr(c),xt("resize",c,{passive:!0}),s){const u=bi("(orientation: portrait)");Fe(u,()=>c())}return{width:i,height:l}}var tr={BASE_URL:"/dev/",DEV:!1,MODE:"production",PROD:!0,SSR:!1},nr={};const Si=/^(?:[a-z]+:|\/\/)/i,Fa="vitepress-theme-appearance",$a=/#.*$/,Ha=/[?#].*$/,ja=/(?:(^|\/)index)?\.(?:md|html)$/,he=typeof document<"u",xi={relativePath:"404.md",filePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{sidebar:!1,layout:"page"},lastUpdated:0,isNotFound:!0};function Va(e,t,n=!1){if(t===void 0)return!1;if(e=Ws(`/${e}`),n)return new RegExp(t).test(e);if(Ws(t)!==e)return!1;const r=t.match($a);return r?(he?location.hash:"")===r[0]:!0}function Ws(e){return decodeURI(e).replace(Ha,"").replace(ja,"$1")}function Da(e){return Si.test(e)}function Ua(e,t){return Object.keys((e==null?void 0:e.locales)||{}).find(n=>n!=="root"&&!Da(n)&&Va(t,`/${n}/`,!0))||"root"}function Ba(e,t){var r,s,o,i,l,c,u;const n=Ua(e,t);return Object.assign({},e,{localeIndex:n,lang:((r=e.locales[n])==null?void 0:r.lang)??e.lang,dir:((s=e.locales[n])==null?void 0:s.dir)??e.dir,title:((o=e.locales[n])==null?void 0:o.title)??e.title,titleTemplate:((i=e.locales[n])==null?void 0:i.titleTemplate)??e.titleTemplate,description:((l=e.locales[n])==null?void 0:l.description)??e.description,head:Ai(e.head,((c=e.locales[n])==null?void 0:c.head)??[]),themeConfig:{...e.themeConfig,...(u=e.locales[n])==null?void 0:u.themeConfig}})}function Ti(e,t){const n=t.title||e.title,r=t.titleTemplate??e.titleTemplate;if(typeof r=="string"&&r.includes(":title"))return r.replace(/:title/g,n);const s=ka(e.title,r);return n===s.slice(3)?n:`${n}${s}`}function ka(e,t){return t===!1?"":t===!0||t===void 0?` | ${e}`:e===t?"":` | ${t}`}function Ka(e,t){const[n,r]=t;if(n!=="meta")return!1;const s=Object.entries(r)[0];return s==null?!1:e.some(([o,i])=>o===n&&i[s[0]]===s[1])}function Ai(e,t){return[...e.filter(n=>!Ka(t,n)),...t]}const Wa=/[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g,qa=/^[a-z]:/i;function qs(e){const t=qa.exec(e),n=t?t[0]:"";return n+e.slice(n.length).replace(Wa,"_").replace(/(^|\/)_+(?=[^/]*$)/,"$1")}const rr=new Set;function Ga(e){if(rr.size===0){const n=typeof process=="object"&&(nr==null?void 0:nr.VITE_EXTRA_EXTENSIONS)||(tr==null?void 0:tr.VITE_EXTRA_EXTENSIONS)||"";("3g2,3gp,aac,ai,apng,au,avif,bin,bmp,cer,class,conf,crl,css,csv,dll,doc,eps,epub,exe,gif,gz,ics,ief,jar,jpe,jpeg,jpg,js,json,jsonld,m4a,man,mid,midi,mjs,mov,mp2,mp3,mp4,mpe,mpeg,mpg,mpp,oga,ogg,ogv,ogx,opus,otf,p10,p7c,p7m,p7s,pdf,png,ps,qt,roff,rtf,rtx,ser,svg,t,tif,tiff,tr,ts,tsv,ttf,txt,vtt,wav,weba,webm,webp,woff,woff2,xhtml,xml,yaml,yml,zip"+(n&&typeof n=="string"?","+n:"")).split(",").forEach(r=>rr.add(r))}const t=e.split(".").pop();return t==null||!rr.has(t.toLowerCase())}function ju(e){return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}const Xa=Symbol(),ft=Fr(ma);function Vu(e){const t=se(()=>Ba(ft.value,e.data.relativePath)),n=t.value.appearance,r=n==="force-dark"?oe(!0):n?Pa({storageKey:Fa,initialValue:()=>n==="dark"?"dark":"auto",...typeof n=="object"?n:{}}):oe(!1),s=oe(he?location.hash:"");return he&&window.addEventListener("hashchange",()=>{s.value=location.hash}),Fe(()=>e.data,()=>{s.value=he?location.hash:""}),{site:t,theme:se(()=>t.value.themeConfig),page:se(()=>e.data),frontmatter:se(()=>e.data.frontmatter),params:se(()=>e.data.params),lang:se(()=>t.value.lang),dir:se(()=>e.data.frontmatter.dir||t.value.dir),localeIndex:se(()=>t.value.localeIndex||"root"),title:se(()=>Ti(t.value,e.data)),description:se(()=>e.data.description||t.value.description),isDark:r,hash:se(()=>s.value)}}function Ya(){const e=Ct(Xa);if(!e)throw new Error("vitepress data not properly injected in app");return e}function za(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function Gs(e){return Si.test(e)||!e.startsWith("/")?e:za(ft.value.base,e)}function Ja(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t=t.replace(/\/$/,"/index"),he){const n="/dev/";t=qs(t.slice(n.length).replace(/\//g,"_")||"index")+".md";let r=__VP_HASH_MAP__[t.toLowerCase()];if(r||(t=t.endsWith("_index.md")?t.slice(0,-9)+".md":t.slice(0,-3)+"_index.md",r=__VP_HASH_MAP__[t.toLowerCase()]),!r)return null;t=`${n}assets/${t}.${r}.js`}else t=`./${qs(t.slice(1).replace(/\//g,"_"))}.md.js`;return t}let mn=[];function Du(e){mn.push(e),Fn(()=>{mn=mn.filter(t=>t!==e)})}function Qa(){let e=ft.value.scrollOffset,t=0,n=24;if(typeof e=="object"&&"padding"in e&&(n=e.padding,e=e.selector),typeof e=="number")t=e;else if(typeof e=="string")t=Xs(e,n);else if(Array.isArray(e))for(const r of e){const s=Xs(r,n);if(s){t=s;break}}return t}function Xs(e,t){const n=document.querySelector(e);if(!n)return 0;const r=n.getBoundingClientRect().bottom;return r<0?0:r+t}const Za=Symbol(),Ri="http://a.com",eu=()=>({path:"/",component:null,data:xi});function Uu(e,t){const n=On(eu()),r={route:n,go:s};async function s(l=he?location.href:"/"){var c,u;l=sr(l),await((c=r.onBeforeRouteChange)==null?void 0:c.call(r,l))!==!1&&(he&&l!==sr(location.href)&&(history.replaceState({scrollPosition:window.scrollY},""),history.pushState({},"",l)),await i(l),await((u=r.onAfterRouteChanged)==null?void 0:u.call(r,l)))}let o=null;async function i(l,c=0,u=!1){var m;if(await((m=r.onBeforePageLoad)==null?void 0:m.call(r,l))===!1)return;const f=new URL(l,Ri),h=o=f.pathname;try{let b=await e(h);if(!b)throw new Error(`Page not found: ${h}`);if(o===h){o=null;const{default:S,__pageData:O}=b;if(!S)throw new Error(`Invalid route component: ${S}`);n.path=he?h:Gs(h),n.component=hn(S),n.data=hn(O),he&&Mn(()=>{let k=ft.value.base+O.relativePath.replace(/(?:(^|\/)index)?\.md$/,"$1");if(!ft.value.cleanUrls&&!k.endsWith("/")&&(k+=".html"),k!==f.pathname&&(f.pathname=k,l=k+f.search+f.hash,history.replaceState({},"",l)),f.hash&&!c){let W=null;try{W=document.getElementById(decodeURIComponent(f.hash).slice(1))}catch(D){console.warn(D)}if(W){Ys(W,f.hash);return}}window.scrollTo(0,c)})}}catch(b){if(!/fetch|Page not found/.test(b.message)&&!/^\/404(\.html|\/)?$/.test(l)&&console.error(b),!u)try{const S=await fetch(ft.value.base+"hashmap.json");window.__VP_HASH_MAP__=await S.json(),await i(l,c,!0);return}catch{}if(o===h){o=null,n.path=he?h:Gs(h),n.component=t?hn(t):null;const S=he?h.replace(/(^|\/)$/,"$1index").replace(/(\.html)?$/,".md").replace(/^\//,""):"404.md";n.data={...xi,relativePath:S}}}}return he&&(history.state===null&&history.replaceState({},""),window.addEventListener("click",l=>{if(l.defaultPrevented||!(l.target instanceof Element)||l.target.closest("button")||l.button!==0||l.ctrlKey||l.shiftKey||l.altKey||l.metaKey)return;const c=l.target.closest("a");if(!c||c.closest(".vp-raw")||c.hasAttribute("download")||c.hasAttribute("target"))return;const u=c.getAttribute("href")??(c instanceof SVGAElement?c.getAttribute("xlink:href"):null);if(u==null)return;const{href:f,origin:h,pathname:m,hash:b,search:S}=new URL(u,c.baseURI),O=new URL(location.href);h===O.origin&&Ga(m)&&(l.preventDefault(),m===O.pathname&&S===O.search?(b!==O.hash&&(history.pushState({},"",f),window.dispatchEvent(new HashChangeEvent("hashchange",{oldURL:O.href,newURL:f}))),b?Ys(c,b,c.classList.contains("header-anchor")):window.scrollTo(0,0)):s(f))},{capture:!0}),window.addEventListener("popstate",async l=>{var c;l.state!==null&&(await i(sr(location.href),l.state&&l.state.scrollPosition||0),(c=r.onAfterRouteChanged)==null||c.call(r,location.href))}),window.addEventListener("hashchange",l=>{l.preventDefault()})),r}function tu(){const e=Ct(Za);if(!e)throw new Error("useRouter() is called without provider.");return e}function Oi(){return tu().route}function Ys(e,t,n=!1){let r=null;try{r=e.classList.contains("header-anchor")?e:document.getElementById(decodeURIComponent(t).slice(1))}catch(s){console.warn(s)}if(r){let s=function(){!n||Math.abs(i-window.scrollY)>window.innerHeight?window.scrollTo(0,i):window.scrollTo({left:0,top:i,behavior:"smooth"})};const o=parseInt(window.getComputedStyle(r).paddingTop,10),i=window.scrollY+r.getBoundingClientRect().top-Qa()+o;requestAnimationFrame(s)}}function sr(e){const t=new URL(e,Ri);return t.pathname=t.pathname.replace(/(^|\/)index(\.html)?$/,"$1"),ft.value.cleanUrls?t.pathname=t.pathname.replace(/\.html$/,""):!t.pathname.endsWith("/")&&!t.pathname.endsWith(".html")&&(t.pathname+=".html"),t.pathname+t.search+t.hash}const or=()=>mn.forEach(e=>e()),Bu=Hr({name:"VitePressContent",props:{as:{type:[Object,String],default:"div"}},setup(e){const t=Oi(),{site:n}=Ya();return()=>br(e.as,n.value.contentProps??{style:{position:"relative"}},[t.component?br(t.component,{onVnodeMounted:or,onVnodeUpdated:or,onVnodeUnmounted:or}):"404 Page Not Found"])}}),ku=Hr({setup(e,{slots:t}){const n=oe(!1);return Tt(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}});function Ku(){he&&window.addEventListener("click",e=>{var n;const t=e.target;if(t.matches(".vp-code-group input")){const r=(n=t.parentElement)==null?void 0:n.parentElement;if(!r)return;const s=Array.from(r.querySelectorAll("input")).indexOf(t);if(s<0)return;const o=r.querySelector(".blocks");if(!o)return;const i=Array.from(o.children).find(u=>u.classList.contains("active"));if(!i)return;const l=o.children[s];if(!l||i===l)return;i.classList.remove("active"),l.classList.add("active");const c=r==null?void 0:r.querySelector(`label[for="${t.id}"]`);c==null||c.scrollIntoView({block:"nearest"})}})}function Wu(){if(he){const e=new WeakMap;window.addEventListener("click",t=>{var r;const n=t.target;if(n.matches('div[class*="language-"] > button.copy')){const s=n.parentElement,o=(r=n.nextElementSibling)==null?void 0:r.nextElementSibling;if(!s||!o)return;const i=/language-(shellscript|shell|bash|sh|zsh)/.test(s.className),l=[".vp-copy-ignore",".diff.remove"],c=o.cloneNode(!0);c.querySelectorAll(l.join(",")).forEach(f=>f.remove());let u=c.textContent||"";i&&(u=u.replace(/^ *(\$|>) /gm,"").trim()),nu(u).then(()=>{n.classList.add("copied"),clearTimeout(e.get(n));const f=setTimeout(()=>{n.classList.remove("copied"),n.blur(),e.delete(n)},2e3);e.set(n,f)})}})}}async function nu(e){try{return navigator.clipboard.writeText(e)}catch{const t=document.createElement("textarea"),n=document.activeElement;t.value=e,t.setAttribute("readonly",""),t.style.contain="strict",t.style.position="absolute",t.style.left="-9999px",t.style.fontSize="12pt";const r=document.getSelection(),s=r?r.rangeCount>0&&r.getRangeAt(0):null;document.body.appendChild(t),t.select(),t.selectionStart=0,t.selectionEnd=e.length,document.execCommand("copy"),document.body.removeChild(t),s&&(r.removeAllRanges(),r.addRange(s)),n&&n.focus()}}function qu(e,t){let n=!0,r=[];const s=o=>{if(n){n=!1,o.forEach(l=>{const c=ir(l);for(const u of document.head.children)if(u.isEqualNode(c)){r.push(u);return}});return}const i=o.map(ir);r.forEach((l,c)=>{const u=i.findIndex(f=>f==null?void 0:f.isEqualNode(l??null));u!==-1?delete i[u]:(l==null||l.remove(),delete r[c])}),i.forEach(l=>l&&document.head.appendChild(l)),r=[...r,...i].filter(Boolean)};Ur(()=>{const o=e.data,i=t.value,l=o&&o.description,c=o&&o.frontmatter.head||[],u=Ti(i,o);u!==document.title&&(document.title=u);const f=l||i.description;let h=document.querySelector("meta[name=description]");h?h.getAttribute("content")!==f&&h.setAttribute("content",f):ir(["meta",{name:"description",content:f}]),s(Ai(i.head,su(c)))})}function ir([e,t,n]){const r=document.createElement(e);for(const s in t)r.setAttribute(s,t[s]);return n&&(r.innerHTML=n),e==="script"&&!t.async&&(r.async=!1),r}function ru(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function su(e){return e.filter(t=>!ru(t))}const lr=new Set,Li=()=>document.createElement("link"),ou=e=>{const t=Li();t.rel="prefetch",t.href=e,document.head.appendChild(t)},iu=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let un;const lu=he&&(un=Li())&&un.relList&&un.relList.supports&&un.relList.supports("prefetch")?ou:iu;function Gu(){if(!he||!window.IntersectionObserver)return;let e;if((e=navigator.connection)&&(e.saveData||/2g/.test(e.effectiveType)))return;const t=window.requestIdleCallback||setTimeout;let n=null;const r=()=>{n&&n.disconnect(),n=new IntersectionObserver(o=>{o.forEach(i=>{if(i.isIntersecting){const l=i.target;n.unobserve(l);const{pathname:c}=l;if(!lr.has(c)){lr.add(c);const u=Ja(c);u&&lu(u)}}})}),t(()=>{document.querySelectorAll("#app a").forEach(o=>{const{hostname:i,pathname:l}=new URL(o.href instanceof SVGAnimatedString?o.href.animVal:o.href,o.baseURI),c=l.match(/\.\w+$/);c&&c[0]!==".html"||o.target!=="_blank"&&i===location.hostname&&(l!==location.pathname?n.observe(o):lr.add(l))})})};Tt(r);const s=Oi();Fe(()=>s.path,r),Fn(()=>{n&&n.disconnect()})}export{xu as $,vu as A,Vl as B,Qa as C,du as D,pu as E,_e as F,Fr as G,Du as H,le as I,hu as J,Si as K,Oi as L,Rc as M,Ct as N,Hu as O,xr as P,Iu as Q,Mn as R,$u as S,ui as T,he as U,Ln as V,fu as W,Ou as X,Nu as Y,Zl as Z,Ru as _,ii as a,mu as a0,Mo as a1,Su as a2,yu as a3,On as a4,Cl as a5,br as a6,wu as a7,qu as a8,Za as a9,Vu as aa,Xa as ab,Bu as ac,ku as ad,ft as ae,Au as af,Uu as ag,Ja as ah,Gu as ai,Wu as aj,Ku as ak,vi as al,kr as am,Mu as an,Fu as ao,Pu as ap,Lu as aq,tu as ar,xt as as,uu as at,Cu as au,de as av,_u as aw,hn as ax,Tu as ay,ju as az,ri as b,bu as c,Hr as d,Eu as e,Ga as f,Gs as g,se as h,Da as i,oi as j,wo as k,au as l,Va as m,Tr as n,ti as o,cu as p,bi as q,gu as r,oe as s,Wi as t,Ya as u,Fe as v,Ll as w,Ur as x,Tt as y,Fn as z}; diff --git a/dev/assets/chunks/framework.U9t3ZutP.js b/dev/assets/chunks/framework.U9t3ZutP.js deleted file mode 100644 index 2d55c7e..0000000 --- a/dev/assets/chunks/framework.U9t3ZutP.js +++ /dev/null @@ -1,17 +0,0 @@ -/** -* @vue/shared v3.4.30 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**//*! #__NO_SIDE_EFFECTS__ */function wr(e,t){const n=new Set(e.split(","));return r=>n.has(r)}const te={},mt=[],xe=()=>{},Li=()=>!1,kt=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Er=e=>e.startsWith("onUpdate:"),le=Object.assign,Cr=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Ii=Object.prototype.hasOwnProperty,Y=(e,t)=>Ii.call(e,t),k=Array.isArray,yt=e=>Sn(e)==="[object Map]",Ys=e=>Sn(e)==="[object Set]",K=e=>typeof e=="function",oe=e=>typeof e=="string",et=e=>typeof e=="symbol",Z=e=>e!==null&&typeof e=="object",Js=e=>(Z(e)||K(e))&&K(e.then)&&K(e.catch),Qs=Object.prototype.toString,Sn=e=>Qs.call(e),Mi=e=>Sn(e).slice(8,-1),Zs=e=>Sn(e)==="[object Object]",xr=e=>oe(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,_t=wr(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Tn=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Pi=/-(\w)/g,$e=Tn(e=>e.replace(Pi,(t,n)=>n?n.toUpperCase():"")),Ni=/\B([A-Z])/g,ft=Tn(e=>e.replace(Ni,"-$1").toLowerCase()),An=Tn(e=>e.charAt(0).toUpperCase()+e.slice(1)),un=Tn(e=>e?`on${An(e)}`:""),Qe=(e,t)=>!Object.is(e,t),fn=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})},cr=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Fi=e=>{const t=oe(e)?Number(e):NaN;return isNaN(t)?e:t};let Jr;const to=()=>Jr||(Jr=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Sr(e){if(k(e)){const t={};for(let n=0;n{if(n){const r=n.split(Hi);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function Tr(e){let t="";if(oe(e))t=e;else if(k(e))for(let n=0;noe(e)?e:e==null?"":k(e)||Z(e)&&(e.toString===Qs||!K(e.toString))?JSON.stringify(e,ro,2):String(e),ro=(e,t)=>t&&t.__v_isRef?ro(e,t.value):yt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,s],o)=>(n[kn(r,o)+" =>"]=s,n),{})}:Ys(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>kn(n))}:et(t)?kn(t):Z(t)&&!k(t)&&!Zs(t)?String(t):t,kn=(e,t="")=>{var n;return et(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** -* @vue/reactivity v3.4.30 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/let we;class Bi{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=we,!t&&we&&(this.index=(we.scopes||(we.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const n=we;try{return we=this,t()}finally{we=n}}}on(){we=this}off(){we=this.parent}stop(t){if(this._active){let n,r;for(n=0,r=this.effects.length;n=5)break}}this._dirtyLevel===1&&(this._dirtyLevel=0),Ue()}return this._dirtyLevel>=5}set dirty(t){this._dirtyLevel=t?5:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let t=Ye,n=ct;try{return Ye=!0,ct=this,this._runnings++,Qr(this),this.fn()}finally{Zr(this),this._runnings--,ct=n,Ye=t}}stop(){this.active&&(Qr(this),Zr(this),this.onStop&&this.onStop(),this.active=!1)}}function Wi(e){return e.value}function Qr(e){e._trackId++,e._depsLength=0}function Zr(e){if(e.deps.length>e._depsLength){for(let t=e._depsLength;t0&&(s??(s=e.get(r)===r._trackId))){r._dirtyLevel=2;continue}r._dirtyLevel{const n=new Map;return n.cleanup=e,n.computed=t,n},mn=new WeakMap,at=Symbol(""),fr=Symbol("");function ve(e,t,n){if(Ye&&ct){let r=mn.get(e);r||mn.set(e,r=new Map);let s=r.get(n);s||r.set(n,s=ao(()=>r.delete(n))),lo(ct,s)}}function De(e,t,n,r,s,o){const i=mn.get(e);if(!i)return;let l=[];if(t==="clear")l=[...i.values()];else if(n==="length"&&k(e)){const c=Number(r);i.forEach((a,f)=>{(f==="length"||!et(f)&&f>=c)&&l.push(a)})}else switch(n!==void 0&&l.push(i.get(n)),t){case"add":k(e)?xr(n)&&l.push(i.get("length")):(l.push(i.get(at)),yt(e)&&l.push(i.get(fr)));break;case"delete":k(e)||(l.push(i.get(at)),yt(e)&&l.push(i.get(fr)));break;case"set":yt(e)&&l.push(i.get(at));break}Rr();for(const c of l)c&&co(c,5);Or()}function qi(e,t){const n=mn.get(e);return n&&n.get(t)}const Gi=wr("__proto__,__v_isRef,__isVue"),uo=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(et)),es=zi();function zi(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const r=J(this);for(let o=0,i=this.length;o{e[t]=function(...n){tt(),Rr();const r=J(this)[t].apply(this,n);return Or(),Ue(),r}}),e}function Xi(e){et(e)||(e=String(e));const t=J(this);return ve(t,"has",e),t.hasOwnProperty(e)}class fo{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,r){const s=this._isReadonly,o=this._isShallow;if(n==="__v_isReactive")return!s;if(n==="__v_isReadonly")return s;if(n==="__v_isShallow")return o;if(n==="__v_raw")return r===(s?o?cl:mo:o?go:po).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(r)?t:void 0;const i=k(t);if(!s){if(i&&Y(es,n))return Reflect.get(es,n,r);if(n==="hasOwnProperty")return Xi}const l=Reflect.get(t,n,r);return(et(n)?uo.has(n):Gi(n))||(s||ve(t,"get",n),o)?l:de(l)?i&&xr(n)?l:l.value:Z(l)?s?Ln(l):On(l):l}}class ho extends fo{constructor(t=!1){super(!1,t)}set(t,n,r,s){let o=t[n];if(!this._isShallow){const c=$t(o);if(!yn(r)&&!$t(r)&&(o=J(o),r=J(r)),!k(t)&&de(o)&&!de(r))return c?!1:(o.value=r,!0)}const i=k(t)&&xr(n)?Number(n)e,Rn=e=>Reflect.getPrototypeOf(e);function Yt(e,t,n=!1,r=!1){e=e.__v_raw;const s=J(e),o=J(t);n||(Qe(t,o)&&ve(s,"get",t),ve(s,"get",o));const{has:i}=Rn(s),l=r?Lr:n?Pr:Ht;if(i.call(s,t))return l(e.get(t));if(i.call(s,o))return l(e.get(o));e!==s&&e.get(t)}function Jt(e,t=!1){const n=this.__v_raw,r=J(n),s=J(e);return t||(Qe(e,s)&&ve(r,"has",e),ve(r,"has",s)),e===s?n.has(e):n.has(e)||n.has(s)}function Qt(e,t=!1){return e=e.__v_raw,!t&&ve(J(e),"iterate",at),Reflect.get(e,"size",e)}function ts(e){e=J(e);const t=J(this);return Rn(t).has.call(t,e)||(t.add(e),De(t,"add",e,e)),this}function ns(e,t){t=J(t);const n=J(this),{has:r,get:s}=Rn(n);let o=r.call(n,e);o||(e=J(e),o=r.call(n,e));const i=s.call(n,e);return n.set(e,t),o?Qe(t,i)&&De(n,"set",e,t):De(n,"add",e,t),this}function rs(e){const t=J(this),{has:n,get:r}=Rn(t);let s=n.call(t,e);s||(e=J(e),s=n.call(t,e)),r&&r.call(t,e);const o=t.delete(e);return s&&De(t,"delete",e,void 0),o}function ss(){const e=J(this),t=e.size!==0,n=e.clear();return t&&De(e,"clear",void 0,void 0),n}function Zt(e,t){return function(r,s){const o=this,i=o.__v_raw,l=J(i),c=t?Lr:e?Pr:Ht;return!e&&ve(l,"iterate",at),i.forEach((a,f)=>r.call(s,c(a),c(f),o))}}function en(e,t,n){return function(...r){const s=this.__v_raw,o=J(s),i=yt(o),l=e==="entries"||e===Symbol.iterator&&i,c=e==="keys"&&i,a=s[e](...r),f=n?Lr:t?Pr:Ht;return!t&&ve(o,"iterate",c?fr:at),{next(){const{value:h,done:m}=a.next();return m?{value:h,done:m}:{value:l?[f(h[0]),f(h[1])]:f(h),done:m}},[Symbol.iterator](){return this}}}}function ke(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function el(){const e={get(o){return Yt(this,o)},get size(){return Qt(this)},has:Jt,add:ts,set:ns,delete:rs,clear:ss,forEach:Zt(!1,!1)},t={get(o){return Yt(this,o,!1,!0)},get size(){return Qt(this)},has:Jt,add:ts,set:ns,delete:rs,clear:ss,forEach:Zt(!1,!0)},n={get(o){return Yt(this,o,!0)},get size(){return Qt(this,!0)},has(o){return Jt.call(this,o,!0)},add:ke("add"),set:ke("set"),delete:ke("delete"),clear:ke("clear"),forEach:Zt(!0,!1)},r={get(o){return Yt(this,o,!0,!0)},get size(){return Qt(this,!0)},has(o){return Jt.call(this,o,!0)},add:ke("add"),set:ke("set"),delete:ke("delete"),clear:ke("clear"),forEach:Zt(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(o=>{e[o]=en(o,!1,!1),n[o]=en(o,!0,!1),t[o]=en(o,!1,!0),r[o]=en(o,!0,!0)}),[e,n,t,r]}const[tl,nl,rl,sl]=el();function Ir(e,t){const n=t?e?sl:rl:e?nl:tl;return(r,s,o)=>s==="__v_isReactive"?!e:s==="__v_isReadonly"?e:s==="__v_raw"?r:Reflect.get(Y(n,s)&&s in r?n:r,s,o)}const ol={get:Ir(!1,!1)},il={get:Ir(!1,!0)},ll={get:Ir(!0,!1)};const po=new WeakMap,go=new WeakMap,mo=new WeakMap,cl=new WeakMap;function al(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function ul(e){return e.__v_skip||!Object.isExtensible(e)?0:al(Mi(e))}function On(e){return $t(e)?e:Mr(e,!1,Ji,ol,po)}function fl(e){return Mr(e,!1,Zi,il,go)}function Ln(e){return Mr(e,!0,Qi,ll,mo)}function Mr(e,t,n,r,s){if(!Z(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=s.get(e);if(o)return o;const i=ul(e);if(i===0)return e;const l=new Proxy(e,i===2?r:n);return s.set(e,l),l}function Rt(e){return $t(e)?Rt(e.__v_raw):!!(e&&e.__v_isReactive)}function $t(e){return!!(e&&e.__v_isReadonly)}function yn(e){return!!(e&&e.__v_isShallow)}function yo(e){return e?!!e.__v_raw:!1}function J(e){const t=e&&e.__v_raw;return t?J(t):e}function dn(e){return Object.isExtensible(e)&&eo(e,"__v_skip",!0),e}const Ht=e=>Z(e)?On(e):e,Pr=e=>Z(e)?Ln(e):e;class _o{constructor(t,n,r,s){this.getter=t,this._setter=n,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new Ar(()=>t(this._value),()=>Ot(this,this.effect._dirtyLevel===3?3:4)),this.effect.computed=this,this.effect.active=this._cacheable=!s,this.__v_isReadonly=r}get value(){const t=J(this),n=t.effect._dirtyLevel;return(!t._cacheable||t.effect.dirty)&&Qe(t._value,t._value=t.effect.run())&&n!==3&&Ot(t,5),Nr(t),t.effect._dirtyLevel>=2&&Ot(t,3),t._value}set value(t){this._setter(t)}get _dirty(){return this.effect.dirty}set _dirty(t){this.effect.dirty=t}}function dl(e,t,n=!1){let r,s;const o=K(e);return o?(r=e,s=xe):(r=e.get,s=e.set),new _o(r,s,o||!s,n)}function Nr(e){var t;Ye&&ct&&(e=J(e),lo(ct,(t=e.dep)!=null?t:e.dep=ao(()=>e.dep=void 0,e instanceof _o?e:void 0)))}function Ot(e,t=5,n,r){e=J(e);const s=e.dep;s&&co(s,t)}function de(e){return!!(e&&e.__v_isRef===!0)}function se(e){return vo(e,!1)}function Fr(e){return vo(e,!0)}function vo(e,t){return de(e)?e:new hl(e,t)}class hl{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:J(t),this._value=n?t:Ht(t)}get value(){return Nr(this),this._value}set value(t){const n=this.__v_isShallow||yn(t)||$t(t);t=n?t:J(t),Qe(t,this._rawValue)&&(this._rawValue,this._rawValue=t,this._value=n?t:Ht(t),Ot(this,5))}}function bo(e){return de(e)?e.value:e}const pl={get:(e,t,n)=>bo(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const s=e[t];return de(s)&&!de(n)?(s.value=n,!0):Reflect.set(e,t,n,r)}};function wo(e){return Rt(e)?e:new Proxy(e,pl)}class gl{constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:n,set:r}=t(()=>Nr(this),()=>Ot(this));this._get=n,this._set=r}get value(){return this._get()}set value(t){this._set(t)}}function ml(e){return new gl(e)}class yl{constructor(t,n,r){this._object=t,this._key=n,this._defaultValue=r,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return qi(J(this._object),this._key)}}class _l{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function vl(e,t,n){return de(e)?e:K(e)?new _l(e):Z(e)&&arguments.length>1?bl(e,t,n):se(e)}function bl(e,t,n){const r=e[t];return de(r)?r:new yl(e,t,n)}/** -* @vue/runtime-core v3.4.30 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/function Je(e,t,n,r){try{return r?e(...r):e()}catch(s){Kt(s,t,n)}}function Se(e,t,n,r){if(K(e)){const s=Je(e,t,n,r);return s&&Js(s)&&s.catch(o=>{Kt(o,t,n)}),s}if(k(e)){const s=[];for(let o=0;o>>1,s=pe[r],o=Vt(s);oPe&&pe.splice(t,1)}function xl(e){k(e)?vt.push(...e):(!qe||!qe.includes(e,e.allowRecurse?it+1:it))&&vt.push(e),Co()}function os(e,t,n=jt?Pe+1:0){for(;nVt(n)-Vt(r));if(vt.length=0,qe){qe.push(...t);return}for(qe=t,it=0;ite.id==null?1/0:e.id,Sl=(e,t)=>{const n=Vt(e)-Vt(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function xo(e){dr=!1,jt=!0,pe.sort(Sl);try{for(Pe=0;Peoe(_)?_.trim():_)),h&&(s=n.map(cr))}let l,c=r[l=un(t)]||r[l=un($e(t))];!c&&o&&(c=r[l=un(ft(t))]),c&&Se(c,e,6,s);const a=r[l+"Once"];if(a){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Se(a,e,6,s)}}function So(e,t,n=!1){const r=t.emitsCache,s=r.get(e);if(s!==void 0)return s;const o=e.emits;let i={},l=!1;if(!K(e)){const c=a=>{const f=So(a,t,!0);f&&(l=!0,le(i,f))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!o&&!l?(Z(e)&&r.set(e,null),null):(k(o)?o.forEach(c=>i[c]=null):le(i,o),Z(e)&&r.set(e,i),i)}function Pn(e,t){return!e||!kt(t)?!1:(t=t.slice(2).replace(/Once$/,""),Y(e,t[0].toLowerCase()+t.slice(1))||Y(e,ft(t))||Y(e,t))}let fe=null,Nn=null;function vn(e){const t=fe;return fe=e,Nn=e&&e.type.__scopeId||null,t}function ru(e){Nn=e}function su(){Nn=null}function Al(e,t=fe,n){if(!t||e._n)return e;const r=(...s)=>{r._d&&ws(-1);const o=vn(t);let i;try{i=e(...s)}finally{vn(o),r._d&&ws(1)}return i};return r._n=!0,r._c=!0,r._d=!0,r}function Kn(e){const{type:t,vnode:n,proxy:r,withProxy:s,propsOptions:[o],slots:i,attrs:l,emit:c,render:a,renderCache:f,props:h,data:m,setupState:_,ctx:C,inheritAttrs:I}=e,H=vn(e);let W,D;try{if(n.shapeFlag&4){const y=s||r,M=y;W=Ae(a.call(M,y,f,h,_,m,C)),D=l}else{const y=t;W=Ae(y.length>1?y(h,{attrs:l,slots:i,emit:c}):y(h,null)),D=t.props?l:Rl(l)}}catch(y){Nt.length=0,Kt(y,e,1),W=ie(me)}let p=W;if(D&&I!==!1){const y=Object.keys(D),{shapeFlag:M}=p;y.length&&M&7&&(o&&y.some(Er)&&(D=Ol(D,o)),p=Ze(p,D,!1,!0))}return n.dirs&&(p=Ze(p,null,!1,!0),p.dirs=p.dirs?p.dirs.concat(n.dirs):n.dirs),n.transition&&(p.transition=n.transition),W=p,vn(H),W}const Rl=e=>{let t;for(const n in e)(n==="class"||n==="style"||kt(n))&&((t||(t={}))[n]=e[n]);return t},Ol=(e,t)=>{const n={};for(const r in e)(!Er(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function Ll(e,t,n){const{props:r,children:s,component:o}=e,{props:i,children:l,patchFlag:c}=t,a=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return r?is(r,i,a):!!i;if(c&8){const f=t.dynamicProps;for(let h=0;he.__isSuspense;function Oo(e,t){t&&t.pendingBranch?k(e)?t.effects.push(...e):t.effects.push(e):xl(e)}function Fn(e,t,n=ue,r=!1){if(n){const s=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...i)=>{tt();const l=qt(n),c=Se(t,n,e,i);return l(),Ue(),c});return r?s.unshift(o):s.push(o),o}}const Be=e=>(t,n=ue)=>{(!Gt||e==="sp")&&Fn(e,(...r)=>t(...r),n)},Pl=Be("bm"),xt=Be("m"),Nl=Be("bu"),Fl=Be("u"),Lo=Be("bum"),$n=Be("um"),$l=Be("sp"),Hl=Be("rtg"),jl=Be("rtc");function Vl(e,t=ue){Fn("ec",e,t)}function lu(e,t){if(fe===null)return e;const n=Vn(fe),r=e.dirs||(e.dirs=[]);for(let s=0;st(i,l,void 0,o));else{const i=Object.keys(e);s=new Array(i.length);for(let l=0,c=i.length;l!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function au(e){K(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:r,delay:s=200,timeout:o,suspensible:i=!0,onError:l}=e;let c=null,a,f=0;const h=()=>(f++,c=null,m()),m=()=>{let _;return c||(_=c=t().catch(C=>{if(C=C instanceof Error?C:new Error(String(C)),l)return new Promise((I,H)=>{l(C,()=>I(h()),()=>H(C),f+1)});throw C}).then(C=>_!==c&&c?c:(C&&(C.__esModule||C[Symbol.toStringTag]==="Module")&&(C=C.default),a=C,C)))};return Hr({name:"AsyncComponentWrapper",__asyncLoader:m,get __asyncResolved(){return a},setup(){const _=ue;if(a)return()=>Wn(a,_);const C=D=>{c=null,Kt(D,_,13,!r)};if(i&&_.suspense||Gt)return m().then(D=>()=>Wn(D,_)).catch(D=>(C(D),()=>r?ie(r,{error:D}):null));const I=se(!1),H=se(),W=se(!!s);return s&&setTimeout(()=>{W.value=!1},s),o!=null&&setTimeout(()=>{if(!I.value&&!H.value){const D=new Error(`Async component timed out after ${o}ms.`);C(D),H.value=D}},o),m().then(()=>{I.value=!0,_.parent&&Wt(_.parent.vnode)&&(_.parent.effect.dirty=!0,Mn(_.parent.update))}).catch(D=>{C(D),H.value=D}),()=>{if(I.value&&a)return Wn(a,_);if(H.value&&r)return ie(r,{error:H.value});if(n&&!W.value)return ie(n)}}})}function Wn(e,t){const{ref:n,props:r,children:s,ce:o}=t.vnode,i=ie(e,r,s);return i.ref=n,i.ce=o,delete t.vnode.ce,i}function uu(e,t,n={},r,s){if(fe.isCE||fe.parent&&bt(fe.parent)&&fe.parent.isCE)return t!=="default"&&(n.name=t),ie("slot",n,r&&r());let o=e[t];o&&o._c&&(o._d=!1),Qo();const i=o&&Io(o(n)),l=ei(_e,{key:n.key||i&&i.key||`_${t}`},i||(r?r():[]),i&&e._===1?64:-2);return!s&&l.scopeId&&(l.slotScopeIds=[l.scopeId+"-s"]),o&&o._c&&(o._d=!0),l}function Io(e){return e.some(t=>Cn(t)?!(t.type===me||t.type===_e&&!Io(t.children)):!0)?e:null}function fu(e,t){const n={};for(const r in e)n[/[A-Z]/.test(r)?`on:${r}`:un(r)]=e[r];return n}const hr=e=>e?si(e)?Vn(e):hr(e.parent):null,Lt=le(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>hr(e.parent),$root:e=>hr(e.root),$emit:e=>e.emit,$options:e=>jr(e),$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,Mn(e.update)}),$nextTick:e=>e.n||(e.n=In.bind(e.proxy)),$watch:e=>ac.bind(e)}),qn=(e,t)=>e!==te&&!e.__isScriptSetup&&Y(e,t),Dl={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:r,data:s,props:o,accessCache:i,type:l,appContext:c}=e;let a;if(t[0]!=="$"){const _=i[t];if(_!==void 0)switch(_){case 1:return r[t];case 2:return s[t];case 4:return n[t];case 3:return o[t]}else{if(qn(r,t))return i[t]=1,r[t];if(s!==te&&Y(s,t))return i[t]=2,s[t];if((a=e.propsOptions[0])&&Y(a,t))return i[t]=3,o[t];if(n!==te&&Y(n,t))return i[t]=4,n[t];pr&&(i[t]=0)}}const f=Lt[t];let h,m;if(f)return t==="$attrs"&&ve(e.attrs,"get",""),f(e);if((h=l.__cssModules)&&(h=h[t]))return h;if(n!==te&&Y(n,t))return i[t]=4,n[t];if(m=c.config.globalProperties,Y(m,t))return m[t]},set({_:e},t,n){const{data:r,setupState:s,ctx:o}=e;return qn(s,t)?(s[t]=n,!0):r!==te&&Y(r,t)?(r[t]=n,!0):Y(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:s,propsOptions:o}},i){let l;return!!n[i]||e!==te&&Y(e,i)||qn(t,i)||(l=o[0])&&Y(l,i)||Y(r,i)||Y(Lt,i)||Y(s.config.globalProperties,i)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:Y(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function du(){return Ul().slots}function Ul(){const e=jn();return e.setupContext||(e.setupContext=ii(e))}function cs(e){return k(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let pr=!0;function Bl(e){const t=jr(e),n=e.proxy,r=e.ctx;pr=!1,t.beforeCreate&&as(t.beforeCreate,e,"bc");const{data:s,computed:o,methods:i,watch:l,provide:c,inject:a,created:f,beforeMount:h,mounted:m,beforeUpdate:_,updated:C,activated:I,deactivated:H,beforeDestroy:W,beforeUnmount:D,destroyed:p,unmounted:y,render:M,renderTracked:A,renderTriggered:F,errorCaptured:$,serverPrefetch:L,expose:w,inheritAttrs:N,components:T,directives:G,filters:ne}=t;if(a&&kl(a,r,null),i)for(const X in i){const V=i[X];K(V)&&(r[X]=V.bind(n))}if(s){const X=s.call(n,n);Z(X)&&(e.data=On(X))}if(pr=!0,o)for(const X in o){const V=o[X],He=K(V)?V.bind(n,n):K(V.get)?V.get.bind(n,n):xe,zt=!K(V)&&K(V.set)?V.set.bind(n):xe,nt=re({get:He,set:zt});Object.defineProperty(r,X,{enumerable:!0,configurable:!0,get:()=>nt.value,set:Le=>nt.value=Le})}if(l)for(const X in l)Mo(l[X],r,n,X);if(c){const X=K(c)?c.call(n):c;Reflect.ownKeys(X).forEach(V=>{Xl(V,X[V])})}f&&as(f,e,"c");function U(X,V){k(V)?V.forEach(He=>X(He.bind(n))):V&&X(V.bind(n))}if(U(Pl,h),U(xt,m),U(Nl,_),U(Fl,C),U(uc,I),U(fc,H),U(Vl,$),U(jl,A),U(Hl,F),U(Lo,D),U($n,y),U($l,L),k(w))if(w.length){const X=e.exposed||(e.exposed={});w.forEach(V=>{Object.defineProperty(X,V,{get:()=>n[V],set:He=>n[V]=He})})}else e.exposed||(e.exposed={});M&&e.render===xe&&(e.render=M),N!=null&&(e.inheritAttrs=N),T&&(e.components=T),G&&(e.directives=G)}function kl(e,t,n=xe){k(e)&&(e=gr(e));for(const r in e){const s=e[r];let o;Z(s)?"default"in s?o=wt(s.from||r,s.default,!0):o=wt(s.from||r):o=wt(s),de(o)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>o.value,set:i=>o.value=i}):t[r]=o}}function as(e,t,n){Se(k(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function Mo(e,t,n,r){const s=r.includes(".")?Wo(n,r):()=>n[r];if(oe(e)){const o=t[e];K(o)&&Ne(s,o)}else if(K(e))Ne(s,e.bind(n));else if(Z(e))if(k(e))e.forEach(o=>Mo(o,t,n,r));else{const o=K(e.handler)?e.handler.bind(n):t[e.handler];K(o)&&Ne(s,o,e)}}function jr(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:s,optionsCache:o,config:{optionMergeStrategies:i}}=e.appContext,l=o.get(t);let c;return l?c=l:!s.length&&!n&&!r?c=t:(c={},s.length&&s.forEach(a=>bn(c,a,i,!0)),bn(c,t,i)),Z(t)&&o.set(t,c),c}function bn(e,t,n,r=!1){const{mixins:s,extends:o}=t;o&&bn(e,o,n,!0),s&&s.forEach(i=>bn(e,i,n,!0));for(const i in t)if(!(r&&i==="expose")){const l=Kl[i]||n&&n[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const Kl={data:us,props:fs,emits:fs,methods:At,computed:At,beforeCreate:ge,created:ge,beforeMount:ge,mounted:ge,beforeUpdate:ge,updated:ge,beforeDestroy:ge,beforeUnmount:ge,destroyed:ge,unmounted:ge,activated:ge,deactivated:ge,errorCaptured:ge,serverPrefetch:ge,components:At,directives:At,watch:ql,provide:us,inject:Wl};function us(e,t){return t?e?function(){return le(K(e)?e.call(this,this):e,K(t)?t.call(this,this):t)}:t:e}function Wl(e,t){return At(gr(e),gr(t))}function gr(e){if(k(e)){const t={};for(let n=0;n1)return n&&K(t)?t.call(r&&r.proxy):t}}const No={},Fo=()=>Object.create(No),$o=e=>Object.getPrototypeOf(e)===No;function Yl(e,t,n,r=!1){const s={},o=Fo();e.propsDefaults=Object.create(null),Ho(e,t,s,o);for(const i in e.propsOptions[0])i in s||(s[i]=void 0);n?e.props=r?s:fl(s):e.type.props?e.props=s:e.props=o,e.attrs=o}function Jl(e,t,n,r){const{props:s,attrs:o,vnode:{patchFlag:i}}=e,l=J(s),[c]=e.propsOptions;let a=!1;if((r||i>0)&&!(i&16)){if(i&8){const f=e.vnode.dynamicProps;for(let h=0;h{c=!0;const[m,_]=jo(h,t,!0);le(i,m),_&&l.push(..._)};!n&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}if(!o&&!c)return Z(e)&&r.set(e,mt),mt;if(k(o))for(let f=0;f-1,_[1]=I<0||C-1||Y(_,"default"))&&l.push(h)}}}const a=[i,l];return Z(e)&&r.set(e,a),a}function ds(e){return e[0]!=="$"&&!_t(e)}function hs(e){return e===null?"null":typeof e=="function"?e.name||"":typeof e=="object"&&e.constructor&&e.constructor.name||""}function ps(e,t){return hs(e)===hs(t)}function gs(e,t){return k(t)?t.findIndex(n=>ps(n,e)):K(t)&&ps(t,e)?0:-1}const Vo=e=>e[0]==="_"||e==="$stable",Vr=e=>k(e)?e.map(Ae):[Ae(e)],Ql=(e,t,n)=>{if(t._n)return t;const r=Al((...s)=>Vr(t(...s)),n);return r._c=!1,r},Do=(e,t,n)=>{const r=e._ctx;for(const s in e){if(Vo(s))continue;const o=e[s];if(K(o))t[s]=Ql(s,o,r);else if(o!=null){const i=Vr(o);t[s]=()=>i}}},Uo=(e,t)=>{const n=Vr(t);e.slots.default=()=>n},Zl=(e,t)=>{const n=e.slots=Fo();if(e.vnode.shapeFlag&32){const r=t._;r?(le(n,t),eo(n,"_",r,!0)):Do(t,n)}else t&&Uo(e,t)},ec=(e,t,n)=>{const{vnode:r,slots:s}=e;let o=!0,i=te;if(r.shapeFlag&32){const l=t._;l?n&&l===1?o=!1:(le(s,t),!n&&l===1&&delete s._):(o=!t.$stable,Do(t,s)),i=t}else t&&(Uo(e,t),i={default:1});if(o)for(const l in s)!Vo(l)&&i[l]==null&&delete s[l]};function wn(e,t,n,r,s=!1){if(k(e)){e.forEach((m,_)=>wn(m,t&&(k(t)?t[_]:t),n,r,s));return}if(bt(r)&&!s)return;const o=r.shapeFlag&4?Vn(r.component):r.el,i=s?null:o,{i:l,r:c}=e,a=t&&t.r,f=l.refs===te?l.refs={}:l.refs,h=l.setupState;if(a!=null&&a!==c&&(oe(a)?(f[a]=null,Y(h,a)&&(h[a]=null)):de(a)&&(a.value=null)),K(c))Je(c,l,12,[i,f]);else{const m=oe(c),_=de(c);if(m||_){const C=()=>{if(e.f){const I=m?Y(h,c)?h[c]:f[c]:c.value;s?k(I)&&Cr(I,o):k(I)?I.includes(o)||I.push(o):m?(f[c]=[o],Y(h,c)&&(h[c]=f[c])):(c.value=[o],e.k&&(f[e.k]=c.value))}else m?(f[c]=i,Y(h,c)&&(h[c]=i)):_&&(c.value=i,e.k&&(f[e.k]=i))};i?(C.id=-1,ye(C,n)):C()}}}let ms=!1;const pt=()=>{ms||(console.error("Hydration completed but contains mismatches."),ms=!0)},tc=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",nc=e=>e.namespaceURI.includes("MathML"),tn=e=>{if(tc(e))return"svg";if(nc(e))return"mathml"},nn=e=>e.nodeType===8;function rc(e){const{mt:t,p:n,o:{patchProp:r,createText:s,nextSibling:o,parentNode:i,remove:l,insert:c,createComment:a}}=e,f=(p,y)=>{if(!y.hasChildNodes()){n(null,p,y),_n(),y._vnode=p;return}h(y.firstChild,p,null,null,null),_n(),y._vnode=p},h=(p,y,M,A,F,$=!1)=>{$=$||!!y.dynamicChildren;const L=nn(p)&&p.data==="[",w=()=>I(p,y,M,A,F,L),{type:N,ref:T,shapeFlag:G,patchFlag:ne}=y;let ce=p.nodeType;y.el=p,ne===-2&&($=!1,y.dynamicChildren=null);let U=null;switch(N){case Et:ce!==3?y.children===""?(c(y.el=s(""),i(p),p),U=p):U=w():(p.data!==y.children&&(pt(),p.data=y.children),U=o(p));break;case me:D(p)?(U=o(p),W(y.el=p.content.firstChild,p,M)):ce!==8||L?U=w():U=o(p);break;case Pt:if(L&&(p=o(p),ce=p.nodeType),ce===1||ce===3){U=p;const X=!y.children.length;for(let V=0;V{$=$||!!y.dynamicChildren;const{type:L,props:w,patchFlag:N,shapeFlag:T,dirs:G,transition:ne}=y,ce=L==="input"||L==="option";if(ce||N!==-1){G&&Me(y,null,M,"created");let U=!1;if(D(p)){U=ko(A,ne)&&M&&M.vnode.props&&M.vnode.props.appear;const V=p.content.firstChild;U&&ne.beforeEnter(V),W(V,p,M),y.el=p=V}if(T&16&&!(w&&(w.innerHTML||w.textContent))){let V=_(p.firstChild,y,p,M,A,F,$);for(;V;){pt();const He=V;V=V.nextSibling,l(He)}}else T&8&&p.textContent!==y.children&&(pt(),p.textContent=y.children);if(w)if(ce||!$||N&48)for(const V in w)(ce&&(V.endsWith("value")||V==="indeterminate")||kt(V)&&!_t(V)||V[0]===".")&&r(p,V,null,w[V],void 0,void 0,M);else w.onClick&&r(p,"onClick",null,w.onClick,void 0,void 0,M);let X;(X=w&&w.onVnodeBeforeMount)&&Ce(X,M,y),G&&Me(y,null,M,"beforeMount"),((X=w&&w.onVnodeMounted)||G||U)&&Oo(()=>{X&&Ce(X,M,y),U&&ne.enter(p),G&&Me(y,null,M,"mounted")},A)}return p.nextSibling},_=(p,y,M,A,F,$,L)=>{L=L||!!y.dynamicChildren;const w=y.children,N=w.length;for(let T=0;T{const{slotScopeIds:L}=y;L&&(F=F?F.concat(L):L);const w=i(p),N=_(o(p),y,w,M,A,F,$);return N&&nn(N)&&N.data==="]"?o(y.anchor=N):(pt(),c(y.anchor=a("]"),w,N),N)},I=(p,y,M,A,F,$)=>{if(pt(),y.el=null,$){const N=H(p);for(;;){const T=o(p);if(T&&T!==N)l(T);else break}}const L=o(p),w=i(p);return l(p),n(null,y,w,L,M,A,tn(w),F),L},H=(p,y="[",M="]")=>{let A=0;for(;p;)if(p=o(p),p&&nn(p)&&(p.data===y&&A++,p.data===M)){if(A===0)return o(p);A--}return p},W=(p,y,M)=>{const A=y.parentNode;A&&A.replaceChild(p,y);let F=M;for(;F;)F.vnode.el===y&&(F.vnode.el=F.subTree.el=p),F=F.parent},D=p=>p.nodeType===1&&p.tagName.toLowerCase()==="template";return[f,h]}const ye=Oo;function sc(e){return Bo(e)}function oc(e){return Bo(e,rc)}function Bo(e,t){const n=to();n.__VUE__=!0;const{insert:r,remove:s,patchProp:o,createElement:i,createText:l,createComment:c,setText:a,setElementText:f,parentNode:h,nextSibling:m,setScopeId:_=xe,insertStaticContent:C}=e,I=(u,d,g,v=null,b=null,S=null,O=void 0,x=null,R=!!d.dynamicChildren)=>{if(u===d)return;u&&!lt(u,d)&&(v=Xt(u),Le(u,b,S,!0),u=null),d.patchFlag===-2&&(R=!1,d.dynamicChildren=null);const{type:E,ref:P,shapeFlag:B}=d;switch(E){case Et:H(u,d,g,v);break;case me:W(u,d,g,v);break;case Pt:u==null&&D(d,g,v,O);break;case _e:T(u,d,g,v,b,S,O,x,R);break;default:B&1?M(u,d,g,v,b,S,O,x,R):B&6?G(u,d,g,v,b,S,O,x,R):(B&64||B&128)&&E.process(u,d,g,v,b,S,O,x,R,dt)}P!=null&&b&&wn(P,u&&u.ref,S,d||u,!d)},H=(u,d,g,v)=>{if(u==null)r(d.el=l(d.children),g,v);else{const b=d.el=u.el;d.children!==u.children&&a(b,d.children)}},W=(u,d,g,v)=>{u==null?r(d.el=c(d.children||""),g,v):d.el=u.el},D=(u,d,g,v)=>{[u.el,u.anchor]=C(u.children,d,g,v,u.el,u.anchor)},p=({el:u,anchor:d},g,v)=>{let b;for(;u&&u!==d;)b=m(u),r(u,g,v),u=b;r(d,g,v)},y=({el:u,anchor:d})=>{let g;for(;u&&u!==d;)g=m(u),s(u),u=g;s(d)},M=(u,d,g,v,b,S,O,x,R)=>{d.type==="svg"?O="svg":d.type==="math"&&(O="mathml"),u==null?A(d,g,v,b,S,O,x,R):L(u,d,b,S,O,x,R)},A=(u,d,g,v,b,S,O,x)=>{let R,E;const{props:P,shapeFlag:B,transition:j,dirs:q}=u;if(R=u.el=i(u.type,S,P&&P.is,P),B&8?f(R,u.children):B&16&&$(u.children,R,null,v,b,Gn(u,S),O,x),q&&Me(u,null,v,"created"),F(R,u,u.scopeId,O,v),P){for(const ee in P)ee!=="value"&&!_t(ee)&&o(R,ee,null,P[ee],S,u.children,v,b,je);"value"in P&&o(R,"value",null,P.value,S),(E=P.onVnodeBeforeMount)&&Ce(E,v,u)}q&&Me(u,null,v,"beforeMount");const z=ko(b,j);z&&j.beforeEnter(R),r(R,d,g),((E=P&&P.onVnodeMounted)||z||q)&&ye(()=>{E&&Ce(E,v,u),z&&j.enter(R),q&&Me(u,null,v,"mounted")},b)},F=(u,d,g,v,b)=>{if(g&&_(u,g),v)for(let S=0;S{for(let E=R;E{const x=d.el=u.el;let{patchFlag:R,dynamicChildren:E,dirs:P}=d;R|=u.patchFlag&16;const B=u.props||te,j=d.props||te;let q;if(g&&rt(g,!1),(q=j.onVnodeBeforeUpdate)&&Ce(q,g,d,u),P&&Me(d,u,g,"beforeUpdate"),g&&rt(g,!0),E?w(u.dynamicChildren,E,x,g,v,Gn(d,b),S):O||V(u,d,x,null,g,v,Gn(d,b),S,!1),R>0){if(R&16)N(x,d,B,j,g,v,b);else if(R&2&&B.class!==j.class&&o(x,"class",null,j.class,b),R&4&&o(x,"style",B.style,j.style,b),R&8){const z=d.dynamicProps;for(let ee=0;ee{q&&Ce(q,g,d,u),P&&Me(d,u,g,"updated")},v)},w=(u,d,g,v,b,S,O)=>{for(let x=0;x{if(g!==v){if(g!==te)for(const x in g)!_t(x)&&!(x in v)&&o(u,x,g[x],null,O,d.children,b,S,je);for(const x in v){if(_t(x))continue;const R=v[x],E=g[x];R!==E&&x!=="value"&&o(u,x,E,R,O,d.children,b,S,je)}"value"in v&&o(u,"value",g.value,v.value,O)}},T=(u,d,g,v,b,S,O,x,R)=>{const E=d.el=u?u.el:l(""),P=d.anchor=u?u.anchor:l("");let{patchFlag:B,dynamicChildren:j,slotScopeIds:q}=d;q&&(x=x?x.concat(q):q),u==null?(r(E,g,v),r(P,g,v),$(d.children||[],g,P,b,S,O,x,R)):B>0&&B&64&&j&&u.dynamicChildren?(w(u.dynamicChildren,j,g,b,S,O,x),(d.key!=null||b&&d===b.subTree)&&Dr(u,d,!0)):V(u,d,g,P,b,S,O,x,R)},G=(u,d,g,v,b,S,O,x,R)=>{d.slotScopeIds=x,u==null?d.shapeFlag&512?b.ctx.activate(d,g,v,O,R):ne(d,g,v,b,S,O,R):ce(u,d,R)},ne=(u,d,g,v,b,S,O)=>{const x=u.component=Sc(u,v,b);if(Wt(u)&&(x.ctx.renderer=dt),Tc(x),x.asyncDep){if(b&&b.registerDep(x,U,O),!u.el){const R=x.subTree=ie(me);W(null,R,d,g)}}else U(x,u,d,g,b,S,O)},ce=(u,d,g)=>{const v=d.component=u.component;if(Ll(u,d,g))if(v.asyncDep&&!v.asyncResolved){X(v,d,g);return}else v.next=d,Cl(v.update),v.effect.dirty=!0,v.update();else d.el=u.el,v.vnode=d},U=(u,d,g,v,b,S,O)=>{const x=()=>{if(u.isMounted){let{next:P,bu:B,u:j,parent:q,vnode:z}=u;{const ht=Ko(u);if(ht){P&&(P.el=z.el,X(u,P,O)),ht.asyncDep.then(()=>{u.isUnmounted||x()});return}}let ee=P,Q;rt(u,!1),P?(P.el=z.el,X(u,P,O)):P=z,B&&fn(B),(Q=P.props&&P.props.onVnodeBeforeUpdate)&&Ce(Q,q,P,z),rt(u,!0);const ae=Kn(u),Te=u.subTree;u.subTree=ae,I(Te,ae,h(Te.el),Xt(Te),u,b,S),P.el=ae.el,ee===null&&Il(u,ae.el),j&&ye(j,b),(Q=P.props&&P.props.onVnodeUpdated)&&ye(()=>Ce(Q,q,P,z),b)}else{let P;const{el:B,props:j}=d,{bm:q,m:z,parent:ee}=u,Q=bt(d);if(rt(u,!1),q&&fn(q),!Q&&(P=j&&j.onVnodeBeforeMount)&&Ce(P,ee,d),rt(u,!0),B&&Bn){const ae=()=>{u.subTree=Kn(u),Bn(B,u.subTree,u,b,null)};Q?d.type.__asyncLoader().then(()=>!u.isUnmounted&&ae()):ae()}else{const ae=u.subTree=Kn(u);I(null,ae,g,v,u,b,S),d.el=ae.el}if(z&&ye(z,b),!Q&&(P=j&&j.onVnodeMounted)){const ae=d;ye(()=>Ce(P,ee,ae),b)}(d.shapeFlag&256||ee&&bt(ee.vnode)&&ee.vnode.shapeFlag&256)&&u.a&&ye(u.a,b),u.isMounted=!0,d=g=v=null}},R=u.effect=new Ar(x,xe,()=>Mn(E),u.scope),E=u.update=()=>{R.dirty&&R.run()};E.id=u.uid,rt(u,!0),E()},X=(u,d,g)=>{d.component=u;const v=u.vnode.props;u.vnode=d,u.next=null,Jl(u,d.props,v,g),ec(u,d.children,g),tt(),os(u),Ue()},V=(u,d,g,v,b,S,O,x,R=!1)=>{const E=u&&u.children,P=u?u.shapeFlag:0,B=d.children,{patchFlag:j,shapeFlag:q}=d;if(j>0){if(j&128){zt(E,B,g,v,b,S,O,x,R);return}else if(j&256){He(E,B,g,v,b,S,O,x,R);return}}q&8?(P&16&&je(E,b,S),B!==E&&f(g,B)):P&16?q&16?zt(E,B,g,v,b,S,O,x,R):je(E,b,S,!0):(P&8&&f(g,""),q&16&&$(B,g,v,b,S,O,x,R))},He=(u,d,g,v,b,S,O,x,R)=>{u=u||mt,d=d||mt;const E=u.length,P=d.length,B=Math.min(E,P);let j;for(j=0;jP?je(u,b,S,!0,!1,B):$(d,g,v,b,S,O,x,R,B)},zt=(u,d,g,v,b,S,O,x,R)=>{let E=0;const P=d.length;let B=u.length-1,j=P-1;for(;E<=B&&E<=j;){const q=u[E],z=d[E]=R?ze(d[E]):Ae(d[E]);if(lt(q,z))I(q,z,g,null,b,S,O,x,R);else break;E++}for(;E<=B&&E<=j;){const q=u[B],z=d[j]=R?ze(d[j]):Ae(d[j]);if(lt(q,z))I(q,z,g,null,b,S,O,x,R);else break;B--,j--}if(E>B){if(E<=j){const q=j+1,z=qj)for(;E<=B;)Le(u[E],b,S,!0),E++;else{const q=E,z=E,ee=new Map;for(E=z;E<=j;E++){const be=d[E]=R?ze(d[E]):Ae(d[E]);be.key!=null&&ee.set(be.key,E)}let Q,ae=0;const Te=j-z+1;let ht=!1,zr=0;const St=new Array(Te);for(E=0;E=Te){Le(be,b,S,!0);continue}let Ie;if(be.key!=null)Ie=ee.get(be.key);else for(Q=z;Q<=j;Q++)if(St[Q-z]===0&<(be,d[Q])){Ie=Q;break}Ie===void 0?Le(be,b,S,!0):(St[Ie-z]=E+1,Ie>=zr?zr=Ie:ht=!0,I(be,d[Ie],g,null,b,S,O,x,R),ae++)}const Xr=ht?ic(St):mt;for(Q=Xr.length-1,E=Te-1;E>=0;E--){const be=z+E,Ie=d[be],Yr=be+1{const{el:S,type:O,transition:x,children:R,shapeFlag:E}=u;if(E&6){nt(u.component.subTree,d,g,v);return}if(E&128){u.suspense.move(d,g,v);return}if(E&64){O.move(u,d,g,dt);return}if(O===_e){r(S,d,g);for(let B=0;Bx.enter(S),b);else{const{leave:B,delayLeave:j,afterLeave:q}=x,z=()=>r(S,d,g),ee=()=>{B(S,()=>{z(),q&&q()})};j?j(S,z,ee):ee()}else r(S,d,g)},Le=(u,d,g,v=!1,b=!1)=>{const{type:S,props:O,ref:x,children:R,dynamicChildren:E,shapeFlag:P,patchFlag:B,dirs:j,memoIndex:q}=u;if(B===-2&&(b=!1),x!=null&&wn(x,null,g,u,!0),q!=null&&(d.renderCache[q]=void 0),P&256){d.ctx.deactivate(u);return}const z=P&1&&j,ee=!bt(u);let Q;if(ee&&(Q=O&&O.onVnodeBeforeUnmount)&&Ce(Q,d,u),P&6)Oi(u.component,g,v);else{if(P&128){u.suspense.unmount(g,v);return}z&&Me(u,null,d,"beforeUnmount"),P&64?u.type.remove(u,d,g,dt,v):E&&(S!==_e||B>0&&B&64)?je(E,d,g,!1,!0):(S===_e&&B&384||!b&&P&16)&&je(R,d,g),v&&qr(u)}(ee&&(Q=O&&O.onVnodeUnmounted)||z)&&ye(()=>{Q&&Ce(Q,d,u),z&&Me(u,null,d,"unmounted")},g)},qr=u=>{const{type:d,el:g,anchor:v,transition:b}=u;if(d===_e){Ri(g,v);return}if(d===Pt){y(u);return}const S=()=>{s(g),b&&!b.persisted&&b.afterLeave&&b.afterLeave()};if(u.shapeFlag&1&&b&&!b.persisted){const{leave:O,delayLeave:x}=b,R=()=>O(g,S);x?x(u.el,S,R):R()}else S()},Ri=(u,d)=>{let g;for(;u!==d;)g=m(u),s(u),u=g;s(d)},Oi=(u,d,g)=>{const{bum:v,scope:b,update:S,subTree:O,um:x,m:R,a:E}=u;ys(R),ys(E),v&&fn(v),b.stop(),S&&(S.active=!1,Le(O,u,d,g)),x&&ye(x,d),ye(()=>{u.isUnmounted=!0},d),d&&d.pendingBranch&&!d.isUnmounted&&u.asyncDep&&!u.asyncResolved&&u.suspenseId===d.pendingId&&(d.deps--,d.deps===0&&d.resolve())},je=(u,d,g,v=!1,b=!1,S=0)=>{for(let O=S;Ou.shapeFlag&6?Xt(u.component.subTree):u.shapeFlag&128?u.suspense.next():m(u.anchor||u.el);let Dn=!1;const Gr=(u,d,g)=>{u==null?d._vnode&&Le(d._vnode,null,null,!0):I(d._vnode||null,u,d,null,null,null,g),Dn||(Dn=!0,os(),_n(),Dn=!1),d._vnode=u},dt={p:I,um:Le,m:nt,r:qr,mt:ne,mc:$,pc:V,pbc:w,n:Xt,o:e};let Un,Bn;return t&&([Un,Bn]=t(dt)),{render:Gr,hydrate:Un,createApp:zl(Gr,Un)}}function Gn({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function rt({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function ko(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Dr(e,t,n=!1){const r=e.children,s=t.children;if(k(r)&&k(s))for(let o=0;o>1,e[n[l]]0&&(t[r]=n[o-1]),n[o]=r)}}for(o=n.length,i=n[o-1];o-- >0;)n[o]=i,i=t[i];return n}function Ko(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Ko(t)}function ys(e){if(e)for(let t=0;twt(lc);function Ur(e,t){return Hn(e,null,t)}function hu(e,t){return Hn(e,null,{flush:"post"})}const rn={};function Ne(e,t,n){return Hn(e,t,n)}function Hn(e,t,{immediate:n,deep:r,flush:s,once:o,onTrack:i,onTrigger:l}=te){if(t&&o){const A=t;t=(...F)=>{A(...F),M()}}const c=ue,a=A=>r===!0?A:Xe(A,r===!1?1:void 0);let f,h=!1,m=!1;if(de(e)?(f=()=>e.value,h=yn(e)):Rt(e)?(f=()=>a(e),h=!0):k(e)?(m=!0,h=e.some(A=>Rt(A)||yn(A)),f=()=>e.map(A=>{if(de(A))return A.value;if(Rt(A))return a(A);if(K(A))return Je(A,c,2)})):K(e)?t?f=()=>Je(e,c,2):f=()=>(_&&_(),Se(e,c,3,[C])):f=xe,t&&r){const A=f;f=()=>Xe(A())}let _,C=A=>{_=p.onStop=()=>{Je(A,c,4),_=p.onStop=void 0}},I;if(Gt)if(C=xe,t?n&&Se(t,c,3,[f(),m?[]:void 0,C]):f(),s==="sync"){const A=cc();I=A.__watcherHandles||(A.__watcherHandles=[])}else return xe;let H=m?new Array(e.length).fill(rn):rn;const W=()=>{if(!(!p.active||!p.dirty))if(t){const A=p.run();(r||h||(m?A.some((F,$)=>Qe(F,H[$])):Qe(A,H)))&&(_&&_(),Se(t,c,3,[A,H===rn?void 0:m&&H[0]===rn?[]:H,C]),H=A)}else p.run()};W.allowRecurse=!!t;let D;s==="sync"?D=W:s==="post"?D=()=>ye(W,c&&c.suspense):(W.pre=!0,c&&(W.id=c.uid),D=()=>Mn(W));const p=new Ar(f,xe,D),y=so(),M=()=>{p.stop(),y&&Cr(y.effects,p)};return t?n?W():H=p.run():s==="post"?ye(p.run.bind(p),c&&c.suspense):p.run(),I&&I.push(M),M}function ac(e,t,n){const r=this.proxy,s=oe(e)?e.includes(".")?Wo(r,e):()=>r[e]:e.bind(r,r);let o;K(t)?o=t:(o=t.handler,n=t);const i=qt(this),l=Hn(s,o.bind(r),n);return i(),l}function Wo(e,t){const n=t.split(".");return()=>{let r=e;for(let s=0;s{Xe(r,t,n)});else if(Zs(e)){for(const r in e)Xe(e[r],t,n);for(const r of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,r)&&Xe(e[r],t,n)}return e}const Wt=e=>e.type.__isKeepAlive;function uc(e,t){qo(e,"a",t)}function fc(e,t){qo(e,"da",t)}function qo(e,t,n=ue){const r=e.__wdc||(e.__wdc=()=>{let s=n;for(;s;){if(s.isDeactivated)return;s=s.parent}return e()});if(Fn(t,r,n),n){let s=n.parent;for(;s&&s.parent;)Wt(s.parent.vnode)&&dc(r,t,n,s),s=s.parent}}function dc(e,t,n,r){const s=Fn(t,e,r,!0);$n(()=>{Cr(r[t],s)},n)}const Ge=Symbol("_leaveCb"),sn=Symbol("_enterCb");function hc(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return xt(()=>{e.isMounted=!0}),Lo(()=>{e.isUnmounting=!0}),e}const Ee=[Function,Array],Go={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Ee,onEnter:Ee,onAfterEnter:Ee,onEnterCancelled:Ee,onBeforeLeave:Ee,onLeave:Ee,onAfterLeave:Ee,onLeaveCancelled:Ee,onBeforeAppear:Ee,onAppear:Ee,onAfterAppear:Ee,onAppearCancelled:Ee},zo=e=>{const t=e.subTree;return t.component?zo(t.component):t},pc={name:"BaseTransition",props:Go,setup(e,{slots:t}){const n=jn(),r=hc();return()=>{const s=t.default&&Yo(t.default(),!0);if(!s||!s.length)return;let o=s[0];if(s.length>1){for(const m of s)if(m.type!==me){o=m;break}}const i=J(e),{mode:l}=i;if(r.isLeaving)return zn(o);const c=_s(o);if(!c)return zn(o);let a=yr(c,i,r,n,m=>a=m);En(c,a);const f=n.subTree,h=f&&_s(f);if(h&&h.type!==me&&!lt(c,h)&&zo(n).type!==me){const m=yr(h,i,r,n);if(En(h,m),l==="out-in"&&c.type!==me)return r.isLeaving=!0,m.afterLeave=()=>{r.isLeaving=!1,n.update.active!==!1&&(n.effect.dirty=!0,n.update())},zn(o);l==="in-out"&&c.type!==me&&(m.delayLeave=(_,C,I)=>{const H=Xo(r,h);H[String(h.key)]=h,_[Ge]=()=>{C(),_[Ge]=void 0,delete a.delayedLeave},a.delayedLeave=I})}return o}}},gc=pc;function Xo(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function yr(e,t,n,r,s){const{appear:o,mode:i,persisted:l=!1,onBeforeEnter:c,onEnter:a,onAfterEnter:f,onEnterCancelled:h,onBeforeLeave:m,onLeave:_,onAfterLeave:C,onLeaveCancelled:I,onBeforeAppear:H,onAppear:W,onAfterAppear:D,onAppearCancelled:p}=t,y=String(e.key),M=Xo(n,e),A=(L,w)=>{L&&Se(L,r,9,w)},F=(L,w)=>{const N=w[1];A(L,w),k(L)?L.every(T=>T.length<=1)&&N():L.length<=1&&N()},$={mode:i,persisted:l,beforeEnter(L){let w=c;if(!n.isMounted)if(o)w=H||c;else return;L[Ge]&&L[Ge](!0);const N=M[y];N&<(e,N)&&N.el[Ge]&&N.el[Ge](),A(w,[L])},enter(L){let w=a,N=f,T=h;if(!n.isMounted)if(o)w=W||a,N=D||f,T=p||h;else return;let G=!1;const ne=L[sn]=ce=>{G||(G=!0,ce?A(T,[L]):A(N,[L]),$.delayedLeave&&$.delayedLeave(),L[sn]=void 0)};w?F(w,[L,ne]):ne()},leave(L,w){const N=String(e.key);if(L[sn]&&L[sn](!0),n.isUnmounting)return w();A(m,[L]);let T=!1;const G=L[Ge]=ne=>{T||(T=!0,w(),ne?A(I,[L]):A(C,[L]),L[Ge]=void 0,M[N]===e&&delete M[N])};M[N]=e,_?F(_,[L,G]):G()},clone(L){const w=yr(L,t,n,r,s);return s&&s(w),w}};return $}function zn(e){if(Wt(e))return e=Ze(e),e.children=null,e}function _s(e){if(!Wt(e))return e;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&K(n.default))return n.default()}}function En(e,t){e.shapeFlag&6&&e.component?En(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Yo(e,t=!1,n){let r=[],s=0;for(let o=0;o1)for(let o=0;oe.__isTeleport,Mt=e=>e&&(e.disabled||e.disabled===""),vs=e=>typeof SVGElement<"u"&&e instanceof SVGElement,bs=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,_r=(e,t)=>{const n=e&&e.to;return oe(n)?t?t(n):null:n},yc={name:"Teleport",__isTeleport:!0,process(e,t,n,r,s,o,i,l,c,a){const{mc:f,pc:h,pbc:m,o:{insert:_,querySelector:C,createText:I,createComment:H}}=a,W=Mt(t.props);let{shapeFlag:D,children:p,dynamicChildren:y}=t;if(e==null){const M=t.el=I(""),A=t.anchor=I("");_(M,n,r),_(A,n,r);const F=t.target=_r(t.props,C),$=t.targetAnchor=I("");F&&(_($,F),i==="svg"||vs(F)?i="svg":(i==="mathml"||bs(F))&&(i="mathml"));const L=(w,N)=>{D&16&&f(p,w,N,s,o,i,l,c)};W?L(n,A):F&&L(F,$)}else{t.el=e.el;const M=t.anchor=e.anchor,A=t.target=e.target,F=t.targetAnchor=e.targetAnchor,$=Mt(e.props),L=$?n:A,w=$?M:F;if(i==="svg"||vs(A)?i="svg":(i==="mathml"||bs(A))&&(i="mathml"),y?(m(e.dynamicChildren,y,L,s,o,i,l),Dr(e,t,!0)):c||h(e,t,L,w,s,o,i,l,!1),W)$?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):on(t,n,M,a,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const N=t.target=_r(t.props,C);N&&on(t,N,null,a,0)}else $&&on(t,A,F,a,1)}Jo(t)},remove(e,t,n,{um:r,o:{remove:s}},o){const{shapeFlag:i,children:l,anchor:c,targetAnchor:a,target:f,props:h}=e;if(f&&s(a),o&&s(c),i&16){const m=o||!Mt(h);for(let _=0;_0?Re||mt:null,vc(),Dt>0&&Re&&Re.push(e),e}function gu(e,t,n,r,s,o){return Zo(ni(e,t,n,r,s,o,!0))}function ei(e,t,n,r,s){return Zo(ie(e,t,n,r,s,!0))}function Cn(e){return e?e.__v_isVNode===!0:!1}function lt(e,t){return e.type===t.type&&e.key===t.key}const ti=({key:e})=>e??null,hn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?oe(e)||de(e)||K(e)?{i:fe,r:e,k:t,f:!!n}:e:null);function ni(e,t=null,n=null,r=0,s=null,o=e===_e?0:1,i=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&ti(t),ref:t&&hn(t),scopeId:Nn,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:r,dynamicProps:s,dynamicChildren:null,appContext:null,ctx:fe};return l?(Br(c,n),o&128&&e.normalize(c)):n&&(c.shapeFlag|=oe(n)?8:16),Dt>0&&!i&&Re&&(c.patchFlag>0||o&6)&&c.patchFlag!==32&&Re.push(c),c}const ie=bc;function bc(e,t=null,n=null,r=0,s=null,o=!1){if((!e||e===Ao)&&(e=me),Cn(e)){const l=Ze(e,t,!0);return n&&Br(l,n),Dt>0&&!o&&Re&&(l.shapeFlag&6?Re[Re.indexOf(e)]=l:Re.push(l)),l.patchFlag=-2,l}if(Lc(e)&&(e=e.__vccOpts),t){t=wc(t);let{class:l,style:c}=t;l&&!oe(l)&&(t.class=Tr(l)),Z(c)&&(yo(c)&&!k(c)&&(c=le({},c)),t.style=Sr(c))}const i=oe(e)?1:Ml(e)?128:mc(e)?64:Z(e)?4:K(e)?2:0;return ni(e,t,n,r,s,i,o,!0)}function wc(e){return e?yo(e)||$o(e)?le({},e):e:null}function Ze(e,t,n=!1,r=!1){const{props:s,ref:o,patchFlag:i,children:l,transition:c}=e,a=t?Ec(s||{},t):s,f={__v_isVNode:!0,__v_skip:!0,type:e.type,props:a,key:a&&ti(a),ref:t&&t.ref?n&&o?k(o)?o.concat(hn(t)):[o,hn(t)]:hn(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==_e?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Ze(e.ssContent),ssFallback:e.ssFallback&&Ze(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&r&&En(f,c.clone(f)),f}function ri(e=" ",t=0){return ie(Et,null,e,t)}function mu(e,t){const n=ie(Pt,null,e);return n.staticCount=t,n}function yu(e="",t=!1){return t?(Qo(),ei(me,null,e)):ie(me,null,e)}function Ae(e){return e==null||typeof e=="boolean"?ie(me):k(e)?ie(_e,null,e.slice()):typeof e=="object"?ze(e):ie(Et,null,String(e))}function ze(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Ze(e)}function Br(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(k(t))n=16;else if(typeof t=="object")if(r&65){const s=t.default;s&&(s._c&&(s._d=!1),Br(e,s()),s._c&&(s._d=!0));return}else{n=32;const s=t._;!s&&!$o(t)?t._ctx=fe:s===3&&fe&&(fe.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else K(t)?(t={default:t,_ctx:fe},n=32):(t=String(t),r&64?(n=16,t=[ri(t)]):n=8);e.children=t,e.shapeFlag|=n}function Ec(...e){const t={};for(let n=0;nue||fe;let xn,vr;{const e=to(),t=(n,r)=>{let s;return(s=e[n])||(s=e[n]=[]),s.push(r),o=>{s.length>1?s.forEach(i=>i(o)):s[0](o)}};xn=t("__VUE_INSTANCE_SETTERS__",n=>ue=n),vr=t("__VUE_SSR_SETTERS__",n=>Gt=n)}const qt=e=>{const t=ue;return xn(e),e.scope.on(),()=>{e.scope.off(),xn(t)}},Es=()=>{ue&&ue.scope.off(),xn(null)};function si(e){return e.vnode.shapeFlag&4}let Gt=!1;function Tc(e,t=!1){t&&vr(t);const{props:n,children:r}=e.vnode,s=si(e);Yl(e,n,s,t),Zl(e,r);const o=s?Ac(e,t):void 0;return t&&vr(!1),o}function Ac(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Dl);const{setup:r}=n;if(r){const s=e.setupContext=r.length>1?ii(e):null,o=qt(e);tt();const i=Je(r,e,0,[e.props,s]);if(Ue(),o(),Js(i)){if(i.then(Es,Es),t)return i.then(l=>{Cs(e,l,t)}).catch(l=>{Kt(l,e,0)});e.asyncDep=i}else Cs(e,i,t)}else oi(e,t)}function Cs(e,t,n){K(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Z(t)&&(e.setupState=wo(t)),oi(e,n)}let xs;function oi(e,t,n){const r=e.type;if(!e.render){if(!t&&xs&&!r.render){const s=r.template||jr(e).template;if(s){const{isCustomElement:o,compilerOptions:i}=e.appContext.config,{delimiters:l,compilerOptions:c}=r,a=le(le({isCustomElement:o,delimiters:l},i),c);r.render=xs(s,a)}}e.render=r.render||xe}{const s=qt(e);tt();try{Bl(e)}finally{Ue(),s()}}}const Rc={get(e,t){return ve(e,"get",""),e[t]}};function ii(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,Rc),slots:e.slots,emit:e.emit,expose:t}}function Vn(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(wo(dn(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Lt)return Lt[n](e)},has(t,n){return n in t||n in Lt}})):e.proxy}function Oc(e,t=!0){return K(e)?e.displayName||e.name:e.name||t&&e.__name}function Lc(e){return K(e)&&"__vccOpts"in e}const re=(e,t)=>dl(e,t,Gt);function br(e,t,n){const r=arguments.length;return r===2?Z(t)&&!k(t)?Cn(t)?ie(e,null,[t]):ie(e,t):ie(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&Cn(n)&&(n=[n]),ie(e,t,n))}const Ic="3.4.30";/** -* @vue/runtime-dom v3.4.30 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/const Mc="http://www.w3.org/2000/svg",Pc="http://www.w3.org/1998/Math/MathML",Ve=typeof document<"u"?document:null,Ss=Ve&&Ve.createElement("template"),Nc={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const s=t==="svg"?Ve.createElementNS(Mc,e):t==="mathml"?Ve.createElementNS(Pc,e):n?Ve.createElement(e,{is:n}):Ve.createElement(e);return e==="select"&&r&&r.multiple!=null&&s.setAttribute("multiple",r.multiple),s},createText:e=>Ve.createTextNode(e),createComment:e=>Ve.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Ve.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,s,o){const i=n?n.previousSibling:t.lastChild;if(s&&(s===o||s.nextSibling))for(;t.insertBefore(s.cloneNode(!0),n),!(s===o||!(s=s.nextSibling)););else{Ss.innerHTML=r==="svg"?`${e}`:r==="mathml"?`${e}`:e;const l=Ss.content;if(r==="svg"||r==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Ke="transition",Tt="animation",Ut=Symbol("_vtc"),li=(e,{slots:t})=>br(gc,Fc(e),t);li.displayName="Transition";const ci={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String};li.props=le({},Go,ci);const st=(e,t=[])=>{k(e)?e.forEach(n=>n(...t)):e&&e(...t)},Ts=e=>e?k(e)?e.some(t=>t.length>1):e.length>1:!1;function Fc(e){const t={};for(const T in e)T in ci||(t[T]=e[T]);if(e.css===!1)return t;const{name:n="v",type:r,duration:s,enterFromClass:o=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:c=o,appearActiveClass:a=i,appearToClass:f=l,leaveFromClass:h=`${n}-leave-from`,leaveActiveClass:m=`${n}-leave-active`,leaveToClass:_=`${n}-leave-to`}=e,C=$c(s),I=C&&C[0],H=C&&C[1],{onBeforeEnter:W,onEnter:D,onEnterCancelled:p,onLeave:y,onLeaveCancelled:M,onBeforeAppear:A=W,onAppear:F=D,onAppearCancelled:$=p}=t,L=(T,G,ne)=>{ot(T,G?f:l),ot(T,G?a:i),ne&&ne()},w=(T,G)=>{T._isLeaving=!1,ot(T,h),ot(T,_),ot(T,m),G&&G()},N=T=>(G,ne)=>{const ce=T?F:D,U=()=>L(G,T,ne);st(ce,[G,U]),As(()=>{ot(G,T?c:o),We(G,T?f:l),Ts(ce)||Rs(G,r,I,U)})};return le(t,{onBeforeEnter(T){st(W,[T]),We(T,o),We(T,i)},onBeforeAppear(T){st(A,[T]),We(T,c),We(T,a)},onEnter:N(!1),onAppear:N(!0),onLeave(T,G){T._isLeaving=!0;const ne=()=>w(T,G);We(T,h),We(T,m),Vc(),As(()=>{T._isLeaving&&(ot(T,h),We(T,_),Ts(y)||Rs(T,r,H,ne))}),st(y,[T,ne])},onEnterCancelled(T){L(T,!1),st(p,[T])},onAppearCancelled(T){L(T,!0),st($,[T])},onLeaveCancelled(T){w(T),st(M,[T])}})}function $c(e){if(e==null)return null;if(Z(e))return[Xn(e.enter),Xn(e.leave)];{const t=Xn(e);return[t,t]}}function Xn(e){return Fi(e)}function We(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[Ut]||(e[Ut]=new Set)).add(t)}function ot(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const n=e[Ut];n&&(n.delete(t),n.size||(e[Ut]=void 0))}function As(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Hc=0;function Rs(e,t,n,r){const s=e._endId=++Hc,o=()=>{s===e._endId&&r()};if(n)return setTimeout(o,n);const{type:i,timeout:l,propCount:c}=jc(e,t);if(!i)return r();const a=i+"end";let f=0;const h=()=>{e.removeEventListener(a,m),o()},m=_=>{_.target===e&&++f>=c&&h()};setTimeout(()=>{f(n[C]||"").split(", "),s=r(`${Ke}Delay`),o=r(`${Ke}Duration`),i=Os(s,o),l=r(`${Tt}Delay`),c=r(`${Tt}Duration`),a=Os(l,c);let f=null,h=0,m=0;t===Ke?i>0&&(f=Ke,h=i,m=o.length):t===Tt?a>0&&(f=Tt,h=a,m=c.length):(h=Math.max(i,a),f=h>0?i>a?Ke:Tt:null,m=f?f===Ke?o.length:c.length:0);const _=f===Ke&&/\b(transform|all)(,|$)/.test(r(`${Ke}Property`).toString());return{type:f,timeout:h,propCount:m,hasTransform:_}}function Os(e,t){for(;e.lengthLs(n)+Ls(e[r])))}function Ls(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function Vc(){return document.body.offsetHeight}function Dc(e,t,n){const r=e[Ut];r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Is=Symbol("_vod"),Uc=Symbol("_vsh"),Bc=Symbol(""),kc=/(^|;)\s*display\s*:/;function Kc(e,t,n){const r=e.style,s=oe(n);let o=!1;if(n&&!s){if(t)if(oe(t))for(const i of t.split(";")){const l=i.slice(0,i.indexOf(":")).trim();n[l]==null&&pn(r,l,"")}else for(const i in t)n[i]==null&&pn(r,i,"");for(const i in n)i==="display"&&(o=!0),pn(r,i,n[i])}else if(s){if(t!==n){const i=r[Bc];i&&(n+=";"+i),r.cssText=n,o=kc.test(n)}}else t&&e.removeAttribute("style");Is in e&&(e[Is]=o?r.display:"",e[Uc]&&(r.display="none"))}const Ms=/\s*!important$/;function pn(e,t,n){if(k(n))n.forEach(r=>pn(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=Wc(e,t);Ms.test(n)?e.setProperty(ft(r),n.replace(Ms,""),"important"):e[r]=n}}const Ps=["Webkit","Moz","ms"],Yn={};function Wc(e,t){const n=Yn[t];if(n)return n;let r=$e(t);if(r!=="filter"&&r in e)return Yn[t]=r;r=An(r);for(let s=0;sJn||(Yc.then(()=>Jn=0),Jn=Date.now());function Qc(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;Se(Zc(r,n.value),t,5,[r])};return n.value=e,n.attached=Jc(),n}function Zc(e,t){if(k(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(r=>s=>!s._stopped&&r&&r(s))}else return t}const js=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,ea=(e,t,n,r,s,o,i,l,c)=>{const a=s==="svg";t==="class"?Dc(e,r,a):t==="style"?Kc(e,n,r):kt(t)?Er(t)||zc(e,t,n,r,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):ta(e,t,r,a))?(qc(e,t,r,o,i,l,c),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Fs(e,t,r,a,i,t!=="value")):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),Fs(e,t,r,a))};function ta(e,t,n,r){if(r)return!!(t==="innerHTML"||t==="textContent"||t in e&&js(t)&&K(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const s=e.tagName;if(s==="IMG"||s==="VIDEO"||s==="CANVAS"||s==="SOURCE")return!1}return js(t)&&oe(n)?!1:t in e}const Vs=e=>{const t=e.props["onUpdate:modelValue"]||!1;return k(t)?n=>fn(t,n):t};function na(e){e.target.composing=!0}function Ds(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Qn=Symbol("_assign"),_u={created(e,{modifiers:{lazy:t,trim:n,number:r}},s){e[Qn]=Vs(s);const o=r||s.props&&s.props.type==="number";gt(e,t?"change":"input",i=>{if(i.target.composing)return;let l=e.value;n&&(l=l.trim()),o&&(l=cr(l)),e[Qn](l)}),n&>(e,"change",()=>{e.value=e.value.trim()}),t||(gt(e,"compositionstart",na),gt(e,"compositionend",Ds),gt(e,"change",Ds))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:r,trim:s,number:o}},i){if(e[Qn]=Vs(i),e.composing)return;const l=(o||e.type==="number")&&!/^0\d/.test(e.value)?cr(e.value):e.value,c=t??"";l!==c&&(document.activeElement===e&&e.type!=="range"&&(r&&t===n||s&&e.value.trim()===c)||(e.value=c))}},ra=["ctrl","shift","alt","meta"],sa={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>ra.some(n=>e[`${n}Key`]&&!t.includes(n))},vu=(e,t)=>{const n=e._withMods||(e._withMods={}),r=t.join(".");return n[r]||(n[r]=(s,...o)=>{for(let i=0;i{const n=e._withKeys||(e._withKeys={}),r=t.join(".");return n[r]||(n[r]=s=>{if(!("key"in s))return;const o=ft(s.key);if(t.some(i=>i===o||oa[i]===o))return e(s)})},ai=le({patchProp:ea},Nc);let Ft,Us=!1;function ia(){return Ft||(Ft=sc(ai))}function la(){return Ft=Us?Ft:oc(ai),Us=!0,Ft}const wu=(...e)=>{const t=ia().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=fi(r);if(!s)return;const o=t._component;!K(o)&&!o.render&&!o.template&&(o.template=s.innerHTML),s.innerHTML="";const i=n(s,!1,ui(s));return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),i},t},Eu=(...e)=>{const t=la().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=fi(r);if(s)return n(s,!0,ui(s))},t};function ui(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function fi(e){return oe(e)?document.querySelector(e):e}const Cu=(e,t)=>{const n=e.__vccOpts||e;for(const[r,s]of t)n[r]=s;return n},ca="modulepreload",aa=function(e){return"/dev/"+e},Bs={},xu=function(t,n,r){let s=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const o=document.querySelector("meta[property=csp-nonce]"),i=(o==null?void 0:o.nonce)||(o==null?void 0:o.getAttribute("nonce"));s=Promise.all(n.map(l=>{if(l=aa(l),l in Bs)return;Bs[l]=!0;const c=l.endsWith(".css"),a=c?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${l}"]${a}`))return;const f=document.createElement("link");if(f.rel=c?"stylesheet":ca,c||(f.as="script",f.crossOrigin=""),f.href=l,i&&f.setAttribute("nonce",i),document.head.appendChild(f),c)return new Promise((h,m)=>{f.addEventListener("load",h),f.addEventListener("error",()=>m(new Error(`Unable to preload CSS for ${l}`)))})}))}return s.then(()=>t()).catch(o=>{const i=new Event("vite:preloadError",{cancelable:!0});if(i.payload=o,window.dispatchEvent(i),!i.defaultPrevented)throw o})},ua=window.__VP_SITE_DATA__;function kr(e){return so()?(Ki(e),!0):!1}function Fe(e){return typeof e=="function"?e():bo(e)}const di=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const fa=Object.prototype.toString,da=e=>fa.call(e)==="[object Object]",Bt=()=>{},ks=ha();function ha(){var e,t;return di&&((e=window==null?void 0:window.navigator)==null?void 0:e.userAgent)&&(/iP(?:ad|hone|od)/.test(window.navigator.userAgent)||((t=window==null?void 0:window.navigator)==null?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test(window==null?void 0:window.navigator.userAgent))}function pa(e,t){function n(...r){return new Promise((s,o)=>{Promise.resolve(e(()=>t.apply(this,r),{fn:t,thisArg:this,args:r})).then(s).catch(o)})}return n}const hi=e=>e();function ga(e,t={}){let n,r,s=Bt;const o=l=>{clearTimeout(l),s(),s=Bt};return l=>{const c=Fe(e),a=Fe(t.maxWait);return n&&o(n),c<=0||a!==void 0&&a<=0?(r&&(o(r),r=null),Promise.resolve(l())):new Promise((f,h)=>{s=t.rejectOnCancel?h:f,a&&!r&&(r=setTimeout(()=>{n&&o(n),r=null,f(l())},a)),n=setTimeout(()=>{r&&o(r),r=null,f(l())},c)})}}function ma(e=hi){const t=se(!0);function n(){t.value=!1}function r(){t.value=!0}const s=(...o)=>{t.value&&e(...o)};return{isActive:Ln(t),pause:n,resume:r,eventFilter:s}}function ya(e){return jn()}function pi(...e){if(e.length!==1)return vl(...e);const t=e[0];return typeof t=="function"?Ln(ml(()=>({get:t,set:Bt}))):se(t)}function gi(e,t,n={}){const{eventFilter:r=hi,...s}=n;return Ne(e,pa(r,t),s)}function _a(e,t,n={}){const{eventFilter:r,...s}=n,{eventFilter:o,pause:i,resume:l,isActive:c}=ma(r);return{stop:gi(e,t,{...s,eventFilter:o}),pause:i,resume:l,isActive:c}}function Kr(e,t=!0,n){ya()?xt(e,n):t?e():In(e)}function Su(e,t,n={}){const{debounce:r=0,maxWait:s=void 0,...o}=n;return gi(e,t,{...o,eventFilter:ga(r,{maxWait:s})})}function Tu(e,t,n){let r;de(n)?r={evaluating:n}:r={};const{lazy:s=!1,evaluating:o=void 0,shallow:i=!0,onError:l=Bt}=r,c=se(!s),a=i?Fr(t):se(t);let f=0;return Ur(async h=>{if(!c.value)return;f++;const m=f;let _=!1;o&&Promise.resolve().then(()=>{o.value=!0});try{const C=await e(I=>{h(()=>{o&&(o.value=!1),_||I()})});m===f&&(a.value=C)}catch(C){l(C)}finally{o&&m===f&&(o.value=!1),_=!0}}),s?re(()=>(c.value=!0,a.value)):a}function mi(e){var t;const n=Fe(e);return(t=n==null?void 0:n.$el)!=null?t:n}const Oe=di?window:void 0;function Ct(...e){let t,n,r,s;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,r,s]=e,t=Oe):[t,n,r,s]=e,!t)return Bt;Array.isArray(n)||(n=[n]),Array.isArray(r)||(r=[r]);const o=[],i=()=>{o.forEach(f=>f()),o.length=0},l=(f,h,m,_)=>(f.addEventListener(h,m,_),()=>f.removeEventListener(h,m,_)),c=Ne(()=>[mi(t),Fe(s)],([f,h])=>{if(i(),!f)return;const m=da(h)?{...h}:h;o.push(...n.flatMap(_=>r.map(C=>l(f,_,C,m))))},{immediate:!0,flush:"post"}),a=()=>{c(),i()};return kr(a),a}function va(e){return typeof e=="function"?e:typeof e=="string"?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function Au(...e){let t,n,r={};e.length===3?(t=e[0],n=e[1],r=e[2]):e.length===2?typeof e[1]=="object"?(t=!0,n=e[0],r=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);const{target:s=Oe,eventName:o="keydown",passive:i=!1,dedupe:l=!1}=r,c=va(t);return Ct(s,o,f=>{f.repeat&&Fe(l)||c(f)&&n(f)},i)}function ba(){const e=se(!1),t=jn();return t&&xt(()=>{e.value=!0},t),e}function wa(e){const t=ba();return re(()=>(t.value,!!e()))}function yi(e,t={}){const{window:n=Oe}=t,r=wa(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let s;const o=se(!1),i=a=>{o.value=a.matches},l=()=>{s&&("removeEventListener"in s?s.removeEventListener("change",i):s.removeListener(i))},c=Ur(()=>{r.value&&(l(),s=n.matchMedia(Fe(e)),"addEventListener"in s?s.addEventListener("change",i):s.addListener(i),o.value=s.matches)});return kr(()=>{c(),l(),s=void 0}),o}const ln=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},cn="__vueuse_ssr_handlers__",Ea=Ca();function Ca(){return cn in ln||(ln[cn]=ln[cn]||{}),ln[cn]}function _i(e,t){return Ea[e]||t}function xa(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const Sa={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},Ks="vueuse-storage";function Wr(e,t,n,r={}){var s;const{flush:o="pre",deep:i=!0,listenToStorageChanges:l=!0,writeDefaults:c=!0,mergeDefaults:a=!1,shallow:f,window:h=Oe,eventFilter:m,onError:_=w=>{console.error(w)},initOnMounted:C}=r,I=(f?Fr:se)(typeof t=="function"?t():t);if(!n)try{n=_i("getDefaultStorage",()=>{var w;return(w=Oe)==null?void 0:w.localStorage})()}catch(w){_(w)}if(!n)return I;const H=Fe(t),W=xa(H),D=(s=r.serializer)!=null?s:Sa[W],{pause:p,resume:y}=_a(I,()=>A(I.value),{flush:o,deep:i,eventFilter:m});h&&l&&Kr(()=>{Ct(h,"storage",$),Ct(h,Ks,L),C&&$()}),C||$();function M(w,N){h&&h.dispatchEvent(new CustomEvent(Ks,{detail:{key:e,oldValue:w,newValue:N,storageArea:n}}))}function A(w){try{const N=n.getItem(e);if(w==null)M(N,null),n.removeItem(e);else{const T=D.write(w);N!==T&&(n.setItem(e,T),M(N,T))}}catch(N){_(N)}}function F(w){const N=w?w.newValue:n.getItem(e);if(N==null)return c&&H!=null&&n.setItem(e,D.write(H)),H;if(!w&&a){const T=D.read(N);return typeof a=="function"?a(T,H):W==="object"&&!Array.isArray(T)?{...H,...T}:T}else return typeof N!="string"?N:D.read(N)}function $(w){if(!(w&&w.storageArea!==n)){if(w&&w.key==null){I.value=H;return}if(!(w&&w.key!==e)){p();try{(w==null?void 0:w.newValue)!==D.write(I.value)&&(I.value=F(w))}catch(N){_(N)}finally{w?In(y):y()}}}}function L(w){$(w.detail)}return I}function vi(e){return yi("(prefers-color-scheme: dark)",e)}function Ta(e={}){const{selector:t="html",attribute:n="class",initialValue:r="auto",window:s=Oe,storage:o,storageKey:i="vueuse-color-scheme",listenToStorageChanges:l=!0,storageRef:c,emitAuto:a,disableTransition:f=!0}=e,h={auto:"",light:"light",dark:"dark",...e.modes||{}},m=vi({window:s}),_=re(()=>m.value?"dark":"light"),C=c||(i==null?pi(r):Wr(i,r,o,{window:s,listenToStorageChanges:l})),I=re(()=>C.value==="auto"?_.value:C.value),H=_i("updateHTMLAttrs",(y,M,A)=>{const F=typeof y=="string"?s==null?void 0:s.document.querySelector(y):mi(y);if(!F)return;let $;if(f&&($=s.document.createElement("style"),$.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),s.document.head.appendChild($)),M==="class"){const L=A.split(/\s/g);Object.values(h).flatMap(w=>(w||"").split(/\s/g)).filter(Boolean).forEach(w=>{L.includes(w)?F.classList.add(w):F.classList.remove(w)})}else F.setAttribute(M,A);f&&(s.getComputedStyle($).opacity,document.head.removeChild($))});function W(y){var M;H(t,n,(M=h[y])!=null?M:y)}function D(y){e.onChanged?e.onChanged(y,W):W(y)}Ne(I,D,{flush:"post",immediate:!0}),Kr(()=>D(I.value));const p=re({get(){return a?C.value:I.value},set(y){C.value=y}});try{return Object.assign(p,{store:C,system:_,state:I})}catch{return p}}function Aa(e={}){const{valueDark:t="dark",valueLight:n="",window:r=Oe}=e,s=Ta({...e,onChanged:(l,c)=>{var a;e.onChanged?(a=e.onChanged)==null||a.call(e,l==="dark",c,l):c(l)},modes:{dark:t,light:n}}),o=re(()=>s.system?s.system.value:vi({window:r}).value?"dark":"light");return re({get(){return s.value==="dark"},set(l){const c=l?"dark":"light";o.value===c?s.value="auto":s.value=c}})}function Zn(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function Ru(e,t,n={}){const{window:r=Oe}=n;return Wr(e,t,r==null?void 0:r.localStorage,n)}function bi(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth1?!0:(t.preventDefault&&t.preventDefault(),!1)}const er=new WeakMap;function Ou(e,t=!1){const n=se(t);let r=null,s="";Ne(pi(e),l=>{const c=Zn(Fe(l));if(c){const a=c;if(er.get(a)||er.set(a,a.style.overflow),a.style.overflow!=="hidden"&&(s=a.style.overflow),a.style.overflow==="hidden")return n.value=!0;if(n.value)return a.style.overflow="hidden"}},{immediate:!0});const o=()=>{const l=Zn(Fe(e));!l||n.value||(ks&&(r=Ct(l,"touchmove",c=>{Ra(c)},{passive:!1})),l.style.overflow="hidden",n.value=!0)},i=()=>{const l=Zn(Fe(e));!l||!n.value||(ks&&(r==null||r()),l.style.overflow=s,er.delete(l),n.value=!1)};return kr(i),re({get(){return n.value},set(l){l?o():i()}})}function Lu(e,t,n={}){const{window:r=Oe}=n;return Wr(e,t,r==null?void 0:r.sessionStorage,n)}function Iu(e={}){const{window:t=Oe,behavior:n="auto"}=e;if(!t)return{x:se(0),y:se(0)};const r=se(t.scrollX),s=se(t.scrollY),o=re({get(){return r.value},set(l){scrollTo({left:l,behavior:n})}}),i=re({get(){return s.value},set(l){scrollTo({top:l,behavior:n})}});return Ct(t,"scroll",()=>{r.value=t.scrollX,s.value=t.scrollY},{capture:!1,passive:!0}),{x:o,y:i}}function Mu(e={}){const{window:t=Oe,initialWidth:n=Number.POSITIVE_INFINITY,initialHeight:r=Number.POSITIVE_INFINITY,listenOrientation:s=!0,includeScrollbar:o=!0}=e,i=se(n),l=se(r),c=()=>{t&&(o?(i.value=t.innerWidth,l.value=t.innerHeight):(i.value=t.document.documentElement.clientWidth,l.value=t.document.documentElement.clientHeight))};if(c(),Kr(c),Ct("resize",c,{passive:!0}),s){const a=yi("(orientation: portrait)");Ne(a,()=>c())}return{width:i,height:l}}var tr={BASE_URL:"/dev/",MODE:"production",DEV:!1,PROD:!0,SSR:!1},nr={};const wi=/^(?:[a-z]+:|\/\/)/i,Oa="vitepress-theme-appearance",La=/#.*$/,Ia=/[?#].*$/,Ma=/(?:(^|\/)index)?\.(?:md|html)$/,he=typeof document<"u",Ei={relativePath:"404.md",filePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{sidebar:!1,layout:"page"},lastUpdated:0,isNotFound:!0};function Pa(e,t,n=!1){if(t===void 0)return!1;if(e=Ws(`/${e}`),n)return new RegExp(t).test(e);if(Ws(t)!==e)return!1;const r=t.match(La);return r?(he?location.hash:"")===r[0]:!0}function Ws(e){return decodeURI(e).replace(Ia,"").replace(Ma,"$1")}function Na(e){return wi.test(e)}function Fa(e,t){return Object.keys((e==null?void 0:e.locales)||{}).find(n=>n!=="root"&&!Na(n)&&Pa(t,`/${n}/`,!0))||"root"}function $a(e,t){var r,s,o,i,l,c,a;const n=Fa(e,t);return Object.assign({},e,{localeIndex:n,lang:((r=e.locales[n])==null?void 0:r.lang)??e.lang,dir:((s=e.locales[n])==null?void 0:s.dir)??e.dir,title:((o=e.locales[n])==null?void 0:o.title)??e.title,titleTemplate:((i=e.locales[n])==null?void 0:i.titleTemplate)??e.titleTemplate,description:((l=e.locales[n])==null?void 0:l.description)??e.description,head:xi(e.head,((c=e.locales[n])==null?void 0:c.head)??[]),themeConfig:{...e.themeConfig,...(a=e.locales[n])==null?void 0:a.themeConfig}})}function Ci(e,t){const n=t.title||e.title,r=t.titleTemplate??e.titleTemplate;if(typeof r=="string"&&r.includes(":title"))return r.replace(/:title/g,n);const s=Ha(e.title,r);return n===s.slice(3)?n:`${n}${s}`}function Ha(e,t){return t===!1?"":t===!0||t===void 0?` | ${e}`:e===t?"":` | ${t}`}function ja(e,t){const[n,r]=t;if(n!=="meta")return!1;const s=Object.entries(r)[0];return s==null?!1:e.some(([o,i])=>o===n&&i[s[0]]===s[1])}function xi(e,t){return[...e.filter(n=>!ja(t,n)),...t]}const Va=/[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g,Da=/^[a-z]:/i;function qs(e){const t=Da.exec(e),n=t?t[0]:"";return n+e.slice(n.length).replace(Va,"_").replace(/(^|\/)_+(?=[^/]*$)/,"$1")}const rr=new Set;function Ua(e){if(rr.size===0){const n=typeof process=="object"&&(nr==null?void 0:nr.VITE_EXTRA_EXTENSIONS)||(tr==null?void 0:tr.VITE_EXTRA_EXTENSIONS)||"";("3g2,3gp,aac,ai,apng,au,avif,bin,bmp,cer,class,conf,crl,css,csv,dll,doc,eps,epub,exe,gif,gz,ics,ief,jar,jpe,jpeg,jpg,js,json,jsonld,m4a,man,mid,midi,mjs,mov,mp2,mp3,mp4,mpe,mpeg,mpg,mpp,oga,ogg,ogv,ogx,opus,otf,p10,p7c,p7m,p7s,pdf,png,ps,qt,roff,rtf,rtx,ser,svg,t,tif,tiff,tr,ts,tsv,ttf,txt,vtt,wav,weba,webm,webp,woff,woff2,xhtml,xml,yaml,yml,zip"+(n&&typeof n=="string"?","+n:"")).split(",").forEach(r=>rr.add(r))}const t=e.split(".").pop();return t==null||!rr.has(t.toLowerCase())}function Pu(e){return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}const Ba=Symbol(),ut=Fr(ua);function Nu(e){const t=re(()=>$a(ut.value,e.data.relativePath)),n=t.value.appearance,r=n==="force-dark"?se(!0):n?Aa({storageKey:Oa,initialValue:()=>typeof n=="string"?n:"auto",...typeof n=="object"?n:{}}):se(!1),s=se(he?location.hash:"");return he&&window.addEventListener("hashchange",()=>{s.value=location.hash}),Ne(()=>e.data,()=>{s.value=he?location.hash:""}),{site:t,theme:re(()=>t.value.themeConfig),page:re(()=>e.data),frontmatter:re(()=>e.data.frontmatter),params:re(()=>e.data.params),lang:re(()=>t.value.lang),dir:re(()=>e.data.frontmatter.dir||t.value.dir),localeIndex:re(()=>t.value.localeIndex||"root"),title:re(()=>Ci(t.value,e.data)),description:re(()=>e.data.description||t.value.description),isDark:r,hash:re(()=>s.value)}}function ka(){const e=wt(Ba);if(!e)throw new Error("vitepress data not properly injected in app");return e}function Ka(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function Gs(e){return wi.test(e)||!e.startsWith("/")?e:Ka(ut.value.base,e)}function Wa(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t=t.replace(/\/$/,"/index"),he){const n="/dev/";t=qs(t.slice(n.length).replace(/\//g,"_")||"index")+".md";let r=__VP_HASH_MAP__[t.toLowerCase()];if(r||(t=t.endsWith("_index.md")?t.slice(0,-9)+".md":t.slice(0,-3)+"_index.md",r=__VP_HASH_MAP__[t.toLowerCase()]),!r)return null;t=`${n}assets/${t}.${r}.js`}else t=`./${qs(t.slice(1).replace(/\//g,"_"))}.md.js`;return t}let gn=[];function Fu(e){gn.push(e),$n(()=>{gn=gn.filter(t=>t!==e)})}function qa(){let e=ut.value.scrollOffset,t=0,n=24;if(typeof e=="object"&&"padding"in e&&(n=e.padding,e=e.selector),typeof e=="number")t=e;else if(typeof e=="string")t=zs(e,n);else if(Array.isArray(e))for(const r of e){const s=zs(r,n);if(s){t=s;break}}return t}function zs(e,t){const n=document.querySelector(e);if(!n)return 0;const r=n.getBoundingClientRect().bottom;return r<0?0:r+t}const Ga=Symbol(),Si="http://a.com",za=()=>({path:"/",component:null,data:Ei});function $u(e,t){const n=On(za()),r={route:n,go:s};async function s(l=he?location.href:"/"){var c,a;l=sr(l),await((c=r.onBeforeRouteChange)==null?void 0:c.call(r,l))!==!1&&(he&&l!==sr(location.href)&&(history.replaceState({scrollPosition:window.scrollY},""),history.pushState({},"",l)),await i(l),await((a=r.onAfterRouteChanged)==null?void 0:a.call(r,l)))}let o=null;async function i(l,c=0,a=!1){var m;if(await((m=r.onBeforePageLoad)==null?void 0:m.call(r,l))===!1)return;const f=new URL(l,Si),h=o=f.pathname;try{let _=await e(h);if(!_)throw new Error(`Page not found: ${h}`);if(o===h){o=null;const{default:C,__pageData:I}=_;if(!C)throw new Error(`Invalid route component: ${C}`);n.path=he?h:Gs(h),n.component=dn(C),n.data=dn(I),he&&In(()=>{let H=ut.value.base+I.relativePath.replace(/(?:(^|\/)index)?\.md$/,"$1");if(!ut.value.cleanUrls&&!H.endsWith("/")&&(H+=".html"),H!==f.pathname&&(f.pathname=H,l=H+f.search+f.hash,history.replaceState({},"",l)),f.hash&&!c){let W=null;try{W=document.getElementById(decodeURIComponent(f.hash).slice(1))}catch(D){console.warn(D)}if(W){Xs(W,f.hash);return}}window.scrollTo(0,c)})}}catch(_){if(!/fetch|Page not found/.test(_.message)&&!/^\/404(\.html|\/)?$/.test(l)&&console.error(_),!a)try{const C=await fetch(ut.value.base+"hashmap.json");window.__VP_HASH_MAP__=await C.json(),await i(l,c,!0);return}catch{}if(o===h){o=null,n.path=he?h:Gs(h),n.component=t?dn(t):null;const C=he?h.replace(/(^|\/)$/,"$1index").replace(/(\.html)?$/,".md").replace(/^\//,""):"404.md";n.data={...Ei,relativePath:C}}}}return he&&(history.state===null&&history.replaceState({},""),window.addEventListener("click",l=>{if(l.target.closest("button"))return;const a=l.target.closest("a");if(a&&!a.closest(".vp-raw")&&(a instanceof SVGElement||!a.download)){const{target:f}=a,{href:h,origin:m,pathname:_,hash:C,search:I}=new URL(a.href instanceof SVGAnimatedString?a.href.animVal:a.href,a.baseURI),H=new URL(location.href);!l.ctrlKey&&!l.shiftKey&&!l.altKey&&!l.metaKey&&!f&&m===H.origin&&Ua(_)&&(l.preventDefault(),_===H.pathname&&I===H.search?(C!==H.hash&&(history.pushState({},"",h),window.dispatchEvent(new HashChangeEvent("hashchange",{oldURL:H.href,newURL:h}))),C?Xs(a,C,a.classList.contains("header-anchor")):window.scrollTo(0,0)):s(h))}},{capture:!0}),window.addEventListener("popstate",async l=>{var c;l.state!==null&&(await i(sr(location.href),l.state&&l.state.scrollPosition||0),(c=r.onAfterRouteChanged)==null||c.call(r,location.href))}),window.addEventListener("hashchange",l=>{l.preventDefault()})),r}function Xa(){const e=wt(Ga);if(!e)throw new Error("useRouter() is called without provider.");return e}function Ti(){return Xa().route}function Xs(e,t,n=!1){let r=null;try{r=e.classList.contains("header-anchor")?e:document.getElementById(decodeURIComponent(t).slice(1))}catch(s){console.warn(s)}if(r){let s=function(){!n||Math.abs(i-window.scrollY)>window.innerHeight?window.scrollTo(0,i):window.scrollTo({left:0,top:i,behavior:"smooth"})};const o=parseInt(window.getComputedStyle(r).paddingTop,10),i=window.scrollY+r.getBoundingClientRect().top-qa()+o;requestAnimationFrame(s)}}function sr(e){const t=new URL(e,Si);return t.pathname=t.pathname.replace(/(^|\/)index(\.html)?$/,"$1"),ut.value.cleanUrls?t.pathname=t.pathname.replace(/\.html$/,""):!t.pathname.endsWith("/")&&!t.pathname.endsWith(".html")&&(t.pathname+=".html"),t.pathname+t.search+t.hash}const or=()=>gn.forEach(e=>e()),Hu=Hr({name:"VitePressContent",props:{as:{type:[Object,String],default:"div"}},setup(e){const t=Ti(),{site:n}=ka();return()=>br(e.as,n.value.contentProps??{style:{position:"relative"}},[t.component?br(t.component,{onVnodeMounted:or,onVnodeUpdated:or,onVnodeUnmounted:or}):"404 Page Not Found"])}}),ju=Hr({setup(e,{slots:t}){const n=se(!1);return xt(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}});function Vu(){he&&window.addEventListener("click",e=>{var n;const t=e.target;if(t.matches(".vp-code-group input")){const r=(n=t.parentElement)==null?void 0:n.parentElement;if(!r)return;const s=Array.from(r.querySelectorAll("input")).indexOf(t);if(s<0)return;const o=r.querySelector(".blocks");if(!o)return;const i=Array.from(o.children).find(a=>a.classList.contains("active"));if(!i)return;const l=o.children[s];if(!l||i===l)return;i.classList.remove("active"),l.classList.add("active");const c=r==null?void 0:r.querySelector(`label[for="${t.id}"]`);c==null||c.scrollIntoView({block:"nearest"})}})}function Du(){if(he){const e=new WeakMap;window.addEventListener("click",t=>{var r;const n=t.target;if(n.matches('div[class*="language-"] > button.copy')){const s=n.parentElement,o=(r=n.nextElementSibling)==null?void 0:r.nextElementSibling;if(!s||!o)return;const i=/language-(shellscript|shell|bash|sh|zsh)/.test(s.className),l=[".vp-copy-ignore",".diff.remove"],c=o.cloneNode(!0);c.querySelectorAll(l.join(",")).forEach(f=>f.remove());let a=c.textContent||"";i&&(a=a.replace(/^ *(\$|>) /gm,"").trim()),Ya(a).then(()=>{n.classList.add("copied"),clearTimeout(e.get(n));const f=setTimeout(()=>{n.classList.remove("copied"),n.blur(),e.delete(n)},2e3);e.set(n,f)})}})}}async function Ya(e){try{return navigator.clipboard.writeText(e)}catch{const t=document.createElement("textarea"),n=document.activeElement;t.value=e,t.setAttribute("readonly",""),t.style.contain="strict",t.style.position="absolute",t.style.left="-9999px",t.style.fontSize="12pt";const r=document.getSelection(),s=r?r.rangeCount>0&&r.getRangeAt(0):null;document.body.appendChild(t),t.select(),t.selectionStart=0,t.selectionEnd=e.length,document.execCommand("copy"),document.body.removeChild(t),s&&(r.removeAllRanges(),r.addRange(s)),n&&n.focus()}}function Uu(e,t){let n=!0,r=[];const s=o=>{if(n){n=!1,o.forEach(l=>{const c=ir(l);for(const a of document.head.children)if(a.isEqualNode(c)){r.push(a);return}});return}const i=o.map(ir);r.forEach((l,c)=>{const a=i.findIndex(f=>f==null?void 0:f.isEqualNode(l??null));a!==-1?delete i[a]:(l==null||l.remove(),delete r[c])}),i.forEach(l=>l&&document.head.appendChild(l)),r=[...r,...i].filter(Boolean)};Ur(()=>{const o=e.data,i=t.value,l=o&&o.description,c=o&&o.frontmatter.head||[],a=Ci(i,o);a!==document.title&&(document.title=a);const f=l||i.description;let h=document.querySelector("meta[name=description]");h?h.getAttribute("content")!==f&&h.setAttribute("content",f):ir(["meta",{name:"description",content:f}]),s(xi(i.head,Qa(c)))})}function ir([e,t,n]){const r=document.createElement(e);for(const s in t)r.setAttribute(s,t[s]);return n&&(r.innerHTML=n),e==="script"&&!t.async&&(r.async=!1),r}function Ja(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function Qa(e){return e.filter(t=>!Ja(t))}const lr=new Set,Ai=()=>document.createElement("link"),Za=e=>{const t=Ai();t.rel="prefetch",t.href=e,document.head.appendChild(t)},eu=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let an;const tu=he&&(an=Ai())&&an.relList&&an.relList.supports&&an.relList.supports("prefetch")?Za:eu;function Bu(){if(!he||!window.IntersectionObserver)return;let e;if((e=navigator.connection)&&(e.saveData||/2g/.test(e.effectiveType)))return;const t=window.requestIdleCallback||setTimeout;let n=null;const r=()=>{n&&n.disconnect(),n=new IntersectionObserver(o=>{o.forEach(i=>{if(i.isIntersecting){const l=i.target;n.unobserve(l);const{pathname:c}=l;if(!lr.has(c)){lr.add(c);const a=Wa(c);a&&tu(a)}}})}),t(()=>{document.querySelectorAll("#app a").forEach(o=>{const{hostname:i,pathname:l}=new URL(o.href instanceof SVGAnimatedString?o.href.animVal:o.href,o.baseURI),c=l.match(/\.\w+$/);c&&c[0]!==".html"||o.target!=="_blank"&&i===location.hostname&&(l!==location.pathname?n.observe(o):lr.add(l))})})};xt(r);const s=Ti();Ne(()=>s.path,r),$n(()=>{n&&n.disconnect()})}export{bu as $,hu as A,Fl as B,qa as C,ou as D,cu as E,_e as F,Fr as G,Fu as H,ie as I,iu as J,wi as K,Ti as L,Ec as M,wt as N,Mu as O,Sr as P,Au as Q,In as R,Iu as S,li as T,he as U,Ln as V,au as W,xu as X,Ou as Y,Xl as Z,Cu as _,ri as a,fu as a0,vu as a1,du as a2,On as a3,vl as a4,br as a5,mu as a6,Uu as a7,Ga as a8,Nu as a9,Ba as aa,Hu as ab,ju as ac,ut as ad,Eu as ae,$u as af,Wa as ag,Bu as ah,Du as ai,Vu as aj,mi as ak,kr as al,Tu as am,Lu as an,Ru as ao,Su as ap,Xa as aq,Ct as ar,Lo as as,lu as at,_u as au,de as av,pu as aw,dn as ax,wu as ay,Pu as az,ei as b,gu as c,Hr as d,yu as e,Ua as f,Gs as g,re as h,Na as i,ni as j,bo as k,su as l,Pa as m,Tr as n,Qo as o,ru as p,yi as q,uu as r,se as s,nu as t,ka as u,Ne as v,Al as w,Ur as x,xt as y,$n as z}; diff --git a/dev/assets/chunks/theme.AgFVpptx.js b/dev/assets/chunks/theme.AgFVpptx.js deleted file mode 100644 index a9abbaf..0000000 --- a/dev/assets/chunks/theme.AgFVpptx.js +++ /dev/null @@ -1,2 +0,0 @@ -const __vite__fileDeps=["assets/chunks/VPLocalSearchBox.B8T5L0wy.js","assets/chunks/framework.U9t3ZutP.js"],__vite__mapDeps=i=>i.map(i=>__vite__fileDeps[i]); -import{d as _,o as a,c as u,r as c,n as N,a as F,t as w,b as y,w as p,e as f,T as pe,_ as $,u as Je,i as Ye,f as Xe,g as he,h as g,j as v,k as i,p as B,l as H,m as z,q as le,s as I,v as O,x as ee,y as K,z as fe,A as Le,B as Qe,C as Ze,D as R,F as M,E,G as Te,H as te,I as k,J as W,K as we,L as se,M as Q,N as J,O as xe,P as Ie,Q as ce,R as Ne,S as Me,U as oe,V as et,W as tt,X as st,Y as Ae,Z as _e,$ as ot,a0 as nt,a1 as at,a2 as Ce,a3 as rt,a4 as it,a5 as lt}from"./framework.U9t3ZutP.js";const ct=_({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(s){return(e,t)=>(a(),u("span",{class:N(["VPBadge",e.type])},[c(e.$slots,"default",{},()=>[F(w(e.text),1)])],2))}}),ut={key:0,class:"VPBackdrop"},dt=_({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(s){return(e,t)=>(a(),y(pe,{name:"fade"},{default:p(()=>[e.show?(a(),u("div",ut)):f("",!0)]),_:1}))}}),vt=$(dt,[["__scopeId","data-v-b06cdb19"]]),L=Je;function pt(s,e){let t,o=!1;return()=>{t&&clearTimeout(t),o?t=setTimeout(s,e):(s(),(o=!0)&&setTimeout(()=>o=!1,e))}}function ue(s){return/^\//.test(s)?s:`/${s}`}function me(s){const{pathname:e,search:t,hash:o,protocol:n}=new URL(s,"http://a.com");if(Ye(s)||s.startsWith("#")||!n.startsWith("http")||!Xe(e))return s;const{site:r}=L(),l=e.endsWith("/")||e.endsWith(".html")?s:s.replace(/(?:(^\.+)\/)?.*$/,`$1${e.replace(/(\.md)?$/,r.value.cleanUrls?"":".html")}${t}${o}`);return he(l)}function X({correspondingLink:s=!1}={}){const{site:e,localeIndex:t,page:o,theme:n,hash:r}=L(),l=g(()=>{var d,m;return{label:(d=e.value.locales[t.value])==null?void 0:d.label,link:((m=e.value.locales[t.value])==null?void 0:m.link)||(t.value==="root"?"/":`/${t.value}/`)}});return{localeLinks:g(()=>Object.entries(e.value.locales).flatMap(([d,m])=>l.value.label===m.label?[]:{text:m.label,link:ht(m.link||(d==="root"?"/":`/${d}/`),n.value.i18nRouting!==!1&&s,o.value.relativePath.slice(l.value.link.length-1),!e.value.cleanUrls)+r.value})),currentLang:l}}function ht(s,e,t,o){return e?s.replace(/\/$/,"")+ue(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,o?".html":"")):s}const ft=s=>(B("data-v-951cab6c"),s=s(),H(),s),_t={class:"NotFound"},mt={class:"code"},bt={class:"title"},kt=ft(()=>v("div",{class:"divider"},null,-1)),$t={class:"quote"},gt={class:"action"},yt=["href","aria-label"],Pt=_({__name:"NotFound",setup(s){const{theme:e}=L(),{currentLang:t}=X();return(o,n)=>{var r,l,h,d,m;return a(),u("div",_t,[v("p",mt,w(((r=i(e).notFound)==null?void 0:r.code)??"404"),1),v("h1",bt,w(((l=i(e).notFound)==null?void 0:l.title)??"PAGE NOT FOUND"),1),kt,v("blockquote",$t,w(((h=i(e).notFound)==null?void 0:h.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),v("div",gt,[v("a",{class:"link",href:i(he)(i(t).link),"aria-label":((d=i(e).notFound)==null?void 0:d.linkLabel)??"go to home"},w(((m=i(e).notFound)==null?void 0:m.linkText)??"Take me home"),9,yt)])])}}}),St=$(Pt,[["__scopeId","data-v-951cab6c"]]);function Be(s,e){if(Array.isArray(s))return Z(s);if(s==null)return[];e=ue(e);const t=Object.keys(s).sort((n,r)=>r.split("/").length-n.split("/").length).find(n=>e.startsWith(ue(n))),o=t?s[t]:[];return Array.isArray(o)?Z(o):Z(o.items,o.base)}function Vt(s){const e=[];let t=0;for(const o in s){const n=s[o];if(n.items){t=e.push(n);continue}e[t]||e.push({items:[]}),e[t].items.push(n)}return e}function Lt(s){const e=[];function t(o){for(const n of o)n.text&&n.link&&e.push({text:n.text,link:n.link,docFooterText:n.docFooterText}),n.items&&t(n.items)}return t(s),e}function de(s,e){return Array.isArray(e)?e.some(t=>de(s,t)):z(s,e.link)?!0:e.items?de(s,e.items):!1}function Z(s,e){return[...s].map(t=>{const o={...t},n=o.base||e;return n&&o.link&&(o.link=n+o.link),o.items&&(o.items=Z(o.items,n)),o})}function U(){const{frontmatter:s,page:e,theme:t}=L(),o=le("(min-width: 960px)"),n=I(!1),r=g(()=>{const C=t.value.sidebar,T=e.value.relativePath;return C?Be(C,T):[]}),l=I(r.value);O(r,(C,T)=>{JSON.stringify(C)!==JSON.stringify(T)&&(l.value=r.value)});const h=g(()=>s.value.sidebar!==!1&&l.value.length>0&&s.value.layout!=="home"),d=g(()=>m?s.value.aside==null?t.value.aside==="left":s.value.aside==="left":!1),m=g(()=>s.value.layout==="home"?!1:s.value.aside!=null?!!s.value.aside:t.value.aside!==!1),V=g(()=>h.value&&o.value),b=g(()=>h.value?Vt(l.value):[]);function P(){n.value=!0}function S(){n.value=!1}function A(){n.value?S():P()}return{isOpen:n,sidebar:l,sidebarGroups:b,hasSidebar:h,hasAside:m,leftAside:d,isSidebarEnabled:V,open:P,close:S,toggle:A}}function Tt(s,e){let t;ee(()=>{t=s.value?document.activeElement:void 0}),K(()=>{window.addEventListener("keyup",o)}),fe(()=>{window.removeEventListener("keyup",o)});function o(n){n.key==="Escape"&&s.value&&(e(),t==null||t.focus())}}function wt(s){const{page:e,hash:t}=L(),o=I(!1),n=g(()=>s.value.collapsed!=null),r=g(()=>!!s.value.link),l=I(!1),h=()=>{l.value=z(e.value.relativePath,s.value.link)};O([e,s,t],h),K(h);const d=g(()=>l.value?!0:s.value.items?de(e.value.relativePath,s.value.items):!1),m=g(()=>!!(s.value.items&&s.value.items.length));ee(()=>{o.value=!!(n.value&&s.value.collapsed)}),Le(()=>{(l.value||d.value)&&(o.value=!1)});function V(){n.value&&(o.value=!o.value)}return{collapsed:o,collapsible:n,isLink:r,isActiveLink:l,hasActiveLink:d,hasChildren:m,toggle:V}}function It(){const{hasSidebar:s}=U(),e=le("(min-width: 960px)"),t=le("(min-width: 1280px)");return{isAsideEnabled:g(()=>!t.value&&!e.value?!1:s.value?t.value:e.value)}}const ve=[];function He(s){return typeof s.outline=="object"&&!Array.isArray(s.outline)&&s.outline.label||s.outlineTitle||"On this page"}function be(s){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const o=Number(t.tagName[1]);return{element:t,title:Nt(t),link:"#"+t.id,level:o}});return Mt(e,s)}function Nt(s){let e="";for(const t of s.childNodes)if(t.nodeType===1){if(t.classList.contains("VPBadge")||t.classList.contains("header-anchor")||t.classList.contains("ignore-header"))continue;e+=t.textContent}else t.nodeType===3&&(e+=t.textContent);return e.trim()}function Mt(s,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[o,n]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;s=s.filter(l=>l.level>=o&&l.level<=n),ve.length=0;for(const{element:l,link:h}of s)ve.push({element:l,link:h});const r=[];e:for(let l=0;l=0;d--){const m=s[d];if(m.level{requestAnimationFrame(r),window.addEventListener("scroll",o)}),Qe(()=>{l(location.hash)}),fe(()=>{window.removeEventListener("scroll",o)});function r(){if(!t.value)return;const h=window.scrollY,d=window.innerHeight,m=document.body.offsetHeight,V=Math.abs(h+d-m)<1,b=ve.map(({element:S,link:A})=>({link:A,top:Ct(S)})).filter(({top:S})=>!Number.isNaN(S)).sort((S,A)=>S.top-A.top);if(!b.length){l(null);return}if(h<1){l(null);return}if(V){l(b[b.length-1].link);return}let P=null;for(const{link:S,top:A}of b){if(A>h+Ze()+4)break;P=S}l(P)}function l(h){n&&n.classList.remove("active"),h==null?n=null:n=s.value.querySelector(`a[href="${decodeURIComponent(h)}"]`);const d=n;d?(d.classList.add("active"),e.value.style.top=d.offsetTop+39+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function Ct(s){let e=0;for(;s!==document.body;){if(s===null)return NaN;e+=s.offsetTop,s=s.offsetParent}return e}const Bt=["href","title"],Ht=_({__name:"VPDocOutlineItem",props:{headers:{},root:{type:Boolean}},setup(s){function e({target:t}){const o=t.href.split("#")[1],n=document.getElementById(decodeURIComponent(o));n==null||n.focus({preventScroll:!0})}return(t,o)=>{const n=R("VPDocOutlineItem",!0);return a(),u("ul",{class:N(["VPDocOutlineItem",t.root?"root":"nested"])},[(a(!0),u(M,null,E(t.headers,({children:r,link:l,title:h})=>(a(),u("li",null,[v("a",{class:"outline-link",href:l,onClick:e,title:h},w(h),9,Bt),r!=null&&r.length?(a(),y(n,{key:0,headers:r},null,8,["headers"])):f("",!0)]))),256))],2)}}}),Ee=$(Ht,[["__scopeId","data-v-3f927ebe"]]),Et={class:"content"},Dt={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},Ft=_({__name:"VPDocAsideOutline",setup(s){const{frontmatter:e,theme:t}=L(),o=Te([]);te(()=>{o.value=be(e.value.outline??t.value.outline)});const n=I(),r=I();return At(n,r),(l,h)=>(a(),u("nav",{"aria-labelledby":"doc-outline-aria-label",class:N(["VPDocAsideOutline",{"has-outline":o.value.length>0}]),ref_key:"container",ref:n},[v("div",Et,[v("div",{class:"outline-marker",ref_key:"marker",ref:r},null,512),v("div",Dt,w(i(He)(i(t))),1),k(Ee,{headers:o.value,root:!0},null,8,["headers"])])],2))}}),Ot=$(Ft,[["__scopeId","data-v-b38bf2ff"]]),Ut={class:"VPDocAsideCarbonAds"},jt=_({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(s){const e=()=>null;return(t,o)=>(a(),u("div",Ut,[k(i(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),Gt=s=>(B("data-v-6d7b3c46"),s=s(),H(),s),zt={class:"VPDocAside"},Kt=Gt(()=>v("div",{class:"spacer"},null,-1)),Rt=_({__name:"VPDocAside",setup(s){const{theme:e}=L();return(t,o)=>(a(),u("div",zt,[c(t.$slots,"aside-top",{},void 0,!0),c(t.$slots,"aside-outline-before",{},void 0,!0),k(Ot),c(t.$slots,"aside-outline-after",{},void 0,!0),Kt,c(t.$slots,"aside-ads-before",{},void 0,!0),i(e).carbonAds?(a(),y(jt,{key:0,"carbon-ads":i(e).carbonAds},null,8,["carbon-ads"])):f("",!0),c(t.$slots,"aside-ads-after",{},void 0,!0),c(t.$slots,"aside-bottom",{},void 0,!0)]))}}),qt=$(Rt,[["__scopeId","data-v-6d7b3c46"]]);function Wt(){const{theme:s,page:e}=L();return g(()=>{const{text:t="Edit this page",pattern:o=""}=s.value.editLink||{};let n;return typeof o=="function"?n=o(e.value):n=o.replace(/:path/g,e.value.filePath),{url:n,text:t}})}function Jt(){const{page:s,theme:e,frontmatter:t}=L();return g(()=>{var m,V,b,P,S,A,C,T;const o=Be(e.value.sidebar,s.value.relativePath),n=Lt(o),r=Yt(n,j=>j.link.replace(/[?#].*$/,"")),l=r.findIndex(j=>z(s.value.relativePath,j.link)),h=((m=e.value.docFooter)==null?void 0:m.prev)===!1&&!t.value.prev||t.value.prev===!1,d=((V=e.value.docFooter)==null?void 0:V.next)===!1&&!t.value.next||t.value.next===!1;return{prev:h?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??((b=r[l-1])==null?void 0:b.docFooterText)??((P=r[l-1])==null?void 0:P.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((S=r[l-1])==null?void 0:S.link)},next:d?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((A=r[l+1])==null?void 0:A.docFooterText)??((C=r[l+1])==null?void 0:C.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((T=r[l+1])==null?void 0:T.link)}}})}function Yt(s,e){const t=new Set;return s.filter(o=>{const n=e(o);return t.has(n)?!1:t.add(n)})}const D=_({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(s){const e=s,t=g(()=>e.tag??(e.href?"a":"span")),o=g(()=>e.href&&we.test(e.href)||e.target==="_blank");return(n,r)=>(a(),y(W(t.value),{class:N(["VPLink",{link:n.href,"vp-external-link-icon":o.value,"no-icon":n.noIcon}]),href:n.href?i(me)(n.href):void 0,target:n.target??(o.value?"_blank":void 0),rel:n.rel??(o.value?"noreferrer":void 0)},{default:p(()=>[c(n.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),Xt={class:"VPLastUpdated"},Qt=["datetime"],Zt=_({__name:"VPDocFooterLastUpdated",setup(s){const{theme:e,page:t,frontmatter:o,lang:n}=L(),r=g(()=>new Date(o.value.lastUpdated??t.value.lastUpdated)),l=g(()=>r.value.toISOString()),h=I("");return K(()=>{ee(()=>{var d,m,V;h.value=new Intl.DateTimeFormat((m=(d=e.value.lastUpdated)==null?void 0:d.formatOptions)!=null&&m.forceLocale?n.value:void 0,((V=e.value.lastUpdated)==null?void 0:V.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(r.value)})}),(d,m)=>{var V;return a(),u("p",Xt,[F(w(((V=i(e).lastUpdated)==null?void 0:V.text)||i(e).lastUpdatedText||"Last updated")+": ",1),v("time",{datetime:l.value},w(h.value),9,Qt)])}}}),xt=$(Zt,[["__scopeId","data-v-9da12f1d"]]),De=s=>(B("data-v-b88cabfa"),s=s(),H(),s),es={key:0,class:"VPDocFooter"},ts={key:0,class:"edit-info"},ss={key:0,class:"edit-link"},os=De(()=>v("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),ns={key:1,class:"last-updated"},as={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},rs=De(()=>v("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),is={class:"pager"},ls=["innerHTML"],cs=["innerHTML"],us={class:"pager"},ds=["innerHTML"],vs=["innerHTML"],ps=_({__name:"VPDocFooter",setup(s){const{theme:e,page:t,frontmatter:o}=L(),n=Wt(),r=Jt(),l=g(()=>e.value.editLink&&o.value.editLink!==!1),h=g(()=>t.value.lastUpdated&&o.value.lastUpdated!==!1),d=g(()=>l.value||h.value||r.value.prev||r.value.next);return(m,V)=>{var b,P,S,A;return d.value?(a(),u("footer",es,[c(m.$slots,"doc-footer-before",{},void 0,!0),l.value||h.value?(a(),u("div",ts,[l.value?(a(),u("div",ss,[k(D,{class:"edit-link-button",href:i(n).url,"no-icon":!0},{default:p(()=>[os,F(" "+w(i(n).text),1)]),_:1},8,["href"])])):f("",!0),h.value?(a(),u("div",ns,[k(xt)])):f("",!0)])):f("",!0),(b=i(r).prev)!=null&&b.link||(P=i(r).next)!=null&&P.link?(a(),u("nav",as,[rs,v("div",is,[(S=i(r).prev)!=null&&S.link?(a(),y(D,{key:0,class:"pager-link prev",href:i(r).prev.link},{default:p(()=>{var C;return[v("span",{class:"desc",innerHTML:((C=i(e).docFooter)==null?void 0:C.prev)||"Previous page"},null,8,ls),v("span",{class:"title",innerHTML:i(r).prev.text},null,8,cs)]}),_:1},8,["href"])):f("",!0)]),v("div",us,[(A=i(r).next)!=null&&A.link?(a(),y(D,{key:0,class:"pager-link next",href:i(r).next.link},{default:p(()=>{var C;return[v("span",{class:"desc",innerHTML:((C=i(e).docFooter)==null?void 0:C.next)||"Next page"},null,8,ds),v("span",{class:"title",innerHTML:i(r).next.text},null,8,vs)]}),_:1},8,["href"])):f("",!0)])])):f("",!0)])):f("",!0)}}}),hs=$(ps,[["__scopeId","data-v-b88cabfa"]]),fs=s=>(B("data-v-83890dd9"),s=s(),H(),s),_s={class:"container"},ms=fs(()=>v("div",{class:"aside-curtain"},null,-1)),bs={class:"aside-container"},ks={class:"aside-content"},$s={class:"content"},gs={class:"content-container"},ys={class:"main"},Ps=_({__name:"VPDoc",setup(s){const{theme:e}=L(),t=se(),{hasSidebar:o,hasAside:n,leftAside:r}=U(),l=g(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(h,d)=>{const m=R("Content");return a(),u("div",{class:N(["VPDoc",{"has-sidebar":i(o),"has-aside":i(n)}])},[c(h.$slots,"doc-top",{},void 0,!0),v("div",_s,[i(n)?(a(),u("div",{key:0,class:N(["aside",{"left-aside":i(r)}])},[ms,v("div",bs,[v("div",ks,[k(qt,null,{"aside-top":p(()=>[c(h.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":p(()=>[c(h.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":p(()=>[c(h.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":p(()=>[c(h.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":p(()=>[c(h.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":p(()=>[c(h.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):f("",!0),v("div",$s,[v("div",gs,[c(h.$slots,"doc-before",{},void 0,!0),v("main",ys,[k(m,{class:N(["vp-doc",[l.value,i(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),k(hs,null,{"doc-footer-before":p(()=>[c(h.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),c(h.$slots,"doc-after",{},void 0,!0)])])]),c(h.$slots,"doc-bottom",{},void 0,!0)],2)}}}),Ss=$(Ps,[["__scopeId","data-v-83890dd9"]]),Vs=_({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(s){const e=s,t=g(()=>e.href&&we.test(e.href)),o=g(()=>e.tag||e.href?"a":"button");return(n,r)=>(a(),y(W(o.value),{class:N(["VPButton",[n.size,n.theme]]),href:n.href?i(me)(n.href):void 0,target:e.target??(t.value?"_blank":void 0),rel:e.rel??(t.value?"noreferrer":void 0)},{default:p(()=>[F(w(n.text),1)]),_:1},8,["class","href","target","rel"]))}}),Ls=$(Vs,[["__scopeId","data-v-14206e74"]]),Ts=["src","alt"],ws=_({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(s){return(e,t)=>{const o=R("VPImage",!0);return e.image?(a(),u(M,{key:0},[typeof e.image=="string"||"src"in e.image?(a(),u("img",Q({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:i(he)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,Ts)):(a(),u(M,{key:1},[k(o,Q({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),k(o,Q({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):f("",!0)}}}),x=$(ws,[["__scopeId","data-v-35a7d0b8"]]),Is=s=>(B("data-v-955009fc"),s=s(),H(),s),Ns={class:"container"},Ms={class:"main"},As={key:0,class:"name"},Cs=["innerHTML"],Bs=["innerHTML"],Hs=["innerHTML"],Es={key:0,class:"actions"},Ds={key:0,class:"image"},Fs={class:"image-container"},Os=Is(()=>v("div",{class:"image-bg"},null,-1)),Us=_({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(s){const e=J("hero-image-slot-exists");return(t,o)=>(a(),u("div",{class:N(["VPHero",{"has-image":t.image||i(e)}])},[v("div",Ns,[v("div",Ms,[c(t.$slots,"home-hero-info-before",{},void 0,!0),c(t.$slots,"home-hero-info",{},()=>[t.name?(a(),u("h1",As,[v("span",{innerHTML:t.name,class:"clip"},null,8,Cs)])):f("",!0),t.text?(a(),u("p",{key:1,innerHTML:t.text,class:"text"},null,8,Bs)):f("",!0),t.tagline?(a(),u("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,Hs)):f("",!0)],!0),c(t.$slots,"home-hero-info-after",{},void 0,!0),t.actions?(a(),u("div",Es,[(a(!0),u(M,null,E(t.actions,n=>(a(),u("div",{key:n.link,class:"action"},[k(Ls,{tag:"a",size:"medium",theme:n.theme,text:n.text,href:n.link,target:n.target,rel:n.rel},null,8,["theme","text","href","target","rel"])]))),128))])):f("",!0),c(t.$slots,"home-hero-actions-after",{},void 0,!0)]),t.image||i(e)?(a(),u("div",Ds,[v("div",Fs,[Os,c(t.$slots,"home-hero-image",{},()=>[t.image?(a(),y(x,{key:0,class:"image-src",image:t.image},null,8,["image"])):f("",!0)],!0)])])):f("",!0)])],2))}}),js=$(Us,[["__scopeId","data-v-955009fc"]]),Gs=_({__name:"VPHomeHero",setup(s){const{frontmatter:e}=L();return(t,o)=>i(e).hero?(a(),y(js,{key:0,class:"VPHomeHero",name:i(e).hero.name,text:i(e).hero.text,tagline:i(e).hero.tagline,image:i(e).hero.image,actions:i(e).hero.actions},{"home-hero-info-before":p(()=>[c(t.$slots,"home-hero-info-before")]),"home-hero-info":p(()=>[c(t.$slots,"home-hero-info")]),"home-hero-info-after":p(()=>[c(t.$slots,"home-hero-info-after")]),"home-hero-actions-after":p(()=>[c(t.$slots,"home-hero-actions-after")]),"home-hero-image":p(()=>[c(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):f("",!0)}}),zs=s=>(B("data-v-f5e9645b"),s=s(),H(),s),Ks={class:"box"},Rs={key:0,class:"icon"},qs=["innerHTML"],Ws=["innerHTML"],Js=["innerHTML"],Ys={key:4,class:"link-text"},Xs={class:"link-text-value"},Qs=zs(()=>v("span",{class:"vpi-arrow-right link-text-icon"},null,-1)),Zs=_({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(s){return(e,t)=>(a(),y(D,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:p(()=>[v("article",Ks,[typeof e.icon=="object"&&e.icon.wrap?(a(),u("div",Rs,[k(x,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(a(),y(x,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(a(),u("div",{key:2,class:"icon",innerHTML:e.icon},null,8,qs)):f("",!0),v("h2",{class:"title",innerHTML:e.title},null,8,Ws),e.details?(a(),u("p",{key:3,class:"details",innerHTML:e.details},null,8,Js)):f("",!0),e.linkText?(a(),u("div",Ys,[v("p",Xs,[F(w(e.linkText)+" ",1),Qs])])):f("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),xs=$(Zs,[["__scopeId","data-v-f5e9645b"]]),eo={key:0,class:"VPFeatures"},to={class:"container"},so={class:"items"},oo=_({__name:"VPFeatures",props:{features:{}},setup(s){const e=s,t=g(()=>{const o=e.features.length;if(o){if(o===2)return"grid-2";if(o===3)return"grid-3";if(o%3===0)return"grid-6";if(o>3)return"grid-4"}else return});return(o,n)=>o.features?(a(),u("div",eo,[v("div",to,[v("div",so,[(a(!0),u(M,null,E(o.features,r=>(a(),u("div",{key:r.title,class:N(["item",[t.value]])},[k(xs,{icon:r.icon,title:r.title,details:r.details,link:r.link,"link-text":r.linkText,rel:r.rel,target:r.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):f("",!0)}}),no=$(oo,[["__scopeId","data-v-d0a190d7"]]),ao=_({__name:"VPHomeFeatures",setup(s){const{frontmatter:e}=L();return(t,o)=>i(e).features?(a(),y(no,{key:0,class:"VPHomeFeatures",features:i(e).features},null,8,["features"])):f("",!0)}}),ro=_({__name:"VPHomeContent",setup(s){const{width:e}=xe({initialWidth:0,includeScrollbar:!1});return(t,o)=>(a(),u("div",{class:"vp-doc container",style:Ie(i(e)?{"--vp-offset":`calc(50% - ${i(e)/2}px)`}:{})},[c(t.$slots,"default",{},void 0,!0)],4))}}),io=$(ro,[["__scopeId","data-v-7a48a447"]]),lo={class:"VPHome"},co=_({__name:"VPHome",setup(s){const{frontmatter:e}=L();return(t,o)=>{const n=R("Content");return a(),u("div",lo,[c(t.$slots,"home-hero-before",{},void 0,!0),k(Gs,null,{"home-hero-info-before":p(()=>[c(t.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":p(()=>[c(t.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":p(()=>[c(t.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":p(()=>[c(t.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":p(()=>[c(t.$slots,"home-hero-image",{},void 0,!0)]),_:3}),c(t.$slots,"home-hero-after",{},void 0,!0),c(t.$slots,"home-features-before",{},void 0,!0),k(ao),c(t.$slots,"home-features-after",{},void 0,!0),i(e).markdownStyles!==!1?(a(),y(io,{key:0},{default:p(()=>[k(n)]),_:1})):(a(),y(n,{key:1}))])}}}),uo=$(co,[["__scopeId","data-v-cbb6ec48"]]),vo={},po={class:"VPPage"};function ho(s,e){const t=R("Content");return a(),u("div",po,[c(s.$slots,"page-top"),k(t),c(s.$slots,"page-bottom")])}const fo=$(vo,[["render",ho]]),_o=_({__name:"VPContent",setup(s){const{page:e,frontmatter:t}=L(),{hasSidebar:o}=U();return(n,r)=>(a(),u("div",{class:N(["VPContent",{"has-sidebar":i(o),"is-home":i(t).layout==="home"}]),id:"VPContent"},[i(e).isNotFound?c(n.$slots,"not-found",{key:0},()=>[k(St)],!0):i(t).layout==="page"?(a(),y(fo,{key:1},{"page-top":p(()=>[c(n.$slots,"page-top",{},void 0,!0)]),"page-bottom":p(()=>[c(n.$slots,"page-bottom",{},void 0,!0)]),_:3})):i(t).layout==="home"?(a(),y(uo,{key:2},{"home-hero-before":p(()=>[c(n.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":p(()=>[c(n.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":p(()=>[c(n.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":p(()=>[c(n.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":p(()=>[c(n.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":p(()=>[c(n.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":p(()=>[c(n.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":p(()=>[c(n.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":p(()=>[c(n.$slots,"home-features-after",{},void 0,!0)]),_:3})):i(t).layout&&i(t).layout!=="doc"?(a(),y(W(i(t).layout),{key:3})):(a(),y(Ss,{key:4},{"doc-top":p(()=>[c(n.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":p(()=>[c(n.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":p(()=>[c(n.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":p(()=>[c(n.$slots,"doc-before",{},void 0,!0)]),"doc-after":p(()=>[c(n.$slots,"doc-after",{},void 0,!0)]),"aside-top":p(()=>[c(n.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":p(()=>[c(n.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":p(()=>[c(n.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":p(()=>[c(n.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":p(()=>[c(n.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":p(()=>[c(n.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),mo=$(_o,[["__scopeId","data-v-91765379"]]),bo={class:"container"},ko=["innerHTML"],$o=["innerHTML"],go=_({__name:"VPFooter",setup(s){const{theme:e,frontmatter:t}=L(),{hasSidebar:o}=U();return(n,r)=>i(e).footer&&i(t).footer!==!1?(a(),u("footer",{key:0,class:N(["VPFooter",{"has-sidebar":i(o)}])},[v("div",bo,[i(e).footer.message?(a(),u("p",{key:0,class:"message",innerHTML:i(e).footer.message},null,8,ko)):f("",!0),i(e).footer.copyright?(a(),u("p",{key:1,class:"copyright",innerHTML:i(e).footer.copyright},null,8,$o)):f("",!0)])],2)):f("",!0)}}),yo=$(go,[["__scopeId","data-v-c970a860"]]);function Po(){const{theme:s,frontmatter:e}=L(),t=Te([]),o=g(()=>t.value.length>0);return te(()=>{t.value=be(e.value.outline??s.value.outline)}),{headers:t,hasLocalNav:o}}const So=s=>(B("data-v-bc9dc845"),s=s(),H(),s),Vo={class:"menu-text"},Lo=So(()=>v("span",{class:"vpi-chevron-right icon"},null,-1)),To={class:"header"},wo={class:"outline"},Io=_({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(s){const e=s,{theme:t}=L(),o=I(!1),n=I(0),r=I(),l=I();function h(b){var P;(P=r.value)!=null&&P.contains(b.target)||(o.value=!1)}O(o,b=>{if(b){document.addEventListener("click",h);return}document.removeEventListener("click",h)}),ce("Escape",()=>{o.value=!1}),te(()=>{o.value=!1});function d(){o.value=!o.value,n.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function m(b){b.target.classList.contains("outline-link")&&(l.value&&(l.value.style.transition="none"),Ne(()=>{o.value=!1}))}function V(){o.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(b,P)=>(a(),u("div",{class:"VPLocalNavOutlineDropdown",style:Ie({"--vp-vh":n.value+"px"}),ref_key:"main",ref:r},[b.headers.length>0?(a(),u("button",{key:0,onClick:d,class:N({open:o.value})},[v("span",Vo,w(i(He)(i(t))),1),Lo],2)):(a(),u("button",{key:1,onClick:V},w(i(t).returnToTopLabel||"Return to top"),1)),k(pe,{name:"flyout"},{default:p(()=>[o.value?(a(),u("div",{key:0,ref_key:"items",ref:l,class:"items",onClick:m},[v("div",To,[v("a",{class:"top-link",href:"#",onClick:V},w(i(t).returnToTopLabel||"Return to top"),1)]),v("div",wo,[k(Ee,{headers:b.headers},null,8,["headers"])])],512)):f("",!0)]),_:1})],4))}}),No=$(Io,[["__scopeId","data-v-bc9dc845"]]),Mo=s=>(B("data-v-070ab83d"),s=s(),H(),s),Ao={class:"container"},Co=["aria-expanded"],Bo=Mo(()=>v("span",{class:"vpi-align-left menu-icon"},null,-1)),Ho={class:"menu-text"},Eo=_({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(s){const{theme:e,frontmatter:t}=L(),{hasSidebar:o}=U(),{headers:n}=Po(),{y:r}=Me(),l=I(0);K(()=>{l.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),te(()=>{n.value=be(t.value.outline??e.value.outline)});const h=g(()=>n.value.length===0),d=g(()=>h.value&&!o.value),m=g(()=>({VPLocalNav:!0,"has-sidebar":o.value,empty:h.value,fixed:d.value}));return(V,b)=>i(t).layout!=="home"&&(!d.value||i(r)>=l.value)?(a(),u("div",{key:0,class:N(m.value)},[v("div",Ao,[i(o)?(a(),u("button",{key:0,class:"menu","aria-expanded":V.open,"aria-controls":"VPSidebarNav",onClick:b[0]||(b[0]=P=>V.$emit("open-menu"))},[Bo,v("span",Ho,w(i(e).sidebarMenuLabel||"Menu"),1)],8,Co)):f("",!0),k(No,{headers:i(n),navHeight:l.value},null,8,["headers","navHeight"])])],2)):f("",!0)}}),Do=$(Eo,[["__scopeId","data-v-070ab83d"]]);function Fo(){const s=I(!1);function e(){s.value=!0,window.addEventListener("resize",n)}function t(){s.value=!1,window.removeEventListener("resize",n)}function o(){s.value?t():e()}function n(){window.outerWidth>=768&&t()}const r=se();return O(()=>r.path,t),{isScreenOpen:s,openScreen:e,closeScreen:t,toggleScreen:o}}const Oo={},Uo={class:"VPSwitch",type:"button",role:"switch"},jo={class:"check"},Go={key:0,class:"icon"};function zo(s,e){return a(),u("button",Uo,[v("span",jo,[s.$slots.default?(a(),u("span",Go,[c(s.$slots,"default",{},void 0,!0)])):f("",!0)])])}const Ko=$(Oo,[["render",zo],["__scopeId","data-v-4a1c76db"]]),Fe=s=>(B("data-v-b79b56d4"),s=s(),H(),s),Ro=Fe(()=>v("span",{class:"vpi-sun sun"},null,-1)),qo=Fe(()=>v("span",{class:"vpi-moon moon"},null,-1)),Wo=_({__name:"VPSwitchAppearance",setup(s){const{isDark:e,theme:t}=L(),o=J("toggle-appearance",()=>{e.value=!e.value}),n=g(()=>e.value?t.value.lightModeSwitchTitle||"Switch to light theme":t.value.darkModeSwitchTitle||"Switch to dark theme");return(r,l)=>(a(),y(Ko,{title:n.value,class:"VPSwitchAppearance","aria-checked":i(e),onClick:i(o)},{default:p(()=>[Ro,qo]),_:1},8,["title","aria-checked","onClick"]))}}),ke=$(Wo,[["__scopeId","data-v-b79b56d4"]]),Jo={key:0,class:"VPNavBarAppearance"},Yo=_({__name:"VPNavBarAppearance",setup(s){const{site:e}=L();return(t,o)=>i(e).appearance&&i(e).appearance!=="force-dark"?(a(),u("div",Jo,[k(ke)])):f("",!0)}}),Xo=$(Yo,[["__scopeId","data-v-ead91a81"]]),$e=I();let Oe=!1,ie=0;function Qo(s){const e=I(!1);if(oe){!Oe&&Zo(),ie++;const t=O($e,o=>{var n,r,l;o===s.el.value||(n=s.el.value)!=null&&n.contains(o)?(e.value=!0,(r=s.onFocus)==null||r.call(s)):(e.value=!1,(l=s.onBlur)==null||l.call(s))});fe(()=>{t(),ie--,ie||xo()})}return et(e)}function Zo(){document.addEventListener("focusin",Ue),Oe=!0,$e.value=document.activeElement}function xo(){document.removeEventListener("focusin",Ue)}function Ue(){$e.value=document.activeElement}const en={class:"VPMenuLink"},tn=_({__name:"VPMenuLink",props:{item:{}},setup(s){const{page:e}=L();return(t,o)=>(a(),u("div",en,[k(D,{class:N({active:i(z)(i(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel},{default:p(()=>[F(w(t.item.text),1)]),_:1},8,["class","href","target","rel"])]))}}),ne=$(tn,[["__scopeId","data-v-8b74d055"]]),sn={class:"VPMenuGroup"},on={key:0,class:"title"},nn=_({__name:"VPMenuGroup",props:{text:{},items:{}},setup(s){return(e,t)=>(a(),u("div",sn,[e.text?(a(),u("p",on,w(e.text),1)):f("",!0),(a(!0),u(M,null,E(e.items,o=>(a(),u(M,null,["link"in o?(a(),y(ne,{key:0,item:o},null,8,["item"])):f("",!0)],64))),256))]))}}),an=$(nn,[["__scopeId","data-v-48c802d0"]]),rn={class:"VPMenu"},ln={key:0,class:"items"},cn=_({__name:"VPMenu",props:{items:{}},setup(s){return(e,t)=>(a(),u("div",rn,[e.items?(a(),u("div",ln,[(a(!0),u(M,null,E(e.items,o=>(a(),u(M,{key:o.text},["link"in o?(a(),y(ne,{key:0,item:o},null,8,["item"])):(a(),y(an,{key:1,text:o.text,items:o.items},null,8,["text","items"]))],64))),128))])):f("",!0),c(e.$slots,"default",{},void 0,!0)]))}}),un=$(cn,[["__scopeId","data-v-97491713"]]),dn=s=>(B("data-v-e5380155"),s=s(),H(),s),vn=["aria-expanded","aria-label"],pn={key:0,class:"text"},hn=["innerHTML"],fn=dn(()=>v("span",{class:"vpi-chevron-down text-icon"},null,-1)),_n={key:1,class:"vpi-more-horizontal icon"},mn={class:"menu"},bn=_({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(s){const e=I(!1),t=I();Qo({el:t,onBlur:o});function o(){e.value=!1}return(n,r)=>(a(),u("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:r[1]||(r[1]=l=>e.value=!0),onMouseleave:r[2]||(r[2]=l=>e.value=!1)},[v("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":n.label,onClick:r[0]||(r[0]=l=>e.value=!e.value)},[n.button||n.icon?(a(),u("span",pn,[n.icon?(a(),u("span",{key:0,class:N([n.icon,"option-icon"])},null,2)):f("",!0),n.button?(a(),u("span",{key:1,innerHTML:n.button},null,8,hn)):f("",!0),fn])):(a(),u("span",_n))],8,vn),v("div",mn,[k(un,{items:n.items},{default:p(()=>[c(n.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),ge=$(bn,[["__scopeId","data-v-e5380155"]]),kn=["href","aria-label","innerHTML"],$n=_({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(s){const e=s,t=g(()=>typeof e.icon=="object"?e.icon.svg:``);return(o,n)=>(a(),u("a",{class:"VPSocialLink no-icon",href:o.link,"aria-label":o.ariaLabel??(typeof o.icon=="string"?o.icon:""),target:"_blank",rel:"noopener",innerHTML:t.value},null,8,kn))}}),gn=$($n,[["__scopeId","data-v-717b8b75"]]),yn={class:"VPSocialLinks"},Pn=_({__name:"VPSocialLinks",props:{links:{}},setup(s){return(e,t)=>(a(),u("div",yn,[(a(!0),u(M,null,E(e.links,({link:o,icon:n,ariaLabel:r})=>(a(),y(gn,{key:o,icon:n,link:o,ariaLabel:r},null,8,["icon","link","ariaLabel"]))),128))]))}}),ye=$(Pn,[["__scopeId","data-v-ee7a9424"]]),Sn={key:0,class:"group translations"},Vn={class:"trans-title"},Ln={key:1,class:"group"},Tn={class:"item appearance"},wn={class:"label"},In={class:"appearance-action"},Nn={key:2,class:"group"},Mn={class:"item social-links"},An=_({__name:"VPNavBarExtra",setup(s){const{site:e,theme:t}=L(),{localeLinks:o,currentLang:n}=X({correspondingLink:!0}),r=g(()=>o.value.length&&n.value.label||e.value.appearance||t.value.socialLinks);return(l,h)=>r.value?(a(),y(ge,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:p(()=>[i(o).length&&i(n).label?(a(),u("div",Sn,[v("p",Vn,w(i(n).label),1),(a(!0),u(M,null,E(i(o),d=>(a(),y(ne,{key:d.link,item:d},null,8,["item"]))),128))])):f("",!0),i(e).appearance&&i(e).appearance!=="force-dark"?(a(),u("div",Ln,[v("div",Tn,[v("p",wn,w(i(t).darkModeSwitchLabel||"Appearance"),1),v("div",In,[k(ke)])])])):f("",!0),i(t).socialLinks?(a(),u("div",Nn,[v("div",Mn,[k(ye,{class:"social-links-list",links:i(t).socialLinks},null,8,["links"])])])):f("",!0)]),_:1})):f("",!0)}}),Cn=$(An,[["__scopeId","data-v-9b536d0b"]]),Bn=s=>(B("data-v-5dea55bf"),s=s(),H(),s),Hn=["aria-expanded"],En=Bn(()=>v("span",{class:"container"},[v("span",{class:"top"}),v("span",{class:"middle"}),v("span",{class:"bottom"})],-1)),Dn=[En],Fn=_({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(s){return(e,t)=>(a(),u("button",{type:"button",class:N(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=o=>e.$emit("click"))},Dn,10,Hn))}}),On=$(Fn,[["__scopeId","data-v-5dea55bf"]]),Un=["innerHTML"],jn=_({__name:"VPNavBarMenuLink",props:{item:{}},setup(s){const{page:e}=L();return(t,o)=>(a(),y(D,{class:N({VPNavBarMenuLink:!0,active:i(z)(i(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,noIcon:t.item.noIcon,target:t.item.target,rel:t.item.rel,tabindex:"0"},{default:p(()=>[v("span",{innerHTML:t.item.text},null,8,Un)]),_:1},8,["class","href","noIcon","target","rel"]))}}),Gn=$(jn,[["__scopeId","data-v-ed5ac1f6"]]),zn=_({__name:"VPNavBarMenuGroup",props:{item:{}},setup(s){const e=s,{page:t}=L(),o=r=>"link"in r?z(t.value.relativePath,r.link,!!e.item.activeMatch):r.items.some(o),n=g(()=>o(e.item));return(r,l)=>(a(),y(ge,{class:N({VPNavBarMenuGroup:!0,active:i(z)(i(t).relativePath,r.item.activeMatch,!!r.item.activeMatch)||n.value}),button:r.item.text,items:r.item.items},null,8,["class","button","items"]))}}),Kn=s=>(B("data-v-492ea56d"),s=s(),H(),s),Rn={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},qn=Kn(()=>v("span",{id:"main-nav-aria-label",class:"visually-hidden"},"Main Navigation",-1)),Wn=_({__name:"VPNavBarMenu",setup(s){const{theme:e}=L();return(t,o)=>i(e).nav?(a(),u("nav",Rn,[qn,(a(!0),u(M,null,E(i(e).nav,n=>(a(),u(M,{key:n.text},["link"in n?(a(),y(Gn,{key:0,item:n},null,8,["item"])):(a(),y(zn,{key:1,item:n},null,8,["item"]))],64))),128))])):f("",!0)}}),Jn=$(Wn,[["__scopeId","data-v-492ea56d"]]);function Yn(s){const{localeIndex:e,theme:t}=L();function o(n){var A,C,T;const r=n.split("."),l=(A=t.value.search)==null?void 0:A.options,h=l&&typeof l=="object",d=h&&((T=(C=l.locales)==null?void 0:C[e.value])==null?void 0:T.translations)||null,m=h&&l.translations||null;let V=d,b=m,P=s;const S=r.pop();for(const j of r){let G=null;const q=P==null?void 0:P[j];q&&(G=P=q);const ae=b==null?void 0:b[j];ae&&(G=b=ae);const re=V==null?void 0:V[j];re&&(G=V=re),q||(P=G),ae||(b=G),re||(V=G)}return(V==null?void 0:V[S])??(b==null?void 0:b[S])??(P==null?void 0:P[S])??""}return o}const Xn=["aria-label"],Qn={class:"DocSearch-Button-Container"},Zn=v("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1),xn={class:"DocSearch-Button-Placeholder"},ea=v("span",{class:"DocSearch-Button-Keys"},[v("kbd",{class:"DocSearch-Button-Key"}),v("kbd",{class:"DocSearch-Button-Key"},"K")],-1),Pe=_({__name:"VPNavBarSearchButton",setup(s){const t=Yn({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(o,n)=>(a(),u("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":i(t)("button.buttonAriaLabel")},[v("span",Qn,[Zn,v("span",xn,w(i(t)("button.buttonText")),1)]),ea],8,Xn))}}),ta={class:"VPNavBarSearch"},sa={id:"local-search"},oa={key:1,id:"docsearch"},na=_({__name:"VPNavBarSearch",setup(s){const e=tt(()=>st(()=>import("./VPLocalSearchBox.B8T5L0wy.js"),__vite__mapDeps([0,1]))),t=()=>null,{theme:o}=L(),n=I(!1),r=I(!1);K(()=>{});function l(){n.value||(n.value=!0,setTimeout(h,16))}function h(){const b=new Event("keydown");b.key="k",b.metaKey=!0,window.dispatchEvent(b),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||h()},16)}function d(b){const P=b.target,S=P.tagName;return P.isContentEditable||S==="INPUT"||S==="SELECT"||S==="TEXTAREA"}const m=I(!1);ce("k",b=>{(b.ctrlKey||b.metaKey)&&(b.preventDefault(),m.value=!0)}),ce("/",b=>{d(b)||(b.preventDefault(),m.value=!0)});const V="local";return(b,P)=>{var S;return a(),u("div",ta,[i(V)==="local"?(a(),u(M,{key:0},[m.value?(a(),y(i(e),{key:0,onClose:P[0]||(P[0]=A=>m.value=!1)})):f("",!0),v("div",sa,[k(Pe,{onClick:P[1]||(P[1]=A=>m.value=!0)})])],64)):i(V)==="algolia"?(a(),u(M,{key:1},[n.value?(a(),y(i(t),{key:0,algolia:((S=i(o).search)==null?void 0:S.options)??i(o).algolia,onVnodeBeforeMount:P[2]||(P[2]=A=>r.value=!0)},null,8,["algolia"])):f("",!0),r.value?f("",!0):(a(),u("div",oa,[k(Pe,{onClick:l})]))],64)):f("",!0)])}}}),aa=_({__name:"VPNavBarSocialLinks",setup(s){const{theme:e}=L();return(t,o)=>i(e).socialLinks?(a(),y(ye,{key:0,class:"VPNavBarSocialLinks",links:i(e).socialLinks},null,8,["links"])):f("",!0)}}),ra=$(aa,[["__scopeId","data-v-164c457f"]]),ia=["href","rel","target"],la={key:1},ca={key:2},ua=_({__name:"VPNavBarTitle",setup(s){const{site:e,theme:t}=L(),{hasSidebar:o}=U(),{currentLang:n}=X(),r=g(()=>{var d;return typeof t.value.logoLink=="string"?t.value.logoLink:(d=t.value.logoLink)==null?void 0:d.link}),l=g(()=>{var d;return typeof t.value.logoLink=="string"||(d=t.value.logoLink)==null?void 0:d.rel}),h=g(()=>{var d;return typeof t.value.logoLink=="string"||(d=t.value.logoLink)==null?void 0:d.target});return(d,m)=>(a(),u("div",{class:N(["VPNavBarTitle",{"has-sidebar":i(o)}])},[v("a",{class:"title",href:r.value??i(me)(i(n).link),rel:l.value,target:h.value},[c(d.$slots,"nav-bar-title-before",{},void 0,!0),i(t).logo?(a(),y(x,{key:0,class:"logo",image:i(t).logo},null,8,["image"])):f("",!0),i(t).siteTitle?(a(),u("span",la,w(i(t).siteTitle),1)):i(t).siteTitle===void 0?(a(),u("span",ca,w(i(e).title),1)):f("",!0),c(d.$slots,"nav-bar-title-after",{},void 0,!0)],8,ia)],2))}}),da=$(ua,[["__scopeId","data-v-28a961f9"]]),va={class:"items"},pa={class:"title"},ha=_({__name:"VPNavBarTranslations",setup(s){const{theme:e}=L(),{localeLinks:t,currentLang:o}=X({correspondingLink:!0});return(n,r)=>i(t).length&&i(o).label?(a(),y(ge,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:i(e).langMenuLabel||"Change language"},{default:p(()=>[v("div",va,[v("p",pa,w(i(o).label),1),(a(!0),u(M,null,E(i(t),l=>(a(),y(ne,{key:l.link,item:l},null,8,["item"]))),128))])]),_:1},8,["label"])):f("",!0)}}),fa=$(ha,[["__scopeId","data-v-c80d9ad0"]]),_a=s=>(B("data-v-40788ea0"),s=s(),H(),s),ma={class:"wrapper"},ba={class:"container"},ka={class:"title"},$a={class:"content"},ga={class:"content-body"},ya=_a(()=>v("div",{class:"divider"},[v("div",{class:"divider-line"})],-1)),Pa=_({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(s){const{y:e}=Me(),{hasSidebar:t}=U(),{frontmatter:o}=L(),n=I({});return Le(()=>{n.value={"has-sidebar":t.value,home:o.value.layout==="home",top:e.value===0}}),(r,l)=>(a(),u("div",{class:N(["VPNavBar",n.value])},[v("div",ma,[v("div",ba,[v("div",ka,[k(da,null,{"nav-bar-title-before":p(()=>[c(r.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":p(()=>[c(r.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),v("div",$a,[v("div",ga,[c(r.$slots,"nav-bar-content-before",{},void 0,!0),k(na,{class:"search"}),k(Jn,{class:"menu"}),k(fa,{class:"translations"}),k(Xo,{class:"appearance"}),k(ra,{class:"social-links"}),k(Cn,{class:"extra"}),c(r.$slots,"nav-bar-content-after",{},void 0,!0),k(On,{class:"hamburger",active:r.isScreenOpen,onClick:l[0]||(l[0]=h=>r.$emit("toggle-screen"))},null,8,["active"])])])])]),ya],2))}}),Sa=$(Pa,[["__scopeId","data-v-40788ea0"]]),Va={key:0,class:"VPNavScreenAppearance"},La={class:"text"},Ta=_({__name:"VPNavScreenAppearance",setup(s){const{site:e,theme:t}=L();return(o,n)=>i(e).appearance&&i(e).appearance!=="force-dark"?(a(),u("div",Va,[v("p",La,w(i(t).darkModeSwitchLabel||"Appearance"),1),k(ke)])):f("",!0)}}),wa=$(Ta,[["__scopeId","data-v-2b89f08b"]]),Ia=_({__name:"VPNavScreenMenuLink",props:{item:{}},setup(s){const e=J("close-screen");return(t,o)=>(a(),y(D,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:i(e),innerHTML:t.item.text},null,8,["href","target","rel","onClick","innerHTML"]))}}),Na=$(Ia,[["__scopeId","data-v-27d04aeb"]]),Ma=_({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(s){const e=J("close-screen");return(t,o)=>(a(),y(D,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:i(e)},{default:p(()=>[F(w(t.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}}),je=$(Ma,[["__scopeId","data-v-7179dbb7"]]),Aa={class:"VPNavScreenMenuGroupSection"},Ca={key:0,class:"title"},Ba=_({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(s){return(e,t)=>(a(),u("div",Aa,[e.text?(a(),u("p",Ca,w(e.text),1)):f("",!0),(a(!0),u(M,null,E(e.items,o=>(a(),y(je,{key:o.text,item:o},null,8,["item"]))),128))]))}}),Ha=$(Ba,[["__scopeId","data-v-4b8941ac"]]),Ea=s=>(B("data-v-c9df2649"),s=s(),H(),s),Da=["aria-controls","aria-expanded"],Fa=["innerHTML"],Oa=Ea(()=>v("span",{class:"vpi-plus button-icon"},null,-1)),Ua=["id"],ja={key:1,class:"group"},Ga=_({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(s){const e=s,t=I(!1),o=g(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function n(){t.value=!t.value}return(r,l)=>(a(),u("div",{class:N(["VPNavScreenMenuGroup",{open:t.value}])},[v("button",{class:"button","aria-controls":o.value,"aria-expanded":t.value,onClick:n},[v("span",{class:"button-text",innerHTML:r.text},null,8,Fa),Oa],8,Da),v("div",{id:o.value,class:"items"},[(a(!0),u(M,null,E(r.items,h=>(a(),u(M,{key:h.text},["link"in h?(a(),u("div",{key:h.text,class:"item"},[k(je,{item:h},null,8,["item"])])):(a(),u("div",ja,[k(Ha,{text:h.text,items:h.items},null,8,["text","items"])]))],64))),128))],8,Ua)],2))}}),za=$(Ga,[["__scopeId","data-v-c9df2649"]]),Ka={key:0,class:"VPNavScreenMenu"},Ra=_({__name:"VPNavScreenMenu",setup(s){const{theme:e}=L();return(t,o)=>i(e).nav?(a(),u("nav",Ka,[(a(!0),u(M,null,E(i(e).nav,n=>(a(),u(M,{key:n.text},["link"in n?(a(),y(Na,{key:0,item:n},null,8,["item"])):(a(),y(za,{key:1,text:n.text||"",items:n.items},null,8,["text","items"]))],64))),128))])):f("",!0)}}),qa=_({__name:"VPNavScreenSocialLinks",setup(s){const{theme:e}=L();return(t,o)=>i(e).socialLinks?(a(),y(ye,{key:0,class:"VPNavScreenSocialLinks",links:i(e).socialLinks},null,8,["links"])):f("",!0)}}),Ge=s=>(B("data-v-362991c2"),s=s(),H(),s),Wa=Ge(()=>v("span",{class:"vpi-languages icon lang"},null,-1)),Ja=Ge(()=>v("span",{class:"vpi-chevron-down icon chevron"},null,-1)),Ya={class:"list"},Xa=_({__name:"VPNavScreenTranslations",setup(s){const{localeLinks:e,currentLang:t}=X({correspondingLink:!0}),o=I(!1);function n(){o.value=!o.value}return(r,l)=>i(e).length&&i(t).label?(a(),u("div",{key:0,class:N(["VPNavScreenTranslations",{open:o.value}])},[v("button",{class:"title",onClick:n},[Wa,F(" "+w(i(t).label)+" ",1),Ja]),v("ul",Ya,[(a(!0),u(M,null,E(i(e),h=>(a(),u("li",{key:h.link,class:"item"},[k(D,{class:"link",href:h.link},{default:p(()=>[F(w(h.text),1)]),_:2},1032,["href"])]))),128))])],2)):f("",!0)}}),Qa=$(Xa,[["__scopeId","data-v-362991c2"]]),Za={class:"container"},xa=_({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(s){const e=I(null),t=Ae(oe?document.body:null);return(o,n)=>(a(),y(pe,{name:"fade",onEnter:n[0]||(n[0]=r=>t.value=!0),onAfterLeave:n[1]||(n[1]=r=>t.value=!1)},{default:p(()=>[o.open?(a(),u("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[v("div",Za,[c(o.$slots,"nav-screen-content-before",{},void 0,!0),k(Ra,{class:"menu"}),k(Qa,{class:"translations"}),k(wa,{class:"appearance"}),k(qa,{class:"social-links"}),c(o.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):f("",!0)]),_:3}))}}),er=$(xa,[["__scopeId","data-v-382f42e9"]]),tr={key:0,class:"VPNav"},sr=_({__name:"VPNav",setup(s){const{isScreenOpen:e,closeScreen:t,toggleScreen:o}=Fo(),{frontmatter:n}=L(),r=g(()=>n.value.navbar!==!1);return _e("close-screen",t),ee(()=>{oe&&document.documentElement.classList.toggle("hide-nav",!r.value)}),(l,h)=>r.value?(a(),u("header",tr,[k(Sa,{"is-screen-open":i(e),onToggleScreen:i(o)},{"nav-bar-title-before":p(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":p(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":p(()=>[c(l.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":p(()=>[c(l.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),k(er,{open:i(e)},{"nav-screen-content-before":p(()=>[c(l.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":p(()=>[c(l.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):f("",!0)}}),or=$(sr,[["__scopeId","data-v-f1e365da"]]),ze=s=>(B("data-v-2ea20db7"),s=s(),H(),s),nr=["role","tabindex"],ar=ze(()=>v("div",{class:"indicator"},null,-1)),rr=ze(()=>v("span",{class:"vpi-chevron-right caret-icon"},null,-1)),ir=[rr],lr={key:1,class:"items"},cr=_({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(s){const e=s,{collapsed:t,collapsible:o,isLink:n,isActiveLink:r,hasActiveLink:l,hasChildren:h,toggle:d}=wt(g(()=>e.item)),m=g(()=>h.value?"section":"div"),V=g(()=>n.value?"a":"div"),b=g(()=>h.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),P=g(()=>n.value?void 0:"button"),S=g(()=>[[`level-${e.depth}`],{collapsible:o.value},{collapsed:t.value},{"is-link":n.value},{"is-active":r.value},{"has-active":l.value}]);function A(T){"key"in T&&T.key!=="Enter"||!e.item.link&&d()}function C(){e.item.link&&d()}return(T,j)=>{const G=R("VPSidebarItem",!0);return a(),y(W(m.value),{class:N(["VPSidebarItem",S.value])},{default:p(()=>[T.item.text?(a(),u("div",Q({key:0,class:"item",role:P.value},nt(T.item.items?{click:A,keydown:A}:{},!0),{tabindex:T.item.items&&0}),[ar,T.item.link?(a(),y(D,{key:0,tag:V.value,class:"link",href:T.item.link,rel:T.item.rel,target:T.item.target},{default:p(()=>[(a(),y(W(b.value),{class:"text",innerHTML:T.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(a(),y(W(b.value),{key:1,class:"text",innerHTML:T.item.text},null,8,["innerHTML"])),T.item.collapsed!=null&&T.item.items&&T.item.items.length?(a(),u("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:C,onKeydown:ot(C,["enter"]),tabindex:"0"},ir,32)):f("",!0)],16,nr)):f("",!0),T.item.items&&T.item.items.length?(a(),u("div",lr,[T.depth<5?(a(!0),u(M,{key:0},E(T.item.items,q=>(a(),y(G,{key:q.text,item:q,depth:T.depth+1},null,8,["item","depth"]))),128)):f("",!0)])):f("",!0)]),_:1},8,["class"])}}}),ur=$(cr,[["__scopeId","data-v-2ea20db7"]]),Ke=s=>(B("data-v-ec846e01"),s=s(),H(),s),dr=Ke(()=>v("div",{class:"curtain"},null,-1)),vr={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},pr=Ke(()=>v("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),hr=_({__name:"VPSidebar",props:{open:{type:Boolean}},setup(s){const{sidebarGroups:e,hasSidebar:t}=U(),o=s,n=I(null),r=Ae(oe?document.body:null);return O([o,n],()=>{var l;o.open?(r.value=!0,(l=n.value)==null||l.focus()):r.value=!1},{immediate:!0,flush:"post"}),(l,h)=>i(t)?(a(),u("aside",{key:0,class:N(["VPSidebar",{open:l.open}]),ref_key:"navEl",ref:n,onClick:h[0]||(h[0]=at(()=>{},["stop"]))},[dr,v("nav",vr,[pr,c(l.$slots,"sidebar-nav-before",{},void 0,!0),(a(!0),u(M,null,E(i(e),d=>(a(),u("div",{key:d.text,class:"group"},[k(ur,{item:d,depth:0},null,8,["item"])]))),128)),c(l.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):f("",!0)}}),fr=$(hr,[["__scopeId","data-v-ec846e01"]]),_r=_({__name:"VPSkipLink",setup(s){const e=se(),t=I();O(()=>e.path,()=>t.value.focus());function o({target:n}){const r=document.getElementById(decodeURIComponent(n.hash).slice(1));if(r){const l=()=>{r.removeAttribute("tabindex"),r.removeEventListener("blur",l)};r.setAttribute("tabindex","-1"),r.addEventListener("blur",l),r.focus(),window.scrollTo(0,0)}}return(n,r)=>(a(),u(M,null,[v("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),v("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:o}," Skip to content ")],64))}}),mr=$(_r,[["__scopeId","data-v-c3508ec8"]]),br=_({__name:"Layout",setup(s){const{isOpen:e,open:t,close:o}=U(),n=se();O(()=>n.path,o),Tt(e,o);const{frontmatter:r}=L(),l=Ce(),h=g(()=>!!l["home-hero-image"]);return _e("hero-image-slot-exists",h),(d,m)=>{const V=R("Content");return i(r).layout!==!1?(a(),u("div",{key:0,class:N(["Layout",i(r).pageClass])},[c(d.$slots,"layout-top",{},void 0,!0),k(mr),k(vt,{class:"backdrop",show:i(e),onClick:i(o)},null,8,["show","onClick"]),k(or,null,{"nav-bar-title-before":p(()=>[c(d.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":p(()=>[c(d.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":p(()=>[c(d.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":p(()=>[c(d.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":p(()=>[c(d.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":p(()=>[c(d.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),k(Do,{open:i(e),onOpenMenu:i(t)},null,8,["open","onOpenMenu"]),k(fr,{open:i(e)},{"sidebar-nav-before":p(()=>[c(d.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":p(()=>[c(d.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),k(mo,null,{"page-top":p(()=>[c(d.$slots,"page-top",{},void 0,!0)]),"page-bottom":p(()=>[c(d.$slots,"page-bottom",{},void 0,!0)]),"not-found":p(()=>[c(d.$slots,"not-found",{},void 0,!0)]),"home-hero-before":p(()=>[c(d.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":p(()=>[c(d.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":p(()=>[c(d.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":p(()=>[c(d.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":p(()=>[c(d.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":p(()=>[c(d.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":p(()=>[c(d.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":p(()=>[c(d.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":p(()=>[c(d.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":p(()=>[c(d.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":p(()=>[c(d.$slots,"doc-before",{},void 0,!0)]),"doc-after":p(()=>[c(d.$slots,"doc-after",{},void 0,!0)]),"doc-top":p(()=>[c(d.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":p(()=>[c(d.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":p(()=>[c(d.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":p(()=>[c(d.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":p(()=>[c(d.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":p(()=>[c(d.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":p(()=>[c(d.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":p(()=>[c(d.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),k(yo),c(d.$slots,"layout-bottom",{},void 0,!0)],2)):(a(),y(V,{key:1}))}}}),kr=$(br,[["__scopeId","data-v-a9a9e638"]]),Se={Layout:kr,enhanceApp:({app:s})=>{s.component("Badge",ct)}},$r=s=>{if(typeof document>"u")return{stabilizeScrollPosition:n=>async(...r)=>n(...r)};const e=document.documentElement;return{stabilizeScrollPosition:o=>async(...n)=>{const r=o(...n),l=s.value;if(!l)return r;const h=l.offsetTop-e.scrollTop;return await Ne(),e.scrollTop=l.offsetTop-h,r}}},Re="vitepress:tabSharedState",Y=typeof localStorage<"u"?localStorage:null,qe="vitepress:tabsSharedState",gr=()=>{const s=Y==null?void 0:Y.getItem(qe);if(s)try{return JSON.parse(s)}catch{}return{}},yr=s=>{Y&&Y.setItem(qe,JSON.stringify(s))},Pr=s=>{const e=rt({});O(()=>e.content,(t,o)=>{t&&o&&yr(t)},{deep:!0}),s.provide(Re,e)},Sr=(s,e)=>{const t=J(Re);if(!t)throw new Error("[vitepress-plugin-tabs] TabsSharedState should be injected");K(()=>{t.content||(t.content=gr())});const o=I(),n=g({get(){var d;const l=e.value,h=s.value;if(l){const m=(d=t.content)==null?void 0:d[l];if(m&&h.includes(m))return m}else{const m=o.value;if(m)return m}return h[0]},set(l){const h=e.value;h?t.content&&(t.content[h]=l):o.value=l}});return{selected:n,select:l=>{n.value=l}}};let Ve=0;const Vr=()=>(Ve++,""+Ve);function Lr(){const s=Ce();return g(()=>{var o;const t=(o=s.default)==null?void 0:o.call(s);return t?t.filter(n=>typeof n.type=="object"&&"__name"in n.type&&n.type.__name==="PluginTabsTab"&&n.props).map(n=>{var r;return(r=n.props)==null?void 0:r.label}):[]})}const We="vitepress:tabSingleState",Tr=s=>{_e(We,s)},wr=()=>{const s=J(We);if(!s)throw new Error("[vitepress-plugin-tabs] TabsSingleState should be injected");return s},Ir={class:"plugin-tabs"},Nr=["id","aria-selected","aria-controls","tabindex","onClick"],Mr=_({__name:"PluginTabs",props:{sharedStateKey:{}},setup(s){const e=s,t=Lr(),{selected:o,select:n}=Sr(t,it(e,"sharedStateKey")),r=I(),{stabilizeScrollPosition:l}=$r(r),h=l(n),d=I([]),m=b=>{var A;const P=t.value.indexOf(o.value);let S;b.key==="ArrowLeft"?S=P>=1?P-1:t.value.length-1:b.key==="ArrowRight"&&(S=P(a(),u("div",Ir,[v("div",{ref_key:"tablist",ref:r,class:"plugin-tabs--tab-list",role:"tablist",onKeydown:m},[(a(!0),u(M,null,E(i(t),S=>(a(),u("button",{id:`tab-${S}-${i(V)}`,ref_for:!0,ref_key:"buttonRefs",ref:d,key:S,role:"tab",class:"plugin-tabs--tab","aria-selected":S===i(o),"aria-controls":`panel-${S}-${i(V)}`,tabindex:S===i(o)?0:-1,onClick:()=>i(h)(S)},w(S),9,Nr))),128))],544),c(b.$slots,"default")]))}}),Ar=["id","aria-labelledby"],Cr=_({__name:"PluginTabsTab",props:{label:{}},setup(s){const{uid:e,selected:t}=wr();return(o,n)=>i(t)===o.label?(a(),u("div",{key:0,id:`panel-${o.label}-${i(e)}`,class:"plugin-tabs--content",role:"tabpanel",tabindex:"0","aria-labelledby":`tab-${o.label}-${i(e)}`},[c(o.$slots,"default",{},void 0,!0)],8,Ar)):f("",!0)}}),Br=$(Cr,[["__scopeId","data-v-9b0d03d2"]]),Hr=s=>{Pr(s),s.component("PluginTabs",Mr),s.component("PluginTabsTab",Br)},Dr={extends:Se,Layout(){return lt(Se.Layout,null,{})},enhanceApp({app:s,router:e,siteData:t}){Hr(s)}};export{Dr as R,Yn as c,L as u}; diff --git a/dev/assets/chunks/theme.DW52ZK5I.js b/dev/assets/chunks/theme.DW52ZK5I.js new file mode 100644 index 0000000..37b60c7 --- /dev/null +++ b/dev/assets/chunks/theme.DW52ZK5I.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/chunks/VPLocalSearchBox.Dvyzb8w2.js","assets/chunks/framework.CBLuZwrP.js"])))=>i.map(i=>d[i]); +import{d as _,o as a,c as u,r as c,n as N,a as j,t as I,b as $,w as f,e as h,T as pe,_ as g,u as Je,i as Ye,f as Xe,g as fe,h as y,j as p,k as r,p as B,l as H,m as q,q as le,s as T,v as O,x as ee,y as R,z as he,A as _e,B as Qe,C as Ze,D as W,F as M,E,G as Te,H as te,I as k,J as D,K as we,L as ne,M as K,N as Y,O as xe,P as Ie,Q as ce,R as Ne,S as Me,U as oe,V as et,W as tt,X as nt,Y as Ae,Z as me,$ as ot,a0 as st,a1 as at,a2 as rt,a3 as Ce,a4 as it,a5 as lt,a6 as ct}from"./framework.CBLuZwrP.js";const ut=_({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(n){return(e,t)=>(a(),u("span",{class:N(["VPBadge",e.type])},[c(e.$slots,"default",{},()=>[j(I(e.text),1)])],2))}}),dt={key:0,class:"VPBackdrop"},vt=_({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(n){return(e,t)=>(a(),$(pe,{name:"fade"},{default:f(()=>[e.show?(a(),u("div",dt)):h("",!0)]),_:1}))}}),pt=g(vt,[["__scopeId","data-v-b06cdb19"]]),V=Je;function ft(n,e){let t,s=!1;return()=>{t&&clearTimeout(t),s?t=setTimeout(n,e):(n(),(s=!0)&&setTimeout(()=>s=!1,e))}}function ue(n){return/^\//.test(n)?n:`/${n}`}function be(n){const{pathname:e,search:t,hash:s,protocol:o}=new URL(n,"http://a.com");if(Ye(n)||n.startsWith("#")||!o.startsWith("http")||!Xe(e))return n;const{site:i}=V(),l=e.endsWith("/")||e.endsWith(".html")?n:n.replace(/(?:(^\.+)\/)?.*$/,`$1${e.replace(/(\.md)?$/,i.value.cleanUrls?"":".html")}${t}${s}`);return fe(l)}function Q({correspondingLink:n=!1}={}){const{site:e,localeIndex:t,page:s,theme:o,hash:i}=V(),l=y(()=>{var v,m;return{label:(v=e.value.locales[t.value])==null?void 0:v.label,link:((m=e.value.locales[t.value])==null?void 0:m.link)||(t.value==="root"?"/":`/${t.value}/`)}});return{localeLinks:y(()=>Object.entries(e.value.locales).flatMap(([v,m])=>l.value.label===m.label?[]:{text:m.label,link:ht(m.link||(v==="root"?"/":`/${v}/`),o.value.i18nRouting!==!1&&n,s.value.relativePath.slice(l.value.link.length-1),!e.value.cleanUrls)+i.value})),currentLang:l}}function ht(n,e,t,s){return e?n.replace(/\/$/,"")+ue(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,s?".html":"")):n}const _t=n=>(B("data-v-951cab6c"),n=n(),H(),n),mt={class:"NotFound"},bt={class:"code"},kt={class:"title"},$t=_t(()=>p("div",{class:"divider"},null,-1)),gt={class:"quote"},yt={class:"action"},Pt=["href","aria-label"],St=_({__name:"NotFound",setup(n){const{theme:e}=V(),{currentLang:t}=Q();return(s,o)=>{var i,l,d,v,m;return a(),u("div",mt,[p("p",bt,I(((i=r(e).notFound)==null?void 0:i.code)??"404"),1),p("h1",kt,I(((l=r(e).notFound)==null?void 0:l.title)??"PAGE NOT FOUND"),1),$t,p("blockquote",gt,I(((d=r(e).notFound)==null?void 0:d.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),p("div",yt,[p("a",{class:"link",href:r(fe)(r(t).link),"aria-label":((v=r(e).notFound)==null?void 0:v.linkLabel)??"go to home"},I(((m=r(e).notFound)==null?void 0:m.linkText)??"Take me home"),9,Pt)])])}}}),Vt=g(St,[["__scopeId","data-v-951cab6c"]]);function Be(n,e){if(Array.isArray(n))return Z(n);if(n==null)return[];e=ue(e);const t=Object.keys(n).sort((o,i)=>i.split("/").length-o.split("/").length).find(o=>e.startsWith(ue(o))),s=t?n[t]:[];return Array.isArray(s)?Z(s):Z(s.items,s.base)}function Lt(n){const e=[];let t=0;for(const s in n){const o=n[s];if(o.items){t=e.push(o);continue}e[t]||e.push({items:[]}),e[t].items.push(o)}return e}function Tt(n){const e=[];function t(s){for(const o of s)o.text&&o.link&&e.push({text:o.text,link:o.link,docFooterText:o.docFooterText}),o.items&&t(o.items)}return t(n),e}function de(n,e){return Array.isArray(e)?e.some(t=>de(n,t)):q(n,e.link)?!0:e.items?de(n,e.items):!1}function Z(n,e){return[...n].map(t=>{const s={...t},o=s.base||e;return o&&s.link&&(s.link=o+s.link),s.items&&(s.items=Z(s.items,o)),s})}function U(){const{frontmatter:n,page:e,theme:t}=V(),s=le("(min-width: 960px)"),o=T(!1),i=y(()=>{const C=t.value.sidebar,w=e.value.relativePath;return C?Be(C,w):[]}),l=T(i.value);O(i,(C,w)=>{JSON.stringify(C)!==JSON.stringify(w)&&(l.value=i.value)});const d=y(()=>n.value.sidebar!==!1&&l.value.length>0&&n.value.layout!=="home"),v=y(()=>m?n.value.aside==null?t.value.aside==="left":n.value.aside==="left":!1),m=y(()=>n.value.layout==="home"?!1:n.value.aside!=null?!!n.value.aside:t.value.aside!==!1),L=y(()=>d.value&&s.value),b=y(()=>d.value?Lt(l.value):[]);function P(){o.value=!0}function S(){o.value=!1}function A(){o.value?S():P()}return{isOpen:o,sidebar:l,sidebarGroups:b,hasSidebar:d,hasAside:m,leftAside:v,isSidebarEnabled:L,open:P,close:S,toggle:A}}function wt(n,e){let t;ee(()=>{t=n.value?document.activeElement:void 0}),R(()=>{window.addEventListener("keyup",s)}),he(()=>{window.removeEventListener("keyup",s)});function s(o){o.key==="Escape"&&n.value&&(e(),t==null||t.focus())}}function It(n){const{page:e,hash:t}=V(),s=T(!1),o=y(()=>n.value.collapsed!=null),i=y(()=>!!n.value.link),l=T(!1),d=()=>{l.value=q(e.value.relativePath,n.value.link)};O([e,n,t],d),R(d);const v=y(()=>l.value?!0:n.value.items?de(e.value.relativePath,n.value.items):!1),m=y(()=>!!(n.value.items&&n.value.items.length));ee(()=>{s.value=!!(o.value&&n.value.collapsed)}),_e(()=>{(l.value||v.value)&&(s.value=!1)});function L(){o.value&&(s.value=!s.value)}return{collapsed:s,collapsible:o,isLink:i,isActiveLink:l,hasActiveLink:v,hasChildren:m,toggle:L}}function Nt(){const{hasSidebar:n}=U(),e=le("(min-width: 960px)"),t=le("(min-width: 1280px)");return{isAsideEnabled:y(()=>!t.value&&!e.value?!1:n.value?t.value:e.value)}}const ve=[];function He(n){return typeof n.outline=="object"&&!Array.isArray(n.outline)&&n.outline.label||n.outlineTitle||"On this page"}function ke(n){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const s=Number(t.tagName[1]);return{element:t,title:Mt(t),link:"#"+t.id,level:s}});return At(e,n)}function Mt(n){let e="";for(const t of n.childNodes)if(t.nodeType===1){if(t.classList.contains("VPBadge")||t.classList.contains("header-anchor")||t.classList.contains("ignore-header"))continue;e+=t.textContent}else t.nodeType===3&&(e+=t.textContent);return e.trim()}function At(n,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[s,o]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;n=n.filter(l=>l.level>=s&&l.level<=o),ve.length=0;for(const{element:l,link:d}of n)ve.push({element:l,link:d});const i=[];e:for(let l=0;l=0;v--){const m=n[v];if(m.level{requestAnimationFrame(i),window.addEventListener("scroll",s)}),Qe(()=>{l(location.hash)}),he(()=>{window.removeEventListener("scroll",s)});function i(){if(!t.value)return;const d=window.scrollY,v=window.innerHeight,m=document.body.offsetHeight,L=Math.abs(d+v-m)<1,b=ve.map(({element:S,link:A})=>({link:A,top:Bt(S)})).filter(({top:S})=>!Number.isNaN(S)).sort((S,A)=>S.top-A.top);if(!b.length){l(null);return}if(d<1){l(null);return}if(L){l(b[b.length-1].link);return}let P=null;for(const{link:S,top:A}of b){if(A>d+Ze()+4)break;P=S}l(P)}function l(d){o&&o.classList.remove("active"),d==null?o=null:o=n.value.querySelector(`a[href="${decodeURIComponent(d)}"]`);const v=o;v?(v.classList.add("active"),e.value.style.top=v.offsetTop+39+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function Bt(n){let e=0;for(;n!==document.body;){if(n===null)return NaN;e+=n.offsetTop,n=n.offsetParent}return e}const Ht=["href","title"],Et=_({__name:"VPDocOutlineItem",props:{headers:{},root:{type:Boolean}},setup(n){function e({target:t}){const s=t.href.split("#")[1],o=document.getElementById(decodeURIComponent(s));o==null||o.focus({preventScroll:!0})}return(t,s)=>{const o=W("VPDocOutlineItem",!0);return a(),u("ul",{class:N(["VPDocOutlineItem",t.root?"root":"nested"])},[(a(!0),u(M,null,E(t.headers,({children:i,link:l,title:d})=>(a(),u("li",null,[p("a",{class:"outline-link",href:l,onClick:e,title:d},I(d),9,Ht),i!=null&&i.length?(a(),$(o,{key:0,headers:i},null,8,["headers"])):h("",!0)]))),256))],2)}}}),Ee=g(Et,[["__scopeId","data-v-3f927ebe"]]),Dt={class:"content"},Ft={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},Ot=_({__name:"VPDocAsideOutline",setup(n){const{frontmatter:e,theme:t}=V(),s=Te([]);te(()=>{s.value=ke(e.value.outline??t.value.outline)});const o=T(),i=T();return Ct(o,i),(l,d)=>(a(),u("nav",{"aria-labelledby":"doc-outline-aria-label",class:N(["VPDocAsideOutline",{"has-outline":s.value.length>0}]),ref_key:"container",ref:o},[p("div",Dt,[p("div",{class:"outline-marker",ref_key:"marker",ref:i},null,512),p("div",Ft,I(r(He)(r(t))),1),k(Ee,{headers:s.value,root:!0},null,8,["headers"])])],2))}}),jt=g(Ot,[["__scopeId","data-v-b38bf2ff"]]),Ut={class:"VPDocAsideCarbonAds"},Gt=_({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(n){const e=()=>null;return(t,s)=>(a(),u("div",Ut,[k(r(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),zt=n=>(B("data-v-6d7b3c46"),n=n(),H(),n),Kt={class:"VPDocAside"},Rt=zt(()=>p("div",{class:"spacer"},null,-1)),qt=_({__name:"VPDocAside",setup(n){const{theme:e}=V();return(t,s)=>(a(),u("div",Kt,[c(t.$slots,"aside-top",{},void 0,!0),c(t.$slots,"aside-outline-before",{},void 0,!0),k(jt),c(t.$slots,"aside-outline-after",{},void 0,!0),Rt,c(t.$slots,"aside-ads-before",{},void 0,!0),r(e).carbonAds?(a(),$(Gt,{key:0,"carbon-ads":r(e).carbonAds},null,8,["carbon-ads"])):h("",!0),c(t.$slots,"aside-ads-after",{},void 0,!0),c(t.$slots,"aside-bottom",{},void 0,!0)]))}}),Wt=g(qt,[["__scopeId","data-v-6d7b3c46"]]);function Jt(){const{theme:n,page:e}=V();return y(()=>{const{text:t="Edit this page",pattern:s=""}=n.value.editLink||{};let o;return typeof s=="function"?o=s(e.value):o=s.replace(/:path/g,e.value.filePath),{url:o,text:t}})}function Yt(){const{page:n,theme:e,frontmatter:t}=V();return y(()=>{var m,L,b,P,S,A,C,w;const s=Be(e.value.sidebar,n.value.relativePath),o=Tt(s),i=Xt(o,G=>G.link.replace(/[?#].*$/,"")),l=i.findIndex(G=>q(n.value.relativePath,G.link)),d=((m=e.value.docFooter)==null?void 0:m.prev)===!1&&!t.value.prev||t.value.prev===!1,v=((L=e.value.docFooter)==null?void 0:L.next)===!1&&!t.value.next||t.value.next===!1;return{prev:d?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??((b=i[l-1])==null?void 0:b.docFooterText)??((P=i[l-1])==null?void 0:P.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((S=i[l-1])==null?void 0:S.link)},next:v?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((A=i[l+1])==null?void 0:A.docFooterText)??((C=i[l+1])==null?void 0:C.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((w=i[l+1])==null?void 0:w.link)}}})}function Xt(n,e){const t=new Set;return n.filter(s=>{const o=e(s);return t.has(o)?!1:t.add(o)})}const F=_({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(n){const e=n,t=y(()=>e.tag??(e.href?"a":"span")),s=y(()=>e.href&&we.test(e.href)||e.target==="_blank");return(o,i)=>(a(),$(D(t.value),{class:N(["VPLink",{link:o.href,"vp-external-link-icon":s.value,"no-icon":o.noIcon}]),href:o.href?r(be)(o.href):void 0,target:o.target??(s.value?"_blank":void 0),rel:o.rel??(s.value?"noreferrer":void 0)},{default:f(()=>[c(o.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),Qt={class:"VPLastUpdated"},Zt=["datetime"],xt=_({__name:"VPDocFooterLastUpdated",setup(n){const{theme:e,page:t,lang:s}=V(),o=y(()=>new Date(t.value.lastUpdated)),i=y(()=>o.value.toISOString()),l=T("");return R(()=>{ee(()=>{var d,v,m;l.value=new Intl.DateTimeFormat((v=(d=e.value.lastUpdated)==null?void 0:d.formatOptions)!=null&&v.forceLocale?s.value:void 0,((m=e.value.lastUpdated)==null?void 0:m.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(o.value)})}),(d,v)=>{var m;return a(),u("p",Qt,[j(I(((m=r(e).lastUpdated)==null?void 0:m.text)||r(e).lastUpdatedText||"Last updated")+": ",1),p("time",{datetime:i.value},I(l.value),9,Zt)])}}}),en=g(xt,[["__scopeId","data-v-475f71b8"]]),De=n=>(B("data-v-4f9813fa"),n=n(),H(),n),tn={key:0,class:"VPDocFooter"},nn={key:0,class:"edit-info"},on={key:0,class:"edit-link"},sn=De(()=>p("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),an={key:1,class:"last-updated"},rn={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},ln=De(()=>p("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),cn={class:"pager"},un=["innerHTML"],dn=["innerHTML"],vn={class:"pager"},pn=["innerHTML"],fn=["innerHTML"],hn=_({__name:"VPDocFooter",setup(n){const{theme:e,page:t,frontmatter:s}=V(),o=Jt(),i=Yt(),l=y(()=>e.value.editLink&&s.value.editLink!==!1),d=y(()=>t.value.lastUpdated),v=y(()=>l.value||d.value||i.value.prev||i.value.next);return(m,L)=>{var b,P,S,A;return v.value?(a(),u("footer",tn,[c(m.$slots,"doc-footer-before",{},void 0,!0),l.value||d.value?(a(),u("div",nn,[l.value?(a(),u("div",on,[k(F,{class:"edit-link-button",href:r(o).url,"no-icon":!0},{default:f(()=>[sn,j(" "+I(r(o).text),1)]),_:1},8,["href"])])):h("",!0),d.value?(a(),u("div",an,[k(en)])):h("",!0)])):h("",!0),(b=r(i).prev)!=null&&b.link||(P=r(i).next)!=null&&P.link?(a(),u("nav",rn,[ln,p("div",cn,[(S=r(i).prev)!=null&&S.link?(a(),$(F,{key:0,class:"pager-link prev",href:r(i).prev.link},{default:f(()=>{var C;return[p("span",{class:"desc",innerHTML:((C=r(e).docFooter)==null?void 0:C.prev)||"Previous page"},null,8,un),p("span",{class:"title",innerHTML:r(i).prev.text},null,8,dn)]}),_:1},8,["href"])):h("",!0)]),p("div",vn,[(A=r(i).next)!=null&&A.link?(a(),$(F,{key:0,class:"pager-link next",href:r(i).next.link},{default:f(()=>{var C;return[p("span",{class:"desc",innerHTML:((C=r(e).docFooter)==null?void 0:C.next)||"Next page"},null,8,pn),p("span",{class:"title",innerHTML:r(i).next.text},null,8,fn)]}),_:1},8,["href"])):h("",!0)])])):h("",!0)])):h("",!0)}}}),_n=g(hn,[["__scopeId","data-v-4f9813fa"]]),mn=n=>(B("data-v-83890dd9"),n=n(),H(),n),bn={class:"container"},kn=mn(()=>p("div",{class:"aside-curtain"},null,-1)),$n={class:"aside-container"},gn={class:"aside-content"},yn={class:"content"},Pn={class:"content-container"},Sn={class:"main"},Vn=_({__name:"VPDoc",setup(n){const{theme:e}=V(),t=ne(),{hasSidebar:s,hasAside:o,leftAside:i}=U(),l=y(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(d,v)=>{const m=W("Content");return a(),u("div",{class:N(["VPDoc",{"has-sidebar":r(s),"has-aside":r(o)}])},[c(d.$slots,"doc-top",{},void 0,!0),p("div",bn,[r(o)?(a(),u("div",{key:0,class:N(["aside",{"left-aside":r(i)}])},[kn,p("div",$n,[p("div",gn,[k(Wt,null,{"aside-top":f(()=>[c(d.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":f(()=>[c(d.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":f(()=>[c(d.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[c(d.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[c(d.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[c(d.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):h("",!0),p("div",yn,[p("div",Pn,[c(d.$slots,"doc-before",{},void 0,!0),p("main",Sn,[k(m,{class:N(["vp-doc",[l.value,r(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),k(_n,null,{"doc-footer-before":f(()=>[c(d.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),c(d.$slots,"doc-after",{},void 0,!0)])])]),c(d.$slots,"doc-bottom",{},void 0,!0)],2)}}}),Ln=g(Vn,[["__scopeId","data-v-83890dd9"]]),Tn=_({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(n){const e=n,t=y(()=>e.href&&we.test(e.href)),s=y(()=>e.tag||e.href?"a":"button");return(o,i)=>(a(),$(D(s.value),{class:N(["VPButton",[o.size,o.theme]]),href:o.href?r(be)(o.href):void 0,target:e.target??(t.value?"_blank":void 0),rel:e.rel??(t.value?"noreferrer":void 0)},{default:f(()=>[j(I(o.text),1)]),_:1},8,["class","href","target","rel"]))}}),wn=g(Tn,[["__scopeId","data-v-14206e74"]]),In=["src","alt"],Nn=_({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(n){return(e,t)=>{const s=W("VPImage",!0);return e.image?(a(),u(M,{key:0},[typeof e.image=="string"||"src"in e.image?(a(),u("img",K({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:r(fe)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,In)):(a(),u(M,{key:1},[k(s,K({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),k(s,K({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):h("",!0)}}}),x=g(Nn,[["__scopeId","data-v-35a7d0b8"]]),Mn=n=>(B("data-v-955009fc"),n=n(),H(),n),An={class:"container"},Cn={class:"main"},Bn={key:0,class:"name"},Hn=["innerHTML"],En=["innerHTML"],Dn=["innerHTML"],Fn={key:0,class:"actions"},On={key:0,class:"image"},jn={class:"image-container"},Un=Mn(()=>p("div",{class:"image-bg"},null,-1)),Gn=_({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(n){const e=Y("hero-image-slot-exists");return(t,s)=>(a(),u("div",{class:N(["VPHero",{"has-image":t.image||r(e)}])},[p("div",An,[p("div",Cn,[c(t.$slots,"home-hero-info-before",{},void 0,!0),c(t.$slots,"home-hero-info",{},()=>[t.name?(a(),u("h1",Bn,[p("span",{innerHTML:t.name,class:"clip"},null,8,Hn)])):h("",!0),t.text?(a(),u("p",{key:1,innerHTML:t.text,class:"text"},null,8,En)):h("",!0),t.tagline?(a(),u("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,Dn)):h("",!0)],!0),c(t.$slots,"home-hero-info-after",{},void 0,!0),t.actions?(a(),u("div",Fn,[(a(!0),u(M,null,E(t.actions,o=>(a(),u("div",{key:o.link,class:"action"},[k(wn,{tag:"a",size:"medium",theme:o.theme,text:o.text,href:o.link,target:o.target,rel:o.rel},null,8,["theme","text","href","target","rel"])]))),128))])):h("",!0),c(t.$slots,"home-hero-actions-after",{},void 0,!0)]),t.image||r(e)?(a(),u("div",On,[p("div",jn,[Un,c(t.$slots,"home-hero-image",{},()=>[t.image?(a(),$(x,{key:0,class:"image-src",image:t.image},null,8,["image"])):h("",!0)],!0)])])):h("",!0)])],2))}}),zn=g(Gn,[["__scopeId","data-v-955009fc"]]),Kn=_({__name:"VPHomeHero",setup(n){const{frontmatter:e}=V();return(t,s)=>r(e).hero?(a(),$(zn,{key:0,class:"VPHomeHero",name:r(e).hero.name,text:r(e).hero.text,tagline:r(e).hero.tagline,image:r(e).hero.image,actions:r(e).hero.actions},{"home-hero-info-before":f(()=>[c(t.$slots,"home-hero-info-before")]),"home-hero-info":f(()=>[c(t.$slots,"home-hero-info")]),"home-hero-info-after":f(()=>[c(t.$slots,"home-hero-info-after")]),"home-hero-actions-after":f(()=>[c(t.$slots,"home-hero-actions-after")]),"home-hero-image":f(()=>[c(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):h("",!0)}}),Rn=n=>(B("data-v-f5e9645b"),n=n(),H(),n),qn={class:"box"},Wn={key:0,class:"icon"},Jn=["innerHTML"],Yn=["innerHTML"],Xn=["innerHTML"],Qn={key:4,class:"link-text"},Zn={class:"link-text-value"},xn=Rn(()=>p("span",{class:"vpi-arrow-right link-text-icon"},null,-1)),eo=_({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(n){return(e,t)=>(a(),$(F,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:f(()=>[p("article",qn,[typeof e.icon=="object"&&e.icon.wrap?(a(),u("div",Wn,[k(x,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(a(),$(x,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(a(),u("div",{key:2,class:"icon",innerHTML:e.icon},null,8,Jn)):h("",!0),p("h2",{class:"title",innerHTML:e.title},null,8,Yn),e.details?(a(),u("p",{key:3,class:"details",innerHTML:e.details},null,8,Xn)):h("",!0),e.linkText?(a(),u("div",Qn,[p("p",Zn,[j(I(e.linkText)+" ",1),xn])])):h("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),to=g(eo,[["__scopeId","data-v-f5e9645b"]]),no={key:0,class:"VPFeatures"},oo={class:"container"},so={class:"items"},ao=_({__name:"VPFeatures",props:{features:{}},setup(n){const e=n,t=y(()=>{const s=e.features.length;if(s){if(s===2)return"grid-2";if(s===3)return"grid-3";if(s%3===0)return"grid-6";if(s>3)return"grid-4"}else return});return(s,o)=>s.features?(a(),u("div",no,[p("div",oo,[p("div",so,[(a(!0),u(M,null,E(s.features,i=>(a(),u("div",{key:i.title,class:N(["item",[t.value]])},[k(to,{icon:i.icon,title:i.title,details:i.details,link:i.link,"link-text":i.linkText,rel:i.rel,target:i.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):h("",!0)}}),ro=g(ao,[["__scopeId","data-v-d0a190d7"]]),io=_({__name:"VPHomeFeatures",setup(n){const{frontmatter:e}=V();return(t,s)=>r(e).features?(a(),$(ro,{key:0,class:"VPHomeFeatures",features:r(e).features},null,8,["features"])):h("",!0)}}),lo=_({__name:"VPHomeContent",setup(n){const{width:e}=xe({initialWidth:0,includeScrollbar:!1});return(t,s)=>(a(),u("div",{class:"vp-doc container",style:Ie(r(e)?{"--vp-offset":`calc(50% - ${r(e)/2}px)`}:{})},[c(t.$slots,"default",{},void 0,!0)],4))}}),co=g(lo,[["__scopeId","data-v-7a48a447"]]),uo={class:"VPHome"},vo=_({__name:"VPHome",setup(n){const{frontmatter:e}=V();return(t,s)=>{const o=W("Content");return a(),u("div",uo,[c(t.$slots,"home-hero-before",{},void 0,!0),k(Kn,null,{"home-hero-info-before":f(()=>[c(t.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[c(t.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[c(t.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[c(t.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[c(t.$slots,"home-hero-image",{},void 0,!0)]),_:3}),c(t.$slots,"home-hero-after",{},void 0,!0),c(t.$slots,"home-features-before",{},void 0,!0),k(io),c(t.$slots,"home-features-after",{},void 0,!0),r(e).markdownStyles!==!1?(a(),$(co,{key:0},{default:f(()=>[k(o)]),_:1})):(a(),$(o,{key:1}))])}}}),po=g(vo,[["__scopeId","data-v-cbb6ec48"]]),fo={},ho={class:"VPPage"};function _o(n,e){const t=W("Content");return a(),u("div",ho,[c(n.$slots,"page-top"),k(t),c(n.$slots,"page-bottom")])}const mo=g(fo,[["render",_o]]),bo=_({__name:"VPContent",setup(n){const{page:e,frontmatter:t}=V(),{hasSidebar:s}=U();return(o,i)=>(a(),u("div",{class:N(["VPContent",{"has-sidebar":r(s),"is-home":r(t).layout==="home"}]),id:"VPContent"},[r(e).isNotFound?c(o.$slots,"not-found",{key:0},()=>[k(Vt)],!0):r(t).layout==="page"?(a(),$(mo,{key:1},{"page-top":f(()=>[c(o.$slots,"page-top",{},void 0,!0)]),"page-bottom":f(()=>[c(o.$slots,"page-bottom",{},void 0,!0)]),_:3})):r(t).layout==="home"?(a(),$(po,{key:2},{"home-hero-before":f(()=>[c(o.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":f(()=>[c(o.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[c(o.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[c(o.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[c(o.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[c(o.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":f(()=>[c(o.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":f(()=>[c(o.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":f(()=>[c(o.$slots,"home-features-after",{},void 0,!0)]),_:3})):r(t).layout&&r(t).layout!=="doc"?(a(),$(D(r(t).layout),{key:3})):(a(),$(Ln,{key:4},{"doc-top":f(()=>[c(o.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":f(()=>[c(o.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":f(()=>[c(o.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":f(()=>[c(o.$slots,"doc-before",{},void 0,!0)]),"doc-after":f(()=>[c(o.$slots,"doc-after",{},void 0,!0)]),"aside-top":f(()=>[c(o.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":f(()=>[c(o.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[c(o.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[c(o.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[c(o.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":f(()=>[c(o.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),ko=g(bo,[["__scopeId","data-v-91765379"]]),$o={class:"container"},go=["innerHTML"],yo=["innerHTML"],Po=_({__name:"VPFooter",setup(n){const{theme:e,frontmatter:t}=V(),{hasSidebar:s}=U();return(o,i)=>r(e).footer&&r(t).footer!==!1?(a(),u("footer",{key:0,class:N(["VPFooter",{"has-sidebar":r(s)}])},[p("div",$o,[r(e).footer.message?(a(),u("p",{key:0,class:"message",innerHTML:r(e).footer.message},null,8,go)):h("",!0),r(e).footer.copyright?(a(),u("p",{key:1,class:"copyright",innerHTML:r(e).footer.copyright},null,8,yo)):h("",!0)])],2)):h("",!0)}}),So=g(Po,[["__scopeId","data-v-c970a860"]]);function Vo(){const{theme:n,frontmatter:e}=V(),t=Te([]),s=y(()=>t.value.length>0);return te(()=>{t.value=ke(e.value.outline??n.value.outline)}),{headers:t,hasLocalNav:s}}const Lo=n=>(B("data-v-bc9dc845"),n=n(),H(),n),To={class:"menu-text"},wo=Lo(()=>p("span",{class:"vpi-chevron-right icon"},null,-1)),Io={class:"header"},No={class:"outline"},Mo=_({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(n){const e=n,{theme:t}=V(),s=T(!1),o=T(0),i=T(),l=T();function d(b){var P;(P=i.value)!=null&&P.contains(b.target)||(s.value=!1)}O(s,b=>{if(b){document.addEventListener("click",d);return}document.removeEventListener("click",d)}),ce("Escape",()=>{s.value=!1}),te(()=>{s.value=!1});function v(){s.value=!s.value,o.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function m(b){b.target.classList.contains("outline-link")&&(l.value&&(l.value.style.transition="none"),Ne(()=>{s.value=!1}))}function L(){s.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(b,P)=>(a(),u("div",{class:"VPLocalNavOutlineDropdown",style:Ie({"--vp-vh":o.value+"px"}),ref_key:"main",ref:i},[b.headers.length>0?(a(),u("button",{key:0,onClick:v,class:N({open:s.value})},[p("span",To,I(r(He)(r(t))),1),wo],2)):(a(),u("button",{key:1,onClick:L},I(r(t).returnToTopLabel||"Return to top"),1)),k(pe,{name:"flyout"},{default:f(()=>[s.value?(a(),u("div",{key:0,ref_key:"items",ref:l,class:"items",onClick:m},[p("div",Io,[p("a",{class:"top-link",href:"#",onClick:L},I(r(t).returnToTopLabel||"Return to top"),1)]),p("div",No,[k(Ee,{headers:b.headers},null,8,["headers"])])],512)):h("",!0)]),_:1})],4))}}),Ao=g(Mo,[["__scopeId","data-v-bc9dc845"]]),Co=n=>(B("data-v-070ab83d"),n=n(),H(),n),Bo={class:"container"},Ho=["aria-expanded"],Eo=Co(()=>p("span",{class:"vpi-align-left menu-icon"},null,-1)),Do={class:"menu-text"},Fo=_({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(n){const{theme:e,frontmatter:t}=V(),{hasSidebar:s}=U(),{headers:o}=Vo(),{y:i}=Me(),l=T(0);R(()=>{l.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),te(()=>{o.value=ke(t.value.outline??e.value.outline)});const d=y(()=>o.value.length===0),v=y(()=>d.value&&!s.value),m=y(()=>({VPLocalNav:!0,"has-sidebar":s.value,empty:d.value,fixed:v.value}));return(L,b)=>r(t).layout!=="home"&&(!v.value||r(i)>=l.value)?(a(),u("div",{key:0,class:N(m.value)},[p("div",Bo,[r(s)?(a(),u("button",{key:0,class:"menu","aria-expanded":L.open,"aria-controls":"VPSidebarNav",onClick:b[0]||(b[0]=P=>L.$emit("open-menu"))},[Eo,p("span",Do,I(r(e).sidebarMenuLabel||"Menu"),1)],8,Ho)):h("",!0),k(Ao,{headers:r(o),navHeight:l.value},null,8,["headers","navHeight"])])],2)):h("",!0)}}),Oo=g(Fo,[["__scopeId","data-v-070ab83d"]]);function jo(){const n=T(!1);function e(){n.value=!0,window.addEventListener("resize",o)}function t(){n.value=!1,window.removeEventListener("resize",o)}function s(){n.value?t():e()}function o(){window.outerWidth>=768&&t()}const i=ne();return O(()=>i.path,t),{isScreenOpen:n,openScreen:e,closeScreen:t,toggleScreen:s}}const Uo={},Go={class:"VPSwitch",type:"button",role:"switch"},zo={class:"check"},Ko={key:0,class:"icon"};function Ro(n,e){return a(),u("button",Go,[p("span",zo,[n.$slots.default?(a(),u("span",Ko,[c(n.$slots,"default",{},void 0,!0)])):h("",!0)])])}const qo=g(Uo,[["render",Ro],["__scopeId","data-v-4a1c76db"]]),Fe=n=>(B("data-v-e40a8bb6"),n=n(),H(),n),Wo=Fe(()=>p("span",{class:"vpi-sun sun"},null,-1)),Jo=Fe(()=>p("span",{class:"vpi-moon moon"},null,-1)),Yo=_({__name:"VPSwitchAppearance",setup(n){const{isDark:e,theme:t}=V(),s=Y("toggle-appearance",()=>{e.value=!e.value}),o=T("");return _e(()=>{o.value=e.value?t.value.lightModeSwitchTitle||"Switch to light theme":t.value.darkModeSwitchTitle||"Switch to dark theme"}),(i,l)=>(a(),$(qo,{title:o.value,class:"VPSwitchAppearance","aria-checked":r(e),onClick:r(s)},{default:f(()=>[Wo,Jo]),_:1},8,["title","aria-checked","onClick"]))}}),$e=g(Yo,[["__scopeId","data-v-e40a8bb6"]]),Xo={key:0,class:"VPNavBarAppearance"},Qo=_({__name:"VPNavBarAppearance",setup(n){const{site:e}=V();return(t,s)=>r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(a(),u("div",Xo,[k($e)])):h("",!0)}}),Zo=g(Qo,[["__scopeId","data-v-af096f4a"]]),ge=T();let Oe=!1,ie=0;function xo(n){const e=T(!1);if(oe){!Oe&&es(),ie++;const t=O(ge,s=>{var o,i,l;s===n.el.value||(o=n.el.value)!=null&&o.contains(s)?(e.value=!0,(i=n.onFocus)==null||i.call(n)):(e.value=!1,(l=n.onBlur)==null||l.call(n))});he(()=>{t(),ie--,ie||ts()})}return et(e)}function es(){document.addEventListener("focusin",je),Oe=!0,ge.value=document.activeElement}function ts(){document.removeEventListener("focusin",je)}function je(){ge.value=document.activeElement}const ns={class:"VPMenuLink"},os=_({__name:"VPMenuLink",props:{item:{}},setup(n){const{page:e}=V();return(t,s)=>(a(),u("div",ns,[k(F,{class:N({active:r(q)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel},{default:f(()=>[j(I(t.item.text),1)]),_:1},8,["class","href","target","rel"])]))}}),se=g(os,[["__scopeId","data-v-8b74d055"]]),ss={class:"VPMenuGroup"},as={key:0,class:"title"},rs=_({__name:"VPMenuGroup",props:{text:{},items:{}},setup(n){return(e,t)=>(a(),u("div",ss,[e.text?(a(),u("p",as,I(e.text),1)):h("",!0),(a(!0),u(M,null,E(e.items,s=>(a(),u(M,null,["link"in s?(a(),$(se,{key:0,item:s},null,8,["item"])):h("",!0)],64))),256))]))}}),is=g(rs,[["__scopeId","data-v-48c802d0"]]),ls={class:"VPMenu"},cs={key:0,class:"items"},us=_({__name:"VPMenu",props:{items:{}},setup(n){return(e,t)=>(a(),u("div",ls,[e.items?(a(),u("div",cs,[(a(!0),u(M,null,E(e.items,s=>(a(),u(M,{key:JSON.stringify(s)},["link"in s?(a(),$(se,{key:0,item:s},null,8,["item"])):"component"in s?(a(),$(D(s.component),K({key:1,ref_for:!0},s.props),null,16)):(a(),$(is,{key:2,text:s.text,items:s.items},null,8,["text","items"]))],64))),128))])):h("",!0),c(e.$slots,"default",{},void 0,!0)]))}}),ds=g(us,[["__scopeId","data-v-7dd3104a"]]),vs=n=>(B("data-v-e5380155"),n=n(),H(),n),ps=["aria-expanded","aria-label"],fs={key:0,class:"text"},hs=["innerHTML"],_s=vs(()=>p("span",{class:"vpi-chevron-down text-icon"},null,-1)),ms={key:1,class:"vpi-more-horizontal icon"},bs={class:"menu"},ks=_({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(n){const e=T(!1),t=T();xo({el:t,onBlur:s});function s(){e.value=!1}return(o,i)=>(a(),u("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:i[1]||(i[1]=l=>e.value=!0),onMouseleave:i[2]||(i[2]=l=>e.value=!1)},[p("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":o.label,onClick:i[0]||(i[0]=l=>e.value=!e.value)},[o.button||o.icon?(a(),u("span",fs,[o.icon?(a(),u("span",{key:0,class:N([o.icon,"option-icon"])},null,2)):h("",!0),o.button?(a(),u("span",{key:1,innerHTML:o.button},null,8,hs)):h("",!0),_s])):(a(),u("span",ms))],8,ps),p("div",bs,[k(ds,{items:o.items},{default:f(()=>[c(o.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),ye=g(ks,[["__scopeId","data-v-e5380155"]]),$s=["href","aria-label","innerHTML"],gs=_({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(n){const e=n,t=y(()=>typeof e.icon=="object"?e.icon.svg:``);return(s,o)=>(a(),u("a",{class:"VPSocialLink no-icon",href:s.link,"aria-label":s.ariaLabel??(typeof s.icon=="string"?s.icon:""),target:"_blank",rel:"noopener",innerHTML:t.value},null,8,$s))}}),ys=g(gs,[["__scopeId","data-v-717b8b75"]]),Ps={class:"VPSocialLinks"},Ss=_({__name:"VPSocialLinks",props:{links:{}},setup(n){return(e,t)=>(a(),u("div",Ps,[(a(!0),u(M,null,E(e.links,({link:s,icon:o,ariaLabel:i})=>(a(),$(ys,{key:s,icon:o,link:s,ariaLabel:i},null,8,["icon","link","ariaLabel"]))),128))]))}}),Pe=g(Ss,[["__scopeId","data-v-ee7a9424"]]),Vs={key:0,class:"group translations"},Ls={class:"trans-title"},Ts={key:1,class:"group"},ws={class:"item appearance"},Is={class:"label"},Ns={class:"appearance-action"},Ms={key:2,class:"group"},As={class:"item social-links"},Cs=_({__name:"VPNavBarExtra",setup(n){const{site:e,theme:t}=V(),{localeLinks:s,currentLang:o}=Q({correspondingLink:!0}),i=y(()=>s.value.length&&o.value.label||e.value.appearance||t.value.socialLinks);return(l,d)=>i.value?(a(),$(ye,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:f(()=>[r(s).length&&r(o).label?(a(),u("div",Vs,[p("p",Ls,I(r(o).label),1),(a(!0),u(M,null,E(r(s),v=>(a(),$(se,{key:v.link,item:v},null,8,["item"]))),128))])):h("",!0),r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(a(),u("div",Ts,[p("div",ws,[p("p",Is,I(r(t).darkModeSwitchLabel||"Appearance"),1),p("div",Ns,[k($e)])])])):h("",!0),r(t).socialLinks?(a(),u("div",Ms,[p("div",As,[k(Pe,{class:"social-links-list",links:r(t).socialLinks},null,8,["links"])])])):h("",!0)]),_:1})):h("",!0)}}),Bs=g(Cs,[["__scopeId","data-v-925effce"]]),Hs=n=>(B("data-v-5dea55bf"),n=n(),H(),n),Es=["aria-expanded"],Ds=Hs(()=>p("span",{class:"container"},[p("span",{class:"top"}),p("span",{class:"middle"}),p("span",{class:"bottom"})],-1)),Fs=[Ds],Os=_({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(n){return(e,t)=>(a(),u("button",{type:"button",class:N(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=s=>e.$emit("click"))},Fs,10,Es))}}),js=g(Os,[["__scopeId","data-v-5dea55bf"]]),Us=["innerHTML"],Gs=_({__name:"VPNavBarMenuLink",props:{item:{}},setup(n){const{page:e}=V();return(t,s)=>(a(),$(F,{class:N({VPNavBarMenuLink:!0,active:r(q)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,noIcon:t.item.noIcon,target:t.item.target,rel:t.item.rel,tabindex:"0"},{default:f(()=>[p("span",{innerHTML:t.item.text},null,8,Us)]),_:1},8,["class","href","noIcon","target","rel"]))}}),zs=g(Gs,[["__scopeId","data-v-ed5ac1f6"]]),Ks=_({__name:"VPNavBarMenuGroup",props:{item:{}},setup(n){const e=n,{page:t}=V(),s=i=>"component"in i?!1:"link"in i?q(t.value.relativePath,i.link,!!e.item.activeMatch):i.items.some(s),o=y(()=>s(e.item));return(i,l)=>(a(),$(ye,{class:N({VPNavBarMenuGroup:!0,active:r(q)(r(t).relativePath,i.item.activeMatch,!!i.item.activeMatch)||o.value}),button:i.item.text,items:i.item.items},null,8,["class","button","items"]))}}),Rs=n=>(B("data-v-e6d46098"),n=n(),H(),n),qs={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},Ws=Rs(()=>p("span",{id:"main-nav-aria-label",class:"visually-hidden"}," Main Navigation ",-1)),Js=_({__name:"VPNavBarMenu",setup(n){const{theme:e}=V();return(t,s)=>r(e).nav?(a(),u("nav",qs,[Ws,(a(!0),u(M,null,E(r(e).nav,o=>(a(),u(M,{key:JSON.stringify(o)},["link"in o?(a(),$(zs,{key:0,item:o},null,8,["item"])):"component"in o?(a(),$(D(o.component),K({key:1,ref_for:!0},o.props),null,16)):(a(),$(Ks,{key:2,item:o},null,8,["item"]))],64))),128))])):h("",!0)}}),Ys=g(Js,[["__scopeId","data-v-e6d46098"]]);function Xs(n){const{localeIndex:e,theme:t}=V();function s(o){var A,C,w;const i=o.split("."),l=(A=t.value.search)==null?void 0:A.options,d=l&&typeof l=="object",v=d&&((w=(C=l.locales)==null?void 0:C[e.value])==null?void 0:w.translations)||null,m=d&&l.translations||null;let L=v,b=m,P=n;const S=i.pop();for(const G of i){let z=null;const J=P==null?void 0:P[G];J&&(z=P=J);const ae=b==null?void 0:b[G];ae&&(z=b=ae);const re=L==null?void 0:L[G];re&&(z=L=re),J||(P=z),ae||(b=z),re||(L=z)}return(L==null?void 0:L[S])??(b==null?void 0:b[S])??(P==null?void 0:P[S])??""}return s}const Qs=["aria-label"],Zs={class:"DocSearch-Button-Container"},xs=p("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1),ea={class:"DocSearch-Button-Placeholder"},ta=p("span",{class:"DocSearch-Button-Keys"},[p("kbd",{class:"DocSearch-Button-Key"}),p("kbd",{class:"DocSearch-Button-Key"},"K")],-1),Se=_({__name:"VPNavBarSearchButton",setup(n){const t=Xs({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(s,o)=>(a(),u("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":r(t)("button.buttonAriaLabel")},[p("span",Zs,[xs,p("span",ea,I(r(t)("button.buttonText")),1)]),ta],8,Qs))}}),na={class:"VPNavBarSearch"},oa={id:"local-search"},sa={key:1,id:"docsearch"},aa=_({__name:"VPNavBarSearch",setup(n){const e=tt(()=>nt(()=>import("./VPLocalSearchBox.Dvyzb8w2.js"),__vite__mapDeps([0,1]))),t=()=>null,{theme:s}=V(),o=T(!1),i=T(!1);R(()=>{});function l(){o.value||(o.value=!0,setTimeout(d,16))}function d(){const b=new Event("keydown");b.key="k",b.metaKey=!0,window.dispatchEvent(b),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||d()},16)}function v(b){const P=b.target,S=P.tagName;return P.isContentEditable||S==="INPUT"||S==="SELECT"||S==="TEXTAREA"}const m=T(!1);ce("k",b=>{(b.ctrlKey||b.metaKey)&&(b.preventDefault(),m.value=!0)}),ce("/",b=>{v(b)||(b.preventDefault(),m.value=!0)});const L="local";return(b,P)=>{var S;return a(),u("div",na,[r(L)==="local"?(a(),u(M,{key:0},[m.value?(a(),$(r(e),{key:0,onClose:P[0]||(P[0]=A=>m.value=!1)})):h("",!0),p("div",oa,[k(Se,{onClick:P[1]||(P[1]=A=>m.value=!0)})])],64)):r(L)==="algolia"?(a(),u(M,{key:1},[o.value?(a(),$(r(t),{key:0,algolia:((S=r(s).search)==null?void 0:S.options)??r(s).algolia,onVnodeBeforeMount:P[2]||(P[2]=A=>i.value=!0)},null,8,["algolia"])):h("",!0),i.value?h("",!0):(a(),u("div",sa,[k(Se,{onClick:l})]))],64)):h("",!0)])}}}),ra=_({__name:"VPNavBarSocialLinks",setup(n){const{theme:e}=V();return(t,s)=>r(e).socialLinks?(a(),$(Pe,{key:0,class:"VPNavBarSocialLinks",links:r(e).socialLinks},null,8,["links"])):h("",!0)}}),ia=g(ra,[["__scopeId","data-v-164c457f"]]),la=["href","rel","target"],ca={key:1},ua={key:2},da=_({__name:"VPNavBarTitle",setup(n){const{site:e,theme:t}=V(),{hasSidebar:s}=U(),{currentLang:o}=Q(),i=y(()=>{var v;return typeof t.value.logoLink=="string"?t.value.logoLink:(v=t.value.logoLink)==null?void 0:v.link}),l=y(()=>{var v;return typeof t.value.logoLink=="string"||(v=t.value.logoLink)==null?void 0:v.rel}),d=y(()=>{var v;return typeof t.value.logoLink=="string"||(v=t.value.logoLink)==null?void 0:v.target});return(v,m)=>(a(),u("div",{class:N(["VPNavBarTitle",{"has-sidebar":r(s)}])},[p("a",{class:"title",href:i.value??r(be)(r(o).link),rel:l.value,target:d.value},[c(v.$slots,"nav-bar-title-before",{},void 0,!0),r(t).logo?(a(),$(x,{key:0,class:"logo",image:r(t).logo},null,8,["image"])):h("",!0),r(t).siteTitle?(a(),u("span",ca,I(r(t).siteTitle),1)):r(t).siteTitle===void 0?(a(),u("span",ua,I(r(e).title),1)):h("",!0),c(v.$slots,"nav-bar-title-after",{},void 0,!0)],8,la)],2))}}),va=g(da,[["__scopeId","data-v-28a961f9"]]),pa={class:"items"},fa={class:"title"},ha=_({__name:"VPNavBarTranslations",setup(n){const{theme:e}=V(),{localeLinks:t,currentLang:s}=Q({correspondingLink:!0});return(o,i)=>r(t).length&&r(s).label?(a(),$(ye,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:r(e).langMenuLabel||"Change language"},{default:f(()=>[p("div",pa,[p("p",fa,I(r(s).label),1),(a(!0),u(M,null,E(r(t),l=>(a(),$(se,{key:l.link,item:l},null,8,["item"]))),128))])]),_:1},8,["label"])):h("",!0)}}),_a=g(ha,[["__scopeId","data-v-c80d9ad0"]]),ma=n=>(B("data-v-822684d1"),n=n(),H(),n),ba={class:"wrapper"},ka={class:"container"},$a={class:"title"},ga={class:"content"},ya={class:"content-body"},Pa=ma(()=>p("div",{class:"divider"},[p("div",{class:"divider-line"})],-1)),Sa=_({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(n){const e=n,{y:t}=Me(),{hasSidebar:s}=U(),{frontmatter:o}=V(),i=T({});return _e(()=>{i.value={"has-sidebar":s.value,home:o.value.layout==="home",top:t.value===0,"screen-open":e.isScreenOpen}}),(l,d)=>(a(),u("div",{class:N(["VPNavBar",i.value])},[p("div",ba,[p("div",ka,[p("div",$a,[k(va,null,{"nav-bar-title-before":f(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),p("div",ga,[p("div",ya,[c(l.$slots,"nav-bar-content-before",{},void 0,!0),k(aa,{class:"search"}),k(Ys,{class:"menu"}),k(_a,{class:"translations"}),k(Zo,{class:"appearance"}),k(ia,{class:"social-links"}),k(Bs,{class:"extra"}),c(l.$slots,"nav-bar-content-after",{},void 0,!0),k(js,{class:"hamburger",active:l.isScreenOpen,onClick:d[0]||(d[0]=v=>l.$emit("toggle-screen"))},null,8,["active"])])])])]),Pa],2))}}),Va=g(Sa,[["__scopeId","data-v-822684d1"]]),La={key:0,class:"VPNavScreenAppearance"},Ta={class:"text"},wa=_({__name:"VPNavScreenAppearance",setup(n){const{site:e,theme:t}=V();return(s,o)=>r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(a(),u("div",La,[p("p",Ta,I(r(t).darkModeSwitchLabel||"Appearance"),1),k($e)])):h("",!0)}}),Ia=g(wa,[["__scopeId","data-v-ffb44008"]]),Na=_({__name:"VPNavScreenMenuLink",props:{item:{}},setup(n){const e=Y("close-screen");return(t,s)=>(a(),$(F,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:r(e),innerHTML:t.item.text},null,8,["href","target","rel","onClick","innerHTML"]))}}),Ma=g(Na,[["__scopeId","data-v-27d04aeb"]]),Aa=_({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(n){const e=Y("close-screen");return(t,s)=>(a(),$(F,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:r(e)},{default:f(()=>[j(I(t.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}}),Ue=g(Aa,[["__scopeId","data-v-7179dbb7"]]),Ca={class:"VPNavScreenMenuGroupSection"},Ba={key:0,class:"title"},Ha=_({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(n){return(e,t)=>(a(),u("div",Ca,[e.text?(a(),u("p",Ba,I(e.text),1)):h("",!0),(a(!0),u(M,null,E(e.items,s=>(a(),$(Ue,{key:s.text,item:s},null,8,["item"]))),128))]))}}),Ea=g(Ha,[["__scopeId","data-v-4b8941ac"]]),Da=n=>(B("data-v-875057a5"),n=n(),H(),n),Fa=["aria-controls","aria-expanded"],Oa=["innerHTML"],ja=Da(()=>p("span",{class:"vpi-plus button-icon"},null,-1)),Ua=["id"],Ga={key:0,class:"item"},za={key:1,class:"item"},Ka={key:2,class:"group"},Ra=_({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(n){const e=n,t=T(!1),s=y(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function o(){t.value=!t.value}return(i,l)=>(a(),u("div",{class:N(["VPNavScreenMenuGroup",{open:t.value}])},[p("button",{class:"button","aria-controls":s.value,"aria-expanded":t.value,onClick:o},[p("span",{class:"button-text",innerHTML:i.text},null,8,Oa),ja],8,Fa),p("div",{id:s.value,class:"items"},[(a(!0),u(M,null,E(i.items,d=>(a(),u(M,{key:JSON.stringify(d)},["link"in d?(a(),u("div",Ga,[k(Ue,{item:d},null,8,["item"])])):"component"in d?(a(),u("div",za,[(a(),$(D(d.component),K({ref_for:!0},d.props,{"screen-menu":""}),null,16))])):(a(),u("div",Ka,[k(Ea,{text:d.text,items:d.items},null,8,["text","items"])]))],64))),128))],8,Ua)],2))}}),qa=g(Ra,[["__scopeId","data-v-875057a5"]]),Wa={key:0,class:"VPNavScreenMenu"},Ja=_({__name:"VPNavScreenMenu",setup(n){const{theme:e}=V();return(t,s)=>r(e).nav?(a(),u("nav",Wa,[(a(!0),u(M,null,E(r(e).nav,o=>(a(),u(M,{key:JSON.stringify(o)},["link"in o?(a(),$(Ma,{key:0,item:o},null,8,["item"])):"component"in o?(a(),$(D(o.component),K({key:1,ref_for:!0},o.props,{"screen-menu":""}),null,16)):(a(),$(qa,{key:2,text:o.text||"",items:o.items},null,8,["text","items"]))],64))),128))])):h("",!0)}}),Ya=_({__name:"VPNavScreenSocialLinks",setup(n){const{theme:e}=V();return(t,s)=>r(e).socialLinks?(a(),$(Pe,{key:0,class:"VPNavScreenSocialLinks",links:r(e).socialLinks},null,8,["links"])):h("",!0)}}),Ge=n=>(B("data-v-362991c2"),n=n(),H(),n),Xa=Ge(()=>p("span",{class:"vpi-languages icon lang"},null,-1)),Qa=Ge(()=>p("span",{class:"vpi-chevron-down icon chevron"},null,-1)),Za={class:"list"},xa=_({__name:"VPNavScreenTranslations",setup(n){const{localeLinks:e,currentLang:t}=Q({correspondingLink:!0}),s=T(!1);function o(){s.value=!s.value}return(i,l)=>r(e).length&&r(t).label?(a(),u("div",{key:0,class:N(["VPNavScreenTranslations",{open:s.value}])},[p("button",{class:"title",onClick:o},[Xa,j(" "+I(r(t).label)+" ",1),Qa]),p("ul",Za,[(a(!0),u(M,null,E(r(e),d=>(a(),u("li",{key:d.link,class:"item"},[k(F,{class:"link",href:d.link},{default:f(()=>[j(I(d.text),1)]),_:2},1032,["href"])]))),128))])],2)):h("",!0)}}),er=g(xa,[["__scopeId","data-v-362991c2"]]),tr={class:"container"},nr=_({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(n){const e=T(null),t=Ae(oe?document.body:null);return(s,o)=>(a(),$(pe,{name:"fade",onEnter:o[0]||(o[0]=i=>t.value=!0),onAfterLeave:o[1]||(o[1]=i=>t.value=!1)},{default:f(()=>[s.open?(a(),u("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[p("div",tr,[c(s.$slots,"nav-screen-content-before",{},void 0,!0),k(Ja,{class:"menu"}),k(er,{class:"translations"}),k(Ia,{class:"appearance"}),k(Ya,{class:"social-links"}),c(s.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):h("",!0)]),_:3}))}}),or=g(nr,[["__scopeId","data-v-833aabba"]]),sr={key:0,class:"VPNav"},ar=_({__name:"VPNav",setup(n){const{isScreenOpen:e,closeScreen:t,toggleScreen:s}=jo(),{frontmatter:o}=V(),i=y(()=>o.value.navbar!==!1);return me("close-screen",t),ee(()=>{oe&&document.documentElement.classList.toggle("hide-nav",!i.value)}),(l,d)=>i.value?(a(),u("header",sr,[k(Va,{"is-screen-open":r(e),onToggleScreen:r(s)},{"nav-bar-title-before":f(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":f(()=>[c(l.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":f(()=>[c(l.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),k(or,{open:r(e)},{"nav-screen-content-before":f(()=>[c(l.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":f(()=>[c(l.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):h("",!0)}}),rr=g(ar,[["__scopeId","data-v-f1e365da"]]),ze=n=>(B("data-v-196b2e5f"),n=n(),H(),n),ir=["role","tabindex"],lr=ze(()=>p("div",{class:"indicator"},null,-1)),cr=ze(()=>p("span",{class:"vpi-chevron-right caret-icon"},null,-1)),ur=[cr],dr={key:1,class:"items"},vr=_({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(n){const e=n,{collapsed:t,collapsible:s,isLink:o,isActiveLink:i,hasActiveLink:l,hasChildren:d,toggle:v}=It(y(()=>e.item)),m=y(()=>d.value?"section":"div"),L=y(()=>o.value?"a":"div"),b=y(()=>d.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),P=y(()=>o.value?void 0:"button"),S=y(()=>[[`level-${e.depth}`],{collapsible:s.value},{collapsed:t.value},{"is-link":o.value},{"is-active":i.value},{"has-active":l.value}]);function A(w){"key"in w&&w.key!=="Enter"||!e.item.link&&v()}function C(){e.item.link&&v()}return(w,G)=>{const z=W("VPSidebarItem",!0);return a(),$(D(m.value),{class:N(["VPSidebarItem",S.value])},{default:f(()=>[w.item.text?(a(),u("div",K({key:0,class:"item",role:P.value},st(w.item.items?{click:A,keydown:A}:{},!0),{tabindex:w.item.items&&0}),[lr,w.item.link?(a(),$(F,{key:0,tag:L.value,class:"link",href:w.item.link,rel:w.item.rel,target:w.item.target},{default:f(()=>[(a(),$(D(b.value),{class:"text",innerHTML:w.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(a(),$(D(b.value),{key:1,class:"text",innerHTML:w.item.text},null,8,["innerHTML"])),w.item.collapsed!=null&&w.item.items&&w.item.items.length?(a(),u("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:C,onKeydown:ot(C,["enter"]),tabindex:"0"},ur,32)):h("",!0)],16,ir)):h("",!0),w.item.items&&w.item.items.length?(a(),u("div",dr,[w.depth<5?(a(!0),u(M,{key:0},E(w.item.items,J=>(a(),$(z,{key:J.text,item:J,depth:w.depth+1},null,8,["item","depth"]))),128)):h("",!0)])):h("",!0)]),_:1},8,["class"])}}}),pr=g(vr,[["__scopeId","data-v-196b2e5f"]]),fr=_({__name:"VPSidebarGroup",props:{items:{}},setup(n){const e=T(!0);let t=null;return R(()=>{t=setTimeout(()=>{t=null,e.value=!1},300)}),at(()=>{t!=null&&(clearTimeout(t),t=null)}),(s,o)=>(a(!0),u(M,null,E(s.items,i=>(a(),u("div",{key:i.text,class:N(["group",{"no-transition":e.value}])},[k(pr,{item:i,depth:0},null,8,["item"])],2))),128))}}),hr=g(fr,[["__scopeId","data-v-9e426adc"]]),Ke=n=>(B("data-v-18756405"),n=n(),H(),n),_r=Ke(()=>p("div",{class:"curtain"},null,-1)),mr={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},br=Ke(()=>p("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),kr=_({__name:"VPSidebar",props:{open:{type:Boolean}},setup(n){const{sidebarGroups:e,hasSidebar:t}=U(),s=n,o=T(null),i=Ae(oe?document.body:null);O([s,o],()=>{var d;s.open?(i.value=!0,(d=o.value)==null||d.focus()):i.value=!1},{immediate:!0,flush:"post"});const l=T(0);return O(e,()=>{l.value+=1},{deep:!0}),(d,v)=>r(t)?(a(),u("aside",{key:0,class:N(["VPSidebar",{open:d.open}]),ref_key:"navEl",ref:o,onClick:v[0]||(v[0]=rt(()=>{},["stop"]))},[_r,p("nav",mr,[br,c(d.$slots,"sidebar-nav-before",{},void 0,!0),(a(),$(hr,{items:r(e),key:l.value},null,8,["items"])),c(d.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):h("",!0)}}),$r=g(kr,[["__scopeId","data-v-18756405"]]),gr=_({__name:"VPSkipLink",setup(n){const e=ne(),t=T();O(()=>e.path,()=>t.value.focus());function s({target:o}){const i=document.getElementById(decodeURIComponent(o.hash).slice(1));if(i){const l=()=>{i.removeAttribute("tabindex"),i.removeEventListener("blur",l)};i.setAttribute("tabindex","-1"),i.addEventListener("blur",l),i.focus(),window.scrollTo(0,0)}}return(o,i)=>(a(),u(M,null,[p("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),p("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:s}," Skip to content ")],64))}}),yr=g(gr,[["__scopeId","data-v-c3508ec8"]]),Pr=_({__name:"Layout",setup(n){const{isOpen:e,open:t,close:s}=U(),o=ne();O(()=>o.path,s),wt(e,s);const{frontmatter:i}=V(),l=Ce(),d=y(()=>!!l["home-hero-image"]);return me("hero-image-slot-exists",d),(v,m)=>{const L=W("Content");return r(i).layout!==!1?(a(),u("div",{key:0,class:N(["Layout",r(i).pageClass])},[c(v.$slots,"layout-top",{},void 0,!0),k(yr),k(pt,{class:"backdrop",show:r(e),onClick:r(s)},null,8,["show","onClick"]),k(rr,null,{"nav-bar-title-before":f(()=>[c(v.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[c(v.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":f(()=>[c(v.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":f(()=>[c(v.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":f(()=>[c(v.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":f(()=>[c(v.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),k(Oo,{open:r(e),onOpenMenu:r(t)},null,8,["open","onOpenMenu"]),k($r,{open:r(e)},{"sidebar-nav-before":f(()=>[c(v.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":f(()=>[c(v.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),k(ko,null,{"page-top":f(()=>[c(v.$slots,"page-top",{},void 0,!0)]),"page-bottom":f(()=>[c(v.$slots,"page-bottom",{},void 0,!0)]),"not-found":f(()=>[c(v.$slots,"not-found",{},void 0,!0)]),"home-hero-before":f(()=>[c(v.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":f(()=>[c(v.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[c(v.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[c(v.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[c(v.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[c(v.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":f(()=>[c(v.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":f(()=>[c(v.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":f(()=>[c(v.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":f(()=>[c(v.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":f(()=>[c(v.$slots,"doc-before",{},void 0,!0)]),"doc-after":f(()=>[c(v.$slots,"doc-after",{},void 0,!0)]),"doc-top":f(()=>[c(v.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":f(()=>[c(v.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":f(()=>[c(v.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":f(()=>[c(v.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":f(()=>[c(v.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[c(v.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[c(v.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[c(v.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),k(So),c(v.$slots,"layout-bottom",{},void 0,!0)],2)):(a(),$(L,{key:1}))}}}),Sr=g(Pr,[["__scopeId","data-v-a9a9e638"]]),Ve={Layout:Sr,enhanceApp:({app:n})=>{n.component("Badge",ut)}},Vr=n=>{if(typeof document>"u")return{stabilizeScrollPosition:o=>async(...i)=>o(...i)};const e=document.documentElement;return{stabilizeScrollPosition:s=>async(...o)=>{const i=s(...o),l=n.value;if(!l)return i;const d=l.offsetTop-e.scrollTop;return await Ne(),e.scrollTop=l.offsetTop-d,i}}},Re="vitepress:tabSharedState",X=typeof localStorage<"u"?localStorage:null,qe="vitepress:tabsSharedState",Lr=()=>{const n=X==null?void 0:X.getItem(qe);if(n)try{return JSON.parse(n)}catch{}return{}},Tr=n=>{X&&X.setItem(qe,JSON.stringify(n))},wr=n=>{const e=it({});O(()=>e.content,(t,s)=>{t&&s&&Tr(t)},{deep:!0}),n.provide(Re,e)},Ir=(n,e)=>{const t=Y(Re);if(!t)throw new Error("[vitepress-plugin-tabs] TabsSharedState should be injected");R(()=>{t.content||(t.content=Lr())});const s=T(),o=y({get(){var v;const l=e.value,d=n.value;if(l){const m=(v=t.content)==null?void 0:v[l];if(m&&d.includes(m))return m}else{const m=s.value;if(m)return m}return d[0]},set(l){const d=e.value;d?t.content&&(t.content[d]=l):s.value=l}});return{selected:o,select:l=>{o.value=l}}};let Le=0;const Nr=()=>(Le++,""+Le);function Mr(){const n=Ce();return y(()=>{var s;const t=(s=n.default)==null?void 0:s.call(n);return t?t.filter(o=>typeof o.type=="object"&&"__name"in o.type&&o.type.__name==="PluginTabsTab"&&o.props).map(o=>{var i;return(i=o.props)==null?void 0:i.label}):[]})}const We="vitepress:tabSingleState",Ar=n=>{me(We,n)},Cr=()=>{const n=Y(We);if(!n)throw new Error("[vitepress-plugin-tabs] TabsSingleState should be injected");return n},Br={class:"plugin-tabs"},Hr=["id","aria-selected","aria-controls","tabindex","onClick"],Er=_({__name:"PluginTabs",props:{sharedStateKey:{}},setup(n){const e=n,t=Mr(),{selected:s,select:o}=Ir(t,lt(e,"sharedStateKey")),i=T(),{stabilizeScrollPosition:l}=Vr(i),d=l(o),v=T([]),m=b=>{var A;const P=t.value.indexOf(s.value);let S;b.key==="ArrowLeft"?S=P>=1?P-1:t.value.length-1:b.key==="ArrowRight"&&(S=P(a(),u("div",Br,[p("div",{ref_key:"tablist",ref:i,class:"plugin-tabs--tab-list",role:"tablist",onKeydown:m},[(a(!0),u(M,null,E(r(t),S=>(a(),u("button",{id:`tab-${S}-${r(L)}`,ref_for:!0,ref_key:"buttonRefs",ref:v,key:S,role:"tab",class:"plugin-tabs--tab","aria-selected":S===r(s),"aria-controls":`panel-${S}-${r(L)}`,tabindex:S===r(s)?0:-1,onClick:()=>r(d)(S)},I(S),9,Hr))),128))],544),c(b.$slots,"default")]))}}),Dr=["id","aria-labelledby"],Fr=_({__name:"PluginTabsTab",props:{label:{}},setup(n){const{uid:e,selected:t}=Cr();return(s,o)=>r(t)===s.label?(a(),u("div",{key:0,id:`panel-${s.label}-${r(e)}`,class:"plugin-tabs--content",role:"tabpanel",tabindex:"0","aria-labelledby":`tab-${s.label}-${r(e)}`},[c(s.$slots,"default",{},void 0,!0)],8,Dr)):h("",!0)}}),Or=g(Fr,[["__scopeId","data-v-9b0d03d2"]]),jr=n=>{wr(n),n.component("PluginTabs",Er),n.component("PluginTabsTab",Or)},Gr={extends:Ve,Layout(){return ct(Ve.Layout,null,{})},enhanceApp({app:n,router:e,siteData:t}){jr(n)}};export{Gr as R,Xs as c,V as u}; diff --git a/dev/assets/constraints_comparison_constraints.md.B-iJ3BIf.js b/dev/assets/constraints_comparison_constraints.md.DvR_s6vO.js similarity index 99% rename from dev/assets/constraints_comparison_constraints.md.B-iJ3BIf.js rename to dev/assets/constraints_comparison_constraints.md.DvR_s6vO.js index d45604f..fedc994 100644 --- a/dev/assets/constraints_comparison_constraints.md.B-iJ3BIf.js +++ b/dev/assets/constraints_comparison_constraints.md.DvR_s6vO.js @@ -1,4 +1,4 @@ -import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.U9t3ZutP.js";const y=JSON.parse('{"title":"Constraints.jl: Streamlining Constraint Definition and Integration in Julia","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/comparison_constraints.md","filePath":"constraints/comparison_constraints.md","lastUpdated":null}'),t={name:"constraints/comparison_constraints.md"},h=n(`

Constraints.jl: Streamlining Constraint Definition and Integration in Julia

Comparison-based Constraints

# Constraints.xcsp_all_differentFunction.
julia
xcsp_all_different(list::Vector{Int})

Return true if all the values of list are different, false otherwise.

Arguments

  • list::Vector{Int}: list of values to check.

Variants

  • :all_different: Global constraint ensuring that all the values of x are all different.
julia
concept(:all_different, x; vals)
+import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.CBLuZwrP.js";const y=JSON.parse('{"title":"Constraints.jl: Streamlining Constraint Definition and Integration in Julia","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/comparison_constraints.md","filePath":"constraints/comparison_constraints.md","lastUpdated":null}'),t={name:"constraints/comparison_constraints.md"},h=n(`

Constraints.jl: Streamlining Constraint Definition and Integration in Julia

Comparison-based Constraints

# Constraints.xcsp_all_differentFunction.
julia
xcsp_all_different(list::Vector{Int})

Return true if all the values of list are different, false otherwise.

Arguments

  • list::Vector{Int}: list of values to check.

Variants

  • :all_different: Global constraint ensuring that all the values of x are all different.
julia
concept(:all_different, x; vals)
 concept(:all_different)(x; vals)

Examples

julia
c = concept(:all_different)
 
 c([1, 2, 3, 4])
diff --git a/dev/assets/constraints_comparison_constraints.md.B-iJ3BIf.lean.js b/dev/assets/constraints_comparison_constraints.md.DvR_s6vO.lean.js
similarity index 76%
rename from dev/assets/constraints_comparison_constraints.md.B-iJ3BIf.lean.js
rename to dev/assets/constraints_comparison_constraints.md.DvR_s6vO.lean.js
index bfc9a6d..332dca7 100644
--- a/dev/assets/constraints_comparison_constraints.md.B-iJ3BIf.lean.js
+++ b/dev/assets/constraints_comparison_constraints.md.DvR_s6vO.lean.js
@@ -1 +1 @@
-import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.U9t3ZutP.js";const y=JSON.parse('{"title":"Constraints.jl: Streamlining Constraint Definition and Integration in Julia","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/comparison_constraints.md","filePath":"constraints/comparison_constraints.md","lastUpdated":null}'),t={name:"constraints/comparison_constraints.md"},h=n("",8),l=[h];function k(p,e,r,E,d,g){return a(),i("div",null,l)}const c=s(t,[["render",k]]);export{y as __pageData,c as default};
+import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.CBLuZwrP.js";const y=JSON.parse('{"title":"Constraints.jl: Streamlining Constraint Definition and Integration in Julia","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/comparison_constraints.md","filePath":"constraints/comparison_constraints.md","lastUpdated":null}'),t={name:"constraints/comparison_constraints.md"},h=n("",8),l=[h];function k(p,e,r,E,d,g){return a(),i("div",null,l)}const c=s(t,[["render",k]]);export{y as __pageData,c as default};
diff --git a/dev/assets/constraints_connection_constraints.md.CDd_cK_0.js b/dev/assets/constraints_connection_constraints.md.C8fXb99X.js
similarity index 99%
rename from dev/assets/constraints_connection_constraints.md.CDd_cK_0.js
rename to dev/assets/constraints_connection_constraints.md.C8fXb99X.js
index 00fe8df..c890300 100644
--- a/dev/assets/constraints_connection_constraints.md.CDd_cK_0.js
+++ b/dev/assets/constraints_connection_constraints.md.C8fXb99X.js
@@ -1,4 +1,4 @@
-import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.U9t3ZutP.js";const c=JSON.parse('{"title":"Constraints.jl: Streamlining Constraint Definition and Integration in Julia","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/connection_constraints.md","filePath":"constraints/connection_constraints.md","lastUpdated":null}'),t={name:"constraints/connection_constraints.md"},h=n(`

Constraints.jl: Streamlining Constraint Definition and Integration in Julia

Connection Constraints

# Constraints.xcsp_maximumFunction.
julia
xcsp_maximum(; list, condition)

Return true if the maximum constraint is satisfied, false otherwise. The maximum constraint is a global constraint used in constraint programming that specifies that a certain condition should hold for the maximum value in a list of variables.

Arguments

  • list::Union{AbstractVector, Tuple}: list of values to check.

  • condition::Tuple: condition to check.

Variants

  • :maximum: The maximum constraint is a global constraint used in constraint programming that specifies that a certain condition should hold for the maximum value in a list of variables.
julia
concept(:maximum, x; op, val)
+import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.CBLuZwrP.js";const c=JSON.parse('{"title":"Constraints.jl: Streamlining Constraint Definition and Integration in Julia","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/connection_constraints.md","filePath":"constraints/connection_constraints.md","lastUpdated":null}'),t={name:"constraints/connection_constraints.md"},h=n(`

Constraints.jl: Streamlining Constraint Definition and Integration in Julia

Connection Constraints

# Constraints.xcsp_maximumFunction.
julia
xcsp_maximum(; list, condition)

Return true if the maximum constraint is satisfied, false otherwise. The maximum constraint is a global constraint used in constraint programming that specifies that a certain condition should hold for the maximum value in a list of variables.

Arguments

  • list::Union{AbstractVector, Tuple}: list of values to check.

  • condition::Tuple: condition to check.

Variants

  • :maximum: The maximum constraint is a global constraint used in constraint programming that specifies that a certain condition should hold for the maximum value in a list of variables.
julia
concept(:maximum, x; op, val)
 concept(:maximum)(x; op, val)

Examples

julia
c = concept(:maximum)
 
 c([1, 2, 3, 4, 5]; op = ==, val = 5)
diff --git a/dev/assets/constraints_connection_constraints.md.CDd_cK_0.lean.js b/dev/assets/constraints_connection_constraints.md.C8fXb99X.lean.js
similarity index 76%
rename from dev/assets/constraints_connection_constraints.md.CDd_cK_0.lean.js
rename to dev/assets/constraints_connection_constraints.md.C8fXb99X.lean.js
index 801a263..0c6abc8 100644
--- a/dev/assets/constraints_connection_constraints.md.CDd_cK_0.lean.js
+++ b/dev/assets/constraints_connection_constraints.md.C8fXb99X.lean.js
@@ -1 +1 @@
-import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.U9t3ZutP.js";const c=JSON.parse('{"title":"Constraints.jl: Streamlining Constraint Definition and Integration in Julia","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/connection_constraints.md","filePath":"constraints/connection_constraints.md","lastUpdated":null}'),t={name:"constraints/connection_constraints.md"},h=n("",10),l=[h];function k(p,e,r,E,d,o){return a(),i("div",null,l)}const y=s(t,[["render",k]]);export{c as __pageData,y as default};
+import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.CBLuZwrP.js";const c=JSON.parse('{"title":"Constraints.jl: Streamlining Constraint Definition and Integration in Julia","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/connection_constraints.md","filePath":"constraints/connection_constraints.md","lastUpdated":null}'),t={name:"constraints/connection_constraints.md"},h=n("",10),l=[h];function k(p,e,r,E,d,o){return a(),i("div",null,l)}const y=s(t,[["render",k]]);export{c as __pageData,y as default};
diff --git a/dev/assets/constraints_constraint_commons.md.Crs_7fzT.js b/dev/assets/constraints_constraint_commons.md.BsJHChqx.js
similarity index 99%
rename from dev/assets/constraints_constraint_commons.md.Crs_7fzT.js
rename to dev/assets/constraints_constraint_commons.md.BsJHChqx.js
index 641568f..3aa7db1 100644
--- a/dev/assets/constraints_constraint_commons.md.Crs_7fzT.js
+++ b/dev/assets/constraints_constraint_commons.md.BsJHChqx.js
@@ -1,4 +1,4 @@
-import{_ as s,c as i,o as a,a6 as t}from"./chunks/framework.U9t3ZutP.js";const k=JSON.parse('{"title":"ConstraintCommons.jl","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/constraint_commons.md","filePath":"constraints/constraint_commons.md","lastUpdated":null}'),e={name:"constraints/constraint_commons.md"},n=t(`

ConstraintCommons.jl

ConstraintCommons.jl is an essential package within the Julia Constraints ecosystem designed to facilitate the development and interoperability of constraint programming solutions in Julia. It serves as a foundational layer that provides shared structures, abstract types, functions, and generic methods utilized by both basic feature packages and learning-oriented packages.

Only advanced users or package developers are likely to use it. The package covers parameters, (regular) languages, Core or Base methods extensions, sampling, extrema, and dictionaries.

Parameters

This section of the package list or extract parameters based on the XCSP3-core specifications. Note that, for the foreseeable future, the default constraints specification will follow these specifications.

# ConstraintCommons.USUAL_CONSTRAINT_PARAMETERSConstant.
julia
const USUAL_CONSTRAINT_PARAMETERS

List of usual constraints parameters (based on XCSP3-core constraints). The list is based on the nature of each kind of parameter instead of the keywords used in the XCSP3-core format.

julia
const USUAL_CONSTRAINT_PARAMETERS = [
+import{_ as s,c as i,o as a,a7 as t}from"./chunks/framework.CBLuZwrP.js";const k=JSON.parse('{"title":"ConstraintCommons.jl","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/constraint_commons.md","filePath":"constraints/constraint_commons.md","lastUpdated":null}'),e={name:"constraints/constraint_commons.md"},n=t(`

ConstraintCommons.jl

ConstraintCommons.jl is an essential package within the Julia Constraints ecosystem designed to facilitate the development and interoperability of constraint programming solutions in Julia. It serves as a foundational layer that provides shared structures, abstract types, functions, and generic methods utilized by both basic feature packages and learning-oriented packages.

Only advanced users or package developers are likely to use it. The package covers parameters, (regular) languages, Core or Base methods extensions, sampling, extrema, and dictionaries.

Parameters

This section of the package list or extract parameters based on the XCSP3-core specifications. Note that, for the foreseeable future, the default constraints specification will follow these specifications.

# ConstraintCommons.USUAL_CONSTRAINT_PARAMETERSConstant.
julia
const USUAL_CONSTRAINT_PARAMETERS

List of usual constraints parameters (based on XCSP3-core constraints). The list is based on the nature of each kind of parameter instead of the keywords used in the XCSP3-core format.

julia
const USUAL_CONSTRAINT_PARAMETERS = [
     :bool, # boolean parameter
     :dim, # dimension, an integer parameter used along the pair_vars or vals parameters
     :id, # index to target one variable in the input vector
diff --git a/dev/assets/constraints_constraint_commons.md.Crs_7fzT.lean.js b/dev/assets/constraints_constraint_commons.md.BsJHChqx.lean.js
similarity index 72%
rename from dev/assets/constraints_constraint_commons.md.Crs_7fzT.lean.js
rename to dev/assets/constraints_constraint_commons.md.BsJHChqx.lean.js
index bef2a94..3e5b0b0 100644
--- a/dev/assets/constraints_constraint_commons.md.Crs_7fzT.lean.js
+++ b/dev/assets/constraints_constraint_commons.md.BsJHChqx.lean.js
@@ -1 +1 @@
-import{_ as s,c as i,o as a,a6 as t}from"./chunks/framework.U9t3ZutP.js";const k=JSON.parse('{"title":"ConstraintCommons.jl","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/constraint_commons.md","filePath":"constraints/constraint_commons.md","lastUpdated":null}'),e={name:"constraints/constraint_commons.md"},n=t("",55),o=[n];function r(l,p,h,c,d,m){return a(),i("div",null,o)}const g=s(e,[["render",r]]);export{k as __pageData,g as default};
+import{_ as s,c as i,o as a,a7 as t}from"./chunks/framework.CBLuZwrP.js";const k=JSON.parse('{"title":"ConstraintCommons.jl","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/constraint_commons.md","filePath":"constraints/constraint_commons.md","lastUpdated":null}'),e={name:"constraints/constraint_commons.md"},n=t("",55),o=[n];function r(l,p,h,c,d,m){return a(),i("div",null,o)}const g=s(e,[["render",r]]);export{k as __pageData,g as default};
diff --git a/dev/assets/constraints_constraint_domains.md.BVQ160Uq.js b/dev/assets/constraints_constraint_domains.md.UcZtuCfF.js
similarity index 99%
rename from dev/assets/constraints_constraint_domains.md.BVQ160Uq.js
rename to dev/assets/constraints_constraint_domains.md.UcZtuCfF.js
index c01234b..f599d7b 100644
--- a/dev/assets/constraints_constraint_domains.md.BVQ160Uq.js
+++ b/dev/assets/constraints_constraint_domains.md.UcZtuCfF.js
@@ -1,4 +1,4 @@
-import{_ as s,c as i,o as a,a6 as t}from"./chunks/framework.U9t3ZutP.js";const u=JSON.parse('{"title":"ConstraintDomains.jl: Defining and Exploring Variable Domains within JuliaConstraints","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/constraint_domains.md","filePath":"constraints/constraint_domains.md","lastUpdated":null}'),n={name:"constraints/constraint_domains.md"},e=t(`

ConstraintDomains.jl: Defining and Exploring Variable Domains within JuliaConstraints

ConstraintDomains.jl stands as a critical package within the Julia Constraints ecosystem, focusing on the definition and manipulation of variable domains that underpin the search spaces of constraint programming problems. This package provides the infrastructure necessary for specifying both discrete and continuous domains, thereby enabling a broad range of constraint programming applications.

Key Features and Functionalities

  • AbstractDomain Super Type: At the foundation of ConstraintDomains.jl is the AbstractDomain type, an abstract supertype for all domain types. Implementations of AbstractDomain must provide methods for checking membership (∈), generating random elements (rand), and determining the domain's size or range (length). These functionalities are essential for defining the behavior and properties of variable domains within constraint models.

  • Domain Types: The package distinguishes between various domain types to cater to different needs:

    • ContinuousDomain: A supertype for domains representing continuous ranges of real numbers.

    • DiscreteDomain: Serves as a supertype for domains defined by discrete sets or ranges of numbers.

    • EmptyDomain: Handles yet-to-be-defined domains, facilitating dynamic problem formulation.

    • Intervals and RangeDomain: Represent continuous intervals and discrete ranges, respectively, providing flexible domain specification options.

  • Dynamic Domain Manipulation: ConstraintDomains.jl supports dynamic changes to domains, allowing for the addition (add!) and deletion (delete!) of elements, crucial for problems where domain definitions evolve based on the search process or external inputs.

  • Exploration Settings and Methods: The package offers ExploreSettings to configure the exploration of search spaces, including parameters for complete searches, maximum samplings, and solution limits. This feature is pivotal for tailoring the search process to the problem's characteristics and the computational resources available.

  • Support for Advanced Modeling: Beyond basic domain definition and manipulation, ConstraintDomains.jl integrates with learning and parameter exploration tools. For instance, FakeAutomaton facilitates the generation of pseudo-automata for parameter exploration, while the package also provides functions for generating random parameters (generate_parameters), accessing domain internals (get_domain), and merging or intersecting domains (merge_domains, intersect_domains).

Empowering Constraint Programming in Julia

ConstraintDomains.jl embodies the versatility and power of the JuliaConstraints ecosystem, offering users a comprehensive toolkit for defining and exploring variable domains. By abstracting complex domain manipulations and providing a rich set of functionalities, ConstraintDomains.jl enhances the ease and efficiency of modeling constraint programming problems. Whether for educational purposes, research, or practical applications, this package lays the groundwork for advanced problem-solving strategies in the realm of constraint programming.

Commons

# ConstraintDomains.AbstractDomainType.
julia
AbstractDomain

An abstract super type for any domain type. A domain type D <: AbstractDomain must implement the following methods to properly interface AbstractDomain.

  • Base.∈(val, ::D)

  • Base.rand(::D)

  • Base.length(::D) that is the number of elements in a discrete domain, and the distance between bounds or similar for a continuous domain

Additionally, if the domain is used in a dynamic context, it can extend

  • add!(::D, args)

  • delete!(::D, args)

where args depends on D's structure

source


# ConstraintDomains.EmptyDomainType.
julia
EmptyDomain

A struct to handle yet to be defined domains.

source


# ConstraintDomains.domainFunction.
julia
domain()

Construct an EmptyDomain.

source

julia
domain(a::Tuple{T, Bool}, b::Tuple{T, Bool}) where {T <: Real}
+import{_ as s,c as i,o as a,a7 as t}from"./chunks/framework.CBLuZwrP.js";const u=JSON.parse('{"title":"ConstraintDomains.jl: Defining and Exploring Variable Domains within JuliaConstraints","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/constraint_domains.md","filePath":"constraints/constraint_domains.md","lastUpdated":null}'),n={name:"constraints/constraint_domains.md"},e=t(`

ConstraintDomains.jl: Defining and Exploring Variable Domains within JuliaConstraints

ConstraintDomains.jl stands as a critical package within the Julia Constraints ecosystem, focusing on the definition and manipulation of variable domains that underpin the search spaces of constraint programming problems. This package provides the infrastructure necessary for specifying both discrete and continuous domains, thereby enabling a broad range of constraint programming applications.

Key Features and Functionalities

  • AbstractDomain Super Type: At the foundation of ConstraintDomains.jl is the AbstractDomain type, an abstract supertype for all domain types. Implementations of AbstractDomain must provide methods for checking membership (∈), generating random elements (rand), and determining the domain's size or range (length). These functionalities are essential for defining the behavior and properties of variable domains within constraint models.

  • Domain Types: The package distinguishes between various domain types to cater to different needs:

    • ContinuousDomain: A supertype for domains representing continuous ranges of real numbers.

    • DiscreteDomain: Serves as a supertype for domains defined by discrete sets or ranges of numbers.

    • EmptyDomain: Handles yet-to-be-defined domains, facilitating dynamic problem formulation.

    • Intervals and RangeDomain: Represent continuous intervals and discrete ranges, respectively, providing flexible domain specification options.

  • Dynamic Domain Manipulation: ConstraintDomains.jl supports dynamic changes to domains, allowing for the addition (add!) and deletion (delete!) of elements, crucial for problems where domain definitions evolve based on the search process or external inputs.

  • Exploration Settings and Methods: The package offers ExploreSettings to configure the exploration of search spaces, including parameters for complete searches, maximum samplings, and solution limits. This feature is pivotal for tailoring the search process to the problem's characteristics and the computational resources available.

  • Support for Advanced Modeling: Beyond basic domain definition and manipulation, ConstraintDomains.jl integrates with learning and parameter exploration tools. For instance, FakeAutomaton facilitates the generation of pseudo-automata for parameter exploration, while the package also provides functions for generating random parameters (generate_parameters), accessing domain internals (get_domain), and merging or intersecting domains (merge_domains, intersect_domains).

Empowering Constraint Programming in Julia

ConstraintDomains.jl embodies the versatility and power of the JuliaConstraints ecosystem, offering users a comprehensive toolkit for defining and exploring variable domains. By abstracting complex domain manipulations and providing a rich set of functionalities, ConstraintDomains.jl enhances the ease and efficiency of modeling constraint programming problems. Whether for educational purposes, research, or practical applications, this package lays the groundwork for advanced problem-solving strategies in the realm of constraint programming.

Commons

# ConstraintDomains.AbstractDomainType.
julia
AbstractDomain

An abstract super type for any domain type. A domain type D <: AbstractDomain must implement the following methods to properly interface AbstractDomain.

  • Base.∈(val, ::D)

  • Base.rand(::D)

  • Base.length(::D) that is the number of elements in a discrete domain, and the distance between bounds or similar for a continuous domain

Additionally, if the domain is used in a dynamic context, it can extend

  • add!(::D, args)

  • delete!(::D, args)

where args depends on D's structure

source


# ConstraintDomains.EmptyDomainType.
julia
EmptyDomain

A struct to handle yet to be defined domains.

source


# ConstraintDomains.domainFunction.
julia
domain()

Construct an EmptyDomain.

source

julia
domain(a::Tuple{T, Bool}, b::Tuple{T, Bool}) where {T <: Real}
 domain(intervals::Vector{Tuple{Tuple{T, Bool},Tuple{T, Bool}}}) where {T <: Real}

Construct a domain of continuous interval(s).

source

julia
domain(values)
 domain(range::R) where {T <: Real, R <: AbstractRange{T}}

Construct either a SetDomain or a \`RangeDomain\`\`.

julia
d1 = domain(1:5)
 d2 = domain([53.69, 89.2, 0.12])
diff --git a/dev/assets/constraints_constraint_domains.md.BVQ160Uq.lean.js b/dev/assets/constraints_constraint_domains.md.UcZtuCfF.lean.js
similarity index 76%
rename from dev/assets/constraints_constraint_domains.md.BVQ160Uq.lean.js
rename to dev/assets/constraints_constraint_domains.md.UcZtuCfF.lean.js
index 7bdad10..d9149d8 100644
--- a/dev/assets/constraints_constraint_domains.md.BVQ160Uq.lean.js
+++ b/dev/assets/constraints_constraint_domains.md.UcZtuCfF.lean.js
@@ -1 +1 @@
-import{_ as s,c as i,o as a,a6 as t}from"./chunks/framework.U9t3ZutP.js";const u=JSON.parse('{"title":"ConstraintDomains.jl: Defining and Exploring Variable Domains within JuliaConstraints","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/constraint_domains.md","filePath":"constraints/constraint_domains.md","lastUpdated":null}'),n={name:"constraints/constraint_domains.md"},e=t("",128),l=[e];function r(h,p,o,d,k,c){return a(),i("div",null,l)}const E=s(n,[["render",r]]);export{u as __pageData,E as default};
+import{_ as s,c as i,o as a,a7 as t}from"./chunks/framework.CBLuZwrP.js";const u=JSON.parse('{"title":"ConstraintDomains.jl: Defining and Exploring Variable Domains within JuliaConstraints","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/constraint_domains.md","filePath":"constraints/constraint_domains.md","lastUpdated":null}'),n={name:"constraints/constraint_domains.md"},e=t("",128),l=[e];function r(h,p,o,d,k,c){return a(),i("div",null,l)}const E=s(n,[["render",r]]);export{u as __pageData,E as default};
diff --git a/dev/assets/constraints_constraint_models.md.DxJEG5NU.js b/dev/assets/constraints_constraint_models.md.Be-wftur.js
similarity index 99%
rename from dev/assets/constraints_constraint_models.md.DxJEG5NU.js
rename to dev/assets/constraints_constraint_models.md.Be-wftur.js
index 1ec1bb7..0179dcb 100644
--- a/dev/assets/constraints_constraint_models.md.DxJEG5NU.js
+++ b/dev/assets/constraints_constraint_models.md.Be-wftur.js
@@ -1,4 +1,4 @@
-import{_ as n,c as t,j as s,a as i,a6 as a,o as e}from"./chunks/framework.U9t3ZutP.js";const T=JSON.parse('{"title":"ConstraintModels.jl","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/constraint_models.md","filePath":"constraints/constraint_models.md","lastUpdated":null}'),l={name:"constraints/constraint_models.md"},h=a(`

ConstraintModels.jl

Documentation for ConstraintModels.jl.

# ConstraintModels.SudokuInstanceType.
julia
mutable struct SudokuInstance{T <: Integer} <: AbstractMatrix{T}

A struct for SudokuInstances, which is a subtype of AbstractMatrix.

julia
SudokuInstance(A::AbstractMatrix{T})
+import{_ as n,c as t,j as s,a as i,a7 as a,o as e}from"./chunks/framework.CBLuZwrP.js";const T=JSON.parse('{"title":"ConstraintModels.jl","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/constraint_models.md","filePath":"constraints/constraint_models.md","lastUpdated":null}'),l={name:"constraints/constraint_models.md"},h=a(`

ConstraintModels.jl

Documentation for ConstraintModels.jl.

# ConstraintModels.SudokuInstanceType.
julia
mutable struct SudokuInstance{T <: Integer} <: AbstractMatrix{T}

A struct for SudokuInstances, which is a subtype of AbstractMatrix.

julia
SudokuInstance(A::AbstractMatrix{T})
 SudokuInstance(::Type{T}, n::Int) # fill in blank sudoku of type T
 SudokuInstance(n::Int) # fill in blank sudoku of type Int
 SudokuInstance(::Type{T}) # fill in "standard" 9×9 sudoku of type T
diff --git a/dev/assets/constraints_constraint_models.md.DxJEG5NU.lean.js b/dev/assets/constraints_constraint_models.md.Be-wftur.lean.js
similarity index 93%
rename from dev/assets/constraints_constraint_models.md.DxJEG5NU.lean.js
rename to dev/assets/constraints_constraint_models.md.Be-wftur.lean.js
index 3b369c5..dea9c21 100644
--- a/dev/assets/constraints_constraint_models.md.DxJEG5NU.lean.js
+++ b/dev/assets/constraints_constraint_models.md.Be-wftur.lean.js
@@ -1 +1 @@
-import{_ as n,c as t,j as s,a as i,a6 as a,o as e}from"./chunks/framework.U9t3ZutP.js";const T=JSON.parse('{"title":"ConstraintModels.jl","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/constraint_models.md","filePath":"constraints/constraint_models.md","lastUpdated":null}'),l={name:"constraints/constraint_models.md"},h=a("",6),p={style:{"border-width":"1px","border-style":"solid","border-color":"black",padding:"1em","border-radius":"25px"}},r=s("a",{id:"Base.Multimedia.display-Tuple{Any, ConstraintModels.SudokuInstance}",href:"#Base.Multimedia.display-Tuple{Any, ConstraintModels.SudokuInstance}"},"#",-1),d=s("b",null,[s("u",null,"Base.Multimedia.display")],-1),o=s("i",null,"Method",-1),k=a("",1),c={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},u={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.481ex",height:"1.136ex",role:"img",focusable:"false",viewBox:"0 -491 2422.4 502","aria-hidden":"true"},g=a("",1),y=[g],C=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"n"),s("mo",null,"×"),s("mi",null,"n")])],-1),b=s("p",null,[s("a",{href:"https://github.com/JuliaConstraints/ConstraintModels.jl/blob/v0.3.0/src/sudoku.jl#L312-L318",target:"_blank",rel:"noreferrer"},"source")],-1),F=a("",31);function E(m,v,B,f,_,M){return e(),t("div",null,[h,s("div",p,[r,i(" "),d,i(" — "),o,i(". "),k,s("p",null,[i("Displays an "),s("mjx-container",c,[(e(),t("svg",u,y)),C]),i(" SudokuInstance.")]),b]),F])}const x=n(l,[["render",E]]);export{T as __pageData,x as default};
+import{_ as n,c as t,j as s,a as i,a7 as a,o as e}from"./chunks/framework.CBLuZwrP.js";const T=JSON.parse('{"title":"ConstraintModels.jl","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/constraint_models.md","filePath":"constraints/constraint_models.md","lastUpdated":null}'),l={name:"constraints/constraint_models.md"},h=a("",6),p={style:{"border-width":"1px","border-style":"solid","border-color":"black",padding:"1em","border-radius":"25px"}},r=s("a",{id:"Base.Multimedia.display-Tuple{Any, ConstraintModels.SudokuInstance}",href:"#Base.Multimedia.display-Tuple{Any, ConstraintModels.SudokuInstance}"},"#",-1),d=s("b",null,[s("u",null,"Base.Multimedia.display")],-1),o=s("i",null,"Method",-1),k=a("",1),c={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},u={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.481ex",height:"1.136ex",role:"img",focusable:"false",viewBox:"0 -491 2422.4 502","aria-hidden":"true"},g=a("",1),y=[g],C=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"n"),s("mo",null,"×"),s("mi",null,"n")])],-1),b=s("p",null,[s("a",{href:"https://github.com/JuliaConstraints/ConstraintModels.jl/blob/v0.3.0/src/sudoku.jl#L312-L318",target:"_blank",rel:"noreferrer"},"source")],-1),F=a("",31);function E(m,v,B,f,_,M){return e(),t("div",null,[h,s("div",p,[r,i(" "),d,i(" — "),o,i(". "),k,s("p",null,[i("Displays an "),s("mjx-container",c,[(e(),t("svg",u,y)),C]),i(" SudokuInstance.")]),b]),F])}const x=n(l,[["render",E]]);export{T as __pageData,x as default};
diff --git a/dev/assets/constraints_constraints.md.BeuGrere.js b/dev/assets/constraints_constraints.md.B2k7G520.js
similarity index 99%
rename from dev/assets/constraints_constraints.md.BeuGrere.js
rename to dev/assets/constraints_constraints.md.B2k7G520.js
index 6097a0d..cbcb821 100644
--- a/dev/assets/constraints_constraints.md.BeuGrere.js
+++ b/dev/assets/constraints_constraints.md.B2k7G520.js
@@ -1,3 +1,3 @@
-import{_ as s,c as i,o as t,a6 as a}from"./chunks/framework.U9t3ZutP.js";const u=JSON.parse('{"title":"Constraints.jl: Streamlining Constraint Definition and Integration in Julia","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/constraints.md","filePath":"constraints/constraints.md","lastUpdated":null}'),n={name:"constraints/constraints.md"},e=a(`

Constraints.jl: Streamlining Constraint Definition and Integration in Julia

Constraints.jl is a pivotal package within the JuliaConstraints ecosystem, designed to facilitate the definition, manipulation, and application of constraints in constraint programming (CP). This package is central to handling both standard and complex constraints, making it an indispensable tool for developers and researchers working in CP.

Key Features and Functionalities

  • Integration of XCSP3-core Constraints: One of the standout features of Constraints.jl is its incorporation of the XCSP3-core constraints as usual constraints within Julia. This integration ensures that users can define and work with a wide range of standard constraints, following the specifications outlined in the XCSP3-core, directly in Julia. The use of USUAL_CONSTRAINTS dictionary allows for straightforward addition and manipulation of these constraints, enhancing the package's utility and flexibility.

  • Learning Package Integration: Constraints.jl goes beyond traditional constraint handling by offering the capability to include results from various learning packages within the JuliaConstraints organization. This feature allows for the enhancement of usual constraints and those from the Global Constraints Catalog with learned parameters and behaviors, significantly improving constraint applicability and performance in complex CP problems.

  • Constraint Definition and Symmetry Handling: The package provides a simple yet powerful syntax for defining new constraints (@usual) and managing their symmetries through the USUAL_SYMMETRIES dictionary. This approach simplifies the creation of new constraints and the optimization of constraint search spaces by avoiding redundant explorations.

  • Advanced Constraint Functionalities: At the core of Constraints.jl is the Constraint type, encapsulating the essential elements of a constraint, including its concept (a Boolean function determining satisfaction) and an error function (providing a preference measure over invalid assignments). These components are crucial for defining how constraints behave and are evaluated within a CP model.

  • Flexible Constraint Application: The package supports a range of methods for interacting with constraints, such as args, concept, error_f, params_length, symmetries, and xcsp_intension. These methods offer users the ability to examine constraint properties, apply constraints to variable assignments, and work with intensional constraints defined by predicates. Such flexibility is vital for tailoring constraint behavior to specific problems and contexts.

Enabling Advanced Modeling in Constraint Programming

Constraints.jl embodies the JuliaConstraints ecosystem's commitment to providing robust, flexible tools for constraint programming. By integrating standard constraints, facilitating the incorporation of learned behaviors, and offering comprehensive tools for constraint definition and application, Constraints.jl significantly enhances the modeling capabilities available to CP practitioners. Whether for educational purposes, research, or solving practical CP problems, Constraints.jl offers a sophisticated, user-friendly platform for working with constraints in Julia.

Basic tools

# Constraints.USUAL_SYMMETRIESConstant.
julia
USUAL_SYMMETRIES

A Dictionary that contains the function to apply for each symmetry to avoid searching a whole space.

source


# Constraints.ConstraintType.
julia
Constraint

Parametric structure with the following fields.

  • concept: a Boolean function that, given an assignment x, outputs true if x satisfies the constraint, and false otherwise.

  • error: a positive function that works as preferences over invalid assignments. Return 0.0 if the constraint is satisfied, and a strictly positive real otherwise.

source


# Constraints.conceptFunction.
julia
concept(c::Constraint)

Return the concept (function) of constraint c. concept(c::Constraint, x...; param = nothing) Apply the concept of c to values x and optionally param.

source

julia
concept(s::Symbol, args...; kargs...)

Return the concept of the constraint s applied to args and kargs. This is a shortcut for concept(USUAL_CONSTRAINTS[s])(args...; kargs...).

Arguments

  • s::Symbol: the constraint name.

  • args...: the arguments to apply the concept to.

  • kargs...: the keyword arguments to apply the concept to.

Example

julia
concept(:all_different, [1, 2, 3])

source


# Constraints.error_fFunction.
julia
error_f(c::Constraint)

Return the error function of constraint c. error_f(c::Constraint, x; param = nothing) Apply the error function of c to values x and optionally param.

source


# Constraints.argsFunction.
julia
args(c::Constraint)

Return the expected length restriction of the arguments in a constraint c. The value nothing indicates that any strictly positive number of value is accepted.

source


# Constraints.params_lengthFunction.
julia
params_length(c::Constraint)

Return the expected length restriction of the arguments in a constraint c. The value nothing indicates that any strictly positive number of parameters is accepted.

source


# Constraints.symmetriesFunction.
julia
symmetries(c::Constraint)

Return the list of symmetries of c.

source


# Constraints.make_errorFunction.
julia
make_error(symb::Symbol)

Create a function that returns an error based on the predicate of the constraint identified by the symbol provided.

Arguments

  • symb::Symbol: The symbol used to determine the error function to be returned. The function first checks if a predicate with the prefix "icn_" exists in the Constraints module. If it does, it returns that function. If it doesn't, it checks for a predicate with the prefix "error_". If that exists, it returns that function. If neither exists, it returns a function that evaluates the predicate with the prefix "concept_" and returns the negation of its result cast to Float64.

Returns

  • Function: A function that takes in a variable x and an arbitrary number of parameters params. The function returns a Float64.

Examples

julia
e = make_error(:all_different)
+import{_ as s,c as i,o as t,a7 as a}from"./chunks/framework.CBLuZwrP.js";const u=JSON.parse('{"title":"Constraints.jl: Streamlining Constraint Definition and Integration in Julia","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/constraints.md","filePath":"constraints/constraints.md","lastUpdated":null}'),n={name:"constraints/constraints.md"},e=a(`

Constraints.jl: Streamlining Constraint Definition and Integration in Julia

Constraints.jl is a pivotal package within the JuliaConstraints ecosystem, designed to facilitate the definition, manipulation, and application of constraints in constraint programming (CP). This package is central to handling both standard and complex constraints, making it an indispensable tool for developers and researchers working in CP.

Key Features and Functionalities

  • Integration of XCSP3-core Constraints: One of the standout features of Constraints.jl is its incorporation of the XCSP3-core constraints as usual constraints within Julia. This integration ensures that users can define and work with a wide range of standard constraints, following the specifications outlined in the XCSP3-core, directly in Julia. The use of USUAL_CONSTRAINTS dictionary allows for straightforward addition and manipulation of these constraints, enhancing the package's utility and flexibility.

  • Learning Package Integration: Constraints.jl goes beyond traditional constraint handling by offering the capability to include results from various learning packages within the JuliaConstraints organization. This feature allows for the enhancement of usual constraints and those from the Global Constraints Catalog with learned parameters and behaviors, significantly improving constraint applicability and performance in complex CP problems.

  • Constraint Definition and Symmetry Handling: The package provides a simple yet powerful syntax for defining new constraints (@usual) and managing their symmetries through the USUAL_SYMMETRIES dictionary. This approach simplifies the creation of new constraints and the optimization of constraint search spaces by avoiding redundant explorations.

  • Advanced Constraint Functionalities: At the core of Constraints.jl is the Constraint type, encapsulating the essential elements of a constraint, including its concept (a Boolean function determining satisfaction) and an error function (providing a preference measure over invalid assignments). These components are crucial for defining how constraints behave and are evaluated within a CP model.

  • Flexible Constraint Application: The package supports a range of methods for interacting with constraints, such as args, concept, error_f, params_length, symmetries, and xcsp_intension. These methods offer users the ability to examine constraint properties, apply constraints to variable assignments, and work with intensional constraints defined by predicates. Such flexibility is vital for tailoring constraint behavior to specific problems and contexts.

Enabling Advanced Modeling in Constraint Programming

Constraints.jl embodies the JuliaConstraints ecosystem's commitment to providing robust, flexible tools for constraint programming. By integrating standard constraints, facilitating the incorporation of learned behaviors, and offering comprehensive tools for constraint definition and application, Constraints.jl significantly enhances the modeling capabilities available to CP practitioners. Whether for educational purposes, research, or solving practical CP problems, Constraints.jl offers a sophisticated, user-friendly platform for working with constraints in Julia.

Basic tools

# Constraints.USUAL_SYMMETRIESConstant.
julia
USUAL_SYMMETRIES

A Dictionary that contains the function to apply for each symmetry to avoid searching a whole space.

source


# Constraints.ConstraintType.
julia
Constraint

Parametric structure with the following fields.

  • concept: a Boolean function that, given an assignment x, outputs true if x satisfies the constraint, and false otherwise.

  • error: a positive function that works as preferences over invalid assignments. Return 0.0 if the constraint is satisfied, and a strictly positive real otherwise.

source


# Constraints.conceptFunction.
julia
concept(c::Constraint)

Return the concept (function) of constraint c. concept(c::Constraint, x...; param = nothing) Apply the concept of c to values x and optionally param.

source

julia
concept(s::Symbol, args...; kargs...)

Return the concept of the constraint s applied to args and kargs. This is a shortcut for concept(USUAL_CONSTRAINTS[s])(args...; kargs...).

Arguments

  • s::Symbol: the constraint name.

  • args...: the arguments to apply the concept to.

  • kargs...: the keyword arguments to apply the concept to.

Example

julia
concept(:all_different, [1, 2, 3])

source


# Constraints.error_fFunction.
julia
error_f(c::Constraint)

Return the error function of constraint c. error_f(c::Constraint, x; param = nothing) Apply the error function of c to values x and optionally param.

source


# Constraints.argsFunction.
julia
args(c::Constraint)

Return the expected length restriction of the arguments in a constraint c. The value nothing indicates that any strictly positive number of value is accepted.

source


# Constraints.params_lengthFunction.
julia
params_length(c::Constraint)

Return the expected length restriction of the arguments in a constraint c. The value nothing indicates that any strictly positive number of parameters is accepted.

source


# Constraints.symmetriesFunction.
julia
symmetries(c::Constraint)

Return the list of symmetries of c.

source


# Constraints.make_errorFunction.
julia
make_error(symb::Symbol)

Create a function that returns an error based on the predicate of the constraint identified by the symbol provided.

Arguments

  • symb::Symbol: The symbol used to determine the error function to be returned. The function first checks if a predicate with the prefix "icn_" exists in the Constraints module. If it does, it returns that function. If it doesn't, it checks for a predicate with the prefix "error_". If that exists, it returns that function. If neither exists, it returns a function that evaluates the predicate with the prefix "concept_" and returns the negation of its result cast to Float64.

Returns

  • Function: A function that takes in a variable x and an arbitrary number of parameters params. The function returns a Float64.

Examples

julia
e = make_error(:all_different)
 e([1, 2, 3]) # Returns 0.0
 e([1, 1, 3]) # Returns 1.0

source


# Constraints.shrink_conceptFunction.
julia
shrink_concept(s)

Simply delete the concept_ part of symbol or string starting with it. TODO: add a check with a warning if s starts with something different.

source


# Constraints.concept_vs_errorFunction.
julia
concept_vs_error(c, e, args...; kargs...)

Compare the results of a concept function and an error function for the same inputs. It is mainly used for testing purposes.

Arguments

  • c: The concept function.

  • e: The error function.

  • args...: Positional arguments to be passed to both the concept and error functions.

  • kargs...: Keyword arguments to be passed to both the concept and error functions.

Returns

  • Boolean: Returns true if the result of the concept function is not equal to whether the result of the error function is greater than 0.0. Otherwise, it returns false.

Examples

julia
concept_vs_error(all_different, make_error(:all_different), [1, 2, 3]) # Returns false

source


Usual constraints (based on and including XCSP3-core categories)

# Constraints.USUAL_CONSTRAINTSConstant.
julia
USUAL_CONSTRAINTS::Dict

Dictionary that contains all the usual constraints defined in Constraint.jl. It is based on XCSP3-core specifications available at https://arxiv.org/abs/2009.00514

Adding a new constraint is as simple as defining a new function with the same name as the constraint and using the @usual macro to define it. The macro will take care of adding the new constraint to the USUAL_CONSTRAINTS dictionary.

Example

julia
@usual concept_all_different(x; vals=nothing) = xcsp_all_different(list=x, except=vals)

source


# Constraints.describeFunction.
julia
describe(constraints::Dict{Symbol,Constraint}=USUAL_CONSTRAINTS; width=150)

Return a pretty table with the description of the constraints in constraints.

Arguments

  • constraints::Dict{Symbol,Constraint}: dictionary of constraints to describe. Default is USUAL_CONSTRAINTS.

  • width::Int: width of the table.

Example

julia
describe()

source


# ConstraintCommons.extract_parametersFunction.
julia
extract_parameters(m::Union{Method, Function}; parameters)

Extracts the intersection between the kargs of m and parameters (defaults to USUAL_CONSTRAINT_PARAMETERS).

source

julia
extract_parameters(s::Symbol, constraints_dict=USUAL_CONSTRAINTS; parameters=ConstraintCommons.USUAL_CONSTRAINT_PARAMETERS)

Return the parameters of the constraint s in constraints_dict.

Arguments

  • s::Symbol: the constraint name.

  • constraints_dict::Dict{Symbol,Constraint}: dictionary of constraints. Default is USUAL_CONSTRAINTS.

  • parameters::Vector{Symbol}: vector of parameters. Default is ConstraintCommons.USUAL_CONSTRAINT_PARAMETERS.

Example

julia
extract_parameters(:all_different)

source


# Constraints.@usualMacro.
julia
usual(ex::Expr)

This macro is used to define a new constraint or update an existing one in the USUAL_CONSTRAINTS dictionary. It takes an expression ex as input, which represents the definition of a constraint.

Here's a step-by-step explanation of what the macro does:

  1. It first extracts the symbol of the concept from the input expression. This symbol is expected to be the first argument of the first argument of the expression. For example, if the expression is @usual all_different(x; y=1), the symbol would be :all_different.

  2. It then calls the shrink_concept function on the symbol to get a simplified version of the concept symbol.

  3. It initializes a dictionary defaults to store whether each keyword argument of the concept has a default value or not.

  4. It checks if the expression has more than two arguments. If it does, it means that there are keyword arguments present. It then loops over these keyword arguments. If a keyword argument is a symbol, it means it doesn't have a default value, so it adds an entry to the defaults dictionary with the keyword argument as the key and false as the value. If a keyword argument is not a symbol, it means it has a default value, so it adds an entry to the defaults dictionary with the keyword argument as the key and true as the value.

  5. It calls the make_error function on the simplified concept symbol to generate an error function for the constraint.

  6. It evaluates the input expression to get the concept function.

  7. It checks if the USUAL_CONSTRAINTS dictionary already contains an entry for the simplified concept symbol. If it does, it adds the defaults dictionary to the parameters of the existing constraint. If it doesn't, it creates a new constraint with the concept function, a description, the error function, and the defaults dictionary as the parameters, and adds it to the USUAL_CONSTRAINTS dictionary.

This macro is used to make it easier to define and update constraints in a consistent and possibly automated way.

Arguments

  • ex::Expr: expression to parse.

Example

julia
@usual concept_all_different(x; vals=nothing) = xcsp_all_different(list=x, except=vals)

source


# Constraints.constraints_parametersFunction.
julia
constraints_parameters(C=USUAL_CONSTRAINTS)

Return a pretty table with the parameters of the constraints in C.

Arguments

  • C::Dict{Symbol,Constraint}: dictionary of constraints. Default is USUAL_CONSTRAINTS.

Example

julia
constraints_parameters()

source


# Constraints.constraints_descriptionsFunction.
julia
constraints_descriptions(C=USUAL_CONSTRAINTS)

Return a pretty table with the descriptions of the constraints in C.

Arguments

  • C::Dict{Symbol,Constraint}: dictionary of constraints. Default is USUAL_CONSTRAINTS.

Example

julia
constraints_descriptions()

source


# Constraints.conceptFunction.
julia
concept(c::Constraint)

Return the concept (function) of constraint c. concept(c::Constraint, x...; param = nothing) Apply the concept of c to values x and optionally param.

source

julia
concept(s::Symbol, args...; kargs...)

Return the concept of the constraint s applied to args and kargs. This is a shortcut for concept(USUAL_CONSTRAINTS[s])(args...; kargs...).

Arguments

  • s::Symbol: the constraint name.

  • args...: the arguments to apply the concept to.

  • kargs...: the keyword arguments to apply the concept to.

Example

julia
concept(:all_different, [1, 2, 3])

source


`,42),r=[e];function o(l,p,h,d,c,k){return t(),i("div",null,r)}const b=s(n,[["render",o]]);export{u as __pageData,b as default}; diff --git a/dev/assets/constraints_constraints.md.BeuGrere.lean.js b/dev/assets/constraints_constraints.md.B2k7G520.lean.js similarity index 74% rename from dev/assets/constraints_constraints.md.BeuGrere.lean.js rename to dev/assets/constraints_constraints.md.B2k7G520.lean.js index 558dfc5..e80cd97 100644 --- a/dev/assets/constraints_constraints.md.BeuGrere.lean.js +++ b/dev/assets/constraints_constraints.md.B2k7G520.lean.js @@ -1 +1 @@ -import{_ as s,c as i,o as t,a6 as a}from"./chunks/framework.U9t3ZutP.js";const u=JSON.parse('{"title":"Constraints.jl: Streamlining Constraint Definition and Integration in Julia","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/constraints.md","filePath":"constraints/constraints.md","lastUpdated":null}'),n={name:"constraints/constraints.md"},e=a("",42),r=[e];function o(l,p,h,d,c,k){return t(),i("div",null,r)}const b=s(n,[["render",o]]);export{u as __pageData,b as default}; +import{_ as s,c as i,o as t,a7 as a}from"./chunks/framework.CBLuZwrP.js";const u=JSON.parse('{"title":"Constraints.jl: Streamlining Constraint Definition and Integration in Julia","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/constraints.md","filePath":"constraints/constraints.md","lastUpdated":null}'),n={name:"constraints/constraints.md"},e=a("",42),r=[e];function o(l,p,h,d,c,k){return t(),i("div",null,r)}const b=s(n,[["render",o]]);export{u as __pageData,b as default}; diff --git a/dev/assets/constraints_counting_summing_constraints.md.iiagn6jX.js b/dev/assets/constraints_counting_summing_constraints.md.Coh0JXur.js similarity index 99% rename from dev/assets/constraints_counting_summing_constraints.md.iiagn6jX.js rename to dev/assets/constraints_counting_summing_constraints.md.Coh0JXur.js index 4eb891c..758e1db 100644 --- a/dev/assets/constraints_counting_summing_constraints.md.iiagn6jX.js +++ b/dev/assets/constraints_counting_summing_constraints.md.Coh0JXur.js @@ -1,4 +1,4 @@ -import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.U9t3ZutP.js";const y=JSON.parse('{"title":"Constraints.jl: Streamlining Constraint Definition and Integration in Julia","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/counting_summing_constraints.md","filePath":"constraints/counting_summing_constraints.md","lastUpdated":null}'),h={name:"constraints/counting_summing_constraints.md"},t=n(`

Constraints.jl: Streamlining Constraint Definition and Integration in Julia

Counting and Summing Constraints

# Constraints.xcsp_sumFunction.
julia
xcsp_sum(list, coeffs, condition)

Return true if the sum of the variables in list satisfies the given condition, false otherwise.

Arguments

  • list::Vector{Int}: list of values to check.

  • coeffs::Vector{Int}: list of coefficients to use.

  • condition: condition to satisfy.

Variants

  • :sum: Global constraint ensuring that the sum of the variables in x satisfies a given condition.
julia
concept(:sum, x; op===, pair_vars=ones(x), val)
+import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.CBLuZwrP.js";const y=JSON.parse('{"title":"Constraints.jl: Streamlining Constraint Definition and Integration in Julia","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/counting_summing_constraints.md","filePath":"constraints/counting_summing_constraints.md","lastUpdated":null}'),h={name:"constraints/counting_summing_constraints.md"},t=n(`

Constraints.jl: Streamlining Constraint Definition and Integration in Julia

Counting and Summing Constraints

# Constraints.xcsp_sumFunction.
julia
xcsp_sum(list, coeffs, condition)

Return true if the sum of the variables in list satisfies the given condition, false otherwise.

Arguments

  • list::Vector{Int}: list of values to check.

  • coeffs::Vector{Int}: list of coefficients to use.

  • condition: condition to satisfy.

Variants

  • :sum: Global constraint ensuring that the sum of the variables in x satisfies a given condition.
julia
concept(:sum, x; op===, pair_vars=ones(x), val)
 concept(:sum)(x; op===, pair_vars=ones(x), val)

Examples

julia
c = concept(:sum)
 
 c([1, 2, 3, 4, 5]; op===, val=15)
diff --git a/dev/assets/constraints_counting_summing_constraints.md.iiagn6jX.lean.js b/dev/assets/constraints_counting_summing_constraints.md.Coh0JXur.lean.js
similarity index 76%
rename from dev/assets/constraints_counting_summing_constraints.md.iiagn6jX.lean.js
rename to dev/assets/constraints_counting_summing_constraints.md.Coh0JXur.lean.js
index 83ceefa..9e8e168 100644
--- a/dev/assets/constraints_counting_summing_constraints.md.iiagn6jX.lean.js
+++ b/dev/assets/constraints_counting_summing_constraints.md.Coh0JXur.lean.js
@@ -1 +1 @@
-import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.U9t3ZutP.js";const y=JSON.parse('{"title":"Constraints.jl: Streamlining Constraint Definition and Integration in Julia","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/counting_summing_constraints.md","filePath":"constraints/counting_summing_constraints.md","lastUpdated":null}'),h={name:"constraints/counting_summing_constraints.md"},t=n("",10),k=[t];function l(p,e,E,r,d,g){return a(),i("div",null,k)}const C=s(h,[["render",l]]);export{y as __pageData,C as default};
+import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.CBLuZwrP.js";const y=JSON.parse('{"title":"Constraints.jl: Streamlining Constraint Definition and Integration in Julia","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/counting_summing_constraints.md","filePath":"constraints/counting_summing_constraints.md","lastUpdated":null}'),h={name:"constraints/counting_summing_constraints.md"},t=n("",10),k=[t];function l(p,e,E,r,d,g){return a(),i("div",null,k)}const C=s(h,[["render",l]]);export{y as __pageData,C as default};
diff --git a/dev/assets/constraints_elementary_constraints.md.DwSz_m2n.js b/dev/assets/constraints_elementary_constraints.md.A4nBHZxi.js
similarity index 98%
rename from dev/assets/constraints_elementary_constraints.md.DwSz_m2n.js
rename to dev/assets/constraints_elementary_constraints.md.A4nBHZxi.js
index f9d3eb9..7b0407d 100644
--- a/dev/assets/constraints_elementary_constraints.md.DwSz_m2n.js
+++ b/dev/assets/constraints_elementary_constraints.md.A4nBHZxi.js
@@ -1,4 +1,4 @@
-import{_ as i,c as s,o as a,a6 as t}from"./chunks/framework.U9t3ZutP.js";const g=JSON.parse('{"title":"Constraints.jl: Streamlining Constraint Definition and Integration in Julia","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/elementary_constraints.md","filePath":"constraints/elementary_constraints.md","lastUpdated":null}'),n={name:"constraints/elementary_constraints.md"},e=t(`

Constraints.jl: Streamlining Constraint Definition and Integration in Julia

Elementary Constraints

# Constraints.xcsp_instantiationFunction.
julia
xcsp_instantiation(; list, values)

Return true if the instantiation constraint is satisfied, false otherwise. The instantiation constraint is a global constraint used in constraint programming that ensures that a list of variables takes on a specific set of values in a specific order.

Arguments

  • list::AbstractVector: list of values to check.

  • values::AbstractVector: list of values to check against.

Variants

  • :instantiation: The instantiation constraint is a global constraint used in constraint programming that ensures that a list of variables takes on a specific set of values in a specific order.
julia
concept(:instantiation, x; pair_vars)
+import{_ as i,c as s,o as a,a7 as t}from"./chunks/framework.CBLuZwrP.js";const g=JSON.parse('{"title":"Constraints.jl: Streamlining Constraint Definition and Integration in Julia","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/elementary_constraints.md","filePath":"constraints/elementary_constraints.md","lastUpdated":null}'),n={name:"constraints/elementary_constraints.md"},e=t(`

Constraints.jl: Streamlining Constraint Definition and Integration in Julia

Elementary Constraints

# Constraints.xcsp_instantiationFunction.
julia
xcsp_instantiation(; list, values)

Return true if the instantiation constraint is satisfied, false otherwise. The instantiation constraint is a global constraint used in constraint programming that ensures that a list of variables takes on a specific set of values in a specific order.

Arguments

  • list::AbstractVector: list of values to check.

  • values::AbstractVector: list of values to check against.

Variants

  • :instantiation: The instantiation constraint is a global constraint used in constraint programming that ensures that a list of variables takes on a specific set of values in a specific order.
julia
concept(:instantiation, x; pair_vars)
 concept(:instantiation)(x; pair_vars)

Examples

julia
c = concept(:instantiation)
 
 c([1, 2, 3, 4, 5]; pair_vars=[1, 2, 3, 4, 5])
diff --git a/dev/assets/constraints_elementary_constraints.md.DwSz_m2n.lean.js b/dev/assets/constraints_elementary_constraints.md.A4nBHZxi.lean.js
similarity index 76%
rename from dev/assets/constraints_elementary_constraints.md.DwSz_m2n.lean.js
rename to dev/assets/constraints_elementary_constraints.md.A4nBHZxi.lean.js
index ec5537f..c5731f3 100644
--- a/dev/assets/constraints_elementary_constraints.md.DwSz_m2n.lean.js
+++ b/dev/assets/constraints_elementary_constraints.md.A4nBHZxi.lean.js
@@ -1 +1 @@
-import{_ as i,c as s,o as a,a6 as t}from"./chunks/framework.U9t3ZutP.js";const g=JSON.parse('{"title":"Constraints.jl: Streamlining Constraint Definition and Integration in Julia","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/elementary_constraints.md","filePath":"constraints/elementary_constraints.md","lastUpdated":null}'),n={name:"constraints/elementary_constraints.md"},e=t("",4),l=[e];function h(r,p,k,o,d,E){return a(),s("div",null,l)}const C=i(n,[["render",h]]);export{g as __pageData,C as default};
+import{_ as i,c as s,o as a,a7 as t}from"./chunks/framework.CBLuZwrP.js";const g=JSON.parse('{"title":"Constraints.jl: Streamlining Constraint Definition and Integration in Julia","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/elementary_constraints.md","filePath":"constraints/elementary_constraints.md","lastUpdated":null}'),n={name:"constraints/elementary_constraints.md"},e=t("",4),l=[e];function h(r,p,k,o,d,E){return a(),s("div",null,l)}const C=i(n,[["render",h]]);export{g as __pageData,C as default};
diff --git a/dev/assets/constraints_generic_constraints.md.D8rbTF4j.js b/dev/assets/constraints_generic_constraints.md.C5lydhxZ.js
similarity index 97%
rename from dev/assets/constraints_generic_constraints.md.D8rbTF4j.js
rename to dev/assets/constraints_generic_constraints.md.C5lydhxZ.js
index 040d558..c90624f 100644
--- a/dev/assets/constraints_generic_constraints.md.D8rbTF4j.js
+++ b/dev/assets/constraints_generic_constraints.md.C5lydhxZ.js
@@ -1,4 +1,4 @@
-import{_ as k,c as a,j as s,a as i,a6 as n,o as h}from"./chunks/framework.U9t3ZutP.js";const N=JSON.parse('{"title":"Generic Constraints","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/generic_constraints.md","filePath":"constraints/generic_constraints.md","lastUpdated":null}'),t={name:"constraints/generic_constraints.md"},l=n('

Generic Constraints

In the XCSP³-core standard, generic constraints are categorized into two main types: intention and extension constraints.

Intention Constraints

',3),p={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},e={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.294ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 572 453","aria-hidden":"true"},E=s("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[s("g",{"data-mml-node":"math"},[s("g",{"data-mml-node":"mi"},[s("path",{"data-c":"1D465",d:"M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z",style:{"stroke-width":"3"}})])])],-1),d=[E],r=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"x")])],-1),g={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},y={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.109ex",height:"1.464ex",role:"img",focusable:"false",viewBox:"0 -442 490 647","aria-hidden":"true"},F=s("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[s("g",{"data-mml-node":"math"},[s("g",{"data-mml-node":"mi"},[s("path",{"data-c":"1D466",d:"M21 287Q21 301 36 335T84 406T158 442Q199 442 224 419T250 355Q248 336 247 334Q247 331 231 288T198 191T182 105Q182 62 196 45T238 27Q261 27 281 38T312 61T339 94Q339 95 344 114T358 173T377 247Q415 397 419 404Q432 431 462 431Q475 431 483 424T494 412T496 403Q496 390 447 193T391 -23Q363 -106 294 -155T156 -205Q111 -205 77 -183T43 -117Q43 -95 50 -80T69 -58T89 -48T106 -45Q150 -45 150 -87Q150 -107 138 -122T115 -142T102 -147L99 -148Q101 -153 118 -160T152 -167H160Q177 -167 186 -165Q219 -156 247 -127T290 -65T313 -9T321 21L315 17Q309 13 296 6T270 -6Q250 -11 231 -11Q185 -11 150 11T104 82Q103 89 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1),C=[F],o=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"y")])],-1),c={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},B={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.42ex",height:"1.686ex",role:"img",focusable:"false",viewBox:"0 -540 2395.6 745","aria-hidden":"true"},u=n('',1),b=[u],v=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"x"),s("mo",null,"<"),s("mi",null,"y")])],-1),m=n('

Note that the intention constraint is not directly available through the JC-API in Constraints.jl. It is designed as such since defining a constraint through a predicate is the natural way.

We provide a straightforward example through the :dist_different constraint on how to define and add such a constraint in the USUAL_CONSTRAINTS collection.

Higher level modeling language such as JuMP should provide a Intention interface.

Defining an intention constraint in JC-API

',4),A=s("code",null,"dist_different",-1),D=s("em",null,"Constraints.jl",-1),f=s("code",null,"dist_different",-1),x={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Q={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.294ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 572 453","aria-hidden":"true"},T=s("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[s("g",{"data-mml-node":"math"},[s("g",{"data-mml-node":"mi"},[s("path",{"data-c":"1D465",d:"M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z",style:{"stroke-width":"3"}})])])],-1),_=[T],j=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"x")])],-1),w={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},M={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"25.797ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 11402.4 1000","aria-hidden":"true"},P=n('',1),I=[P],H=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),s("mi",null,"x"),s("mo",{stretchy:"false"},"["),s("mn",null,"1"),s("mo",{stretchy:"false"},"]"),s("mo",null,"−"),s("mi",null,"x"),s("mo",{stretchy:"false"},"["),s("mn",null,"2"),s("mo",{stretchy:"false"},"]"),s("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),s("mo",null,"≠"),s("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),s("mi",null,"x"),s("mo",{stretchy:"false"},"["),s("mn",null,"3"),s("mo",{stretchy:"false"},"]"),s("mo",null,"−"),s("mi",null,"x"),s("mo",{stretchy:"false"},"["),s("mn",null,"4"),s("mo",{stretchy:"false"},"]"),s("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|")])],-1),O=n(`

The constraint is then added to the usual constraints collection.

julia
const description_dist_different = """
+import{_ as k,c as a,j as s,a as i,a7 as n,o as h}from"./chunks/framework.CBLuZwrP.js";const N=JSON.parse('{"title":"Generic Constraints","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/generic_constraints.md","filePath":"constraints/generic_constraints.md","lastUpdated":null}'),t={name:"constraints/generic_constraints.md"},l=n('

Generic Constraints

In the XCSP³-core standard, generic constraints are categorized into two main types: intention and extension constraints.

Intention Constraints

',3),p={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},e={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.294ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 572 453","aria-hidden":"true"},E=s("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[s("g",{"data-mml-node":"math"},[s("g",{"data-mml-node":"mi"},[s("path",{"data-c":"1D465",d:"M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z",style:{"stroke-width":"3"}})])])],-1),d=[E],r=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"x")])],-1),g={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},y={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.109ex",height:"1.464ex",role:"img",focusable:"false",viewBox:"0 -442 490 647","aria-hidden":"true"},F=s("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[s("g",{"data-mml-node":"math"},[s("g",{"data-mml-node":"mi"},[s("path",{"data-c":"1D466",d:"M21 287Q21 301 36 335T84 406T158 442Q199 442 224 419T250 355Q248 336 247 334Q247 331 231 288T198 191T182 105Q182 62 196 45T238 27Q261 27 281 38T312 61T339 94Q339 95 344 114T358 173T377 247Q415 397 419 404Q432 431 462 431Q475 431 483 424T494 412T496 403Q496 390 447 193T391 -23Q363 -106 294 -155T156 -205Q111 -205 77 -183T43 -117Q43 -95 50 -80T69 -58T89 -48T106 -45Q150 -45 150 -87Q150 -107 138 -122T115 -142T102 -147L99 -148Q101 -153 118 -160T152 -167H160Q177 -167 186 -165Q219 -156 247 -127T290 -65T313 -9T321 21L315 17Q309 13 296 6T270 -6Q250 -11 231 -11Q185 -11 150 11T104 82Q103 89 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1),C=[F],o=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"y")])],-1),c={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},B={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.42ex",height:"1.686ex",role:"img",focusable:"false",viewBox:"0 -540 2395.6 745","aria-hidden":"true"},u=n('',1),b=[u],v=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"x"),s("mo",null,"<"),s("mi",null,"y")])],-1),m=n('

Note that the intention constraint is not directly available through the JC-API in Constraints.jl. It is designed as such since defining a constraint through a predicate is the natural way.

We provide a straightforward example through the :dist_different constraint on how to define and add such a constraint in the USUAL_CONSTRAINTS collection.

Higher level modeling language such as JuMP should provide a Intention interface.

Defining an intention constraint in JC-API

',4),D=s("code",null,"dist_different",-1),A=s("em",null,"Constraints.jl",-1),f=s("code",null,"dist_different",-1),Q={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},x={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.294ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 572 453","aria-hidden":"true"},T=s("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[s("g",{"data-mml-node":"math"},[s("g",{"data-mml-node":"mi"},[s("path",{"data-c":"1D465",d:"M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z",style:{"stroke-width":"3"}})])])],-1),_=[T],j=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"x")])],-1),M={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},w={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"25.797ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 11402.4 1000","aria-hidden":"true"},P=n('',1),I=[P],H=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),s("mi",null,"x"),s("mo",{stretchy:"false"},"["),s("mn",null,"1"),s("mo",{stretchy:"false"},"]"),s("mo",null,"−"),s("mi",null,"x"),s("mo",{stretchy:"false"},"["),s("mn",null,"2"),s("mo",{stretchy:"false"},"]"),s("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),s("mo",null,"≠"),s("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),s("mi",null,"x"),s("mo",{stretchy:"false"},"["),s("mn",null,"3"),s("mo",{stretchy:"false"},"]"),s("mo",null,"−"),s("mi",null,"x"),s("mo",{stretchy:"false"},"["),s("mn",null,"4"),s("mo",{stretchy:"false"},"]"),s("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|")])],-1),O=n(`

The constraint is then added to the usual constraints collection.

julia
const description_dist_different = """
 Ensures that the distances between marks on the ruler are unique.
 """
 
@@ -9,7 +9,7 @@ import{_ as k,c as a,j as s,a as i,a6 as n,o as h}from"./chunks/framework.U9t3Zu
 @usual concept_dist_different(x) = xcsp_intension(
     list = x,
     predicate = predicate_dist_different
-)

Please check the section dedicated to the Golomb Ruler problem to see a use for this constraint. <!– TODO: Golomb Ruler –>

APIs

Note that the intension constraint is not directly available through the JC-API in Constraints.jl. It is designed as such since defining a constraint through a predicate is the natural way.

We provide here a usage example for the :dist_different constraint, previously added to the USUAL_CONSTRAINTS collection.

Higher level modeling language such as JuMP should provide an Intension interface.

julia
using Constraints
+)

Please check the section dedicated to the Golomb Ruler problem to see a use for this constraint. <!– TODO: Golomb Ruler –>

APIs

Note that the intension constraint is not directly available through the JC-API in Constraints.jl. It is designed as such since defining a constraint through a predicate is the natural way.

We provide here a usage example for the :dist_different constraint, previously added to the USUAL_CONSTRAINTS collection.

Higher level modeling language such as JuMP should provide an Intension interface.

julia
using Constraints
 
 concept(:dist_different, x)
 concept(:dist_different)(x)
julia
# Defines the DistDifferent constraint
@@ -30,7 +30,7 @@ import{_ as k,c as a,j as s,a as i,a6 as n,o as h}from"./chunks/framework.U9t3Zu
 
 @info value.(X)
 
-# Note that this example gives a solution for the constraint within the interval 0:10
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
+# Note that this example gives a solution for the constraint within the interval 0:10
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
 
 concept(:all_equal, [1,1,1,2]) #false
 concept(:all_equal, [1,1,1,1]) #true
julia
using Constraints
@@ -48,7 +48,7 @@ import{_ as k,c as a,j as s,a as i,a6 as n,o as h}from"./chunks/framework.U9t3Zu
 JuMP.optimize!(model)
 @info "All Equal" value.(X)
 
-# Note that this example gives a solution for the all_equal constraint.
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
+# Note that this example gives a solution for the all_equal constraint.
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
 
 concept(:minimum, [1,1,1,2], val = 1, op = ==) # true
 concept(:minimum, [1,2,4,4], val = 2, op = ==) # false
julia
using Constraints
@@ -67,7 +67,7 @@ import{_ as k,c as a,j as s,a as i,a6 as n,o as h}from"./chunks/framework.U9t3Zu
 JuMP.optimize!(model)
 @info "Minimum" value.(X)
 
-# Note that this example gives a solution for the minimum constraint.
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
+# Note that this example gives a solution for the minimum constraint.
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
 
 concept(:maximum, [1,1,1,2], val = 2, op = ==) # true
 concept(:maximum, [1,2,4,4], val = 2, op = ==) # false
julia
using Constraints
@@ -84,7 +84,7 @@ import{_ as k,c as a,j as s,a as i,a6 as n,o as h}from"./chunks/framework.U9t3Zu
 @variable(model, 1X[1:5]5, Int)
 @constraint(model, X in Maximum(; op = ==, val = 5))
 optimize!(model)
-@info "Maximum" value.(X)
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
+@info "Maximum" value.(X)
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
 
 concept(:all_different, [1,1,1,2]) # false
 concept(:all_different, [1,9,3,2]) # true
julia
using Constraints
@@ -103,7 +103,7 @@ import{_ as k,c as a,j as s,a as i,a6 as n,o as h}from"./chunks/framework.U9t3Zu
 JuMP.optimize!(model)
 @info "All Different" value.(X) value.(Y)
 
-# Note that this example gives a solution for the all_different constraint.
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
+# Note that this example gives a solution for the all_different constraint.
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
 
 concept(:count, [1,1,1,2], vals = [1, 1, 1, 2], op = ==, val = 4) # true
 concept(:count, [1,1,1,2], vals = [1, 1, 1, 2], op = ==, val = 5) # false
@@ -137,7 +137,7 @@ import{_ as k,c as a,j as s,a as i,a6 as n,o as h}from"./chunks/framework.U9t3Zu
 @constraint(model, X_at_most in AtMost(vals = [1, 2], val = 1))
 @constraint(model, X_exactly in Exactly(vals = [1, 2], val = 2))
 JuMP.optimize!(model)
-@info "Count" value.(X) value.(X_at_least) value.(X_at_most) value.(X_exactly)
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
+@info "Count" value.(X) value.(X_at_least) value.(X_at_most) value.(X_exactly)
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
 
 @info concept(:sum, [1, 2, 3, 4, 5]; op = ==, val=15)
 @info concept(:sum, [1, 2, 3, 4, 5]; op = ==, val=2)
@@ -159,7 +159,7 @@ import{_ as k,c as a,j as s,a as i,a6 as n,o as h}from"./chunks/framework.U9t3Zu
 @constraint(model, X in Sum(; op = ==, val = 15))
 @constraint(model, Y in Sum(; op = <=, val = 10))
 JuMP.optimize!(model)
-@info "Sum" value.(X) value.(Y)
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
+@info "Sum" value.(X) value.(Y)
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
 
 @info concept(:nvalues, [1, 2, 3, 4, 5]; op = ==, val = 5)
 @info concept(:nvalues, [1, 2, 3, 4, 5]; op = ==, val = 2)
@@ -183,7 +183,7 @@ import{_ as k,c as a,j as s,a as i,a6 as n,o as h}from"./chunks/framework.U9t3Zu
 @constraint(model, Y in NValues(; op = ==, val = 2))
 @constraint(model, Z in NValues(; op = <=, val = 5, vals = [1, 2]))
 JuMP.optimize!(model)
-@info "NValues" value.(X) value.(Y) value.(Z)
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
+@info "NValues" value.(X) value.(Y) value.(Z)
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
 
 # [v1, v2, v3], [v1, a1, a2; v2, b1, b2; v3, c1, c2] means v1 occurs between a1 and a2 times in the first array, similar for v2 and v3. 
 	
@@ -210,7 +210,7 @@ import{_ as k,c as a,j as s,a as i,a6 as n,o as h}from"./chunks/framework.U9t3Zu
 @constraint(model, Y in CardinalityOpen(; vals = [2 0 1; 5 1 3; 10 2 3]))
 @constraint(model, Z in CardinalityClosed(; vals = [2 0 1; 5 1 3; 10 2 3]))
 JuMP.optimize!(model)
-@info "Cardinality" value.(X) value.(Y) value.(Z)
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
+@info "Cardinality" value.(X) value.(Y) value.(Z)
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
 
 @info concept(:ordered, [1, 2, 3, 4, 4]; op=≤)
 @info concept(:ordered, [1, 2, 3, 3, 5]; op=<)
@@ -230,7 +230,7 @@ import{_ as k,c as a,j as s,a as i,a6 as n,o as h}from"./chunks/framework.U9t3Zu
 @constraint(model, X in Ordered())
 @constraint(model, Y in Ordered(; op = <))
 JuMP.optimize!(model)
-@info "Ordered" value.(X) value.(Y)
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
+@info "Ordered" value.(X) value.(Y)
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
 
 @info concept(:cumulative, [1, 2, 3, 4, 5]; val = 1)
 @info concept(:cumulative, [1, 2, 2, 4, 5]; val = 1)
@@ -257,7 +257,7 @@ import{_ as k,c as a,j as s,a as i,a6 as n,o as h}from"./chunks/framework.U9t3Zu
 @constraint(model,
     Z in Cumulative(; pair_vars = [3 2 5 4 2; 1 2 1 1 3], op = <, val = 5))
 JuMP.optimize!(model)
-@info "Cumulative" value.(X) value.(Y) value.(Z)
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
+@info "Cumulative" value.(X) value.(Y) value.(Z)
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
 
 @info concept(:channel, [2, 1, 4, 3])
 @info concept(:channel, [1, 2, 3, 4])
@@ -282,7 +282,7 @@ import{_ as k,c as a,j as s,a as i,a6 as n,o as h}from"./chunks/framework.U9t3Zu
 @constraint(model, Y in CBLS.Channel(; dim = 2))
 @constraint(model, Z in CBLS.Channel(; id = 3))
 JuMP.optimize!(model)
-@info "Channel" value.(X) value.(Y) value.(Z)
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
+@info "Channel" value.(X) value.(Y) value.(Z)
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
 
 @info concept(:no_overlap, [1, 2, 3, 4, 5])
 @info concept(:no_overlap, [1, 2, 3, 4, 1])
@@ -308,7 +308,7 @@ import{_ as k,c as a,j as s,a as i,a6 as n,o as h}from"./chunks/framework.U9t3Zu
 @constraint(model,
     Z in NoOverlap(; pair_vars = [2, 4, 1, 4, 2, 3, 5, 1, 2, 3, 3, 2], dim = 3))
 JuMP.optimize!(model)
-@info "NoOverlap" value.(X) value.(Y) value.(Z)
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
+@info "NoOverlap" value.(X) value.(Y) value.(Z)
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
 
 @info concept(:element, [1, 2, 3, 4, 5]; id=1, val=1)
 @info concept(:element, [1, 2, 3, 4, 5]; id=1, val=2)
@@ -332,7 +332,7 @@ import{_ as k,c as a,j as s,a as i,a6 as n,o as h}from"./chunks/framework.U9t3Zu
 @constraint(model, Y in Element(; id = 1, val = 1))
 @constraint(model, Z in Element(; id = 2, val = 2))
 JuMP.optimize!(model)
-@info "Element" value.(X) value.(Y) value.(Z)
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
julia
using Constraints
julia
using CBLS, JuMP
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
julia
using Constraints
julia
using CBLS, JuMP
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
julia
using Constraints
julia
using CBLS, JuMP
julia
# TODO: How to handle intention in JuMP/MOI

Test for DocumenterVitePress Issue

julia
c = concept(:dist_different)
+@info "Element" value.(X) value.(Y) value.(Z)
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
julia
using Constraints
julia
using CBLS, JuMP
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
julia
using Constraints
julia
using CBLS, JuMP
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
julia
using Constraints
julia
using CBLS, JuMP
julia
# TODO: How to handle intention in JuMP/MOI

Test for DocumenterVitePress Issue

julia
c = concept(:dist_different)
 c([1, 2, 3, 3]) && !c([1, 2, 3, 4])
true
julia
c = concept(:dist_different)
 c([1, 2, 3, 3]) && !c([1, 2, 3, 4])
true

Specific documentation

# Constraints.xcsp_intensionFunction.
julia
xcsp_intension(list, predicate)

An intensional constraint is usually defined from a predicate over list. As such it encompass any generic constraint.

Arguments

  • list::Vector{Int}: A list of variables

  • predicate::Function: A predicate over list

Variants

  • :dist_different: A constraint ensuring that the distances between marks on the ruler are unique. Specifically, it checks that the distance between x[1] and x[2], and the distance between x[3] and x[4], are different. This constraint is fundamental in ensuring the validity of a Golomb ruler, where no two pairs of marks should have the same distance between them.
julia
concept(:dist_different, x)
 concept(:dist_different)(x)

Examples

@example
2 + 2
@example
2 + 2
@example
using Constraints # hide
@@ -351,4 +351,4 @@ import{_ as k,c as a,j as s,a as i,a6 as n,o as h}from"./chunks/framework.U9t3Zu
 c([1, 2, 3, 4, 5]; pair_vars=[[1, 2, 3, 4, 5]])
 
 c = concept(:conflicts)
-c([1, 2, 3, 4, 5]; pair_vars=[[1, 2, 1, 4, 5], [1, 2, 3, 5, 5]])

source


`,38);function J(V,S,L,X,q,Z){return h(),a("div",null,[l,s("p",null,[i("These are constraints that are defined by a logical expression or a function. They are called intentional because they are defined by the property they satisfy. For example, a constraint that specifies that a variable "),s("mjx-container",p,[(h(),a("svg",e,d)),r]),i(" must be less than a variable "),s("mjx-container",g,[(h(),a("svg",y,C)),o]),i(" could be defined intentionally as "),s("mjx-container",c,[(h(),a("svg",B,b)),v]),i(".")]),m,s("p",null,[i("We use the "),A,i(" constraint to illustrate how to define an intention constraint in "),D,i(". The "),f,i(" constraint ensures that the distances between marks "),s("mjx-container",x,[(h(),a("svg",Q,_)),j]),i(" on a ruler are unique.")]),s("mjx-container",w,[(h(),a("svg",M,I)),H]),O])}const Y=k(t,[["render",J]]);export{N as __pageData,Y as default}; +c([1, 2, 3, 4, 5]; pair_vars=[[1, 2, 1, 4, 5], [1, 2, 3, 5, 5]])

source


`,38);function S(J,V,L,X,q,Z){return h(),a("div",null,[l,s("p",null,[i("These are constraints that are defined by a logical expression or a function. They are called intentional because they are defined by the property they satisfy. For example, a constraint that specifies that a variable "),s("mjx-container",p,[(h(),a("svg",e,d)),r]),i(" must be less than a variable "),s("mjx-container",g,[(h(),a("svg",y,C)),o]),i(" could be defined intentionally as "),s("mjx-container",c,[(h(),a("svg",B,b)),v]),i(".")]),m,s("p",null,[i("We use the "),D,i(" constraint to illustrate how to define an intention constraint in "),A,i(". The "),f,i(" constraint ensures that the distances between marks "),s("mjx-container",Q,[(h(),a("svg",x,_)),j]),i(" on a ruler are unique.")]),s("mjx-container",M,[(h(),a("svg",w,I)),H]),O])}const G=k(t,[["render",S]]);export{N as __pageData,G as default}; diff --git a/dev/assets/constraints_generic_constraints.md.D8rbTF4j.lean.js b/dev/assets/constraints_generic_constraints.md.C5lydhxZ.lean.js similarity index 90% rename from dev/assets/constraints_generic_constraints.md.D8rbTF4j.lean.js rename to dev/assets/constraints_generic_constraints.md.C5lydhxZ.lean.js index d868984..a758586 100644 --- a/dev/assets/constraints_generic_constraints.md.D8rbTF4j.lean.js +++ b/dev/assets/constraints_generic_constraints.md.C5lydhxZ.lean.js @@ -1 +1 @@ -import{_ as k,c as a,j as s,a as i,a6 as n,o as h}from"./chunks/framework.U9t3ZutP.js";const N=JSON.parse('{"title":"Generic Constraints","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/generic_constraints.md","filePath":"constraints/generic_constraints.md","lastUpdated":null}'),t={name:"constraints/generic_constraints.md"},l=n("",3),p={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},e={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.294ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 572 453","aria-hidden":"true"},E=s("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[s("g",{"data-mml-node":"math"},[s("g",{"data-mml-node":"mi"},[s("path",{"data-c":"1D465",d:"M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z",style:{"stroke-width":"3"}})])])],-1),d=[E],r=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"x")])],-1),g={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},y={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.109ex",height:"1.464ex",role:"img",focusable:"false",viewBox:"0 -442 490 647","aria-hidden":"true"},F=s("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[s("g",{"data-mml-node":"math"},[s("g",{"data-mml-node":"mi"},[s("path",{"data-c":"1D466",d:"M21 287Q21 301 36 335T84 406T158 442Q199 442 224 419T250 355Q248 336 247 334Q247 331 231 288T198 191T182 105Q182 62 196 45T238 27Q261 27 281 38T312 61T339 94Q339 95 344 114T358 173T377 247Q415 397 419 404Q432 431 462 431Q475 431 483 424T494 412T496 403Q496 390 447 193T391 -23Q363 -106 294 -155T156 -205Q111 -205 77 -183T43 -117Q43 -95 50 -80T69 -58T89 -48T106 -45Q150 -45 150 -87Q150 -107 138 -122T115 -142T102 -147L99 -148Q101 -153 118 -160T152 -167H160Q177 -167 186 -165Q219 -156 247 -127T290 -65T313 -9T321 21L315 17Q309 13 296 6T270 -6Q250 -11 231 -11Q185 -11 150 11T104 82Q103 89 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1),C=[F],o=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"y")])],-1),c={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},B={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.42ex",height:"1.686ex",role:"img",focusable:"false",viewBox:"0 -540 2395.6 745","aria-hidden":"true"},u=n("",1),b=[u],v=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"x"),s("mo",null,"<"),s("mi",null,"y")])],-1),m=n("",4),A=s("code",null,"dist_different",-1),D=s("em",null,"Constraints.jl",-1),f=s("code",null,"dist_different",-1),x={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Q={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.294ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 572 453","aria-hidden":"true"},T=s("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[s("g",{"data-mml-node":"math"},[s("g",{"data-mml-node":"mi"},[s("path",{"data-c":"1D465",d:"M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z",style:{"stroke-width":"3"}})])])],-1),_=[T],j=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"x")])],-1),w={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},M={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"25.797ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 11402.4 1000","aria-hidden":"true"},P=n("",1),I=[P],H=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),s("mi",null,"x"),s("mo",{stretchy:"false"},"["),s("mn",null,"1"),s("mo",{stretchy:"false"},"]"),s("mo",null,"−"),s("mi",null,"x"),s("mo",{stretchy:"false"},"["),s("mn",null,"2"),s("mo",{stretchy:"false"},"]"),s("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),s("mo",null,"≠"),s("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),s("mi",null,"x"),s("mo",{stretchy:"false"},"["),s("mn",null,"3"),s("mo",{stretchy:"false"},"]"),s("mo",null,"−"),s("mi",null,"x"),s("mo",{stretchy:"false"},"["),s("mn",null,"4"),s("mo",{stretchy:"false"},"]"),s("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|")])],-1),O=n("",38);function J(V,S,L,X,q,Z){return h(),a("div",null,[l,s("p",null,[i("These are constraints that are defined by a logical expression or a function. They are called intentional because they are defined by the property they satisfy. For example, a constraint that specifies that a variable "),s("mjx-container",p,[(h(),a("svg",e,d)),r]),i(" must be less than a variable "),s("mjx-container",g,[(h(),a("svg",y,C)),o]),i(" could be defined intentionally as "),s("mjx-container",c,[(h(),a("svg",B,b)),v]),i(".")]),m,s("p",null,[i("We use the "),A,i(" constraint to illustrate how to define an intention constraint in "),D,i(". The "),f,i(" constraint ensures that the distances between marks "),s("mjx-container",x,[(h(),a("svg",Q,_)),j]),i(" on a ruler are unique.")]),s("mjx-container",w,[(h(),a("svg",M,I)),H]),O])}const Y=k(t,[["render",J]]);export{N as __pageData,Y as default}; +import{_ as k,c as a,j as s,a as i,a7 as n,o as h}from"./chunks/framework.CBLuZwrP.js";const N=JSON.parse('{"title":"Generic Constraints","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/generic_constraints.md","filePath":"constraints/generic_constraints.md","lastUpdated":null}'),t={name:"constraints/generic_constraints.md"},l=n("",3),p={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},e={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.294ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 572 453","aria-hidden":"true"},E=s("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[s("g",{"data-mml-node":"math"},[s("g",{"data-mml-node":"mi"},[s("path",{"data-c":"1D465",d:"M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z",style:{"stroke-width":"3"}})])])],-1),d=[E],r=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"x")])],-1),g={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},y={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.109ex",height:"1.464ex",role:"img",focusable:"false",viewBox:"0 -442 490 647","aria-hidden":"true"},F=s("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[s("g",{"data-mml-node":"math"},[s("g",{"data-mml-node":"mi"},[s("path",{"data-c":"1D466",d:"M21 287Q21 301 36 335T84 406T158 442Q199 442 224 419T250 355Q248 336 247 334Q247 331 231 288T198 191T182 105Q182 62 196 45T238 27Q261 27 281 38T312 61T339 94Q339 95 344 114T358 173T377 247Q415 397 419 404Q432 431 462 431Q475 431 483 424T494 412T496 403Q496 390 447 193T391 -23Q363 -106 294 -155T156 -205Q111 -205 77 -183T43 -117Q43 -95 50 -80T69 -58T89 -48T106 -45Q150 -45 150 -87Q150 -107 138 -122T115 -142T102 -147L99 -148Q101 -153 118 -160T152 -167H160Q177 -167 186 -165Q219 -156 247 -127T290 -65T313 -9T321 21L315 17Q309 13 296 6T270 -6Q250 -11 231 -11Q185 -11 150 11T104 82Q103 89 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1),C=[F],o=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"y")])],-1),c={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},B={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.42ex",height:"1.686ex",role:"img",focusable:"false",viewBox:"0 -540 2395.6 745","aria-hidden":"true"},u=n("",1),b=[u],v=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"x"),s("mo",null,"<"),s("mi",null,"y")])],-1),m=n("",4),D=s("code",null,"dist_different",-1),A=s("em",null,"Constraints.jl",-1),f=s("code",null,"dist_different",-1),Q={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},x={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.294ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 572 453","aria-hidden":"true"},T=s("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[s("g",{"data-mml-node":"math"},[s("g",{"data-mml-node":"mi"},[s("path",{"data-c":"1D465",d:"M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z",style:{"stroke-width":"3"}})])])],-1),_=[T],j=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"x")])],-1),M={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},w={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"25.797ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 11402.4 1000","aria-hidden":"true"},P=n("",1),I=[P],H=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),s("mi",null,"x"),s("mo",{stretchy:"false"},"["),s("mn",null,"1"),s("mo",{stretchy:"false"},"]"),s("mo",null,"−"),s("mi",null,"x"),s("mo",{stretchy:"false"},"["),s("mn",null,"2"),s("mo",{stretchy:"false"},"]"),s("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),s("mo",null,"≠"),s("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),s("mi",null,"x"),s("mo",{stretchy:"false"},"["),s("mn",null,"3"),s("mo",{stretchy:"false"},"]"),s("mo",null,"−"),s("mi",null,"x"),s("mo",{stretchy:"false"},"["),s("mn",null,"4"),s("mo",{stretchy:"false"},"]"),s("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|")])],-1),O=n("",38);function S(J,V,L,X,q,Z){return h(),a("div",null,[l,s("p",null,[i("These are constraints that are defined by a logical expression or a function. They are called intentional because they are defined by the property they satisfy. For example, a constraint that specifies that a variable "),s("mjx-container",p,[(h(),a("svg",e,d)),r]),i(" must be less than a variable "),s("mjx-container",g,[(h(),a("svg",y,C)),o]),i(" could be defined intentionally as "),s("mjx-container",c,[(h(),a("svg",B,b)),v]),i(".")]),m,s("p",null,[i("We use the "),D,i(" constraint to illustrate how to define an intention constraint in "),A,i(". The "),f,i(" constraint ensures that the distances between marks "),s("mjx-container",Q,[(h(),a("svg",x,_)),j]),i(" on a ruler are unique.")]),s("mjx-container",M,[(h(),a("svg",w,I)),H]),O])}const G=k(t,[["render",S]]);export{N as __pageData,G as default}; diff --git a/dev/assets/constraints_graph_constraints.md.CfD3E1aW.js b/dev/assets/constraints_graph_constraints.md.BGZobcf3.js similarity index 98% rename from dev/assets/constraints_graph_constraints.md.CfD3E1aW.js rename to dev/assets/constraints_graph_constraints.md.BGZobcf3.js index df8bff1..27d9641 100644 --- a/dev/assets/constraints_graph_constraints.md.CfD3E1aW.js +++ b/dev/assets/constraints_graph_constraints.md.BGZobcf3.js @@ -1,4 +1,4 @@ -import{_ as i,c as s,o as a,a6 as t}from"./chunks/framework.U9t3ZutP.js";const g=JSON.parse('{"title":"Constraints.jl: Streamlining Constraint Definition and Integration in Julia","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/graph_constraints.md","filePath":"constraints/graph_constraints.md","lastUpdated":null}'),n={name:"constraints/graph_constraints.md"},e=t(`

Constraints.jl: Streamlining Constraint Definition and Integration in Julia

Constraints on Graphs

# Constraints.xcsp_circuitFunction.
julia
xcsp_circuit(; list, size)

Return true if the circuit constraint is satisfied, false otherwise. The circuit constraint is a global constraint used in constraint programming, often in routing problems. It ensures that the values of a list of variables form a circuit, i.e., a sequence where each value is the index of the next value in the sequence, and the sequence eventually loops back to the start.

Arguments

  • list::AbstractVector: list of values to check.

  • size::Int: size of the circuit.

Variants

  • :circuit: The circuit constraint is a global constraint used in constraint programming, often in routing problems. It ensures that the values of a list of variables form a circuit, i.e., a sequence where each value is the index of the next value in the sequence, and the sequence eventually loops back to the start.
julia
concept(:circuit, x; op, val)
+import{_ as i,c as s,o as a,a7 as t}from"./chunks/framework.CBLuZwrP.js";const g=JSON.parse('{"title":"Constraints.jl: Streamlining Constraint Definition and Integration in Julia","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/graph_constraints.md","filePath":"constraints/graph_constraints.md","lastUpdated":null}'),n={name:"constraints/graph_constraints.md"},e=t(`

Constraints.jl: Streamlining Constraint Definition and Integration in Julia

Constraints on Graphs

# Constraints.xcsp_circuitFunction.
julia
xcsp_circuit(; list, size)

Return true if the circuit constraint is satisfied, false otherwise. The circuit constraint is a global constraint used in constraint programming, often in routing problems. It ensures that the values of a list of variables form a circuit, i.e., a sequence where each value is the index of the next value in the sequence, and the sequence eventually loops back to the start.

Arguments

  • list::AbstractVector: list of values to check.

  • size::Int: size of the circuit.

Variants

  • :circuit: The circuit constraint is a global constraint used in constraint programming, often in routing problems. It ensures that the values of a list of variables form a circuit, i.e., a sequence where each value is the index of the next value in the sequence, and the sequence eventually loops back to the start.
julia
concept(:circuit, x; op, val)
 concept(:circuit)(x; op, val)

Examples

julia
c = concept(:circuit)
 
 c([1, 2, 3, 4])
diff --git a/dev/assets/constraints_graph_constraints.md.CfD3E1aW.lean.js b/dev/assets/constraints_graph_constraints.md.BGZobcf3.lean.js
similarity index 75%
rename from dev/assets/constraints_graph_constraints.md.CfD3E1aW.lean.js
rename to dev/assets/constraints_graph_constraints.md.BGZobcf3.lean.js
index 3688544..b3ef623 100644
--- a/dev/assets/constraints_graph_constraints.md.CfD3E1aW.lean.js
+++ b/dev/assets/constraints_graph_constraints.md.BGZobcf3.lean.js
@@ -1 +1 @@
-import{_ as i,c as s,o as a,a6 as t}from"./chunks/framework.U9t3ZutP.js";const g=JSON.parse('{"title":"Constraints.jl: Streamlining Constraint Definition and Integration in Julia","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/graph_constraints.md","filePath":"constraints/graph_constraints.md","lastUpdated":null}'),n={name:"constraints/graph_constraints.md"},e=t("",4),h=[e];function l(p,r,k,o,d,c){return a(),s("div",null,h)}const C=i(n,[["render",l]]);export{g as __pageData,C as default};
+import{_ as i,c as s,o as a,a7 as t}from"./chunks/framework.CBLuZwrP.js";const g=JSON.parse('{"title":"Constraints.jl: Streamlining Constraint Definition and Integration in Julia","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/graph_constraints.md","filePath":"constraints/graph_constraints.md","lastUpdated":null}'),n={name:"constraints/graph_constraints.md"},e=t("",4),h=[e];function l(p,r,k,o,d,c){return a(),s("div",null,h)}const C=i(n,[["render",l]]);export{g as __pageData,C as default};
diff --git a/dev/assets/constraints_intro.md.BntZt56K.js b/dev/assets/constraints_intro.md.BntZt56K.js
deleted file mode 100644
index de2ec7e..0000000
--- a/dev/assets/constraints_intro.md.BntZt56K.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as e,c as t,o,a6 as a}from"./chunks/framework.U9t3ZutP.js";const f=JSON.parse('{"title":"Introduction to basics constraint-based modeling tools","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/intro.md","filePath":"constraints/intro.md","lastUpdated":null}'),n={name:"constraints/intro.md"},s=a('

Introduction to basics constraint-based modeling tools

Constraint programming (CP) is a powerful paradigm for solving combinatorial problems, and Julia Constraints provides an efficient and flexible framework for developing constraint-based models.

Domain-defined variables

In CP, variables are defined through their domain. ConstraintDomains.jl supports various types of domains such as discrete ones (sets, range, etc.), or continuous intervals, and custom domains.

Constraints.jl: A versatile API

It implements a wide range of generic and core constraints, ensuring compatibility with XCSP3-core standards and providing a user-friendly interface. It includes features extracted from the learning blocks of Julia Constraints to leverage most of each constraint characteristics.

Models Through ConstraintModels.jl

The ConstraintModels.jl catalog offers a collection of predefined models and templates for constructing complex constraint satisfaction problems (CSPs) and optimization models. This resource provides reusable components to streamline the modeling process.

Contributions with new models are more than welcome!

Internal Aspects

Several internal components are crucial for the efficient functioning of Julia Constraints. ConstraintCommons.jl provides shared functionalities and utilities used across different parts of the framework, contributing to its robust performance and extensibility. However, it is unlikely to be of direct use to most users.

',11),i=[s];function r(l,d,c,m,h,u){return o(),t("div",null,i)}const b=e(n,[["render",r]]);export{f as __pageData,b as default}; diff --git a/dev/assets/constraints_intro.md.BntZt56K.lean.js b/dev/assets/constraints_intro.md.BntZt56K.lean.js deleted file mode 100644 index 7fe028f..0000000 --- a/dev/assets/constraints_intro.md.BntZt56K.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o,a6 as a}from"./chunks/framework.U9t3ZutP.js";const f=JSON.parse('{"title":"Introduction to basics constraint-based modeling tools","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/intro.md","filePath":"constraints/intro.md","lastUpdated":null}'),n={name:"constraints/intro.md"},s=a("",11),i=[s];function r(l,d,c,m,h,u){return o(),t("div",null,i)}const b=e(n,[["render",r]]);export{f as __pageData,b as default}; diff --git a/dev/assets/constraints_intro.md.C6-EYJrm.js b/dev/assets/constraints_intro.md.C6-EYJrm.js new file mode 100644 index 0000000..12098a6 --- /dev/null +++ b/dev/assets/constraints_intro.md.C6-EYJrm.js @@ -0,0 +1 @@ +import{_ as n,c as o,j as t,a as e,a7 as s,o as a}from"./chunks/framework.CBLuZwrP.js";const H3=JSON.parse('{"title":"Introduction to basics constraint-based modeling tools","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/intro.md","filePath":"constraints/intro.md","lastUpdated":null}'),i={name:"constraints/intro.md"},l=s('

Introduction to basics constraint-based modeling tools

Constraint programming (CP) is a high-level paradigm for solving combinatorial problems, and Julia Constraints provides an efficient and flexible framework for developing constraint-based models.

Terminology

Warning

Terminology in Optimization varies strongly between different methods and communities. In this doc we try to be consistent with the following principles (in bold).

  • Constraint: A general mathematical predicate involving variables.

  • Constraint Instantiation: The application of a constraint to specific variables.

  • Configuration: A specific assignment of values to the variables.

  • Constraint Satisfaction/Violation: Whether a configuration meets or fails to meet a constraint.

Constraint

Definition: A constraint is a formal mathematical statement that expresses a condition or a relation between a set of variables. It can be seen as a predicate that the variables must satisfy.

',6),Q=t("strong",null,"Example:",-1),r={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},T={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.448ex",height:"1.971ex",role:"img",focusable:"false",viewBox:"0 -666 4618 871","aria-hidden":"true"},d=s('',1),h=[d],c=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"x"),t("mo",null,"+"),t("mi",null,"y"),t("mo",null,"≤"),t("mn",null,"10")])],-1),m={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},p={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.294ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 572 453","aria-hidden":"true"},x=t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D465",d:"M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z",style:{"stroke-width":"3"}})])])],-1),g=[x],u=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"x")])],-1),_={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},w={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.109ex",height:"1.464ex",role:"img",focusable:"false",viewBox:"0 -442 490 647","aria-hidden":"true"},f=t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D466",d:"M21 287Q21 301 36 335T84 406T158 442Q199 442 224 419T250 355Q248 336 247 334Q247 331 231 288T198 191T182 105Q182 62 196 45T238 27Q261 27 281 38T312 61T339 94Q339 95 344 114T358 173T377 247Q415 397 419 404Q432 431 462 431Q475 431 483 424T494 412T496 403Q496 390 447 193T391 -23Q363 -106 294 -155T156 -205Q111 -205 77 -183T43 -117Q43 -95 50 -80T69 -58T89 -48T106 -45Q150 -45 150 -87Q150 -107 138 -122T115 -142T102 -147L99 -148Q101 -153 118 -160T152 -167H160Q177 -167 186 -165Q219 -156 247 -127T290 -65T313 -9T321 21L315 17Q309 13 296 6T270 -6Q250 -11 231 -11Q185 -11 150 11T104 82Q103 89 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1),b=[f],v=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"y")])],-1),H={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},k={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.262ex",height:"1.557ex",role:"img",focusable:"false",viewBox:"0 -666 1000 688","aria-hidden":"true"},y=s('',1),V=[y],M=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mn",null,"10")])],-1),C=t("h3",{id:"Constraint-Instantiation",tabindex:"-1"},[e("Constraint Instantiation "),t("a",{class:"header-anchor",href:"#Constraint-Instantiation","aria-label":'Permalink to "Constraint Instantiation {#Constraint-Instantiation}"'},"​")],-1),L=t("p",null,[t("strong",null,"Definition:"),e(" A constraint instantiation refers to a specific application of a generic constraint to a particular subset of variables from a problem. It is essentially the constraint applied with the actual variables of the problem.")],-1),Z=t("strong",null,"Example:",-1),S={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},A={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.448ex",height:"1.971ex",role:"img",focusable:"false",viewBox:"0 -666 4618 871","aria-hidden":"true"},j=s('',1),I=[j],D=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"x"),t("mo",null,"+"),t("mi",null,"y"),t("mo",null,"≤"),t("mn",null,"10")])],-1),P={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},B={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.339ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.282ex",height:"1.339ex",role:"img",focusable:"false",viewBox:"0 -442 1008.6 592","aria-hidden":"true"},J=s('',1),E=[J],z=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"x"),t("mn",null,"1")])])],-1),G={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},N={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.339ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.282ex",height:"1.339ex",role:"img",focusable:"false",viewBox:"0 -442 1008.6 592","aria-hidden":"true"},R=s('',1),q=[R],$=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"x"),t("mn",null,"2")])])],-1),O={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},W={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.339ex"},xmlns:"http://www.w3.org/2000/svg",width:"12.609ex",height:"1.846ex",role:"img",focusable:"false",viewBox:"0 -666 5573.1 816","aria-hidden":"true"},F=s('',1),U=[F],X=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"x"),t("mn",null,"1")]),t("mo",null,"+"),t("msub",null,[t("mi",null,"x"),t("mn",null,"2")]),t("mo",null,"≤"),t("mn",null,"10")])],-1),K=t("h3",{id:"configuration",tabindex:"-1"},[e("Configuration "),t("a",{class:"header-anchor",href:"#configuration","aria-label":'Permalink to "Configuration"'},"​")],-1),Y=t("p",null,[t("strong",null,"Definition:"),e(" A configuration, also known as an assignment, is a specific set of values assigned to the variables in their respective domains. It represents a possible state of the variables.")],-1),t1=t("strong",null,"Example:",-1),e1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},o1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.294ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 572 453","aria-hidden":"true"},a1=t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D465",d:"M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z",style:{"stroke-width":"3"}})])])],-1),s1=[a1],n1=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"x")])],-1),i1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},l1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.109ex",height:"1.464ex",role:"img",focusable:"false",viewBox:"0 -442 490 647","aria-hidden":"true"},Q1=t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D466",d:"M21 287Q21 301 36 335T84 406T158 442Q199 442 224 419T250 355Q248 336 247 334Q247 331 231 288T198 191T182 105Q182 62 196 45T238 27Q261 27 281 38T312 61T339 94Q339 95 344 114T358 173T377 247Q415 397 419 404Q432 431 462 431Q475 431 483 424T494 412T496 403Q496 390 447 193T391 -23Q363 -106 294 -155T156 -205Q111 -205 77 -183T43 -117Q43 -95 50 -80T69 -58T89 -48T106 -45Q150 -45 150 -87Q150 -107 138 -122T115 -142T102 -147L99 -148Q101 -153 118 -160T152 -167H160Q177 -167 186 -165Q219 -156 247 -127T290 -65T313 -9T321 21L315 17Q309 13 296 6T270 -6Q250 -11 231 -11Q185 -11 150 11T104 82Q103 89 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1),r1=[Q1],T1=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"y")])],-1),d1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},h1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.526ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2000.7 1000","aria-hidden":"true"},c1=s('',1),m1=[c1],p1=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{stretchy:"false"},"["),t("mn",null,"0"),t("mo",null,","),t("mn",null,"5"),t("mo",{stretchy:"false"},"]")])],-1),x1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.442ex",height:"1.69ex",role:"img",focusable:"false",viewBox:"0 -665 2405.6 747","aria-hidden":"true"},u1=s('',1),_1=[u1],w1=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"x"),t("mo",null,"="),t("mn",null,"3")])],-1),f1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},b1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.257ex",height:"1.971ex",role:"img",focusable:"false",viewBox:"0 -666 2323.6 871","aria-hidden":"true"},v1=s('',1),H1=[v1],k1=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"y"),t("mo",null,"="),t("mn",null,"2")])],-1),y1=t("h3",{id:"Constraint-Satisfaction-or-Violation-by-a-Configuration",tabindex:"-1"},[e("Constraint Satisfaction or Violation by a Configuration "),t("a",{class:"header-anchor",href:"#Constraint-Satisfaction-or-Violation-by-a-Configuration","aria-label":'Permalink to "Constraint Satisfaction or Violation by a Configuration {#Constraint-Satisfaction-or-Violation-by-a-Configuration}"'},"​")],-1),V1=t("p",null,[t("strong",null,"Definition:"),e(" This refers to whether a specific configuration (set of variable assignments) satisfies or violates a given constraint instantiation. A constraint is satisfied if the configuration makes the constraint "),t("code",null,"true"),e("; otherwise, it is violated ("),t("code",null,"false"),e(").")],-1),M1=t("strong",null,"Example:",-1),C1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},L1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.448ex",height:"1.971ex",role:"img",focusable:"false",viewBox:"0 -666 4618 871","aria-hidden":"true"},Z1=s('',1),S1=[Z1],A1=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"x"),t("mo",null,"+"),t("mi",null,"y"),t("mo",null,"≤"),t("mn",null,"10")])],-1),j1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},I1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.442ex",height:"1.69ex",role:"img",focusable:"false",viewBox:"0 -665 2405.6 747","aria-hidden":"true"},D1=s('',1),P1=[D1],B1=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"x"),t("mo",null,"="),t("mn",null,"3")])],-1),J1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},E1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.257ex",height:"1.971ex",role:"img",focusable:"false",viewBox:"0 -666 2323.6 871","aria-hidden":"true"},z1=s('',1),G1=[z1],N1=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"y"),t("mo",null,"="),t("mn",null,"2")])],-1),R1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},q1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.176ex",height:"1.692ex",role:"img",focusable:"false",viewBox:"0 -666 4056 748","aria-hidden":"true"},$1=s('',1),O1=[$1],W1=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mn",null,"3"),t("mo",null,"+"),t("mn",null,"2"),t("mo",null,"="),t("mn",null,"5")])],-1),F1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},U1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.442ex",height:"1.692ex",role:"img",focusable:"false",viewBox:"0 -666 2405.6 748","aria-hidden":"true"},X1=s('',1),K1=[X1],Y1=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"x"),t("mo",null,"="),t("mn",null,"6")])],-1),t3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},e3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.257ex",height:"1.971ex",role:"img",focusable:"false",viewBox:"0 -666 2323.6 871","aria-hidden":"true"},o3=s('',1),a3=[o3],s3=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"y"),t("mo",null,"="),t("mn",null,"5")])],-1),n3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},i3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.308ex",height:"1.692ex",role:"img",focusable:"false",viewBox:"0 -666 4556 748","aria-hidden":"true"},l3=s('',1),Q3=[l3],r3=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mn",null,"6"),t("mo",null,"+"),t("mn",null,"5"),t("mo",null,"="),t("mn",null,"11")])],-1),T3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},d3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.262ex",height:"1.557ex",role:"img",focusable:"false",viewBox:"0 -666 1000 688","aria-hidden":"true"},h3=s('',1),c3=[h3],m3=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mn",null,"10")])],-1),p3=s('

Domain-defined variables

In CP, variables are defined through their domain. ConstraintDomains.jl supports various types of domains such as discrete ones (sets, range, etc.), or continuous intervals, and custom domains.

Constraints.jl: A versatile API

It implements a wide range of generic and core constraints, ensuring compatibility with XCSP3-core standards and providing a user-friendly interface. It includes features extracted from the learning blocks of Julia Constraints to leverage most of each constraint characteristics.

Models Through ConstraintModels.jl

The ConstraintModels.jl catalog offers a collection of predefined models and templates for constructing complex constraint satisfaction problems (CSPs) and optimization models. This resource provides reusable components to streamline the modeling process.

Contributions with new models are more than welcome!

Internal Aspects

Several internal components are crucial for the efficient functioning of Julia Constraints. ConstraintCommons.jl provides shared functionalities and utilities used across different parts of the framework, contributing to its robust performance and extensibility. However, it is unlikely to be of direct use to most users.

',9);function x3(g3,u3,_3,w3,f3,b3){return a(),o("div",null,[l,t("p",null,[Q,e(" Consider the constraint "),t("mjx-container",r,[(a(),o("svg",T,h)),c]),e(". This constraint involves two variables, "),t("mjx-container",m,[(a(),o("svg",p,g)),u]),e(" and "),t("mjx-container",_,[(a(),o("svg",w,b)),v]),e(", and specifies that their sum must not exceed "),t("mjx-container",H,[(a(),o("svg",k,V)),M]),e(".")]),C,L,t("p",null,[Z,e(" Given the generic constraint "),t("mjx-container",S,[(a(),o("svg",A,I)),D]),e(", if we have variables "),t("mjx-container",P,[(a(),o("svg",B,E)),z]),e(" and "),t("mjx-container",G,[(a(),o("svg",N,q)),$]),e(" in our problem, then the instantiated constraint would be "),t("mjx-container",O,[(a(),o("svg",W,U)),X]),e(".")]),K,Y,t("p",null,[t1,e(" For variables "),t("mjx-container",e1,[(a(),o("svg",o1,s1)),n1]),e(" and "),t("mjx-container",i1,[(a(),o("svg",l1,r1)),T1]),e(" with domains "),t("mjx-container",d1,[(a(),o("svg",h1,m1)),p1]),e(", a configuration could be "),t("mjx-container",x1,[(a(),o("svg",g1,_1)),w1]),e(" and "),t("mjx-container",f1,[(a(),o("svg",b1,H1)),k1]),e(".")]),y1,V1,t("p",null,[M1,e(" Given the constraint instantiation "),t("mjx-container",C1,[(a(),o("svg",L1,S1)),A1]),e(" and the configuration "),t("mjx-container",j1,[(a(),o("svg",I1,P1)),B1]),e(" and "),t("mjx-container",J1,[(a(),o("svg",E1,G1)),N1]),e(", the constraint is satisfied because "),t("mjx-container",R1,[(a(),o("svg",q1,O1)),W1]),e(", which is less than or equal to 10. However, for the configuration "),t("mjx-container",F1,[(a(),o("svg",U1,K1)),Y1]),e(" and "),t("mjx-container",t3,[(a(),o("svg",e3,a3)),s3]),e(", the constraint is violated because "),t("mjx-container",n3,[(a(),o("svg",i3,Q3)),r3]),e(", which exceeds "),t("mjx-container",T3,[(a(),o("svg",d3,c3)),m3]),e(".")]),p3])}const k3=n(i,[["render",x3]]);export{H3 as __pageData,k3 as default}; diff --git a/dev/assets/constraints_intro.md.C6-EYJrm.lean.js b/dev/assets/constraints_intro.md.C6-EYJrm.lean.js new file mode 100644 index 0000000..eebab95 --- /dev/null +++ b/dev/assets/constraints_intro.md.C6-EYJrm.lean.js @@ -0,0 +1 @@ +import{_ as n,c as o,j as t,a as e,a7 as s,o as a}from"./chunks/framework.CBLuZwrP.js";const H3=JSON.parse('{"title":"Introduction to basics constraint-based modeling tools","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/intro.md","filePath":"constraints/intro.md","lastUpdated":null}'),i={name:"constraints/intro.md"},l=s("",6),Q=t("strong",null,"Example:",-1),r={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},T={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.448ex",height:"1.971ex",role:"img",focusable:"false",viewBox:"0 -666 4618 871","aria-hidden":"true"},d=s("",1),h=[d],c=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"x"),t("mo",null,"+"),t("mi",null,"y"),t("mo",null,"≤"),t("mn",null,"10")])],-1),m={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},p={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.294ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 572 453","aria-hidden":"true"},x=t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D465",d:"M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z",style:{"stroke-width":"3"}})])])],-1),g=[x],u=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"x")])],-1),_={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},w={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.109ex",height:"1.464ex",role:"img",focusable:"false",viewBox:"0 -442 490 647","aria-hidden":"true"},f=t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D466",d:"M21 287Q21 301 36 335T84 406T158 442Q199 442 224 419T250 355Q248 336 247 334Q247 331 231 288T198 191T182 105Q182 62 196 45T238 27Q261 27 281 38T312 61T339 94Q339 95 344 114T358 173T377 247Q415 397 419 404Q432 431 462 431Q475 431 483 424T494 412T496 403Q496 390 447 193T391 -23Q363 -106 294 -155T156 -205Q111 -205 77 -183T43 -117Q43 -95 50 -80T69 -58T89 -48T106 -45Q150 -45 150 -87Q150 -107 138 -122T115 -142T102 -147L99 -148Q101 -153 118 -160T152 -167H160Q177 -167 186 -165Q219 -156 247 -127T290 -65T313 -9T321 21L315 17Q309 13 296 6T270 -6Q250 -11 231 -11Q185 -11 150 11T104 82Q103 89 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1),b=[f],v=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"y")])],-1),H={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},k={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.262ex",height:"1.557ex",role:"img",focusable:"false",viewBox:"0 -666 1000 688","aria-hidden":"true"},y=s("",1),V=[y],M=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mn",null,"10")])],-1),C=t("h3",{id:"Constraint-Instantiation",tabindex:"-1"},[e("Constraint Instantiation "),t("a",{class:"header-anchor",href:"#Constraint-Instantiation","aria-label":'Permalink to "Constraint Instantiation {#Constraint-Instantiation}"'},"​")],-1),L=t("p",null,[t("strong",null,"Definition:"),e(" A constraint instantiation refers to a specific application of a generic constraint to a particular subset of variables from a problem. It is essentially the constraint applied with the actual variables of the problem.")],-1),Z=t("strong",null,"Example:",-1),S={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},A={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.448ex",height:"1.971ex",role:"img",focusable:"false",viewBox:"0 -666 4618 871","aria-hidden":"true"},j=s("",1),I=[j],D=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"x"),t("mo",null,"+"),t("mi",null,"y"),t("mo",null,"≤"),t("mn",null,"10")])],-1),P={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},B={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.339ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.282ex",height:"1.339ex",role:"img",focusable:"false",viewBox:"0 -442 1008.6 592","aria-hidden":"true"},J=s("",1),E=[J],z=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"x"),t("mn",null,"1")])])],-1),G={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},N={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.339ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.282ex",height:"1.339ex",role:"img",focusable:"false",viewBox:"0 -442 1008.6 592","aria-hidden":"true"},R=s("",1),q=[R],$=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"x"),t("mn",null,"2")])])],-1),O={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},W={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.339ex"},xmlns:"http://www.w3.org/2000/svg",width:"12.609ex",height:"1.846ex",role:"img",focusable:"false",viewBox:"0 -666 5573.1 816","aria-hidden":"true"},F=s("",1),U=[F],X=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"x"),t("mn",null,"1")]),t("mo",null,"+"),t("msub",null,[t("mi",null,"x"),t("mn",null,"2")]),t("mo",null,"≤"),t("mn",null,"10")])],-1),K=t("h3",{id:"configuration",tabindex:"-1"},[e("Configuration "),t("a",{class:"header-anchor",href:"#configuration","aria-label":'Permalink to "Configuration"'},"​")],-1),Y=t("p",null,[t("strong",null,"Definition:"),e(" A configuration, also known as an assignment, is a specific set of values assigned to the variables in their respective domains. It represents a possible state of the variables.")],-1),t1=t("strong",null,"Example:",-1),e1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},o1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.294ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 572 453","aria-hidden":"true"},a1=t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D465",d:"M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z",style:{"stroke-width":"3"}})])])],-1),s1=[a1],n1=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"x")])],-1),i1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},l1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.109ex",height:"1.464ex",role:"img",focusable:"false",viewBox:"0 -442 490 647","aria-hidden":"true"},Q1=t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D466",d:"M21 287Q21 301 36 335T84 406T158 442Q199 442 224 419T250 355Q248 336 247 334Q247 331 231 288T198 191T182 105Q182 62 196 45T238 27Q261 27 281 38T312 61T339 94Q339 95 344 114T358 173T377 247Q415 397 419 404Q432 431 462 431Q475 431 483 424T494 412T496 403Q496 390 447 193T391 -23Q363 -106 294 -155T156 -205Q111 -205 77 -183T43 -117Q43 -95 50 -80T69 -58T89 -48T106 -45Q150 -45 150 -87Q150 -107 138 -122T115 -142T102 -147L99 -148Q101 -153 118 -160T152 -167H160Q177 -167 186 -165Q219 -156 247 -127T290 -65T313 -9T321 21L315 17Q309 13 296 6T270 -6Q250 -11 231 -11Q185 -11 150 11T104 82Q103 89 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1),r1=[Q1],T1=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"y")])],-1),d1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},h1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.526ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2000.7 1000","aria-hidden":"true"},c1=s("",1),m1=[c1],p1=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{stretchy:"false"},"["),t("mn",null,"0"),t("mo",null,","),t("mn",null,"5"),t("mo",{stretchy:"false"},"]")])],-1),x1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.442ex",height:"1.69ex",role:"img",focusable:"false",viewBox:"0 -665 2405.6 747","aria-hidden":"true"},u1=s("",1),_1=[u1],w1=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"x"),t("mo",null,"="),t("mn",null,"3")])],-1),f1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},b1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.257ex",height:"1.971ex",role:"img",focusable:"false",viewBox:"0 -666 2323.6 871","aria-hidden":"true"},v1=s("",1),H1=[v1],k1=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"y"),t("mo",null,"="),t("mn",null,"2")])],-1),y1=t("h3",{id:"Constraint-Satisfaction-or-Violation-by-a-Configuration",tabindex:"-1"},[e("Constraint Satisfaction or Violation by a Configuration "),t("a",{class:"header-anchor",href:"#Constraint-Satisfaction-or-Violation-by-a-Configuration","aria-label":'Permalink to "Constraint Satisfaction or Violation by a Configuration {#Constraint-Satisfaction-or-Violation-by-a-Configuration}"'},"​")],-1),V1=t("p",null,[t("strong",null,"Definition:"),e(" This refers to whether a specific configuration (set of variable assignments) satisfies or violates a given constraint instantiation. A constraint is satisfied if the configuration makes the constraint "),t("code",null,"true"),e("; otherwise, it is violated ("),t("code",null,"false"),e(").")],-1),M1=t("strong",null,"Example:",-1),C1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},L1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.448ex",height:"1.971ex",role:"img",focusable:"false",viewBox:"0 -666 4618 871","aria-hidden":"true"},Z1=s("",1),S1=[Z1],A1=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"x"),t("mo",null,"+"),t("mi",null,"y"),t("mo",null,"≤"),t("mn",null,"10")])],-1),j1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},I1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.442ex",height:"1.69ex",role:"img",focusable:"false",viewBox:"0 -665 2405.6 747","aria-hidden":"true"},D1=s("",1),P1=[D1],B1=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"x"),t("mo",null,"="),t("mn",null,"3")])],-1),J1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},E1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.257ex",height:"1.971ex",role:"img",focusable:"false",viewBox:"0 -666 2323.6 871","aria-hidden":"true"},z1=s("",1),G1=[z1],N1=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"y"),t("mo",null,"="),t("mn",null,"2")])],-1),R1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},q1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.176ex",height:"1.692ex",role:"img",focusable:"false",viewBox:"0 -666 4056 748","aria-hidden":"true"},$1=s("",1),O1=[$1],W1=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mn",null,"3"),t("mo",null,"+"),t("mn",null,"2"),t("mo",null,"="),t("mn",null,"5")])],-1),F1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},U1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.442ex",height:"1.692ex",role:"img",focusable:"false",viewBox:"0 -666 2405.6 748","aria-hidden":"true"},X1=s("",1),K1=[X1],Y1=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"x"),t("mo",null,"="),t("mn",null,"6")])],-1),t3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},e3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.257ex",height:"1.971ex",role:"img",focusable:"false",viewBox:"0 -666 2323.6 871","aria-hidden":"true"},o3=s("",1),a3=[o3],s3=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"y"),t("mo",null,"="),t("mn",null,"5")])],-1),n3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},i3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.308ex",height:"1.692ex",role:"img",focusable:"false",viewBox:"0 -666 4556 748","aria-hidden":"true"},l3=s("",1),Q3=[l3],r3=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mn",null,"6"),t("mo",null,"+"),t("mn",null,"5"),t("mo",null,"="),t("mn",null,"11")])],-1),T3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},d3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.262ex",height:"1.557ex",role:"img",focusable:"false",viewBox:"0 -666 1000 688","aria-hidden":"true"},h3=s("",1),c3=[h3],m3=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mn",null,"10")])],-1),p3=s("",9);function x3(g3,u3,_3,w3,f3,b3){return a(),o("div",null,[l,t("p",null,[Q,e(" Consider the constraint "),t("mjx-container",r,[(a(),o("svg",T,h)),c]),e(". This constraint involves two variables, "),t("mjx-container",m,[(a(),o("svg",p,g)),u]),e(" and "),t("mjx-container",_,[(a(),o("svg",w,b)),v]),e(", and specifies that their sum must not exceed "),t("mjx-container",H,[(a(),o("svg",k,V)),M]),e(".")]),C,L,t("p",null,[Z,e(" Given the generic constraint "),t("mjx-container",S,[(a(),o("svg",A,I)),D]),e(", if we have variables "),t("mjx-container",P,[(a(),o("svg",B,E)),z]),e(" and "),t("mjx-container",G,[(a(),o("svg",N,q)),$]),e(" in our problem, then the instantiated constraint would be "),t("mjx-container",O,[(a(),o("svg",W,U)),X]),e(".")]),K,Y,t("p",null,[t1,e(" For variables "),t("mjx-container",e1,[(a(),o("svg",o1,s1)),n1]),e(" and "),t("mjx-container",i1,[(a(),o("svg",l1,r1)),T1]),e(" with domains "),t("mjx-container",d1,[(a(),o("svg",h1,m1)),p1]),e(", a configuration could be "),t("mjx-container",x1,[(a(),o("svg",g1,_1)),w1]),e(" and "),t("mjx-container",f1,[(a(),o("svg",b1,H1)),k1]),e(".")]),y1,V1,t("p",null,[M1,e(" Given the constraint instantiation "),t("mjx-container",C1,[(a(),o("svg",L1,S1)),A1]),e(" and the configuration "),t("mjx-container",j1,[(a(),o("svg",I1,P1)),B1]),e(" and "),t("mjx-container",J1,[(a(),o("svg",E1,G1)),N1]),e(", the constraint is satisfied because "),t("mjx-container",R1,[(a(),o("svg",q1,O1)),W1]),e(", which is less than or equal to 10. However, for the configuration "),t("mjx-container",F1,[(a(),o("svg",U1,K1)),Y1]),e(" and "),t("mjx-container",t3,[(a(),o("svg",e3,a3)),s3]),e(", the constraint is violated because "),t("mjx-container",n3,[(a(),o("svg",i3,Q3)),r3]),e(", which exceeds "),t("mjx-container",T3,[(a(),o("svg",d3,c3)),m3]),e(".")]),p3])}const k3=n(i,[["render",x3]]);export{H3 as __pageData,k3 as default}; diff --git a/dev/assets/constraints_language_constraints.md.BSznWPSC.js b/dev/assets/constraints_language_constraints.md.Bq6voQil.js similarity index 99% rename from dev/assets/constraints_language_constraints.md.BSznWPSC.js rename to dev/assets/constraints_language_constraints.md.Bq6voQil.js index 6b69600..7ac7897 100644 --- a/dev/assets/constraints_language_constraints.md.BSznWPSC.js +++ b/dev/assets/constraints_language_constraints.md.Bq6voQil.js @@ -1,4 +1,4 @@ -import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.U9t3ZutP.js";const o=JSON.parse('{"title":"Constraints.jl: Streamlining Constraint Definition and Integration in Julia","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/language_constraints.md","filePath":"constraints/language_constraints.md","lastUpdated":null}'),t={name:"constraints/language_constraints.md"},h=n(`

Constraints.jl: Streamlining Constraint Definition and Integration in Julia

Constraints defined from Languages

# Constraints.xcsp_regularFunction.
julia
xcsp_regular(; list, automaton)
+import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.CBLuZwrP.js";const o=JSON.parse('{"title":"Constraints.jl: Streamlining Constraint Definition and Integration in Julia","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/language_constraints.md","filePath":"constraints/language_constraints.md","lastUpdated":null}'),t={name:"constraints/language_constraints.md"},h=n(`

Constraints.jl: Streamlining Constraint Definition and Integration in Julia

Constraints defined from Languages

# Constraints.xcsp_regularFunction.
julia
xcsp_regular(; list, automaton)
 
 Ensures that a sequence \`x\` (interpreted as a word) is accepted by the regular language represented by a given automaton. This constraint verifies the compliance of \`x\` with the language rules encoded within the \`automaton\` parameter, which must be an instance of \`<:AbstractAutomaton\`.

Arguments

  • list::Vector{Int}: A list of variables

  • automaton<:AbstractAutomaton: An automaton representing the regular language

Variants

  • :regular: Ensures that a sequence x (interpreted as a word) is accepted by the regular language represented by a given automaton. This constraint verifies the compliance of x with the language rules encoded within the automaton parameter, which must be an instance of <:AbstractAutomaton.
julia
concept(:regular, x; language)
 concept(:regular)(x; language)

Examples

julia
c = concept(:regular)
diff --git a/dev/assets/constraints_language_constraints.md.BSznWPSC.lean.js b/dev/assets/constraints_language_constraints.md.Bq6voQil.lean.js
similarity index 75%
rename from dev/assets/constraints_language_constraints.md.BSznWPSC.lean.js
rename to dev/assets/constraints_language_constraints.md.Bq6voQil.lean.js
index c78e191..731e043 100644
--- a/dev/assets/constraints_language_constraints.md.BSznWPSC.lean.js
+++ b/dev/assets/constraints_language_constraints.md.Bq6voQil.lean.js
@@ -1 +1 @@
-import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.U9t3ZutP.js";const o=JSON.parse('{"title":"Constraints.jl: Streamlining Constraint Definition and Integration in Julia","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/language_constraints.md","filePath":"constraints/language_constraints.md","lastUpdated":null}'),t={name:"constraints/language_constraints.md"},h=n("",6),l=[h];function k(p,e,E,r,d,g){return a(),i("div",null,l)}const F=s(t,[["render",k]]);export{o as __pageData,F as default};
+import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.CBLuZwrP.js";const o=JSON.parse('{"title":"Constraints.jl: Streamlining Constraint Definition and Integration in Julia","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/language_constraints.md","filePath":"constraints/language_constraints.md","lastUpdated":null}'),t={name:"constraints/language_constraints.md"},h=n("",6),l=[h];function k(p,e,E,r,d,g){return a(),i("div",null,l)}const F=s(t,[["render",k]]);export{o as __pageData,F as default};
diff --git a/dev/assets/constraints_packing_scheduling_constraints.md.DIRIJz4y.js b/dev/assets/constraints_packing_scheduling_constraints.md.B4w1oYr1.js
similarity index 99%
rename from dev/assets/constraints_packing_scheduling_constraints.md.DIRIJz4y.js
rename to dev/assets/constraints_packing_scheduling_constraints.md.B4w1oYr1.js
index f2578b3..c4c9851 100644
--- a/dev/assets/constraints_packing_scheduling_constraints.md.DIRIJz4y.js
+++ b/dev/assets/constraints_packing_scheduling_constraints.md.B4w1oYr1.js
@@ -1,4 +1,4 @@
-import{_ as s,c as i,o as a,a6 as t}from"./chunks/framework.U9t3ZutP.js";const C=JSON.parse('{"title":"Constraints.jl: Streamlining Constraint Definition and Integration in Julia","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/packing_scheduling_constraints.md","filePath":"constraints/packing_scheduling_constraints.md","lastUpdated":null}'),n={name:"constraints/packing_scheduling_constraints.md"},h=t(`

Constraints.jl: Streamlining Constraint Definition and Integration in Julia

Packing and Scheduling Constraints

# Constraints.xcsp_cumulativeFunction.
julia
xcsp_cumulative(; origins, lengths, heights, condition)

Return true if the cumulative constraint is satisfied, false otherwise. The cumulative constraint is a global constraint used in constraint programming that is often used in scheduling problems. It ensures that for any point in time, the sum of the "heights" of tasks that are ongoing at that time does not exceed a certain limit.

Arguments

  • origins::AbstractVector: list of origins of the tasks.

  • lengths::AbstractVector: list of lengths of the tasks.

  • heights::AbstractVector: list of heights of the tasks.

  • condition::Tuple: condition to check.

Variants

  • :cumulative: The cumulative constraint is a global constraint used in constraint programming that is often used in scheduling problems. It ensures that for any point in time, the sum of the "heights" of tasks that are ongoing at that time does not exceed a certain limit.
julia
concept(:cumulative, x; pair_vars, op, val)
+import{_ as s,c as i,o as a,a7 as t}from"./chunks/framework.CBLuZwrP.js";const C=JSON.parse('{"title":"Constraints.jl: Streamlining Constraint Definition and Integration in Julia","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/packing_scheduling_constraints.md","filePath":"constraints/packing_scheduling_constraints.md","lastUpdated":null}'),n={name:"constraints/packing_scheduling_constraints.md"},h=t(`

Constraints.jl: Streamlining Constraint Definition and Integration in Julia

Packing and Scheduling Constraints

# Constraints.xcsp_cumulativeFunction.
julia
xcsp_cumulative(; origins, lengths, heights, condition)

Return true if the cumulative constraint is satisfied, false otherwise. The cumulative constraint is a global constraint used in constraint programming that is often used in scheduling problems. It ensures that for any point in time, the sum of the "heights" of tasks that are ongoing at that time does not exceed a certain limit.

Arguments

  • origins::AbstractVector: list of origins of the tasks.

  • lengths::AbstractVector: list of lengths of the tasks.

  • heights::AbstractVector: list of heights of the tasks.

  • condition::Tuple: condition to check.

Variants

  • :cumulative: The cumulative constraint is a global constraint used in constraint programming that is often used in scheduling problems. It ensures that for any point in time, the sum of the "heights" of tasks that are ongoing at that time does not exceed a certain limit.
julia
concept(:cumulative, x; pair_vars, op, val)
 concept(:cumulative)(x; pair_vars, op, val)

Examples

julia
c = concept(:cumulative)
 
 c([1, 2, 3, 4, 5]; val = 1)
diff --git a/dev/assets/constraints_packing_scheduling_constraints.md.DIRIJz4y.lean.js b/dev/assets/constraints_packing_scheduling_constraints.md.B4w1oYr1.lean.js
similarity index 77%
rename from dev/assets/constraints_packing_scheduling_constraints.md.DIRIJz4y.lean.js
rename to dev/assets/constraints_packing_scheduling_constraints.md.B4w1oYr1.lean.js
index 0f44d8a..e2c93af 100644
--- a/dev/assets/constraints_packing_scheduling_constraints.md.DIRIJz4y.lean.js
+++ b/dev/assets/constraints_packing_scheduling_constraints.md.B4w1oYr1.lean.js
@@ -1 +1 @@
-import{_ as s,c as i,o as a,a6 as t}from"./chunks/framework.U9t3ZutP.js";const C=JSON.parse('{"title":"Constraints.jl: Streamlining Constraint Definition and Integration in Julia","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/packing_scheduling_constraints.md","filePath":"constraints/packing_scheduling_constraints.md","lastUpdated":null}'),n={name:"constraints/packing_scheduling_constraints.md"},h=t("",6),k=[h];function l(p,e,r,E,d,g){return a(),i("div",null,k)}const y=s(n,[["render",l]]);export{C as __pageData,y as default};
+import{_ as s,c as i,o as a,a7 as t}from"./chunks/framework.CBLuZwrP.js";const C=JSON.parse('{"title":"Constraints.jl: Streamlining Constraint Definition and Integration in Julia","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/packing_scheduling_constraints.md","filePath":"constraints/packing_scheduling_constraints.md","lastUpdated":null}'),n={name:"constraints/packing_scheduling_constraints.md"},h=t("",6),k=[h];function l(p,e,r,E,d,g){return a(),i("div",null,k)}const y=s(n,[["render",l]]);export{C as __pageData,y as default};
diff --git a/dev/assets/cp_advanced.md.aboXfsbo.js b/dev/assets/cp_advanced.md.Cgd9rMxw.js
similarity index 91%
rename from dev/assets/cp_advanced.md.aboXfsbo.js
rename to dev/assets/cp_advanced.md.Cgd9rMxw.js
index 5b0d2f0..dee2437 100644
--- a/dev/assets/cp_advanced.md.aboXfsbo.js
+++ b/dev/assets/cp_advanced.md.Cgd9rMxw.js
@@ -1 +1 @@
-import{_ as a,c as e,o as t,a6 as n}from"./chunks/framework.U9t3ZutP.js";const u=JSON.parse('{"title":"Advanced Constraint Programming Techniques","description":"","frontmatter":{},"headers":[],"relativePath":"cp/advanced.md","filePath":"cp/advanced.md","lastUpdated":null}'),i={name:"cp/advanced.md"},r=n('

Advanced Constraint Programming Techniques

Global Constraints and Their Uses

  • Dive deeper into global constraints and how they simplify complex problems.

Search Strategies and Optimization

  • Discuss various search strategies and their impact on solving CP problems.
',5),s=[r];function o(d,c,l,h,m,_){return t(),e("div",null,s)}const g=a(i,[["render",o]]);export{u as __pageData,g as default}; +import{_ as a,c as e,o as t,a7 as n}from"./chunks/framework.CBLuZwrP.js";const u=JSON.parse('{"title":"Advanced Constraint Programming Techniques","description":"","frontmatter":{},"headers":[],"relativePath":"cp/advanced.md","filePath":"cp/advanced.md","lastUpdated":null}'),i={name:"cp/advanced.md"},r=n('

Advanced Constraint Programming Techniques

Global Constraints and Their Uses

  • Dive deeper into global constraints and how they simplify complex problems.

Search Strategies and Optimization

  • Discuss various search strategies and their impact on solving CP problems.
',5),s=[r];function o(d,c,l,h,m,_){return t(),e("div",null,s)}const g=a(i,[["render",o]]);export{u as __pageData,g as default}; diff --git a/dev/assets/cp_advanced.md.aboXfsbo.lean.js b/dev/assets/cp_advanced.md.Cgd9rMxw.lean.js similarity index 70% rename from dev/assets/cp_advanced.md.aboXfsbo.lean.js rename to dev/assets/cp_advanced.md.Cgd9rMxw.lean.js index cfdd3b4..495aa9d 100644 --- a/dev/assets/cp_advanced.md.aboXfsbo.lean.js +++ b/dev/assets/cp_advanced.md.Cgd9rMxw.lean.js @@ -1 +1 @@ -import{_ as a,c as e,o as t,a6 as n}from"./chunks/framework.U9t3ZutP.js";const u=JSON.parse('{"title":"Advanced Constraint Programming Techniques","description":"","frontmatter":{},"headers":[],"relativePath":"cp/advanced.md","filePath":"cp/advanced.md","lastUpdated":null}'),i={name:"cp/advanced.md"},r=n("",5),s=[r];function o(d,c,l,h,m,_){return t(),e("div",null,s)}const g=a(i,[["render",o]]);export{u as __pageData,g as default}; +import{_ as a,c as e,o as t,a7 as n}from"./chunks/framework.CBLuZwrP.js";const u=JSON.parse('{"title":"Advanced Constraint Programming Techniques","description":"","frontmatter":{},"headers":[],"relativePath":"cp/advanced.md","filePath":"cp/advanced.md","lastUpdated":null}'),i={name:"cp/advanced.md"},r=n("",5),s=[r];function o(d,c,l,h,m,_){return t(),e("div",null,s)}const g=a(i,[["render",o]]);export{u as __pageData,g as default}; diff --git a/dev/assets/cp_applications.md.CPP6SuH3.js b/dev/assets/cp_applications.md.CNAr7LYf.js similarity index 91% rename from dev/assets/cp_applications.md.CPP6SuH3.js rename to dev/assets/cp_applications.md.CNAr7LYf.js index 4c87c94..f3dc4ef 100644 --- a/dev/assets/cp_applications.md.CPP6SuH3.js +++ b/dev/assets/cp_applications.md.CNAr7LYf.js @@ -1 +1 @@ -import{_ as a,c as e,o as t,a6 as i}from"./chunks/framework.U9t3ZutP.js";const _=JSON.parse('{"title":"Applying Optimization Methods","description":"","frontmatter":{},"headers":[],"relativePath":"cp/applications.md","filePath":"cp/applications.md","lastUpdated":null}'),o={name:"cp/applications.md"},l=i('

Applying Optimization Methods

Case Studies and Real-World Applications

  • Showcase studies where CP and optimization have been successfully applied.

From Theory to Practice

  • Guide readers through the process of formulating and solving an optimization problem from a real-world scenario.
',5),r=[l];function s(n,p,c,d,h,m){return t(),e("div",null,r)}const f=a(o,[["render",s]]);export{_ as __pageData,f as default}; +import{_ as a,c as e,o as t,a7 as i}from"./chunks/framework.CBLuZwrP.js";const _=JSON.parse('{"title":"Applying Optimization Methods","description":"","frontmatter":{},"headers":[],"relativePath":"cp/applications.md","filePath":"cp/applications.md","lastUpdated":null}'),o={name:"cp/applications.md"},l=i('

Applying Optimization Methods

Case Studies and Real-World Applications

  • Showcase studies where CP and optimization have been successfully applied.

From Theory to Practice

  • Guide readers through the process of formulating and solving an optimization problem from a real-world scenario.
',5),r=[l];function s(n,p,c,d,h,m){return t(),e("div",null,r)}const f=a(o,[["render",s]]);export{_ as __pageData,f as default}; diff --git a/dev/assets/cp_applications.md.CPP6SuH3.lean.js b/dev/assets/cp_applications.md.CNAr7LYf.lean.js similarity index 70% rename from dev/assets/cp_applications.md.CPP6SuH3.lean.js rename to dev/assets/cp_applications.md.CNAr7LYf.lean.js index c8babac..0cd4140 100644 --- a/dev/assets/cp_applications.md.CPP6SuH3.lean.js +++ b/dev/assets/cp_applications.md.CNAr7LYf.lean.js @@ -1 +1 @@ -import{_ as a,c as e,o as t,a6 as i}from"./chunks/framework.U9t3ZutP.js";const _=JSON.parse('{"title":"Applying Optimization Methods","description":"","frontmatter":{},"headers":[],"relativePath":"cp/applications.md","filePath":"cp/applications.md","lastUpdated":null}'),o={name:"cp/applications.md"},l=i("",5),r=[l];function s(n,p,c,d,h,m){return t(),e("div",null,r)}const f=a(o,[["render",s]]);export{_ as __pageData,f as default}; +import{_ as a,c as e,o as t,a7 as i}from"./chunks/framework.CBLuZwrP.js";const _=JSON.parse('{"title":"Applying Optimization Methods","description":"","frontmatter":{},"headers":[],"relativePath":"cp/applications.md","filePath":"cp/applications.md","lastUpdated":null}'),o={name:"cp/applications.md"},l=i("",5),r=[l];function s(n,p,c,d,h,m){return t(),e("div",null,r)}const f=a(o,[["render",s]]);export{_ as __pageData,f as default}; diff --git a/dev/assets/cp_contribution.md.BXTCGeFC.js b/dev/assets/cp_contribution.md.C-ib1HN5.js similarity index 90% rename from dev/assets/cp_contribution.md.BXTCGeFC.js rename to dev/assets/cp_contribution.md.C-ib1HN5.js index 3a9889f..f384661 100644 --- a/dev/assets/cp_contribution.md.BXTCGeFC.js +++ b/dev/assets/cp_contribution.md.C-ib1HN5.js @@ -1 +1 @@ -import{_ as t,c as n,o as i,a6 as o}from"./chunks/framework.U9t3ZutP.js";const C=JSON.parse('{"title":"Community and Contribution","description":"","frontmatter":{},"headers":[],"relativePath":"cp/contribution.md","filePath":"cp/contribution.md","lastUpdated":null}'),a={name:"cp/contribution.md"},e=o('

Community and Contribution

Joining the JuliaConstraint Community

  • Encourage readers to join the community, highlighting how they can contribute and collaborate.

Future Directions

  • Share the vision for JuliaConstraint and upcoming projects or areas of research.
',5),r=[e];function u(c,s,l,m,h,d){return i(),n("div",null,r)}const b=t(a,[["render",u]]);export{C as __pageData,b as default}; +import{_ as t,c as n,o as i,a7 as o}from"./chunks/framework.CBLuZwrP.js";const C=JSON.parse('{"title":"Community and Contribution","description":"","frontmatter":{},"headers":[],"relativePath":"cp/contribution.md","filePath":"cp/contribution.md","lastUpdated":null}'),a={name:"cp/contribution.md"},e=o('

Community and Contribution

Joining the JuliaConstraint Community

  • Encourage readers to join the community, highlighting how they can contribute and collaborate.

Future Directions

  • Share the vision for JuliaConstraint and upcoming projects or areas of research.
',5),r=[e];function u(c,s,l,m,h,d){return i(),n("div",null,r)}const b=t(a,[["render",u]]);export{C as __pageData,b as default}; diff --git a/dev/assets/cp_contribution.md.BXTCGeFC.lean.js b/dev/assets/cp_contribution.md.C-ib1HN5.lean.js similarity index 70% rename from dev/assets/cp_contribution.md.BXTCGeFC.lean.js rename to dev/assets/cp_contribution.md.C-ib1HN5.lean.js index 2a01dd4..c00afdb 100644 --- a/dev/assets/cp_contribution.md.BXTCGeFC.lean.js +++ b/dev/assets/cp_contribution.md.C-ib1HN5.lean.js @@ -1 +1 @@ -import{_ as t,c as n,o as i,a6 as o}from"./chunks/framework.U9t3ZutP.js";const C=JSON.parse('{"title":"Community and Contribution","description":"","frontmatter":{},"headers":[],"relativePath":"cp/contribution.md","filePath":"cp/contribution.md","lastUpdated":null}'),a={name:"cp/contribution.md"},e=o("",5),r=[e];function u(c,s,l,m,h,d){return i(),n("div",null,r)}const b=t(a,[["render",u]]);export{C as __pageData,b as default}; +import{_ as t,c as n,o as i,a7 as o}from"./chunks/framework.CBLuZwrP.js";const C=JSON.parse('{"title":"Community and Contribution","description":"","frontmatter":{},"headers":[],"relativePath":"cp/contribution.md","filePath":"cp/contribution.md","lastUpdated":null}'),a={name:"cp/contribution.md"},e=o("",5),r=[e];function u(c,s,l,m,h,d){return i(),n("div",null,r)}const b=t(a,[["render",u]]);export{C as __pageData,b as default}; diff --git a/dev/assets/cp_cp101.md.B6QE-eYu.js b/dev/assets/cp_cp101.md.CZURQeDs.js similarity index 92% rename from dev/assets/cp_cp101.md.B6QE-eYu.js rename to dev/assets/cp_cp101.md.CZURQeDs.js index cd1532f..6bacdeb 100644 --- a/dev/assets/cp_cp101.md.B6QE-eYu.js +++ b/dev/assets/cp_cp101.md.CZURQeDs.js @@ -1 +1 @@ -import{_ as a,c as i,o as t,a6 as o}from"./chunks/framework.U9t3ZutP.js";const f=JSON.parse('{"title":"Constraint Programming 101","description":"","frontmatter":{},"headers":[],"relativePath":"cp/cp101.md","filePath":"cp/cp101.md","lastUpdated":null}'),n={name:"cp/cp101.md"},r=o('

Constraint Programming 101

What is Constraint Programming?

  • Define CP and its significance in solving combinatorial problems.

Basic Concepts and Terminology

  • Introduce key concepts such as constraints, domains, and variables.

How CP differs from other optimization techniques

  • Contrast with other methods like linear programming and metaheuristics.
',7),e=[r];function s(c,m,l,h,d,g){return t(),i("div",null,e)}const u=a(n,[["render",s]]);export{f as __pageData,u as default}; +import{_ as a,c as i,o as t,a7 as o}from"./chunks/framework.CBLuZwrP.js";const f=JSON.parse('{"title":"Constraint Programming 101","description":"","frontmatter":{},"headers":[],"relativePath":"cp/cp101.md","filePath":"cp/cp101.md","lastUpdated":null}'),n={name:"cp/cp101.md"},r=o('

Constraint Programming 101

What is Constraint Programming?

  • Define CP and its significance in solving combinatorial problems.

Basic Concepts and Terminology

  • Introduce key concepts such as constraints, domains, and variables.

How CP differs from other optimization techniques

  • Contrast with other methods like linear programming and metaheuristics.
',7),e=[r];function s(c,m,l,h,d,g){return t(),i("div",null,e)}const u=a(n,[["render",s]]);export{f as __pageData,u as default}; diff --git a/dev/assets/cp_cp101.md.B6QE-eYu.lean.js b/dev/assets/cp_cp101.md.CZURQeDs.lean.js similarity index 68% rename from dev/assets/cp_cp101.md.B6QE-eYu.lean.js rename to dev/assets/cp_cp101.md.CZURQeDs.lean.js index 3d6c0a4..35745a9 100644 --- a/dev/assets/cp_cp101.md.B6QE-eYu.lean.js +++ b/dev/assets/cp_cp101.md.CZURQeDs.lean.js @@ -1 +1 @@ -import{_ as a,c as i,o as t,a6 as o}from"./chunks/framework.U9t3ZutP.js";const f=JSON.parse('{"title":"Constraint Programming 101","description":"","frontmatter":{},"headers":[],"relativePath":"cp/cp101.md","filePath":"cp/cp101.md","lastUpdated":null}'),n={name:"cp/cp101.md"},r=o("",7),e=[r];function s(c,m,l,h,d,g){return t(),i("div",null,e)}const u=a(n,[["render",s]]);export{f as __pageData,u as default}; +import{_ as a,c as i,o as t,a7 as o}from"./chunks/framework.CBLuZwrP.js";const f=JSON.parse('{"title":"Constraint Programming 101","description":"","frontmatter":{},"headers":[],"relativePath":"cp/cp101.md","filePath":"cp/cp101.md","lastUpdated":null}'),n={name:"cp/cp101.md"},r=o("",7),e=[r];function s(c,m,l,h,d,g){return t(),i("div",null,e)}const u=a(n,[["render",s]]);export{f as __pageData,u as default}; diff --git a/dev/assets/cp_ecosystem.md.BAIJ9WaC.js b/dev/assets/cp_ecosystem.md.CyDLRe9i.js similarity index 91% rename from dev/assets/cp_ecosystem.md.BAIJ9WaC.js rename to dev/assets/cp_ecosystem.md.CyDLRe9i.js index bc7eb93..934aa04 100644 --- a/dev/assets/cp_ecosystem.md.BAIJ9WaC.js +++ b/dev/assets/cp_ecosystem.md.CyDLRe9i.js @@ -1 +1 @@ -import{_ as a,c as t,o as e,a6 as i}from"./chunks/framework.U9t3ZutP.js";const h=JSON.parse('{"title":"Exploring JuliaConstraint Packages","description":"","frontmatter":{},"headers":[],"relativePath":"cp/ecosystem.md","filePath":"cp/ecosystem.md","lastUpdated":null}'),n={name:"cp/ecosystem.md"},s=i('

Exploring JuliaConstraint Packages

Package Overviews

  • Introduce each package within the JuliaConstraint organization, its purpose, and primary features.

Installation and Getting Started Guides

  • Provide step-by-step instructions for installing and getting started with each package.
',5),r=[s];function o(l,c,d,u,g,p){return e(),t("div",null,r)}const P=a(n,[["render",o]]);export{h as __pageData,P as default}; +import{_ as a,c as t,o as e,a7 as i}from"./chunks/framework.CBLuZwrP.js";const h=JSON.parse('{"title":"Exploring JuliaConstraint Packages","description":"","frontmatter":{},"headers":[],"relativePath":"cp/ecosystem.md","filePath":"cp/ecosystem.md","lastUpdated":null}'),n={name:"cp/ecosystem.md"},s=i('

Exploring JuliaConstraint Packages

Package Overviews

  • Introduce each package within the JuliaConstraint organization, its purpose, and primary features.

Installation and Getting Started Guides

  • Provide step-by-step instructions for installing and getting started with each package.
',5),r=[s];function o(l,c,d,u,g,p){return e(),t("div",null,r)}const P=a(n,[["render",o]]);export{h as __pageData,P as default}; diff --git a/dev/assets/cp_ecosystem.md.BAIJ9WaC.lean.js b/dev/assets/cp_ecosystem.md.CyDLRe9i.lean.js similarity index 70% rename from dev/assets/cp_ecosystem.md.BAIJ9WaC.lean.js rename to dev/assets/cp_ecosystem.md.CyDLRe9i.lean.js index a24b058..bc2429c 100644 --- a/dev/assets/cp_ecosystem.md.BAIJ9WaC.lean.js +++ b/dev/assets/cp_ecosystem.md.CyDLRe9i.lean.js @@ -1 +1 @@ -import{_ as a,c as t,o as e,a6 as i}from"./chunks/framework.U9t3ZutP.js";const h=JSON.parse('{"title":"Exploring JuliaConstraint Packages","description":"","frontmatter":{},"headers":[],"relativePath":"cp/ecosystem.md","filePath":"cp/ecosystem.md","lastUpdated":null}'),n={name:"cp/ecosystem.md"},s=i("",5),r=[s];function o(l,c,d,u,g,p){return e(),t("div",null,r)}const P=a(n,[["render",o]]);export{h as __pageData,P as default}; +import{_ as a,c as t,o as e,a7 as i}from"./chunks/framework.CBLuZwrP.js";const h=JSON.parse('{"title":"Exploring JuliaConstraint Packages","description":"","frontmatter":{},"headers":[],"relativePath":"cp/ecosystem.md","filePath":"cp/ecosystem.md","lastUpdated":null}'),n={name:"cp/ecosystem.md"},s=i("",5),r=[s];function o(l,c,d,u,g,p){return e(),t("div",null,r)}const P=a(n,[["render",o]]);export{h as __pageData,P as default}; diff --git a/dev/assets/cp_getting_started.md.e6k1ryhG.js b/dev/assets/cp_getting_started.md.Dxdr4J1c.js similarity index 94% rename from dev/assets/cp_getting_started.md.e6k1ryhG.js rename to dev/assets/cp_getting_started.md.Dxdr4J1c.js index 1bd947f..9443659 100644 --- a/dev/assets/cp_getting_started.md.e6k1ryhG.js +++ b/dev/assets/cp_getting_started.md.Dxdr4J1c.js @@ -1,9 +1,9 @@ -import{_ as l,c as t,j as i,a as s,a6 as a,o as e}from"./chunks/framework.U9t3ZutP.js";const S=JSON.parse('{"title":"Getting Started with Julia for CP and Optimization","description":"","frontmatter":{},"headers":[],"relativePath":"cp/getting_started.md","filePath":"cp/getting_started.md","lastUpdated":null}'),n={name:"cp/getting_started.md"},h=a('

Getting Started with Julia for CP and Optimization

Why Julia?

  • Discuss the advantages of Julia for computational science and optimization, highlighting its performance and ease of use.

Setting Up Your Julia Environment

We encourage users to install Julia through juliaup, a version manager for the Julia language. Please look at the official Julia language download page for further information. Once installed, Julia can be used through various editors (Visual Studio Code), notebooks (Pluto.jl), or command-line (REPL).

Although a part of the CP solvers available within the Julia ecosystem have their own interface, we encourage users to use the JuMP modeling language if possible.

Julia Constraints host several solvers(' interfaces). Due to its flexibility in modeling and solving, we will use LocalSearchSolvers.jl through its JuMP interface CBLS.jl as the basic example. Note that depending on the targeted instances, available hardware, and expectations, it is not necessarily the best choice.

All along the documentation, we will try to provide syntax examples for different setup.

julia
using LocalSearchSolvers
julia
using JuMP, CBLS
julia
# TODO: Add other solvers

Your First Julia CP Model

We will start with a classic puzzle game and some of its not that simple variants: the Sudoku.

(From Wikipedia) In classic Sudoku, the objective is to fill a 9 × 9 grid with digits so that each column, each row, and each of the nine 3 × 3 subgrids that compose the grid (also called "boxes", "blocks", or "regions") contains all of the digits from 1 to 9. The puzzle setter provides a partially completed grid, which for a well-posed puzzle has a single solution.

Constraint Programming follows the model-and-solve approach. We first need to model our Sudoku problem.

julia
m = JuMP.Model(CBLS.Optimizer)
julia
# TODO: Add other solvers

But what are the basis of CP models? It is quite simple:

',15),o={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},p={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.867ex",height:"1.984ex",role:"img",focusable:"false",viewBox:"0 -683 7013.4 877","aria-hidden":"true"},d=a('',1),r=[d],k=i("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[i("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[i("mi",null,"X"),i("mo",null,"="),i("msub",null,[i("mi",null,"X"),i("mn",null,"1")]),i("mo",null,","),i("mo",null,"⋯"),i("mo",null,","),i("msub",null,[i("mi",null,"X"),i("mi",null,"n")])])],-1),c=a('
julia
@variable(m, 1 X[1:9, 1:9]  9, Int)
julia
# TODO: Add other solvers
',1),Q={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.148ex",height:"2.034ex",role:"img",focusable:"false",viewBox:"0 -705 6695.4 899","aria-hidden":"true"},T=a('',1),u=[T],m=i("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[i("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[i("mi",null,"C"),i("mo",null,"="),i("msub",null,[i("mi",null,"C"),i("mn",null,"1")]),i("mo",null,","),i("mo",null,"⋯"),i("mo",null,","),i("msub",null,[i("mi",null,"C"),i("mi",null,"n")])])],-1),v={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},b={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.928ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 852 683","aria-hidden":"true"},y=i("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[i("g",{"data-mml-node":"math"},[i("g",{"data-mml-node":"mi"},[i("path",{"data-c":"1D44B",d:"M42 0H40Q26 0 26 11Q26 15 29 27Q33 41 36 43T55 46Q141 49 190 98Q200 108 306 224T411 342Q302 620 297 625Q288 636 234 637H206Q200 643 200 645T202 664Q206 677 212 683H226Q260 681 347 681Q380 681 408 681T453 682T473 682Q490 682 490 671Q490 670 488 658Q484 643 481 640T465 637Q434 634 411 620L488 426L541 485Q646 598 646 610Q646 628 622 635Q617 635 609 637Q594 637 594 648Q594 650 596 664Q600 677 606 683H618Q619 683 643 683T697 681T738 680Q828 680 837 683H845Q852 676 852 672Q850 647 840 637H824Q790 636 763 628T722 611T698 593L687 584Q687 585 592 480L505 384Q505 383 536 304T601 142T638 56Q648 47 699 46Q734 46 734 37Q734 35 732 23Q728 7 725 4T711 1Q708 1 678 1T589 2Q528 2 496 2T461 1Q444 1 444 10Q444 11 446 25Q448 35 450 39T455 44T464 46T480 47T506 54Q523 62 523 64Q522 64 476 181L429 299Q241 95 236 84Q232 76 232 72Q232 53 261 47Q262 47 267 47T273 46Q276 46 277 46T280 45T283 42T284 35Q284 26 282 19Q279 6 276 4T261 1Q258 1 243 1T201 2T142 2Q64 2 42 0Z",style:{"stroke-width":"3"}})])])],-1),E=[y],C=i("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[i("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[i("mi",null,"X")])],-1),f=a(`

When modeling problems as CP, one might define and use their own predicates. However, a large collection of already defined constraints exists. One, if not the most, iconic global constraint is called AllDifferent. It ensures that all variables take distinct values.

Sudoku puzzles can be defined using only this one constraint applied to different subsets of variables.

julia
for i in 1:9
+import{_ as l,c as t,j as i,a as s,a7 as a,o as e}from"./chunks/framework.CBLuZwrP.js";const S=JSON.parse('{"title":"Getting Started with Julia for CP and Optimization","description":"","frontmatter":{},"headers":[],"relativePath":"cp/getting_started.md","filePath":"cp/getting_started.md","lastUpdated":null}'),n={name:"cp/getting_started.md"},h=a('

Getting Started with Julia for CP and Optimization

Why Julia?

  • Discuss the advantages of Julia for computational science and optimization, highlighting its performance and ease of use.

Setting Up Your Julia Environment

We encourage users to install Julia through juliaup, a version manager for the Julia language. Please look at the official Julia language download page for further information. Once installed, Julia can be used through various editors (Visual Studio Code), notebooks (Pluto.jl), or command-line (REPL).

Although a part of the CP solvers available within the Julia ecosystem have their own interface, we encourage users to use the JuMP modeling language if possible.

Julia Constraints host several solvers(' interfaces). Due to its flexibility in modeling and solving, we will use LocalSearchSolvers.jl through its JuMP interface CBLS.jl as the basic example. Note that depending on the targeted instances, available hardware, and expectations, it is not necessarily the best choice.

All along the documentation, we will try to provide syntax examples for different setup.

julia
using LocalSearchSolvers
julia
using JuMP, CBLS
julia
# TODO: Add other solvers

Your First Julia CP Model

We will start with a classic puzzle game and some of its not that simple variants: the Sudoku.

(From Wikipedia) In classic Sudoku, the objective is to fill a 9 × 9 grid with digits so that each column, each row, and each of the nine 3 × 3 subgrids that compose the grid (also called "boxes", "blocks", or "regions") contains all of the digits from 1 to 9. The puzzle setter provides a partially completed grid, which for a well-posed puzzle has a single solution.

Constraint Programming follows the model-and-solve approach. We first need to model our Sudoku problem.

julia
m = JuMP.Model(CBLS.Optimizer)
julia
# TODO: Add other solvers

But what are the basis of CP models? It is quite simple:

',15),o={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},p={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.867ex",height:"1.984ex",role:"img",focusable:"false",viewBox:"0 -683 7013.4 877","aria-hidden":"true"},d=a('',1),r=[d],k=i("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[i("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[i("mi",null,"X"),i("mo",null,"="),i("msub",null,[i("mi",null,"X"),i("mn",null,"1")]),i("mo",null,","),i("mo",null,"⋯"),i("mo",null,","),i("msub",null,[i("mi",null,"X"),i("mi",null,"n")])])],-1),c=a('
julia
@variable(m, 1 X[1:9, 1:9]  9, Int)
julia
# TODO: Add other solvers
',1),Q={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.148ex",height:"2.034ex",role:"img",focusable:"false",viewBox:"0 -705 6695.4 899","aria-hidden":"true"},T=a('',1),u=[T],m=i("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[i("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[i("mi",null,"C"),i("mo",null,"="),i("msub",null,[i("mi",null,"C"),i("mn",null,"1")]),i("mo",null,","),i("mo",null,"⋯"),i("mo",null,","),i("msub",null,[i("mi",null,"C"),i("mi",null,"n")])])],-1),v={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},y={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.928ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 852 683","aria-hidden":"true"},b=i("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[i("g",{"data-mml-node":"math"},[i("g",{"data-mml-node":"mi"},[i("path",{"data-c":"1D44B",d:"M42 0H40Q26 0 26 11Q26 15 29 27Q33 41 36 43T55 46Q141 49 190 98Q200 108 306 224T411 342Q302 620 297 625Q288 636 234 637H206Q200 643 200 645T202 664Q206 677 212 683H226Q260 681 347 681Q380 681 408 681T453 682T473 682Q490 682 490 671Q490 670 488 658Q484 643 481 640T465 637Q434 634 411 620L488 426L541 485Q646 598 646 610Q646 628 622 635Q617 635 609 637Q594 637 594 648Q594 650 596 664Q600 677 606 683H618Q619 683 643 683T697 681T738 680Q828 680 837 683H845Q852 676 852 672Q850 647 840 637H824Q790 636 763 628T722 611T698 593L687 584Q687 585 592 480L505 384Q505 383 536 304T601 142T638 56Q648 47 699 46Q734 46 734 37Q734 35 732 23Q728 7 725 4T711 1Q708 1 678 1T589 2Q528 2 496 2T461 1Q444 1 444 10Q444 11 446 25Q448 35 450 39T455 44T464 46T480 47T506 54Q523 62 523 64Q522 64 476 181L429 299Q241 95 236 84Q232 76 232 72Q232 53 261 47Q262 47 267 47T273 46Q276 46 277 46T280 45T283 42T284 35Q284 26 282 19Q279 6 276 4T261 1Q258 1 243 1T201 2T142 2Q64 2 42 0Z",style:{"stroke-width":"3"}})])])],-1),E=[b],C=i("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[i("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[i("mi",null,"X")])],-1),f=a(`

When modeling problems as CP, one might define and use their own predicates. However, a large collection of already defined constraints exists. One, if not the most, iconic global constraint is called AllDifferent. It ensures that all variables take distinct values.

Sudoku puzzles can be defined using only this one constraint applied to different subsets of variables.

julia
for i in 1:9
         @constraint(m, X[i,:] in AllDifferent()) # rows
         @constraint(m, X[:,i] in AllDifferent()) # columns
-end
julia
# TODO: Add other solvers

The last series of AllDifferent constraint is less straight forward. We need to ensure that each 3 × 3 subgrid (block) is filled with distinct values.

julia
for i in 0:2, j in 0:2 # blocks
+end
julia
# TODO: Add other solvers

The last series of AllDifferent constraint is less straight forward. We need to ensure that each 3 × 3 subgrid (block) is filled with distinct values.

julia
for i in 0:2, j in 0:2 # blocks
     @constraint(
         m,
         vec(X[(3i+1):(3(i+1)), (3j+1):(3(j+1))]) in AllDifferent(),
     )
-end
julia
# TODO: Add other solvers

We can now simply run our solver to look for a feasible solution.

julia
optimize!(m)

Note that this is heuristic solver, we might not get a feasible solution! Let's check it out. The value function print the value of a JuMP variable. We can cast it over a collection with the value. syntax.

julia
value.(X)
`,9);function _(F,w,x,D,A,L){return e(),t("div",null,[h,i("ol",null,[i("li",null,[s("A collection "),i("mjx-container",o,[(e(),t("svg",p,r)),k]),s(" of variables with each an associated domain.")])]),c,i("ol",null,[i("li",null,[s("A collection of predicates (called constraints) "),i("mjx-container",Q,[(e(),t("svg",g,u)),m]),s(" over (subsets of) "),i("mjx-container",v,[(e(),t("svg",b,E)),C]),s(".")])]),f])}const B=l(n,[["render",_]]);export{S as __pageData,B as default}; +end
julia
# TODO: Add other solvers

We can now simply run our solver to look for a feasible solution.

julia
optimize!(m)

Note that this is heuristic solver, we might not get a feasible solution! Let's check it out. The value function print the value of a JuMP variable. We can cast it over a collection with the value. syntax.

julia
value.(X)
`,9);function _(w,F,x,A,D,L){return e(),t("div",null,[h,i("ol",null,[i("li",null,[s("A collection "),i("mjx-container",o,[(e(),t("svg",p,r)),k]),s(" of variables with each an associated domain.")])]),c,i("ol",null,[i("li",null,[s("A collection of predicates (called constraints) "),i("mjx-container",Q,[(e(),t("svg",g,u)),m]),s(" over (subsets of) "),i("mjx-container",v,[(e(),t("svg",y,E)),C]),s(".")])]),f])}const H=l(n,[["render",_]]);export{S as __pageData,H as default}; diff --git a/dev/assets/cp_getting_started.md.e6k1ryhG.lean.js b/dev/assets/cp_getting_started.md.Dxdr4J1c.lean.js similarity index 88% rename from dev/assets/cp_getting_started.md.e6k1ryhG.lean.js rename to dev/assets/cp_getting_started.md.Dxdr4J1c.lean.js index 99af80e..36e64d9 100644 --- a/dev/assets/cp_getting_started.md.e6k1ryhG.lean.js +++ b/dev/assets/cp_getting_started.md.Dxdr4J1c.lean.js @@ -1 +1 @@ -import{_ as l,c as t,j as i,a as s,a6 as a,o as e}from"./chunks/framework.U9t3ZutP.js";const S=JSON.parse('{"title":"Getting Started with Julia for CP and Optimization","description":"","frontmatter":{},"headers":[],"relativePath":"cp/getting_started.md","filePath":"cp/getting_started.md","lastUpdated":null}'),n={name:"cp/getting_started.md"},h=a("",15),o={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},p={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.867ex",height:"1.984ex",role:"img",focusable:"false",viewBox:"0 -683 7013.4 877","aria-hidden":"true"},d=a("",1),r=[d],k=i("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[i("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[i("mi",null,"X"),i("mo",null,"="),i("msub",null,[i("mi",null,"X"),i("mn",null,"1")]),i("mo",null,","),i("mo",null,"⋯"),i("mo",null,","),i("msub",null,[i("mi",null,"X"),i("mi",null,"n")])])],-1),c=a("",1),Q={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.148ex",height:"2.034ex",role:"img",focusable:"false",viewBox:"0 -705 6695.4 899","aria-hidden":"true"},T=a("",1),u=[T],m=i("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[i("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[i("mi",null,"C"),i("mo",null,"="),i("msub",null,[i("mi",null,"C"),i("mn",null,"1")]),i("mo",null,","),i("mo",null,"⋯"),i("mo",null,","),i("msub",null,[i("mi",null,"C"),i("mi",null,"n")])])],-1),v={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},b={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.928ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 852 683","aria-hidden":"true"},y=i("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[i("g",{"data-mml-node":"math"},[i("g",{"data-mml-node":"mi"},[i("path",{"data-c":"1D44B",d:"M42 0H40Q26 0 26 11Q26 15 29 27Q33 41 36 43T55 46Q141 49 190 98Q200 108 306 224T411 342Q302 620 297 625Q288 636 234 637H206Q200 643 200 645T202 664Q206 677 212 683H226Q260 681 347 681Q380 681 408 681T453 682T473 682Q490 682 490 671Q490 670 488 658Q484 643 481 640T465 637Q434 634 411 620L488 426L541 485Q646 598 646 610Q646 628 622 635Q617 635 609 637Q594 637 594 648Q594 650 596 664Q600 677 606 683H618Q619 683 643 683T697 681T738 680Q828 680 837 683H845Q852 676 852 672Q850 647 840 637H824Q790 636 763 628T722 611T698 593L687 584Q687 585 592 480L505 384Q505 383 536 304T601 142T638 56Q648 47 699 46Q734 46 734 37Q734 35 732 23Q728 7 725 4T711 1Q708 1 678 1T589 2Q528 2 496 2T461 1Q444 1 444 10Q444 11 446 25Q448 35 450 39T455 44T464 46T480 47T506 54Q523 62 523 64Q522 64 476 181L429 299Q241 95 236 84Q232 76 232 72Q232 53 261 47Q262 47 267 47T273 46Q276 46 277 46T280 45T283 42T284 35Q284 26 282 19Q279 6 276 4T261 1Q258 1 243 1T201 2T142 2Q64 2 42 0Z",style:{"stroke-width":"3"}})])])],-1),E=[y],C=i("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[i("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[i("mi",null,"X")])],-1),f=a("",9);function _(F,w,x,D,A,L){return e(),t("div",null,[h,i("ol",null,[i("li",null,[s("A collection "),i("mjx-container",o,[(e(),t("svg",p,r)),k]),s(" of variables with each an associated domain.")])]),c,i("ol",null,[i("li",null,[s("A collection of predicates (called constraints) "),i("mjx-container",Q,[(e(),t("svg",g,u)),m]),s(" over (subsets of) "),i("mjx-container",v,[(e(),t("svg",b,E)),C]),s(".")])]),f])}const B=l(n,[["render",_]]);export{S as __pageData,B as default}; +import{_ as l,c as t,j as i,a as s,a7 as a,o as e}from"./chunks/framework.CBLuZwrP.js";const S=JSON.parse('{"title":"Getting Started with Julia for CP and Optimization","description":"","frontmatter":{},"headers":[],"relativePath":"cp/getting_started.md","filePath":"cp/getting_started.md","lastUpdated":null}'),n={name:"cp/getting_started.md"},h=a("",15),o={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},p={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.867ex",height:"1.984ex",role:"img",focusable:"false",viewBox:"0 -683 7013.4 877","aria-hidden":"true"},d=a("",1),r=[d],k=i("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[i("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[i("mi",null,"X"),i("mo",null,"="),i("msub",null,[i("mi",null,"X"),i("mn",null,"1")]),i("mo",null,","),i("mo",null,"⋯"),i("mo",null,","),i("msub",null,[i("mi",null,"X"),i("mi",null,"n")])])],-1),c=a("",1),Q={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.148ex",height:"2.034ex",role:"img",focusable:"false",viewBox:"0 -705 6695.4 899","aria-hidden":"true"},T=a("",1),u=[T],m=i("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[i("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[i("mi",null,"C"),i("mo",null,"="),i("msub",null,[i("mi",null,"C"),i("mn",null,"1")]),i("mo",null,","),i("mo",null,"⋯"),i("mo",null,","),i("msub",null,[i("mi",null,"C"),i("mi",null,"n")])])],-1),v={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},y={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.928ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 852 683","aria-hidden":"true"},b=i("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[i("g",{"data-mml-node":"math"},[i("g",{"data-mml-node":"mi"},[i("path",{"data-c":"1D44B",d:"M42 0H40Q26 0 26 11Q26 15 29 27Q33 41 36 43T55 46Q141 49 190 98Q200 108 306 224T411 342Q302 620 297 625Q288 636 234 637H206Q200 643 200 645T202 664Q206 677 212 683H226Q260 681 347 681Q380 681 408 681T453 682T473 682Q490 682 490 671Q490 670 488 658Q484 643 481 640T465 637Q434 634 411 620L488 426L541 485Q646 598 646 610Q646 628 622 635Q617 635 609 637Q594 637 594 648Q594 650 596 664Q600 677 606 683H618Q619 683 643 683T697 681T738 680Q828 680 837 683H845Q852 676 852 672Q850 647 840 637H824Q790 636 763 628T722 611T698 593L687 584Q687 585 592 480L505 384Q505 383 536 304T601 142T638 56Q648 47 699 46Q734 46 734 37Q734 35 732 23Q728 7 725 4T711 1Q708 1 678 1T589 2Q528 2 496 2T461 1Q444 1 444 10Q444 11 446 25Q448 35 450 39T455 44T464 46T480 47T506 54Q523 62 523 64Q522 64 476 181L429 299Q241 95 236 84Q232 76 232 72Q232 53 261 47Q262 47 267 47T273 46Q276 46 277 46T280 45T283 42T284 35Q284 26 282 19Q279 6 276 4T261 1Q258 1 243 1T201 2T142 2Q64 2 42 0Z",style:{"stroke-width":"3"}})])])],-1),E=[b],C=i("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[i("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[i("mi",null,"X")])],-1),f=a("",9);function _(w,F,x,A,D,L){return e(),t("div",null,[h,i("ol",null,[i("li",null,[s("A collection "),i("mjx-container",o,[(e(),t("svg",p,r)),k]),s(" of variables with each an associated domain.")])]),c,i("ol",null,[i("li",null,[s("A collection of predicates (called constraints) "),i("mjx-container",Q,[(e(),t("svg",g,u)),m]),s(" over (subsets of) "),i("mjx-container",v,[(e(),t("svg",y,E)),C]),s(".")])]),f])}const H=l(n,[["render",_]]);export{S as __pageData,H as default}; diff --git a/dev/assets/cp_intro.md.CU56ubdk.js b/dev/assets/cp_intro.md.CyOxCEfs.js similarity index 93% rename from dev/assets/cp_intro.md.CU56ubdk.js rename to dev/assets/cp_intro.md.CyOxCEfs.js index adccf77..d0d0496 100644 --- a/dev/assets/cp_intro.md.CU56ubdk.js +++ b/dev/assets/cp_intro.md.CyOxCEfs.js @@ -1 +1 @@ -import{_ as e,c as o,o as a,j as t,a as n}from"./chunks/framework.U9t3ZutP.js";const C=JSON.parse('{"title":"Welcome to Julia Constraints","description":"","frontmatter":{},"headers":[],"relativePath":"cp/intro.md","filePath":"cp/intro.md","lastUpdated":null}'),i={name:"cp/intro.md"},r=t("h1",{id:"Welcome-to-Julia-Constraints",tabindex:"-1"},[n("Welcome to Julia Constraints "),t("a",{class:"header-anchor",href:"#Welcome-to-Julia-Constraints","aria-label":'Permalink to "Welcome to Julia Constraints {#Welcome-to-Julia-Constraints}"'},"​")],-1),s=t("p",null,"An introductory post/chapter that provides an overview of the JuliaConstraint organization, its mission, and what readers can expect to learn from the content. Highlight the importance of Constraint Programming (CP) and optimization in solving real-world problems.",-1),c=[r,s];function l(d,m,p,h,_,u){return a(),o("div",null,c)}const J=e(i,[["render",l]]);export{C as __pageData,J as default}; +import{_ as e,c as o,o as a,j as t,a as n}from"./chunks/framework.CBLuZwrP.js";const C=JSON.parse('{"title":"Welcome to Julia Constraints","description":"","frontmatter":{},"headers":[],"relativePath":"cp/intro.md","filePath":"cp/intro.md","lastUpdated":null}'),i={name:"cp/intro.md"},r=t("h1",{id:"Welcome-to-Julia-Constraints",tabindex:"-1"},[n("Welcome to Julia Constraints "),t("a",{class:"header-anchor",href:"#Welcome-to-Julia-Constraints","aria-label":'Permalink to "Welcome to Julia Constraints {#Welcome-to-Julia-Constraints}"'},"​")],-1),s=t("p",null,"An introductory post/chapter that provides an overview of the JuliaConstraint organization, its mission, and what readers can expect to learn from the content. Highlight the importance of Constraint Programming (CP) and optimization in solving real-world problems.",-1),c=[r,s];function l(d,m,p,h,_,u){return a(),o("div",null,c)}const J=e(i,[["render",l]]);export{C as __pageData,J as default}; diff --git a/dev/assets/cp_intro.md.CU56ubdk.lean.js b/dev/assets/cp_intro.md.CyOxCEfs.lean.js similarity index 93% rename from dev/assets/cp_intro.md.CU56ubdk.lean.js rename to dev/assets/cp_intro.md.CyOxCEfs.lean.js index adccf77..d0d0496 100644 --- a/dev/assets/cp_intro.md.CU56ubdk.lean.js +++ b/dev/assets/cp_intro.md.CyOxCEfs.lean.js @@ -1 +1 @@ -import{_ as e,c as o,o as a,j as t,a as n}from"./chunks/framework.U9t3ZutP.js";const C=JSON.parse('{"title":"Welcome to Julia Constraints","description":"","frontmatter":{},"headers":[],"relativePath":"cp/intro.md","filePath":"cp/intro.md","lastUpdated":null}'),i={name:"cp/intro.md"},r=t("h1",{id:"Welcome-to-Julia-Constraints",tabindex:"-1"},[n("Welcome to Julia Constraints "),t("a",{class:"header-anchor",href:"#Welcome-to-Julia-Constraints","aria-label":'Permalink to "Welcome to Julia Constraints {#Welcome-to-Julia-Constraints}"'},"​")],-1),s=t("p",null,"An introductory post/chapter that provides an overview of the JuliaConstraint organization, its mission, and what readers can expect to learn from the content. Highlight the importance of Constraint Programming (CP) and optimization in solving real-world problems.",-1),c=[r,s];function l(d,m,p,h,_,u){return a(),o("div",null,c)}const J=e(i,[["render",l]]);export{C as __pageData,J as default}; +import{_ as e,c as o,o as a,j as t,a as n}from"./chunks/framework.CBLuZwrP.js";const C=JSON.parse('{"title":"Welcome to Julia Constraints","description":"","frontmatter":{},"headers":[],"relativePath":"cp/intro.md","filePath":"cp/intro.md","lastUpdated":null}'),i={name:"cp/intro.md"},r=t("h1",{id:"Welcome-to-Julia-Constraints",tabindex:"-1"},[n("Welcome to Julia Constraints "),t("a",{class:"header-anchor",href:"#Welcome-to-Julia-Constraints","aria-label":'Permalink to "Welcome to Julia Constraints {#Welcome-to-Julia-Constraints}"'},"​")],-1),s=t("p",null,"An introductory post/chapter that provides an overview of the JuliaConstraint organization, its mission, and what readers can expect to learn from the content. Highlight the importance of Constraint Programming (CP) and optimization in solving real-world problems.",-1),c=[r,s];function l(d,m,p,h,_,u){return a(),o("div",null,c)}const J=e(i,[["render",l]]);export{C as __pageData,J as default}; diff --git a/dev/assets/cp_models.md.DMeHZkWz.js b/dev/assets/cp_models.md.9iR83UZ2.js similarity index 90% rename from dev/assets/cp_models.md.DMeHZkWz.js rename to dev/assets/cp_models.md.9iR83UZ2.js index 6010620..9f8219a 100644 --- a/dev/assets/cp_models.md.DMeHZkWz.js +++ b/dev/assets/cp_models.md.9iR83UZ2.js @@ -1 +1 @@ -import{_ as e,c as a,o as n,a6 as i}from"./chunks/framework.U9t3ZutP.js";const u=JSON.parse('{"title":"Building and Analyzing Models","description":"","frontmatter":{},"headers":[],"relativePath":"cp/models.md","filePath":"cp/models.md","lastUpdated":null}'),o={name:"cp/models.md"},t=i('

Building and Analyzing Models

Modeling Best Practices

  • Share best practices and tips for building efficient CP and optimization models.

Performance Analysis and Improvement

  • Teach how to analyze and improve the performance of models.
',5),l=[t];function s(d,r,c,m,_,h){return n(),a("div",null,l)}const f=e(o,[["render",s]]);export{u as __pageData,f as default}; +import{_ as e,c as a,o as n,a7 as i}from"./chunks/framework.CBLuZwrP.js";const u=JSON.parse('{"title":"Building and Analyzing Models","description":"","frontmatter":{},"headers":[],"relativePath":"cp/models.md","filePath":"cp/models.md","lastUpdated":null}'),o={name:"cp/models.md"},t=i('

Building and Analyzing Models

Modeling Best Practices

  • Share best practices and tips for building efficient CP and optimization models.

Performance Analysis and Improvement

  • Teach how to analyze and improve the performance of models.
',5),l=[t];function s(d,r,c,m,_,h){return n(),a("div",null,l)}const f=e(o,[["render",s]]);export{u as __pageData,f as default}; diff --git a/dev/assets/cp_models.md.DMeHZkWz.lean.js b/dev/assets/cp_models.md.9iR83UZ2.lean.js similarity index 69% rename from dev/assets/cp_models.md.DMeHZkWz.lean.js rename to dev/assets/cp_models.md.9iR83UZ2.lean.js index 432714a..5ae6e8b 100644 --- a/dev/assets/cp_models.md.DMeHZkWz.lean.js +++ b/dev/assets/cp_models.md.9iR83UZ2.lean.js @@ -1 +1 @@ -import{_ as e,c as a,o as n,a6 as i}from"./chunks/framework.U9t3ZutP.js";const u=JSON.parse('{"title":"Building and Analyzing Models","description":"","frontmatter":{},"headers":[],"relativePath":"cp/models.md","filePath":"cp/models.md","lastUpdated":null}'),o={name:"cp/models.md"},t=i("",5),l=[t];function s(d,r,c,m,_,h){return n(),a("div",null,l)}const f=e(o,[["render",s]]);export{u as __pageData,f as default}; +import{_ as e,c as a,o as n,a7 as i}from"./chunks/framework.CBLuZwrP.js";const u=JSON.parse('{"title":"Building and Analyzing Models","description":"","frontmatter":{},"headers":[],"relativePath":"cp/models.md","filePath":"cp/models.md","lastUpdated":null}'),o={name:"cp/models.md"},t=i("",5),l=[t];function s(d,r,c,m,_,h){return n(),a("div",null,l)}const f=e(o,[["render",s]]);export{u as __pageData,f as default}; diff --git a/dev/assets/cp_opt.md.DkSJltw-.js b/dev/assets/cp_opt.md.D27ydAXM.js similarity index 92% rename from dev/assets/cp_opt.md.DkSJltw-.js rename to dev/assets/cp_opt.md.D27ydAXM.js index 6d77963..99720c6 100644 --- a/dev/assets/cp_opt.md.DkSJltw-.js +++ b/dev/assets/cp_opt.md.D27ydAXM.js @@ -1 +1 @@ -import{_ as i,c as a,o as t,a6 as e}from"./chunks/framework.U9t3ZutP.js";const _=JSON.parse('{"title":"Dive into Optimization","description":"","frontmatter":{},"headers":[],"relativePath":"cp/opt.md","filePath":"cp/opt.md","lastUpdated":null}'),n={name:"cp/opt.md"},o=e('

Dive into Optimization

Understanding Optimization

  • Explanation of optimization, types of optimization problems (e.g., linear, nonlinear, integer programming).

Metaheuristics Overview

  • Introduce concepts like Genetic Algorithms, Simulated Annealing, and Tabu Search.

Mathematical Programming Basics

  • Cover the fundamentals of mathematical programming and its role in optimization.
',7),r=[o];function s(l,m,c,d,h,p){return t(),a("div",null,r)}const g=i(n,[["render",s]]);export{_ as __pageData,g as default}; +import{_ as i,c as a,o as t,a7 as e}from"./chunks/framework.CBLuZwrP.js";const _=JSON.parse('{"title":"Dive into Optimization","description":"","frontmatter":{},"headers":[],"relativePath":"cp/opt.md","filePath":"cp/opt.md","lastUpdated":null}'),n={name:"cp/opt.md"},o=e('

Dive into Optimization

Understanding Optimization

  • Explanation of optimization, types of optimization problems (e.g., linear, nonlinear, integer programming).

Metaheuristics Overview

  • Introduce concepts like Genetic Algorithms, Simulated Annealing, and Tabu Search.

Mathematical Programming Basics

  • Cover the fundamentals of mathematical programming and its role in optimization.
',7),r=[o];function s(l,m,c,d,h,p){return t(),a("div",null,r)}const g=i(n,[["render",s]]);export{_ as __pageData,g as default}; diff --git a/dev/assets/cp_opt.md.DkSJltw-.lean.js b/dev/assets/cp_opt.md.D27ydAXM.lean.js similarity index 68% rename from dev/assets/cp_opt.md.DkSJltw-.lean.js rename to dev/assets/cp_opt.md.D27ydAXM.lean.js index ff2d27c..96b6fba 100644 --- a/dev/assets/cp_opt.md.DkSJltw-.lean.js +++ b/dev/assets/cp_opt.md.D27ydAXM.lean.js @@ -1 +1 @@ -import{_ as i,c as a,o as t,a6 as e}from"./chunks/framework.U9t3ZutP.js";const _=JSON.parse('{"title":"Dive into Optimization","description":"","frontmatter":{},"headers":[],"relativePath":"cp/opt.md","filePath":"cp/opt.md","lastUpdated":null}'),n={name:"cp/opt.md"},o=e("",7),r=[o];function s(l,m,c,d,h,p){return t(),a("div",null,r)}const g=i(n,[["render",s]]);export{_ as __pageData,g as default}; +import{_ as i,c as a,o as t,a7 as e}from"./chunks/framework.CBLuZwrP.js";const _=JSON.parse('{"title":"Dive into Optimization","description":"","frontmatter":{},"headers":[],"relativePath":"cp/opt.md","filePath":"cp/opt.md","lastUpdated":null}'),n={name:"cp/opt.md"},o=e("",7),r=[o];function s(l,m,c,d,h,p){return t(),a("div",null,r)}const g=i(n,[["render",s]]);export{_ as __pageData,g as default}; diff --git a/dev/assets/cp_tuto_xp.md.Z1oPyhEj.js b/dev/assets/cp_tuto_xp.md.HnOO3gUv.js similarity index 90% rename from dev/assets/cp_tuto_xp.md.Z1oPyhEj.js rename to dev/assets/cp_tuto_xp.md.HnOO3gUv.js index 1de31d1..b1238e2 100644 --- a/dev/assets/cp_tuto_xp.md.Z1oPyhEj.js +++ b/dev/assets/cp_tuto_xp.md.HnOO3gUv.js @@ -1 +1 @@ -import{_ as a,c as e,o as t,a6 as s}from"./chunks/framework.U9t3ZutP.js";const x=JSON.parse('{"title":"Tutorials and Experiments","description":"","frontmatter":{},"headers":[],"relativePath":"cp/tuto_xp.md","filePath":"cp/tuto_xp.md","lastUpdated":null}'),n={name:"cp/tuto_xp.md"},i=s('

Tutorials and Experiments

Hands-On Tutorials

  • Provide step-by-step tutorials covering various topics and complexity levels.

Experimental Analysis

  • Discuss the importance of experimental analysis in CP and how to conduct meaningful experiments.
',5),r=[i];function l(o,d,p,u,c,_){return t(),e("div",null,r)}const h=a(n,[["render",l]]);export{x as __pageData,h as default}; +import{_ as a,c as e,o as t,a7 as s}from"./chunks/framework.CBLuZwrP.js";const x=JSON.parse('{"title":"Tutorials and Experiments","description":"","frontmatter":{},"headers":[],"relativePath":"cp/tuto_xp.md","filePath":"cp/tuto_xp.md","lastUpdated":null}'),n={name:"cp/tuto_xp.md"},i=s('

Tutorials and Experiments

Hands-On Tutorials

  • Provide step-by-step tutorials covering various topics and complexity levels.

Experimental Analysis

  • Discuss the importance of experimental analysis in CP and how to conduct meaningful experiments.
',5),r=[i];function l(o,d,p,u,c,_){return t(),e("div",null,r)}const h=a(n,[["render",l]]);export{x as __pageData,h as default}; diff --git a/dev/assets/cp_tuto_xp.md.Z1oPyhEj.lean.js b/dev/assets/cp_tuto_xp.md.HnOO3gUv.lean.js similarity index 69% rename from dev/assets/cp_tuto_xp.md.Z1oPyhEj.lean.js rename to dev/assets/cp_tuto_xp.md.HnOO3gUv.lean.js index 6135daf..cfc3c77 100644 --- a/dev/assets/cp_tuto_xp.md.Z1oPyhEj.lean.js +++ b/dev/assets/cp_tuto_xp.md.HnOO3gUv.lean.js @@ -1 +1 @@ -import{_ as a,c as e,o as t,a6 as s}from"./chunks/framework.U9t3ZutP.js";const x=JSON.parse('{"title":"Tutorials and Experiments","description":"","frontmatter":{},"headers":[],"relativePath":"cp/tuto_xp.md","filePath":"cp/tuto_xp.md","lastUpdated":null}'),n={name:"cp/tuto_xp.md"},i=s("",5),r=[i];function l(o,d,p,u,c,_){return t(),e("div",null,r)}const h=a(n,[["render",l]]);export{x as __pageData,h as default}; +import{_ as a,c as e,o as t,a7 as s}from"./chunks/framework.CBLuZwrP.js";const x=JSON.parse('{"title":"Tutorials and Experiments","description":"","frontmatter":{},"headers":[],"relativePath":"cp/tuto_xp.md","filePath":"cp/tuto_xp.md","lastUpdated":null}'),n={name:"cp/tuto_xp.md"},i=s("",5),r=[i];function l(o,d,p,u,c,_){return t(),e("div",null,r)}const h=a(n,[["render",l]]);export{x as __pageData,h as default}; diff --git a/dev/assets/full_api.md.DL-XqSUt.js b/dev/assets/full_api.md.DzQ1HRyK.js similarity index 99% rename from dev/assets/full_api.md.DL-XqSUt.js rename to dev/assets/full_api.md.DzQ1HRyK.js index 26f9eea..56c088f 100644 --- a/dev/assets/full_api.md.DL-XqSUt.js +++ b/dev/assets/full_api.md.DzQ1HRyK.js @@ -1,4 +1,4 @@ -import{_ as s,c as i,o as a,a6 as t}from"./chunks/framework.U9t3ZutP.js";const E=JSON.parse('{"title":"Full API","description":"","frontmatter":{},"headers":[],"relativePath":"full_api.md","filePath":"full_api.md","lastUpdated":null}'),e={name:"full_api.md"},n=t(`

Full API

# ConstraintCommons.USUAL_CONSTRAINT_PARAMETERSConstant.
julia
const USUAL_CONSTRAINT_PARAMETERS

List of usual constraints parameters (based on XCSP3-core constraints). The list is based on the nature of each kind of parameter instead of the keywords used in the XCSP3-core format.

julia
const USUAL_CONSTRAINT_PARAMETERS = [
+import{_ as s,c as i,o as a,a7 as t}from"./chunks/framework.CBLuZwrP.js";const E=JSON.parse('{"title":"Full API","description":"","frontmatter":{},"headers":[],"relativePath":"full_api.md","filePath":"full_api.md","lastUpdated":null}'),e={name:"full_api.md"},n=t(`

Full API

# ConstraintCommons.USUAL_CONSTRAINT_PARAMETERSConstant.
julia
const USUAL_CONSTRAINT_PARAMETERS

List of usual constraints parameters (based on XCSP3-core constraints). The list is based on the nature of each kind of parameter instead of the keywords used in the XCSP3-core format.

julia
const USUAL_CONSTRAINT_PARAMETERS = [
     :bool, # boolean parameter
     :dim, # dimension, an integer parameter used along the pair_vars or vals parameters
     :id, # index to target one variable in the input vector
diff --git a/dev/assets/full_api.md.DL-XqSUt.lean.js b/dev/assets/full_api.md.DzQ1HRyK.lean.js
similarity index 67%
rename from dev/assets/full_api.md.DL-XqSUt.lean.js
rename to dev/assets/full_api.md.DzQ1HRyK.lean.js
index affa75b..33b43e8 100644
--- a/dev/assets/full_api.md.DL-XqSUt.lean.js
+++ b/dev/assets/full_api.md.DzQ1HRyK.lean.js
@@ -1 +1 @@
-import{_ as s,c as i,o as a,a6 as t}from"./chunks/framework.U9t3ZutP.js";const E=JSON.parse('{"title":"Full API","description":"","frontmatter":{},"headers":[],"relativePath":"full_api.md","filePath":"full_api.md","lastUpdated":null}'),e={name:"full_api.md"},n=t("",375),l=[n];function h(p,r,k,o,d,c){return a(),i("div",null,l)}const y=s(e,[["render",h]]);export{E as __pageData,y as default};
+import{_ as s,c as i,o as a,a7 as t}from"./chunks/framework.CBLuZwrP.js";const E=JSON.parse('{"title":"Full API","description":"","frontmatter":{},"headers":[],"relativePath":"full_api.md","filePath":"full_api.md","lastUpdated":null}'),e={name:"full_api.md"},n=t("",375),l=[n];function h(p,r,k,o,d,c){return a(),i("div",null,l)}const y=s(e,[["render",h]]);export{E as __pageData,y as default};
diff --git a/dev/assets/index-old.md.BUJ3h5VP.js b/dev/assets/index-old.md.Dm_hMecF.js
similarity index 97%
rename from dev/assets/index-old.md.BUJ3h5VP.js
rename to dev/assets/index-old.md.Dm_hMecF.js
index 0fef857..bc209bc 100644
--- a/dev/assets/index-old.md.BUJ3h5VP.js
+++ b/dev/assets/index-old.md.Dm_hMecF.js
@@ -1 +1 @@
-import{_ as a,c as t,o as e,a6 as r}from"./chunks/framework.U9t3ZutP.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"index-old.md","filePath":"index-old.md","lastUpdated":null}'),s={name:"index-old.md"},i=r('

JuliaConstraints

JuliaConstraints is a collection of packages that help you solve constraint programming problems in Julia. Constraint programming involves modeling problems with constraints, such as "x > 5" or "x + y = 10", and finding solutions that satisfy all of the constraints. It is a part of the JuMP ecosystem that focuses on constraint programming in Julia.

The goal of packages in JuliaConstraints are two-fold: some of them provide a generic interface, others are solvers for CP models (either purely in Julia or wrapping). They make it easy to solve constraint-satisfaction problems (CSPs) and constraint-optimisation problems (COPs) in Julia using industry-standard solvers and mixed-integer solvers.

Other packages for CP in Julia include:

Operational Research vs Constraint Programming

Operational research (OR) is a problem-solving approach that uses mathematical models, statistical analysis, and optimization techniques to help organizations make better decisions. OR is concerned with understanding and optimizing complex systems, such as supply chains, transportation networks, and manufacturing processes, to improve efficiency and reduce costs.

On the other hand, constraint programming (CP) is a programming paradigm that focuses on solving problems with constraints. Constraints are conditions that must be satisfied for a solution to be valid. CP is often used to solve combinatorial problems, such as scheduling, routing, and allocation, where the search space of possible solutions is very large.

So, while both OR and CP are concerned with solving complex problems, they approach the problem-solving process from different angles. OR typically uses mathematical models and optimization techniques to analyze and optimize existing systems, while CP focuses on finding valid solutions that satisfy a set of constraints.

Constraint-based local search (CBLS) is a type of constraint programming solver that uses a heuristic search algorithm to find solutions to problems. It starts with an initial solution and tries to improve it by making small changes that satisfy the constraints. CBLS is especially useful for large and complex problems where finding an exact solution may take too much time or be impossible.

In contrast, other constraint programming solvers use a variety of algorithms and techniques to find exact solutions to problems. These solvers try to find a solution that satisfies all of the constraints in the problem. They can be useful for smaller problems where finding an exact solution is feasible, or for problems that have a clear mathematical structure.

In summary, CBLS is a type of constraint programming solver that uses a heuristic search algorithm to find good solutions, while other constraint programming solvers use various techniques to find exact solutions to problems.

',14),o=[i];function n(l,h,p,c,m,u){return e(),t("div",null,o)}const f=a(s,[["render",n]]);export{g as __pageData,f as default}; +import{_ as a,c as t,o as e,a7 as r}from"./chunks/framework.CBLuZwrP.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"index-old.md","filePath":"index-old.md","lastUpdated":null}'),s={name:"index-old.md"},i=r('

JuliaConstraints

JuliaConstraints is a collection of packages that help you solve constraint programming problems in Julia. Constraint programming involves modeling problems with constraints, such as "x > 5" or "x + y = 10", and finding solutions that satisfy all of the constraints. It is a part of the JuMP ecosystem that focuses on constraint programming in Julia.

The goal of packages in JuliaConstraints are two-fold: some of them provide a generic interface, others are solvers for CP models (either purely in Julia or wrapping). They make it easy to solve constraint-satisfaction problems (CSPs) and constraint-optimisation problems (COPs) in Julia using industry-standard solvers and mixed-integer solvers.

Other packages for CP in Julia include:

Operational Research vs Constraint Programming

Operational research (OR) is a problem-solving approach that uses mathematical models, statistical analysis, and optimization techniques to help organizations make better decisions. OR is concerned with understanding and optimizing complex systems, such as supply chains, transportation networks, and manufacturing processes, to improve efficiency and reduce costs.

On the other hand, constraint programming (CP) is a programming paradigm that focuses on solving problems with constraints. Constraints are conditions that must be satisfied for a solution to be valid. CP is often used to solve combinatorial problems, such as scheduling, routing, and allocation, where the search space of possible solutions is very large.

So, while both OR and CP are concerned with solving complex problems, they approach the problem-solving process from different angles. OR typically uses mathematical models and optimization techniques to analyze and optimize existing systems, while CP focuses on finding valid solutions that satisfy a set of constraints.

Constraint-based local search (CBLS) is a type of constraint programming solver that uses a heuristic search algorithm to find solutions to problems. It starts with an initial solution and tries to improve it by making small changes that satisfy the constraints. CBLS is especially useful for large and complex problems where finding an exact solution may take too much time or be impossible.

In contrast, other constraint programming solvers use a variety of algorithms and techniques to find exact solutions to problems. These solvers try to find a solution that satisfies all of the constraints in the problem. They can be useful for smaller problems where finding an exact solution is feasible, or for problems that have a clear mathematical structure.

In summary, CBLS is a type of constraint programming solver that uses a heuristic search algorithm to find good solutions, while other constraint programming solvers use various techniques to find exact solutions to problems.

',14),o=[i];function n(l,h,p,c,m,u){return e(),t("div",null,o)}const f=a(s,[["render",n]]);export{g as __pageData,f as default}; diff --git a/dev/assets/index-old.md.BUJ3h5VP.lean.js b/dev/assets/index-old.md.Dm_hMecF.lean.js similarity index 67% rename from dev/assets/index-old.md.BUJ3h5VP.lean.js rename to dev/assets/index-old.md.Dm_hMecF.lean.js index 9d2d08f..e5146a6 100644 --- a/dev/assets/index-old.md.BUJ3h5VP.lean.js +++ b/dev/assets/index-old.md.Dm_hMecF.lean.js @@ -1 +1 @@ -import{_ as a,c as t,o as e,a6 as r}from"./chunks/framework.U9t3ZutP.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"index-old.md","filePath":"index-old.md","lastUpdated":null}'),s={name:"index-old.md"},i=r("",14),o=[i];function n(l,h,p,c,m,u){return e(),t("div",null,o)}const f=a(s,[["render",n]]);export{g as __pageData,f as default}; +import{_ as a,c as t,o as e,a7 as r}from"./chunks/framework.CBLuZwrP.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"index-old.md","filePath":"index-old.md","lastUpdated":null}'),s={name:"index-old.md"},i=r("",14),o=[i];function n(l,h,p,c,m,u){return e(),t("div",null,o)}const f=a(s,[["render",n]]);export{g as __pageData,f as default}; diff --git a/dev/assets/index.md.DEar9D6T.js b/dev/assets/index.md.DgwT_Cs_.js similarity index 98% rename from dev/assets/index.md.DEar9D6T.js rename to dev/assets/index.md.DgwT_Cs_.js index c41f31b..74e8ba3 100644 --- a/dev/assets/index.md.DEar9D6T.js +++ b/dev/assets/index.md.DgwT_Cs_.js @@ -1 +1 @@ -import{_ as t,c as o,o as e,a6 as a}from"./chunks/framework.U9t3ZutP.js";const d=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"Julia Constraints","text":"Model Smoothly Decide Wisely","tagline":"A Toolkit for Constraint Programming","image":{"src":"/logo.png","alt":"JuliaConstraints"},"actions":[{"theme":"brand","text":"Constraint Programming ?!","link":"/cp/intro"},{"theme":"alt","text":"View on Github","link":"https://github.com/JuliaConstraints/JuliaConstraints.github.io"}]},"features":[{"icon":"\\"JuMP.jl\\"/","title":"JuMP.jl","details":"Model optimization problems via JuMP.jl!","link":"https://jump.dev/"},{"icon":"\\"PerfChecker.jl\\"/","title":"PerfChecker.jl","details":"Cross-version performance checking tool","link":"https://github.com/JuliaConstraints/PerfChecker.jl"},{"icon":"\\"Pluto.jl\\"/","title":"Pluto.jl","details":"Simple, reactive programming environment via Julia notebooks","link":"https://plutojl.org/"}]},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":null}'),i={name:"index.md"},n=a('

What is Julia Constraints?

The Julia Constraints organization serves as a hub for resources to create, understand, and solve optimization through the lens of Constraint Programming. Our goal is to make Constraint Programming accessible and efficient for users at all levels of expertise, by providing a comprehensive suite of tools.

Most tools integrate seamlessly with JuMP, a popular Julia package for mathematical optimization.

Ecosystem overview

Core Packages

The foundation of common packages that provide essential features for constraint programming ensures that users possess the fundamental tools required for their projects.

  • ConstraintCommons.jl is designed to make constraint programming solutions in Julia interoperable. It provides shared structures, abstract types, functions, and generic methods used by both basic feature packages and learning-oriented packages.
  • ConstraintDomains.jl focuses on the definition and manipulation of variable domains, which are used to solve constraint programming problems. This package provides the infrastructure needed to specify both discrete and continuous domains, allowing a wide range of constraint programming applications.
  • Constraints.jl is a key component, specifically designed to facilitate the definition, manipulation, and application of constraints in constraint programming. This package is central to handling both standard and complex constraints, making it an indispensable tool for developers and researchers working in CP.
  • ConstraintModels.jl is a package for Julia Constraints' solvers that stores Constraint Programming models.

Learning and Translation Tools

A collection that bridges the gap between the ease of modeling and computational efficacy. These tools learn from constraints or convert natural language problems into constraint programming solutions, requiring minimal input from the user beyond the model itself.

  • CompositionalNetworks.jl provides interpretable compositional networks (ICN), a combinatorial variant of neural networks that allows the user to obtain interpretable results, unlike regular artificial neural networks.
  • QUBOConstraints.jl is a package that can (automatically) learn QUBO matrices from optimization constraints.
  • ConstraintsTranslator.jl (tentative name, WIP) is a tool for converting problems expressed in natural language into optimization models.
  • ConstraintLearning.jl is a common interface that integrates the various components outlined above.

Solvers

We offer a variety of solvers, from native Julia solvers to interfaces with JuMP for external CP solvers, to cater to various problem-solving needs.

  • LocalSearchSolvers.jl is a Julia native framework to (semi-)automatically build Constraint-based Local Search solvers. It serves as a basic for the experimental design or core and learning oriented packages in Julia Constraints.
  • CBLS.jl a MOI/JuMP interface for the above framework!
  • CPLEXCP.jl a Julia interface for CPLEX CP Optimizer.
  • Chuffed.jl a wrapper for the constraint-programming solver Chuffed to Julia.
  • JaCoP.jl a Julia interface for the JaCoP constraint-programming solver.

JuMP extras

Constraint Programming is slowly making steps into the main JuMP components. However, some extra resources are available as

Meta-solving

MetaStrategist.jl is a meta-solving package in its formative stages, which aims to harness the strengths of CP and JuMP. Its goal is to formulate tailored strategies that take into consideration the unique hardware and software resources at hand, offering a new horizon in problem-solving efficiency and adaptability. Stay tuned!

Performance related tools

We've made a tool for cross-version performance checking that ensures the high efficiency and reliability of our solutions. By facilitating clear and simple performance evaluations, PerfChecker.jl enhances both development and maintenance, contributing to the overall health and progress of Julia (Constraints)'s growing library of resources.

Contributors Page

Acknowledgments

The Julia Constraints community would not be where it is today without the collective efforts of many talented individuals and organizations. We extend our heartfelt thanks to:

  • IIJ Research Lab: The driving force behind more than half of this project!
  • JuMP-dev Community: For their extensive contributions to the development of our packages.
  • Individual Contributors: Numerous developers and researchers who have dedicated their time and skills to enhance our tools.
',2),s=[n];function r(l,h,g,c,u,m){return e(),o("div",null,s)}const f=t(i,[["render",r]]);export{d as __pageData,f as default}; +import{_ as t,c as o,o as e,a7 as a}from"./chunks/framework.CBLuZwrP.js";const d=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"Julia Constraints","text":"Model Smoothly Decide Wisely","tagline":"A Toolkit for Constraint Programming","image":{"src":"/logo.png","alt":"JuliaConstraints"},"actions":[{"theme":"brand","text":"Constraint Programming ?!","link":"/cp/intro"},{"theme":"alt","text":"View on Github","link":"https://github.com/JuliaConstraints/JuliaConstraints.github.io"}]},"features":[{"icon":"\\"JuMP.jl\\"/","title":"JuMP.jl","details":"Model optimization problems via JuMP.jl!","link":"https://jump.dev/"},{"icon":"\\"PerfChecker.jl\\"/","title":"PerfChecker.jl","details":"Cross-version performance checking tool","link":"https://github.com/JuliaConstraints/PerfChecker.jl"},{"icon":"\\"Pluto.jl\\"/","title":"Pluto.jl","details":"Simple, reactive programming environment via Julia notebooks","link":"https://plutojl.org/"}]},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":null}'),i={name:"index.md"},n=a('

What is Julia Constraints?

The Julia Constraints organization serves as a hub for resources to create, understand, and solve optimization through the lens of Constraint Programming. Our goal is to make Constraint Programming accessible and efficient for users at all levels of expertise, by providing a comprehensive suite of tools.

Most tools integrate seamlessly with JuMP, a popular Julia package for mathematical optimization.

Ecosystem overview

Core Packages

The foundation of common packages that provide essential features for constraint programming ensures that users possess the fundamental tools required for their projects.

  • ConstraintCommons.jl is designed to make constraint programming solutions in Julia interoperable. It provides shared structures, abstract types, functions, and generic methods used by both basic feature packages and learning-oriented packages.
  • ConstraintDomains.jl focuses on the definition and manipulation of variable domains, which are used to solve constraint programming problems. This package provides the infrastructure needed to specify both discrete and continuous domains, allowing a wide range of constraint programming applications.
  • Constraints.jl is a key component, specifically designed to facilitate the definition, manipulation, and application of constraints in constraint programming. This package is central to handling both standard and complex constraints, making it an indispensable tool for developers and researchers working in CP.
  • ConstraintModels.jl is a package for Julia Constraints' solvers that stores Constraint Programming models.

Learning and Translation Tools

A collection that bridges the gap between the ease of modeling and computational efficacy. These tools learn from constraints or convert natural language problems into constraint programming solutions, requiring minimal input from the user beyond the model itself.

  • CompositionalNetworks.jl provides interpretable compositional networks (ICN), a combinatorial variant of neural networks that allows the user to obtain interpretable results, unlike regular artificial neural networks.
  • QUBOConstraints.jl is a package that can (automatically) learn QUBO matrices from optimization constraints.
  • ConstraintsTranslator.jl (tentative name, WIP) is a tool for converting problems expressed in natural language into optimization models.
  • ConstraintLearning.jl is a common interface that integrates the various components outlined above.

Solvers

We offer a variety of solvers, from native Julia solvers to interfaces with JuMP for external CP solvers, to cater to various problem-solving needs.

  • LocalSearchSolvers.jl is a Julia native framework to (semi-)automatically build Constraint-based Local Search solvers. It serves as a basic for the experimental design or core and learning oriented packages in Julia Constraints.
  • CBLS.jl a MOI/JuMP interface for the above framework!
  • CPLEXCP.jl a Julia interface for CPLEX CP Optimizer.
  • Chuffed.jl a wrapper for the constraint-programming solver Chuffed to Julia.
  • JaCoP.jl a Julia interface for the JaCoP constraint-programming solver.

JuMP extras

Constraint Programming is slowly making steps into the main JuMP components. However, some extra resources are available as

Meta-solving

MetaStrategist.jl is a meta-solving package in its formative stages, which aims to harness the strengths of CP and JuMP. Its goal is to formulate tailored strategies that take into consideration the unique hardware and software resources at hand, offering a new horizon in problem-solving efficiency and adaptability. Stay tuned!

Performance related tools

We've made a tool for cross-version performance checking that ensures the high efficiency and reliability of our solutions. By facilitating clear and simple performance evaluations, PerfChecker.jl enhances both development and maintenance, contributing to the overall health and progress of Julia (Constraints)'s growing library of resources.

Contributors Page

Acknowledgments

The Julia Constraints community would not be where it is today without the collective efforts of many talented individuals and organizations. We extend our heartfelt thanks to:

  • IIJ Research Lab: The driving force behind more than half of this project!
  • JuMP-dev Community: For their extensive contributions to the development of our packages.
  • Individual Contributors: Numerous developers and researchers who have dedicated their time and skills to enhance our tools.
',2),s=[n];function r(l,h,g,c,u,m){return e(),o("div",null,s)}const f=t(i,[["render",r]]);export{d as __pageData,f as default}; diff --git a/dev/assets/index.md.DEar9D6T.lean.js b/dev/assets/index.md.DgwT_Cs_.lean.js similarity index 90% rename from dev/assets/index.md.DEar9D6T.lean.js rename to dev/assets/index.md.DgwT_Cs_.lean.js index 572af79..6199e8b 100644 --- a/dev/assets/index.md.DEar9D6T.lean.js +++ b/dev/assets/index.md.DgwT_Cs_.lean.js @@ -1 +1 @@ -import{_ as t,c as o,o as e,a6 as a}from"./chunks/framework.U9t3ZutP.js";const d=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"Julia Constraints","text":"Model Smoothly Decide Wisely","tagline":"A Toolkit for Constraint Programming","image":{"src":"/logo.png","alt":"JuliaConstraints"},"actions":[{"theme":"brand","text":"Constraint Programming ?!","link":"/cp/intro"},{"theme":"alt","text":"View on Github","link":"https://github.com/JuliaConstraints/JuliaConstraints.github.io"}]},"features":[{"icon":"\\"JuMP.jl\\"/","title":"JuMP.jl","details":"Model optimization problems via JuMP.jl!","link":"https://jump.dev/"},{"icon":"\\"PerfChecker.jl\\"/","title":"PerfChecker.jl","details":"Cross-version performance checking tool","link":"https://github.com/JuliaConstraints/PerfChecker.jl"},{"icon":"\\"Pluto.jl\\"/","title":"Pluto.jl","details":"Simple, reactive programming environment via Julia notebooks","link":"https://plutojl.org/"}]},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":null}'),i={name:"index.md"},n=a("",2),s=[n];function r(l,h,g,c,u,m){return e(),o("div",null,s)}const f=t(i,[["render",r]]);export{d as __pageData,f as default}; +import{_ as t,c as o,o as e,a7 as a}from"./chunks/framework.CBLuZwrP.js";const d=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"Julia Constraints","text":"Model Smoothly Decide Wisely","tagline":"A Toolkit for Constraint Programming","image":{"src":"/logo.png","alt":"JuliaConstraints"},"actions":[{"theme":"brand","text":"Constraint Programming ?!","link":"/cp/intro"},{"theme":"alt","text":"View on Github","link":"https://github.com/JuliaConstraints/JuliaConstraints.github.io"}]},"features":[{"icon":"\\"JuMP.jl\\"/","title":"JuMP.jl","details":"Model optimization problems via JuMP.jl!","link":"https://jump.dev/"},{"icon":"\\"PerfChecker.jl\\"/","title":"PerfChecker.jl","details":"Cross-version performance checking tool","link":"https://github.com/JuliaConstraints/PerfChecker.jl"},{"icon":"\\"Pluto.jl\\"/","title":"Pluto.jl","details":"Simple, reactive programming environment via Julia notebooks","link":"https://plutojl.org/"}]},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":null}'),i={name:"index.md"},n=a("",2),s=[n];function r(l,h,g,c,u,m){return e(),o("div",null,s)}const f=t(i,[["render",r]]);export{d as __pageData,f as default}; diff --git a/dev/assets/learning_aggregation.md.BVc6mB_V.js b/dev/assets/learning_aggregation.md.Dl-pS0Ec.js similarity index 96% rename from dev/assets/learning_aggregation.md.BVc6mB_V.js rename to dev/assets/learning_aggregation.md.Dl-pS0Ec.js index f084f22..fc0e137 100644 --- a/dev/assets/learning_aggregation.md.BVc6mB_V.js +++ b/dev/assets/learning_aggregation.md.Dl-pS0Ec.js @@ -1 +1 @@ -import{_ as a,c as e,o as i,a6 as t}from"./chunks/framework.U9t3ZutP.js";const b=JSON.parse('{"title":"Aggregation Layer","description":"","frontmatter":{},"headers":[],"relativePath":"learning/aggregation.md","filePath":"learning/aggregation.md","lastUpdated":null}'),o={name:"learning/aggregation.md"},r=t('

Aggregation Layer

Some text to describe the aggragation layer within usual ICNs.

List of aggregations

# CompositionalNetworks.ag_sumFunction.
julia
ag_sum(x)

Aggregate through + a vector into a single scalar.

source


# CompositionalNetworks.ag_count_positiveFunction.
julia
ag_count_positive(x)

Count the number of strictly positive elements of x.

source


Layer generation

# CompositionalNetworks.aggregation_layerFunction.
julia
aggregation_layer()

Generate the layer of aggregations of the ICN. The operations are mutually exclusive, that is only one will be selected.

source


',10),s=[r];function n(g,l,p,d,c,h){return i(),e("div",null,s)}const k=a(o,[["render",n]]);export{b as __pageData,k as default}; +import{_ as a,c as e,o as i,a7 as t}from"./chunks/framework.CBLuZwrP.js";const b=JSON.parse('{"title":"Aggregation Layer","description":"","frontmatter":{},"headers":[],"relativePath":"learning/aggregation.md","filePath":"learning/aggregation.md","lastUpdated":null}'),o={name:"learning/aggregation.md"},r=t('

Aggregation Layer

Some text to describe the aggragation layer within usual ICNs.

List of aggregations

# CompositionalNetworks.ag_sumFunction.
julia
ag_sum(x)

Aggregate through + a vector into a single scalar.

source


# CompositionalNetworks.ag_count_positiveFunction.
julia
ag_count_positive(x)

Count the number of strictly positive elements of x.

source


Layer generation

# CompositionalNetworks.aggregation_layerFunction.
julia
aggregation_layer()

Generate the layer of aggregations of the ICN. The operations are mutually exclusive, that is only one will be selected.

source


',10),s=[r];function n(g,l,p,d,c,h){return i(),e("div",null,s)}const k=a(o,[["render",n]]);export{b as __pageData,k as default}; diff --git a/dev/assets/learning_aggregation.md.BVc6mB_V.lean.js b/dev/assets/learning_aggregation.md.Dl-pS0Ec.lean.js similarity index 70% rename from dev/assets/learning_aggregation.md.BVc6mB_V.lean.js rename to dev/assets/learning_aggregation.md.Dl-pS0Ec.lean.js index 9588f38..75d8e26 100644 --- a/dev/assets/learning_aggregation.md.BVc6mB_V.lean.js +++ b/dev/assets/learning_aggregation.md.Dl-pS0Ec.lean.js @@ -1 +1 @@ -import{_ as a,c as e,o as i,a6 as t}from"./chunks/framework.U9t3ZutP.js";const b=JSON.parse('{"title":"Aggregation Layer","description":"","frontmatter":{},"headers":[],"relativePath":"learning/aggregation.md","filePath":"learning/aggregation.md","lastUpdated":null}'),o={name:"learning/aggregation.md"},r=t("",10),s=[r];function n(g,l,p,d,c,h){return i(),e("div",null,s)}const k=a(o,[["render",n]]);export{b as __pageData,k as default}; +import{_ as a,c as e,o as i,a7 as t}from"./chunks/framework.CBLuZwrP.js";const b=JSON.parse('{"title":"Aggregation Layer","description":"","frontmatter":{},"headers":[],"relativePath":"learning/aggregation.md","filePath":"learning/aggregation.md","lastUpdated":null}'),o={name:"learning/aggregation.md"},r=t("",10),s=[r];function n(g,l,p,d,c,h){return i(),e("div",null,s)}const k=a(o,[["render",n]]);export{b as __pageData,k as default}; diff --git a/dev/assets/learning_arithmetic.md.DwM8709A.js b/dev/assets/learning_arithmetic.md.De1AcXBC.js similarity index 96% rename from dev/assets/learning_arithmetic.md.DwM8709A.js rename to dev/assets/learning_arithmetic.md.De1AcXBC.js index 90d1115..e5fe587 100644 --- a/dev/assets/learning_arithmetic.md.DwM8709A.js +++ b/dev/assets/learning_arithmetic.md.De1AcXBC.js @@ -1 +1 @@ -import{_ as e,c as i,o as t,a6 as a}from"./chunks/framework.U9t3ZutP.js";const b=JSON.parse('{"title":"Arithmetic Layer","description":"","frontmatter":{},"headers":[],"relativePath":"learning/arithmetic.md","filePath":"learning/arithmetic.md","lastUpdated":null}'),r={name:"learning/arithmetic.md"},o=a('

Arithmetic Layer

Some text to describe the arithmetic layer within usual ICNs.

List of arithmetic operations

# CompositionalNetworks.ar_sumFunction.
julia
ar_sum(x)

Reduce k = length(x) vectors through sum to a single vector.

source


# CompositionalNetworks.ar_prodFunction.
julia
ar_prod(x)

Reduce k = length(x) vectors through product to a single vector.

source


Layer generation

# CompositionalNetworks.arithmetic_layerFunction.
julia
arithmetic_layer()

Generate the layer of arithmetic operations of the ICN. The operations are mutually exclusive, that is only one will be selected.

source


',10),s=[o];function l(n,h,c,p,d,m){return t(),i("div",null,s)}const g=e(r,[["render",l]]);export{b as __pageData,g as default}; +import{_ as e,c as i,o as t,a7 as a}from"./chunks/framework.CBLuZwrP.js";const b=JSON.parse('{"title":"Arithmetic Layer","description":"","frontmatter":{},"headers":[],"relativePath":"learning/arithmetic.md","filePath":"learning/arithmetic.md","lastUpdated":null}'),r={name:"learning/arithmetic.md"},o=a('

Arithmetic Layer

Some text to describe the arithmetic layer within usual ICNs.

List of arithmetic operations

# CompositionalNetworks.ar_sumFunction.
julia
ar_sum(x)

Reduce k = length(x) vectors through sum to a single vector.

source


# CompositionalNetworks.ar_prodFunction.
julia
ar_prod(x)

Reduce k = length(x) vectors through product to a single vector.

source


Layer generation

# CompositionalNetworks.arithmetic_layerFunction.
julia
arithmetic_layer()

Generate the layer of arithmetic operations of the ICN. The operations are mutually exclusive, that is only one will be selected.

source


',10),s=[o];function l(n,h,c,p,d,m){return t(),i("div",null,s)}const g=e(r,[["render",l]]);export{b as __pageData,g as default}; diff --git a/dev/assets/learning_arithmetic.md.DwM8709A.lean.js b/dev/assets/learning_arithmetic.md.De1AcXBC.lean.js similarity index 70% rename from dev/assets/learning_arithmetic.md.DwM8709A.lean.js rename to dev/assets/learning_arithmetic.md.De1AcXBC.lean.js index 928ad78..8ad803f 100644 --- a/dev/assets/learning_arithmetic.md.DwM8709A.lean.js +++ b/dev/assets/learning_arithmetic.md.De1AcXBC.lean.js @@ -1 +1 @@ -import{_ as e,c as i,o as t,a6 as a}from"./chunks/framework.U9t3ZutP.js";const b=JSON.parse('{"title":"Arithmetic Layer","description":"","frontmatter":{},"headers":[],"relativePath":"learning/arithmetic.md","filePath":"learning/arithmetic.md","lastUpdated":null}'),r={name:"learning/arithmetic.md"},o=a("",10),s=[o];function l(n,h,c,p,d,m){return t(),i("div",null,s)}const g=e(r,[["render",l]]);export{b as __pageData,g as default}; +import{_ as e,c as i,o as t,a7 as a}from"./chunks/framework.CBLuZwrP.js";const b=JSON.parse('{"title":"Arithmetic Layer","description":"","frontmatter":{},"headers":[],"relativePath":"learning/arithmetic.md","filePath":"learning/arithmetic.md","lastUpdated":null}'),r={name:"learning/arithmetic.md"},o=a("",10),s=[o];function l(n,h,c,p,d,m){return t(),i("div",null,s)}const g=e(r,[["render",l]]);export{b as __pageData,g as default}; diff --git a/dev/assets/learning_comparison.md.D7dT9cpF.js b/dev/assets/learning_comparison.md._HTVnje4.js similarity index 97% rename from dev/assets/learning_comparison.md.D7dT9cpF.js rename to dev/assets/learning_comparison.md._HTVnje4.js index 623d326..869b36c 100644 --- a/dev/assets/learning_comparison.md.D7dT9cpF.js +++ b/dev/assets/learning_comparison.md._HTVnje4.js @@ -1 +1 @@ -import{_ as i,c as s,o as a,a6 as o}from"./chunks/framework.U9t3ZutP.js";const g=JSON.parse('{"title":"Comparison Layer","description":"","frontmatter":{},"headers":[],"relativePath":"learning/comparison.md","filePath":"learning/comparison.md","lastUpdated":null}'),e={name:"learning/comparison.md"},r=o('

Comparison Layer

Some text to describe the comparison layer within usual ICNs.

List of comparisons

List the possible parameters and how it affects the comparison.

Non-parametric

# CompositionalNetworks.co_identityFunction.
julia
co_identity(x)

Identity function. Already defined in Julia as identity, specialized for scalars in the comparison layer.

source


Missing docstring.

Missing docstring for co_euclidian. Check Documenter's build log for details.

Missing docstring.

Missing docstring for co_abs_diff_val_vars. Check Documenter's build log for details.

Missing docstring.

Missing docstring for co_val_minus_vars. Check Documenter's build log for details.

Missing docstring.

Missing docstring for co_vars_minus_val. Check Documenter's build log for details.

Param: :val

Missing docstring.

Missing docstring for co_abs_diff_val_param. Check Documenter's build log for details.

Missing docstring.

Missing docstring for co_val_minus_param. Check Documenter's build log for details.

Missing docstring.

Missing docstring for co_param_minus_val. Check Documenter's build log for details.

Missing docstring.

Missing docstring for co_euclidian_param. Check Documenter's build log for details.

Layer generation

Missing docstring.

Missing docstring for make_comparisons. Check Documenter's build log for details.

# CompositionalNetworks.comparison_layerFunction.
julia
comparison_layer(param = false)

Generate the layer of transformations functions of the ICN. Iff param value is set, also includes all the parametric comparison with that value. The operations are mutually exclusive, that is only one will be selected.

source


',20),t=[r];function n(c,l,d,p,m,h){return a(),s("div",null,t)}const b=i(e,[["render",n]]);export{g as __pageData,b as default}; +import{_ as i,c as s,o as a,a7 as o}from"./chunks/framework.CBLuZwrP.js";const g=JSON.parse('{"title":"Comparison Layer","description":"","frontmatter":{},"headers":[],"relativePath":"learning/comparison.md","filePath":"learning/comparison.md","lastUpdated":null}'),e={name:"learning/comparison.md"},r=o('

Comparison Layer

Some text to describe the comparison layer within usual ICNs.

List of comparisons

List the possible parameters and how it affects the comparison.

Non-parametric

# CompositionalNetworks.co_identityFunction.
julia
co_identity(x)

Identity function. Already defined in Julia as identity, specialized for scalars in the comparison layer.

source


Missing docstring.

Missing docstring for co_euclidian. Check Documenter's build log for details.

Missing docstring.

Missing docstring for co_abs_diff_val_vars. Check Documenter's build log for details.

Missing docstring.

Missing docstring for co_val_minus_vars. Check Documenter's build log for details.

Missing docstring.

Missing docstring for co_vars_minus_val. Check Documenter's build log for details.

Param: :val

Missing docstring.

Missing docstring for co_abs_diff_val_param. Check Documenter's build log for details.

Missing docstring.

Missing docstring for co_val_minus_param. Check Documenter's build log for details.

Missing docstring.

Missing docstring for co_param_minus_val. Check Documenter's build log for details.

Missing docstring.

Missing docstring for co_euclidian_param. Check Documenter's build log for details.

Layer generation

Missing docstring.

Missing docstring for make_comparisons. Check Documenter's build log for details.

# CompositionalNetworks.comparison_layerFunction.
julia
comparison_layer(param = false)

Generate the layer of transformations functions of the ICN. Iff param value is set, also includes all the parametric comparison with that value. The operations are mutually exclusive, that is only one will be selected.

source


',20),t=[r];function n(c,l,d,p,m,h){return a(),s("div",null,t)}const b=i(e,[["render",n]]);export{g as __pageData,b as default}; diff --git a/dev/assets/learning_comparison.md.D7dT9cpF.lean.js b/dev/assets/learning_comparison.md._HTVnje4.lean.js similarity index 70% rename from dev/assets/learning_comparison.md.D7dT9cpF.lean.js rename to dev/assets/learning_comparison.md._HTVnje4.lean.js index 148bddd..e5853d8 100644 --- a/dev/assets/learning_comparison.md.D7dT9cpF.lean.js +++ b/dev/assets/learning_comparison.md._HTVnje4.lean.js @@ -1 +1 @@ -import{_ as i,c as s,o as a,a6 as o}from"./chunks/framework.U9t3ZutP.js";const g=JSON.parse('{"title":"Comparison Layer","description":"","frontmatter":{},"headers":[],"relativePath":"learning/comparison.md","filePath":"learning/comparison.md","lastUpdated":null}'),e={name:"learning/comparison.md"},r=o("",20),t=[r];function n(c,l,d,p,m,h){return a(),s("div",null,t)}const b=i(e,[["render",n]]);export{g as __pageData,b as default}; +import{_ as i,c as s,o as a,a7 as o}from"./chunks/framework.CBLuZwrP.js";const g=JSON.parse('{"title":"Comparison Layer","description":"","frontmatter":{},"headers":[],"relativePath":"learning/comparison.md","filePath":"learning/comparison.md","lastUpdated":null}'),e={name:"learning/comparison.md"},r=o("",20),t=[r];function n(c,l,d,p,m,h){return a(),s("div",null,t)}const b=i(e,[["render",n]]);export{g as __pageData,b as default}; diff --git a/dev/assets/learning_compositional_networks.md.CnmEYulZ.js b/dev/assets/learning_compositional_networks.md.BG5bymSs.js similarity index 99% rename from dev/assets/learning_compositional_networks.md.CnmEYulZ.js rename to dev/assets/learning_compositional_networks.md.BG5bymSs.js index d86a3f9..9aefed5 100644 --- a/dev/assets/learning_compositional_networks.md.CnmEYulZ.js +++ b/dev/assets/learning_compositional_networks.md.BG5bymSs.js @@ -1 +1 @@ -import{_ as i,c as s,o,a6 as a}from"./chunks/framework.U9t3ZutP.js";const u=JSON.parse('{"title":"CompositionalNetworks.jl","description":"","frontmatter":{},"headers":[],"relativePath":"learning/compositional_networks.md","filePath":"learning/compositional_networks.md","lastUpdated":null}'),t={name:"learning/compositional_networks.md"},e=a('

CompositionalNetworks.jl

Documentation for CompositionalNetworks.jl.

Utilities

# CompositionalNetworks.map_tr!Function.
julia
map_tr!(f, x, X, param)

Return an anonymous function that applies f to all elements of x and store the result in X, with a parameter param (which is set to nothing for function with no parameter).

source


# CompositionalNetworks.lazyFunction.
julia
lazy(funcs::Function...)

Generate methods extended to a vector instead of one of its components. A function f should have the following signature: f(i::Int, x::V).

source


# CompositionalNetworks.lazy_paramFunction.
julia
lazy_param(funcs::Function...)

Generate methods extended to a vector instead of one of its components. A function f should have the following signature: f(i::Int, x::V; param).

source


# CompositionalNetworks.as_bitvectorFunction.
julia
as_bitvector(n::Int, max_n::Int = n)

Convert an Int to a BitVector of minimal size (relatively to max_n).

source


# CompositionalNetworks.as_intFunction.
julia
as_int(v::AbstractVector)

Convert a BitVector into an Int.

source


# CompositionalNetworks.reduce_symbolsFunction.
julia
reduce_symbols(symbols, sep)

Produce a formatted string that separates the symbols by sep. Used internally for show_composition.

source


Missing docstring.

Missing docstring for CompositionalNeworks.tr_in. Check Documenter's build log for details.

Metrics

# CompositionalNetworks.hammingFunction.
julia
hamming(x, X)

Compute the hamming distance of x over a collection of solutions X, i.e. the minimal number of variables to switch in xto reach a solution.

source


# CompositionalNetworks.minkowskiFunction.
julia
minkowski(x, X, p)

source


# CompositionalNetworks.manhattanFunction.
julia
manhattan(x, X)

source


Missing docstring.

Missing docstring for weigths_bias. Check Documenter's build log for details.

',24),n=[e];function l(r,p,d,c,h,k){return o(),s("div",null,n)}const m=i(t,[["render",l]]);export{u as __pageData,m as default}; +import{_ as i,c as s,o,a7 as a}from"./chunks/framework.CBLuZwrP.js";const u=JSON.parse('{"title":"CompositionalNetworks.jl","description":"","frontmatter":{},"headers":[],"relativePath":"learning/compositional_networks.md","filePath":"learning/compositional_networks.md","lastUpdated":null}'),t={name:"learning/compositional_networks.md"},e=a('

CompositionalNetworks.jl

Documentation for CompositionalNetworks.jl.

Utilities

# CompositionalNetworks.map_tr!Function.
julia
map_tr!(f, x, X, param)

Return an anonymous function that applies f to all elements of x and store the result in X, with a parameter param (which is set to nothing for function with no parameter).

source


# CompositionalNetworks.lazyFunction.
julia
lazy(funcs::Function...)

Generate methods extended to a vector instead of one of its components. A function f should have the following signature: f(i::Int, x::V).

source


# CompositionalNetworks.lazy_paramFunction.
julia
lazy_param(funcs::Function...)

Generate methods extended to a vector instead of one of its components. A function f should have the following signature: f(i::Int, x::V; param).

source


# CompositionalNetworks.as_bitvectorFunction.
julia
as_bitvector(n::Int, max_n::Int = n)

Convert an Int to a BitVector of minimal size (relatively to max_n).

source


# CompositionalNetworks.as_intFunction.
julia
as_int(v::AbstractVector)

Convert a BitVector into an Int.

source


# CompositionalNetworks.reduce_symbolsFunction.
julia
reduce_symbols(symbols, sep)

Produce a formatted string that separates the symbols by sep. Used internally for show_composition.

source


Missing docstring.

Missing docstring for CompositionalNeworks.tr_in. Check Documenter's build log for details.

Metrics

# CompositionalNetworks.hammingFunction.
julia
hamming(x, X)

Compute the hamming distance of x over a collection of solutions X, i.e. the minimal number of variables to switch in xto reach a solution.

source


# CompositionalNetworks.minkowskiFunction.
julia
minkowski(x, X, p)

source


# CompositionalNetworks.manhattanFunction.
julia
manhattan(x, X)

source


Missing docstring.

Missing docstring for weigths_bias. Check Documenter's build log for details.

',24),n=[e];function l(r,p,d,c,h,k){return o(),s("div",null,n)}const m=i(t,[["render",l]]);export{u as __pageData,m as default}; diff --git a/dev/assets/learning_compositional_networks.md.CnmEYulZ.lean.js b/dev/assets/learning_compositional_networks.md.BG5bymSs.lean.js similarity index 86% rename from dev/assets/learning_compositional_networks.md.CnmEYulZ.lean.js rename to dev/assets/learning_compositional_networks.md.BG5bymSs.lean.js index 15c101a..ae6c3c2 100644 --- a/dev/assets/learning_compositional_networks.md.CnmEYulZ.lean.js +++ b/dev/assets/learning_compositional_networks.md.BG5bymSs.lean.js @@ -1 +1 @@ -import{_ as i,c as s,o,a6 as a}from"./chunks/framework.U9t3ZutP.js";const u=JSON.parse('{"title":"CompositionalNetworks.jl","description":"","frontmatter":{},"headers":[],"relativePath":"learning/compositional_networks.md","filePath":"learning/compositional_networks.md","lastUpdated":null}'),t={name:"learning/compositional_networks.md"},e=a("",24),n=[e];function l(r,p,d,c,h,k){return o(),s("div",null,n)}const m=i(t,[["render",l]]);export{u as __pageData,m as default}; +import{_ as i,c as s,o,a7 as a}from"./chunks/framework.CBLuZwrP.js";const u=JSON.parse('{"title":"CompositionalNetworks.jl","description":"","frontmatter":{},"headers":[],"relativePath":"learning/compositional_networks.md","filePath":"learning/compositional_networks.md","lastUpdated":null}'),t={name:"learning/compositional_networks.md"},e=a("",24),n=[e];function l(r,p,d,c,h,k){return o(),s("div",null,n)}const m=i(t,[["render",l]]);export{u as __pageData,m as default}; diff --git a/dev/assets/learning_constraint_learning.md.BkxpDY7b.js b/dev/assets/learning_constraint_learning.md.MS50148Y.js similarity index 99% rename from dev/assets/learning_constraint_learning.md.BkxpDY7b.js rename to dev/assets/learning_constraint_learning.md.MS50148Y.js index f279868..96d7442 100644 --- a/dev/assets/learning_constraint_learning.md.BkxpDY7b.js +++ b/dev/assets/learning_constraint_learning.md.MS50148Y.js @@ -1 +1 @@ -import{_ as i,c as s,o as a,a6 as e}from"./chunks/framework.U9t3ZutP.js";const b=JSON.parse('{"title":"ConstraintLearning.jl","description":"","frontmatter":{},"headers":[],"relativePath":"learning/constraint_learning.md","filePath":"learning/constraint_learning.md","lastUpdated":null}'),t={name:"learning/constraint_learning.md"},n=e('

ConstraintLearning.jl

Documentation for ConstraintLearning.jl.

# ConstraintLearning.ICNConfigType.
julia
struct ICNConfig{O <: ICNOptimizer}

A structure to hold the metric and optimizer configurations used in learning the weights of an ICN.

source


# ConstraintLearning.ICNConfigMethod.
julia
ICNConfig(; metric = :hamming, optimizer = ICNGeneticOptimizer())

Constructor for ICNConfig. Defaults to hamming metric using a genetic algorithm.

source


# ConstraintLearning.ICNGeneticOptimizerMethod.
julia
ICNGeneticOptimizer(; kargs...)

Default constructor to learn an ICN through a Genetic Algorithm. Default kargs TBW.

source


# ConstraintLearning.ICNLocalSearchOptimizerType.
julia
ICNLocalSearchOptimizer(options = LocalSearchSolvers.Options())

Default constructor to learn an ICN through a CBLS solver.

source


# ConstraintLearning.ICNOptimizerType.
julia
const ICNOptimizer = CompositionalNetworks.AbstractOptimizer

An abstract type for optmizers defined to learn ICNs.

source


# ConstraintLearning.QUBOGradientOptimizerMethod.
julia
QUBOGradientOptimizer(; kargs...)

A QUBO optimizer based on gradient descent. Defaults TBW

source


# ConstraintLearning.QUBOOptimizerType.
julia
const QUBOOptimizer = QUBOConstraints.AbstractOptimizer

An abstract type for optimizers used to learn QUBO matrices from constraints.

source


# CompositionalNetworks.optimize!Method.
julia
CompositionalNetworks.optimize!(icn, solutions, non_sltns, dom_size, metric, optimizer::ICNGeneticOptimizer; parameters...)

Extends the optimize! method to ICNGeneticOptimizer.

source


# CompositionalNetworks.optimize!Method.
julia
CompositionalNetworks.optimize!(icn, solutions, non_sltns, dom_size, metric, optimizer::ICNLocalSearchOptimizer; parameters...)

Extends the optimize! method to ICNLocalSearchOptimizer.

source


# ConstraintLearning._optimize!Method.
julia
_optimize!(icn, X, X_sols; metric = hamming, pop_size = 200)

Optimize and set the weights of an ICN with a given set of configuration X and solutions X_sols.

source


# ConstraintLearning.domain_sizeMethod.
julia
domain_size(ds::Number)

Extends the domain_size function when ds is number (for dispatch purposes).

source


# ConstraintLearning.generate_populationMethod.
julia
generate_population(icn, pop_size

Generate a pôpulation of weights (individuals) for the genetic algorithm weighting icn.

source


# ConstraintLearning.icnMethod.
julia
icn(X,X̅; kargs..., parameters...)

TBW

source


# ConstraintLearning.lossMethod.
julia
loss(x, y, Q)

Loss of the prediction given by Q, a training set y, and a given configuration x.

source


# ConstraintLearning.make_dfMethod.
julia
make_df(X, Q, penalty, binarization, domains)

DataFrame arrangement to output some basic evaluation of a matrix Q.

source


# ConstraintLearning.make_set_penaltyMethod.
julia
make_set_penalty(X, X̅, args...; kargs)

Return a penalty function when the training set is already split into a pair of solutions X and non solutions .

source


# ConstraintLearning.make_training_setsMethod.
julia
make_training_sets(X, penalty, args...)

Return a pair of solutions and non solutions sets based on X and penalty.

source


# ConstraintLearning.mutually_exclusiveMethod.
julia
mutually_exclusive(layer, w)

Constraint ensuring that w encode exclusive operations in layer.

source


# ConstraintLearning.no_empty_layerMethod.
julia
no_empty_layer(x; X = nothing)

Constraint ensuring that at least one operation is selected.

source


# ConstraintLearning.optimize!Method.
julia
optimize!(icn, X, X_sols, global_iter, local_iter; metric=hamming, popSize=100)

Optimize and set the weights of an ICN with a given set of configuration X and solutions X_sols. The best weights among global_iter will be set.

source


# ConstraintLearning.parameter_specific_operationsMethod.
julia
parameter_specific_operations(x; X = nothing)

Constraint ensuring that at least one operation related to parameters is selected if the error function to be learned is parametric.

source


# ConstraintLearning.predictMethod.
julia
predict(x, Q)

Return the predictions given by Q for a given configuration x.

source


# ConstraintLearning.preliminariesMethod.
julia
preliminaries(args)

Preliminaries to the training process in a QUBOGradientOptimizer run.

source


# ConstraintLearning.quboFunction.
julia
qubo(X,X̅; kargs..., parameters...)

TBW

source


# ConstraintLearning.sub_eltypeMethod.
julia
sub_eltype(X)

Return the element type of of the first element of a collection.

source


# ConstraintLearning.train!Method.
julia
train!(Q, X, penalty, η, precision, X_test, oversampling, binarization, domains)

Training inner method.

source


# ConstraintLearning.trainMethod.
julia
train(X, penalty[, d]; optimizer = QUBOGradientOptimizer(), X_test = X)

Learn a QUBO matrix on training set X for a constraint defined by penalty with optional domain information d. By default, it uses a QUBOGradientOptimizer and X as a testing set.

source


# ConstraintLearning.δMethod.
julia
δ(X[, Y]; discrete = true)

Compute the extrema over a collection X``or a pair of collection(X, Y)`.

source


',58),r=[n];function l(o,p,d,h,c,g){return a(),s("div",null,r)}const u=i(t,[["render",l]]);export{b as __pageData,u as default}; +import{_ as i,c as s,o as a,a7 as e}from"./chunks/framework.CBLuZwrP.js";const b=JSON.parse('{"title":"ConstraintLearning.jl","description":"","frontmatter":{},"headers":[],"relativePath":"learning/constraint_learning.md","filePath":"learning/constraint_learning.md","lastUpdated":null}'),t={name:"learning/constraint_learning.md"},n=e('

ConstraintLearning.jl

Documentation for ConstraintLearning.jl.

# ConstraintLearning.ICNConfigType.
julia
struct ICNConfig{O <: ICNOptimizer}

A structure to hold the metric and optimizer configurations used in learning the weights of an ICN.

source


# ConstraintLearning.ICNConfigMethod.
julia
ICNConfig(; metric = :hamming, optimizer = ICNGeneticOptimizer())

Constructor for ICNConfig. Defaults to hamming metric using a genetic algorithm.

source


# ConstraintLearning.ICNGeneticOptimizerMethod.
julia
ICNGeneticOptimizer(; kargs...)

Default constructor to learn an ICN through a Genetic Algorithm. Default kargs TBW.

source


# ConstraintLearning.ICNLocalSearchOptimizerType.
julia
ICNLocalSearchOptimizer(options = LocalSearchSolvers.Options())

Default constructor to learn an ICN through a CBLS solver.

source


# ConstraintLearning.ICNOptimizerType.
julia
const ICNOptimizer = CompositionalNetworks.AbstractOptimizer

An abstract type for optmizers defined to learn ICNs.

source


# ConstraintLearning.QUBOGradientOptimizerMethod.
julia
QUBOGradientOptimizer(; kargs...)

A QUBO optimizer based on gradient descent. Defaults TBW

source


# ConstraintLearning.QUBOOptimizerType.
julia
const QUBOOptimizer = QUBOConstraints.AbstractOptimizer

An abstract type for optimizers used to learn QUBO matrices from constraints.

source


# CompositionalNetworks.optimize!Method.
julia
CompositionalNetworks.optimize!(icn, solutions, non_sltns, dom_size, metric, optimizer::ICNGeneticOptimizer; parameters...)

Extends the optimize! method to ICNGeneticOptimizer.

source


# CompositionalNetworks.optimize!Method.
julia
CompositionalNetworks.optimize!(icn, solutions, non_sltns, dom_size, metric, optimizer::ICNLocalSearchOptimizer; parameters...)

Extends the optimize! method to ICNLocalSearchOptimizer.

source


# ConstraintLearning._optimize!Method.
julia
_optimize!(icn, X, X_sols; metric = hamming, pop_size = 200)

Optimize and set the weights of an ICN with a given set of configuration X and solutions X_sols.

source


# ConstraintLearning.domain_sizeMethod.
julia
domain_size(ds::Number)

Extends the domain_size function when ds is number (for dispatch purposes).

source


# ConstraintLearning.generate_populationMethod.
julia
generate_population(icn, pop_size

Generate a pôpulation of weights (individuals) for the genetic algorithm weighting icn.

source


# ConstraintLearning.icnMethod.
julia
icn(X,X̅; kargs..., parameters...)

TBW

source


# ConstraintLearning.lossMethod.
julia
loss(x, y, Q)

Loss of the prediction given by Q, a training set y, and a given configuration x.

source


# ConstraintLearning.make_dfMethod.
julia
make_df(X, Q, penalty, binarization, domains)

DataFrame arrangement to output some basic evaluation of a matrix Q.

source


# ConstraintLearning.make_set_penaltyMethod.
julia
make_set_penalty(X, X̅, args...; kargs)

Return a penalty function when the training set is already split into a pair of solutions X and non solutions .

source


# ConstraintLearning.make_training_setsMethod.
julia
make_training_sets(X, penalty, args...)

Return a pair of solutions and non solutions sets based on X and penalty.

source


# ConstraintLearning.mutually_exclusiveMethod.
julia
mutually_exclusive(layer, w)

Constraint ensuring that w encode exclusive operations in layer.

source


# ConstraintLearning.no_empty_layerMethod.
julia
no_empty_layer(x; X = nothing)

Constraint ensuring that at least one operation is selected.

source


# ConstraintLearning.optimize!Method.
julia
optimize!(icn, X, X_sols, global_iter, local_iter; metric=hamming, popSize=100)

Optimize and set the weights of an ICN with a given set of configuration X and solutions X_sols. The best weights among global_iter will be set.

source


# ConstraintLearning.parameter_specific_operationsMethod.
julia
parameter_specific_operations(x; X = nothing)

Constraint ensuring that at least one operation related to parameters is selected if the error function to be learned is parametric.

source


# ConstraintLearning.predictMethod.
julia
predict(x, Q)

Return the predictions given by Q for a given configuration x.

source


# ConstraintLearning.preliminariesMethod.
julia
preliminaries(args)

Preliminaries to the training process in a QUBOGradientOptimizer run.

source


# ConstraintLearning.quboFunction.
julia
qubo(X,X̅; kargs..., parameters...)

TBW

source


# ConstraintLearning.sub_eltypeMethod.
julia
sub_eltype(X)

Return the element type of of the first element of a collection.

source


# ConstraintLearning.train!Method.
julia
train!(Q, X, penalty, η, precision, X_test, oversampling, binarization, domains)

Training inner method.

source


# ConstraintLearning.trainMethod.
julia
train(X, penalty[, d]; optimizer = QUBOGradientOptimizer(), X_test = X)

Learn a QUBO matrix on training set X for a constraint defined by penalty with optional domain information d. By default, it uses a QUBOGradientOptimizer and X as a testing set.

source


# ConstraintLearning.δMethod.
julia
δ(X[, Y]; discrete = true)

Compute the extrema over a collection X``or a pair of collection(X, Y)`.

source


',58),r=[n];function l(o,p,d,h,c,g){return a(),s("div",null,r)}const u=i(t,[["render",l]]);export{b as __pageData,u as default}; diff --git a/dev/assets/learning_constraint_learning.md.BkxpDY7b.lean.js b/dev/assets/learning_constraint_learning.md.MS50148Y.lean.js similarity index 72% rename from dev/assets/learning_constraint_learning.md.BkxpDY7b.lean.js rename to dev/assets/learning_constraint_learning.md.MS50148Y.lean.js index 7945025..f9a88f6 100644 --- a/dev/assets/learning_constraint_learning.md.BkxpDY7b.lean.js +++ b/dev/assets/learning_constraint_learning.md.MS50148Y.lean.js @@ -1 +1 @@ -import{_ as i,c as s,o as a,a6 as e}from"./chunks/framework.U9t3ZutP.js";const b=JSON.parse('{"title":"ConstraintLearning.jl","description":"","frontmatter":{},"headers":[],"relativePath":"learning/constraint_learning.md","filePath":"learning/constraint_learning.md","lastUpdated":null}'),t={name:"learning/constraint_learning.md"},n=e("",58),r=[n];function l(o,p,d,h,c,g){return a(),s("div",null,r)}const u=i(t,[["render",l]]);export{b as __pageData,u as default}; +import{_ as i,c as s,o as a,a7 as e}from"./chunks/framework.CBLuZwrP.js";const b=JSON.parse('{"title":"ConstraintLearning.jl","description":"","frontmatter":{},"headers":[],"relativePath":"learning/constraint_learning.md","filePath":"learning/constraint_learning.md","lastUpdated":null}'),t={name:"learning/constraint_learning.md"},n=e("",58),r=[n];function l(o,p,d,h,c,g){return a(),s("div",null,r)}const u=i(t,[["render",l]]);export{b as __pageData,u as default}; diff --git a/dev/assets/learning_intro.md.YQ8QuIJf.js b/dev/assets/learning_intro.md.C__k7ONW.js similarity index 91% rename from dev/assets/learning_intro.md.YQ8QuIJf.js rename to dev/assets/learning_intro.md.C__k7ONW.js index 2191f1c..657680f 100644 --- a/dev/assets/learning_intro.md.YQ8QuIJf.js +++ b/dev/assets/learning_intro.md.C__k7ONW.js @@ -1 +1 @@ -import{_ as a,c as n,o as e,j as t,a as r}from"./chunks/framework.U9t3ZutP.js";const b=JSON.parse('{"title":"Learning about Constraints","description":"","frontmatter":{},"headers":[],"relativePath":"learning/intro.md","filePath":"learning/intro.md","lastUpdated":null}'),o={name:"learning/intro.md"},s=t("h1",{id:"Learning-about-Constraints",tabindex:"-1"},[r("Learning about Constraints "),t("a",{class:"header-anchor",href:"#Learning-about-Constraints","aria-label":'Permalink to "Learning about Constraints {#Learning-about-Constraints}"'},"​")],-1),i=t("p",null,"About learning constraints related matters.",-1),c=[s,i];function l(d,_,u,p,g,h){return e(),n("div",null,c)}const f=a(o,[["render",l]]);export{b as __pageData,f as default}; +import{_ as a,c as n,o as e,j as t,a as r}from"./chunks/framework.CBLuZwrP.js";const b=JSON.parse('{"title":"Learning about Constraints","description":"","frontmatter":{},"headers":[],"relativePath":"learning/intro.md","filePath":"learning/intro.md","lastUpdated":null}'),o={name:"learning/intro.md"},s=t("h1",{id:"Learning-about-Constraints",tabindex:"-1"},[r("Learning about Constraints "),t("a",{class:"header-anchor",href:"#Learning-about-Constraints","aria-label":'Permalink to "Learning about Constraints {#Learning-about-Constraints}"'},"​")],-1),i=t("p",null,"About learning constraints related matters.",-1),c=[s,i];function l(d,_,u,p,g,h){return e(),n("div",null,c)}const f=a(o,[["render",l]]);export{b as __pageData,f as default}; diff --git a/dev/assets/learning_intro.md.YQ8QuIJf.lean.js b/dev/assets/learning_intro.md.C__k7ONW.lean.js similarity index 91% rename from dev/assets/learning_intro.md.YQ8QuIJf.lean.js rename to dev/assets/learning_intro.md.C__k7ONW.lean.js index 2191f1c..657680f 100644 --- a/dev/assets/learning_intro.md.YQ8QuIJf.lean.js +++ b/dev/assets/learning_intro.md.C__k7ONW.lean.js @@ -1 +1 @@ -import{_ as a,c as n,o as e,j as t,a as r}from"./chunks/framework.U9t3ZutP.js";const b=JSON.parse('{"title":"Learning about Constraints","description":"","frontmatter":{},"headers":[],"relativePath":"learning/intro.md","filePath":"learning/intro.md","lastUpdated":null}'),o={name:"learning/intro.md"},s=t("h1",{id:"Learning-about-Constraints",tabindex:"-1"},[r("Learning about Constraints "),t("a",{class:"header-anchor",href:"#Learning-about-Constraints","aria-label":'Permalink to "Learning about Constraints {#Learning-about-Constraints}"'},"​")],-1),i=t("p",null,"About learning constraints related matters.",-1),c=[s,i];function l(d,_,u,p,g,h){return e(),n("div",null,c)}const f=a(o,[["render",l]]);export{b as __pageData,f as default}; +import{_ as a,c as n,o as e,j as t,a as r}from"./chunks/framework.CBLuZwrP.js";const b=JSON.parse('{"title":"Learning about Constraints","description":"","frontmatter":{},"headers":[],"relativePath":"learning/intro.md","filePath":"learning/intro.md","lastUpdated":null}'),o={name:"learning/intro.md"},s=t("h1",{id:"Learning-about-Constraints",tabindex:"-1"},[r("Learning about Constraints "),t("a",{class:"header-anchor",href:"#Learning-about-Constraints","aria-label":'Permalink to "Learning about Constraints {#Learning-about-Constraints}"'},"​")],-1),i=t("p",null,"About learning constraints related matters.",-1),c=[s,i];function l(d,_,u,p,g,h){return e(),n("div",null,c)}const f=a(o,[["render",l]]);export{b as __pageData,f as default}; diff --git a/dev/assets/learning_layers.md.np0J_qtq.js b/dev/assets/learning_layers.md.BAJFh2-N.js similarity index 98% rename from dev/assets/learning_layers.md.np0J_qtq.js rename to dev/assets/learning_layers.md.BAJFh2-N.js index 79f6884..9dee4a6 100644 --- a/dev/assets/learning_layers.md.np0J_qtq.js +++ b/dev/assets/learning_layers.md.BAJFh2-N.js @@ -1,4 +1,4 @@ -import{_ as e,c as i,o as a,a6 as s}from"./chunks/framework.U9t3ZutP.js";const g=JSON.parse('{"title":"A layer structure for any ICN","description":"","frontmatter":{},"headers":[],"relativePath":"learning/layers.md","filePath":"learning/layers.md","lastUpdated":null}'),t={name:"learning/layers.md"},r=s(`

A layer structure for any ICN

The layer.jl file defines a Layer structure and several associated functions for manipulating and interacting with this structure in the context of an Interpretable Compositional Network (ICN).

The Layer structure is used to store a LittleDict of operations that can be selected during the learning phase of an ICN. Each layer can be exclusive, meaning only one operation can be selected at a time. This is particularly useful in the context of ICNs, which are used to learn alternative expressions for highly combinatorial functions, such as those found in Constraint-based Local Search solvers.

# CompositionalNetworks.LayerType.
julia
Layer

A structure to store a LittleDict of operations that can be selected during the learning phase of an ICN. If the layer is exclusive, only one operation can be selected at a time.

source


# CompositionalNetworks.functionsFunction.
julia
functions(layer)

Access the operations of a layer. The container is ordered.

source


# Base.lengthMethod.
julia
length(layer)

Return the number of operations in a layer.

source


# CompositionalNetworks.excluFunction.
julia
exclu(layer)

Return true if the layer has mutually exclusive operations.

source


# CompositionalNetworks.symbolFunction.
julia
symbol(layer, i)

Return the i-th symbols of the operations in a given layer.

source


# CompositionalNetworks.nbits_excluFunction.
julia
nbits_exclu(layer)

Convert the length of an exclusive layer into a number of bits.

source


# CompositionalNetworks.show_layerFunction.
julia
show_layer(layer)

Return a string that contains the elements in a layer.

source


# CompositionalNetworks.selected_sizeFunction.
julia
selected_size(layer, layer_weights)

Return the number of operations selected by layer_weights in layer.

source


# CompositionalNetworks.is_viableFunction.
julia
is_viable(layer, w)
+import{_ as e,c as i,o as a,a7 as s}from"./chunks/framework.CBLuZwrP.js";const g=JSON.parse('{"title":"A layer structure for any ICN","description":"","frontmatter":{},"headers":[],"relativePath":"learning/layers.md","filePath":"learning/layers.md","lastUpdated":null}'),t={name:"learning/layers.md"},r=s(`

A layer structure for any ICN

The layer.jl file defines a Layer structure and several associated functions for manipulating and interacting with this structure in the context of an Interpretable Compositional Network (ICN).

The Layer structure is used to store a LittleDict of operations that can be selected during the learning phase of an ICN. Each layer can be exclusive, meaning only one operation can be selected at a time. This is particularly useful in the context of ICNs, which are used to learn alternative expressions for highly combinatorial functions, such as those found in Constraint-based Local Search solvers.

# CompositionalNetworks.LayerType.
julia
Layer

A structure to store a LittleDict of operations that can be selected during the learning phase of an ICN. If the layer is exclusive, only one operation can be selected at a time.

source


# CompositionalNetworks.functionsFunction.
julia
functions(layer)

Access the operations of a layer. The container is ordered.

source


# Base.lengthMethod.
julia
length(layer)

Return the number of operations in a layer.

source


# CompositionalNetworks.excluFunction.
julia
exclu(layer)

Return true if the layer has mutually exclusive operations.

source


# CompositionalNetworks.symbolFunction.
julia
symbol(layer, i)

Return the i-th symbols of the operations in a given layer.

source


# CompositionalNetworks.nbits_excluFunction.
julia
nbits_exclu(layer)

Convert the length of an exclusive layer into a number of bits.

source


# CompositionalNetworks.show_layerFunction.
julia
show_layer(layer)

Return a string that contains the elements in a layer.

source


# CompositionalNetworks.selected_sizeFunction.
julia
selected_size(layer, layer_weights)

Return the number of operations selected by layer_weights in layer.

source


# CompositionalNetworks.is_viableFunction.
julia
is_viable(layer, w)
 is_viable(icn)
 is_viable(icn, w)

Assert if a pair of layer/icn and weights compose a viable pattern. If no weights are given with an icn, it will check the current internal value.

source


# CompositionalNetworks.generate_inclusive_operationsFunction.
julia
generate_inclusive_operations(predicate, bits)
 generate_exclusive_operation(max_op_number)

Generates the operations (weights) of a layer with inclusive/exclusive operations.

source


# CompositionalNetworks.generate_exclusive_operationFunction.
julia
generate_exclusive_operation(max_op_number)

Generates the operations (weights) of a layer with exclusive operations.

source


Missing docstring.

Missing docstring for generate_weigths. Check Documenter's build log for details.

`,26),o=[r];function l(n,p,d,c,h,u){return a(),i("div",null,o)}const k=e(t,[["render",l]]);export{g as __pageData,k as default}; diff --git a/dev/assets/learning_layers.md.np0J_qtq.lean.js b/dev/assets/learning_layers.md.BAJFh2-N.lean.js similarity index 70% rename from dev/assets/learning_layers.md.np0J_qtq.lean.js rename to dev/assets/learning_layers.md.BAJFh2-N.lean.js index e3986d3..b400293 100644 --- a/dev/assets/learning_layers.md.np0J_qtq.lean.js +++ b/dev/assets/learning_layers.md.BAJFh2-N.lean.js @@ -1 +1 @@ -import{_ as e,c as i,o as a,a6 as s}from"./chunks/framework.U9t3ZutP.js";const g=JSON.parse('{"title":"A layer structure for any ICN","description":"","frontmatter":{},"headers":[],"relativePath":"learning/layers.md","filePath":"learning/layers.md","lastUpdated":null}'),t={name:"learning/layers.md"},r=s("",26),o=[r];function l(n,p,d,c,h,u){return a(),i("div",null,o)}const k=e(t,[["render",l]]);export{g as __pageData,k as default}; +import{_ as e,c as i,o as a,a7 as s}from"./chunks/framework.CBLuZwrP.js";const g=JSON.parse('{"title":"A layer structure for any ICN","description":"","frontmatter":{},"headers":[],"relativePath":"learning/layers.md","filePath":"learning/layers.md","lastUpdated":null}'),t={name:"learning/layers.md"},r=s("",26),o=[r];function l(n,p,d,c,h,u){return a(),i("div",null,o)}const k=e(t,[["render",l]]);export{g as __pageData,k as default}; diff --git a/dev/assets/learning_qubo_constraints.md.CxSw8I5h.js b/dev/assets/learning_qubo_constraints.md.BUNl7Jcq.js similarity index 95% rename from dev/assets/learning_qubo_constraints.md.CxSw8I5h.js rename to dev/assets/learning_qubo_constraints.md.BUNl7Jcq.js index 8452312..93f528c 100644 --- a/dev/assets/learning_qubo_constraints.md.CxSw8I5h.js +++ b/dev/assets/learning_qubo_constraints.md.BUNl7Jcq.js @@ -1 +1 @@ -import{_ as a,c as t,o as s,a6 as i}from"./chunks/framework.U9t3ZutP.js";const _=JSON.parse('{"title":"Introduction to QUBOConstraints.jl","description":"","frontmatter":{},"headers":[],"relativePath":"learning/qubo_constraints.md","filePath":"learning/qubo_constraints.md","lastUpdated":null}'),n={name:"learning/qubo_constraints.md"},e=i('

Introduction to QUBOConstraints.jl

Introduction to QUBOConstraints.jl.

Basic features

# QUBOConstraints.QUBO_baseFunction.
julia
QUBO_base(n, weight = 1)

A basic QUBO matrix to ensure that binarized variables keep a valid encoding.

source


# QUBOConstraints.QUBO_linear_sumFunction.
julia
QUBO_linear_sum(n, σ)

One valid QUBO matrix given n variables and parameter σ for the linear sum constraint.

source


',7),r=[e];function o(l,d,c,p,h,u){return s(),t("div",null,r)}const g=a(n,[["render",o]]);export{_ as __pageData,g as default}; +import{_ as a,c as t,o as s,a7 as i}from"./chunks/framework.CBLuZwrP.js";const _=JSON.parse('{"title":"Introduction to QUBOConstraints.jl","description":"","frontmatter":{},"headers":[],"relativePath":"learning/qubo_constraints.md","filePath":"learning/qubo_constraints.md","lastUpdated":null}'),n={name:"learning/qubo_constraints.md"},e=i('

Introduction to QUBOConstraints.jl

Introduction to QUBOConstraints.jl.

Basic features

# QUBOConstraints.QUBO_baseFunction.
julia
QUBO_base(n, weight = 1)

A basic QUBO matrix to ensure that binarized variables keep a valid encoding.

source


# QUBOConstraints.QUBO_linear_sumFunction.
julia
QUBO_linear_sum(n, σ)

One valid QUBO matrix given n variables and parameter σ for the linear sum constraint.

source


',7),r=[e];function o(l,d,c,p,h,u){return s(),t("div",null,r)}const g=a(n,[["render",o]]);export{_ as __pageData,g as default}; diff --git a/dev/assets/learning_qubo_constraints.md.CxSw8I5h.lean.js b/dev/assets/learning_qubo_constraints.md.BUNl7Jcq.lean.js similarity index 72% rename from dev/assets/learning_qubo_constraints.md.CxSw8I5h.lean.js rename to dev/assets/learning_qubo_constraints.md.BUNl7Jcq.lean.js index a5a3556..e34d0a0 100644 --- a/dev/assets/learning_qubo_constraints.md.CxSw8I5h.lean.js +++ b/dev/assets/learning_qubo_constraints.md.BUNl7Jcq.lean.js @@ -1 +1 @@ -import{_ as a,c as t,o as s,a6 as i}from"./chunks/framework.U9t3ZutP.js";const _=JSON.parse('{"title":"Introduction to QUBOConstraints.jl","description":"","frontmatter":{},"headers":[],"relativePath":"learning/qubo_constraints.md","filePath":"learning/qubo_constraints.md","lastUpdated":null}'),n={name:"learning/qubo_constraints.md"},e=i("",7),r=[e];function o(l,d,c,p,h,u){return s(),t("div",null,r)}const g=a(n,[["render",o]]);export{_ as __pageData,g as default}; +import{_ as a,c as t,o as s,a7 as i}from"./chunks/framework.CBLuZwrP.js";const _=JSON.parse('{"title":"Introduction to QUBOConstraints.jl","description":"","frontmatter":{},"headers":[],"relativePath":"learning/qubo_constraints.md","filePath":"learning/qubo_constraints.md","lastUpdated":null}'),n={name:"learning/qubo_constraints.md"},e=i("",7),r=[e];function o(l,d,c,p,h,u){return s(),t("div",null,r)}const g=a(n,[["render",o]]);export{_ as __pageData,g as default}; diff --git a/dev/assets/learning_qubo_encoding.md.neS6B6hM.js b/dev/assets/learning_qubo_encoding.md.66faEMmG.js similarity index 97% rename from dev/assets/learning_qubo_encoding.md.neS6B6hM.js rename to dev/assets/learning_qubo_encoding.md.66faEMmG.js index 68a2ce6..4ab76a1 100644 --- a/dev/assets/learning_qubo_encoding.md.neS6B6hM.js +++ b/dev/assets/learning_qubo_encoding.md.66faEMmG.js @@ -1 +1 @@ -import{_ as i,c as a,o as n,a6 as s}from"./chunks/framework.U9t3ZutP.js";const k=JSON.parse('{"title":"Encoding for QUBO programs","description":"","frontmatter":{},"headers":[],"relativePath":"learning/qubo_encoding.md","filePath":"learning/qubo_encoding.md","lastUpdated":null}'),e={name:"learning/qubo_encoding.md"},o=s('

Encoding for QUBO programs

# QUBOConstraints.is_validFunction.
julia
is_valid(x, encoding::Symbol = :none)

Check if x has a valid format for encoding.

For instance, if encoding == :one_hot, at most one bit of x can be set to 1.

source


# QUBOConstraints.binarizeFunction.
julia
binarize(x[, domain]; binarization = :one_hot)

Binarize x following the binarization encoding. If x is a vector (instead of a number per say), domain is optional.

source


# QUBOConstraints.debinarizeFunction.
julia
debinarize(x[, domain]; binarization = :one_hot)

Transform a binary vector into a number or a set of number. If domain is not given, it will compute a default value based on binarization and x.

source


',7),t=[o];function r(d,l,c,p,h,g){return n(),a("div",null,t)}const u=i(e,[["render",r]]);export{k as __pageData,u as default}; +import{_ as i,c as a,o as n,a7 as s}from"./chunks/framework.CBLuZwrP.js";const k=JSON.parse('{"title":"Encoding for QUBO programs","description":"","frontmatter":{},"headers":[],"relativePath":"learning/qubo_encoding.md","filePath":"learning/qubo_encoding.md","lastUpdated":null}'),e={name:"learning/qubo_encoding.md"},o=s('

Encoding for QUBO programs

# QUBOConstraints.is_validFunction.
julia
is_valid(x, encoding::Symbol = :none)

Check if x has a valid format for encoding.

For instance, if encoding == :one_hot, at most one bit of x can be set to 1.

source


# QUBOConstraints.binarizeFunction.
julia
binarize(x[, domain]; binarization = :one_hot)

Binarize x following the binarization encoding. If x is a vector (instead of a number per say), domain is optional.

source


# QUBOConstraints.debinarizeFunction.
julia
debinarize(x[, domain]; binarization = :one_hot)

Transform a binary vector into a number or a set of number. If domain is not given, it will compute a default value based on binarization and x.

source


',7),t=[o];function r(d,l,c,p,h,g){return n(),a("div",null,t)}const u=i(e,[["render",r]]);export{k as __pageData,u as default}; diff --git a/dev/assets/learning_qubo_encoding.md.neS6B6hM.lean.js b/dev/assets/learning_qubo_encoding.md.66faEMmG.lean.js similarity index 71% rename from dev/assets/learning_qubo_encoding.md.neS6B6hM.lean.js rename to dev/assets/learning_qubo_encoding.md.66faEMmG.lean.js index c3c3120..6b43a22 100644 --- a/dev/assets/learning_qubo_encoding.md.neS6B6hM.lean.js +++ b/dev/assets/learning_qubo_encoding.md.66faEMmG.lean.js @@ -1 +1 @@ -import{_ as i,c as a,o as n,a6 as s}from"./chunks/framework.U9t3ZutP.js";const k=JSON.parse('{"title":"Encoding for QUBO programs","description":"","frontmatter":{},"headers":[],"relativePath":"learning/qubo_encoding.md","filePath":"learning/qubo_encoding.md","lastUpdated":null}'),e={name:"learning/qubo_encoding.md"},o=s("",7),t=[o];function r(d,l,c,p,h,g){return n(),a("div",null,t)}const u=i(e,[["render",r]]);export{k as __pageData,u as default}; +import{_ as i,c as a,o as n,a7 as s}from"./chunks/framework.CBLuZwrP.js";const k=JSON.parse('{"title":"Encoding for QUBO programs","description":"","frontmatter":{},"headers":[],"relativePath":"learning/qubo_encoding.md","filePath":"learning/qubo_encoding.md","lastUpdated":null}'),e={name:"learning/qubo_encoding.md"},o=s("",7),t=[o];function r(d,l,c,p,h,g){return n(),a("div",null,t)}const u=i(e,[["render",r]]);export{k as __pageData,u as default}; diff --git a/dev/assets/learning_qubo_learning.md.CpDvGfGe.js b/dev/assets/learning_qubo_learning.md.CmMGPPzW.js similarity index 99% rename from dev/assets/learning_qubo_learning.md.CpDvGfGe.js rename to dev/assets/learning_qubo_learning.md.CmMGPPzW.js index 03b6ca8..237835d 100644 --- a/dev/assets/learning_qubo_learning.md.CpDvGfGe.js +++ b/dev/assets/learning_qubo_learning.md.CmMGPPzW.js @@ -1,4 +1,4 @@ -import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.U9t3ZutP.js";const F=JSON.parse('{"title":"Learning QUBO matrices","description":"","frontmatter":{},"headers":[],"relativePath":"learning/qubo_learning.md","filePath":"learning/qubo_learning.md","lastUpdated":null}'),h={name:"learning/qubo_learning.md"},k=n(`

Learning QUBO matrices

Interface

# QUBOConstraints.AbstractOptimizerType.
julia
AbstractOptimizer

An abstract type (interface) used to learn QUBO matrices from constraints. Only a train method is required.

source


# QUBOConstraints.trainFunction.
julia
train(args...)

Default train method for any AbstractOptimizer.

source


Examples with various optimizers

Gradient Descent

julia
struct GradientDescentOptimizer <: QUBOConstraints.AbstractOptimizer
+import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.CBLuZwrP.js";const F=JSON.parse('{"title":"Learning QUBO matrices","description":"","frontmatter":{},"headers":[],"relativePath":"learning/qubo_learning.md","filePath":"learning/qubo_learning.md","lastUpdated":null}'),h={name:"learning/qubo_learning.md"},k=n(`

Learning QUBO matrices

Interface

# QUBOConstraints.AbstractOptimizerType.
julia
AbstractOptimizer

An abstract type (interface) used to learn QUBO matrices from constraints. Only a train method is required.

source


# QUBOConstraints.trainFunction.
julia
train(args...)

Default train method for any AbstractOptimizer.

source


Examples with various optimizers

Gradient Descent

julia
struct GradientDescentOptimizer <: QUBOConstraints.AbstractOptimizer
     binarization::Symbol
     η::Float64
     precision::Int
diff --git a/dev/assets/learning_qubo_learning.md.CpDvGfGe.lean.js b/dev/assets/learning_qubo_learning.md.CmMGPPzW.lean.js
similarity index 71%
rename from dev/assets/learning_qubo_learning.md.CpDvGfGe.lean.js
rename to dev/assets/learning_qubo_learning.md.CmMGPPzW.lean.js
index c38faf0..9d48a2b 100644
--- a/dev/assets/learning_qubo_learning.md.CpDvGfGe.lean.js
+++ b/dev/assets/learning_qubo_learning.md.CmMGPPzW.lean.js
@@ -1 +1 @@
-import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.U9t3ZutP.js";const F=JSON.parse('{"title":"Learning QUBO matrices","description":"","frontmatter":{},"headers":[],"relativePath":"learning/qubo_learning.md","filePath":"learning/qubo_learning.md","lastUpdated":null}'),h={name:"learning/qubo_learning.md"},k=n("",10),l=[k];function p(t,e,E,r,d,g){return a(),i("div",null,l)}const c=s(h,[["render",p]]);export{F as __pageData,c as default};
+import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.CBLuZwrP.js";const F=JSON.parse('{"title":"Learning QUBO matrices","description":"","frontmatter":{},"headers":[],"relativePath":"learning/qubo_learning.md","filePath":"learning/qubo_learning.md","lastUpdated":null}'),h={name:"learning/qubo_learning.md"},k=n("",10),l=[k];function p(t,e,E,r,d,g){return a(),i("div",null,l)}const c=s(h,[["render",p]]);export{F as __pageData,c as default};
diff --git a/dev/assets/learning_transformation.md.BSeHO4Rt.js b/dev/assets/learning_transformation.md.C9j4_440.js
similarity index 99%
rename from dev/assets/learning_transformation.md.BSeHO4Rt.js
rename to dev/assets/learning_transformation.md.C9j4_440.js
index 0dc0e8a..40845e6 100644
--- a/dev/assets/learning_transformation.md.BSeHO4Rt.js
+++ b/dev/assets/learning_transformation.md.C9j4_440.js
@@ -1,4 +1,4 @@
-import{_ as s,c as i,o as a,a6 as t}from"./chunks/framework.U9t3ZutP.js";const g=JSON.parse('{"title":"Transformations Layer","description":"","frontmatter":{},"headers":[],"relativePath":"learning/transformation.md","filePath":"learning/transformation.md","lastUpdated":null}'),e={name:"learning/transformation.md"},n=t(`

Transformations Layer

Some text to describe the transformation layer within usual ICNs.

The implementation of the transformation relies heavily on the use of the lazy function (make a ref, open an issue to make @lazy macro in front of each transformation).

List of transformations

List the possible parameters and how it affects the transformations.

Non-parametric

# CompositionalNetworks.tr_identityFunction.
julia
tr_identity(i, x)
+import{_ as s,c as i,o as a,a7 as t}from"./chunks/framework.CBLuZwrP.js";const g=JSON.parse('{"title":"Transformations Layer","description":"","frontmatter":{},"headers":[],"relativePath":"learning/transformation.md","filePath":"learning/transformation.md","lastUpdated":null}'),e={name:"learning/transformation.md"},n=t(`

Transformations Layer

Some text to describe the transformation layer within usual ICNs.

The implementation of the transformation relies heavily on the use of the lazy function (make a ref, open an issue to make @lazy macro in front of each transformation).

List of transformations

List the possible parameters and how it affects the transformations.

Non-parametric

# CompositionalNetworks.tr_identityFunction.
julia
tr_identity(i, x)
 tr_identity(x)
 tr_identity(x, X::AbstractVector)

Identity function. Already defined in Julia as identity, specialized for vectors. When X is provided, the result is computed without allocations.

source


# CompositionalNetworks.tr_count_eqFunction.
julia
tr_count_eq(i, x)
 tr_count_eq(x)
diff --git a/dev/assets/learning_transformation.md.BSeHO4Rt.lean.js b/dev/assets/learning_transformation.md.C9j4_440.lean.js
similarity index 71%
rename from dev/assets/learning_transformation.md.BSeHO4Rt.lean.js
rename to dev/assets/learning_transformation.md.C9j4_440.lean.js
index c241714..e9854c4 100644
--- a/dev/assets/learning_transformation.md.BSeHO4Rt.lean.js
+++ b/dev/assets/learning_transformation.md.C9j4_440.lean.js
@@ -1 +1 @@
-import{_ as s,c as i,o as a,a6 as t}from"./chunks/framework.U9t3ZutP.js";const g=JSON.parse('{"title":"Transformations Layer","description":"","frontmatter":{},"headers":[],"relativePath":"learning/transformation.md","filePath":"learning/transformation.md","lastUpdated":null}'),e={name:"learning/transformation.md"},n=t("",38),o=[n];function r(l,p,d,h,c,k){return a(),i("div",null,o)}const m=s(e,[["render",r]]);export{g as __pageData,m as default};
+import{_ as s,c as i,o as a,a7 as t}from"./chunks/framework.CBLuZwrP.js";const g=JSON.parse('{"title":"Transformations Layer","description":"","frontmatter":{},"headers":[],"relativePath":"learning/transformation.md","filePath":"learning/transformation.md","lastUpdated":null}'),e={name:"learning/transformation.md"},n=t("",38),o=[n];function r(l,p,d,h,c,k){return a(),i("div",null,o)}const m=s(e,[["render",r]]);export{g as __pageData,m as default};
diff --git a/dev/assets/meta_meta_strategist.md.CQlluWS_.js b/dev/assets/meta_meta_strategist.md.DJjRGHWo.js
similarity index 90%
rename from dev/assets/meta_meta_strategist.md.CQlluWS_.js
rename to dev/assets/meta_meta_strategist.md.DJjRGHWo.js
index 362dfb6..947e35d 100644
--- a/dev/assets/meta_meta_strategist.md.CQlluWS_.js
+++ b/dev/assets/meta_meta_strategist.md.DJjRGHWo.js
@@ -1 +1 @@
-import{_ as a,c as s,o as r,j as t,a as e}from"./chunks/framework.U9t3ZutP.js";const u=JSON.parse('{"title":"MetaStrategist.jl","description":"","frontmatter":{},"headers":[],"relativePath":"meta/meta_strategist.md","filePath":"meta/meta_strategist.md","lastUpdated":null}'),o={name:"meta/meta_strategist.md"},i=t("h1",{id:"metastrategist-jl",tabindex:"-1"},[e("MetaStrategist.jl "),t("a",{class:"header-anchor",href:"#metastrategist-jl","aria-label":'Permalink to "MetaStrategist.jl"'},"​")],-1),n=t("p",null,[e("Documentation for "),t("code",null,"MetaStrategist.jl"),e(".")],-1),l=[i,n];function c(d,_,m,p,g,h){return r(),s("div",null,l)}const j=a(o,[["render",c]]);export{u as __pageData,j as default};
+import{_ as a,c as s,o as r,j as t,a as e}from"./chunks/framework.CBLuZwrP.js";const u=JSON.parse('{"title":"MetaStrategist.jl","description":"","frontmatter":{},"headers":[],"relativePath":"meta/meta_strategist.md","filePath":"meta/meta_strategist.md","lastUpdated":null}'),o={name:"meta/meta_strategist.md"},i=t("h1",{id:"metastrategist-jl",tabindex:"-1"},[e("MetaStrategist.jl "),t("a",{class:"header-anchor",href:"#metastrategist-jl","aria-label":'Permalink to "MetaStrategist.jl"'},"​")],-1),n=t("p",null,[e("Documentation for "),t("code",null,"MetaStrategist.jl"),e(".")],-1),l=[i,n];function c(d,_,m,p,g,h){return r(),s("div",null,l)}const j=a(o,[["render",c]]);export{u as __pageData,j as default};
diff --git a/dev/assets/meta_meta_strategist.md.CQlluWS_.lean.js b/dev/assets/meta_meta_strategist.md.DJjRGHWo.lean.js
similarity index 90%
rename from dev/assets/meta_meta_strategist.md.CQlluWS_.lean.js
rename to dev/assets/meta_meta_strategist.md.DJjRGHWo.lean.js
index 362dfb6..947e35d 100644
--- a/dev/assets/meta_meta_strategist.md.CQlluWS_.lean.js
+++ b/dev/assets/meta_meta_strategist.md.DJjRGHWo.lean.js
@@ -1 +1 @@
-import{_ as a,c as s,o as r,j as t,a as e}from"./chunks/framework.U9t3ZutP.js";const u=JSON.parse('{"title":"MetaStrategist.jl","description":"","frontmatter":{},"headers":[],"relativePath":"meta/meta_strategist.md","filePath":"meta/meta_strategist.md","lastUpdated":null}'),o={name:"meta/meta_strategist.md"},i=t("h1",{id:"metastrategist-jl",tabindex:"-1"},[e("MetaStrategist.jl "),t("a",{class:"header-anchor",href:"#metastrategist-jl","aria-label":'Permalink to "MetaStrategist.jl"'},"​")],-1),n=t("p",null,[e("Documentation for "),t("code",null,"MetaStrategist.jl"),e(".")],-1),l=[i,n];function c(d,_,m,p,g,h){return r(),s("div",null,l)}const j=a(o,[["render",c]]);export{u as __pageData,j as default};
+import{_ as a,c as s,o as r,j as t,a as e}from"./chunks/framework.CBLuZwrP.js";const u=JSON.parse('{"title":"MetaStrategist.jl","description":"","frontmatter":{},"headers":[],"relativePath":"meta/meta_strategist.md","filePath":"meta/meta_strategist.md","lastUpdated":null}'),o={name:"meta/meta_strategist.md"},i=t("h1",{id:"metastrategist-jl",tabindex:"-1"},[e("MetaStrategist.jl "),t("a",{class:"header-anchor",href:"#metastrategist-jl","aria-label":'Permalink to "MetaStrategist.jl"'},"​")],-1),n=t("p",null,[e("Documentation for "),t("code",null,"MetaStrategist.jl"),e(".")],-1),l=[i,n];function c(d,_,m,p,g,h){return r(),s("div",null,l)}const j=a(o,[["render",c]]);export{u as __pageData,j as default};
diff --git a/dev/assets/perf_api.md.DOBS8sOk.js b/dev/assets/perf_api.md.Ht9J10Ys.js
similarity index 97%
rename from dev/assets/perf_api.md.DOBS8sOk.js
rename to dev/assets/perf_api.md.Ht9J10Ys.js
index 56716bb..ca5b0aa 100644
--- a/dev/assets/perf_api.md.DOBS8sOk.js
+++ b/dev/assets/perf_api.md.Ht9J10Ys.js
@@ -1,4 +1,4 @@
-import{_ as e,c as s,o as r,a6 as i}from"./chunks/framework.U9t3ZutP.js";const b=JSON.parse('{"title":"API","description":"","frontmatter":{},"headers":[],"relativePath":"perf/api.md","filePath":"perf/api.md","lastUpdated":null}'),a={name:"perf/api.md"},t=i(`

API

Here's the API for PerfChecker.jl

# PerfChecker.arrange_breakingMethod.

Outputs the last breaking or next breaking version.

source


# PerfChecker.arrange_majorMethod.

Outputs the earlier or next major version.

source


# PerfChecker.arrange_patchesMethod.

Outputs the last patch or first patch of a version.

source


# PerfChecker.get_pkg_versionsFunction.

Finds all versions of a package in all the installed registries and returns it as a vector.

Example:

julia
julia> get_pkg_versions("ConstraintLearning")
+import{_ as e,c as s,o as r,a7 as i}from"./chunks/framework.CBLuZwrP.js";const b=JSON.parse('{"title":"API","description":"","frontmatter":{},"headers":[],"relativePath":"perf/api.md","filePath":"perf/api.md","lastUpdated":null}'),a={name:"perf/api.md"},t=i(`

API

Here's the API for PerfChecker.jl

# PerfChecker.arrange_breakingMethod.

Outputs the last breaking or next breaking version.

source


# PerfChecker.arrange_majorMethod.

Outputs the earlier or next major version.

source


# PerfChecker.arrange_patchesMethod.

Outputs the last patch or first patch of a version.

source


# PerfChecker.get_pkg_versionsFunction.

Finds all versions of a package in all the installed registries and returns it as a vector.

Example:

julia
julia> get_pkg_versions("ConstraintLearning")
 7-element Vector{VersionNumber}:
  v"0.1.4"
  v"0.1.5"
diff --git a/dev/assets/perf_api.md.DOBS8sOk.lean.js b/dev/assets/perf_api.md.Ht9J10Ys.lean.js
similarity index 67%
rename from dev/assets/perf_api.md.DOBS8sOk.lean.js
rename to dev/assets/perf_api.md.Ht9J10Ys.lean.js
index b34825d..533fc1e 100644
--- a/dev/assets/perf_api.md.DOBS8sOk.lean.js
+++ b/dev/assets/perf_api.md.Ht9J10Ys.lean.js
@@ -1 +1 @@
-import{_ as e,c as s,o as r,a6 as i}from"./chunks/framework.U9t3ZutP.js";const b=JSON.parse('{"title":"API","description":"","frontmatter":{},"headers":[],"relativePath":"perf/api.md","filePath":"perf/api.md","lastUpdated":null}'),a={name:"perf/api.md"},t=i("",10),n=[t];function l(o,p,h,k,d,c){return r(),s("div",null,n)}const g=e(a,[["render",l]]);export{b as __pageData,g as default};
+import{_ as e,c as s,o as r,a7 as i}from"./chunks/framework.CBLuZwrP.js";const b=JSON.parse('{"title":"API","description":"","frontmatter":{},"headers":[],"relativePath":"perf/api.md","filePath":"perf/api.md","lastUpdated":null}'),a={name:"perf/api.md"},t=i("",10),n=[t];function l(o,p,h,k,d,c){return r(),s("div",null,n)}const g=e(a,[["render",l]]);export{b as __pageData,g as default};
diff --git a/dev/assets/perf_benchmark_ext.md.CRZe3lps.js b/dev/assets/perf_benchmark_ext.md.BLiYg-fz.js
similarity index 98%
rename from dev/assets/perf_benchmark_ext.md.CRZe3lps.js
rename to dev/assets/perf_benchmark_ext.md.BLiYg-fz.js
index 52f2de1..78222f1 100644
--- a/dev/assets/perf_benchmark_ext.md.CRZe3lps.js
+++ b/dev/assets/perf_benchmark_ext.md.BLiYg-fz.js
@@ -1,4 +1,4 @@
-import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.U9t3ZutP.js";const c=JSON.parse('{"title":"BenchmarkTools Extension","description":"","frontmatter":{},"headers":[],"relativePath":"perf/benchmark_ext.md","filePath":"perf/benchmark_ext.md","lastUpdated":null}'),h={name:"perf/benchmark_ext.md"},t=n(`

BenchmarkTools Extension

A benchmarking extension, based on BenchmarkTools.jl, has been interfaced with PerfChecker.jl. This section will provide some usage examples, documentation, and links to related notebooks.

Usage

Like all other extensions, BenchmarkTools extension can be used in the following way:

julia
julia> using BenchmarkTools, PerfChecker
+import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.CBLuZwrP.js";const c=JSON.parse('{"title":"BenchmarkTools Extension","description":"","frontmatter":{},"headers":[],"relativePath":"perf/benchmark_ext.md","filePath":"perf/benchmark_ext.md","lastUpdated":null}'),h={name:"perf/benchmark_ext.md"},t=n(`

BenchmarkTools Extension

A benchmarking extension, based on BenchmarkTools.jl, has been interfaced with PerfChecker.jl. This section will provide some usage examples, documentation, and links to related notebooks.

Usage

Like all other extensions, BenchmarkTools extension can be used in the following way:

julia
julia> using BenchmarkTools, PerfChecker
 
 julia> @check :benchmark Dict(:option1 => "value1", :option2 => "value2", :PATH => @__DIR__) begin
   # the prelimnary code goes here
diff --git a/dev/assets/perf_benchmark_ext.md.CRZe3lps.lean.js b/dev/assets/perf_benchmark_ext.md.BLiYg-fz.lean.js
similarity index 70%
rename from dev/assets/perf_benchmark_ext.md.CRZe3lps.lean.js
rename to dev/assets/perf_benchmark_ext.md.BLiYg-fz.lean.js
index 28d8c1e..dd91050 100644
--- a/dev/assets/perf_benchmark_ext.md.CRZe3lps.lean.js
+++ b/dev/assets/perf_benchmark_ext.md.BLiYg-fz.lean.js
@@ -1 +1 @@
-import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.U9t3ZutP.js";const c=JSON.parse('{"title":"BenchmarkTools Extension","description":"","frontmatter":{},"headers":[],"relativePath":"perf/benchmark_ext.md","filePath":"perf/benchmark_ext.md","lastUpdated":null}'),h={name:"perf/benchmark_ext.md"},t=n("",8),k=[t];function e(l,p,r,E,d,o){return a(),i("div",null,k)}const y=s(h,[["render",e]]);export{c as __pageData,y as default};
+import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.CBLuZwrP.js";const c=JSON.parse('{"title":"BenchmarkTools Extension","description":"","frontmatter":{},"headers":[],"relativePath":"perf/benchmark_ext.md","filePath":"perf/benchmark_ext.md","lastUpdated":null}'),h={name:"perf/benchmark_ext.md"},t=n("",8),k=[t];function e(l,p,r,E,d,o){return a(),i("div",null,k)}const y=s(h,[["render",e]]);export{c as __pageData,y as default};
diff --git a/dev/assets/perf_chairmarks_ext.md.BPX823mm.js b/dev/assets/perf_chairmarks_ext.md.Bd_nCI9c.js
similarity index 97%
rename from dev/assets/perf_chairmarks_ext.md.BPX823mm.js
rename to dev/assets/perf_chairmarks_ext.md.Bd_nCI9c.js
index 99dc9ed..9976824 100644
--- a/dev/assets/perf_chairmarks_ext.md.BPX823mm.js
+++ b/dev/assets/perf_chairmarks_ext.md.Bd_nCI9c.js
@@ -1,4 +1,4 @@
-import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.U9t3ZutP.js";const F=JSON.parse('{"title":"Chairmarks Extension","description":"","frontmatter":{},"headers":[],"relativePath":"perf/chairmarks_ext.md","filePath":"perf/chairmarks_ext.md","lastUpdated":null}'),t={name:"perf/chairmarks_ext.md"},e=n(`

Chairmarks Extension

A benchmarking extension, based on Chairmarks.jl, has been interfaced with PerfChecker.jl. This section will provide some usage examples, documentation, and links to related notebooks.

Usage

Like all other extensions, BenchmarkTools extension can be used in the following way:

julia
julia> using Chairmarks, PerfChecker
+import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.CBLuZwrP.js";const F=JSON.parse('{"title":"Chairmarks Extension","description":"","frontmatter":{},"headers":[],"relativePath":"perf/chairmarks_ext.md","filePath":"perf/chairmarks_ext.md","lastUpdated":null}'),t={name:"perf/chairmarks_ext.md"},e=n(`

Chairmarks Extension

A benchmarking extension, based on Chairmarks.jl, has been interfaced with PerfChecker.jl. This section will provide some usage examples, documentation, and links to related notebooks.

Usage

Like all other extensions, BenchmarkTools extension can be used in the following way:

julia
julia> using Chairmarks, PerfChecker
 
 julia> @check :chairmark Dict(:option1 => "value1", :option2 => "value2", :PATH => @__DIR__) begin
   # the prelimnary code goes here
diff --git a/dev/assets/perf_chairmarks_ext.md.BPX823mm.lean.js b/dev/assets/perf_chairmarks_ext.md.Bd_nCI9c.lean.js
similarity index 70%
rename from dev/assets/perf_chairmarks_ext.md.BPX823mm.lean.js
rename to dev/assets/perf_chairmarks_ext.md.Bd_nCI9c.lean.js
index 0ff0e3a..db7c87e 100644
--- a/dev/assets/perf_chairmarks_ext.md.BPX823mm.lean.js
+++ b/dev/assets/perf_chairmarks_ext.md.Bd_nCI9c.lean.js
@@ -1 +1 @@
-import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.U9t3ZutP.js";const F=JSON.parse('{"title":"Chairmarks Extension","description":"","frontmatter":{},"headers":[],"relativePath":"perf/chairmarks_ext.md","filePath":"perf/chairmarks_ext.md","lastUpdated":null}'),t={name:"perf/chairmarks_ext.md"},e=n("",8),h=[e];function l(k,p,r,d,o,g){return a(),i("div",null,h)}const y=s(t,[["render",l]]);export{F as __pageData,y as default};
+import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.CBLuZwrP.js";const F=JSON.parse('{"title":"Chairmarks Extension","description":"","frontmatter":{},"headers":[],"relativePath":"perf/chairmarks_ext.md","filePath":"perf/chairmarks_ext.md","lastUpdated":null}'),t={name:"perf/chairmarks_ext.md"},e=n("",8),h=[e];function l(k,p,r,d,o,g){return a(),i("div",null,h)}const y=s(t,[["render",l]]);export{F as __pageData,y as default};
diff --git a/dev/assets/perf_perf_checker.md.CnWntdNe.js b/dev/assets/perf_perf_checker.md.oe0HNodG.js
similarity index 97%
rename from dev/assets/perf_perf_checker.md.CnWntdNe.js
rename to dev/assets/perf_perf_checker.md.oe0HNodG.js
index 50af101..b03c6dd 100644
--- a/dev/assets/perf_perf_checker.md.CnWntdNe.js
+++ b/dev/assets/perf_perf_checker.md.oe0HNodG.js
@@ -1,4 +1,4 @@
-import{_ as e,c as s,o as i,a6 as a}from"./chunks/framework.U9t3ZutP.js";const f=JSON.parse('{"title":"PerfChecker.jl","description":"","frontmatter":{},"headers":[],"relativePath":"perf/perf_checker.md","filePath":"perf/perf_checker.md","lastUpdated":null}'),t={name:"perf/perf_checker.md"},n=a(`

PerfChecker.jl

PerfChecker.jl is a package designed for package authors to easily performance test their packages. To achieve that, it provides the follwing features:

  • The main macro @check, which provides an easy-to-use interface over various interfaces, configurable for various backends via a dictionary.

  • (WIP) A CI for reproducible performance testing.

  • Visualization of different metrics from @check using Makie.jl

Usage

The primary usage of PerfChecker.jl looks like this:

julia
  using PerfChecker
+import{_ as e,c as s,o as i,a7 as a}from"./chunks/framework.CBLuZwrP.js";const f=JSON.parse('{"title":"PerfChecker.jl","description":"","frontmatter":{},"headers":[],"relativePath":"perf/perf_checker.md","filePath":"perf/perf_checker.md","lastUpdated":null}'),t={name:"perf/perf_checker.md"},n=a(`

PerfChecker.jl

PerfChecker.jl is a package designed for package authors to easily performance test their packages. To achieve that, it provides the follwing features:

  • The main macro @check, which provides an easy-to-use interface over various interfaces, configurable for various backends via a dictionary.

  • (WIP) A CI for reproducible performance testing.

  • Visualization of different metrics from @check using Makie.jl

Usage

The primary usage of PerfChecker.jl looks like this:

julia
  using PerfChecker
   # optional using custom backend like BenchmarkTools, Chairmark etc 
   config = Dict(:option1 => "value1", :option2 => :value2)
   
diff --git a/dev/assets/perf_perf_checker.md.CnWntdNe.lean.js b/dev/assets/perf_perf_checker.md.oe0HNodG.lean.js
similarity index 69%
rename from dev/assets/perf_perf_checker.md.CnWntdNe.lean.js
rename to dev/assets/perf_perf_checker.md.oe0HNodG.lean.js
index 3e2e58a..155536b 100644
--- a/dev/assets/perf_perf_checker.md.CnWntdNe.lean.js
+++ b/dev/assets/perf_perf_checker.md.oe0HNodG.lean.js
@@ -1 +1 @@
-import{_ as e,c as s,o as i,a6 as a}from"./chunks/framework.U9t3ZutP.js";const f=JSON.parse('{"title":"PerfChecker.jl","description":"","frontmatter":{},"headers":[],"relativePath":"perf/perf_checker.md","filePath":"perf/perf_checker.md","lastUpdated":null}'),t={name:"perf/perf_checker.md"},n=a("",10),o=[n];function l(p,r,h,c,d,k){return i(),s("div",null,o)}const u=e(t,[["render",l]]);export{f as __pageData,u as default};
+import{_ as e,c as s,o as i,a7 as a}from"./chunks/framework.CBLuZwrP.js";const f=JSON.parse('{"title":"PerfChecker.jl","description":"","frontmatter":{},"headers":[],"relativePath":"perf/perf_checker.md","filePath":"perf/perf_checker.md","lastUpdated":null}'),t={name:"perf/perf_checker.md"},n=a("",10),o=[n];function l(p,r,h,c,d,k){return i(),s("div",null,o)}const u=e(t,[["render",l]]);export{f as __pageData,u as default};
diff --git a/dev/assets/perf_perf_interface.md.CnCj4yQL.js b/dev/assets/perf_perf_interface.md.DUnQNlE7.js
similarity index 99%
rename from dev/assets/perf_perf_interface.md.CnCj4yQL.js
rename to dev/assets/perf_perf_interface.md.DUnQNlE7.js
index 480a505..6fc6e6f 100644
--- a/dev/assets/perf_perf_interface.md.CnCj4yQL.js
+++ b/dev/assets/perf_perf_interface.md.DUnQNlE7.js
@@ -1,4 +1,4 @@
-import{_ as s,c as i,o as a,a6 as e}from"./chunks/framework.U9t3ZutP.js";const c=JSON.parse('{"title":"Extending PerfChecker","description":"","frontmatter":{},"headers":[],"relativePath":"perf/perf_interface.md","filePath":"perf/perf_interface.md","lastUpdated":null}'),t={name:"perf/perf_interface.md"},h=e(`

Extending PerfChecker

PerfChecker was build as an easy to extend interface. A good reference example for this is the Chairmarks extension.

Extending PerfChecker works via PkgExtensions feature in Julia. There are 6 essential functions that need to be extended inside the Pkg extension. Each extension has a keyword symbol for it, which users can input to use the extension.

The Default Options

Method to be overloaded: PerfChecker.default_options(::Val{:myperfextension})::Dict

PerfChecker works via a config dictionary. Users can populate this dictionary with options and provide it to the main check macro to customize the performance testing to their liking.

For Chairmarks.jl, it looks like this:

julia
function PerfChecker.default_options(::Val{:chairmark})
+import{_ as s,c as i,o as a,a7 as e}from"./chunks/framework.CBLuZwrP.js";const c=JSON.parse('{"title":"Extending PerfChecker","description":"","frontmatter":{},"headers":[],"relativePath":"perf/perf_interface.md","filePath":"perf/perf_interface.md","lastUpdated":null}'),t={name:"perf/perf_interface.md"},h=e(`

Extending PerfChecker

PerfChecker was build as an easy to extend interface. A good reference example for this is the Chairmarks extension.

Extending PerfChecker works via PkgExtensions feature in Julia. There are 6 essential functions that need to be extended inside the Pkg extension. Each extension has a keyword symbol for it, which users can input to use the extension.

The Default Options

Method to be overloaded: PerfChecker.default_options(::Val{:myperfextension})::Dict

PerfChecker works via a config dictionary. Users can populate this dictionary with options and provide it to the main check macro to customize the performance testing to their liking.

For Chairmarks.jl, it looks like this:

julia
function PerfChecker.default_options(::Val{:chairmark})
     return Dict(
         :threads => 1,
         :track => "none",
diff --git a/dev/assets/perf_perf_interface.md.CnCj4yQL.lean.js b/dev/assets/perf_perf_interface.md.DUnQNlE7.lean.js
similarity index 70%
rename from dev/assets/perf_perf_interface.md.CnCj4yQL.lean.js
rename to dev/assets/perf_perf_interface.md.DUnQNlE7.lean.js
index 2554fa8..78a65bb 100644
--- a/dev/assets/perf_perf_interface.md.CnCj4yQL.lean.js
+++ b/dev/assets/perf_perf_interface.md.DUnQNlE7.lean.js
@@ -1 +1 @@
-import{_ as s,c as i,o as a,a6 as e}from"./chunks/framework.U9t3ZutP.js";const c=JSON.parse('{"title":"Extending PerfChecker","description":"","frontmatter":{},"headers":[],"relativePath":"perf/perf_interface.md","filePath":"perf/perf_interface.md","lastUpdated":null}'),t={name:"perf/perf_interface.md"},h=e("",36),n=[h];function k(l,p,r,d,o,E){return a(),i("div",null,n)}const y=s(t,[["render",k]]);export{c as __pageData,y as default};
+import{_ as s,c as i,o as a,a7 as e}from"./chunks/framework.CBLuZwrP.js";const c=JSON.parse('{"title":"Extending PerfChecker","description":"","frontmatter":{},"headers":[],"relativePath":"perf/perf_interface.md","filePath":"perf/perf_interface.md","lastUpdated":null}'),t={name:"perf/perf_interface.md"},h=e("",36),n=[h];function k(l,p,r,d,o,E){return a(),i("div",null,n)}const y=s(t,[["render",k]]);export{c as __pageData,y as default};
diff --git a/dev/assets/perf_tutorial.md.B0uPS8Oa.js b/dev/assets/perf_tutorial.md.CibCRJ0g.js
similarity index 99%
rename from dev/assets/perf_tutorial.md.B0uPS8Oa.js
rename to dev/assets/perf_tutorial.md.CibCRJ0g.js
index 90ffdce..801c387 100644
--- a/dev/assets/perf_tutorial.md.B0uPS8Oa.js
+++ b/dev/assets/perf_tutorial.md.CibCRJ0g.js
@@ -1,4 +1,4 @@
-import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.U9t3ZutP.js";const y=JSON.parse('{"title":"Tutorial","description":"","frontmatter":{},"headers":[],"relativePath":"perf/tutorial.md","filePath":"perf/tutorial.md","lastUpdated":null}'),h={name:"perf/tutorial.md"},t=n(`

Tutorial

Taken from PerfChecker.jl examples, this is a guide for performance testing of PatterFolds.jl package using Chairmarks.jl

Using PerfChecker.jl requires an environment with the dependencies present in it.

The actual script looks like this:

julia
using PerfChecker, Chairmarks, CairoMakie
+import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.CBLuZwrP.js";const y=JSON.parse('{"title":"Tutorial","description":"","frontmatter":{},"headers":[],"relativePath":"perf/tutorial.md","filePath":"perf/tutorial.md","lastUpdated":null}'),h={name:"perf/tutorial.md"},t=n(`

Tutorial

Taken from PerfChecker.jl examples, this is a guide for performance testing of PatterFolds.jl package using Chairmarks.jl

Using PerfChecker.jl requires an environment with the dependencies present in it.

The actual script looks like this:

julia
using PerfChecker, Chairmarks, CairoMakie
 
 d = Dict(:path => @__DIR__, :evals => 10, :samples => 1000,
     :seconds => 100, :tags => [:patterns, :intervals],
diff --git a/dev/assets/perf_tutorial.md.B0uPS8Oa.lean.js b/dev/assets/perf_tutorial.md.CibCRJ0g.lean.js
similarity index 68%
rename from dev/assets/perf_tutorial.md.B0uPS8Oa.lean.js
rename to dev/assets/perf_tutorial.md.CibCRJ0g.lean.js
index 17aeefa..ffe643c 100644
--- a/dev/assets/perf_tutorial.md.B0uPS8Oa.lean.js
+++ b/dev/assets/perf_tutorial.md.CibCRJ0g.lean.js
@@ -1 +1 @@
-import{_ as s,c as i,o as a,a6 as n}from"./chunks/framework.U9t3ZutP.js";const y=JSON.parse('{"title":"Tutorial","description":"","frontmatter":{},"headers":[],"relativePath":"perf/tutorial.md","filePath":"perf/tutorial.md","lastUpdated":null}'),h={name:"perf/tutorial.md"},t=n("",13),k=[t];function l(p,e,r,E,d,g){return a(),i("div",null,k)}const o=s(h,[["render",l]]);export{y as __pageData,o as default};
+import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.CBLuZwrP.js";const y=JSON.parse('{"title":"Tutorial","description":"","frontmatter":{},"headers":[],"relativePath":"perf/tutorial.md","filePath":"perf/tutorial.md","lastUpdated":null}'),h={name:"perf/tutorial.md"},t=n("",13),k=[t];function l(p,e,r,E,d,g){return a(),i("div",null,k)}const o=s(h,[["render",l]]);export{y as __pageData,o as default};
diff --git a/dev/assets/public_api.md.DucX-f_i.js b/dev/assets/public_api.md.DKaSs20b.js
similarity index 99%
rename from dev/assets/public_api.md.DucX-f_i.js
rename to dev/assets/public_api.md.DKaSs20b.js
index 028a843..cec840b 100644
--- a/dev/assets/public_api.md.DucX-f_i.js
+++ b/dev/assets/public_api.md.DKaSs20b.js
@@ -1,4 +1,4 @@
-import{_ as i,c as s,o as a,a6 as t}from"./chunks/framework.U9t3ZutP.js";const b=JSON.parse('{"title":"Public API","description":"","frontmatter":{},"headers":[],"relativePath":"public_api.md","filePath":"public_api.md","lastUpdated":null}'),e={name:"public_api.md"},n=t(`

Public API

# ConstraintCommons.AutomatonType.
julia
Automaton{S, T, F <: Union{S, Vector{S}, Set{S}}} <: AbstractAutomaton

A minimal implementation of a deterministic automaton structure.

source


# ConstraintCommons.MDDType.
julia
MDD{S,T} <: AbstractMultivaluedDecisionDiagram

A minimal implementation of a multivalued decision diagram structure.

source


# ConstraintCommons.acceptMethod.
julia
accept(a::Union{Automaton, MDD}, w)

Return true if a accepts the word w and false otherwise.

source


# ConstraintCommons.consinMethod.
julia
consin(::Any, ::Nothing)

Extends Base.in (or ) when the set is nothing. Returns false.

source


# ConstraintCommons.consisemptyMethod.
julia
consisempty(::Nothing)

Extends Base.isempty when the set is nothing. Returns true.

source


# ConstraintCommons.extract_parametersMethod.
julia
extract_parameters(m::Union{Method, Function}; parameters)

Extracts the intersection between the kargs of m and parameters (defaults to USUAL_CONSTRAINT_PARAMETERS).

source


# ConstraintCommons.incsert!Function.
julia
incsert!(d::Union{AbstractDict, AbstractDictionary}, ind, val = 1)

Increase or insert a counter in a dictionary-based collection. The counter insertion defaults to val = 1.

source


# ConstraintCommons.oversampleMethod.
julia
oversample(X, f)

Oversample elements of X until the boolean function f has as many true and false configurations.

source


# ConstraintCommons.symconFunction.
julia
symcon(s1::Symbol, s2::Symbol, connector::AbstractString="_")

Extends * to Symbols multiplication by connecting the symbols by an _.

source


# ConstraintCommons.δ_extremaMethod.
julia
δ_extrema(X...)

Compute both the difference between the maximum and the minimum of over all the collections of X.

source


# ConstraintDomains.AbstractDomainType.
julia
AbstractDomain

An abstract super type for any domain type. A domain type D <: AbstractDomain must implement the following methods to properly interface AbstractDomain.

  • Base.∈(val, ::D)

  • Base.rand(::D)

  • Base.length(::D) that is the number of elements in a discrete domain, and the distance between bounds or similar for a continuous domain

Additionally, if the domain is used in a dynamic context, it can extend

  • add!(::D, args)

  • delete!(::D, args)

where args depends on D's structure

source


# ConstraintDomains.ContinuousDomainType.
julia
ContinuousDomain{T <: Real} <: AbstractDomain

An abstract supertype for all continuous domains.

source


# ConstraintDomains.DiscreteDomainType.
julia
DiscreteDomain{T <: Number} <: AbstractDomain

An abstract supertype for discrete domains (set, range).

source


# ConstraintDomains.ExploreSettingsMethod.
julia
ExploreSettings(
+import{_ as i,c as s,o as a,a7 as t}from"./chunks/framework.CBLuZwrP.js";const b=JSON.parse('{"title":"Public API","description":"","frontmatter":{},"headers":[],"relativePath":"public_api.md","filePath":"public_api.md","lastUpdated":null}'),e={name:"public_api.md"},n=t(`

Public API

# ConstraintCommons.AutomatonType.
julia
Automaton{S, T, F <: Union{S, Vector{S}, Set{S}}} <: AbstractAutomaton

A minimal implementation of a deterministic automaton structure.

source


# ConstraintCommons.MDDType.
julia
MDD{S,T} <: AbstractMultivaluedDecisionDiagram

A minimal implementation of a multivalued decision diagram structure.

source


# ConstraintCommons.acceptMethod.
julia
accept(a::Union{Automaton, MDD}, w)

Return true if a accepts the word w and false otherwise.

source


# ConstraintCommons.consinMethod.
julia
consin(::Any, ::Nothing)

Extends Base.in (or ) when the set is nothing. Returns false.

source


# ConstraintCommons.consisemptyMethod.
julia
consisempty(::Nothing)

Extends Base.isempty when the set is nothing. Returns true.

source


# ConstraintCommons.extract_parametersMethod.
julia
extract_parameters(m::Union{Method, Function}; parameters)

Extracts the intersection between the kargs of m and parameters (defaults to USUAL_CONSTRAINT_PARAMETERS).

source


# ConstraintCommons.incsert!Function.
julia
incsert!(d::Union{AbstractDict, AbstractDictionary}, ind, val = 1)

Increase or insert a counter in a dictionary-based collection. The counter insertion defaults to val = 1.

source


# ConstraintCommons.oversampleMethod.
julia
oversample(X, f)

Oversample elements of X until the boolean function f has as many true and false configurations.

source


# ConstraintCommons.symconFunction.
julia
symcon(s1::Symbol, s2::Symbol, connector::AbstractString="_")

Extends * to Symbols multiplication by connecting the symbols by an _.

source


# ConstraintCommons.δ_extremaMethod.
julia
δ_extrema(X...)

Compute both the difference between the maximum and the minimum of over all the collections of X.

source


# ConstraintDomains.AbstractDomainType.
julia
AbstractDomain

An abstract super type for any domain type. A domain type D <: AbstractDomain must implement the following methods to properly interface AbstractDomain.

  • Base.∈(val, ::D)

  • Base.rand(::D)

  • Base.length(::D) that is the number of elements in a discrete domain, and the distance between bounds or similar for a continuous domain

Additionally, if the domain is used in a dynamic context, it can extend

  • add!(::D, args)

  • delete!(::D, args)

where args depends on D's structure

source


# ConstraintDomains.ContinuousDomainType.
julia
ContinuousDomain{T <: Real} <: AbstractDomain

An abstract supertype for all continuous domains.

source


# ConstraintDomains.DiscreteDomainType.
julia
DiscreteDomain{T <: Number} <: AbstractDomain

An abstract supertype for discrete domains (set, range).

source


# ConstraintDomains.ExploreSettingsMethod.
julia
ExploreSettings(
     domains;
     complete_search_limit = 10^6,
     max_samplings = sum(domain_size, domains),
diff --git a/dev/assets/public_api.md.DucX-f_i.lean.js b/dev/assets/public_api.md.DKaSs20b.lean.js
similarity index 68%
rename from dev/assets/public_api.md.DucX-f_i.lean.js
rename to dev/assets/public_api.md.DKaSs20b.lean.js
index 01266ad..7c2eb13 100644
--- a/dev/assets/public_api.md.DucX-f_i.lean.js
+++ b/dev/assets/public_api.md.DKaSs20b.lean.js
@@ -1 +1 @@
-import{_ as i,c as s,o as a,a6 as t}from"./chunks/framework.U9t3ZutP.js";const b=JSON.parse('{"title":"Public API","description":"","frontmatter":{},"headers":[],"relativePath":"public_api.md","filePath":"public_api.md","lastUpdated":null}'),e={name:"public_api.md"},n=t("",147),o=[n];function l(r,p,h,d,c,k){return a(),s("div",null,o)}const g=i(e,[["render",l]]);export{b as __pageData,g as default};
+import{_ as i,c as s,o as a,a7 as t}from"./chunks/framework.CBLuZwrP.js";const b=JSON.parse('{"title":"Public API","description":"","frontmatter":{},"headers":[],"relativePath":"public_api.md","filePath":"public_api.md","lastUpdated":null}'),e={name:"public_api.md"},n=t("",147),o=[n];function l(r,p,h,d,c,k){return a(),s("div",null,o)}const g=i(e,[["render",l]]);export{b as __pageData,g as default};
diff --git a/dev/assets/solvers_cbls.md.aETcPHbV.js b/dev/assets/solvers_cbls.md.DZ6v1Wou.js
similarity index 99%
rename from dev/assets/solvers_cbls.md.aETcPHbV.js
rename to dev/assets/solvers_cbls.md.DZ6v1Wou.js
index 980cb13..76cff1f 100644
--- a/dev/assets/solvers_cbls.md.aETcPHbV.js
+++ b/dev/assets/solvers_cbls.md.DZ6v1Wou.js
@@ -1,4 +1,4 @@
-import{_ as i,c as s,o as a,a6 as e}from"./chunks/framework.U9t3ZutP.js";const g=JSON.parse('{"title":"CBLS.jl","description":"","frontmatter":{},"headers":[],"relativePath":"solvers/cbls.md","filePath":"solvers/cbls.md","lastUpdated":null}'),t={name:"solvers/cbls.md"},l=e(`

CBLS.jl

Documentation for CBLS.jl.

# CBLS.AllDifferentType.

Global constraint ensuring that all the values of a given configuration are unique.

julia
@constraint(model, X in AllDifferent())

source


# CBLS.AllEqualType.

Global constraint ensuring that all the values of X are all equal.

julia
@constraint(model, X in AllEqual())

source


# CBLS.AtLeastType.

Constraint ensuring that the number of occurrences of the values in vals in x is at least val.

julia
@constraint(model, X in AtLeast(val, vals))

source


# CBLS.AtMostType.

Constraint ensuring that the number of occurrences of the values in vals in x is at most val.

julia
@constraint(model, X in AtMost(val, vals))

source


# CBLS.ConflictsType.

Global constraint ensuring that the tuple x does not match any configuration listed within the conflict set pair_vars. This constraint, originating from the extension model, stipulates that x must avoid all configurations defined as conflicts: x ∉ pair_vars. It is useful for specifying tuples that are explicitly forbidden and should be excluded from the solution space.

julia
@constraint(model, X in Conflicts(; pair_vars))

source


# CBLS.CountType.

Global constraint ensuring that the number of occurrences of val in X is equal to count.

julia
@constraint(model, X in Count(count, val, vals))

source


# CBLS.CumulativeType.

Global constraint ensuring that the cumulative sum of the heights of the tasks is less than or equal to val.

julia
@constraint(model, X in Cumulative(; pair_vars, op, val))

source


# CBLS.DiscreteSetType.
julia
DiscreteSet(values)

Create a discrete set of values.

Arguments

  • values::Vector{T}: A vector of values to include in the set.

Returns

  • DiscreteSet{T}: A discrete set containing the specified values.

source


# CBLS.DistDifferentType.

A constraint ensuring that the distances between marks on the ruler are unique. Specifically, it checks that the distance between x[1] and x[2], and the distance between x[3] and x[4], are different. This constraint is fundamental in ensuring the validity of a Golomb ruler, where no two pairs of marks should have the same distance between them.

source


# CBLS.ElementType.

Global constraint ensuring that the value of X at index id is equal to val.

julia
@constraint(model, X in Element(; id = nothing, op = ==, val = 0))

source


# CBLS.ErrorType.
julia
Error{F <: Function} <: JuMP.AbstractVectorSet

The solver will compute a straightforward error function based on the concept. To run the solver efficiently, it is possible to provide an error function err instead of concept. err must return a nonnegative real number.

julia
@constraint(model, X in Error(err))

source


# CBLS.ExactlyType.

Constraint ensuring that the number of occurrences of the values in vals in x is exactly val.

julia
@constraint(model, X in Exactly(val, vals))

source


# CBLS.ExtensionType.

Global constraint enforcing that the tuple x matches a configuration within the supports set pair_vars[1] or does not match any configuration within the conflicts set pair_vars[2]. It embodies the logic: x ∈ pair_vars[1] || x ∉ pair_vars[2], providing a comprehensive way to define valid (supported) and invalid (conflicted) tuples for constraint satisfaction problems. This constraint is versatile, allowing for the explicit delineation of both acceptable and unacceptable configurations.

source


# CBLS.InstantiationType.

The instantiation constraint is a global constraint used in constraint programming that ensures that a list of variables takes on a specific set of values in a specific order.

source


# CBLS.IntentionType.
julia
Intention{F <: Function} <: JuMP.AbstractVectorSet

Represents an intention set in the model.

Arguments

  • f::F: A function representing the intention.

source


# CBLS.MDDConstraintType.

Multi-valued Decision Diagram (MDD) constraint.

The MDD constraint is a constraint that can be used to model a wide range of problems. It is a directed graph where each node is labeled with a value and each edge is labeled with a value. The constraint is satisfied if there is a path from the first node to the last node such that the sequence of edge labels is a valid sequence of the value labels.

julia
@constraint(model, X in MDDConstraint(; language))

source


# CBLS.MOIAllDifferentType.
julia
MOIAllDifferent <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOIAllEqualType.
julia
MOIAllEqual <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOIConflictsType.
julia
MOIConflicts{T <: Number, V <: Vector{Vector{T}}} <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOICumulativeType.
julia
MOICumulative{F <: Function, T1 <: Number, T2 <: Number} <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOIDistDifferentType.
julia
MOIDistDifferent <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOIElementType.
julia
MOIElement{I <: Integer, F <: Function, T <: Union{Nothing, Number}} <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOIErrorType.
julia
MOIError{F <: Function} <: MOI.AbstractVectorSet

DOCSTRING

Arguments:

  • f::F: DESCRIPTION

  • dimension::Int: DESCRIPTION

  • MOIError(f, dim = 0) = begin #= none:5 =# new{typeof(f)}(f, dim) end: DESCRIPTION

source


# CBLS.MOIExtensionType.
julia
MOIExtension{T <: Number, V <: Union{Vector{Vector{T}}, Tuple{Vector{T}, Vector{T}}}} <: MOI.AbstractVectorSet
+import{_ as i,c as s,o as a,a7 as e}from"./chunks/framework.CBLuZwrP.js";const g=JSON.parse('{"title":"CBLS.jl","description":"","frontmatter":{},"headers":[],"relativePath":"solvers/cbls.md","filePath":"solvers/cbls.md","lastUpdated":null}'),t={name:"solvers/cbls.md"},l=e(`

CBLS.jl

Documentation for CBLS.jl.

# CBLS.AllDifferentType.

Global constraint ensuring that all the values of a given configuration are unique.

julia
@constraint(model, X in AllDifferent())

source


# CBLS.AllEqualType.

Global constraint ensuring that all the values of X are all equal.

julia
@constraint(model, X in AllEqual())

source


# CBLS.AtLeastType.

Constraint ensuring that the number of occurrences of the values in vals in x is at least val.

julia
@constraint(model, X in AtLeast(val, vals))

source


# CBLS.AtMostType.

Constraint ensuring that the number of occurrences of the values in vals in x is at most val.

julia
@constraint(model, X in AtMost(val, vals))

source


# CBLS.ConflictsType.

Global constraint ensuring that the tuple x does not match any configuration listed within the conflict set pair_vars. This constraint, originating from the extension model, stipulates that x must avoid all configurations defined as conflicts: x ∉ pair_vars. It is useful for specifying tuples that are explicitly forbidden and should be excluded from the solution space.

julia
@constraint(model, X in Conflicts(; pair_vars))

source


# CBLS.CountType.

Global constraint ensuring that the number of occurrences of val in X is equal to count.

julia
@constraint(model, X in Count(count, val, vals))

source


# CBLS.CumulativeType.

Global constraint ensuring that the cumulative sum of the heights of the tasks is less than or equal to val.

julia
@constraint(model, X in Cumulative(; pair_vars, op, val))

source


# CBLS.DiscreteSetType.
julia
DiscreteSet(values)

Create a discrete set of values.

Arguments

  • values::Vector{T}: A vector of values to include in the set.

Returns

  • DiscreteSet{T}: A discrete set containing the specified values.

source


# CBLS.DistDifferentType.

A constraint ensuring that the distances between marks on the ruler are unique. Specifically, it checks that the distance between x[1] and x[2], and the distance between x[3] and x[4], are different. This constraint is fundamental in ensuring the validity of a Golomb ruler, where no two pairs of marks should have the same distance between them.

source


# CBLS.ElementType.

Global constraint ensuring that the value of X at index id is equal to val.

julia
@constraint(model, X in Element(; id = nothing, op = ==, val = 0))

source


# CBLS.ErrorType.
julia
Error{F <: Function} <: JuMP.AbstractVectorSet

The solver will compute a straightforward error function based on the concept. To run the solver efficiently, it is possible to provide an error function err instead of concept. err must return a nonnegative real number.

julia
@constraint(model, X in Error(err))

source


# CBLS.ExactlyType.

Constraint ensuring that the number of occurrences of the values in vals in x is exactly val.

julia
@constraint(model, X in Exactly(val, vals))

source


# CBLS.ExtensionType.

Global constraint enforcing that the tuple x matches a configuration within the supports set pair_vars[1] or does not match any configuration within the conflicts set pair_vars[2]. It embodies the logic: x ∈ pair_vars[1] || x ∉ pair_vars[2], providing a comprehensive way to define valid (supported) and invalid (conflicted) tuples for constraint satisfaction problems. This constraint is versatile, allowing for the explicit delineation of both acceptable and unacceptable configurations.

source


# CBLS.InstantiationType.

The instantiation constraint is a global constraint used in constraint programming that ensures that a list of variables takes on a specific set of values in a specific order.

source


# CBLS.IntentionType.
julia
Intention{F <: Function} <: JuMP.AbstractVectorSet

Represents an intention set in the model.

Arguments

  • f::F: A function representing the intention.

source


# CBLS.MDDConstraintType.

Multi-valued Decision Diagram (MDD) constraint.

The MDD constraint is a constraint that can be used to model a wide range of problems. It is a directed graph where each node is labeled with a value and each edge is labeled with a value. The constraint is satisfied if there is a path from the first node to the last node such that the sequence of edge labels is a valid sequence of the value labels.

julia
@constraint(model, X in MDDConstraint(; language))

source


# CBLS.MOIAllDifferentType.
julia
MOIAllDifferent <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOIAllEqualType.
julia
MOIAllEqual <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOIConflictsType.
julia
MOIConflicts{T <: Number, V <: Vector{Vector{T}}} <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOICumulativeType.
julia
MOICumulative{F <: Function, T1 <: Number, T2 <: Number} <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOIDistDifferentType.
julia
MOIDistDifferent <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOIElementType.
julia
MOIElement{I <: Integer, F <: Function, T <: Union{Nothing, Number}} <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOIErrorType.
julia
MOIError{F <: Function} <: MOI.AbstractVectorSet

DOCSTRING

Arguments:

  • f::F: DESCRIPTION

  • dimension::Int: DESCRIPTION

  • MOIError(f, dim = 0) = begin #= none:5 =# new{typeof(f)}(f, dim) end: DESCRIPTION

source


# CBLS.MOIExtensionType.
julia
MOIExtension{T <: Number, V <: Union{Vector{Vector{T}}, Tuple{Vector{T}, Vector{T}}}} <: MOI.AbstractVectorSet
 
 DOCSTRING

source


# CBLS.MOIInstantiationType.
julia
MOIInstantiation{T <: Number, V <: Vector{T}} <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOIIntentionType.
julia
MOIIntention{F <: Function} <: MOI.AbstractVectorSet

Represents an intention set in the model.

Arguments

  • f::F: A function representing the intention.

  • dimension::Int: The dimension of the vector set.

source


# CBLS.MOIMaximumType.
julia
MOIMaximum {F <: Function, T <: Number} <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOIMinimumType.
julia
MOIMinimum {F <: Function, T <: Number} <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOIMultivaluedDecisionDiagramType.
julia
MOIMultivaluedDecisionDiagram{L <: ConstraintCommons.AbstractMultivaluedDecisionDiagram} <: AbstractVectorSet

DOCSTRING

source


# CBLS.MOINValuesType.
julia
MOINValues{F <: Function, T1 <: Number, T2 <: Number, V <: Vector{T2}} <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOINoOverlapType.
julia
MOINoOverlap{I <: Integer, T <: Number, V <: Vector{T}} <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOIOrderedType.
julia
MOIOrdered{F <: Function, T <: Number, V <: Vector{T}} <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOIRegularType.
julia
MOIRegular{L <: ConstraintCommons.AbstractAutomaton} <: AbstractVectorSet

DOCSTRING

source


# CBLS.MOISumType.
julia
MOISum{F <: Function, T1 <: Number, T2 <: Number, V <: Number} <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOISupportsType.
julia
MOISupports{T <: Number, V <: Vector{Vector{T}}} <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MaximumType.

Global constraint ensuring that the maximum value in the tuple x satisfies the condition op(x) val. This constraint is useful for specifying that the maximum value in the tuple must satisfy a certain condition.

julia
@constraint(model, X in Maximum(; op = ==, val))

source


# CBLS.MinimumType.

Global constraint ensuring that the minimum value in the tuple x satisfies the condition op(x) val. This constraint is useful for specifying that the minimum value in the tuple must satisfy a certain condition.

julia
@constraint(model, X in Minimum(; op = ==, val))

source


# CBLS.NValuesType.

Global constraint ensuring that the number of distinct values in X satisfies the given condition.

source


# CBLS.NoOverlapType.

Global constraint ensuring that the tuple x does not overlap with any configuration listed within the pair set pair_vars. This constraint, originating from the extension model, stipulates that x must avoid all configurations defined as pairs: x ∩ pair_vars = ∅. It is useful for specifying tuples that are explicitly forbidden and should be excluded from the solution space.

julia
@constraint(model, X in NoOverlap(; bool = true, dim = 1, pair_vars = nothing))

source


# CBLS.OptimizerType.
julia
Optimizer(model = Model(); options = Options())

Create an instance of the Optimizer.

Arguments

  • model: The model to be optimized.

  • options::Options: Options for configuring the solver.

Returns

  • Optimizer: An instance of the optimizer.

source


# CBLS.OptimizerType.
julia
Optimizer <: MOI.AbstractOptimizer

Defines an optimizer for CBLS.

Fields

  • solver::LS.MainSolver: The main solver used for local search.

  • int_vars::Set{Int}: Set of integer variables.

  • compare_vars::Set{Int}: Set of variables to compare.

source


# CBLS.OrderedType.

Global constraint ensuring that the variables are ordered according to op.

source


# CBLS.PredicateType.
julia
Predicate{F <: Function} <: JuMP.AbstractVectorSet

Deprecated: Use Intention instead.

Represents a predicate set in the model.

Arguments

  • f::F: A function representing the predicate.

source


# CBLS.RegularType.

Ensures that a sequence x (interpreted as a word) is accepted by the regular language represented by a given automaton. This constraint verifies the compliance of x with the language rules encoded within the automaton parameter, which must be an instance of <:AbstractAutomaton.

julia
@constraint(model, X in RegularConstraint(; language))

source


# CBLS.ScalarFunctionType.
julia
ScalarFunction{F <: Function, V <: Union{Nothing, VOV}} <: MOI.AbstractScalarFunction

A container to express any function with real value in JuMP syntax. Used with the @objective macro.

Arguments:

  • f::F: function to be applied to X

  • X::V: a subset of the variables of the model.

Given a model, and some (collection of) variables X to optimize. an objective function f can be added as follows. Note that only Min for minimization us currently defined. Max will come soon.

julia
# Applies to all variables in order of insertion.
 # Recommended only when the function argument order does not matter.
diff --git a/dev/assets/solvers_cbls.md.aETcPHbV.lean.js b/dev/assets/solvers_cbls.md.DZ6v1Wou.lean.js
similarity index 68%
rename from dev/assets/solvers_cbls.md.aETcPHbV.lean.js
rename to dev/assets/solvers_cbls.md.DZ6v1Wou.lean.js
index 8a16e91..5dd1368 100644
--- a/dev/assets/solvers_cbls.md.aETcPHbV.lean.js
+++ b/dev/assets/solvers_cbls.md.DZ6v1Wou.lean.js
@@ -1 +1 @@
-import{_ as i,c as s,o as a,a6 as e}from"./chunks/framework.U9t3ZutP.js";const g=JSON.parse('{"title":"CBLS.jl","description":"","frontmatter":{},"headers":[],"relativePath":"solvers/cbls.md","filePath":"solvers/cbls.md","lastUpdated":null}'),t={name:"solvers/cbls.md"},l=e("",146),n=[l];function r(p,h,o,d,k,c){return a(),s("div",null,n)}const b=i(t,[["render",r]]);export{g as __pageData,b as default};
+import{_ as i,c as s,o as a,a7 as e}from"./chunks/framework.CBLuZwrP.js";const g=JSON.parse('{"title":"CBLS.jl","description":"","frontmatter":{},"headers":[],"relativePath":"solvers/cbls.md","filePath":"solvers/cbls.md","lastUpdated":null}'),t={name:"solvers/cbls.md"},l=e("",146),n=[l];function r(p,h,o,d,k,c){return a(),s("div",null,n)}const b=i(t,[["render",r]]);export{g as __pageData,b as default};
diff --git a/dev/assets/solvers_intro.md.DDzBkL9F.js b/dev/assets/solvers_intro.md.BfVY8api.js
similarity index 78%
rename from dev/assets/solvers_intro.md.DDzBkL9F.js
rename to dev/assets/solvers_intro.md.BfVY8api.js
index 2884190..41287b1 100644
--- a/dev/assets/solvers_intro.md.DDzBkL9F.js
+++ b/dev/assets/solvers_intro.md.BfVY8api.js
@@ -1 +1 @@
-import{_ as s,c as t,o,j as e,a as r}from"./chunks/framework.U9t3ZutP.js";const u=JSON.parse('{"title":"Solvers","description":"","frontmatter":{},"headers":[],"relativePath":"solvers/intro.md","filePath":"solvers/intro.md","lastUpdated":null}'),a={name:"solvers/intro.md"},n=e("h1",{id:"solvers",tabindex:"-1"},[r("Solvers "),e("a",{class:"header-anchor",href:"#solvers","aria-label":'Permalink to "Solvers"'},"​")],-1),l=e("p",null,"About solvers.",-1),c=[n,l];function i(d,_,p,h,v,m){return o(),t("div",null,c)}const x=s(a,[["render",i]]);export{u as __pageData,x as default};
+import{_ as s,c as t,o,j as e,a as r}from"./chunks/framework.CBLuZwrP.js";const u=JSON.parse('{"title":"Solvers","description":"","frontmatter":{},"headers":[],"relativePath":"solvers/intro.md","filePath":"solvers/intro.md","lastUpdated":null}'),a={name:"solvers/intro.md"},n=e("h1",{id:"solvers",tabindex:"-1"},[r("Solvers "),e("a",{class:"header-anchor",href:"#solvers","aria-label":'Permalink to "Solvers"'},"​")],-1),l=e("p",null,"About solvers.",-1),c=[n,l];function i(d,_,p,h,v,m){return o(),t("div",null,c)}const x=s(a,[["render",i]]);export{u as __pageData,x as default};
diff --git a/dev/assets/solvers_intro.md.DDzBkL9F.lean.js b/dev/assets/solvers_intro.md.BfVY8api.lean.js
similarity index 78%
rename from dev/assets/solvers_intro.md.DDzBkL9F.lean.js
rename to dev/assets/solvers_intro.md.BfVY8api.lean.js
index 2884190..41287b1 100644
--- a/dev/assets/solvers_intro.md.DDzBkL9F.lean.js
+++ b/dev/assets/solvers_intro.md.BfVY8api.lean.js
@@ -1 +1 @@
-import{_ as s,c as t,o,j as e,a as r}from"./chunks/framework.U9t3ZutP.js";const u=JSON.parse('{"title":"Solvers","description":"","frontmatter":{},"headers":[],"relativePath":"solvers/intro.md","filePath":"solvers/intro.md","lastUpdated":null}'),a={name:"solvers/intro.md"},n=e("h1",{id:"solvers",tabindex:"-1"},[r("Solvers "),e("a",{class:"header-anchor",href:"#solvers","aria-label":'Permalink to "Solvers"'},"​")],-1),l=e("p",null,"About solvers.",-1),c=[n,l];function i(d,_,p,h,v,m){return o(),t("div",null,c)}const x=s(a,[["render",i]]);export{u as __pageData,x as default};
+import{_ as s,c as t,o,j as e,a as r}from"./chunks/framework.CBLuZwrP.js";const u=JSON.parse('{"title":"Solvers","description":"","frontmatter":{},"headers":[],"relativePath":"solvers/intro.md","filePath":"solvers/intro.md","lastUpdated":null}'),a={name:"solvers/intro.md"},n=e("h1",{id:"solvers",tabindex:"-1"},[r("Solvers "),e("a",{class:"header-anchor",href:"#solvers","aria-label":'Permalink to "Solvers"'},"​")],-1),l=e("p",null,"About solvers.",-1),c=[n,l];function i(d,_,p,h,v,m){return o(),t("div",null,c)}const x=s(a,[["render",i]]);export{u as __pageData,x as default};
diff --git a/dev/assets/solvers_local_search_solvers.md.fZnE-81e.js b/dev/assets/solvers_local_search_solvers.md.BzCxiVtH.js
similarity index 99%
rename from dev/assets/solvers_local_search_solvers.md.fZnE-81e.js
rename to dev/assets/solvers_local_search_solvers.md.BzCxiVtH.js
index 37ee314..06f8aa9 100644
--- a/dev/assets/solvers_local_search_solvers.md.fZnE-81e.js
+++ b/dev/assets/solvers_local_search_solvers.md.BzCxiVtH.js
@@ -1,4 +1,4 @@
-import{_ as s,c as i,o as a,a6 as e}from"./chunks/framework.U9t3ZutP.js";const u=JSON.parse('{"title":"LocalSearchSolvers.jl","description":"","frontmatter":{},"headers":[],"relativePath":"solvers/local_search_solvers.md","filePath":"solvers/local_search_solvers.md","lastUpdated":null}'),l={name:"solvers/local_search_solvers.md"},t=e(`

LocalSearchSolvers.jl

Documentation for LocalSearchSolvers.jl.

# LocalSearchSolvers.AbstractSolverType.
julia
AbstractSolver

Abstract type to encapsulate the different solver types such as Solver or _SubSolver.

source


# LocalSearchSolvers.ConstraintType.
julia
Constraint{F <: Function}

Structure to store an error function and the variables it constrains.

source


# LocalSearchSolvers.LeadSolverType.
julia
LeadSolver <: MetaSolver

Solver managed remotely by a MainSolver. Can manage its own set of local sub solvers.

source


# LocalSearchSolvers.MainSolverType.
julia
MainSolver <: AbstractSolver

Main solver. Handle the solving of a model, and optional multithreaded and/or distributed subsolvers.

Arguments:

  • model::Model: A formal description of the targeted problem

  • state::_State: An internal state to store the info necessary to a solving run

  • options::Options: User options for this solver

  • subs::Vector{_SubSolver}: Optional subsolvers

source


# LocalSearchSolvers.MetaSolverType.

Abstract type to encapsulate all solver types that manages other solvers.

source


# LocalSearchSolvers.ObjectiveType.
julia
Objective{F <: Function}

A structure to handle objectives in a solver. \`struct Objective{F <: Function} name::String f::F end\`\`

source


# LocalSearchSolvers.ObjectiveMethod.
julia
Objective(F, o::Objective{F2}) where {F2 <: Function}

Constructor used in specializing a solver. Should never be called externally.

source


# LocalSearchSolvers.OptionsType.
julia
Options()

Arguments:

  • dynamic::Bool: is the model dynamic?

  • iteration::Union{Int, Float64}: limit on the number of iterations

  • print_level::Symbol: verbosity to choose among :silent, :minimal, :partial, :verbose

  • solutions::Int: number of solutions to return

  • specialize::Bool: should the types of the model be specialized or not. Usually yes for static problems. For dynamic in depends if the user intend to introduce new types. The specialized model is about 10% faster.

  • tabu_time::Int: DESCRIPTION

  • tabu_local::Int: DESCRIPTION

  • tabu_delta::Float64: DESCRIPTION

  • threads::Int: Number of threads to use

  • time_limit::Float64: time limit in seconds

  • \`function Options(; dynamic = false, iteration = 10000, print_level = :minimal, solutions = 1, specialize = !dynamic, tabu_time = 0, tabu_local = 0, tabu_delta = 0.0, threads = typemax(0), time_limit = Inf)

julia
# Setting options in JuMP syntax: print_level, time_limit, iteration
+import{_ as s,c as i,o as a,a7 as e}from"./chunks/framework.CBLuZwrP.js";const u=JSON.parse('{"title":"LocalSearchSolvers.jl","description":"","frontmatter":{},"headers":[],"relativePath":"solvers/local_search_solvers.md","filePath":"solvers/local_search_solvers.md","lastUpdated":null}'),l={name:"solvers/local_search_solvers.md"},t=e(`

LocalSearchSolvers.jl

Documentation for LocalSearchSolvers.jl.

# LocalSearchSolvers.AbstractSolverType.
julia
AbstractSolver

Abstract type to encapsulate the different solver types such as Solver or _SubSolver.

source


# LocalSearchSolvers.ConstraintType.
julia
Constraint{F <: Function}

Structure to store an error function and the variables it constrains.

source


# LocalSearchSolvers.LeadSolverType.
julia
LeadSolver <: MetaSolver

Solver managed remotely by a MainSolver. Can manage its own set of local sub solvers.

source


# LocalSearchSolvers.MainSolverType.
julia
MainSolver <: AbstractSolver

Main solver. Handle the solving of a model, and optional multithreaded and/or distributed subsolvers.

Arguments:

  • model::Model: A formal description of the targeted problem

  • state::_State: An internal state to store the info necessary to a solving run

  • options::Options: User options for this solver

  • subs::Vector{_SubSolver}: Optional subsolvers

source


# LocalSearchSolvers.MetaSolverType.

Abstract type to encapsulate all solver types that manages other solvers.

source


# LocalSearchSolvers.ObjectiveType.
julia
Objective{F <: Function}

A structure to handle objectives in a solver. \`struct Objective{F <: Function} name::String f::F end\`\`

source


# LocalSearchSolvers.ObjectiveMethod.
julia
Objective(F, o::Objective{F2}) where {F2 <: Function}

Constructor used in specializing a solver. Should never be called externally.

source


# LocalSearchSolvers.OptionsType.
julia
Options()

Arguments:

  • dynamic::Bool: is the model dynamic?

  • iteration::Union{Int, Float64}: limit on the number of iterations

  • print_level::Symbol: verbosity to choose among :silent, :minimal, :partial, :verbose

  • solutions::Int: number of solutions to return

  • specialize::Bool: should the types of the model be specialized or not. Usually yes for static problems. For dynamic in depends if the user intend to introduce new types. The specialized model is about 10% faster.

  • tabu_time::Int: DESCRIPTION

  • tabu_local::Int: DESCRIPTION

  • tabu_delta::Float64: DESCRIPTION

  • threads::Int: Number of threads to use

  • time_limit::Float64: time limit in seconds

  • \`function Options(; dynamic = false, iteration = 10000, print_level = :minimal, solutions = 1, specialize = !dynamic, tabu_time = 0, tabu_local = 0, tabu_delta = 0.0, threads = typemax(0), time_limit = Inf)

julia
# Setting options in JuMP syntax: print_level, time_limit, iteration
 model = Model(CBLS.Optimizer)
 set_optimizer_attribute(model, "iteration", 100)
 set_optimizer_attribute(model, "print_level", :verbose)
diff --git a/dev/assets/solvers_local_search_solvers.md.fZnE-81e.lean.js b/dev/assets/solvers_local_search_solvers.md.BzCxiVtH.lean.js
similarity index 72%
rename from dev/assets/solvers_local_search_solvers.md.fZnE-81e.lean.js
rename to dev/assets/solvers_local_search_solvers.md.BzCxiVtH.lean.js
index 39ca048..d6d9335 100644
--- a/dev/assets/solvers_local_search_solvers.md.fZnE-81e.lean.js
+++ b/dev/assets/solvers_local_search_solvers.md.BzCxiVtH.lean.js
@@ -1 +1 @@
-import{_ as s,c as i,o as a,a6 as e}from"./chunks/framework.U9t3ZutP.js";const u=JSON.parse('{"title":"LocalSearchSolvers.jl","description":"","frontmatter":{},"headers":[],"relativePath":"solvers/local_search_solvers.md","filePath":"solvers/local_search_solvers.md","lastUpdated":null}'),l={name:"solvers/local_search_solvers.md"},t=e("",290),r=[t];function o(h,n,p,d,c,k){return a(),i("div",null,r)}const g=s(l,[["render",o]]);export{u as __pageData,g as default};
+import{_ as s,c as i,o as a,a7 as e}from"./chunks/framework.CBLuZwrP.js";const u=JSON.parse('{"title":"LocalSearchSolvers.jl","description":"","frontmatter":{},"headers":[],"relativePath":"solvers/local_search_solvers.md","filePath":"solvers/local_search_solvers.md","lastUpdated":null}'),l={name:"solvers/local_search_solvers.md"},t=e("",290),r=[t];function o(h,n,p,d,c,k){return a(),i("div",null,r)}const g=s(l,[["render",o]]);export{u as __pageData,g as default};
diff --git a/dev/assets/style.Bb0J_nSp.css b/dev/assets/style.Bb0J_nSp.css
new file mode 100644
index 0000000..75cc062
--- /dev/null
+++ b/dev/assets/style.Bb0J_nSp.css
@@ -0,0 +1 @@
+@import"https://fonts.googleapis.com/css?family=Space+Mono:regular,italic,700,700italic";@import"https://fonts.googleapis.com/css?family=Space+Grotesk:regular,italic,700,700italic";@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/dev/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/dev/assets/inter-roman-cyrillic.C5lxZ8CY.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/dev/assets/inter-roman-greek-ext.CqjqNYQ-.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/dev/assets/inter-roman-greek.BBVDIX6e.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/dev/assets/inter-roman-vietnamese.BjW4sHH5.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/dev/assets/inter-roman-latin-ext.4ZJIpNVo.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/dev/assets/inter-roman-latin.Di8DUHzh.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/dev/assets/inter-italic-cyrillic-ext.r48I6akx.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/dev/assets/inter-italic-cyrillic.By2_1cv3.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/dev/assets/inter-italic-greek-ext.1u6EdAuj.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/dev/assets/inter-italic-greek.DJ8dCoTZ.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/dev/assets/inter-italic-vietnamese.BSbpV94h.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/dev/assets/inter-italic-latin-ext.CN1xVJS-.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/dev/assets/inter-italic-latin.C2AdPX0b.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Punctuation SC;font-weight:400;src:local("PingFang SC Regular"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:500;src:local("PingFang SC Medium"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:600;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:700;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}:root{--vp-c-white: #ffffff;--vp-c-black: #000000;--vp-c-neutral: var(--vp-c-black);--vp-c-neutral-inverse: var(--vp-c-white)}.dark{--vp-c-neutral: var(--vp-c-white);--vp-c-neutral-inverse: var(--vp-c-black)}:root{--vp-c-gray-1: #dddde3;--vp-c-gray-2: #e4e4e9;--vp-c-gray-3: #ebebef;--vp-c-gray-soft: rgba(142, 150, 170, .14);--vp-c-indigo-1: #3451b2;--vp-c-indigo-2: #3a5ccc;--vp-c-indigo-3: #5672cd;--vp-c-indigo-soft: rgba(100, 108, 255, .14);--vp-c-purple-1: #6f42c1;--vp-c-purple-2: #7e4cc9;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .14);--vp-c-green-1: #18794e;--vp-c-green-2: #299764;--vp-c-green-3: #30a46c;--vp-c-green-soft: rgba(16, 185, 129, .14);--vp-c-yellow-1: #915930;--vp-c-yellow-2: #946300;--vp-c-yellow-3: #9f6a00;--vp-c-yellow-soft: rgba(234, 179, 8, .14);--vp-c-red-1: #b8272c;--vp-c-red-2: #d5393e;--vp-c-red-3: #e0575b;--vp-c-red-soft: rgba(244, 63, 94, .14);--vp-c-sponsor: #db2777}.dark{--vp-c-gray-1: #515c67;--vp-c-gray-2: #414853;--vp-c-gray-3: #32363f;--vp-c-gray-soft: rgba(101, 117, 133, .16);--vp-c-indigo-1: #a8b1ff;--vp-c-indigo-2: #5c73e7;--vp-c-indigo-3: #3e63dd;--vp-c-indigo-soft: rgba(100, 108, 255, .16);--vp-c-purple-1: #c8abfa;--vp-c-purple-2: #a879e6;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .16);--vp-c-green-1: #3dd68c;--vp-c-green-2: #30a46c;--vp-c-green-3: #298459;--vp-c-green-soft: rgba(16, 185, 129, .16);--vp-c-yellow-1: #f9b44e;--vp-c-yellow-2: #da8b17;--vp-c-yellow-3: #a46a0a;--vp-c-yellow-soft: rgba(234, 179, 8, .16);--vp-c-red-1: #f66f81;--vp-c-red-2: #f14158;--vp-c-red-3: #b62a3c;--vp-c-red-soft: rgba(244, 63, 94, .16)}:root{--vp-c-bg: #ffffff;--vp-c-bg-alt: #f6f6f7;--vp-c-bg-elv: #ffffff;--vp-c-bg-soft: #f6f6f7}.dark{--vp-c-bg: #1b1b1f;--vp-c-bg-alt: #161618;--vp-c-bg-elv: #202127;--vp-c-bg-soft: #202127}:root{--vp-c-border: #c2c2c4;--vp-c-divider: #e2e2e3;--vp-c-gutter: #e2e2e3}.dark{--vp-c-border: #3c3f44;--vp-c-divider: #2e2e32;--vp-c-gutter: #000000}:root{--vp-c-text-1: rgba(60, 60, 67);--vp-c-text-2: rgba(60, 60, 67, .78);--vp-c-text-3: rgba(60, 60, 67, .56)}.dark{--vp-c-text-1: rgba(255, 255, 245, .86);--vp-c-text-2: rgba(235, 235, 245, .6);--vp-c-text-3: rgba(235, 235, 245, .38)}:root{--vp-c-default-1: var(--vp-c-gray-1);--vp-c-default-2: var(--vp-c-gray-2);--vp-c-default-3: var(--vp-c-gray-3);--vp-c-default-soft: var(--vp-c-gray-soft);--vp-c-brand-1: var(--vp-c-indigo-1);--vp-c-brand-2: var(--vp-c-indigo-2);--vp-c-brand-3: var(--vp-c-indigo-3);--vp-c-brand-soft: var(--vp-c-indigo-soft);--vp-c-brand: var(--vp-c-brand-1);--vp-c-tip-1: var(--vp-c-brand-1);--vp-c-tip-2: var(--vp-c-brand-2);--vp-c-tip-3: var(--vp-c-brand-3);--vp-c-tip-soft: var(--vp-c-brand-soft);--vp-c-note-1: var(--vp-c-brand-1);--vp-c-note-2: var(--vp-c-brand-2);--vp-c-note-3: var(--vp-c-brand-3);--vp-c-note-soft: var(--vp-c-brand-soft);--vp-c-success-1: var(--vp-c-green-1);--vp-c-success-2: var(--vp-c-green-2);--vp-c-success-3: var(--vp-c-green-3);--vp-c-success-soft: var(--vp-c-green-soft);--vp-c-important-1: var(--vp-c-purple-1);--vp-c-important-2: var(--vp-c-purple-2);--vp-c-important-3: var(--vp-c-purple-3);--vp-c-important-soft: var(--vp-c-purple-soft);--vp-c-warning-1: var(--vp-c-yellow-1);--vp-c-warning-2: var(--vp-c-yellow-2);--vp-c-warning-3: var(--vp-c-yellow-3);--vp-c-warning-soft: var(--vp-c-yellow-soft);--vp-c-danger-1: var(--vp-c-red-1);--vp-c-danger-2: var(--vp-c-red-2);--vp-c-danger-3: var(--vp-c-red-3);--vp-c-danger-soft: var(--vp-c-red-soft);--vp-c-caution-1: var(--vp-c-red-1);--vp-c-caution-2: var(--vp-c-red-2);--vp-c-caution-3: var(--vp-c-red-3);--vp-c-caution-soft: var(--vp-c-red-soft)}:root{--vp-font-family-base: "Inter", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--vp-font-family-mono: ui-monospace, "Menlo", "Monaco", "Consolas", "Liberation Mono", "Courier New", monospace;font-optical-sizing:auto}:root:where(:lang(zh)){--vp-font-family-base: "Punctuation SC", "Inter", ui-sans-serif, system-ui, "PingFang SC", "Noto Sans CJK SC", "Noto Sans SC", "Heiti SC", "Microsoft YaHei", "DengXian", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"}:root{--vp-shadow-1: 0 1px 2px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .06);--vp-shadow-2: 0 3px 12px rgba(0, 0, 0, .07), 0 1px 4px rgba(0, 0, 0, .07);--vp-shadow-3: 0 12px 32px rgba(0, 0, 0, .1), 0 2px 6px rgba(0, 0, 0, .08);--vp-shadow-4: 0 14px 44px rgba(0, 0, 0, .12), 0 3px 9px rgba(0, 0, 0, .12);--vp-shadow-5: 0 18px 56px rgba(0, 0, 0, .16), 0 4px 12px rgba(0, 0, 0, .16)}:root{--vp-z-index-footer: 10;--vp-z-index-local-nav: 20;--vp-z-index-nav: 30;--vp-z-index-layout-top: 40;--vp-z-index-backdrop: 50;--vp-z-index-sidebar: 60}@media (min-width: 960px){:root{--vp-z-index-sidebar: 25}}:root{--vp-layout-max-width: 1440px}:root{--vp-header-anchor-symbol: "#"}:root{--vp-code-line-height: 1.7;--vp-code-font-size: .875em;--vp-code-color: var(--vp-c-brand-1);--vp-code-link-color: var(--vp-c-brand-1);--vp-code-link-hover-color: var(--vp-c-brand-2);--vp-code-bg: var(--vp-c-default-soft);--vp-code-block-color: var(--vp-c-text-2);--vp-code-block-bg: var(--vp-c-bg-alt);--vp-code-block-divider-color: var(--vp-c-gutter);--vp-code-lang-color: var(--vp-c-text-3);--vp-code-line-highlight-color: var(--vp-c-default-soft);--vp-code-line-number-color: var(--vp-c-text-3);--vp-code-line-diff-add-color: var(--vp-c-success-soft);--vp-code-line-diff-add-symbol-color: var(--vp-c-success-1);--vp-code-line-diff-remove-color: var(--vp-c-danger-soft);--vp-code-line-diff-remove-symbol-color: var(--vp-c-danger-1);--vp-code-line-warning-color: var(--vp-c-warning-soft);--vp-code-line-error-color: var(--vp-c-danger-soft);--vp-code-copy-code-border-color: var(--vp-c-divider);--vp-code-copy-code-bg: var(--vp-c-bg-soft);--vp-code-copy-code-hover-border-color: var(--vp-c-divider);--vp-code-copy-code-hover-bg: var(--vp-c-bg);--vp-code-copy-code-active-text: var(--vp-c-text-2);--vp-code-copy-copied-text-content: "Copied";--vp-code-tab-divider: var(--vp-code-block-divider-color);--vp-code-tab-text-color: var(--vp-c-text-2);--vp-code-tab-bg: var(--vp-code-block-bg);--vp-code-tab-hover-text-color: var(--vp-c-text-1);--vp-code-tab-active-text-color: var(--vp-c-text-1);--vp-code-tab-active-bar-color: var(--vp-c-brand-1)}:root{--vp-button-brand-border: transparent;--vp-button-brand-text: var(--vp-c-white);--vp-button-brand-bg: var(--vp-c-brand-3);--vp-button-brand-hover-border: transparent;--vp-button-brand-hover-text: var(--vp-c-white);--vp-button-brand-hover-bg: var(--vp-c-brand-2);--vp-button-brand-active-border: transparent;--vp-button-brand-active-text: var(--vp-c-white);--vp-button-brand-active-bg: var(--vp-c-brand-1);--vp-button-alt-border: transparent;--vp-button-alt-text: var(--vp-c-text-1);--vp-button-alt-bg: var(--vp-c-default-3);--vp-button-alt-hover-border: transparent;--vp-button-alt-hover-text: var(--vp-c-text-1);--vp-button-alt-hover-bg: var(--vp-c-default-2);--vp-button-alt-active-border: transparent;--vp-button-alt-active-text: var(--vp-c-text-1);--vp-button-alt-active-bg: var(--vp-c-default-1);--vp-button-sponsor-border: var(--vp-c-text-2);--vp-button-sponsor-text: var(--vp-c-text-2);--vp-button-sponsor-bg: transparent;--vp-button-sponsor-hover-border: var(--vp-c-sponsor);--vp-button-sponsor-hover-text: var(--vp-c-sponsor);--vp-button-sponsor-hover-bg: transparent;--vp-button-sponsor-active-border: var(--vp-c-sponsor);--vp-button-sponsor-active-text: var(--vp-c-sponsor);--vp-button-sponsor-active-bg: transparent}:root{--vp-custom-block-font-size: 14px;--vp-custom-block-code-font-size: 13px;--vp-custom-block-info-border: transparent;--vp-custom-block-info-text: var(--vp-c-text-1);--vp-custom-block-info-bg: var(--vp-c-default-soft);--vp-custom-block-info-code-bg: var(--vp-c-default-soft);--vp-custom-block-note-border: transparent;--vp-custom-block-note-text: var(--vp-c-text-1);--vp-custom-block-note-bg: var(--vp-c-default-soft);--vp-custom-block-note-code-bg: var(--vp-c-default-soft);--vp-custom-block-tip-border: transparent;--vp-custom-block-tip-text: var(--vp-c-text-1);--vp-custom-block-tip-bg: var(--vp-c-tip-soft);--vp-custom-block-tip-code-bg: var(--vp-c-tip-soft);--vp-custom-block-important-border: transparent;--vp-custom-block-important-text: var(--vp-c-text-1);--vp-custom-block-important-bg: var(--vp-c-important-soft);--vp-custom-block-important-code-bg: var(--vp-c-important-soft);--vp-custom-block-warning-border: transparent;--vp-custom-block-warning-text: var(--vp-c-text-1);--vp-custom-block-warning-bg: var(--vp-c-warning-soft);--vp-custom-block-warning-code-bg: var(--vp-c-warning-soft);--vp-custom-block-danger-border: transparent;--vp-custom-block-danger-text: var(--vp-c-text-1);--vp-custom-block-danger-bg: var(--vp-c-danger-soft);--vp-custom-block-danger-code-bg: var(--vp-c-danger-soft);--vp-custom-block-caution-border: transparent;--vp-custom-block-caution-text: var(--vp-c-text-1);--vp-custom-block-caution-bg: var(--vp-c-caution-soft);--vp-custom-block-caution-code-bg: var(--vp-c-caution-soft);--vp-custom-block-details-border: var(--vp-custom-block-info-border);--vp-custom-block-details-text: var(--vp-custom-block-info-text);--vp-custom-block-details-bg: var(--vp-custom-block-info-bg);--vp-custom-block-details-code-bg: var(--vp-custom-block-info-code-bg)}:root{--vp-input-border-color: var(--vp-c-border);--vp-input-bg-color: var(--vp-c-bg-alt);--vp-input-switch-bg-color: var(--vp-c-default-soft)}:root{--vp-nav-height: 64px;--vp-nav-bg-color: var(--vp-c-bg);--vp-nav-screen-bg-color: var(--vp-c-bg);--vp-nav-logo-height: 24px}.hide-nav{--vp-nav-height: 0px}.hide-nav .VPSidebar{--vp-nav-height: 22px}:root{--vp-local-nav-bg-color: var(--vp-c-bg)}:root{--vp-sidebar-width: 272px;--vp-sidebar-bg-color: var(--vp-c-bg-alt)}:root{--vp-backdrop-bg-color: rgba(0, 0, 0, .6)}:root{--vp-home-hero-name-color: var(--vp-c-brand-1);--vp-home-hero-name-background: transparent;--vp-home-hero-image-background-image: none;--vp-home-hero-image-filter: none}:root{--vp-badge-info-border: transparent;--vp-badge-info-text: var(--vp-c-text-2);--vp-badge-info-bg: var(--vp-c-default-soft);--vp-badge-tip-border: transparent;--vp-badge-tip-text: var(--vp-c-tip-1);--vp-badge-tip-bg: var(--vp-c-tip-soft);--vp-badge-warning-border: transparent;--vp-badge-warning-text: var(--vp-c-warning-1);--vp-badge-warning-bg: var(--vp-c-warning-soft);--vp-badge-danger-border: transparent;--vp-badge-danger-text: var(--vp-c-danger-1);--vp-badge-danger-bg: var(--vp-c-danger-soft)}:root{--vp-carbon-ads-text-color: var(--vp-c-text-1);--vp-carbon-ads-poweredby-color: var(--vp-c-text-2);--vp-carbon-ads-bg-color: var(--vp-c-bg-soft);--vp-carbon-ads-hover-text-color: var(--vp-c-brand-1);--vp-carbon-ads-hover-poweredby-color: var(--vp-c-text-1)}:root{--vp-local-search-bg: var(--vp-c-bg);--vp-local-search-result-bg: var(--vp-c-bg);--vp-local-search-result-border: var(--vp-c-divider);--vp-local-search-result-selected-bg: var(--vp-c-bg);--vp-local-search-result-selected-border: var(--vp-c-brand-1);--vp-local-search-highlight-bg: var(--vp-c-brand-1);--vp-local-search-highlight-text: var(--vp-c-neutral-inverse)}@media (prefers-reduced-motion: reduce){*,:before,:after{animation-delay:-1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important;background-attachment:initial!important;scroll-behavior:auto!important;transition-duration:0s!important;transition-delay:0s!important}}*,:before,:after{box-sizing:border-box}html{line-height:1.4;font-size:16px;-webkit-text-size-adjust:100%}html.dark{color-scheme:dark}body{margin:0;width:100%;min-width:320px;min-height:100vh;line-height:24px;font-family:var(--vp-font-family-base);font-size:16px;font-weight:400;color:var(--vp-c-text-1);background-color:var(--vp-c-bg);font-synthesis:style;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}main{display:block}h1,h2,h3,h4,h5,h6{margin:0;line-height:24px;font-size:16px;font-weight:400}p{margin:0}strong,b{font-weight:600}a,area,button,[role=button],input,label,select,summary,textarea{touch-action:manipulation}a{color:inherit;text-decoration:inherit}ol,ul{list-style:none;margin:0;padding:0}blockquote{margin:0}pre,code,kbd,samp{font-family:var(--vp-font-family-mono)}img,svg,video,canvas,audio,iframe,embed,object{display:block}figure{margin:0}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{border:0;padding:0;line-height:inherit;color:inherit}button{padding:0;font-family:inherit;background-color:transparent;background-image:none}button:enabled,[role=button]:enabled{cursor:pointer}button:focus,button:focus-visible{outline:1px dotted;outline:4px auto -webkit-focus-ring-color}button:focus:not(:focus-visible){outline:none!important}input:focus,textarea:focus,select:focus{outline:none}table{border-collapse:collapse}input{background-color:transparent}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:var(--vp-c-text-3)}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:var(--vp-c-text-3)}input::placeholder,textarea::placeholder{color:var(--vp-c-text-3)}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}textarea{resize:vertical}select{-webkit-appearance:none}fieldset{margin:0;padding:0}h1,h2,h3,h4,h5,h6,li,p{overflow-wrap:break-word}vite-error-overlay{z-index:9999}mjx-container{overflow-x:auto}mjx-container>svg{display:inline-block;margin:auto}[class^=vpi-],[class*=" vpi-"],.vp-icon{width:1em;height:1em}[class^=vpi-].bg,[class*=" vpi-"].bg,.vp-icon.bg{background-size:100% 100%;background-color:transparent}[class^=vpi-]:not(.bg),[class*=" vpi-"]:not(.bg),.vp-icon:not(.bg){-webkit-mask:var(--icon) no-repeat;mask:var(--icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit}.vpi-align-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M21 6H3M15 12H3M17 18H3'/%3E%3C/svg%3E")}.vpi-arrow-right,.vpi-arrow-down,.vpi-arrow-left,.vpi-arrow-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5l7 7-7 7'/%3E%3C/svg%3E")}.vpi-chevron-right,.vpi-chevron-down,.vpi-chevron-left,.vpi-chevron-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E")}.vpi-chevron-down,.vpi-arrow-down{transform:rotate(90deg)}.vpi-chevron-left,.vpi-arrow-left{transform:rotate(180deg)}.vpi-chevron-up,.vpi-arrow-up{transform:rotate(-90deg)}.vpi-square-pen{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7'/%3E%3Cpath d='M18.375 2.625a2.121 2.121 0 1 1 3 3L12 15l-4 1 1-4Z'/%3E%3C/svg%3E")}.vpi-plus{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5v14'/%3E%3C/svg%3E")}.vpi-sun{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Cpath d='M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41'/%3E%3C/svg%3E")}.vpi-moon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z'/%3E%3C/svg%3E")}.vpi-more-horizontal{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='1'/%3E%3Ccircle cx='19' cy='12' r='1'/%3E%3Ccircle cx='5' cy='12' r='1'/%3E%3C/svg%3E")}.vpi-languages{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m5 8 6 6M4 14l6-6 2-3M2 5h12M7 2h1M22 22l-5-10-5 10M14 18h6'/%3E%3C/svg%3E")}.vpi-heart{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z'/%3E%3C/svg%3E")}.vpi-search{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E")}.vpi-layout-list{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='7' height='7' x='3' y='3' rx='1'/%3E%3Crect width='7' height='7' x='3' y='14' rx='1'/%3E%3Cpath d='M14 4h7M14 9h7M14 15h7M14 20h7'/%3E%3C/svg%3E")}.vpi-delete{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M20 5H9l-7 7 7 7h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2ZM18 9l-6 6M12 9l6 6'/%3E%3C/svg%3E")}.vpi-corner-down-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 10-5 5 5 5'/%3E%3Cpath d='M20 4v7a4 4 0 0 1-4 4H4'/%3E%3C/svg%3E")}:root{--vp-icon-copy: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3C/svg%3E");--vp-icon-copied: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3Cpath d='m9 14 2 2 4-4'/%3E%3C/svg%3E")}.vpi-social-discord{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0 12.64 12.64 0 0 0-.617-1.25.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057 19.9 19.9 0 0 0 5.993 3.03.078.078 0 0 0 .084-.028c.462-.63.874-1.295 1.226-1.994a.076.076 0 0 0-.041-.106 13.107 13.107 0 0 1-1.872-.892.077.077 0 0 1-.008-.128 10.2 10.2 0 0 0 .372-.292.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127 12.299 12.299 0 0 1-1.873.892.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028 19.839 19.839 0 0 0 6.002-3.03.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.946 2.418-2.157 2.418Z'/%3E%3C/svg%3E")}.vpi-social-facebook{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9.101 23.691v-7.98H6.627v-3.667h2.474v-1.58c0-4.085 1.848-5.978 5.858-5.978.401 0 .955.042 1.468.103a8.68 8.68 0 0 1 1.141.195v3.325a8.623 8.623 0 0 0-.653-.036 26.805 26.805 0 0 0-.733-.009c-.707 0-1.259.096-1.675.309a1.686 1.686 0 0 0-.679.622c-.258.42-.374.995-.374 1.752v1.297h3.919l-.386 2.103-.287 1.564h-3.246v8.245C19.396 23.238 24 18.179 24 12.044c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.628 3.874 10.35 9.101 11.647Z'/%3E%3C/svg%3E")}.vpi-social-github{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E")}.vpi-social-instagram{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7.03.084c-1.277.06-2.149.264-2.91.563a5.874 5.874 0 0 0-2.124 1.388 5.878 5.878 0 0 0-1.38 2.127C.321 4.926.12 5.8.064 7.076.008 8.354-.005 8.764.001 12.023c.007 3.259.021 3.667.083 4.947.061 1.277.264 2.149.563 2.911.308.789.72 1.457 1.388 2.123a5.872 5.872 0 0 0 2.129 1.38c.763.295 1.636.496 2.913.552 1.278.056 1.689.069 4.947.063 3.257-.007 3.668-.021 4.947-.082 1.28-.06 2.147-.265 2.91-.563a5.881 5.881 0 0 0 2.123-1.388 5.881 5.881 0 0 0 1.38-2.129c.295-.763.496-1.636.551-2.912.056-1.28.07-1.69.063-4.948-.006-3.258-.02-3.667-.081-4.947-.06-1.28-.264-2.148-.564-2.911a5.892 5.892 0 0 0-1.387-2.123 5.857 5.857 0 0 0-2.128-1.38C19.074.322 18.202.12 16.924.066 15.647.009 15.236-.006 11.977 0 8.718.008 8.31.021 7.03.084m.14 21.693c-1.17-.05-1.805-.245-2.228-.408a3.736 3.736 0 0 1-1.382-.895 3.695 3.695 0 0 1-.9-1.378c-.165-.423-.363-1.058-.417-2.228-.06-1.264-.072-1.644-.08-4.848-.006-3.204.006-3.583.061-4.848.05-1.169.246-1.805.408-2.228.216-.561.477-.96.895-1.382a3.705 3.705 0 0 1 1.379-.9c.423-.165 1.057-.361 2.227-.417 1.265-.06 1.644-.072 4.848-.08 3.203-.006 3.583.006 4.85.062 1.168.05 1.804.244 2.227.408.56.216.96.475 1.382.895.421.42.681.817.9 1.378.165.422.362 1.056.417 2.227.06 1.265.074 1.645.08 4.848.005 3.203-.006 3.583-.061 4.848-.051 1.17-.245 1.805-.408 2.23-.216.56-.477.96-.896 1.38a3.705 3.705 0 0 1-1.378.9c-.422.165-1.058.362-2.226.418-1.266.06-1.645.072-4.85.079-3.204.007-3.582-.006-4.848-.06m9.783-16.192a1.44 1.44 0 1 0 1.437-1.442 1.44 1.44 0 0 0-1.437 1.442M5.839 12.012a6.161 6.161 0 1 0 12.323-.024 6.162 6.162 0 0 0-12.323.024M8 12.008A4 4 0 1 1 12.008 16 4 4 0 0 1 8 12.008'/%3E%3C/svg%3E")}.vpi-social-linkedin{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 0 1-2.063-2.065 2.064 2.064 0 1 1 2.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z'/%3E%3C/svg%3E")}.vpi-social-mastodon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M23.268 5.313c-.35-2.578-2.617-4.61-5.304-5.004C17.51.242 15.792 0 11.813 0h-.03c-3.98 0-4.835.242-5.288.309C3.882.692 1.496 2.518.917 5.127.64 6.412.61 7.837.661 9.143c.074 1.874.088 3.745.26 5.611.118 1.24.325 2.47.62 3.68.55 2.237 2.777 4.098 4.96 4.857 2.336.792 4.849.923 7.256.38.265-.061.527-.132.786-.213.585-.184 1.27-.39 1.774-.753a.057.057 0 0 0 .023-.043v-1.809a.052.052 0 0 0-.02-.041.053.053 0 0 0-.046-.01 20.282 20.282 0 0 1-4.709.545c-2.73 0-3.463-1.284-3.674-1.818a5.593 5.593 0 0 1-.319-1.433.053.053 0 0 1 .066-.054c1.517.363 3.072.546 4.632.546.376 0 .75 0 1.125-.01 1.57-.044 3.224-.124 4.768-.422.038-.008.077-.015.11-.024 2.435-.464 4.753-1.92 4.989-5.604.008-.145.03-1.52.03-1.67.002-.512.167-3.63-.024-5.545zm-3.748 9.195h-2.561V8.29c0-1.309-.55-1.976-1.67-1.976-1.23 0-1.846.79-1.846 2.35v3.403h-2.546V8.663c0-1.56-.617-2.35-1.848-2.35-1.112 0-1.668.668-1.67 1.977v6.218H4.822V8.102c0-1.31.337-2.35 1.011-3.12.696-.77 1.608-1.164 2.74-1.164 1.311 0 2.302.5 2.962 1.498l.638 1.06.638-1.06c.66-.999 1.65-1.498 2.96-1.498 1.13 0 2.043.395 2.74 1.164.675.77 1.012 1.81 1.012 3.12z'/%3E%3C/svg%3E")}.vpi-social-npm{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M1.763 0C.786 0 0 .786 0 1.763v20.474C0 23.214.786 24 1.763 24h20.474c.977 0 1.763-.786 1.763-1.763V1.763C24 .786 23.214 0 22.237 0zM5.13 5.323l13.837.019-.009 13.836h-3.464l.01-10.382h-3.456L12.04 19.17H5.113z'/%3E%3C/svg%3E")}.vpi-social-slack{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zm1.271 0a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zm0 1.271a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zm10.122 2.521a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zm-1.268 0a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zm-2.523 10.122a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zm0-1.268a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z'/%3E%3C/svg%3E")}.vpi-social-twitter,.vpi-social-x{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M18.901 1.153h3.68l-8.04 9.19L24 22.846h-7.406l-5.8-7.584-6.638 7.584H.474l8.6-9.83L0 1.154h7.594l5.243 6.932ZM17.61 20.644h2.039L6.486 3.24H4.298Z'/%3E%3C/svg%3E")}.vpi-social-youtube{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z'/%3E%3C/svg%3E")}.visually-hidden{position:absolute;width:1px;height:1px;white-space:nowrap;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden}.custom-block{border:1px solid transparent;border-radius:8px;padding:16px 16px 8px;line-height:24px;font-size:var(--vp-custom-block-font-size);color:var(--vp-c-text-2)}.custom-block.info{border-color:var(--vp-custom-block-info-border);color:var(--vp-custom-block-info-text);background-color:var(--vp-custom-block-info-bg)}.custom-block.info a,.custom-block.info code{color:var(--vp-c-brand-1)}.custom-block.info a:hover,.custom-block.info a:hover>code{color:var(--vp-c-brand-2)}.custom-block.info code{background-color:var(--vp-custom-block-info-code-bg)}.custom-block.note{border-color:var(--vp-custom-block-note-border);color:var(--vp-custom-block-note-text);background-color:var(--vp-custom-block-note-bg)}.custom-block.note a,.custom-block.note code{color:var(--vp-c-brand-1)}.custom-block.note a:hover,.custom-block.note a:hover>code{color:var(--vp-c-brand-2)}.custom-block.note code{background-color:var(--vp-custom-block-note-code-bg)}.custom-block.tip{border-color:var(--vp-custom-block-tip-border);color:var(--vp-custom-block-tip-text);background-color:var(--vp-custom-block-tip-bg)}.custom-block.tip a,.custom-block.tip code{color:var(--vp-c-tip-1)}.custom-block.tip a:hover,.custom-block.tip a:hover>code{color:var(--vp-c-tip-2)}.custom-block.tip code{background-color:var(--vp-custom-block-tip-code-bg)}.custom-block.important{border-color:var(--vp-custom-block-important-border);color:var(--vp-custom-block-important-text);background-color:var(--vp-custom-block-important-bg)}.custom-block.important a,.custom-block.important code{color:var(--vp-c-important-1)}.custom-block.important a:hover,.custom-block.important a:hover>code{color:var(--vp-c-important-2)}.custom-block.important code{background-color:var(--vp-custom-block-important-code-bg)}.custom-block.warning{border-color:var(--vp-custom-block-warning-border);color:var(--vp-custom-block-warning-text);background-color:var(--vp-custom-block-warning-bg)}.custom-block.warning a,.custom-block.warning code{color:var(--vp-c-warning-1)}.custom-block.warning a:hover,.custom-block.warning a:hover>code{color:var(--vp-c-warning-2)}.custom-block.warning code{background-color:var(--vp-custom-block-warning-code-bg)}.custom-block.danger{border-color:var(--vp-custom-block-danger-border);color:var(--vp-custom-block-danger-text);background-color:var(--vp-custom-block-danger-bg)}.custom-block.danger a,.custom-block.danger code{color:var(--vp-c-danger-1)}.custom-block.danger a:hover,.custom-block.danger a:hover>code{color:var(--vp-c-danger-2)}.custom-block.danger code{background-color:var(--vp-custom-block-danger-code-bg)}.custom-block.caution{border-color:var(--vp-custom-block-caution-border);color:var(--vp-custom-block-caution-text);background-color:var(--vp-custom-block-caution-bg)}.custom-block.caution a,.custom-block.caution code{color:var(--vp-c-caution-1)}.custom-block.caution a:hover,.custom-block.caution a:hover>code{color:var(--vp-c-caution-2)}.custom-block.caution code{background-color:var(--vp-custom-block-caution-code-bg)}.custom-block.details{border-color:var(--vp-custom-block-details-border);color:var(--vp-custom-block-details-text);background-color:var(--vp-custom-block-details-bg)}.custom-block.details a{color:var(--vp-c-brand-1)}.custom-block.details a:hover,.custom-block.details a:hover>code{color:var(--vp-c-brand-2)}.custom-block.details code{background-color:var(--vp-custom-block-details-code-bg)}.custom-block-title{font-weight:600}.custom-block p+p{margin:8px 0}.custom-block.details summary{margin:0 0 8px;font-weight:700;cursor:pointer;-webkit-user-select:none;user-select:none}.custom-block.details summary+p{margin:8px 0}.custom-block a{color:inherit;font-weight:600;text-decoration:underline;text-underline-offset:2px;transition:opacity .25s}.custom-block a:hover{opacity:.75}.custom-block code{font-size:var(--vp-custom-block-code-font-size)}.custom-block.custom-block th,.custom-block.custom-block blockquote>p{font-size:var(--vp-custom-block-font-size);color:inherit}.dark .vp-code span{color:var(--shiki-dark, inherit)}html:not(.dark) .vp-code span{color:var(--shiki-light, inherit)}.vp-code-group{margin-top:16px}.vp-code-group .tabs{position:relative;display:flex;margin-right:-24px;margin-left:-24px;padding:0 12px;background-color:var(--vp-code-tab-bg);overflow-x:auto;overflow-y:hidden;box-shadow:inset 0 -1px var(--vp-code-tab-divider)}@media (min-width: 640px){.vp-code-group .tabs{margin-right:0;margin-left:0;border-radius:8px 8px 0 0}}.vp-code-group .tabs input{position:fixed;opacity:0;pointer-events:none}.vp-code-group .tabs label{position:relative;display:inline-block;border-bottom:1px solid transparent;padding:0 12px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-code-tab-text-color);white-space:nowrap;cursor:pointer;transition:color .25s}.vp-code-group .tabs label:after{position:absolute;right:8px;bottom:-1px;left:8px;z-index:1;height:2px;border-radius:2px;content:"";background-color:transparent;transition:background-color .25s}.vp-code-group label:hover{color:var(--vp-code-tab-hover-text-color)}.vp-code-group input:checked+label{color:var(--vp-code-tab-active-text-color)}.vp-code-group input:checked+label:after{background-color:var(--vp-code-tab-active-bar-color)}.vp-code-group div[class*=language-],.vp-block{display:none;margin-top:0!important;border-top-left-radius:0!important;border-top-right-radius:0!important}.vp-code-group div[class*=language-].active,.vp-block.active{display:block}.vp-block{padding:20px 24px}.vp-doc h1,.vp-doc h2,.vp-doc h3,.vp-doc h4,.vp-doc h5,.vp-doc h6{position:relative;font-weight:600;outline:none}.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:28px}.vp-doc h2{margin:48px 0 16px;border-top:1px solid var(--vp-c-divider);padding-top:24px;letter-spacing:-.02em;line-height:32px;font-size:24px}.vp-doc h3{margin:32px 0 0;letter-spacing:-.01em;line-height:28px;font-size:20px}.vp-doc h4{margin:24px 0 0;letter-spacing:-.01em;line-height:24px;font-size:18px}.vp-doc .header-anchor{position:absolute;top:0;left:0;margin-left:-.87em;font-weight:500;-webkit-user-select:none;user-select:none;opacity:0;text-decoration:none;transition:color .25s,opacity .25s}.vp-doc .header-anchor:before{content:var(--vp-header-anchor-symbol)}.vp-doc h1:hover .header-anchor,.vp-doc h1 .header-anchor:focus,.vp-doc h2:hover .header-anchor,.vp-doc h2 .header-anchor:focus,.vp-doc h3:hover .header-anchor,.vp-doc h3 .header-anchor:focus,.vp-doc h4:hover .header-anchor,.vp-doc h4 .header-anchor:focus,.vp-doc h5:hover .header-anchor,.vp-doc h5 .header-anchor:focus,.vp-doc h6:hover .header-anchor,.vp-doc h6 .header-anchor:focus{opacity:1}@media (min-width: 768px){.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:32px}}.vp-doc h2 .header-anchor{top:24px}.vp-doc p,.vp-doc summary{margin:16px 0}.vp-doc p{line-height:28px}.vp-doc blockquote{margin:16px 0;border-left:2px solid var(--vp-c-divider);padding-left:16px;transition:border-color .5s;color:var(--vp-c-text-2)}.vp-doc blockquote>p{margin:0;font-size:16px;transition:color .5s}.vp-doc a{font-weight:500;color:var(--vp-c-brand-1);text-decoration:underline;text-underline-offset:2px;transition:color .25s,opacity .25s}.vp-doc a:hover{color:var(--vp-c-brand-2)}.vp-doc strong{font-weight:600}.vp-doc ul,.vp-doc ol{padding-left:1.25rem;margin:16px 0}.vp-doc ul{list-style:disc}.vp-doc ol{list-style:decimal}.vp-doc li+li{margin-top:8px}.vp-doc li>ol,.vp-doc li>ul{margin:8px 0 0}.vp-doc table{display:block;border-collapse:collapse;margin:20px 0;overflow-x:auto}.vp-doc tr{background-color:var(--vp-c-bg);border-top:1px solid var(--vp-c-divider);transition:background-color .5s}.vp-doc tr:nth-child(2n){background-color:var(--vp-c-bg-soft)}.vp-doc th,.vp-doc td{border:1px solid var(--vp-c-divider);padding:8px 16px}.vp-doc th{text-align:left;font-size:14px;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-doc td{font-size:14px}.vp-doc hr{margin:16px 0;border:none;border-top:1px solid var(--vp-c-divider)}.vp-doc .custom-block{margin:16px 0}.vp-doc .custom-block p{margin:8px 0;line-height:24px}.vp-doc .custom-block p:first-child{margin:0}.vp-doc .custom-block div[class*=language-]{margin:8px 0;border-radius:8px}.vp-doc .custom-block div[class*=language-] code{font-weight:400;background-color:transparent}.vp-doc .custom-block .vp-code-group .tabs{margin:0;border-radius:8px 8px 0 0}.vp-doc :not(pre,h1,h2,h3,h4,h5,h6)>code{font-size:var(--vp-code-font-size);color:var(--vp-code-color)}.vp-doc :not(pre)>code{border-radius:4px;padding:3px 6px;background-color:var(--vp-code-bg);transition:color .25s,background-color .5s}.vp-doc a>code{color:var(--vp-code-link-color)}.vp-doc a:hover>code{color:var(--vp-code-link-hover-color)}.vp-doc h1>code,.vp-doc h2>code,.vp-doc h3>code,.vp-doc h4>code{font-size:.9em}.vp-doc div[class*=language-],.vp-block{position:relative;margin:16px -24px;background-color:var(--vp-code-block-bg);overflow-x:auto;transition:background-color .5s}@media (min-width: 640px){.vp-doc div[class*=language-],.vp-block{border-radius:8px;margin:16px 0}}@media (max-width: 639px){.vp-doc li div[class*=language-]{border-radius:8px 0 0 8px}}.vp-doc div[class*=language-]+div[class*=language-],.vp-doc div[class$=-api]+div[class*=language-],.vp-doc div[class*=language-]+div[class$=-api]>div[class*=language-]{margin-top:-8px}.vp-doc [class*=language-] pre,.vp-doc [class*=language-] code{direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}.vp-doc [class*=language-] pre{position:relative;z-index:1;margin:0;padding:20px 0;background:transparent;overflow-x:auto}.vp-doc [class*=language-] code{display:block;padding:0 24px;width:fit-content;min-width:100%;line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-block-color);transition:color .5s}.vp-doc [class*=language-] code .highlighted{background-color:var(--vp-code-line-highlight-color);transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .highlighted.error{background-color:var(--vp-code-line-error-color)}.vp-doc [class*=language-] code .highlighted.warning{background-color:var(--vp-code-line-warning-color)}.vp-doc [class*=language-] code .diff{transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .diff:before{position:absolute;left:10px}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){filter:blur(.095rem);opacity:.4;transition:filter .35s,opacity .35s}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){opacity:.7;transition:filter .35s,opacity .35s}.vp-doc [class*=language-]:hover .has-focused-lines .line:not(.has-focus){filter:blur(0);opacity:1}.vp-doc [class*=language-] code .diff.remove{background-color:var(--vp-code-line-diff-remove-color);opacity:.7}.vp-doc [class*=language-] code .diff.remove:before{content:"-";color:var(--vp-code-line-diff-remove-symbol-color)}.vp-doc [class*=language-] code .diff.add{background-color:var(--vp-code-line-diff-add-color)}.vp-doc [class*=language-] code .diff.add:before{content:"+";color:var(--vp-code-line-diff-add-symbol-color)}.vp-doc div[class*=language-].line-numbers-mode{padding-left:32px}.vp-doc .line-numbers-wrapper{position:absolute;top:0;bottom:0;left:0;z-index:3;border-right:1px solid var(--vp-code-block-divider-color);padding-top:20px;width:32px;text-align:center;font-family:var(--vp-font-family-mono);line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-line-number-color);transition:border-color .5s,color .5s}.vp-doc [class*=language-]>button.copy{direction:ltr;position:absolute;top:12px;right:12px;z-index:3;border:1px solid var(--vp-code-copy-code-border-color);border-radius:4px;width:40px;height:40px;background-color:var(--vp-code-copy-code-bg);opacity:0;cursor:pointer;background-image:var(--vp-icon-copy);background-position:50%;background-size:20px;background-repeat:no-repeat;transition:border-color .25s,background-color .25s,opacity .25s}.vp-doc [class*=language-]:hover>button.copy,.vp-doc [class*=language-]>button.copy:focus{opacity:1}.vp-doc [class*=language-]>button.copy:hover,.vp-doc [class*=language-]>button.copy.copied{border-color:var(--vp-code-copy-code-hover-border-color);background-color:var(--vp-code-copy-code-hover-bg)}.vp-doc [class*=language-]>button.copy.copied,.vp-doc [class*=language-]>button.copy:hover.copied{border-radius:0 4px 4px 0;background-color:var(--vp-code-copy-code-hover-bg);background-image:var(--vp-icon-copied)}.vp-doc [class*=language-]>button.copy.copied:before,.vp-doc [class*=language-]>button.copy:hover.copied:before{position:relative;top:-1px;transform:translate(calc(-100% - 1px));display:flex;justify-content:center;align-items:center;border:1px solid var(--vp-code-copy-code-hover-border-color);border-right:0;border-radius:4px 0 0 4px;padding:0 10px;width:fit-content;height:40px;text-align:center;font-size:12px;font-weight:500;color:var(--vp-code-copy-code-active-text);background-color:var(--vp-code-copy-code-hover-bg);white-space:nowrap;content:var(--vp-code-copy-copied-text-content)}.vp-doc [class*=language-]>span.lang{position:absolute;top:2px;right:8px;z-index:2;font-size:12px;font-weight:500;color:var(--vp-code-lang-color);transition:color .4s,opacity .4s}.vp-doc [class*=language-]:hover>button.copy+span.lang,.vp-doc [class*=language-]>button.copy:focus+span.lang{opacity:0}.vp-doc .VPTeamMembers{margin-top:24px}.vp-doc .VPTeamMembers.small.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}.vp-doc .VPTeamMembers.small.count-2 .container,.vp-doc .VPTeamMembers.small.count-3 .container{max-width:100%!important}.vp-doc .VPTeamMembers.medium.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}:is(.vp-external-link-icon,.vp-doc a[href*="://"],.vp-doc a[target=_blank]):not(.no-icon):after{display:inline-block;margin-top:-1px;margin-left:4px;width:11px;height:11px;background:currentColor;color:var(--vp-c-text-3);flex-shrink:0;--icon: url("data:image/svg+xml, %3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' %3E%3Cpath d='M0 0h24v24H0V0z' fill='none' /%3E%3Cpath d='M9 5v2h6.59L4 18.59 5.41 20 17 8.41V15h2V5H9z' /%3E%3C/svg%3E");-webkit-mask-image:var(--icon);mask-image:var(--icon)}.vp-external-link-icon:after{content:""}.external-link-icon-enabled :is(.vp-doc a[href*="://"],.vp-doc a[target=_blank]):after{content:"";color:currentColor}.vp-sponsor{border-radius:16px;overflow:hidden}.vp-sponsor.aside{border-radius:12px}.vp-sponsor-section+.vp-sponsor-section{margin-top:4px}.vp-sponsor-tier{margin:0 0 4px!important;text-align:center;letter-spacing:1px!important;line-height:24px;width:100%;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-sponsor.normal .vp-sponsor-tier{padding:13px 0 11px;font-size:14px}.vp-sponsor.aside .vp-sponsor-tier{padding:9px 0 7px;font-size:12px}.vp-sponsor-grid+.vp-sponsor-tier{margin-top:4px}.vp-sponsor-grid{display:flex;flex-wrap:wrap;gap:4px}.vp-sponsor-grid.xmini .vp-sponsor-grid-link{height:64px}.vp-sponsor-grid.xmini .vp-sponsor-grid-image{max-width:64px;max-height:22px}.vp-sponsor-grid.mini .vp-sponsor-grid-link{height:72px}.vp-sponsor-grid.mini .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.small .vp-sponsor-grid-link{height:96px}.vp-sponsor-grid.small .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.medium .vp-sponsor-grid-link{height:112px}.vp-sponsor-grid.medium .vp-sponsor-grid-image{max-width:120px;max-height:36px}.vp-sponsor-grid.big .vp-sponsor-grid-link{height:184px}.vp-sponsor-grid.big .vp-sponsor-grid-image{max-width:192px;max-height:56px}.vp-sponsor-grid[data-vp-grid="2"] .vp-sponsor-grid-item{width:calc((100% - 4px)/2)}.vp-sponsor-grid[data-vp-grid="3"] .vp-sponsor-grid-item{width:calc((100% - 4px * 2) / 3)}.vp-sponsor-grid[data-vp-grid="4"] .vp-sponsor-grid-item{width:calc((100% - 12px)/4)}.vp-sponsor-grid[data-vp-grid="5"] .vp-sponsor-grid-item{width:calc((100% - 16px)/5)}.vp-sponsor-grid[data-vp-grid="6"] .vp-sponsor-grid-item{width:calc((100% - 4px * 5) / 6)}.vp-sponsor-grid-item{flex-shrink:0;width:100%;background-color:var(--vp-c-bg-soft);transition:background-color .25s}.vp-sponsor-grid-item:hover{background-color:var(--vp-c-default-soft)}.vp-sponsor-grid-item:hover .vp-sponsor-grid-image{filter:grayscale(0) invert(0)}.vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.dark .vp-sponsor-grid-item:hover{background-color:var(--vp-c-white)}.dark .vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.vp-sponsor-grid-link{display:flex}.vp-sponsor-grid-box{display:flex;justify-content:center;align-items:center;width:100%}.vp-sponsor-grid-image{max-width:100%;filter:grayscale(1);transition:filter .25s}.dark .vp-sponsor-grid-image{filter:grayscale(1) invert(1)}.VPBadge{display:inline-block;margin-left:2px;border:1px solid transparent;border-radius:12px;padding:0 10px;line-height:22px;font-size:12px;font-weight:500;transform:translateY(-2px)}.VPBadge.small{padding:0 6px;line-height:18px;font-size:10px;transform:translateY(-8px)}.VPDocFooter .VPBadge{display:none}.vp-doc h1>.VPBadge{margin-top:4px;vertical-align:top}.vp-doc h2>.VPBadge{margin-top:3px;padding:0 8px;vertical-align:top}.vp-doc h3>.VPBadge{vertical-align:middle}.vp-doc h4>.VPBadge,.vp-doc h5>.VPBadge,.vp-doc h6>.VPBadge{vertical-align:middle;line-height:18px}.VPBadge.info{border-color:var(--vp-badge-info-border);color:var(--vp-badge-info-text);background-color:var(--vp-badge-info-bg)}.VPBadge.tip{border-color:var(--vp-badge-tip-border);color:var(--vp-badge-tip-text);background-color:var(--vp-badge-tip-bg)}.VPBadge.warning{border-color:var(--vp-badge-warning-border);color:var(--vp-badge-warning-text);background-color:var(--vp-badge-warning-bg)}.VPBadge.danger{border-color:var(--vp-badge-danger-border);color:var(--vp-badge-danger-text);background-color:var(--vp-badge-danger-bg)}.VPBackdrop[data-v-b06cdb19]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--vp-z-index-backdrop);background:var(--vp-backdrop-bg-color);transition:opacity .5s}.VPBackdrop.fade-enter-from[data-v-b06cdb19],.VPBackdrop.fade-leave-to[data-v-b06cdb19]{opacity:0}.VPBackdrop.fade-leave-active[data-v-b06cdb19]{transition-duration:.25s}@media (min-width: 1280px){.VPBackdrop[data-v-b06cdb19]{display:none}}.NotFound[data-v-951cab6c]{padding:64px 24px 96px;text-align:center}@media (min-width: 768px){.NotFound[data-v-951cab6c]{padding:96px 32px 168px}}.code[data-v-951cab6c]{line-height:64px;font-size:64px;font-weight:600}.title[data-v-951cab6c]{padding-top:12px;letter-spacing:2px;line-height:20px;font-size:20px;font-weight:700}.divider[data-v-951cab6c]{margin:24px auto 18px;width:64px;height:1px;background-color:var(--vp-c-divider)}.quote[data-v-951cab6c]{margin:0 auto;max-width:256px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.action[data-v-951cab6c]{padding-top:20px}.link[data-v-951cab6c]{display:inline-block;border:1px solid var(--vp-c-brand-1);border-radius:16px;padding:3px 16px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:border-color .25s,color .25s}.link[data-v-951cab6c]:hover{border-color:var(--vp-c-brand-2);color:var(--vp-c-brand-2)}.root[data-v-3f927ebe]{position:relative;z-index:1}.nested[data-v-3f927ebe]{padding-right:16px;padding-left:16px}.outline-link[data-v-3f927ebe]{display:block;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .5s}.outline-link[data-v-3f927ebe]:hover,.outline-link.active[data-v-3f927ebe]{color:var(--vp-c-text-1);transition:color .25s}.outline-link.nested[data-v-3f927ebe]{padding-left:13px}.VPDocAsideOutline[data-v-b38bf2ff]{display:none}.VPDocAsideOutline.has-outline[data-v-b38bf2ff]{display:block}.content[data-v-b38bf2ff]{position:relative;border-left:1px solid var(--vp-c-divider);padding-left:16px;font-size:13px;font-weight:500}.outline-marker[data-v-b38bf2ff]{position:absolute;top:32px;left:-1px;z-index:0;opacity:0;width:2px;border-radius:2px;height:18px;background-color:var(--vp-c-brand-1);transition:top .25s cubic-bezier(0,1,.5,1),background-color .5s,opacity .25s}.outline-title[data-v-b38bf2ff]{line-height:32px;font-size:14px;font-weight:600}.VPDocAside[data-v-6d7b3c46]{display:flex;flex-direction:column;flex-grow:1}.spacer[data-v-6d7b3c46]{flex-grow:1}.VPDocAside[data-v-6d7b3c46] .spacer+.VPDocAsideSponsors,.VPDocAside[data-v-6d7b3c46] .spacer+.VPDocAsideCarbonAds{margin-top:24px}.VPDocAside[data-v-6d7b3c46] .VPDocAsideSponsors+.VPDocAsideCarbonAds{margin-top:16px}.VPLastUpdated[data-v-475f71b8]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 640px){.VPLastUpdated[data-v-475f71b8]{line-height:32px;font-size:14px;font-weight:500}}.VPDocFooter[data-v-4f9813fa]{margin-top:64px}.edit-info[data-v-4f9813fa]{padding-bottom:18px}@media (min-width: 640px){.edit-info[data-v-4f9813fa]{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px}}.edit-link-button[data-v-4f9813fa]{display:flex;align-items:center;border:0;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.edit-link-button[data-v-4f9813fa]:hover{color:var(--vp-c-brand-2)}.edit-link-icon[data-v-4f9813fa]{margin-right:8px}.prev-next[data-v-4f9813fa]{border-top:1px solid var(--vp-c-divider);padding-top:24px;display:grid;grid-row-gap:8px}@media (min-width: 640px){.prev-next[data-v-4f9813fa]{grid-template-columns:repeat(2,1fr);grid-column-gap:16px}}.pager-link[data-v-4f9813fa]{display:block;border:1px solid var(--vp-c-divider);border-radius:8px;padding:11px 16px 13px;width:100%;height:100%;transition:border-color .25s}.pager-link[data-v-4f9813fa]:hover{border-color:var(--vp-c-brand-1)}.pager-link.next[data-v-4f9813fa]{margin-left:auto;text-align:right}.desc[data-v-4f9813fa]{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.title[data-v-4f9813fa]{display:block;line-height:20px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.VPDoc[data-v-83890dd9]{padding:32px 24px 96px;width:100%}@media (min-width: 768px){.VPDoc[data-v-83890dd9]{padding:48px 32px 128px}}@media (min-width: 960px){.VPDoc[data-v-83890dd9]{padding:48px 32px 0}.VPDoc:not(.has-sidebar) .container[data-v-83890dd9]{display:flex;justify-content:center;max-width:992px}.VPDoc:not(.has-sidebar) .content[data-v-83890dd9]{max-width:752px}}@media (min-width: 1280px){.VPDoc .container[data-v-83890dd9]{display:flex;justify-content:center}.VPDoc .aside[data-v-83890dd9]{display:block}}@media (min-width: 1440px){.VPDoc:not(.has-sidebar) .content[data-v-83890dd9]{max-width:784px}.VPDoc:not(.has-sidebar) .container[data-v-83890dd9]{max-width:1104px}}.container[data-v-83890dd9]{margin:0 auto;width:100%}.aside[data-v-83890dd9]{position:relative;display:none;order:2;flex-grow:1;padding-left:32px;width:100%;max-width:256px}.left-aside[data-v-83890dd9]{order:1;padding-left:unset;padding-right:32px}.aside-container[data-v-83890dd9]{position:fixed;top:0;padding-top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + var(--vp-doc-top-height, 0px) + 48px);width:224px;height:100vh;overflow-x:hidden;overflow-y:auto;scrollbar-width:none}.aside-container[data-v-83890dd9]::-webkit-scrollbar{display:none}.aside-curtain[data-v-83890dd9]{position:fixed;bottom:0;z-index:10;width:224px;height:32px;background:linear-gradient(transparent,var(--vp-c-bg) 70%)}.aside-content[data-v-83890dd9]{display:flex;flex-direction:column;min-height:calc(100vh - (var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px));padding-bottom:32px}.content[data-v-83890dd9]{position:relative;margin:0 auto;width:100%}@media (min-width: 960px){.content[data-v-83890dd9]{padding:0 32px 128px}}@media (min-width: 1280px){.content[data-v-83890dd9]{order:1;margin:0;min-width:640px}}.content-container[data-v-83890dd9]{margin:0 auto}.VPDoc.has-aside .content-container[data-v-83890dd9]{max-width:688px}.VPButton[data-v-14206e74]{display:inline-block;border:1px solid transparent;text-align:center;font-weight:600;white-space:nowrap;transition:color .25s,border-color .25s,background-color .25s}.VPButton[data-v-14206e74]:active{transition:color .1s,border-color .1s,background-color .1s}.VPButton.medium[data-v-14206e74]{border-radius:20px;padding:0 20px;line-height:38px;font-size:14px}.VPButton.big[data-v-14206e74]{border-radius:24px;padding:0 24px;line-height:46px;font-size:16px}.VPButton.brand[data-v-14206e74]{border-color:var(--vp-button-brand-border);color:var(--vp-button-brand-text);background-color:var(--vp-button-brand-bg)}.VPButton.brand[data-v-14206e74]:hover{border-color:var(--vp-button-brand-hover-border);color:var(--vp-button-brand-hover-text);background-color:var(--vp-button-brand-hover-bg)}.VPButton.brand[data-v-14206e74]:active{border-color:var(--vp-button-brand-active-border);color:var(--vp-button-brand-active-text);background-color:var(--vp-button-brand-active-bg)}.VPButton.alt[data-v-14206e74]{border-color:var(--vp-button-alt-border);color:var(--vp-button-alt-text);background-color:var(--vp-button-alt-bg)}.VPButton.alt[data-v-14206e74]:hover{border-color:var(--vp-button-alt-hover-border);color:var(--vp-button-alt-hover-text);background-color:var(--vp-button-alt-hover-bg)}.VPButton.alt[data-v-14206e74]:active{border-color:var(--vp-button-alt-active-border);color:var(--vp-button-alt-active-text);background-color:var(--vp-button-alt-active-bg)}.VPButton.sponsor[data-v-14206e74]{border-color:var(--vp-button-sponsor-border);color:var(--vp-button-sponsor-text);background-color:var(--vp-button-sponsor-bg)}.VPButton.sponsor[data-v-14206e74]:hover{border-color:var(--vp-button-sponsor-hover-border);color:var(--vp-button-sponsor-hover-text);background-color:var(--vp-button-sponsor-hover-bg)}.VPButton.sponsor[data-v-14206e74]:active{border-color:var(--vp-button-sponsor-active-border);color:var(--vp-button-sponsor-active-text);background-color:var(--vp-button-sponsor-active-bg)}html:not(.dark) .VPImage.dark[data-v-35a7d0b8]{display:none}.dark .VPImage.light[data-v-35a7d0b8]{display:none}.VPHero[data-v-955009fc]{margin-top:calc((var(--vp-nav-height) + var(--vp-layout-top-height, 0px)) * -1);padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px) 24px 48px}@media (min-width: 640px){.VPHero[data-v-955009fc]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 48px 64px}}@media (min-width: 960px){.VPHero[data-v-955009fc]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 64px 64px}}.container[data-v-955009fc]{display:flex;flex-direction:column;margin:0 auto;max-width:1152px}@media (min-width: 960px){.container[data-v-955009fc]{flex-direction:row}}.main[data-v-955009fc]{position:relative;z-index:10;order:2;flex-grow:1;flex-shrink:0}.VPHero.has-image .container[data-v-955009fc]{text-align:center}@media (min-width: 960px){.VPHero.has-image .container[data-v-955009fc]{text-align:left}}@media (min-width: 960px){.main[data-v-955009fc]{order:1;width:calc((100% / 3) * 2)}.VPHero.has-image .main[data-v-955009fc]{max-width:592px}}.name[data-v-955009fc],.text[data-v-955009fc]{max-width:392px;letter-spacing:-.4px;line-height:40px;font-size:32px;font-weight:700;white-space:pre-wrap}.VPHero.has-image .name[data-v-955009fc],.VPHero.has-image .text[data-v-955009fc]{margin:0 auto}.name[data-v-955009fc]{color:var(--vp-home-hero-name-color)}.clip[data-v-955009fc]{background:var(--vp-home-hero-name-background);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:var(--vp-home-hero-name-color)}@media (min-width: 640px){.name[data-v-955009fc],.text[data-v-955009fc]{max-width:576px;line-height:56px;font-size:48px}}@media (min-width: 960px){.name[data-v-955009fc],.text[data-v-955009fc]{line-height:64px;font-size:56px}.VPHero.has-image .name[data-v-955009fc],.VPHero.has-image .text[data-v-955009fc]{margin:0}}.tagline[data-v-955009fc]{padding-top:8px;max-width:392px;line-height:28px;font-size:18px;font-weight:500;white-space:pre-wrap;color:var(--vp-c-text-2)}.VPHero.has-image .tagline[data-v-955009fc]{margin:0 auto}@media (min-width: 640px){.tagline[data-v-955009fc]{padding-top:12px;max-width:576px;line-height:32px;font-size:20px}}@media (min-width: 960px){.tagline[data-v-955009fc]{line-height:36px;font-size:24px}.VPHero.has-image .tagline[data-v-955009fc]{margin:0}}.actions[data-v-955009fc]{display:flex;flex-wrap:wrap;margin:-6px;padding-top:24px}.VPHero.has-image .actions[data-v-955009fc]{justify-content:center}@media (min-width: 640px){.actions[data-v-955009fc]{padding-top:32px}}@media (min-width: 960px){.VPHero.has-image .actions[data-v-955009fc]{justify-content:flex-start}}.action[data-v-955009fc]{flex-shrink:0;padding:6px}.image[data-v-955009fc]{order:1;margin:-76px -24px -48px}@media (min-width: 640px){.image[data-v-955009fc]{margin:-108px -24px -48px}}@media (min-width: 960px){.image[data-v-955009fc]{flex-grow:1;order:2;margin:0;min-height:100%}}.image-container[data-v-955009fc]{position:relative;margin:0 auto;width:320px;height:320px}@media (min-width: 640px){.image-container[data-v-955009fc]{width:392px;height:392px}}@media (min-width: 960px){.image-container[data-v-955009fc]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;transform:translate(-32px,-32px)}}.image-bg[data-v-955009fc]{position:absolute;top:50%;left:50%;border-radius:50%;width:192px;height:192px;background-image:var(--vp-home-hero-image-background-image);filter:var(--vp-home-hero-image-filter);transform:translate(-50%,-50%)}@media (min-width: 640px){.image-bg[data-v-955009fc]{width:256px;height:256px}}@media (min-width: 960px){.image-bg[data-v-955009fc]{width:320px;height:320px}}[data-v-955009fc] .image-src{position:absolute;top:50%;left:50%;max-width:192px;max-height:192px;transform:translate(-50%,-50%)}@media (min-width: 640px){[data-v-955009fc] .image-src{max-width:256px;max-height:256px}}@media (min-width: 960px){[data-v-955009fc] .image-src{max-width:320px;max-height:320px}}.VPFeature[data-v-f5e9645b]{display:block;border:1px solid var(--vp-c-bg-soft);border-radius:12px;height:100%;background-color:var(--vp-c-bg-soft);transition:border-color .25s,background-color .25s}.VPFeature.link[data-v-f5e9645b]:hover{border-color:var(--vp-c-brand-1)}.box[data-v-f5e9645b]{display:flex;flex-direction:column;padding:24px;height:100%}.box[data-v-f5e9645b]>.VPImage{margin-bottom:20px}.icon[data-v-f5e9645b]{display:flex;justify-content:center;align-items:center;margin-bottom:20px;border-radius:6px;background-color:var(--vp-c-default-soft);width:48px;height:48px;font-size:24px;transition:background-color .25s}.title[data-v-f5e9645b]{line-height:24px;font-size:16px;font-weight:600}.details[data-v-f5e9645b]{flex-grow:1;padding-top:8px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.link-text[data-v-f5e9645b]{padding-top:8px}.link-text-value[data-v-f5e9645b]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.link-text-icon[data-v-f5e9645b]{margin-left:6px}.VPFeatures[data-v-d0a190d7]{position:relative;padding:0 24px}@media (min-width: 640px){.VPFeatures[data-v-d0a190d7]{padding:0 48px}}@media (min-width: 960px){.VPFeatures[data-v-d0a190d7]{padding:0 64px}}.container[data-v-d0a190d7]{margin:0 auto;max-width:1152px}.items[data-v-d0a190d7]{display:flex;flex-wrap:wrap;margin:-8px}.item[data-v-d0a190d7]{padding:8px;width:100%}@media (min-width: 640px){.item.grid-2[data-v-d0a190d7],.item.grid-4[data-v-d0a190d7],.item.grid-6[data-v-d0a190d7]{width:50%}}@media (min-width: 768px){.item.grid-2[data-v-d0a190d7],.item.grid-4[data-v-d0a190d7]{width:50%}.item.grid-3[data-v-d0a190d7],.item.grid-6[data-v-d0a190d7]{width:calc(100% / 3)}}@media (min-width: 960px){.item.grid-4[data-v-d0a190d7]{width:25%}}.container[data-v-7a48a447]{margin:auto;width:100%;max-width:1280px;padding:0 24px}@media (min-width: 640px){.container[data-v-7a48a447]{padding:0 48px}}@media (min-width: 960px){.container[data-v-7a48a447]{width:100%;padding:0 64px}}.vp-doc[data-v-7a48a447] .VPHomeSponsors,.vp-doc[data-v-7a48a447] .VPTeamPage{margin-left:var(--vp-offset, calc(50% - 50vw) );margin-right:var(--vp-offset, calc(50% - 50vw) )}.vp-doc[data-v-7a48a447] .VPHomeSponsors h2{border-top:none;letter-spacing:normal}.vp-doc[data-v-7a48a447] .VPHomeSponsors a,.vp-doc[data-v-7a48a447] .VPTeamPage a{text-decoration:none}.VPHome[data-v-cbb6ec48]{margin-bottom:96px}@media (min-width: 768px){.VPHome[data-v-cbb6ec48]{margin-bottom:128px}}.VPContent[data-v-91765379]{flex-grow:1;flex-shrink:0;margin:var(--vp-layout-top-height, 0px) auto 0;width:100%}.VPContent.is-home[data-v-91765379]{width:100%;max-width:100%}.VPContent.has-sidebar[data-v-91765379]{margin:0}@media (min-width: 960px){.VPContent[data-v-91765379]{padding-top:var(--vp-nav-height)}.VPContent.has-sidebar[data-v-91765379]{margin:var(--vp-layout-top-height, 0px) 0 0;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPContent.has-sidebar[data-v-91765379]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.VPFooter[data-v-c970a860]{position:relative;z-index:var(--vp-z-index-footer);border-top:1px solid var(--vp-c-gutter);padding:32px 24px;background-color:var(--vp-c-bg)}.VPFooter.has-sidebar[data-v-c970a860]{display:none}.VPFooter[data-v-c970a860] a{text-decoration-line:underline;text-underline-offset:2px;transition:color .25s}.VPFooter[data-v-c970a860] a:hover{color:var(--vp-c-text-1)}@media (min-width: 768px){.VPFooter[data-v-c970a860]{padding:32px}}.container[data-v-c970a860]{margin:0 auto;max-width:var(--vp-layout-max-width);text-align:center}.message[data-v-c970a860],.copyright[data-v-c970a860]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.VPLocalNavOutlineDropdown[data-v-bc9dc845]{padding:12px 20px 11px}@media (min-width: 960px){.VPLocalNavOutlineDropdown[data-v-bc9dc845]{padding:12px 36px 11px}}.VPLocalNavOutlineDropdown button[data-v-bc9dc845]{display:block;font-size:12px;font-weight:500;line-height:24px;color:var(--vp-c-text-2);transition:color .5s;position:relative}.VPLocalNavOutlineDropdown button[data-v-bc9dc845]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPLocalNavOutlineDropdown button.open[data-v-bc9dc845]{color:var(--vp-c-text-1)}.icon[data-v-bc9dc845]{display:inline-block;vertical-align:middle;margin-left:2px;font-size:14px;transform:rotate(0);transition:transform .25s}@media (min-width: 960px){.VPLocalNavOutlineDropdown button[data-v-bc9dc845]{font-size:14px}.icon[data-v-bc9dc845]{font-size:16px}}.open>.icon[data-v-bc9dc845]{transform:rotate(90deg)}.items[data-v-bc9dc845]{position:absolute;top:40px;right:16px;left:16px;display:grid;gap:1px;border:1px solid var(--vp-c-border);border-radius:8px;background-color:var(--vp-c-gutter);max-height:calc(var(--vp-vh, 100vh) - 86px);overflow:hidden auto;box-shadow:var(--vp-shadow-3)}@media (min-width: 960px){.items[data-v-bc9dc845]{right:auto;left:calc(var(--vp-sidebar-width) + 32px);width:320px}}.header[data-v-bc9dc845]{background-color:var(--vp-c-bg-soft)}.top-link[data-v-bc9dc845]{display:block;padding:0 16px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.outline[data-v-bc9dc845]{padding:8px 0;background-color:var(--vp-c-bg-soft)}.flyout-enter-active[data-v-bc9dc845]{transition:all .2s ease-out}.flyout-leave-active[data-v-bc9dc845]{transition:all .15s ease-in}.flyout-enter-from[data-v-bc9dc845],.flyout-leave-to[data-v-bc9dc845]{opacity:0;transform:translateY(-16px)}.VPLocalNav[data-v-070ab83d]{position:sticky;top:0;left:0;z-index:var(--vp-z-index-local-nav);border-bottom:1px solid var(--vp-c-gutter);padding-top:var(--vp-layout-top-height, 0px);width:100%;background-color:var(--vp-local-nav-bg-color)}.VPLocalNav.fixed[data-v-070ab83d]{position:fixed}@media (min-width: 960px){.VPLocalNav[data-v-070ab83d]{top:var(--vp-nav-height)}.VPLocalNav.has-sidebar[data-v-070ab83d]{padding-left:var(--vp-sidebar-width)}.VPLocalNav.empty[data-v-070ab83d]{display:none}}@media (min-width: 1280px){.VPLocalNav[data-v-070ab83d]{display:none}}@media (min-width: 1440px){.VPLocalNav.has-sidebar[data-v-070ab83d]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.container[data-v-070ab83d]{display:flex;justify-content:space-between;align-items:center}.menu[data-v-070ab83d]{display:flex;align-items:center;padding:12px 24px 11px;line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.menu[data-v-070ab83d]:hover{color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 768px){.menu[data-v-070ab83d]{padding:0 32px}}@media (min-width: 960px){.menu[data-v-070ab83d]{display:none}}.menu-icon[data-v-070ab83d]{margin-right:8px;font-size:14px}.VPOutlineDropdown[data-v-070ab83d]{padding:12px 24px 11px}@media (min-width: 768px){.VPOutlineDropdown[data-v-070ab83d]{padding:12px 32px 11px}}.VPSwitch[data-v-4a1c76db]{position:relative;border-radius:11px;display:block;width:40px;height:22px;flex-shrink:0;border:1px solid var(--vp-input-border-color);background-color:var(--vp-input-switch-bg-color);transition:border-color .25s!important}.VPSwitch[data-v-4a1c76db]:hover{border-color:var(--vp-c-brand-1)}.check[data-v-4a1c76db]{position:absolute;top:1px;left:1px;width:18px;height:18px;border-radius:50%;background-color:var(--vp-c-neutral-inverse);box-shadow:var(--vp-shadow-1);transition:transform .25s!important}.icon[data-v-4a1c76db]{position:relative;display:block;width:18px;height:18px;border-radius:50%;overflow:hidden}.icon[data-v-4a1c76db] [class^=vpi-]{position:absolute;top:3px;left:3px;width:12px;height:12px;color:var(--vp-c-text-2)}.dark .icon[data-v-4a1c76db] [class^=vpi-]{color:var(--vp-c-text-1);transition:opacity .25s!important}.sun[data-v-e40a8bb6]{opacity:1}.moon[data-v-e40a8bb6],.dark .sun[data-v-e40a8bb6]{opacity:0}.dark .moon[data-v-e40a8bb6]{opacity:1}.dark .VPSwitchAppearance[data-v-e40a8bb6] .check{transform:translate(18px)}.VPNavBarAppearance[data-v-af096f4a]{display:none}@media (min-width: 1280px){.VPNavBarAppearance[data-v-af096f4a]{display:flex;align-items:center}}.VPMenuGroup+.VPMenuLink[data-v-8b74d055]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.link[data-v-8b74d055]{display:block;border-radius:6px;padding:0 12px;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);white-space:nowrap;transition:background-color .25s,color .25s}.link[data-v-8b74d055]:hover{color:var(--vp-c-brand-1);background-color:var(--vp-c-default-soft)}.link.active[data-v-8b74d055]{color:var(--vp-c-brand-1)}.VPMenuGroup[data-v-48c802d0]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.VPMenuGroup[data-v-48c802d0]:first-child{margin-top:0;border-top:0;padding-top:0}.VPMenuGroup+.VPMenuGroup[data-v-48c802d0]{margin-top:12px;border-top:1px solid var(--vp-c-divider)}.title[data-v-48c802d0]{padding:0 12px;line-height:32px;font-size:14px;font-weight:600;color:var(--vp-c-text-2);white-space:nowrap;transition:color .25s}.VPMenu[data-v-7dd3104a]{border-radius:12px;padding:12px;min-width:128px;border:1px solid var(--vp-c-divider);background-color:var(--vp-c-bg-elv);box-shadow:var(--vp-shadow-3);transition:background-color .5s;max-height:calc(100vh - var(--vp-nav-height));overflow-y:auto}.VPMenu[data-v-7dd3104a] .group{margin:0 -12px;padding:0 12px 12px}.VPMenu[data-v-7dd3104a] .group+.group{border-top:1px solid var(--vp-c-divider);padding:11px 12px 12px}.VPMenu[data-v-7dd3104a] .group:last-child{padding-bottom:0}.VPMenu[data-v-7dd3104a] .group+.item{border-top:1px solid var(--vp-c-divider);padding:11px 16px 0}.VPMenu[data-v-7dd3104a] .item{padding:0 16px;white-space:nowrap}.VPMenu[data-v-7dd3104a] .label{flex-grow:1;line-height:28px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.VPMenu[data-v-7dd3104a] .action{padding-left:24px}.VPFlyout[data-v-e5380155]{position:relative}.VPFlyout[data-v-e5380155]:hover{color:var(--vp-c-brand-1);transition:color .25s}.VPFlyout:hover .text[data-v-e5380155]{color:var(--vp-c-text-2)}.VPFlyout:hover .icon[data-v-e5380155]{fill:var(--vp-c-text-2)}.VPFlyout.active .text[data-v-e5380155]{color:var(--vp-c-brand-1)}.VPFlyout.active:hover .text[data-v-e5380155]{color:var(--vp-c-brand-2)}.VPFlyout:hover .menu[data-v-e5380155],.button[aria-expanded=true]+.menu[data-v-e5380155]{opacity:1;visibility:visible;transform:translateY(0)}.button[aria-expanded=false]+.menu[data-v-e5380155]{opacity:0;visibility:hidden;transform:translateY(0)}.button[data-v-e5380155]{display:flex;align-items:center;padding:0 12px;height:var(--vp-nav-height);color:var(--vp-c-text-1);transition:color .5s}.text[data-v-e5380155]{display:flex;align-items:center;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.option-icon[data-v-e5380155]{margin-right:0;font-size:16px}.text-icon[data-v-e5380155]{margin-left:4px;font-size:14px}.icon[data-v-e5380155]{font-size:20px;transition:fill .25s}.menu[data-v-e5380155]{position:absolute;top:calc(var(--vp-nav-height) / 2 + 20px);right:0;opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s,transform .25s}.VPSocialLink[data-v-717b8b75]{display:flex;justify-content:center;align-items:center;width:36px;height:36px;color:var(--vp-c-text-2);transition:color .5s}.VPSocialLink[data-v-717b8b75]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPSocialLink[data-v-717b8b75]>svg,.VPSocialLink[data-v-717b8b75]>[class^=vpi-social-]{width:20px;height:20px;fill:currentColor}.VPSocialLinks[data-v-ee7a9424]{display:flex;justify-content:center}.VPNavBarExtra[data-v-925effce]{display:none;margin-right:-12px}@media (min-width: 768px){.VPNavBarExtra[data-v-925effce]{display:block}}@media (min-width: 1280px){.VPNavBarExtra[data-v-925effce]{display:none}}.trans-title[data-v-925effce]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.item.appearance[data-v-925effce],.item.social-links[data-v-925effce]{display:flex;align-items:center;padding:0 12px}.item.appearance[data-v-925effce]{min-width:176px}.appearance-action[data-v-925effce]{margin-right:-2px}.social-links-list[data-v-925effce]{margin:-4px -8px}.VPNavBarHamburger[data-v-5dea55bf]{display:flex;justify-content:center;align-items:center;width:48px;height:var(--vp-nav-height)}@media (min-width: 768px){.VPNavBarHamburger[data-v-5dea55bf]{display:none}}.container[data-v-5dea55bf]{position:relative;width:16px;height:14px;overflow:hidden}.VPNavBarHamburger:hover .top[data-v-5dea55bf]{top:0;left:0;transform:translate(4px)}.VPNavBarHamburger:hover .middle[data-v-5dea55bf]{top:6px;left:0;transform:translate(0)}.VPNavBarHamburger:hover .bottom[data-v-5dea55bf]{top:12px;left:0;transform:translate(8px)}.VPNavBarHamburger.active .top[data-v-5dea55bf]{top:6px;transform:translate(0) rotate(225deg)}.VPNavBarHamburger.active .middle[data-v-5dea55bf]{top:6px;transform:translate(16px)}.VPNavBarHamburger.active .bottom[data-v-5dea55bf]{top:6px;transform:translate(0) rotate(135deg)}.VPNavBarHamburger.active:hover .top[data-v-5dea55bf],.VPNavBarHamburger.active:hover .middle[data-v-5dea55bf],.VPNavBarHamburger.active:hover .bottom[data-v-5dea55bf]{background-color:var(--vp-c-text-2);transition:top .25s,background-color .25s,transform .25s}.top[data-v-5dea55bf],.middle[data-v-5dea55bf],.bottom[data-v-5dea55bf]{position:absolute;width:16px;height:2px;background-color:var(--vp-c-text-1);transition:top .25s,background-color .5s,transform .25s}.top[data-v-5dea55bf]{top:0;left:0;transform:translate(0)}.middle[data-v-5dea55bf]{top:6px;left:0;transform:translate(8px)}.bottom[data-v-5dea55bf]{top:12px;left:0;transform:translate(4px)}.VPNavBarMenuLink[data-v-ed5ac1f6]{display:flex;align-items:center;padding:0 12px;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.VPNavBarMenuLink.active[data-v-ed5ac1f6],.VPNavBarMenuLink[data-v-ed5ac1f6]:hover{color:var(--vp-c-brand-1)}.VPNavBarMenu[data-v-e6d46098]{display:none}@media (min-width: 768px){.VPNavBarMenu[data-v-e6d46098]{display:flex}}/*! @docsearch/css 3.6.1 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */:root{--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:rgba(101,108,133,.8);--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 1px 0 rgba(30,35,90,.4);--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12)}html[data-theme=dark]{--docsearch-text-color:#f5f6f7;--docsearch-container-background:rgba(9,10,17,.8);--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 1px 1px 0 rgba(3,4,9,.30196078431372547);--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}.DocSearch-Button{align-items:center;background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;display:flex;font-weight:500;height:36px;justify-content:space-between;margin:0 0 0 16px;padding:0 8px;-webkit-user-select:none;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:none}.DocSearch-Button-Container{align-items:center;display:flex}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;position:relative;padding:0 0 2px;border:0;top:-1px;width:20px}.DocSearch-Button-Key--pressed{transform:translate3d(0,1px,0);box-shadow:var(--docsearch-key-pressed-shadow)}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder{display:none}}.DocSearch--active{overflow:hidden!important}.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;font:inherit;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;color:var(--docsearch-text-color);flex:1;font:inherit;font-size:1.2em;height:100%;outline:none;padding:0 0 0 8px;width:80%}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator{display:none}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{animation:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0;stroke-width:var(--docsearch-icon-stroke-width)}}.DocSearch-Reset{animation:fade-in .1s ease-in forwards;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;padding:2px;right:0;stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Cancel{display:none}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:transparent}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Help{font-size:.9em;margin:0;-webkit-user-select:none;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{color:var(--docsearch-muted-color);display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--deleting{transition:none}}.DocSearch-Hit--deleting{opacity:0;transition:all .25s linear}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--favoriting{transition:none}}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:all .25s linear;transition-delay:.25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;stroke-width:var(--docsearch-icon-stroke-width);width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color);stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:inherit;cursor:pointer;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:background-color .1s ease-in}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{transition:none}}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:none}}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:none;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;-webkit-user-select:none;user-select:none;width:100%;z-index:300}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li{align-items:center;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:2px;box-shadow:var(--docsearch-key-shadow);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;color:var(--docsearch-muted-color);border:0;width:20px}.DocSearch-VisuallyHiddenForAccessibility{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}@media (max-width:768px){:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Dropdown{max-height:calc(var(--docsearch-vh, 1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Cancel{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:none;overflow:hidden;padding:0;-webkit-user-select:none;user-select:none;white-space:nowrap}.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}[class*=DocSearch]{--docsearch-primary-color: var(--vp-c-brand-1);--docsearch-highlight-color: var(--docsearch-primary-color);--docsearch-text-color: var(--vp-c-text-1);--docsearch-muted-color: var(--vp-c-text-2);--docsearch-searchbox-shadow: none;--docsearch-searchbox-background: transparent;--docsearch-searchbox-focus-background: transparent;--docsearch-key-gradient: transparent;--docsearch-key-shadow: none;--docsearch-modal-background: var(--vp-c-bg-soft);--docsearch-footer-background: var(--vp-c-bg)}.dark [class*=DocSearch]{--docsearch-modal-shadow: none;--docsearch-footer-shadow: none;--docsearch-logo-color: var(--vp-c-text-2);--docsearch-hit-background: var(--vp-c-default-soft);--docsearch-hit-color: var(--vp-c-text-2);--docsearch-hit-shadow: none}.DocSearch-Button{display:flex;justify-content:center;align-items:center;margin:0;padding:0;width:48px;height:55px;background:transparent;transition:border-color .25s}.DocSearch-Button:hover{background:transparent}.DocSearch-Button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.DocSearch-Button-Key--pressed{transform:none;box-shadow:none}.DocSearch-Button:focus:not(:focus-visible){outline:none!important}@media (min-width: 768px){.DocSearch-Button{justify-content:flex-start;border:1px solid transparent;border-radius:8px;padding:0 10px 0 12px;width:100%;height:40px;background-color:var(--vp-c-bg-alt)}.DocSearch-Button:hover{border-color:var(--vp-c-brand-1);background:var(--vp-c-bg-alt)}}.DocSearch-Button .DocSearch-Button-Container{display:flex;align-items:center}.DocSearch-Button .DocSearch-Search-Icon{position:relative;width:16px;height:16px;color:var(--vp-c-text-1);fill:currentColor;transition:color .5s}.DocSearch-Button:hover .DocSearch-Search-Icon{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Search-Icon{top:1px;margin-right:8px;width:14px;height:14px;color:var(--vp-c-text-2)}}.DocSearch-Button .DocSearch-Button-Placeholder{display:none;margin-top:2px;padding:0 16px 0 0;font-size:13px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.DocSearch-Button:hover .DocSearch-Button-Placeholder{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Placeholder{display:inline-block}}.DocSearch-Button .DocSearch-Button-Keys{direction:ltr;display:none;min-width:auto}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Keys{display:flex;align-items:center}}.DocSearch-Button .DocSearch-Button-Key{display:block;margin:2px 0 0;border:1px solid var(--vp-c-divider);border-right:none;border-radius:4px 0 0 4px;padding-left:6px;min-width:0;width:auto;height:22px;line-height:22px;font-family:var(--vp-font-family-base);font-size:12px;font-weight:500;transition:color .5s,border-color .5s}.DocSearch-Button .DocSearch-Button-Key+.DocSearch-Button-Key{border-right:1px solid var(--vp-c-divider);border-left:none;border-radius:0 4px 4px 0;padding-left:2px;padding-right:6px}.DocSearch-Button .DocSearch-Button-Key:first-child{font-size:0!important}.DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"Ctrl";font-size:12px;letter-spacing:normal;color:var(--docsearch-muted-color)}.mac .DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"⌘"}.DocSearch-Button .DocSearch-Button-Key:first-child>*{display:none}.DocSearch-Search-Icon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke-width='1.6' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' d='m14.386 14.386 4.088 4.088-4.088-4.088A7.533 7.533 0 1 1 3.733 3.733a7.533 7.533 0 0 1 10.653 10.653z'/%3E%3C/svg%3E")}.VPNavBarSearch{display:flex;align-items:center}@media (min-width: 768px){.VPNavBarSearch{flex-grow:1;padding-left:24px}}@media (min-width: 960px){.VPNavBarSearch{padding-left:32px}}.dark .DocSearch-Footer{border-top:1px solid var(--vp-c-divider)}.DocSearch-Form{border:1px solid var(--vp-c-brand-1);background-color:var(--vp-c-white)}.dark .DocSearch-Form{background-color:var(--vp-c-default-soft)}.DocSearch-Screen-Icon>svg{margin:auto}.VPNavBarSocialLinks[data-v-164c457f]{display:none}@media (min-width: 1280px){.VPNavBarSocialLinks[data-v-164c457f]{display:flex;align-items:center}}.title[data-v-28a961f9]{display:flex;align-items:center;border-bottom:1px solid transparent;width:100%;height:var(--vp-nav-height);font-size:16px;font-weight:600;color:var(--vp-c-text-1);transition:opacity .25s}@media (min-width: 960px){.title[data-v-28a961f9]{flex-shrink:0}.VPNavBarTitle.has-sidebar .title[data-v-28a961f9]{border-bottom-color:var(--vp-c-divider)}}[data-v-28a961f9] .logo{margin-right:8px;height:var(--vp-nav-logo-height)}.VPNavBarTranslations[data-v-c80d9ad0]{display:none}@media (min-width: 1280px){.VPNavBarTranslations[data-v-c80d9ad0]{display:flex;align-items:center}}.title[data-v-c80d9ad0]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.VPNavBar[data-v-822684d1]{position:relative;height:var(--vp-nav-height);pointer-events:none;white-space:nowrap;transition:background-color .25s}.VPNavBar.screen-open[data-v-822684d1]{transition:none;background-color:var(--vp-nav-bg-color);border-bottom:1px solid var(--vp-c-divider)}.VPNavBar[data-v-822684d1]:not(.home){background-color:var(--vp-nav-bg-color)}@media (min-width: 960px){.VPNavBar[data-v-822684d1]:not(.home){background-color:transparent}.VPNavBar[data-v-822684d1]:not(.has-sidebar):not(.home.top){background-color:var(--vp-nav-bg-color)}}.wrapper[data-v-822684d1]{padding:0 8px 0 24px}@media (min-width: 768px){.wrapper[data-v-822684d1]{padding:0 32px}}@media (min-width: 960px){.VPNavBar.has-sidebar .wrapper[data-v-822684d1]{padding:0}}.container[data-v-822684d1]{display:flex;justify-content:space-between;margin:0 auto;max-width:calc(var(--vp-layout-max-width) - 64px);height:var(--vp-nav-height);pointer-events:none}.container>.title[data-v-822684d1],.container>.content[data-v-822684d1]{pointer-events:none}.container[data-v-822684d1] *{pointer-events:auto}@media (min-width: 960px){.VPNavBar.has-sidebar .container[data-v-822684d1]{max-width:100%}}.title[data-v-822684d1]{flex-shrink:0;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .title[data-v-822684d1]{position:absolute;top:0;left:0;z-index:2;padding:0 32px;width:var(--vp-sidebar-width);height:var(--vp-nav-height);background-color:transparent}}@media (min-width: 1440px){.VPNavBar.has-sidebar .title[data-v-822684d1]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}.content[data-v-822684d1]{flex-grow:1}@media (min-width: 960px){.VPNavBar.has-sidebar .content[data-v-822684d1]{position:relative;z-index:1;padding-right:32px;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .content[data-v-822684d1]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2 + 32px);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.content-body[data-v-822684d1]{display:flex;justify-content:flex-end;align-items:center;height:var(--vp-nav-height);transition:background-color .5s}@media (min-width: 960px){.VPNavBar:not(.home.top) .content-body[data-v-822684d1]{position:relative;background-color:var(--vp-nav-bg-color)}.VPNavBar:not(.has-sidebar):not(.home.top) .content-body[data-v-822684d1]{background-color:transparent}}@media (max-width: 767px){.content-body[data-v-822684d1]{column-gap:.5rem}}.menu+.translations[data-v-822684d1]:before,.menu+.appearance[data-v-822684d1]:before,.menu+.social-links[data-v-822684d1]:before,.translations+.appearance[data-v-822684d1]:before,.appearance+.social-links[data-v-822684d1]:before{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--vp-c-divider);content:""}.menu+.appearance[data-v-822684d1]:before,.translations+.appearance[data-v-822684d1]:before{margin-right:16px}.appearance+.social-links[data-v-822684d1]:before{margin-left:16px}.social-links[data-v-822684d1]{margin-right:-8px}.divider[data-v-822684d1]{width:100%;height:1px}@media (min-width: 960px){.VPNavBar.has-sidebar .divider[data-v-822684d1]{padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .divider[data-v-822684d1]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.divider-line[data-v-822684d1]{width:100%;height:1px;transition:background-color .5s}.VPNavBar:not(.home) .divider-line[data-v-822684d1]{background-color:var(--vp-c-gutter)}@media (min-width: 960px){.VPNavBar:not(.home.top) .divider-line[data-v-822684d1]{background-color:var(--vp-c-gutter)}.VPNavBar:not(.has-sidebar):not(.home.top) .divider[data-v-822684d1]{background-color:var(--vp-c-gutter)}}.VPNavScreenAppearance[data-v-ffb44008]{display:flex;justify-content:space-between;align-items:center;border-radius:8px;padding:12px 14px 12px 16px;background-color:var(--vp-c-bg-soft)}.text[data-v-ffb44008]{line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.VPNavScreenMenuLink[data-v-27d04aeb]{display:block;border-bottom:1px solid var(--vp-c-divider);padding:12px 0 11px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:border-color .25s,color .25s}.VPNavScreenMenuLink[data-v-27d04aeb]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupLink[data-v-7179dbb7]{display:block;margin-left:12px;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-1);transition:color .25s}.VPNavScreenMenuGroupLink[data-v-7179dbb7]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupSection[data-v-4b8941ac]{display:block}.title[data-v-4b8941ac]{line-height:32px;font-size:13px;font-weight:700;color:var(--vp-c-text-2);transition:color .25s}.VPNavScreenMenuGroup[data-v-875057a5]{border-bottom:1px solid var(--vp-c-divider);height:48px;overflow:hidden;transition:border-color .5s}.VPNavScreenMenuGroup .items[data-v-875057a5]{visibility:hidden}.VPNavScreenMenuGroup.open .items[data-v-875057a5]{visibility:visible}.VPNavScreenMenuGroup.open[data-v-875057a5]{padding-bottom:10px;height:auto}.VPNavScreenMenuGroup.open .button[data-v-875057a5]{padding-bottom:6px;color:var(--vp-c-brand-1)}.VPNavScreenMenuGroup.open .button-icon[data-v-875057a5]{transform:rotate(45deg)}.button[data-v-875057a5]{display:flex;justify-content:space-between;align-items:center;padding:12px 4px 11px 0;width:100%;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.button[data-v-875057a5]:hover{color:var(--vp-c-brand-1)}.button-icon[data-v-875057a5]{transition:transform .25s}.group[data-v-875057a5]:first-child{padding-top:0}.group+.group[data-v-875057a5],.group+.item[data-v-875057a5]{padding-top:4px}.VPNavScreenTranslations[data-v-362991c2]{height:24px;overflow:hidden}.VPNavScreenTranslations.open[data-v-362991c2]{height:auto}.title[data-v-362991c2]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-text-1)}.icon[data-v-362991c2]{font-size:16px}.icon.lang[data-v-362991c2]{margin-right:8px}.icon.chevron[data-v-362991c2]{margin-left:4px}.list[data-v-362991c2]{padding:4px 0 0 24px}.link[data-v-362991c2]{line-height:32px;font-size:13px;color:var(--vp-c-text-1)}.VPNavScreen[data-v-833aabba]{position:fixed;top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px));right:0;bottom:0;left:0;padding:0 32px;width:100%;background-color:var(--vp-nav-screen-bg-color);overflow-y:auto;transition:background-color .25s;pointer-events:auto}.VPNavScreen.fade-enter-active[data-v-833aabba],.VPNavScreen.fade-leave-active[data-v-833aabba]{transition:opacity .25s}.VPNavScreen.fade-enter-active .container[data-v-833aabba],.VPNavScreen.fade-leave-active .container[data-v-833aabba]{transition:transform .25s ease}.VPNavScreen.fade-enter-from[data-v-833aabba],.VPNavScreen.fade-leave-to[data-v-833aabba]{opacity:0}.VPNavScreen.fade-enter-from .container[data-v-833aabba],.VPNavScreen.fade-leave-to .container[data-v-833aabba]{transform:translateY(-8px)}@media (min-width: 768px){.VPNavScreen[data-v-833aabba]{display:none}}.container[data-v-833aabba]{margin:0 auto;padding:24px 0 96px;max-width:288px}.menu+.translations[data-v-833aabba],.menu+.appearance[data-v-833aabba],.translations+.appearance[data-v-833aabba]{margin-top:24px}.menu+.social-links[data-v-833aabba]{margin-top:16px}.appearance+.social-links[data-v-833aabba]{margin-top:16px}.VPNav[data-v-f1e365da]{position:relative;top:var(--vp-layout-top-height, 0px);left:0;z-index:var(--vp-z-index-nav);width:100%;pointer-events:none;transition:background-color .5s}@media (min-width: 960px){.VPNav[data-v-f1e365da]{position:fixed}}.VPSidebarItem.level-0[data-v-196b2e5f]{padding-bottom:24px}.VPSidebarItem.collapsed.level-0[data-v-196b2e5f]{padding-bottom:10px}.item[data-v-196b2e5f]{position:relative;display:flex;width:100%}.VPSidebarItem.collapsible>.item[data-v-196b2e5f]{cursor:pointer}.indicator[data-v-196b2e5f]{position:absolute;top:6px;bottom:6px;left:-17px;width:2px;border-radius:2px;transition:background-color .25s}.VPSidebarItem.level-2.is-active>.item>.indicator[data-v-196b2e5f],.VPSidebarItem.level-3.is-active>.item>.indicator[data-v-196b2e5f],.VPSidebarItem.level-4.is-active>.item>.indicator[data-v-196b2e5f],.VPSidebarItem.level-5.is-active>.item>.indicator[data-v-196b2e5f]{background-color:var(--vp-c-brand-1)}.link[data-v-196b2e5f]{display:flex;align-items:center;flex-grow:1}.text[data-v-196b2e5f]{flex-grow:1;padding:4px 0;line-height:24px;font-size:14px;transition:color .25s}.VPSidebarItem.level-0 .text[data-v-196b2e5f]{font-weight:700;color:var(--vp-c-text-1)}.VPSidebarItem.level-1 .text[data-v-196b2e5f],.VPSidebarItem.level-2 .text[data-v-196b2e5f],.VPSidebarItem.level-3 .text[data-v-196b2e5f],.VPSidebarItem.level-4 .text[data-v-196b2e5f],.VPSidebarItem.level-5 .text[data-v-196b2e5f]{font-weight:500;color:var(--vp-c-text-2)}.VPSidebarItem.level-0.is-link>.item>.link:hover .text[data-v-196b2e5f],.VPSidebarItem.level-1.is-link>.item>.link:hover .text[data-v-196b2e5f],.VPSidebarItem.level-2.is-link>.item>.link:hover .text[data-v-196b2e5f],.VPSidebarItem.level-3.is-link>.item>.link:hover .text[data-v-196b2e5f],.VPSidebarItem.level-4.is-link>.item>.link:hover .text[data-v-196b2e5f],.VPSidebarItem.level-5.is-link>.item>.link:hover .text[data-v-196b2e5f]{color:var(--vp-c-brand-1)}.VPSidebarItem.level-0.has-active>.item>.text[data-v-196b2e5f],.VPSidebarItem.level-1.has-active>.item>.text[data-v-196b2e5f],.VPSidebarItem.level-2.has-active>.item>.text[data-v-196b2e5f],.VPSidebarItem.level-3.has-active>.item>.text[data-v-196b2e5f],.VPSidebarItem.level-4.has-active>.item>.text[data-v-196b2e5f],.VPSidebarItem.level-5.has-active>.item>.text[data-v-196b2e5f],.VPSidebarItem.level-0.has-active>.item>.link>.text[data-v-196b2e5f],.VPSidebarItem.level-1.has-active>.item>.link>.text[data-v-196b2e5f],.VPSidebarItem.level-2.has-active>.item>.link>.text[data-v-196b2e5f],.VPSidebarItem.level-3.has-active>.item>.link>.text[data-v-196b2e5f],.VPSidebarItem.level-4.has-active>.item>.link>.text[data-v-196b2e5f],.VPSidebarItem.level-5.has-active>.item>.link>.text[data-v-196b2e5f]{color:var(--vp-c-text-1)}.VPSidebarItem.level-0.is-active>.item .link>.text[data-v-196b2e5f],.VPSidebarItem.level-1.is-active>.item .link>.text[data-v-196b2e5f],.VPSidebarItem.level-2.is-active>.item .link>.text[data-v-196b2e5f],.VPSidebarItem.level-3.is-active>.item .link>.text[data-v-196b2e5f],.VPSidebarItem.level-4.is-active>.item .link>.text[data-v-196b2e5f],.VPSidebarItem.level-5.is-active>.item .link>.text[data-v-196b2e5f]{color:var(--vp-c-brand-1)}.caret[data-v-196b2e5f]{display:flex;justify-content:center;align-items:center;margin-right:-7px;width:32px;height:32px;color:var(--vp-c-text-3);cursor:pointer;transition:color .25s;flex-shrink:0}.item:hover .caret[data-v-196b2e5f]{color:var(--vp-c-text-2)}.item:hover .caret[data-v-196b2e5f]:hover{color:var(--vp-c-text-1)}.caret-icon[data-v-196b2e5f]{font-size:18px;transform:rotate(90deg);transition:transform .25s}.VPSidebarItem.collapsed .caret-icon[data-v-196b2e5f]{transform:rotate(0)}.VPSidebarItem.level-1 .items[data-v-196b2e5f],.VPSidebarItem.level-2 .items[data-v-196b2e5f],.VPSidebarItem.level-3 .items[data-v-196b2e5f],.VPSidebarItem.level-4 .items[data-v-196b2e5f],.VPSidebarItem.level-5 .items[data-v-196b2e5f]{border-left:1px solid var(--vp-c-divider);padding-left:16px}.VPSidebarItem.collapsed .items[data-v-196b2e5f]{display:none}.no-transition[data-v-9e426adc] .caret-icon{transition:none}.group+.group[data-v-9e426adc]{border-top:1px solid var(--vp-c-divider);padding-top:10px}@media (min-width: 960px){.group[data-v-9e426adc]{padding-top:10px;width:calc(var(--vp-sidebar-width) - 64px)}}.VPSidebar[data-v-18756405]{position:fixed;top:var(--vp-layout-top-height, 0px);bottom:0;left:0;z-index:var(--vp-z-index-sidebar);padding:32px 32px 96px;width:calc(100vw - 64px);max-width:320px;background-color:var(--vp-sidebar-bg-color);opacity:0;box-shadow:var(--vp-c-shadow-3);overflow-x:hidden;overflow-y:auto;transform:translate(-100%);transition:opacity .5s,transform .25s ease;overscroll-behavior:contain}.VPSidebar.open[data-v-18756405]{opacity:1;visibility:visible;transform:translate(0);transition:opacity .25s,transform .5s cubic-bezier(.19,1,.22,1)}.dark .VPSidebar[data-v-18756405]{box-shadow:var(--vp-shadow-1)}@media (min-width: 960px){.VPSidebar[data-v-18756405]{padding-top:var(--vp-nav-height);width:var(--vp-sidebar-width);max-width:100%;background-color:var(--vp-sidebar-bg-color);opacity:1;visibility:visible;box-shadow:none;transform:translate(0)}}@media (min-width: 1440px){.VPSidebar[data-v-18756405]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}@media (min-width: 960px){.curtain[data-v-18756405]{position:sticky;top:-64px;left:0;z-index:1;margin-top:calc(var(--vp-nav-height) * -1);margin-right:-32px;margin-left:-32px;height:var(--vp-nav-height);background-color:var(--vp-sidebar-bg-color)}}.nav[data-v-18756405]{outline:0}.VPSkipLink[data-v-c3508ec8]{top:8px;left:8px;padding:8px 16px;z-index:999;border-radius:8px;font-size:12px;font-weight:700;text-decoration:none;color:var(--vp-c-brand-1);box-shadow:var(--vp-shadow-3);background-color:var(--vp-c-bg)}.VPSkipLink[data-v-c3508ec8]:focus{height:auto;width:auto;clip:auto;clip-path:none}@media (min-width: 1280px){.VPSkipLink[data-v-c3508ec8]{top:14px;left:16px}}.Layout[data-v-a9a9e638]{display:flex;flex-direction:column;min-height:100vh}.VPHomeSponsors[data-v-db81191c]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPHomeSponsors[data-v-db81191c]{margin:96px 0}@media (min-width: 768px){.VPHomeSponsors[data-v-db81191c]{margin:128px 0}}.VPHomeSponsors[data-v-db81191c]{padding:0 24px}@media (min-width: 768px){.VPHomeSponsors[data-v-db81191c]{padding:0 48px}}@media (min-width: 960px){.VPHomeSponsors[data-v-db81191c]{padding:0 64px}}.container[data-v-db81191c]{margin:0 auto;max-width:1152px}.love[data-v-db81191c]{margin:0 auto;width:fit-content;font-size:28px;color:var(--vp-c-text-3)}.icon[data-v-db81191c]{display:inline-block}.message[data-v-db81191c]{margin:0 auto;padding-top:10px;max-width:320px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.sponsors[data-v-db81191c]{padding-top:32px}.action[data-v-db81191c]{padding-top:40px;text-align:center}.VPTeamPage[data-v-c2f8e101]{margin:96px 0}@media (min-width: 768px){.VPTeamPage[data-v-c2f8e101]{margin:128px 0}}.VPHome .VPTeamPageTitle[data-v-c2f8e101-s]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPTeamPageSection+.VPTeamPageSection[data-v-c2f8e101-s],.VPTeamMembers+.VPTeamPageSection[data-v-c2f8e101-s]{margin-top:64px}.VPTeamMembers+.VPTeamMembers[data-v-c2f8e101-s]{margin-top:24px}@media (min-width: 768px){.VPTeamPageTitle+.VPTeamPageSection[data-v-c2f8e101-s]{margin-top:16px}.VPTeamPageSection+.VPTeamPageSection[data-v-c2f8e101-s],.VPTeamMembers+.VPTeamPageSection[data-v-c2f8e101-s]{margin-top:96px}}.VPTeamMembers[data-v-c2f8e101-s]{padding:0 24px}@media (min-width: 768px){.VPTeamMembers[data-v-c2f8e101-s]{padding:0 48px}}@media (min-width: 960px){.VPTeamMembers[data-v-c2f8e101-s]{padding:0 64px}}.VPTeamPageTitle[data-v-e277e15c]{padding:48px 32px;text-align:center}@media (min-width: 768px){.VPTeamPageTitle[data-v-e277e15c]{padding:64px 48px 48px}}@media (min-width: 960px){.VPTeamPageTitle[data-v-e277e15c]{padding:80px 64px 48px}}.title[data-v-e277e15c]{letter-spacing:0;line-height:44px;font-size:36px;font-weight:500}@media (min-width: 768px){.title[data-v-e277e15c]{letter-spacing:-.5px;line-height:56px;font-size:48px}}.lead[data-v-e277e15c]{margin:0 auto;max-width:512px;padding-top:12px;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 768px){.lead[data-v-e277e15c]{max-width:592px;letter-spacing:.15px;line-height:28px;font-size:20px}}.VPTeamPageSection[data-v-d43bc49d]{padding:0 32px}@media (min-width: 768px){.VPTeamPageSection[data-v-d43bc49d]{padding:0 48px}}@media (min-width: 960px){.VPTeamPageSection[data-v-d43bc49d]{padding:0 64px}}.title[data-v-d43bc49d]{position:relative;margin:0 auto;max-width:1152px;text-align:center;color:var(--vp-c-text-2)}.title-line[data-v-d43bc49d]{position:absolute;top:16px;left:0;width:100%;height:1px;background-color:var(--vp-c-divider)}.title-text[data-v-d43bc49d]{position:relative;display:inline-block;padding:0 24px;letter-spacing:0;line-height:32px;font-size:20px;font-weight:500;background-color:var(--vp-c-bg)}.lead[data-v-d43bc49d]{margin:0 auto;max-width:480px;padding-top:12px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.members[data-v-d43bc49d]{padding-top:40px}.VPTeamMembersItem[data-v-f9987cb6]{display:flex;flex-direction:column;gap:2px;border-radius:12px;width:100%;height:100%;overflow:hidden}.VPTeamMembersItem.small .profile[data-v-f9987cb6]{padding:32px}.VPTeamMembersItem.small .data[data-v-f9987cb6]{padding-top:20px}.VPTeamMembersItem.small .avatar[data-v-f9987cb6]{width:64px;height:64px}.VPTeamMembersItem.small .name[data-v-f9987cb6]{line-height:24px;font-size:16px}.VPTeamMembersItem.small .affiliation[data-v-f9987cb6]{padding-top:4px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .desc[data-v-f9987cb6]{padding-top:12px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .links[data-v-f9987cb6]{margin:0 -16px -20px;padding:10px 0 0}.VPTeamMembersItem.medium .profile[data-v-f9987cb6]{padding:48px 32px}.VPTeamMembersItem.medium .data[data-v-f9987cb6]{padding-top:24px;text-align:center}.VPTeamMembersItem.medium .avatar[data-v-f9987cb6]{width:96px;height:96px}.VPTeamMembersItem.medium .name[data-v-f9987cb6]{letter-spacing:.15px;line-height:28px;font-size:20px}.VPTeamMembersItem.medium .affiliation[data-v-f9987cb6]{padding-top:4px;font-size:16px}.VPTeamMembersItem.medium .desc[data-v-f9987cb6]{padding-top:16px;max-width:288px;font-size:16px}.VPTeamMembersItem.medium .links[data-v-f9987cb6]{margin:0 -16px -12px;padding:16px 12px 0}.profile[data-v-f9987cb6]{flex-grow:1;background-color:var(--vp-c-bg-soft)}.data[data-v-f9987cb6]{text-align:center}.avatar[data-v-f9987cb6]{position:relative;flex-shrink:0;margin:0 auto;border-radius:50%;box-shadow:var(--vp-shadow-3)}.avatar-img[data-v-f9987cb6]{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;object-fit:cover}.name[data-v-f9987cb6]{margin:0;font-weight:600}.affiliation[data-v-f9987cb6]{margin:0;font-weight:500;color:var(--vp-c-text-2)}.org.link[data-v-f9987cb6]{color:var(--vp-c-text-2);transition:color .25s}.org.link[data-v-f9987cb6]:hover{color:var(--vp-c-brand-1)}.desc[data-v-f9987cb6]{margin:0 auto}.desc[data-v-f9987cb6] a{font-weight:500;color:var(--vp-c-brand-1);text-decoration-style:dotted;transition:color .25s}.links[data-v-f9987cb6]{display:flex;justify-content:center;height:56px}.sp-link[data-v-f9987cb6]{display:flex;justify-content:center;align-items:center;text-align:center;padding:16px;font-size:14px;font-weight:500;color:var(--vp-c-sponsor);background-color:var(--vp-c-bg-soft);transition:color .25s,background-color .25s}.sp .sp-link.link[data-v-f9987cb6]:hover,.sp .sp-link.link[data-v-f9987cb6]:focus{outline:none;color:var(--vp-c-white);background-color:var(--vp-c-sponsor)}.sp-icon[data-v-f9987cb6]{margin-right:8px;font-size:16px}.VPTeamMembers.small .container[data-v-fba19bad]{grid-template-columns:repeat(auto-fit,minmax(224px,1fr))}.VPTeamMembers.small.count-1 .container[data-v-fba19bad]{max-width:276px}.VPTeamMembers.small.count-2 .container[data-v-fba19bad]{max-width:576px}.VPTeamMembers.small.count-3 .container[data-v-fba19bad]{max-width:876px}.VPTeamMembers.medium .container[data-v-fba19bad]{grid-template-columns:repeat(auto-fit,minmax(256px,1fr))}@media (min-width: 375px){.VPTeamMembers.medium .container[data-v-fba19bad]{grid-template-columns:repeat(auto-fit,minmax(288px,1fr))}}.VPTeamMembers.medium.count-1 .container[data-v-fba19bad]{max-width:368px}.VPTeamMembers.medium.count-2 .container[data-v-fba19bad]{max-width:760px}.container[data-v-fba19bad]{display:grid;gap:24px;margin:0 auto;max-width:1152px}:root{--vp-plugin-tabs-tab-text-color: var(--vp-c-text-2);--vp-plugin-tabs-tab-active-text-color: var(--vp-c-text-1);--vp-plugin-tabs-tab-hover-text-color: var(--vp-c-text-1);--vp-plugin-tabs-tab-bg: var(--vp-c-bg-soft);--vp-plugin-tabs-tab-divider: var(--vp-c-divider);--vp-plugin-tabs-tab-active-bar-color: var(--vp-c-brand-1)}.plugin-tabs{margin:16px 0;background-color:var(--vp-plugin-tabs-tab-bg);border-radius:8px}.plugin-tabs--tab-list{position:relative;padding:0 12px;overflow-x:auto;overflow-y:hidden}.plugin-tabs--tab-list:after{content:"";position:absolute;bottom:0;left:0;right:0;height:2px;background-color:var(--vp-plugin-tabs-tab-divider)}.plugin-tabs--tab{position:relative;padding:0 12px;line-height:48px;border-bottom:2px solid transparent;color:var(--vp-plugin-tabs-tab-text-color);font-size:14px;font-weight:500;white-space:nowrap;transition:color .25s}.plugin-tabs--tab[aria-selected=true]{color:var(--vp-plugin-tabs-tab-active-text-color)}.plugin-tabs--tab:hover{color:var(--vp-plugin-tabs-tab-hover-text-color)}.plugin-tabs--tab:after{content:"";position:absolute;bottom:-2px;left:8px;right:8px;height:2px;background-color:transparent;transition:background-color .25s;z-index:1}.plugin-tabs--tab[aria-selected=true]:after{background-color:var(--vp-plugin-tabs-tab-active-bar-color)}.plugin-tabs--content[data-v-9b0d03d2]{padding:16px}.plugin-tabs--content[data-v-9b0d03d2]>:first-child:first-child{margin-top:0}.plugin-tabs--content[data-v-9b0d03d2]>:last-child:last-child{margin-bottom:0}.plugin-tabs--content[data-v-9b0d03d2]>div[class*=language-]{border-radius:8px;margin:16px 0}:root:not(.dark) .plugin-tabs--content[data-v-9b0d03d2] div[class*=language-]{background-color:var(--vp-c-bg)}.VPHero .clip{white-space:pre;max-width:500px}:root{--vp-font-family-base: "Barlow", "Inter var experimental", "Inter var", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;--vp-font-family-mono: "Space Mono", Menlo, Monaco, Consolas, "Courier New", monospace}.mono{font-feature-settings:"calt" 0}:root{--julia-blue: #4063D8;--julia-purple: #9558B2;--julia-red: #CB3C33;--julia-green: #389826;--vp-c-brand: #389826;--vp-c-brand-light: #3dd027;--vp-c-brand-lighter: #9499ff;--vp-c-brand-lightest: #bcc0ff;--vp-c-brand-dark: #535bf2;--vp-c-brand-darker: #454ce1;--vp-c-brand-dimm: #212425}:root{--vp-button-brand-border: var(--vp-c-brand-light);--vp-button-brand-text: var(--vp-c-white);--vp-button-brand-bg: var(--vp-c-brand);--vp-button-brand-hover-border: var(--vp-c-brand-light);--vp-button-brand-hover-text: var(--vp-c-white);--vp-button-brand-hover-bg: var(--vp-c-brand-light);--vp-button-brand-active-border: var(--vp-c-brand-light);--vp-button-brand-active-text: var(--vp-c-white);--vp-button-brand-active-bg: var(--vp-button-brand-bg)}:root{--vp-home-hero-name-color: transparent;--vp-home-hero-name-background: -webkit-linear-gradient( 120deg, #9558B2 30%, #CB3C33 );--vp-home-hero-image-background-image: linear-gradient( -45deg, #9558B2 30%, #389826 30%, #CB3C33 );--vp-home-hero-image-filter: blur(40px)}@media (min-width: 640px){:root{--vp-home-hero-image-filter: blur(56px)}}@media (min-width: 960px){:root{--vp-home-hero-image-filter: blur(72px)}}:root.dark{--vp-custom-block-tip-border: var(--vp-c-brand);--vp-custom-block-tip-text: var(--vp-c-brand-lightest);--vp-custom-block-tip-bg: var(--vp-c-brand-dimm);--vp-c-black: hsl(220 20% 9%);--vp-c-black-pure: hsl(220, 24%, 4%);--vp-c-black-soft: hsl(220 16% 13%);--vp-c-black-mute: hsl(220 14% 17%);--vp-c-gray: hsl(220 8% 56%);--vp-c-gray-dark-1: hsl(220 10% 39%);--vp-c-gray-dark-2: hsl(220 12% 28%);--vp-c-gray-dark-3: hsl(220 12% 23%);--vp-c-gray-dark-4: hsl(220 14% 17%);--vp-c-gray-dark-5: hsl(220 16% 13%);--vp-custom-block-info-bg: hsl(220 14% 17%)}.DocSearch{--docsearch-primary-color: var(--vp-c-brand) !important}mjx-container>svg{display:block;margin:auto}mjx-container{padding:.5rem 0}mjx-container{display:inline-block;margin:auto 2px -2px}mjx-container>svg{margin:auto;display:inline-block}:root{--vp-c-brand-1: #CB3C33;--vp-c-brand-2: #CB3C33;--vp-c-brand-3: #CB3C33;--vp-c-sponsor: #ca2971;--vitest-c-sponsor-hover: #c13071}.dark{--vp-c-brand-1: #91dd33;--vp-c-brand-2: #91dd33;--vp-c-brand-3: #91dd33;--vp-c-sponsor: #91dd33;--vitest-c-sponsor-hover: #e51370}.VPLocalSearchBox[data-v-f4c4f812]{position:fixed;z-index:100;top:0;right:0;bottom:0;left:0;display:flex}.backdrop[data-v-f4c4f812]{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--vp-backdrop-bg-color);transition:opacity .5s}.shell[data-v-f4c4f812]{position:relative;padding:12px;margin:64px auto;display:flex;flex-direction:column;gap:16px;background:var(--vp-local-search-bg);width:min(100vw - 60px,900px);height:min-content;max-height:min(100vh - 128px,900px);border-radius:6px}@media (max-width: 767px){.shell[data-v-f4c4f812]{margin:0;width:100vw;height:100vh;max-height:none;border-radius:0}}.search-bar[data-v-f4c4f812]{border:1px solid var(--vp-c-divider);border-radius:4px;display:flex;align-items:center;padding:0 12px;cursor:text}@media (max-width: 767px){.search-bar[data-v-f4c4f812]{padding:0 8px}}.search-bar[data-v-f4c4f812]:focus-within{border-color:var(--vp-c-brand-1)}.local-search-icon[data-v-f4c4f812]{display:block;font-size:18px}.navigate-icon[data-v-f4c4f812]{display:block;font-size:14px}.search-icon[data-v-f4c4f812]{margin:8px}@media (max-width: 767px){.search-icon[data-v-f4c4f812]{display:none}}.search-input[data-v-f4c4f812]{padding:6px 12px;font-size:inherit;width:100%}@media (max-width: 767px){.search-input[data-v-f4c4f812]{padding:6px 4px}}.search-actions[data-v-f4c4f812]{display:flex;gap:4px}@media (any-pointer: coarse){.search-actions[data-v-f4c4f812]{gap:8px}}@media (min-width: 769px){.search-actions.before[data-v-f4c4f812]{display:none}}.search-actions button[data-v-f4c4f812]{padding:8px}.search-actions button[data-v-f4c4f812]:not([disabled]):hover,.toggle-layout-button.detailed-list[data-v-f4c4f812]{color:var(--vp-c-brand-1)}.search-actions button.clear-button[data-v-f4c4f812]:disabled{opacity:.37}.search-keyboard-shortcuts[data-v-f4c4f812]{font-size:.8rem;opacity:75%;display:flex;flex-wrap:wrap;gap:16px;line-height:14px}.search-keyboard-shortcuts span[data-v-f4c4f812]{display:flex;align-items:center;gap:4px}@media (max-width: 767px){.search-keyboard-shortcuts[data-v-f4c4f812]{display:none}}.search-keyboard-shortcuts kbd[data-v-f4c4f812]{background:#8080801a;border-radius:4px;padding:3px 6px;min-width:24px;display:inline-block;text-align:center;vertical-align:middle;border:1px solid rgba(128,128,128,.15);box-shadow:0 2px 2px #0000001a}.results[data-v-f4c4f812]{display:flex;flex-direction:column;gap:6px;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}.result[data-v-f4c4f812]{display:flex;align-items:center;gap:8px;border-radius:4px;transition:none;line-height:1rem;border:solid 2px var(--vp-local-search-result-border);outline:none}.result>div[data-v-f4c4f812]{margin:12px;width:100%;overflow:hidden}@media (max-width: 767px){.result>div[data-v-f4c4f812]{margin:8px}}.titles[data-v-f4c4f812]{display:flex;flex-wrap:wrap;gap:4px;position:relative;z-index:1001;padding:2px 0}.title[data-v-f4c4f812]{display:flex;align-items:center;gap:4px}.title.main[data-v-f4c4f812]{font-weight:500}.title-icon[data-v-f4c4f812]{opacity:.5;font-weight:500;color:var(--vp-c-brand-1)}.title svg[data-v-f4c4f812]{opacity:.5}.result.selected[data-v-f4c4f812]{--vp-local-search-result-bg: var(--vp-local-search-result-selected-bg);border-color:var(--vp-local-search-result-selected-border)}.excerpt-wrapper[data-v-f4c4f812]{position:relative}.excerpt[data-v-f4c4f812]{opacity:75%;pointer-events:none;max-height:140px;overflow:hidden;position:relative;opacity:.5;margin-top:4px}.result.selected .excerpt[data-v-f4c4f812]{opacity:1}.excerpt[data-v-f4c4f812] *{font-size:.8rem!important;line-height:130%!important}.titles[data-v-f4c4f812] mark,.excerpt[data-v-f4c4f812] mark{background-color:var(--vp-local-search-highlight-bg);color:var(--vp-local-search-highlight-text);border-radius:2px;padding:0 2px}.excerpt[data-v-f4c4f812] .vp-code-group .tabs{display:none}.excerpt[data-v-f4c4f812] .vp-code-group div[class*=language-]{border-radius:8px!important}.excerpt-gradient-bottom[data-v-f4c4f812]{position:absolute;bottom:-1px;left:0;width:100%;height:8px;background:linear-gradient(transparent,var(--vp-local-search-result-bg));z-index:1000}.excerpt-gradient-top[data-v-f4c4f812]{position:absolute;top:-1px;left:0;width:100%;height:8px;background:linear-gradient(var(--vp-local-search-result-bg),transparent);z-index:1000}.result.selected .titles[data-v-f4c4f812],.result.selected .title-icon[data-v-f4c4f812]{color:var(--vp-c-brand-1)!important}.no-results[data-v-f4c4f812]{font-size:.9rem;text-align:center;padding:12px}svg[data-v-f4c4f812]{flex:none}
diff --git a/dev/assets/style._gsH3DsU.css b/dev/assets/style._gsH3DsU.css
deleted file mode 100644
index 956902b..0000000
--- a/dev/assets/style._gsH3DsU.css
+++ /dev/null
@@ -1 +0,0 @@
-@import"https://fonts.googleapis.com/css?family=Space+Mono:regular,italic,700,700italic";@import"https://fonts.googleapis.com/css?family=Space+Grotesk:regular,italic,700,700italic";@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/dev/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/dev/assets/inter-roman-cyrillic.C5lxZ8CY.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/dev/assets/inter-roman-greek-ext.CqjqNYQ-.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/dev/assets/inter-roman-greek.BBVDIX6e.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/dev/assets/inter-roman-vietnamese.BjW4sHH5.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/dev/assets/inter-roman-latin-ext.4ZJIpNVo.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/dev/assets/inter-roman-latin.Di8DUHzh.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/dev/assets/inter-italic-cyrillic-ext.r48I6akx.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/dev/assets/inter-italic-cyrillic.By2_1cv3.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/dev/assets/inter-italic-greek-ext.1u6EdAuj.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/dev/assets/inter-italic-greek.DJ8dCoTZ.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/dev/assets/inter-italic-vietnamese.BSbpV94h.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/dev/assets/inter-italic-latin-ext.CN1xVJS-.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/dev/assets/inter-italic-latin.C2AdPX0b.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Punctuation SC;font-weight:400;src:local("PingFang SC Regular"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:500;src:local("PingFang SC Medium"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:600;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:700;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}:root{--vp-c-white: #ffffff;--vp-c-black: #000000;--vp-c-neutral: var(--vp-c-black);--vp-c-neutral-inverse: var(--vp-c-white)}.dark{--vp-c-neutral: var(--vp-c-white);--vp-c-neutral-inverse: var(--vp-c-black)}:root{--vp-c-gray-1: #dddde3;--vp-c-gray-2: #e4e4e9;--vp-c-gray-3: #ebebef;--vp-c-gray-soft: rgba(142, 150, 170, .14);--vp-c-indigo-1: #3451b2;--vp-c-indigo-2: #3a5ccc;--vp-c-indigo-3: #5672cd;--vp-c-indigo-soft: rgba(100, 108, 255, .14);--vp-c-purple-1: #6f42c1;--vp-c-purple-2: #7e4cc9;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .14);--vp-c-green-1: #18794e;--vp-c-green-2: #299764;--vp-c-green-3: #30a46c;--vp-c-green-soft: rgba(16, 185, 129, .14);--vp-c-yellow-1: #915930;--vp-c-yellow-2: #946300;--vp-c-yellow-3: #9f6a00;--vp-c-yellow-soft: rgba(234, 179, 8, .14);--vp-c-red-1: #b8272c;--vp-c-red-2: #d5393e;--vp-c-red-3: #e0575b;--vp-c-red-soft: rgba(244, 63, 94, .14);--vp-c-sponsor: #db2777}.dark{--vp-c-gray-1: #515c67;--vp-c-gray-2: #414853;--vp-c-gray-3: #32363f;--vp-c-gray-soft: rgba(101, 117, 133, .16);--vp-c-indigo-1: #a8b1ff;--vp-c-indigo-2: #5c73e7;--vp-c-indigo-3: #3e63dd;--vp-c-indigo-soft: rgba(100, 108, 255, .16);--vp-c-purple-1: #c8abfa;--vp-c-purple-2: #a879e6;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .16);--vp-c-green-1: #3dd68c;--vp-c-green-2: #30a46c;--vp-c-green-3: #298459;--vp-c-green-soft: rgba(16, 185, 129, .16);--vp-c-yellow-1: #f9b44e;--vp-c-yellow-2: #da8b17;--vp-c-yellow-3: #a46a0a;--vp-c-yellow-soft: rgba(234, 179, 8, .16);--vp-c-red-1: #f66f81;--vp-c-red-2: #f14158;--vp-c-red-3: #b62a3c;--vp-c-red-soft: rgba(244, 63, 94, .16)}:root{--vp-c-bg: #ffffff;--vp-c-bg-alt: #f6f6f7;--vp-c-bg-elv: #ffffff;--vp-c-bg-soft: #f6f6f7}.dark{--vp-c-bg: #1b1b1f;--vp-c-bg-alt: #161618;--vp-c-bg-elv: #202127;--vp-c-bg-soft: #202127}:root{--vp-c-border: #c2c2c4;--vp-c-divider: #e2e2e3;--vp-c-gutter: #e2e2e3}.dark{--vp-c-border: #3c3f44;--vp-c-divider: #2e2e32;--vp-c-gutter: #000000}:root{--vp-c-text-1: rgba(60, 60, 67);--vp-c-text-2: rgba(60, 60, 67, .78);--vp-c-text-3: rgba(60, 60, 67, .56)}.dark{--vp-c-text-1: rgba(255, 255, 245, .86);--vp-c-text-2: rgba(235, 235, 245, .6);--vp-c-text-3: rgba(235, 235, 245, .38)}:root{--vp-c-default-1: var(--vp-c-gray-1);--vp-c-default-2: var(--vp-c-gray-2);--vp-c-default-3: var(--vp-c-gray-3);--vp-c-default-soft: var(--vp-c-gray-soft);--vp-c-brand-1: var(--vp-c-indigo-1);--vp-c-brand-2: var(--vp-c-indigo-2);--vp-c-brand-3: var(--vp-c-indigo-3);--vp-c-brand-soft: var(--vp-c-indigo-soft);--vp-c-brand: var(--vp-c-brand-1);--vp-c-tip-1: var(--vp-c-brand-1);--vp-c-tip-2: var(--vp-c-brand-2);--vp-c-tip-3: var(--vp-c-brand-3);--vp-c-tip-soft: var(--vp-c-brand-soft);--vp-c-note-1: var(--vp-c-brand-1);--vp-c-note-2: var(--vp-c-brand-2);--vp-c-note-3: var(--vp-c-brand-3);--vp-c-note-soft: var(--vp-c-brand-soft);--vp-c-success-1: var(--vp-c-green-1);--vp-c-success-2: var(--vp-c-green-2);--vp-c-success-3: var(--vp-c-green-3);--vp-c-success-soft: var(--vp-c-green-soft);--vp-c-important-1: var(--vp-c-purple-1);--vp-c-important-2: var(--vp-c-purple-2);--vp-c-important-3: var(--vp-c-purple-3);--vp-c-important-soft: var(--vp-c-purple-soft);--vp-c-warning-1: var(--vp-c-yellow-1);--vp-c-warning-2: var(--vp-c-yellow-2);--vp-c-warning-3: var(--vp-c-yellow-3);--vp-c-warning-soft: var(--vp-c-yellow-soft);--vp-c-danger-1: var(--vp-c-red-1);--vp-c-danger-2: var(--vp-c-red-2);--vp-c-danger-3: var(--vp-c-red-3);--vp-c-danger-soft: var(--vp-c-red-soft);--vp-c-caution-1: var(--vp-c-red-1);--vp-c-caution-2: var(--vp-c-red-2);--vp-c-caution-3: var(--vp-c-red-3);--vp-c-caution-soft: var(--vp-c-red-soft)}:root{--vp-font-family-base: "Inter", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--vp-font-family-mono: ui-monospace, "Menlo", "Monaco", "Consolas", "Liberation Mono", "Courier New", monospace;font-optical-sizing:auto}:root:where(:lang(zh)){--vp-font-family-base: "Punctuation SC", "Inter", ui-sans-serif, system-ui, "PingFang SC", "Noto Sans CJK SC", "Noto Sans SC", "Heiti SC", "Microsoft YaHei", "DengXian", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"}:root{--vp-shadow-1: 0 1px 2px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .06);--vp-shadow-2: 0 3px 12px rgba(0, 0, 0, .07), 0 1px 4px rgba(0, 0, 0, .07);--vp-shadow-3: 0 12px 32px rgba(0, 0, 0, .1), 0 2px 6px rgba(0, 0, 0, .08);--vp-shadow-4: 0 14px 44px rgba(0, 0, 0, .12), 0 3px 9px rgba(0, 0, 0, .12);--vp-shadow-5: 0 18px 56px rgba(0, 0, 0, .16), 0 4px 12px rgba(0, 0, 0, .16)}:root{--vp-z-index-footer: 10;--vp-z-index-local-nav: 20;--vp-z-index-nav: 30;--vp-z-index-layout-top: 40;--vp-z-index-backdrop: 50;--vp-z-index-sidebar: 60}@media (min-width: 960px){:root{--vp-z-index-sidebar: 25}}:root{--vp-layout-max-width: 1440px}:root{--vp-header-anchor-symbol: "#"}:root{--vp-code-line-height: 1.7;--vp-code-font-size: .875em;--vp-code-color: var(--vp-c-brand-1);--vp-code-link-color: var(--vp-c-brand-1);--vp-code-link-hover-color: var(--vp-c-brand-2);--vp-code-bg: var(--vp-c-default-soft);--vp-code-block-color: var(--vp-c-text-2);--vp-code-block-bg: var(--vp-c-bg-alt);--vp-code-block-divider-color: var(--vp-c-gutter);--vp-code-lang-color: var(--vp-c-text-3);--vp-code-line-highlight-color: var(--vp-c-default-soft);--vp-code-line-number-color: var(--vp-c-text-3);--vp-code-line-diff-add-color: var(--vp-c-success-soft);--vp-code-line-diff-add-symbol-color: var(--vp-c-success-1);--vp-code-line-diff-remove-color: var(--vp-c-danger-soft);--vp-code-line-diff-remove-symbol-color: var(--vp-c-danger-1);--vp-code-line-warning-color: var(--vp-c-warning-soft);--vp-code-line-error-color: var(--vp-c-danger-soft);--vp-code-copy-code-border-color: var(--vp-c-divider);--vp-code-copy-code-bg: var(--vp-c-bg-soft);--vp-code-copy-code-hover-border-color: var(--vp-c-divider);--vp-code-copy-code-hover-bg: var(--vp-c-bg);--vp-code-copy-code-active-text: var(--vp-c-text-2);--vp-code-copy-copied-text-content: "Copied";--vp-code-tab-divider: var(--vp-code-block-divider-color);--vp-code-tab-text-color: var(--vp-c-text-2);--vp-code-tab-bg: var(--vp-code-block-bg);--vp-code-tab-hover-text-color: var(--vp-c-text-1);--vp-code-tab-active-text-color: var(--vp-c-text-1);--vp-code-tab-active-bar-color: var(--vp-c-brand-1)}:root{--vp-button-brand-border: transparent;--vp-button-brand-text: var(--vp-c-white);--vp-button-brand-bg: var(--vp-c-brand-3);--vp-button-brand-hover-border: transparent;--vp-button-brand-hover-text: var(--vp-c-white);--vp-button-brand-hover-bg: var(--vp-c-brand-2);--vp-button-brand-active-border: transparent;--vp-button-brand-active-text: var(--vp-c-white);--vp-button-brand-active-bg: var(--vp-c-brand-1);--vp-button-alt-border: transparent;--vp-button-alt-text: var(--vp-c-text-1);--vp-button-alt-bg: var(--vp-c-default-3);--vp-button-alt-hover-border: transparent;--vp-button-alt-hover-text: var(--vp-c-text-1);--vp-button-alt-hover-bg: var(--vp-c-default-2);--vp-button-alt-active-border: transparent;--vp-button-alt-active-text: var(--vp-c-text-1);--vp-button-alt-active-bg: var(--vp-c-default-1);--vp-button-sponsor-border: var(--vp-c-text-2);--vp-button-sponsor-text: var(--vp-c-text-2);--vp-button-sponsor-bg: transparent;--vp-button-sponsor-hover-border: var(--vp-c-sponsor);--vp-button-sponsor-hover-text: var(--vp-c-sponsor);--vp-button-sponsor-hover-bg: transparent;--vp-button-sponsor-active-border: var(--vp-c-sponsor);--vp-button-sponsor-active-text: var(--vp-c-sponsor);--vp-button-sponsor-active-bg: transparent}:root{--vp-custom-block-font-size: 14px;--vp-custom-block-code-font-size: 13px;--vp-custom-block-info-border: transparent;--vp-custom-block-info-text: var(--vp-c-text-1);--vp-custom-block-info-bg: var(--vp-c-default-soft);--vp-custom-block-info-code-bg: var(--vp-c-default-soft);--vp-custom-block-note-border: transparent;--vp-custom-block-note-text: var(--vp-c-text-1);--vp-custom-block-note-bg: var(--vp-c-default-soft);--vp-custom-block-note-code-bg: var(--vp-c-default-soft);--vp-custom-block-tip-border: transparent;--vp-custom-block-tip-text: var(--vp-c-text-1);--vp-custom-block-tip-bg: var(--vp-c-tip-soft);--vp-custom-block-tip-code-bg: var(--vp-c-tip-soft);--vp-custom-block-important-border: transparent;--vp-custom-block-important-text: var(--vp-c-text-1);--vp-custom-block-important-bg: var(--vp-c-important-soft);--vp-custom-block-important-code-bg: var(--vp-c-important-soft);--vp-custom-block-warning-border: transparent;--vp-custom-block-warning-text: var(--vp-c-text-1);--vp-custom-block-warning-bg: var(--vp-c-warning-soft);--vp-custom-block-warning-code-bg: var(--vp-c-warning-soft);--vp-custom-block-danger-border: transparent;--vp-custom-block-danger-text: var(--vp-c-text-1);--vp-custom-block-danger-bg: var(--vp-c-danger-soft);--vp-custom-block-danger-code-bg: var(--vp-c-danger-soft);--vp-custom-block-caution-border: transparent;--vp-custom-block-caution-text: var(--vp-c-text-1);--vp-custom-block-caution-bg: var(--vp-c-caution-soft);--vp-custom-block-caution-code-bg: var(--vp-c-caution-soft);--vp-custom-block-details-border: var(--vp-custom-block-info-border);--vp-custom-block-details-text: var(--vp-custom-block-info-text);--vp-custom-block-details-bg: var(--vp-custom-block-info-bg);--vp-custom-block-details-code-bg: var(--vp-custom-block-info-code-bg)}:root{--vp-input-border-color: var(--vp-c-border);--vp-input-bg-color: var(--vp-c-bg-alt);--vp-input-switch-bg-color: var(--vp-c-default-soft)}:root{--vp-nav-height: 64px;--vp-nav-bg-color: var(--vp-c-bg);--vp-nav-screen-bg-color: var(--vp-c-bg);--vp-nav-logo-height: 24px}.hide-nav{--vp-nav-height: 0px}.hide-nav .VPSidebar{--vp-nav-height: 22px}:root{--vp-local-nav-bg-color: var(--vp-c-bg)}:root{--vp-sidebar-width: 272px;--vp-sidebar-bg-color: var(--vp-c-bg-alt)}:root{--vp-backdrop-bg-color: rgba(0, 0, 0, .6)}:root{--vp-home-hero-name-color: var(--vp-c-brand-1);--vp-home-hero-name-background: transparent;--vp-home-hero-image-background-image: none;--vp-home-hero-image-filter: none}:root{--vp-badge-info-border: transparent;--vp-badge-info-text: var(--vp-c-text-2);--vp-badge-info-bg: var(--vp-c-default-soft);--vp-badge-tip-border: transparent;--vp-badge-tip-text: var(--vp-c-tip-1);--vp-badge-tip-bg: var(--vp-c-tip-soft);--vp-badge-warning-border: transparent;--vp-badge-warning-text: var(--vp-c-warning-1);--vp-badge-warning-bg: var(--vp-c-warning-soft);--vp-badge-danger-border: transparent;--vp-badge-danger-text: var(--vp-c-danger-1);--vp-badge-danger-bg: var(--vp-c-danger-soft)}:root{--vp-carbon-ads-text-color: var(--vp-c-text-1);--vp-carbon-ads-poweredby-color: var(--vp-c-text-2);--vp-carbon-ads-bg-color: var(--vp-c-bg-soft);--vp-carbon-ads-hover-text-color: var(--vp-c-brand-1);--vp-carbon-ads-hover-poweredby-color: var(--vp-c-text-1)}:root{--vp-local-search-bg: var(--vp-c-bg);--vp-local-search-result-bg: var(--vp-c-bg);--vp-local-search-result-border: var(--vp-c-divider);--vp-local-search-result-selected-bg: var(--vp-c-bg);--vp-local-search-result-selected-border: var(--vp-c-brand-1);--vp-local-search-highlight-bg: var(--vp-c-brand-1);--vp-local-search-highlight-text: var(--vp-c-neutral-inverse)}@media (prefers-reduced-motion: reduce){*,:before,:after{animation-delay:-1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important;background-attachment:initial!important;scroll-behavior:auto!important;transition-duration:0s!important;transition-delay:0s!important}}*,:before,:after{box-sizing:border-box}html{line-height:1.4;font-size:16px;-webkit-text-size-adjust:100%}html.dark{color-scheme:dark}body{margin:0;width:100%;min-width:320px;min-height:100vh;line-height:24px;font-family:var(--vp-font-family-base);font-size:16px;font-weight:400;color:var(--vp-c-text-1);background-color:var(--vp-c-bg);font-synthesis:style;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}main{display:block}h1,h2,h3,h4,h5,h6{margin:0;line-height:24px;font-size:16px;font-weight:400}p{margin:0}strong,b{font-weight:600}a,area,button,[role=button],input,label,select,summary,textarea{touch-action:manipulation}a{color:inherit;text-decoration:inherit}ol,ul{list-style:none;margin:0;padding:0}blockquote{margin:0}pre,code,kbd,samp{font-family:var(--vp-font-family-mono)}img,svg,video,canvas,audio,iframe,embed,object{display:block}figure{margin:0}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{border:0;padding:0;line-height:inherit;color:inherit}button{padding:0;font-family:inherit;background-color:transparent;background-image:none}button:enabled,[role=button]:enabled{cursor:pointer}button:focus,button:focus-visible{outline:1px dotted;outline:4px auto -webkit-focus-ring-color}button:focus:not(:focus-visible){outline:none!important}input:focus,textarea:focus,select:focus{outline:none}table{border-collapse:collapse}input{background-color:transparent}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:var(--vp-c-text-3)}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:var(--vp-c-text-3)}input::placeholder,textarea::placeholder{color:var(--vp-c-text-3)}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}textarea{resize:vertical}select{-webkit-appearance:none}fieldset{margin:0;padding:0}h1,h2,h3,h4,h5,h6,li,p{overflow-wrap:break-word}vite-error-overlay{z-index:9999}mjx-container{overflow-x:auto}mjx-container>svg{display:inline-block;margin:auto}[class^=vpi-],[class*=" vpi-"],.vp-icon{width:1em;height:1em}[class^=vpi-].bg,[class*=" vpi-"].bg,.vp-icon.bg{background-size:100% 100%;background-color:transparent}[class^=vpi-]:not(.bg),[class*=" vpi-"]:not(.bg),.vp-icon:not(.bg){-webkit-mask:var(--icon) no-repeat;mask:var(--icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit}.vpi-align-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M21 6H3M15 12H3M17 18H3'/%3E%3C/svg%3E")}.vpi-arrow-right,.vpi-arrow-down,.vpi-arrow-left,.vpi-arrow-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5l7 7-7 7'/%3E%3C/svg%3E")}.vpi-chevron-right,.vpi-chevron-down,.vpi-chevron-left,.vpi-chevron-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E")}.vpi-chevron-down,.vpi-arrow-down{transform:rotate(90deg)}.vpi-chevron-left,.vpi-arrow-left{transform:rotate(180deg)}.vpi-chevron-up,.vpi-arrow-up{transform:rotate(-90deg)}.vpi-square-pen{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7'/%3E%3Cpath d='M18.375 2.625a2.121 2.121 0 1 1 3 3L12 15l-4 1 1-4Z'/%3E%3C/svg%3E")}.vpi-plus{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5v14'/%3E%3C/svg%3E")}.vpi-sun{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Cpath d='M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41'/%3E%3C/svg%3E")}.vpi-moon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z'/%3E%3C/svg%3E")}.vpi-more-horizontal{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='1'/%3E%3Ccircle cx='19' cy='12' r='1'/%3E%3Ccircle cx='5' cy='12' r='1'/%3E%3C/svg%3E")}.vpi-languages{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m5 8 6 6M4 14l6-6 2-3M2 5h12M7 2h1M22 22l-5-10-5 10M14 18h6'/%3E%3C/svg%3E")}.vpi-heart{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z'/%3E%3C/svg%3E")}.vpi-search{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E")}.vpi-layout-list{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='7' height='7' x='3' y='3' rx='1'/%3E%3Crect width='7' height='7' x='3' y='14' rx='1'/%3E%3Cpath d='M14 4h7M14 9h7M14 15h7M14 20h7'/%3E%3C/svg%3E")}.vpi-delete{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M20 5H9l-7 7 7 7h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2ZM18 9l-6 6M12 9l6 6'/%3E%3C/svg%3E")}.vpi-corner-down-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 10-5 5 5 5'/%3E%3Cpath d='M20 4v7a4 4 0 0 1-4 4H4'/%3E%3C/svg%3E")}:root{--vp-icon-copy: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3C/svg%3E");--vp-icon-copied: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3Cpath d='m9 14 2 2 4-4'/%3E%3C/svg%3E")}.vpi-social-discord{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0 12.64 12.64 0 0 0-.617-1.25.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057 19.9 19.9 0 0 0 5.993 3.03.078.078 0 0 0 .084-.028c.462-.63.874-1.295 1.226-1.994a.076.076 0 0 0-.041-.106 13.107 13.107 0 0 1-1.872-.892.077.077 0 0 1-.008-.128 10.2 10.2 0 0 0 .372-.292.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127 12.299 12.299 0 0 1-1.873.892.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028 19.839 19.839 0 0 0 6.002-3.03.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.946 2.418-2.157 2.418Z'/%3E%3C/svg%3E")}.vpi-social-facebook{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9.101 23.691v-7.98H6.627v-3.667h2.474v-1.58c0-4.085 1.848-5.978 5.858-5.978.401 0 .955.042 1.468.103a8.68 8.68 0 0 1 1.141.195v3.325a8.623 8.623 0 0 0-.653-.036 26.805 26.805 0 0 0-.733-.009c-.707 0-1.259.096-1.675.309a1.686 1.686 0 0 0-.679.622c-.258.42-.374.995-.374 1.752v1.297h3.919l-.386 2.103-.287 1.564h-3.246v8.245C19.396 23.238 24 18.179 24 12.044c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.628 3.874 10.35 9.101 11.647Z'/%3E%3C/svg%3E")}.vpi-social-github{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E")}.vpi-social-instagram{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7.03.084c-1.277.06-2.149.264-2.91.563a5.874 5.874 0 0 0-2.124 1.388 5.878 5.878 0 0 0-1.38 2.127C.321 4.926.12 5.8.064 7.076.008 8.354-.005 8.764.001 12.023c.007 3.259.021 3.667.083 4.947.061 1.277.264 2.149.563 2.911.308.789.72 1.457 1.388 2.123a5.872 5.872 0 0 0 2.129 1.38c.763.295 1.636.496 2.913.552 1.278.056 1.689.069 4.947.063 3.257-.007 3.668-.021 4.947-.082 1.28-.06 2.147-.265 2.91-.563a5.881 5.881 0 0 0 2.123-1.388 5.881 5.881 0 0 0 1.38-2.129c.295-.763.496-1.636.551-2.912.056-1.28.07-1.69.063-4.948-.006-3.258-.02-3.667-.081-4.947-.06-1.28-.264-2.148-.564-2.911a5.892 5.892 0 0 0-1.387-2.123 5.857 5.857 0 0 0-2.128-1.38C19.074.322 18.202.12 16.924.066 15.647.009 15.236-.006 11.977 0 8.718.008 8.31.021 7.03.084m.14 21.693c-1.17-.05-1.805-.245-2.228-.408a3.736 3.736 0 0 1-1.382-.895 3.695 3.695 0 0 1-.9-1.378c-.165-.423-.363-1.058-.417-2.228-.06-1.264-.072-1.644-.08-4.848-.006-3.204.006-3.583.061-4.848.05-1.169.246-1.805.408-2.228.216-.561.477-.96.895-1.382a3.705 3.705 0 0 1 1.379-.9c.423-.165 1.057-.361 2.227-.417 1.265-.06 1.644-.072 4.848-.08 3.203-.006 3.583.006 4.85.062 1.168.05 1.804.244 2.227.408.56.216.96.475 1.382.895.421.42.681.817.9 1.378.165.422.362 1.056.417 2.227.06 1.265.074 1.645.08 4.848.005 3.203-.006 3.583-.061 4.848-.051 1.17-.245 1.805-.408 2.23-.216.56-.477.96-.896 1.38a3.705 3.705 0 0 1-1.378.9c-.422.165-1.058.362-2.226.418-1.266.06-1.645.072-4.85.079-3.204.007-3.582-.006-4.848-.06m9.783-16.192a1.44 1.44 0 1 0 1.437-1.442 1.44 1.44 0 0 0-1.437 1.442M5.839 12.012a6.161 6.161 0 1 0 12.323-.024 6.162 6.162 0 0 0-12.323.024M8 12.008A4 4 0 1 1 12.008 16 4 4 0 0 1 8 12.008'/%3E%3C/svg%3E")}.vpi-social-linkedin{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 0 1-2.063-2.065 2.064 2.064 0 1 1 2.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z'/%3E%3C/svg%3E")}.vpi-social-mastodon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M23.268 5.313c-.35-2.578-2.617-4.61-5.304-5.004C17.51.242 15.792 0 11.813 0h-.03c-3.98 0-4.835.242-5.288.309C3.882.692 1.496 2.518.917 5.127.64 6.412.61 7.837.661 9.143c.074 1.874.088 3.745.26 5.611.118 1.24.325 2.47.62 3.68.55 2.237 2.777 4.098 4.96 4.857 2.336.792 4.849.923 7.256.38.265-.061.527-.132.786-.213.585-.184 1.27-.39 1.774-.753a.057.057 0 0 0 .023-.043v-1.809a.052.052 0 0 0-.02-.041.053.053 0 0 0-.046-.01 20.282 20.282 0 0 1-4.709.545c-2.73 0-3.463-1.284-3.674-1.818a5.593 5.593 0 0 1-.319-1.433.053.053 0 0 1 .066-.054c1.517.363 3.072.546 4.632.546.376 0 .75 0 1.125-.01 1.57-.044 3.224-.124 4.768-.422.038-.008.077-.015.11-.024 2.435-.464 4.753-1.92 4.989-5.604.008-.145.03-1.52.03-1.67.002-.512.167-3.63-.024-5.545zm-3.748 9.195h-2.561V8.29c0-1.309-.55-1.976-1.67-1.976-1.23 0-1.846.79-1.846 2.35v3.403h-2.546V8.663c0-1.56-.617-2.35-1.848-2.35-1.112 0-1.668.668-1.67 1.977v6.218H4.822V8.102c0-1.31.337-2.35 1.011-3.12.696-.77 1.608-1.164 2.74-1.164 1.311 0 2.302.5 2.962 1.498l.638 1.06.638-1.06c.66-.999 1.65-1.498 2.96-1.498 1.13 0 2.043.395 2.74 1.164.675.77 1.012 1.81 1.012 3.12z'/%3E%3C/svg%3E")}.vpi-social-npm{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M1.763 0C.786 0 0 .786 0 1.763v20.474C0 23.214.786 24 1.763 24h20.474c.977 0 1.763-.786 1.763-1.763V1.763C24 .786 23.214 0 22.237 0zM5.13 5.323l13.837.019-.009 13.836h-3.464l.01-10.382h-3.456L12.04 19.17H5.113z'/%3E%3C/svg%3E")}.vpi-social-slack{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zm1.271 0a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zm0 1.271a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zm10.122 2.521a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zm-1.268 0a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zm-2.523 10.122a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zm0-1.268a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z'/%3E%3C/svg%3E")}.vpi-social-twitter,.vpi-social-x{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M18.901 1.153h3.68l-8.04 9.19L24 22.846h-7.406l-5.8-7.584-6.638 7.584H.474l8.6-9.83L0 1.154h7.594l5.243 6.932ZM17.61 20.644h2.039L6.486 3.24H4.298Z'/%3E%3C/svg%3E")}.vpi-social-youtube{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z'/%3E%3C/svg%3E")}.visually-hidden{position:absolute;width:1px;height:1px;white-space:nowrap;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden}.custom-block{border:1px solid transparent;border-radius:8px;padding:16px 16px 8px;line-height:24px;font-size:var(--vp-custom-block-font-size);color:var(--vp-c-text-2)}.custom-block.info{border-color:var(--vp-custom-block-info-border);color:var(--vp-custom-block-info-text);background-color:var(--vp-custom-block-info-bg)}.custom-block.info a,.custom-block.info code{color:var(--vp-c-brand-1)}.custom-block.info a:hover,.custom-block.info a:hover>code{color:var(--vp-c-brand-2)}.custom-block.info code{background-color:var(--vp-custom-block-info-code-bg)}.custom-block.note{border-color:var(--vp-custom-block-note-border);color:var(--vp-custom-block-note-text);background-color:var(--vp-custom-block-note-bg)}.custom-block.note a,.custom-block.note code{color:var(--vp-c-brand-1)}.custom-block.note a:hover,.custom-block.note a:hover>code{color:var(--vp-c-brand-2)}.custom-block.note code{background-color:var(--vp-custom-block-note-code-bg)}.custom-block.tip{border-color:var(--vp-custom-block-tip-border);color:var(--vp-custom-block-tip-text);background-color:var(--vp-custom-block-tip-bg)}.custom-block.tip a,.custom-block.tip code{color:var(--vp-c-tip-1)}.custom-block.tip a:hover,.custom-block.tip a:hover>code{color:var(--vp-c-tip-2)}.custom-block.tip code{background-color:var(--vp-custom-block-tip-code-bg)}.custom-block.important{border-color:var(--vp-custom-block-important-border);color:var(--vp-custom-block-important-text);background-color:var(--vp-custom-block-important-bg)}.custom-block.important a,.custom-block.important code{color:var(--vp-c-important-1)}.custom-block.important a:hover,.custom-block.important a:hover>code{color:var(--vp-c-important-2)}.custom-block.important code{background-color:var(--vp-custom-block-important-code-bg)}.custom-block.warning{border-color:var(--vp-custom-block-warning-border);color:var(--vp-custom-block-warning-text);background-color:var(--vp-custom-block-warning-bg)}.custom-block.warning a,.custom-block.warning code{color:var(--vp-c-warning-1)}.custom-block.warning a:hover,.custom-block.warning a:hover>code{color:var(--vp-c-warning-2)}.custom-block.warning code{background-color:var(--vp-custom-block-warning-code-bg)}.custom-block.danger{border-color:var(--vp-custom-block-danger-border);color:var(--vp-custom-block-danger-text);background-color:var(--vp-custom-block-danger-bg)}.custom-block.danger a,.custom-block.danger code{color:var(--vp-c-danger-1)}.custom-block.danger a:hover,.custom-block.danger a:hover>code{color:var(--vp-c-danger-2)}.custom-block.danger code{background-color:var(--vp-custom-block-danger-code-bg)}.custom-block.caution{border-color:var(--vp-custom-block-caution-border);color:var(--vp-custom-block-caution-text);background-color:var(--vp-custom-block-caution-bg)}.custom-block.caution a,.custom-block.caution code{color:var(--vp-c-caution-1)}.custom-block.caution a:hover,.custom-block.caution a:hover>code{color:var(--vp-c-caution-2)}.custom-block.caution code{background-color:var(--vp-custom-block-caution-code-bg)}.custom-block.details{border-color:var(--vp-custom-block-details-border);color:var(--vp-custom-block-details-text);background-color:var(--vp-custom-block-details-bg)}.custom-block.details a{color:var(--vp-c-brand-1)}.custom-block.details a:hover,.custom-block.details a:hover>code{color:var(--vp-c-brand-2)}.custom-block.details code{background-color:var(--vp-custom-block-details-code-bg)}.custom-block-title{font-weight:600}.custom-block p+p{margin:8px 0}.custom-block.details summary{margin:0 0 8px;font-weight:700;cursor:pointer;-webkit-user-select:none;user-select:none}.custom-block.details summary+p{margin:8px 0}.custom-block a{color:inherit;font-weight:600;text-decoration:underline;text-underline-offset:2px;transition:opacity .25s}.custom-block a:hover{opacity:.75}.custom-block code{font-size:var(--vp-custom-block-code-font-size)}.custom-block.custom-block th,.custom-block.custom-block blockquote>p{font-size:var(--vp-custom-block-font-size);color:inherit}.dark .vp-code span{color:var(--shiki-dark, inherit)}html:not(.dark) .vp-code span{color:var(--shiki-light, inherit)}.vp-code-group{margin-top:16px}.vp-code-group .tabs{position:relative;display:flex;margin-right:-24px;margin-left:-24px;padding:0 12px;background-color:var(--vp-code-tab-bg);overflow-x:auto;overflow-y:hidden;box-shadow:inset 0 -1px var(--vp-code-tab-divider)}@media (min-width: 640px){.vp-code-group .tabs{margin-right:0;margin-left:0;border-radius:8px 8px 0 0}}.vp-code-group .tabs input{position:fixed;opacity:0;pointer-events:none}.vp-code-group .tabs label{position:relative;display:inline-block;border-bottom:1px solid transparent;padding:0 12px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-code-tab-text-color);white-space:nowrap;cursor:pointer;transition:color .25s}.vp-code-group .tabs label:after{position:absolute;right:8px;bottom:-1px;left:8px;z-index:1;height:2px;border-radius:2px;content:"";background-color:transparent;transition:background-color .25s}.vp-code-group label:hover{color:var(--vp-code-tab-hover-text-color)}.vp-code-group input:checked+label{color:var(--vp-code-tab-active-text-color)}.vp-code-group input:checked+label:after{background-color:var(--vp-code-tab-active-bar-color)}.vp-code-group div[class*=language-],.vp-block{display:none;margin-top:0!important;border-top-left-radius:0!important;border-top-right-radius:0!important}.vp-code-group div[class*=language-].active,.vp-block.active{display:block}.vp-block{padding:20px 24px}.vp-doc h1,.vp-doc h2,.vp-doc h3,.vp-doc h4,.vp-doc h5,.vp-doc h6{position:relative;font-weight:600;outline:none}.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:28px}.vp-doc h2{margin:48px 0 16px;border-top:1px solid var(--vp-c-divider);padding-top:24px;letter-spacing:-.02em;line-height:32px;font-size:24px}.vp-doc h3{margin:32px 0 0;letter-spacing:-.01em;line-height:28px;font-size:20px}.vp-doc .header-anchor{position:absolute;top:0;left:0;margin-left:-.87em;font-weight:500;-webkit-user-select:none;user-select:none;opacity:0;text-decoration:none;transition:color .25s,opacity .25s}.vp-doc .header-anchor:before{content:var(--vp-header-anchor-symbol)}.vp-doc h1:hover .header-anchor,.vp-doc h1 .header-anchor:focus,.vp-doc h2:hover .header-anchor,.vp-doc h2 .header-anchor:focus,.vp-doc h3:hover .header-anchor,.vp-doc h3 .header-anchor:focus,.vp-doc h4:hover .header-anchor,.vp-doc h4 .header-anchor:focus,.vp-doc h5:hover .header-anchor,.vp-doc h5 .header-anchor:focus,.vp-doc h6:hover .header-anchor,.vp-doc h6 .header-anchor:focus{opacity:1}@media (min-width: 768px){.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:32px}}.vp-doc h2 .header-anchor{top:24px}.vp-doc p,.vp-doc summary{margin:16px 0}.vp-doc p{line-height:28px}.vp-doc blockquote{margin:16px 0;border-left:2px solid var(--vp-c-divider);padding-left:16px;transition:border-color .5s}.vp-doc blockquote>p{margin:0;font-size:16px;color:var(--vp-c-text-2);transition:color .5s}.vp-doc a{font-weight:500;color:var(--vp-c-brand-1);text-decoration:underline;text-underline-offset:2px;transition:color .25s,opacity .25s}.vp-doc a:hover{color:var(--vp-c-brand-2)}.vp-doc strong{font-weight:600}.vp-doc ul,.vp-doc ol{padding-left:1.25rem;margin:16px 0}.vp-doc ul{list-style:disc}.vp-doc ol{list-style:decimal}.vp-doc li+li{margin-top:8px}.vp-doc li>ol,.vp-doc li>ul{margin:8px 0 0}.vp-doc table{display:block;border-collapse:collapse;margin:20px 0;overflow-x:auto}.vp-doc tr{background-color:var(--vp-c-bg);border-top:1px solid var(--vp-c-divider);transition:background-color .5s}.vp-doc tr:nth-child(2n){background-color:var(--vp-c-bg-soft)}.vp-doc th,.vp-doc td{border:1px solid var(--vp-c-divider);padding:8px 16px}.vp-doc th{text-align:left;font-size:14px;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-doc td{font-size:14px}.vp-doc hr{margin:16px 0;border:none;border-top:1px solid var(--vp-c-divider)}.vp-doc .custom-block{margin:16px 0}.vp-doc .custom-block p{margin:8px 0;line-height:24px}.vp-doc .custom-block p:first-child{margin:0}.vp-doc .custom-block div[class*=language-]{margin:8px 0;border-radius:8px}.vp-doc .custom-block div[class*=language-] code{font-weight:400;background-color:transparent}.vp-doc .custom-block .vp-code-group .tabs{margin:0;border-radius:8px 8px 0 0}.vp-doc :not(pre,h1,h2,h3,h4,h5,h6)>code{font-size:var(--vp-code-font-size);color:var(--vp-code-color)}.vp-doc :not(pre)>code{border-radius:4px;padding:3px 6px;background-color:var(--vp-code-bg);transition:color .25s,background-color .5s}.vp-doc a>code{color:var(--vp-code-link-color)}.vp-doc a:hover>code{color:var(--vp-code-link-hover-color)}.vp-doc h1>code,.vp-doc h2>code,.vp-doc h3>code{font-size:.9em}.vp-doc div[class*=language-],.vp-block{position:relative;margin:16px -24px;background-color:var(--vp-code-block-bg);overflow-x:auto;transition:background-color .5s}@media (min-width: 640px){.vp-doc div[class*=language-],.vp-block{border-radius:8px;margin:16px 0}}@media (max-width: 639px){.vp-doc li div[class*=language-]{border-radius:8px 0 0 8px}}.vp-doc div[class*=language-]+div[class*=language-],.vp-doc div[class$=-api]+div[class*=language-],.vp-doc div[class*=language-]+div[class$=-api]>div[class*=language-]{margin-top:-8px}.vp-doc [class*=language-] pre,.vp-doc [class*=language-] code{direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}.vp-doc [class*=language-] pre{position:relative;z-index:1;margin:0;padding:20px 0;background:transparent;overflow-x:auto}.vp-doc [class*=language-] code{display:block;padding:0 24px;width:fit-content;min-width:100%;line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-block-color);transition:color .5s}.vp-doc [class*=language-] code .highlighted{background-color:var(--vp-code-line-highlight-color);transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .highlighted.error{background-color:var(--vp-code-line-error-color)}.vp-doc [class*=language-] code .highlighted.warning{background-color:var(--vp-code-line-warning-color)}.vp-doc [class*=language-] code .diff{transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .diff:before{position:absolute;left:10px}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){filter:blur(.095rem);opacity:.4;transition:filter .35s,opacity .35s}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){opacity:.7;transition:filter .35s,opacity .35s}.vp-doc [class*=language-]:hover .has-focused-lines .line:not(.has-focus){filter:blur(0);opacity:1}.vp-doc [class*=language-] code .diff.remove{background-color:var(--vp-code-line-diff-remove-color);opacity:.7}.vp-doc [class*=language-] code .diff.remove:before{content:"-";color:var(--vp-code-line-diff-remove-symbol-color)}.vp-doc [class*=language-] code .diff.add{background-color:var(--vp-code-line-diff-add-color)}.vp-doc [class*=language-] code .diff.add:before{content:"+";color:var(--vp-code-line-diff-add-symbol-color)}.vp-doc div[class*=language-].line-numbers-mode{padding-left:32px}.vp-doc .line-numbers-wrapper{position:absolute;top:0;bottom:0;left:0;z-index:3;border-right:1px solid var(--vp-code-block-divider-color);padding-top:20px;width:32px;text-align:center;font-family:var(--vp-font-family-mono);line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-line-number-color);transition:border-color .5s,color .5s}.vp-doc [class*=language-]>button.copy{direction:ltr;position:absolute;top:12px;right:12px;z-index:3;border:1px solid var(--vp-code-copy-code-border-color);border-radius:4px;width:40px;height:40px;background-color:var(--vp-code-copy-code-bg);opacity:0;cursor:pointer;background-image:var(--vp-icon-copy);background-position:50%;background-size:20px;background-repeat:no-repeat;transition:border-color .25s,background-color .25s,opacity .25s}.vp-doc [class*=language-]:hover>button.copy,.vp-doc [class*=language-]>button.copy:focus{opacity:1}.vp-doc [class*=language-]>button.copy:hover,.vp-doc [class*=language-]>button.copy.copied{border-color:var(--vp-code-copy-code-hover-border-color);background-color:var(--vp-code-copy-code-hover-bg)}.vp-doc [class*=language-]>button.copy.copied,.vp-doc [class*=language-]>button.copy:hover.copied{border-radius:0 4px 4px 0;background-color:var(--vp-code-copy-code-hover-bg);background-image:var(--vp-icon-copied)}.vp-doc [class*=language-]>button.copy.copied:before,.vp-doc [class*=language-]>button.copy:hover.copied:before{position:relative;top:-1px;transform:translate(calc(-100% - 1px));display:flex;justify-content:center;align-items:center;border:1px solid var(--vp-code-copy-code-hover-border-color);border-right:0;border-radius:4px 0 0 4px;padding:0 10px;width:fit-content;height:40px;text-align:center;font-size:12px;font-weight:500;color:var(--vp-code-copy-code-active-text);background-color:var(--vp-code-copy-code-hover-bg);white-space:nowrap;content:var(--vp-code-copy-copied-text-content)}.vp-doc [class*=language-]>span.lang{position:absolute;top:2px;right:8px;z-index:2;font-size:12px;font-weight:500;color:var(--vp-code-lang-color);transition:color .4s,opacity .4s}.vp-doc [class*=language-]:hover>button.copy+span.lang,.vp-doc [class*=language-]>button.copy:focus+span.lang{opacity:0}.vp-doc .VPTeamMembers{margin-top:24px}.vp-doc .VPTeamMembers.small.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}.vp-doc .VPTeamMembers.small.count-2 .container,.vp-doc .VPTeamMembers.small.count-3 .container{max-width:100%!important}.vp-doc .VPTeamMembers.medium.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}:is(.vp-external-link-icon,.vp-doc a[href*="://"],.vp-doc a[target=_blank]):not(.no-icon):after{display:inline-block;margin-top:-1px;margin-left:4px;width:11px;height:11px;background:currentColor;color:var(--vp-c-text-3);flex-shrink:0;--icon: url("data:image/svg+xml, %3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' %3E%3Cpath d='M0 0h24v24H0V0z' fill='none' /%3E%3Cpath d='M9 5v2h6.59L4 18.59 5.41 20 17 8.41V15h2V5H9z' /%3E%3C/svg%3E");-webkit-mask-image:var(--icon);mask-image:var(--icon)}.vp-external-link-icon:after{content:""}.external-link-icon-enabled :is(.vp-doc a[href*="://"],.vp-doc a[target=_blank]):after{content:"";color:currentColor}.vp-sponsor{border-radius:16px;overflow:hidden}.vp-sponsor.aside{border-radius:12px}.vp-sponsor-section+.vp-sponsor-section{margin-top:4px}.vp-sponsor-tier{margin:0 0 4px!important;text-align:center;letter-spacing:1px!important;line-height:24px;width:100%;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-sponsor.normal .vp-sponsor-tier{padding:13px 0 11px;font-size:14px}.vp-sponsor.aside .vp-sponsor-tier{padding:9px 0 7px;font-size:12px}.vp-sponsor-grid+.vp-sponsor-tier{margin-top:4px}.vp-sponsor-grid{display:flex;flex-wrap:wrap;gap:4px}.vp-sponsor-grid.xmini .vp-sponsor-grid-link{height:64px}.vp-sponsor-grid.xmini .vp-sponsor-grid-image{max-width:64px;max-height:22px}.vp-sponsor-grid.mini .vp-sponsor-grid-link{height:72px}.vp-sponsor-grid.mini .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.small .vp-sponsor-grid-link{height:96px}.vp-sponsor-grid.small .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.medium .vp-sponsor-grid-link{height:112px}.vp-sponsor-grid.medium .vp-sponsor-grid-image{max-width:120px;max-height:36px}.vp-sponsor-grid.big .vp-sponsor-grid-link{height:184px}.vp-sponsor-grid.big .vp-sponsor-grid-image{max-width:192px;max-height:56px}.vp-sponsor-grid[data-vp-grid="2"] .vp-sponsor-grid-item{width:calc((100% - 4px)/2)}.vp-sponsor-grid[data-vp-grid="3"] .vp-sponsor-grid-item{width:calc((100% - 4px * 2) / 3)}.vp-sponsor-grid[data-vp-grid="4"] .vp-sponsor-grid-item{width:calc((100% - 12px)/4)}.vp-sponsor-grid[data-vp-grid="5"] .vp-sponsor-grid-item{width:calc((100% - 16px)/5)}.vp-sponsor-grid[data-vp-grid="6"] .vp-sponsor-grid-item{width:calc((100% - 4px * 5) / 6)}.vp-sponsor-grid-item{flex-shrink:0;width:100%;background-color:var(--vp-c-bg-soft);transition:background-color .25s}.vp-sponsor-grid-item:hover{background-color:var(--vp-c-default-soft)}.vp-sponsor-grid-item:hover .vp-sponsor-grid-image{filter:grayscale(0) invert(0)}.vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.dark .vp-sponsor-grid-item:hover{background-color:var(--vp-c-white)}.dark .vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.vp-sponsor-grid-link{display:flex}.vp-sponsor-grid-box{display:flex;justify-content:center;align-items:center;width:100%}.vp-sponsor-grid-image{max-width:100%;filter:grayscale(1);transition:filter .25s}.dark .vp-sponsor-grid-image{filter:grayscale(1) invert(1)}.VPBadge{display:inline-block;margin-left:2px;border:1px solid transparent;border-radius:12px;padding:0 10px;line-height:22px;font-size:12px;font-weight:500;transform:translateY(-2px)}.VPBadge.small{padding:0 6px;line-height:18px;font-size:10px;transform:translateY(-8px)}.VPDocFooter .VPBadge{display:none}.vp-doc h1>.VPBadge{margin-top:4px;vertical-align:top}.vp-doc h2>.VPBadge{margin-top:3px;padding:0 8px;vertical-align:top}.vp-doc h3>.VPBadge{vertical-align:middle}.vp-doc h4>.VPBadge,.vp-doc h5>.VPBadge,.vp-doc h6>.VPBadge{vertical-align:middle;line-height:18px}.VPBadge.info{border-color:var(--vp-badge-info-border);color:var(--vp-badge-info-text);background-color:var(--vp-badge-info-bg)}.VPBadge.tip{border-color:var(--vp-badge-tip-border);color:var(--vp-badge-tip-text);background-color:var(--vp-badge-tip-bg)}.VPBadge.warning{border-color:var(--vp-badge-warning-border);color:var(--vp-badge-warning-text);background-color:var(--vp-badge-warning-bg)}.VPBadge.danger{border-color:var(--vp-badge-danger-border);color:var(--vp-badge-danger-text);background-color:var(--vp-badge-danger-bg)}.VPBackdrop[data-v-b06cdb19]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--vp-z-index-backdrop);background:var(--vp-backdrop-bg-color);transition:opacity .5s}.VPBackdrop.fade-enter-from[data-v-b06cdb19],.VPBackdrop.fade-leave-to[data-v-b06cdb19]{opacity:0}.VPBackdrop.fade-leave-active[data-v-b06cdb19]{transition-duration:.25s}@media (min-width: 1280px){.VPBackdrop[data-v-b06cdb19]{display:none}}.NotFound[data-v-951cab6c]{padding:64px 24px 96px;text-align:center}@media (min-width: 768px){.NotFound[data-v-951cab6c]{padding:96px 32px 168px}}.code[data-v-951cab6c]{line-height:64px;font-size:64px;font-weight:600}.title[data-v-951cab6c]{padding-top:12px;letter-spacing:2px;line-height:20px;font-size:20px;font-weight:700}.divider[data-v-951cab6c]{margin:24px auto 18px;width:64px;height:1px;background-color:var(--vp-c-divider)}.quote[data-v-951cab6c]{margin:0 auto;max-width:256px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.action[data-v-951cab6c]{padding-top:20px}.link[data-v-951cab6c]{display:inline-block;border:1px solid var(--vp-c-brand-1);border-radius:16px;padding:3px 16px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:border-color .25s,color .25s}.link[data-v-951cab6c]:hover{border-color:var(--vp-c-brand-2);color:var(--vp-c-brand-2)}.root[data-v-3f927ebe]{position:relative;z-index:1}.nested[data-v-3f927ebe]{padding-right:16px;padding-left:16px}.outline-link[data-v-3f927ebe]{display:block;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .5s}.outline-link[data-v-3f927ebe]:hover,.outline-link.active[data-v-3f927ebe]{color:var(--vp-c-text-1);transition:color .25s}.outline-link.nested[data-v-3f927ebe]{padding-left:13px}.VPDocAsideOutline[data-v-b38bf2ff]{display:none}.VPDocAsideOutline.has-outline[data-v-b38bf2ff]{display:block}.content[data-v-b38bf2ff]{position:relative;border-left:1px solid var(--vp-c-divider);padding-left:16px;font-size:13px;font-weight:500}.outline-marker[data-v-b38bf2ff]{position:absolute;top:32px;left:-1px;z-index:0;opacity:0;width:2px;border-radius:2px;height:18px;background-color:var(--vp-c-brand-1);transition:top .25s cubic-bezier(0,1,.5,1),background-color .5s,opacity .25s}.outline-title[data-v-b38bf2ff]{line-height:32px;font-size:14px;font-weight:600}.VPDocAside[data-v-6d7b3c46]{display:flex;flex-direction:column;flex-grow:1}.spacer[data-v-6d7b3c46]{flex-grow:1}.VPDocAside[data-v-6d7b3c46] .spacer+.VPDocAsideSponsors,.VPDocAside[data-v-6d7b3c46] .spacer+.VPDocAsideCarbonAds{margin-top:24px}.VPDocAside[data-v-6d7b3c46] .VPDocAsideSponsors+.VPDocAsideCarbonAds{margin-top:16px}.VPLastUpdated[data-v-9da12f1d]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 640px){.VPLastUpdated[data-v-9da12f1d]{line-height:32px;font-size:14px;font-weight:500}}.VPDocFooter[data-v-b88cabfa]{margin-top:64px}.edit-info[data-v-b88cabfa]{padding-bottom:18px}@media (min-width: 640px){.edit-info[data-v-b88cabfa]{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px}}.edit-link-button[data-v-b88cabfa]{display:flex;align-items:center;border:0;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.edit-link-button[data-v-b88cabfa]:hover{color:var(--vp-c-brand-2)}.edit-link-icon[data-v-b88cabfa]{margin-right:8px}.prev-next[data-v-b88cabfa]{border-top:1px solid var(--vp-c-divider);padding-top:24px;display:grid;grid-row-gap:8px}@media (min-width: 640px){.prev-next[data-v-b88cabfa]{grid-template-columns:repeat(2,1fr);grid-column-gap:16px}}.pager-link[data-v-b88cabfa]{display:block;border:1px solid var(--vp-c-divider);border-radius:8px;padding:11px 16px 13px;width:100%;height:100%;transition:border-color .25s}.pager-link[data-v-b88cabfa]:hover{border-color:var(--vp-c-brand-1)}.pager-link.next[data-v-b88cabfa]{margin-left:auto;text-align:right}.desc[data-v-b88cabfa]{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.title[data-v-b88cabfa]{display:block;line-height:20px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.VPDoc[data-v-83890dd9]{padding:32px 24px 96px;width:100%}@media (min-width: 768px){.VPDoc[data-v-83890dd9]{padding:48px 32px 128px}}@media (min-width: 960px){.VPDoc[data-v-83890dd9]{padding:48px 32px 0}.VPDoc:not(.has-sidebar) .container[data-v-83890dd9]{display:flex;justify-content:center;max-width:992px}.VPDoc:not(.has-sidebar) .content[data-v-83890dd9]{max-width:752px}}@media (min-width: 1280px){.VPDoc .container[data-v-83890dd9]{display:flex;justify-content:center}.VPDoc .aside[data-v-83890dd9]{display:block}}@media (min-width: 1440px){.VPDoc:not(.has-sidebar) .content[data-v-83890dd9]{max-width:784px}.VPDoc:not(.has-sidebar) .container[data-v-83890dd9]{max-width:1104px}}.container[data-v-83890dd9]{margin:0 auto;width:100%}.aside[data-v-83890dd9]{position:relative;display:none;order:2;flex-grow:1;padding-left:32px;width:100%;max-width:256px}.left-aside[data-v-83890dd9]{order:1;padding-left:unset;padding-right:32px}.aside-container[data-v-83890dd9]{position:fixed;top:0;padding-top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + var(--vp-doc-top-height, 0px) + 48px);width:224px;height:100vh;overflow-x:hidden;overflow-y:auto;scrollbar-width:none}.aside-container[data-v-83890dd9]::-webkit-scrollbar{display:none}.aside-curtain[data-v-83890dd9]{position:fixed;bottom:0;z-index:10;width:224px;height:32px;background:linear-gradient(transparent,var(--vp-c-bg) 70%)}.aside-content[data-v-83890dd9]{display:flex;flex-direction:column;min-height:calc(100vh - (var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px));padding-bottom:32px}.content[data-v-83890dd9]{position:relative;margin:0 auto;width:100%}@media (min-width: 960px){.content[data-v-83890dd9]{padding:0 32px 128px}}@media (min-width: 1280px){.content[data-v-83890dd9]{order:1;margin:0;min-width:640px}}.content-container[data-v-83890dd9]{margin:0 auto}.VPDoc.has-aside .content-container[data-v-83890dd9]{max-width:688px}.VPButton[data-v-14206e74]{display:inline-block;border:1px solid transparent;text-align:center;font-weight:600;white-space:nowrap;transition:color .25s,border-color .25s,background-color .25s}.VPButton[data-v-14206e74]:active{transition:color .1s,border-color .1s,background-color .1s}.VPButton.medium[data-v-14206e74]{border-radius:20px;padding:0 20px;line-height:38px;font-size:14px}.VPButton.big[data-v-14206e74]{border-radius:24px;padding:0 24px;line-height:46px;font-size:16px}.VPButton.brand[data-v-14206e74]{border-color:var(--vp-button-brand-border);color:var(--vp-button-brand-text);background-color:var(--vp-button-brand-bg)}.VPButton.brand[data-v-14206e74]:hover{border-color:var(--vp-button-brand-hover-border);color:var(--vp-button-brand-hover-text);background-color:var(--vp-button-brand-hover-bg)}.VPButton.brand[data-v-14206e74]:active{border-color:var(--vp-button-brand-active-border);color:var(--vp-button-brand-active-text);background-color:var(--vp-button-brand-active-bg)}.VPButton.alt[data-v-14206e74]{border-color:var(--vp-button-alt-border);color:var(--vp-button-alt-text);background-color:var(--vp-button-alt-bg)}.VPButton.alt[data-v-14206e74]:hover{border-color:var(--vp-button-alt-hover-border);color:var(--vp-button-alt-hover-text);background-color:var(--vp-button-alt-hover-bg)}.VPButton.alt[data-v-14206e74]:active{border-color:var(--vp-button-alt-active-border);color:var(--vp-button-alt-active-text);background-color:var(--vp-button-alt-active-bg)}.VPButton.sponsor[data-v-14206e74]{border-color:var(--vp-button-sponsor-border);color:var(--vp-button-sponsor-text);background-color:var(--vp-button-sponsor-bg)}.VPButton.sponsor[data-v-14206e74]:hover{border-color:var(--vp-button-sponsor-hover-border);color:var(--vp-button-sponsor-hover-text);background-color:var(--vp-button-sponsor-hover-bg)}.VPButton.sponsor[data-v-14206e74]:active{border-color:var(--vp-button-sponsor-active-border);color:var(--vp-button-sponsor-active-text);background-color:var(--vp-button-sponsor-active-bg)}html:not(.dark) .VPImage.dark[data-v-35a7d0b8]{display:none}.dark .VPImage.light[data-v-35a7d0b8]{display:none}.VPHero[data-v-955009fc]{margin-top:calc((var(--vp-nav-height) + var(--vp-layout-top-height, 0px)) * -1);padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px) 24px 48px}@media (min-width: 640px){.VPHero[data-v-955009fc]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 48px 64px}}@media (min-width: 960px){.VPHero[data-v-955009fc]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 64px 64px}}.container[data-v-955009fc]{display:flex;flex-direction:column;margin:0 auto;max-width:1152px}@media (min-width: 960px){.container[data-v-955009fc]{flex-direction:row}}.main[data-v-955009fc]{position:relative;z-index:10;order:2;flex-grow:1;flex-shrink:0}.VPHero.has-image .container[data-v-955009fc]{text-align:center}@media (min-width: 960px){.VPHero.has-image .container[data-v-955009fc]{text-align:left}}@media (min-width: 960px){.main[data-v-955009fc]{order:1;width:calc((100% / 3) * 2)}.VPHero.has-image .main[data-v-955009fc]{max-width:592px}}.name[data-v-955009fc],.text[data-v-955009fc]{max-width:392px;letter-spacing:-.4px;line-height:40px;font-size:32px;font-weight:700;white-space:pre-wrap}.VPHero.has-image .name[data-v-955009fc],.VPHero.has-image .text[data-v-955009fc]{margin:0 auto}.name[data-v-955009fc]{color:var(--vp-home-hero-name-color)}.clip[data-v-955009fc]{background:var(--vp-home-hero-name-background);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:var(--vp-home-hero-name-color)}@media (min-width: 640px){.name[data-v-955009fc],.text[data-v-955009fc]{max-width:576px;line-height:56px;font-size:48px}}@media (min-width: 960px){.name[data-v-955009fc],.text[data-v-955009fc]{line-height:64px;font-size:56px}.VPHero.has-image .name[data-v-955009fc],.VPHero.has-image .text[data-v-955009fc]{margin:0}}.tagline[data-v-955009fc]{padding-top:8px;max-width:392px;line-height:28px;font-size:18px;font-weight:500;white-space:pre-wrap;color:var(--vp-c-text-2)}.VPHero.has-image .tagline[data-v-955009fc]{margin:0 auto}@media (min-width: 640px){.tagline[data-v-955009fc]{padding-top:12px;max-width:576px;line-height:32px;font-size:20px}}@media (min-width: 960px){.tagline[data-v-955009fc]{line-height:36px;font-size:24px}.VPHero.has-image .tagline[data-v-955009fc]{margin:0}}.actions[data-v-955009fc]{display:flex;flex-wrap:wrap;margin:-6px;padding-top:24px}.VPHero.has-image .actions[data-v-955009fc]{justify-content:center}@media (min-width: 640px){.actions[data-v-955009fc]{padding-top:32px}}@media (min-width: 960px){.VPHero.has-image .actions[data-v-955009fc]{justify-content:flex-start}}.action[data-v-955009fc]{flex-shrink:0;padding:6px}.image[data-v-955009fc]{order:1;margin:-76px -24px -48px}@media (min-width: 640px){.image[data-v-955009fc]{margin:-108px -24px -48px}}@media (min-width: 960px){.image[data-v-955009fc]{flex-grow:1;order:2;margin:0;min-height:100%}}.image-container[data-v-955009fc]{position:relative;margin:0 auto;width:320px;height:320px}@media (min-width: 640px){.image-container[data-v-955009fc]{width:392px;height:392px}}@media (min-width: 960px){.image-container[data-v-955009fc]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;transform:translate(-32px,-32px)}}.image-bg[data-v-955009fc]{position:absolute;top:50%;left:50%;border-radius:50%;width:192px;height:192px;background-image:var(--vp-home-hero-image-background-image);filter:var(--vp-home-hero-image-filter);transform:translate(-50%,-50%)}@media (min-width: 640px){.image-bg[data-v-955009fc]{width:256px;height:256px}}@media (min-width: 960px){.image-bg[data-v-955009fc]{width:320px;height:320px}}[data-v-955009fc] .image-src{position:absolute;top:50%;left:50%;max-width:192px;max-height:192px;transform:translate(-50%,-50%)}@media (min-width: 640px){[data-v-955009fc] .image-src{max-width:256px;max-height:256px}}@media (min-width: 960px){[data-v-955009fc] .image-src{max-width:320px;max-height:320px}}.VPFeature[data-v-f5e9645b]{display:block;border:1px solid var(--vp-c-bg-soft);border-radius:12px;height:100%;background-color:var(--vp-c-bg-soft);transition:border-color .25s,background-color .25s}.VPFeature.link[data-v-f5e9645b]:hover{border-color:var(--vp-c-brand-1)}.box[data-v-f5e9645b]{display:flex;flex-direction:column;padding:24px;height:100%}.box[data-v-f5e9645b]>.VPImage{margin-bottom:20px}.icon[data-v-f5e9645b]{display:flex;justify-content:center;align-items:center;margin-bottom:20px;border-radius:6px;background-color:var(--vp-c-default-soft);width:48px;height:48px;font-size:24px;transition:background-color .25s}.title[data-v-f5e9645b]{line-height:24px;font-size:16px;font-weight:600}.details[data-v-f5e9645b]{flex-grow:1;padding-top:8px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.link-text[data-v-f5e9645b]{padding-top:8px}.link-text-value[data-v-f5e9645b]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.link-text-icon[data-v-f5e9645b]{margin-left:6px}.VPFeatures[data-v-d0a190d7]{position:relative;padding:0 24px}@media (min-width: 640px){.VPFeatures[data-v-d0a190d7]{padding:0 48px}}@media (min-width: 960px){.VPFeatures[data-v-d0a190d7]{padding:0 64px}}.container[data-v-d0a190d7]{margin:0 auto;max-width:1152px}.items[data-v-d0a190d7]{display:flex;flex-wrap:wrap;margin:-8px}.item[data-v-d0a190d7]{padding:8px;width:100%}@media (min-width: 640px){.item.grid-2[data-v-d0a190d7],.item.grid-4[data-v-d0a190d7],.item.grid-6[data-v-d0a190d7]{width:50%}}@media (min-width: 768px){.item.grid-2[data-v-d0a190d7],.item.grid-4[data-v-d0a190d7]{width:50%}.item.grid-3[data-v-d0a190d7],.item.grid-6[data-v-d0a190d7]{width:calc(100% / 3)}}@media (min-width: 960px){.item.grid-4[data-v-d0a190d7]{width:25%}}.container[data-v-7a48a447]{margin:auto;width:100%;max-width:1280px;padding:0 24px}@media (min-width: 640px){.container[data-v-7a48a447]{padding:0 48px}}@media (min-width: 960px){.container[data-v-7a48a447]{width:100%;padding:0 64px}}.vp-doc[data-v-7a48a447] .VPHomeSponsors,.vp-doc[data-v-7a48a447] .VPTeamPage{margin-left:var(--vp-offset, calc(50% - 50vw) );margin-right:var(--vp-offset, calc(50% - 50vw) )}.vp-doc[data-v-7a48a447] .VPHomeSponsors h2{border-top:none;letter-spacing:normal}.vp-doc[data-v-7a48a447] .VPHomeSponsors a,.vp-doc[data-v-7a48a447] .VPTeamPage a{text-decoration:none}.VPHome[data-v-cbb6ec48]{margin-bottom:96px}@media (min-width: 768px){.VPHome[data-v-cbb6ec48]{margin-bottom:128px}}.VPContent[data-v-91765379]{flex-grow:1;flex-shrink:0;margin:var(--vp-layout-top-height, 0px) auto 0;width:100%}.VPContent.is-home[data-v-91765379]{width:100%;max-width:100%}.VPContent.has-sidebar[data-v-91765379]{margin:0}@media (min-width: 960px){.VPContent[data-v-91765379]{padding-top:var(--vp-nav-height)}.VPContent.has-sidebar[data-v-91765379]{margin:var(--vp-layout-top-height, 0px) 0 0;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPContent.has-sidebar[data-v-91765379]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.VPFooter[data-v-c970a860]{position:relative;z-index:var(--vp-z-index-footer);border-top:1px solid var(--vp-c-gutter);padding:32px 24px;background-color:var(--vp-c-bg)}.VPFooter.has-sidebar[data-v-c970a860]{display:none}.VPFooter[data-v-c970a860] a{text-decoration-line:underline;text-underline-offset:2px;transition:color .25s}.VPFooter[data-v-c970a860] a:hover{color:var(--vp-c-text-1)}@media (min-width: 768px){.VPFooter[data-v-c970a860]{padding:32px}}.container[data-v-c970a860]{margin:0 auto;max-width:var(--vp-layout-max-width);text-align:center}.message[data-v-c970a860],.copyright[data-v-c970a860]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.VPLocalNavOutlineDropdown[data-v-bc9dc845]{padding:12px 20px 11px}@media (min-width: 960px){.VPLocalNavOutlineDropdown[data-v-bc9dc845]{padding:12px 36px 11px}}.VPLocalNavOutlineDropdown button[data-v-bc9dc845]{display:block;font-size:12px;font-weight:500;line-height:24px;color:var(--vp-c-text-2);transition:color .5s;position:relative}.VPLocalNavOutlineDropdown button[data-v-bc9dc845]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPLocalNavOutlineDropdown button.open[data-v-bc9dc845]{color:var(--vp-c-text-1)}.icon[data-v-bc9dc845]{display:inline-block;vertical-align:middle;margin-left:2px;font-size:14px;transform:rotate(0);transition:transform .25s}@media (min-width: 960px){.VPLocalNavOutlineDropdown button[data-v-bc9dc845]{font-size:14px}.icon[data-v-bc9dc845]{font-size:16px}}.open>.icon[data-v-bc9dc845]{transform:rotate(90deg)}.items[data-v-bc9dc845]{position:absolute;top:40px;right:16px;left:16px;display:grid;gap:1px;border:1px solid var(--vp-c-border);border-radius:8px;background-color:var(--vp-c-gutter);max-height:calc(var(--vp-vh, 100vh) - 86px);overflow:hidden auto;box-shadow:var(--vp-shadow-3)}@media (min-width: 960px){.items[data-v-bc9dc845]{right:auto;left:calc(var(--vp-sidebar-width) + 32px);width:320px}}.header[data-v-bc9dc845]{background-color:var(--vp-c-bg-soft)}.top-link[data-v-bc9dc845]{display:block;padding:0 16px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.outline[data-v-bc9dc845]{padding:8px 0;background-color:var(--vp-c-bg-soft)}.flyout-enter-active[data-v-bc9dc845]{transition:all .2s ease-out}.flyout-leave-active[data-v-bc9dc845]{transition:all .15s ease-in}.flyout-enter-from[data-v-bc9dc845],.flyout-leave-to[data-v-bc9dc845]{opacity:0;transform:translateY(-16px)}.VPLocalNav[data-v-070ab83d]{position:sticky;top:0;left:0;z-index:var(--vp-z-index-local-nav);border-bottom:1px solid var(--vp-c-gutter);padding-top:var(--vp-layout-top-height, 0px);width:100%;background-color:var(--vp-local-nav-bg-color)}.VPLocalNav.fixed[data-v-070ab83d]{position:fixed}@media (min-width: 960px){.VPLocalNav[data-v-070ab83d]{top:var(--vp-nav-height)}.VPLocalNav.has-sidebar[data-v-070ab83d]{padding-left:var(--vp-sidebar-width)}.VPLocalNav.empty[data-v-070ab83d]{display:none}}@media (min-width: 1280px){.VPLocalNav[data-v-070ab83d]{display:none}}@media (min-width: 1440px){.VPLocalNav.has-sidebar[data-v-070ab83d]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.container[data-v-070ab83d]{display:flex;justify-content:space-between;align-items:center}.menu[data-v-070ab83d]{display:flex;align-items:center;padding:12px 24px 11px;line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.menu[data-v-070ab83d]:hover{color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 768px){.menu[data-v-070ab83d]{padding:0 32px}}@media (min-width: 960px){.menu[data-v-070ab83d]{display:none}}.menu-icon[data-v-070ab83d]{margin-right:8px;font-size:14px}.VPOutlineDropdown[data-v-070ab83d]{padding:12px 24px 11px}@media (min-width: 768px){.VPOutlineDropdown[data-v-070ab83d]{padding:12px 32px 11px}}.VPSwitch[data-v-4a1c76db]{position:relative;border-radius:11px;display:block;width:40px;height:22px;flex-shrink:0;border:1px solid var(--vp-input-border-color);background-color:var(--vp-input-switch-bg-color);transition:border-color .25s!important}.VPSwitch[data-v-4a1c76db]:hover{border-color:var(--vp-c-brand-1)}.check[data-v-4a1c76db]{position:absolute;top:1px;left:1px;width:18px;height:18px;border-radius:50%;background-color:var(--vp-c-neutral-inverse);box-shadow:var(--vp-shadow-1);transition:transform .25s!important}.icon[data-v-4a1c76db]{position:relative;display:block;width:18px;height:18px;border-radius:50%;overflow:hidden}.icon[data-v-4a1c76db] [class^=vpi-]{position:absolute;top:3px;left:3px;width:12px;height:12px;color:var(--vp-c-text-2)}.dark .icon[data-v-4a1c76db] [class^=vpi-]{color:var(--vp-c-text-1);transition:opacity .25s!important}.sun[data-v-b79b56d4]{opacity:1}.moon[data-v-b79b56d4],.dark .sun[data-v-b79b56d4]{opacity:0}.dark .moon[data-v-b79b56d4]{opacity:1}.dark .VPSwitchAppearance[data-v-b79b56d4] .check{transform:translate(18px)}.VPNavBarAppearance[data-v-ead91a81]{display:none}@media (min-width: 1280px){.VPNavBarAppearance[data-v-ead91a81]{display:flex;align-items:center}}.VPMenuGroup+.VPMenuLink[data-v-8b74d055]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.link[data-v-8b74d055]{display:block;border-radius:6px;padding:0 12px;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);white-space:nowrap;transition:background-color .25s,color .25s}.link[data-v-8b74d055]:hover{color:var(--vp-c-brand-1);background-color:var(--vp-c-default-soft)}.link.active[data-v-8b74d055]{color:var(--vp-c-brand-1)}.VPMenuGroup[data-v-48c802d0]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.VPMenuGroup[data-v-48c802d0]:first-child{margin-top:0;border-top:0;padding-top:0}.VPMenuGroup+.VPMenuGroup[data-v-48c802d0]{margin-top:12px;border-top:1px solid var(--vp-c-divider)}.title[data-v-48c802d0]{padding:0 12px;line-height:32px;font-size:14px;font-weight:600;color:var(--vp-c-text-2);white-space:nowrap;transition:color .25s}.VPMenu[data-v-97491713]{border-radius:12px;padding:12px;min-width:128px;border:1px solid var(--vp-c-divider);background-color:var(--vp-c-bg-elv);box-shadow:var(--vp-shadow-3);transition:background-color .5s;max-height:calc(100vh - var(--vp-nav-height));overflow-y:auto}.VPMenu[data-v-97491713] .group{margin:0 -12px;padding:0 12px 12px}.VPMenu[data-v-97491713] .group+.group{border-top:1px solid var(--vp-c-divider);padding:11px 12px 12px}.VPMenu[data-v-97491713] .group:last-child{padding-bottom:0}.VPMenu[data-v-97491713] .group+.item{border-top:1px solid var(--vp-c-divider);padding:11px 16px 0}.VPMenu[data-v-97491713] .item{padding:0 16px;white-space:nowrap}.VPMenu[data-v-97491713] .label{flex-grow:1;line-height:28px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.VPMenu[data-v-97491713] .action{padding-left:24px}.VPFlyout[data-v-e5380155]{position:relative}.VPFlyout[data-v-e5380155]:hover{color:var(--vp-c-brand-1);transition:color .25s}.VPFlyout:hover .text[data-v-e5380155]{color:var(--vp-c-text-2)}.VPFlyout:hover .icon[data-v-e5380155]{fill:var(--vp-c-text-2)}.VPFlyout.active .text[data-v-e5380155]{color:var(--vp-c-brand-1)}.VPFlyout.active:hover .text[data-v-e5380155]{color:var(--vp-c-brand-2)}.VPFlyout:hover .menu[data-v-e5380155],.button[aria-expanded=true]+.menu[data-v-e5380155]{opacity:1;visibility:visible;transform:translateY(0)}.button[aria-expanded=false]+.menu[data-v-e5380155]{opacity:0;visibility:hidden;transform:translateY(0)}.button[data-v-e5380155]{display:flex;align-items:center;padding:0 12px;height:var(--vp-nav-height);color:var(--vp-c-text-1);transition:color .5s}.text[data-v-e5380155]{display:flex;align-items:center;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.option-icon[data-v-e5380155]{margin-right:0;font-size:16px}.text-icon[data-v-e5380155]{margin-left:4px;font-size:14px}.icon[data-v-e5380155]{font-size:20px;transition:fill .25s}.menu[data-v-e5380155]{position:absolute;top:calc(var(--vp-nav-height) / 2 + 20px);right:0;opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s,transform .25s}.VPSocialLink[data-v-717b8b75]{display:flex;justify-content:center;align-items:center;width:36px;height:36px;color:var(--vp-c-text-2);transition:color .5s}.VPSocialLink[data-v-717b8b75]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPSocialLink[data-v-717b8b75]>svg,.VPSocialLink[data-v-717b8b75]>[class^=vpi-social-]{width:20px;height:20px;fill:currentColor}.VPSocialLinks[data-v-ee7a9424]{display:flex;justify-content:center}.VPNavBarExtra[data-v-9b536d0b]{display:none;margin-right:-12px}@media (min-width: 768px){.VPNavBarExtra[data-v-9b536d0b]{display:block}}@media (min-width: 1280px){.VPNavBarExtra[data-v-9b536d0b]{display:none}}.trans-title[data-v-9b536d0b]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.item.appearance[data-v-9b536d0b],.item.social-links[data-v-9b536d0b]{display:flex;align-items:center;padding:0 12px}.item.appearance[data-v-9b536d0b]{min-width:176px}.appearance-action[data-v-9b536d0b]{margin-right:-2px}.social-links-list[data-v-9b536d0b]{margin:-4px -8px}.VPNavBarHamburger[data-v-5dea55bf]{display:flex;justify-content:center;align-items:center;width:48px;height:var(--vp-nav-height)}@media (min-width: 768px){.VPNavBarHamburger[data-v-5dea55bf]{display:none}}.container[data-v-5dea55bf]{position:relative;width:16px;height:14px;overflow:hidden}.VPNavBarHamburger:hover .top[data-v-5dea55bf]{top:0;left:0;transform:translate(4px)}.VPNavBarHamburger:hover .middle[data-v-5dea55bf]{top:6px;left:0;transform:translate(0)}.VPNavBarHamburger:hover .bottom[data-v-5dea55bf]{top:12px;left:0;transform:translate(8px)}.VPNavBarHamburger.active .top[data-v-5dea55bf]{top:6px;transform:translate(0) rotate(225deg)}.VPNavBarHamburger.active .middle[data-v-5dea55bf]{top:6px;transform:translate(16px)}.VPNavBarHamburger.active .bottom[data-v-5dea55bf]{top:6px;transform:translate(0) rotate(135deg)}.VPNavBarHamburger.active:hover .top[data-v-5dea55bf],.VPNavBarHamburger.active:hover .middle[data-v-5dea55bf],.VPNavBarHamburger.active:hover .bottom[data-v-5dea55bf]{background-color:var(--vp-c-text-2);transition:top .25s,background-color .25s,transform .25s}.top[data-v-5dea55bf],.middle[data-v-5dea55bf],.bottom[data-v-5dea55bf]{position:absolute;width:16px;height:2px;background-color:var(--vp-c-text-1);transition:top .25s,background-color .5s,transform .25s}.top[data-v-5dea55bf]{top:0;left:0;transform:translate(0)}.middle[data-v-5dea55bf]{top:6px;left:0;transform:translate(8px)}.bottom[data-v-5dea55bf]{top:12px;left:0;transform:translate(4px)}.VPNavBarMenuLink[data-v-ed5ac1f6]{display:flex;align-items:center;padding:0 12px;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.VPNavBarMenuLink.active[data-v-ed5ac1f6],.VPNavBarMenuLink[data-v-ed5ac1f6]:hover{color:var(--vp-c-brand-1)}.VPNavBarMenu[data-v-492ea56d]{display:none}@media (min-width: 768px){.VPNavBarMenu[data-v-492ea56d]{display:flex}}/*! @docsearch/css 3.6.0 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */:root{--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:rgba(101,108,133,.8);--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 1px 0 rgba(30,35,90,.4);--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12)}html[data-theme=dark]{--docsearch-text-color:#f5f6f7;--docsearch-container-background:rgba(9,10,17,.8);--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 1px 1px 0 rgba(3,4,9,.30196078431372547);--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}.DocSearch-Button{align-items:center;background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;display:flex;font-weight:500;height:36px;justify-content:space-between;margin:0 0 0 16px;padding:0 8px;-webkit-user-select:none;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:none}.DocSearch-Button-Container{align-items:center;display:flex}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;position:relative;padding:0 0 2px;border:0;top:-1px;width:20px}.DocSearch-Button-Key--pressed{transform:translate3d(0,1px,0);box-shadow:var(--docsearch-key-pressed-shadow)}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder{display:none}}.DocSearch--active{overflow:hidden!important}.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;font:inherit;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;color:var(--docsearch-text-color);flex:1;font:inherit;font-size:1.2em;height:100%;outline:none;padding:0 0 0 8px;width:80%}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator{display:none}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{animation:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0;stroke-width:var(--docsearch-icon-stroke-width)}}.DocSearch-Reset{animation:fade-in .1s ease-in forwards;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;padding:2px;right:0;stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Cancel{display:none}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:transparent}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Help{font-size:.9em;margin:0;-webkit-user-select:none;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{color:var(--docsearch-muted-color);display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--deleting{transition:none}}.DocSearch-Hit--deleting{opacity:0;transition:all .25s linear}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--favoriting{transition:none}}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:all .25s linear;transition-delay:.25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;stroke-width:var(--docsearch-icon-stroke-width);width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color);stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:inherit;cursor:pointer;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:background-color .1s ease-in}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{transition:none}}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:none}}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:none;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;-webkit-user-select:none;user-select:none;width:100%;z-index:300}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li{align-items:center;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:2px;box-shadow:var(--docsearch-key-shadow);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;color:var(--docsearch-muted-color);border:0;width:20px}.DocSearch-VisuallyHiddenForAccessibility{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}@media (max-width:768px){:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Dropdown{max-height:calc(var(--docsearch-vh, 1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Cancel{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:none;overflow:hidden;padding:0;-webkit-user-select:none;user-select:none;white-space:nowrap}.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}[class*=DocSearch]{--docsearch-primary-color: var(--vp-c-brand-1);--docsearch-highlight-color: var(--docsearch-primary-color);--docsearch-text-color: var(--vp-c-text-1);--docsearch-muted-color: var(--vp-c-text-2);--docsearch-searchbox-shadow: none;--docsearch-searchbox-background: transparent;--docsearch-searchbox-focus-background: transparent;--docsearch-key-gradient: transparent;--docsearch-key-shadow: none;--docsearch-modal-background: var(--vp-c-bg-soft);--docsearch-footer-background: var(--vp-c-bg)}.dark [class*=DocSearch]{--docsearch-modal-shadow: none;--docsearch-footer-shadow: none;--docsearch-logo-color: var(--vp-c-text-2);--docsearch-hit-background: var(--vp-c-default-soft);--docsearch-hit-color: var(--vp-c-text-2);--docsearch-hit-shadow: none}.DocSearch-Button{display:flex;justify-content:center;align-items:center;margin:0;padding:0;width:48px;height:55px;background:transparent;transition:border-color .25s}.DocSearch-Button:hover{background:transparent}.DocSearch-Button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.DocSearch-Button-Key--pressed{transform:none;box-shadow:none}.DocSearch-Button:focus:not(:focus-visible){outline:none!important}@media (min-width: 768px){.DocSearch-Button{justify-content:flex-start;border:1px solid transparent;border-radius:8px;padding:0 10px 0 12px;width:100%;height:40px;background-color:var(--vp-c-bg-alt)}.DocSearch-Button:hover{border-color:var(--vp-c-brand-1);background:var(--vp-c-bg-alt)}}.DocSearch-Button .DocSearch-Button-Container{display:flex;align-items:center}.DocSearch-Button .DocSearch-Search-Icon{position:relative;width:16px;height:16px;color:var(--vp-c-text-1);fill:currentColor;transition:color .5s}.DocSearch-Button:hover .DocSearch-Search-Icon{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Search-Icon{top:1px;margin-right:8px;width:14px;height:14px;color:var(--vp-c-text-2)}}.DocSearch-Button .DocSearch-Button-Placeholder{display:none;margin-top:2px;padding:0 16px 0 0;font-size:13px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.DocSearch-Button:hover .DocSearch-Button-Placeholder{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Placeholder{display:inline-block}}.DocSearch-Button .DocSearch-Button-Keys{direction:ltr;display:none;min-width:auto}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Keys{display:flex;align-items:center}}.DocSearch-Button .DocSearch-Button-Key{display:block;margin:2px 0 0;border:1px solid var(--vp-c-divider);border-right:none;border-radius:4px 0 0 4px;padding-left:6px;min-width:0;width:auto;height:22px;line-height:22px;font-family:var(--vp-font-family-base);font-size:12px;font-weight:500;transition:color .5s,border-color .5s}.DocSearch-Button .DocSearch-Button-Key+.DocSearch-Button-Key{border-right:1px solid var(--vp-c-divider);border-left:none;border-radius:0 4px 4px 0;padding-left:2px;padding-right:6px}.DocSearch-Button .DocSearch-Button-Key:first-child{font-size:0!important}.DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"Ctrl";font-size:12px;letter-spacing:normal;color:var(--docsearch-muted-color)}.mac .DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"⌘"}.DocSearch-Button .DocSearch-Button-Key:first-child>*{display:none}.DocSearch-Search-Icon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke-width='1.6' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' d='m14.386 14.386 4.088 4.088-4.088-4.088A7.533 7.533 0 1 1 3.733 3.733a7.533 7.533 0 0 1 10.653 10.653z'/%3E%3C/svg%3E")}.VPNavBarSearch{display:flex;align-items:center}@media (min-width: 768px){.VPNavBarSearch{flex-grow:1;padding-left:24px}}@media (min-width: 960px){.VPNavBarSearch{padding-left:32px}}.dark .DocSearch-Footer{border-top:1px solid var(--vp-c-divider)}.DocSearch-Form{border:1px solid var(--vp-c-brand-1);background-color:var(--vp-c-white)}.dark .DocSearch-Form{background-color:var(--vp-c-default-soft)}.DocSearch-Screen-Icon>svg{margin:auto}.VPNavBarSocialLinks[data-v-164c457f]{display:none}@media (min-width: 1280px){.VPNavBarSocialLinks[data-v-164c457f]{display:flex;align-items:center}}.title[data-v-28a961f9]{display:flex;align-items:center;border-bottom:1px solid transparent;width:100%;height:var(--vp-nav-height);font-size:16px;font-weight:600;color:var(--vp-c-text-1);transition:opacity .25s}@media (min-width: 960px){.title[data-v-28a961f9]{flex-shrink:0}.VPNavBarTitle.has-sidebar .title[data-v-28a961f9]{border-bottom-color:var(--vp-c-divider)}}[data-v-28a961f9] .logo{margin-right:8px;height:var(--vp-nav-logo-height)}.VPNavBarTranslations[data-v-c80d9ad0]{display:none}@media (min-width: 1280px){.VPNavBarTranslations[data-v-c80d9ad0]{display:flex;align-items:center}}.title[data-v-c80d9ad0]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.VPNavBar[data-v-40788ea0]{position:relative;height:var(--vp-nav-height);pointer-events:none;white-space:nowrap;transition:background-color .5s}.VPNavBar[data-v-40788ea0]:not(.home){background-color:var(--vp-nav-bg-color)}@media (min-width: 960px){.VPNavBar[data-v-40788ea0]:not(.home){background-color:transparent}.VPNavBar[data-v-40788ea0]:not(.has-sidebar):not(.home.top){background-color:var(--vp-nav-bg-color)}}.wrapper[data-v-40788ea0]{padding:0 8px 0 24px}@media (min-width: 768px){.wrapper[data-v-40788ea0]{padding:0 32px}}@media (min-width: 960px){.VPNavBar.has-sidebar .wrapper[data-v-40788ea0]{padding:0}}.container[data-v-40788ea0]{display:flex;justify-content:space-between;margin:0 auto;max-width:calc(var(--vp-layout-max-width) - 64px);height:var(--vp-nav-height);pointer-events:none}.container>.title[data-v-40788ea0],.container>.content[data-v-40788ea0]{pointer-events:none}.container[data-v-40788ea0] *{pointer-events:auto}@media (min-width: 960px){.VPNavBar.has-sidebar .container[data-v-40788ea0]{max-width:100%}}.title[data-v-40788ea0]{flex-shrink:0;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .title[data-v-40788ea0]{position:absolute;top:0;left:0;z-index:2;padding:0 32px;width:var(--vp-sidebar-width);height:var(--vp-nav-height);background-color:transparent}}@media (min-width: 1440px){.VPNavBar.has-sidebar .title[data-v-40788ea0]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}.content[data-v-40788ea0]{flex-grow:1}@media (min-width: 960px){.VPNavBar.has-sidebar .content[data-v-40788ea0]{position:relative;z-index:1;padding-right:32px;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .content[data-v-40788ea0]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2 + 32px);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.content-body[data-v-40788ea0]{display:flex;justify-content:flex-end;align-items:center;height:var(--vp-nav-height);transition:background-color .5s}@media (min-width: 960px){.VPNavBar:not(.home.top) .content-body[data-v-40788ea0]{position:relative;background-color:var(--vp-nav-bg-color)}.VPNavBar:not(.has-sidebar):not(.home.top) .content-body[data-v-40788ea0]{background-color:transparent}}@media (max-width: 767px){.content-body[data-v-40788ea0]{column-gap:.5rem}}.menu+.translations[data-v-40788ea0]:before,.menu+.appearance[data-v-40788ea0]:before,.menu+.social-links[data-v-40788ea0]:before,.translations+.appearance[data-v-40788ea0]:before,.appearance+.social-links[data-v-40788ea0]:before{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--vp-c-divider);content:""}.menu+.appearance[data-v-40788ea0]:before,.translations+.appearance[data-v-40788ea0]:before{margin-right:16px}.appearance+.social-links[data-v-40788ea0]:before{margin-left:16px}.social-links[data-v-40788ea0]{margin-right:-8px}.divider[data-v-40788ea0]{width:100%;height:1px}@media (min-width: 960px){.VPNavBar.has-sidebar .divider[data-v-40788ea0]{padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .divider[data-v-40788ea0]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.divider-line[data-v-40788ea0]{width:100%;height:1px;transition:background-color .5s}.VPNavBar:not(.home) .divider-line[data-v-40788ea0]{background-color:var(--vp-c-gutter)}@media (min-width: 960px){.VPNavBar:not(.home.top) .divider-line[data-v-40788ea0]{background-color:var(--vp-c-gutter)}.VPNavBar:not(.has-sidebar):not(.home.top) .divider[data-v-40788ea0]{background-color:var(--vp-c-gutter)}}.VPNavScreenAppearance[data-v-2b89f08b]{display:flex;justify-content:space-between;align-items:center;border-radius:8px;padding:12px 14px 12px 16px;background-color:var(--vp-c-bg-soft)}.text[data-v-2b89f08b]{line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.VPNavScreenMenuLink[data-v-27d04aeb]{display:block;border-bottom:1px solid var(--vp-c-divider);padding:12px 0 11px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:border-color .25s,color .25s}.VPNavScreenMenuLink[data-v-27d04aeb]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupLink[data-v-7179dbb7]{display:block;margin-left:12px;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-1);transition:color .25s}.VPNavScreenMenuGroupLink[data-v-7179dbb7]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupSection[data-v-4b8941ac]{display:block}.title[data-v-4b8941ac]{line-height:32px;font-size:13px;font-weight:700;color:var(--vp-c-text-2);transition:color .25s}.VPNavScreenMenuGroup[data-v-c9df2649]{border-bottom:1px solid var(--vp-c-divider);height:48px;overflow:hidden;transition:border-color .5s}.VPNavScreenMenuGroup .items[data-v-c9df2649]{visibility:hidden}.VPNavScreenMenuGroup.open .items[data-v-c9df2649]{visibility:visible}.VPNavScreenMenuGroup.open[data-v-c9df2649]{padding-bottom:10px;height:auto}.VPNavScreenMenuGroup.open .button[data-v-c9df2649]{padding-bottom:6px;color:var(--vp-c-brand-1)}.VPNavScreenMenuGroup.open .button-icon[data-v-c9df2649]{transform:rotate(45deg)}.button[data-v-c9df2649]{display:flex;justify-content:space-between;align-items:center;padding:12px 4px 11px 0;width:100%;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.button[data-v-c9df2649]:hover{color:var(--vp-c-brand-1)}.button-icon[data-v-c9df2649]{transition:transform .25s}.group[data-v-c9df2649]:first-child{padding-top:0}.group+.group[data-v-c9df2649],.group+.item[data-v-c9df2649]{padding-top:4px}.VPNavScreenTranslations[data-v-362991c2]{height:24px;overflow:hidden}.VPNavScreenTranslations.open[data-v-362991c2]{height:auto}.title[data-v-362991c2]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-text-1)}.icon[data-v-362991c2]{font-size:16px}.icon.lang[data-v-362991c2]{margin-right:8px}.icon.chevron[data-v-362991c2]{margin-left:4px}.list[data-v-362991c2]{padding:4px 0 0 24px}.link[data-v-362991c2]{line-height:32px;font-size:13px;color:var(--vp-c-text-1)}.VPNavScreen[data-v-382f42e9]{position:fixed;top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 1px);right:0;bottom:0;left:0;padding:0 32px;width:100%;background-color:var(--vp-nav-screen-bg-color);overflow-y:auto;transition:background-color .5s;pointer-events:auto}.VPNavScreen.fade-enter-active[data-v-382f42e9],.VPNavScreen.fade-leave-active[data-v-382f42e9]{transition:opacity .25s}.VPNavScreen.fade-enter-active .container[data-v-382f42e9],.VPNavScreen.fade-leave-active .container[data-v-382f42e9]{transition:transform .25s ease}.VPNavScreen.fade-enter-from[data-v-382f42e9],.VPNavScreen.fade-leave-to[data-v-382f42e9]{opacity:0}.VPNavScreen.fade-enter-from .container[data-v-382f42e9],.VPNavScreen.fade-leave-to .container[data-v-382f42e9]{transform:translateY(-8px)}@media (min-width: 768px){.VPNavScreen[data-v-382f42e9]{display:none}}.container[data-v-382f42e9]{margin:0 auto;padding:24px 0 96px;max-width:288px}.menu+.translations[data-v-382f42e9],.menu+.appearance[data-v-382f42e9],.translations+.appearance[data-v-382f42e9]{margin-top:24px}.menu+.social-links[data-v-382f42e9]{margin-top:16px}.appearance+.social-links[data-v-382f42e9]{margin-top:16px}.VPNav[data-v-f1e365da]{position:relative;top:var(--vp-layout-top-height, 0px);left:0;z-index:var(--vp-z-index-nav);width:100%;pointer-events:none;transition:background-color .5s}@media (min-width: 960px){.VPNav[data-v-f1e365da]{position:fixed}}.VPSidebarItem.level-0[data-v-2ea20db7]{padding-bottom:24px}.VPSidebarItem.collapsed.level-0[data-v-2ea20db7]{padding-bottom:10px}.item[data-v-2ea20db7]{position:relative;display:flex;width:100%}.VPSidebarItem.collapsible>.item[data-v-2ea20db7]{cursor:pointer}.indicator[data-v-2ea20db7]{position:absolute;top:6px;bottom:6px;left:-17px;width:2px;border-radius:2px;transition:background-color .25s}.VPSidebarItem.level-2.is-active>.item>.indicator[data-v-2ea20db7],.VPSidebarItem.level-3.is-active>.item>.indicator[data-v-2ea20db7],.VPSidebarItem.level-4.is-active>.item>.indicator[data-v-2ea20db7],.VPSidebarItem.level-5.is-active>.item>.indicator[data-v-2ea20db7]{background-color:var(--vp-c-brand-1)}.link[data-v-2ea20db7]{display:flex;align-items:center;flex-grow:1}.text[data-v-2ea20db7]{flex-grow:1;padding:4px 0;line-height:24px;font-size:14px;transition:color .25s}.VPSidebarItem.level-0 .text[data-v-2ea20db7]{font-weight:700;color:var(--vp-c-text-1)}.VPSidebarItem.level-1 .text[data-v-2ea20db7],.VPSidebarItem.level-2 .text[data-v-2ea20db7],.VPSidebarItem.level-3 .text[data-v-2ea20db7],.VPSidebarItem.level-4 .text[data-v-2ea20db7],.VPSidebarItem.level-5 .text[data-v-2ea20db7]{font-weight:500;color:var(--vp-c-text-2)}.VPSidebarItem.level-0.is-link>.item>.link:hover .text[data-v-2ea20db7],.VPSidebarItem.level-1.is-link>.item>.link:hover .text[data-v-2ea20db7],.VPSidebarItem.level-2.is-link>.item>.link:hover .text[data-v-2ea20db7],.VPSidebarItem.level-3.is-link>.item>.link:hover .text[data-v-2ea20db7],.VPSidebarItem.level-4.is-link>.item>.link:hover .text[data-v-2ea20db7],.VPSidebarItem.level-5.is-link>.item>.link:hover .text[data-v-2ea20db7]{color:var(--vp-c-brand-1)}.VPSidebarItem.level-0.has-active>.item>.text[data-v-2ea20db7],.VPSidebarItem.level-1.has-active>.item>.text[data-v-2ea20db7],.VPSidebarItem.level-2.has-active>.item>.text[data-v-2ea20db7],.VPSidebarItem.level-3.has-active>.item>.text[data-v-2ea20db7],.VPSidebarItem.level-4.has-active>.item>.text[data-v-2ea20db7],.VPSidebarItem.level-5.has-active>.item>.text[data-v-2ea20db7],.VPSidebarItem.level-0.has-active>.item>.link>.text[data-v-2ea20db7],.VPSidebarItem.level-1.has-active>.item>.link>.text[data-v-2ea20db7],.VPSidebarItem.level-2.has-active>.item>.link>.text[data-v-2ea20db7],.VPSidebarItem.level-3.has-active>.item>.link>.text[data-v-2ea20db7],.VPSidebarItem.level-4.has-active>.item>.link>.text[data-v-2ea20db7],.VPSidebarItem.level-5.has-active>.item>.link>.text[data-v-2ea20db7]{color:var(--vp-c-text-1)}.VPSidebarItem.level-0.is-active>.item .link>.text[data-v-2ea20db7],.VPSidebarItem.level-1.is-active>.item .link>.text[data-v-2ea20db7],.VPSidebarItem.level-2.is-active>.item .link>.text[data-v-2ea20db7],.VPSidebarItem.level-3.is-active>.item .link>.text[data-v-2ea20db7],.VPSidebarItem.level-4.is-active>.item .link>.text[data-v-2ea20db7],.VPSidebarItem.level-5.is-active>.item .link>.text[data-v-2ea20db7]{color:var(--vp-c-brand-1)}.caret[data-v-2ea20db7]{display:flex;justify-content:center;align-items:center;margin-right:-7px;width:32px;height:32px;color:var(--vp-c-text-3);cursor:pointer;transition:color .25s;flex-shrink:0}.item:hover .caret[data-v-2ea20db7]{color:var(--vp-c-text-2)}.item:hover .caret[data-v-2ea20db7]:hover{color:var(--vp-c-text-1)}.caret-icon[data-v-2ea20db7]{font-size:18px;transform:rotate(90deg);transition:transform .25s}.VPSidebarItem.collapsed .caret-icon[data-v-2ea20db7]{transform:rotate(0)}.VPSidebarItem.level-1 .items[data-v-2ea20db7],.VPSidebarItem.level-2 .items[data-v-2ea20db7],.VPSidebarItem.level-3 .items[data-v-2ea20db7],.VPSidebarItem.level-4 .items[data-v-2ea20db7],.VPSidebarItem.level-5 .items[data-v-2ea20db7]{border-left:1px solid var(--vp-c-divider);padding-left:16px}.VPSidebarItem.collapsed .items[data-v-2ea20db7]{display:none}.VPSidebar[data-v-ec846e01]{position:fixed;top:var(--vp-layout-top-height, 0px);bottom:0;left:0;z-index:var(--vp-z-index-sidebar);padding:32px 32px 96px;width:calc(100vw - 64px);max-width:320px;background-color:var(--vp-sidebar-bg-color);opacity:0;box-shadow:var(--vp-c-shadow-3);overflow-x:hidden;overflow-y:auto;transform:translate(-100%);transition:opacity .5s,transform .25s ease;overscroll-behavior:contain}.VPSidebar.open[data-v-ec846e01]{opacity:1;visibility:visible;transform:translate(0);transition:opacity .25s,transform .5s cubic-bezier(.19,1,.22,1)}.dark .VPSidebar[data-v-ec846e01]{box-shadow:var(--vp-shadow-1)}@media (min-width: 960px){.VPSidebar[data-v-ec846e01]{padding-top:var(--vp-nav-height);width:var(--vp-sidebar-width);max-width:100%;background-color:var(--vp-sidebar-bg-color);opacity:1;visibility:visible;box-shadow:none;transform:translate(0)}}@media (min-width: 1440px){.VPSidebar[data-v-ec846e01]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}@media (min-width: 960px){.curtain[data-v-ec846e01]{position:sticky;top:-64px;left:0;z-index:1;margin-top:calc(var(--vp-nav-height) * -1);margin-right:-32px;margin-left:-32px;height:var(--vp-nav-height);background-color:var(--vp-sidebar-bg-color)}}.nav[data-v-ec846e01]{outline:0}.group+.group[data-v-ec846e01]{border-top:1px solid var(--vp-c-divider);padding-top:10px}@media (min-width: 960px){.group[data-v-ec846e01]{padding-top:10px;width:calc(var(--vp-sidebar-width) - 64px)}}.VPSkipLink[data-v-c3508ec8]{top:8px;left:8px;padding:8px 16px;z-index:999;border-radius:8px;font-size:12px;font-weight:700;text-decoration:none;color:var(--vp-c-brand-1);box-shadow:var(--vp-shadow-3);background-color:var(--vp-c-bg)}.VPSkipLink[data-v-c3508ec8]:focus{height:auto;width:auto;clip:auto;clip-path:none}@media (min-width: 1280px){.VPSkipLink[data-v-c3508ec8]{top:14px;left:16px}}.Layout[data-v-a9a9e638]{display:flex;flex-direction:column;min-height:100vh}.VPHomeSponsors[data-v-db81191c]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPHomeSponsors[data-v-db81191c]{margin:96px 0}@media (min-width: 768px){.VPHomeSponsors[data-v-db81191c]{margin:128px 0}}.VPHomeSponsors[data-v-db81191c]{padding:0 24px}@media (min-width: 768px){.VPHomeSponsors[data-v-db81191c]{padding:0 48px}}@media (min-width: 960px){.VPHomeSponsors[data-v-db81191c]{padding:0 64px}}.container[data-v-db81191c]{margin:0 auto;max-width:1152px}.love[data-v-db81191c]{margin:0 auto;width:fit-content;font-size:28px;color:var(--vp-c-text-3)}.icon[data-v-db81191c]{display:inline-block}.message[data-v-db81191c]{margin:0 auto;padding-top:10px;max-width:320px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.sponsors[data-v-db81191c]{padding-top:32px}.action[data-v-db81191c]{padding-top:40px;text-align:center}.VPTeamPage[data-v-c2f8e101]{margin:96px 0}@media (min-width: 768px){.VPTeamPage[data-v-c2f8e101]{margin:128px 0}}.VPHome .VPTeamPageTitle[data-v-c2f8e101-s]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPTeamPageSection+.VPTeamPageSection[data-v-c2f8e101-s],.VPTeamMembers+.VPTeamPageSection[data-v-c2f8e101-s]{margin-top:64px}.VPTeamMembers+.VPTeamMembers[data-v-c2f8e101-s]{margin-top:24px}@media (min-width: 768px){.VPTeamPageTitle+.VPTeamPageSection[data-v-c2f8e101-s]{margin-top:16px}.VPTeamPageSection+.VPTeamPageSection[data-v-c2f8e101-s],.VPTeamMembers+.VPTeamPageSection[data-v-c2f8e101-s]{margin-top:96px}}.VPTeamMembers[data-v-c2f8e101-s]{padding:0 24px}@media (min-width: 768px){.VPTeamMembers[data-v-c2f8e101-s]{padding:0 48px}}@media (min-width: 960px){.VPTeamMembers[data-v-c2f8e101-s]{padding:0 64px}}.VPTeamPageTitle[data-v-e277e15c]{padding:48px 32px;text-align:center}@media (min-width: 768px){.VPTeamPageTitle[data-v-e277e15c]{padding:64px 48px 48px}}@media (min-width: 960px){.VPTeamPageTitle[data-v-e277e15c]{padding:80px 64px 48px}}.title[data-v-e277e15c]{letter-spacing:0;line-height:44px;font-size:36px;font-weight:500}@media (min-width: 768px){.title[data-v-e277e15c]{letter-spacing:-.5px;line-height:56px;font-size:48px}}.lead[data-v-e277e15c]{margin:0 auto;max-width:512px;padding-top:12px;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 768px){.lead[data-v-e277e15c]{max-width:592px;letter-spacing:.15px;line-height:28px;font-size:20px}}.VPTeamPageSection[data-v-d43bc49d]{padding:0 32px}@media (min-width: 768px){.VPTeamPageSection[data-v-d43bc49d]{padding:0 48px}}@media (min-width: 960px){.VPTeamPageSection[data-v-d43bc49d]{padding:0 64px}}.title[data-v-d43bc49d]{position:relative;margin:0 auto;max-width:1152px;text-align:center;color:var(--vp-c-text-2)}.title-line[data-v-d43bc49d]{position:absolute;top:16px;left:0;width:100%;height:1px;background-color:var(--vp-c-divider)}.title-text[data-v-d43bc49d]{position:relative;display:inline-block;padding:0 24px;letter-spacing:0;line-height:32px;font-size:20px;font-weight:500;background-color:var(--vp-c-bg)}.lead[data-v-d43bc49d]{margin:0 auto;max-width:480px;padding-top:12px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.members[data-v-d43bc49d]{padding-top:40px}.VPTeamMembersItem[data-v-f9987cb6]{display:flex;flex-direction:column;gap:2px;border-radius:12px;width:100%;height:100%;overflow:hidden}.VPTeamMembersItem.small .profile[data-v-f9987cb6]{padding:32px}.VPTeamMembersItem.small .data[data-v-f9987cb6]{padding-top:20px}.VPTeamMembersItem.small .avatar[data-v-f9987cb6]{width:64px;height:64px}.VPTeamMembersItem.small .name[data-v-f9987cb6]{line-height:24px;font-size:16px}.VPTeamMembersItem.small .affiliation[data-v-f9987cb6]{padding-top:4px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .desc[data-v-f9987cb6]{padding-top:12px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .links[data-v-f9987cb6]{margin:0 -16px -20px;padding:10px 0 0}.VPTeamMembersItem.medium .profile[data-v-f9987cb6]{padding:48px 32px}.VPTeamMembersItem.medium .data[data-v-f9987cb6]{padding-top:24px;text-align:center}.VPTeamMembersItem.medium .avatar[data-v-f9987cb6]{width:96px;height:96px}.VPTeamMembersItem.medium .name[data-v-f9987cb6]{letter-spacing:.15px;line-height:28px;font-size:20px}.VPTeamMembersItem.medium .affiliation[data-v-f9987cb6]{padding-top:4px;font-size:16px}.VPTeamMembersItem.medium .desc[data-v-f9987cb6]{padding-top:16px;max-width:288px;font-size:16px}.VPTeamMembersItem.medium .links[data-v-f9987cb6]{margin:0 -16px -12px;padding:16px 12px 0}.profile[data-v-f9987cb6]{flex-grow:1;background-color:var(--vp-c-bg-soft)}.data[data-v-f9987cb6]{text-align:center}.avatar[data-v-f9987cb6]{position:relative;flex-shrink:0;margin:0 auto;border-radius:50%;box-shadow:var(--vp-shadow-3)}.avatar-img[data-v-f9987cb6]{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;object-fit:cover}.name[data-v-f9987cb6]{margin:0;font-weight:600}.affiliation[data-v-f9987cb6]{margin:0;font-weight:500;color:var(--vp-c-text-2)}.org.link[data-v-f9987cb6]{color:var(--vp-c-text-2);transition:color .25s}.org.link[data-v-f9987cb6]:hover{color:var(--vp-c-brand-1)}.desc[data-v-f9987cb6]{margin:0 auto}.desc[data-v-f9987cb6] a{font-weight:500;color:var(--vp-c-brand-1);text-decoration-style:dotted;transition:color .25s}.links[data-v-f9987cb6]{display:flex;justify-content:center;height:56px}.sp-link[data-v-f9987cb6]{display:flex;justify-content:center;align-items:center;text-align:center;padding:16px;font-size:14px;font-weight:500;color:var(--vp-c-sponsor);background-color:var(--vp-c-bg-soft);transition:color .25s,background-color .25s}.sp .sp-link.link[data-v-f9987cb6]:hover,.sp .sp-link.link[data-v-f9987cb6]:focus{outline:none;color:var(--vp-c-white);background-color:var(--vp-c-sponsor)}.sp-icon[data-v-f9987cb6]{margin-right:8px;font-size:16px}.VPTeamMembers.small .container[data-v-fba19bad]{grid-template-columns:repeat(auto-fit,minmax(224px,1fr))}.VPTeamMembers.small.count-1 .container[data-v-fba19bad]{max-width:276px}.VPTeamMembers.small.count-2 .container[data-v-fba19bad]{max-width:576px}.VPTeamMembers.small.count-3 .container[data-v-fba19bad]{max-width:876px}.VPTeamMembers.medium .container[data-v-fba19bad]{grid-template-columns:repeat(auto-fit,minmax(256px,1fr))}@media (min-width: 375px){.VPTeamMembers.medium .container[data-v-fba19bad]{grid-template-columns:repeat(auto-fit,minmax(288px,1fr))}}.VPTeamMembers.medium.count-1 .container[data-v-fba19bad]{max-width:368px}.VPTeamMembers.medium.count-2 .container[data-v-fba19bad]{max-width:760px}.container[data-v-fba19bad]{display:grid;gap:24px;margin:0 auto;max-width:1152px}:root{--vp-plugin-tabs-tab-text-color: var(--vp-c-text-2);--vp-plugin-tabs-tab-active-text-color: var(--vp-c-text-1);--vp-plugin-tabs-tab-hover-text-color: var(--vp-c-text-1);--vp-plugin-tabs-tab-bg: var(--vp-c-bg-soft);--vp-plugin-tabs-tab-divider: var(--vp-c-divider);--vp-plugin-tabs-tab-active-bar-color: var(--vp-c-brand-1)}.plugin-tabs{margin:16px 0;background-color:var(--vp-plugin-tabs-tab-bg);border-radius:8px}.plugin-tabs--tab-list{position:relative;padding:0 12px;overflow-x:auto;overflow-y:hidden}.plugin-tabs--tab-list:after{content:"";position:absolute;bottom:0;left:0;right:0;height:2px;background-color:var(--vp-plugin-tabs-tab-divider)}.plugin-tabs--tab{position:relative;padding:0 12px;line-height:48px;border-bottom:2px solid transparent;color:var(--vp-plugin-tabs-tab-text-color);font-size:14px;font-weight:500;white-space:nowrap;transition:color .25s}.plugin-tabs--tab[aria-selected=true]{color:var(--vp-plugin-tabs-tab-active-text-color)}.plugin-tabs--tab:hover{color:var(--vp-plugin-tabs-tab-hover-text-color)}.plugin-tabs--tab:after{content:"";position:absolute;bottom:-2px;left:8px;right:8px;height:2px;background-color:transparent;transition:background-color .25s;z-index:1}.plugin-tabs--tab[aria-selected=true]:after{background-color:var(--vp-plugin-tabs-tab-active-bar-color)}.plugin-tabs--content[data-v-9b0d03d2]{padding:16px}.plugin-tabs--content[data-v-9b0d03d2]>:first-child:first-child{margin-top:0}.plugin-tabs--content[data-v-9b0d03d2]>:last-child:last-child{margin-bottom:0}.plugin-tabs--content[data-v-9b0d03d2]>div[class*=language-]{border-radius:8px;margin:16px 0}:root:not(.dark) .plugin-tabs--content[data-v-9b0d03d2] div[class*=language-]{background-color:var(--vp-c-bg)}.VPHero .clip{white-space:pre;max-width:500px}:root{--vp-font-family-base: "Barlow", "Inter var experimental", "Inter var", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;--vp-font-family-mono: "Space Mono", Menlo, Monaco, Consolas, "Courier New", monospace}.mono{font-feature-settings:"calt" 0}:root{--julia-blue: #4063D8;--julia-purple: #9558B2;--julia-red: #CB3C33;--julia-green: #389826;--vp-c-brand: #389826;--vp-c-brand-light: #3dd027;--vp-c-brand-lighter: #9499ff;--vp-c-brand-lightest: #bcc0ff;--vp-c-brand-dark: #535bf2;--vp-c-brand-darker: #454ce1;--vp-c-brand-dimm: #212425}:root{--vp-button-brand-border: var(--vp-c-brand-light);--vp-button-brand-text: var(--vp-c-white);--vp-button-brand-bg: var(--vp-c-brand);--vp-button-brand-hover-border: var(--vp-c-brand-light);--vp-button-brand-hover-text: var(--vp-c-white);--vp-button-brand-hover-bg: var(--vp-c-brand-light);--vp-button-brand-active-border: var(--vp-c-brand-light);--vp-button-brand-active-text: var(--vp-c-white);--vp-button-brand-active-bg: var(--vp-button-brand-bg)}:root{--vp-home-hero-name-color: transparent;--vp-home-hero-name-background: -webkit-linear-gradient( 120deg, #9558B2 30%, #CB3C33 );--vp-home-hero-image-background-image: linear-gradient( -45deg, #9558B2 30%, #389826 30%, #CB3C33 );--vp-home-hero-image-filter: blur(40px)}@media (min-width: 640px){:root{--vp-home-hero-image-filter: blur(56px)}}@media (min-width: 960px){:root{--vp-home-hero-image-filter: blur(72px)}}:root.dark{--vp-custom-block-tip-border: var(--vp-c-brand);--vp-custom-block-tip-text: var(--vp-c-brand-lightest);--vp-custom-block-tip-bg: var(--vp-c-brand-dimm);--vp-c-black: hsl(220 20% 9%);--vp-c-black-pure: hsl(220, 24%, 4%);--vp-c-black-soft: hsl(220 16% 13%);--vp-c-black-mute: hsl(220 14% 17%);--vp-c-gray: hsl(220 8% 56%);--vp-c-gray-dark-1: hsl(220 10% 39%);--vp-c-gray-dark-2: hsl(220 12% 28%);--vp-c-gray-dark-3: hsl(220 12% 23%);--vp-c-gray-dark-4: hsl(220 14% 17%);--vp-c-gray-dark-5: hsl(220 16% 13%);--vp-custom-block-info-bg: hsl(220 14% 17%)}.DocSearch{--docsearch-primary-color: var(--vp-c-brand) !important}mjx-container>svg{display:block;margin:auto}mjx-container{padding:.5rem 0}mjx-container{display:inline-block;margin:auto 2px -2px}mjx-container>svg{margin:auto;display:inline-block}:root{--vp-c-brand-1: #CB3C33;--vp-c-brand-2: #CB3C33;--vp-c-brand-3: #CB3C33;--vp-c-sponsor: #ca2971;--vitest-c-sponsor-hover: #c13071}.dark{--vp-c-brand-1: #91dd33;--vp-c-brand-2: #91dd33;--vp-c-brand-3: #91dd33;--vp-c-sponsor: #91dd33;--vitest-c-sponsor-hover: #e51370}.VPLocalSearchBox[data-v-f4c4f812]{position:fixed;z-index:100;top:0;right:0;bottom:0;left:0;display:flex}.backdrop[data-v-f4c4f812]{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--vp-backdrop-bg-color);transition:opacity .5s}.shell[data-v-f4c4f812]{position:relative;padding:12px;margin:64px auto;display:flex;flex-direction:column;gap:16px;background:var(--vp-local-search-bg);width:min(100vw - 60px,900px);height:min-content;max-height:min(100vh - 128px,900px);border-radius:6px}@media (max-width: 767px){.shell[data-v-f4c4f812]{margin:0;width:100vw;height:100vh;max-height:none;border-radius:0}}.search-bar[data-v-f4c4f812]{border:1px solid var(--vp-c-divider);border-radius:4px;display:flex;align-items:center;padding:0 12px;cursor:text}@media (max-width: 767px){.search-bar[data-v-f4c4f812]{padding:0 8px}}.search-bar[data-v-f4c4f812]:focus-within{border-color:var(--vp-c-brand-1)}.local-search-icon[data-v-f4c4f812]{display:block;font-size:18px}.navigate-icon[data-v-f4c4f812]{display:block;font-size:14px}.search-icon[data-v-f4c4f812]{margin:8px}@media (max-width: 767px){.search-icon[data-v-f4c4f812]{display:none}}.search-input[data-v-f4c4f812]{padding:6px 12px;font-size:inherit;width:100%}@media (max-width: 767px){.search-input[data-v-f4c4f812]{padding:6px 4px}}.search-actions[data-v-f4c4f812]{display:flex;gap:4px}@media (any-pointer: coarse){.search-actions[data-v-f4c4f812]{gap:8px}}@media (min-width: 769px){.search-actions.before[data-v-f4c4f812]{display:none}}.search-actions button[data-v-f4c4f812]{padding:8px}.search-actions button[data-v-f4c4f812]:not([disabled]):hover,.toggle-layout-button.detailed-list[data-v-f4c4f812]{color:var(--vp-c-brand-1)}.search-actions button.clear-button[data-v-f4c4f812]:disabled{opacity:.37}.search-keyboard-shortcuts[data-v-f4c4f812]{font-size:.8rem;opacity:75%;display:flex;flex-wrap:wrap;gap:16px;line-height:14px}.search-keyboard-shortcuts span[data-v-f4c4f812]{display:flex;align-items:center;gap:4px}@media (max-width: 767px){.search-keyboard-shortcuts[data-v-f4c4f812]{display:none}}.search-keyboard-shortcuts kbd[data-v-f4c4f812]{background:#8080801a;border-radius:4px;padding:3px 6px;min-width:24px;display:inline-block;text-align:center;vertical-align:middle;border:1px solid rgba(128,128,128,.15);box-shadow:0 2px 2px #0000001a}.results[data-v-f4c4f812]{display:flex;flex-direction:column;gap:6px;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}.result[data-v-f4c4f812]{display:flex;align-items:center;gap:8px;border-radius:4px;transition:none;line-height:1rem;border:solid 2px var(--vp-local-search-result-border);outline:none}.result>div[data-v-f4c4f812]{margin:12px;width:100%;overflow:hidden}@media (max-width: 767px){.result>div[data-v-f4c4f812]{margin:8px}}.titles[data-v-f4c4f812]{display:flex;flex-wrap:wrap;gap:4px;position:relative;z-index:1001;padding:2px 0}.title[data-v-f4c4f812]{display:flex;align-items:center;gap:4px}.title.main[data-v-f4c4f812]{font-weight:500}.title-icon[data-v-f4c4f812]{opacity:.5;font-weight:500;color:var(--vp-c-brand-1)}.title svg[data-v-f4c4f812]{opacity:.5}.result.selected[data-v-f4c4f812]{--vp-local-search-result-bg: var(--vp-local-search-result-selected-bg);border-color:var(--vp-local-search-result-selected-border)}.excerpt-wrapper[data-v-f4c4f812]{position:relative}.excerpt[data-v-f4c4f812]{opacity:75%;pointer-events:none;max-height:140px;overflow:hidden;position:relative;opacity:.5;margin-top:4px}.result.selected .excerpt[data-v-f4c4f812]{opacity:1}.excerpt[data-v-f4c4f812] *{font-size:.8rem!important;line-height:130%!important}.titles[data-v-f4c4f812] mark,.excerpt[data-v-f4c4f812] mark{background-color:var(--vp-local-search-highlight-bg);color:var(--vp-local-search-highlight-text);border-radius:2px;padding:0 2px}.excerpt[data-v-f4c4f812] .vp-code-group .tabs{display:none}.excerpt[data-v-f4c4f812] .vp-code-group div[class*=language-]{border-radius:8px!important}.excerpt-gradient-bottom[data-v-f4c4f812]{position:absolute;bottom:-1px;left:0;width:100%;height:8px;background:linear-gradient(transparent,var(--vp-local-search-result-bg));z-index:1000}.excerpt-gradient-top[data-v-f4c4f812]{position:absolute;top:-1px;left:0;width:100%;height:8px;background:linear-gradient(var(--vp-local-search-result-bg),transparent);z-index:1000}.result.selected .titles[data-v-f4c4f812],.result.selected .title-icon[data-v-f4c4f812]{color:var(--vp-c-brand-1)!important}.no-results[data-v-f4c4f812]{font-size:.9rem;text-align:center;padding:12px}svg[data-v-f4c4f812]{flex:none}
diff --git a/dev/constraints/comparison_constraints.html b/dev/constraints/comparison_constraints.html
index 0014ba7..f6b3739 100644
--- a/dev/constraints/comparison_constraints.html
+++ b/dev/constraints/comparison_constraints.html
@@ -5,19 +5,19 @@
     
     Constraints.jl: Streamlining Constraint Definition and Integration in Julia | Julia Constraints
     
-    
-    
+    
+    
     
-    
+    
     
-    
-    
-    
+    
+    
+    
     
     
   
   
-    
Skip to content

Constraints.jl: Streamlining Constraint Definition and Integration in Julia

Comparison-based Constraints

# Constraints.xcsp_all_differentFunction.
julia
xcsp_all_different(list::Vector{Int})

Return true if all the values of list are different, false otherwise.

Arguments

  • list::Vector{Int}: list of values to check.

Variants

  • :all_different: Global constraint ensuring that all the values of x are all different.
julia
concept(:all_different, x; vals)
+    
Skip to content

Constraints.jl: Streamlining Constraint Definition and Integration in Julia

Comparison-based Constraints

# Constraints.xcsp_all_differentFunction.
julia
xcsp_all_different(list::Vector{Int})

Return true if all the values of list are different, false otherwise.

Arguments

  • list::Vector{Int}: list of values to check.

Variants

  • :all_different: Global constraint ensuring that all the values of x are all different.
julia
concept(:all_different, x; vals)
 concept(:all_different)(x; vals)

Examples

julia
c = concept(:all_different)
 
 c([1, 2, 3, 4])
@@ -41,8 +41,8 @@
 c([1, 2, 3, 4, 4]; op=≤)
 c([1, 2, 3, 4, 5]; op=<)
 !c([1, 2, 3, 4, 3]; op=≤)
-!c([1, 2, 3, 4, 3]; op=<)

source


- +!c([1, 2, 3, 4, 3]; op=<)

source


+ \ No newline at end of file diff --git a/dev/constraints/connection_constraints.html b/dev/constraints/connection_constraints.html index 10e9731..3c221a8 100644 --- a/dev/constraints/connection_constraints.html +++ b/dev/constraints/connection_constraints.html @@ -5,19 +5,19 @@ Constraints.jl: Streamlining Constraint Definition and Integration in Julia | Julia Constraints - - + + - + - - - + + + -
Skip to content

Constraints.jl: Streamlining Constraint Definition and Integration in Julia

Connection Constraints

# Constraints.xcsp_maximumFunction.
julia
xcsp_maximum(; list, condition)

Return true if the maximum constraint is satisfied, false otherwise. The maximum constraint is a global constraint used in constraint programming that specifies that a certain condition should hold for the maximum value in a list of variables.

Arguments

  • list::Union{AbstractVector, Tuple}: list of values to check.

  • condition::Tuple: condition to check.

Variants

  • :maximum: The maximum constraint is a global constraint used in constraint programming that specifies that a certain condition should hold for the maximum value in a list of variables.
julia
concept(:maximum, x; op, val)
+    
Skip to content

Constraints.jl: Streamlining Constraint Definition and Integration in Julia

Connection Constraints

# Constraints.xcsp_maximumFunction.
julia
xcsp_maximum(; list, condition)

Return true if the maximum constraint is satisfied, false otherwise. The maximum constraint is a global constraint used in constraint programming that specifies that a certain condition should hold for the maximum value in a list of variables.

Arguments

  • list::Union{AbstractVector, Tuple}: list of values to check.

  • condition::Tuple: condition to check.

Variants

  • :maximum: The maximum constraint is a global constraint used in constraint programming that specifies that a certain condition should hold for the maximum value in a list of variables.
julia
concept(:maximum, x; op, val)
 concept(:maximum)(x; op, val)

Examples

julia
c = concept(:maximum)
 
 c([1, 2, 3, 4, 5]; op = ==, val = 5)
@@ -40,8 +40,8 @@
 c([2, 1, 5, 3, 4, 2, 1, 4, 5, 3]; dim=2)
 c([2, 1, 4, 3, 5, 2, 1, 4, 5, 3]; dim=2)
 c([false, false, true, false]; id=3)
-c([false, false, true, false]; id=1)

source


- +c([false, false, true, false]; id=1)

source


+ \ No newline at end of file diff --git a/dev/constraints/constraint_commons.html b/dev/constraints/constraint_commons.html index 16eaac7..7d387eb 100644 --- a/dev/constraints/constraint_commons.html +++ b/dev/constraints/constraint_commons.html @@ -5,19 +5,19 @@ ConstraintCommons.jl | Julia Constraints - - + + - + - - - + + + -
Skip to content

ConstraintCommons.jl

ConstraintCommons.jl is an essential package within the Julia Constraints ecosystem designed to facilitate the development and interoperability of constraint programming solutions in Julia. It serves as a foundational layer that provides shared structures, abstract types, functions, and generic methods utilized by both basic feature packages and learning-oriented packages.

Only advanced users or package developers are likely to use it. The package covers parameters, (regular) languages, Core or Base methods extensions, sampling, extrema, and dictionaries.

Parameters

This section of the package list or extract parameters based on the XCSP3-core specifications. Note that, for the foreseeable future, the default constraints specification will follow these specifications.

# ConstraintCommons.USUAL_CONSTRAINT_PARAMETERSConstant.
julia
const USUAL_CONSTRAINT_PARAMETERS

List of usual constraints parameters (based on XCSP3-core constraints). The list is based on the nature of each kind of parameter instead of the keywords used in the XCSP3-core format.

julia
const USUAL_CONSTRAINT_PARAMETERS = [
+    
Skip to content

ConstraintCommons.jl

ConstraintCommons.jl is an essential package within the Julia Constraints ecosystem designed to facilitate the development and interoperability of constraint programming solutions in Julia. It serves as a foundational layer that provides shared structures, abstract types, functions, and generic methods utilized by both basic feature packages and learning-oriented packages.

Only advanced users or package developers are likely to use it. The package covers parameters, (regular) languages, Core or Base methods extensions, sampling, extrema, and dictionaries.

Parameters

This section of the package list or extract parameters based on the XCSP3-core specifications. Note that, for the foreseeable future, the default constraints specification will follow these specifications.

# ConstraintCommons.USUAL_CONSTRAINT_PARAMETERSConstant.
julia
const USUAL_CONSTRAINT_PARAMETERS

List of usual constraints parameters (based on XCSP3-core constraints). The list is based on the nature of each kind of parameter instead of the keywords used in the XCSP3-core format.

julia
const USUAL_CONSTRAINT_PARAMETERS = [
     :bool, # boolean parameter
     :dim, # dimension, an integer parameter used along the pair_vars or vals parameters
     :id, # index to target one variable in the input vector
@@ -26,8 +26,8 @@
     :pair_vars, # a list of parameters that are paired with each variable in the input vector
     :val, # one scalar value
     :vals, # a list of scalar values (independent of the input vector size)
-]

source


# ConstraintCommons.extract_parametersFunction.
julia
extract_parameters(m::Union{Method, Function}; parameters)

Extracts the intersection between the kargs of m and parameters (defaults to USUAL_CONSTRAINT_PARAMETERS).

source

julia
extract_parameters(s::Symbol, constraints_dict=USUAL_CONSTRAINTS; parameters=ConstraintCommons.USUAL_CONSTRAINT_PARAMETERS)

Return the parameters of the constraint s in constraints_dict.

Arguments

  • s::Symbol: the constraint name.

  • constraints_dict::Dict{Symbol,Constraint}: dictionary of constraints. Default is USUAL_CONSTRAINTS.

  • parameters::Vector{Symbol}: vector of parameters. Default is ConstraintCommons.USUAL_CONSTRAINT_PARAMETERS.

Example

julia
extract_parameters(:all_different)

source


Performances

Bench Evolution ParametersChair Evolution Parameters

Languages

XCSP3 considers two kinds of structure to recognize languages as core constraints: Automata, Multivalued Decision Diagrams (MMDs).

# ConstraintCommons.AbstractMultivaluedDecisionDiagramType.
julia
AbstractMultivaluedDecisionDiagram

An abstract interface for Multivalued Decision Diagrams (MDD) used in Julia Constraints packages. Requirements:

  • accept(a<:AbstractMultivaluedDecisionDiagram, word): return true if a accepts word.

source


# ConstraintCommons.MDDType.
julia
MDD{S,T} <: AbstractMultivaluedDecisionDiagram

A minimal implementation of a multivalued decision diagram structure.

source


# ConstraintCommons.AbstractAutomatonType.
julia
AbstractAutomaton

An abstract interface for automata used in Julia Constraints packages. Requirements:

  • accept(a<:AbstractAutomaton, word): return true if a accepts word.

source


# ConstraintCommons.AutomatonType.
julia
Automaton{S, T, F <: Union{S, Vector{S}, Set{S}}} <: AbstractAutomaton

A minimal implementation of a deterministic automaton structure.

source


# ConstraintCommons.acceptFunction.
julia
accept(a::Union{Automaton, MDD}, w)

Return true if a accepts the word w and false otherwise.

source

julia
ConstraintCommons.accept(fa::FakeAutomaton, word)

Implement the accept methods for FakeAutomaton.

source


# ConstraintCommons.at_endFunction.
julia
at_end(a::Automaton, s)

Internal method used by accept with Automaton.

source


Performances

Bench Evolution Automata
Chair Evolution Automata
Bench Evolution Diagrams
Chair Evolution Diagrams

Extensions

We extended some operations for Nothing and Symbol.

# ConstraintCommons.symconFunction.
julia
symcon(s1::Symbol, s2::Symbol, connector::AbstractString="_")

Extends * to Symbols multiplication by connecting the symbols by an _.

source


# ConstraintCommons.consinFunction.
julia
consin(::Any, ::Nothing)

Extends Base.in (or ) when the set is nothing. Returns false.

source


# ConstraintCommons.consisemptyFunction.
julia
consisempty(::Nothing)

Extends Base.isempty when the set is nothing. Returns true.

source


Performances

Bench Evolution Nothing
Chair Evolution Nothing
Bench Evolution Symbols
Chair Evolution Symbols

Sampling

During our constraint learning processes, we use sampling to efficiently make partial exploration of search spaces. Follows some sampling utilities.

# ConstraintCommons.oversampleFunction.
julia
oversample(X, f)

Oversample elements of X until the boolean function f has as many true and false configurations.

source


Performances

Bench EvolutionChair Evolution

Extrema

We need to compute the difference between extrema of various kind of collections in several situations.

# ConstraintCommons.δ_extremaFunction.
julia
δ_extrema(X...)

Compute both the difference between the maximum and the minimum of over all the collections of X.

source


Bench EvolutionChair Evolution

Performances

Dictionaries

We provide the everuseful incsert! function for dictionaries.

# ConstraintCommons.incsert!Function.
julia
incsert!(d::Union{AbstractDict, AbstractDictionary}, ind, val = 1)

Increase or insert a counter in a dictionary-based collection. The counter insertion defaults to val = 1.

source


Performances

Bench EvolutionChair Evolution
- +]

source


# ConstraintCommons.extract_parametersFunction.
julia
extract_parameters(m::Union{Method, Function}; parameters)

Extracts the intersection between the kargs of m and parameters (defaults to USUAL_CONSTRAINT_PARAMETERS).

source

julia
extract_parameters(s::Symbol, constraints_dict=USUAL_CONSTRAINTS; parameters=ConstraintCommons.USUAL_CONSTRAINT_PARAMETERS)

Return the parameters of the constraint s in constraints_dict.

Arguments

  • s::Symbol: the constraint name.

  • constraints_dict::Dict{Symbol,Constraint}: dictionary of constraints. Default is USUAL_CONSTRAINTS.

  • parameters::Vector{Symbol}: vector of parameters. Default is ConstraintCommons.USUAL_CONSTRAINT_PARAMETERS.

Example

julia
extract_parameters(:all_different)

source


Performances

Bench Evolution ParametersChair Evolution Parameters

Languages

XCSP3 considers two kinds of structure to recognize languages as core constraints: Automata, Multivalued Decision Diagrams (MMDs).

# ConstraintCommons.AbstractMultivaluedDecisionDiagramType.
julia
AbstractMultivaluedDecisionDiagram

An abstract interface for Multivalued Decision Diagrams (MDD) used in Julia Constraints packages. Requirements:

  • accept(a<:AbstractMultivaluedDecisionDiagram, word): return true if a accepts word.

source


# ConstraintCommons.MDDType.
julia
MDD{S,T} <: AbstractMultivaluedDecisionDiagram

A minimal implementation of a multivalued decision diagram structure.

source


# ConstraintCommons.AbstractAutomatonType.
julia
AbstractAutomaton

An abstract interface for automata used in Julia Constraints packages. Requirements:

  • accept(a<:AbstractAutomaton, word): return true if a accepts word.

source


# ConstraintCommons.AutomatonType.
julia
Automaton{S, T, F <: Union{S, Vector{S}, Set{S}}} <: AbstractAutomaton

A minimal implementation of a deterministic automaton structure.

source


# ConstraintCommons.acceptFunction.
julia
accept(a::Union{Automaton, MDD}, w)

Return true if a accepts the word w and false otherwise.

source

julia
ConstraintCommons.accept(fa::FakeAutomaton, word)

Implement the accept methods for FakeAutomaton.

source


# ConstraintCommons.at_endFunction.
julia
at_end(a::Automaton, s)

Internal method used by accept with Automaton.

source


Performances

Bench Evolution Automata
Chair Evolution Automata
Bench Evolution Diagrams
Chair Evolution Diagrams

Extensions

We extended some operations for Nothing and Symbol.

# ConstraintCommons.symconFunction.
julia
symcon(s1::Symbol, s2::Symbol, connector::AbstractString="_")

Extends * to Symbols multiplication by connecting the symbols by an _.

source


# ConstraintCommons.consinFunction.
julia
consin(::Any, ::Nothing)

Extends Base.in (or ) when the set is nothing. Returns false.

source


# ConstraintCommons.consisemptyFunction.
julia
consisempty(::Nothing)

Extends Base.isempty when the set is nothing. Returns true.

source


Performances

Bench Evolution Nothing
Chair Evolution Nothing
Bench Evolution Symbols
Chair Evolution Symbols

Sampling

During our constraint learning processes, we use sampling to efficiently make partial exploration of search spaces. Follows some sampling utilities.

# ConstraintCommons.oversampleFunction.
julia
oversample(X, f)

Oversample elements of X until the boolean function f has as many true and false configurations.

source


Performances

Bench EvolutionChair Evolution

Extrema

We need to compute the difference between extrema of various kind of collections in several situations.

# ConstraintCommons.δ_extremaFunction.
julia
δ_extrema(X...)

Compute both the difference between the maximum and the minimum of over all the collections of X.

source


Bench EvolutionChair Evolution

Performances

Dictionaries

We provide the everuseful incsert! function for dictionaries.

# ConstraintCommons.incsert!Function.
julia
incsert!(d::Union{AbstractDict, AbstractDictionary}, ind, val = 1)

Increase or insert a counter in a dictionary-based collection. The counter insertion defaults to val = 1.

source


Performances

Bench EvolutionChair Evolution
+ \ No newline at end of file diff --git a/dev/constraints/constraint_domains.html b/dev/constraints/constraint_domains.html index 8c1149a..1e41e46 100644 --- a/dev/constraints/constraint_domains.html +++ b/dev/constraints/constraint_domains.html @@ -5,19 +5,19 @@ ConstraintDomains.jl: Defining and Exploring Variable Domains within JuliaConstraints | Julia Constraints - - + + - + - - - + + + -
Skip to content

ConstraintDomains.jl: Defining and Exploring Variable Domains within JuliaConstraints

ConstraintDomains.jl stands as a critical package within the Julia Constraints ecosystem, focusing on the definition and manipulation of variable domains that underpin the search spaces of constraint programming problems. This package provides the infrastructure necessary for specifying both discrete and continuous domains, thereby enabling a broad range of constraint programming applications.

Key Features and Functionalities

  • AbstractDomain Super Type: At the foundation of ConstraintDomains.jl is the AbstractDomain type, an abstract supertype for all domain types. Implementations of AbstractDomain must provide methods for checking membership (∈), generating random elements (rand), and determining the domain's size or range (length). These functionalities are essential for defining the behavior and properties of variable domains within constraint models.

  • Domain Types: The package distinguishes between various domain types to cater to different needs:

    • ContinuousDomain: A supertype for domains representing continuous ranges of real numbers.

    • DiscreteDomain: Serves as a supertype for domains defined by discrete sets or ranges of numbers.

    • EmptyDomain: Handles yet-to-be-defined domains, facilitating dynamic problem formulation.

    • Intervals and RangeDomain: Represent continuous intervals and discrete ranges, respectively, providing flexible domain specification options.

  • Dynamic Domain Manipulation: ConstraintDomains.jl supports dynamic changes to domains, allowing for the addition (add!) and deletion (delete!) of elements, crucial for problems where domain definitions evolve based on the search process or external inputs.

  • Exploration Settings and Methods: The package offers ExploreSettings to configure the exploration of search spaces, including parameters for complete searches, maximum samplings, and solution limits. This feature is pivotal for tailoring the search process to the problem's characteristics and the computational resources available.

  • Support for Advanced Modeling: Beyond basic domain definition and manipulation, ConstraintDomains.jl integrates with learning and parameter exploration tools. For instance, FakeAutomaton facilitates the generation of pseudo-automata for parameter exploration, while the package also provides functions for generating random parameters (generate_parameters), accessing domain internals (get_domain), and merging or intersecting domains (merge_domains, intersect_domains).

Empowering Constraint Programming in Julia

ConstraintDomains.jl embodies the versatility and power of the JuliaConstraints ecosystem, offering users a comprehensive toolkit for defining and exploring variable domains. By abstracting complex domain manipulations and providing a rich set of functionalities, ConstraintDomains.jl enhances the ease and efficiency of modeling constraint programming problems. Whether for educational purposes, research, or practical applications, this package lays the groundwork for advanced problem-solving strategies in the realm of constraint programming.

Commons

# ConstraintDomains.AbstractDomainType.
julia
AbstractDomain

An abstract super type for any domain type. A domain type D <: AbstractDomain must implement the following methods to properly interface AbstractDomain.

  • Base.∈(val, ::D)

  • Base.rand(::D)

  • Base.length(::D) that is the number of elements in a discrete domain, and the distance between bounds or similar for a continuous domain

Additionally, if the domain is used in a dynamic context, it can extend

  • add!(::D, args)

  • delete!(::D, args)

where args depends on D's structure

source


# ConstraintDomains.EmptyDomainType.
julia
EmptyDomain

A struct to handle yet to be defined domains.

source


# ConstraintDomains.domainFunction.
julia
domain()

Construct an EmptyDomain.

source

julia
domain(a::Tuple{T, Bool}, b::Tuple{T, Bool}) where {T <: Real}
+    
Skip to content

ConstraintDomains.jl: Defining and Exploring Variable Domains within JuliaConstraints

ConstraintDomains.jl stands as a critical package within the Julia Constraints ecosystem, focusing on the definition and manipulation of variable domains that underpin the search spaces of constraint programming problems. This package provides the infrastructure necessary for specifying both discrete and continuous domains, thereby enabling a broad range of constraint programming applications.

Key Features and Functionalities

  • AbstractDomain Super Type: At the foundation of ConstraintDomains.jl is the AbstractDomain type, an abstract supertype for all domain types. Implementations of AbstractDomain must provide methods for checking membership (∈), generating random elements (rand), and determining the domain's size or range (length). These functionalities are essential for defining the behavior and properties of variable domains within constraint models.

  • Domain Types: The package distinguishes between various domain types to cater to different needs:

    • ContinuousDomain: A supertype for domains representing continuous ranges of real numbers.

    • DiscreteDomain: Serves as a supertype for domains defined by discrete sets or ranges of numbers.

    • EmptyDomain: Handles yet-to-be-defined domains, facilitating dynamic problem formulation.

    • Intervals and RangeDomain: Represent continuous intervals and discrete ranges, respectively, providing flexible domain specification options.

  • Dynamic Domain Manipulation: ConstraintDomains.jl supports dynamic changes to domains, allowing for the addition (add!) and deletion (delete!) of elements, crucial for problems where domain definitions evolve based on the search process or external inputs.

  • Exploration Settings and Methods: The package offers ExploreSettings to configure the exploration of search spaces, including parameters for complete searches, maximum samplings, and solution limits. This feature is pivotal for tailoring the search process to the problem's characteristics and the computational resources available.

  • Support for Advanced Modeling: Beyond basic domain definition and manipulation, ConstraintDomains.jl integrates with learning and parameter exploration tools. For instance, FakeAutomaton facilitates the generation of pseudo-automata for parameter exploration, while the package also provides functions for generating random parameters (generate_parameters), accessing domain internals (get_domain), and merging or intersecting domains (merge_domains, intersect_domains).

Empowering Constraint Programming in Julia

ConstraintDomains.jl embodies the versatility and power of the JuliaConstraints ecosystem, offering users a comprehensive toolkit for defining and exploring variable domains. By abstracting complex domain manipulations and providing a rich set of functionalities, ConstraintDomains.jl enhances the ease and efficiency of modeling constraint programming problems. Whether for educational purposes, research, or practical applications, this package lays the groundwork for advanced problem-solving strategies in the realm of constraint programming.

Commons

# ConstraintDomains.AbstractDomainType.
julia
AbstractDomain

An abstract super type for any domain type. A domain type D <: AbstractDomain must implement the following methods to properly interface AbstractDomain.

  • Base.∈(val, ::D)

  • Base.rand(::D)

  • Base.length(::D) that is the number of elements in a discrete domain, and the distance between bounds or similar for a continuous domain

Additionally, if the domain is used in a dynamic context, it can extend

  • add!(::D, args)

  • delete!(::D, args)

where args depends on D's structure

source


# ConstraintDomains.EmptyDomainType.
julia
EmptyDomain

A struct to handle yet to be defined domains.

source


# ConstraintDomains.domainFunction.
julia
domain()

Construct an EmptyDomain.

source

julia
domain(a::Tuple{T, Bool}, b::Tuple{T, Bool}) where {T <: Real}
 domain(intervals::Vector{Tuple{Tuple{T, Bool},Tuple{T, Bool}}}) where {T <: Real}

Construct a domain of continuous interval(s).

source

julia
domain(values)
 domain(range::R) where {T <: Real, R <: AbstractRange{T}}

Construct either a SetDomain or a `RangeDomain``.

julia
d1 = domain(1:5)
 d2 = domain([53.69, 89.2, 0.12])
@@ -52,8 +52,8 @@
     search = :flexible,
     solutions_limit = floor(Int, sqrt(max_samplings)),
 )

Settings for the exploration of a search space composed by a collection of domains.

source


# ConstraintDomains._exploreFunction.
julia
_explore(args...)

Internals of the explore function. Behavior is automatically adjusted on the kind of exploration: :flexible, :complete, :partial.

source


# ConstraintDomains.exploreFunction.
julia
explore(domains, concept, param = nothing; search_limit = 1000, solutions_limit = 100)

Search (a part of) a search space and returns a pair of vector of configurations: (solutions, non_solutions). If the search space size is over search_limit, then both solutions and non_solutions are limited to solutions_limit.

Beware that if the density of the solutions in the search space is low, solutions_limit needs to be reduced. This process will be automatic in the future (simple reinforcement learning).

Arguments:

  • domains: a collection of domains

  • concept: the concept of the targeted constraint

  • param: an optional parameter of the constraint

  • sol_number: the required number of solutions (half of the number of configurations), default to 100

source


Parameters

# ConstraintDomains.BoolParameterDomainType.
julia
BoolParameterDomain <: AbstractDomain

A domain to store boolean values. It is used to generate random parameters.

source


# ConstraintDomains.DimParameterDomainType.
julia
DimParameterDomain <: AbstractDomain

A domain to store dimensions. It is used to generate random parameters.

source


# ConstraintDomains.IdParameterDomainType.
julia
IdParameterDomain <: AbstractDomain

A domain to store ids. It is used to generate random parameters.

source


# ConstraintDomains.FakeAutomatonType.
julia
FakeAutomaton{T} <: ConstraintCommons.AbstractAutomaton

A structure to generate pseudo automaton enough for parameter exploration.

source


# ConstraintCommons.acceptFunction.
julia
accept(a::Union{Automaton, MDD}, w)

Return true if a accepts the word w and false otherwise.

source

julia
ConstraintCommons.accept(fa::FakeAutomaton, word)

Implement the accept methods for FakeAutomaton.

source


# ConstraintDomains.fake_automatonFunction.
julia
fake_automaton(d)

Construct a FakeAutomaton.

source


# ConstraintDomains.LanguageParameterDomainType.
julia
LanguageParameterDomain <: AbstractDomain

A domain to store languages. It is used to generate random parameters.

source


# ConstraintDomains.OpParameterDomainType.
julia
OpParameterDomain{T} <: AbstractDomain

A domain to store operators. It is used to generate random parameters.

source


# ConstraintDomains.PairVarsParameterDomainType.
julia
PairVarsParameterDomain{T} <: AbstractDomain

A domain to store values paired with variables. It is used to generate random parameters.

source


# ConstraintDomains.ValParameterDomainType.
julia
ValParameterDomain{T} <: AbstractDomain

A domain to store one value. It is used to generate random parameters.

source


# ConstraintDomains.ValsParameterDomainType.
julia
ValsParameterDomain{T} <: AbstractDomain

A domain to store values. It is used to generate random parameters.

source


# Base.randFunction.
julia
Base.rand(d::Union{Vector{D},Set{D}, D}) where {D<:AbstractDomain}

Extends Base.rand to (a collection of) domains.

source

julia
Base.rand(itv::Intervals)
-Base.rand(itv::Intervals, i)

Return a random value from itv, specifically from the ith interval if i is specified.

source

julia
Base.rand(d::D) where D <: DiscreteDomain

Draw randomly a point in d.

source

julia
Base.rand(fa::FakeAutomaton)

Extends Base.rand. Currently simply returns fa.

source


# ConstraintDomains.generate_parametersFunction.
julia
generate_parameters(d<:AbstractDomain, param)

Generates random parameters based on the domain d and the kind of parameters param.

source


- +Base.rand(itv::Intervals, i)

Return a random value from itv, specifically from the ith interval if i is specified.

source

julia
Base.rand(d::D) where D <: DiscreteDomain

Draw randomly a point in d.

source

julia
Base.rand(fa::FakeAutomaton)

Extends Base.rand. Currently simply returns fa.

source


# ConstraintDomains.generate_parametersFunction.
julia
generate_parameters(d<:AbstractDomain, param)

Generates random parameters based on the domain d and the kind of parameters param.

source


+ \ No newline at end of file diff --git a/dev/constraints/constraint_models.html b/dev/constraints/constraint_models.html index e65d74f..d2839cc 100644 --- a/dev/constraints/constraint_models.html +++ b/dev/constraints/constraint_models.html @@ -5,19 +5,19 @@ ConstraintModels.jl | Julia Constraints - - + + - + - - - + + + -
Skip to content

ConstraintModels.jl

Documentation for ConstraintModels.jl.

# ConstraintModels.SudokuInstanceType.
julia
mutable struct SudokuInstance{T <: Integer} <: AbstractMatrix{T}

A struct for SudokuInstances, which is a subtype of AbstractMatrix.

julia
SudokuInstance(A::AbstractMatrix{T})
+    
Skip to content

ConstraintModels.jl

Documentation for ConstraintModels.jl.

# ConstraintModels.SudokuInstanceType.
julia
mutable struct SudokuInstance{T <: Integer} <: AbstractMatrix{T}

A struct for SudokuInstances, which is a subtype of AbstractMatrix.

julia
SudokuInstance(A::AbstractMatrix{T})
 SudokuInstance(::Type{T}, n::Int) # fill in blank sudoku of type T
 SudokuInstance(n::Int) # fill in blank sudoku of type Int
 SudokuInstance(::Type{T}) # fill in "standard" 9×9 sudoku of type T
@@ -46,8 +46,8 @@
 
 # Retrieve and display the values
 solution = value.(grid)
-display(solution, Val(:sudoku))

source


- +display(solution, Val(:sudoku))

source


+ \ No newline at end of file diff --git a/dev/constraints/constraints.html b/dev/constraints/constraints.html index 885c65a..c8da19f 100644 --- a/dev/constraints/constraints.html +++ b/dev/constraints/constraints.html @@ -5,22 +5,22 @@ Constraints.jl: Streamlining Constraint Definition and Integration in Julia | Julia Constraints - - + + - + - - - + + + -
Skip to content

Constraints.jl: Streamlining Constraint Definition and Integration in Julia

Constraints.jl is a pivotal package within the JuliaConstraints ecosystem, designed to facilitate the definition, manipulation, and application of constraints in constraint programming (CP). This package is central to handling both standard and complex constraints, making it an indispensable tool for developers and researchers working in CP.

Key Features and Functionalities

  • Integration of XCSP3-core Constraints: One of the standout features of Constraints.jl is its incorporation of the XCSP3-core constraints as usual constraints within Julia. This integration ensures that users can define and work with a wide range of standard constraints, following the specifications outlined in the XCSP3-core, directly in Julia. The use of USUAL_CONSTRAINTS dictionary allows for straightforward addition and manipulation of these constraints, enhancing the package's utility and flexibility.

  • Learning Package Integration: Constraints.jl goes beyond traditional constraint handling by offering the capability to include results from various learning packages within the JuliaConstraints organization. This feature allows for the enhancement of usual constraints and those from the Global Constraints Catalog with learned parameters and behaviors, significantly improving constraint applicability and performance in complex CP problems.

  • Constraint Definition and Symmetry Handling: The package provides a simple yet powerful syntax for defining new constraints (@usual) and managing their symmetries through the USUAL_SYMMETRIES dictionary. This approach simplifies the creation of new constraints and the optimization of constraint search spaces by avoiding redundant explorations.

  • Advanced Constraint Functionalities: At the core of Constraints.jl is the Constraint type, encapsulating the essential elements of a constraint, including its concept (a Boolean function determining satisfaction) and an error function (providing a preference measure over invalid assignments). These components are crucial for defining how constraints behave and are evaluated within a CP model.

  • Flexible Constraint Application: The package supports a range of methods for interacting with constraints, such as args, concept, error_f, params_length, symmetries, and xcsp_intension. These methods offer users the ability to examine constraint properties, apply constraints to variable assignments, and work with intensional constraints defined by predicates. Such flexibility is vital for tailoring constraint behavior to specific problems and contexts.

Enabling Advanced Modeling in Constraint Programming

Constraints.jl embodies the JuliaConstraints ecosystem's commitment to providing robust, flexible tools for constraint programming. By integrating standard constraints, facilitating the incorporation of learned behaviors, and offering comprehensive tools for constraint definition and application, Constraints.jl significantly enhances the modeling capabilities available to CP practitioners. Whether for educational purposes, research, or solving practical CP problems, Constraints.jl offers a sophisticated, user-friendly platform for working with constraints in Julia.

Basic tools

# Constraints.USUAL_SYMMETRIESConstant.
julia
USUAL_SYMMETRIES

A Dictionary that contains the function to apply for each symmetry to avoid searching a whole space.

source


# Constraints.ConstraintType.
julia
Constraint

Parametric structure with the following fields.

  • concept: a Boolean function that, given an assignment x, outputs true if x satisfies the constraint, and false otherwise.

  • error: a positive function that works as preferences over invalid assignments. Return 0.0 if the constraint is satisfied, and a strictly positive real otherwise.

source


# Constraints.conceptFunction.
julia
concept(c::Constraint)

Return the concept (function) of constraint c. concept(c::Constraint, x...; param = nothing) Apply the concept of c to values x and optionally param.

source

julia
concept(s::Symbol, args...; kargs...)

Return the concept of the constraint s applied to args and kargs. This is a shortcut for concept(USUAL_CONSTRAINTS[s])(args...; kargs...).

Arguments

  • s::Symbol: the constraint name.

  • args...: the arguments to apply the concept to.

  • kargs...: the keyword arguments to apply the concept to.

Example

julia
concept(:all_different, [1, 2, 3])

source


# Constraints.error_fFunction.
julia
error_f(c::Constraint)

Return the error function of constraint c. error_f(c::Constraint, x; param = nothing) Apply the error function of c to values x and optionally param.

source


# Constraints.argsFunction.
julia
args(c::Constraint)

Return the expected length restriction of the arguments in a constraint c. The value nothing indicates that any strictly positive number of value is accepted.

source


# Constraints.params_lengthFunction.
julia
params_length(c::Constraint)

Return the expected length restriction of the arguments in a constraint c. The value nothing indicates that any strictly positive number of parameters is accepted.

source


# Constraints.symmetriesFunction.
julia
symmetries(c::Constraint)

Return the list of symmetries of c.

source


# Constraints.make_errorFunction.
julia
make_error(symb::Symbol)

Create a function that returns an error based on the predicate of the constraint identified by the symbol provided.

Arguments

  • symb::Symbol: The symbol used to determine the error function to be returned. The function first checks if a predicate with the prefix "icn_" exists in the Constraints module. If it does, it returns that function. If it doesn't, it checks for a predicate with the prefix "error_". If that exists, it returns that function. If neither exists, it returns a function that evaluates the predicate with the prefix "concept_" and returns the negation of its result cast to Float64.

Returns

  • Function: A function that takes in a variable x and an arbitrary number of parameters params. The function returns a Float64.

Examples

julia
e = make_error(:all_different)
+    
Skip to content

Constraints.jl: Streamlining Constraint Definition and Integration in Julia

Constraints.jl is a pivotal package within the JuliaConstraints ecosystem, designed to facilitate the definition, manipulation, and application of constraints in constraint programming (CP). This package is central to handling both standard and complex constraints, making it an indispensable tool for developers and researchers working in CP.

Key Features and Functionalities

  • Integration of XCSP3-core Constraints: One of the standout features of Constraints.jl is its incorporation of the XCSP3-core constraints as usual constraints within Julia. This integration ensures that users can define and work with a wide range of standard constraints, following the specifications outlined in the XCSP3-core, directly in Julia. The use of USUAL_CONSTRAINTS dictionary allows for straightforward addition and manipulation of these constraints, enhancing the package's utility and flexibility.

  • Learning Package Integration: Constraints.jl goes beyond traditional constraint handling by offering the capability to include results from various learning packages within the JuliaConstraints organization. This feature allows for the enhancement of usual constraints and those from the Global Constraints Catalog with learned parameters and behaviors, significantly improving constraint applicability and performance in complex CP problems.

  • Constraint Definition and Symmetry Handling: The package provides a simple yet powerful syntax for defining new constraints (@usual) and managing their symmetries through the USUAL_SYMMETRIES dictionary. This approach simplifies the creation of new constraints and the optimization of constraint search spaces by avoiding redundant explorations.

  • Advanced Constraint Functionalities: At the core of Constraints.jl is the Constraint type, encapsulating the essential elements of a constraint, including its concept (a Boolean function determining satisfaction) and an error function (providing a preference measure over invalid assignments). These components are crucial for defining how constraints behave and are evaluated within a CP model.

  • Flexible Constraint Application: The package supports a range of methods for interacting with constraints, such as args, concept, error_f, params_length, symmetries, and xcsp_intension. These methods offer users the ability to examine constraint properties, apply constraints to variable assignments, and work with intensional constraints defined by predicates. Such flexibility is vital for tailoring constraint behavior to specific problems and contexts.

Enabling Advanced Modeling in Constraint Programming

Constraints.jl embodies the JuliaConstraints ecosystem's commitment to providing robust, flexible tools for constraint programming. By integrating standard constraints, facilitating the incorporation of learned behaviors, and offering comprehensive tools for constraint definition and application, Constraints.jl significantly enhances the modeling capabilities available to CP practitioners. Whether for educational purposes, research, or solving practical CP problems, Constraints.jl offers a sophisticated, user-friendly platform for working with constraints in Julia.

Basic tools

# Constraints.USUAL_SYMMETRIESConstant.
julia
USUAL_SYMMETRIES

A Dictionary that contains the function to apply for each symmetry to avoid searching a whole space.

source


# Constraints.ConstraintType.
julia
Constraint

Parametric structure with the following fields.

  • concept: a Boolean function that, given an assignment x, outputs true if x satisfies the constraint, and false otherwise.

  • error: a positive function that works as preferences over invalid assignments. Return 0.0 if the constraint is satisfied, and a strictly positive real otherwise.

source


# Constraints.conceptFunction.
julia
concept(c::Constraint)

Return the concept (function) of constraint c. concept(c::Constraint, x...; param = nothing) Apply the concept of c to values x and optionally param.

source

julia
concept(s::Symbol, args...; kargs...)

Return the concept of the constraint s applied to args and kargs. This is a shortcut for concept(USUAL_CONSTRAINTS[s])(args...; kargs...).

Arguments

  • s::Symbol: the constraint name.

  • args...: the arguments to apply the concept to.

  • kargs...: the keyword arguments to apply the concept to.

Example

julia
concept(:all_different, [1, 2, 3])

source


# Constraints.error_fFunction.
julia
error_f(c::Constraint)

Return the error function of constraint c. error_f(c::Constraint, x; param = nothing) Apply the error function of c to values x and optionally param.

source


# Constraints.argsFunction.
julia
args(c::Constraint)

Return the expected length restriction of the arguments in a constraint c. The value nothing indicates that any strictly positive number of value is accepted.

source


# Constraints.params_lengthFunction.
julia
params_length(c::Constraint)

Return the expected length restriction of the arguments in a constraint c. The value nothing indicates that any strictly positive number of parameters is accepted.

source


# Constraints.symmetriesFunction.
julia
symmetries(c::Constraint)

Return the list of symmetries of c.

source


# Constraints.make_errorFunction.
julia
make_error(symb::Symbol)

Create a function that returns an error based on the predicate of the constraint identified by the symbol provided.

Arguments

  • symb::Symbol: The symbol used to determine the error function to be returned. The function first checks if a predicate with the prefix "icn_" exists in the Constraints module. If it does, it returns that function. If it doesn't, it checks for a predicate with the prefix "error_". If that exists, it returns that function. If neither exists, it returns a function that evaluates the predicate with the prefix "concept_" and returns the negation of its result cast to Float64.

Returns

  • Function: A function that takes in a variable x and an arbitrary number of parameters params. The function returns a Float64.

Examples

julia
e = make_error(:all_different)
 e([1, 2, 3]) # Returns 0.0
-e([1, 1, 3]) # Returns 1.0

source


# Constraints.shrink_conceptFunction.
julia
shrink_concept(s)

Simply delete the concept_ part of symbol or string starting with it. TODO: add a check with a warning if s starts with something different.

source


# Constraints.concept_vs_errorFunction.
julia
concept_vs_error(c, e, args...; kargs...)

Compare the results of a concept function and an error function for the same inputs. It is mainly used for testing purposes.

Arguments

  • c: The concept function.

  • e: The error function.

  • args...: Positional arguments to be passed to both the concept and error functions.

  • kargs...: Keyword arguments to be passed to both the concept and error functions.

Returns

  • Boolean: Returns true if the result of the concept function is not equal to whether the result of the error function is greater than 0.0. Otherwise, it returns false.

Examples

julia
concept_vs_error(all_different, make_error(:all_different), [1, 2, 3]) # Returns false

source


Usual constraints (based on and including XCSP3-core categories)

# Constraints.USUAL_CONSTRAINTSConstant.
julia
USUAL_CONSTRAINTS::Dict

Dictionary that contains all the usual constraints defined in Constraint.jl. It is based on XCSP3-core specifications available at https://arxiv.org/abs/2009.00514

Adding a new constraint is as simple as defining a new function with the same name as the constraint and using the @usual macro to define it. The macro will take care of adding the new constraint to the USUAL_CONSTRAINTS dictionary.

Example

julia
@usual concept_all_different(x; vals=nothing) = xcsp_all_different(list=x, except=vals)

source


# Constraints.describeFunction.
julia
describe(constraints::Dict{Symbol,Constraint}=USUAL_CONSTRAINTS; width=150)

Return a pretty table with the description of the constraints in constraints.

Arguments

  • constraints::Dict{Symbol,Constraint}: dictionary of constraints to describe. Default is USUAL_CONSTRAINTS.

  • width::Int: width of the table.

Example

julia
describe()

source


# ConstraintCommons.extract_parametersFunction.
julia
extract_parameters(m::Union{Method, Function}; parameters)

Extracts the intersection between the kargs of m and parameters (defaults to USUAL_CONSTRAINT_PARAMETERS).

source

julia
extract_parameters(s::Symbol, constraints_dict=USUAL_CONSTRAINTS; parameters=ConstraintCommons.USUAL_CONSTRAINT_PARAMETERS)

Return the parameters of the constraint s in constraints_dict.

Arguments

  • s::Symbol: the constraint name.

  • constraints_dict::Dict{Symbol,Constraint}: dictionary of constraints. Default is USUAL_CONSTRAINTS.

  • parameters::Vector{Symbol}: vector of parameters. Default is ConstraintCommons.USUAL_CONSTRAINT_PARAMETERS.

Example

julia
extract_parameters(:all_different)

source


# Constraints.@usualMacro.
julia
usual(ex::Expr)

This macro is used to define a new constraint or update an existing one in the USUAL_CONSTRAINTS dictionary. It takes an expression ex as input, which represents the definition of a constraint.

Here's a step-by-step explanation of what the macro does:

  1. It first extracts the symbol of the concept from the input expression. This symbol is expected to be the first argument of the first argument of the expression. For example, if the expression is @usual all_different(x; y=1), the symbol would be :all_different.

  2. It then calls the shrink_concept function on the symbol to get a simplified version of the concept symbol.

  3. It initializes a dictionary defaults to store whether each keyword argument of the concept has a default value or not.

  4. It checks if the expression has more than two arguments. If it does, it means that there are keyword arguments present. It then loops over these keyword arguments. If a keyword argument is a symbol, it means it doesn't have a default value, so it adds an entry to the defaults dictionary with the keyword argument as the key and false as the value. If a keyword argument is not a symbol, it means it has a default value, so it adds an entry to the defaults dictionary with the keyword argument as the key and true as the value.

  5. It calls the make_error function on the simplified concept symbol to generate an error function for the constraint.

  6. It evaluates the input expression to get the concept function.

  7. It checks if the USUAL_CONSTRAINTS dictionary already contains an entry for the simplified concept symbol. If it does, it adds the defaults dictionary to the parameters of the existing constraint. If it doesn't, it creates a new constraint with the concept function, a description, the error function, and the defaults dictionary as the parameters, and adds it to the USUAL_CONSTRAINTS dictionary.

This macro is used to make it easier to define and update constraints in a consistent and possibly automated way.

Arguments

  • ex::Expr: expression to parse.

Example

julia
@usual concept_all_different(x; vals=nothing) = xcsp_all_different(list=x, except=vals)

source


# Constraints.constraints_parametersFunction.
julia
constraints_parameters(C=USUAL_CONSTRAINTS)

Return a pretty table with the parameters of the constraints in C.

Arguments

  • C::Dict{Symbol,Constraint}: dictionary of constraints. Default is USUAL_CONSTRAINTS.

Example

julia
constraints_parameters()

source


# Constraints.constraints_descriptionsFunction.
julia
constraints_descriptions(C=USUAL_CONSTRAINTS)

Return a pretty table with the descriptions of the constraints in C.

Arguments

  • C::Dict{Symbol,Constraint}: dictionary of constraints. Default is USUAL_CONSTRAINTS.

Example

julia
constraints_descriptions()

source


# Constraints.conceptFunction.
julia
concept(c::Constraint)

Return the concept (function) of constraint c. concept(c::Constraint, x...; param = nothing) Apply the concept of c to values x and optionally param.

source

julia
concept(s::Symbol, args...; kargs...)

Return the concept of the constraint s applied to args and kargs. This is a shortcut for concept(USUAL_CONSTRAINTS[s])(args...; kargs...).

Arguments

  • s::Symbol: the constraint name.

  • args...: the arguments to apply the concept to.

  • kargs...: the keyword arguments to apply the concept to.

Example

julia
concept(:all_different, [1, 2, 3])

source


- +e([1, 1, 3]) # Returns 1.0

source


# Constraints.shrink_conceptFunction.
julia
shrink_concept(s)

Simply delete the concept_ part of symbol or string starting with it. TODO: add a check with a warning if s starts with something different.

source


# Constraints.concept_vs_errorFunction.
julia
concept_vs_error(c, e, args...; kargs...)

Compare the results of a concept function and an error function for the same inputs. It is mainly used for testing purposes.

Arguments

  • c: The concept function.

  • e: The error function.

  • args...: Positional arguments to be passed to both the concept and error functions.

  • kargs...: Keyword arguments to be passed to both the concept and error functions.

Returns

  • Boolean: Returns true if the result of the concept function is not equal to whether the result of the error function is greater than 0.0. Otherwise, it returns false.

Examples

julia
concept_vs_error(all_different, make_error(:all_different), [1, 2, 3]) # Returns false

source


Usual constraints (based on and including XCSP3-core categories)

# Constraints.USUAL_CONSTRAINTSConstant.
julia
USUAL_CONSTRAINTS::Dict

Dictionary that contains all the usual constraints defined in Constraint.jl. It is based on XCSP3-core specifications available at https://arxiv.org/abs/2009.00514

Adding a new constraint is as simple as defining a new function with the same name as the constraint and using the @usual macro to define it. The macro will take care of adding the new constraint to the USUAL_CONSTRAINTS dictionary.

Example

julia
@usual concept_all_different(x; vals=nothing) = xcsp_all_different(list=x, except=vals)

source


# Constraints.describeFunction.
julia
describe(constraints::Dict{Symbol,Constraint}=USUAL_CONSTRAINTS; width=150)

Return a pretty table with the description of the constraints in constraints.

Arguments

  • constraints::Dict{Symbol,Constraint}: dictionary of constraints to describe. Default is USUAL_CONSTRAINTS.

  • width::Int: width of the table.

Example

julia
describe()

source


# ConstraintCommons.extract_parametersFunction.
julia
extract_parameters(m::Union{Method, Function}; parameters)

Extracts the intersection between the kargs of m and parameters (defaults to USUAL_CONSTRAINT_PARAMETERS).

source

julia
extract_parameters(s::Symbol, constraints_dict=USUAL_CONSTRAINTS; parameters=ConstraintCommons.USUAL_CONSTRAINT_PARAMETERS)

Return the parameters of the constraint s in constraints_dict.

Arguments

  • s::Symbol: the constraint name.

  • constraints_dict::Dict{Symbol,Constraint}: dictionary of constraints. Default is USUAL_CONSTRAINTS.

  • parameters::Vector{Symbol}: vector of parameters. Default is ConstraintCommons.USUAL_CONSTRAINT_PARAMETERS.

Example

julia
extract_parameters(:all_different)

source


# Constraints.@usualMacro.
julia
usual(ex::Expr)

This macro is used to define a new constraint or update an existing one in the USUAL_CONSTRAINTS dictionary. It takes an expression ex as input, which represents the definition of a constraint.

Here's a step-by-step explanation of what the macro does:

  1. It first extracts the symbol of the concept from the input expression. This symbol is expected to be the first argument of the first argument of the expression. For example, if the expression is @usual all_different(x; y=1), the symbol would be :all_different.

  2. It then calls the shrink_concept function on the symbol to get a simplified version of the concept symbol.

  3. It initializes a dictionary defaults to store whether each keyword argument of the concept has a default value or not.

  4. It checks if the expression has more than two arguments. If it does, it means that there are keyword arguments present. It then loops over these keyword arguments. If a keyword argument is a symbol, it means it doesn't have a default value, so it adds an entry to the defaults dictionary with the keyword argument as the key and false as the value. If a keyword argument is not a symbol, it means it has a default value, so it adds an entry to the defaults dictionary with the keyword argument as the key and true as the value.

  5. It calls the make_error function on the simplified concept symbol to generate an error function for the constraint.

  6. It evaluates the input expression to get the concept function.

  7. It checks if the USUAL_CONSTRAINTS dictionary already contains an entry for the simplified concept symbol. If it does, it adds the defaults dictionary to the parameters of the existing constraint. If it doesn't, it creates a new constraint with the concept function, a description, the error function, and the defaults dictionary as the parameters, and adds it to the USUAL_CONSTRAINTS dictionary.

This macro is used to make it easier to define and update constraints in a consistent and possibly automated way.

Arguments

  • ex::Expr: expression to parse.

Example

julia
@usual concept_all_different(x; vals=nothing) = xcsp_all_different(list=x, except=vals)

source


# Constraints.constraints_parametersFunction.
julia
constraints_parameters(C=USUAL_CONSTRAINTS)

Return a pretty table with the parameters of the constraints in C.

Arguments

  • C::Dict{Symbol,Constraint}: dictionary of constraints. Default is USUAL_CONSTRAINTS.

Example

julia
constraints_parameters()

source


# Constraints.constraints_descriptionsFunction.
julia
constraints_descriptions(C=USUAL_CONSTRAINTS)

Return a pretty table with the descriptions of the constraints in C.

Arguments

  • C::Dict{Symbol,Constraint}: dictionary of constraints. Default is USUAL_CONSTRAINTS.

Example

julia
constraints_descriptions()

source


# Constraints.conceptFunction.
julia
concept(c::Constraint)

Return the concept (function) of constraint c. concept(c::Constraint, x...; param = nothing) Apply the concept of c to values x and optionally param.

source

julia
concept(s::Symbol, args...; kargs...)

Return the concept of the constraint s applied to args and kargs. This is a shortcut for concept(USUAL_CONSTRAINTS[s])(args...; kargs...).

Arguments

  • s::Symbol: the constraint name.

  • args...: the arguments to apply the concept to.

  • kargs...: the keyword arguments to apply the concept to.

Example

julia
concept(:all_different, [1, 2, 3])

source


+ \ No newline at end of file diff --git a/dev/constraints/counting_summing_constraints.html b/dev/constraints/counting_summing_constraints.html index 5d5aae1..79747b9 100644 --- a/dev/constraints/counting_summing_constraints.html +++ b/dev/constraints/counting_summing_constraints.html @@ -5,19 +5,19 @@ Constraints.jl: Streamlining Constraint Definition and Integration in Julia | Julia Constraints - - + + - + - - - + + + -
Skip to content

Constraints.jl: Streamlining Constraint Definition and Integration in Julia

Counting and Summing Constraints

# Constraints.xcsp_sumFunction.
julia
xcsp_sum(list, coeffs, condition)

Return true if the sum of the variables in list satisfies the given condition, false otherwise.

Arguments

  • list::Vector{Int}: list of values to check.

  • coeffs::Vector{Int}: list of coefficients to use.

  • condition: condition to satisfy.

Variants

  • :sum: Global constraint ensuring that the sum of the variables in x satisfies a given condition.
julia
concept(:sum, x; op===, pair_vars=ones(x), val)
+    
Skip to content

Constraints.jl: Streamlining Constraint Definition and Integration in Julia

Counting and Summing Constraints

# Constraints.xcsp_sumFunction.
julia
xcsp_sum(list, coeffs, condition)

Return true if the sum of the variables in list satisfies the given condition, false otherwise.

Arguments

  • list::Vector{Int}: list of values to check.

  • coeffs::Vector{Int}: list of coefficients to use.

  • condition: condition to satisfy.

Variants

  • :sum: Global constraint ensuring that the sum of the variables in x satisfies a given condition.
julia
concept(:sum, x; op===, pair_vars=ones(x), val)
 concept(:sum)(x; op===, pair_vars=ones(x), val)

Examples

julia
c = concept(:sum)
 
 c([1, 2, 3, 4, 5]; op===, val=15)
@@ -55,8 +55,8 @@
 cc([8, 5, 10, 10]; vals=[2 0 1; 5 1 3; 10 2 3])
 
 co = concept(:cardinality_open)
-co([8, 5, 10, 10]; vals=[2 0 1; 5 1 3; 10 2 3])

source


- +co([8, 5, 10, 10]; vals=[2 0 1; 5 1 3; 10 2 3])

source


+ \ No newline at end of file diff --git a/dev/constraints/elementary_constraints.html b/dev/constraints/elementary_constraints.html index 8296305..40cfcfe 100644 --- a/dev/constraints/elementary_constraints.html +++ b/dev/constraints/elementary_constraints.html @@ -5,24 +5,24 @@ Constraints.jl: Streamlining Constraint Definition and Integration in Julia | Julia Constraints - - + + - + - - - + + + -
Skip to content

Constraints.jl: Streamlining Constraint Definition and Integration in Julia

Elementary Constraints

# Constraints.xcsp_instantiationFunction.
julia
xcsp_instantiation(; list, values)

Return true if the instantiation constraint is satisfied, false otherwise. The instantiation constraint is a global constraint used in constraint programming that ensures that a list of variables takes on a specific set of values in a specific order.

Arguments

  • list::AbstractVector: list of values to check.

  • values::AbstractVector: list of values to check against.

Variants

  • :instantiation: The instantiation constraint is a global constraint used in constraint programming that ensures that a list of variables takes on a specific set of values in a specific order.
julia
concept(:instantiation, x; pair_vars)
+    
Skip to content

Constraints.jl: Streamlining Constraint Definition and Integration in Julia

Elementary Constraints

# Constraints.xcsp_instantiationFunction.
julia
xcsp_instantiation(; list, values)

Return true if the instantiation constraint is satisfied, false otherwise. The instantiation constraint is a global constraint used in constraint programming that ensures that a list of variables takes on a specific set of values in a specific order.

Arguments

  • list::AbstractVector: list of values to check.

  • values::AbstractVector: list of values to check against.

Variants

  • :instantiation: The instantiation constraint is a global constraint used in constraint programming that ensures that a list of variables takes on a specific set of values in a specific order.
julia
concept(:instantiation, x; pair_vars)
 concept(:instantiation)(x; pair_vars)

Examples

julia
c = concept(:instantiation)
 
 c([1, 2, 3, 4, 5]; pair_vars=[1, 2, 3, 4, 5])
-c([1, 2, 3, 4, 5]; pair_vars=[1, 2, 3, 4, 6])

source


- +c([1, 2, 3, 4, 5]; pair_vars=[1, 2, 3, 4, 6])

source


+ \ No newline at end of file diff --git a/dev/constraints/generic_constraints.html b/dev/constraints/generic_constraints.html index dde3da2..45e9c03 100644 --- a/dev/constraints/generic_constraints.html +++ b/dev/constraints/generic_constraints.html @@ -5,19 +5,19 @@ Generic Constraints | Julia Constraints - - + + - + - - - + + + -
Skip to content

Generic Constraints

In the XCSP³-core standard, generic constraints are categorized into two main types: intention and extension constraints.

Intention Constraints

These are constraints that are defined by a logical expression or a function. They are called intentional because they are defined by the property they satisfy. For example, a constraint that specifies that a variable x must be less than a variable y could be defined intentionally as x<y.

Note that the intention constraint is not directly available through the JC-API in Constraints.jl. It is designed as such since defining a constraint through a predicate is the natural way.

We provide a straightforward example through the :dist_different constraint on how to define and add such a constraint in the USUAL_CONSTRAINTS collection.

Higher level modeling language such as JuMP should provide a Intention interface.

Defining an intention constraint in JC-API

We use the dist_different constraint to illustrate how to define an intention constraint in Constraints.jl. The dist_different constraint ensures that the distances between marks x on a ruler are unique.

|x[1]x[2]||x[3]x[4]|

The constraint is then added to the usual constraints collection.

julia
const description_dist_different = """
+    
Skip to content

Generic Constraints

In the XCSP³-core standard, generic constraints are categorized into two main types: intention and extension constraints.

Intention Constraints

These are constraints that are defined by a logical expression or a function. They are called intentional because they are defined by the property they satisfy. For example, a constraint that specifies that a variable x must be less than a variable y could be defined intentionally as x<y.

Note that the intention constraint is not directly available through the JC-API in Constraints.jl. It is designed as such since defining a constraint through a predicate is the natural way.

We provide a straightforward example through the :dist_different constraint on how to define and add such a constraint in the USUAL_CONSTRAINTS collection.

Higher level modeling language such as JuMP should provide a Intention interface.

Defining an intention constraint in JC-API

We use the dist_different constraint to illustrate how to define an intention constraint in Constraints.jl. The dist_different constraint ensures that the distances between marks x on a ruler are unique.

|x[1]x[2]||x[3]x[4]|

The constraint is then added to the usual constraints collection.

julia
const description_dist_different = """
 Ensures that the distances between marks on the ruler are unique.
 """
 
@@ -28,7 +28,7 @@
 @usual concept_dist_different(x) = xcsp_intension(
     list = x,
     predicate = predicate_dist_different
-)

Please check the section dedicated to the Golomb Ruler problem to see a use for this constraint. <!– TODO: Golomb Ruler –>

APIs

Note that the intension constraint is not directly available through the JC-API in Constraints.jl. It is designed as such since defining a constraint through a predicate is the natural way.

We provide here a usage example for the :dist_different constraint, previously added to the USUAL_CONSTRAINTS collection.

Higher level modeling language such as JuMP should provide an Intension interface.

julia
using Constraints
+)

Please check the section dedicated to the Golomb Ruler problem to see a use for this constraint. <!– TODO: Golomb Ruler –>

APIs

Note that the intension constraint is not directly available through the JC-API in Constraints.jl. It is designed as such since defining a constraint through a predicate is the natural way.

We provide here a usage example for the :dist_different constraint, previously added to the USUAL_CONSTRAINTS collection.

Higher level modeling language such as JuMP should provide an Intension interface.

julia
using Constraints
 
 concept(:dist_different, x)
 concept(:dist_different)(x)
julia
# Defines the DistDifferent constraint
@@ -49,7 +49,7 @@
 
 @info value.(X)
 
-# Note that this example gives a solution for the constraint within the interval 0:10
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
+# Note that this example gives a solution for the constraint within the interval 0:10
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
 
 concept(:all_equal, [1,1,1,2]) #false
 concept(:all_equal, [1,1,1,1]) #true
julia
using Constraints
@@ -67,7 +67,7 @@
 JuMP.optimize!(model)
 @info "All Equal" value.(X)
 
-# Note that this example gives a solution for the all_equal constraint.
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
+# Note that this example gives a solution for the all_equal constraint.
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
 
 concept(:minimum, [1,1,1,2], val = 1, op = ==) # true
 concept(:minimum, [1,2,4,4], val = 2, op = ==) # false
julia
using Constraints
@@ -86,7 +86,7 @@
 JuMP.optimize!(model)
 @info "Minimum" value.(X)
 
-# Note that this example gives a solution for the minimum constraint.
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
+# Note that this example gives a solution for the minimum constraint.
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
 
 concept(:maximum, [1,1,1,2], val = 2, op = ==) # true
 concept(:maximum, [1,2,4,4], val = 2, op = ==) # false
julia
using Constraints
@@ -103,7 +103,7 @@
 @variable(model, 1X[1:5]5, Int)
 @constraint(model, X in Maximum(; op = ==, val = 5))
 optimize!(model)
-@info "Maximum" value.(X)
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
+@info "Maximum" value.(X)
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
 
 concept(:all_different, [1,1,1,2]) # false
 concept(:all_different, [1,9,3,2]) # true
julia
using Constraints
@@ -122,7 +122,7 @@
 JuMP.optimize!(model)
 @info "All Different" value.(X) value.(Y)
 
-# Note that this example gives a solution for the all_different constraint.
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
+# Note that this example gives a solution for the all_different constraint.
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
 
 concept(:count, [1,1,1,2], vals = [1, 1, 1, 2], op = ==, val = 4) # true
 concept(:count, [1,1,1,2], vals = [1, 1, 1, 2], op = ==, val = 5) # false
@@ -156,7 +156,7 @@
 @constraint(model, X_at_most in AtMost(vals = [1, 2], val = 1))
 @constraint(model, X_exactly in Exactly(vals = [1, 2], val = 2))
 JuMP.optimize!(model)
-@info "Count" value.(X) value.(X_at_least) value.(X_at_most) value.(X_exactly)
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
+@info "Count" value.(X) value.(X_at_least) value.(X_at_most) value.(X_exactly)
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
 
 @info concept(:sum, [1, 2, 3, 4, 5]; op = ==, val=15)
 @info concept(:sum, [1, 2, 3, 4, 5]; op = ==, val=2)
@@ -178,7 +178,7 @@
 @constraint(model, X in Sum(; op = ==, val = 15))
 @constraint(model, Y in Sum(; op = <=, val = 10))
 JuMP.optimize!(model)
-@info "Sum" value.(X) value.(Y)
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
+@info "Sum" value.(X) value.(Y)
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
 
 @info concept(:nvalues, [1, 2, 3, 4, 5]; op = ==, val = 5)
 @info concept(:nvalues, [1, 2, 3, 4, 5]; op = ==, val = 2)
@@ -202,7 +202,7 @@
 @constraint(model, Y in NValues(; op = ==, val = 2))
 @constraint(model, Z in NValues(; op = <=, val = 5, vals = [1, 2]))
 JuMP.optimize!(model)
-@info "NValues" value.(X) value.(Y) value.(Z)
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
+@info "NValues" value.(X) value.(Y) value.(Z)
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
 
 # [v1, v2, v3], [v1, a1, a2; v2, b1, b2; v3, c1, c2] means v1 occurs between a1 and a2 times in the first array, similar for v2 and v3. 
 	
@@ -229,7 +229,7 @@
 @constraint(model, Y in CardinalityOpen(; vals = [2 0 1; 5 1 3; 10 2 3]))
 @constraint(model, Z in CardinalityClosed(; vals = [2 0 1; 5 1 3; 10 2 3]))
 JuMP.optimize!(model)
-@info "Cardinality" value.(X) value.(Y) value.(Z)
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
+@info "Cardinality" value.(X) value.(Y) value.(Z)
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
 
 @info concept(:ordered, [1, 2, 3, 4, 4]; op=≤)
 @info concept(:ordered, [1, 2, 3, 3, 5]; op=<)
@@ -249,7 +249,7 @@
 @constraint(model, X in Ordered())
 @constraint(model, Y in Ordered(; op = <))
 JuMP.optimize!(model)
-@info "Ordered" value.(X) value.(Y)
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
+@info "Ordered" value.(X) value.(Y)
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
 
 @info concept(:cumulative, [1, 2, 3, 4, 5]; val = 1)
 @info concept(:cumulative, [1, 2, 2, 4, 5]; val = 1)
@@ -276,7 +276,7 @@
 @constraint(model,
     Z in Cumulative(; pair_vars = [3 2 5 4 2; 1 2 1 1 3], op = <, val = 5))
 JuMP.optimize!(model)
-@info "Cumulative" value.(X) value.(Y) value.(Z)
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
+@info "Cumulative" value.(X) value.(Y) value.(Z)
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
 
 @info concept(:channel, [2, 1, 4, 3])
 @info concept(:channel, [1, 2, 3, 4])
@@ -301,7 +301,7 @@
 @constraint(model, Y in CBLS.Channel(; dim = 2))
 @constraint(model, Z in CBLS.Channel(; id = 3))
 JuMP.optimize!(model)
-@info "Channel" value.(X) value.(Y) value.(Z)
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
+@info "Channel" value.(X) value.(Y) value.(Z)
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
 
 @info concept(:no_overlap, [1, 2, 3, 4, 5])
 @info concept(:no_overlap, [1, 2, 3, 4, 1])
@@ -327,7 +327,7 @@
 @constraint(model,
     Z in NoOverlap(; pair_vars = [2, 4, 1, 4, 2, 3, 5, 1, 2, 3, 3, 2], dim = 3))
 JuMP.optimize!(model)
-@info "NoOverlap" value.(X) value.(Y) value.(Z)
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
+@info "NoOverlap" value.(X) value.(Y) value.(Z)
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
 
 @info concept(:element, [1, 2, 3, 4, 5]; id=1, val=1)
 @info concept(:element, [1, 2, 3, 4, 5]; id=1, val=2)
@@ -351,7 +351,7 @@
 @constraint(model, Y in Element(; id = 1, val = 1))
 @constraint(model, Z in Element(; id = 2, val = 2))
 JuMP.optimize!(model)
-@info "Element" value.(X) value.(Y) value.(Z)
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
julia
using Constraints
julia
using CBLS, JuMP
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
julia
using Constraints
julia
using CBLS, JuMP
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
julia
using Constraints
julia
using CBLS, JuMP
julia
# TODO: How to handle intention in JuMP/MOI

Test for DocumenterVitePress Issue

julia
c = concept(:dist_different)
+@info "Element" value.(X) value.(Y) value.(Z)
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
julia
using Constraints
julia
using CBLS, JuMP
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
julia
using Constraints
julia
using CBLS, JuMP
julia
# TODO: How to handle intention in JuMP/MOI
julia
using Constraints
julia
using Constraints
julia
using CBLS, JuMP
julia
# TODO: How to handle intention in JuMP/MOI

Test for DocumenterVitePress Issue

julia
c = concept(:dist_different)
 c([1, 2, 3, 3]) && !c([1, 2, 3, 4])
true
julia
c = concept(:dist_different)
 c([1, 2, 3, 3]) && !c([1, 2, 3, 4])
true

Specific documentation

# Constraints.xcsp_intensionFunction.
julia
xcsp_intension(list, predicate)

An intensional constraint is usually defined from a predicate over list. As such it encompass any generic constraint.

Arguments

  • list::Vector{Int}: A list of variables

  • predicate::Function: A predicate over list

Variants

  • :dist_different: A constraint ensuring that the distances between marks on the ruler are unique. Specifically, it checks that the distance between x[1] and x[2], and the distance between x[3] and x[4], are different. This constraint is fundamental in ensuring the validity of a Golomb ruler, where no two pairs of marks should have the same distance between them.
julia
concept(:dist_different, x)
 concept(:dist_different)(x)

Examples

@example
2 + 2
@example
2 + 2
@example
using Constraints # hide
@@ -370,8 +370,8 @@
 c([1, 2, 3, 4, 5]; pair_vars=[[1, 2, 3, 4, 5]])
 
 c = concept(:conflicts)
-c([1, 2, 3, 4, 5]; pair_vars=[[1, 2, 1, 4, 5], [1, 2, 3, 5, 5]])

source


- +c([1, 2, 3, 4, 5]; pair_vars=[[1, 2, 1, 4, 5], [1, 2, 3, 5, 5]])

source


+ \ No newline at end of file diff --git a/dev/constraints/graph_constraints.html b/dev/constraints/graph_constraints.html index 8f13d82..42d4c97 100644 --- a/dev/constraints/graph_constraints.html +++ b/dev/constraints/graph_constraints.html @@ -5,26 +5,26 @@ Constraints.jl: Streamlining Constraint Definition and Integration in Julia | Julia Constraints - - + + - + - - - + + + -
Skip to content

Constraints.jl: Streamlining Constraint Definition and Integration in Julia

Constraints on Graphs

# Constraints.xcsp_circuitFunction.
julia
xcsp_circuit(; list, size)

Return true if the circuit constraint is satisfied, false otherwise. The circuit constraint is a global constraint used in constraint programming, often in routing problems. It ensures that the values of a list of variables form a circuit, i.e., a sequence where each value is the index of the next value in the sequence, and the sequence eventually loops back to the start.

Arguments

  • list::AbstractVector: list of values to check.

  • size::Int: size of the circuit.

Variants

  • :circuit: The circuit constraint is a global constraint used in constraint programming, often in routing problems. It ensures that the values of a list of variables form a circuit, i.e., a sequence where each value is the index of the next value in the sequence, and the sequence eventually loops back to the start.
julia
concept(:circuit, x; op, val)
+    
Skip to content

Constraints.jl: Streamlining Constraint Definition and Integration in Julia

Constraints on Graphs

# Constraints.xcsp_circuitFunction.
julia
xcsp_circuit(; list, size)

Return true if the circuit constraint is satisfied, false otherwise. The circuit constraint is a global constraint used in constraint programming, often in routing problems. It ensures that the values of a list of variables form a circuit, i.e., a sequence where each value is the index of the next value in the sequence, and the sequence eventually loops back to the start.

Arguments

  • list::AbstractVector: list of values to check.

  • size::Int: size of the circuit.

Variants

  • :circuit: The circuit constraint is a global constraint used in constraint programming, often in routing problems. It ensures that the values of a list of variables form a circuit, i.e., a sequence where each value is the index of the next value in the sequence, and the sequence eventually loops back to the start.
julia
concept(:circuit, x; op, val)
 concept(:circuit)(x; op, val)

Examples

julia
c = concept(:circuit)
 
 c([1, 2, 3, 4])
 c([2, 3, 4, 1])
 c([2, 3, 1, 4]; op = ==, val = 3)
-c([4, 3, 1, 3]; op = >, val = 0)

source


- +c([4, 3, 1, 3]; op = >, val = 0)

source


+ \ No newline at end of file diff --git a/dev/constraints/intro.html b/dev/constraints/intro.html index 4f8c07b..0d7a541 100644 --- a/dev/constraints/intro.html +++ b/dev/constraints/intro.html @@ -5,20 +5,20 @@ Introduction to basics constraint-based modeling tools | Julia Constraints - - + + - + - - - + + + -
Skip to content

Introduction to basics constraint-based modeling tools

Constraint programming (CP) is a powerful paradigm for solving combinatorial problems, and Julia Constraints provides an efficient and flexible framework for developing constraint-based models.

Domain-defined variables

In CP, variables are defined through their domain. ConstraintDomains.jl supports various types of domains such as discrete ones (sets, range, etc.), or continuous intervals, and custom domains.

Constraints.jl: A versatile API

It implements a wide range of generic and core constraints, ensuring compatibility with XCSP3-core standards and providing a user-friendly interface. It includes features extracted from the learning blocks of Julia Constraints to leverage most of each constraint characteristics.

Models Through ConstraintModels.jl

The ConstraintModels.jl catalog offers a collection of predefined models and templates for constructing complex constraint satisfaction problems (CSPs) and optimization models. This resource provides reusable components to streamline the modeling process.

Contributions with new models are more than welcome!

Internal Aspects

Several internal components are crucial for the efficient functioning of Julia Constraints. ConstraintCommons.jl provides shared functionalities and utilities used across different parts of the framework, contributing to its robust performance and extensibility. However, it is unlikely to be of direct use to most users.

- +
Skip to content

Introduction to basics constraint-based modeling tools

Constraint programming (CP) is a high-level paradigm for solving combinatorial problems, and Julia Constraints provides an efficient and flexible framework for developing constraint-based models.

Terminology

Warning

Terminology in Optimization varies strongly between different methods and communities. In this doc we try to be consistent with the following principles (in bold).

  • Constraint: A general mathematical predicate involving variables.

  • Constraint Instantiation: The application of a constraint to specific variables.

  • Configuration: A specific assignment of values to the variables.

  • Constraint Satisfaction/Violation: Whether a configuration meets or fails to meet a constraint.

Constraint

Definition: A constraint is a formal mathematical statement that expresses a condition or a relation between a set of variables. It can be seen as a predicate that the variables must satisfy.

Example: Consider the constraint x+y10. This constraint involves two variables, x and y, and specifies that their sum must not exceed 10.

Constraint Instantiation

Definition: A constraint instantiation refers to a specific application of a generic constraint to a particular subset of variables from a problem. It is essentially the constraint applied with the actual variables of the problem.

Example: Given the generic constraint x+y10, if we have variables x1 and x2 in our problem, then the instantiated constraint would be x1+x210.

Configuration

Definition: A configuration, also known as an assignment, is a specific set of values assigned to the variables in their respective domains. It represents a possible state of the variables.

Example: For variables x and y with domains [0,5], a configuration could be x=3 and y=2.

Constraint Satisfaction or Violation by a Configuration

Definition: This refers to whether a specific configuration (set of variable assignments) satisfies or violates a given constraint instantiation. A constraint is satisfied if the configuration makes the constraint true; otherwise, it is violated (false).

Example: Given the constraint instantiation x+y10 and the configuration x=3 and y=2, the constraint is satisfied because 3+2=5, which is less than or equal to 10. However, for the configuration x=6 and y=5, the constraint is violated because 6+5=11, which exceeds 10.

Domain-defined variables

In CP, variables are defined through their domain. ConstraintDomains.jl supports various types of domains such as discrete ones (sets, range, etc.), or continuous intervals, and custom domains.

Constraints.jl: A versatile API

It implements a wide range of generic and core constraints, ensuring compatibility with XCSP3-core standards and providing a user-friendly interface. It includes features extracted from the learning blocks of Julia Constraints to leverage most of each constraint characteristics.

Models Through ConstraintModels.jl

The ConstraintModels.jl catalog offers a collection of predefined models and templates for constructing complex constraint satisfaction problems (CSPs) and optimization models. This resource provides reusable components to streamline the modeling process.

Contributions with new models are more than welcome!

Internal Aspects

Several internal components are crucial for the efficient functioning of Julia Constraints. ConstraintCommons.jl provides shared functionalities and utilities used across different parts of the framework, contributing to its robust performance and extensibility. However, it is unlikely to be of direct use to most users.

+ \ No newline at end of file diff --git a/dev/constraints/language_constraints.html b/dev/constraints/language_constraints.html index 007456f..a5c1e0f 100644 --- a/dev/constraints/language_constraints.html +++ b/dev/constraints/language_constraints.html @@ -5,19 +5,19 @@ Constraints.jl: Streamlining Constraint Definition and Integration in Julia | Julia Constraints - - + + - + - - - + + + -
Skip to content

Constraints.jl: Streamlining Constraint Definition and Integration in Julia

Constraints defined from Languages

# Constraints.xcsp_regularFunction.
julia
xcsp_regular(; list, automaton)
+    
Skip to content

Constraints.jl: Streamlining Constraint Definition and Integration in Julia

Constraints defined from Languages

# Constraints.xcsp_regularFunction.
julia
xcsp_regular(; list, automaton)
 
 Ensures that a sequence `x` (interpreted as a word) is accepted by the regular language represented by a given automaton. This constraint verifies the compliance of `x` with the language rules encoded within the `automaton` parameter, which must be an instance of `<:AbstractAutomaton`.

Arguments

  • list::Vector{Int}: A list of variables

  • automaton<:AbstractAutomaton: An automaton representing the regular language

Variants

  • :regular: Ensures that a sequence x (interpreted as a word) is accepted by the regular language represented by a given automaton. This constraint verifies the compliance of x with the language rules encoded within the automaton parameter, which must be an instance of <:AbstractAutomaton.
julia
concept(:regular, x; language)
 concept(:regular)(x; language)

Examples

julia
c = concept(:regular)
@@ -64,8 +64,8 @@
 c([2,0,0]; language = a)
 c([2,1,2]; language = a)
 c([1,0,2]; language = a)
-c([0,1,2]; language = a)

source


- +c([0,1,2]; language = a)

source


+ \ No newline at end of file diff --git a/dev/constraints/packing_scheduling_constraints.html b/dev/constraints/packing_scheduling_constraints.html index b36457a..8727b2c 100644 --- a/dev/constraints/packing_scheduling_constraints.html +++ b/dev/constraints/packing_scheduling_constraints.html @@ -5,19 +5,19 @@ Constraints.jl: Streamlining Constraint Definition and Integration in Julia | Julia Constraints - - + + - + - - - + + + -
Skip to content

Constraints.jl: Streamlining Constraint Definition and Integration in Julia

Packing and Scheduling Constraints

# Constraints.xcsp_cumulativeFunction.
julia
xcsp_cumulative(; origins, lengths, heights, condition)

Return true if the cumulative constraint is satisfied, false otherwise. The cumulative constraint is a global constraint used in constraint programming that is often used in scheduling problems. It ensures that for any point in time, the sum of the "heights" of tasks that are ongoing at that time does not exceed a certain limit.

Arguments

  • origins::AbstractVector: list of origins of the tasks.

  • lengths::AbstractVector: list of lengths of the tasks.

  • heights::AbstractVector: list of heights of the tasks.

  • condition::Tuple: condition to check.

Variants

  • :cumulative: The cumulative constraint is a global constraint used in constraint programming that is often used in scheduling problems. It ensures that for any point in time, the sum of the "heights" of tasks that are ongoing at that time does not exceed a certain limit.
julia
concept(:cumulative, x; pair_vars, op, val)
+    
Skip to content

Constraints.jl: Streamlining Constraint Definition and Integration in Julia

Packing and Scheduling Constraints

# Constraints.xcsp_cumulativeFunction.
julia
xcsp_cumulative(; origins, lengths, heights, condition)

Return true if the cumulative constraint is satisfied, false otherwise. The cumulative constraint is a global constraint used in constraint programming that is often used in scheduling problems. It ensures that for any point in time, the sum of the "heights" of tasks that are ongoing at that time does not exceed a certain limit.

Arguments

  • origins::AbstractVector: list of origins of the tasks.

  • lengths::AbstractVector: list of lengths of the tasks.

  • heights::AbstractVector: list of heights of the tasks.

  • condition::Tuple: condition to check.

Variants

  • :cumulative: The cumulative constraint is a global constraint used in constraint programming that is often used in scheduling problems. It ensures that for any point in time, the sum of the "heights" of tasks that are ongoing at that time does not exceed a certain limit.
julia
concept(:cumulative, x; pair_vars, op, val)
 concept(:cumulative)(x; pair_vars, op, val)

Examples

julia
c = concept(:cumulative)
 
 c([1, 2, 3, 4, 5]; val = 1)
@@ -34,8 +34,8 @@
 c([1, 2, 4, 6, 3]; pair_vars = [1, 1, 1, 3, 1])
 c([1, 2, 4, 6, 3]; pair_vars = [1, 1, 3, 1, 1])
 c([1, 1, 1, 3, 5, 2, 7, 7, 5, 12, 8, 7]; pair_vars = [2, 4, 1, 4 ,2 ,3, 5, 1, 2, 3, 3, 2], dim = 3)
-c([1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4]; pair_vars = [2, 4, 1, 4 ,2 ,3, 5, 1, 2, 3, 3, 2], dim = 3)

source


- +c([1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4]; pair_vars = [2, 4, 1, 4 ,2 ,3, 5, 1, 2, 3, 3, 2], dim = 3)

source


+ \ No newline at end of file diff --git a/dev/cp/advanced.html b/dev/cp/advanced.html index 23e3fb9..88dc07f 100644 --- a/dev/cp/advanced.html +++ b/dev/cp/advanced.html @@ -5,20 +5,20 @@ Advanced Constraint Programming Techniques | Julia Constraints - - + + - + - - - + + + -
Skip to content

Advanced Constraint Programming Techniques

Global Constraints and Their Uses

  • Dive deeper into global constraints and how they simplify complex problems.

Search Strategies and Optimization

  • Discuss various search strategies and their impact on solving CP problems.
- +
Skip to content

Advanced Constraint Programming Techniques

Global Constraints and Their Uses

  • Dive deeper into global constraints and how they simplify complex problems.

Search Strategies and Optimization

  • Discuss various search strategies and their impact on solving CP problems.
+ \ No newline at end of file diff --git a/dev/cp/applications.html b/dev/cp/applications.html index a9e8c7c..a4b8e19 100644 --- a/dev/cp/applications.html +++ b/dev/cp/applications.html @@ -5,20 +5,20 @@ Applying Optimization Methods | Julia Constraints - - + + - + - - - + + + -
Skip to content

Applying Optimization Methods

Case Studies and Real-World Applications

  • Showcase studies where CP and optimization have been successfully applied.

From Theory to Practice

  • Guide readers through the process of formulating and solving an optimization problem from a real-world scenario.
- +
Skip to content

Applying Optimization Methods

Case Studies and Real-World Applications

  • Showcase studies where CP and optimization have been successfully applied.

From Theory to Practice

  • Guide readers through the process of formulating and solving an optimization problem from a real-world scenario.
+ \ No newline at end of file diff --git a/dev/cp/contribution.html b/dev/cp/contribution.html index 9dda60b..aada073 100644 --- a/dev/cp/contribution.html +++ b/dev/cp/contribution.html @@ -5,20 +5,20 @@ Community and Contribution | Julia Constraints - - + + - + - - - + + + -
Skip to content

Community and Contribution

Joining the JuliaConstraint Community

  • Encourage readers to join the community, highlighting how they can contribute and collaborate.

Future Directions

  • Share the vision for JuliaConstraint and upcoming projects or areas of research.
- +
Skip to content

Community and Contribution

Joining the JuliaConstraint Community

  • Encourage readers to join the community, highlighting how they can contribute and collaborate.

Future Directions

  • Share the vision for JuliaConstraint and upcoming projects or areas of research.
+ \ No newline at end of file diff --git a/dev/cp/cp101.html b/dev/cp/cp101.html index 1f3746c..1ee468e 100644 --- a/dev/cp/cp101.html +++ b/dev/cp/cp101.html @@ -5,20 +5,20 @@ Constraint Programming 101 | Julia Constraints - - + + - + - - - + + + -
Skip to content

Constraint Programming 101

What is Constraint Programming?

  • Define CP and its significance in solving combinatorial problems.

Basic Concepts and Terminology

  • Introduce key concepts such as constraints, domains, and variables.

How CP differs from other optimization techniques

  • Contrast with other methods like linear programming and metaheuristics.
- +
Skip to content

Constraint Programming 101

What is Constraint Programming?

  • Define CP and its significance in solving combinatorial problems.

Basic Concepts and Terminology

  • Introduce key concepts such as constraints, domains, and variables.

How CP differs from other optimization techniques

  • Contrast with other methods like linear programming and metaheuristics.
+ \ No newline at end of file diff --git a/dev/cp/ecosystem.html b/dev/cp/ecosystem.html index 653c14b..4e5d658 100644 --- a/dev/cp/ecosystem.html +++ b/dev/cp/ecosystem.html @@ -5,20 +5,20 @@ Exploring JuliaConstraint Packages | Julia Constraints - - + + - + - - - + + + -
Skip to content

Exploring JuliaConstraint Packages

Package Overviews

  • Introduce each package within the JuliaConstraint organization, its purpose, and primary features.

Installation and Getting Started Guides

  • Provide step-by-step instructions for installing and getting started with each package.
- +
Skip to content

Exploring JuliaConstraint Packages

Package Overviews

  • Introduce each package within the JuliaConstraint organization, its purpose, and primary features.

Installation and Getting Started Guides

  • Provide step-by-step instructions for installing and getting started with each package.
+ \ No newline at end of file diff --git a/dev/cp/getting_started.html b/dev/cp/getting_started.html index 1dfc9cc..5c4d8b3 100644 --- a/dev/cp/getting_started.html +++ b/dev/cp/getting_started.html @@ -5,28 +5,28 @@ Getting Started with Julia for CP and Optimization | Julia Constraints - - + + - + - - - + + + -
Skip to content

Getting Started with Julia for CP and Optimization

Why Julia?

  • Discuss the advantages of Julia for computational science and optimization, highlighting its performance and ease of use.

Setting Up Your Julia Environment

We encourage users to install Julia through juliaup, a version manager for the Julia language. Please look at the official Julia language download page for further information. Once installed, Julia can be used through various editors (Visual Studio Code), notebooks (Pluto.jl), or command-line (REPL).

Although a part of the CP solvers available within the Julia ecosystem have their own interface, we encourage users to use the JuMP modeling language if possible.

Julia Constraints host several solvers(' interfaces). Due to its flexibility in modeling and solving, we will use LocalSearchSolvers.jl through its JuMP interface CBLS.jl as the basic example. Note that depending on the targeted instances, available hardware, and expectations, it is not necessarily the best choice.

All along the documentation, we will try to provide syntax examples for different setup.

julia
using LocalSearchSolvers
julia
using JuMP, CBLS
julia
# TODO: Add other solvers

Your First Julia CP Model

We will start with a classic puzzle game and some of its not that simple variants: the Sudoku.

(From Wikipedia) In classic Sudoku, the objective is to fill a 9 × 9 grid with digits so that each column, each row, and each of the nine 3 × 3 subgrids that compose the grid (also called "boxes", "blocks", or "regions") contains all of the digits from 1 to 9. The puzzle setter provides a partially completed grid, which for a well-posed puzzle has a single solution.

Constraint Programming follows the model-and-solve approach. We first need to model our Sudoku problem.

julia
m = JuMP.Model(CBLS.Optimizer)
julia
# TODO: Add other solvers

But what are the basis of CP models? It is quite simple:

  1. A collection X=X1,,Xn of variables with each an associated domain.
julia
@variable(m, 1 X[1:9, 1:9]  9, Int)
julia
# TODO: Add other solvers
  1. A collection of predicates (called constraints) C=C1,,Cn over (subsets of) X.

When modeling problems as CP, one might define and use their own predicates. However, a large collection of already defined constraints exists. One, if not the most, iconic global constraint is called AllDifferent. It ensures that all variables take distinct values.

Sudoku puzzles can be defined using only this one constraint applied to different subsets of variables.

julia
for i in 1:9
+    
Skip to content

Getting Started with Julia for CP and Optimization

Why Julia?

  • Discuss the advantages of Julia for computational science and optimization, highlighting its performance and ease of use.

Setting Up Your Julia Environment

We encourage users to install Julia through juliaup, a version manager for the Julia language. Please look at the official Julia language download page for further information. Once installed, Julia can be used through various editors (Visual Studio Code), notebooks (Pluto.jl), or command-line (REPL).

Although a part of the CP solvers available within the Julia ecosystem have their own interface, we encourage users to use the JuMP modeling language if possible.

Julia Constraints host several solvers(' interfaces). Due to its flexibility in modeling and solving, we will use LocalSearchSolvers.jl through its JuMP interface CBLS.jl as the basic example. Note that depending on the targeted instances, available hardware, and expectations, it is not necessarily the best choice.

All along the documentation, we will try to provide syntax examples for different setup.

julia
using LocalSearchSolvers
julia
using JuMP, CBLS
julia
# TODO: Add other solvers

Your First Julia CP Model

We will start with a classic puzzle game and some of its not that simple variants: the Sudoku.

(From Wikipedia) In classic Sudoku, the objective is to fill a 9 × 9 grid with digits so that each column, each row, and each of the nine 3 × 3 subgrids that compose the grid (also called "boxes", "blocks", or "regions") contains all of the digits from 1 to 9. The puzzle setter provides a partially completed grid, which for a well-posed puzzle has a single solution.

Constraint Programming follows the model-and-solve approach. We first need to model our Sudoku problem.

julia
m = JuMP.Model(CBLS.Optimizer)
julia
# TODO: Add other solvers

But what are the basis of CP models? It is quite simple:

  1. A collection X=X1,,Xn of variables with each an associated domain.
julia
@variable(m, 1 X[1:9, 1:9]  9, Int)
julia
# TODO: Add other solvers
  1. A collection of predicates (called constraints) C=C1,,Cn over (subsets of) X.

When modeling problems as CP, one might define and use their own predicates. However, a large collection of already defined constraints exists. One, if not the most, iconic global constraint is called AllDifferent. It ensures that all variables take distinct values.

Sudoku puzzles can be defined using only this one constraint applied to different subsets of variables.

julia
for i in 1:9
         @constraint(m, X[i,:] in AllDifferent()) # rows
         @constraint(m, X[:,i] in AllDifferent()) # columns
-end
julia
# TODO: Add other solvers

The last series of AllDifferent constraint is less straight forward. We need to ensure that each 3 × 3 subgrid (block) is filled with distinct values.

julia
for i in 0:2, j in 0:2 # blocks
+end
julia
# TODO: Add other solvers

The last series of AllDifferent constraint is less straight forward. We need to ensure that each 3 × 3 subgrid (block) is filled with distinct values.

julia
for i in 0:2, j in 0:2 # blocks
     @constraint(
         m,
         vec(X[(3i+1):(3(i+1)), (3j+1):(3(j+1))]) in AllDifferent(),
     )
-end
julia
# TODO: Add other solvers

We can now simply run our solver to look for a feasible solution.

julia
optimize!(m)

Note that this is heuristic solver, we might not get a feasible solution! Let's check it out. The value function print the value of a JuMP variable. We can cast it over a collection with the value. syntax.

julia
value.(X)
- +end
julia
# TODO: Add other solvers

We can now simply run our solver to look for a feasible solution.

julia
optimize!(m)

Note that this is heuristic solver, we might not get a feasible solution! Let's check it out. The value function print the value of a JuMP variable. We can cast it over a collection with the value. syntax.

julia
value.(X)
+ \ No newline at end of file diff --git a/dev/cp/intro.html b/dev/cp/intro.html index c0d63e4..4ed07a8 100644 --- a/dev/cp/intro.html +++ b/dev/cp/intro.html @@ -5,20 +5,20 @@ Welcome to Julia Constraints | Julia Constraints - - + + - + - - - + + + -
Skip to content

Welcome to Julia Constraints

An introductory post/chapter that provides an overview of the JuliaConstraint organization, its mission, and what readers can expect to learn from the content. Highlight the importance of Constraint Programming (CP) and optimization in solving real-world problems.

- +
Skip to content

Welcome to Julia Constraints

An introductory post/chapter that provides an overview of the JuliaConstraint organization, its mission, and what readers can expect to learn from the content. Highlight the importance of Constraint Programming (CP) and optimization in solving real-world problems.

+ \ No newline at end of file diff --git a/dev/cp/models.html b/dev/cp/models.html index fd09a0c..0d4a87a 100644 --- a/dev/cp/models.html +++ b/dev/cp/models.html @@ -5,20 +5,20 @@ Building and Analyzing Models | Julia Constraints - - + + - + - - - + + + -
Skip to content

Building and Analyzing Models

Modeling Best Practices

  • Share best practices and tips for building efficient CP and optimization models.

Performance Analysis and Improvement

  • Teach how to analyze and improve the performance of models.
- +
Skip to content

Building and Analyzing Models

Modeling Best Practices

  • Share best practices and tips for building efficient CP and optimization models.

Performance Analysis and Improvement

  • Teach how to analyze and improve the performance of models.
+ \ No newline at end of file diff --git a/dev/cp/opt.html b/dev/cp/opt.html index bb714d8..1dfb1db 100644 --- a/dev/cp/opt.html +++ b/dev/cp/opt.html @@ -5,20 +5,20 @@ Dive into Optimization | Julia Constraints - - + + - + - - - + + + -
Skip to content

Dive into Optimization

Understanding Optimization

  • Explanation of optimization, types of optimization problems (e.g., linear, nonlinear, integer programming).

Metaheuristics Overview

  • Introduce concepts like Genetic Algorithms, Simulated Annealing, and Tabu Search.

Mathematical Programming Basics

  • Cover the fundamentals of mathematical programming and its role in optimization.
- +
Skip to content

Dive into Optimization

Understanding Optimization

  • Explanation of optimization, types of optimization problems (e.g., linear, nonlinear, integer programming).

Metaheuristics Overview

  • Introduce concepts like Genetic Algorithms, Simulated Annealing, and Tabu Search.

Mathematical Programming Basics

  • Cover the fundamentals of mathematical programming and its role in optimization.
+ \ No newline at end of file diff --git a/dev/cp/tuto_xp.html b/dev/cp/tuto_xp.html index 705383f..cbe6fcb 100644 --- a/dev/cp/tuto_xp.html +++ b/dev/cp/tuto_xp.html @@ -5,20 +5,20 @@ Tutorials and Experiments | Julia Constraints - - + + - + - - - + + + -
Skip to content

Tutorials and Experiments

Hands-On Tutorials

  • Provide step-by-step tutorials covering various topics and complexity levels.

Experimental Analysis

  • Discuss the importance of experimental analysis in CP and how to conduct meaningful experiments.
- +
Skip to content

Tutorials and Experiments

Hands-On Tutorials

  • Provide step-by-step tutorials covering various topics and complexity levels.

Experimental Analysis

  • Discuss the importance of experimental analysis in CP and how to conduct meaningful experiments.
+ \ No newline at end of file diff --git a/dev/full_api.html b/dev/full_api.html index d6444a1..b60d42a 100644 --- a/dev/full_api.html +++ b/dev/full_api.html @@ -5,19 +5,19 @@ Full API | Julia Constraints - - + + - + - - - + + + -
Skip to content

Full API

# ConstraintCommons.USUAL_CONSTRAINT_PARAMETERSConstant.
julia
const USUAL_CONSTRAINT_PARAMETERS

List of usual constraints parameters (based on XCSP3-core constraints). The list is based on the nature of each kind of parameter instead of the keywords used in the XCSP3-core format.

julia
const USUAL_CONSTRAINT_PARAMETERS = [
+    
Skip to content

Full API

# ConstraintCommons.USUAL_CONSTRAINT_PARAMETERSConstant.
julia
const USUAL_CONSTRAINT_PARAMETERS

List of usual constraints parameters (based on XCSP3-core constraints). The list is based on the nature of each kind of parameter instead of the keywords used in the XCSP3-core format.

julia
const USUAL_CONSTRAINT_PARAMETERS = [
     :bool, # boolean parameter
     :dim, # dimension, an integer parameter used along the pair_vars or vals parameters
     :id, # index to target one variable in the input vector
@@ -271,8 +271,8 @@
 tr_val_minus_var(x; val)
 tr_val_minus_var(x, X::AbstractVector; val)

Return the difference val - x[i] if positive, 0.0 otherwise. Extended method to vector with sig (x, val) are generated. When X is provided, the result is computed without allocations.

source


# CompositionalNetworks.tr_var_minus_valMethod.
julia
tr_var_minus_val(i, x; val)
 tr_var_minus_val(x; val)
-tr_var_minus_val(x, X::AbstractVector; val)

Return the difference x[i] - val if positive, 0.0 otherwise. Extended method to vector with sig (x, val) are generated. When X is provided, the result is computed without allocations.

source


# CompositionalNetworks.transformation_layerFunction.
julia
transformation_layer(param = Vector{Symbol}())

Generate the layer of transformations functions of the ICN. Iff param value is non empty, also includes all the related parametric transformations.

source


# CompositionalNetworks.weights!Method.
julia
weights!(icn, weights)

Set the weights of an ICN with a BitVector.

source


# CompositionalNetworks.weightsMethod.
julia
weights(icn)

Access the current set of weights of an ICN.

source


# CompositionalNetworks.weights_biasMethod.
julia
weights_bias(x)

A metric that bias x towards operations with a lower bit. Do not affect the main metric.

source


# QUBOConstraints.AbstractOptimizerType.
julia
AbstractOptimizer

An abstract type (interface) used to learn QUBO matrices from constraints. Only a train method is required.

source


# QUBOConstraints.QUBO_baseFunction.
julia
QUBO_base(n, weight = 1)

A basic QUBO matrix to ensure that binarized variables keep a valid encoding.

source


# QUBOConstraints.QUBO_linear_sumMethod.
julia
QUBO_linear_sum(n, σ)

One valid QUBO matrix given n variables and parameter σ for the linear sum constraint.

source


# QUBOConstraints.binarizeMethod.
julia
binarize(x[, domain]; binarization = :one_hot)

Binarize x following the binarization encoding. If x is a vector (instead of a number per say), domain is optional.

source


# QUBOConstraints.debinarizeMethod.
julia
debinarize(x[, domain]; binarization = :one_hot)

Transform a binary vector into a number or a set of number. If domain is not given, it will compute a default value based on binarization and x.

source


# QUBOConstraints.is_validFunction.
julia
is_valid(x, encoding::Symbol = :none)

Check if x has a valid format for encoding.

For instance, if encoding == :one_hot, at most one bit of x can be set to 1.

source


# QUBOConstraints.trainMethod.
julia
train(args...)

Default train method for any AbstractOptimizer.

source


- +tr_var_minus_val(x, X::AbstractVector; val)

Return the difference x[i] - val if positive, 0.0 otherwise. Extended method to vector with sig (x, val) are generated. When X is provided, the result is computed without allocations.

source


# CompositionalNetworks.transformation_layerFunction.
julia
transformation_layer(param = Vector{Symbol}())

Generate the layer of transformations functions of the ICN. Iff param value is non empty, also includes all the related parametric transformations.

source


# CompositionalNetworks.weights!Method.
julia
weights!(icn, weights)

Set the weights of an ICN with a BitVector.

source


# CompositionalNetworks.weightsMethod.
julia
weights(icn)

Access the current set of weights of an ICN.

source


# CompositionalNetworks.weights_biasMethod.
julia
weights_bias(x)

A metric that bias x towards operations with a lower bit. Do not affect the main metric.

source


# QUBOConstraints.AbstractOptimizerType.
julia
AbstractOptimizer

An abstract type (interface) used to learn QUBO matrices from constraints. Only a train method is required.

source


# QUBOConstraints.QUBO_baseFunction.
julia
QUBO_base(n, weight = 1)

A basic QUBO matrix to ensure that binarized variables keep a valid encoding.

source


# QUBOConstraints.QUBO_linear_sumMethod.
julia
QUBO_linear_sum(n, σ)

One valid QUBO matrix given n variables and parameter σ for the linear sum constraint.

source


# QUBOConstraints.binarizeMethod.
julia
binarize(x[, domain]; binarization = :one_hot)

Binarize x following the binarization encoding. If x is a vector (instead of a number per say), domain is optional.

source


# QUBOConstraints.debinarizeMethod.
julia
debinarize(x[, domain]; binarization = :one_hot)

Transform a binary vector into a number or a set of number. If domain is not given, it will compute a default value based on binarization and x.

source


# QUBOConstraints.is_validFunction.
julia
is_valid(x, encoding::Symbol = :none)

Check if x has a valid format for encoding.

For instance, if encoding == :one_hot, at most one bit of x can be set to 1.

source


# QUBOConstraints.trainMethod.
julia
train(args...)

Default train method for any AbstractOptimizer.

source


+ \ No newline at end of file diff --git a/dev/hashmap.json b/dev/hashmap.json index a8aa845..43531bb 100644 --- a/dev/hashmap.json +++ b/dev/hashmap.json @@ -1 +1 @@ -{"perf_chairmarks_ext.md":"BPX823mm","constraints_language_constraints.md":"BSznWPSC","learning_qubo_encoding.md":"neS6B6hM","perf_perf_checker.md":"CnWntdNe","cp_applications.md":"CPP6SuH3","cp_opt.md":"DkSJltw-","cp_models.md":"DMeHZkWz","cp_ecosystem.md":"BAIJ9WaC","cp_getting_started.md":"e6k1ryhG","index-old.md":"BUJ3h5VP","index.md":"DEar9D6T","perf_api.md":"DOBS8sOk","learning_arithmetic.md":"DwM8709A","learning_compositional_networks.md":"CnmEYulZ","learning_comparison.md":"D7dT9cpF","constraints_constraint_commons.md":"Crs_7fzT","cp_contribution.md":"BXTCGeFC","constraints_packing_scheduling_constraints.md":"DIRIJz4y","constraints_connection_constraints.md":"CDd_cK_0","constraints_constraint_models.md":"DxJEG5NU","constraints_elementary_constraints.md":"DwSz_m2n","constraints_intro.md":"BntZt56K","constraints_counting_summing_constraints.md":"iiagn6jX","learning_qubo_constraints.md":"CxSw8I5h","constraints_constraints.md":"BeuGrere","solvers_intro.md":"DDzBkL9F","constraints_constraint_domains.md":"BVQ160Uq","learning_layers.md":"np0J_qtq","learning_aggregation.md":"BVc6mB_V","learning_transformation.md":"BSeHO4Rt","cp_tuto_xp.md":"Z1oPyhEj","perf_perf_interface.md":"CnCj4yQL","meta_meta_strategist.md":"CQlluWS_","perf_tutorial.md":"B0uPS8Oa","perf_benchmark_ext.md":"CRZe3lps","cp_cp101.md":"B6QE-eYu","cp_intro.md":"CU56ubdk","cp_advanced.md":"aboXfsbo","public_api.md":"DucX-f_i","constraints_comparison_constraints.md":"B-iJ3BIf","constraints_graph_constraints.md":"CfD3E1aW","learning_constraint_learning.md":"BkxpDY7b","learning_intro.md":"YQ8QuIJf","solvers_cbls.md":"aETcPHbV","constraints_generic_constraints.md":"D8rbTF4j","learning_qubo_learning.md":"CpDvGfGe","solvers_local_search_solvers.md":"fZnE-81e","full_api.md":"DL-XqSUt"} +{"constraints_comparison_constraints.md":"DvR_s6vO","constraints_connection_constraints.md":"C8fXb99X","constraints_constraint_commons.md":"BsJHChqx","constraints_constraint_domains.md":"UcZtuCfF","constraints_constraint_models.md":"Be-wftur","constraints_constraints.md":"B2k7G520","constraints_counting_summing_constraints.md":"Coh0JXur","constraints_elementary_constraints.md":"A4nBHZxi","constraints_generic_constraints.md":"C5lydhxZ","constraints_graph_constraints.md":"BGZobcf3","constraints_intro.md":"C6-EYJrm","constraints_language_constraints.md":"Bq6voQil","constraints_packing_scheduling_constraints.md":"B4w1oYr1","cp_advanced.md":"Cgd9rMxw","cp_applications.md":"CNAr7LYf","cp_contribution.md":"C-ib1HN5","cp_cp101.md":"CZURQeDs","cp_ecosystem.md":"CyDLRe9i","cp_getting_started.md":"Dxdr4J1c","cp_intro.md":"CyOxCEfs","cp_models.md":"9iR83UZ2","cp_opt.md":"D27ydAXM","cp_tuto_xp.md":"HnOO3gUv","full_api.md":"DzQ1HRyK","index-old.md":"Dm_hMecF","index.md":"DgwT_Cs_","learning_aggregation.md":"Dl-pS0Ec","learning_arithmetic.md":"De1AcXBC","learning_comparison.md":"_HTVnje4","learning_compositional_networks.md":"BG5bymSs","learning_constraint_learning.md":"MS50148Y","learning_intro.md":"C__k7ONW","learning_layers.md":"BAJFh2-N","learning_qubo_constraints.md":"BUNl7Jcq","learning_qubo_encoding.md":"66faEMmG","learning_qubo_learning.md":"CmMGPPzW","learning_transformation.md":"C9j4_440","meta_meta_strategist.md":"DJjRGHWo","perf_api.md":"Ht9J10Ys","perf_benchmark_ext.md":"BLiYg-fz","perf_chairmarks_ext.md":"Bd_nCI9c","perf_perf_checker.md":"oe0HNodG","perf_perf_interface.md":"DUnQNlE7","perf_tutorial.md":"CibCRJ0g","public_api.md":"DKaSs20b","solvers_cbls.md":"DZ6v1Wou","solvers_intro.md":"BfVY8api","solvers_local_search_solvers.md":"BzCxiVtH"} diff --git a/dev/index-old.html b/dev/index-old.html index 7f0a400..e9925fe 100644 --- a/dev/index-old.html +++ b/dev/index-old.html @@ -5,20 +5,20 @@ Julia Constraints - - + + - + - - - + + + -
Skip to content

JuliaConstraints

JuliaConstraints is a collection of packages that help you solve constraint programming problems in Julia. Constraint programming involves modeling problems with constraints, such as "x > 5" or "x + y = 10", and finding solutions that satisfy all of the constraints. It is a part of the JuMP ecosystem that focuses on constraint programming in Julia.

The goal of packages in JuliaConstraints are two-fold: some of them provide a generic interface, others are solvers for CP models (either purely in Julia or wrapping). They make it easy to solve constraint-satisfaction problems (CSPs) and constraint-optimisation problems (COPs) in Julia using industry-standard solvers and mixed-integer solvers.

Other packages for CP in Julia include:

Operational Research vs Constraint Programming

Operational research (OR) is a problem-solving approach that uses mathematical models, statistical analysis, and optimization techniques to help organizations make better decisions. OR is concerned with understanding and optimizing complex systems, such as supply chains, transportation networks, and manufacturing processes, to improve efficiency and reduce costs.

On the other hand, constraint programming (CP) is a programming paradigm that focuses on solving problems with constraints. Constraints are conditions that must be satisfied for a solution to be valid. CP is often used to solve combinatorial problems, such as scheduling, routing, and allocation, where the search space of possible solutions is very large.

So, while both OR and CP are concerned with solving complex problems, they approach the problem-solving process from different angles. OR typically uses mathematical models and optimization techniques to analyze and optimize existing systems, while CP focuses on finding valid solutions that satisfy a set of constraints.

Constraint-based local search (CBLS) is a type of constraint programming solver that uses a heuristic search algorithm to find solutions to problems. It starts with an initial solution and tries to improve it by making small changes that satisfy the constraints. CBLS is especially useful for large and complex problems where finding an exact solution may take too much time or be impossible.

In contrast, other constraint programming solvers use a variety of algorithms and techniques to find exact solutions to problems. These solvers try to find a solution that satisfies all of the constraints in the problem. They can be useful for smaller problems where finding an exact solution is feasible, or for problems that have a clear mathematical structure.

In summary, CBLS is a type of constraint programming solver that uses a heuristic search algorithm to find good solutions, while other constraint programming solvers use various techniques to find exact solutions to problems.

- +
Skip to content

JuliaConstraints

JuliaConstraints is a collection of packages that help you solve constraint programming problems in Julia. Constraint programming involves modeling problems with constraints, such as "x > 5" or "x + y = 10", and finding solutions that satisfy all of the constraints. It is a part of the JuMP ecosystem that focuses on constraint programming in Julia.

The goal of packages in JuliaConstraints are two-fold: some of them provide a generic interface, others are solvers for CP models (either purely in Julia or wrapping). They make it easy to solve constraint-satisfaction problems (CSPs) and constraint-optimisation problems (COPs) in Julia using industry-standard solvers and mixed-integer solvers.

Other packages for CP in Julia include:

Operational Research vs Constraint Programming

Operational research (OR) is a problem-solving approach that uses mathematical models, statistical analysis, and optimization techniques to help organizations make better decisions. OR is concerned with understanding and optimizing complex systems, such as supply chains, transportation networks, and manufacturing processes, to improve efficiency and reduce costs.

On the other hand, constraint programming (CP) is a programming paradigm that focuses on solving problems with constraints. Constraints are conditions that must be satisfied for a solution to be valid. CP is often used to solve combinatorial problems, such as scheduling, routing, and allocation, where the search space of possible solutions is very large.

So, while both OR and CP are concerned with solving complex problems, they approach the problem-solving process from different angles. OR typically uses mathematical models and optimization techniques to analyze and optimize existing systems, while CP focuses on finding valid solutions that satisfy a set of constraints.

Constraint-based local search (CBLS) is a type of constraint programming solver that uses a heuristic search algorithm to find solutions to problems. It starts with an initial solution and tries to improve it by making small changes that satisfy the constraints. CBLS is especially useful for large and complex problems where finding an exact solution may take too much time or be impossible.

In contrast, other constraint programming solvers use a variety of algorithms and techniques to find exact solutions to problems. These solvers try to find a solution that satisfies all of the constraints in the problem. They can be useful for smaller problems where finding an exact solution is feasible, or for problems that have a clear mathematical structure.

In summary, CBLS is a type of constraint programming solver that uses a heuristic search algorithm to find good solutions, while other constraint programming solvers use various techniques to find exact solutions to problems.

+ \ No newline at end of file diff --git a/dev/index.html b/dev/index.html index 9c2d68b..b0be517 100644 --- a/dev/index.html +++ b/dev/index.html @@ -5,20 +5,20 @@ Julia Constraints - - + + - + - - - + + + -
Skip to content

Julia Constraints

Model Smoothly Decide Wisely

A Toolkit for Constraint Programming

JuliaConstraints

What is Julia Constraints?

The Julia Constraints organization serves as a hub for resources to create, understand, and solve optimization through the lens of Constraint Programming. Our goal is to make Constraint Programming accessible and efficient for users at all levels of expertise, by providing a comprehensive suite of tools.

Most tools integrate seamlessly with JuMP, a popular Julia package for mathematical optimization.

Ecosystem overview

Core Packages

The foundation of common packages that provide essential features for constraint programming ensures that users possess the fundamental tools required for their projects.

  • ConstraintCommons.jl is designed to make constraint programming solutions in Julia interoperable. It provides shared structures, abstract types, functions, and generic methods used by both basic feature packages and learning-oriented packages.
  • ConstraintDomains.jl focuses on the definition and manipulation of variable domains, which are used to solve constraint programming problems. This package provides the infrastructure needed to specify both discrete and continuous domains, allowing a wide range of constraint programming applications.
  • Constraints.jl is a key component, specifically designed to facilitate the definition, manipulation, and application of constraints in constraint programming. This package is central to handling both standard and complex constraints, making it an indispensable tool for developers and researchers working in CP.
  • ConstraintModels.jl is a package for Julia Constraints' solvers that stores Constraint Programming models.

Learning and Translation Tools

A collection that bridges the gap between the ease of modeling and computational efficacy. These tools learn from constraints or convert natural language problems into constraint programming solutions, requiring minimal input from the user beyond the model itself.

  • CompositionalNetworks.jl provides interpretable compositional networks (ICN), a combinatorial variant of neural networks that allows the user to obtain interpretable results, unlike regular artificial neural networks.
  • QUBOConstraints.jl is a package that can (automatically) learn QUBO matrices from optimization constraints.
  • ConstraintsTranslator.jl (tentative name, WIP) is a tool for converting problems expressed in natural language into optimization models.
  • ConstraintLearning.jl is a common interface that integrates the various components outlined above.

Solvers

We offer a variety of solvers, from native Julia solvers to interfaces with JuMP for external CP solvers, to cater to various problem-solving needs.

  • LocalSearchSolvers.jl is a Julia native framework to (semi-)automatically build Constraint-based Local Search solvers. It serves as a basic for the experimental design or core and learning oriented packages in Julia Constraints.
  • CBLS.jl a MOI/JuMP interface for the above framework!
  • CPLEXCP.jl a Julia interface for CPLEX CP Optimizer.
  • Chuffed.jl a wrapper for the constraint-programming solver Chuffed to Julia.
  • JaCoP.jl a Julia interface for the JaCoP constraint-programming solver.

JuMP extras

Constraint Programming is slowly making steps into the main JuMP components. However, some extra resources are available as

Meta-solving

MetaStrategist.jl is a meta-solving package in its formative stages, which aims to harness the strengths of CP and JuMP. Its goal is to formulate tailored strategies that take into consideration the unique hardware and software resources at hand, offering a new horizon in problem-solving efficiency and adaptability. Stay tuned!

Performance related tools

We've made a tool for cross-version performance checking that ensures the high efficiency and reliability of our solutions. By facilitating clear and simple performance evaluations, PerfChecker.jl enhances both development and maintenance, contributing to the overall health and progress of Julia (Constraints)'s growing library of resources.

Contributors Page

Acknowledgments

The Julia Constraints community would not be where it is today without the collective efforts of many talented individuals and organizations. We extend our heartfelt thanks to:

  • IIJ Research Lab: The driving force behind more than half of this project!
  • JuMP-dev Community: For their extensive contributions to the development of our packages.
  • Individual Contributors: Numerous developers and researchers who have dedicated their time and skills to enhance our tools.
- +
Skip to content

Julia Constraints

Model Smoothly Decide Wisely

A Toolkit for Constraint Programming

JuliaConstraints

What is Julia Constraints?

The Julia Constraints organization serves as a hub for resources to create, understand, and solve optimization through the lens of Constraint Programming. Our goal is to make Constraint Programming accessible and efficient for users at all levels of expertise, by providing a comprehensive suite of tools.

Most tools integrate seamlessly with JuMP, a popular Julia package for mathematical optimization.

Ecosystem overview

Core Packages

The foundation of common packages that provide essential features for constraint programming ensures that users possess the fundamental tools required for their projects.

  • ConstraintCommons.jl is designed to make constraint programming solutions in Julia interoperable. It provides shared structures, abstract types, functions, and generic methods used by both basic feature packages and learning-oriented packages.
  • ConstraintDomains.jl focuses on the definition and manipulation of variable domains, which are used to solve constraint programming problems. This package provides the infrastructure needed to specify both discrete and continuous domains, allowing a wide range of constraint programming applications.
  • Constraints.jl is a key component, specifically designed to facilitate the definition, manipulation, and application of constraints in constraint programming. This package is central to handling both standard and complex constraints, making it an indispensable tool for developers and researchers working in CP.
  • ConstraintModels.jl is a package for Julia Constraints' solvers that stores Constraint Programming models.

Learning and Translation Tools

A collection that bridges the gap between the ease of modeling and computational efficacy. These tools learn from constraints or convert natural language problems into constraint programming solutions, requiring minimal input from the user beyond the model itself.

  • CompositionalNetworks.jl provides interpretable compositional networks (ICN), a combinatorial variant of neural networks that allows the user to obtain interpretable results, unlike regular artificial neural networks.
  • QUBOConstraints.jl is a package that can (automatically) learn QUBO matrices from optimization constraints.
  • ConstraintsTranslator.jl (tentative name, WIP) is a tool for converting problems expressed in natural language into optimization models.
  • ConstraintLearning.jl is a common interface that integrates the various components outlined above.

Solvers

We offer a variety of solvers, from native Julia solvers to interfaces with JuMP for external CP solvers, to cater to various problem-solving needs.

  • LocalSearchSolvers.jl is a Julia native framework to (semi-)automatically build Constraint-based Local Search solvers. It serves as a basic for the experimental design or core and learning oriented packages in Julia Constraints.
  • CBLS.jl a MOI/JuMP interface for the above framework!
  • CPLEXCP.jl a Julia interface for CPLEX CP Optimizer.
  • Chuffed.jl a wrapper for the constraint-programming solver Chuffed to Julia.
  • JaCoP.jl a Julia interface for the JaCoP constraint-programming solver.

JuMP extras

Constraint Programming is slowly making steps into the main JuMP components. However, some extra resources are available as

Meta-solving

MetaStrategist.jl is a meta-solving package in its formative stages, which aims to harness the strengths of CP and JuMP. Its goal is to formulate tailored strategies that take into consideration the unique hardware and software resources at hand, offering a new horizon in problem-solving efficiency and adaptability. Stay tuned!

Performance related tools

We've made a tool for cross-version performance checking that ensures the high efficiency and reliability of our solutions. By facilitating clear and simple performance evaluations, PerfChecker.jl enhances both development and maintenance, contributing to the overall health and progress of Julia (Constraints)'s growing library of resources.

Contributors Page

Acknowledgments

The Julia Constraints community would not be where it is today without the collective efforts of many talented individuals and organizations. We extend our heartfelt thanks to:

  • IIJ Research Lab: The driving force behind more than half of this project!
  • JuMP-dev Community: For their extensive contributions to the development of our packages.
  • Individual Contributors: Numerous developers and researchers who have dedicated their time and skills to enhance our tools.
+ \ No newline at end of file diff --git a/dev/learning/aggregation.html b/dev/learning/aggregation.html index aa38b07..03c0330 100644 --- a/dev/learning/aggregation.html +++ b/dev/learning/aggregation.html @@ -5,20 +5,20 @@ Aggregation Layer | Julia Constraints - - + + - + - - - + + + -
Skip to content

Aggregation Layer

Some text to describe the aggragation layer within usual ICNs.

List of aggregations

# CompositionalNetworks.ag_sumFunction.
julia
ag_sum(x)

Aggregate through + a vector into a single scalar.

source


# CompositionalNetworks.ag_count_positiveFunction.
julia
ag_count_positive(x)

Count the number of strictly positive elements of x.

source


Layer generation

# CompositionalNetworks.aggregation_layerFunction.
julia
aggregation_layer()

Generate the layer of aggregations of the ICN. The operations are mutually exclusive, that is only one will be selected.

source


- +
Skip to content

Aggregation Layer

Some text to describe the aggragation layer within usual ICNs.

List of aggregations

# CompositionalNetworks.ag_sumFunction.
julia
ag_sum(x)

Aggregate through + a vector into a single scalar.

source


# CompositionalNetworks.ag_count_positiveFunction.
julia
ag_count_positive(x)

Count the number of strictly positive elements of x.

source


Layer generation

# CompositionalNetworks.aggregation_layerFunction.
julia
aggregation_layer()

Generate the layer of aggregations of the ICN. The operations are mutually exclusive, that is only one will be selected.

source


+ \ No newline at end of file diff --git a/dev/learning/arithmetic.html b/dev/learning/arithmetic.html index 1573502..075f478 100644 --- a/dev/learning/arithmetic.html +++ b/dev/learning/arithmetic.html @@ -5,20 +5,20 @@ Arithmetic Layer | Julia Constraints - - + + - + - - - + + + -
Skip to content

Arithmetic Layer

Some text to describe the arithmetic layer within usual ICNs.

List of arithmetic operations

# CompositionalNetworks.ar_sumFunction.
julia
ar_sum(x)

Reduce k = length(x) vectors through sum to a single vector.

source


# CompositionalNetworks.ar_prodFunction.
julia
ar_prod(x)

Reduce k = length(x) vectors through product to a single vector.

source


Layer generation

# CompositionalNetworks.arithmetic_layerFunction.
julia
arithmetic_layer()

Generate the layer of arithmetic operations of the ICN. The operations are mutually exclusive, that is only one will be selected.

source


- +
Skip to content

Arithmetic Layer

Some text to describe the arithmetic layer within usual ICNs.

List of arithmetic operations

# CompositionalNetworks.ar_sumFunction.
julia
ar_sum(x)

Reduce k = length(x) vectors through sum to a single vector.

source


# CompositionalNetworks.ar_prodFunction.
julia
ar_prod(x)

Reduce k = length(x) vectors through product to a single vector.

source


Layer generation

# CompositionalNetworks.arithmetic_layerFunction.
julia
arithmetic_layer()

Generate the layer of arithmetic operations of the ICN. The operations are mutually exclusive, that is only one will be selected.

source


+ \ No newline at end of file diff --git a/dev/learning/comparison.html b/dev/learning/comparison.html index def3e21..853fa8f 100644 --- a/dev/learning/comparison.html +++ b/dev/learning/comparison.html @@ -5,20 +5,20 @@ Comparison Layer | Julia Constraints - - + + - + - - - + + + -
Skip to content

Comparison Layer

Some text to describe the comparison layer within usual ICNs.

List of comparisons

List the possible parameters and how it affects the comparison.

Non-parametric

# CompositionalNetworks.co_identityFunction.
julia
co_identity(x)

Identity function. Already defined in Julia as identity, specialized for scalars in the comparison layer.

source


Missing docstring.

Missing docstring for co_euclidian. Check Documenter's build log for details.

Missing docstring.

Missing docstring for co_abs_diff_val_vars. Check Documenter's build log for details.

Missing docstring.

Missing docstring for co_val_minus_vars. Check Documenter's build log for details.

Missing docstring.

Missing docstring for co_vars_minus_val. Check Documenter's build log for details.

Param: :val

Missing docstring.

Missing docstring for co_abs_diff_val_param. Check Documenter's build log for details.

Missing docstring.

Missing docstring for co_val_minus_param. Check Documenter's build log for details.

Missing docstring.

Missing docstring for co_param_minus_val. Check Documenter's build log for details.

Missing docstring.

Missing docstring for co_euclidian_param. Check Documenter's build log for details.

Layer generation

Missing docstring.

Missing docstring for make_comparisons. Check Documenter's build log for details.

# CompositionalNetworks.comparison_layerFunction.
julia
comparison_layer(param = false)

Generate the layer of transformations functions of the ICN. Iff param value is set, also includes all the parametric comparison with that value. The operations are mutually exclusive, that is only one will be selected.

source


- +
Skip to content

Comparison Layer

Some text to describe the comparison layer within usual ICNs.

List of comparisons

List the possible parameters and how it affects the comparison.

Non-parametric

# CompositionalNetworks.co_identityFunction.
julia
co_identity(x)

Identity function. Already defined in Julia as identity, specialized for scalars in the comparison layer.

source


Missing docstring.

Missing docstring for co_euclidian. Check Documenter's build log for details.

Missing docstring.

Missing docstring for co_abs_diff_val_vars. Check Documenter's build log for details.

Missing docstring.

Missing docstring for co_val_minus_vars. Check Documenter's build log for details.

Missing docstring.

Missing docstring for co_vars_minus_val. Check Documenter's build log for details.

Param: :val

Missing docstring.

Missing docstring for co_abs_diff_val_param. Check Documenter's build log for details.

Missing docstring.

Missing docstring for co_val_minus_param. Check Documenter's build log for details.

Missing docstring.

Missing docstring for co_param_minus_val. Check Documenter's build log for details.

Missing docstring.

Missing docstring for co_euclidian_param. Check Documenter's build log for details.

Layer generation

Missing docstring.

Missing docstring for make_comparisons. Check Documenter's build log for details.

# CompositionalNetworks.comparison_layerFunction.
julia
comparison_layer(param = false)

Generate the layer of transformations functions of the ICN. Iff param value is set, also includes all the parametric comparison with that value. The operations are mutually exclusive, that is only one will be selected.

source


+ \ No newline at end of file diff --git a/dev/learning/compositional_networks.html b/dev/learning/compositional_networks.html index ec4da35..e1e6173 100644 --- a/dev/learning/compositional_networks.html +++ b/dev/learning/compositional_networks.html @@ -5,20 +5,20 @@ CompositionalNetworks.jl | Julia Constraints - - + + - + - - - + + + -
Skip to content

CompositionalNetworks.jl

Documentation for CompositionalNetworks.jl.

Utilities

# CompositionalNetworks.map_tr!Function.
julia
map_tr!(f, x, X, param)

Return an anonymous function that applies f to all elements of x and store the result in X, with a parameter param (which is set to nothing for function with no parameter).

source


# CompositionalNetworks.lazyFunction.
julia
lazy(funcs::Function...)

Generate methods extended to a vector instead of one of its components. A function f should have the following signature: f(i::Int, x::V).

source


# CompositionalNetworks.lazy_paramFunction.
julia
lazy_param(funcs::Function...)

Generate methods extended to a vector instead of one of its components. A function f should have the following signature: f(i::Int, x::V; param).

source


# CompositionalNetworks.as_bitvectorFunction.
julia
as_bitvector(n::Int, max_n::Int = n)

Convert an Int to a BitVector of minimal size (relatively to max_n).

source


# CompositionalNetworks.as_intFunction.
julia
as_int(v::AbstractVector)

Convert a BitVector into an Int.

source


# CompositionalNetworks.reduce_symbolsFunction.
julia
reduce_symbols(symbols, sep)

Produce a formatted string that separates the symbols by sep. Used internally for show_composition.

source


Missing docstring.

Missing docstring for CompositionalNeworks.tr_in. Check Documenter's build log for details.

Metrics

# CompositionalNetworks.hammingFunction.
julia
hamming(x, X)

Compute the hamming distance of x over a collection of solutions X, i.e. the minimal number of variables to switch in xto reach a solution.

source


# CompositionalNetworks.minkowskiFunction.
julia
minkowski(x, X, p)

source


# CompositionalNetworks.manhattanFunction.
julia
manhattan(x, X)

source


Missing docstring.

Missing docstring for weigths_bias. Check Documenter's build log for details.

- +
Skip to content

CompositionalNetworks.jl

Documentation for CompositionalNetworks.jl.

Utilities

# CompositionalNetworks.map_tr!Function.
julia
map_tr!(f, x, X, param)

Return an anonymous function that applies f to all elements of x and store the result in X, with a parameter param (which is set to nothing for function with no parameter).

source


# CompositionalNetworks.lazyFunction.
julia
lazy(funcs::Function...)

Generate methods extended to a vector instead of one of its components. A function f should have the following signature: f(i::Int, x::V).

source


# CompositionalNetworks.lazy_paramFunction.
julia
lazy_param(funcs::Function...)

Generate methods extended to a vector instead of one of its components. A function f should have the following signature: f(i::Int, x::V; param).

source


# CompositionalNetworks.as_bitvectorFunction.
julia
as_bitvector(n::Int, max_n::Int = n)

Convert an Int to a BitVector of minimal size (relatively to max_n).

source


# CompositionalNetworks.as_intFunction.
julia
as_int(v::AbstractVector)

Convert a BitVector into an Int.

source


# CompositionalNetworks.reduce_symbolsFunction.
julia
reduce_symbols(symbols, sep)

Produce a formatted string that separates the symbols by sep. Used internally for show_composition.

source


Missing docstring.

Missing docstring for CompositionalNeworks.tr_in. Check Documenter's build log for details.

Metrics

# CompositionalNetworks.hammingFunction.
julia
hamming(x, X)

Compute the hamming distance of x over a collection of solutions X, i.e. the minimal number of variables to switch in xto reach a solution.

source


# CompositionalNetworks.minkowskiFunction.
julia
minkowski(x, X, p)

source


# CompositionalNetworks.manhattanFunction.
julia
manhattan(x, X)

source


Missing docstring.

Missing docstring for weigths_bias. Check Documenter's build log for details.

+ \ No newline at end of file diff --git a/dev/learning/constraint_learning.html b/dev/learning/constraint_learning.html index 9cdbbd6..011ea8c 100644 --- a/dev/learning/constraint_learning.html +++ b/dev/learning/constraint_learning.html @@ -5,20 +5,20 @@ ConstraintLearning.jl | Julia Constraints - - + + - + - - - + + + -
Skip to content

ConstraintLearning.jl

Documentation for ConstraintLearning.jl.

# ConstraintLearning.ICNConfigType.
julia
struct ICNConfig{O <: ICNOptimizer}

A structure to hold the metric and optimizer configurations used in learning the weights of an ICN.

source


# ConstraintLearning.ICNConfigMethod.
julia
ICNConfig(; metric = :hamming, optimizer = ICNGeneticOptimizer())

Constructor for ICNConfig. Defaults to hamming metric using a genetic algorithm.

source


# ConstraintLearning.ICNGeneticOptimizerMethod.
julia
ICNGeneticOptimizer(; kargs...)

Default constructor to learn an ICN through a Genetic Algorithm. Default kargs TBW.

source


# ConstraintLearning.ICNLocalSearchOptimizerType.
julia
ICNLocalSearchOptimizer(options = LocalSearchSolvers.Options())

Default constructor to learn an ICN through a CBLS solver.

source


# ConstraintLearning.ICNOptimizerType.
julia
const ICNOptimizer = CompositionalNetworks.AbstractOptimizer

An abstract type for optmizers defined to learn ICNs.

source


# ConstraintLearning.QUBOGradientOptimizerMethod.
julia
QUBOGradientOptimizer(; kargs...)

A QUBO optimizer based on gradient descent. Defaults TBW

source


# ConstraintLearning.QUBOOptimizerType.
julia
const QUBOOptimizer = QUBOConstraints.AbstractOptimizer

An abstract type for optimizers used to learn QUBO matrices from constraints.

source


# CompositionalNetworks.optimize!Method.
julia
CompositionalNetworks.optimize!(icn, solutions, non_sltns, dom_size, metric, optimizer::ICNGeneticOptimizer; parameters...)

Extends the optimize! method to ICNGeneticOptimizer.

source


# CompositionalNetworks.optimize!Method.
julia
CompositionalNetworks.optimize!(icn, solutions, non_sltns, dom_size, metric, optimizer::ICNLocalSearchOptimizer; parameters...)

Extends the optimize! method to ICNLocalSearchOptimizer.

source


# ConstraintLearning._optimize!Method.
julia
_optimize!(icn, X, X_sols; metric = hamming, pop_size = 200)

Optimize and set the weights of an ICN with a given set of configuration X and solutions X_sols.

source


# ConstraintLearning.domain_sizeMethod.
julia
domain_size(ds::Number)

Extends the domain_size function when ds is number (for dispatch purposes).

source


# ConstraintLearning.generate_populationMethod.
julia
generate_population(icn, pop_size

Generate a pôpulation of weights (individuals) for the genetic algorithm weighting icn.

source


# ConstraintLearning.icnMethod.
julia
icn(X,X̅; kargs..., parameters...)

TBW

source


# ConstraintLearning.lossMethod.
julia
loss(x, y, Q)

Loss of the prediction given by Q, a training set y, and a given configuration x.

source


# ConstraintLearning.make_dfMethod.
julia
make_df(X, Q, penalty, binarization, domains)

DataFrame arrangement to output some basic evaluation of a matrix Q.

source


# ConstraintLearning.make_set_penaltyMethod.
julia
make_set_penalty(X, X̅, args...; kargs)

Return a penalty function when the training set is already split into a pair of solutions X and non solutions .

source


# ConstraintLearning.make_training_setsMethod.
julia
make_training_sets(X, penalty, args...)

Return a pair of solutions and non solutions sets based on X and penalty.

source


# ConstraintLearning.mutually_exclusiveMethod.
julia
mutually_exclusive(layer, w)

Constraint ensuring that w encode exclusive operations in layer.

source


# ConstraintLearning.no_empty_layerMethod.
julia
no_empty_layer(x; X = nothing)

Constraint ensuring that at least one operation is selected.

source


# ConstraintLearning.optimize!Method.
julia
optimize!(icn, X, X_sols, global_iter, local_iter; metric=hamming, popSize=100)

Optimize and set the weights of an ICN with a given set of configuration X and solutions X_sols. The best weights among global_iter will be set.

source


# ConstraintLearning.parameter_specific_operationsMethod.
julia
parameter_specific_operations(x; X = nothing)

Constraint ensuring that at least one operation related to parameters is selected if the error function to be learned is parametric.

source


# ConstraintLearning.predictMethod.
julia
predict(x, Q)

Return the predictions given by Q for a given configuration x.

source


# ConstraintLearning.preliminariesMethod.
julia
preliminaries(args)

Preliminaries to the training process in a QUBOGradientOptimizer run.

source


# ConstraintLearning.quboFunction.
julia
qubo(X,X̅; kargs..., parameters...)

TBW

source


# ConstraintLearning.sub_eltypeMethod.
julia
sub_eltype(X)

Return the element type of of the first element of a collection.

source


# ConstraintLearning.train!Method.
julia
train!(Q, X, penalty, η, precision, X_test, oversampling, binarization, domains)

Training inner method.

source


# ConstraintLearning.trainMethod.
julia
train(X, penalty[, d]; optimizer = QUBOGradientOptimizer(), X_test = X)

Learn a QUBO matrix on training set X for a constraint defined by penalty with optional domain information d. By default, it uses a QUBOGradientOptimizer and X as a testing set.

source


# ConstraintLearning.δMethod.
julia
δ(X[, Y]; discrete = true)

Compute the extrema over a collection X``or a pair of collection(X, Y)`.

source


- +
Skip to content

ConstraintLearning.jl

Documentation for ConstraintLearning.jl.

# ConstraintLearning.ICNConfigType.
julia
struct ICNConfig{O <: ICNOptimizer}

A structure to hold the metric and optimizer configurations used in learning the weights of an ICN.

source


# ConstraintLearning.ICNConfigMethod.
julia
ICNConfig(; metric = :hamming, optimizer = ICNGeneticOptimizer())

Constructor for ICNConfig. Defaults to hamming metric using a genetic algorithm.

source


# ConstraintLearning.ICNGeneticOptimizerMethod.
julia
ICNGeneticOptimizer(; kargs...)

Default constructor to learn an ICN through a Genetic Algorithm. Default kargs TBW.

source


# ConstraintLearning.ICNLocalSearchOptimizerType.
julia
ICNLocalSearchOptimizer(options = LocalSearchSolvers.Options())

Default constructor to learn an ICN through a CBLS solver.

source


# ConstraintLearning.ICNOptimizerType.
julia
const ICNOptimizer = CompositionalNetworks.AbstractOptimizer

An abstract type for optmizers defined to learn ICNs.

source


# ConstraintLearning.QUBOGradientOptimizerMethod.
julia
QUBOGradientOptimizer(; kargs...)

A QUBO optimizer based on gradient descent. Defaults TBW

source


# ConstraintLearning.QUBOOptimizerType.
julia
const QUBOOptimizer = QUBOConstraints.AbstractOptimizer

An abstract type for optimizers used to learn QUBO matrices from constraints.

source


# CompositionalNetworks.optimize!Method.
julia
CompositionalNetworks.optimize!(icn, solutions, non_sltns, dom_size, metric, optimizer::ICNGeneticOptimizer; parameters...)

Extends the optimize! method to ICNGeneticOptimizer.

source


# CompositionalNetworks.optimize!Method.
julia
CompositionalNetworks.optimize!(icn, solutions, non_sltns, dom_size, metric, optimizer::ICNLocalSearchOptimizer; parameters...)

Extends the optimize! method to ICNLocalSearchOptimizer.

source


# ConstraintLearning._optimize!Method.
julia
_optimize!(icn, X, X_sols; metric = hamming, pop_size = 200)

Optimize and set the weights of an ICN with a given set of configuration X and solutions X_sols.

source


# ConstraintLearning.domain_sizeMethod.
julia
domain_size(ds::Number)

Extends the domain_size function when ds is number (for dispatch purposes).

source


# ConstraintLearning.generate_populationMethod.
julia
generate_population(icn, pop_size

Generate a pôpulation of weights (individuals) for the genetic algorithm weighting icn.

source


# ConstraintLearning.icnMethod.
julia
icn(X,X̅; kargs..., parameters...)

TBW

source


# ConstraintLearning.lossMethod.
julia
loss(x, y, Q)

Loss of the prediction given by Q, a training set y, and a given configuration x.

source


# ConstraintLearning.make_dfMethod.
julia
make_df(X, Q, penalty, binarization, domains)

DataFrame arrangement to output some basic evaluation of a matrix Q.

source


# ConstraintLearning.make_set_penaltyMethod.
julia
make_set_penalty(X, X̅, args...; kargs)

Return a penalty function when the training set is already split into a pair of solutions X and non solutions .

source


# ConstraintLearning.make_training_setsMethod.
julia
make_training_sets(X, penalty, args...)

Return a pair of solutions and non solutions sets based on X and penalty.

source


# ConstraintLearning.mutually_exclusiveMethod.
julia
mutually_exclusive(layer, w)

Constraint ensuring that w encode exclusive operations in layer.

source


# ConstraintLearning.no_empty_layerMethod.
julia
no_empty_layer(x; X = nothing)

Constraint ensuring that at least one operation is selected.

source


# ConstraintLearning.optimize!Method.
julia
optimize!(icn, X, X_sols, global_iter, local_iter; metric=hamming, popSize=100)

Optimize and set the weights of an ICN with a given set of configuration X and solutions X_sols. The best weights among global_iter will be set.

source


# ConstraintLearning.parameter_specific_operationsMethod.
julia
parameter_specific_operations(x; X = nothing)

Constraint ensuring that at least one operation related to parameters is selected if the error function to be learned is parametric.

source


# ConstraintLearning.predictMethod.
julia
predict(x, Q)

Return the predictions given by Q for a given configuration x.

source


# ConstraintLearning.preliminariesMethod.
julia
preliminaries(args)

Preliminaries to the training process in a QUBOGradientOptimizer run.

source


# ConstraintLearning.quboFunction.
julia
qubo(X,X̅; kargs..., parameters...)

TBW

source


# ConstraintLearning.sub_eltypeMethod.
julia
sub_eltype(X)

Return the element type of of the first element of a collection.

source


# ConstraintLearning.train!Method.
julia
train!(Q, X, penalty, η, precision, X_test, oversampling, binarization, domains)

Training inner method.

source


# ConstraintLearning.trainMethod.
julia
train(X, penalty[, d]; optimizer = QUBOGradientOptimizer(), X_test = X)

Learn a QUBO matrix on training set X for a constraint defined by penalty with optional domain information d. By default, it uses a QUBOGradientOptimizer and X as a testing set.

source


# ConstraintLearning.δMethod.
julia
δ(X[, Y]; discrete = true)

Compute the extrema over a collection X``or a pair of collection(X, Y)`.

source


+ \ No newline at end of file diff --git a/dev/learning/intro.html b/dev/learning/intro.html index 421956f..c640a68 100644 --- a/dev/learning/intro.html +++ b/dev/learning/intro.html @@ -5,20 +5,20 @@ Learning about Constraints | Julia Constraints - - + + - + - - - + + + -
Skip to content

Learning about Constraints

About learning constraints related matters.

- +
Skip to content

Learning about Constraints

About learning constraints related matters.

+ \ No newline at end of file diff --git a/dev/learning/layers.html b/dev/learning/layers.html index d3c7238..7219b8c 100644 --- a/dev/learning/layers.html +++ b/dev/learning/layers.html @@ -5,23 +5,23 @@ A layer structure for any ICN | Julia Constraints - - + + - + - - - + + + -
Skip to content

A layer structure for any ICN

The layer.jl file defines a Layer structure and several associated functions for manipulating and interacting with this structure in the context of an Interpretable Compositional Network (ICN).

The Layer structure is used to store a LittleDict of operations that can be selected during the learning phase of an ICN. Each layer can be exclusive, meaning only one operation can be selected at a time. This is particularly useful in the context of ICNs, which are used to learn alternative expressions for highly combinatorial functions, such as those found in Constraint-based Local Search solvers.

# CompositionalNetworks.LayerType.
julia
Layer

A structure to store a LittleDict of operations that can be selected during the learning phase of an ICN. If the layer is exclusive, only one operation can be selected at a time.

source


# CompositionalNetworks.functionsFunction.
julia
functions(layer)

Access the operations of a layer. The container is ordered.

source


# Base.lengthMethod.
julia
length(layer)

Return the number of operations in a layer.

source


# CompositionalNetworks.excluFunction.
julia
exclu(layer)

Return true if the layer has mutually exclusive operations.

source


# CompositionalNetworks.symbolFunction.
julia
symbol(layer, i)

Return the i-th symbols of the operations in a given layer.

source


# CompositionalNetworks.nbits_excluFunction.
julia
nbits_exclu(layer)

Convert the length of an exclusive layer into a number of bits.

source


# CompositionalNetworks.show_layerFunction.
julia
show_layer(layer)

Return a string that contains the elements in a layer.

source


# CompositionalNetworks.selected_sizeFunction.
julia
selected_size(layer, layer_weights)

Return the number of operations selected by layer_weights in layer.

source


# CompositionalNetworks.is_viableFunction.
julia
is_viable(layer, w)
+    
Skip to content

A layer structure for any ICN

The layer.jl file defines a Layer structure and several associated functions for manipulating and interacting with this structure in the context of an Interpretable Compositional Network (ICN).

The Layer structure is used to store a LittleDict of operations that can be selected during the learning phase of an ICN. Each layer can be exclusive, meaning only one operation can be selected at a time. This is particularly useful in the context of ICNs, which are used to learn alternative expressions for highly combinatorial functions, such as those found in Constraint-based Local Search solvers.

# CompositionalNetworks.LayerType.
julia
Layer

A structure to store a LittleDict of operations that can be selected during the learning phase of an ICN. If the layer is exclusive, only one operation can be selected at a time.

source


# CompositionalNetworks.functionsFunction.
julia
functions(layer)

Access the operations of a layer. The container is ordered.

source


# Base.lengthMethod.
julia
length(layer)

Return the number of operations in a layer.

source


# CompositionalNetworks.excluFunction.
julia
exclu(layer)

Return true if the layer has mutually exclusive operations.

source


# CompositionalNetworks.symbolFunction.
julia
symbol(layer, i)

Return the i-th symbols of the operations in a given layer.

source


# CompositionalNetworks.nbits_excluFunction.
julia
nbits_exclu(layer)

Convert the length of an exclusive layer into a number of bits.

source


# CompositionalNetworks.show_layerFunction.
julia
show_layer(layer)

Return a string that contains the elements in a layer.

source


# CompositionalNetworks.selected_sizeFunction.
julia
selected_size(layer, layer_weights)

Return the number of operations selected by layer_weights in layer.

source


# CompositionalNetworks.is_viableFunction.
julia
is_viable(layer, w)
 is_viable(icn)
 is_viable(icn, w)

Assert if a pair of layer/icn and weights compose a viable pattern. If no weights are given with an icn, it will check the current internal value.

source


# CompositionalNetworks.generate_inclusive_operationsFunction.
julia
generate_inclusive_operations(predicate, bits)
-generate_exclusive_operation(max_op_number)

Generates the operations (weights) of a layer with inclusive/exclusive operations.

source


# CompositionalNetworks.generate_exclusive_operationFunction.
julia
generate_exclusive_operation(max_op_number)

Generates the operations (weights) of a layer with exclusive operations.

source


Missing docstring.

Missing docstring for generate_weigths. Check Documenter's build log for details.

- +generate_exclusive_operation(max_op_number)

Generates the operations (weights) of a layer with inclusive/exclusive operations.

source


# CompositionalNetworks.generate_exclusive_operationFunction.
julia
generate_exclusive_operation(max_op_number)

Generates the operations (weights) of a layer with exclusive operations.

source


Missing docstring.

Missing docstring for generate_weigths. Check Documenter's build log for details.

+ \ No newline at end of file diff --git a/dev/learning/qubo_constraints.html b/dev/learning/qubo_constraints.html index fa5a893..135699c 100644 --- a/dev/learning/qubo_constraints.html +++ b/dev/learning/qubo_constraints.html @@ -5,20 +5,20 @@ Introduction to QUBOConstraints.jl | Julia Constraints - - + + - + - - - + + + -
Skip to content

Introduction to QUBOConstraints.jl

Introduction to QUBOConstraints.jl.

Basic features

# QUBOConstraints.QUBO_baseFunction.
julia
QUBO_base(n, weight = 1)

A basic QUBO matrix to ensure that binarized variables keep a valid encoding.

source


# QUBOConstraints.QUBO_linear_sumFunction.
julia
QUBO_linear_sum(n, σ)

One valid QUBO matrix given n variables and parameter σ for the linear sum constraint.

source


- +
Skip to content

Introduction to QUBOConstraints.jl

Introduction to QUBOConstraints.jl.

Basic features

# QUBOConstraints.QUBO_baseFunction.
julia
QUBO_base(n, weight = 1)

A basic QUBO matrix to ensure that binarized variables keep a valid encoding.

source


# QUBOConstraints.QUBO_linear_sumFunction.
julia
QUBO_linear_sum(n, σ)

One valid QUBO matrix given n variables and parameter σ for the linear sum constraint.

source


+ \ No newline at end of file diff --git a/dev/learning/qubo_encoding.html b/dev/learning/qubo_encoding.html index 5ff7708..df28745 100644 --- a/dev/learning/qubo_encoding.html +++ b/dev/learning/qubo_encoding.html @@ -5,20 +5,20 @@ Encoding for QUBO programs | Julia Constraints - - + + - + - - - + + + -
Skip to content

Encoding for QUBO programs

# QUBOConstraints.is_validFunction.
julia
is_valid(x, encoding::Symbol = :none)

Check if x has a valid format for encoding.

For instance, if encoding == :one_hot, at most one bit of x can be set to 1.

source


# QUBOConstraints.binarizeFunction.
julia
binarize(x[, domain]; binarization = :one_hot)

Binarize x following the binarization encoding. If x is a vector (instead of a number per say), domain is optional.

source


# QUBOConstraints.debinarizeFunction.
julia
debinarize(x[, domain]; binarization = :one_hot)

Transform a binary vector into a number or a set of number. If domain is not given, it will compute a default value based on binarization and x.

source


- +
Skip to content

Encoding for QUBO programs

# QUBOConstraints.is_validFunction.
julia
is_valid(x, encoding::Symbol = :none)

Check if x has a valid format for encoding.

For instance, if encoding == :one_hot, at most one bit of x can be set to 1.

source


# QUBOConstraints.binarizeFunction.
julia
binarize(x[, domain]; binarization = :one_hot)

Binarize x following the binarization encoding. If x is a vector (instead of a number per say), domain is optional.

source


# QUBOConstraints.debinarizeFunction.
julia
debinarize(x[, domain]; binarization = :one_hot)

Transform a binary vector into a number or a set of number. If domain is not given, it will compute a default value based on binarization and x.

source


+ \ No newline at end of file diff --git a/dev/learning/qubo_learning.html b/dev/learning/qubo_learning.html index 357afc1..992f424 100644 --- a/dev/learning/qubo_learning.html +++ b/dev/learning/qubo_learning.html @@ -5,19 +5,19 @@ Learning QUBO matrices | Julia Constraints - - + + - + - - - + + + -
Skip to content

Learning QUBO matrices

Interface

# QUBOConstraints.AbstractOptimizerType.
julia
AbstractOptimizer

An abstract type (interface) used to learn QUBO matrices from constraints. Only a train method is required.

source


# QUBOConstraints.trainFunction.
julia
train(args...)

Default train method for any AbstractOptimizer.

source


Examples with various optimizers

Gradient Descent

julia
struct GradientDescentOptimizer <: QUBOConstraints.AbstractOptimizer
+    
Skip to content

Learning QUBO matrices

Interface

# QUBOConstraints.AbstractOptimizerType.
julia
AbstractOptimizer

An abstract type (interface) used to learn QUBO matrices from constraints. Only a train method is required.

source


# QUBOConstraints.trainFunction.
julia
train(args...)

Default train method for any AbstractOptimizer.

source


Examples with various optimizers

Gradient Descent

julia
struct GradientDescentOptimizer <: QUBOConstraints.AbstractOptimizer
     binarization::Symbol
     η::Float64
     precision::Int
@@ -135,8 +135,8 @@
     X_test = X,
 )
     return train(X, penalty, to_domains(X, dom_stuff); optimizer, X_test)
-end
- +end
+ \ No newline at end of file diff --git a/dev/learning/transformation.html b/dev/learning/transformation.html index e771d74..6d7e569 100644 --- a/dev/learning/transformation.html +++ b/dev/learning/transformation.html @@ -5,19 +5,19 @@ Transformations Layer | Julia Constraints - - + + - + - - - + + + -
Skip to content

Transformations Layer

Some text to describe the transformation layer within usual ICNs.

The implementation of the transformation relies heavily on the use of the lazy function (make a ref, open an issue to make @lazy macro in front of each transformation).

List of transformations

List the possible parameters and how it affects the transformations.

Non-parametric

# CompositionalNetworks.tr_identityFunction.
julia
tr_identity(i, x)
+    
Skip to content

Transformations Layer

Some text to describe the transformation layer within usual ICNs.

The implementation of the transformation relies heavily on the use of the lazy function (make a ref, open an issue to make @lazy macro in front of each transformation).

List of transformations

List the possible parameters and how it affects the transformations.

Non-parametric

# CompositionalNetworks.tr_identityFunction.
julia
tr_identity(i, x)
 tr_identity(x)
 tr_identity(x, X::AbstractVector)

Identity function. Already defined in Julia as identity, specialized for vectors. When X is provided, the result is computed without allocations.

source


# CompositionalNetworks.tr_count_eqFunction.
julia
tr_count_eq(i, x)
 tr_count_eq(x)
@@ -45,8 +45,8 @@
 val_transforms = make_transformations(:val)
 
 # Apply a count equal to parameter transformation
-count_eq_param_result = val_transforms[:count_eq_param](data, param)

source


# CompositionalNetworks.transformation_layerFunction.
julia
transformation_layer(param = Vector{Symbol}())

Generate the layer of transformations functions of the ICN. Iff param value is non empty, also includes all the related parametric transformations.

source


- +count_eq_param_result = val_transforms[:count_eq_param](data, param)

source


# CompositionalNetworks.transformation_layerFunction.
julia
transformation_layer(param = Vector{Symbol}())

Generate the layer of transformations functions of the ICN. Iff param value is non empty, also includes all the related parametric transformations.

source


+ \ No newline at end of file diff --git a/dev/meta/meta_strategist.html b/dev/meta/meta_strategist.html index 9bb1b22..98add15 100644 --- a/dev/meta/meta_strategist.html +++ b/dev/meta/meta_strategist.html @@ -5,20 +5,20 @@ MetaStrategist.jl | Julia Constraints - - + + - + - - - + + + -
Skip to content

MetaStrategist.jl

Documentation for MetaStrategist.jl.

- +
Skip to content

MetaStrategist.jl

Documentation for MetaStrategist.jl.

+ \ No newline at end of file diff --git a/dev/perf/api.html b/dev/perf/api.html index d0977a5..76e4ddd 100644 --- a/dev/perf/api.html +++ b/dev/perf/api.html @@ -5,19 +5,19 @@ API | Julia Constraints - - + + - + - - - + + + -
Skip to content

API

Here's the API for PerfChecker.jl

# PerfChecker.arrange_breakingMethod.

Outputs the last breaking or next breaking version.

source


# PerfChecker.arrange_majorMethod.

Outputs the earlier or next major version.

source


# PerfChecker.arrange_patchesMethod.

Outputs the last patch or first patch of a version.

source


# PerfChecker.get_pkg_versionsFunction.

Finds all versions of a package in all the installed registries and returns it as a vector.

Example:

julia
julia> get_pkg_versions("ConstraintLearning")
+    
Skip to content

API

Here's the API for PerfChecker.jl

# PerfChecker.arrange_breakingMethod.

Outputs the last breaking or next breaking version.

source


# PerfChecker.arrange_majorMethod.

Outputs the earlier or next major version.

source


# PerfChecker.arrange_patchesMethod.

Outputs the last patch or first patch of a version.

source


# PerfChecker.get_pkg_versionsFunction.

Finds all versions of a package in all the installed registries and returns it as a vector.

Example:

julia
julia> get_pkg_versions("ConstraintLearning")
 7-element Vector{VersionNumber}:
  v"0.1.4"
  v"0.1.5"
@@ -25,8 +25,8 @@
  v"0.1.6"
  v"0.1.1"
  v"0.1.3"
- v"0.1.2"

source


- + v"0.1.2"

source


+ \ No newline at end of file diff --git a/dev/perf/benchmark_ext.html b/dev/perf/benchmark_ext.html index 3ab40bc..12bc5f8 100644 --- a/dev/perf/benchmark_ext.html +++ b/dev/perf/benchmark_ext.html @@ -5,19 +5,19 @@ BenchmarkTools Extension | Julia Constraints - - + + - + - - - + + + -
Skip to content

BenchmarkTools Extension

A benchmarking extension, based on BenchmarkTools.jl, has been interfaced with PerfChecker.jl. This section will provide some usage examples, documentation, and links to related notebooks.

Usage

Like all other extensions, BenchmarkTools extension can be used in the following way:

julia
julia> using BenchmarkTools, PerfChecker
+    
Skip to content

BenchmarkTools Extension

A benchmarking extension, based on BenchmarkTools.jl, has been interfaced with PerfChecker.jl. This section will provide some usage examples, documentation, and links to related notebooks.

Usage

Like all other extensions, BenchmarkTools extension can be used in the following way:

julia
julia> using BenchmarkTools, PerfChecker
 
 julia> @check :benchmark Dict(:option1 => "value1", :option2 => "value2", :PATH => @__DIR__) begin
   # the prelimnary code goes here
@@ -34,8 +34,8 @@
 :gctrial => BenchmarkTools.DEFAULT_PARAMETERS.gctrial
 :gcsample => BenchmarkTools.DEFAULT_PARAMETERS.gcsample
 :time_tolerance => BenchmarkTools.DEFAULT_PARAMETERS.time_tolerance
-:memory_tolerance => BenchmarkTools.DEFAULT_PARAMETERS.memory_tolerance
- +:memory_tolerance => BenchmarkTools.DEFAULT_PARAMETERS.memory_tolerance
+ \ No newline at end of file diff --git a/dev/perf/chairmarks_ext.html b/dev/perf/chairmarks_ext.html index 28e1b4b..a7fcaa1 100644 --- a/dev/perf/chairmarks_ext.html +++ b/dev/perf/chairmarks_ext.html @@ -5,19 +5,19 @@ Chairmarks Extension | Julia Constraints - - + + - + - - - + + + -
Skip to content

Chairmarks Extension

A benchmarking extension, based on Chairmarks.jl, has been interfaced with PerfChecker.jl. This section will provide some usage examples, documentation, and links to related notebooks.

Usage

Like all other extensions, BenchmarkTools extension can be used in the following way:

julia
julia> using Chairmarks, PerfChecker
+    
Skip to content

Chairmarks Extension

A benchmarking extension, based on Chairmarks.jl, has been interfaced with PerfChecker.jl. This section will provide some usage examples, documentation, and links to related notebooks.

Usage

Like all other extensions, BenchmarkTools extension can be used in the following way:

julia
julia> using Chairmarks, PerfChecker
 
 julia> @check :chairmark Dict(:option1 => "value1", :option2 => "value2", :PATH => @__DIR__) begin
   # the prelimnary code goes here
@@ -30,8 +30,8 @@
 :evals => nothing
 :seconds => 1,
 :samples => nothing
-:gc => true
- +:gc => true
+ \ No newline at end of file diff --git a/dev/perf/perf_checker.html b/dev/perf/perf_checker.html index 30c2560..fb97ca5 100644 --- a/dev/perf/perf_checker.html +++ b/dev/perf/perf_checker.html @@ -5,19 +5,19 @@ PerfChecker.jl | Julia Constraints - - + + - + - - - + + + -
Skip to content

PerfChecker.jl

PerfChecker.jl is a package designed for package authors to easily performance test their packages. To achieve that, it provides the follwing features:

  • The main macro @check, which provides an easy-to-use interface over various interfaces, configurable for various backends via a dictionary.

  • (WIP) A CI for reproducible performance testing.

  • Visualization of different metrics from @check using Makie.jl

Usage

The primary usage of PerfChecker.jl looks like this:

julia
  using PerfChecker
+    
Skip to content

PerfChecker.jl

PerfChecker.jl is a package designed for package authors to easily performance test their packages. To achieve that, it provides the follwing features:

  • The main macro @check, which provides an easy-to-use interface over various interfaces, configurable for various backends via a dictionary.

  • (WIP) A CI for reproducible performance testing.

  • Visualization of different metrics from @check using Makie.jl

Usage

The primary usage of PerfChecker.jl looks like this:

julia
  using PerfChecker
   # optional using custom backend like BenchmarkTools, Chairmark etc 
   config = Dict(:option1 => "value1", :option2 => :value2)
   
@@ -29,8 +29,8 @@
 
   # Visualization of the results
   using Makie
-  checkres_to_scatterlines(results)

The config dictionary can take many options, depending on the backend.

Some of the commonly used options are:

  • :PATH => The path where to the default environment of julia when creating a new process.

  • :pkgs => A list of versions to test performance for. Its defined as the Tuple, (name::String, option::Symbol, versions::Vector{VersionNumber}, last_or_first::Bool) Can be given as follows:

    • name is the name of the package.

    • option is one of the 5 symbols:

      • :patches: last patch or first patch of a version

      • :breaking: last breaking or next breaking version

      • :major: previous or next major version

      • :minor: previous or next minor version

      • :custom: custom version numbers (provide any boolean value for last_or_first in this case as it doesn't matter)

    • versions: The input for the provided option

    • last_or_first: Input for the provided option

  • :tags => A list of tags (a vector of symbols) to easily tag performance tests.

  • :devops => Giving a custom input to Pkg.develop. Intended to be used to test performance of a local development branch of a pacakge with previous versions. Often can be used as simply as :devops => "MyPackageName"

  • :threads => An integer to select the number of threads to start Julia with.

Checkout the documentation of the other backends for more default options and the default values.

- + checkres_to_scatterlines(results)

The config dictionary can take many options, depending on the backend.

Some of the commonly used options are:

  • :PATH => The path where to the default environment of julia when creating a new process.

  • :pkgs => A list of versions to test performance for. Its defined as the Tuple, (name::String, option::Symbol, versions::Vector{VersionNumber}, last_or_first::Bool) Can be given as follows:

    • name is the name of the package.

    • option is one of the 5 symbols:

      • :patches: last patch or first patch of a version

      • :breaking: last breaking or next breaking version

      • :major: previous or next major version

      • :minor: previous or next minor version

      • :custom: custom version numbers (provide any boolean value for last_or_first in this case as it doesn't matter)

    • versions: The input for the provided option

    • last_or_first: Input for the provided option

  • :tags => A list of tags (a vector of symbols) to easily tag performance tests.

  • :devops => Giving a custom input to Pkg.develop. Intended to be used to test performance of a local development branch of a pacakge with previous versions. Often can be used as simply as :devops => "MyPackageName"

  • :threads => An integer to select the number of threads to start Julia with.

Checkout the documentation of the other backends for more default options and the default values.

+ \ No newline at end of file diff --git a/dev/perf/perf_interface.html b/dev/perf/perf_interface.html index 3f7f4b9..f2f2b26 100644 --- a/dev/perf/perf_interface.html +++ b/dev/perf/perf_interface.html @@ -5,19 +5,19 @@ Extending PerfChecker | Julia Constraints - - + + - + - - - + + + -
Skip to content

Extending PerfChecker

PerfChecker was build as an easy to extend interface. A good reference example for this is the Chairmarks extension.

Extending PerfChecker works via PkgExtensions feature in Julia. There are 6 essential functions that need to be extended inside the Pkg extension. Each extension has a keyword symbol for it, which users can input to use the extension.

The Default Options

Method to be overloaded: PerfChecker.default_options(::Val{:myperfextension})::Dict

PerfChecker works via a config dictionary. Users can populate this dictionary with options and provide it to the main check macro to customize the performance testing to their liking.

For Chairmarks.jl, it looks like this:

julia
function PerfChecker.default_options(::Val{:chairmark})
+    
Skip to content

Extending PerfChecker

PerfChecker was build as an easy to extend interface. A good reference example for this is the Chairmarks extension.

Extending PerfChecker works via PkgExtensions feature in Julia. There are 6 essential functions that need to be extended inside the Pkg extension. Each extension has a keyword symbol for it, which users can input to use the extension.

The Default Options

Method to be overloaded: PerfChecker.default_options(::Val{:myperfextension})::Dict

PerfChecker works via a config dictionary. Users can populate this dictionary with options and provide it to the main check macro to customize the performance testing to their liking.

For Chairmarks.jl, it looks like this:

julia
function PerfChecker.default_options(::Val{:chairmark})
     return Dict(
         :threads => 1,
         :track => "none",
@@ -43,8 +43,8 @@
     bytes = [chair.samples[i].bytes for i in 1:l]
     allocs = [chair.samples[i].allocs for i in 1:l]
     return Table(times = times, gctimes = gctimes, bytes = bytes, allocs = allocs)
-end

There are also other functions that can be overloaded, mostly related to plotting but these are the basic functions to extend PerfChecker for a custom backend.

- +end

There are also other functions that can be overloaded, mostly related to plotting but these are the basic functions to extend PerfChecker for a custom backend.

+ \ No newline at end of file diff --git a/dev/perf/tutorial.html b/dev/perf/tutorial.html index 3301edd..9957c51 100644 --- a/dev/perf/tutorial.html +++ b/dev/perf/tutorial.html @@ -5,19 +5,19 @@ Tutorial | Julia Constraints - - + + - + - - - + + + -
Skip to content

Tutorial

Taken from PerfChecker.jl examples, this is a guide for performance testing of PatterFolds.jl package using Chairmarks.jl

Using PerfChecker.jl requires an environment with the dependencies present in it.

The actual script looks like this:

julia
using PerfChecker, Chairmarks, CairoMakie
+    
Skip to content

Tutorial

Taken from PerfChecker.jl examples, this is a guide for performance testing of PatterFolds.jl package using Chairmarks.jl

Using PerfChecker.jl requires an environment with the dependencies present in it.

The actual script looks like this:

julia
using PerfChecker, Chairmarks, CairoMakie
 
 d = Dict(:path => @__DIR__, :evals => 10, :samples => 1000,
     :seconds => 100, :tags => [:patterns, :intervals],
@@ -56,8 +56,8 @@
 for kwarg in [:times, :gctimes, :bytes, :allocs]
     c2 = checkres_to_boxplots(x, Val(:chairmark); kwarg)
     save(joinpath(@__DIR__, "visuals", "chair_boxplots_$kwarg.png"), c2)
-end

d here is the configuration dictionary. x stores the results from performance testing

The code below the macro call is for plotting and storing the plots. It creates the visuals folder and stores the following plots in the folder:

Boxplots from Chairmarks for allocations:

chair_boxplots

Boxplots from Chairmarks for times:

chair_times

Evolution of different metrics across versions according to Chairmarks:

chair_evolution
- +end

d here is the configuration dictionary. x stores the results from performance testing

The code below the macro call is for plotting and storing the plots. It creates the visuals folder and stores the following plots in the folder:

Boxplots from Chairmarks for allocations:

chair_boxplots

Boxplots from Chairmarks for times:

chair_times

Evolution of different metrics across versions according to Chairmarks:

chair_evolution
+ \ No newline at end of file diff --git a/dev/public_api.html b/dev/public_api.html index 069f45f..681a023 100644 --- a/dev/public_api.html +++ b/dev/public_api.html @@ -5,19 +5,19 @@ Public API | Julia Constraints - - + + - + - - - + + + -
Skip to content

Public API

# ConstraintCommons.AutomatonType.
julia
Automaton{S, T, F <: Union{S, Vector{S}, Set{S}}} <: AbstractAutomaton

A minimal implementation of a deterministic automaton structure.

source


# ConstraintCommons.MDDType.
julia
MDD{S,T} <: AbstractMultivaluedDecisionDiagram

A minimal implementation of a multivalued decision diagram structure.

source


# ConstraintCommons.acceptMethod.
julia
accept(a::Union{Automaton, MDD}, w)

Return true if a accepts the word w and false otherwise.

source


# ConstraintCommons.consinMethod.
julia
consin(::Any, ::Nothing)

Extends Base.in (or ) when the set is nothing. Returns false.

source


# ConstraintCommons.consisemptyMethod.
julia
consisempty(::Nothing)

Extends Base.isempty when the set is nothing. Returns true.

source


# ConstraintCommons.extract_parametersMethod.
julia
extract_parameters(m::Union{Method, Function}; parameters)

Extracts the intersection between the kargs of m and parameters (defaults to USUAL_CONSTRAINT_PARAMETERS).

source


# ConstraintCommons.incsert!Function.
julia
incsert!(d::Union{AbstractDict, AbstractDictionary}, ind, val = 1)

Increase or insert a counter in a dictionary-based collection. The counter insertion defaults to val = 1.

source


# ConstraintCommons.oversampleMethod.
julia
oversample(X, f)

Oversample elements of X until the boolean function f has as many true and false configurations.

source


# ConstraintCommons.symconFunction.
julia
symcon(s1::Symbol, s2::Symbol, connector::AbstractString="_")

Extends * to Symbols multiplication by connecting the symbols by an _.

source


# ConstraintCommons.δ_extremaMethod.
julia
δ_extrema(X...)

Compute both the difference between the maximum and the minimum of over all the collections of X.

source


# ConstraintDomains.AbstractDomainType.
julia
AbstractDomain

An abstract super type for any domain type. A domain type D <: AbstractDomain must implement the following methods to properly interface AbstractDomain.

  • Base.∈(val, ::D)

  • Base.rand(::D)

  • Base.length(::D) that is the number of elements in a discrete domain, and the distance between bounds or similar for a continuous domain

Additionally, if the domain is used in a dynamic context, it can extend

  • add!(::D, args)

  • delete!(::D, args)

where args depends on D's structure

source


# ConstraintDomains.ContinuousDomainType.
julia
ContinuousDomain{T <: Real} <: AbstractDomain

An abstract supertype for all continuous domains.

source


# ConstraintDomains.DiscreteDomainType.
julia
DiscreteDomain{T <: Number} <: AbstractDomain

An abstract supertype for discrete domains (set, range).

source


# ConstraintDomains.ExploreSettingsMethod.
julia
ExploreSettings(
+    
Skip to content

Public API

# ConstraintCommons.AutomatonType.
julia
Automaton{S, T, F <: Union{S, Vector{S}, Set{S}}} <: AbstractAutomaton

A minimal implementation of a deterministic automaton structure.

source


# ConstraintCommons.MDDType.
julia
MDD{S,T} <: AbstractMultivaluedDecisionDiagram

A minimal implementation of a multivalued decision diagram structure.

source


# ConstraintCommons.acceptMethod.
julia
accept(a::Union{Automaton, MDD}, w)

Return true if a accepts the word w and false otherwise.

source


# ConstraintCommons.consinMethod.
julia
consin(::Any, ::Nothing)

Extends Base.in (or ) when the set is nothing. Returns false.

source


# ConstraintCommons.consisemptyMethod.
julia
consisempty(::Nothing)

Extends Base.isempty when the set is nothing. Returns true.

source


# ConstraintCommons.extract_parametersMethod.
julia
extract_parameters(m::Union{Method, Function}; parameters)

Extracts the intersection between the kargs of m and parameters (defaults to USUAL_CONSTRAINT_PARAMETERS).

source


# ConstraintCommons.incsert!Function.
julia
incsert!(d::Union{AbstractDict, AbstractDictionary}, ind, val = 1)

Increase or insert a counter in a dictionary-based collection. The counter insertion defaults to val = 1.

source


# ConstraintCommons.oversampleMethod.
julia
oversample(X, f)

Oversample elements of X until the boolean function f has as many true and false configurations.

source


# ConstraintCommons.symconFunction.
julia
symcon(s1::Symbol, s2::Symbol, connector::AbstractString="_")

Extends * to Symbols multiplication by connecting the symbols by an _.

source


# ConstraintCommons.δ_extremaMethod.
julia
δ_extrema(X...)

Compute both the difference between the maximum and the minimum of over all the collections of X.

source


# ConstraintDomains.AbstractDomainType.
julia
AbstractDomain

An abstract super type for any domain type. A domain type D <: AbstractDomain must implement the following methods to properly interface AbstractDomain.

  • Base.∈(val, ::D)

  • Base.rand(::D)

  • Base.length(::D) that is the number of elements in a discrete domain, and the distance between bounds or similar for a continuous domain

Additionally, if the domain is used in a dynamic context, it can extend

  • add!(::D, args)

  • delete!(::D, args)

where args depends on D's structure

source


# ConstraintDomains.ContinuousDomainType.
julia
ContinuousDomain{T <: Real} <: AbstractDomain

An abstract supertype for all continuous domains.

source


# ConstraintDomains.DiscreteDomainType.
julia
DiscreteDomain{T <: Number} <: AbstractDomain

An abstract supertype for discrete domains (set, range).

source


# ConstraintDomains.ExploreSettingsMethod.
julia
ExploreSettings(
     domains;
     complete_search_limit = 10^6,
     max_samplings = sum(domain_size, domains),
@@ -32,8 +32,8 @@
 domain(intervals::Vector{Tuple{Tuple{T, Bool},Tuple{T, Bool}}}) where {T <: Real}

Construct a domain of continuous interval(s).

source


# ConstraintDomains.domain_sizeMethod.
julia
domain_size(itv::Intervals)

Return the difference between the highest and lowest values in itv.

source


# ConstraintDomains.domain_sizeMethod.
julia
domain_size(d <: AbstractDomain)

Fallback method for domain_size(d) that return length(d).

source


# ConstraintDomains.domain_sizeMethod.
julia
domain_size(d::D) where D <: DiscreteDomain

Return the maximum distance between two points in d.

source


# ConstraintDomains.exploreMethod.
julia
explore(domains, concept, param = nothing; search_limit = 1000, solutions_limit = 100)

Search (a part of) a search space and returns a pair of vector of configurations: (solutions, non_solutions). If the search space size is over search_limit, then both solutions and non_solutions are limited to solutions_limit.

Beware that if the density of the solutions in the search space is low, solutions_limit needs to be reduced. This process will be automatic in the future (simple reinforcement learning).

Arguments:

  • domains: a collection of domains

  • concept: the concept of the targeted constraint

  • param: an optional parameter of the constraint

  • sol_number: the required number of solutions (half of the number of configurations), default to 100

source


# ConstraintDomains.generate_parametersMethod.
julia
generate_parameters(d<:AbstractDomain, param)

Generates random parameters based on the domain d and the kind of parameters param.

source


# ConstraintDomains.get_domainMethod.
julia
get_domain(::AbstractDomain)

Access the internal structure of any domain type.

source


# ConstraintDomains.intersect_domainsMethod.
julia
intersect_domains(d₁, d₂)

Compute the intersections of two domains.

source


# ConstraintDomains.merge_domainsMethod.
julia
merge_domains(d₁::AbstractDomain, d₂::AbstractDomain)

Merge two domains of same nature (discrete/contiuous).

source


# ConstraintDomains.to_domainsMethod.
julia
to_domains(args...)

Convert various arguments into valid domains format.

source


# Constraints.USUAL_CONSTRAINTSConstant.
julia
USUAL_CONSTRAINTS::Dict

Dictionary that contains all the usual constraints defined in Constraint.jl. It is based on XCSP3-core specifications available at https://arxiv.org/abs/2009.00514

Adding a new constraint is as simple as defining a new function with the same name as the constraint and using the @usual macro to define it. The macro will take care of adding the new constraint to the USUAL_CONSTRAINTS dictionary.

Example

julia
@usual concept_all_different(x; vals=nothing) = xcsp_all_different(list=x, except=vals)

source


# Constraints.USUAL_SYMMETRIESConstant.
julia
USUAL_SYMMETRIES

A Dictionary that contains the function to apply for each symmetry to avoid searching a whole space.

source


# Constraints.ConstraintType.
julia
Constraint

Parametric structure with the following fields.

  • concept: a Boolean function that, given an assignment x, outputs true if x satisfies the constraint, and false otherwise.

  • error: a positive function that works as preferences over invalid assignments. Return 0.0 if the constraint is satisfied, and a strictly positive real otherwise.

source


# ConstraintCommons.extract_parametersFunction.
julia
extract_parameters(s::Symbol, constraints_dict=USUAL_CONSTRAINTS; parameters=ConstraintCommons.USUAL_CONSTRAINT_PARAMETERS)

Return the parameters of the constraint s in constraints_dict.

Arguments

  • s::Symbol: the constraint name.

  • constraints_dict::Dict{Symbol,Constraint}: dictionary of constraints. Default is USUAL_CONSTRAINTS.

  • parameters::Vector{Symbol}: vector of parameters. Default is ConstraintCommons.USUAL_CONSTRAINT_PARAMETERS.

Example

julia
extract_parameters(:all_different)

source


# Constraints.argsMethod.
julia
args(c::Constraint)

Return the expected length restriction of the arguments in a constraint c. The value nothing indicates that any strictly positive number of value is accepted.

source


# Constraints.conceptMethod.
julia
concept(c::Constraint)

Return the concept (function) of constraint c. concept(c::Constraint, x...; param = nothing) Apply the concept of c to values x and optionally param.

source


# Constraints.conceptMethod.
julia
concept(s::Symbol, args...; kargs...)

Return the concept of the constraint s applied to args and kargs. This is a shortcut for concept(USUAL_CONSTRAINTS[s])(args...; kargs...).

Arguments

  • s::Symbol: the constraint name.

  • args...: the arguments to apply the concept to.

  • kargs...: the keyword arguments to apply the concept to.

Example

julia
concept(:all_different, [1, 2, 3])

source


# Constraints.constraints_descriptionsFunction.
julia
constraints_descriptions(C=USUAL_CONSTRAINTS)

Return a pretty table with the descriptions of the constraints in C.

Arguments

  • C::Dict{Symbol,Constraint}: dictionary of constraints. Default is USUAL_CONSTRAINTS.

Example

julia
constraints_descriptions()

source


# Constraints.constraints_parametersFunction.
julia
constraints_parameters(C=USUAL_CONSTRAINTS)

Return a pretty table with the parameters of the constraints in C.

Arguments

  • C::Dict{Symbol,Constraint}: dictionary of constraints. Default is USUAL_CONSTRAINTS.

Example

julia
constraints_parameters()

source


# Constraints.describeFunction.
julia
describe(constraints::Dict{Symbol,Constraint}=USUAL_CONSTRAINTS; width=150)

Return a pretty table with the description of the constraints in constraints.

Arguments

  • constraints::Dict{Symbol,Constraint}: dictionary of constraints to describe. Default is USUAL_CONSTRAINTS.

  • width::Int: width of the table.

Example

julia
describe()

source


# Constraints.error_fMethod.
julia
error_f(c::Constraint)

Return the error function of constraint c. error_f(c::Constraint, x; param = nothing) Apply the error function of c to values x and optionally param.

source


# Constraints.params_lengthMethod.
julia
params_length(c::Constraint)

Return the expected length restriction of the arguments in a constraint c. The value nothing indicates that any strictly positive number of parameters is accepted.

source


# Constraints.symmetriesMethod.
julia
symmetries(c::Constraint)

Return the list of symmetries of c.

source


# CompositionalNetworks.CompositionMethod.
julia
Composition(f::F, symbols) where {F<:Function}

Construct a Composition.

source


# CompositionalNetworks.CompositionType.
julia
struct Composition{F<:Function}

Store the all the information of a composition learned by an ICN.

source


# CompositionalNetworks.ICNType.
julia
ICN(; nvars, dom_size, param, transformation, arithmetic, aggregation, comparison)

Construct an Interpretable Compositional Network, with the following arguments:

  • nvars: number of variable in the constraint

  • dom_size: maximum domain size of any variable in the constraint

  • param: optional parameter (default to nothing)

  • transformation: a transformation layer (optional)

  • arithmetic: a arithmetic layer (optional)

  • aggregation: a aggregation layer (optional)

  • comparison: a comparison layer (optional)

source


# CompositionalNetworks.aggregation_layerMethod.
julia
aggregation_layer()

Generate the layer of aggregations of the ICN. The operations are mutually exclusive, that is only one will be selected.

source


# CompositionalNetworks.arithmetic_layerMethod.
julia
arithmetic_layer()

Generate the layer of arithmetic operations of the ICN. The operations are mutually exclusive, that is only one will be selected.

source


# CompositionalNetworks.codeFunction.
julia
code(c::Composition, lang=:maths; name="composition")

Access the code of a composition c in a given language lang. The name of the generated method is optional.

source


# CompositionalNetworks.comparison_layerFunction.
julia
comparison_layer(param = false)

Generate the layer of transformations functions of the ICN. Iff param value is set, also includes all the parametric comparison with that value. The operations are mutually exclusive, that is only one will be selected.

source


# CompositionalNetworks.composeFunction.
julia
compose(icn, weights=nothing)

Return a function composed by some of the operations of a given ICN. Can be applied to any vector of variables. If weights are given, will assign to icn.

source


# CompositionalNetworks.compose_to_file!Method.
julia
compose_to_file!(concept, name, path; domains, param = nothing, language = :Julia, search = :complete, global_iter = 10, local_iter = 100, metric = hamming, popSize = 200)

Explore, learn and compose a function and write it to a file.

Arguments:

  • concept: the concept to learn

  • name: the name to give to the constraint

  • path: path of the output file

Keywords arguments:

  • domains: domains that defines the search space

  • param: an optional parameter of the constraint

  • language: the language to export to, default to :julia

  • search: either :partial or :complete search

  • global_iter: number of learning iteration

  • local_iter: number of generation in the genetic algorithm

  • metric: the metric to measure the distance between a configuration and known solutions

  • popSize: size of the population in the genetic algorithm

source


# CompositionalNetworks.compositionMethod.
julia
composition(c::Composition)

Access the actual method of an ICN composition c.

source


# CompositionalNetworks.composition_to_file!Function.
julia
composition_to_file!(c::Composition, path, name, language=:Julia)

Write the composition code in a given language into a file at path.

source


# CompositionalNetworks.explore_learn_composeMethod.
julia
explore_learn_compose(concept; domains, param = nothing, search = :complete, global_iter = 10, local_iter = 100, metric = hamming, popSize = 200, action = :composition)

Explore a search space, learn a composition from an ICN, and compose an error function.

Arguments:

  • concept: the concept of the targeted constraint

  • domains: domains of the variables that define the training space

  • param: an optional parameter of the constraint

  • search: either flexible,:partial or :complete search. Flexible search will use search_limit and solutions_limit to determine if the search space needs to be partially or completely explored

  • global_iter: number of learning iteration

  • local_iter: number of generation in the genetic algorithm

  • metric: the metric to measure the distance between a configuration and known solutions

  • popSize: size of the population in the genetic algorithm

  • action: either :symbols to have a description of the composition or :composition to have the composed function itself

source


# CompositionalNetworks.hammingMethod.
julia
hamming(x, X)

Compute the hamming distance of x over a collection of solutions X, i.e. the minimal number of variables to switch in xto reach a solution.

source


# CompositionalNetworks.lazyMethod.
julia
lazy(funcs::Function...)

Generate methods extended to a vector instead of one of its components. A function f should have the following signature: f(i::Int, x::V).

source


# CompositionalNetworks.lazy_paramMethod.
julia
lazy_param(funcs::Function...)

Generate methods extended to a vector instead of one of its components. A function f should have the following signature: f(i::Int, x::V; param).

source


# CompositionalNetworks.learn_composeMethod.
julia
learn_compose(;
     nvars, dom_size, param=nothing, icn=ICN(nvars, dom_size, param),
     X, X_sols, global_iter=100, local_iter=100, metric=hamming, popSize=200
-)

Create an ICN, optimize it, and return its composition.

source


# CompositionalNetworks.manhattanMethod.
julia
manhattan(x, X)

source


# CompositionalNetworks.minkowskiMethod.
julia
minkowski(x, X, p)

source


# CompositionalNetworks.nbitsMethod.
julia
nbits(icn)

Return the expected number of bits of a viable weight of an ICN.

source


# CompositionalNetworks.regularizationMethod.
julia
regularization(icn)

Return the regularization value of an ICN weights, which is proportional to the normalized number of operations selected in the icn layers.

source


# CompositionalNetworks.show_layersMethod.
julia
show_layers(icn)

Return a formatted string with each layers in the icn.

source


# CompositionalNetworks.symbolsMethod.
julia
symbols(c::Composition)

Output the composition as a layered collection of Symbols.

source


# CompositionalNetworks.transformation_layerFunction.
julia
transformation_layer(param = Vector{Symbol}())

Generate the layer of transformations functions of the ICN. Iff param value is non empty, also includes all the related parametric transformations.

source


# CompositionalNetworks.weights!Method.
julia
weights!(icn, weights)

Set the weights of an ICN with a BitVector.

source


# CompositionalNetworks.weightsMethod.
julia
weights(icn)

Access the current set of weights of an ICN.

source


# CompositionalNetworks.weights_biasMethod.
julia
weights_bias(x)

A metric that bias x towards operations with a lower bit. Do not affect the main metric.

source


# QUBOConstraints.QUBO_linear_sumMethod.
julia
QUBO_linear_sum(n, σ)

One valid QUBO matrix given n variables and parameter σ for the linear sum constraint.

source


# QUBOConstraints.binarizeMethod.
julia
binarize(x[, domain]; binarization = :one_hot)

Binarize x following the binarization encoding. If x is a vector (instead of a number per say), domain is optional.

source


# QUBOConstraints.debinarizeMethod.
julia
debinarize(x[, domain]; binarization = :one_hot)

Transform a binary vector into a number or a set of number. If domain is not given, it will compute a default value based on binarization and x.

source


# QUBOConstraints.is_validFunction.
julia
is_valid(x, encoding::Symbol = :none)

Check if x has a valid format for encoding.

For instance, if encoding == :one_hot, at most one bit of x can be set to 1.

source


# QUBOConstraints.trainMethod.
julia
train(args...)

Default train method for any AbstractOptimizer.

source


- +)

Create an ICN, optimize it, and return its composition.

source


# CompositionalNetworks.manhattanMethod.
julia
manhattan(x, X)

source


# CompositionalNetworks.minkowskiMethod.
julia
minkowski(x, X, p)

source


# CompositionalNetworks.nbitsMethod.
julia
nbits(icn)

Return the expected number of bits of a viable weight of an ICN.

source


# CompositionalNetworks.regularizationMethod.
julia
regularization(icn)

Return the regularization value of an ICN weights, which is proportional to the normalized number of operations selected in the icn layers.

source


# CompositionalNetworks.show_layersMethod.
julia
show_layers(icn)

Return a formatted string with each layers in the icn.

source


# CompositionalNetworks.symbolsMethod.
julia
symbols(c::Composition)

Output the composition as a layered collection of Symbols.

source


# CompositionalNetworks.transformation_layerFunction.
julia
transformation_layer(param = Vector{Symbol}())

Generate the layer of transformations functions of the ICN. Iff param value is non empty, also includes all the related parametric transformations.

source


# CompositionalNetworks.weights!Method.
julia
weights!(icn, weights)

Set the weights of an ICN with a BitVector.

source


# CompositionalNetworks.weightsMethod.
julia
weights(icn)

Access the current set of weights of an ICN.

source


# CompositionalNetworks.weights_biasMethod.
julia
weights_bias(x)

A metric that bias x towards operations with a lower bit. Do not affect the main metric.

source


# QUBOConstraints.QUBO_linear_sumMethod.
julia
QUBO_linear_sum(n, σ)

One valid QUBO matrix given n variables and parameter σ for the linear sum constraint.

source


# QUBOConstraints.binarizeMethod.
julia
binarize(x[, domain]; binarization = :one_hot)

Binarize x following the binarization encoding. If x is a vector (instead of a number per say), domain is optional.

source


# QUBOConstraints.debinarizeMethod.
julia
debinarize(x[, domain]; binarization = :one_hot)

Transform a binary vector into a number or a set of number. If domain is not given, it will compute a default value based on binarization and x.

source


# QUBOConstraints.is_validFunction.
julia
is_valid(x, encoding::Symbol = :none)

Check if x has a valid format for encoding.

For instance, if encoding == :one_hot, at most one bit of x can be set to 1.

source


# QUBOConstraints.trainMethod.
julia
train(args...)

Default train method for any AbstractOptimizer.

source


+ \ No newline at end of file diff --git a/dev/solvers/cbls.html b/dev/solvers/cbls.html index 56e5222..4c21410 100644 --- a/dev/solvers/cbls.html +++ b/dev/solvers/cbls.html @@ -5,27 +5,27 @@ CBLS.jl | Julia Constraints - - + + - + - - - + + + -
Skip to content

CBLS.jl

Documentation for CBLS.jl.

# CBLS.AllDifferentType.

Global constraint ensuring that all the values of a given configuration are unique.

julia
@constraint(model, X in AllDifferent())

source


# CBLS.AllEqualType.

Global constraint ensuring that all the values of X are all equal.

julia
@constraint(model, X in AllEqual())

source


# CBLS.AtLeastType.

Constraint ensuring that the number of occurrences of the values in vals in x is at least val.

julia
@constraint(model, X in AtLeast(val, vals))

source


# CBLS.AtMostType.

Constraint ensuring that the number of occurrences of the values in vals in x is at most val.

julia
@constraint(model, X in AtMost(val, vals))

source


# CBLS.ConflictsType.

Global constraint ensuring that the tuple x does not match any configuration listed within the conflict set pair_vars. This constraint, originating from the extension model, stipulates that x must avoid all configurations defined as conflicts: x ∉ pair_vars. It is useful for specifying tuples that are explicitly forbidden and should be excluded from the solution space.

julia
@constraint(model, X in Conflicts(; pair_vars))

source


# CBLS.CountType.

Global constraint ensuring that the number of occurrences of val in X is equal to count.

julia
@constraint(model, X in Count(count, val, vals))

source


# CBLS.CumulativeType.

Global constraint ensuring that the cumulative sum of the heights of the tasks is less than or equal to val.

julia
@constraint(model, X in Cumulative(; pair_vars, op, val))

source


# CBLS.DiscreteSetType.
julia
DiscreteSet(values)

Create a discrete set of values.

Arguments

  • values::Vector{T}: A vector of values to include in the set.

Returns

  • DiscreteSet{T}: A discrete set containing the specified values.

source


# CBLS.DistDifferentType.

A constraint ensuring that the distances between marks on the ruler are unique. Specifically, it checks that the distance between x[1] and x[2], and the distance between x[3] and x[4], are different. This constraint is fundamental in ensuring the validity of a Golomb ruler, where no two pairs of marks should have the same distance between them.

source


# CBLS.ElementType.

Global constraint ensuring that the value of X at index id is equal to val.

julia
@constraint(model, X in Element(; id = nothing, op = ==, val = 0))

source


# CBLS.ErrorType.
julia
Error{F <: Function} <: JuMP.AbstractVectorSet

The solver will compute a straightforward error function based on the concept. To run the solver efficiently, it is possible to provide an error function err instead of concept. err must return a nonnegative real number.

julia
@constraint(model, X in Error(err))

source


# CBLS.ExactlyType.

Constraint ensuring that the number of occurrences of the values in vals in x is exactly val.

julia
@constraint(model, X in Exactly(val, vals))

source


# CBLS.ExtensionType.

Global constraint enforcing that the tuple x matches a configuration within the supports set pair_vars[1] or does not match any configuration within the conflicts set pair_vars[2]. It embodies the logic: x ∈ pair_vars[1] || x ∉ pair_vars[2], providing a comprehensive way to define valid (supported) and invalid (conflicted) tuples for constraint satisfaction problems. This constraint is versatile, allowing for the explicit delineation of both acceptable and unacceptable configurations.

source


# CBLS.InstantiationType.

The instantiation constraint is a global constraint used in constraint programming that ensures that a list of variables takes on a specific set of values in a specific order.

source


# CBLS.IntentionType.
julia
Intention{F <: Function} <: JuMP.AbstractVectorSet

Represents an intention set in the model.

Arguments

  • f::F: A function representing the intention.

source


# CBLS.MDDConstraintType.

Multi-valued Decision Diagram (MDD) constraint.

The MDD constraint is a constraint that can be used to model a wide range of problems. It is a directed graph where each node is labeled with a value and each edge is labeled with a value. The constraint is satisfied if there is a path from the first node to the last node such that the sequence of edge labels is a valid sequence of the value labels.

julia
@constraint(model, X in MDDConstraint(; language))

source


# CBLS.MOIAllDifferentType.
julia
MOIAllDifferent <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOIAllEqualType.
julia
MOIAllEqual <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOIConflictsType.
julia
MOIConflicts{T <: Number, V <: Vector{Vector{T}}} <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOICumulativeType.
julia
MOICumulative{F <: Function, T1 <: Number, T2 <: Number} <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOIDistDifferentType.
julia
MOIDistDifferent <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOIElementType.
julia
MOIElement{I <: Integer, F <: Function, T <: Union{Nothing, Number}} <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOIErrorType.
julia
MOIError{F <: Function} <: MOI.AbstractVectorSet

DOCSTRING

Arguments:

  • f::F: DESCRIPTION

  • dimension::Int: DESCRIPTION

  • MOIError(f, dim = 0) = begin #= none:5 =# new{typeof(f)}(f, dim) end: DESCRIPTION

source


# CBLS.MOIExtensionType.
julia
MOIExtension{T <: Number, V <: Union{Vector{Vector{T}}, Tuple{Vector{T}, Vector{T}}}} <: MOI.AbstractVectorSet
+    
Skip to content

CBLS.jl

Documentation for CBLS.jl.

# CBLS.AllDifferentType.

Global constraint ensuring that all the values of a given configuration are unique.

julia
@constraint(model, X in AllDifferent())

source


# CBLS.AllEqualType.

Global constraint ensuring that all the values of X are all equal.

julia
@constraint(model, X in AllEqual())

source


# CBLS.AtLeastType.

Constraint ensuring that the number of occurrences of the values in vals in x is at least val.

julia
@constraint(model, X in AtLeast(val, vals))

source


# CBLS.AtMostType.

Constraint ensuring that the number of occurrences of the values in vals in x is at most val.

julia
@constraint(model, X in AtMost(val, vals))

source


# CBLS.ConflictsType.

Global constraint ensuring that the tuple x does not match any configuration listed within the conflict set pair_vars. This constraint, originating from the extension model, stipulates that x must avoid all configurations defined as conflicts: x ∉ pair_vars. It is useful for specifying tuples that are explicitly forbidden and should be excluded from the solution space.

julia
@constraint(model, X in Conflicts(; pair_vars))

source


# CBLS.CountType.

Global constraint ensuring that the number of occurrences of val in X is equal to count.

julia
@constraint(model, X in Count(count, val, vals))

source


# CBLS.CumulativeType.

Global constraint ensuring that the cumulative sum of the heights of the tasks is less than or equal to val.

julia
@constraint(model, X in Cumulative(; pair_vars, op, val))

source


# CBLS.DiscreteSetType.
julia
DiscreteSet(values)

Create a discrete set of values.

Arguments

  • values::Vector{T}: A vector of values to include in the set.

Returns

  • DiscreteSet{T}: A discrete set containing the specified values.

source


# CBLS.DistDifferentType.

A constraint ensuring that the distances between marks on the ruler are unique. Specifically, it checks that the distance between x[1] and x[2], and the distance between x[3] and x[4], are different. This constraint is fundamental in ensuring the validity of a Golomb ruler, where no two pairs of marks should have the same distance between them.

source


# CBLS.ElementType.

Global constraint ensuring that the value of X at index id is equal to val.

julia
@constraint(model, X in Element(; id = nothing, op = ==, val = 0))

source


# CBLS.ErrorType.
julia
Error{F <: Function} <: JuMP.AbstractVectorSet

The solver will compute a straightforward error function based on the concept. To run the solver efficiently, it is possible to provide an error function err instead of concept. err must return a nonnegative real number.

julia
@constraint(model, X in Error(err))

source


# CBLS.ExactlyType.

Constraint ensuring that the number of occurrences of the values in vals in x is exactly val.

julia
@constraint(model, X in Exactly(val, vals))

source


# CBLS.ExtensionType.

Global constraint enforcing that the tuple x matches a configuration within the supports set pair_vars[1] or does not match any configuration within the conflicts set pair_vars[2]. It embodies the logic: x ∈ pair_vars[1] || x ∉ pair_vars[2], providing a comprehensive way to define valid (supported) and invalid (conflicted) tuples for constraint satisfaction problems. This constraint is versatile, allowing for the explicit delineation of both acceptable and unacceptable configurations.

source


# CBLS.InstantiationType.

The instantiation constraint is a global constraint used in constraint programming that ensures that a list of variables takes on a specific set of values in a specific order.

source


# CBLS.IntentionType.
julia
Intention{F <: Function} <: JuMP.AbstractVectorSet

Represents an intention set in the model.

Arguments

  • f::F: A function representing the intention.

source


# CBLS.MDDConstraintType.

Multi-valued Decision Diagram (MDD) constraint.

The MDD constraint is a constraint that can be used to model a wide range of problems. It is a directed graph where each node is labeled with a value and each edge is labeled with a value. The constraint is satisfied if there is a path from the first node to the last node such that the sequence of edge labels is a valid sequence of the value labels.

julia
@constraint(model, X in MDDConstraint(; language))

source


# CBLS.MOIAllDifferentType.
julia
MOIAllDifferent <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOIAllEqualType.
julia
MOIAllEqual <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOIConflictsType.
julia
MOIConflicts{T <: Number, V <: Vector{Vector{T}}} <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOICumulativeType.
julia
MOICumulative{F <: Function, T1 <: Number, T2 <: Number} <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOIDistDifferentType.
julia
MOIDistDifferent <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOIElementType.
julia
MOIElement{I <: Integer, F <: Function, T <: Union{Nothing, Number}} <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOIErrorType.
julia
MOIError{F <: Function} <: MOI.AbstractVectorSet

DOCSTRING

Arguments:

  • f::F: DESCRIPTION

  • dimension::Int: DESCRIPTION

  • MOIError(f, dim = 0) = begin #= none:5 =# new{typeof(f)}(f, dim) end: DESCRIPTION

source


# CBLS.MOIExtensionType.
julia
MOIExtension{T <: Number, V <: Union{Vector{Vector{T}}, Tuple{Vector{T}, Vector{T}}}} <: MOI.AbstractVectorSet
 
 DOCSTRING

source


# CBLS.MOIInstantiationType.
julia
MOIInstantiation{T <: Number, V <: Vector{T}} <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOIIntentionType.
julia
MOIIntention{F <: Function} <: MOI.AbstractVectorSet

Represents an intention set in the model.

Arguments

  • f::F: A function representing the intention.

  • dimension::Int: The dimension of the vector set.

source


# CBLS.MOIMaximumType.
julia
MOIMaximum {F <: Function, T <: Number} <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOIMinimumType.
julia
MOIMinimum {F <: Function, T <: Number} <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOIMultivaluedDecisionDiagramType.
julia
MOIMultivaluedDecisionDiagram{L <: ConstraintCommons.AbstractMultivaluedDecisionDiagram} <: AbstractVectorSet

DOCSTRING

source


# CBLS.MOINValuesType.
julia
MOINValues{F <: Function, T1 <: Number, T2 <: Number, V <: Vector{T2}} <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOINoOverlapType.
julia
MOINoOverlap{I <: Integer, T <: Number, V <: Vector{T}} <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOIOrderedType.
julia
MOIOrdered{F <: Function, T <: Number, V <: Vector{T}} <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOIRegularType.
julia
MOIRegular{L <: ConstraintCommons.AbstractAutomaton} <: AbstractVectorSet

DOCSTRING

source


# CBLS.MOISumType.
julia
MOISum{F <: Function, T1 <: Number, T2 <: Number, V <: Number} <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOISupportsType.
julia
MOISupports{T <: Number, V <: Vector{Vector{T}}} <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MaximumType.

Global constraint ensuring that the maximum value in the tuple x satisfies the condition op(x) val. This constraint is useful for specifying that the maximum value in the tuple must satisfy a certain condition.

julia
@constraint(model, X in Maximum(; op = ==, val))

source


# CBLS.MinimumType.

Global constraint ensuring that the minimum value in the tuple x satisfies the condition op(x) val. This constraint is useful for specifying that the minimum value in the tuple must satisfy a certain condition.

julia
@constraint(model, X in Minimum(; op = ==, val))

source


# CBLS.NValuesType.

Global constraint ensuring that the number of distinct values in X satisfies the given condition.

source


# CBLS.NoOverlapType.

Global constraint ensuring that the tuple x does not overlap with any configuration listed within the pair set pair_vars. This constraint, originating from the extension model, stipulates that x must avoid all configurations defined as pairs: x ∩ pair_vars = ∅. It is useful for specifying tuples that are explicitly forbidden and should be excluded from the solution space.

julia
@constraint(model, X in NoOverlap(; bool = true, dim = 1, pair_vars = nothing))

source


# CBLS.OptimizerType.
julia
Optimizer(model = Model(); options = Options())

Create an instance of the Optimizer.

Arguments

  • model: The model to be optimized.

  • options::Options: Options for configuring the solver.

Returns

  • Optimizer: An instance of the optimizer.

source


# CBLS.OptimizerType.
julia
Optimizer <: MOI.AbstractOptimizer

Defines an optimizer for CBLS.

Fields

  • solver::LS.MainSolver: The main solver used for local search.

  • int_vars::Set{Int}: Set of integer variables.

  • compare_vars::Set{Int}: Set of variables to compare.

source


# CBLS.OrderedType.

Global constraint ensuring that the variables are ordered according to op.

source


# CBLS.PredicateType.
julia
Predicate{F <: Function} <: JuMP.AbstractVectorSet

Deprecated: Use Intention instead.

Represents a predicate set in the model.

Arguments

  • f::F: A function representing the predicate.

source


# CBLS.RegularType.

Ensures that a sequence x (interpreted as a word) is accepted by the regular language represented by a given automaton. This constraint verifies the compliance of x with the language rules encoded within the automaton parameter, which must be an instance of <:AbstractAutomaton.

julia
@constraint(model, X in RegularConstraint(; language))

source


# CBLS.ScalarFunctionType.
julia
ScalarFunction{F <: Function, V <: Union{Nothing, VOV}} <: MOI.AbstractScalarFunction

A container to express any function with real value in JuMP syntax. Used with the @objective macro.

Arguments:

  • f::F: function to be applied to X

  • X::V: a subset of the variables of the model.

Given a model, and some (collection of) variables X to optimize. an objective function f can be added as follows. Note that only Min for minimization us currently defined. Max will come soon.

julia
# Applies to all variables in order of insertion.
 # Recommended only when the function argument order does not matter.
 @objective(model, ScalarFunction(f))
 
 # Generic use
-@objective(model, ScalarFunction(f, X))

source


# CBLS.SumType.

Global constraint ensuring that the sum of the variables in x satisfies a given condition.

source


# CBLS.SupportsType.

Global constraint ensuring that the tuple x matches a configuration listed within the support set pair_vars. This constraint is derived from the extension model, specifying that x must be one of the explicitly defined supported configurations: x ∈ pair_vars. It is utilized to directly declare the tuples that are valid and should be included in the solution space.

julia
@constraint(model, X in Supports(; pair_vars))

source


# Base.copyMethod.
julia
Base.copy(set::MOIError) = begin

DOCSTRING

source


# Base.copyMethod.
julia
Base.copy(set::MOIIntention)

Copy an intention set.

Arguments

  • set::MOIIntention: The intention set to be copied.

Returns

  • MOIIntention: A copy of the intention set.

source


# Base.copyMethod.
julia
Base.copy(set::DiscreteSet)

Copy a discrete set.

Arguments

  • set::DiscreteSet: The discrete set to be copied.

Returns

  • DiscreteSet: A copy of the discrete set.

source


# Base.copyMethod.
julia
Base.copy(op::F) where {F <: Function}

Copy a function.

Arguments

  • op::F: The function to be copied.

Returns

  • F: The copied function.

source


# Base.copyMethod.
julia
Base.copy(::Nothing)

Copy a Nothing value.

Arguments

  • ::Nothing: The Nothing value to be copied.

Returns

  • Nothing: The copied Nothing value.

source


# JuMP.build_variableMethod.
julia
JuMP.build_variable(::Function, info::JuMP.VariableInfo, set::T) where T <: MOI.AbstractScalarSet

Create a variable constrained by a scalar set.

Arguments

  • info::JuMP.VariableInfo: Information about the variable to be created.

  • set::T where T <: MOI.AbstractScalarSet: The set defining the constraints on the variable.

Returns

  • JuMP.VariableConstrainedOnCreation: A variable constrained by the specified set.

source


# JuMP.moi_setMethod.
julia
JuMP.moi_set(set::Intention, dim::Int) -> MOIIntention

Convert an Intention set to a MOIIntention set.

Arguments

  • set::Intention: The intention set to be converted.

  • dim::Int: The dimension of the vector set.

Returns

  • MOIIntention: The converted MOIIntention set.

source


# JuMP.moi_setMethod.
julia
JuMP.moi_set(set::Predicate, dim::Int) -> MOIIntention

Convert a Predicate set to a MOIIntention set.

Arguments

  • set::Predicate: The predicate set to be converted.

  • dim::Int: The dimension of the vector set.

Returns

  • MOIIntention: The converted MOIIntention set.

source


# MathOptInterface.add_constraintMethod.
julia
MOI.add_constraint(optimizer::Optimizer, vars::MOI.VectorOfVariables, set::MOIError)

DOCSTRING

Arguments:

  • optimizer: DESCRIPTION

  • vars: DESCRIPTION

  • set: DESCRIPTION

source


# MathOptInterface.add_constraintMethod.
julia
MOI.add_constraint(optimizer::Optimizer, vars::MOI.VectorOfVariables, set::MOIIntention{F}) where {F <: Function}

Add an intention constraint to the optimizer.

Arguments

  • optimizer::Optimizer: The optimizer instance.

  • vars::MOI.VectorOfVariables: The variables for the constraint.

  • set::MOIIntention{F}: The intention set defining the constraint.

Returns

  • CI{VOV, MOIIntention{F}}: The constraint index.

source


# MathOptInterface.add_constraintMethod.
julia
MOI.add_constraint(optimizer::Optimizer, v::VI, set::DiscreteSet{T}) where T <: Number

DOCSTRING

Arguments:

  • optimizer: DESCRIPTION

  • v: DESCRIPTION

  • set: DESCRIPTION

source


# MathOptInterface.add_variableMethod.
julia
MOI.add_variable(model::Optimizer) = begin

DOCSTRING

source


# MathOptInterface.copy_toMethod.
julia
MOI.copy_to(model::Optimizer, src::MOI.ModelLike)

Copy the source model to the optimizer.

Arguments

  • model::Optimizer: The optimizer instance.

  • src::MOI.ModelLike: The source model to be copied.

Returns

  • Nothing

source


# MathOptInterface.empty!Method.
julia
MOI.empty!(opt)

Empty the optimizer.

Arguments

  • opt::Optimizer: The optimizer instance.

Returns

  • Nothing

source


# MathOptInterface.getMethod.
julia
MOI.get(::Optimizer, ::MOI.SolverName)

Get the name of the solver.

Arguments

  • ::Optimizer: The optimizer instance.

Returns

  • String: The name of the solver.

source


# MathOptInterface.getMethod.
julia
Moi.get(::Optimizer, ::MOI.SolverVersion)

Get the version of the solver, here LocalSearchSolvers.jl.

source


# MathOptInterface.is_emptyMethod.
julia
MOI.is_empty(model::Optimizer)

Check if the model is empty.

Arguments

  • model::Optimizer: The optimizer instance.

Returns

  • Bool: True if the model is empty, false otherwise.

source


# MathOptInterface.is_validMethod.
julia
MOI.is_valid(optimizer::Optimizer, index::CI{VI, MOI.Integer})

Check if an index is valid for the optimizer.

Arguments

  • optimizer::Optimizer: The optimizer instance.

  • index::CI{VI, MOI.Integer}: The index to be checked.

Returns

  • Bool: True if the index is valid, false otherwise.

source


# MathOptInterface.optimize!Method.
julia
MOI.optimize!(model::Optimizer)

Optimize the model using the optimizer.

Arguments

  • model::Optimizer: The optimizer instance.

Returns

  • Nothing

source


# MathOptInterface.setFunction.
julia
MOI.set(::Optimizer, ::MOI.Silent, bool = true)

Set the verbosity of the solver.

Arguments

  • ::Optimizer: The optimizer instance.

  • ::MOI.Silent: The silent option for the solver.

  • bool::Bool: Whether to set the solver to silent mode.

Returns

  • Nothing

source


# MathOptInterface.setMethod.
julia
MOI.set(model::Optimizer, p::MOI.RawOptimizerAttribute, value)

Set a RawOptimizerAttribute to value

source


# MathOptInterface.setMethod.
julia
MOI.set(model::Optimizer, ::MOI.TimeLimitSec, value::Union{Nothing,Float64})

Set the time limit

source


# MathOptInterface.supports_constraintMethod.
julia
MOI.supports_constraint(::Optimizer, ::Type{VOV}, ::Type{MOIError}) = begin

DOCSTRING

Arguments:

  • ``: DESCRIPTION

  • ``: DESCRIPTION

  • ``: DESCRIPTION

source


# MathOptInterface.supports_constraintMethod.
julia
MOI.supports_constraint(::Optimizer, ::Type{VOV}, ::Type{MOIIntention{F}}) where {F <: Function}

Check if the optimizer supports a given intention constraint.

Arguments

  • ::Optimizer: The optimizer instance.

  • ::Type{VOV}: The type of the variable.

  • ::Type{MOIIntention{F}}: The type of the intention.

Returns

  • Bool: True if the optimizer supports the constraint, false otherwise.

source


# MathOptInterface.supports_incremental_interfaceMethod.
julia
MOI.supports_incremental_interface(::Optimizer)

Check if the optimizer supports incremental interface.

Arguments

  • ::Optimizer: The optimizer instance.

Returns

  • Bool: True if the optimizer supports incremental interface, false otherwise.

source


- +@objective(model, ScalarFunction(f, X))

source


# CBLS.SumType.

Global constraint ensuring that the sum of the variables in x satisfies a given condition.

source


# CBLS.SupportsType.

Global constraint ensuring that the tuple x matches a configuration listed within the support set pair_vars. This constraint is derived from the extension model, specifying that x must be one of the explicitly defined supported configurations: x ∈ pair_vars. It is utilized to directly declare the tuples that are valid and should be included in the solution space.

julia
@constraint(model, X in Supports(; pair_vars))

source


# Base.copyMethod.
julia
Base.copy(set::MOIError) = begin

DOCSTRING

source


# Base.copyMethod.
julia
Base.copy(set::MOIIntention)

Copy an intention set.

Arguments

  • set::MOIIntention: The intention set to be copied.

Returns

  • MOIIntention: A copy of the intention set.

source


# Base.copyMethod.
julia
Base.copy(set::DiscreteSet)

Copy a discrete set.

Arguments

  • set::DiscreteSet: The discrete set to be copied.

Returns

  • DiscreteSet: A copy of the discrete set.

source


# Base.copyMethod.
julia
Base.copy(op::F) where {F <: Function}

Copy a function.

Arguments

  • op::F: The function to be copied.

Returns

  • F: The copied function.

source


# Base.copyMethod.
julia
Base.copy(::Nothing)

Copy a Nothing value.

Arguments

  • ::Nothing: The Nothing value to be copied.

Returns

  • Nothing: The copied Nothing value.

source


# JuMP.build_variableMethod.
julia
JuMP.build_variable(::Function, info::JuMP.VariableInfo, set::T) where T <: MOI.AbstractScalarSet

Create a variable constrained by a scalar set.

Arguments

  • info::JuMP.VariableInfo: Information about the variable to be created.

  • set::T where T <: MOI.AbstractScalarSet: The set defining the constraints on the variable.

Returns

  • JuMP.VariableConstrainedOnCreation: A variable constrained by the specified set.

source


# JuMP.moi_setMethod.
julia
JuMP.moi_set(set::Intention, dim::Int) -> MOIIntention

Convert an Intention set to a MOIIntention set.

Arguments

  • set::Intention: The intention set to be converted.

  • dim::Int: The dimension of the vector set.

Returns

  • MOIIntention: The converted MOIIntention set.

source


# JuMP.moi_setMethod.
julia
JuMP.moi_set(set::Predicate, dim::Int) -> MOIIntention

Convert a Predicate set to a MOIIntention set.

Arguments

  • set::Predicate: The predicate set to be converted.

  • dim::Int: The dimension of the vector set.

Returns

  • MOIIntention: The converted MOIIntention set.

source


# MathOptInterface.add_constraintMethod.
julia
MOI.add_constraint(optimizer::Optimizer, vars::MOI.VectorOfVariables, set::MOIError)

DOCSTRING

Arguments:

  • optimizer: DESCRIPTION

  • vars: DESCRIPTION

  • set: DESCRIPTION

source


# MathOptInterface.add_constraintMethod.
julia
MOI.add_constraint(optimizer::Optimizer, vars::MOI.VectorOfVariables, set::MOIIntention{F}) where {F <: Function}

Add an intention constraint to the optimizer.

Arguments

  • optimizer::Optimizer: The optimizer instance.

  • vars::MOI.VectorOfVariables: The variables for the constraint.

  • set::MOIIntention{F}: The intention set defining the constraint.

Returns

  • CI{VOV, MOIIntention{F}}: The constraint index.

source


# MathOptInterface.add_constraintMethod.
julia
MOI.add_constraint(optimizer::Optimizer, v::VI, set::DiscreteSet{T}) where T <: Number

DOCSTRING

Arguments:

  • optimizer: DESCRIPTION

  • v: DESCRIPTION

  • set: DESCRIPTION

source


# MathOptInterface.add_variableMethod.
julia
MOI.add_variable(model::Optimizer) = begin

DOCSTRING

source


# MathOptInterface.copy_toMethod.
julia
MOI.copy_to(model::Optimizer, src::MOI.ModelLike)

Copy the source model to the optimizer.

Arguments

  • model::Optimizer: The optimizer instance.

  • src::MOI.ModelLike: The source model to be copied.

Returns

  • Nothing

source


# MathOptInterface.empty!Method.
julia
MOI.empty!(opt)

Empty the optimizer.

Arguments

  • opt::Optimizer: The optimizer instance.

Returns

  • Nothing

source


# MathOptInterface.getMethod.
julia
MOI.get(::Optimizer, ::MOI.SolverName)

Get the name of the solver.

Arguments

  • ::Optimizer: The optimizer instance.

Returns

  • String: The name of the solver.

source


# MathOptInterface.getMethod.
julia
Moi.get(::Optimizer, ::MOI.SolverVersion)

Get the version of the solver, here LocalSearchSolvers.jl.

source


# MathOptInterface.is_emptyMethod.
julia
MOI.is_empty(model::Optimizer)

Check if the model is empty.

Arguments

  • model::Optimizer: The optimizer instance.

Returns

  • Bool: True if the model is empty, false otherwise.

source


# MathOptInterface.is_validMethod.
julia
MOI.is_valid(optimizer::Optimizer, index::CI{VI, MOI.Integer})

Check if an index is valid for the optimizer.

Arguments

  • optimizer::Optimizer: The optimizer instance.

  • index::CI{VI, MOI.Integer}: The index to be checked.

Returns

  • Bool: True if the index is valid, false otherwise.

source


# MathOptInterface.optimize!Method.
julia
MOI.optimize!(model::Optimizer)

Optimize the model using the optimizer.

Arguments

  • model::Optimizer: The optimizer instance.

Returns

  • Nothing

source


# MathOptInterface.setFunction.
julia
MOI.set(::Optimizer, ::MOI.Silent, bool = true)

Set the verbosity of the solver.

Arguments

  • ::Optimizer: The optimizer instance.

  • ::MOI.Silent: The silent option for the solver.

  • bool::Bool: Whether to set the solver to silent mode.

Returns

  • Nothing

source


# MathOptInterface.setMethod.
julia
MOI.set(model::Optimizer, p::MOI.RawOptimizerAttribute, value)

Set a RawOptimizerAttribute to value

source


# MathOptInterface.setMethod.
julia
MOI.set(model::Optimizer, ::MOI.TimeLimitSec, value::Union{Nothing,Float64})

Set the time limit

source


# MathOptInterface.supports_constraintMethod.
julia
MOI.supports_constraint(::Optimizer, ::Type{VOV}, ::Type{MOIError}) = begin

DOCSTRING

Arguments:

  • ``: DESCRIPTION

  • ``: DESCRIPTION

  • ``: DESCRIPTION

source


# MathOptInterface.supports_constraintMethod.
julia
MOI.supports_constraint(::Optimizer, ::Type{VOV}, ::Type{MOIIntention{F}}) where {F <: Function}

Check if the optimizer supports a given intention constraint.

Arguments

  • ::Optimizer: The optimizer instance.

  • ::Type{VOV}: The type of the variable.

  • ::Type{MOIIntention{F}}: The type of the intention.

Returns

  • Bool: True if the optimizer supports the constraint, false otherwise.

source


# MathOptInterface.supports_incremental_interfaceMethod.
julia
MOI.supports_incremental_interface(::Optimizer)

Check if the optimizer supports incremental interface.

Arguments

  • ::Optimizer: The optimizer instance.

Returns

  • Bool: True if the optimizer supports incremental interface, false otherwise.

source


+ \ No newline at end of file diff --git a/dev/solvers/intro.html b/dev/solvers/intro.html index 30ee1bc..c65c3c7 100644 --- a/dev/solvers/intro.html +++ b/dev/solvers/intro.html @@ -5,20 +5,20 @@ Solvers | Julia Constraints - - + + - + - - - + + + -
Skip to content
- +
Skip to content
+ \ No newline at end of file diff --git a/dev/solvers/local_search_solvers.html b/dev/solvers/local_search_solvers.html index ef82f5b..44ef751 100644 --- a/dev/solvers/local_search_solvers.html +++ b/dev/solvers/local_search_solvers.html @@ -5,19 +5,19 @@ LocalSearchSolvers.jl | Julia Constraints - - + + - + - - - + + + -
Skip to content

LocalSearchSolvers.jl

Documentation for LocalSearchSolvers.jl.

# LocalSearchSolvers.AbstractSolverType.
julia
AbstractSolver

Abstract type to encapsulate the different solver types such as Solver or _SubSolver.

source


# LocalSearchSolvers.ConstraintType.
julia
Constraint{F <: Function}

Structure to store an error function and the variables it constrains.

source


# LocalSearchSolvers.LeadSolverType.
julia
LeadSolver <: MetaSolver

Solver managed remotely by a MainSolver. Can manage its own set of local sub solvers.

source


# LocalSearchSolvers.MainSolverType.
julia
MainSolver <: AbstractSolver

Main solver. Handle the solving of a model, and optional multithreaded and/or distributed subsolvers.

Arguments:

  • model::Model: A formal description of the targeted problem

  • state::_State: An internal state to store the info necessary to a solving run

  • options::Options: User options for this solver

  • subs::Vector{_SubSolver}: Optional subsolvers

source


# LocalSearchSolvers.MetaSolverType.

Abstract type to encapsulate all solver types that manages other solvers.

source


# LocalSearchSolvers.ObjectiveType.
julia
Objective{F <: Function}

A structure to handle objectives in a solver. `struct Objective{F <: Function} name::String f::F end``

source


# LocalSearchSolvers.ObjectiveMethod.
julia
Objective(F, o::Objective{F2}) where {F2 <: Function}

Constructor used in specializing a solver. Should never be called externally.

source


# LocalSearchSolvers.OptionsType.
julia
Options()

Arguments:

  • dynamic::Bool: is the model dynamic?

  • iteration::Union{Int, Float64}: limit on the number of iterations

  • print_level::Symbol: verbosity to choose among :silent, :minimal, :partial, :verbose

  • solutions::Int: number of solutions to return

  • specialize::Bool: should the types of the model be specialized or not. Usually yes for static problems. For dynamic in depends if the user intend to introduce new types. The specialized model is about 10% faster.

  • tabu_time::Int: DESCRIPTION

  • tabu_local::Int: DESCRIPTION

  • tabu_delta::Float64: DESCRIPTION

  • threads::Int: Number of threads to use

  • time_limit::Float64: time limit in seconds

  • `function Options(; dynamic = false, iteration = 10000, print_level = :minimal, solutions = 1, specialize = !dynamic, tabu_time = 0, tabu_local = 0, tabu_delta = 0.0, threads = typemax(0), time_limit = Inf)

julia
# Setting options in JuMP syntax: print_level, time_limit, iteration
+    
Skip to content

LocalSearchSolvers.jl

Documentation for LocalSearchSolvers.jl.

# LocalSearchSolvers.AbstractSolverType.
julia
AbstractSolver

Abstract type to encapsulate the different solver types such as Solver or _SubSolver.

source


# LocalSearchSolvers.ConstraintType.
julia
Constraint{F <: Function}

Structure to store an error function and the variables it constrains.

source


# LocalSearchSolvers.LeadSolverType.
julia
LeadSolver <: MetaSolver

Solver managed remotely by a MainSolver. Can manage its own set of local sub solvers.

source


# LocalSearchSolvers.MainSolverType.
julia
MainSolver <: AbstractSolver

Main solver. Handle the solving of a model, and optional multithreaded and/or distributed subsolvers.

Arguments:

  • model::Model: A formal description of the targeted problem

  • state::_State: An internal state to store the info necessary to a solving run

  • options::Options: User options for this solver

  • subs::Vector{_SubSolver}: Optional subsolvers

source


# LocalSearchSolvers.MetaSolverType.

Abstract type to encapsulate all solver types that manages other solvers.

source


# LocalSearchSolvers.ObjectiveType.
julia
Objective{F <: Function}

A structure to handle objectives in a solver. `struct Objective{F <: Function} name::String f::F end``

source


# LocalSearchSolvers.ObjectiveMethod.
julia
Objective(F, o::Objective{F2}) where {F2 <: Function}

Constructor used in specializing a solver. Should never be called externally.

source


# LocalSearchSolvers.OptionsType.
julia
Options()

Arguments:

  • dynamic::Bool: is the model dynamic?

  • iteration::Union{Int, Float64}: limit on the number of iterations

  • print_level::Symbol: verbosity to choose among :silent, :minimal, :partial, :verbose

  • solutions::Int: number of solutions to return

  • specialize::Bool: should the types of the model be specialized or not. Usually yes for static problems. For dynamic in depends if the user intend to introduce new types. The specialized model is about 10% faster.

  • tabu_time::Int: DESCRIPTION

  • tabu_local::Int: DESCRIPTION

  • tabu_delta::Float64: DESCRIPTION

  • threads::Int: Number of threads to use

  • time_limit::Float64: time limit in seconds

  • `function Options(; dynamic = false, iteration = 10000, print_level = :minimal, solutions = 1, specialize = !dynamic, tabu_time = 0, tabu_local = 0, tabu_delta = 0.0, threads = typemax(0), time_limit = Inf)

julia
# Setting options in JuMP syntax: print_level, time_limit, iteration
 model = Model(CBLS.Optimizer)
 set_optimizer_attribute(model, "iteration", 100)
 set_optimizer_attribute(model, "print_level", :verbose)
@@ -52,8 +52,8 @@
 add!(m::M, o) where M <: Union{Model, AbstractSolver}

Add a variable x, a constraint c, or an objective o to m.

source


# LocalSearchSolvers.add_value!Method.
julia
add_value!(m::M, x, val) where M <: Union{Model, AbstractSolver}

Add val to x domain.

source


# LocalSearchSolvers.add_var_to_cons!Method.
julia
add_var_to_cons!(m::M, c, x) where M <: Union{Model, AbstractSolver}

Add x to the constraint c list of restricted variables.

source


# LocalSearchSolvers.constraint!Method.
julia
constraint!(m::M, func, vars) where M <: Union{Model, AbstractSolver}

Add a constraint with an error function func defined over variables vars.

source


# LocalSearchSolvers.constraintMethod.
julia
constraint(f, vars)

DOCSTRING

source


# LocalSearchSolvers.constrictionMethod.
julia
constriction(m::M, x) where M <: Union{Model, AbstractSolver}

Return the constriction of variable x.

source


# LocalSearchSolvers.decay_tabu!Method.
julia
_decay_tabu!(s::S) where S <: Union{_State, AbstractSolver}

Decay the tabu list.

source


# LocalSearchSolvers.decrease_tabu!Method.
julia
_decrease_tabu!(s::S, x) where S <: Union{_State, AbstractSolver}

Decrement the tabu value of variable x.

source


# LocalSearchSolvers.delete_tabu!Method.
julia
_delete_tabu!(s::S, x) where S <: Union{_State, AbstractSolver}

Delete the tabu entry of variable x.

source


# LocalSearchSolvers.delete_value!Method.
julia
delete_value(m::M, x, val) where M <: Union{Model, AbstractSolver}

Delete val from x domain.

source


# LocalSearchSolvers.delete_var_from_cons!Method.
julia
delete_var_from_cons(m::M, c, x) where M <: Union{Model, AbstractSolver}

Delete x from the constraint c list of restricted variables.

source


# LocalSearchSolvers.describeMethod.
julia
describe(m::M) where M <: Union{Model, AbstractSolver}

Describe the model.

source


# LocalSearchSolvers.domain_sizeMethod.
julia
domain_size(m::Model, x) = begin

DOCSTRING

source


# LocalSearchSolvers.drawMethod.
julia
draw(m::M, x) where M <: Union{Model, AbstractSolver}

Draw a random value of x domain.

source


# LocalSearchSolvers.empty_tabu!Method.
julia
_empty_tabu!(s::S) where S <: Union{_State, AbstractSolver}

Empty the tabu list.

source


# LocalSearchSolvers.get_cons_from_varMethod.
julia
get_cons_from_var(m::M, x) where M <: Union{Model, AbstractSolver}

Access the constraints restricting variable x.

source


# LocalSearchSolvers.get_constraintMethod.
julia
get_constraint(m::M, c) where M <: Union{Model, AbstractSolver}

Access the constraint c.

source


# LocalSearchSolvers.get_constraintsMethod.
julia
get_constraints(m::M) where M <: Union{Model, AbstractSolver}

Access the constraints of m.

source


# LocalSearchSolvers.get_domainMethod.
julia
get_domain(m::M, x) where M <: Union{Model, AbstractSolver}

Access the domain of variable x.

source


# LocalSearchSolvers.get_kindMethod.
julia
get_kind(m::M) where M <: Union{Model, AbstractSolver}

Access the kind of m, such as :sudoku or :generic (default).

source


# LocalSearchSolvers.get_nameMethod.
julia
get_name(m::M, x) where M <: Union{Model, AbstractSolver}

Access the name of variable x.

source


# LocalSearchSolvers.get_objectiveMethod.
julia
get_objective(m::M, o) where M <: Union{Model, AbstractSolver}

Access the objective o.

source


# LocalSearchSolvers.get_objectivesMethod.
julia
get_objectives(m::M) where M <: Union{Model, AbstractSolver}

Access the objectives of m.

source


# LocalSearchSolvers.get_time_stampMethod.
julia
get_time_stamp(m::M) where M <: Union{Model, AbstractSolver}

Access the time (since epoch) when the model was created. This time stamp is for internal performance measurement.

source


# LocalSearchSolvers.get_variableMethod.
julia
get_variable(m::M, x) where M <: Union{Model, AbstractSolver}

Access the variable x.

source


# LocalSearchSolvers.get_variablesMethod.
julia
get_variables(m::M) where M <: Union{Model, AbstractSolver}

Access the variables of m.

source


# LocalSearchSolvers.get_vars_from_consMethod.
julia
get_vars_from_cons(m::M, c) where M <: Union{Model, AbstractSolver}

Access the variables restricted by constraint c.

source


# LocalSearchSolvers.insert_tabu!Method.
julia
_insert_tabu!(s::S, x, tabu_time) where S <: Union{_State, AbstractSolver}

Insert the bariable x as tabu for tabu_time.

source


# LocalSearchSolvers.is_satMethod.
julia
is_sat(m::M) where M <: Union{Model, AbstractSolver}

Return true if m is a satisfaction model.

source


# LocalSearchSolvers.is_specializedMethod.
julia
is_specialized(m::M) where M <: Union{Model, AbstractSolver}

Return true if the model is already specialized.

source


# LocalSearchSolvers.length_consMethod.
julia
length_cons(m::M, c) where M <: Union{Model, AbstractSolver}

Return the length of constraint c.

source


# LocalSearchSolvers.length_consMethod.
julia
length_cons(m::M) where M <: Union{Model, AbstractSolver}

Return the number of constraints in m.

source


# LocalSearchSolvers.length_objsMethod.
julia
length_objs(m::M) where M <: Union{Model, AbstractSolver}

Return the number of objectives in m.

source


# LocalSearchSolvers.length_tabuMethod.
julia
_length_tabu!(s::S) where S <: Union{_State, AbstractSolver}

Return the length of the tabu list.

source


# LocalSearchSolvers.length_varMethod.
julia
length_var(m::M, x) where M <: Union{Model, AbstractSolver}

Return the domain length of variable x.

source


# LocalSearchSolvers.length_varsMethod.
julia
length_vars(m::M) where M <: Union{Model, AbstractSolver}

Return the number of variables in m.

source


# LocalSearchSolvers.max_domains_sizeMethod.
julia
max_domains_size(m::Model, vars) = begin

DOCSTRING

source


# LocalSearchSolvers.modelMethod.
julia
model()

Construct a _Model, empty by default. It is recommended to add the constraints, variables, and objectives from an empty _Model. The following keyword arguments are available,

  • vars=Dictionary{Int,Variable}(): collection of variables

  • cons=Dictionary{Int,Constraint}(): collection of constraints

  • objs=Dictionary{Int,Objective}(): collection of objectives

  • kind=:generic: the kind of problem modeled (useful for specialized methods such as pretty printing)

source


# LocalSearchSolvers.o_dist_extremaMethod.
julia
dist_extrema(values::T...) where {T <: Number}

Computes the distance between extrema in an ordered set.

source


# LocalSearchSolvers.o_mincutMethod.
julia
o_mincut(graph, values; interdiction = 0)

Compute the capacity of a cut (determined by the state of the solver) with a possible interdiction on the highest capacited links.

source


# LocalSearchSolvers.objective!Method.
julia
objective!(m::M, func) where M <: Union{Model, AbstractSolver}

Add an objective evaluated by func.

source


# LocalSearchSolvers.objectiveMethod.
julia
objective(func, name)

Construct an objective with a function func that should be applied to a collection of variables.

source


# LocalSearchSolvers.post_processMethod.
julia
post_process(s::MainSolver)

Launch a series of tasks to round-up a solving run, for instance, export a run's info.

source


# LocalSearchSolvers.remote_dispatch!Method.
julia
remote_dispatch!(solver)

Starts the LeadSolvers attached to the MainSolver.

source


# LocalSearchSolvers.remote_stop!Method.
julia
remote_stop!!(solver)

Fetch the pool of solutions from LeadSolvers and merge it into the MainSolver.

source


# LocalSearchSolvers.solutionMethod.
julia
solution(s)

Return the only/best known solution of a satisfaction/optimization model.

source


# LocalSearchSolvers.solve_for_loop!Method.
julia
solve_for_loop!(solver, stop, sat, iter)

First loop in the solving process that starts LeadSolvers from the MainSolver, and _SubSolvers from each MetaSolver.

source


# LocalSearchSolvers.solve_while_loop!Method.
julia
solve_while_loop!(s, )

Search the space of configurations.

source


# LocalSearchSolvers.specialize!Method.
julia
specialize!(solver)

Replace the model of solver by one with specialized types (variables, constraints, objectives).

source


# LocalSearchSolvers.specializeMethod.
julia
specialize(m::M) where M <: Union{Model, AbstractSolver}

Specialize the structure of a model to avoid dynamic type attribution at runtime.

source


# LocalSearchSolvers.statusMethod.
julia
status(solver)

Return the status of a MainSolver.

source


# LocalSearchSolvers.stop_while_loopMethod.
julia
stop_while_loop()

Check the stop conditions of the solve! while inner loop.

source


# LocalSearchSolvers.tabu_listMethod.
julia
_tabu(s::S) where S <: Union{_State, AbstractSolver}

Access the list of tabu variables.

source


# LocalSearchSolvers.tabu_valueMethod.
julia
_tabu(s::S, x) where S <: Union{_State, AbstractSolver}

Return the tabu value of variable x.

source


# LocalSearchSolvers.variable!Function.
julia
variable!(m::M, d) where M <: Union{Model, AbstractSolver}

Add a variable with domain d to m.

source


# LocalSearchSolvers.variableMethod.
julia
variable(values::AbstractVector{T}, name::AbstractString; domain = :set) where T <: Number
 variable(domain::AbstractDomain, name::AbstractString) where D <: AbstractDomain

Construct a variable with discrete domain. See the domain method for other options.

julia
d = domain([1,2,3,4], types = :indices)
 x1 = variable(d, "x1")
-x2 = variable([-89,56,28], "x2", domain = :indices)

source


- +x2 = variable([-89,56,28], "x2", domain = :indices)

source


+ \ No newline at end of file